From a59b2ea38539e6aabaa300eedaa7a669bdfd4ea9 Mon Sep 17 00:00:00 2001 From: zunyi <457590303@qq.com> Date: Mon, 4 Nov 2019 10:24:46 +0800 Subject: [PATCH] _ --- src/nodeschool/webgl/breakWall/.gitignore | 3 + src/nodeschool/webgl/breakWall/index.html | 19 + src/nodeschool/webgl/breakWall/index.js | 37 + .../webgl/breakWall/src/assets/GRASS.glb | Bin 0 -> 1992 bytes .../webgl/breakWall/src/assets/duck.bin | Bin 0 -> 18672 bytes .../webgl/breakWall/src/assets/duck.gltf | 805 + .../webgl/breakWall/src/assets/grass.gltf | 191 + .../assets/helvetiker_regular.typeface.json | 1 + src/nodeschool/webgl/breakWall/src/camera.js | 5 + src/nodeschool/webgl/breakWall/src/events.js | 26 + .../webgl/breakWall/src/lib/OrbitControls.js | 1157 + .../webgl/breakWall/src/lib/Physijs.js | 1403 + .../webgl/breakWall/src/lib/ammo.js | 21351 +++++++ .../webgl/breakWall/src/lib/physijs_worker.js | 1399 + .../webgl/breakWall/src/lib/three.js | 49623 ++++++++++++++++ .../webgl/breakWall/src/operates.js | 32 + src/nodeschool/webgl/breakWall/src/text.js | 22 + src/nodeschool/webgl/physics/index.js | 4 +- src/nodeschool/webgl/physics/package.json | 14 - src/nodeschool/webgl/physics/src/camera.js | 2 +- src/nodeschool/webgl/physics/src/cube.js | 1 + 21 files changed, 76078 insertions(+), 17 deletions(-) create mode 100644 src/nodeschool/webgl/breakWall/.gitignore create mode 100644 src/nodeschool/webgl/breakWall/index.html create mode 100644 src/nodeschool/webgl/breakWall/index.js create mode 100644 src/nodeschool/webgl/breakWall/src/assets/GRASS.glb create mode 100644 src/nodeschool/webgl/breakWall/src/assets/duck.bin create mode 100644 src/nodeschool/webgl/breakWall/src/assets/duck.gltf create mode 100644 src/nodeschool/webgl/breakWall/src/assets/grass.gltf create mode 100644 src/nodeschool/webgl/breakWall/src/assets/helvetiker_regular.typeface.json create mode 100644 src/nodeschool/webgl/breakWall/src/camera.js create mode 100644 src/nodeschool/webgl/breakWall/src/events.js create mode 100644 src/nodeschool/webgl/breakWall/src/lib/OrbitControls.js create mode 100644 src/nodeschool/webgl/breakWall/src/lib/Physijs.js create mode 100644 src/nodeschool/webgl/breakWall/src/lib/ammo.js create mode 100644 src/nodeschool/webgl/breakWall/src/lib/physijs_worker.js create mode 100644 src/nodeschool/webgl/breakWall/src/lib/three.js create mode 100644 src/nodeschool/webgl/breakWall/src/operates.js create mode 100644 src/nodeschool/webgl/breakWall/src/text.js delete mode 100644 src/nodeschool/webgl/physics/package.json diff --git a/src/nodeschool/webgl/breakWall/.gitignore b/src/nodeschool/webgl/breakWall/.gitignore new file mode 100644 index 0000000..5686318 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/.gitignore @@ -0,0 +1,3 @@ +/dist +/.cache +yarn.lock diff --git a/src/nodeschool/webgl/breakWall/index.html b/src/nodeschool/webgl/breakWall/index.html new file mode 100644 index 0000000..8258ca7 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/index.html @@ -0,0 +1,19 @@ + + + + + + + + three.js + + + + + + + + diff --git a/src/nodeschool/webgl/breakWall/index.js b/src/nodeschool/webgl/breakWall/index.js new file mode 100644 index 0000000..ffdedcb --- /dev/null +++ b/src/nodeschool/webgl/breakWall/index.js @@ -0,0 +1,37 @@ +import camera from './src/camera.js'; +import { addOnMouseDown } from './src/events.js'; +import { addToList, addScore } from './src/operates.js'; +import {createText} from './src/text.js'; + +window.onload = () => { + Physijs.scripts.worker = './src/lib/physijs_worker.js'; + Physijs.scripts.ammo = './ammo.js'; + + let scene = new Physijs.Scene(); + scene.setGravity(new THREE.Vector3( 0, -50, 0 )) + + const render = new THREE.WebGLRenderer() + render.setSize(window.innerWidth, window.innerHeight) + document.body.appendChild(render.domElement) + + const axesHelper = new THREE.AxesHelper( 1000 ); + scene.add( axesHelper ); + + // createText('score: ').then(scoreLabel => { + // scene.add(scoreLabel) + // scoreLabel.position.set(160, 150, -200) + // }) + + + + const controls = new window.THREE.OrbitControls( camera, render.domElement ); + + const animate = () => { + controls.update(); + scene.simulate(); + render.render(scene, camera) + requestAnimationFrame(animate); + } + + animate() +} diff --git a/src/nodeschool/webgl/breakWall/src/assets/GRASS.glb b/src/nodeschool/webgl/breakWall/src/assets/GRASS.glb new file mode 100644 index 0000000000000000000000000000000000000000..22164568c19296bff341da1db2d8e76bb36fa71b GIT binary patch literal 1992 zcmcIl%Wm695M&Zy^BcmPX=dIJT^5e90i3n1z%p_%e4wPUOn@Q{lJagK2=Jfnbr1Q7 zd`fCYvMfijoJ$Ch9QO27S6BB8r{%?m*GZE6|29d!{gEUehl8^P$=lX5Q z>W1{m-#1NN)opKzCB65huO`0f9lsm&?r7#Rp-D>aeA5E5#uy=GdH^GpQgKDO;YLxbf}?UuNvb6`!V1X+LU&DGwdDgo*O}&ANg;%E znmS=ql~K!>lhzo`rD8mQYl(TKl+%t2%k9-NU67e?Z({1}d_R?W<<~j1*oSz<^ zkUm?cq^KsvIQVejuk(S^GIr<>HUGs3A|($IP6*Vn%JT=;(? z&v8Awtt(%37hi6%8L*dhO2+lP!qFoG-G8w|Sc-EYh*RKLxjYD;2jRPmYslxnjsy;x z1=+?%JHLRvZ#9(KU5%vI%)oKIdU$kra(KQIJ-Ys;%pl7ywatyfsQ>6o z=TCe!?Ql#<3s-y(uCL?KPaidX(O23%&Nv{S06V?M`9~Iv?t|X(Ryy?DD&uvwTPboX z(UiSj?<@Xy?~l*$y#Ei6@cwgk$1!Xhdl+Lb+PB~LTedypS4sG{zDZu;xxoa^1~cH} U4p(?@?C^=U@V<}3)!eh=?+-L21^@s6 literal 0 HcmV?d00001 diff --git a/src/nodeschool/webgl/breakWall/src/assets/duck.bin b/src/nodeschool/webgl/breakWall/src/assets/duck.bin new file mode 100644 index 0000000000000000000000000000000000000000..4a2ec7b32887e138ee3b9b7694262efd3e781b1d GIT binary patch literal 18672 zcmeHOX^<7w6@JJLDxgF_S;hqcK{ioTaC#(cg0d(e2nvDvci zr~L%e__;6z}cY4RXoFfardYMOi!Fbp^uIK?!1IKVOboNAhU8gM!=0vKtUd)8sM0SYRA5-Zc3vU;;1^INLP&9AFYK8JJ?4JQX+>I1iX+nmirg zS+mYFOq0(C7@KR%G)Hvl&RH<>2i z3@it30alnMe*;(v)B<_aInkIJu zIs%=5!%UM82Y6}S=FnWDB|uH)deqr9xfbop$FG}RkLz>>ct$*vE$ z0rUiV0nCY-%&Q7G8aT!@`B;Ew#WOqJG`SDZ7w89^V4BG)i_E@m0jU3}TLGvlxj)d0o$u_-Mx<80HKXn%Y0`KU_pU%yUq+FHDWjgxUy z(e6vdsc$d8ev)TlUCpn*USVAMC=dB1^9p`d$dj?jHPI8V_J}@e6Ga}c^(*6ABzjmo%&wqA^xIyD317x#>>vv`PM&Iy?4s*PkEK% zD)c+Ad5-he52cv?n&(;mImDv9##r}a`K2sBi>rBL&LOKVs)JZ|vFw^BE@jV-XXEHz ztT^JVUGc>7)4e!r&)zF;rL4GO&C`7;mR~tmeq#BTiYvSPJ})ayDONt>Qho<&{p@;; zT}OF~v+=U`jg6o6uXLU4y1FklU-s>Ickrs>vun)foOaI~=Y8;l<~Y|N*MMmk=gm&0 zo!30aibKv3xEMz)J6U$cAV%cjPG;yHAHS{KGfO^{OjBvgOBYi_3?9=v-0tCkwSFFsGqP0 za2B~}#olh*E8*skVIxpE-2Wj}!74z|PrI-EYiE!@ppVI%O zpp`>5x2zBSwU)&RIhZ}&MxnL{N$ zjL$fX&*v_y*~7ku-p9}7TJGG_^MyTTpZK0J9qcGK`#e_9)1Pr@lg{>!KWoL8zgw$b z4lZWoeX`o(1RrX@cdpC&Sg(d>$M``N#j{CmT{i+DzQ zFJTX9KcmOOJBNLU{!BI3RsVSHeWa}?gFkbVzx8~u(?@Gj`#zUH_sFx;y431t`bc}b z{H?d^y~7npa~a>)mi1vwy_2bZovGzxI<29vZKj^pT-U!7vitRQkfuL=cC*LrDy7Sf z=cDC!9?L(+;>t(w_G^~v9=YdJUD;Ym4zGQ1AO4)Xzuw{OS});bZKts}UHK9^9dDop zrREmw6W_aOa}p^ZuU*jYY3V=oJ!OkD_7ZZieFbfM+0R~>lPJyQ-Ai*GN@MQ+)%IaU zd>hzH8n28`K3+NZW7MBlK3?JU-K{#MYre3jZK@OB#J^!(s>e#%lb9_QPkt(in~z%t zo%sLuuAidzm1t#EYMo;CVz!Xae)Zcqpap7?j|b2H#YrES9s(`Mn| z7PIS`iCf;UKr?R7oin1tyR;AeRf)Eo_S;*reB^unu6wnYXr}4an`@)KoyPHhqu|O% z7se~M+`sXv^tpJz>BJ}ag*=n{!n4)T+HS7pT+uvRr!l@-sq%i%j0W=0>^I5B`Z zthquyI`?m{r0>`BoSs@lKmYTMbx*%@O^EIFubo{QeT(NU>E~ja{fs^jKJ4>kzm?Y% z{T$|6KbO^vUr7&pAIm99nE%!JmCUoAZ|BF?Zs9EUbCv67+D^E6*vVwp$ZJ~O`ulZJ zr=e@Y@5x@%m*dIxxpnwmZ1jZ-7(e~Jj9TBW((<9*bojoN=I?9raXS1SC!g$G#O5B- z-}SVX>@EktR>-Z~TKfHwF$-E}25WkL4QYEd-{HmV$RYS}E^|EFTdmrSP&P6`klt1SxXWFxQ zGJhW@JC|{^Uwt!UFX{JlG0m8?b1koRMvOx{Yv^^>znG75Q2q4{uem&5YT9|e)U2&P z>ue9m$Dc2?_U`BUvu1B-E#D{fQT9a#Ef7CWzi(0v<4$4P%=0nXKr^ z-S5TM!SC0{^f~CwUH;u&`MW)dS<=7Ww})Hb*=a2~-+spAY2(I_>RC-yVl= zE?)WA>t)Wqug|d5XOGi+3p)C2^S$94332M_PYd=6e)c7Kgml7xxW`I=eivpXs?vGo z>d0sXpWe?b4d*cD_uJ|!(aZn+M)>|)^3i2cCA#l3OGBNeB7P-WdmWSCq_d7jm(T^D z`gQ2&J}yCquusfRu>`_YMkVgy_aVxdpaJ@C%J2AKMjrT9}8z4_G#x{ zRyVc|IO~wNoqJhbet-M#!RCbA>udbo?$cM(=hy3-oqdJVieB0CN$>jSR>`yAeGq_o z6RZv4bunA9aru!sE+1)eRAfAB(>+-_Hm!S&>7L^rvXi~0k6n4%E7XngWyri=r;I+3 zvBUPbJ`owbE@mq>Ev8yq4ZHzC&=lwcm z^nr}6y^8%>Ay3xET}|Vz7?4f%C|8eLJ8Z1mle^Y>JRkMxHZ5LzK?m!reDu=5{&DYF z)#>=owY5>3zb@RC#LdUmx75ZHCfugKRmYb+J3QVpVrc6BpAT0=(?41}^o5>1@jaK1 zi{0-!eoH!@&3E?rg&~)zEB}mdBL7^{GaqHgo4>Fk_&@gW(W(C}E!S;*@Z(z8lYVHv zYwXqmy9@W(@#lVb>c}0tYq5uXJbvxU=#wr_4t?XT9oTbn|Easr=G%1dE70`(`D&>D z3byj~*}Jbc{%mne{&O2#`FJ1hqj7)XKg9|6*>SG1`L);i&viH+4WCvUZ65qc`h2z@ zT^lXfw?4gpVCZ7>c`o<*h*$Z%MCI=3Tey<^U)zcS@TYI# zDqqinFIAI&Q$2hI{-67SKRf;Y8hhXLywtB>Q$3pM;h(3berW24rhf20O`H0msUOPs egRc?wSM6RqZ0z^ce*T|x?_afgW%K=V>-S$(wtPPT literal 0 HcmV?d00001 diff --git a/src/nodeschool/webgl/breakWall/src/assets/duck.gltf b/src/nodeschool/webgl/breakWall/src/assets/duck.gltf new file mode 100644 index 0000000..db8236b --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/assets/duck.gltf @@ -0,0 +1,805 @@ +{ + "accessors": [ + { + "bufferView": 2, + "componentType": 5126, + "count": 164, + "max": [ + 0.66229593753814697, + 1.9042434692382812, + -0.5 + ], + "min": [ + -0.66229593753814697, + -0.25668424367904663, + -2.1559979915618896 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 1968, + "componentType": 5126, + "count": 164, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 164, + "max": [ + 1, + 0.55997598171234131, + 0.99992632865905762, + 1 + ], + "min": [ + -0.99999994039535522, + -0.94923382997512817, + -0.99993646144866943, + -1 + ], + "type": "VEC4" + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 164, + "max": [ + 0.62609302997589111, + 0.75038439035415649 + ], + "min": [ + 0.5, + 0.49471098184585571 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "componentType": 5125, + "count": 282, + "max": [ + 163 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 3936, + "componentType": 5126, + "count": 20, + "max": [ + 0.5, + 1.3535839319229126, + 0.22203546762466431 + ], + "min": [ + -0.5, + 1.167335033416748, + -0.5 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 4176, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 2624, + "componentType": 5126, + "count": 20, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + -1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 1, + "byteOffset": 1312, + "componentType": 5126, + "count": 20, + "max": [ + 0.875, + 1 + ], + "min": [ + 0.625, + 0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 1128, + "componentType": 5125, + "count": 30, + "max": [ + 19 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 4416, + "componentType": 5126, + "count": 118, + "max": [ + 0.49677857756614685, + -0.25668418407440186, + -1.3222113847732544 + ], + "min": [ + -0.49677857756614685, + -1.0845209360122681, + -1.7018537521362305 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 5832, + "componentType": 5126, + "count": 118, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + -1 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 2944, + "componentType": 5126, + "count": 118, + "max": [ + 0, + 0, + 0, + 1 + ], + "min": [ + 0, + 0, + 0, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 1, + "byteOffset": 1472, + "componentType": 5126, + "count": 118, + "max": [ + 0.5625, + 0.75 + ], + "min": [ + 0.5, + 0.75 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 1248, + "componentType": 5125, + "count": 192, + "max": [ + 117 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 7248, + "componentType": 5126, + "count": 20, + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 7488, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 4832, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 0, + 1, + 1 + ], + "min": [ + 0, + 0, + -1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 1, + "byteOffset": 2416, + "componentType": 5126, + "count": 20, + "max": [ + 0.875, + 1 + ], + "min": [ + 0.125, + 0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 2016, + "componentType": 5125, + "count": 30, + "max": [ + 19 + ], + "min": [ + 0 + ], + "type": "SCALAR" + }, + { + "bufferView": 2, + "byteOffset": 7728, + "componentType": 5126, + "count": 20, + "max": [ + 0.5, + 0.5, + 0.5 + ], + "min": [ + -0.5, + -0.5, + -0.5 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 7968, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 1, + 1 + ], + "min": [ + -1, + -1, + 0 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "byteOffset": 5152, + "componentType": 5126, + "count": 20, + "max": [ + 1, + 0, + 1, + 1 + ], + "min": [ + 0, + 0, + -1, + 1 + ], + "type": "VEC4" + }, + { + "bufferView": 1, + "byteOffset": 2576, + "componentType": 5126, + "count": 20, + "max": [ + 0.875, + 1 + ], + "min": [ + 0.125, + 0 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "byteOffset": 2136, + "componentType": 5125, + "count": 30, + "max": [ + 19 + ], + "min": [ + 0 + ], + "type": "SCALAR" + } + ], + "asset": { + "extras": { + "author": "Luvarv (https://sketchfab.com/luvarv)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/duck-dbb3f5bcf7914454b283184c2b3c1571", + "title": "Duck" + }, + "generator": "Sketchfab-5.72.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 2256, + "byteOffset": 0, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 2736, + "byteOffset": 2256, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 8208, + "byteOffset": 4992, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 5472, + "byteOffset": 13200, + "byteStride": 16, + "name": "floatBufferViews", + "target": 34962 + } + ], + "buffers": [ + { + "byteLength": 18672, + "uri": "scene.bin" + } + ], + "materials": [ + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "name": "lambert3", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 0.93600000000000005, + 0.93600000000000005, + 0.93600000000000005, + 1 + ], + "metallicFactor": 0, + "roughnessFactor": 0.59999999999999998 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "name": "Orange", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 0.66300000000000003, + 0.35735, + 0.114699, + 1 + ], + "metallicFactor": 0, + "roughnessFactor": 0.59999999999999998 + } + }, + { + "doubleSided": true, + "emissiveFactor": [ + 0, + 0, + 0 + ], + "name": "Black", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 0, + 0, + 0, + 1 + ], + "metallicFactor": 0, + "roughnessFactor": 0.92074838159999994 + } + } + ], + "meshes": [ + { + "name": "polySurface1_lambert3_0", + "primitives": [ + { + "attributes": { + "NORMAL": 1, + "POSITION": 0, + "TANGENT": 2, + "TEXCOORD_0": 3 + }, + "indices": 4, + "material": 0, + "mode": 4 + } + ] + }, + { + "name": "polySurface4_Orange_0", + "primitives": [ + { + "attributes": { + "NORMAL": 6, + "POSITION": 5, + "TANGENT": 7, + "TEXCOORD_0": 8 + }, + "indices": 9, + "material": 1, + "mode": 4 + } + ] + }, + { + "name": "polySurface2_Orange_0", + "primitives": [ + { + "attributes": { + "NORMAL": 11, + "POSITION": 10, + "TANGENT": 12, + "TEXCOORD_0": 13 + }, + "indices": 14, + "material": 1, + "mode": 4 + } + ] + }, + { + "name": "pCube5_Black_0", + "primitives": [ + { + "attributes": { + "NORMAL": 16, + "POSITION": 15, + "TANGENT": 17, + "TEXCOORD_0": 18 + }, + "indices": 19, + "material": 2, + "mode": 4 + } + ] + }, + { + "name": "pCube6_Black_0", + "primitives": [ + { + "attributes": { + "NORMAL": 21, + "POSITION": 20, + "TANGENT": 22, + "TEXCOORD_0": 23 + }, + "indices": 24, + "material": 2, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "name": "RootNode (gltf orientation matrix)", + "rotation": [ + -0.70710678118654746, + -0, + -0, + 0.70710678118654757 + ] + }, + { + "children": [ + 2 + ], + "name": "RootNode (model correction matrix)" + }, + { + "children": [ + 3 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 1 + ], + "name": "aa3819508736436cb5098a49db2e8db3.fbx" + }, + { + "children": [ + 4, + 9, + 11, + 13 + ], + "name": "RootNode" + }, + { + "children": [ + 5, + 7 + ], + "name": "pCube3" + }, + { + "children": [ + 6 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 1.0830167531967163, + 0, + 1 + ], + "name": "polySurface1" + }, + { + "mesh": 0, + "name": "polySurface1_lambert3_0" + }, + { + "children": [ + 8 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 1.0830167531967163, + 0, + 1 + ], + "name": "polySurface4" + }, + { + "mesh": 1, + "name": "polySurface4_Orange_0" + }, + { + "children": [ + 10 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 1.0830167531967163, + 0, + 1 + ], + "name": "polySurface2" + }, + { + "mesh": 2, + "name": "polySurface2_Orange_0" + }, + { + "children": [ + 12 + ], + "matrix": [ + 0.12586173415184021, + 0, + 0, + 0, + 0, + 0.12586173415184021, + 0, + 0, + 0, + 0, + 0.070504859089851379, + 0, + 0.38187000155448914, + 2.6960198879241943, + -0.4876745343208313, + 1 + ], + "name": "pCube5" + }, + { + "mesh": 3, + "name": "pCube5_Black_0" + }, + { + "children": [ + 14 + ], + "matrix": [ + 0.12586173415184021, + 0, + 0, + 0, + 0, + 0.12586173415184021, + 0, + 0, + 0, + 0, + 0.070504859089851379, + 0, + -0.38187000155448914, + 2.6960198879241943, + -0.4876745343208313, + 1 + ], + "name": "pCube6" + }, + { + "mesh": 4, + "name": "pCube6_Black_0" + } + ], + "scene": 0, + "scenes": [ + { + "name": "OSG_Scene", + "nodes": [ + 0 + ] + } + ] +} + diff --git a/src/nodeschool/webgl/breakWall/src/assets/grass.gltf b/src/nodeschool/webgl/breakWall/src/assets/grass.gltf new file mode 100644 index 0000000..5972959 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/assets/grass.gltf @@ -0,0 +1,191 @@ +{ + "asset" : { + "generator" : "Khronos glTF Blender I/O v0.9.36", + "version" : "2.0" + }, + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0, + 1, + 2 + ] + } + ], + "nodes" : [ + { + "name" : "Camera.001", + "rotation" : [ + 0.48892179131507874, + 0.49265098571777344, + -0.40445250272750854, + 0.5955406427383423 + ], + "translation" : [ + 26.622543334960938, + 5.081194877624512, + -0.6434955596923828 + ] + }, + { + "mesh" : 0, + "name" : "Plane.001", + "scale" : [ + 5.060948848724365, + 5.060948848724365, + 5.060948848724365 + ], + "translation" : [ + 1.592742919921875, + 16.1560115814209, + -1.7228670120239258 + ] + }, + { + "mesh" : 1, + "name" : "Plane", + "scale" : [ + 3.4123687744140625, + 3.4123687744140625, + 3.4123687744140625 + ], + "translation" : [ + -0.05737867206335068, + 0.3937169909477234, + 0.14393673837184906 + ] + } + ], + "materials" : [ + { + "doubleSided" : true, + "emissiveFactor" : [ + 0.6999417543411255, + 0.800000011920929, + 0.3310304284095764 + ], + "name" : "Material.003", + "pbrMetallicRoughness" : {} + }, + { + "doubleSided" : true, + "name" : "Material.001", + "pbrMetallicRoughness" : {} + } + ], + "meshes" : [ + { + "name" : "Plane.001", + "primitives" : [ + { + "attributes" : { + "POSITION" : 0, + "NORMAL" : 1 + }, + "indices" : 2, + "material" : 0 + } + ] + }, + { + "name" : "Plane", + "primitives" : [ + { + "attributes" : { + "POSITION" : 3, + "NORMAL" : 4 + }, + "indices" : 2, + "material" : 1 + } + ] + } + ], + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5126, + "count" : 4, + "max" : [ + 1, + 0, + 1 + ], + "min" : [ + -1, + 0, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 4, + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5123, + "count" : 6, + "type" : "SCALAR" + }, + { + "bufferView" : 3, + "componentType" : 5126, + "count" : 4, + "max" : [ + 1, + 0, + 1 + ], + "min" : [ + -1, + 0, + -1 + ], + "type" : "VEC3" + }, + { + "bufferView" : 4, + "componentType" : 5126, + "count" : 4, + "type" : "VEC3" + } + ], + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 0 + }, + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 48 + }, + { + "buffer" : 0, + "byteLength" : 12, + "byteOffset" : 96 + }, + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 108 + }, + { + "buffer" : 0, + "byteLength" : 48, + "byteOffset" : 156 + } + ], + "buffers" : [ + { + "byteLength" : 204, + "uri" : "data:application/octet-stream;base64,AACAvwAAAAAAAIA/AACAPwAAAAAAAIC/AACAvwAAAAAAAIC/AACAPwAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAABAAIAAAADAAEAAACAvwAAAAAAAIA/AACAPwAAAAAAAIC/AACAvwAAAAAAAIC/AACAPwAAAAAAAIA/AAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACA" + } + ] +} diff --git a/src/nodeschool/webgl/breakWall/src/assets/helvetiker_regular.typeface.json b/src/nodeschool/webgl/breakWall/src/assets/helvetiker_regular.typeface.json new file mode 100644 index 0000000..d19293b --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/assets/helvetiker_regular.typeface.json @@ -0,0 +1 @@ +{"glyphs":{"ο":{"x_min":0,"x_max":712,"ha":815,"o":"m 356 -25 q 96 88 192 -25 q 0 368 0 201 q 92 642 0 533 q 356 761 192 761 q 617 644 517 761 q 712 368 712 533 q 619 91 712 201 q 356 -25 520 -25 m 356 85 q 527 175 465 85 q 583 369 583 255 q 528 562 583 484 q 356 651 466 651 q 189 560 250 651 q 135 369 135 481 q 187 177 135 257 q 356 85 250 85 "},"S":{"x_min":0,"x_max":788,"ha":890,"o":"m 788 291 q 662 54 788 144 q 397 -26 550 -26 q 116 68 226 -26 q 0 337 0 168 l 131 337 q 200 152 131 220 q 384 85 269 85 q 557 129 479 85 q 650 270 650 183 q 490 429 650 379 q 194 513 341 470 q 33 739 33 584 q 142 964 33 881 q 388 1041 242 1041 q 644 957 543 1041 q 756 716 756 867 l 625 716 q 561 874 625 816 q 395 933 497 933 q 243 891 309 933 q 164 759 164 841 q 325 609 164 656 q 625 526 475 568 q 788 291 788 454 "},"¦":{"x_min":343,"x_max":449,"ha":792,"o":"m 449 462 l 343 462 l 343 986 l 449 986 l 449 462 m 449 -242 l 343 -242 l 343 280 l 449 280 l 449 -242 "},"/":{"x_min":183.25,"x_max":608.328125,"ha":792,"o":"m 608 1041 l 266 -129 l 183 -129 l 520 1041 l 608 1041 "},"Τ":{"x_min":-0.4375,"x_max":777.453125,"ha":839,"o":"m 777 893 l 458 893 l 458 0 l 319 0 l 319 892 l 0 892 l 0 1013 l 777 1013 l 777 893 "},"y":{"x_min":0,"x_max":684.78125,"ha":771,"o":"m 684 738 l 388 -83 q 311 -216 356 -167 q 173 -279 252 -279 q 97 -266 133 -279 l 97 -149 q 132 -155 109 -151 q 168 -160 155 -160 q 240 -114 213 -160 q 274 -26 248 -98 l 0 738 l 137 737 l 341 139 l 548 737 l 684 738 "},"Π":{"x_min":0,"x_max":803,"ha":917,"o":"m 803 0 l 667 0 l 667 886 l 140 886 l 140 0 l 0 0 l 0 1012 l 803 1012 l 803 0 "},"ΐ":{"x_min":-111,"x_max":339,"ha":361,"o":"m 339 800 l 229 800 l 229 925 l 339 925 l 339 800 m -1 800 l -111 800 l -111 925 l -1 925 l -1 800 m 284 3 q 233 -10 258 -5 q 182 -15 207 -15 q 85 26 119 -15 q 42 200 42 79 l 42 737 l 167 737 l 168 215 q 172 141 168 157 q 226 101 183 101 q 248 103 239 101 q 284 112 257 104 l 284 3 m 302 1040 l 113 819 l 30 819 l 165 1040 l 302 1040 "},"g":{"x_min":0,"x_max":686,"ha":838,"o":"m 686 34 q 586 -213 686 -121 q 331 -306 487 -306 q 131 -252 216 -306 q 31 -84 31 -190 l 155 -84 q 228 -174 166 -138 q 345 -207 284 -207 q 514 -109 454 -207 q 564 89 564 -27 q 461 6 521 36 q 335 -23 401 -23 q 88 100 184 -23 q 0 370 0 215 q 87 634 0 522 q 330 758 183 758 q 457 728 398 758 q 564 644 515 699 l 564 737 l 686 737 l 686 34 m 582 367 q 529 560 582 481 q 358 652 468 652 q 189 561 250 652 q 135 369 135 482 q 189 176 135 255 q 361 85 251 85 q 529 176 468 85 q 582 367 582 255 "},"²":{"x_min":0,"x_max":442,"ha":539,"o":"m 442 383 l 0 383 q 91 566 0 492 q 260 668 176 617 q 354 798 354 727 q 315 875 354 845 q 227 905 277 905 q 136 869 173 905 q 99 761 99 833 l 14 761 q 82 922 14 864 q 232 974 141 974 q 379 926 316 974 q 442 797 442 878 q 351 635 442 704 q 183 539 321 611 q 92 455 92 491 l 442 455 l 442 383 "},"–":{"x_min":0,"x_max":705.5625,"ha":803,"o":"m 705 334 l 0 334 l 0 410 l 705 410 l 705 334 "},"Κ":{"x_min":0,"x_max":819.5625,"ha":893,"o":"m 819 0 l 650 0 l 294 509 l 139 356 l 139 0 l 0 0 l 0 1013 l 139 1013 l 139 526 l 626 1013 l 809 1013 l 395 600 l 819 0 "},"ƒ":{"x_min":-46.265625,"x_max":392,"ha":513,"o":"m 392 651 l 259 651 l 79 -279 l -46 -278 l 134 651 l 14 651 l 14 751 l 135 751 q 151 948 135 900 q 304 1041 185 1041 q 334 1040 319 1041 q 392 1034 348 1039 l 392 922 q 337 931 360 931 q 271 883 287 931 q 260 793 260 853 l 260 751 l 392 751 l 392 651 "},"e":{"x_min":0,"x_max":714,"ha":813,"o":"m 714 326 l 140 326 q 200 157 140 227 q 359 87 260 87 q 488 130 431 87 q 561 245 545 174 l 697 245 q 577 48 670 123 q 358 -26 484 -26 q 97 85 195 -26 q 0 363 0 197 q 94 642 0 529 q 358 765 195 765 q 626 627 529 765 q 714 326 714 503 m 576 429 q 507 583 564 522 q 355 650 445 650 q 206 583 266 650 q 140 429 152 522 l 576 429 "},"ό":{"x_min":0,"x_max":712,"ha":815,"o":"m 356 -25 q 94 91 194 -25 q 0 368 0 202 q 92 642 0 533 q 356 761 192 761 q 617 644 517 761 q 712 368 712 533 q 619 91 712 201 q 356 -25 520 -25 m 356 85 q 527 175 465 85 q 583 369 583 255 q 528 562 583 484 q 356 651 466 651 q 189 560 250 651 q 135 369 135 481 q 187 177 135 257 q 356 85 250 85 m 576 1040 l 387 819 l 303 819 l 438 1040 l 576 1040 "},"J":{"x_min":0,"x_max":588,"ha":699,"o":"m 588 279 q 287 -26 588 -26 q 58 73 126 -26 q 0 327 0 158 l 133 327 q 160 172 133 227 q 288 96 198 96 q 426 171 391 96 q 449 336 449 219 l 449 1013 l 588 1013 l 588 279 "},"»":{"x_min":-1,"x_max":503,"ha":601,"o":"m 503 302 l 280 136 l 281 256 l 429 373 l 281 486 l 280 608 l 503 440 l 503 302 m 221 302 l 0 136 l 0 255 l 145 372 l 0 486 l -1 608 l 221 440 l 221 302 "},"©":{"x_min":-3,"x_max":1008,"ha":1106,"o":"m 502 -7 q 123 151 263 -7 q -3 501 -3 294 q 123 851 -3 706 q 502 1011 263 1011 q 881 851 739 1011 q 1008 501 1008 708 q 883 151 1008 292 q 502 -7 744 -7 m 502 60 q 830 197 709 60 q 940 501 940 322 q 831 805 940 681 q 502 944 709 944 q 174 805 296 944 q 65 501 65 680 q 173 197 65 320 q 502 60 294 60 m 741 394 q 661 246 731 302 q 496 190 591 190 q 294 285 369 190 q 228 497 228 370 q 295 714 228 625 q 499 813 370 813 q 656 762 588 813 q 733 625 724 711 l 634 625 q 589 704 629 673 q 498 735 550 735 q 377 666 421 735 q 334 504 334 597 q 374 340 334 408 q 490 272 415 272 q 589 304 549 272 q 638 394 628 337 l 741 394 "},"ώ":{"x_min":0,"x_max":922,"ha":1030,"o":"m 687 1040 l 498 819 l 415 819 l 549 1040 l 687 1040 m 922 339 q 856 97 922 203 q 650 -26 780 -26 q 538 9 587 -26 q 461 103 489 44 q 387 12 436 46 q 277 -22 339 -22 q 69 97 147 -22 q 0 338 0 202 q 45 551 0 444 q 161 737 84 643 l 302 737 q 175 552 219 647 q 124 336 124 446 q 155 179 124 248 q 275 88 197 88 q 375 163 341 88 q 400 294 400 219 l 400 572 l 524 572 l 524 294 q 561 135 524 192 q 643 88 591 88 q 762 182 719 88 q 797 341 797 257 q 745 555 797 450 q 619 737 705 637 l 760 737 q 874 551 835 640 q 922 339 922 444 "},"^":{"x_min":193.0625,"x_max":598.609375,"ha":792,"o":"m 598 772 l 515 772 l 395 931 l 277 772 l 193 772 l 326 1013 l 462 1013 l 598 772 "},"«":{"x_min":0,"x_max":507.203125,"ha":604,"o":"m 506 136 l 284 302 l 284 440 l 506 608 l 507 485 l 360 371 l 506 255 l 506 136 m 222 136 l 0 302 l 0 440 l 222 608 l 221 486 l 73 373 l 222 256 l 222 136 "},"D":{"x_min":0,"x_max":828,"ha":935,"o":"m 389 1013 q 714 867 593 1013 q 828 521 828 729 q 712 161 828 309 q 382 0 587 0 l 0 0 l 0 1013 l 389 1013 m 376 124 q 607 247 523 124 q 681 510 681 355 q 607 771 681 662 q 376 896 522 896 l 139 896 l 139 124 l 376 124 "},"∙":{"x_min":0,"x_max":142,"ha":239,"o":"m 142 585 l 0 585 l 0 738 l 142 738 l 142 585 "},"ÿ":{"x_min":0,"x_max":47,"ha":125,"o":"m 47 3 q 37 -7 47 -7 q 28 0 30 -7 q 39 -4 32 -4 q 45 3 45 -1 l 37 0 q 28 9 28 0 q 39 19 28 19 l 47 16 l 47 19 l 47 3 m 37 1 q 44 8 44 1 q 37 16 44 16 q 30 8 30 16 q 37 1 30 1 m 26 1 l 23 22 l 14 0 l 3 22 l 3 3 l 0 25 l 13 1 l 22 25 l 26 1 "},"w":{"x_min":0,"x_max":1009.71875,"ha":1100,"o":"m 1009 738 l 783 0 l 658 0 l 501 567 l 345 0 l 222 0 l 0 738 l 130 738 l 284 174 l 432 737 l 576 738 l 721 173 l 881 737 l 1009 738 "},"$":{"x_min":0,"x_max":700,"ha":793,"o":"m 664 717 l 542 717 q 490 825 531 785 q 381 872 450 865 l 381 551 q 620 446 540 522 q 700 241 700 370 q 618 45 700 116 q 381 -25 536 -25 l 381 -152 l 307 -152 l 307 -25 q 81 62 162 -25 q 0 297 0 149 l 124 297 q 169 146 124 204 q 307 81 215 89 l 307 441 q 80 536 148 469 q 13 725 13 603 q 96 910 13 839 q 307 982 180 982 l 307 1077 l 381 1077 l 381 982 q 574 917 494 982 q 664 717 664 845 m 307 565 l 307 872 q 187 831 233 872 q 142 724 142 791 q 180 618 142 656 q 307 565 218 580 m 381 76 q 562 237 562 96 q 517 361 562 313 q 381 423 472 409 l 381 76 "},"\\":{"x_min":-0.015625,"x_max":425.0625,"ha":522,"o":"m 425 -129 l 337 -129 l 0 1041 l 83 1041 l 425 -129 "},"µ":{"x_min":0,"x_max":697.21875,"ha":747,"o":"m 697 -4 q 629 -14 658 -14 q 498 97 513 -14 q 422 9 470 41 q 313 -23 374 -23 q 207 4 258 -23 q 119 81 156 32 l 119 -278 l 0 -278 l 0 738 l 124 738 l 124 343 q 165 173 124 246 q 308 83 216 83 q 452 178 402 83 q 493 359 493 255 l 493 738 l 617 738 l 617 214 q 623 136 617 160 q 673 92 637 92 q 697 96 684 92 l 697 -4 "},"Ι":{"x_min":42,"x_max":181,"ha":297,"o":"m 181 0 l 42 0 l 42 1013 l 181 1013 l 181 0 "},"Ύ":{"x_min":0,"x_max":1144.5,"ha":1214,"o":"m 1144 1012 l 807 416 l 807 0 l 667 0 l 667 416 l 325 1012 l 465 1012 l 736 533 l 1004 1012 l 1144 1012 m 277 1040 l 83 799 l 0 799 l 140 1040 l 277 1040 "},"’":{"x_min":0,"x_max":139,"ha":236,"o":"m 139 851 q 102 737 139 784 q 0 669 65 690 l 0 734 q 59 787 42 741 q 72 873 72 821 l 0 873 l 0 1013 l 139 1013 l 139 851 "},"Ν":{"x_min":0,"x_max":801,"ha":915,"o":"m 801 0 l 651 0 l 131 822 l 131 0 l 0 0 l 0 1013 l 151 1013 l 670 191 l 670 1013 l 801 1013 l 801 0 "},"-":{"x_min":8.71875,"x_max":350.390625,"ha":478,"o":"m 350 317 l 8 317 l 8 428 l 350 428 l 350 317 "},"Q":{"x_min":0,"x_max":968,"ha":1072,"o":"m 954 5 l 887 -79 l 744 35 q 622 -11 687 2 q 483 -26 556 -26 q 127 130 262 -26 q 0 504 0 279 q 127 880 0 728 q 484 1041 262 1041 q 841 884 708 1041 q 968 507 968 735 q 933 293 968 398 q 832 104 899 188 l 954 5 m 723 191 q 802 330 777 248 q 828 499 828 412 q 744 790 828 673 q 483 922 650 922 q 228 791 322 922 q 142 505 142 673 q 227 221 142 337 q 487 91 323 91 q 632 123 566 91 l 520 215 l 587 301 l 723 191 "},"ς":{"x_min":1,"x_max":676.28125,"ha":740,"o":"m 676 460 l 551 460 q 498 595 542 546 q 365 651 448 651 q 199 578 263 651 q 136 401 136 505 q 266 178 136 241 q 508 106 387 142 q 640 -50 640 62 q 625 -158 640 -105 q 583 -278 611 -211 l 465 -278 q 498 -182 490 -211 q 515 -80 515 -126 q 381 12 515 -15 q 134 91 197 51 q 1 388 1 179 q 100 651 1 542 q 354 761 199 761 q 587 680 498 761 q 676 460 676 599 "},"M":{"x_min":0,"x_max":954,"ha":1067,"o":"m 954 0 l 819 0 l 819 869 l 537 0 l 405 0 l 128 866 l 128 0 l 0 0 l 0 1013 l 200 1013 l 472 160 l 757 1013 l 954 1013 l 954 0 "},"Ψ":{"x_min":0,"x_max":1006,"ha":1094,"o":"m 1006 678 q 914 319 1006 429 q 571 200 814 200 l 571 0 l 433 0 l 433 200 q 92 319 194 200 q 0 678 0 429 l 0 1013 l 139 1013 l 139 679 q 191 417 139 492 q 433 326 255 326 l 433 1013 l 571 1013 l 571 326 l 580 326 q 813 423 747 326 q 868 679 868 502 l 868 1013 l 1006 1013 l 1006 678 "},"C":{"x_min":0,"x_max":886,"ha":944,"o":"m 886 379 q 760 87 886 201 q 455 -26 634 -26 q 112 136 236 -26 q 0 509 0 283 q 118 882 0 737 q 469 1041 245 1041 q 748 955 630 1041 q 879 708 879 859 l 745 708 q 649 862 724 805 q 473 920 573 920 q 219 791 312 920 q 136 509 136 675 q 217 229 136 344 q 470 99 311 99 q 672 179 591 99 q 753 379 753 259 l 886 379 "},"!":{"x_min":0,"x_max":138,"ha":236,"o":"m 138 684 q 116 409 138 629 q 105 244 105 299 l 33 244 q 16 465 33 313 q 0 684 0 616 l 0 1013 l 138 1013 l 138 684 m 138 0 l 0 0 l 0 151 l 138 151 l 138 0 "},"{":{"x_min":0,"x_max":480.5625,"ha":578,"o":"m 480 -286 q 237 -213 303 -286 q 187 -45 187 -159 q 194 48 187 -15 q 201 141 201 112 q 164 264 201 225 q 0 314 118 314 l 0 417 q 164 471 119 417 q 201 605 201 514 q 199 665 201 644 q 193 772 193 769 q 241 941 193 887 q 480 1015 308 1015 l 480 915 q 336 866 375 915 q 306 742 306 828 q 310 662 306 717 q 314 577 314 606 q 288 452 314 500 q 176 365 256 391 q 289 275 257 337 q 314 143 314 226 q 313 84 314 107 q 310 -11 310 -5 q 339 -131 310 -94 q 480 -182 377 -182 l 480 -286 "},"X":{"x_min":-0.015625,"x_max":854.15625,"ha":940,"o":"m 854 0 l 683 0 l 423 409 l 166 0 l 0 0 l 347 519 l 18 1013 l 186 1013 l 428 637 l 675 1013 l 836 1013 l 504 520 l 854 0 "},"#":{"x_min":0,"x_max":963.890625,"ha":1061,"o":"m 963 690 l 927 590 l 719 590 l 655 410 l 876 410 l 840 310 l 618 310 l 508 -3 l 393 -2 l 506 309 l 329 310 l 215 -2 l 102 -3 l 212 310 l 0 310 l 36 410 l 248 409 l 312 590 l 86 590 l 120 690 l 347 690 l 459 1006 l 573 1006 l 462 690 l 640 690 l 751 1006 l 865 1006 l 754 690 l 963 690 m 606 590 l 425 590 l 362 410 l 543 410 l 606 590 "},"ι":{"x_min":42,"x_max":284,"ha":361,"o":"m 284 3 q 233 -10 258 -5 q 182 -15 207 -15 q 85 26 119 -15 q 42 200 42 79 l 42 738 l 167 738 l 168 215 q 172 141 168 157 q 226 101 183 101 q 248 103 239 101 q 284 112 257 104 l 284 3 "},"Ά":{"x_min":0,"x_max":906.953125,"ha":982,"o":"m 283 1040 l 88 799 l 5 799 l 145 1040 l 283 1040 m 906 0 l 756 0 l 650 303 l 251 303 l 143 0 l 0 0 l 376 1012 l 529 1012 l 906 0 m 609 421 l 452 866 l 293 421 l 609 421 "},")":{"x_min":0,"x_max":318,"ha":415,"o":"m 318 365 q 257 25 318 191 q 87 -290 197 -141 l 0 -290 q 140 21 93 -128 q 193 360 193 189 q 141 704 193 537 q 0 1024 97 850 l 87 1024 q 257 706 197 871 q 318 365 318 542 "},"ε":{"x_min":0,"x_max":634.71875,"ha":714,"o":"m 634 234 q 527 38 634 110 q 300 -25 433 -25 q 98 29 183 -25 q 0 204 0 93 q 37 314 0 265 q 128 390 67 353 q 56 460 82 419 q 26 555 26 505 q 114 712 26 654 q 295 763 191 763 q 499 700 416 763 q 589 515 589 631 l 478 515 q 419 618 464 580 q 307 657 374 657 q 207 630 253 657 q 151 547 151 598 q 238 445 151 469 q 389 434 280 434 l 389 331 l 349 331 q 206 315 255 331 q 125 210 125 287 q 183 107 125 145 q 302 76 233 76 q 436 117 379 76 q 509 234 493 159 l 634 234 "},"Δ":{"x_min":0,"x_max":952.78125,"ha":1028,"o":"m 952 0 l 0 0 l 400 1013 l 551 1013 l 952 0 m 762 124 l 476 867 l 187 124 l 762 124 "},"}":{"x_min":0,"x_max":481,"ha":578,"o":"m 481 314 q 318 262 364 314 q 282 136 282 222 q 284 65 282 97 q 293 -58 293 -48 q 241 -217 293 -166 q 0 -286 174 -286 l 0 -182 q 143 -130 105 -182 q 171 -2 171 -93 q 168 81 171 22 q 165 144 165 140 q 188 275 165 229 q 306 365 220 339 q 191 455 224 391 q 165 588 165 505 q 168 681 165 624 q 171 742 171 737 q 141 865 171 827 q 0 915 102 915 l 0 1015 q 243 942 176 1015 q 293 773 293 888 q 287 675 293 741 q 282 590 282 608 q 318 466 282 505 q 481 417 364 417 l 481 314 "},"‰":{"x_min":-3,"x_max":1672,"ha":1821,"o":"m 846 0 q 664 76 732 0 q 603 244 603 145 q 662 412 603 344 q 846 489 729 489 q 1027 412 959 489 q 1089 244 1089 343 q 1029 76 1089 144 q 846 0 962 0 m 845 103 q 945 143 910 103 q 981 243 981 184 q 947 340 981 301 q 845 385 910 385 q 745 342 782 385 q 709 243 709 300 q 742 147 709 186 q 845 103 781 103 m 888 986 l 284 -25 l 199 -25 l 803 986 l 888 986 m 241 468 q 58 545 126 468 q -3 715 -3 615 q 56 881 -3 813 q 238 958 124 958 q 421 881 353 958 q 483 712 483 813 q 423 544 483 612 q 241 468 356 468 m 241 855 q 137 811 175 855 q 100 710 100 768 q 136 612 100 653 q 240 572 172 572 q 344 614 306 572 q 382 713 382 656 q 347 810 382 771 q 241 855 308 855 m 1428 0 q 1246 76 1314 0 q 1185 244 1185 145 q 1244 412 1185 344 q 1428 489 1311 489 q 1610 412 1542 489 q 1672 244 1672 343 q 1612 76 1672 144 q 1428 0 1545 0 m 1427 103 q 1528 143 1492 103 q 1564 243 1564 184 q 1530 340 1564 301 q 1427 385 1492 385 q 1327 342 1364 385 q 1291 243 1291 300 q 1324 147 1291 186 q 1427 103 1363 103 "},"a":{"x_min":0,"x_max":698.609375,"ha":794,"o":"m 698 0 q 661 -12 679 -7 q 615 -17 643 -17 q 536 12 564 -17 q 500 96 508 41 q 384 6 456 37 q 236 -25 312 -25 q 65 31 130 -25 q 0 194 0 88 q 118 390 0 334 q 328 435 180 420 q 488 483 476 451 q 495 523 495 504 q 442 619 495 584 q 325 654 389 654 q 209 617 257 654 q 152 513 161 580 l 33 513 q 123 705 33 633 q 332 772 207 772 q 528 712 448 772 q 617 531 617 645 l 617 163 q 624 108 617 126 q 664 90 632 90 l 698 94 l 698 0 m 491 262 l 491 372 q 272 329 350 347 q 128 201 128 294 q 166 113 128 144 q 264 83 205 83 q 414 130 346 83 q 491 262 491 183 "},"—":{"x_min":0,"x_max":941.671875,"ha":1039,"o":"m 941 334 l 0 334 l 0 410 l 941 410 l 941 334 "},"=":{"x_min":8.71875,"x_max":780.953125,"ha":792,"o":"m 780 510 l 8 510 l 8 606 l 780 606 l 780 510 m 780 235 l 8 235 l 8 332 l 780 332 l 780 235 "},"N":{"x_min":0,"x_max":801,"ha":914,"o":"m 801 0 l 651 0 l 131 823 l 131 0 l 0 0 l 0 1013 l 151 1013 l 670 193 l 670 1013 l 801 1013 l 801 0 "},"ρ":{"x_min":0,"x_max":712,"ha":797,"o":"m 712 369 q 620 94 712 207 q 362 -26 521 -26 q 230 2 292 -26 q 119 83 167 30 l 119 -278 l 0 -278 l 0 362 q 91 643 0 531 q 355 764 190 764 q 617 647 517 764 q 712 369 712 536 m 583 366 q 530 559 583 480 q 359 651 469 651 q 190 562 252 651 q 135 370 135 483 q 189 176 135 257 q 359 85 250 85 q 528 175 466 85 q 583 366 583 254 "},"2":{"x_min":59,"x_max":731,"ha":792,"o":"m 731 0 l 59 0 q 197 314 59 188 q 457 487 199 315 q 598 691 598 580 q 543 819 598 772 q 411 867 488 867 q 272 811 328 867 q 209 630 209 747 l 81 630 q 182 901 81 805 q 408 986 271 986 q 629 909 536 986 q 731 694 731 826 q 613 449 731 541 q 378 316 495 383 q 201 122 235 234 l 731 122 l 731 0 "},"¯":{"x_min":0,"x_max":941.671875,"ha":938,"o":"m 941 1033 l 0 1033 l 0 1109 l 941 1109 l 941 1033 "},"Z":{"x_min":0,"x_max":779,"ha":849,"o":"m 779 0 l 0 0 l 0 113 l 621 896 l 40 896 l 40 1013 l 779 1013 l 778 887 l 171 124 l 779 124 l 779 0 "},"u":{"x_min":0,"x_max":617,"ha":729,"o":"m 617 0 l 499 0 l 499 110 q 391 10 460 45 q 246 -25 322 -25 q 61 58 127 -25 q 0 258 0 136 l 0 738 l 125 738 l 125 284 q 156 148 125 202 q 273 82 197 82 q 433 165 369 82 q 493 340 493 243 l 493 738 l 617 738 l 617 0 "},"k":{"x_min":0,"x_max":612.484375,"ha":697,"o":"m 612 738 l 338 465 l 608 0 l 469 0 l 251 382 l 121 251 l 121 0 l 0 0 l 0 1013 l 121 1013 l 121 402 l 456 738 l 612 738 "},"Η":{"x_min":0,"x_max":803,"ha":917,"o":"m 803 0 l 667 0 l 667 475 l 140 475 l 140 0 l 0 0 l 0 1013 l 140 1013 l 140 599 l 667 599 l 667 1013 l 803 1013 l 803 0 "},"Α":{"x_min":0,"x_max":906.953125,"ha":985,"o":"m 906 0 l 756 0 l 650 303 l 251 303 l 143 0 l 0 0 l 376 1013 l 529 1013 l 906 0 m 609 421 l 452 866 l 293 421 l 609 421 "},"s":{"x_min":0,"x_max":604,"ha":697,"o":"m 604 217 q 501 36 604 104 q 292 -23 411 -23 q 86 43 166 -23 q 0 238 0 114 l 121 237 q 175 122 121 164 q 300 85 223 85 q 415 112 363 85 q 479 207 479 147 q 361 309 479 276 q 140 372 141 370 q 21 544 21 426 q 111 708 21 647 q 298 761 190 761 q 492 705 413 761 q 583 531 583 643 l 462 531 q 412 625 462 594 q 298 657 363 657 q 199 636 242 657 q 143 558 143 608 q 262 454 143 486 q 484 394 479 397 q 604 217 604 341 "},"B":{"x_min":0,"x_max":778,"ha":876,"o":"m 580 546 q 724 469 670 535 q 778 311 778 403 q 673 83 778 171 q 432 0 575 0 l 0 0 l 0 1013 l 411 1013 q 629 957 541 1013 q 732 768 732 892 q 691 633 732 693 q 580 546 650 572 m 393 899 l 139 899 l 139 588 l 379 588 q 521 624 462 588 q 592 744 592 667 q 531 859 592 819 q 393 899 471 899 m 419 124 q 566 169 504 124 q 635 303 635 219 q 559 436 635 389 q 402 477 494 477 l 139 477 l 139 124 l 419 124 "},"…":{"x_min":0,"x_max":614,"ha":708,"o":"m 142 0 l 0 0 l 0 151 l 142 151 l 142 0 m 378 0 l 236 0 l 236 151 l 378 151 l 378 0 m 614 0 l 472 0 l 472 151 l 614 151 l 614 0 "},"?":{"x_min":0,"x_max":607,"ha":704,"o":"m 607 777 q 543 599 607 674 q 422 474 482 537 q 357 272 357 391 l 236 272 q 297 487 236 395 q 411 619 298 490 q 474 762 474 691 q 422 885 474 838 q 301 933 371 933 q 179 880 228 933 q 124 706 124 819 l 0 706 q 94 963 0 872 q 302 1044 177 1044 q 511 973 423 1044 q 607 777 607 895 m 370 0 l 230 0 l 230 151 l 370 151 l 370 0 "},"H":{"x_min":0,"x_max":803,"ha":915,"o":"m 803 0 l 667 0 l 667 475 l 140 475 l 140 0 l 0 0 l 0 1013 l 140 1013 l 140 599 l 667 599 l 667 1013 l 803 1013 l 803 0 "},"ν":{"x_min":0,"x_max":675,"ha":761,"o":"m 675 738 l 404 0 l 272 0 l 0 738 l 133 738 l 340 147 l 541 738 l 675 738 "},"c":{"x_min":1,"x_max":701.390625,"ha":775,"o":"m 701 264 q 584 53 681 133 q 353 -26 487 -26 q 91 91 188 -26 q 1 370 1 201 q 92 645 1 537 q 353 761 190 761 q 572 688 479 761 q 690 493 666 615 l 556 493 q 487 606 545 562 q 356 650 428 650 q 186 563 246 650 q 134 372 134 487 q 188 179 134 258 q 359 88 250 88 q 492 136 437 88 q 566 264 548 185 l 701 264 "},"¶":{"x_min":0,"x_max":566.671875,"ha":678,"o":"m 21 892 l 52 892 l 98 761 l 145 892 l 176 892 l 178 741 l 157 741 l 157 867 l 108 741 l 88 741 l 40 871 l 40 741 l 21 741 l 21 892 m 308 854 l 308 731 q 252 691 308 691 q 227 691 240 691 q 207 696 213 695 l 207 712 l 253 706 q 288 733 288 706 l 288 763 q 244 741 279 741 q 193 797 193 741 q 261 860 193 860 q 287 860 273 860 q 308 854 302 855 m 288 842 l 263 843 q 213 796 213 843 q 248 756 213 756 q 288 796 288 756 l 288 842 m 566 988 l 502 988 l 502 -1 l 439 -1 l 439 988 l 317 988 l 317 -1 l 252 -1 l 252 602 q 81 653 155 602 q 0 805 0 711 q 101 989 0 918 q 309 1053 194 1053 l 566 1053 l 566 988 "},"β":{"x_min":0,"x_max":660,"ha":745,"o":"m 471 550 q 610 450 561 522 q 660 280 660 378 q 578 64 660 151 q 367 -22 497 -22 q 239 5 299 -22 q 126 82 178 32 l 126 -278 l 0 -278 l 0 593 q 54 903 0 801 q 318 1042 127 1042 q 519 964 436 1042 q 603 771 603 887 q 567 644 603 701 q 471 550 532 586 m 337 79 q 476 138 418 79 q 535 279 535 198 q 427 437 535 386 q 226 477 344 477 l 226 583 q 398 620 329 583 q 486 762 486 668 q 435 884 486 833 q 312 935 384 935 q 169 861 219 935 q 126 698 126 797 l 126 362 q 170 169 126 242 q 337 79 224 79 "},"Μ":{"x_min":0,"x_max":954,"ha":1068,"o":"m 954 0 l 819 0 l 819 868 l 537 0 l 405 0 l 128 865 l 128 0 l 0 0 l 0 1013 l 199 1013 l 472 158 l 758 1013 l 954 1013 l 954 0 "},"Ό":{"x_min":0.109375,"x_max":1120,"ha":1217,"o":"m 1120 505 q 994 132 1120 282 q 642 -29 861 -29 q 290 130 422 -29 q 167 505 167 280 q 294 883 167 730 q 650 1046 430 1046 q 999 882 868 1046 q 1120 505 1120 730 m 977 504 q 896 784 977 669 q 644 915 804 915 q 391 785 484 915 q 307 504 307 669 q 391 224 307 339 q 644 95 486 95 q 894 224 803 95 q 977 504 977 339 m 277 1040 l 83 799 l 0 799 l 140 1040 l 277 1040 "},"Ή":{"x_min":0,"x_max":1158,"ha":1275,"o":"m 1158 0 l 1022 0 l 1022 475 l 496 475 l 496 0 l 356 0 l 356 1012 l 496 1012 l 496 599 l 1022 599 l 1022 1012 l 1158 1012 l 1158 0 m 277 1040 l 83 799 l 0 799 l 140 1040 l 277 1040 "},"•":{"x_min":0,"x_max":663.890625,"ha":775,"o":"m 663 529 q 566 293 663 391 q 331 196 469 196 q 97 294 194 196 q 0 529 0 393 q 96 763 0 665 q 331 861 193 861 q 566 763 469 861 q 663 529 663 665 "},"¥":{"x_min":0.1875,"x_max":819.546875,"ha":886,"o":"m 563 561 l 697 561 l 696 487 l 520 487 l 482 416 l 482 380 l 697 380 l 695 308 l 482 308 l 482 0 l 342 0 l 342 308 l 125 308 l 125 380 l 342 380 l 342 417 l 303 487 l 125 487 l 125 561 l 258 561 l 0 1013 l 140 1013 l 411 533 l 679 1013 l 819 1013 l 563 561 "},"(":{"x_min":0,"x_max":318.0625,"ha":415,"o":"m 318 -290 l 230 -290 q 61 23 122 -142 q 0 365 0 190 q 62 712 0 540 q 230 1024 119 869 l 318 1024 q 175 705 219 853 q 125 360 125 542 q 176 22 125 187 q 318 -290 223 -127 "},"U":{"x_min":0,"x_max":796,"ha":904,"o":"m 796 393 q 681 93 796 212 q 386 -25 566 -25 q 101 95 208 -25 q 0 393 0 211 l 0 1013 l 138 1013 l 138 391 q 204 191 138 270 q 394 107 276 107 q 586 191 512 107 q 656 391 656 270 l 656 1013 l 796 1013 l 796 393 "},"γ":{"x_min":0.5,"x_max":744.953125,"ha":822,"o":"m 744 737 l 463 54 l 463 -278 l 338 -278 l 338 54 l 154 495 q 104 597 124 569 q 13 651 67 651 l 0 651 l 0 751 l 39 753 q 168 711 121 753 q 242 594 207 676 l 403 208 l 617 737 l 744 737 "},"α":{"x_min":0,"x_max":765.5625,"ha":809,"o":"m 765 -4 q 698 -14 726 -14 q 564 97 586 -14 q 466 7 525 40 q 337 -26 407 -26 q 88 98 186 -26 q 0 369 0 212 q 88 637 0 525 q 337 760 184 760 q 465 728 407 760 q 563 637 524 696 l 563 739 l 685 739 l 685 222 q 693 141 685 168 q 748 94 708 94 q 765 96 760 94 l 765 -4 m 584 371 q 531 562 584 485 q 360 653 470 653 q 192 566 254 653 q 135 379 135 489 q 186 181 135 261 q 358 84 247 84 q 528 176 465 84 q 584 371 584 260 "},"F":{"x_min":0,"x_max":683.328125,"ha":717,"o":"m 683 888 l 140 888 l 140 583 l 613 583 l 613 458 l 140 458 l 140 0 l 0 0 l 0 1013 l 683 1013 l 683 888 "},"­":{"x_min":0,"x_max":705.5625,"ha":803,"o":"m 705 334 l 0 334 l 0 410 l 705 410 l 705 334 "},":":{"x_min":0,"x_max":142,"ha":239,"o":"m 142 585 l 0 585 l 0 738 l 142 738 l 142 585 m 142 0 l 0 0 l 0 151 l 142 151 l 142 0 "},"Χ":{"x_min":0,"x_max":854.171875,"ha":935,"o":"m 854 0 l 683 0 l 423 409 l 166 0 l 0 0 l 347 519 l 18 1013 l 186 1013 l 427 637 l 675 1013 l 836 1013 l 504 521 l 854 0 "},"*":{"x_min":116,"x_max":674,"ha":792,"o":"m 674 768 l 475 713 l 610 544 l 517 477 l 394 652 l 272 478 l 178 544 l 314 713 l 116 766 l 153 876 l 341 812 l 342 1013 l 446 1013 l 446 811 l 635 874 l 674 768 "},"†":{"x_min":0,"x_max":777,"ha":835,"o":"m 458 804 l 777 804 l 777 683 l 458 683 l 458 0 l 319 0 l 319 681 l 0 683 l 0 804 l 319 804 l 319 1015 l 458 1013 l 458 804 "},"°":{"x_min":0,"x_max":347,"ha":444,"o":"m 173 802 q 43 856 91 802 q 0 977 0 905 q 45 1101 0 1049 q 173 1153 90 1153 q 303 1098 255 1153 q 347 977 347 1049 q 303 856 347 905 q 173 802 256 802 m 173 884 q 238 910 214 884 q 262 973 262 937 q 239 1038 262 1012 q 173 1064 217 1064 q 108 1037 132 1064 q 85 973 85 1010 q 108 910 85 937 q 173 884 132 884 "},"V":{"x_min":0,"x_max":862.71875,"ha":940,"o":"m 862 1013 l 505 0 l 361 0 l 0 1013 l 143 1013 l 434 165 l 718 1012 l 862 1013 "},"Ξ":{"x_min":0,"x_max":734.71875,"ha":763,"o":"m 723 889 l 9 889 l 9 1013 l 723 1013 l 723 889 m 673 463 l 61 463 l 61 589 l 673 589 l 673 463 m 734 0 l 0 0 l 0 124 l 734 124 l 734 0 "}," ":{"x_min":0,"x_max":0,"ha":853},"Ϋ":{"x_min":0.328125,"x_max":819.515625,"ha":889,"o":"m 588 1046 l 460 1046 l 460 1189 l 588 1189 l 588 1046 m 360 1046 l 232 1046 l 232 1189 l 360 1189 l 360 1046 m 819 1012 l 482 416 l 482 0 l 342 0 l 342 416 l 0 1012 l 140 1012 l 411 533 l 679 1012 l 819 1012 "},"0":{"x_min":73,"x_max":715,"ha":792,"o":"m 394 -29 q 153 129 242 -29 q 73 479 73 272 q 152 829 73 687 q 394 989 241 989 q 634 829 545 989 q 715 479 715 684 q 635 129 715 270 q 394 -29 546 -29 m 394 89 q 546 211 489 89 q 598 479 598 322 q 548 748 598 640 q 394 871 491 871 q 241 748 298 871 q 190 479 190 637 q 239 211 190 319 q 394 89 296 89 "},"”":{"x_min":0,"x_max":347,"ha":454,"o":"m 139 851 q 102 737 139 784 q 0 669 65 690 l 0 734 q 59 787 42 741 q 72 873 72 821 l 0 873 l 0 1013 l 139 1013 l 139 851 m 347 851 q 310 737 347 784 q 208 669 273 690 l 208 734 q 267 787 250 741 q 280 873 280 821 l 208 873 l 208 1013 l 347 1013 l 347 851 "},"@":{"x_min":0,"x_max":1260,"ha":1357,"o":"m 1098 -45 q 877 -160 1001 -117 q 633 -203 752 -203 q 155 -29 327 -203 q 0 360 0 127 q 176 802 0 616 q 687 1008 372 1008 q 1123 854 969 1008 q 1260 517 1260 718 q 1155 216 1260 341 q 868 82 1044 82 q 772 106 801 82 q 737 202 737 135 q 647 113 700 144 q 527 82 594 82 q 367 147 420 82 q 314 312 314 212 q 401 565 314 452 q 639 690 498 690 q 810 588 760 690 l 849 668 l 938 668 q 877 441 900 532 q 833 226 833 268 q 853 182 833 198 q 902 167 873 167 q 1088 272 1012 167 q 1159 512 1159 372 q 1051 793 1159 681 q 687 925 925 925 q 248 747 415 925 q 97 361 97 586 q 226 26 97 159 q 627 -122 370 -122 q 856 -87 737 -122 q 1061 8 976 -53 l 1098 -45 m 786 488 q 738 580 777 545 q 643 615 700 615 q 483 517 548 615 q 425 322 425 430 q 457 203 425 250 q 552 156 490 156 q 722 273 665 156 q 786 488 738 309 "},"Ί":{"x_min":0,"x_max":499,"ha":613,"o":"m 277 1040 l 83 799 l 0 799 l 140 1040 l 277 1040 m 499 0 l 360 0 l 360 1012 l 499 1012 l 499 0 "},"i":{"x_min":14,"x_max":136,"ha":275,"o":"m 136 873 l 14 873 l 14 1013 l 136 1013 l 136 873 m 136 0 l 14 0 l 14 737 l 136 737 l 136 0 "},"Β":{"x_min":0,"x_max":778,"ha":877,"o":"m 580 545 q 724 468 671 534 q 778 310 778 402 q 673 83 778 170 q 432 0 575 0 l 0 0 l 0 1013 l 411 1013 q 629 957 541 1013 q 732 768 732 891 q 691 632 732 692 q 580 545 650 571 m 393 899 l 139 899 l 139 587 l 379 587 q 521 623 462 587 q 592 744 592 666 q 531 859 592 819 q 393 899 471 899 m 419 124 q 566 169 504 124 q 635 302 635 219 q 559 435 635 388 q 402 476 494 476 l 139 476 l 139 124 l 419 124 "},"υ":{"x_min":0,"x_max":617,"ha":725,"o":"m 617 352 q 540 94 617 199 q 308 -24 455 -24 q 76 94 161 -24 q 0 352 0 199 l 0 739 l 126 739 l 126 355 q 169 185 126 257 q 312 98 220 98 q 451 185 402 98 q 492 355 492 257 l 492 739 l 617 739 l 617 352 "},"]":{"x_min":0,"x_max":275,"ha":372,"o":"m 275 -281 l 0 -281 l 0 -187 l 151 -187 l 151 920 l 0 920 l 0 1013 l 275 1013 l 275 -281 "},"m":{"x_min":0,"x_max":1019,"ha":1128,"o":"m 1019 0 l 897 0 l 897 454 q 860 591 897 536 q 739 660 816 660 q 613 586 659 660 q 573 436 573 522 l 573 0 l 447 0 l 447 455 q 412 591 447 535 q 294 657 372 657 q 165 586 213 657 q 122 437 122 521 l 122 0 l 0 0 l 0 738 l 117 738 l 117 640 q 202 730 150 697 q 316 763 254 763 q 437 730 381 763 q 525 642 494 697 q 621 731 559 700 q 753 763 682 763 q 943 694 867 763 q 1019 512 1019 625 l 1019 0 "},"χ":{"x_min":8.328125,"x_max":780.5625,"ha":815,"o":"m 780 -278 q 715 -294 747 -294 q 616 -257 663 -294 q 548 -175 576 -227 l 379 133 l 143 -277 l 9 -277 l 313 254 l 163 522 q 127 586 131 580 q 36 640 91 640 q 8 637 27 640 l 8 752 l 52 757 q 162 719 113 757 q 236 627 200 690 l 383 372 l 594 737 l 726 737 l 448 250 l 625 -69 q 670 -153 647 -110 q 743 -188 695 -188 q 780 -184 759 -188 l 780 -278 "},"8":{"x_min":55,"x_max":736,"ha":792,"o":"m 571 527 q 694 424 652 491 q 736 280 736 358 q 648 71 736 158 q 395 -26 551 -26 q 142 69 238 -26 q 55 279 55 157 q 96 425 55 359 q 220 527 138 491 q 120 615 153 562 q 88 726 88 668 q 171 904 88 827 q 395 986 261 986 q 618 905 529 986 q 702 727 702 830 q 670 616 702 667 q 571 527 638 565 m 394 565 q 519 610 475 565 q 563 717 563 655 q 521 823 563 781 q 392 872 474 872 q 265 824 312 872 q 224 720 224 783 q 265 613 224 656 q 394 565 312 565 m 395 91 q 545 150 488 91 q 597 280 597 204 q 546 408 597 355 q 395 465 492 465 q 244 408 299 465 q 194 280 194 356 q 244 150 194 203 q 395 91 299 91 "},"ί":{"x_min":42,"x_max":326.71875,"ha":361,"o":"m 284 3 q 233 -10 258 -5 q 182 -15 207 -15 q 85 26 119 -15 q 42 200 42 79 l 42 737 l 167 737 l 168 215 q 172 141 168 157 q 226 101 183 101 q 248 102 239 101 q 284 112 257 104 l 284 3 m 326 1040 l 137 819 l 54 819 l 189 1040 l 326 1040 "},"Ζ":{"x_min":0,"x_max":779.171875,"ha":850,"o":"m 779 0 l 0 0 l 0 113 l 620 896 l 40 896 l 40 1013 l 779 1013 l 779 887 l 170 124 l 779 124 l 779 0 "},"R":{"x_min":0,"x_max":781.953125,"ha":907,"o":"m 781 0 l 623 0 q 587 242 590 52 q 407 433 585 433 l 138 433 l 138 0 l 0 0 l 0 1013 l 396 1013 q 636 946 539 1013 q 749 731 749 868 q 711 597 749 659 q 608 502 674 534 q 718 370 696 474 q 729 207 722 352 q 781 26 736 62 l 781 0 m 373 551 q 533 594 465 551 q 614 731 614 645 q 532 859 614 815 q 373 896 465 896 l 138 896 l 138 551 l 373 551 "},"o":{"x_min":0,"x_max":713,"ha":821,"o":"m 357 -25 q 94 91 194 -25 q 0 368 0 202 q 93 642 0 533 q 357 761 193 761 q 618 644 518 761 q 713 368 713 533 q 619 91 713 201 q 357 -25 521 -25 m 357 85 q 528 175 465 85 q 584 369 584 255 q 529 562 584 484 q 357 651 467 651 q 189 560 250 651 q 135 369 135 481 q 187 177 135 257 q 357 85 250 85 "},"5":{"x_min":54.171875,"x_max":738,"ha":792,"o":"m 738 314 q 626 60 738 153 q 382 -23 526 -23 q 155 47 248 -23 q 54 256 54 125 l 183 256 q 259 132 204 174 q 382 91 314 91 q 533 149 471 91 q 602 314 602 213 q 538 469 602 411 q 386 528 475 528 q 284 506 332 528 q 197 439 237 484 l 81 439 l 159 958 l 684 958 l 684 840 l 254 840 l 214 579 q 306 627 258 612 q 407 643 354 643 q 636 552 540 643 q 738 314 738 457 "},"7":{"x_min":58.71875,"x_max":730.953125,"ha":792,"o":"m 730 839 q 469 448 560 641 q 335 0 378 255 l 192 0 q 328 441 235 252 q 593 830 421 630 l 58 830 l 58 958 l 730 958 l 730 839 "},"K":{"x_min":0,"x_max":819.46875,"ha":906,"o":"m 819 0 l 649 0 l 294 509 l 139 355 l 139 0 l 0 0 l 0 1013 l 139 1013 l 139 526 l 626 1013 l 809 1013 l 395 600 l 819 0 "},",":{"x_min":0,"x_max":142,"ha":239,"o":"m 142 -12 q 105 -132 142 -82 q 0 -205 68 -182 l 0 -138 q 57 -82 40 -124 q 70 0 70 -51 l 0 0 l 0 151 l 142 151 l 142 -12 "},"d":{"x_min":0,"x_max":683,"ha":796,"o":"m 683 0 l 564 0 l 564 93 q 456 6 516 38 q 327 -25 395 -25 q 87 100 181 -25 q 0 365 0 215 q 90 639 0 525 q 343 763 187 763 q 564 647 486 763 l 564 1013 l 683 1013 l 683 0 m 582 373 q 529 562 582 484 q 361 653 468 653 q 190 561 253 653 q 135 365 135 479 q 189 175 135 254 q 358 85 251 85 q 529 178 468 85 q 582 373 582 258 "},"¨":{"x_min":-109,"x_max":247,"ha":232,"o":"m 247 1046 l 119 1046 l 119 1189 l 247 1189 l 247 1046 m 19 1046 l -109 1046 l -109 1189 l 19 1189 l 19 1046 "},"E":{"x_min":0,"x_max":736.109375,"ha":789,"o":"m 736 0 l 0 0 l 0 1013 l 725 1013 l 725 889 l 139 889 l 139 585 l 677 585 l 677 467 l 139 467 l 139 125 l 736 125 l 736 0 "},"Y":{"x_min":0,"x_max":820,"ha":886,"o":"m 820 1013 l 482 416 l 482 0 l 342 0 l 342 416 l 0 1013 l 140 1013 l 411 534 l 679 1012 l 820 1013 "},"\"":{"x_min":0,"x_max":299,"ha":396,"o":"m 299 606 l 203 606 l 203 988 l 299 988 l 299 606 m 96 606 l 0 606 l 0 988 l 96 988 l 96 606 "},"‹":{"x_min":17.984375,"x_max":773.609375,"ha":792,"o":"m 773 40 l 18 376 l 17 465 l 773 799 l 773 692 l 159 420 l 773 149 l 773 40 "},"„":{"x_min":0,"x_max":364,"ha":467,"o":"m 141 -12 q 104 -132 141 -82 q 0 -205 67 -182 l 0 -138 q 56 -82 40 -124 q 69 0 69 -51 l 0 0 l 0 151 l 141 151 l 141 -12 m 364 -12 q 327 -132 364 -82 q 222 -205 290 -182 l 222 -138 q 279 -82 262 -124 q 292 0 292 -51 l 222 0 l 222 151 l 364 151 l 364 -12 "},"δ":{"x_min":1,"x_max":710,"ha":810,"o":"m 710 360 q 616 87 710 196 q 356 -28 518 -28 q 99 82 197 -28 q 1 356 1 192 q 100 606 1 509 q 355 703 199 703 q 180 829 288 754 q 70 903 124 866 l 70 1012 l 643 1012 l 643 901 l 258 901 q 462 763 422 794 q 636 592 577 677 q 710 360 710 485 m 584 365 q 552 501 584 447 q 451 602 521 555 q 372 611 411 611 q 197 541 258 611 q 136 355 136 472 q 190 171 136 245 q 358 85 252 85 q 528 173 465 85 q 584 365 584 252 "},"έ":{"x_min":0,"x_max":634.71875,"ha":714,"o":"m 634 234 q 527 38 634 110 q 300 -25 433 -25 q 98 29 183 -25 q 0 204 0 93 q 37 313 0 265 q 128 390 67 352 q 56 459 82 419 q 26 555 26 505 q 114 712 26 654 q 295 763 191 763 q 499 700 416 763 q 589 515 589 631 l 478 515 q 419 618 464 580 q 307 657 374 657 q 207 630 253 657 q 151 547 151 598 q 238 445 151 469 q 389 434 280 434 l 389 331 l 349 331 q 206 315 255 331 q 125 210 125 287 q 183 107 125 145 q 302 76 233 76 q 436 117 379 76 q 509 234 493 159 l 634 234 m 520 1040 l 331 819 l 248 819 l 383 1040 l 520 1040 "},"ω":{"x_min":0,"x_max":922,"ha":1031,"o":"m 922 339 q 856 97 922 203 q 650 -26 780 -26 q 538 9 587 -26 q 461 103 489 44 q 387 12 436 46 q 277 -22 339 -22 q 69 97 147 -22 q 0 339 0 203 q 45 551 0 444 q 161 738 84 643 l 302 738 q 175 553 219 647 q 124 336 124 446 q 155 179 124 249 q 275 88 197 88 q 375 163 341 88 q 400 294 400 219 l 400 572 l 524 572 l 524 294 q 561 135 524 192 q 643 88 591 88 q 762 182 719 88 q 797 342 797 257 q 745 556 797 450 q 619 738 705 638 l 760 738 q 874 551 835 640 q 922 339 922 444 "},"´":{"x_min":0,"x_max":96,"ha":251,"o":"m 96 606 l 0 606 l 0 988 l 96 988 l 96 606 "},"±":{"x_min":11,"x_max":781,"ha":792,"o":"m 781 490 l 446 490 l 446 255 l 349 255 l 349 490 l 11 490 l 11 586 l 349 586 l 349 819 l 446 819 l 446 586 l 781 586 l 781 490 m 781 21 l 11 21 l 11 115 l 781 115 l 781 21 "},"|":{"x_min":343,"x_max":449,"ha":792,"o":"m 449 462 l 343 462 l 343 986 l 449 986 l 449 462 m 449 -242 l 343 -242 l 343 280 l 449 280 l 449 -242 "},"ϋ":{"x_min":0,"x_max":617,"ha":725,"o":"m 482 800 l 372 800 l 372 925 l 482 925 l 482 800 m 239 800 l 129 800 l 129 925 l 239 925 l 239 800 m 617 352 q 540 93 617 199 q 308 -24 455 -24 q 76 93 161 -24 q 0 352 0 199 l 0 738 l 126 738 l 126 354 q 169 185 126 257 q 312 98 220 98 q 451 185 402 98 q 492 354 492 257 l 492 738 l 617 738 l 617 352 "},"§":{"x_min":0,"x_max":593,"ha":690,"o":"m 593 425 q 554 312 593 369 q 467 233 516 254 q 537 83 537 172 q 459 -74 537 -12 q 288 -133 387 -133 q 115 -69 184 -133 q 47 96 47 -6 l 166 96 q 199 7 166 40 q 288 -26 232 -26 q 371 -5 332 -26 q 420 60 420 21 q 311 201 420 139 q 108 309 210 255 q 0 490 0 383 q 33 602 0 551 q 124 687 66 654 q 75 743 93 712 q 58 812 58 773 q 133 984 58 920 q 300 1043 201 1043 q 458 987 394 1043 q 529 814 529 925 l 411 814 q 370 908 404 877 q 289 939 336 939 q 213 911 246 939 q 180 841 180 883 q 286 720 180 779 q 484 612 480 615 q 593 425 593 534 m 467 409 q 355 544 467 473 q 196 630 228 612 q 146 587 162 609 q 124 525 124 558 q 239 387 124 462 q 398 298 369 315 q 448 345 429 316 q 467 409 467 375 "},"b":{"x_min":0,"x_max":685,"ha":783,"o":"m 685 372 q 597 99 685 213 q 347 -25 501 -25 q 219 5 277 -25 q 121 93 161 36 l 121 0 l 0 0 l 0 1013 l 121 1013 l 121 634 q 214 723 157 692 q 341 754 272 754 q 591 637 493 754 q 685 372 685 526 m 554 356 q 499 550 554 470 q 328 644 437 644 q 162 556 223 644 q 108 369 108 478 q 160 176 108 256 q 330 83 221 83 q 498 169 435 83 q 554 356 554 245 "},"q":{"x_min":0,"x_max":683,"ha":876,"o":"m 683 -278 l 564 -278 l 564 97 q 474 8 533 39 q 345 -23 415 -23 q 91 93 188 -23 q 0 364 0 203 q 87 635 0 522 q 337 760 184 760 q 466 727 408 760 q 564 637 523 695 l 564 737 l 683 737 l 683 -278 m 582 375 q 527 564 582 488 q 358 652 466 652 q 190 565 253 652 q 135 377 135 488 q 189 179 135 261 q 361 84 251 84 q 530 179 469 84 q 582 375 582 260 "},"Ω":{"x_min":-0.171875,"x_max":969.5625,"ha":1068,"o":"m 969 0 l 555 0 l 555 123 q 744 308 675 194 q 814 558 814 423 q 726 812 814 709 q 484 922 633 922 q 244 820 334 922 q 154 567 154 719 q 223 316 154 433 q 412 123 292 199 l 412 0 l 0 0 l 0 124 l 217 124 q 68 327 122 210 q 15 572 15 444 q 144 911 15 781 q 484 1041 274 1041 q 822 909 691 1041 q 953 569 953 777 q 899 326 953 443 q 750 124 846 210 l 969 124 l 969 0 "},"ύ":{"x_min":0,"x_max":617,"ha":725,"o":"m 617 352 q 540 93 617 199 q 308 -24 455 -24 q 76 93 161 -24 q 0 352 0 199 l 0 738 l 126 738 l 126 354 q 169 185 126 257 q 312 98 220 98 q 451 185 402 98 q 492 354 492 257 l 492 738 l 617 738 l 617 352 m 535 1040 l 346 819 l 262 819 l 397 1040 l 535 1040 "},"z":{"x_min":-0.015625,"x_max":613.890625,"ha":697,"o":"m 613 0 l 0 0 l 0 100 l 433 630 l 20 630 l 20 738 l 594 738 l 593 636 l 163 110 l 613 110 l 613 0 "},"™":{"x_min":0,"x_max":894,"ha":1000,"o":"m 389 951 l 229 951 l 229 503 l 160 503 l 160 951 l 0 951 l 0 1011 l 389 1011 l 389 951 m 894 503 l 827 503 l 827 939 l 685 503 l 620 503 l 481 937 l 481 503 l 417 503 l 417 1011 l 517 1011 l 653 580 l 796 1010 l 894 1011 l 894 503 "},"ή":{"x_min":0.78125,"x_max":697,"ha":810,"o":"m 697 -278 l 572 -278 l 572 454 q 540 587 572 536 q 425 650 501 650 q 271 579 337 650 q 206 420 206 509 l 206 0 l 81 0 l 81 489 q 73 588 81 562 q 0 644 56 644 l 0 741 q 68 755 38 755 q 158 721 124 755 q 200 630 193 687 q 297 726 234 692 q 434 761 359 761 q 620 692 544 761 q 697 516 697 624 l 697 -278 m 479 1040 l 290 819 l 207 819 l 341 1040 l 479 1040 "},"Θ":{"x_min":0,"x_max":960,"ha":1056,"o":"m 960 507 q 833 129 960 280 q 476 -32 698 -32 q 123 129 255 -32 q 0 507 0 280 q 123 883 0 732 q 476 1045 255 1045 q 832 883 696 1045 q 960 507 960 732 m 817 500 q 733 789 817 669 q 476 924 639 924 q 223 792 317 924 q 142 507 142 675 q 222 222 142 339 q 476 89 315 89 q 730 218 636 89 q 817 500 817 334 m 716 449 l 243 449 l 243 571 l 716 571 l 716 449 "},"®":{"x_min":-3,"x_max":1008,"ha":1106,"o":"m 503 532 q 614 562 566 532 q 672 658 672 598 q 614 747 672 716 q 503 772 569 772 l 338 772 l 338 532 l 503 532 m 502 -7 q 123 151 263 -7 q -3 501 -3 294 q 123 851 -3 706 q 502 1011 263 1011 q 881 851 739 1011 q 1008 501 1008 708 q 883 151 1008 292 q 502 -7 744 -7 m 502 60 q 830 197 709 60 q 940 501 940 322 q 831 805 940 681 q 502 944 709 944 q 174 805 296 944 q 65 501 65 680 q 173 197 65 320 q 502 60 294 60 m 788 146 l 678 146 q 653 316 655 183 q 527 449 652 449 l 338 449 l 338 146 l 241 146 l 241 854 l 518 854 q 688 808 621 854 q 766 658 766 755 q 739 563 766 607 q 668 497 713 519 q 751 331 747 472 q 788 164 756 190 l 788 146 "},"~":{"x_min":0,"x_max":833,"ha":931,"o":"m 833 958 q 778 753 833 831 q 594 665 716 665 q 402 761 502 665 q 240 857 302 857 q 131 795 166 857 q 104 665 104 745 l 0 665 q 54 867 0 789 q 237 958 116 958 q 429 861 331 958 q 594 765 527 765 q 704 827 670 765 q 729 958 729 874 l 833 958 "},"Ε":{"x_min":0,"x_max":736.21875,"ha":778,"o":"m 736 0 l 0 0 l 0 1013 l 725 1013 l 725 889 l 139 889 l 139 585 l 677 585 l 677 467 l 139 467 l 139 125 l 736 125 l 736 0 "},"³":{"x_min":0,"x_max":450,"ha":547,"o":"m 450 552 q 379 413 450 464 q 220 366 313 366 q 69 414 130 366 q 0 567 0 470 l 85 567 q 126 470 85 504 q 225 437 168 437 q 320 467 280 437 q 360 552 360 498 q 318 632 360 608 q 213 657 276 657 q 195 657 203 657 q 176 657 181 657 l 176 722 q 279 733 249 722 q 334 815 334 752 q 300 881 334 856 q 220 907 267 907 q 133 875 169 907 q 97 781 97 844 l 15 781 q 78 926 15 875 q 220 972 135 972 q 364 930 303 972 q 426 817 426 888 q 344 697 426 733 q 421 642 392 681 q 450 552 450 603 "},"[":{"x_min":0,"x_max":273.609375,"ha":371,"o":"m 273 -281 l 0 -281 l 0 1013 l 273 1013 l 273 920 l 124 920 l 124 -187 l 273 -187 l 273 -281 "},"L":{"x_min":0,"x_max":645.828125,"ha":696,"o":"m 645 0 l 0 0 l 0 1013 l 140 1013 l 140 126 l 645 126 l 645 0 "},"σ":{"x_min":0,"x_max":803.390625,"ha":894,"o":"m 803 628 l 633 628 q 713 368 713 512 q 618 93 713 204 q 357 -25 518 -25 q 94 91 194 -25 q 0 368 0 201 q 94 644 0 533 q 356 761 194 761 q 481 750 398 761 q 608 739 564 739 l 803 739 l 803 628 m 360 85 q 529 180 467 85 q 584 374 584 262 q 527 566 584 490 q 352 651 463 651 q 187 559 247 651 q 135 368 135 478 q 189 175 135 254 q 360 85 251 85 "},"ζ":{"x_min":0,"x_max":573,"ha":642,"o":"m 573 -40 q 553 -162 573 -97 q 510 -278 543 -193 l 400 -278 q 441 -187 428 -219 q 462 -90 462 -132 q 378 -14 462 -14 q 108 45 197 -14 q 0 290 0 117 q 108 631 0 462 q 353 901 194 767 l 55 901 l 55 1012 l 561 1012 l 561 924 q 261 669 382 831 q 128 301 128 489 q 243 117 128 149 q 458 98 350 108 q 573 -40 573 80 "},"θ":{"x_min":0,"x_max":674,"ha":778,"o":"m 674 496 q 601 160 674 304 q 336 -26 508 -26 q 73 153 165 -26 q 0 485 0 296 q 72 840 0 683 q 343 1045 166 1045 q 605 844 516 1045 q 674 496 674 692 m 546 579 q 498 798 546 691 q 336 935 437 935 q 178 798 237 935 q 126 579 137 701 l 546 579 m 546 475 l 126 475 q 170 233 126 348 q 338 80 230 80 q 504 233 447 80 q 546 475 546 346 "},"Ο":{"x_min":0,"x_max":958,"ha":1054,"o":"m 485 1042 q 834 883 703 1042 q 958 511 958 735 q 834 136 958 287 q 481 -26 701 -26 q 126 130 261 -26 q 0 504 0 279 q 127 880 0 729 q 485 1042 263 1042 m 480 98 q 731 225 638 98 q 815 504 815 340 q 733 783 815 670 q 480 913 640 913 q 226 785 321 913 q 142 504 142 671 q 226 224 142 339 q 480 98 319 98 "},"Γ":{"x_min":0,"x_max":705.28125,"ha":749,"o":"m 705 886 l 140 886 l 140 0 l 0 0 l 0 1012 l 705 1012 l 705 886 "}," ":{"x_min":0,"x_max":0,"ha":375},"%":{"x_min":-3,"x_max":1089,"ha":1186,"o":"m 845 0 q 663 76 731 0 q 602 244 602 145 q 661 412 602 344 q 845 489 728 489 q 1027 412 959 489 q 1089 244 1089 343 q 1029 76 1089 144 q 845 0 962 0 m 844 103 q 945 143 909 103 q 981 243 981 184 q 947 340 981 301 q 844 385 909 385 q 744 342 781 385 q 708 243 708 300 q 741 147 708 186 q 844 103 780 103 m 888 986 l 284 -25 l 199 -25 l 803 986 l 888 986 m 241 468 q 58 545 126 468 q -3 715 -3 615 q 56 881 -3 813 q 238 958 124 958 q 421 881 353 958 q 483 712 483 813 q 423 544 483 612 q 241 468 356 468 m 241 855 q 137 811 175 855 q 100 710 100 768 q 136 612 100 653 q 240 572 172 572 q 344 614 306 572 q 382 713 382 656 q 347 810 382 771 q 241 855 308 855 "},"P":{"x_min":0,"x_max":726,"ha":806,"o":"m 424 1013 q 640 931 555 1013 q 726 719 726 850 q 637 506 726 587 q 413 426 548 426 l 140 426 l 140 0 l 0 0 l 0 1013 l 424 1013 m 379 889 l 140 889 l 140 548 l 372 548 q 522 589 459 548 q 593 720 593 637 q 528 845 593 801 q 379 889 463 889 "},"Έ":{"x_min":0,"x_max":1078.21875,"ha":1118,"o":"m 1078 0 l 342 0 l 342 1013 l 1067 1013 l 1067 889 l 481 889 l 481 585 l 1019 585 l 1019 467 l 481 467 l 481 125 l 1078 125 l 1078 0 m 277 1040 l 83 799 l 0 799 l 140 1040 l 277 1040 "},"Ώ":{"x_min":0.125,"x_max":1136.546875,"ha":1235,"o":"m 1136 0 l 722 0 l 722 123 q 911 309 842 194 q 981 558 981 423 q 893 813 981 710 q 651 923 800 923 q 411 821 501 923 q 321 568 321 720 q 390 316 321 433 q 579 123 459 200 l 579 0 l 166 0 l 166 124 l 384 124 q 235 327 289 210 q 182 572 182 444 q 311 912 182 782 q 651 1042 441 1042 q 989 910 858 1042 q 1120 569 1120 778 q 1066 326 1120 443 q 917 124 1013 210 l 1136 124 l 1136 0 m 277 1040 l 83 800 l 0 800 l 140 1041 l 277 1040 "},"_":{"x_min":0,"x_max":705.5625,"ha":803,"o":"m 705 -334 l 0 -334 l 0 -234 l 705 -234 l 705 -334 "},"Ϊ":{"x_min":-110,"x_max":246,"ha":275,"o":"m 246 1046 l 118 1046 l 118 1189 l 246 1189 l 246 1046 m 18 1046 l -110 1046 l -110 1189 l 18 1189 l 18 1046 m 136 0 l 0 0 l 0 1012 l 136 1012 l 136 0 "},"+":{"x_min":23,"x_max":768,"ha":792,"o":"m 768 372 l 444 372 l 444 0 l 347 0 l 347 372 l 23 372 l 23 468 l 347 468 l 347 840 l 444 840 l 444 468 l 768 468 l 768 372 "},"½":{"x_min":0,"x_max":1050,"ha":1149,"o":"m 1050 0 l 625 0 q 712 178 625 108 q 878 277 722 187 q 967 385 967 328 q 932 456 967 429 q 850 484 897 484 q 759 450 798 484 q 721 352 721 416 l 640 352 q 706 502 640 448 q 851 551 766 551 q 987 509 931 551 q 1050 385 1050 462 q 976 251 1050 301 q 829 179 902 215 q 717 68 740 133 l 1050 68 l 1050 0 m 834 985 l 215 -28 l 130 -28 l 750 984 l 834 985 m 224 422 l 142 422 l 142 811 l 0 811 l 0 867 q 104 889 62 867 q 164 973 157 916 l 224 973 l 224 422 "},"Ρ":{"x_min":0,"x_max":720,"ha":783,"o":"m 424 1013 q 637 933 554 1013 q 720 723 720 853 q 633 508 720 591 q 413 426 546 426 l 140 426 l 140 0 l 0 0 l 0 1013 l 424 1013 m 378 889 l 140 889 l 140 548 l 371 548 q 521 589 458 548 q 592 720 592 637 q 527 845 592 801 q 378 889 463 889 "},"'":{"x_min":0,"x_max":139,"ha":236,"o":"m 139 851 q 102 737 139 784 q 0 669 65 690 l 0 734 q 59 787 42 741 q 72 873 72 821 l 0 873 l 0 1013 l 139 1013 l 139 851 "},"ª":{"x_min":0,"x_max":350,"ha":397,"o":"m 350 625 q 307 616 328 616 q 266 631 281 616 q 247 673 251 645 q 190 628 225 644 q 116 613 156 613 q 32 641 64 613 q 0 722 0 669 q 72 826 0 800 q 247 866 159 846 l 247 887 q 220 934 247 916 q 162 953 194 953 q 104 934 129 953 q 76 882 80 915 l 16 882 q 60 976 16 941 q 166 1011 104 1011 q 266 979 224 1011 q 308 891 308 948 l 308 706 q 311 679 308 688 q 331 670 315 670 l 350 672 l 350 625 m 247 757 l 247 811 q 136 790 175 798 q 64 726 64 773 q 83 682 64 697 q 132 667 103 667 q 207 690 174 667 q 247 757 247 718 "},"΅":{"x_min":0,"x_max":450,"ha":553,"o":"m 450 800 l 340 800 l 340 925 l 450 925 l 450 800 m 406 1040 l 212 800 l 129 800 l 269 1040 l 406 1040 m 110 800 l 0 800 l 0 925 l 110 925 l 110 800 "},"T":{"x_min":0,"x_max":777,"ha":835,"o":"m 777 894 l 458 894 l 458 0 l 319 0 l 319 894 l 0 894 l 0 1013 l 777 1013 l 777 894 "},"Φ":{"x_min":0,"x_max":915,"ha":997,"o":"m 527 0 l 389 0 l 389 122 q 110 231 220 122 q 0 509 0 340 q 110 785 0 677 q 389 893 220 893 l 389 1013 l 527 1013 l 527 893 q 804 786 693 893 q 915 509 915 679 q 805 231 915 341 q 527 122 696 122 l 527 0 m 527 226 q 712 310 641 226 q 779 507 779 389 q 712 705 779 627 q 527 787 641 787 l 527 226 m 389 226 l 389 787 q 205 698 275 775 q 136 505 136 620 q 206 308 136 391 q 389 226 276 226 "},"⁋":{"x_min":0,"x_max":0,"ha":694},"j":{"x_min":-77.78125,"x_max":167,"ha":349,"o":"m 167 871 l 42 871 l 42 1013 l 167 1013 l 167 871 m 167 -80 q 121 -231 167 -184 q -26 -278 76 -278 l -77 -278 l -77 -164 l -41 -164 q 26 -143 11 -164 q 42 -65 42 -122 l 42 737 l 167 737 l 167 -80 "},"Σ":{"x_min":0,"x_max":756.953125,"ha":819,"o":"m 756 0 l 0 0 l 0 107 l 395 523 l 22 904 l 22 1013 l 745 1013 l 745 889 l 209 889 l 566 523 l 187 125 l 756 125 l 756 0 "},"1":{"x_min":215.671875,"x_max":574,"ha":792,"o":"m 574 0 l 442 0 l 442 697 l 215 697 l 215 796 q 386 833 330 796 q 475 986 447 875 l 574 986 l 574 0 "},"›":{"x_min":18.0625,"x_max":774,"ha":792,"o":"m 774 376 l 18 40 l 18 149 l 631 421 l 18 692 l 18 799 l 774 465 l 774 376 "},"<":{"x_min":17.984375,"x_max":773.609375,"ha":792,"o":"m 773 40 l 18 376 l 17 465 l 773 799 l 773 692 l 159 420 l 773 149 l 773 40 "},"£":{"x_min":0,"x_max":704.484375,"ha":801,"o":"m 704 41 q 623 -10 664 5 q 543 -26 583 -26 q 359 15 501 -26 q 243 36 288 36 q 158 23 197 36 q 73 -21 119 10 l 6 76 q 125 195 90 150 q 175 331 175 262 q 147 443 175 383 l 0 443 l 0 512 l 108 512 q 43 734 43 623 q 120 929 43 854 q 358 1010 204 1010 q 579 936 487 1010 q 678 729 678 857 l 678 684 l 552 684 q 504 838 552 780 q 362 896 457 896 q 216 852 263 896 q 176 747 176 815 q 199 627 176 697 q 248 512 217 574 l 468 512 l 468 443 l 279 443 q 297 356 297 398 q 230 194 297 279 q 153 107 211 170 q 227 133 190 125 q 293 142 264 142 q 410 119 339 142 q 516 96 482 96 q 579 105 550 96 q 648 142 608 115 l 704 41 "},"t":{"x_min":0,"x_max":367,"ha":458,"o":"m 367 0 q 312 -5 339 -2 q 262 -8 284 -8 q 145 28 183 -8 q 108 143 108 64 l 108 638 l 0 638 l 0 738 l 108 738 l 108 944 l 232 944 l 232 738 l 367 738 l 367 638 l 232 638 l 232 185 q 248 121 232 140 q 307 102 264 102 q 345 104 330 102 q 367 107 360 107 l 367 0 "},"¬":{"x_min":0,"x_max":706,"ha":803,"o":"m 706 411 l 706 158 l 630 158 l 630 335 l 0 335 l 0 411 l 706 411 "},"λ":{"x_min":0,"x_max":750,"ha":803,"o":"m 750 -7 q 679 -15 716 -15 q 538 59 591 -15 q 466 214 512 97 l 336 551 l 126 0 l 0 0 l 270 705 q 223 837 247 770 q 116 899 190 899 q 90 898 100 899 l 90 1004 q 152 1011 125 1011 q 298 938 244 1011 q 373 783 326 901 l 605 192 q 649 115 629 136 q 716 95 669 95 l 736 95 q 750 97 745 97 l 750 -7 "},"W":{"x_min":0,"x_max":1263.890625,"ha":1351,"o":"m 1263 1013 l 995 0 l 859 0 l 627 837 l 405 0 l 265 0 l 0 1013 l 136 1013 l 342 202 l 556 1013 l 701 1013 l 921 207 l 1133 1012 l 1263 1013 "},">":{"x_min":18.0625,"x_max":774,"ha":792,"o":"m 774 376 l 18 40 l 18 149 l 631 421 l 18 692 l 18 799 l 774 465 l 774 376 "},"v":{"x_min":0,"x_max":675.15625,"ha":761,"o":"m 675 738 l 404 0 l 272 0 l 0 738 l 133 737 l 340 147 l 541 737 l 675 738 "},"τ":{"x_min":0.28125,"x_max":644.5,"ha":703,"o":"m 644 628 l 382 628 l 382 179 q 388 120 382 137 q 436 91 401 91 q 474 94 447 91 q 504 97 501 97 l 504 0 q 454 -9 482 -5 q 401 -14 426 -14 q 278 67 308 -14 q 260 233 260 118 l 260 628 l 0 628 l 0 739 l 644 739 l 644 628 "},"ξ":{"x_min":0,"x_max":624.9375,"ha":699,"o":"m 624 -37 q 608 -153 624 -96 q 563 -278 593 -211 l 454 -278 q 491 -183 486 -200 q 511 -83 511 -126 q 484 -23 511 -44 q 370 1 452 1 q 323 0 354 1 q 283 -1 293 -1 q 84 76 169 -1 q 0 266 0 154 q 56 431 0 358 q 197 538 108 498 q 94 613 134 562 q 54 730 54 665 q 77 823 54 780 q 143 901 101 867 l 27 901 l 27 1012 l 576 1012 l 576 901 l 380 901 q 244 863 303 901 q 178 745 178 820 q 312 600 178 636 q 532 582 380 582 l 532 479 q 276 455 361 479 q 118 281 118 410 q 165 173 118 217 q 274 120 208 133 q 494 101 384 110 q 624 -37 624 76 "},"&":{"x_min":-3,"x_max":894.25,"ha":992,"o":"m 894 0 l 725 0 l 624 123 q 471 0 553 40 q 306 -41 390 -41 q 168 -7 231 -41 q 62 92 105 26 q 14 187 31 139 q -3 276 -3 235 q 55 433 -3 358 q 248 581 114 508 q 170 689 196 640 q 137 817 137 751 q 214 985 137 922 q 384 1041 284 1041 q 548 988 483 1041 q 622 824 622 928 q 563 666 622 739 q 431 556 516 608 l 621 326 q 649 407 639 361 q 663 493 653 426 l 781 493 q 703 229 781 352 l 894 0 m 504 818 q 468 908 504 877 q 384 940 433 940 q 293 907 331 940 q 255 818 255 875 q 289 714 255 767 q 363 628 313 678 q 477 729 446 682 q 504 818 504 771 m 556 209 l 314 499 q 179 395 223 449 q 135 283 135 341 q 146 222 135 253 q 183 158 158 192 q 333 80 241 80 q 556 209 448 80 "},"Λ":{"x_min":0,"x_max":862.5,"ha":942,"o":"m 862 0 l 719 0 l 426 847 l 143 0 l 0 0 l 356 1013 l 501 1013 l 862 0 "},"I":{"x_min":41,"x_max":180,"ha":293,"o":"m 180 0 l 41 0 l 41 1013 l 180 1013 l 180 0 "},"G":{"x_min":0,"x_max":921,"ha":1011,"o":"m 921 0 l 832 0 l 801 136 q 655 15 741 58 q 470 -28 568 -28 q 126 133 259 -28 q 0 499 0 284 q 125 881 0 731 q 486 1043 259 1043 q 763 957 647 1043 q 905 709 890 864 l 772 709 q 668 866 747 807 q 486 926 589 926 q 228 795 322 926 q 142 507 142 677 q 228 224 142 342 q 483 94 323 94 q 712 195 625 94 q 796 435 796 291 l 477 435 l 477 549 l 921 549 l 921 0 "},"ΰ":{"x_min":0,"x_max":617,"ha":725,"o":"m 524 800 l 414 800 l 414 925 l 524 925 l 524 800 m 183 800 l 73 800 l 73 925 l 183 925 l 183 800 m 617 352 q 540 93 617 199 q 308 -24 455 -24 q 76 93 161 -24 q 0 352 0 199 l 0 738 l 126 738 l 126 354 q 169 185 126 257 q 312 98 220 98 q 451 185 402 98 q 492 354 492 257 l 492 738 l 617 738 l 617 352 m 489 1040 l 300 819 l 216 819 l 351 1040 l 489 1040 "},"`":{"x_min":0,"x_max":138.890625,"ha":236,"o":"m 138 699 l 0 699 l 0 861 q 36 974 0 929 q 138 1041 72 1020 l 138 977 q 82 931 95 969 q 69 839 69 893 l 138 839 l 138 699 "},"·":{"x_min":0,"x_max":142,"ha":239,"o":"m 142 585 l 0 585 l 0 738 l 142 738 l 142 585 "},"Υ":{"x_min":0.328125,"x_max":819.515625,"ha":889,"o":"m 819 1013 l 482 416 l 482 0 l 342 0 l 342 416 l 0 1013 l 140 1013 l 411 533 l 679 1013 l 819 1013 "},"r":{"x_min":0,"x_max":355.5625,"ha":432,"o":"m 355 621 l 343 621 q 179 569 236 621 q 122 411 122 518 l 122 0 l 0 0 l 0 737 l 117 737 l 117 604 q 204 719 146 686 q 355 753 262 753 l 355 621 "},"x":{"x_min":0,"x_max":675,"ha":764,"o":"m 675 0 l 525 0 l 331 286 l 144 0 l 0 0 l 256 379 l 12 738 l 157 737 l 336 473 l 516 738 l 661 738 l 412 380 l 675 0 "},"μ":{"x_min":0,"x_max":696.609375,"ha":747,"o":"m 696 -4 q 628 -14 657 -14 q 498 97 513 -14 q 422 8 470 41 q 313 -24 374 -24 q 207 3 258 -24 q 120 80 157 31 l 120 -278 l 0 -278 l 0 738 l 124 738 l 124 343 q 165 172 124 246 q 308 82 216 82 q 451 177 402 82 q 492 358 492 254 l 492 738 l 616 738 l 616 214 q 623 136 616 160 q 673 92 636 92 q 696 95 684 92 l 696 -4 "},"h":{"x_min":0,"x_max":615,"ha":724,"o":"m 615 472 l 615 0 l 490 0 l 490 454 q 456 590 490 535 q 338 654 416 654 q 186 588 251 654 q 122 436 122 522 l 122 0 l 0 0 l 0 1013 l 122 1013 l 122 633 q 218 727 149 694 q 362 760 287 760 q 552 676 484 760 q 615 472 615 600 "},".":{"x_min":0,"x_max":142,"ha":239,"o":"m 142 0 l 0 0 l 0 151 l 142 151 l 142 0 "},"φ":{"x_min":-2,"x_max":878,"ha":974,"o":"m 496 -279 l 378 -279 l 378 -17 q 101 88 204 -17 q -2 367 -2 194 q 68 626 -2 510 q 283 758 151 758 l 283 646 q 167 537 209 626 q 133 373 133 462 q 192 177 133 254 q 378 93 259 93 l 378 758 q 445 764 426 763 q 476 765 464 765 q 765 659 653 765 q 878 377 878 553 q 771 96 878 209 q 496 -17 665 -17 l 496 -279 m 496 93 l 514 93 q 687 183 623 93 q 746 380 746 265 q 691 569 746 491 q 522 658 629 658 l 496 656 l 496 93 "},";":{"x_min":0,"x_max":142,"ha":239,"o":"m 142 585 l 0 585 l 0 738 l 142 738 l 142 585 m 142 -12 q 105 -132 142 -82 q 0 -206 68 -182 l 0 -138 q 58 -82 43 -123 q 68 0 68 -56 l 0 0 l 0 151 l 142 151 l 142 -12 "},"f":{"x_min":0,"x_max":378,"ha":472,"o":"m 378 638 l 246 638 l 246 0 l 121 0 l 121 638 l 0 638 l 0 738 l 121 738 q 137 935 121 887 q 290 1028 171 1028 q 320 1027 305 1028 q 378 1021 334 1026 l 378 908 q 323 918 346 918 q 257 870 273 918 q 246 780 246 840 l 246 738 l 378 738 l 378 638 "},"“":{"x_min":1,"x_max":348.21875,"ha":454,"o":"m 140 670 l 1 670 l 1 830 q 37 943 1 897 q 140 1011 74 990 l 140 947 q 82 900 97 940 q 68 810 68 861 l 140 810 l 140 670 m 348 670 l 209 670 l 209 830 q 245 943 209 897 q 348 1011 282 990 l 348 947 q 290 900 305 940 q 276 810 276 861 l 348 810 l 348 670 "},"A":{"x_min":0.03125,"x_max":906.953125,"ha":1008,"o":"m 906 0 l 756 0 l 648 303 l 251 303 l 142 0 l 0 0 l 376 1013 l 529 1013 l 906 0 m 610 421 l 452 867 l 293 421 l 610 421 "},"6":{"x_min":53,"x_max":739,"ha":792,"o":"m 739 312 q 633 62 739 162 q 400 -31 534 -31 q 162 78 257 -31 q 53 439 53 206 q 178 859 53 712 q 441 986 284 986 q 643 912 559 986 q 732 713 732 833 l 601 713 q 544 830 594 786 q 426 875 494 875 q 268 793 331 875 q 193 517 193 697 q 301 597 240 570 q 427 624 362 624 q 643 540 552 624 q 739 312 739 451 m 603 298 q 540 461 603 400 q 404 516 484 516 q 268 461 323 516 q 207 300 207 401 q 269 137 207 198 q 405 83 325 83 q 541 137 486 83 q 603 298 603 197 "},"‘":{"x_min":1,"x_max":139.890625,"ha":236,"o":"m 139 670 l 1 670 l 1 830 q 37 943 1 897 q 139 1011 74 990 l 139 947 q 82 900 97 940 q 68 810 68 861 l 139 810 l 139 670 "},"ϊ":{"x_min":-70,"x_max":283,"ha":361,"o":"m 283 800 l 173 800 l 173 925 l 283 925 l 283 800 m 40 800 l -70 800 l -70 925 l 40 925 l 40 800 m 283 3 q 232 -10 257 -5 q 181 -15 206 -15 q 84 26 118 -15 q 41 200 41 79 l 41 737 l 166 737 l 167 215 q 171 141 167 157 q 225 101 182 101 q 247 103 238 101 q 283 112 256 104 l 283 3 "},"π":{"x_min":-0.21875,"x_max":773.21875,"ha":857,"o":"m 773 -7 l 707 -11 q 575 40 607 -11 q 552 174 552 77 l 552 226 l 552 626 l 222 626 l 222 0 l 97 0 l 97 626 l 0 626 l 0 737 l 773 737 l 773 626 l 676 626 l 676 171 q 695 103 676 117 q 773 90 714 90 l 773 -7 "},"ά":{"x_min":0,"x_max":765.5625,"ha":809,"o":"m 765 -4 q 698 -14 726 -14 q 564 97 586 -14 q 466 7 525 40 q 337 -26 407 -26 q 88 98 186 -26 q 0 369 0 212 q 88 637 0 525 q 337 760 184 760 q 465 727 407 760 q 563 637 524 695 l 563 738 l 685 738 l 685 222 q 693 141 685 168 q 748 94 708 94 q 765 95 760 94 l 765 -4 m 584 371 q 531 562 584 485 q 360 653 470 653 q 192 566 254 653 q 135 379 135 489 q 186 181 135 261 q 358 84 247 84 q 528 176 465 84 q 584 371 584 260 m 604 1040 l 415 819 l 332 819 l 466 1040 l 604 1040 "},"O":{"x_min":0,"x_max":958,"ha":1057,"o":"m 485 1041 q 834 882 702 1041 q 958 512 958 734 q 834 136 958 287 q 481 -26 702 -26 q 126 130 261 -26 q 0 504 0 279 q 127 880 0 728 q 485 1041 263 1041 m 480 98 q 731 225 638 98 q 815 504 815 340 q 733 783 815 669 q 480 912 640 912 q 226 784 321 912 q 142 504 142 670 q 226 224 142 339 q 480 98 319 98 "},"n":{"x_min":0,"x_max":615,"ha":724,"o":"m 615 463 l 615 0 l 490 0 l 490 454 q 453 592 490 537 q 331 656 410 656 q 178 585 240 656 q 117 421 117 514 l 117 0 l 0 0 l 0 738 l 117 738 l 117 630 q 218 728 150 693 q 359 764 286 764 q 552 675 484 764 q 615 463 615 593 "},"3":{"x_min":54,"x_max":737,"ha":792,"o":"m 737 284 q 635 55 737 141 q 399 -25 541 -25 q 156 52 248 -25 q 54 308 54 140 l 185 308 q 245 147 185 202 q 395 96 302 96 q 539 140 484 96 q 602 280 602 190 q 510 429 602 390 q 324 454 451 454 l 324 565 q 487 584 441 565 q 565 719 565 617 q 515 835 565 791 q 395 879 466 879 q 255 824 307 879 q 203 661 203 769 l 78 661 q 166 909 78 822 q 387 992 250 992 q 603 921 513 992 q 701 723 701 844 q 669 607 701 656 q 578 524 637 558 q 696 434 655 499 q 737 284 737 369 "},"9":{"x_min":53,"x_max":739,"ha":792,"o":"m 739 524 q 619 94 739 241 q 362 -32 516 -32 q 150 47 242 -32 q 59 244 59 126 l 191 244 q 246 129 191 176 q 373 82 301 82 q 526 161 466 82 q 597 440 597 255 q 363 334 501 334 q 130 432 216 334 q 53 650 53 521 q 134 880 53 786 q 383 986 226 986 q 659 841 566 986 q 739 524 739 719 m 388 449 q 535 514 480 449 q 585 658 585 573 q 535 805 585 744 q 388 873 480 873 q 242 809 294 873 q 191 658 191 745 q 239 514 191 572 q 388 449 292 449 "},"l":{"x_min":41,"x_max":166,"ha":279,"o":"m 166 0 l 41 0 l 41 1013 l 166 1013 l 166 0 "},"¤":{"x_min":40.09375,"x_max":728.796875,"ha":825,"o":"m 728 304 l 649 224 l 512 363 q 383 331 458 331 q 256 363 310 331 l 119 224 l 40 304 l 177 441 q 150 553 150 493 q 184 673 150 621 l 40 818 l 119 898 l 267 749 q 321 766 291 759 q 384 773 351 773 q 447 766 417 773 q 501 749 477 759 l 649 898 l 728 818 l 585 675 q 612 618 604 648 q 621 553 621 587 q 591 441 621 491 l 728 304 m 384 682 q 280 643 318 682 q 243 551 243 604 q 279 461 243 499 q 383 423 316 423 q 487 461 449 423 q 525 553 525 500 q 490 641 525 605 q 384 682 451 682 "},"κ":{"x_min":0,"x_max":632.328125,"ha":679,"o":"m 632 0 l 482 0 l 225 384 l 124 288 l 124 0 l 0 0 l 0 738 l 124 738 l 124 446 l 433 738 l 596 738 l 312 466 l 632 0 "},"4":{"x_min":48,"x_max":742.453125,"ha":792,"o":"m 742 243 l 602 243 l 602 0 l 476 0 l 476 243 l 48 243 l 48 368 l 476 958 l 602 958 l 602 354 l 742 354 l 742 243 m 476 354 l 476 792 l 162 354 l 476 354 "},"p":{"x_min":0,"x_max":685,"ha":786,"o":"m 685 364 q 598 96 685 205 q 350 -23 504 -23 q 121 89 205 -23 l 121 -278 l 0 -278 l 0 738 l 121 738 l 121 633 q 220 726 159 691 q 351 761 280 761 q 598 636 504 761 q 685 364 685 522 m 557 371 q 501 560 557 481 q 330 651 437 651 q 162 559 223 651 q 108 366 108 479 q 162 177 108 254 q 333 87 224 87 q 502 178 441 87 q 557 371 557 258 "},"‡":{"x_min":0,"x_max":777,"ha":835,"o":"m 458 238 l 458 0 l 319 0 l 319 238 l 0 238 l 0 360 l 319 360 l 319 681 l 0 683 l 0 804 l 319 804 l 319 1015 l 458 1013 l 458 804 l 777 804 l 777 683 l 458 683 l 458 360 l 777 360 l 777 238 l 458 238 "},"ψ":{"x_min":0,"x_max":808,"ha":907,"o":"m 465 -278 l 341 -278 l 341 -15 q 87 102 180 -15 q 0 378 0 210 l 0 739 l 133 739 l 133 379 q 182 195 133 275 q 341 98 242 98 l 341 922 l 465 922 l 465 98 q 623 195 563 98 q 675 382 675 278 l 675 742 l 808 742 l 808 381 q 720 104 808 213 q 466 -13 627 -13 l 465 -278 "},"η":{"x_min":0.78125,"x_max":697,"ha":810,"o":"m 697 -278 l 572 -278 l 572 454 q 540 587 572 536 q 425 650 501 650 q 271 579 337 650 q 206 420 206 509 l 206 0 l 81 0 l 81 489 q 73 588 81 562 q 0 644 56 644 l 0 741 q 68 755 38 755 q 158 720 124 755 q 200 630 193 686 q 297 726 234 692 q 434 761 359 761 q 620 692 544 761 q 697 516 697 624 l 697 -278 "}},"cssFontWeight":"normal","ascender":1189,"underlinePosition":-100,"cssFontStyle":"normal","boundingBox":{"yMin":-334,"xMin":-111,"yMax":1189,"xMax":1672},"resolution":1000,"original_font_information":{"postscript_name":"Helvetiker-Regular","version_string":"Version 1.00 2004 initial release","vendor_url":"http://www.magenta.gr/","full_font_name":"Helvetiker","font_family_name":"Helvetiker","copyright":"Copyright (c) Μagenta ltd, 2004","description":"","trademark":"","designer":"","designer_url":"","unique_font_identifier":"Μagenta ltd:Helvetiker:22-10-104","license_url":"http://www.ellak.gr/fonts/MgOpen/license.html","license_description":"Copyright (c) 2004 by MAGENTA Ltd. All Rights Reserved.\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license (\"Fonts\") and associated documentation files (the \"Font Software\"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions: \r\n\r\nThe above copyright and this permission notice shall be included in all copies of one or more of the Font Software typefaces.\r\n\r\nThe Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are renamed to names not containing the word \"MgOpen\", or if the modifications are accepted for inclusion in the Font Software itself by the each appointed Administrator.\r\n\r\nThis License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the \"MgOpen\" name.\r\n\r\nThe Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself. \r\n\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL MAGENTA OR PERSONS OR BODIES IN CHARGE OF ADMINISTRATION AND MAINTENANCE OF THE FONT SOFTWARE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.","manufacturer_name":"Μagenta ltd","font_sub_family_name":"Regular"},"descender":-334,"familyName":"Helvetiker","lineHeight":1522,"underlineThickness":50} \ No newline at end of file diff --git a/src/nodeschool/webgl/breakWall/src/camera.js b/src/nodeschool/webgl/breakWall/src/camera.js new file mode 100644 index 0000000..a89e824 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/camera.js @@ -0,0 +1,5 @@ +const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000) +camera.position.z = 1 +camera.lookAt(0, 0, 0) + +export default camera diff --git a/src/nodeschool/webgl/breakWall/src/events.js b/src/nodeschool/webgl/breakWall/src/events.js new file mode 100644 index 0000000..6d54cc0 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/events.js @@ -0,0 +1,26 @@ +export const addOnMouseDown = function addOnMouseDown (camera, objects, callback) { + const onMouseDownHandle = (event) => { + event.preventDefault(); + const raycaster = new THREE.Raycaster(); + const mouse = new THREE.Vector2() + mouse.x = (event.clientX / window.innerWidth) * 2 - 1 + mouse.y = - (event.clientY / window.innerHeight) * 2 + 1 + raycaster.setFromCamera(mouse, camera) + + const intersects = raycaster.intersectObjects(objects.children); + callback(intersects) + } + + document.addEventListener('mousedown', onMouseDownHandle, false); +} + +export const addOnDragRotation = function addOnMouseDown (objects) { + const onDragHandle = (event) => { + event.preventDefault(); + + // objects + } + + document.addEventListener('drag', onDragHandle, false); +} + diff --git a/src/nodeschool/webgl/breakWall/src/lib/OrbitControls.js b/src/nodeschool/webgl/breakWall/src/lib/OrbitControls.js new file mode 100644 index 0000000..0a1a1c6 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/lib/OrbitControls.js @@ -0,0 +1,1157 @@ +THREE.OrbitControls = function ( object, domElement ) { + + this.object = object; + + this.domElement = ( domElement !== undefined ) ? domElement : document; + + // Set to false to disable this control + this.enabled = true; + + // "target" sets the location of focus, where the object orbits around + this.target = new THREE.Vector3(); + + // How far you can dolly in and out ( PerspectiveCamera only ) + this.minDistance = 0; + this.maxDistance = Infinity; + + // How far you can zoom in and out ( OrthographicCamera only ) + this.minZoom = 0; + this.maxZoom = Infinity; + + // How far you can orbit vertically, upper and lower limits. + // Range is 0 to Math.PI radians. + this.minPolarAngle = 0; // radians + this.maxPolarAngle = Math.PI; // radians + + // How far you can orbit horizontally, upper and lower limits. + // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ]. + this.minAzimuthAngle = - Infinity; // radians + this.maxAzimuthAngle = Infinity; // radians + + // Set to true to enable damping (inertia) + // If damping is enabled, you must call controls.update() in your animation loop + this.enableDamping = false; + this.dampingFactor = 0.05; + + // This option actually enables dollying in and out; left as "zoom" for backwards compatibility. + // Set to false to disable zooming + this.enableZoom = true; + this.zoomSpeed = 1.0; + + // Set to false to disable rotating + this.enableRotate = true; + this.rotateSpeed = 1.0; + + // Set to false to disable panning + this.enablePan = true; + this.panSpeed = 1.0; + this.screenSpacePanning = false; // if true, pan in screen-space + this.keyPanSpeed = 7.0; // pixels moved per arrow key push + + // Set to true to automatically rotate around the target + // If auto-rotate is enabled, you must call controls.update() in your animation loop + this.autoRotate = false; + this.autoRotateSpeed = 2.0; // 30 seconds per round when fps is 60 + + // Set to false to disable use of the keys + this.enableKeys = true; + + // The four arrow keys + this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }; + + // Mouse buttons + this.mouseButtons = { LEFT: THREE.MOUSE.ROTATE, MIDDLE: THREE.MOUSE.DOLLY, RIGHT: THREE.MOUSE.PAN }; + + // Touch fingers + this.touches = { ONE: THREE.TOUCH.ROTATE, TWO: THREE.TOUCH.DOLLY_PAN }; + + // for reset + this.target0 = this.target.clone(); + this.position0 = this.object.position.clone(); + this.zoom0 = this.object.zoom; + + // + // public methods + // + + this.getPolarAngle = function () { + + return spherical.phi; + + }; + + this.getAzimuthalAngle = function () { + + return spherical.theta; + + }; + + this.saveState = function () { + + scope.target0.copy( scope.target ); + scope.position0.copy( scope.object.position ); + scope.zoom0 = scope.object.zoom; + + }; + + this.reset = function () { + + scope.target.copy( scope.target0 ); + scope.object.position.copy( scope.position0 ); + scope.object.zoom = scope.zoom0; + + scope.object.updateProjectionMatrix(); + scope.dispatchEvent( changeEvent ); + + scope.update(); + + state = STATE.NONE; + + }; + + // this method is exposed, but perhaps it would be better if we can make it private... + this.update = function () { + + var offset = new THREE.Vector3(); + + // so camera.up is the orbit axis + var quat = new THREE.Quaternion().setFromUnitVectors( object.up, new THREE.Vector3( 0, 1, 0 ) ); + var quatInverse = quat.clone().inverse(); + + var lastPosition = new THREE.Vector3(); + var lastQuaternion = new THREE.Quaternion(); + + return function update() { + + var position = scope.object.position; + + offset.copy( position ).sub( scope.target ); + + // rotate offset to "y-axis-is-up" space + offset.applyQuaternion( quat ); + + // angle from z-axis around y-axis + spherical.setFromVector3( offset ); + + if ( scope.autoRotate && state === STATE.NONE ) { + + rotateLeft( getAutoRotationAngle() ); + + } + + if ( scope.enableDamping ) { + + spherical.theta += sphericalDelta.theta * scope.dampingFactor; + spherical.phi += sphericalDelta.phi * scope.dampingFactor; + + } else { + + spherical.theta += sphericalDelta.theta; + spherical.phi += sphericalDelta.phi; + + } + + // restrict theta to be between desired limits + spherical.theta = Math.max( scope.minAzimuthAngle, Math.min( scope.maxAzimuthAngle, spherical.theta ) ); + + // restrict phi to be between desired limits + spherical.phi = Math.max( scope.minPolarAngle, Math.min( scope.maxPolarAngle, spherical.phi ) ); + + spherical.makeSafe(); + + + spherical.radius *= scale; + + // restrict radius to be between desired limits + spherical.radius = Math.max( scope.minDistance, Math.min( scope.maxDistance, spherical.radius ) ); + + // move target to panned location + + if ( scope.enableDamping === true ) { + + scope.target.addScaledVector( panOffset, scope.dampingFactor ); + + } else { + + scope.target.add( panOffset ); + + } + + offset.setFromSpherical( spherical ); + + // rotate offset back to "camera-up-vector-is-up" space + offset.applyQuaternion( quatInverse ); + + position.copy( scope.target ).add( offset ); + + scope.object.lookAt( scope.target ); + + if ( scope.enableDamping === true ) { + + sphericalDelta.theta *= ( 1 - scope.dampingFactor ); + sphericalDelta.phi *= ( 1 - scope.dampingFactor ); + + panOffset.multiplyScalar( 1 - scope.dampingFactor ); + + } else { + + sphericalDelta.set( 0, 0, 0 ); + + panOffset.set( 0, 0, 0 ); + + } + + scale = 1; + + // update condition is: + // min(camera displacement, camera rotation in radians)^2 > EPS + // using small-angle approximation cos(x/2) = 1 - x^2 / 8 + + if ( zoomChanged || + lastPosition.distanceToSquared( scope.object.position ) > EPS || + 8 * ( 1 - lastQuaternion.dot( scope.object.quaternion ) ) > EPS ) { + + scope.dispatchEvent( changeEvent ); + + lastPosition.copy( scope.object.position ); + lastQuaternion.copy( scope.object.quaternion ); + zoomChanged = false; + + return true; + + } + + return false; + + }; + + }(); + + this.dispose = function () { + + scope.domElement.removeEventListener( 'contextmenu', onContextMenu, false ); + scope.domElement.removeEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.removeEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.removeEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.removeEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.removeEventListener( 'touchmove', onTouchMove, false ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + window.removeEventListener( 'keydown', onKeyDown, false ); + + //scope.dispatchEvent( { type: 'dispose' } ); // should this be added here? + + }; + + // + // internals + // + + var scope = this; + + var changeEvent = { type: 'change' }; + var startEvent = { type: 'start' }; + var endEvent = { type: 'end' }; + + var STATE = { + NONE: - 1, + ROTATE: 0, + DOLLY: 1, + PAN: 2, + TOUCH_ROTATE: 3, + TOUCH_PAN: 4, + TOUCH_DOLLY_PAN: 5, + TOUCH_DOLLY_ROTATE: 6 + }; + + var state = STATE.NONE; + + var EPS = 0.000001; + + // current position in spherical coordinates + var spherical = new THREE.Spherical(); + var sphericalDelta = new THREE.Spherical(); + + var scale = 1; + var panOffset = new THREE.Vector3(); + var zoomChanged = false; + + var rotateStart = new THREE.Vector2(); + var rotateEnd = new THREE.Vector2(); + var rotateDelta = new THREE.Vector2(); + + var panStart = new THREE.Vector2(); + var panEnd = new THREE.Vector2(); + var panDelta = new THREE.Vector2(); + + var dollyStart = new THREE.Vector2(); + var dollyEnd = new THREE.Vector2(); + var dollyDelta = new THREE.Vector2(); + + function getAutoRotationAngle() { + + return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; + + } + + function getZoomScale() { + + return Math.pow( 0.95, scope.zoomSpeed ); + + } + + function rotateLeft( angle ) { + + sphericalDelta.theta -= angle; + + } + + function rotateUp( angle ) { + + sphericalDelta.phi -= angle; + + } + + var panLeft = function () { + + var v = new THREE.Vector3(); + + return function panLeft( distance, objectMatrix ) { + + v.setFromMatrixColumn( objectMatrix, 0 ); // get X column of objectMatrix + v.multiplyScalar( - distance ); + + panOffset.add( v ); + + }; + + }(); + + var panUp = function () { + + var v = new THREE.Vector3(); + + return function panUp( distance, objectMatrix ) { + + if ( scope.screenSpacePanning === true ) { + + v.setFromMatrixColumn( objectMatrix, 1 ); + + } else { + + v.setFromMatrixColumn( objectMatrix, 0 ); + v.crossVectors( scope.object.up, v ); + + } + + v.multiplyScalar( distance ); + + panOffset.add( v ); + + }; + + }(); + + // deltaX and deltaY are in pixels; right and down are positive + var pan = function () { + + var offset = new THREE.Vector3(); + + return function pan( deltaX, deltaY ) { + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + if ( scope.object.isPerspectiveCamera ) { + + // perspective + var position = scope.object.position; + offset.copy( position ).sub( scope.target ); + var targetDistance = offset.length(); + + // half of the fov is center to top of screen + targetDistance *= Math.tan( ( scope.object.fov / 2 ) * Math.PI / 180.0 ); + + // we use only clientHeight here so aspect ratio does not distort speed + panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix ); + panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix ); + + } else if ( scope.object.isOrthographicCamera ) { + + // orthographic + panLeft( deltaX * ( scope.object.right - scope.object.left ) / scope.object.zoom / element.clientWidth, scope.object.matrix ); + panUp( deltaY * ( scope.object.top - scope.object.bottom ) / scope.object.zoom / element.clientHeight, scope.object.matrix ); + + } else { + + // camera neither orthographic nor perspective + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.' ); + scope.enablePan = false; + + } + + }; + + }(); + + function dollyIn( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale /= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom * dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + function dollyOut( dollyScale ) { + + if ( scope.object.isPerspectiveCamera ) { + + scale *= dollyScale; + + } else if ( scope.object.isOrthographicCamera ) { + + scope.object.zoom = Math.max( scope.minZoom, Math.min( scope.maxZoom, scope.object.zoom / dollyScale ) ); + scope.object.updateProjectionMatrix(); + zoomChanged = true; + + } else { + + console.warn( 'WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.' ); + scope.enableZoom = false; + + } + + } + + // + // event callbacks - update the object state + // + + function handleMouseDownRotate( event ) { + + rotateStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownDolly( event ) { + + dollyStart.set( event.clientX, event.clientY ); + + } + + function handleMouseDownPan( event ) { + + panStart.set( event.clientX, event.clientY ); + + } + + function handleMouseMoveRotate( event ) { + + rotateEnd.set( event.clientX, event.clientY ); + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + scope.update(); + + } + + function handleMouseMoveDolly( event ) { + + dollyEnd.set( event.clientX, event.clientY ); + + dollyDelta.subVectors( dollyEnd, dollyStart ); + + if ( dollyDelta.y > 0 ) { + + dollyIn( getZoomScale() ); + + } else if ( dollyDelta.y < 0 ) { + + dollyOut( getZoomScale() ); + + } + + dollyStart.copy( dollyEnd ); + + scope.update(); + + } + + function handleMouseMovePan( event ) { + + panEnd.set( event.clientX, event.clientY ); + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + scope.update(); + + } + + function handleMouseUp( /*event*/ ) { + + // no-op + + } + + function handleMouseWheel( event ) { + + if ( event.deltaY < 0 ) { + + dollyOut( getZoomScale() ); + + } else if ( event.deltaY > 0 ) { + + dollyIn( getZoomScale() ); + + } + + scope.update(); + + } + + function handleKeyDown( event ) { + + var needsUpdate = false; + + switch ( event.keyCode ) { + + case scope.keys.UP: + pan( 0, scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.BOTTOM: + pan( 0, - scope.keyPanSpeed ); + needsUpdate = true; + break; + + case scope.keys.LEFT: + pan( scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + case scope.keys.RIGHT: + pan( - scope.keyPanSpeed, 0 ); + needsUpdate = true; + break; + + } + + if ( needsUpdate ) { + + // prevent the browser from scrolling on cursor keys + event.preventDefault(); + + scope.update(); + + } + + + } + + function handleTouchStartRotate( event ) { + + if ( event.touches.length == 1 ) { + + rotateStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + rotateStart.set( x, y ); + + } + + } + + function handleTouchStartPan( event ) { + + if ( event.touches.length == 1 ) { + + panStart.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panStart.set( x, y ); + + } + + } + + function handleTouchStartDolly( event ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyStart.set( 0, distance ); + + } + + function handleTouchStartDollyPan( event ) { + + if ( scope.enableZoom ) handleTouchStartDolly( event ); + + if ( scope.enablePan ) handleTouchStartPan( event ); + + } + + function handleTouchStartDollyRotate( event ) { + + if ( scope.enableZoom ) handleTouchStartDolly( event ); + + if ( scope.enableRotate ) handleTouchStartRotate( event ); + + } + + function handleTouchMoveRotate( event ) { + + if ( event.touches.length == 1 ) { + + rotateEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + rotateEnd.set( x, y ); + + } + + rotateDelta.subVectors( rotateEnd, rotateStart ).multiplyScalar( scope.rotateSpeed ); + + var element = scope.domElement === document ? scope.domElement.body : scope.domElement; + + rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientHeight ); // yes, height + + rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight ); + + rotateStart.copy( rotateEnd ); + + } + + function handleTouchMovePan( event ) { + + if ( event.touches.length == 1 ) { + + panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); + + } else { + + var x = 0.5 * ( event.touches[ 0 ].pageX + event.touches[ 1 ].pageX ); + var y = 0.5 * ( event.touches[ 0 ].pageY + event.touches[ 1 ].pageY ); + + panEnd.set( x, y ); + + } + + panDelta.subVectors( panEnd, panStart ).multiplyScalar( scope.panSpeed ); + + pan( panDelta.x, panDelta.y ); + + panStart.copy( panEnd ); + + } + + function handleTouchMoveDolly( event ) { + + var dx = event.touches[ 0 ].pageX - event.touches[ 1 ].pageX; + var dy = event.touches[ 0 ].pageY - event.touches[ 1 ].pageY; + + var distance = Math.sqrt( dx * dx + dy * dy ); + + dollyEnd.set( 0, distance ); + + dollyDelta.set( 0, Math.pow( dollyEnd.y / dollyStart.y, scope.zoomSpeed ) ); + + dollyIn( dollyDelta.y ); + + dollyStart.copy( dollyEnd ); + + } + + function handleTouchMoveDollyPan( event ) { + + if ( scope.enableZoom ) handleTouchMoveDolly( event ); + + if ( scope.enablePan ) handleTouchMovePan( event ); + + } + + function handleTouchMoveDollyRotate( event ) { + + if ( scope.enableZoom ) handleTouchMoveDolly( event ); + + if ( scope.enableRotate ) handleTouchMoveRotate( event ); + + } + + function handleTouchEnd( /*event*/ ) { + + // no-op + + } + + // + // event handlers - FSM: listen for events and reset state + // + + function onMouseDown( event ) { + + if ( scope.enabled === false ) return; + + // Prevent the browser from scrolling. + + event.preventDefault(); + + // Manually set the focus since calling preventDefault above + // prevents the browser from setting it automatically. + + scope.domElement.focus ? scope.domElement.focus() : window.focus(); + + switch ( event.button ) { + + case 0: + + switch ( scope.mouseButtons.LEFT ) { + + case THREE.MOUSE.ROTATE: + + if ( event.ctrlKey || event.metaKey || event.shiftKey ) { + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + } else { + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + } + + break; + + case THREE.MOUSE.PAN: + + if ( event.ctrlKey || event.metaKey || event.shiftKey ) { + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + } else { + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + } + + break; + + default: + + state = STATE.NONE; + + } + + break; + + + case 1: + + switch ( scope.mouseButtons.MIDDLE ) { + + case THREE.MOUSE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseDownDolly( event ); + + state = STATE.DOLLY; + + break; + + + default: + + state = STATE.NONE; + + } + + break; + + case 2: + + switch ( scope.mouseButtons.RIGHT ) { + + case THREE.MOUSE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseDownRotate( event ); + + state = STATE.ROTATE; + + break; + + case THREE.MOUSE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseDownPan( event ); + + state = STATE.PAN; + + break; + + default: + + state = STATE.NONE; + + } + + break; + + } + + if ( state !== STATE.NONE ) { + + document.addEventListener( 'mousemove', onMouseMove, false ); + document.addEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( startEvent ); + + } + + } + + function onMouseMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( state ) { + + case STATE.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleMouseMoveRotate( event ); + + break; + + case STATE.DOLLY: + + if ( scope.enableZoom === false ) return; + + handleMouseMoveDolly( event ); + + break; + + case STATE.PAN: + + if ( scope.enablePan === false ) return; + + handleMouseMovePan( event ); + + break; + + } + + } + + function onMouseUp( event ) { + + if ( scope.enabled === false ) return; + + handleMouseUp( event ); + + document.removeEventListener( 'mousemove', onMouseMove, false ); + document.removeEventListener( 'mouseup', onMouseUp, false ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onMouseWheel( event ) { + + if ( scope.enabled === false || scope.enableZoom === false || ( state !== STATE.NONE && state !== STATE.ROTATE ) ) return; + + event.preventDefault(); + event.stopPropagation(); + + scope.dispatchEvent( startEvent ); + + handleMouseWheel( event ); + + scope.dispatchEvent( endEvent ); + + } + + function onKeyDown( event ) { + + if ( scope.enabled === false || scope.enableKeys === false || scope.enablePan === false ) return; + + handleKeyDown( event ); + + } + + function onTouchStart( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + switch ( event.touches.length ) { + + case 1: + + switch ( scope.touches.ONE ) { + + case THREE.TOUCH.ROTATE: + + if ( scope.enableRotate === false ) return; + + handleTouchStartRotate( event ); + + state = STATE.TOUCH_ROTATE; + + break; + + case THREE.TOUCH.PAN: + + if ( scope.enablePan === false ) return; + + handleTouchStartPan( event ); + + state = STATE.TOUCH_PAN; + + break; + + default: + + state = STATE.NONE; + + } + + break; + + case 2: + + switch ( scope.touches.TWO ) { + + case THREE.TOUCH.DOLLY_PAN: + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + + handleTouchStartDollyPan( event ); + + state = STATE.TOUCH_DOLLY_PAN; + + break; + + case THREE.TOUCH.DOLLY_ROTATE: + + if ( scope.enableZoom === false && scope.enableRotate === false ) return; + + handleTouchStartDollyRotate( event ); + + state = STATE.TOUCH_DOLLY_ROTATE; + + break; + + default: + + state = STATE.NONE; + + } + + break; + + default: + + state = STATE.NONE; + + } + + if ( state !== STATE.NONE ) { + + scope.dispatchEvent( startEvent ); + + } + + } + + function onTouchMove( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + event.stopPropagation(); + + switch ( state ) { + + case STATE.TOUCH_ROTATE: + + if ( scope.enableRotate === false ) return; + + handleTouchMoveRotate( event ); + + scope.update(); + + break; + + case STATE.TOUCH_PAN: + + if ( scope.enablePan === false ) return; + + handleTouchMovePan( event ); + + scope.update(); + + break; + + case STATE.TOUCH_DOLLY_PAN: + + if ( scope.enableZoom === false && scope.enablePan === false ) return; + + handleTouchMoveDollyPan( event ); + + scope.update(); + + break; + + case STATE.TOUCH_DOLLY_ROTATE: + + if ( scope.enableZoom === false && scope.enableRotate === false ) return; + + handleTouchMoveDollyRotate( event ); + + scope.update(); + + break; + + default: + + state = STATE.NONE; + + } + + } + + function onTouchEnd( event ) { + + if ( scope.enabled === false ) return; + + handleTouchEnd( event ); + + scope.dispatchEvent( endEvent ); + + state = STATE.NONE; + + } + + function onContextMenu( event ) { + + if ( scope.enabled === false ) return; + + event.preventDefault(); + + } + + // + + scope.domElement.addEventListener( 'contextmenu', onContextMenu, false ); + + scope.domElement.addEventListener( 'mousedown', onMouseDown, false ); + scope.domElement.addEventListener( 'wheel', onMouseWheel, false ); + + scope.domElement.addEventListener( 'touchstart', onTouchStart, false ); + scope.domElement.addEventListener( 'touchend', onTouchEnd, false ); + scope.domElement.addEventListener( 'touchmove', onTouchMove, false ); + + window.addEventListener( 'keydown', onKeyDown, false ); + + // force an update at start + + this.update(); + +}; + +THREE.OrbitControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.OrbitControls.prototype.constructor = THREE.OrbitControls; + + +// This set of controls performs orbiting, dollying (zooming), and panning. +// Unlike TrackballControls, it maintains the "up" direction object.up (+Y by default). +// This is very similar to OrbitControls, another set of touch behavior +// +// Orbit - right mouse, or left mouse + ctrl/meta/shiftKey / touch: two-finger rotate +// Zoom - middle mouse, or mousewheel / touch: two-finger spread or squish +// Pan - left mouse, or arrow keys / touch: one-finger move + +THREE.MapControls = function ( object, domElement ) { + + THREE.OrbitControls.call( this, object, domElement ); + + this.mouseButtons.LEFT = THREE.MOUSE.PAN; + this.mouseButtons.RIGHT = THREE.MOUSE.ROTATE; + + this.touches.ONE = THREE.TOUCH.PAN; + this.touches.TWO = THREE.TOUCH.DOLLY_ROTATE; + +}; + +THREE.MapControls.prototype = Object.create( THREE.EventDispatcher.prototype ); +THREE.MapControls.prototype.constructor = THREE.MapControls; + + +window.THREE = THREE diff --git a/src/nodeschool/webgl/breakWall/src/lib/Physijs.js b/src/nodeschool/webgl/breakWall/src/lib/Physijs.js new file mode 100644 index 0000000..9d5b716 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/lib/Physijs.js @@ -0,0 +1,1403 @@ +window.Physijs = (function() { + 'use strict'; + + var SUPPORT_TRANSFERABLE, + _is_simulating = false, + _Physijs = Physijs, // used for noConflict method + Physijs = {}, // object assigned to window.Physijs + Eventable, // class to provide simple event methods + getObjectId, // returns a unique ID for a Physijs mesh object + getEulerXYZFromQuaternion, getQuatertionFromEuler, + convertWorldPositionToObject, // Converts a world-space position to object-space + addObjectChildren, + + _temp1, _temp2, + _temp_vector3_1 = new THREE.Vector3, + _temp_vector3_2 = new THREE.Vector3, + _temp_matrix4_1 = new THREE.Matrix4, + _quaternion_1 = new THREE.Quaternion, + + // constants + MESSAGE_TYPES = { + WORLDREPORT: 0, + COLLISIONREPORT: 1, + VEHICLEREPORT: 2, + CONSTRAINTREPORT: 3 + }, + REPORT_ITEMSIZE = 14, + COLLISIONREPORT_ITEMSIZE = 5, + VEHICLEREPORT_ITEMSIZE = 9, + CONSTRAINTREPORT_ITEMSIZE = 6; + + Physijs.scripts = {}; + + Eventable = function() { + this._eventListeners = {}; + }; + Eventable.prototype.addEventListener = function( event_name, callback ) { + if ( !this._eventListeners.hasOwnProperty( event_name ) ) { + this._eventListeners[event_name] = []; + } + this._eventListeners[event_name].push( callback ); + }; + Eventable.prototype.removeEventListener = function( event_name, callback ) { + var index; + + if ( !this._eventListeners.hasOwnProperty( event_name ) ) return false; + + if ( (index = this._eventListeners[event_name].indexOf( callback )) >= 0 ) { + this._eventListeners[event_name].splice( index, 1 ); + return true; + } + + return false; + }; + Eventable.prototype.dispatchEvent = function( event_name ) { + var i, + parameters = Array.prototype.splice.call( arguments, 1 ); + + if ( this._eventListeners.hasOwnProperty( event_name ) ) { + for ( i = 0; i < this._eventListeners[event_name].length; i++ ) { + this._eventListeners[event_name][i].apply( this, parameters ); + } + } + }; + Eventable.make = function( obj ) { + obj.prototype.addEventListener = Eventable.prototype.addEventListener; + obj.prototype.removeEventListener = Eventable.prototype.removeEventListener; + obj.prototype.dispatchEvent = Eventable.prototype.dispatchEvent; + }; + + getObjectId = (function() { + var _id = 1; + return function() { + return _id++; + }; + })(); + + getEulerXYZFromQuaternion = function ( x, y, z, w ) { + return new THREE.Vector3( + Math.atan2( 2 * ( x * w - y * z ), ( w * w - x * x - y * y + z * z ) ), + Math.asin( 2 * ( x * z + y * w ) ), + Math.atan2( 2 * ( z * w - x * y ), ( w * w + x * x - y * y - z * z ) ) + ); + }; + + getQuatertionFromEuler = function( x, y, z ) { + var c1, s1, c2, s2, c3, s3, c1c2, s1s2; + c1 = Math.cos( y ); + s1 = Math.sin( y ); + c2 = Math.cos( -z ); + s2 = Math.sin( -z ); + c3 = Math.cos( x ); + s3 = Math.sin( x ); + + c1c2 = c1 * c2; + s1s2 = s1 * s2; + + return { + w: c1c2 * c3 - s1s2 * s3, + x: c1c2 * s3 + s1s2 * c3, + y: s1 * c2 * c3 + c1 * s2 * s3, + z: c1 * s2 * c3 - s1 * c2 * s3 + }; + }; + + convertWorldPositionToObject = function( position, object ) { + _temp_matrix4_1.identity(); // reset temp matrix + + // Set the temp matrix's rotation to the object's rotation + _temp_matrix4_1.identity().makeRotationFromQuaternion( object.quaternion ); + + // Invert rotation matrix in order to "unrotate" a point back to object space + _temp_matrix4_1.getInverse( _temp_matrix4_1 ); + + // Yay! Temp vars! + _temp_vector3_1.copy( position ); + _temp_vector3_2.copy( object.position ); + + // Apply the rotation + + return _temp_vector3_1.sub( _temp_vector3_2 ).applyMatrix4( _temp_matrix4_1 ); + }; + + + + // Physijs.noConflict + Physijs.noConflict = function() { + window.Physijs = _Physijs; + return Physijs; + }; + + + // Physijs.createMaterial + Physijs.createMaterial = function( material, friction, restitution ) { + var physijs_material = function(){}; + physijs_material.prototype = material; + physijs_material = new physijs_material; + + physijs_material._physijs = { + id: material.id, + friction: friction === undefined ? .8 : friction, + restitution: restitution === undefined ? .2 : restitution + }; + + return physijs_material; + }; + + + // Constraints + Physijs.PointConstraint = function( objecta, objectb, position ) { + if ( position === undefined ) { + position = objectb; + objectb = undefined; + } + + this.type = 'point'; + this.appliedImpulse = 0; + this.id = getObjectId(); + this.objecta = objecta._physijs.id; + this.positiona = convertWorldPositionToObject( position, objecta ).clone(); + + if ( objectb ) { + this.objectb = objectb._physijs.id; + this.positionb = convertWorldPositionToObject( position, objectb ).clone(); + } + }; + Physijs.PointConstraint.prototype.getDefinition = function() { + return { + type: this.type, + id: this.id, + objecta: this.objecta, + objectb: this.objectb, + positiona: this.positiona, + positionb: this.positionb + }; + }; + + Physijs.HingeConstraint = function( objecta, objectb, position, axis ) { + if ( axis === undefined ) { + axis = position; + position = objectb; + objectb = undefined; + } + + this.type = 'hinge'; + this.appliedImpulse = 0; + this.id = getObjectId(); + this.scene = objecta.parent; + this.objecta = objecta._physijs.id; + this.positiona = convertWorldPositionToObject( position, objecta ).clone(); + this.position = position.clone(); + this.axis = axis; + + if ( objectb ) { + this.objectb = objectb._physijs.id; + this.positionb = convertWorldPositionToObject( position, objectb ).clone(); + } + }; + Physijs.HingeConstraint.prototype.getDefinition = function() { + return { + type: this.type, + id: this.id, + objecta: this.objecta, + objectb: this.objectb, + positiona: this.positiona, + positionb: this.positionb, + axis: this.axis + }; + }; + /* + * low = minimum angle in radians + * high = maximum angle in radians + * bias_factor = applied as a factor to constraint error + * relaxation_factor = controls bounce (0.0 == no bounce) + */ + Physijs.HingeConstraint.prototype.setLimits = function( low, high, bias_factor, relaxation_factor ) { + this.scene.execute( 'hinge_setLimits', { constraint: this.id, low: low, high: high, bias_factor: bias_factor, relaxation_factor: relaxation_factor } ); + }; + Physijs.HingeConstraint.prototype.enableAngularMotor = function( velocity, acceleration ) { + this.scene.execute( 'hinge_enableAngularMotor', { constraint: this.id, velocity: velocity, acceleration: acceleration } ); + }; + Physijs.HingeConstraint.prototype.disableMotor = function( velocity, acceleration ) { + this.scene.execute( 'hinge_disableMotor', { constraint: this.id } ); + }; + + Physijs.SliderConstraint = function( objecta, objectb, position, axis ) { + if ( axis === undefined ) { + axis = position; + position = objectb; + objectb = undefined; + } + + this.type = 'slider'; + this.appliedImpulse = 0; + this.id = getObjectId(); + this.scene = objecta.parent; + this.objecta = objecta._physijs.id; + this.positiona = convertWorldPositionToObject( position, objecta ).clone(); + this.axis = axis; + + if ( objectb ) { + this.objectb = objectb._physijs.id; + this.positionb = convertWorldPositionToObject( position, objectb ).clone(); + } + }; + Physijs.SliderConstraint.prototype.getDefinition = function() { + return { + type: this.type, + id: this.id, + objecta: this.objecta, + objectb: this.objectb, + positiona: this.positiona, + positionb: this.positionb, + axis: this.axis + }; + }; + Physijs.SliderConstraint.prototype.setLimits = function( lin_lower, lin_upper, ang_lower, ang_upper ) { + this.scene.execute( 'slider_setLimits', { constraint: this.id, lin_lower: lin_lower, lin_upper: lin_upper, ang_lower: ang_lower, ang_upper: ang_upper } ); + }; + Physijs.SliderConstraint.prototype.setRestitution = function( linear, angular ) { + this.scene.execute( + 'slider_setRestitution', + { + constraint: this.id, + linear: linear, + angular: angular + } + ); + }; + Physijs.SliderConstraint.prototype.enableLinearMotor = function( velocity, acceleration) { + this.scene.execute( 'slider_enableLinearMotor', { constraint: this.id, velocity: velocity, acceleration: acceleration } ); + }; + Physijs.SliderConstraint.prototype.disableLinearMotor = function() { + this.scene.execute( 'slider_disableLinearMotor', { constraint: this.id } ); + }; + Physijs.SliderConstraint.prototype.enableAngularMotor = function( velocity, acceleration ) { + this.scene.execute( 'slider_enableAngularMotor', { constraint: this.id, velocity: velocity, acceleration: acceleration } ); + }; + Physijs.SliderConstraint.prototype.disableAngularMotor = function() { + this.scene.execute( 'slider_disableAngularMotor', { constraint: this.id } ); + }; + + Physijs.ConeTwistConstraint = function( objecta, objectb, position ) { + if ( position === undefined ) { + throw 'Both objects must be defined in a ConeTwistConstraint.'; + } + this.type = 'conetwist'; + this.appliedImpulse = 0; + this.id = getObjectId(); + this.scene = objecta.parent; + this.objecta = objecta._physijs.id; + this.positiona = convertWorldPositionToObject( position, objecta ).clone(); + this.objectb = objectb._physijs.id; + this.positionb = convertWorldPositionToObject( position, objectb ).clone(); + this.axisa = { x: objecta.rotation.x, y: objecta.rotation.y, z: objecta.rotation.z }; + this.axisb = { x: objectb.rotation.x, y: objectb.rotation.y, z: objectb.rotation.z }; + }; + Physijs.ConeTwistConstraint.prototype.getDefinition = function() { + return { + type: this.type, + id: this.id, + objecta: this.objecta, + objectb: this.objectb, + positiona: this.positiona, + positionb: this.positionb, + axisa: this.axisa, + axisb: this.axisb + }; + }; + Physijs.ConeTwistConstraint.prototype.setLimit = function( x, y, z ) { + this.scene.execute( 'conetwist_setLimit', { constraint: this.id, x: x, y: y, z: z } ); + }; + Physijs.ConeTwistConstraint.prototype.enableMotor = function() { + this.scene.execute( 'conetwist_enableMotor', { constraint: this.id } ); + }; + Physijs.ConeTwistConstraint.prototype.setMaxMotorImpulse = function( max_impulse ) { + this.scene.execute( 'conetwist_setMaxMotorImpulse', { constraint: this.id, max_impulse: max_impulse } ); + }; + Physijs.ConeTwistConstraint.prototype.setMotorTarget = function( target ) { + if ( target instanceof THREE.Vector3 ) { + target = new THREE.Quaternion().setFromEuler( new THREE.Euler( target.x, target.y, target.z ) ); + } else if ( target instanceof THREE.Euler ) { + target = new THREE.Quaternion().setFromEuler( target ); + } else if ( target instanceof THREE.Matrix4 ) { + target = new THREE.Quaternion().setFromRotationMatrix( target ); + } + this.scene.execute( 'conetwist_setMotorTarget', { constraint: this.id, x: target.x, y: target.y, z: target.z, w: target.w } ); + }; + Physijs.ConeTwistConstraint.prototype.disableMotor = function() { + this.scene.execute( 'conetwist_disableMotor', { constraint: this.id } ); + }; + + Physijs.DOFConstraint = function( objecta, objectb, position ) { + if ( position === undefined ) { + position = objectb; + objectb = undefined; + } + this.type = 'dof'; + this.appliedImpulse = 0; + this.id = getObjectId(); + this.scene = objecta.parent; + this.objecta = objecta._physijs.id; + this.positiona = convertWorldPositionToObject( position, objecta ).clone(); + this.axisa = { x: objecta.rotation.x, y: objecta.rotation.y, z: objecta.rotation.z }; + + if ( objectb ) { + this.objectb = objectb._physijs.id; + this.positionb = convertWorldPositionToObject( position, objectb ).clone(); + this.axisb = { x: objectb.rotation.x, y: objectb.rotation.y, z: objectb.rotation.z }; + } + }; + Physijs.DOFConstraint.prototype.getDefinition = function() { + return { + type: this.type, + id: this.id, + objecta: this.objecta, + objectb: this.objectb, + positiona: this.positiona, + positionb: this.positionb, + axisa: this.axisa, + axisb: this.axisb + }; + }; + Physijs.DOFConstraint.prototype.setLinearLowerLimit = function( limit ) { + this.scene.execute( 'dof_setLinearLowerLimit', { constraint: this.id, x: limit.x, y: limit.y, z: limit.z } ); + }; + Physijs.DOFConstraint.prototype.setLinearUpperLimit = function( limit ) { + this.scene.execute( 'dof_setLinearUpperLimit', { constraint: this.id, x: limit.x, y: limit.y, z: limit.z } ); + }; + Physijs.DOFConstraint.prototype.setAngularLowerLimit = function( limit ) { + this.scene.execute( 'dof_setAngularLowerLimit', { constraint: this.id, x: limit.x, y: limit.y, z: limit.z } ); + }; + Physijs.DOFConstraint.prototype.setAngularUpperLimit = function( limit ) { + this.scene.execute( 'dof_setAngularUpperLimit', { constraint: this.id, x: limit.x, y: limit.y, z: limit.z } ); + }; + Physijs.DOFConstraint.prototype.enableAngularMotor = function( which ) { + this.scene.execute( 'dof_enableAngularMotor', { constraint: this.id, which: which } ); + }; + Physijs.DOFConstraint.prototype.configureAngularMotor = function( which, low_angle, high_angle, velocity, max_force ) { + this.scene.execute( 'dof_configureAngularMotor', { constraint: this.id, which: which, low_angle: low_angle, high_angle: high_angle, velocity: velocity, max_force: max_force } ); + }; + Physijs.DOFConstraint.prototype.disableAngularMotor = function( which ) { + this.scene.execute( 'dof_disableAngularMotor', { constraint: this.id, which: which } ); + }; + + // Physijs.Scene + Physijs.Scene = function( params ) { + var self = this; + + Eventable.call( this ); + THREE.Scene.call( this ); + + this._worker = new Worker( Physijs.scripts.worker || 'physijs_worker.js' ); + this._worker.transferableMessage = this._worker.webkitPostMessage || this._worker.postMessage; + this._materials_ref_counts = {}; + this._objects = {}; + this._vehicles = {}; + this._constraints = {}; + + var ab = new ArrayBuffer( 1 ); + this._worker.transferableMessage( ab, [ab] ); + SUPPORT_TRANSFERABLE = ( ab.byteLength === 0 ); + + this._worker.onmessage = function ( event ) { + var _temp, + data = event.data; + + if ( data instanceof ArrayBuffer && data.byteLength !== 1 ) { // byteLength === 1 is the worker making a SUPPORT_TRANSFERABLE test + data = new Float32Array( data ); + } + + if ( data instanceof Float32Array ) { + + // transferable object + switch ( data[0] ) { + case MESSAGE_TYPES.WORLDREPORT: + self._updateScene( data ); + break; + + case MESSAGE_TYPES.COLLISIONREPORT: + self._updateCollisions( data ); + break; + + case MESSAGE_TYPES.VEHICLEREPORT: + self._updateVehicles( data ); + break; + + case MESSAGE_TYPES.CONSTRAINTREPORT: + self._updateConstraints( data ); + break; + } + + } else { + + if ( data.cmd ) { + + // non-transferable object + switch ( data.cmd ) { + case 'objectReady': + _temp = data.params; + if ( self._objects[ _temp ] ) { + self._objects[ _temp ].dispatchEvent( 'ready' ); + } + break; + + case 'worldReady': + self.dispatchEvent( 'ready' ); + break; + + case 'vehicle': + window.test = data; + break; + + default: + // Do nothing, just show the message + console.debug('Received: ' + data.cmd); + console.dir(data.params); + break; + } + + } else { + + switch ( data[0] ) { + case MESSAGE_TYPES.WORLDREPORT: + self._updateScene( data ); + break; + + case MESSAGE_TYPES.COLLISIONREPORT: + self._updateCollisions( data ); + break; + + case MESSAGE_TYPES.VEHICLEREPORT: + self._updateVehicles( data ); + break; + + case MESSAGE_TYPES.CONSTRAINTREPORT: + self._updateConstraints( data ); + break; + } + + } + + } + }; + + + params = params || {}; + params.ammo = Physijs.scripts.ammo || 'ammo.js'; + params.fixedTimeStep = params.fixedTimeStep || 1 / 60; + params.rateLimit = params.rateLimit || true; + this.execute( 'init', params ); + }; + Physijs.Scene.prototype = new THREE.Scene; + Physijs.Scene.prototype.constructor = Physijs.Scene; + Eventable.make( Physijs.Scene ); + + Physijs.Scene.prototype._updateScene = function( data ) { + var num_objects = data[1], + object, + i, offset; + + for ( i = 0; i < num_objects; i++ ) { + offset = 2 + i * REPORT_ITEMSIZE; + object = this._objects[ data[ offset ] ]; + + if ( object === undefined ) { + continue; + } + + if ( object.__dirtyPosition === false ) { + object.position.set( + data[ offset + 1 ], + data[ offset + 2 ], + data[ offset + 3 ] + ); + } + + if ( object.__dirtyRotation === false ) { + object.quaternion.set( + data[ offset + 4 ], + data[ offset + 5 ], + data[ offset + 6 ], + data[ offset + 7 ] + ); + } + + object._physijs.linearVelocity.set( + data[ offset + 8 ], + data[ offset + 9 ], + data[ offset + 10 ] + ); + + object._physijs.angularVelocity.set( + data[ offset + 11 ], + data[ offset + 12 ], + data[ offset + 13 ] + ); + + } + + if ( SUPPORT_TRANSFERABLE ) { + // Give the typed array back to the worker + this._worker.transferableMessage( data.buffer, [data.buffer] ); + } + + _is_simulating = false; + this.dispatchEvent( 'update' ); + }; + + Physijs.Scene.prototype._updateVehicles = function( data ) { + var vehicle, wheel, + i, offset; + + for ( i = 0; i < ( data.length - 1 ) / VEHICLEREPORT_ITEMSIZE; i++ ) { + offset = 1 + i * VEHICLEREPORT_ITEMSIZE; + vehicle = this._vehicles[ data[ offset ] ]; + + if ( vehicle === undefined ) { + continue; + } + + wheel = vehicle.wheels[ data[ offset + 1 ] ]; + + wheel.position.set( + data[ offset + 2 ], + data[ offset + 3 ], + data[ offset + 4 ] + ); + + wheel.quaternion.set( + data[ offset + 5 ], + data[ offset + 6 ], + data[ offset + 7 ], + data[ offset + 8 ] + ); + } + + if ( SUPPORT_TRANSFERABLE ) { + // Give the typed array back to the worker + this._worker.transferableMessage( data.buffer, [data.buffer] ); + } + }; + + Physijs.Scene.prototype._updateConstraints = function( data ) { + var constraint, object, + i, offset; + + for ( i = 0; i < ( data.length - 1 ) / CONSTRAINTREPORT_ITEMSIZE; i++ ) { + offset = 1 + i * CONSTRAINTREPORT_ITEMSIZE; + constraint = this._constraints[ data[ offset ] ]; + object = this._objects[ data[ offset + 1 ] ]; + + if ( constraint === undefined || object === undefined ) { + continue; + } + + _temp_vector3_1.set( + data[ offset + 2 ], + data[ offset + 3 ], + data[ offset + 4 ] + ); + _temp_matrix4_1.extractRotation( object.matrix ); + _temp_vector3_1.applyMatrix4( _temp_matrix4_1 ); + + constraint.positiona.addVectors( object.position, _temp_vector3_1 ); + constraint.appliedImpulse = data[ offset + 5 ] ; + } + + if ( SUPPORT_TRANSFERABLE ) { + // Give the typed array back to the worker + this._worker.transferableMessage( data.buffer, [data.buffer] ); + } + }; + + Physijs.Scene.prototype._updateCollisions = function( data ) { + /** + * #TODO + * This is probably the worst way ever to handle collisions. The inherent evilness is a residual + * effect from the previous version's evilness which mutated when switching to transferable objects. + * + * If you feel inclined to make this better, please do so. + */ + + var i, j, offset, object, object2, id1, id2, + collisions = {}, normal_offsets = {}; + + // Build collision manifest + for ( i = 0; i < data[1]; i++ ) { + offset = 2 + i * COLLISIONREPORT_ITEMSIZE; + object = data[ offset ]; + object2 = data[ offset + 1 ]; + + normal_offsets[ object + '-' + object2 ] = offset + 2; + normal_offsets[ object2 + '-' + object ] = -1 * ( offset + 2 ); + + // Register collisions for both the object colliding and the object being collided with + if ( !collisions[ object ] ) collisions[ object ] = []; + collisions[ object ].push( object2 ); + + if ( !collisions[ object2 ] ) collisions[ object2 ] = []; + collisions[ object2 ].push( object ); + } + + // Deal with collisions + for ( id1 in this._objects ) { + if ( !this._objects.hasOwnProperty( id1 ) ) continue; + object = this._objects[ id1 ]; + + // If object touches anything, ... + if ( collisions[ id1 ] ) { + + // Clean up touches array + for ( j = 0; j < object._physijs.touches.length; j++ ) { + if ( collisions[ id1 ].indexOf( object._physijs.touches[j] ) === -1 ) { + object._physijs.touches.splice( j--, 1 ); + } + } + + // Handle each colliding object + for ( j = 0; j < collisions[ id1 ].length; j++ ) { + id2 = collisions[ id1 ][ j ]; + object2 = this._objects[ id2 ]; + + if ( object2 ) { + // If object was not already touching object2, notify object + if ( object._physijs.touches.indexOf( id2 ) === -1 ) { + object._physijs.touches.push( id2 ); + + _temp_vector3_1.subVectors( object.getLinearVelocity(), object2.getLinearVelocity() ); + _temp1 = _temp_vector3_1.clone(); + + _temp_vector3_1.subVectors( object.getAngularVelocity(), object2.getAngularVelocity() ); + _temp2 = _temp_vector3_1.clone(); + + var normal_offset = normal_offsets[ object._physijs.id + '-' + object2._physijs.id ]; + if ( normal_offset > 0 ) { + _temp_vector3_1.set( + -data[ normal_offset ], + -data[ normal_offset + 1 ], + -data[ normal_offset + 2 ] + ); + } else { + normal_offset *= -1; + _temp_vector3_1.set( + data[ normal_offset ], + data[ normal_offset + 1 ], + data[ normal_offset + 2 ] + ); + } + + object.dispatchEvent( 'collision', object2, _temp1, _temp2, _temp_vector3_1 ); + } + } + } + + } else { + + // not touching other objects + object._physijs.touches.length = 0; + + } + + } + + this.collisions = collisions; + + if ( SUPPORT_TRANSFERABLE ) { + // Give the typed array back to the worker + this._worker.transferableMessage( data.buffer, [data.buffer] ); + } + }; + + Physijs.Scene.prototype.addConstraint = function ( constraint, show_marker ) { + this._constraints[ constraint.id ] = constraint; + this.execute( 'addConstraint', constraint.getDefinition() ); + + if ( show_marker ) { + var marker; + + switch ( constraint.type ) { + case 'point': + marker = new THREE.Mesh( + new THREE.SphereGeometry( 1.5 ), + new THREE.MeshNormalMaterial + ); + marker.position.copy( constraint.positiona ); + this._objects[ constraint.objecta ].add( marker ); + break; + + case 'hinge': + marker = new THREE.Mesh( + new THREE.SphereGeometry( 1.5 ), + new THREE.MeshNormalMaterial + ); + marker.position.copy( constraint.positiona ); + this._objects[ constraint.objecta ].add( marker ); + break; + + case 'slider': + marker = new THREE.Mesh( + new THREE.BoxGeometry( 10, 1, 1 ), + new THREE.MeshNormalMaterial + ); + marker.position.copy( constraint.positiona ); + // This rotation isn't right if all three axis are non-0 values + // TODO: change marker's rotation order to ZYX + marker.rotation.set( + constraint.axis.y, // yes, y and + constraint.axis.x, // x axis are swapped + constraint.axis.z + ); + this._objects[ constraint.objecta ].add( marker ); + break; + + case 'conetwist': + marker = new THREE.Mesh( + new THREE.SphereGeometry( 1.5 ), + new THREE.MeshNormalMaterial + ); + marker.position.copy( constraint.positiona ); + this._objects[ constraint.objecta ].add( marker ); + break; + + case 'dof': + marker = new THREE.Mesh( + new THREE.SphereGeometry( 1.5 ), + new THREE.MeshNormalMaterial + ); + marker.position.copy( constraint.positiona ); + this._objects[ constraint.objecta ].add( marker ); + break; + } + } + + return constraint; + }; + + Physijs.Scene.prototype.onSimulationResume = function() { + this.execute( 'onSimulationResume', { } ); + }; + + Physijs.Scene.prototype.removeConstraint = function( constraint ) { + if ( this._constraints[constraint.id ] !== undefined ) { + this.execute( 'removeConstraint', { id: constraint.id } ); + delete this._constraints[ constraint.id ]; + } + }; + + Physijs.Scene.prototype.execute = function( cmd, params ) { + this._worker.postMessage({ cmd: cmd, params: params }); + }; + + addObjectChildren = function( parent, object ) { + var i; + + for ( i = 0; i < object.children.length; i++ ) { + if ( object.children[i]._physijs ) { + object.children[i].updateMatrix(); + object.children[i].updateMatrixWorld(); + + _temp_vector3_1.setFromMatrixPosition( object.children[i].matrixWorld ); + _quaternion_1.setFromRotationMatrix( object.children[i].matrixWorld ); + + object.children[i]._physijs.position_offset = { + x: _temp_vector3_1.x, + y: _temp_vector3_1.y, + z: _temp_vector3_1.z + }; + + object.children[i]._physijs.rotation = { + x: _quaternion_1.x, + y: _quaternion_1.y, + z: _quaternion_1.z, + w: _quaternion_1.w + }; + + parent._physijs.children.push( object.children[i]._physijs ); + } + + addObjectChildren( parent, object.children[i] ); + } + }; + + Physijs.Scene.prototype.add = function( object ) { + THREE.Mesh.prototype.add.call( this, object ); + + if ( object._physijs ) { + + object.world = this; + + if ( object instanceof Physijs.Vehicle ) { + + this.add( object.mesh ); + this._vehicles[ object._physijs.id ] = object; + this.execute( 'addVehicle', object._physijs ); + + } else { + + object.__dirtyPosition = false; + object.__dirtyRotation = false; + this._objects[object._physijs.id] = object; + + if ( object.children.length ) { + object._physijs.children = []; + addObjectChildren( object, object ); + } + + if ( object.material._physijs ) { + if ( !this._materials_ref_counts.hasOwnProperty( object.material._physijs.id ) ) { + this.execute( 'registerMaterial', object.material._physijs ); + object._physijs.materialId = object.material._physijs.id; + this._materials_ref_counts[object.material._physijs.id] = 1; + } else { + this._materials_ref_counts[object.material._physijs.id]++; + } + } + + // Object starting position + rotation + object._physijs.position = { x: object.position.x, y: object.position.y, z: object.position.z }; + object._physijs.rotation = { x: object.quaternion.x, y: object.quaternion.y, z: object.quaternion.z, w: object.quaternion.w }; + + // Check for scaling + var mass_scaling = new THREE.Vector3( 1, 1, 1 ); + if ( object._physijs.width ) { + object._physijs.width *= object.scale.x; + } + if ( object._physijs.height ) { + object._physijs.height *= object.scale.y; + } + if ( object._physijs.depth ) { + object._physijs.depth *= object.scale.z; + } + + this.execute( 'addObject', object._physijs ); + + } + } + }; + + Physijs.Scene.prototype.remove = function( object ) { + if ( object instanceof Physijs.Vehicle ) { + this.execute( 'removeVehicle', { id: object._physijs.id } ); + while( object.wheels.length ) { + this.remove( object.wheels.pop() ); + } + this.remove( object.mesh ); + delete this._vehicles[ object._physijs.id ]; + } else { + THREE.Mesh.prototype.remove.call( this, object ); + if ( object._physijs ) { + delete this._objects[object._physijs.id]; + this.execute( 'removeObject', { id: object._physijs.id } ); + } + } + if ( object.material && object.material._physijs && this._materials_ref_counts.hasOwnProperty( object.material._physijs.id ) ) { + this._materials_ref_counts[object.material._physijs.id]--; + if(this._materials_ref_counts[object.material._physijs.id] == 0) { + this.execute( 'unRegisterMaterial', object.material._physijs ); + delete this._materials_ref_counts[object.material._physijs.id]; + } + } + }; + + Physijs.Scene.prototype.setFixedTimeStep = function( fixedTimeStep ) { + if ( fixedTimeStep ) { + this.execute( 'setFixedTimeStep', fixedTimeStep ); + } + }; + + Physijs.Scene.prototype.setGravity = function( gravity ) { + if ( gravity ) { + this.execute( 'setGravity', gravity ); + } + }; + + Physijs.Scene.prototype.simulate = function( timeStep, maxSubSteps ) { + var object_id, object, update; + + if ( _is_simulating ) { + return false; + } + + _is_simulating = true; + + for ( object_id in this._objects ) { + if ( !this._objects.hasOwnProperty( object_id ) ) continue; + + object = this._objects[object_id]; + + if ( object.__dirtyPosition || object.__dirtyRotation ) { + update = { id: object._physijs.id }; + + if ( object.__dirtyPosition ) { + update.pos = { x: object.position.x, y: object.position.y, z: object.position.z }; + object.__dirtyPosition = false; + } + + if ( object.__dirtyRotation ) { + update.quat = { x: object.quaternion.x, y: object.quaternion.y, z: object.quaternion.z, w: object.quaternion.w }; + object.__dirtyRotation = false; + } + + this.execute( 'updateTransform', update ); + } + } + + this.execute( 'simulate', { timeStep: timeStep, maxSubSteps: maxSubSteps } ); + + return true; + }; + + + // Phsijs.Mesh + Physijs.Mesh = function ( geometry, material, mass ) { + var index; + + if ( !geometry ) { + return; + } + + Eventable.call( this ); + THREE.Mesh.call( this, geometry, material ); + + if ( !geometry.boundingBox ) { + geometry.computeBoundingBox(); + } + + this._physijs = { + type: null, + id: getObjectId(), + mass: mass || 0, + touches: [], + linearVelocity: new THREE.Vector3, + angularVelocity: new THREE.Vector3 + }; + }; + Physijs.Mesh.prototype = new THREE.Mesh; + Physijs.Mesh.prototype.constructor = Physijs.Mesh; + Eventable.make( Physijs.Mesh ); + + // Physijs.Mesh.mass + Physijs.Mesh.prototype.__defineGetter__('mass', function() { + return this._physijs.mass; + }); + Physijs.Mesh.prototype.__defineSetter__('mass', function( mass ) { + this._physijs.mass = mass; + if ( this.world ) { + this.world.execute( 'updateMass', { id: this._physijs.id, mass: mass } ); + } + }); + + // Physijs.Mesh.applyCentralImpulse + Physijs.Mesh.prototype.applyCentralImpulse = function ( force ) { + if ( this.world ) { + this.world.execute( 'applyCentralImpulse', { id: this._physijs.id, x: force.x, y: force.y, z: force.z } ); + } + }; + + // Physijs.Mesh.applyImpulse + Physijs.Mesh.prototype.applyImpulse = function ( force, offset ) { + if ( this.world ) { + this.world.execute( 'applyImpulse', { id: this._physijs.id, impulse_x: force.x, impulse_y: force.y, impulse_z: force.z, x: offset.x, y: offset.y, z: offset.z } ); + } + }; + + // Physijs.Mesh.applyTorque + Physijs.Mesh.prototype.applyTorque = function ( force ) { + if ( this.world ) { + this.world.execute( 'applyTorque', { id: this._physijs.id, torque_x: force.x, torque_y: force.y, torque_z: force.z } ); + } + }; + + // Physijs.Mesh.applyCentralForce + Physijs.Mesh.prototype.applyCentralForce = function ( force ) { + if ( this.world ) { + this.world.execute( 'applyCentralForce', { id: this._physijs.id, x: force.x, y: force.y, z: force.z } ); + } + }; + + // Physijs.Mesh.applyForce + Physijs.Mesh.prototype.applyForce = function ( force, offset ) { + if ( this.world ) { + this.world.execute( 'applyForce', { id: this._physijs.id, force_x: force.x, force_y : force.y, force_z : force.z, x: offset.x, y: offset.y, z: offset.z } ); + } + }; + + // Physijs.Mesh.getAngularVelocity + Physijs.Mesh.prototype.getAngularVelocity = function () { + return this._physijs.angularVelocity; + }; + + // Physijs.Mesh.setAngularVelocity + Physijs.Mesh.prototype.setAngularVelocity = function ( velocity ) { + if ( this.world ) { + this.world.execute( 'setAngularVelocity', { id: this._physijs.id, x: velocity.x, y: velocity.y, z: velocity.z } ); + } + }; + + // Physijs.Mesh.getLinearVelocity + Physijs.Mesh.prototype.getLinearVelocity = function () { + return this._physijs.linearVelocity; + }; + + // Physijs.Mesh.setLinearVelocity + Physijs.Mesh.prototype.setLinearVelocity = function ( velocity ) { + if ( this.world ) { + this.world.execute( 'setLinearVelocity', { id: this._physijs.id, x: velocity.x, y: velocity.y, z: velocity.z } ); + } + }; + + // Physijs.Mesh.setAngularFactor + Physijs.Mesh.prototype.setAngularFactor = function ( factor ) { + if ( this.world ) { + this.world.execute( 'setAngularFactor', { id: this._physijs.id, x: factor.x, y: factor.y, z: factor.z } ); + } + }; + + // Physijs.Mesh.setLinearFactor + Physijs.Mesh.prototype.setLinearFactor = function ( factor ) { + if ( this.world ) { + this.world.execute( 'setLinearFactor', { id: this._physijs.id, x: factor.x, y: factor.y, z: factor.z } ); + } + }; + + // Physijs.Mesh.setDamping + Physijs.Mesh.prototype.setDamping = function ( linear, angular ) { + if ( this.world ) { + this.world.execute( 'setDamping', { id: this._physijs.id, linear: linear, angular: angular } ); + } + }; + + // Physijs.Mesh.setCcdMotionThreshold + Physijs.Mesh.prototype.setCcdMotionThreshold = function ( threshold ) { + if ( this.world ) { + this.world.execute( 'setCcdMotionThreshold', { id: this._physijs.id, threshold: threshold } ); + } + }; + + // Physijs.Mesh.setCcdSweptSphereRadius + Physijs.Mesh.prototype.setCcdSweptSphereRadius = function ( radius ) { + if ( this.world ) { + this.world.execute( 'setCcdSweptSphereRadius', { id: this._physijs.id, radius: radius } ); + } + }; + + + // Physijs.PlaneMesh + Physijs.PlaneMesh = function ( geometry, material, mass ) { + var width, height; + + Physijs.Mesh.call( this, geometry, material, mass ); + + if ( !geometry.boundingBox ) { + geometry.computeBoundingBox(); + } + + width = geometry.boundingBox.max.x - geometry.boundingBox.min.x; + height = geometry.boundingBox.max.y - geometry.boundingBox.min.y; + + this._physijs.type = 'plane'; + this._physijs.normal = geometry.faces[0].normal.clone(); + this._physijs.mass = (typeof mass === 'undefined') ? width * height : mass; + }; + Physijs.PlaneMesh.prototype = new Physijs.Mesh; + Physijs.PlaneMesh.prototype.constructor = Physijs.PlaneMesh; + + // Physijs.HeightfieldMesh + Physijs.HeightfieldMesh = function ( geometry, material, mass, xdiv, ydiv) { + Physijs.Mesh.call( this, geometry, material, mass ); + + this._physijs.type = 'heightfield'; + this._physijs.xsize = geometry.boundingBox.max.x - geometry.boundingBox.min.x; + this._physijs.ysize = geometry.boundingBox.max.y - geometry.boundingBox.min.y; + this._physijs.xpts = (typeof xdiv === 'undefined') ? Math.sqrt(geometry.vertices.length) : xdiv + 1; + this._physijs.ypts = (typeof ydiv === 'undefined') ? Math.sqrt(geometry.vertices.length) : ydiv + 1; + // note - this assumes our plane geometry is square, unless we pass in specific xdiv and ydiv + this._physijs.absMaxHeight = Math.max(geometry.boundingBox.max.z,Math.abs(geometry.boundingBox.min.z)); + + var points = []; + + var a, b; + for ( var i = 0; i < geometry.vertices.length; i++ ) { + + a = i % this._physijs.xpts; + b = Math.round( ( i / this._physijs.xpts ) - ( (i % this._physijs.xpts) / this._physijs.xpts ) ); + points[i] = geometry.vertices[ a + ( ( this._physijs.ypts - b - 1 ) * this._physijs.ypts ) ].z; + + //points[i] = geometry.vertices[i]; + } + + this._physijs.points = points; + }; + Physijs.HeightfieldMesh.prototype = new Physijs.Mesh; + Physijs.HeightfieldMesh.prototype.constructor = Physijs.HeightfieldMesh; + + // Physijs.BoxMesh + Physijs.BoxMesh = function( geometry, material, mass ) { + var width, height, depth; + + Physijs.Mesh.call( this, geometry, material, mass ); + + if ( !geometry.boundingBox ) { + geometry.computeBoundingBox(); + } + + width = geometry.boundingBox.max.x - geometry.boundingBox.min.x; + height = geometry.boundingBox.max.y - geometry.boundingBox.min.y; + depth = geometry.boundingBox.max.z - geometry.boundingBox.min.z; + + this._physijs.type = 'box'; + this._physijs.width = width; + this._physijs.height = height; + this._physijs.depth = depth; + this._physijs.mass = (typeof mass === 'undefined') ? width * height * depth : mass; + }; + Physijs.BoxMesh.prototype = new Physijs.Mesh; + Physijs.BoxMesh.prototype.constructor = Physijs.BoxMesh; + + + // Physijs.SphereMesh + Physijs.SphereMesh = function( geometry, material, mass ) { + Physijs.Mesh.call( this, geometry, material, mass ); + + if ( !geometry.boundingSphere ) { + geometry.computeBoundingSphere(); + } + + this._physijs.type = 'sphere'; + this._physijs.radius = geometry.boundingSphere.radius; + this._physijs.mass = (typeof mass === 'undefined') ? (4/3) * Math.PI * Math.pow(this._physijs.radius, 3) : mass; + }; + Physijs.SphereMesh.prototype = new Physijs.Mesh; + Physijs.SphereMesh.prototype.constructor = Physijs.SphereMesh; + + + // Physijs.CylinderMesh + Physijs.CylinderMesh = function( geometry, material, mass ) { + var width, height, depth; + + Physijs.Mesh.call( this, geometry, material, mass ); + + if ( !geometry.boundingBox ) { + geometry.computeBoundingBox(); + } + + width = geometry.boundingBox.max.x - geometry.boundingBox.min.x; + height = geometry.boundingBox.max.y - geometry.boundingBox.min.y; + depth = geometry.boundingBox.max.z - geometry.boundingBox.min.z; + + this._physijs.type = 'cylinder'; + this._physijs.width = width; + this._physijs.height = height; + this._physijs.depth = depth; + this._physijs.mass = (typeof mass === 'undefined') ? width * height * depth : mass; + }; + Physijs.CylinderMesh.prototype = new Physijs.Mesh; + Physijs.CylinderMesh.prototype.constructor = Physijs.CylinderMesh; + + + // Physijs.CapsuleMesh + Physijs.CapsuleMesh = function( geometry, material, mass ) { + var width, height, depth; + + Physijs.Mesh.call( this, geometry, material, mass ); + + if ( !geometry.boundingBox ) { + geometry.computeBoundingBox(); + } + + width = geometry.boundingBox.max.x - geometry.boundingBox.min.x; + height = geometry.boundingBox.max.y - geometry.boundingBox.min.y; + depth = geometry.boundingBox.max.z - geometry.boundingBox.min.z; + + this._physijs.type = 'capsule'; + this._physijs.radius = Math.max(width / 2, depth / 2); + this._physijs.height = height; + this._physijs.mass = (typeof mass === 'undefined') ? width * height * depth : mass; + }; + Physijs.CapsuleMesh.prototype = new Physijs.Mesh; + Physijs.CapsuleMesh.prototype.constructor = Physijs.CapsuleMesh; + + + // Physijs.ConeMesh + Physijs.ConeMesh = function( geometry, material, mass ) { + var width, height, depth; + + Physijs.Mesh.call( this, geometry, material, mass ); + + if ( !geometry.boundingBox ) { + geometry.computeBoundingBox(); + } + + width = geometry.boundingBox.max.x - geometry.boundingBox.min.x; + height = geometry.boundingBox.max.y - geometry.boundingBox.min.y; + + this._physijs.type = 'cone'; + this._physijs.radius = width / 2; + this._physijs.height = height; + this._physijs.mass = (typeof mass === 'undefined') ? width * height : mass; + }; + Physijs.ConeMesh.prototype = new Physijs.Mesh; + Physijs.ConeMesh.prototype.constructor = Physijs.ConeMesh; + + + // Physijs.ConcaveMesh + Physijs.ConcaveMesh = function( geometry, material, mass ) { + var i, + width, height, depth, + vertices, face, triangles = []; + + Physijs.Mesh.call( this, geometry, material, mass ); + + if ( !geometry.boundingBox ) { + geometry.computeBoundingBox(); + } + + vertices = geometry.vertices; + + for ( i = 0; i < geometry.faces.length; i++ ) { + face = geometry.faces[i]; + if ( face instanceof THREE.Face3) { + + triangles.push([ + { x: vertices[face.a].x, y: vertices[face.a].y, z: vertices[face.a].z }, + { x: vertices[face.b].x, y: vertices[face.b].y, z: vertices[face.b].z }, + { x: vertices[face.c].x, y: vertices[face.c].y, z: vertices[face.c].z } + ]); + + } else if ( face instanceof THREE.Face4 ) { + + triangles.push([ + { x: vertices[face.a].x, y: vertices[face.a].y, z: vertices[face.a].z }, + { x: vertices[face.b].x, y: vertices[face.b].y, z: vertices[face.b].z }, + { x: vertices[face.d].x, y: vertices[face.d].y, z: vertices[face.d].z } + ]); + triangles.push([ + { x: vertices[face.b].x, y: vertices[face.b].y, z: vertices[face.b].z }, + { x: vertices[face.c].x, y: vertices[face.c].y, z: vertices[face.c].z }, + { x: vertices[face.d].x, y: vertices[face.d].y, z: vertices[face.d].z } + ]); + + } + } + + width = geometry.boundingBox.max.x - geometry.boundingBox.min.x; + height = geometry.boundingBox.max.y - geometry.boundingBox.min.y; + depth = geometry.boundingBox.max.z - geometry.boundingBox.min.z; + + this._physijs.type = 'concave'; + this._physijs.triangles = triangles; + this._physijs.mass = (typeof mass === 'undefined') ? width * height * depth : mass; + }; + Physijs.ConcaveMesh.prototype = new Physijs.Mesh; + Physijs.ConcaveMesh.prototype.constructor = Physijs.ConcaveMesh; + + + // Physijs.ConvexMesh + Physijs.ConvexMesh = function( geometry, material, mass ) { + var i, + width, height, depth, + points = []; + + Physijs.Mesh.call( this, geometry, material, mass ); + + if ( !geometry.boundingBox ) { + geometry.computeBoundingBox(); + } + + for ( i = 0; i < geometry.vertices.length; i++ ) { + points.push({ + x: geometry.vertices[i].x, + y: geometry.vertices[i].y, + z: geometry.vertices[i].z + }); + } + + + width = geometry.boundingBox.max.x - geometry.boundingBox.min.x; + height = geometry.boundingBox.max.y - geometry.boundingBox.min.y; + depth = geometry.boundingBox.max.z - geometry.boundingBox.min.z; + + this._physijs.type = 'convex'; + this._physijs.points = points; + this._physijs.mass = (typeof mass === 'undefined') ? width * height * depth : mass; + }; + Physijs.ConvexMesh.prototype = new Physijs.Mesh; + Physijs.ConvexMesh.prototype.constructor = Physijs.ConvexMesh; + + + // Physijs.Vehicle + Physijs.Vehicle = function( mesh, tuning ) { + tuning = tuning || new Physijs.VehicleTuning; + this.mesh = mesh; + this.wheels = []; + this._physijs = { + id: getObjectId(), + rigidBody: mesh._physijs.id, + suspension_stiffness: tuning.suspension_stiffness, + suspension_compression: tuning.suspension_compression, + suspension_damping: tuning.suspension_damping, + max_suspension_travel: tuning.max_suspension_travel, + friction_slip: tuning.friction_slip, + max_suspension_force: tuning.max_suspension_force + }; + }; + Physijs.Vehicle.prototype.addWheel = function( wheel_geometry, wheel_material, connection_point, wheel_direction, wheel_axle, suspension_rest_length, wheel_radius, is_front_wheel, tuning ) { + var wheel = new THREE.Mesh( wheel_geometry, wheel_material ); + wheel.castShadow = wheel.receiveShadow = true; + wheel.position.copy( wheel_direction ).multiplyScalar( suspension_rest_length / 100 ).add( connection_point ); + this.world.add( wheel ); + this.wheels.push( wheel ); + + this.world.execute( 'addWheel', { + id: this._physijs.id, + connection_point: { x: connection_point.x, y: connection_point.y, z: connection_point.z }, + wheel_direction: { x: wheel_direction.x, y: wheel_direction.y, z: wheel_direction.z }, + wheel_axle: { x: wheel_axle.x, y: wheel_axle.y, z: wheel_axle.z }, + suspension_rest_length: suspension_rest_length, + wheel_radius: wheel_radius, + is_front_wheel: is_front_wheel, + tuning: tuning + }); + }; + Physijs.Vehicle.prototype.setSteering = function( amount, wheel ) { + if ( wheel !== undefined && this.wheels[ wheel ] !== undefined ) { + this.world.execute( 'setSteering', { id: this._physijs.id, wheel: wheel, steering: amount } ); + } else if ( this.wheels.length > 0 ) { + for ( var i = 0; i < this.wheels.length; i++ ) { + this.world.execute( 'setSteering', { id: this._physijs.id, wheel: i, steering: amount } ); + } + } + }; + Physijs.Vehicle.prototype.setBrake = function( amount, wheel ) { + if ( wheel !== undefined && this.wheels[ wheel ] !== undefined ) { + this.world.execute( 'setBrake', { id: this._physijs.id, wheel: wheel, brake: amount } ); + } else if ( this.wheels.length > 0 ) { + for ( var i = 0; i < this.wheels.length; i++ ) { + this.world.execute( 'setBrake', { id: this._physijs.id, wheel: i, brake: amount } ); + } + } + }; + Physijs.Vehicle.prototype.applyEngineForce = function( amount, wheel ) { + if ( wheel !== undefined && this.wheels[ wheel ] !== undefined ) { + this.world.execute( 'applyEngineForce', { id: this._physijs.id, wheel: wheel, force: amount } ); + } else if ( this.wheels.length > 0 ) { + for ( var i = 0; i < this.wheels.length; i++ ) { + this.world.execute( 'applyEngineForce', { id: this._physijs.id, wheel: i, force: amount } ); + } + } + }; + + // Physijs.VehicleTuning + Physijs.VehicleTuning = function( suspension_stiffness, suspension_compression, suspension_damping, max_suspension_travel, friction_slip, max_suspension_force ) { + this.suspension_stiffness = suspension_stiffness !== undefined ? suspension_stiffness : 5.88; + this.suspension_compression = suspension_compression !== undefined ? suspension_compression : 0.83; + this.suspension_damping = suspension_damping !== undefined ? suspension_damping : 0.88; + this.max_suspension_travel = max_suspension_travel !== undefined ? max_suspension_travel : 500; + this.friction_slip = friction_slip !== undefined ? friction_slip : 10.5; + this.max_suspension_force = max_suspension_force !== undefined ? max_suspension_force : 6000; + }; + + return Physijs; +})(); diff --git a/src/nodeschool/webgl/breakWall/src/lib/ammo.js b/src/nodeschool/webgl/breakWall/src/lib/ammo.js new file mode 100644 index 0000000..23747e2 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/lib/ammo.js @@ -0,0 +1,21351 @@ +// Note: For maximum-speed code, see "Optimizing Code" on the Emscripten wiki, https://github.com/kripken/emscripten/wiki/Optimizing-Code +// Note: Some Emscripten settings may limit the speed of the generated code. +// The Module object: Our interface to the outside world. We import +// and export values on it, and do the work to get that through +// closure compiler if necessary. There are various ways Module can be used: +// 1. Not defined. We create it here +// 2. A function parameter, function(Module) { ..generated code.. } +// 3. pre-run appended it, var Module = {}; ..generated code.. +// 4. External script tag defines var Module. +// We need to do an eval in order to handle the closure compiler +// case, where this code here is minified but Module was defined +// elsewhere (e.g. case 4 above). We also need to check if Module +// already exists (e.g. case 3 above). +// Note that if you want to run closure, and also to use Module +// after the generated code, you will need to define var Module = {}; +// before the code. Then that object will be used in the code, and you +// can continue to use Module afterwards as well. +var Module; +if (!Module) Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()'); +// Sometimes an existing Module object exists with properties +// meant to overwrite the default module functionality. Here +// we collect those properties and reapply _after_ we configure +// the current environment's defaults to avoid having to be so +// defensive during initialization. +var moduleOverrides = {}; +for (var key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } +} +// The environment setup code below is customized to use Module. +// *** Environment setup code *** +var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function'; +var ENVIRONMENT_IS_WEB = typeof window === 'object'; +var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; +var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; +if (ENVIRONMENT_IS_NODE) { + // Expose functionality in the same simple way that the shells work + // Note that we pollute the global namespace here, otherwise we break in node + Module['print'] = function(x) { + process['stdout'].write(x + '\n'); + }; + Module['printErr'] = function(x) { + process['stderr'].write(x + '\n'); + }; + var nodeFS = require('fs'); + var nodePath = require('path'); + Module['read'] = function(filename, binary) { + filename = nodePath['normalize'](filename); + var ret = nodeFS['readFileSync'](filename); + // The path is absolute if the normalized version is the same as the resolved. + if (!ret && filename != nodePath['resolve'](filename)) { + filename = path.join(__dirname, '..', 'src', filename); + ret = nodeFS['readFileSync'](filename); + } + if (ret && !binary) ret = ret.toString(); + return ret; + }; + Module['readBinary'] = function(filename) { return Module['read'](filename, true) }; + Module['load'] = function(f) { + globalEval(read(f)); + }; + Module['arguments'] = process['argv'].slice(2); + module.exports = Module; +} +else if (ENVIRONMENT_IS_SHELL) { + Module['print'] = print; + if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm + if (typeof read != 'undefined') { + Module['read'] = read; + } else { + Module['read'] = function() { throw 'no read() available (jsc?)' }; + } + Module['readBinary'] = function(f) { + return read(f, 'binary'); + }; + if (typeof scriptArgs != 'undefined') { + Module['arguments'] = scriptArgs; + } else if (typeof arguments != 'undefined') { + Module['arguments'] = arguments; + } + this['Module'] = Module; +} +else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + Module['read'] = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + return xhr.responseText; + }; + if (typeof arguments != 'undefined') { + Module['arguments'] = arguments; + } + if (ENVIRONMENT_IS_WEB) { + Module['print'] = function(x) { + console.log(x); + }; + Module['printErr'] = function(x) { + console.log(x); + }; + this['Module'] = Module; + } else if (ENVIRONMENT_IS_WORKER) { + // We can do very little here... + var TRY_USE_DUMP = false; + Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { + dump(x); + }) : (function(x) { + // self.postMessage(x); // enable this if you want stdout to be sent as messages + })); + Module['load'] = importScripts; + } +} +else { + // Unreachable because SHELL is dependant on the others + throw 'Unknown runtime environment. Where are we?'; +} +function globalEval(x) { + eval.call(null, x); +} +if (!Module['load'] == 'undefined' && Module['read']) { + Module['load'] = function(f) { + globalEval(Module['read'](f)); + }; +} +if (!Module['print']) { + Module['print'] = function(){}; +} +if (!Module['printErr']) { + Module['printErr'] = Module['print']; +} +if (!Module['arguments']) { + Module['arguments'] = []; +} +// *** Environment setup code *** +// Closure helpers +Module.print = Module['print']; +Module.printErr = Module['printErr']; +// Callbacks +Module['preRun'] = []; +Module['postRun'] = []; +// Merge back in the overrides +for (var key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } +} +// === Auto-generated preamble library stuff === +//======================================== +// Runtime code shared with compiler +//======================================== +var Runtime = { + stackSave: function () { + return STACKTOP; + }, + stackRestore: function (stackTop) { + STACKTOP = stackTop; + }, + forceAlign: function (target, quantum) { + quantum = quantum || 4; + if (quantum == 1) return target; + if (isNumber(target) && isNumber(quantum)) { + return Math.ceil(target/quantum)*quantum; + } else if (isNumber(quantum) && isPowerOfTwo(quantum)) { + var logg = log2(quantum); + return '((((' +target + ')+' + (quantum-1) + ')>>' + logg + ')<<' + logg + ')'; + } + return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum; + }, + isNumberType: function (type) { + return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES; + }, + isPointerType: function isPointerType(type) { + return type[type.length-1] == '*'; +}, + isStructType: function isStructType(type) { + if (isPointerType(type)) return false; + if (isArrayType(type)) return true; + if (/?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types + // See comment in isStructPointerType() + return type[0] == '%'; +}, + INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0}, + FLOAT_TYPES: {"float":0,"double":0}, + or64: function (x, y) { + var l = (x | 0) | (y | 0); + var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296; + return l + h; + }, + and64: function (x, y) { + var l = (x | 0) & (y | 0); + var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296; + return l + h; + }, + xor64: function (x, y) { + var l = (x | 0) ^ (y | 0); + var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296; + return l + h; + }, + getNativeTypeSize: function (type, quantumSize) { + if (Runtime.QUANTUM_SIZE == 1) return 1; + var size = { + '%i1': 1, + '%i8': 1, + '%i16': 2, + '%i32': 4, + '%i64': 8, + "%float": 4, + "%double": 8 + }['%'+type]; // add '%' since float and double confuse Closure compiler as keys, and also spidermonkey as a compiler will remove 's from '_i8' etc + if (!size) { + if (type.charAt(type.length-1) == '*') { + size = Runtime.QUANTUM_SIZE; // A pointer + } else if (type[0] == 'i') { + var bits = parseInt(type.substr(1)); + assert(bits % 8 == 0); + size = bits/8; + } + } + return size; + }, + getNativeFieldSize: function (type) { + return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE); + }, + dedup: function dedup(items, ident) { + var seen = {}; + if (ident) { + return items.filter(function(item) { + if (seen[item[ident]]) return false; + seen[item[ident]] = true; + return true; + }); + } else { + return items.filter(function(item) { + if (seen[item]) return false; + seen[item] = true; + return true; + }); + } +}, + set: function set() { + var args = typeof arguments[0] === 'object' ? arguments[0] : arguments; + var ret = {}; + for (var i = 0; i < args.length; i++) { + ret[args[i]] = 0; + } + return ret; +}, + STACK_ALIGN: 8, + getAlignSize: function (type, size, vararg) { + // we align i64s and doubles on 64-bit boundaries, unlike x86 + if (type == 'i64' || type == 'double' || vararg) return 8; + if (!type) return Math.min(size, 8); // align structures internally to 64 bits + return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE); + }, + calculateStructAlignment: function calculateStructAlignment(type) { + type.flatSize = 0; + type.alignSize = 0; + var diffs = []; + var prev = -1; + var index = 0; + type.flatIndexes = type.fields.map(function(field) { + index++; + var size, alignSize; + if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) { + size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s. + alignSize = Runtime.getAlignSize(field, size); + } else if (Runtime.isStructType(field)) { + if (field[1] === '0') { + // this is [0 x something]. When inside another structure like here, it must be at the end, + // and it adds no size + // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!'); + size = 0; + alignSize = type.alignSize || QUANTUM_SIZE; + } else { + size = Types.types[field].flatSize; + alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize); + } + } else if (field[0] == 'b') { + // bN, large number field, like a [N x i8] + size = field.substr(1)|0; + alignSize = 1; + } else { + throw 'Unclear type in struct: ' + field + ', in ' + type.name_ + ' :: ' + dump(Types.types[type.name_]); + } + if (type.packed) alignSize = 1; + type.alignSize = Math.max(type.alignSize, alignSize); + var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory + type.flatSize = curr + size; + if (prev >= 0) { + diffs.push(curr-prev); + } + prev = curr; + return curr; + }); + type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize); + if (diffs.length == 0) { + type.flatFactor = type.flatSize; + } else if (Runtime.dedup(diffs).length == 1) { + type.flatFactor = diffs[0]; + } + type.needsFlattening = (type.flatFactor != 1); + return type.flatIndexes; + }, + generateStructInfo: function (struct, typeName, offset) { + var type, alignment; + if (typeName) { + offset = offset || 0; + type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName]; + if (!type) return null; + if (type.fields.length != struct.length) { + printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo'); + return null; + } + alignment = type.flatIndexes; + } else { + var type = { fields: struct.map(function(item) { return item[0] }) }; + alignment = Runtime.calculateStructAlignment(type); + } + var ret = { + __size__: type.flatSize + }; + if (typeName) { + struct.forEach(function(item, i) { + if (typeof item === 'string') { + ret[item] = alignment[i] + offset; + } else { + // embedded struct + var key; + for (var k in item) key = k; + ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]); + } + }); + } else { + struct.forEach(function(item, i) { + ret[item[1]] = alignment[i]; + }); + } + return ret; + }, + dynCall: function (sig, ptr, args) { + if (args && args.length) { + if (!args.splice) args = Array.prototype.slice.call(args); + args.splice(0, 0, ptr); + return Module['dynCall_' + sig].apply(null, args); + } else { + return Module['dynCall_' + sig].call(null, ptr); + } + }, + functionPointers: [null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null], + addFunction: function (func) { + for (var i = 0; i < Runtime.functionPointers.length; i++) { + if (!Runtime.functionPointers[i]) { + Runtime.functionPointers[i] = func; + return 2 + 2*i; + } + } + throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.'; + }, + removeFunction: function (index) { + Runtime.functionPointers[(index-2)/2] = null; + }, + warnOnce: function (text) { + if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {}; + if (!Runtime.warnOnce.shown[text]) { + Runtime.warnOnce.shown[text] = 1; + Module.printErr(text); + } + }, + funcWrappers: {}, + getFuncWrapper: function (func, sig) { + assert(sig); + if (!Runtime.funcWrappers[func]) { + Runtime.funcWrappers[func] = function() { + return Runtime.dynCall(sig, func, arguments); + }; + } + return Runtime.funcWrappers[func]; + }, + UTF8Processor: function () { + var buffer = []; + var needed = 0; + this.processCChar = function (code) { + code = code & 0xFF; + if (buffer.length == 0) { + if ((code & 0x80) == 0x00) { // 0xxxxxxx + return String.fromCharCode(code); + } + buffer.push(code); + if ((code & 0xE0) == 0xC0) { // 110xxxxx + needed = 1; + } else if ((code & 0xF0) == 0xE0) { // 1110xxxx + needed = 2; + } else { // 11110xxx + needed = 3; + } + return ''; + } + if (needed) { + buffer.push(code); + needed--; + if (needed > 0) return ''; + } + var c1 = buffer[0]; + var c2 = buffer[1]; + var c3 = buffer[2]; + var c4 = buffer[3]; + var ret; + if (buffer.length == 2) { + ret = String.fromCharCode(((c1 & 0x1F) << 6) | (c2 & 0x3F)); + } else if (buffer.length == 3) { + ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6) | (c3 & 0x3F)); + } else { + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) | + ((c3 & 0x3F) << 6) | (c4 & 0x3F); + ret = String.fromCharCode( + Math.floor((codePoint - 0x10000) / 0x400) + 0xD800, + (codePoint - 0x10000) % 0x400 + 0xDC00); + } + buffer.length = 0; + return ret; + } + this.processJSString = function(string) { + string = unescape(encodeURIComponent(string)); + var ret = []; + for (var i = 0; i < string.length; i++) { + ret.push(string.charCodeAt(i)); + } + return ret; + } + }, + stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = ((((STACKTOP)+7)>>3)<<3); return ret; }, + staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = ((((STATICTOP)+7)>>3)<<3); return ret; }, + dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = ((((DYNAMICTOP)+7)>>3)<<3); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; }, + alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); return ret; }, + makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((+(((low)>>>(0))))+((+(((high)>>>(0))))*(+(4294967296)))) : ((+(((low)>>>(0))))+((+(((high)|(0))))*(+(4294967296))))); return ret; }, + GLOBAL_BASE: 8, + QUANTUM_SIZE: 4, + __dummy__: 0 +} +function jsCall() { + var args = Array.prototype.slice.call(arguments); + return Runtime.functionPointers[args[0]].apply(null, args.slice(1)); +} +//======================================== +// Runtime essentials +//======================================== +var __THREW__ = 0; // Used in checking for thrown exceptions. +var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() +var EXITSTATUS = 0; +var undef = 0; +// tempInt is used for 32-bit signed values or smaller. tempBigInt is used +// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt +var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD; +var tempI64, tempI64b; +var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9; +function assert(condition, text) { + if (!condition) { + abort('Assertion failed: ' + text); + } +} +var globalScope = this; +// C calling interface. A convenient way to call C functions (in C files, or +// defined with extern "C"). +// +// Note: LLVM optimizations can inline and remove functions, after which you will not be +// able to call them. Closure can also do so. To avoid that, add your function to +// the exports using something like +// +// -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]' +// +// @param ident The name of the C function (note that C++ functions will be name-mangled - use extern "C") +// @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and +// 'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit). +// @param argTypes An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType, +// except that 'array' is not possible (there is no way for us to know the length of the array) +// @param args An array of the arguments to the function, as native JS values (as in returnType) +// Note that string arguments will be stored on the stack (the JS string will become a C string on the stack). +// @return The return value, as a native JS value (as in returnType) +function ccall(ident, returnType, argTypes, args) { + return ccallFunc(getCFunc(ident), returnType, argTypes, args); +} +Module["ccall"] = ccall; +// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) +function getCFunc(ident) { + try { + var func = Module['_' + ident]; // closure exported function + if (!func) func = eval('_' + ident); // explicit lookup + } catch(e) { + } + assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); + return func; +} +// Internal function that does a C call using a function, not an identifier +function ccallFunc(func, returnType, argTypes, args) { + var stack = 0; + function toC(value, type) { + if (type == 'string') { + if (value === null || value === undefined || value === 0) return 0; // null string + if (!stack) stack = Runtime.stackSave(); + var ret = Runtime.stackAlloc(value.length+1); + writeStringToMemory(value, ret); + return ret; + } else if (type == 'array') { + if (!stack) stack = Runtime.stackSave(); + var ret = Runtime.stackAlloc(value.length); + writeArrayToMemory(value, ret); + return ret; + } + return value; + } + function fromC(value, type) { + if (type == 'string') { + return Pointer_stringify(value); + } + assert(type != 'array'); + return value; + } + var i = 0; + var cArgs = args ? args.map(function(arg) { + return toC(arg, argTypes[i++]); + }) : []; + var ret = fromC(func.apply(null, cArgs), returnType); + if (stack) Runtime.stackRestore(stack); + return ret; +} +// Returns a native JS wrapper for a C function. This is similar to ccall, but +// returns a function you can call repeatedly in a normal way. For example: +// +// var my_function = cwrap('my_c_function', 'number', ['number', 'number']); +// alert(my_function(5, 22)); +// alert(my_function(99, 12)); +// +function cwrap(ident, returnType, argTypes) { + var func = getCFunc(ident); + return function() { + return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments)); + } +} +Module["cwrap"] = cwrap; +// Sets a value in memory in a dynamic way at run-time. Uses the +// type data. This is the same as makeSetValue, except that +// makeSetValue is done at compile-time and generates the needed +// code then, whereas this function picks the right code at +// run-time. +// Note that setValue and getValue only do *aligned* writes and reads! +// Note that ccall uses JS types as for defining types, while setValue and +// getValue need LLVM types ('i8', 'i32') - this is a lower-level operation +function setValue(ptr, value, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': HEAP8[(ptr)]=value; break; + case 'i8': HEAP8[(ptr)]=value; break; + case 'i16': HEAP16[((ptr)>>1)]=value; break; + case 'i32': HEAP32[((ptr)>>2)]=value; break; + case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math.abs(tempDouble))) >= (+(1)) ? (tempDouble > (+(0)) ? ((Math.min((+(Math.floor((tempDouble)/(+(4294967296))))), (+(4294967295))))|0)>>>0 : (~~((+(Math.ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+(4294967296)))))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break; + case 'float': HEAPF32[((ptr)>>2)]=value; break; + case 'double': HEAPF64[((ptr)>>3)]=value; break; + default: abort('invalid type for setValue: ' + type); + } +} +Module['setValue'] = setValue; +// Parallel to setValue. +function getValue(ptr, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + switch(type) { + case 'i1': return HEAP8[(ptr)]; + case 'i8': return HEAP8[(ptr)]; + case 'i16': return HEAP16[((ptr)>>1)]; + case 'i32': return HEAP32[((ptr)>>2)]; + case 'i64': return HEAP32[((ptr)>>2)]; + case 'float': return HEAPF32[((ptr)>>2)]; + case 'double': return HEAPF64[((ptr)>>3)]; + default: abort('invalid type for setValue: ' + type); + } + return null; +} +Module['getValue'] = getValue; +var ALLOC_NORMAL = 0; // Tries to use _malloc() +var ALLOC_STACK = 1; // Lives for the duration of the current function call +var ALLOC_STATIC = 2; // Cannot be freed +var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk +var ALLOC_NONE = 4; // Do not allocate +Module['ALLOC_NORMAL'] = ALLOC_NORMAL; +Module['ALLOC_STACK'] = ALLOC_STACK; +Module['ALLOC_STATIC'] = ALLOC_STATIC; +Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC; +Module['ALLOC_NONE'] = ALLOC_NONE; +// allocate(): This is for internal use. You can use it yourself as well, but the interface +// is a little tricky (see docs right below). The reason is that it is optimized +// for multiple syntaxes to save space in generated code. So you should +// normally not use allocate(), and instead allocate memory using _malloc(), +// initialize it with setValue(), and so forth. +// @slab: An array of data, or a number. If a number, then the size of the block to allocate, +// in *bytes* (note that this is sometimes confusing: the next parameter does not +// affect this!) +// @types: Either an array of types, one for each byte (or 0 if no type at that position), +// or a single type which is used for the entire block. This only matters if there +// is initial data - if @slab is a number, then this does not matter at all and is +// ignored. +// @allocator: How to allocate memory, see ALLOC_* +function allocate(slab, types, allocator, ptr) { + var zeroinit, size; + if (typeof slab === 'number') { + zeroinit = true; + size = slab; + } else { + zeroinit = false; + size = slab.length; + } + var singleType = typeof types === 'string' ? types : null; + var ret; + if (allocator == ALLOC_NONE) { + ret = ptr; + } else { + ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length)); + } + if (zeroinit) { + var ptr = ret, stop; + assert((ret & 3) == 0); + stop = ret + (size & ~3); + for (; ptr < stop; ptr += 4) { + HEAP32[((ptr)>>2)]=0; + } + stop = ret + size; + while (ptr < stop) { + HEAP8[((ptr++)|0)]=0; + } + return ret; + } + if (singleType === 'i8') { + if (slab.subarray || slab.slice) { + HEAPU8.set(slab, ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; + } + var i = 0, type, typeSize, previousType; + while (i < size) { + var curr = slab[i]; + if (typeof curr === 'function') { + curr = Runtime.getFunctionIndex(curr); + } + type = singleType || types[i]; + if (type === 0) { + i++; + continue; + } + if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later + setValue(ret+i, curr, type); + // no need to look up size unless type changes, so cache it + if (previousType !== type) { + typeSize = Runtime.getNativeTypeSize(type); + previousType = type; + } + i += typeSize; + } + return ret; +} +Module['allocate'] = allocate; +function Pointer_stringify(ptr, /* optional */ length) { + // TODO: use TextDecoder + // Find the length, and check for UTF while doing so + var hasUtf = false; + var t; + var i = 0; + while (1) { + t = HEAPU8[(((ptr)+(i))|0)]; + if (t >= 128) hasUtf = true; + else if (t == 0 && !length) break; + i++; + if (length && i == length) break; + } + if (!length) length = i; + var ret = ''; + if (!hasUtf) { + var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack + var curr; + while (length > 0) { + curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK))); + ret = ret ? ret + curr : curr; + ptr += MAX_CHUNK; + length -= MAX_CHUNK; + } + return ret; + } + var utf8 = new Runtime.UTF8Processor(); + for (i = 0; i < length; i++) { + t = HEAPU8[(((ptr)+(i))|0)]; + ret += utf8.processCChar(t); + } + return ret; +} +Module['Pointer_stringify'] = Pointer_stringify; +// Memory management +var PAGE_SIZE = 4096; +function alignMemoryPage(x) { + return ((x+4095)>>12)<<12; +} +var HEAP; +var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; +var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area +var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area +var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk +function enlargeMemory() { + abort('Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value, or (2) set Module.TOTAL_MEMORY before the program runs.'); +} +var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; +var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 67108864; +var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152; +// Initialize the runtime's memory +// check for full engine support (use string 'subarray' to avoid closure compiler confusion) +assert(!!Int32Array && !!Float64Array && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']), + 'Cannot fallback to non-typed array case: Code is too specialized'); +var buffer = new ArrayBuffer(TOTAL_MEMORY); +HEAP8 = new Int8Array(buffer); +HEAP16 = new Int16Array(buffer); +HEAP32 = new Int32Array(buffer); +HEAPU8 = new Uint8Array(buffer); +HEAPU16 = new Uint16Array(buffer); +HEAPU32 = new Uint32Array(buffer); +HEAPF32 = new Float32Array(buffer); +HEAPF64 = new Float64Array(buffer); +// Endianness check (note: assumes compiler arch was little-endian) +HEAP32[0] = 255; +assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system'); +Module['HEAP'] = HEAP; +Module['HEAP8'] = HEAP8; +Module['HEAP16'] = HEAP16; +Module['HEAP32'] = HEAP32; +Module['HEAPU8'] = HEAPU8; +Module['HEAPU16'] = HEAPU16; +Module['HEAPU32'] = HEAPU32; +Module['HEAPF32'] = HEAPF32; +Module['HEAPF64'] = HEAPF64; +function callRuntimeCallbacks(callbacks) { + while(callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == 'function') { + callback(); + continue; + } + var func = callback.func; + if (typeof func === 'number') { + if (callback.arg === undefined) { + Runtime.dynCall('v', func); + } else { + Runtime.dynCall('vi', func, [callback.arg]); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } +} +var __ATPRERUN__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATMAIN__ = []; // functions called when main() is to be run +var __ATEXIT__ = []; // functions called during shutdown +var __ATPOSTRUN__ = []; // functions called after the runtime has exited +var runtimeInitialized = false; +function preRun() { + // compatibility - merge in anything from Module['preRun'] at this time + if (Module['preRun']) { + if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']]; + while (Module['preRun'].length) { + addOnPreRun(Module['preRun'].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); +} +function ensureInitRuntime() { + if (runtimeInitialized) return; + runtimeInitialized = true; + callRuntimeCallbacks(__ATINIT__); +} +function preMain() { + callRuntimeCallbacks(__ATMAIN__); +} +function exitRuntime() { + callRuntimeCallbacks(__ATEXIT__); +} +function postRun() { + // compatibility - merge in anything from Module['postRun'] at this time + if (Module['postRun']) { + if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']]; + while (Module['postRun'].length) { + addOnPostRun(Module['postRun'].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); +} +function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); +} +Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun; +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} +Module['addOnInit'] = Module.addOnInit = addOnInit; +function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); +} +Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; +function addOnExit(cb) { + __ATEXIT__.unshift(cb); +} +Module['addOnExit'] = Module.addOnExit = addOnExit; +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} +Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; +// Tools +// This processes a JS string into a C-line array of numbers, 0-terminated. +// For LLVM-originating strings, see parser.js:parseLLVMString function +function intArrayFromString(stringy, dontAddNull, length /* optional */) { + var ret = (new Runtime.UTF8Processor()).processJSString(stringy); + if (length) { + ret.length = length; + } + if (!dontAddNull) { + ret.push(0); + } + return ret; +} +Module['intArrayFromString'] = intArrayFromString; +function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 0xFF) { + chr &= 0xFF; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(''); +} +Module['intArrayToString'] = intArrayToString; +// Write a Javascript array to somewhere in the heap +function writeStringToMemory(string, buffer, dontAddNull) { + var array = intArrayFromString(string, dontAddNull); + var i = 0; + while (i < array.length) { + var chr = array[i]; + HEAP8[(((buffer)+(i))|0)]=chr + i = i + 1; + } +} +Module['writeStringToMemory'] = writeStringToMemory; +function writeArrayToMemory(array, buffer) { + for (var i = 0; i < array.length; i++) { + HEAP8[(((buffer)+(i))|0)]=array[i]; + } +} +Module['writeArrayToMemory'] = writeArrayToMemory; +function unSign(value, bits, ignore, sig) { + if (value >= 0) { + return value; + } + return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts + : Math.pow(2, bits) + value; +} +function reSign(value, bits, ignore, sig) { + if (value <= 0) { + return value; + } + var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 + : Math.pow(2, bits-1); + if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that + // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors + // TODO: In i64 mode 1, resign the two parts separately and safely + value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts + } + return value; +} +if (!Math['imul']) Math['imul'] = function(a, b) { + var ah = a >>> 16; + var al = a & 0xffff; + var bh = b >>> 16; + var bl = b & 0xffff; + return (al*bl + ((ah*bl + al*bh) << 16))|0; +}; +Math.imul = Math['imul']; +// A counter of dependencies for calling run(). If we need to +// do asynchronous work before running, increment this and +// decrement it. Incrementing must happen in a place like +// PRE_RUN_ADDITIONS (used by emcc to add file preloading). +// Note that you can add dependencies in preRun, even though +// it happens right before run - run will be postponed until +// the dependencies are met. +var runDependencies = 0; +var runDependencyTracking = {}; +var calledInit = false, calledRun = false; +var runDependencyWatcher = null; +function addRunDependency(id) { + runDependencies++; + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + } else { + Module.printErr('warning: run dependency added without ID'); + } +} +Module['addRunDependency'] = addRunDependency; +function removeRunDependency(id) { + runDependencies--; + if (Module['monitorRunDependencies']) { + Module['monitorRunDependencies'](runDependencies); + } + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + Module.printErr('warning: run dependency removed without ID'); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) + if (!calledRun && shouldRunNow) run(); + } +} +Module['removeRunDependency'] = removeRunDependency; +Module["preloadedImages"] = {}; // maps url to image data +Module["preloadedAudios"] = {}; // maps url to audio data +function loadMemoryInitializer(filename) { + function applyData(data) { + HEAPU8.set(data, STATIC_BASE); + } + // always do this asynchronously, to keep shell and web as similar as possible + addOnPreRun(function() { + if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) { + applyData(Module['readBinary'](filename)); + } else { + Browser.asyncLoad(filename, function(data) { + applyData(data); + }, function(data) { + throw 'could not load memory initializer ' + filename; + }); + } + }); +} +// === Body === +STATIC_BASE = 8; +STATICTOP = STATIC_BASE + 44152; +/* global initializers */ __ATINIT__.push({ func: function() { runPostSets() } },{ func: function() { __GLOBAL__I_a() } }); +var ___dso_handle; +var __ZTVN10__cxxabiv120__si_class_type_infoE; +var __ZTVN10__cxxabiv117__class_type_infoE; +__ZTVN10__cxxabiv120__si_class_type_infoE=allocate([0,0,0,0,104,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC); +__ZTVN10__cxxabiv117__class_type_infoE=allocate([0,0,0,0,120,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_STATIC); +/* memory initializer */ allocate([92,0,0,0,158,6,0,0,42,0,0,0,84,1,0,0,28,4,0,0,84,0,0,0,56,1,0,0,134,1,0,0,108,0,0,0,120,1,0,0,68,0,0,0,206,1,0,0,70,0,0,0,82,4,0,0,54,0,0,0,14,2,0,0,64,0,0,0,10,4,0,0,88,0,0,0,98,6,0,0,16,1,0,0,192,0,0,0,236,1,0,0,54,0,0,0,176,6,0,0,50,0,0,0,174,3,0,0,18,1,0,0,48,0,0,0,42,0,0,0,42,0,0,0,86,2,0,0,42,0,0,0,250,2,0,0,144,8,0,0,128,1,0,0,206,1,0,0,224,0,0,0,54,0,0,0,62,0,0,0,196,4,0,0,128,2,0,0,40,2,0,0,144,1,0,0,164,4,0,0,90,4,0,0,108,1,0,0,142,6,0,0,0,6,0,0,238,4,0,0,0,1,0,0,88,1,0,0,254,8,0,0,82,2,0,0,200,0,0,0,216,1,0,0,66,0,0,0,114,0,0,0,252,3,0,0,206,0,0,0,112,0,0,0,230,1,0,0,178,6,0,0,204,1,0,0,240,2,0,0,74,0,0,0,146,2,0,0,48,0,0,0,84,4,0,0,50,0,0,0,68,0,0,0,168,0,0,0,122,6,0,0,58,2,0,0,106,0,0,0,42,0,0,0,204,1,0,0,198,3,0,0,202,2,0,0,36,2,0,0,204,2,0,0,136,0,0,0,172,1,0,0,86,1,0,0,72,0,0,0,188,2,0,0,70,1,0,0,98,0,0,0,104,5,0,0,64,1,0,0,182,3,0,0,66,2,0,0,118,2,0,0,142,0,0,0,132,0,0,0,230,5,0,0,184,0,0,0,36,6,0,0,46,0,0,0,52,1,0,0,74,0,0,0,172,5,0,0,110,0,0,0,162,0,0,0,136,4,0,0,178,0,0,0,66,0,0,0,96,10,0,0,214,4,0,0,68,0,0,0,98,3,0,0,44,0,0,0,130,1,0,0,124,0,0,0,138,5,0,0,196,1,0,0,70,0,0,0,46,5,0,0,238,5,0,0,68,10,0,0,72,1,0,0,222,0,0,0,76,0,0,0,94,4,0,0,196,0,0,0,234,3,0,0,46,9,0,0,52,0,0,0,32,3,0,0,166,0,0,0,108,0,0,0,92,7,0,0,68,0,0,0,126,5,0,0,10,2,0,0,200,0,0,0,36,3,0,0,204,9,0,0,144,0,0,0,86,0,0,0,112,0,0,0,98,0,0,0,190,0,0,0,42,5,0,0,18,1,0,0,204,1,0,0,10,3,0,0,38,1,0,0,58,0,0,0,146,1,0,0,70,0,0,0,52,1,0,0,216,1,0,0,56,0,0,0,252,2,0,0,36,2,0,0,224,5,0,0,24,5,0,0,88,0,0,0,46,0,0,0,64,5,0,0,142,0,0,0,80,1,0,0,2,3,0,0,220,9,0,0,98,0,0,0,242,3,0,0,236,4,0,0,170,1,0,0,232,0,0,0,28,8,0,0,48,8,0,0,122,5,0,0,68,4,0,0,18,5,0,0,18,9,0,0,216,5,0,0,100,4,0,0,60,1,0,0,84,6,0,0,0,3,0,0,120,4,0,0,84,1,0,0,56,10,0,0,98,0,0,0,120,0,0,0,50,0,0,0,218,7,0,0,112,6,0,0,158,1,0,0,210,4,0,0,144,6,0,0,154,2,0,0,192,0,0,0,150,2,0,0,186,1,0,0,132,5,0,0,196,0,0,0,38,2,0,0,132,4,0,0,192,1,0,0,42,3,0,0,122,0,0,0,106,0,0,0,230,3,0,0,58,0,0,0,194,3,0,0,116,0,0,0,138,2,0,0,234,5,0,0,48,1,0,0,148,5,0,0,140,0,0,0,44,5,0,0,196,4,0,0,12,5,0,0,68,1,0,0,138,0,0,0,120,5,0,0,214,1,0,0,90,2,0,0,176,0,0,0,132,10,0,0,24,3,0,0,96,2,0,0,210,1,0,0,140,0,0,0,50,0,0,0,178,1,0,0,40,1,0,0,8,5,0,0,106,0,0,0,34,4,0,0,40,5,0,0,172,0,0,0,230,0,0,0,220,10,0,0,172,9,0,0,220,1,0,0,246,3,0,0,36,4,0,0,56,1,0,0,64,1,0,0,60,0,0,0,228,0,0,0,170,7,0,0,108,4,0,0,254,3,0,0,208,0,0,0,222,7,0,0,232,0,0,0,82,7,0,0,44,0,0,0,172,3,0,0,72,0,0,0,152,5,0,0,44,0,0,0,174,1,0,0,86,0,0,0,192,3,0,0,224,0,0,0,244,0,0,0,12,8,0,0,120,1,0,0,60,0,0,0,82,1,0,0,222,3,0,0,40,7,0,0,168,4,0,0,186,0,0,0,174,7,0,0,238,0,0,0,238,0,0,0,28,2,0,0,114,0,0,0,110,2,0,0,242,7,0,0,42,0,0,0,126,7,0,0,166,7,0,0,6,1,0,0,230,8,0,0,112,6,0,0,2,3,0,0,222,1,0,0,92,1,0,0,4,2,0,0,44,0,0,0,126,0,0,0,122,1,0,0,90,1,0,0,250,3,0,0,88,0,0,0,86,10,0,0,118,0,0,0,188,0,0,0,198,6,0,0,198,0,0,0,16,1,0,0,56,4,0,0,74,7,0,0,88,0,0,0,64,0,0,0,122,10,0,0,50,3,0,0,130,10,0,0,108,3,0,0,50,1,0,0,94,0,0,0,46,0,0,0,114,0,0,0,136,3,0,0,48,1,0,0,196,1,0,0,224,0,0,0,196,0,0,0,62,0,0,0,42,0,0,0,98,1,0,0,222,0,0,0,174,2,0,0,144,0,0,0,154,0,0,0,170,0,0,0,64,3,0,0,44,4,0,0,80,0,0,0,56,3,0,0,44,0,0,0,52,0,0,0,44,0,0,0,42,0,0,0,8,3,0,0,82,2,0,0,164,1,0,0,42,1,0,0,0,2,0,0,62,3,0,0,20,1,0,0,106,9,0,0,132,0,0,0,116,3,0,0,0,9,0,0,164,0,0,0,66,3,0,0,64,2,0,0,152,0,0,0,140,4,0,0,218,0,0,0,34,3,0,0,148,1,0,0,42,0,0,0,14,10,0,0,130,3,0,0,232,1,0,0,228,3,0,0,134,0,0,0,78,0,0,0,48,0,0,0,120,0,0,0,54,1,0,0,224,1,0,0,90,0,0,0,206,4,0,0,236,0,0,0,132,0,0,0,154,5,0,0,130,0,0,0,74,0,0,0,50,0,0,0,62,0,0,0,64,0,0,0,144,1,0,0,76,1,0,0,48,0,0,0,34,2,0,0,66,0,0,0,226,0,0,0,48,0,0,0,80,7,0,0,166,9,0,0,126,3,0,0,122,0,0,0,124,9,0,0,246,2,0,0,156,2,0,0,94,1,0,0,30,5,0,0,242,0,0,0,194,5,0,0,90,4,0,0,68,0,0,0,42,0,0,0,50,1,0,0,62,0,0,0,174,6,0,0,170,1,0,0,194,0,0,0,134,1,0,0,98,2,0,0,92,0,0,0,198,3,0,0,226,3,0,0,66,0,0,0,114,1,0,0,250,9,0,0,120,2,0,0,172,0,0,0,42,5,0,0,18,1,0,0,6,1,0,0,104,0,0,0,132,5,0,0,22,9,0,0,96,5,0,0,120,0,0,0,92,0,0,0,120,2,0,0,80,0,0,0,6,5,0,0,54,9,0,0,208,3,0,0,22,3,0,0,220,0,0,0,124,8,0,0,232,5,0,0,42,1,0,0,96,0,0,0,164,1,0,0,50,1,0,0,222,9,0,0,74,1,0,0,34,6,0,0,76,0,0,0,150,1,0,0,218,1,0,0,80,0,0,0,68,1,0,0,234,2,0,0,156,2,0,0,24,4,0,0,242,1,0,0,192,0,0,0,0,1,0,0,98,0,0,0,198,0,0,0,80,2,0,0,56,0,0,0,150,1,0,0,200,4,0,0,208,0,0,0,10,1,0,0,208,10,0,0,84,0,0,0,94,6,0,0,2,1,0,0,110,0,0,0,38,3,0,0,56,1,0,0,110,3,0,0,210,4,0,0,156,10,0,0,134,6,0,0,38,1,0,0,240,1,0,0,90,0,0,0,194,6,0,0,18,6,0,0,56,0,0,0,62,7,0,0,226,7,0,0,140,2,0,0,240,0,0,0,68,3,0,0,216,6,0,0,152,3,0,0,80,0,0,0,2,2,0,0,70,1,0,0,94,3,0,0,76,0,0,0,220,7,0,0,206,4,0,0,112,1,0,0,76,8,0,0,130,4,0,0,80,0,0,0,110,2,0,0,26,2,0,0,28,1,0,0,86,0,0,0,38,2,0,0,44,4,0,0,86,0,0,0,206,9,0,0,236,0,0,0,192,5,0,0,112,0,0,0,196,0,0,0,102,4,0,0,32,1,0,0,124,1,0,0,36,2,0,0,100,1,0,0,82,5,0,0,112,1,0,0,216,1,0,0,12,4,0,0,86,1,0,0,216,3,0,0,238,2,0,0,136,0,0,0,54,0,0,0,88,4,0,0,102,2,0,0,166,1,0,0,122,0,0,0,54,1,0,0,28,1,0,0,16,1,0,0,20,6,0,0,76,0,0,0,60,3,0,0,234,3,0,0,36,5,0,0,68,6,0,0,168,0,0,0,242,2,0,0,44,0,0,0,42,0,0,0,42,0,0,0,40,3,0,0,250,8,0,0,174,2,0,0,174,3,0,0,128,0,0,0,168,10,0,0,66,1,0,0,24,1,0,0,50,0,0,0,22,6,0,0,110,2,0,0,80,0,0,0,58,0,0,0,174,2,0,0,42,0,0,0,180,0,0,0,182,1,0,0,80,2,0,0,128,0,0,0,142,1,0,0,32,2,0,0,190,1,0,0,140,6,0,0,186,4,0,0,202,0,0,0,192,0,0,0,128,3,0,0,4,9,0,0,182,5,0,0,94,0,0,0,52,0,0,0,50,4,0,0,164,3,0,0,136,0,0,0,68,0,0,0,100,1,0,0,82,3,0,0,218,1,0,0,52,1,0,0,98,0,0,0,74,1,0,0,46,0,0,0,50,7,0,0,50,9,0,0,126,9,0,0,94,1,0,0,32,3,0,0,88,0,0,0,88,0,0,0,42,0,0,0,174,6,0,0,114,5,0,0,60,1,0,0,62,6,0,0,180,4,0,0,72,1,0,0,148,2,0,0,92,6,0,0,152,0,0,0,174,5,0,0,6,6,0,0,22,3,0,0,140,7,0,0,64,6,0,0,6,1,0,0,22,2,0,0,216,0,0,0,174,1,0,0,96,6,0,0,132,0,0,0,150,4,0,0,126,6,0,0,246,0,0,0,2,5,0,0,128,1,0,0,72,0,0,0,226,0,0,0,54,5,0,0,162,7,0,0,152,0,0,0,90,0,0,0,210,0,0,0,160,1,0,0,42,0,0,0,46,0,0,0,170,5,0,0,192,1,0,0,44,0,0,0,56,0,0,0,228,2,0,0,46,0,0,0,60,0,0,0,246,1,0,0,52,0,0,0,56,5,0,0,94,1,0,0,156,2,0,0,110,5,0,0,98,9,0,0,48,4,0,0,78,0,0,0,222,1,0,0,138,1,0,0,88,2,0,0,186,1,0,0,176,2,0,0,188,6,0,0,84,0,0,0,240,0,0,0,170,0,0,0,78,0,0,0,210,1,0,0,58,0,0,0,18,2,0,0,84,0,0,0,106,10,0,0,122,4,0,0,100,0,0,0,180,6,0,0,46,2,0,0,206,0,0,0,44,0,0,0,26,5,0,0,172,10,0,0,168,7,0,0,102,2,0,0,208,0,0,0,82,1,0,0,170,2,0,0,252,0,0,0,44,0,0,0,160,1,0,0,60,0,0,0,106,3,0,0,142,2,0,0,62,4,0,0,80,0,0,0,118,9,0,0,120,0,0,0,108,6,0,0,122,3,0,0,58,7,0,0,124,0,0,0,132,2,0,0,244,0,0,0,92,2,0,0,208,1,0,0,114,2,0,0,160,0,0,0,122,2,0,0,108,1,0,0,160,6,0,0,134,0,0,0,148,2,0,0,236,7,0,0,148,5,0,0,160,1,0,0,150,2,0,0,138,3,0,0,140,4,0,0,12,5,0,0,52,5,0,0,174,8,0,0,54,2,0,0,186,5,0,0,52,0,0,0,26,4,0,0,42,0,0,0,42,0,0,0,148,1,0,0,34,4,0,0,56,0,0,0,132,1,0,0,10,7,0,0,158,0,0,0,42,1,0,0,104,1,0,0,54,6,0,0,236,0,0,0,82,1,0,0,14,1,0,0,156,3,0,0,52,0,0,0,148,8,0,0,110,3,0,0,242,8,0,0,218,1,0,0,104,0,0,0,150,4,0,0,122,8,0,0,180,1,0,0,200,6,0,0,104,2,0,0,98,0,0,0,158,7,0,0,92,2,0,0,84,0,0,0,142,1,0,0,200,3,0,0,138,2,0,0,140,3,0,0,2,5,0,0,182,1,0,0,148,6,0,0,202,0,0,0,74,0,0,0,62,0,0,0,106,5,0,0,208,2,0,0,222,0,0,0,86,0,0,0,102,0,0,0,128,3,0,0,52,3,0,0,216,7,0,0,130,1,0,0,42,0,0,0,126,1,0,0,172,0,0,0,222,0,0,0,44,8,0,0,144,10,0,0,184,1,0,0,202,0,0,0,148,0,0,0,50,3,0,0,88,4,0,0,46,3,0,0,176,2,0,0,180,2,0,0,254,2,0,0,50,8,0,0,72,5,0,0,100,7,0,0,28,6,0,0,188,9,0,0,30,1,0,0,132,3,0,0,52,5,0,0,238,2,0,0,88,0,0,0,160,0,0,0,186,0,0,0,112,0,0,0,192,9,0,0,156,5,0,0,62,3,0,0,190,5,0,0,232,1,0,0,194,6,0,0,80,5,0,0,174,1,0,0,176,1,0,0,236,0,0,0,52,0,0,0,228,6,0,0,238,1,0,0,206,3,0,0,88,0,0,0,164,2,0,0,98,1,0,0,200,6,0,0,42,4,0,0,180,1,0,0,40,1,0,0,100,1,0,0,170,1,0,0,148,10,0,0,96,5,0,0,50,0,0,0,92,5,0,0,50,0,0,0,170,0,0,0,64,4,0,0,224,0,0,0,60,2,0,0,66,6,0,0,86,5,0,0,206,0,0,0,96,1,0,0,172,2,0,0,140,0,0,0,60,0,0,0,50,0,0,0,98,1,0,0,200,1,0,0,96,0,0,0,160,1,0,0,104,4,0,0,46,0,0,0,82,0,0,0,194,0,0,0,138,10,0,0,136,0,0,0,50,2,0,0,58,0,0,0,226,1,0,0,106,0,0,0,230,1,0,0,94,0,0,0,44,2,0,0,0,1,0,0,178,2,0,0,16,5,0,0,62,0,0,0,188,10,0,0,158,0,0,0,58,0,0,0,128,0,0,0,90,3,0,0,22,3,0,0,96,0,0,0,252,2,0,0,80,0,0,0,252,1,0,0,42,8,0,0,164,7,0,0,90,0,0,0,58,0,0,0,50,0,0,0,46,0,0,0,202,2,0,0,240,3,0,0,50,1,0,0,124,1,0,0,70,5,0,0,168,1,0,0,216,8,0,0,138,0,0,0,14,2,0,0,190,3,0,0,62,6,0,0,132,7,0,0,6,5,0,0,142,5,0,0,76,0,0,0,4,1,0,0,226,1,0,0,162,0,0,0,46,0,0,0,120,0,0,0,104,0,0,0,76,0,0,0,200,1,0,0,100,3,0,0,128,0,0,0,114,10,0,0,28,1,0,0,168,4,0,0,50,0,0,0,12,10,0,0,4,3,0,0,62,2,0,0,28,3,0,0,106,0,0,0,38,1,0,0,214,1,0,0,168,9,0,0,144,0,0,0,224,8,0,0,128,0,0,0,218,3,0,0,246,0,0,0,242,0,0,0,168,3,0,0,204,0,0,0,174,0,0,0,192,1,0,0,70,0,0,0,204,5,0,0,180,10,0,0,154,0,0,0,108,7,0,0,182,2,0,0,102,2,0,0,140,0,0,0,230,1,0,0,10,4,0,0,58,6,0,0,50,1,0,0,2,2,0,0,90,1,0,0,156,4,0,0,146,0,0,0,26,3,0,0,188,2,0,0,96,0,0,0,244,1,0,0,160,9,0,0,242,0,0,0,82,0,0,0,234,8,0,0,68,2,0,0,158,1,0,0,48,0,0,0,42,0,0,0,44,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,44,0,0,0,42,0,0,0,178,0,0,0,210,8,0,0,46,0,0,0,126,0,0,0,104,0,0,0,44,0,0,0,42,0,0,0,28,1,0,0,78,0,0,0,60,6,0,0,42,0,0,0,42,0,0,0,42,0,0,0,232,2,0,0,48,0,0,0,24,2,0,0,82,2,0,0,200,0,0,0,186,0,0,0,124,0,0,0,8,5,0,0,144,6,0,0,66,3,0,0,84,2,0,0,106,3,0,0,134,5,0,0,146,1,0,0,98,0,0,0,86,0,0,0,138,3,0,0,86,0,0,0,186,0,0,0,110,1,0,0,116,1,0,0,148,0,0,0,252,8,0,0,202,1,0,0,116,0,0,0,152,2,0,0,178,3,0,0,124,4,0,0,32,3,0,0,154,6,0,0,78,0,0,0,102,1,0,0,18,1,0,0,28,1,0,0,40,10,0,0,216,0,0,0,52,0,0,0,152,5,0,0,50,3,0,0,98,5,0,0,176,0,0,0,126,2,0,0,148,0,0,0,158,2,0,0,232,2,0,0,142,0,0,0,224,2,0,0,46,0,0,0,182,0,0,0,170,1,0,0,208,1,0,0,32,4,0,0,126,5,0,0,172,4,0,0,112,4,0,0,52,0,0,0,158,0,0,0,116,0,0,0,44,0,0,0,140,1,0,0,132,6,0,0,96,0,0,0,50,6,0,0,200,5,0,0,144,1,0,0,120,1,0,0,16,9,0,0,158,4,0,0,252,2,0,0,108,3,0,0,72,2,0,0,192,5,0,0,102,6,0,0,44,9,0,0,38,4,0,0,188,1,0,0,146,3,0,0,102,3,0,0,0,5,0,0,100,0,0,0,154,1,0,0,220,2,0,0,102,6,0,0,196,5,0,0,20,3,0,0,26,1,0,0,104,2,0,0,204,6,0,0,216,1,0,0,192,4,0,0,128,1,0,0,94,0,0,0,60,0,0,0,12,1,0,0,20,4,0,0,210,0,0,0,34,1,0,0,80,1,0,0,110,0,0,0,68,0,0,0,56,2,0,0,106,1,0,0,234,4,0,0,114,0,0,0,90,0,0,0,100,1,0,0,90,0,0,0,152,4,0,0,36,10,0,0,100,0,0,0,92,3,0,0,80,0,0,0,52,0,0,0,44,0,0,0,44,0,0,0,60,7,0,0,44,0,0,0,154,1,0,0,134,0,0,0,86,1,0,0,156,0,0,0,108,1,0,0,106,0,0,0,72,0,0,0,108,0,0,0,220,2,0,0,162,0,0,0,4,1,0,0,48,0,0,0,212,1,0,0,50,0,0,0,198,2,0,0,162,1,0,0,94,5,0,0,80,1,0,0,48,0,0,0,146,0,0,0,82,1,0,0,138,0,0,0,100,0,0,0,10,3,0,0,106,2,0,0,84,0,0,0,156,0,0,0,22,4,0,0,12,3,0,0,226,9,0,0,72,2,0,0,218,3,0,0,170,9,0,0,122,7,0,0,162,2,0,0,202,3,0,0,16,4,0,0,208,2,0,0,60,5,0,0,206,1,0,0,0,1,0,0,148,2,0,0,86,0,0,0,162,4,0,0,10,3,0,0,192,3,0,0,224,4,0,0,252,6,0,0,86,0,0,0,74,4,0,0,114,1,0,0,168,1,0,0,240,5,0,0,116,1,0,0,22,2,0,0,170,4,0,0,44,0,0,0,36,1,0,0,0,1,0,0,88,0,0,0,108,0,0,0,178,4,0,0,202,0,0,0,156,4,0,0,50,4,0,0,108,0,0,0,50,0,0,0,42,0,0,0,158,0,0,0,212,1,0,0,244,0,0,0,166,0,0,0,68,9,0,0,214,0,0,0,140,5,0,0,86,4,0,0,68,0,0,0,216,2,0,0,186,4,0,0,150,0,0,0,4,5,0,0,196,0,0,0,102,8,0,0,52,0,0,0,46,0,0,0,50,0,0,0,240,4,0,0,108,5,0,0,208,6,0,0,204,1,0,0,232,1,0,0,68,5,0,0,94,5,0,0,124,1,0,0,214,10,0,0,206,0,0,0,178,3,0,0,42,0,0,0,146,1,0,0,58,2,0,0,64,3,0,0,154,0,0,0,48,6,0,0,184,1,0,0,236,5,0,0,92,5,0,0,38,8,0,0,166,3,0,0,246,0,0,0,252,0,0,0,102,0,0,0,40,5,0,0,108,0,0,0,72,0,0,0,106,0,0,0,78,0,0,0,48,0,0,0,126,4,0,0,76,4,0,0,54,0,0,0,178,0,0,0,66,0,0,0,142,1,0,0,4,6,0,0,26,5,0,0,112,1,0,0,100,6,0,0,148,1,0,0,178,2,0,0,166,0,0,0,166,0,0,0,58,1,0,0,32,1,0,0,242,1,0,0,84,0,0,0,160,3,0,0,220,1,0,0,146,5,0,0,156,1,0,0,100,0,0,0,188,4,0,0,144,0,0,0,88,0,0,0,222,0,0,0,230,0,0,0,210,1,0,0,56,0,0,0,238,0,0,0,174,0,0,0,174,0,0,0,62,0,0,0,56,0,0,0,46,0,0,0,44,0,0,0,42,0,0,0,148,0,0,0,154,1,0,0,252,1,0,0,58,0,0,0,40,4,0,0,68,0,0,0,44,0,0,0,218,1,0,0,154,0,0,0,156,0,0,0,234,6,0,0,44,0,0,0,42,0,0,0,160,3,0,0,202,0,0,0,214,3,0,0,82,10,0,0,66,0,0,0,42,10,0,0,78,5,0,0,146,0,0,0,246,4,0,0,188,2,0,0,56,0,0,0,102,0,0,0,208,8,0,0,90,2,0,0,82,0,0,0,12,1,0,0,26,1,0,0,88,0,0,0,118,1,0,0,254,1,0,0,46,0,0,0,186,0,0,0,180,0,0,0,52,0,0,0,42,0,0,0,42,0,0,0,140,6,0,0,128,5,0,0,58,0,0,0,18,1,0,0,46,7,0,0,20,3,0,0,124,1,0,0,2,1,0,0,112,0,0,0,48,0,0,0,48,0,0,0,126,6,0,0,22,1,0,0,126,0,0,0,56,3,0,0,28,7,0,0,118,5,0,0,74,0,0,0,54,0,0,0,42,0,0,0,212,9,0,0,78,1,0,0,82,0,0,0,8,2,0,0,50,10,0,0,14,3,0,0,224,1,0,0,150,0,0,0,236,6,0,0,100,1,0,0,64,3,0,0,62,0,0,0,54,0,0,0,48,0,0,0,60,0,0,0,48,0,0,0,46,0,0,0,194,10,0,0,176,3,0,0,50,0,0,0,186,2,0,0,246,1,0,0,128,0,0,0,230,2,0,0,230,2,0,0,164,6,0,0,184,1,0,0,12,1,0,0,78,2,0,0,78,2,0,0,82,0,0,0,114,0,0,0,42,0,0,0,250,1,0,0,254,1,0,0,42,0,0,0,152,1,0,0,144,0,0,0,124,0,0,0,106,1,0,0,10,1,0,0,56,0,0,0,142,3,0,0,156,8,0,0,94,4,0,0,64,0,0,0,116,1,0,0,216,0,0,0,12,2,0,0,14,6,0,0,138,1,0,0,14,1,0,0,70,0,0,0,58,1,0,0,140,1,0,0,198,1,0,0,88,0,0,0,74,1,0,0,180,0,0,0,254,0,0,0,72,1,0,0,112,1,0,0,104,0,0,0,238,1,0,0,146,9,0,0,248,0,0,0,56,1,0,0,52,1,0,0,238,1,0,0,112,0,0,0,64,0,0,0,172,4,0,0,90,0,0,0,128,0,0,0,166,1,0,0,254,0,0,0,126,4,0,0,44,3,0,0,76,10,0,0,84,0,0,0,64,1,0,0,214,1,0,0,54,0,0,0,106,4,0,0,242,1,0,0,154,0,0,0,106,1,0,0,204,0,0,0,158,0,0,0,178,4,0,0,210,0,0,0,234,1,0,0,76,0,0,0,242,4,0,0,30,2,0,0,250,5,0,0,222,2,0,0,42,2,0,0,10,1,0,0,104,1,0,0,174,0,0,0,216,4,0,0,54,7,0,0,86,1,0,0,144,1,0,0,182,1,0,0,100,9,0,0,50,0,0,0,98,0,0,0,158,1,0,0,58,0,0,0,172,0,0,0,62,0,0,0,118,1,0,0,218,9,0,0,70,0,0,0,244,7,0,0,226,0,0,0,250,5,0,0,64,0,0,0,164,0,0,0,112,4,0,0,208,1,0,0,110,5,0,0,20,1,0,0,140,1,0,0,212,0,0,0,46,0,0,0,44,3,0,0,224,9,0,0,244,0,0,0,0,1,0,0,42,0,0,0,16,4,0,0,212,0,0,0,158,1,0,0,82,0,0,0,52,2,0,0,238,0,0,0,134,4,0,0,230,1,0,0,174,5,0,0,66,2,0,0,64,0,0,0,192,1,0,0,220,4,0,0,56,6,0,0,32,10,0,0,218,2,0,0,242,2,0,0,202,0,0,0,202,5,0,0,54,0,0,0,42,3,0,0,132,1,0,0,214,2,0,0,38,2,0,0,86,0,0,0,24,9,0,0,78,5,0,0,152,2,0,0,82,0,0,0,184,1,0,0,162,1,0,0,200,0,0,0,164,5,0,0,128,1,0,0,224,0,0,0,170,8,0,0,20,9,0,0,110,0,0,0,80,4,0,0,222,0,0,0,8,10,0,0,114,0,0,0,68,1,0,0,0,5,0,0,48,5,0,0,34,1,0,0,42,0,0,0,42,0,0,0,188,3,0,0,136,0,0,0,160,4,0,0,164,6,0,0,128,2,0,0,80,10,0,0,200,2,0,0,14,7,0,0,44,0,0,0,44,0,0,0,6,2,0,0,62,1,0,0,92,0,0,0,214,1,0,0,254,0,0,0,224,0,0,0,158,8,0,0,124,5,0,0,120,6,0,0,150,6,0,0,104,0,0,0,172,8,0,0,92,1,0,0,136,7,0,0,226,8,0,0,176,8,0,0,180,4,0,0,102,2,0,0,128,0,0,0,54,5,0,0,74,3,0,0,74,0,0,0,188,1,0,0,52,1,0,0,18,2,0,0,182,0,0,0,122,1,0,0,80,5,0,0,216,3,0,0,246,0,0,0,124,10,0,0,76,0,0,0,100,0,0,0,142,10,0,0,178,8,0,0,126,2,0,0,24,2,0,0,66,5,0,0,130,1,0,0,162,2,0,0,226,4,0,0,70,0,0,0,98,4,0,0,230,0,0,0,124,6,0,0,98,3,0,0,48,4,0,0,104,4,0,0,120,0,0,0,30,4,0,0,58,1,0,0,202,6,0,0,82,8,0,0,54,10,0,0,236,2,0,0,10,1,0,0,68,2,0,0,94,1,0,0,158,0,0,0,142,4,0,0,236,3,0,0,60,1,0,0,184,3,0,0,16,2,0,0,174,1,0,0,72,3,0,0,24,2,0,0,208,5,0,0,34,5,0,0,104,1,0,0,208,1,0,0,80,3,0,0,250,0,0,0,236,0,0,0,160,2,0,0,172,0,0,0,240,0,0,0,88,1,0,0,218,0,0,0,204,4,0,0,196,3,0,0,218,2,0,0,66,0,0,0,50,0,0,0,56,0,0,0,238,8,0,0,48,6,0,0,118,4,0,0,54,1,0,0,48,5,0,0,116,0,0,0,54,6,0,0,14,5,0,0,74,0,0,0,248,5,0,0,226,5,0,0,42,0,0,0,218,2,0,0,220,0,0,0,234,0,0,0,50,0,0,0,44,0,0,0,46,0,0,0,44,1,0,0,30,7,0,0,110,4,0,0,166,1,0,0,180,3,0,0,0,10,0,0,214,0,0,0,16,2,0,0,122,1,0,0,224,1,0,0,60,2,0,0,74,1,0,0,46,0,0,0,222,10,0,0,134,0,0,0,192,4,0,0,106,0,0,0,178,1,0,0,98,1,0,0,46,0,0,0,42,6,0,0,162,0,0,0,12,1,0,0,108,0,0,0,52,0,0,0,72,0,0,0,174,4,0,0,66,1,0,0,154,7,0,0,78,0,0,0,116,0,0,0,144,0,0,0,186,2,0,0,252,0,0,0,68,1,0,0,64,0,0,0,212,5,0,0,110,6,0,0,170,0,0,0,184,6,0,0,102,0,0,0,70,2,0,0,50,0,0,0,52,2,0,0,132,3,0,0,96,1,0,0,46,1,0,0,8,1,0,0,118,3,0,0,102,1,0,0,114,7,0,0,84,0,0,0,206,1,0,0,196,6,0,0,112,2,0,0,46,0,0,0,76,0,0,0,46,6,0,0,100,2,0,0,6,6,0,0,112,1,0,0,216,0,0,0,44,1,0,0,226,0,0,0,106,0,0,0,114,2,0,0,120,0,0,0,158,1,0,0,40,1,0,0,210,2,0,0,244,0,0,0,252,1,0,0,70,0,0,0,162,2,0,0,48,2,0,0,14,2,0,0,192,2,0,0,104,1,0,0,202,1,0,0,218,0,0,0,132,0,0,0,40,1,0,0,140,0,0,0,196,0,0,0,186,7,0,0,118,0,0,0,10,2,0,0,226,2,0,0,196,1,0,0,36,1,0,0,32,1,0,0,20,1,0,0,196,2,0,0,206,8,0,0,216,1,0,0,46,1,0,0,190,0,0,0,174,0,0,0,186,1,0,0,166,0,0,0,136,0,0,0,20,2,0,0,216,4,0,0,98,2,0,0,224,0,0,0,176,0,0,0,84,5,0,0,250,0,0,0,120,1,0,0,164,2,0,0,116,0,0,0,92,0,0,0,126,2,0,0,202,1,0,0,158,3,0,0,66,0,0,0,188,8,0,0,32,1,0,0,166,2,0,0,172,6,0,0,172,1,0,0,80,1,0,0,200,1,0,0,104,1,0,0,140,0,0,0,238,3,0,0,114,4,0,0,240,9,0,0,180,0,0,0,234,1,0,0,82,1,0,0,236,3,0,0,242,1,0,0,8,1,0,0,252,2,0,0,24,8,0,0,94,0,0,0,206,7,0,0,234,5,0,0,204,0,0,0,104,6,0,0,58,3,0,0,126,0,0,0,208,9,0,0,178,1,0,0,236,0,0,0,108,0,0,0,108,2,0,0,138,3,0,0,136,0,0,0,68,2,0,0,192,0,0,0,150,0,0,0,146,10,0,0,232,2,0,0,54,2,0,0,194,0,0,0,86,1,0,0,208,6,0,0,100,0,0,0,66,0,0,0,118,3,0,0,44,1,0,0,52,0,0,0,116,0,0,0,138,6,0,0,74,0,0,0,246,8,0,0,72,10,0,0,56,0,0,0,114,6,0,0,232,0,0,0,12,1,0,0,116,3,0,0,136,2,0,0,120,10,0,0,150,2,0,0,72,0,0,0,80,0,0,0,212,8,0,0,242,9,0,0,104,0,0,0,8,4,0,0,54,0,0,0,78,3,0,0,250,0,0,0,50,5,0,0,70,9,0,0,44,2,0,0,44,0,0,0,42,4,0,0,50,0,0,0,62,0,0,0,124,3,0,0,78,0,0,0,248,5,0,0,142,0,0,0,46,0,0,0,60,4,0,0,60,8,0,0,90,7,0,0,204,5,0,0,232,0,0,0,242,0,0,0,238,0,0,0,188,5,0,0,46,1,0,0,60,0,0,0,58,1,0,0,194,1,0,0,134,2,0,0,76,0,0,0,252,0,0,0,60,3,0,0,162,0,0,0,228,0,0,0,50,1,0,0,170,0,0,0,136,1,0,0,128,1,0,0,58,0,0,0,116,0,0,0,222,2,0,0,32,6,0,0,58,1,0,0,128,4,0,0,6,1,0,0,172,1,0,0,230,1,0,0,30,2,0,0,70,0,0,0,74,0,0,0,198,1,0,0,112,5,0,0,222,5,0,0,82,0,0,0,52,0,0,0,164,0,0,0,216,1,0,0,48,1,0,0,44,1,0,0,96,1,0,0,60,0,0,0,82,6,0,0,184,8,0,0,98,0,0,0,60,0,0,0,238,1,0,0,58,0,0,0,2,6,0,0,94,2,0,0,58,0,0,0,180,7,0,0,54,4,0,0,240,8,0,0,72,0,0,0,44,0,0,0,42,6,0,0,44,2,0,0,254,0,0,0,144,1,0,0,66,0,0,0,70,0,0,0,38,9,0,0,234,0,0,0,218,0,0,0,40,2,0,0,162,1,0,0,86,0,0,0,108,0,0,0,214,1,0,0,52,0,0,0,62,0,0,0,232,0,0,0,46,4,0,0,60,4,0,0,160,1,0,0,32,1,0,0,30,6,0,0,70,0,0,0,90,1,0,0,74,3,0,0,128,8,0,0,126,0,0,0,24,4,0,0,174,0,0,0,144,0,0,0,248,0,0,0,28,2,0,0,74,2,0,0,74,2,0,0,4,2,0,0,30,1,0,0,168,0,0,0,210,1,0,0,226,1,0,0,8,9,0,0,64,0,0,0,64,0,0,0,248,1,0,0,126,1,0,0,120,3,0,0,12,6,0,0,156,9,0,0,50,0,0,0,210,2,0,0,238,6,0,0,102,1,0,0,204,7,0,0,168,1,0,0,202,5,0,0,76,5,0,0,164,0,0,0,118,3,0,0,234,0,0,0,38,5,0,0,84,2,0,0,32,9,0,0,248,0,0,0,218,10,0,0,22,6,0,0,234,2,0,0,18,5,0,0,216,0,0,0,54,1,0,0,24,2,0,0,6,2,0,0,44,0,0,0,68,8,0,0,182,0,0,0,24,7,0,0,90,6,0,0,46,0,0,0,68,0,0,0,52,0,0,0,178,0,0,0,8,6,0,0,16,2,0,0,34,1,0,0,90,0,0,0,104,0,0,0,130,9,0,0,176,1,0,0,244,4,0,0,184,0,0,0,64,8,0,0,212,1,0,0,192,0,0,0,46,0,0,0,44,0,0,0,86,0,0,0,140,0,0,0,184,6,0,0,170,0,0,0,128,1,0,0,88,3,0,0,176,1,0,0,180,0,0,0,82,0,0,0,112,0,0,0,34,1,0,0,18,10,0,0,54,2,0,0,230,3,0,0,212,4,0,0,252,0,0,0,166,8,0,0,128,3,0,0,210,0,0,0,250,1,0,0,110,0,0,0,200,2,0,0,144,4,0,0,106,2,0,0,168,2,0,0,114,6,0,0,150,2,0,0,38,3,0,0,58,2,0,0,164,0,0,0,252,4,0,0,46,3,0,0,192,1,0,0,188,1,0,0,4,1,0,0,156,0,0,0,20,1,0,0,122,0,0,0,46,0,0,0,42,0,0,0,130,0,0,0,92,1,0,0,50,0,0,0,116,4,0,0,78,0,0,0,84,1,0,0,62,0,0,0,50,2,0,0,86,0,0,0,250,1,0,0,42,0,0,0,74,2,0,0,194,2,0,0,152,2,0,0,90,2,0,0,62,0,0,0,128,2,0,0,62,1,0,0,206,2,0,0,4,1,0,0,54,0,0,0,38,4,0,0,72,0,0,0,160,0,0,0,58,5,0,0,252,0,0,0,158,1,0,0,100,1,0,0,44,0,0,0,230,0,0,0,152,0,0,0,222,4,0,0,170,10,0,0,146,0,0,0,42,0,0,0,130,0,0,0,128,0,0,0,200,1,0,0,46,10,0,0,76,0,0,0,56,5,0,0,118,0,0,0,244,6,0,0,156,1,0,0,60,6,0,0,228,2,0,0,198,0,0,0,204,2,0,0,120,0,0,0,134,4,0,0,80,0,0,0,92,0,0,0,168,1,0,0,84,0,0,0,152,10,0,0,42,0,0,0,46,2,0,0,134,9,0,0,210,1,0,0,26,1,0,0,48,0,0,0,80,0,0,0,178,0,0,0,112,0,0,0,76,3,0,0,214,5,0,0,206,0,0,0,58,0,0,0,172,2,0,0,160,2,0,0,70,0,0,0,110,0,0,0,40,2,0,0,226,6,0,0,52,8,0,0,202,6,0,0,186,9,0,0,202,1,0,0,48,0,0,0,48,0,0,0,210,0,0,0,152,1,0,0,40,2,0,0,58,0,0,0,76,4,0,0,132,1,0,0,122,1,0,0,36,2,0,0,130,0,0,0,90,9,0,0,78,1,0,0,10,5,0,0,116,9,0,0,16,1,0,0,190,0,0,0,8,1,0,0,236,8,0,0,152,9,0,0,130,1,0,0,126,1,0,0,138,1,0,0,154,0,0,0,76,1,0,0,228,0,0,0,54,0,0,0,190,6,0,0,128,9,0,0,36,8,0,0,30,10,0,0,242,2,0,0,104,0,0,0,44,10,0,0,182,5,0,0,230,0,0,0,62,9,0,0,144,1,0,0,146,2,0,0,104,1,0,0,80,8,0,0,72,0,0,0,38,3,0,0,60,3,0,0,194,0,0,0,2,2,0,0,70,0,0,0,112,9,0,0,118,7,0,0,194,2,0,0,54,1,0,0,246,5,0,0,38,1,0,0,198,0,0,0,8,3,0,0,250,1,0,0,12,3,0,0,116,1,0,0,188,0,0,0,94,0,0,0,38,2,0,0,64,1,0,0,222,8,0,0,88,0,0,0,114,1,0,0,64,0,0,0,102,0,0,0,198,7,0,0,154,1,0,0,26,8,0,0,60,1,0,0,144,0,0,0,162,2,0,0,52,7,0,0,94,10,0,0,42,0,0,0,46,6,0,0,236,1,0,0,84,0,0,0,108,8,0,0,214,9,0,0,204,10,0,0,14,2,0,0,56,7,0,0,218,8,0,0,124,1,0,0,94,1,0,0,72,2,0,0,222,1,0,0,132,0,0,0,94,8,0,0,68,2,0,0,104,0,0,0,248,0,0,0,96,0,0,0,46,0,0,0,208,2,0,0,30,5,0,0,158,0,0,0,54,0,0,0,164,5,0,0,228,8,0,0,60,3,0,0,120,0,0,0,92,0,0,0,2,8,0,0,160,1,0,0,210,2,0,0,208,0,0,0,142,5,0,0,136,1,0,0,128,6,0,0,46,0,0,0,42,0,0,0,42,2,0,0,82,0,0,0,102,0,0,0,100,0,0,0,94,0,0,0,134,0,0,0,166,1,0,0,122,0,0,0,132,0,0,0,82,1,0,0,16,2,0,0,2,1,0,0,54,1,0,0,252,0,0,0,82,0,0,0,46,0,0,0,44,0,0,0,86,0,0,0,76,2,0,0,124,1,0,0,106,6,0,0,128,2,0,0,140,0,0,0,132,8,0,0,26,7,0,0,202,4,0,0,126,2,0,0,176,0,0,0,254,2,0,0,78,1,0,0,108,6,0,0,186,0,0,0,122,0,0,0,184,5,0,0,80,2,0,0,236,0,0,0,4,1,0,0,52,0,0,0,238,7,0,0,58,8,0,0,90,1,0,0,82,0,0,0,16,3,0,0,82,0,0,0,4,7,0,0,74,8,0,0,212,0,0,0,52,10,0,0,20,3,0,0,10,2,0,0,50,0,0,0,106,5,0,0,124,0,0,0,138,1,0,0,92,3,0,0,56,0,0,0,34,2,0,0,44,0,0,0,94,7,0,0,158,3,0,0,78,8,0,0,210,9,0,0,206,1,0,0,176,0,0,0,94,0,0,0,244,3,0,0,126,1,0,0,176,1,0,0,106,1,0,0,200,4,0,0,102,1,0,0,112,3,0,0,42,0,0,0,158,4,0,0,208,2,0,0,42,3,0,0,22,5,0,0,254,7,0,0,226,4,0,0,146,4,0,0,244,1,0,0,18,8,0,0,0,7,0,0,232,3,0,0,48,7,0,0,186,1,0,0,188,5,0,0,152,6,0,0,62,0,0,0,72,1,0,0,14,5,0,0,112,1,0,0,166,1,0,0,162,5,0,0,244,1,0,0,36,3,0,0,64,7,0,0,82,5,0,0,100,8,0,0,134,8,0,0,124,0,0,0,244,3,0,0,104,6,0,0,250,4,0,0,46,0,0,0,110,10,0,0,86,8,0,0,138,1,0,0,234,1,0,0,214,1,0,0,76,0,0,0,188,0,0,0,34,10,0,0,236,5,0,0,20,2,0,0,74,2,0,0,42,0,0,0,218,0,0,0,70,2,0,0,104,0,0,0,160,2,0,0,218,4,0,0,118,2,0,0,38,6,0,0,64,0,0,0,108,3,0,0,78,6,0,0,82,9,0,0,210,3,0,0,46,3,0,0,28,5,0,0,212,1,0,0,202,4,0,0,82,0,0,0,28,2,0,0,250,0,0,0,86,0,0,0,102,0,0,0,126,0,0,0,180,1,0,0,214,3,0,0,234,0,0,0,48,1,0,0,200,10,0,0,82,1,0,0,126,1,0,0,208,3,0,0,44,0,0,0,56,0,0,0,252,7,0,0,124,6,0,0,50,1,0,0,76,1,0,0,84,4,0,0,78,0,0,0,232,1,0,0,104,0,0,0,0,8,0,0,82,0,0,0,168,5,0,0,228,0,0,0,192,2,0,0,142,0,0,0,94,0,0,0,24,6,0,0,48,0,0,0,48,0,0,0,44,0,0,0,40,6,0,0,176,5,0,0,118,0,0,0,44,6,0,0,18,3,0,0,90,3,0,0,218,5,0,0,14,1,0,0,48,0,0,0,110,8,0,0,88,2,0,0,194,5,0,0,240,7,0,0,54,0,0,0,120,9,0,0,138,0,0,0,206,1,0,0,166,1,0,0,74,1,0,0,50,2,0,0,60,0,0,0,116,0,0,0,250,0,0,0,138,0,0,0,206,5,0,0,134,1,0,0,170,0,0,0,70,0,0,0,34,7,0,0,128,4,0,0,96,0,0,0,110,1,0,0,40,1,0,0,30,3,0,0,26,10,0,0,208,7,0,0,230,4,0,0,98,1,0,0,138,4,0,0,100,5,0,0,184,0,0,0,62,1,0,0,100,0,0,0,154,9,0,0,236,1,0,0,184,4,0,0,162,3,0,0,104,1,0,0,254,3,0,0,62,1,0,0,36,1,0,0,50,5,0,0,236,9,0,0,208,0,0,0,206,5,0,0,194,1,0,0,86,3,0,0,134,0,0,0,224,4,0,0,130,0,0,0,50,3,0,0,122,2,0,0,132,0,0,0,46,0,0,0,198,2,0,0,182,4,0,0,96,0,0,0,72,5,0,0,112,0,0,0,50,0,0,0,42,0,0,0,42,0,0,0,220,0,0,0,240,2,0,0,144,2,0,0,64,9,0,0,190,1,0,0,76,3,0,0,60,0,0,0,156,1,0,0,16,6,0,0,74,0,0,0,6,9,0,0,182,0,0,0,228,4,0,0,14,4,0,0,186,2,0,0,50,0,0,0,136,1,0,0,142,4,0,0,44,0,0,0,68,0,0,0,150,0,0,0,110,0,0,0,20,5,0,0,66,0,0,0,166,0,0,0,122,0,0,0,40,6,0,0,142,0,0,0,190,0,0,0,76,2,0,0,166,0,0,0,114,5,0,0,132,2,0,0,100,10,0,0,20,1,0,0,38,1,0,0,136,10,0,0,32,2,0,0,8,7,0,0,34,1,0,0,72,6,0,0,118,2,0,0,216,0,0,0,92,0,0,0,102,4,0,0,182,7,0,0,226,5,0,0,58,10,0,0,28,3,0,0,8,4,0,0,168,1,0,0,240,1,0,0,190,7,0,0,130,0,0,0,76,3,0,0,138,2,0,0,136,3,0,0,222,0,0,0,20,8,0,0,56,0,0,0,30,1,0,0,18,6,0,0,254,1,0,0,52,0,0,0,110,0,0,0,76,1,0,0,130,0,0,0,220,1,0,0,212,2,0,0,8,1,0,0,162,10,0,0,66,8,0,0,142,7,0,0,58,0,0,0,68,2,0,0,218,4,0,0,102,9,0,0,12,6,0,0,76,0,0,0,56,4,0,0,238,0,0,0,48,0,0,0,162,8,0,0,198,5,0,0,150,5,0,0,156,0,0,0,52,3,0,0,102,0,0,0,188,0,0,0,82,3,0,0,54,1,0,0,160,8,0,0,52,2,0,0,96,1,0,0,94,0,0,0,94,0,0,0,204,1,0,0,172,6,0,0,232,1,0,0,176,7,0,0,2,1,0,0,218,1,0,0,122,0,0,0,212,3,0,0,66,0,0,0,154,3,0,0,168,5,0,0,102,1,0,0,20,4,0,0,178,7,0,0,218,0,0,0,22,8,0,0,248,0,0,0,162,4,0,0,182,3,0,0,146,8,0,0,134,5,0,0,70,0,0,0,58,0,0,0,114,0,0,0,226,0,0,0,50,0,0,0,86,0,0,0,198,10,0,0,240,1,0,0,174,1,0,0,22,10,0,0,232,0,0,0,76,0,0,0,150,0,0,0,212,0,0,0,174,0,0,0,50,6,0,0,126,0,0,0,84,5,0,0,8,1,0,0,228,1,0,0,180,3,0,0,108,0,0,0,80,0,0,0,58,0,0,0,42,0,0,0,42,0,0,0,8,6,0,0,30,3,0,0,74,0,0,0,18,2,0,0,58,0,0,0,98,2,0,0,96,1,0,0,42,0,0,0,42,0,0,0,120,2,0,0,176,3,0,0,148,0,0,0,210,3,0,0,170,4,0,0,96,0,0,0,118,0,0,0,174,1,0,0,68,1,0,0,246,1,0,0,70,7,0,0,148,0,0,0,34,9,0,0,156,1,0,0,188,6,0,0].concat([200,2,0,0,98,0,0,0,26,2,0,0,98,0,0,0,222,0,0,0,172,3,0,0,196,7,0,0,104,9,0,0,240,4,0,0,152,1,0,0,70,2,0,0,156,1,0,0,242,0,0,0,14,6,0,0,178,0,0,0,30,2,0,0,160,0,0,0,86,1,0,0,104,3,0,0,214,0,0,0,74,6,0,0,140,1,0,0,52,0,0,0,44,0,0,0,240,0,0,0,66,1,0,0,232,6,0,0,62,0,0,0,100,2,0,0,238,0,0,0,44,0,0,0,80,4,0,0,168,3,0,0,198,4,0,0,56,2,0,0,114,0,0,0,240,1,0,0,196,10,0,0,2,10,0,0,160,5,0,0,146,0,0,0,22,7,0,0,188,3,0,0,134,3,0,0,64,0,0,0,160,0,0,0,72,1,0,0,150,5,0,0,168,2,0,0,232,0,0,0,164,10,0,0,6,2,0,0,98,5,0,0,226,2,0,0,114,0,0,0,96,4,0,0,156,6,0,0,230,0,0,0,136,1,0,0,150,0,0,0,250,4,0,0,238,4,0,0,96,1,0,0,180,1,0,0,54,4,0,0,48,0,0,0,42,0,0,0,28,2,0,0,108,0,0,0,42,2,0,0,254,0,0,0,58,3,0,0,24,3,0,0,214,0,0,0,90,10,0,0,6,4,0,0,224,6,0,0,78,1,0,0,208,0,0,0,70,1,0,0,68,6,0,0,200,8,0,0,102,0,0,0,86,3,0,0,140,1,0,0,92,0,0,0,66,0,0,0,244,2,0,0,244,5,0,0,36,1,0,0,246,6,0,0,182,2,0,0,90,1,0,0,10,2,0,0,144,4,0,0,194,0,0,0,64,10,0,0,158,2,0,0,126,0,0,0,108,9,0,0,92,0,0,0,164,0,0,0,226,1,0,0,162,1,0,0,50,0,0,0,78,7,0,0,230,6,0,0,64,2,0,0,232,0,0,0,60,2,0,0,196,3,0,0,44,2,0,0,118,0,0,0,138,0,0,0,118,1,0,0,254,5,0,0,236,1,0,0,120,3,0,0,110,6,0,0,102,0,0,0,102,1,0,0,56,1,0,0,48,2,0,0,64,0,0,0,22,2,0,0,110,1,0,0,16,1,0,0,74,5,0,0,100,0,0,0,26,9,0,0,254,9,0,0,208,5,0,0,140,1,0,0,48,3,0,0,64,0,0,0,22,1,0,0,2,9,0,0,88,8,0,0,14,2,0,0,94,3,0,0,154,5,0,0,34,2,0,0,158,1,0,0,204,4,0,0,220,0,0,0,234,0,0,0,134,0,0,0,46,0,0,0,136,9,0,0,200,1,0,0,68,3,0,0,176,6,0,0,178,2,0,0,84,2,0,0,48,1,0,0,54,2,0,0,104,7,0,0,166,2,0,0,136,0,0,0,186,5,0,0,142,0,0,0,144,2,0,0,94,0,0,0,138,0,0,0,86,5,0,0,88,6,0,0,10,3,0,0,176,4,0,0,152,3,0,0,122,6,0,0,62,5,0,0,116,2,0,0,246,5,0,0,160,0,0,0,102,5,0,0,178,1,0,0,186,6,0,0,234,1,0,0,80,2,0,0,220,0,0,0,58,4,0,0,10,6,0,0,200,7,0,0,210,1,0,0,42,0,0,0,150,1,0,0,230,0,0,0,108,10,0,0,158,1,0,0,130,4,0,0,128,6,0,0,174,9,0,0,184,0,0,0,8,8,0,0,166,3,0,0,24,1,0,0,80,0,0,0,54,3,0,0,140,8,0,0,154,10,0,0,16,8,0,0,254,2,0,0,74,1,0,0,204,0,0,0,194,3,0,0,2,4,0,0,24,2,0,0,64,0,0,0,134,0,0,0,22,1,0,0,136,2,0,0,56,0,0,0,76,6,0,0,32,7,0,0,154,3,0,0,30,2,0,0,144,0,0,0,154,1,0,0,66,7,0,0,126,10,0,0,98,0,0,0,148,1,0,0,168,0,0,0,32,8,0,0,82,0,0,0,82,2,0,0,180,0,0,0,70,0,0,0,138,0,0,0,170,2,0,0,194,0,0,0,148,4,0,0,58,6,0,0,116,4,0,0,118,10,0,0,252,5,0,0,198,5,0,0,152,0,0,0,46,0,0,0,74,10,0,0,14,9,0,0,4,8,0,0,178,10,0,0,212,0,0,0,76,1,0,0,44,7,0,0,188,7,0,0,54,0,0,0,138,0,0,0,8,2,0,0,236,1,0,0,106,1,0,0,8,3,0,0,218,5,0,0,130,1,0,0,96,0,0,0,46,0,0,0,254,1,0,0,136,5,0,0,178,5,0,0,146,4,0,0,56,0,0,0,48,9,0,0,44,0,0,0,184,3,0,0,178,5,0,0,42,0,0,0,42,0,0,0,148,7,0,0,244,1,0,0,94,0,0,0,100,0,0,0,244,2,0,0,232,4,0,0,110,1,0,0,136,6,0,0,136,5,0,0,180,0,0,0,212,1,0,0,52,0,0,0,10,1,0,0,184,2,0,0,174,2,0,0,22,1,0,0,142,6,0,0,70,3,0,0,146,7,0,0,176,1,0,0,58,4,0,0,134,0,0,0,160,1,0,0,46,1,0,0,114,3,0,0,74,1,0,0,92,0,0,0,200,9,0,0,214,4,0,0,212,2,0,0,104,3,0,0,124,1,0,0,56,2,0,0,48,1,0,0,44,0,0,0,48,0,0,0,76,5,0,0,84,1,0,0,42,0,0,0,52,0,0,0,112,7,0,0,12,3,0,0,64,0,0,0,102,0,0,0,66,2,0,0,166,5,0,0,116,5,0,0,46,1,0,0,248,0,0,0,90,0,0,0,116,6,0,0,108,0,0,0,98,4,0,0,200,2,0,0,132,0,0,0,108,2,0,0,56,0,0,0,26,3,0,0,206,3,0,0,172,2,0,0,150,9,0,0,134,0,0,0,78,10,0,0,122,1,0,0,50,2,0,0,116,5,0,0,120,5,0,0,52,2,0,0,162,6,0,0,168,6,0,0,180,5,0,0,78,0,0,0,36,1,0,0,70,0,0,0,104,3,0,0,56,1,0,0,162,1,0,0,106,0,0,0,62,3,0,0,94,0,0,0,144,1,0,0,224,3,0,0,196,0,0,0,64,1,0,0,154,2,0,0,160,0,0,0,74,0,0,0,220,5,0,0,26,1,0,0,146,2,0,0,232,7,0,0,190,0,0,0,124,2,0,0,248,1,0,0,84,0,0,0,180,1,0,0,162,1,0,0,156,2,0,0,214,0,0,0,96,2,0,0,44,0,0,0,44,0,0,0,44,0,0,0,108,1,0,0,210,0,0,0,226,3,0,0,58,0,0,0,66,3,0,0,0,1,0,0,186,6,0,0,136,1,0,0,198,9,0,0,206,3,0,0,222,2,0,0,18,1,0,0,16,7,0,0,96,6,0,0,62,4,0,0,48,1,0,0,146,1,0,0,26,2,0,0,148,0,0,0,228,1,0,0,132,1,0,0,172,3,0,0,198,1,0,0,246,3,0,0,42,1,0,0,188,2,0,0,10,6,0,0,228,5,0,0,138,9,0,0,82,0,0,0,120,6,0,0,60,2,0,0,86,3,0,0,116,1,0,0,78,4,0,0,118,0,0,0,164,1,0,0,36,1,0,0,64,5,0,0,212,10,0,0,132,3,0,0,198,2,0,0,148,9,0,0,64,2,0,0,60,0,0,0,52,9,0,0,218,1,0,0,2,1,0,0,92,0,0,0,60,0,0,0,142,3,0,0,182,0,0,0,164,0,0,0,184,10,0,0,192,8,0,0,92,9,0,0,14,1,0,0,202,0,0,0,122,0,0,0,4,6,0,0,246,0,0,0,70,5,0,0,42,9,0,0,64,6,0,0,244,3,0,0,4,5,0,0,152,6,0,0,62,1,0,0,222,1,0,0,86,2,0,0,190,10,0,0,78,0,0,0,144,7,0,0,42,7,0,0,234,0,0,0,74,6,0,0,24,10,0,0,254,0,0,0,180,2,0,0,12,1,0,0,244,1,0,0,136,1,0,0,48,0,0,0,188,0,0,0,6,3,0,0,8,3,0,0,84,0,0,0,140,0,0,0,120,2,0,0,242,4,0,0,162,6,0,0,70,3,0,0,16,3,0,0,206,0,0,0,132,0,0,0,66,0,0,0,30,4,0,0,54,0,0,0,116,0,0,0,128,7,0,0,232,4,0,0,234,0,0,0,128,0,0,0,62,1,0,0,34,3,0,0,60,2,0,0,100,0,0,0,92,0,0,0,170,6,0,0,166,4,0,0,194,7,0,0,134,10,0,0,104,5,0,0,94,0,0,0,192,6,0,0,118,5,0,0,222,1,0,0,232,8,0,0,136,2,0,0,18,2,0,0,146,0,0,0,52,0,0,0,40,9,0,0,104,2,0,0,94,9,0,0,134,1,0,0,206,0,0,0,24,3,0,0,242,2,0,0,240,0,0,0,234,2,0,0,72,4,0,0,16,2,0,0,218,2,0,0,28,1,0,0,220,1,0,0,184,0,0,0,16,1,0,0,226,0,0,0,40,3,0,0,12,2,0,0,122,2,0,0,56,3,0,0,170,1,0,0,84,7,0,0,6,1,0,0,246,2,0,0,122,0,0,0,200,0,0,0,238,2,0,0,246,0,0,0,160,4,0,0,42,0,0,0,92,1,0,0,228,9,0,0,12,2,0,0,182,0,0,0,204,0,0,0,240,2,0,0,70,2,0,0,98,1,0,0,22,3,0,0,240,1,0,0,108,4,0,0,64,2,0,0,2,3,0,0,162,3,0,0,164,0,0,0,28,1,0,0,38,2,0,0,216,0,0,0,50,2,0,0,170,1,0,0,68,0,0,0,100,2,0,0,58,0,0,0,44,0,0,0,4,3,0,0,116,1,0,0,248,0,0,0,148,1,0,0,92,0,0,0,50,0,0,0,204,3,0,0,136,0,0,0,154,0,0,0,26,3,0,0,4,1,0,0,62,2,0,0,176,1,0,0,130,0,0,0,2,1,0,0,130,5,0,0,168,0,0,0,190,1,0,0,38,1,0,0,140,0,0,0,234,1,0,0,216,3,0,0,20,2,0,0,130,1,0,0,118,4,0,0,234,1,0,0,130,0,0,0,242,5,0,0,194,2,0,0,168,0,0,0,108,1,0,0,124,3,0,0,60,0,0,0,200,1,0,0,130,1,0,0,132,1,0,0,68,4,0,0,24,1,0,0,46,0,0,0,80,1,0,0,156,1,0,0,122,1,0,0,6,3,0,0,176,2,0,0,92,2,0,0,12,1,0,0,140,0,0,0,62,1,0,0,174,1,0,0,96,0,0,0,78,2,0,0,12,9,0,0,204,3,0,0,114,2,0,0,52,6,0,0,10,1,0,0,222,5,0,0,202,7,0,0,38,5,0,0,240,6,0,0,120,0,0,0,56,0,0,0,64,0,0,0,42,0,0,0,126,3,0,0,84,3,0,0,126,0,0,0,70,4,0,0,40,3,0,0,52,1,0,0,170,5,0,0,150,8,0,0,48,3,0,0,124,1,0,0,14,3,0,0,126,8,0,0,16,3,0,0,220,0,0,0,112,10,0,0,242,1,0,0,32,4,0,0,54,3,0,0,162,1,0,0,54,0,0,0,220,2,0,0,230,7,0,0,46,0,0,0,106,2,0,0,214,1,0,0,124,0,0,0,142,0,0,0,154,1,0,0,26,2,0,0,90,0,0,0,96,0,0,0,42,0,0,0,48,10,0,0,72,8,0,0,52,3,0,0,232,1,0,0,248,3,0,0,246,7,0,0,38,10,0,0,90,1,0,0,30,2,0,0,112,2,0,0,70,6,0,0,128,0,0,0,84,10,0,0,56,6,0,0,78,9,0,0,178,6,0,0,0,2,0,0,118,6,0,0,62,2,0,0,2,4,0,0,120,1,0,0,196,0,0,0,226,2,0,0,88,3,0,0,36,7,0,0,88,2,0,0,72,0,0,0,86,0,0,0,64,4,0,0,92,4,0,0,32,5,0,0,100,1,0,0,94,6,0,0,84,9,0,0,18,7,0,0,154,6,0,0,190,1,0,0,188,1,0,0,108,0,0,0,152,4,0,0,176,4,0,0,64,3,0,0,142,0,0,0,36,2,0,0,180,9,0,0,40,8,0,0,202,0,0,0,236,2,0,0,38,1,0,0,72,4,0,0,46,0,0,0,50,0,0,0,96,4,0,0,212,0,0,0,184,0,0,0,4,2,0,0,76,9,0,0,144,5,0,0,170,6,0,0,94,0,0,0,72,2,0,0,62,0,0,0,160,10,0,0,50,0,0,0,54,0,0,0,182,1,0,0,188,4,0,0,130,2,0,0,70,8,0,0,92,1,0,0,64,0,0,0,50,0,0,0,246,9,0,0,152,1,0,0,134,1,0,0,124,5,0,0,72,0,0,0,90,2,0,0,64,0,0,0,246,2,0,0,46,8,0,0,110,0,0,0,102,0,0,0,114,4,0,0,30,1,0,0,120,0,0,0,60,9,0,0,74,0,0,0,202,3,0,0,160,5,0,0,48,2,0,0,118,8,0,0,182,6,0,0,216,0,0,0,104,10,0,0,252,4,0,0,50,2,0,0,190,2,0,0,224,5,0,0,160,7,0,0,176,5,0,0,22,4,0,0,92,0,0,0,24,2,0,0,52,0,0,0,138,6,0,0,40,2,0,0,6,1,0,0,214,7,0,0,76,1,0,0,48,0,0,0,88,1,0,0,212,2,0,0,210,5,0,0,74,0,0,0,54,2,0,0,254,1,0,0,126,0,0,0,56,9,0,0,150,1,0,0,198,1,0,0,114,3,0,0,0,1,0,0,116,8,0,0,150,10,0,0,70,10,0,0,46,2,0,0,234,1,0,0,66,4,0,0,182,8,0,0,254,5,0,0,194,1,0,0,164,3,0,0,140,5,0,0,6,1,0,0,206,2,0,0,186,1,0,0,68,0,0,0,146,3,0,0,190,4,0,0,156,7,0,0,212,6,0,0,18,1,0,0,78,0,0,0,0,4,0,0,84,8,0,0,174,1,0,0,176,10,0,0,178,0,0,0,18,3,0,0,20,1,0,0,200,3,0,0,102,0,0,0,150,1,0,0,78,0,0,0,56,2,0,0,212,7,0,0,22,2,0,0,92,0,0,0,112,2,0,0,178,9,0,0,194,8,0,0,184,5,0,0,208,4,0,0,130,2,0,0,152,3,0,0,12,4,0,0,86,0,0,0,244,4,0,0,34,6,0,0,230,5,0,0,190,9,0,0,222,0,0,0,142,2,0,0,46,0,0,0,90,1,0,0,68,0,0,0,244,9,0,0,68,0,0,0,246,4,0,0,116,7,0,0,202,10,0,0,220,3,0,0,88,5,0,0,66,6,0,0,222,1,0,0,176,0,0,0,24,6,0,0,218,0,0,0,154,8,0,0,184,4,0,0,136,3,0,0,186,1,0,0,170,2,0,0,44,0,0,0,140,1,0,0,42,0,0,0,124,2,0,0,188,0,0,0,106,0,0,0,70,0,0,0,166,5,0,0,212,4,0,0,6,2,0,0,74,2,0,0,72,0,0,0,184,2,0,0,48,0,0,0,130,7,0,0,78,6,0,0,96,2,0,0,72,9,0,0,248,2,0,0,48,0,0,0,60,0,0,0,74,0,0,0,166,2,0,0,134,2,0,0,4,1,0,0,222,4,0,0,46,0,0,0,164,1,0,0,122,3,0,0,78,0,0,0,108,1,0,0,246,1,0,0,182,9,0,0,134,0,0,0,244,5,0,0,118,6,0,0,190,3,0,0,146,2,0,0,224,7,0,0,156,6,0,0,76,1,0,0,82,4,0,0,76,0,0,0,144,3,0,0,156,1,0,0,194,0,0,0,208,1,0,0,66,1,0,0,144,5,0,0,138,5,0,0,160,1,0,0,8,2,0,0,220,1,0,0,216,0,0,0,194,1,0,0,56,0,0,0,216,5,0,0,48,0,0,0,44,0,0,0,242,5,0,0,184,2,0,0,48,0,0,0,176,3,0,0,130,8,0,0,200,0,0,0,66,0,0,0,74,0,0,0,194,0,0,0,6,3,0,0,122,4,0,0,214,8,0,0,82,0,0,0,52,0,0,0,198,6,0,0,194,0,0,0,180,5,0,0,204,6,0,0,164,1,0,0,196,2,0,0,196,1,0,0,72,6,0,0,124,3,0,0,92,6,0,0,236,4,0,0,60,0,0,0,48,0,0,0,52,0,0,0,88,10,0,0,54,0,0,0,244,8,0,0,46,0,0,0,134,7,0,0,220,8,0,0,10,2,0,0,134,3,0,0,248,8,0,0,180,2,0,0,156,3,0,0,168,2,0,0,208,3,0,0,62,2,0,0,248,1,0,0,20,1,0,0,18,3,0,0,242,6,0,0,198,1,0,0,134,1,0,0,48,0,0,0,56,0,0,0,200,5,0,0,70,1,0,0,214,2,0,0,182,4,0,0,88,0,0,0,14,8,0,0,136,0,0,0,50,0,0,0,130,3,0,0,94,3,0,0,160,6,0,0,0,1,0,0,52,2,0,0,146,0,0,0,114,1,0,0,110,0,0,0,34,8,0,0,52,0,0,0,46,0,0,0,238,9,0,0,62,5,0,0,132,1,0,0,114,0,0,0,44,0,0,0,146,1,0,0,106,4,0,0,42,0,0,0,186,10,0,0,92,1,0,0,56,1,0,0,216,2,0,0,118,1,0,0,190,0,0,0,150,1,0,0,154,0,0,0,150,0,0,0,212,3,0,0,22,2,0,0,214,0,0,0,4,2,0,0,226,2,0,0,118,0,0,0,68,0,0,0,136,4,0,0,222,3,0,0,84,2,0,0,54,0,0,0,72,0,0,0,248,9,0,0,204,0,0,0,176,0,0,0,78,3,0,0,4,2,0,0,92,0,0,0,154,0,0,0,206,1,0,0,120,8,0,0,8,1,0,0,20,5,0,0,124,2,0,0,56,2,0,0,242,1,0,0,222,6,0,0,142,0,0,0,216,2,0,0,76,6,0,0,166,0,0,0,106,1,0,0,214,0,0,0,152,8,0,0,90,0,0,0,168,8,0,0,110,7,0,0,158,9,0,0,224,3,0,0,34,1,0,0,198,1,0,0,84,0,0,0,62,0,0,0,44,1,0,0,212,0,0,0,180,6,0,0,68,0,0,0,138,7,0,0,142,2,0,0,2,7,0,0,188,1,0,0,126,0,0,0,32,1,0,0,188,0,0,0,202,9,0,0,42,1,0,0,30,9,0,0,2,2,0,0,24,1,0,0,84,0,0,0,96,0,0,0,84,6,0,0,6,2,0,0,254,6,0,0,62,0,0,0,100,6,0,0,80,6,0,0,56,0,0,0,98,8,0,0,128,5,0,0,176,1,0,0,92,1,0,0,252,0,0,0,68,1,0,0,236,0,0,0,242,0,0,0,20,6,0,0,96,1,0,0,250,0,0,0,116,1,0,0,194,9,0,0,44,0,0,0,220,1,0,0,168,0,0,0,42,0,0,0,88,2,0,0,122,9,0,0,6,7,0,0,48,0,0,0,28,4,0,0,96,9,0,0,42,0,0,0,168,0,0,0,100,3,0,0,98,0,0,0,232,5,0,0,200,0,0,0,242,0,0,0,62,8,0,0,50,0,0,0,152,0,0,0,166,10,0,0,32,5,0,0,190,2,0,0,60,1,0,0,60,5,0,0,196,5,0,0,248,1,0,0,150,7,0,0,136,1,0,0,24,1,0,0,182,6,0,0,46,2,0,0,172,0,0,0,134,0,0,0,60,0,0,0,34,2,0,0,60,10,0,0,42,0,0,0,74,9,0,0,190,8,0,0,94,1,0,0,210,0,0,0,212,0,0,0,80,3,0,0,122,5,0,0,142,8,0,0,196,2,0,0,10,4,0,0,82,2,0,0,104,8,0,0,104,0,0,0,252,1,0,0,16,1,0,0,32,1,0,0,72,0,0,0,156,5,0,0,92,8,0,0,182,1,0,0,166,6,0,0,192,1,0,0,114,0,0,0,118,0,0,0,164,2,0,0,64,0,0,0,142,1,0,0,60,1,0,0,82,1,0,0,62,0,0,0,128,10,0,0,80,0,0,0,68,7,0,0,122,0,0,0,10,5,0,0,198,0,0,0,42,0,0,0,132,0,0,0,62,0,0,0,44,0,0,0,52,0,0,0,54,0,0,0,46,0,0,0,42,0,0,0,42,0,0,0,62,0,0,0,66,1,0,0,90,0,0,0,80,1,0,0,60,1,0,0,64,1,0,0,210,2,0,0,96,0,0,0,66,3,0,0,202,1,0,0,18,3,0,0,4,1,0,0,244,2,0,0,132,2,0,0,92,0,0,0,110,0,0,0,236,2,0,0,14,1,0,0,196,6,0,0,80,9,0,0,178,0,0,0,82,6,0,0,198,0,0,0,88,0,0,0,94,2,0,0,54,0,0,0,140,10,0,0,248,2,0,0,78,0,0,0,240,5,0,0,228,1,0,0,214,0,0,0,162,0,0,0,172,1,0,0,56,2,0,0,190,0,0,0,88,0,0,0,74,5,0,0,164,1,0,0,48,0,0,0,248,1,0,0,192,7,0,0,28,1,0,0,88,1,0,0,110,1,0,0,36,9,0,0,182,2,0,0,0,2,0,0,24,1,0,0,230,1,0,0,34,1,0,0,196,9,0,0,144,0,0,0,166,0,0,0,0,3,0,0,30,1,0,0,78,0,0,0,66,9,0,0,64,2,0,0,196,1,0,0,118,0,0,0,0,3,0,0,206,6,0,0,110,1,0,0,76,0,0,0,224,2,0,0,146,0,0,0,44,0,0,0,44,1,0,0,150,0,0,0,8,1,0,0,168,6,0,0,124,7,0,0,116,10,0,0,252,3,0,0,42,2,0,0,228,7,0,0,58,5,0,0,228,4,0,0,180,0,0,0,88,1,0,0,226,1,0,0,18,2,0,0,54,1,0,0,198,8,0,0,250,3,0,0,138,1,0,0,24,5,0,0,32,2,0,0,106,1,0,0,22,1,0,0,36,5,0,0,164,1,0,0,58,1,0,0,70,0,0,0,52,0,0,0,250,3,0,0,166,6,0,0,42,1,0,0,138,8,0,0,92,10,0,0,198,2,0,0,130,6,0,0,66,0,0,0,176,9,0,0,46,3,0,0,140,2,0,0,70,4,0,0,32,1,0,0,254,4,0,0,152,1,0,0,96,3,0,0,6,4,0,0,134,2,0,0,46,0,0,0,154,4,0,0,146,0,0,0,126,0,0,0,206,10,0,0,198,1,0,0,196,1,0,0,0,2,0,0,158,10,0,0,204,0,0,0,10,8,0,0,138,0,0,0,96,8,0,0,148,6,0,0,102,7,0,0,132,0,0,0,158,2,0,0,192,0,0,0,28,9,0,0,98,1,0,0,224,2,0,0,10,10,0,0,198,4,0,0,54,8,0,0,144,2,0,0,48,2,0,0,56,0,0,0,140,2,0,0,226,3,0,0,66,5,0,0,116,2,0,0,30,3,0,0,152,1,0,0,206,6,0,0,84,1,0,0,58,0,0,0,70,0,0,0,178,1,0,0,86,4,0,0,26,2,0,0,228,3,0,0,24,3,0,0,58,3,0,0,154,4,0,0,204,2,0,0,6,4,0,0,70,1,0,0,34,2,0,0,44,0,0,0,72,0,0,0,14,1,0,0,234,2,0,0,130,2,0,0,150,1,0,0,74,2,0,0,236,1,0,0,14,3,0,0,150,1,0,0,80,6,0,0,4,10,0,0,16,10,0,0,186,3,0,0,212,1,0,0,42,0,0,0,204,2,0,0,224,1,0,0,8,2,0,0,20,7,0,0,232,9,0,0,210,10,0,0,42,0,0,0,74,1,0,0,68,0,0,0,162,1,0,0,70,1,0,0,2,1,0,0,62,0,0,0,60,0,0,0,54,0,0,0,40,4,0,0,86,0,0,0,176,1,0,0,60,0,0,0,10,1,0,0,172,0,0,0,84,0,0,0,52,0,0,0,98,1,0,0,44,0,0,0,108,2,0,0,194,1,0,0,86,2,0,0,190,0,0,0,12,1,0,0,8,2,0,0,144,1,0,0,178,1,0,0,12,1,0,0,190,4,0,0,42,0,0,0,68,0,0,0,66,0,0,0,186,8,0,0,140,1,0,0,172,5,0,0,152,0,0,0,48,0,0,0,172,7,0,0,16,5,0,0,248,4,0,0,88,2,0,0,46,1,0,0,38,6,0,0,164,8,0,0,74,4,0,0,54,0,0,0,76,2,0,0,4,3,0,0,60,2,0,0,118,1,0,0,190,1,0,0,50,0,0,0,30,1,0,0,182,10,0,0,192,2,0,0,72,3,0,0,228,0,0,0,76,0,0,0,244,0,0,0,148,3,0,0,42,0,0,0,224,1,0,0,234,9,0,0,68,3,0,0,168,2,0,0,70,2,0,0,8,4,0,0,114,0,0,0,228,2,0,0,76,1,0,0,246,1,0,0,42,0,0,0,106,7,0,0,150,3,0,0,192,1,0,0,236,3,0,0,238,0,0,0,110,0,0,0,170,3,0,0,152,1,0,0,88,0,0,0,124,0,0,0,216,9,0,0,130,0,0,0,48,3,0,0,136,0,0,0,192,0,0,0,132,1,0,0,128,0,0,0,224,1,0,0,2,2,0,0,6,1,0,0,228,2,0,0,112,0,0,0,190,6,0,0,18,4,0,0,118,0,0,0,84,0,0,0,90,5,0,0,246,2,0,0,124,4,0,0,80,1,0,0,34,3,0,0,188,1,0,0,100,5,0,0,188,0,0,0,114,1,0,0,54,0,0,0,68,0,0,0,186,1,0,0,100,0,0,0,156,1,0,0,0,0,0,0,10,215,163,60,0,0,0,0,99,111,110,118,101,120,83,119,101,101,112,84,101,115,116,0,67,67,68,32,109,111,116,105,111,110,32,99,108,97,109,112,105,110,103,0,0,0,0,0,82,111,111,116,0,0,0,0,46,46,47,46,46,47,115,114,99,47,66,117,108,108,101,116,67,111,108,108,105,115,105,111,110,47,78,97,114,114,111,119,80,104,97,115,101,67,111,108,108,105,115,105,111,110,47,98,116,80,111,108,121,104,101,100,114,97,108,67,111,110,116,97,99,116,67,108,105,112,112,105,110,103,46,99,112,112,0,0,99,111,110,118,101,120,83,119,101,101,112,67,111,109,112,111,117,110,100,0,0,0,0,0,85,110,105,102,111,114,109,83,99,97,108,105,110,103,83,104,97,112,101,0,0,0,0,0,84,82,73,65,78,71,76,69,77,69,83,72,0,0,0,0,105,110,116,101,103,114,97,116,101,84,114,97,110,115,102,111,114,109,115,0,0,0,0,0,98,116,73,110,116,73,110,100,101,120,68,97,116,97,0,0,98,116,83,116,97,116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,0,100,105,115,112,97,116,99,104,65,108,108,67,111,108,108,105,115,105,111,110,80,97,105,114,115,0,0,0,0,0,0,0,105,115,108,97,110,100,85,110,105,111,110,70,105,110,100,65,110,100,81,117,105,99,107,83,111,114,116,0,0,0,0,0,98,116,83,99,97,108,101,100,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,0,0,99,97,108,99,117,108,97,116,101,83,105,109,117,108,97,116,105,111,110,73,115,108,97,110,100,115,0,0,0,0,0,0,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,68,97,116,97,0,0,0,0,0,98,116,79,112,116,105,109,105,122,101,100,66,118,104,78,111,100,101,68,97,116,97,0,0,99,97,108,99,117,108,97,116,101,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,115,0,0,0,0,0,0,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,97,100,105,117,115,0,0,0,0,0,115,111,108,118,101,67,111,110,115,116,114,97,105,110,116,115,0,0,0,0,0,0,0,0,72,69,73,71,72,84,70,73,69,76,68,0,0,0,0,0,69,109,112,116,121,0,0,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0,0,112,101,114,102,111,114,109,68,105,115,99,114,101,116,101,67,111,108,108,105,115,105,111,110,68,101,116,101,99,116,105,111,110,0,0,0,0,0,0,0,67,121,108,105,110,100,101,114,90,0,0,0,0,0,0,0,117,112,100,97,116,101,65,99,116,105,118,97,116,105,111,110,83,116,97,116,101,0,0,0,98,116,86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,0,0,0,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,0,0,0,0,0,0,0,67,121,108,105,110,100,101,114,89,0,0,0,0,0,0,0,117,112,100,97,116,101,65,97,98,98,115,0,0,0,0,0,67,97,112,115,117,108,101,83,104,97,112,101,0,0,0,0,79,118,101,114,102,108,111,119,32,105,110,32,65,65,66,66,44,32,111,98,106,101,99,116,32,114,101,109,111,118,101,100,32,102,114,111,109,32,115,105,109,117,108,97,116,105,111,110,0,0,0,0,0,0,0,0,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,0,0,0,117,112,100,97,116,101,65,99,116,105,111,110,115,0,0,0,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97,116,97,0,0,0,0,0,0,98,116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,0,0,0,0,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,70,108,111,97,116,68,97,116,97,0,67,97,112,115,117,108,101,88,0,0,0,0,0,0,0,0,98,116,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,68,97,116,97,0,0,0,0,0,0,0,84,104,97,110,107,115,46,10,0,0,0,0,0,0,0,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0,0,105,110,116,101,114,110,97,108,83,105,110,103,108,101,83,116,101,112,83,105,109,117,108,97,116,105,111,110,0,0,0,0,100,49,62,61,48,46,48,102,0,0,0,0,0,0,0,0,98,116,83,108,105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0,115,111,108,118,101,71,114,111,117,112,67,97,99,104,101,70,114,105,101,110,100,108,121,83,101,116,117,112,0,0,0,0,98,116,67,104,97,114,73,110,100,101,120,84,114,105,112,108,101,116,68,97,116,97,0,0,100,101,98,117,103,68,114,97,119,87,111,114,108,100,0,0,98,116,66,118,104,83,117,98,116,114,101,101,73,110,102,111,68,97,116,97,0,0,0,0,77,117,108,116,105,83,112,104,101,114,101,0,0,0,0,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,0,0,0,0,67,111,110,118,101,120,0,0,67,111,109,112,111,117,110,100,0,0,0,0,0,0,0,0,80,108,101,97,115,101,32,105,110,99,108,117,100,101,32,97,98,111,118,101,32,105,110,102,111,114,109,97,116,105,111,110,44,32,121,111,117,114,32,80,108,97,116,102,111,114,109,44,32,118,101,114,115,105,111,110,32,111,102,32,79,83,46,10,0,0,0,0,0,0,0,0,116,111,105,32,61,32,37,102,10,0,0,0,0,0,0,0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68,97,116,97,0,0,0,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,0,0,0,0,0,115,111,108,118,101,71,114,111,117,112,0,0,0,0,0,0,115,116,101,112,83,105,109,117,108,97,116,105,111,110,0,0,98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,0,0,0,0,0,0,0,100,48,62,61,48,46,48,102,0,0,0,0,0,0,0,0,98,116,66,85,95,83,105,109,112,108,101,120,49,116,111,52,0,0,0,0,0,0,0,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,84,114,105,112,108,101,116,68,97,116,97,0,0,0,0,0,0,83,84,65,84,73,67,80,76,65,78,69,0,0,0,0,0,83,80,72,69,82,69,0,0,112,114,111,99,101,115,115,73,115,108,97,110,100,115,0,0,83,67,65,76,69,68,66,86,72,84,82,73,65,78,71,76,69,77,69,83,72,0,0,0,84,114,105,97,110,103,108,101,0,0,0,0,0,0,0,0,98,116,81,117,97,110,116,105,122,101,100,66,118,104,78,111,100,101,68,97,116,97,0,0,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,0,0,0,0,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97,112,101,68,97,116,97,0,0,67,121,108,105,110,100,101,114,88,0,0,0,0,0,0,0,67,111,110,118,101,120,84,114,105,109,101,115,104,0,0,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116,97,0,0,0,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0,0,0,0,67,111,110,101,0,0,0,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,0,0,0,0,73,102,32,121,111,117,32,99,97,110,32,114,101,112,114,111,100,117,99,101,32,116,104,105,115,44,32,112,108,101,97,115,101,32,101,109,97,105,108,32,98,117,103,115,64,99,111,110,116,105,110,117,111,117,115,112,104,121,115,105,99,115,46,99,111,109,10,0,0,0,0,0,67,97,112,115,117,108,101,90,0,0,0,0,0,0,0,0,66,86,72,84,82,73,65,78,71,76,69,77,69,83,72,0,66,111,120,0,0,0,0,0,115,121,110,99,104,114,111,110,105,122,101,77,111,116,105,111,110,83,116,97,116,101,115,0,115,111,108,118,101,71,114,111,117,112,67,97,99,104,101,70,114,105,101,110,100,108,121,73,116,101,114,97,116,105,111,110,115,0,0,0,0,0,0,0,112,114,101,100,105,99,116,85,110,99,111,110,115,116,114,97,105,110,116,77,111,116,105,111,110,0,0,0,0,0,0,0,115,101,97,114,99,104,32,115,112,101,99,117,108,97,116,105,118,101,32,99,111,110,116,97,99,116,115,0,0,0,0,0,97,100,100,83,112,101,99,117,108,97,116,105,118,101,67,111,110,116,97,99,116,115,0,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,0,0,0,0,0,0,98,111,111,108,32,84,101,115,116,83,101,112,65,120,105,115,40,99,111,110,115,116,32,98,116,67,111,110,118,101,120,80,111,108,121,104,101,100,114,111,110,32,38,44,32,99,111,110,115,116,32,98,116,67,111,110,118,101,120,80,111,108,121,104,101,100,114,111,110,32,38,44,32,99,111,110,115,116,32,98,116,84,114,97,110,115,102,111,114,109,32,38,44,32,99,111,110,115,116,32,98,116,84,114,97,110,115,102,111,114,109,32,38,44,32,99,111,110,115,116,32,98,116,86,101,99,116,111,114,51,32,38,44,32,102,108,111,97,116,32,38,41,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,208,132,0,0,120,0,0,0,2,4,0,0,72,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,132,0,0,196,1,0,0,228,3,0,0,184,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,132,0,0,112,0,0,0,186,3,0,0,30,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,0,0,144,3,0,0,210,0,0,0,118,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,133,0,0,194,1,0,0,196,2,0,0,176,0,0,0,54,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,133,0,0,192,3,0,0,34,3,0,0,62,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,133,0,0,86,2,0,0,228,1,0,0,204,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,133,0,0,30,4,0,0,14,4,0,0,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,133,0,0,120,1,0,0,212,3,0,0,112,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,133,0,0,132,1,0,0,94,2,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,133,0,0,4,4,0,0,220,0,0,0,120,1,0,0,102,1,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,133,0,0,180,0,0,0,34,1,0,0,78,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,133,0,0,182,2,0,0,228,0,0,0,122,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,133,0,0,18,2,0,0,54,0,0,0,166,1,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,133,0,0,88,3,0,0,58,0,0,0,166,1,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,133,0,0,182,0,0,0,200,3,0,0,230,1,0,0,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,133,0,0,88,1,0,0,138,0,0,0,238,0,0,0,26,3,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,133,0,0,116,2,0,0,140,2,0,0,122,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,133,0,0,134,2,0,0,156,0,0,0,122,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,0,0,236,2,0,0,160,0,0,0,86,1,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,134,0,0,104,0,0,0,66,0,0,0,220,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,134,0,0,206,2,0,0,126,1,0,0,186,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,134,0,0,164,2,0,0,148,2,0,0,66,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,134,0,0,18,4,0,0,186,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,134,0,0,32,2,0,0,6,1,0,0,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,134,0,0,172,0,0,0,166,1,0,0,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,134,0,0,76,2,0,0,254,2,0,0,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,134,0,0,0,4,0,0,70,1,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,134,0,0,176,2,0,0,102,3,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,134,0,0,108,1,0,0,4,3,0,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,134,0,0,224,3,0,0,42,3,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,134,0,0,248,0,0,0,174,0,0,0,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,134,0,0,22,2,0,0,206,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,135,0,0,60,0,0,0,32,3,0,0,180,1,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,135,0,0,4,2,0,0,202,2,0,0,148,1,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,135,0,0,190,2,0,0,70,3,0,0,148,1,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,135,0,0,172,1,0,0,0,4,0,0,182,1,0,0,96,0,0,0,94,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,135,0,0,0,2,0,0,144,0,0,0,82,0,0,0,232,1,0,0,174,0,0,0,70,0,0,0,112,0,0,0,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,135,0,0,238,1,0,0,190,0,0,0,204,0,0,0,46,0,0,0,250,1,0,0,158,2,0,0,52,0,0,0,42,0,0,0,44,0,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,135,0,0,136,0,0,0,2,1,0,0,90,0,0,0,66,0,0,0,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,135,0,0,232,2,0,0,248,3,0,0,52,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,135,0,0,64,0,0,0,116,3,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,135,0,0,106,3,0,0,238,3,0,0,118,0,0,0,50,0,0,0,146,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,0,0,188,3,0,0,72,0,0,0,56,0,0,0,62,0,0,0,132,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,136,0,0,112,2,0,0,44,1,0,0,174,10,0,0,144,3,0,0,86,9,0,0,4,1,0,0,234,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,136,0,0,28,4,0,0,146,3,0,0,128,0,0,0,44,0,0,0,192,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,136,0,0,208,0,0,0,118,1,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,136,0,0,74,3,0,0,126,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,136,0,0,196,0,0,0,166,3,0,0,48,2,0,0,68,0,0,0,28,3,0,0,148,3,0,0,56,0,0,0,62,0,0,0,98,0,0,0,6,10,0,0,242,0,0,0,132,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,136,0,0,154,2,0,0,84,1,0,0,240,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,136,0,0,52,2,0,0,68,3,0,0,20,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,70,6,0,0,250,7,0,0,106,0,0,0,112,8,0,0,92,1,0,0,72,2,0,0,56,8,0,0,210,0,0,0,154,1,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,136,0,0,124,2,0,0,212,0,0,0,124,0,0,0,94,0,0,0,84,1,0,0,162,5,0,0,32,6,0,0,98,7,0,0,246,0,0,0,86,7,0,0,118,1,0,0,248,2,0,0,208,0,0,0,234,0,0,0,96,7,0,0,112,5,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,136,0,0,92,2,0,0,242,3,0,0,130,0,0,0,60,0,0,0,108,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,136,0,0,96,2,0,0,212,2,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,136,0,0,16,4,0,0,58,2,0,0,106,0,0,0,48,0,0,0,58,0,0,0,92,4,0,0,28,6,0,0,26,6,0,0,204,3,0,0,194,4,0,0,202,8,0,0,98,0,0,0,24,1,0,0,142,9,0,0,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,136,0,0,14,3,0,0,170,3,0,0,80,0,0,0,56,0,0,0,154,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,137,0,0]) +.concat([184,2,0,0,234,3,0,0,148,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,137,0,0,226,0,0,0,2,2,0,0,114,1,0,0,190,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,137,0,0,198,3,0,0,26,1,0,0,152,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,36,6,0,0,110,9,0,0,82,0,0,0,210,6,0,0,92,1,0,0,72,2,0,0,110,4,0,0,90,0,0,0,154,1,0,0,78,2,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,137,0,0,216,1,0,0,142,3,0,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,137,0,0,172,1,0,0,244,1,0,0,202,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,52,4,0,0,140,9,0,0,94,0,0,0,30,8,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,46,0,0,0,110,1,0,0,58,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,90,8,0,0,4,4,0,0,228,1,0,0,228,1,0,0,124,0,0,0,214,5,0,0,70,1,0,0,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,137,0,0,142,0,0,0,210,3,0,0,168,1,0,0,44,5,0,0,186,3,0,0,246,1,0,0,42,2,0,0,168,1,0,0,180,1,0,0,236,0,0,0,112,3,0,0,242,3,0,0,52,0,0,0,190,1,0,0,54,3,0,0,90,3,0,0,140,3,0,0,4,4,0,0,130,6,0,0,134,0,0,0,198,0,0,0,66,2,0,0,190,1,0,0,228,5,0,0,214,2,0,0,162,9,0,0,212,1,0,0,222,1,0,0,16,6,0,0,90,1,0,0,164,4,0,0,88,0,0,0,58,2,0,0,116,2,0,0,48,2,0,0,90,0,0,0,228,1,0,0,94,0,0,0,12,2,0,0,114,1,0,0,46,2,0,0,62,2,0,0,238,5,0,0,62,1,0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,137,0,0,250,2,0,0,84,2,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,137,0,0,114,3,0,0,186,2,0,0,36,1,0,0,186,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,137,0,0,46,1,0,0,12,2,0,0,106,1,0,0,220,3,0,0,58,9,0,0,244,0,0,0,232,3,0,0,14,1,0,0,76,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,137,0,0,224,2,0,0,252,3,0,0,136,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,137,0,0,124,0,0,0,80,3,0,0,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,137,0,0,54,3,0,0,202,3,0,0,164,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,224,1,0,0,76,7,0,0,94,0,0,0,42,0,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,112,0,0,0,44,1,0,0,188,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,90,8,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,137,0,0,122,2,0,0,144,2,0,0,44,3,0,0,68,0,0,0,254,3,0,0,98,6,0,0,56,0,0,0,66,0,0,0,66,0,0,0,240,3,0,0,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,0,0,184,3,0,0,8,2,0,0,48,2,0,0,68,0,0,0,28,3,0,0,148,4,0,0,56,0,0,0,62,0,0,0,98,0,0,0,102,10,0,0,252,0,0,0,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,138,0,0,246,3,0,0,118,2,0,0,168,1,0,0,44,5,0,0,186,3,0,0,246,1,0,0,42,2,0,0,168,1,0,0,180,1,0,0,236,0,0,0,112,3,0,0,242,3,0,0,52,0,0,0,190,1,0,0,54,3,0,0,90,3,0,0,140,3,0,0,4,4,0,0,130,6,0,0,134,0,0,0,198,0,0,0,66,2,0,0,190,1,0,0,228,5,0,0,214,2,0,0,162,9,0,0,212,1,0,0,222,1,0,0,138,4,0,0,90,1,0,0,164,4,0,0,88,0,0,0,58,2,0,0,116,2,0,0,48,2,0,0,90,0,0,0,228,1,0,0,94,0,0,0,12,2,0,0,10,1,0,0,46,2,0,0,62,2,0,0,238,5,0,0,62,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,138,0,0,240,3,0,0,78,2,0,0,100,0,0,0,52,0,0,0,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,138,0,0,42,2,0,0,196,3,0,0,168,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,138,0,0,20,3,0,0,184,0,0,0,36,1,0,0,186,0,0,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,138,0,0,102,0,0,0,96,3,0,0,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,138,0,0,214,3,0,0,98,2,0,0,238,0,0,0,158,5,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,138,0,0,162,3,0,0,72,1,0,0,182,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,72,1,0,0,166,4,0,0,120,0,0,0,98,10,0,0,92,1,0,0,72,2,0,0,84,3,0,0,148,0,0,0,154,1,0,0,210,1,0,0,66,0,0,0,200,0,0,0,58,1,0,0,108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,138,0,0,180,3,0,0,148,0,0,0,110,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,138,0,0,36,3,0,0,204,1,0,0,48,2,0,0,68,0,0,0,28,3,0,0,148,4,0,0,56,0,0,0,62,0,0,0,98,0,0,0,102,10,0,0,252,0,0,0,132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,138,0,0,24,4,0,0,92,3,0,0,198,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,22,5,0,0,106,6,0,0,102,0,0,0,132,4,0,0,110,0,0,0,214,2,0,0,110,4,0,0,90,0,0,0,154,1,0,0,126,1,0,0,56,1,0,0,122,1,0,0,16,2,0,0,66,1,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,138,0,0,130,3,0,0,190,3,0,0,22,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,138,0,0,182,3,0,0,110,0,0,0,80,2,0,0,44,5,0,0,186,3,0,0,222,2,0,0,42,2,0,0,168,1,0,0,194,1,0,0,66,2,0,0,112,3,0,0,160,3,0,0,48,0,0,0,232,0,0,0,90,6,0,0,28,5,0,0,30,6,0,0,2,6,0,0,192,2,0,0,218,3,0,0,212,5,0,0,14,2,0,0,206,2,0,0,18,4,0,0,20,4,0,0,94,2,0,0,112,1,0,0,120,0,0,0,226,1,0,0,182,1,0,0,248,4,0,0,130,5,0,0,86,6,0,0,178,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,139,0,0,158,0,0,0,110,3,0,0,38,3,0,0,68,0,0,0,88,6,0,0,66,4,0,0,66,0,0,0,60,0,0,0,62,0,0,0,12,7,0,0,74,0,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,139,0,0,222,3,0,0,30,3,0,0,48,0,0,0,220,0,0,0,254,0,0,0,220,4,0,0,62,0,0,0,250,0,0,0,34,2,0,0,192,10,0,0,184,1,0,0,144,9,0,0,164,3,0,0,210,7,0,0,40,1,0,0,36,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,139,0,0,16,3,0,0,252,1,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,139,0,0,172,2,0,0,6,2,0,0,210,5,0,0,96,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,139,0,0,146,0,0,0,100,3,0,0,42,0,0,0,42,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,139,0,0,242,0,0,0,250,1,0,0,46,0,0,0,74,0,0,0,88,0,0,0,86,2,0,0,64,0,0,0,234,0,0,0,64,1,0,0,120,7,0,0,180,8,0,0,22,1,0,0,208,4,0,0,230,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,139,0,0,26,2,0,0,236,1,0,0,54,0,0,0,52,1,0,0,72,0,0,0,230,0,0,0,54,0,0,0,192,1,0,0,150,3,0,0,130,2,0,0,248,6,0,0,172,1,0,0,112,3,0,0,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,139,0,0,98,3,0,0,180,1,0,0,238,0,0,0,254,4,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,139,0,0,70,2,0,0,22,1,0,0,182,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,88,5,0,0,166,4,0,0,120,0,0,0,0,6,0,0,92,1,0,0,72,2,0,0,110,4,0,0,90,0,0,0,154,1,0,0,190,1,0,0,66,0,0,0,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,139,0,0,100,1,0,0,142,2,0,0,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,139,0,0,176,0,0,0,140,3,0,0,78,0,0,0,74,0,0,0,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,139,0,0,156,3,0,0,100,2,0,0,238,0,0,0,188,0,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,139,0,0,218,1,0,0,102,1,0,0,156,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,44,3,0,0,44,6,0,0,112,0,0,0,114,9,0,0,92,1,0,0,72,2,0,0,248,7,0,0,224,0,0,0,154,1,0,0,78,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,139,0,0,132,2,0,0,178,1,0,0,152,2,0,0,68,0,0,0,146,1,0,0,238,3,0,0,56,0,0,0,42,0,0,0,58,0,0,0,250,2,0,0,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,139,0,0,136,2,0,0,12,4,0,0,56,0,0,0,218,0,0,0,64,0,0,0,252,1,0,0,90,0,0,0,94,1,0,0,174,4,0,0,88,7,0,0,218,6,0,0,20,1,0,0,44,0,0,0,22,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,140,0,0,66,1,0,0,254,1,0,0,126,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,158,6,0,0,76,7,0,0,46,0,0,0,100,4,0,0,172,0,0,0,58,2,0,0,88,9,0,0,226,0,0,0,154,1,0,0,112,0,0,0,184,0,0,0,44,2,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,140,0,0,158,3,0,0,50,1,0,0,48,2,0,0,68,0,0,0,28,3,0,0,148,3,0,0,56,0,0,0,62,0,0,0,98,0,0,0,6,10,0,0,242,0,0,0,132,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,140,0,0,44,2,0,0,178,3,0,0,182,0,0,0,172,1,0,0,60,0,0,0,88,1,0,0,154,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,140,0,0,230,3,0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,140,0,0,130,0,0,0,78,3,0,0,152,2,0,0,68,0,0,0,42,0,0,0,42,0,0,0,56,0,0,0,42,0,0,0,42,0,0,0,34,5,0,0,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,140,0,0,48,0,0,0,30,1,0,0,40,3,0,0,68,0,0,0,102,5,0,0,230,2,0,0,56,0,0,0,64,0,0,0,50,0,0,0,184,7,0,0,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,140,0,0,216,2,0,0,232,3,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,140,0,0,58,3,0,0,154,3,0,0,202,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,116,6,0,0,76,7,0,0,94,0,0,0,152,7,0,0,172,0,0,0,58,2,0,0,230,9,0,0,152,0,0,0,154,1,0,0,248,0,0,0,254,0,0,0,142,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,90,8,0,0,190,5,0,0,170,0,0,0,100,0,0,0,40,1,0,0,132,9,0,0,40,2,0,0,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,140,0,0,46,1,0,0,110,2,0,0,0,3,0,0,220,3,0,0,58,9,0,0,244,0,0,0,232,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,140,0,0,240,0,0,0,146,1,0,0,54,0,0,0,52,1,0,0,72,0,0,0,230,0,0,0,54,0,0,0,192,1,0,0,150,3,0,0,130,2,0,0,248,6,0,0,172,1,0,0,112,3,0,0,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,140,0,0,6,3,0,0,142,1,0,0,178,1,0,0,218,0,0,0,252,255,255,255,184,140,0,0,118,0,0,0,72,3,0,0,54,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,140,0,0,84,3,0,0,36,2,0,0,42,0,0,0,46,4,0,0,78,1,0,0,86,1,0,0,128,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,140,0,0,14,1,0,0,148,3,0,0,8,1,0,0,142,1,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,140,0,0,10,1,0,0,26,4,0,0,36,1,0,0,186,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,141,0,0,106,0,0,0,114,1,0,0,138,0,0,0,46,0,0,0,230,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,141,0,0,78,0,0,0,28,3,0,0,58,0,0,0,46,1,0,0,124,0,0,0,130,1,0,0,78,0,0,0,68,0,0,0,246,0,0,0,252,9,0,0,20,2,0,0,138,1,0,0,146,5,0,0,52,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,141,0,0,80,1,0,0,78,1,0,0,12,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,106,2,0,0,76,7,0,0,72,0,0,0,216,10,0,0,32,2,0,0,58,2,0,0,224,10,0,0,246,0,0,0,154,1,0,0,80,0,0,0,42,0,0,0,248,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,68,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,141,0,0,76,0,0,0,194,2,0,0,12,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,106,2,0,0,76,7,0,0,72,0,0,0,184,9,0,0,32,2,0,0,58,2,0,0,224,10,0,0,246,0,0,0,154,1,0,0,80,0,0,0,42,1,0,0,160,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,12,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,141,0,0,114,0,0,0,250,0,0,0,168,1,0,0,44,5,0,0,186,3,0,0,84,0,0,0,42,2,0,0,168,1,0,0,194,1,0,0,46,5,0,0,112,3,0,0,160,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,141,0,0,150,3,0,0,244,2,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,141,0,0,220,3,0,0,40,1,0,0,70,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,90,5,0,0,76,7,0,0,94,0,0,0,62,10,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,112,0,0,0,44,1,0,0,188,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,90,8,0,0,20,10,0,0,194,4,0,0,164,0,0,0,96,0,0,0,164,9,0,0,0,2,0,0,56,0,0,0,208,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,141,0,0,116,1,0,0,116,0,0,0,168,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,224,1,0,0,76,7,0,0,54,0,0,0,108,2,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,112,0,0,0,96,1,0,0,18,1,0,0,120,1,0,0,248,3,0,0,108,1,0,0,90,8,0,0,52,4,0,0,106,8,0,0,98,0,0,0,194,1,0,0,52,6,0,0,162,0,0,0,48,0,0,0,36,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,141,0,0,48,3,0,0,120,3,0,0,156,0,0,0,46,0,0,0,220,0,0,0,38,7,0,0,68,5,0,0,200,0,0,0,170,0,0,0,244,0,0,0,134,1,0,0,26,6,0,0,228,0,0,0,116,0,0,0,146,6,0,0,90,0,0,0,238,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,141,0,0,82,3,0,0,114,2,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,141,0,0,204,0,0,0,104,2,0,0,12,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,106,2,0,0,76,7,0,0,72,0,0,0,158,5,0,0,32,2,0,0,58,2,0,0,224,10,0,0,246,0,0,0,154,1,0,0,80,0,0,0,170,1,0,0,88,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,250,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,141,0,0,202,1,0,0,122,0,0,0,26,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,182,1,0,0,142,1,0,0,100,0,0,0,10,9,0,0,184,1,0,0,170,2,0,0,120,4,0,0,240,0,0,0,154,1,0,0,124,0,0,0,20,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,141,0,0,66,2,0,0,240,2,0,0,200,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,26,4,0,0,76,7,0,0,50,0,0,0,28,10,0,0,196,1,0,0,58,2,0,0,174,3,0,0,186,0,0,0,154,1,0,0,112,0,0,0,26,1,0,0,244,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,232,141,0,0,226,1,0,0,42,1,0,0,200,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,26,4,0,0,76,7,0,0,50,0,0,0,72,7,0,0,196,1,0,0,58,2,0,0,174,3,0,0,186,0,0,0,154,1,0,0,112,0,0,0,26,1,0,0,244,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,141,0,0,72,2,0,0,62,3,0,0,106,0,0,0,48,0,0,0,58,0,0,0,92,4,0,0,28,6,0,0,26,6,0,0,134,6,0,0,102,3,0,0,202,8,0,0,98,0,0,0,24,1,0,0,142,9,0,0,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,142,0,0,68,0,0,0,200,1,0,0,72,0,0,0,60,0,0,0,202,0,0,0,170,3,0,0,252,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,142,0,0,38,2,0,0,126,3,0,0,72,0,0,0,60,0,0,0,202,0,0,0,170,3,0,0,252,5,0,0,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,142,0,0,180,2,0,0,168,3,0,0,200,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,26,4,0,0,76,7,0,0,50,0,0,0,136,8,0,0,196,1,0,0,58,2,0,0,174,3,0,0,186,0,0,0,154,1,0,0,112,0,0,0,26,1,0,0,244,0,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,142,0,0,62,0,0,0,248,2,0,0,66,0,0,0,48,1,0,0,202,2,0,0,58,0,0,0,224,1,0,0,76,7,0,0,136,0,0,0,250,6,0,0,108,0,0,0,28,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,16,1,0,0,68,1,0,0,110,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,142,0,0,46,1,0,0,56,3,0,0,170,1,0,0,220,3,0,0,58,9,0,0,244,0,0,0,232,3,0,0,2,1,0,0,52,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,142,0,0,28,2,0,0,178,0,0,0,64,2,0,0,48,1,0,0,202,2,0,0,58,0,0,0,14,4,0,0,114,8,0,0,90,0,0,0,150,6,0,0,92,1,0,0,72,2,0,0,110,4,0,0,90,0,0,0,154,1,0,0,10,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,142,0,0,160,2,0,0,134,3,0,0,164,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,36,3,0,0,76,7,0,0,76,0,0,0,234,4,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,58,1,0,0,60,1,0,0,84,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,142,0,0,122,3,0,0,220,2,0,0,164,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,36,3,0,0,76,7,0,0,76,0,0,0,234,4,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,58,1,0,0,60,1,0,0,84,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,142,0,0,194,3,0,0,46,2,0,0,46,0,0,0,74,0,0,0,88,0,0,0,86,2,0,0,64,0,0,0,234,0,0,0,64,1,0,0,120,7,0,0,180,8,0,0,22,1,0,0,208,4,0,0,230,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,142,0,0,184,0,0,0,198,0,0,0,208,1,0,0,220,3,0,0,196,8,0,0,208,0,0,0,68,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,142,0,0,30,2,0,0,148,1,0,0,164,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,36,3,0,0,76,7,0,0,76,0,0,0,234,4,0,0,172,0,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,58,1,0,0,60,1,0,0,84,1,0,0,120,1,0,0,220,6,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,142,0,0,104,1,0,0,166,2,0,0,138,1,0,0,48,1,0,0,202,2,0,0,58,0,0,0,220,5,0,0,76,7,0,0,56,0,0,0,6,8,0,0,26,1,0,0,58,2,0,0,86,6,0,0,118,0,0,0,154,1,0,0,214,0,0,0,60,0,0,0,134,1,0,0,120,1,0,0,214,6,0,0,146,1,0,0,90,8,0,0,204,8,0,0,136,6,0,0,238,1,0,0,38,1,0,0,78,4,0,0,250,0,0,0,72,0,0,0,188,1,0,0,0,0,0,0,0,0,0,0,90,78,75,50,53,98,116,67,111,110,118,101,120,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,51,49,99,97,108,99,117,108,97,116,101,80,114,105,110,99,105,112,97,108,65,120,105,115,84,114,97,110,115,102,111,114,109,69,82,49,49,98,116,84,114,97,110,115,102,111,114,109,82,57,98,116,86,101,99,116,111,114,51,82,102,69,49,53,73,110,101,114,116,105,97,67,97,108,108,98,97,99,107,95,48,0,90,78,75,50,53,98,116,67,111,110,118,101,120,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,51,49,99,97,108,99,117,108,97,116,101,80,114,105,110,99,105,112,97,108,65,120,105,115,84,114,97,110,115,102,111,114,109,69,82,49,49,98,116,84,114,97,110,115,102,111,114,109,82,57,98,116,86,101,99,116,111,114,51,82,102,69,49,52,67,101,110,116,101,114,67,97,108,108,98,97,99,107,0,0,0,0,90,78,75,50,50,98,116,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,49,57,112,114,111,99,101,115,115,65,108,108,84,114,105,97,110,103,108,101,115,69,80,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,50,49,77,121,78,111,100,101,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,0,0,90,78,75,49,57,98,116,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,49,57,112,114,111,99,101,115,115,65,108,108,84,114,105,97,110,103,108,101,115,69,80,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,49,54,70,105,108,116,101,114,101,100,67,97,108,108,98,97,99,107,0,0,0,90,78,51,51,98,116,77,105,110,107,111,119,115,107,105,80,101,110,101,116,114,97,116,105,111,110,68,101,112,116,104,83,111,108,118,101,114,49,50,99,97,108,99,80,101,110,68,101,112,116,104,69,82,50,50,98,116,86,111,114,111,110,111,105,83,105,109,112,108,101,120,83,111,108,118,101,114,80,75,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,83,52,95,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,55,95,82,57,98,116,86,101,99,116,111,114,51,83,57,95,83,57,95,80,49,50,98,116,73,68,101,98,117,103,68,114,97,119,80,49,50,98,116,83,116,97,99,107,65,108,108,111,99,69,50,48,98,116,73,110,116,101,114,109,101,100,105,97,116,101,82,101,115,117,108,116,0,0,0,0,0,0,0,90,78,51,51,98,116,67,111,110,118,101,120,67,111,110,99,97,118,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,50,49,99,97,108,99,117,108,97,116,101,84,105,109,101,79,102,73,109,112,97,99,116,69,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,83,49,95,82,75,49,54,98,116,68,105,115,112,97,116,99,104,101,114,73,110,102,111,80,49,54,98,116,77,97,110,105,102,111,108,100,82,101,115,117,108,116,69,51,49,76,111,99,97,108,84,114,105,97,110,103,108,101,83,112,104,101,114,101,67,97,115,116,67,97,108,108,98,97,99,107,0,0,0,90,78,50,56,98,116,72,97,115,104,101,100,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,99,104,101,51,55,114,101,109,111,118,101,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,115,67,111,110,116,97,105,110,105,110,103,80,114,111,120,121,69,80,49,55,98,116,66,114,111,97,100,112,104,97,115,101,80,114,111,120,121,80,49,50,98,116,68,105,115,112,97,116,99,104,101,114,69,49,56,82,101,109,111,118,101,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,0,90,78,50,56,98,116,72,97,115,104,101,100,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,99,104,101,49,57,99,108,101,97,110,80,114,111,120,121,70,114,111,109,80,97,105,114,115,69,80,49,55,98,116,66,114,111,97,100,112,104,97,115,101,80,114,111,120,121,80,49,50,98,116,68,105,115,112,97,116,99,104,101,114,69,49,55,67,108,101,97,110,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,90,78,50,51,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,50,51,99,97,108,99,117,108,97,116,101,65,97,98,98,66,114,117,116,101,70,111,114,99,101,69,82,57,98,116,86,101,99,116,111,114,51,83,49,95,69,50,51,65,97,98,98,67,97,108,99,117,108,97,116,105,111,110,67,97,108,108,98,97,99,107,0,0,0,90,78,50,51,98,116,68,105,115,99,114,101,116,101,68,121,110,97,109,105,99,115,87,111,114,108,100,49,54,115,111,108,118,101,67,111,110,115,116,114,97,105,110,116,115,69,82,49,57,98,116,67,111,110,116,97,99,116,83,111,108,118,101,114,73,110,102,111,69,50,55,73,110,112,108,97,99,101,83,111,108,118,101,114,73,115,108,97,110,100,67,97,108,108,98,97,99,107,0,0,0,0,0,0,90,78,50,51,98,116,67,111,110,118,101,120,67,111,110,118,101,120,65,108,103,111,114,105,116,104,109,49,54,112,114,111,99,101,115,115,67,111,108,108,105,115,105,111,110,69,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,83,49,95,82,75,49,54,98,116,68,105,115,112,97,116,99,104,101,114,73,110,102,111,80,49,54,98,116,77,97,110,105,102,111,108,100,82,101,115,117,108,116,69,49,51,98,116,68,117,109,109,121,82,101,115,117,108,116,0,0,0,0,90,78,50,50,98,116,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,49,55,112,101,114,102,111,114,109,67,111,110,118,101,120,99,97,115,116,69,80,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,83,52,95,83,52,95,69,50,49,77,121,78,111,100,101,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,0,90,78,50,50,98,116,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,49,52,112,101,114,102,111,114,109,82,97,121,99,97,115,116,69,80,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,50,49,77,121,78,111,100,101,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,55,111,98,106,101,99,116,81,117,101,114,121,83,105,110,103,108,101,69,80,75,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,53,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,53,95,82,78,83,95,50,48,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,102,69,51,50,66,114,105,100,103,101,84,114,105,97,110,103,108,101,67,111,110,118,101,120,99,97,115,116,67,97,108,108,98,97,99,107,95,48,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,55,111,98,106,101,99,116,81,117,101,114,121,83,105,110,103,108,101,69,80,75,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,53,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,53,95,82,78,83,95,50,48,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,102,69,51,50,66,114,105,100,103,101,84,114,105,97,110,103,108,101,67,111,110,118,101,120,99,97,115,116,67,97,108,108,98,97,99,107,0,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,55,111,98,106,101,99,116,81,117,101,114,121,83,105,110,103,108,101,69,80,75,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,53,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,53,95,82,78,83,95,50,48,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,102,69,49,52,76,111,99,97,108,73,110,102,111,65,100,100,101,114,95,49,0,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,51,114,97,121,84,101,115,116,83,105,110,103,108,101,69,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,50,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,50,95,82,78,83,95,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,69,57,82,97,121,84,101,115,116,101,114,95,49,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,51,114,97,121,84,101,115,116,83,105,110,103,108,101,69,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,50,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,50,95,82,78,83,95,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,69,50,57,66,114,105,100,103,101,84,114,105,97,110,103,108,101,82,97,121,99,97,115,116,67,97,108,108,98,97,99,107,95,48,0,0,0,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,51,114,97,121,84,101,115,116,83,105,110,103,108,101,69,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,50,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,50,95,82,78,83,95,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,69,50,57,66,114,105,100,103,101,84,114,105,97,110,103,108,101,82,97,121,99,97,115,116,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,90,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,51,114,97,121,84,101,115,116,83,105,110,103,108,101,69,82,75,49,49,98,116,84,114,97,110,115,102,111,114,109,83,50,95,80,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,80,75,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,83,50,95,82,78,83,95,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,69,49,53,76,111,99,97,108,73,110,102,111,65,100,100,101,114,50,0,0,0,0,0,90,78,49,52,98,116,79,112,116,105,109,105,122,101,100,66,118,104,53,98,117,105,108,100,69,80,50,51,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,98,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,50,57,81,117,97,110,116,105,122,101,100,78,111,100,101,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,0,0,0,0,0,90,78,49,52,98,116,79,112,116,105,109,105,122,101,100,66,118,104,53,98,117,105,108,100,69,80,50,51,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,98,82,75,57,98,116,86,101,99,116,111,114,51,83,52,95,69,50,48,78,111,100,101,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,95,48,0,0,0,0,83,116,57,116,121,112,101,95,105,110,102,111,0,0,0,0,83,116,57,101,120,99,101,112,116,105,111,110,0,0,0,0,83,116,57,98,97,100,95,97,108,108,111,99,0,0,0,0,78,54,98,116,68,98,118,116,56,73,67,111,108,108,105,100,101,69,0,0,0,0,0,0,78,51,54,98,116,68,105,115,99,114,101,116,101,67,111,108,108,105,115,105,111,110,68,101,116,101,99,116,111,114,73,110,116,101,114,102,97,99,101,54,82,101,115,117,108,116,69,0,78,51,52,98,116,83,112,104,101,114,101,84,114,105,97,110,103,108,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,78,51,51,98,116,67,111,110,118,101,120,67,111,110,99,97,118,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,55,83,119,97,112,112,101,100,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,0,0,78,51,51,98,116,67,111,110,118,101,120,67,111,110,99,97,118,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,0,78,51,50,98,116,83,112,104,101,114,101,83,112,104,101,114,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,0,0,78,51,49,98,116,67,111,110,118,101,120,80,108,97,110,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,78,50,56,98,116,67,111,109,112,111,117,110,100,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,55,83,119,97,112,112,101,100,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,78,50,56,98,116,67,111,109,112,111,117,110,100,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,78,50,54,98,116,66,111,120,66,111,120,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,78,50,53,98,116,83,105,109,117,108,97,116,105,111,110,73,115,108,97,110,100,77,97,110,97,103,101,114,49,52,73,115,108,97,110,100,67,97,108,108,98,97,99,107,69,0,0,0,78,50,51,98,116,67,111,110,118,101,120,67,111,110,118,101,120,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,78,49,54,98,116,69,109,112,116,121,65,108,103,111,114,105,116,104,109,49,48,67,114,101,97,116,101,70,117,110,99,69,0,0,0,0,0,0,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,55,67,108,111,115,101,115,116,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,0,0,0,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,52,67,108,111,115,101,115,116,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,52,65,108,108,72,105,116,115,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,49,67,111,110,116,97,99,116,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,0,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,50,48,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,0,0,0,0,0,78,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,49,55,82,97,121,82,101,115,117,108,116,67,97,108,108,98,97,99,107,69,0,78,49,50,98,116,67,111,110,118,101,120,67,97,115,116,49,48,67,97,115,116,82,101,115,117,108,116,69,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,49,95,95,118,109,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,0,0,0,0,0,0,0,51,54,98,116,68,105,115,99,114,101,116,101,67,111,108,108,105,115,105,111,110,68,101,116,101,99,116,111,114,73,110,116,101,114,102,97,99,101,0,0,51,53,98,116,83,101,113,117,101,110,116,105,97,108,73,109,112,117,108,115,101,67,111,110,115,116,114,97,105,110,116,83,111,108,118,101,114,0,0,0,51,52,98,116,83,112,104,101,114,101,84,114,105,97,110,103,108,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,51,52,98,116,80,111,108,121,104,101,100,114,97,108,67,111,110,118,101,120,65,97,98,98,67,97,99,104,105,110,103,83,104,97,112,101,0,0,0,0,51,52,98,116,67,108,111,115,101,115,116,78,111,116,77,101,67,111,110,118,101,120,82,101,115,117,108,116,67,97,108,108,98,97,99,107,0,0,0,0,51,51,98,116,77,105,110,107,111,119,115,107,105,80,101,110,101,116,114,97,116,105,111,110,68,101,112,116,104,83,111,108,118,101,114,0,0,0,0,0,51,51,98,116,67,111,110,118,101,120,67,111,110,99,97,118,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,0,51,50,98,116,83,112,104,101,114,101,83,112,104,101,114,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116]) +.concat([104,109,0,0,0,0,0,0,51,50,98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,65,97,98,98,67,97,99,104,105,110,103,83,104,97,112,101,0,0,0,0,0,0,51,49,98,116,73,110,116,101,114,110,97,108,84,114,105,97,110,103,108,101,73,110,100,101,120,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,51,49,98,116,68,101,102,97,117,108,116,67,111,108,108,105,115,105,111,110,67,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,0,0,0,0,51,49,98,116,67,111,110,118,101,120,80,108,97,110,101,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,0,0,0,51,48,98,116,71,106,107,69,112,97,80,101,110,101,116,114,97,116,105,111,110,68,101,112,116,104,83,111,108,118,101,114,0,0,0,0,0,0,0,0,51,48,98,116,67,111,110,118,101,120,80,101,110,101,116,114,97,116,105,111,110,68,101,112,116,104,83,111,108,118,101,114,0,0,0,0,0,0,0,0,51,48,98,116,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,67,114,101,97,116,101,70,117,110,99,0,0,0,0,0,0,0,0,51,48,98,116,65,99,116,105,118,97,116,105,110,103,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,0,0,0,0,50,57,98,116,71,101,110,101,114,105,99,54,68,111,102,83,112,114,105,110,103,67,111,110,115,116,114,97,105,110,116,0,50,57,67,111,110,99,114,101,116,101,67,111,110,116,97,99,116,82,101,115,117,108,116,67,97,108,108,98,97,99,107,0,50,56,98,116,84,114,105,97,110,103,108,101,67,111,110,118,101,120,99,97,115,116,67,97,108,108,98,97,99,107,0,0,50,56,98,116,83,99,97,108,101,100,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,0,0,50,56,98,116,72,97,115,104,101,100,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,99,104,101,0,0,50,56,98,116,67,111,109,112,111,117,110,100,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,50,55,98,116,67,111,110,116,105,110,117,111,117,115,67,111,110,118,101,120,67,111,108,108,105,115,105,111,110,0,0,0,50,54,98,116,84,114,105,97,110,103,108,101,73,110,100,101,120,86,101,114,116,101,120,65,114,114,97,121,0,0,0,0,50,54,98,116,66,111,120,66,111,120,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,0,0,50,54,76,111,99,97,108,83,117,112,112,111,114,116,86,101,114,116,101,120,67,97,108,108,98,97,99,107,0,0,0,0,50,53,98,116,84,114,105,97,110,103,108,101,82,97,121,99,97,115,116,67,97,108,108,98,97,99,107,0,0,0,0,0,50,53,98,116,83,105,109,117,108,97,116,105,111,110,73,115,108,97,110,100,77,97,110,97,103,101,114,0,0,0,0,0,50,53,98,116,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,0,0,50,53,98,116,72,101,105,103,104,116,102,105,101,108,100,84,101,114,114,97,105,110,83,104,97,112,101,0,0,0,0,0,50,53,98,116,68,101,102,97,117,108,116,86,101,104,105,99,108,101,82,97,121,99,97,115,116,101,114,0,0,0,0,0,50,53,98,116,67,111,110,118,101,120,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,0,0,0,0,0,50,53,98,116,67,111,110,116,105,110,117,111,117,115,68,121,110,97,109,105,99,115,87,111,114,108,100,0,0,0,0,0,50,52,98,116,83,99,97,108,101,100,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,0,0,0,0,0,0,50,52,98,116,80,101,114,116,117,114,98,101,100,67,111,110,116,97,99,116,82,101,115,117,108,116,0,0,0,0,0,0,50,52,98,116,80,97,105,114,67,97,99,104,105,110,103,71,104,111,115,116,79,98,106,101,99,116,0,0,0,0,0,0,50,52,98,116,67,111,110,118,101,120,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,0,0,0,0,0,0,50,52,98,116,67,111,108,108,105,115,105,111,110,67,111,110,102,105,103,117,114,97,116,105,111,110,0,0,0,0,0,0,50,52,98,116,66,114,111,97,100,112,104,97,115,101,65,97,98,98,67,97,108,108,98,97,99,107,0,0,0,0,0,0,50,51,98,116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,99,101,0,0,0,0,0,0,0,50,51,98,116,83,105,110,103,108,101,67,111,110,116,97,99,116,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,50,51,98,116,80,111,108,121,104,101,100,114,97,108,67,111,110,118,101,120,83,104,97,112,101,0,0,0,0,0,0,0,50,51,98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,0,0,0,0,0,0,0,50,51,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110,115,116,114,97,105,110,116,0,0,0,0,0,0,0,50,51,98,116,68,105,115,99,114,101,116,101,68,121,110,97,109,105,99,115,87,111,114,108,100,0,0,0,0,0,0,0,50,51,98,116,67,111,110,118,101,120,67,111,110,118,101,120,65,108,103,111,114,105,116,104,109,0,0,0,0,0,0,0,50,51,98,116,67,111,108,108,105,115,105,111,110,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,50,51,98,116,66,114,111,97,100,112,104,97,115,101,82,97,121,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,50,51,98,116,66,114,105,100,103,101,100,77,97,110,105,102,111,108,100,82,101,115,117,108,116,0,0,0,0,0,0,0,50,50,98,116,83,117,98,115,105,109,112,108,101,120,67,111,110,118,101,120,67,97,115,116,0,0,0,0,0,0,0,0,50,50,98,116,79,118,101,114,108,97,112,112,105,110,103,80,97,105,114,67,97,99,104,101,0,0,0,0,0,0,0,0,50,50,98,116,67,111,109,112,111,117,110,100,76,101,97,102,67,97,108,108,98,97,99,107,0,0,0,0,0,0,0,0,50,50,98,116,66,118,104,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,0,0,0,0,0,0,0,0,50,50,83,112,104,101,114,101,84,114,105,97,110,103,108,101,68,101,116,101,99,116,111,114,0,0,0,0,0,0,0,0,50,49,98,116,85,110,105,118,101,114,115,97,108,67,111,110,115,116,114,97,105,110,116,0,50,49,98,116,85,110,105,102,111,114,109,83,99,97,108,105,110,103,83,104,97,112,101,0,50,49,98,116,83,105,110,103,108,101,83,119,101,101,112,67,97,108,108,98,97,99,107,0,50,49,98,116,83,105,109,112,108,101,68,121,110,97,109,105,99,115,87,111,114,108,100,0,50,49,98,116,78,111,100,101,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,50,49,98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,101,0,50,49,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,0,50,49,98,116,67,111,108,108,105,115,105,111,110,68,105,115,112,97,116,99,104,101,114,0,50,49,98,116,66,114,111,97,100,112,104,97,115,101,73,110,116,101,114,102,97,99,101,0,50,49,83,117,112,112,111,114,116,86,101,114,116,101,120,67,97,108,108,98,97,99,107,0,50,48,98,116,68,101,102,97,117,108,116,77,111,116,105,111,110,83,116,97,116,101,0,0,50,48,98,116,67,111,108,108,105,115,105,111,110,65,108,103,111,114,105,116,104,109,0,0,50,48,98,116,65,120,105,115,83,119,101,101,112,51,73,110,116,101,114,110,97,108,73,116,69,0,0,0,0,0,0,0,50,48,98,116,65,120,105,115,83,119,101,101,112,51,73,110,116,101,114,110,97,108,73,106,69,0,0,0,0,0,0,0,50,48,66,114,111,97,100,112,104,97,115,101,65,97,98,98,84,101,115,116,101,114,0,0,49,57,98,116,84,114,105,97,110,103,108,101,77,101,115,104,83,104,97,112,101,0,0,0,49,57,98,116,83,105,110,103,108,101,82,97,121,67,97,108,108,98,97,99,107,0,0,0,49,57,98,116,71,104,111,115,116,80,97,105,114,67,97,108,108,98,97,99,107,0,0,0,49,57,66,114,111,97,100,112,104,97,115,101,82,97,121,84,101,115,116,101,114,0,0,0,49,56,98,116,86,101,104,105,99,108,101,82,97,121,99,97,115,116,101,114,0,0,0,0,49,56,98,116,84,114,105,97,110,103,108,101,67,97,108,108,98,97,99,107,0,0,0,0,49,56,98,116,83,116,97,116,105,99,80,108,97,110,101,83,104,97,112,101,0,0,0,0,49,56,98,116,83,108,105,100,101,114,67,111,110,115,116,114,97,105,110,116,0,0,0,0,49,56,98,116,83,105,109,112,108,101,66,114,111,97,100,112,104,97,115,101,0,0,0,0,49,56,98,116,77,117,108,116,105,83,112,104,101,114,101,83,104,97,112,101,0,0,0,0,49,56,98,116,72,105,110,103,101,50,67,111,110,115,116,114,97,105,110,116,0,0,0,0,49,56,98,116,68,98,118,116,84,114,101,101,67,111,108,108,105,100,101,114,0,0,0,0,49,56,98,116,67,111,110,118,101,120,80,111,108,121,104,101,100,114,111,110,0,0,0,0,49,56,98,116,67,111,110,115,116,114,97,105,110,116,83,111,108,118,101,114,0,0,0,0,49,55,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110,116,0,0,0,0,0,49,55,98,116,79,118,101,114,108,97,112,67,97,108,108,98,97,99,107,0,0,0,0,0,49,55,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116,0,0,0,0,0,49,55,98,116,71,106,107,80,97,105,114,68,101,116,101,99,116,111,114,0,0,0,0,0,49,55,98,116,67,111,110,118,101,120,72,117,108,108,83,104,97,112,101,0,0,0,0,0,49,55,98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,0,0,0,0,0,49,55,98,116,65,99,116,105,111,110,73,110,116,101,114,102,97,99,101,0,0,0,0,0,49,55,98,116,51,50,66,105,116,65,120,105,115,83,119,101,101,112,51,0,0,0,0,0,49,55,68,101,98,117,103,68,114,97,119,99,97,108,108,98,97,99,107,0,0,0,0,0,49,54,98,116,82,97,121,99,97,115,116,86,101,104,105,99,108,101,0,0,0,0,0,0,49,54,98,116,80,111,105,110,116,67,111,108,108,101,99,116,111,114,0,0,0,0,0,0,49,54,98,116,77,97,110,105,102,111,108,100,82,101,115,117,108,116,0,0,0,0,0,0,49,54,98,116,69,109,112,116,121,65,108,103,111,114,105,116,104,109,0,0,0,0,0,0,49,54,98,116,68,98,118,116,66,114,111,97,100,112,104,97,115,101,0,0,0,0,0,0,49,54,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,90,0,0,0,0,0,0,49,54,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,88,0,0,0,0,0,0,49,54,98,116,67,111,108,108,105,115,105,111,110,87,111,114,108,100,0,0,0,0,0,0,49,54,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,0,0,0,0,0,49,54,98,116,66,111,120,66,111,120,68,101,116,101,99,116,111,114,0,0,0,0,0,0,49,54,98,116,66,85,95,83,105,109,112,108,101,120,49,116,111,52,0,0,0,0,0,0,49,53,98,116,84,114,105,97,110,103,108,101,83,104,97,112,101,0,0,0,0,0,0,0,49,53,98,116,78,117,108,108,80,97,105,114,67,97,99,104,101,0,0,0,0,0,0,0,49,53,98,116,71,106,107,67,111,110,118,101,120,67,97,115,116,0,0,0,0,0,0,0,49,53,98,116,68,121,110,97,109,105,99,115,87,111,114,108,100,0,0,0,0,0,0,0,49,53,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,0,0,0,0,0,0,0,49,53,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,0,0,0,0,0,0,0,49,53,98,116,67,97,112,115,117,108,101,83,104,97,112,101,90,0,0,0,0,0,0,0,49,53,98,116,67,97,112,115,117,108,101,83,104,97,112,101,88,0,0,0,0,0,0,0,49,52,98,116,84,114,105,97,110,103,108,101,77,101,115,104,0,0,0,0,0,0,0,0,49,52,98,116,81,117,97,110,116,105,122,101,100,66,118,104,0,0,0,0,0,0,0,0,49,52,98,116,79,112,116,105,109,105,122,101,100,66,118,104,0,0,0,0,0,0,0,0,49,52,98,116,67,111,110,99,97,118,101,83,104,97,112,101,0,0,0,0,0,0,0,0,49,52,98,116,67,97,112,115,117,108,101,83,104,97,112,101,0,0,0,0,0,0,0,0,49,51,98,116,84,121,112,101,100,79,98,106,101,99,116,0,49,51,98,116,83,112,104,101,114,101,83,104,97,112,101,0,49,51,98,116,77,111,116,105,111,110,83,116,97,116,101,0,49,51,98,116,71,104,111,115,116,79,98,106,101,99,116,0,49,51,98,116,67,111,110,118,101,120,83,104,97,112,101,0,49,50,98,116,69,109,112,116,121,83,104,97,112,101,0,0,49,50,98,116,68,105,115,112,97,116,99,104,101,114,0,0,49,50,98,116,67,111,110,118,101,120,67,97,115,116,0,0,49,50,98,116,67,111,110,101,83,104,97,112,101,90,0,0,49,50,98,116,67,111,110,101,83,104,97,112,101,88,0,0,49,50,98,116,65,120,105,115,83,119,101,101,112,51,0,0,49,49,98,116,82,105,103,105,100,66,111,100,121,0,0,0,49,49,98,116,67,111,110,101,83,104,97,112,101,0,0,0,49,48,98,116,66,111,120,83,104,97,112,101,0,0,0,0,0,0,0,0,216,102,0,0,32,136,0,0,0,0,0,0,0,0,0,0,72,103,0,0,32,136,0,0,0,0,0,0,0,0,0,0,184,103,0,0,240,138,0,0,0,0,0,0,0,0,0,0,40,104,0,0,32,136,0,0,0,0,0,0,0,0,0,0,144,104,0,0,88,134,0,0,0,0,0,0,0,0,0,0,80,105,0,0,208,139,0,0,0,0,0,0,0,0,0,0,240,105,0,0,96,140,0,0,0,0,0,0,0,0,0,0,120,106,0,0,96,140,0,0,0,0,0,0,0,0,0,0,232,106,0,0,32,136,0,0,0,0,0,0,0,0,0,0,72,107,0,0,224,134,0,0,0,0,0,0,0,0,0,0,176,107,0,0,88,134,0,0,0,0,0,0,0,0,0,0,48,108,0,0,240,138,0,0,0,0,0,0,0,0,0,0,168,108,0,0,240,138,0,0,0,0,0,0,0,0,0,0,16,109,0,0,152,136,0,0,0,0,0,0,0,0,0,0,200,109,0,0,152,136,0,0,0,0,0,0,0,0,0,0,128,110,0,0,64,135,0,0,0,0,0,0,0,0,0,0,40,111,0,0,80,134,0,0,0,0,0,0,0,0,0,0,176,111,0,0,24,137,0,0,0,0,0,0,0,0,0,0,80,112,0,0,24,137,0,0,0,0,0,0,0,0,0,0,240,112,0,0,72,135,0,0,0,0,0,0,0,0,0,0,128,113,0,0,32,136,0,0,0,0,0,0,0,0,0,0,232,113,0,0,32,136,0,0,0,0,0,0,0,0,0,0,72,114,0,0,0,0,0,0,88,114,0,0,0,0,0,0,104,114,0,0,56,134,0,0,0,0,0,0,0,0,0,0,120,114,0,0,0,0,0,0,144,114,0,0,0,0,0,0,192,114,0,0,96,136,0,0,0,0,0,0,0,0,0,0,248,114,0,0,96,136,0,0,0,0,0,0,0,0,0,0,56,115,0,0,96,136,0,0,0,0,0,0,0,0,0,0,112,115,0,0,96,136,0,0,0,0,0,0,0,0,0,0,168,115,0,0,96,136,0,0,0,0,0,0,0,0,0,0,216,115,0,0,96,136,0,0,0,0,0,0,0,0,0,0,16,116,0,0,96,136,0,0,0,0,0,0,0,0,0,0,64,116,0,0,96,136,0,0,0,0,0,0,0,0,0,0,112,116,0,0,0,0,0,0,160,116,0,0,96,136,0,0,0,0,0,0,0,0,0,0,200,116,0,0,96,136,0,0,0,0,0,0,0,0,0,0,240,116,0,0,64,135,0,0,0,0,0,0,0,0,0,0,40,117,0,0,72,135,0,0,0,0,0,0,0,0,0,0,88,117,0,0,72,135,0,0,0,0,0,0,0,0,0,0,136,117,0,0,0,0,0,0,184,117,0,0,0,0,0,0,232,117,0,0,0,0,0,0,16,118,0,0,0,0,0,0,48,118,0,0,120,135,0,0,0,0,0,0,0,0,0,0,88,118,0,0,120,135,0,0,0,0,0,0,0,0,0,0,128,118,0,0,136,135,0,0,0,0,0,0,0,0,0,0,168,118,0,0,48,134,0,0,0,0,0,0,0,0,0,0,208,118,0,0,0,0,0,0,248,118,0,0,64,140,0,0,0,0,0,0,0,0,0,0,32,119,0,0,104,136,0,0,0,0,0,0,0,0,0,0,72,119,0,0,224,137,0,0,0,0,0,0,0,0,0,0,112,119,0,0,8,135,0,0,0,0,0,0,0,0,0,0,152,119,0,0,88,136,0,0,0,0,0,0,0,0,0,0,192,119,0,0,104,136,0,0,0,0,0,0,0,0,0,0,232,119,0,0,104,136,0,0,0,0,0,0,0,0,0,0,16,120,0,0,248,138,0,0,0,0,0,0,0,0,0,0,56,120,0,0,0,0,0,0,96,120,0,0,184,137,0,0,0,0,0,0,0,0,0,0,136,120,0,0,80,139,0,0,0,0,0,0,0,0,0,0,176,120,0,0,88,136,0,0,0,0,0,0,0,0,0,0,216,120,0,0,0,0,0,0,0,121,0,0,0,0,0,0,40,121,0,0,80,139,0,0,0,0,0,0,0,0,0,0,80,121,0,0,0,138,0,0,0,0,0,0,0,0,0,0,112,121,0,0,56,135,0,0,0,0,0,0,0,0,0,0,144,121,0,0,208,139,0,0,0,0,0,0,0,0,0,0,176,121,0,0,32,142,0,0,0,0,0,0,0,0,0,0,208,121,0,0,112,138,0,0,0,0,0,0,0,0,0,0,240,121,0,0,104,136,0,0,0,0,0,0,0,0,0,0,16,122,0,0,152,142,0,0,0,0,0,0,0,0,0,0,48,122,0,0,200,137,0,0,0,0,0,0,0,0,0,0,80,122,0,0,104,136,0,0,0,0,0,0,0,0,0,0,112,122,0,0,32,136,0,0,0,0,0,0,0,0,0,0,144,122,0,0,208,139,0,0,0,0,0,0,0,0,0,0,176,122,0,0,0,0,0,0,208,122,0,0,0,0,0,0,240,122,0,0,32,142,0,0,0,0,0,0,0,0,0,0,16,123,0,0,200,139,0,0,0,0,0,0,0,0,0,0,48,123,0,0,192,135,0,0,0,0,0,0,0,0,0,0,80,123,0,0,16,138,0,0,0,0,0,0,0,0,0,0,112,123,0,0,208,139,0,0,0,0,0,0,0,0,0,0,144,123,0,0,248,140,0,0,0,0,0,0,0,0,0,0,176,123,0,0,96,142,0,0,0,0,0,0,0,0,0,0,208,123,0,0,208,139,0,0,0,0,0,0,0,0,0,0,240,123,0,0,0,0,0,0,16,124,0,0,0,0,0,0,48,124,0,0,0,0,0,0,80,124,0,0,192,137,0,0,0,0,0,0,0,0,0,0,112,124,0,0,248,138,0,0,0,0,0,0,0,0,0,0,144,124,0,0,72,140,0,0,0,0,0,0,0,0,0,0,176,124,0,0,72,140,0,0,0,0,0,0,0,0,0,0,208,124,0,0,168,141,0,0,0,0,0,0,0,0,0,0,240,124,0,0,104,136,0,0,0,0,0,0,0,0,0,0,16,125,0,0,96,140,0,0,0,0,0,0,0,0,0,0,48,125,0,0,192,137,0,0,0,0,0,0,0,0,0,0,80,125,0,0,248,140,0,0,0,0,0,0,0,0,0,0,112,125,0,0,152,142,0,0,0,0,0,0,0,0,0,0,144,125,0,0,48,137,0,0,0,0,0,0,0,0,0,0,176,125,0,0,80,134,0,0,0,0,0,0,0,0,0,0,208,125,0,0,136,139,0,0,0,0,0,0,0,0,0,0,240,125,0,0,152,135,0,0,0,0,0,0,0,0,0,0,16,126,0,0,0,138,0,0,0,0,0,0,0,0,0,0,40,126,0,0,112,142,0,0,0,0,0,0,0,0,0,0,64,126,0,0,64,138,0,0,0,0,0,0,0,0,0,0,88,126,0,0,168,141,0,0,0,0,0,0,0,0,0,0,112,126,0,0,0,0,0,0,136,126,0,0,112,142,0,0,0,0,0,0,0,0,0,0,160,126,0,0,72,140,0,0,0,0,0,0,0,0,0,0,184,126,0,0,144,142,0,0,0,0,0,0,0,0,0,0,208,126,0,0,0,0,0,0,232,126,0,0,208,139,0,0,0,0,0,0,0,0,0,0,0,127,0,0,88,142,0,0,0,0,0,0,0,0,0,0,24,127,0,0,0,0,0,0,48,127,0,0,40,139,0,0,0,0,0,0,0,0,0,0,80,127,0,0,40,139,0,0,0,0,0,0,0,0,0,0,112,127,0,0,80,134,0,0,0,0,0,0,0,0,0,0,136,127,0,0,32,142,0,0,0,0,0,0,0,0,0,0,160,127,0,0,64,138,0,0,0,0,0,0,0,0,0,0,184,127,0,0,48,137,0,0,0,0,0,0,0,0,0,0,208,127,0,0,80,134,0,0,0,0,0,0,0,0,0,0,232,127,0,0,0,0,0,0,0,128,0,0,0,0,0,0,24,128,0,0,32,142,0,0,0,0,0,0,0,0,0,0,48,128,0,0,72,140,0,0,0,0,0,0,0,0,0,0,72,128,0,0,40,139,0,0,0,0,0,0,0,0,0,0,96,128,0,0,16,136,0,0,0,0,0,0,0,0,0,0,120,128,0,0,120,136,0,0,0,0,0,0,0,0,0,0,144,128,0,0,80,134,0,0,0,0,0,0,0,0,0,0,168,128,0,0,0,0,0,0,192,128,0,0,128,76,0,0,216,128,0,0,0,0,0,0,1,0,0,0,64,142,0,0,2,4,0,0,0,0,0,0,240,128,0,0,0,0,0,0,8,129,0,0,72,140,0,0,0,0,0,0,0,0,0,0,32,129,0,0,152,135,0,0,0,0,0,0,0,0,0,0,56,129,0,0,192,135,0,0,0,0,0,0,0,0,0,0,80,129,0,0,0,0,0,0,104,129,0,0,0,0,0,0,128,129,0,0,104,139,0,0,0,0,0,0,128,76,0,0,152,129,0,0,0,0,0,0,2,0,0,0,208,139,0,0,2,0,0,0,32,136,0,0,2,4,0,0,0,0,0,0,176,129,0,0,160,140,0,0,0,0,0,0,0,0,0,0,200,129,0,0,88,134,0,0,0,0,0,0,0,0,0,0,224,129,0,0,88,134,0,0,0,0,0,0,0,0,0,0,248,129,0,0,80,139,0,0,0,0,0,0,0,0,0,0,16,130,0,0,40,139,0,0,0,0,0,0,0,0,0,0,40,130,0,0,184,141,0,0,0,0,0,0,0,0,0,0,64,130,0,0,184,141,0,0,0,0,0,0,0,0,0,0,88,130,0,0,0,0,0,0,112,130,0,0,0,0,0,0,136,130,0,0,152,135,0,0,0,0,0,0,0,0,0,0,160,130,0,0,192,135,0,0,0,0,0,0,0,0,0,0,184,130,0,0,224,137,0,0,0,0,0,0,0,0,0,0,208,130,0,0,112,138,0,0,0,0,0,0,0,0,0,0,232,130,0,0,152,142,0,0,0,0,0,0,0,0,0,0,0,131,0,0,72,141,0,0,0,0,0,0,0,0,0,0,24,131,0,0,248,138,0,0,0,0,0,0,0,0,0,0,48,131,0,0,80,141,0,0,0,0,0,0,0,0,0,0,72,131,0,0,48,142,0,0,0,0,0,0,0,0,0,0,96,131,0,0,48,142,0,0,0,0,0,0,0,0,0,0,120,131,0,0,232,136,0,0,0,0,0,0,0,0,0,0,144,131,0,0,0,0,0,0,168,131,0,0,8,142,0,0,0,0,0,0,0,0,0,0,192,131,0,0,80,141,0,0,0,0,0,0,0,0,0,0,216,131,0,0,248,138,0,0,0,0,0,0,0,0,0,0,240,131,0,0,0,0,0,0,0,132,0,0,248,138,0,0,0,0,0,0,0,0,0,0,16,132,0,0,0,0,0,0,32,132,0,0,152,140,0,0,0,0,0,0,0,0,0,0,48,132,0,0,80,141,0,0,0,0,0,0,0,0,0,0,64,132,0,0,32,142,0,0,0,0,0,0,0,0,0,0,80,132,0,0,0,0,0,0,96,132,0,0,0,0,0,0,112,132,0,0,224,142,0,0,0,0,0,0,0,0,0,0,128,132,0,0,224,142,0,0,0,0,0,0,0,0,0,0,144,132,0,0,88,139,0,0,0,0,0,0,0,0,0,0,160,132,0,0,152,140,0,0,0,0,0,0,0,0,0,0,176,132,0,0,248,138,0,0,0,0,0,0,0,0,0,0,192,132,0,0,224,137,0,0,0,0,0,0,160,167,0,0,0,0,0,0]) +, "i8", ALLOC_NONE, Runtime.GLOBAL_BASE) +var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); +assert(tempDoublePtr % 8 == 0); +function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much + HEAP8[tempDoublePtr] = HEAP8[ptr]; + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; +} +function copyTempDouble(ptr) { + HEAP8[tempDoublePtr] = HEAP8[ptr]; + HEAP8[tempDoublePtr+1] = HEAP8[ptr+1]; + HEAP8[tempDoublePtr+2] = HEAP8[ptr+2]; + HEAP8[tempDoublePtr+3] = HEAP8[ptr+3]; + HEAP8[tempDoublePtr+4] = HEAP8[ptr+4]; + HEAP8[tempDoublePtr+5] = HEAP8[ptr+5]; + HEAP8[tempDoublePtr+6] = HEAP8[ptr+6]; + HEAP8[tempDoublePtr+7] = HEAP8[ptr+7]; +} + function ___gxx_personality_v0() { + } + function ___cxa_guard_acquire(variable) { + if (!HEAP8[(variable)]) { // ignore SAFE_HEAP stuff because llvm mixes i64 and i8 here + HEAP8[(variable)]=1; + return 1; + } + return 0; + } + function ___cxa_guard_abort() {} + function ___cxa_guard_release() {} + Module["_memcpy"] = _memcpy;var _llvm_memcpy_p0i8_p0i8_i32=_memcpy; + function __exit(status) { + // void _exit(int status); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html + Module.print('exit(' + status + ') called'); + Module['exit'](status); + }function _exit(status) { + __exit(status); + }function __ZSt9terminatev() { + _exit(-1234); + } + function __ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback() { + Module['printErr']('missing function: _ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback'); abort(-1); + } + function __ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback() { + Module['printErr']('missing function: _ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback'); abort(-1); + } + function ___cxa_pure_virtual() { + ABORT = true; + throw 'Pure virtual function called!'; + } + var _sqrtf=Math.sqrt; + var _acosf=Math.acos; + var _sinf=Math.sin; + var _cosf=Math.cos; + var _llvm_pow_f32=Math.pow; + function _fmod(x, y) { + return x % y; + }var _fmodf=_fmod; + var _fabsf=Math.abs; + var _asinf=Math.asin; + var _atan2f=Math.atan2; + Module["_memset"] = _memset;var _llvm_memset_p0i8_i64=_memset; + function _llvm_lifetime_start() {} + function _llvm_lifetime_end() {} + var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:35,EIDRM:36,ECHRNG:37,EL2NSYNC:38,EL3HLT:39,EL3RST:40,ELNRNG:41,EUNATCH:42,ENOCSI:43,EL2HLT:44,EDEADLK:45,ENOLCK:46,EBADE:50,EBADR:51,EXFULL:52,ENOANO:53,EBADRQC:54,EBADSLT:55,EDEADLOCK:56,EBFONT:57,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:74,EDOTDOT:76,EBADMSG:77,ENOTUNIQ:80,EBADFD:81,EREMCHG:82,ELIBACC:83,ELIBBAD:84,ELIBSCN:85,ELIBMAX:86,ELIBEXEC:87,ENOSYS:88,ENOTEMPTY:90,ENAMETOOLONG:91,ELOOP:92,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:106,EPROTOTYPE:107,ENOTSOCK:108,ENOPROTOOPT:109,ESHUTDOWN:110,ECONNREFUSED:111,EADDRINUSE:112,ECONNABORTED:113,ENETUNREACH:114,ENETDOWN:115,ETIMEDOUT:116,EHOSTDOWN:117,EHOSTUNREACH:118,EINPROGRESS:119,EALREADY:120,EDESTADDRREQ:121,EMSGSIZE:122,EPROTONOSUPPORT:123,ESOCKTNOSUPPORT:124,EADDRNOTAVAIL:125,ENETRESET:126,EISCONN:127,ENOTCONN:128,ETOOMANYREFS:129,EUSERS:131,EDQUOT:132,ESTALE:133,ENOTSUP:134,ENOMEDIUM:135,EILSEQ:138,EOVERFLOW:139,ECANCELED:140,ENOTRECOVERABLE:141,EOWNERDEAD:142,ESTRPIPE:143}; + var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"No message of desired type",36:"Identifier removed",37:"Channel number out of range",38:"Level 2 not synchronized",39:"Level 3 halted",40:"Level 3 reset",41:"Link number out of range",42:"Protocol driver not attached",43:"No CSI structure available",44:"Level 2 halted",45:"Deadlock condition",46:"No record locks available",50:"Invalid exchange",51:"Invalid request descriptor",52:"Exchange full",53:"No anode",54:"Invalid request code",55:"Invalid slot",56:"File locking deadlock error",57:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",74:"Multihop attempted",76:"Cross mount point (not really error)",77:"Trying to read unreadable message",80:"Given log. name not unique",81:"f.d. invalid for this operation",82:"Remote address changed",83:"Can access a needed shared lib",84:"Accessing a corrupted shared lib",85:".lib section in a.out corrupted",86:"Attempting to link in too many libs",87:"Attempting to exec a shared library",88:"Function not implemented",90:"Directory not empty",91:"File or path name too long",92:"Too many symbolic links",95:"Operation not supported on transport endpoint",96:"Protocol family not supported",104:"Connection reset by peer",105:"No buffer space available",106:"Address family not supported by protocol family",107:"Protocol wrong type for socket",108:"Socket operation on non-socket",109:"Protocol not available",110:"Can't send after socket shutdown",111:"Connection refused",112:"Address already in use",113:"Connection aborted",114:"Network is unreachable",115:"Network interface is not configured",116:"Connection timed out",117:"Host is down",118:"Host is unreachable",119:"Connection already in progress",120:"Socket already connected",121:"Destination address required",122:"Message too long",123:"Unknown protocol",124:"Socket type not supported",125:"Address not available",126:"Connection reset by network",127:"Socket is already connected",128:"Socket is not connected",129:"Too many references",131:"Too many users",132:"Quota exceeded",133:"Stale file handle",134:"Not supported",135:"No medium (in tape drive)",138:"Illegal byte sequence",139:"Value too large for defined data type",140:"Operation canceled",141:"State not recoverable",142:"Previous owner died",143:"Streams pipe error"}; + var ___errno_state=0;function ___setErrNo(value) { + // For convenient setting and returning of errno. + HEAP32[((___errno_state)>>2)]=value + return value; + } + var VFS=undefined; + var PATH={splitPath:function (filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + },normalizeArray:function (parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + return parts; + },normalize:function (path) { + var isAbsolute = path.charAt(0) === '/', + trailingSlash = path.substr(-1) === '/'; + // Normalize the path + path = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), !isAbsolute).join('/'); + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + return (isAbsolute ? '/' : '') + path; + },dirname:function (path) { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + },basename:function (path, ext) { + // EMSCRIPTEN return '/'' for '/', not an empty string + if (path === '/') return '/'; + var f = PATH.splitPath(path)[2]; + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; + },join:function () { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.filter(function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); + },resolve:function () { + var resolvedPath = '', + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : FS.cwd(); + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; + },relative:function (from, to) { + from = PATH.resolve(from).substr(1); + to = PATH.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join('/'); + }}; + var TTY={ttys:[],register:function (dev, ops) { + TTY.ttys[dev] = { input: [], output: [], ops: ops }; + FS.registerDevice(dev, TTY.stream_ops); + },stream_ops:{open:function (stream) { + // this wouldn't be required if the library wasn't eval'd at first... + if (!TTY.utf8) { + TTY.utf8 = new Runtime.UTF8Processor(); + } + var tty = TTY.ttys[stream.node.rdev]; + if (!tty) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + stream.tty = tty; + stream.seekable = false; + },close:function (stream) { + // flush any pending line data + if (stream.tty.output.length) { + stream.tty.ops.put_char(stream.tty, 10); + } + },read:function (stream, buffer, offset, length, pos /* ignored */) { + if (!stream.tty || !stream.tty.ops.get_char) { + throw new FS.ErrnoError(ERRNO_CODES.ENXIO); + } + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = stream.tty.ops.get_char(stream.tty); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + },write:function (stream, buffer, offset, length, pos) { + if (!stream.tty || !stream.tty.ops.put_char) { + throw new FS.ErrnoError(ERRNO_CODES.ENXIO); + } + for (var i = 0; i < length; i++) { + try { + stream.tty.ops.put_char(stream.tty, buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + }},default_tty_ops:{get_char:function (tty) { + if (!tty.input.length) { + var result = null; + if (ENVIRONMENT_IS_NODE) { + if (process.stdin.destroyed) { + return undefined; + } + result = process.stdin.read(); + } else if (typeof window != 'undefined' && + typeof window.prompt == 'function') { + // Browser. + result = window.prompt('Input: '); // returns null on cancel + if (result !== null) { + result += '\n'; + } + } else if (typeof readline == 'function') { + // Command line. + result = readline(); + if (result !== null) { + result += '\n'; + } + } + if (!result) { + return null; + } + tty.input = intArrayFromString(result, true); + } + return tty.input.shift(); + },put_char:function (tty, val) { + if (val === null || val === 10) { + Module['print'](tty.output.join('')); + tty.output = []; + } else { + tty.output.push(TTY.utf8.processCChar(val)); + } + }},default_tty1_ops:{put_char:function (tty, val) { + if (val === null || val === 10) { + Module['printErr'](tty.output.join('')); + tty.output = []; + } else { + tty.output.push(TTY.utf8.processCChar(val)); + } + }}}; + var MEMFS={CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,ensureFlexible:function (node) { + if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) { + var contents = node.contents; + node.contents = Array.prototype.slice.call(contents); + if (node.contentMode === MEMFS.CONTENT_OWNING) { + assert(contents.byteOffset); + Module['_free'](contents.byteOffset); + } + node.contentMode = MEMFS.CONTENT_FLEXIBLE; + } + },mount:function (mount) { + return MEMFS.create_node(null, '/', 0040000 | 0777, 0); + },create_node:function (parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + // no supported + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + var node = FS.createNode(parent, name, mode, dev); + if (FS.isDir(node.mode)) { + node.node_ops = { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + lookup: MEMFS.node_ops.lookup, + mknod: MEMFS.node_ops.mknod, + mknod: MEMFS.node_ops.mknod, + rename: MEMFS.node_ops.rename, + unlink: MEMFS.node_ops.unlink, + rmdir: MEMFS.node_ops.rmdir, + readdir: MEMFS.node_ops.readdir, + symlink: MEMFS.node_ops.symlink + }; + node.stream_ops = { + llseek: MEMFS.stream_ops.llseek + }; + node.contents = {}; + } else if (FS.isFile(node.mode)) { + node.node_ops = { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }; + node.stream_ops = { + llseek: MEMFS.stream_ops.llseek, + read: MEMFS.stream_ops.read, + write: MEMFS.stream_ops.write, + allocate: MEMFS.stream_ops.allocate, + mmap: MEMFS.stream_ops.mmap + }; + node.contents = []; + node.contentMode = MEMFS.CONTENT_FLEXIBLE; + } else if (FS.isLink(node.mode)) { + node.node_ops = { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr, + readlink: MEMFS.node_ops.readlink + }; + node.stream_ops = {}; + } else if (FS.isChrdev(node.mode)) { + node.node_ops = { + getattr: MEMFS.node_ops.getattr, + setattr: MEMFS.node_ops.setattr + }; + node.stream_ops = FS.chrdev_stream_ops; + } + node.timestamp = Date.now(); + // add the new node to the parent + if (parent) { + parent.contents[name] = node; + } + return node; + },node_ops:{getattr:function (node) { + var attr = {}; + // device numbers reuse inode numbers. + attr.dev = FS.isChrdev(node.mode) ? node.id : 1; + attr.ino = node.id; + attr.mode = node.mode; + attr.nlink = 1; + attr.uid = 0; + attr.gid = 0; + attr.rdev = node.rdev; + if (FS.isDir(node.mode)) { + attr.size = 4096; + } else if (FS.isFile(node.mode)) { + attr.size = node.contents.length; + } else if (FS.isLink(node.mode)) { + attr.size = node.link.length; + } else { + attr.size = 0; + } + attr.atime = new Date(node.timestamp); + attr.mtime = new Date(node.timestamp); + attr.ctime = new Date(node.timestamp); + // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), + // but this is not required by the standard. + attr.blksize = 4096; + attr.blocks = Math.ceil(attr.size / attr.blksize); + return attr; + },setattr:function (node, attr) { + if (attr.mode !== undefined) { + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + node.timestamp = attr.timestamp; + } + if (attr.size !== undefined) { + MEMFS.ensureFlexible(node); + var contents = node.contents; + if (attr.size < contents.length) contents.length = attr.size; + else while (attr.size > contents.length) contents.push(0); + } + },lookup:function (parent, name) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + },mknod:function (parent, name, mode, dev) { + return MEMFS.create_node(parent, name, mode, dev); + },rename:function (old_node, new_dir, new_name) { + // if we're overwriting a directory at new_name, make sure it's empty. + if (FS.isDir(old_node.mode)) { + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + } + if (new_node) { + for (var i in new_node.contents) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); + } + } + } + // do the internal rewiring + delete old_node.parent.contents[old_node.name]; + old_node.name = new_name; + new_dir.contents[new_name] = old_node; + },unlink:function (parent, name) { + delete parent.contents[name]; + },rmdir:function (parent, name) { + var node = FS.lookupNode(parent, name); + for (var i in node.contents) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); + } + delete parent.contents[name]; + },readdir:function (node) { + var entries = ['.', '..'] + for (var key in node.contents) { + if (!node.contents.hasOwnProperty(key)) { + continue; + } + entries.push(key); + } + return entries; + },symlink:function (parent, newname, oldpath) { + var node = MEMFS.create_node(parent, newname, 0777 | 0120000, 0); + node.link = oldpath; + return node; + },readlink:function (node) { + if (!FS.isLink(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + return node.link; + }},stream_ops:{read:function (stream, buffer, offset, length, position) { + var contents = stream.node.contents; + var size = Math.min(contents.length - position, length); + if (size > 8 && contents.subarray) { // non-trivial, and typed array + buffer.set(contents.subarray(position, position + size), offset); + } else + { + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } + return size; + },write:function (stream, buffer, offset, length, position, canOwn) { + var node = stream.node; + node.timestamp = Date.now(); + var contents = node.contents; + if (length && contents.length === 0 && position === 0 && buffer.subarray) { + // just replace it with the new data + assert(buffer.length); + if (canOwn && buffer.buffer === HEAP8.buffer && offset === 0) { + node.contents = buffer; // this is a subarray of the heap, and we can own it + node.contentMode = MEMFS.CONTENT_OWNING; + } else { + node.contents = new Uint8Array(buffer.subarray(offset, offset+length)); + node.contentMode = MEMFS.CONTENT_FIXED; + } + return length; + } + MEMFS.ensureFlexible(node); + var contents = node.contents; + while (contents.length < position) contents.push(0); + for (var i = 0; i < length; i++) { + contents[position + i] = buffer[offset + i]; + } + return length; + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + position += stream.node.contents.length; + } + } + if (position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + stream.ungotten = []; + stream.position = position; + return position; + },allocate:function (stream, offset, length) { + MEMFS.ensureFlexible(stream.node); + var contents = stream.node.contents; + var limit = offset + length; + while (limit > contents.length) contents.push(0); + },mmap:function (stream, buffer, offset, length, position, prot, flags) { + if (!FS.isFile(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + var ptr; + var allocated; + var contents = stream.node.contents; + // Only make a new copy when MAP_PRIVATE is specified. + if ( !(flags & 0x02) && + (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { + // We can't emulate MAP_SHARED when the file is not backed by the buffer + // we're mapping to (e.g. the HEAP buffer). + allocated = false; + ptr = contents.byteOffset; + } else { + // Try to avoid unnecessary slices. + if (position > 0 || position + length < contents.length) { + if (contents.subarray) { + contents = contents.subarray(position, position + length); + } else { + contents = Array.prototype.slice.call(contents, position, position + length); + } + } + allocated = true; + ptr = _malloc(length); + if (!ptr) { + throw new FS.ErrnoError(ERRNO_CODES.ENOMEM); + } + buffer.set(contents, ptr); + } + return { ptr: ptr, allocated: allocated }; + }}}; + var _stdin=allocate(1, "i32*", ALLOC_STATIC); + var _stdout=allocate(1, "i32*", ALLOC_STATIC); + var _stderr=allocate(1, "i32*", ALLOC_STATIC); + function _fflush(stream) { + // int fflush(FILE *stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html + // we don't currently perform any user-space buffering of data + }var FS={root:null,nodes:[null],devices:[null],streams:[null],nextInode:1,name_table:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:function ErrnoError(errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + this.message = ERRNO_MESSAGES[errno]; + },handleFSError:function (e) { + if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + new Error().stack; + return ___setErrNo(e.errno); + },hashName:function (parentid, name) { + var hash = 0; + for (var i = 0; i < name.length; i++) { + hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; + } + return ((parentid + hash) >>> 0) % FS.name_table.length; + },hashAddNode:function (node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.name_table[hash]; + FS.name_table[hash] = node; + },hashRemoveNode:function (node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.name_table[hash] === node) { + FS.name_table[hash] = node.name_next; + } else { + var current = FS.name_table[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + },lookupNode:function (parent, name) { + var err = FS.mayLookup(parent); + if (err) { + throw new FS.ErrnoError(err); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.name_table[hash]; node; node = node.name_next) { + if (node.parent.id === parent.id && node.name === name) { + return node; + } + } + // if we failed to find it in the cache, call into the VFS + return FS.lookup(parent, name); + },createNode:function (parent, name, mode, rdev) { + var node = { + id: FS.nextInode++, + name: name, + mode: mode, + node_ops: {}, + stream_ops: {}, + rdev: rdev, + parent: null, + mount: null + }; + if (!parent) { + parent = node; // root node sets parent to itself + } + node.parent = parent; + node.mount = parent.mount; + // compatibility + var readMode = 292 | 73; + var writeMode = 146; + // NOTE we must use Object.defineProperties instead of individual calls to + // Object.defineProperty in order to make closure compiler happy + Object.defineProperties(node, { + read: { + get: function() { return (node.mode & readMode) === readMode; }, + set: function(val) { val ? node.mode |= readMode : node.mode &= ~readMode; } + }, + write: { + get: function() { return (node.mode & writeMode) === writeMode; }, + set: function(val) { val ? node.mode |= writeMode : node.mode &= ~writeMode; } + }, + isFolder: { + get: function() { return FS.isDir(node.mode); }, + }, + isDevice: { + get: function() { return FS.isChrdev(node.mode); }, + }, + }); + FS.hashAddNode(node); + return node; + },destroyNode:function (node) { + FS.hashRemoveNode(node); + },isRoot:function (node) { + return node === node.parent; + },isMountpoint:function (node) { + return node.mounted; + },isFile:function (mode) { + return (mode & 0170000) === 0100000; + },isDir:function (mode) { + return (mode & 0170000) === 0040000; + },isLink:function (mode) { + return (mode & 0170000) === 0120000; + },isChrdev:function (mode) { + return (mode & 0170000) === 0020000; + },isBlkdev:function (mode) { + return (mode & 0170000) === 0060000; + },isFIFO:function (mode) { + return (mode & 0170000) === 0010000; + },cwd:function () { + return FS.currentPath; + },lookupPath:function (path, opts) { + path = PATH.resolve(FS.currentPath, path); + opts = opts || { recurse_count: 0 }; + if (opts.recurse_count > 8) { // max recursive lookup of 8 + throw new FS.ErrnoError(ERRNO_CODES.ELOOP); + } + // split the path + var parts = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), false); + // start at the root + var current = FS.root; + var current_path = '/'; + for (var i = 0; i < parts.length; i++) { + var islast = (i === parts.length-1); + if (islast && opts.parent) { + // stop resolving + break; + } + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join(current_path, parts[i]); + // jump to the mount's root node if this is a mountpoint + if (FS.isMountpoint(current)) { + current = current.mount.root; + } + // follow symlinks + // by default, lookupPath will not follow a symlink if it is the final path component. + // setting opts.follow = true will override this behavior. + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH.resolve(PATH.dirname(current_path), link); + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); + current = lookup.node; + if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). + throw new FS.ErrnoError(ERRNO_CODES.ELOOP); + } + } + } + } + return { path: current_path, node: current }; + },getPath:function (node) { + var path; + while (true) { + if (FS.isRoot(node)) { + return path ? PATH.join(node.mount.mountpoint, path) : node.mount.mountpoint; + } + path = path ? PATH.join(node.name, path) : node.name; + node = node.parent; + } + },flagModes:{"r":0,"rs":8192,"r+":2,"w":1537,"wx":3585,"xw":3585,"w+":1538,"wx+":3586,"xw+":3586,"a":521,"ax":2569,"xa":2569,"a+":522,"ax+":2570,"xa+":2570},modeStringToFlags:function (str) { + var flags = FS.flagModes[str]; + if (typeof flags === 'undefined') { + throw new Error('Unknown file open mode: ' + str); + } + return flags; + },flagsToPermissionString:function (flag) { + var accmode = flag & 3; + var perms = ['r', 'w', 'rw'][accmode]; + if ((flag & 1024)) { + perms += 'w'; + } + return perms; + },nodePermissions:function (node, perms) { + if (FS.ignorePermissions) { + return 0; + } + // return 0 if any user, group or owner bits are set. + if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { + return ERRNO_CODES.EACCES; + } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { + return ERRNO_CODES.EACCES; + } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { + return ERRNO_CODES.EACCES; + } + return 0; + },mayLookup:function (dir) { + return FS.nodePermissions(dir, 'x'); + },mayMknod:function (mode) { + switch (mode & 0170000) { + case 0100000: + case 0020000: + case 0060000: + case 0010000: + case 0140000: + return 0; + default: + return ERRNO_CODES.EINVAL; + } + },mayCreate:function (dir, name) { + try { + var node = FS.lookupNode(dir, name); + return ERRNO_CODES.EEXIST; + } catch (e) { + } + return FS.nodePermissions(dir, 'wx'); + },mayDelete:function (dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var err = FS.nodePermissions(dir, 'wx'); + if (err) { + return err; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return ERRNO_CODES.ENOTDIR; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.currentPath) { + return ERRNO_CODES.EBUSY; + } + } else { + if (FS.isDir(node.mode)) { + return ERRNO_CODES.EISDIR; + } + } + return 0; + },mayOpen:function (node, flags) { + if (!node) { + return ERRNO_CODES.ENOENT; + } + if (FS.isLink(node.mode)) { + return ERRNO_CODES.ELOOP; + } else if (FS.isDir(node.mode)) { + if ((flags & 3) !== 0 || // opening for write + (flags & 1024)) { + return ERRNO_CODES.EISDIR; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + },chrdev_stream_ops:{open:function (stream) { + var device = FS.getDevice(stream.node.rdev); + // override node's stream ops with the device's + stream.stream_ops = device.stream_ops; + // forward the open call + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + },llseek:function () { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + }},major:function (dev) { + return ((dev) >> 8); + },minor:function (dev) { + return ((dev) & 0xff); + },makedev:function (ma, mi) { + return ((ma) << 8 | (mi)); + },registerDevice:function (dev, ops) { + FS.devices[dev] = { stream_ops: ops }; + },getDevice:function (dev) { + return FS.devices[dev]; + },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { + fd_start = fd_start || 1; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(ERRNO_CODES.EMFILE); + },getStream:function (fd) { + return FS.streams[fd]; + },createStream:function (stream, fd_start, fd_end) { + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + // compatibility + Object.defineProperties(stream, { + object: { + get: function() { return stream.node; }, + set: function(val) { stream.node = val; } + }, + isRead: { + get: function() { return (stream.flags & 3) !== 1; } + }, + isWrite: { + get: function() { return (stream.flags & 3) !== 0; } + }, + isAppend: { + get: function() { return (stream.flags & 8); } + } + }); + FS.streams[fd] = stream; + return stream; + },closeStream:function (fd) { + FS.streams[fd] = null; + },getMode:function (canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + },joinPath:function (parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == '/') path = path.substr(1); + return path; + },absolutePath:function (relative, base) { + return PATH.resolve(base, relative); + },standardizePath:function (path) { + return PATH.normalize(path); + },findObject:function (path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + ___setErrNo(ret.error); + return null; + } + },analyzePath:function (path, dontResolveLastLink) { + // operate from within the context of the symlink's target + try { + var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + path = lookup.path; + } catch (e) { + } + var ret = { + isRoot: false, exists: false, error: 0, name: null, path: null, object: null, + parentExists: false, parentPath: null, parentObject: null + }; + try { + var lookup = FS.lookupPath(path, { parent: true }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === '/'; + } catch (e) { + ret.error = e.errno; + }; + return ret; + },createFolder:function (parent, name, canRead, canWrite) { + var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode); + },createPath:function (parent, path, canRead, canWrite) { + parent = typeof parent === 'string' ? parent : FS.getPath(parent); + var parts = path.split('/').reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join(parent, part); + try { + FS.mkdir(current, 0777); + } catch (e) { + // ignore EEXIST + } + parent = current; + } + return current; + },createFile:function (parent, name, properties, canRead, canWrite) { + var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { + var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data === 'string') { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + // make sure we can write to the file + FS.chmod(path, mode | 146); + var stream = FS.open(path, 'w'); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(path, mode); + } + return node; + },createDevice:function (parent, name, input, output) { + var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = input && output ? 0777 : (input ? 0333 : 0555); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + // Create a fake device that a set of stream ops to emulate + // the old behavior. + FS.registerDevice(dev, { + open: function(stream) { + stream.seekable = false; + }, + close: function(stream) { + // flush any pending line data + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: function(stream, buffer, offset, length, pos /* ignored */) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + if (result === undefined && bytesRead === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EAGAIN); + } + if (result === null || result === undefined) break; + bytesRead++; + buffer[offset+i] = result; + } + if (bytesRead) { + stream.node.timestamp = Date.now(); + } + return bytesRead; + }, + write: function(stream, buffer, offset, length, pos) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + },createLink:function (parent, name, target, canRead, canWrite) { + var path = PATH.join(typeof parent === 'string' ? parent : FS.getPath(parent), name); + return FS.symlink(target, path); + },forceLoadFile:function (obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = true; + if (typeof XMLHttpRequest !== 'undefined') { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (Module['read']) { + // Command-line. + try { + // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as + // read() will try to parse UTF8. + obj.contents = intArrayFromString(Module['read'](obj.url), true); + } catch (e) { + success = false; + } + } else { + throw new Error('Cannot load without read() or XMLHttpRequest.'); + } + if (!success) ___setErrNo(ERRNO_CODES.EIO); + return success; + },createLazyFile:function (parent, name, url, canRead, canWrite) { + if (typeof XMLHttpRequest !== 'undefined') { + if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; + // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. + var LazyUint8Array = function() { + this.lengthKnown = false; + this.chunks = []; // Loaded chunks. Index is the chunk number + } + LazyUint8Array.prototype.get = function(idx) { + if (idx > this.length-1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = Math.floor(idx / this.chunkSize); + return this.getter(chunkNum)[chunkOffset]; + } + LazyUint8Array.prototype.setDataGetter = function(getter) { + this.getter = getter; + } + LazyUint8Array.prototype.cacheLength = function() { + // Find length + var xhr = new XMLHttpRequest(); + xhr.open('HEAD', url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var chunkSize = 1024*1024; // Chunk size in bytes + if (!hasByteServing) chunkSize = datalength; + // Function to get a range from the remote URL. + var doXHR = (function(from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); + // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + // Some hints to the browser that we want binary data. + if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + } + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } else { + return intArrayFromString(xhr.responseText || '', true); + } + }); + var lazyArray = this; + lazyArray.setDataGetter(function(chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum+1) * chunkSize - 1; // including this byte + end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + } + var lazyArray = new LazyUint8Array(); + Object.defineProperty(lazyArray, "length", { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }); + Object.defineProperty(lazyArray, "chunkSize", { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + }); + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + var node = FS.createFile(parent, name, properties, canRead, canWrite); + // This is a total hack, but I want to get this lazy file code out of the + // core of MEMFS. If we want to keep this lazy file concept I feel it should + // be its own thin LAZYFS proxying calls to MEMFS. + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + // override each stream op with one that tries to force load the lazy file first + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + return fn.apply(null, arguments); + }; + }); + // use a custom read function + stream_ops.read = function(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + var contents = stream.node.contents; + var size = Math.min(contents.length - position, length); + if (contents.slice) { // normal array + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) { + Browser.init(); + // TODO we should allow people to just pass in a complete filename instead + // of parent and name being that we just join them anyways + var fullname = PATH.resolve(PATH.join(parent, name)); + function processData(byteArray) { + function finish(byteArray) { + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency('cp ' + fullname); + } + var handled = false; + Module['preloadPlugins'].forEach(function(plugin) { + if (handled) return; + if (plugin['canHandle'](fullname)) { + plugin['handle'](byteArray, fullname, finish, function() { + if (onerror) onerror(); + removeRunDependency('cp ' + fullname); + }); + handled = true; + } + }); + if (!handled) finish(byteArray); + } + addRunDependency('cp ' + fullname); + if (typeof url == 'string') { + Browser.asyncLoad(url, function(byteArray) { + processData(byteArray); + }, onerror); + } else { + processData(url); + } + },createDefaultDirectories:function () { + FS.mkdir('/tmp', 0777); + },createDefaultDevices:function () { + // create /dev + FS.mkdir('/dev', 0777); + // setup /dev/null + FS.registerDevice(FS.makedev(1, 3), { + read: function() { return 0; }, + write: function() { return 0; } + }); + FS.mkdev('/dev/null', 0666, FS.makedev(1, 3)); + // setup /dev/tty and /dev/tty1 + // stderr needs to print output using Module['printErr'] + // so we register a second tty just for it. + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev('/dev/tty', 0666, FS.makedev(5, 0)); + FS.mkdev('/dev/tty1', 0666, FS.makedev(6, 0)); + // we're not going to emulate the actual shm device, + // just create the tmp dirs that reside in it commonly + FS.mkdir('/dev/shm', 0777); + FS.mkdir('/dev/shm/tmp', 0777); + },createStandardStreams:function () { + // TODO deprecate the old functionality of a single + // input / output callback and that utilizes FS.createDevice + // and instead require a unique set of stream ops + // by default, we symlink the standard streams to the + // default tty devices. however, if the standard streams + // have been overwritten we create a unique device for + // them instead. + if (Module['stdin']) { + FS.createDevice('/dev', 'stdin', Module['stdin']); + } else { + FS.symlink('/dev/tty', '/dev/stdin'); + } + if (Module['stdout']) { + FS.createDevice('/dev', 'stdout', null, Module['stdout']); + } else { + FS.symlink('/dev/tty', '/dev/stdout'); + } + if (Module['stderr']) { + FS.createDevice('/dev', 'stderr', null, Module['stderr']); + } else { + FS.symlink('/dev/tty1', '/dev/stderr'); + } + // open default streams for the stdin, stdout and stderr devices + var stdin = FS.open('/dev/stdin', 'r'); + HEAP32[((_stdin)>>2)]=stdin.fd; + assert(stdin.fd === 1, 'invalid handle for stdin (' + stdin.fd + ')'); + var stdout = FS.open('/dev/stdout', 'w'); + HEAP32[((_stdout)>>2)]=stdout.fd; + assert(stdout.fd === 2, 'invalid handle for stdout (' + stdout.fd + ')'); + var stderr = FS.open('/dev/stderr', 'w'); + HEAP32[((_stderr)>>2)]=stderr.fd; + assert(stderr.fd === 3, 'invalid handle for stderr (' + stderr.fd + ')'); + },staticInit:function () { + FS.name_table = new Array(4096); + FS.root = FS.createNode(null, '/', 0040000 | 0777, 0); + FS.mount(MEMFS, {}, '/'); + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + },init:function (input, output, error) { + assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); + FS.init.initialized = true; + // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here + Module['stdin'] = input || Module['stdin']; + Module['stdout'] = output || Module['stdout']; + Module['stderr'] = error || Module['stderr']; + FS.createStandardStreams(); + },quit:function () { + FS.init.initialized = false; + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + },mount:function (type, opts, mountpoint) { + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + root: null + }; + var lookup; + if (mountpoint) { + lookup = FS.lookupPath(mountpoint, { follow: false }); + } + // create a root node for the fs + var root = type.mount(mount); + root.mount = mount; + mount.root = root; + // assign the mount info to the mountpoint's node + if (lookup) { + lookup.node.mount = mount; + lookup.node.mounted = true; + // compatibility update FS.root if we mount to / + if (mountpoint === '/') { + FS.root = mount.root; + } + } + return root; + },lookup:function (parent, name) { + return parent.node_ops.lookup(parent, name); + },mknod:function (path, mode, dev) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var err = FS.mayCreate(parent, name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return parent.node_ops.mknod(parent, name, mode, dev); + },create:function (path, mode) { + mode &= 4095; + mode |= 0100000; + return FS.mknod(path, mode, 0); + },mkdir:function (path, mode) { + mode &= 511 | 0001000; + mode |= 0040000; + return FS.mknod(path, mode, 0); + },mkdev:function (path, mode, dev) { + mode |= 0020000; + return FS.mknod(path, mode, dev); + },symlink:function (oldpath, newpath) { + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + var newname = PATH.basename(newpath); + var err = FS.mayCreate(parent, newname); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return parent.node_ops.symlink(parent, newname, oldpath); + },rename:function (old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + // parents must exist + var lookup, old_dir, new_dir; + try { + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + // need to be part of the same mount + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(ERRNO_CODES.EXDEV); + } + // source must exist + var old_node = FS.lookupNode(old_dir, old_name); + // old path should not be an ancestor of the new path + var relative = PATH.relative(old_path, new_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + // new path should not be an ancestor of the old path + relative = PATH.relative(new_path, old_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); + } + // see if the new path already exists + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + // not fatal + } + // early out if nothing needs to change + if (old_node === new_node) { + return; + } + // we'll need to delete the old entry + var isdir = FS.isDir(old_node.mode); + var err = FS.mayDelete(old_dir, old_name, isdir); + if (err) { + throw new FS.ErrnoError(err); + } + // need delete permissions if we'll be overwriting. + // need create permissions if new doesn't already exist. + err = new_node ? + FS.mayDelete(new_dir, new_name, isdir) : + FS.mayCreate(new_dir, new_name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + // if we are going to change the parent, check write permissions + if (new_dir !== old_dir) { + err = FS.nodePermissions(old_dir, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + } + // remove the node from the lookup hash + FS.hashRemoveNode(old_node); + // do the underlying fs rename + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + // add the node back to the hash (in case node_ops.rename + // changed its name) + FS.hashAddNode(old_node); + } + },rmdir:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, true); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + },readdir:function (path) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + return node.node_ops.readdir(node); + },unlink:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, false); + if (err) { + // POSIX says unlink should set EPERM, not EISDIR + if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + },readlink:function (path) { + var lookup = FS.lookupPath(path, { follow: false }); + var link = lookup.node; + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + return link.node_ops.readlink(link); + },stat:function (path, dontFollow) { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return node.node_ops.getattr(node); + },lstat:function (path) { + return FS.stat(path, true); + },chmod:function (path, mode, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + node.node_ops.setattr(node, { + mode: (mode & 4095) | (node.mode & ~4095), + timestamp: Date.now() + }); + },lchmod:function (path, mode) { + FS.chmod(path, mode, true); + },fchmod:function (fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + FS.chmod(stream.node, mode); + },chown:function (path, uid, gid, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + // we ignore the uid / gid for now + }); + },lchown:function (path, uid, gid) { + FS.chown(path, uid, gid, true); + },fchown:function (fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + FS.chown(stream.node, uid, gid); + },truncate:function (path, len) { + if (len < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var err = FS.nodePermissions(node, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + },ftruncate:function (fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if ((stream.flags & 3) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + FS.truncate(stream.node, len); + },utime:function (path, atime, mtime) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + },open:function (path, flags, mode, fd_start, fd_end) { + path = PATH.normalize(path); + flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === 'undefined' ? 0666 : mode; + if ((flags & 512)) { + mode = (mode & 4095) | 0100000; + } else { + mode = 0; + } + var node; + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 0200000) + }); + node = lookup.node; + path = lookup.path; + } catch (e) { + // ignore + } + // perhaps we need to create the node + if ((flags & 512)) { + if (node) { + // if O_CREAT and O_EXCL are set, error out if the node already exists + if ((flags & 2048)) { + throw new FS.ErrnoError(ERRNO_CODES.EEXIST); + } + } else { + // node doesn't exist, try to create it + node = FS.mknod(path, mode, 0); + } + } + if (!node) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + // can't truncate a device + if (FS.isChrdev(node.mode)) { + flags &= ~1024; + } + // check permissions + var err = FS.mayOpen(node, flags); + if (err) { + throw new FS.ErrnoError(err); + } + // do truncation if necessary + if ((flags & 1024)) { + FS.truncate(node, 0); + } + // register the stream with the filesystem + var stream = FS.createStream({ + path: path, + node: node, + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + // used by the file family libc calls (fopen, fwrite, ferror, etc.) + ungotten: [], + error: false + }, fd_start, fd_end); + // call the new stream's open function + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + return stream; + },close:function (stream) { + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + },llseek:function (stream, offset, whence) { + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + return stream.stream_ops.llseek(stream, offset, whence); + },read:function (stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 3) === 1) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var seeking = true; + if (typeof position === 'undefined') { + position = stream.position; + seeking = false; + } else if (!stream.seekable) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + },write:function (stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 3) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var seeking = true; + if (typeof position === 'undefined') { + position = stream.position; + seeking = false; + } else if (!stream.seekable) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + if (stream.flags & 8) { + // seek to the end before writing in append mode + FS.llseek(stream, 0, 2); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + return bytesWritten; + },allocate:function (stream, offset, length) { + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 3) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); + } + stream.stream_ops.allocate(stream, offset, length); + },mmap:function (stream, buffer, offset, length, position, prot, flags) { + // TODO if PROT is PROT_WRITE, make sure we have write access + if ((stream.flags & 3) === 1) { + throw new FS.ErrnoError(ERRNO_CODES.EACCES); + } + if (!stream.stream_ops.mmap) { + throw new FS.errnoError(ERRNO_CODES.ENODEV); + } + return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); + }}; + function _send(fd, buf, len, flags) { + var info = FS.getStream(fd); + if (!info) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + if (info.socket.readyState === WebSocket.CLOSING || info.socket.readyState === WebSocket.CLOSED) { + ___setErrNo(ERRNO_CODES.ENOTCONN); + return -1; + } else if (info.socket.readyState === WebSocket.CONNECTING) { + ___setErrNo(ERRNO_CODES.EAGAIN); + return -1; + } + info.sender(HEAPU8.subarray(buf, buf+len)); + return len; + } + function _pwrite(fildes, buf, nbyte, offset) { + // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html + var stream = FS.getStream(fildes); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + try { + var slab = HEAP8; + return FS.write(stream, slab, buf, nbyte, offset); + } catch (e) { + FS.handleFSError(e); + return -1; + } + }function _write(fildes, buf, nbyte) { + // ssize_t write(int fildes, const void *buf, size_t nbyte); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html + var stream = FS.getStream(fildes); + if (!stream) { + ___setErrNo(ERRNO_CODES.EBADF); + return -1; + } + if (stream && ('socket' in stream)) { + return _send(fildes, buf, nbyte, 0); + } + try { + var slab = HEAP8; + return FS.write(stream, slab, buf, nbyte); + } catch (e) { + FS.handleFSError(e); + return -1; + } + }function _fwrite(ptr, size, nitems, stream) { + // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html + var bytesToWrite = nitems * size; + if (bytesToWrite == 0) return 0; + var bytesWritten = _write(stream, ptr, bytesToWrite); + if (bytesWritten == -1) { + var streamObj = FS.getStream(stream); + if (streamObj) streamObj.error = true; + return 0; + } else { + return Math.floor(bytesWritten / size); + } + } + Module["_strlen"] = _strlen; + function __reallyNegative(x) { + return x < 0 || (x === 0 && (1/x) === -Infinity); + }function __formatString(format, varargs) { + var textIndex = format; + var argIndex = 0; + function getNextArg(type) { + // NOTE: Explicitly ignoring type safety. Otherwise this fails: + // int x = 4; printf("%c\n", (char)x); + var ret; + if (type === 'double') { + ret = HEAPF64[(((varargs)+(argIndex))>>3)]; + } else if (type == 'i64') { + ret = [HEAP32[(((varargs)+(argIndex))>>2)], + HEAP32[(((varargs)+(argIndex+8))>>2)]]; + argIndex += 8; // each 32-bit chunk is in a 64-bit block + } else { + type = 'i32'; // varargs are always i32, i64, or double + ret = HEAP32[(((varargs)+(argIndex))>>2)]; + } + argIndex += Math.max(Runtime.getNativeFieldSize(type), Runtime.getAlignSize(type, null, true)); + return ret; + } + var ret = []; + var curr, next, currArg; + while(1) { + var startTextIndex = textIndex; + curr = HEAP8[(textIndex)]; + if (curr === 0) break; + next = HEAP8[((textIndex+1)|0)]; + if (curr == 37) { + // Handle flags. + var flagAlwaysSigned = false; + var flagLeftAlign = false; + var flagAlternative = false; + var flagZeroPad = false; + flagsLoop: while (1) { + switch (next) { + case 43: + flagAlwaysSigned = true; + break; + case 45: + flagLeftAlign = true; + break; + case 35: + flagAlternative = true; + break; + case 48: + if (flagZeroPad) { + break flagsLoop; + } else { + flagZeroPad = true; + break; + } + default: + break flagsLoop; + } + textIndex++; + next = HEAP8[((textIndex+1)|0)]; + } + // Handle width. + var width = 0; + if (next == 42) { + width = getNextArg('i32'); + textIndex++; + next = HEAP8[((textIndex+1)|0)]; + } else { + while (next >= 48 && next <= 57) { + width = width * 10 + (next - 48); + textIndex++; + next = HEAP8[((textIndex+1)|0)]; + } + } + // Handle precision. + var precisionSet = false; + if (next == 46) { + var precision = 0; + precisionSet = true; + textIndex++; + next = HEAP8[((textIndex+1)|0)]; + if (next == 42) { + precision = getNextArg('i32'); + textIndex++; + } else { + while(1) { + var precisionChr = HEAP8[((textIndex+1)|0)]; + if (precisionChr < 48 || + precisionChr > 57) break; + precision = precision * 10 + (precisionChr - 48); + textIndex++; + } + } + next = HEAP8[((textIndex+1)|0)]; + } else { + var precision = 6; // Standard default. + } + // Handle integer sizes. WARNING: These assume a 32-bit architecture! + var argSize; + switch (String.fromCharCode(next)) { + case 'h': + var nextNext = HEAP8[((textIndex+2)|0)]; + if (nextNext == 104) { + textIndex++; + argSize = 1; // char (actually i32 in varargs) + } else { + argSize = 2; // short (actually i32 in varargs) + } + break; + case 'l': + var nextNext = HEAP8[((textIndex+2)|0)]; + if (nextNext == 108) { + textIndex++; + argSize = 8; // long long + } else { + argSize = 4; // long + } + break; + case 'L': // long long + case 'q': // int64_t + case 'j': // intmax_t + argSize = 8; + break; + case 'z': // size_t + case 't': // ptrdiff_t + case 'I': // signed ptrdiff_t or unsigned size_t + argSize = 4; + break; + default: + argSize = null; + } + if (argSize) textIndex++; + next = HEAP8[((textIndex+1)|0)]; + // Handle type specifier. + switch (String.fromCharCode(next)) { + case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': { + // Integer. + var signed = next == 100 || next == 105; + argSize = argSize || 4; + var currArg = getNextArg('i' + (argSize * 8)); + var argText; + // Flatten i64-1 [low, high] into a (slightly rounded) double + if (argSize == 8) { + currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117); + } + // Truncate to requested size. + if (argSize <= 4) { + var limit = Math.pow(256, argSize) - 1; + currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8); + } + // Format the number. + var currAbsArg = Math.abs(currArg); + var prefix = ''; + if (next == 100 || next == 105) { + argText = reSign(currArg, 8 * argSize, 1).toString(10); + } else if (next == 117) { + argText = unSign(currArg, 8 * argSize, 1).toString(10); + currArg = Math.abs(currArg); + } else if (next == 111) { + argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8); + } else if (next == 120 || next == 88) { + prefix = (flagAlternative && currArg != 0) ? '0x' : ''; + if (currArg < 0) { + // Represent negative numbers in hex as 2's complement. + currArg = -currArg; + argText = (currAbsArg - 1).toString(16); + var buffer = []; + for (var i = 0; i < argText.length; i++) { + buffer.push((0xF - parseInt(argText[i], 16)).toString(16)); + } + argText = buffer.join(''); + while (argText.length < argSize * 2) argText = 'f' + argText; + } else { + argText = currAbsArg.toString(16); + } + if (next == 88) { + prefix = prefix.toUpperCase(); + argText = argText.toUpperCase(); + } + } else if (next == 112) { + if (currAbsArg === 0) { + argText = '(nil)'; + } else { + prefix = '0x'; + argText = currAbsArg.toString(16); + } + } + if (precisionSet) { + while (argText.length < precision) { + argText = '0' + argText; + } + } + // Add sign if needed + if (flagAlwaysSigned) { + if (currArg < 0) { + prefix = '-' + prefix; + } else { + prefix = '+' + prefix; + } + } + // Add padding. + while (prefix.length + argText.length < width) { + if (flagLeftAlign) { + argText += ' '; + } else { + if (flagZeroPad) { + argText = '0' + argText; + } else { + prefix = ' ' + prefix; + } + } + } + // Insert the result into the buffer. + argText = prefix + argText; + argText.split('').forEach(function(chr) { + ret.push(chr.charCodeAt(0)); + }); + break; + } + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': { + // Float. + var currArg = getNextArg('double'); + var argText; + if (isNaN(currArg)) { + argText = 'nan'; + flagZeroPad = false; + } else if (!isFinite(currArg)) { + argText = (currArg < 0 ? '-' : '') + 'inf'; + flagZeroPad = false; + } else { + var isGeneral = false; + var effectivePrecision = Math.min(precision, 20); + // Convert g/G to f/F or e/E, as per: + // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html + if (next == 103 || next == 71) { + isGeneral = true; + precision = precision || 1; + var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10); + if (precision > exponent && exponent >= -4) { + next = ((next == 103) ? 'f' : 'F').charCodeAt(0); + precision -= exponent + 1; + } else { + next = ((next == 103) ? 'e' : 'E').charCodeAt(0); + precision--; + } + effectivePrecision = Math.min(precision, 20); + } + if (next == 101 || next == 69) { + argText = currArg.toExponential(effectivePrecision); + // Make sure the exponent has at least 2 digits. + if (/[eE][-+]\d$/.test(argText)) { + argText = argText.slice(0, -1) + '0' + argText.slice(-1); + } + } else if (next == 102 || next == 70) { + argText = currArg.toFixed(effectivePrecision); + if (currArg === 0 && __reallyNegative(currArg)) { + argText = '-' + argText; + } + } + var parts = argText.split('e'); + if (isGeneral && !flagAlternative) { + // Discard trailing zeros and periods. + while (parts[0].length > 1 && parts[0].indexOf('.') != -1 && + (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) { + parts[0] = parts[0].slice(0, -1); + } + } else { + // Make sure we have a period in alternative mode. + if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.'; + // Zero pad until required precision. + while (precision > effectivePrecision++) parts[0] += '0'; + } + argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : ''); + // Capitalize 'E' if needed. + if (next == 69) argText = argText.toUpperCase(); + // Add sign. + if (flagAlwaysSigned && currArg >= 0) { + argText = '+' + argText; + } + } + // Add padding. + while (argText.length < width) { + if (flagLeftAlign) { + argText += ' '; + } else { + if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) { + argText = argText[0] + '0' + argText.slice(1); + } else { + argText = (flagZeroPad ? '0' : ' ') + argText; + } + } + } + // Adjust case. + if (next < 97) argText = argText.toUpperCase(); + // Insert the result into the buffer. + argText.split('').forEach(function(chr) { + ret.push(chr.charCodeAt(0)); + }); + break; + } + case 's': { + // String. + var arg = getNextArg('i8*'); + var argLength = arg ? _strlen(arg) : '(null)'.length; + if (precisionSet) argLength = Math.min(argLength, precision); + if (!flagLeftAlign) { + while (argLength < width--) { + ret.push(32); + } + } + if (arg) { + for (var i = 0; i < argLength; i++) { + ret.push(HEAPU8[((arg++)|0)]); + } + } else { + ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true)); + } + if (flagLeftAlign) { + while (argLength < width--) { + ret.push(32); + } + } + break; + } + case 'c': { + // Character. + if (flagLeftAlign) ret.push(getNextArg('i8')); + while (--width > 0) { + ret.push(32); + } + if (!flagLeftAlign) ret.push(getNextArg('i8')); + break; + } + case 'n': { + // Write the length written so far to the next parameter. + var ptr = getNextArg('i32*'); + HEAP32[((ptr)>>2)]=ret.length + break; + } + case '%': { + // Literal percent sign. + ret.push(curr); + break; + } + default: { + // Unknown specifiers remain untouched. + for (var i = startTextIndex; i < textIndex + 2; i++) { + ret.push(HEAP8[(i)]); + } + } + } + textIndex += 2; + // TODO: Support a/A (hex float) and m (last error) specifiers. + // TODO: Support %1${specifier} for arg selection. + } else { + ret.push(curr); + textIndex += 1; + } + } + return ret; + }function _fprintf(stream, format, varargs) { + // int fprintf(FILE *restrict stream, const char *restrict format, ...); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html + var result = __formatString(format, varargs); + var stack = Runtime.stackSave(); + var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream); + Runtime.stackRestore(stack); + return ret; + }function _printf(format, varargs) { + // int printf(const char *restrict format, ...); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html + var stdout = HEAP32[((_stdout)>>2)]; + return _fprintf(stdout, format, varargs); + } + function _atexit(func, arg) { + __ATEXIT__.unshift({ func: func, arg: arg }); + }var ___cxa_atexit=_atexit; + var _llvm_memset_p0i8_i32=_memset; + function _llvm_umul_with_overflow_i32(x, y) { + x = x>>>0; + y = y>>>0; + return ((asm["setTempRet0"](x*y > 4294967295),(x*y)>>>0)|0); + } + function _llvm_bswap_i16(x) { + return ((x&0xff)<<8) | ((x>>8)&0xff); + } + function _llvm_bswap_i32(x) { + return ((x&0xff)<<24) | (((x>>8)&0xff)<<16) | (((x>>16)&0xff)<<8) | (x>>>24); + } + function ___assert_func(filename, line, func, condition) { + throw 'Assertion failed: ' + (condition ? Pointer_stringify(condition) : 'unknown condition') + ', at: ' + [filename ? Pointer_stringify(filename) : 'unknown filename', line, func ? Pointer_stringify(func) : 'unknown function'] + ' at ' + new Error().stack; + } + Module["_llvm_uadd_with_overflow_i64"] = _llvm_uadd_with_overflow_i64; + function _gettimeofday(ptr) { + // %struct.timeval = type { i32, i32 } + var now = Date.now(); + HEAP32[((ptr)>>2)]=Math.floor(now/1000); // seconds + HEAP32[(((ptr)+(4))>>2)]=Math.floor((now-1000*Math.floor(now/1000))*1000); // microseconds + return 0; + } + function _abort() { + Module['abort'](); + } + function ___errno_location() { + return ___errno_state; + }var ___errno=___errno_location; + function _sbrk(bytes) { + // Implement a Linux-like 'memory area' for our 'process'. + // Changes the size of the memory area by |bytes|; returns the + // address of the previous top ('break') of the memory area + // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP + var self = _sbrk; + if (!self.called) { + DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned + self.called = true; + assert(Runtime.dynamicAlloc); + self.alloc = Runtime.dynamicAlloc; + Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; + } + var ret = DYNAMICTOP; + if (bytes != 0) self.alloc(bytes); + return ret; // Previous break location. + } + function _sysconf(name) { + // long sysconf(int name); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html + switch(name) { + case 8: return PAGE_SIZE; + case 54: + case 56: + case 21: + case 61: + case 63: + case 22: + case 67: + case 23: + case 24: + case 25: + case 26: + case 27: + case 69: + case 28: + case 101: + case 70: + case 71: + case 29: + case 30: + case 199: + case 75: + case 76: + case 32: + case 43: + case 44: + case 80: + case 46: + case 47: + case 45: + case 48: + case 49: + case 42: + case 82: + case 33: + case 7: + case 108: + case 109: + case 107: + case 112: + case 119: + case 121: + return 200809; + case 13: + case 104: + case 94: + case 95: + case 34: + case 35: + case 77: + case 81: + case 83: + case 84: + case 85: + case 86: + case 87: + case 88: + case 89: + case 90: + case 91: + case 94: + case 95: + case 110: + case 111: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 120: + case 40: + case 16: + case 79: + case 19: + return -1; + case 92: + case 93: + case 5: + case 72: + case 6: + case 74: + case 92: + case 93: + case 96: + case 97: + case 98: + case 99: + case 102: + case 103: + case 105: + return 1; + case 38: + case 66: + case 50: + case 51: + case 4: + return 1024; + case 15: + case 64: + case 41: + return 32; + case 55: + case 37: + case 17: + return 2147483647; + case 18: + case 1: + return 47839; + case 59: + case 57: + return 99; + case 68: + case 58: + return 2048; + case 0: return 2097152; + case 3: return 65536; + case 14: return 32768; + case 73: return 32767; + case 39: return 16384; + case 60: return 1000; + case 106: return 700; + case 52: return 256; + case 62: return 255; + case 2: return 100; + case 65: return 64; + case 36: return 20; + case 100: return 16; + case 20: return 6; + case 53: return 4; + case 10: return 1; + } + ___setErrNo(ERRNO_CODES.EINVAL); + return -1; + } + function _time(ptr) { + var ret = Math.floor(Date.now()/1000); + if (ptr) { + HEAP32[((ptr)>>2)]=ret + } + return ret; + } + function ___cxa_allocate_exception(size) { + return _malloc(size); + } + function _llvm_eh_exception() { + return HEAP32[((_llvm_eh_exception.buf)>>2)]; + } + function __ZSt18uncaught_exceptionv() { // std::uncaught_exception() + return !!__ZSt18uncaught_exceptionv.uncaught_exception; + } + function ___cxa_is_number_type(type) { + var isNumber = false; + try { if (type == __ZTIi) isNumber = true } catch(e){} + try { if (type == __ZTIj) isNumber = true } catch(e){} + try { if (type == __ZTIl) isNumber = true } catch(e){} + try { if (type == __ZTIm) isNumber = true } catch(e){} + try { if (type == __ZTIx) isNumber = true } catch(e){} + try { if (type == __ZTIy) isNumber = true } catch(e){} + try { if (type == __ZTIf) isNumber = true } catch(e){} + try { if (type == __ZTId) isNumber = true } catch(e){} + try { if (type == __ZTIe) isNumber = true } catch(e){} + try { if (type == __ZTIc) isNumber = true } catch(e){} + try { if (type == __ZTIa) isNumber = true } catch(e){} + try { if (type == __ZTIh) isNumber = true } catch(e){} + try { if (type == __ZTIs) isNumber = true } catch(e){} + try { if (type == __ZTIt) isNumber = true } catch(e){} + return isNumber; + }function ___cxa_does_inherit(definiteType, possibilityType, possibility) { + if (possibility == 0) return false; + if (possibilityType == 0 || possibilityType == definiteType) + return true; + var possibility_type_info; + if (___cxa_is_number_type(possibilityType)) { + possibility_type_info = possibilityType; + } else { + var possibility_type_infoAddr = HEAP32[((possibilityType)>>2)] - 8; + possibility_type_info = HEAP32[((possibility_type_infoAddr)>>2)]; + } + switch (possibility_type_info) { + case 0: // possibility is a pointer + // See if definite type is a pointer + var definite_type_infoAddr = HEAP32[((definiteType)>>2)] - 8; + var definite_type_info = HEAP32[((definite_type_infoAddr)>>2)]; + if (definite_type_info == 0) { + // Also a pointer; compare base types of pointers + var defPointerBaseAddr = definiteType+8; + var defPointerBaseType = HEAP32[((defPointerBaseAddr)>>2)]; + var possPointerBaseAddr = possibilityType+8; + var possPointerBaseType = HEAP32[((possPointerBaseAddr)>>2)]; + return ___cxa_does_inherit(defPointerBaseType, possPointerBaseType, possibility); + } else + return false; // one pointer and one non-pointer + case 1: // class with no base class + return false; + case 2: // class with base class + var parentTypeAddr = possibilityType + 8; + var parentType = HEAP32[((parentTypeAddr)>>2)]; + return ___cxa_does_inherit(definiteType, parentType, possibility); + default: + return false; // some unencountered type + } + } + function ___resumeException(ptr) { + if (HEAP32[((_llvm_eh_exception.buf)>>2)] == 0) HEAP32[((_llvm_eh_exception.buf)>>2)]=ptr; + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";; + }function ___cxa_find_matching_catch(thrown, throwntype) { + if (thrown == -1) thrown = HEAP32[((_llvm_eh_exception.buf)>>2)]; + if (throwntype == -1) throwntype = HEAP32[(((_llvm_eh_exception.buf)+(4))>>2)]; + var typeArray = Array.prototype.slice.call(arguments, 2); + // If throwntype is a pointer, this means a pointer has been + // thrown. When a pointer is thrown, actually what's thrown + // is a pointer to the pointer. We'll dereference it. + if (throwntype != 0 && !___cxa_is_number_type(throwntype)) { + var throwntypeInfoAddr= HEAP32[((throwntype)>>2)] - 8; + var throwntypeInfo= HEAP32[((throwntypeInfoAddr)>>2)]; + if (throwntypeInfo == 0) + thrown = HEAP32[((thrown)>>2)]; + } + // The different catch blocks are denoted by different types. + // Due to inheritance, those types may not precisely match the + // type of the thrown object. Find one which matches, and + // return the type of the catch block which should be called. + for (var i = 0; i < typeArray.length; i++) { + if (___cxa_does_inherit(typeArray[i], throwntype, thrown)) + return ((asm["setTempRet0"](typeArray[i]),thrown)|0); + } + // Shouldn't happen unless we have bogus data in typeArray + // or encounter a type for which emscripten doesn't have suitable + // typeinfo defined. Best-efforts match just in case. + return ((asm["setTempRet0"](throwntype),thrown)|0); + }function ___cxa_throw(ptr, type, destructor) { + if (!___cxa_throw.initialized) { + try { + HEAP32[((__ZTVN10__cxxabiv119__pointer_type_infoE)>>2)]=0; // Workaround for libcxxabi integration bug + } catch(e){} + try { + HEAP32[((__ZTVN10__cxxabiv117__class_type_infoE)>>2)]=1; // Workaround for libcxxabi integration bug + } catch(e){} + try { + HEAP32[((__ZTVN10__cxxabiv120__si_class_type_infoE)>>2)]=2; // Workaround for libcxxabi integration bug + } catch(e){} + ___cxa_throw.initialized = true; + } + HEAP32[((_llvm_eh_exception.buf)>>2)]=ptr + HEAP32[(((_llvm_eh_exception.buf)+(4))>>2)]=type + HEAP32[(((_llvm_eh_exception.buf)+(8))>>2)]=destructor + if (!("uncaught_exception" in __ZSt18uncaught_exceptionv)) { + __ZSt18uncaught_exceptionv.uncaught_exception = 1; + } else { + __ZSt18uncaught_exceptionv.uncaught_exception++; + } + throw ptr + " - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";; + } + function ___cxa_call_unexpected(exception) { + Module.printErr('Unexpected exception thrown, this is not properly supported - aborting'); + ABORT = true; + throw exception; + } + Module["_memmove"] = _memmove;var _llvm_memmove_p0i8_p0i8_i32=_memmove; + var Browser={mainLoop:{scheduler:null,shouldPause:false,paused:false,queue:[],pause:function () { + Browser.mainLoop.shouldPause = true; + },resume:function () { + if (Browser.mainLoop.paused) { + Browser.mainLoop.paused = false; + Browser.mainLoop.scheduler(); + } + Browser.mainLoop.shouldPause = false; + },updateStatus:function () { + if (Module['setStatus']) { + var message = Module['statusMessage'] || 'Please wait...'; + var remaining = Browser.mainLoop.remainingBlockers; + var expected = Browser.mainLoop.expectedBlockers; + if (remaining) { + if (remaining < expected) { + Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); + } else { + Module['setStatus'](message); + } + } else { + Module['setStatus'](''); + } + } + }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { + if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers + if (Browser.initted || ENVIRONMENT_IS_WORKER) return; + Browser.initted = true; + try { + new Blob(); + Browser.hasBlobConstructor = true; + } catch(e) { + Browser.hasBlobConstructor = false; + console.log("warning: no blob constructor, cannot create blobs with mimetypes"); + } + Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); + Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; + if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { + console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); + Module.noImageDecoding = true; + } + // Support for plugins that can process preloaded files. You can add more of these to + // your app by creating and appending to Module.preloadPlugins. + // + // Each plugin is asked if it can handle a file based on the file's name. If it can, + // it is given the file's raw data. When it is done, it calls a callback with the file's + // (possibly modified) data. For example, a plugin might decompress a file, or it + // might create some side data structure for use later (like an Image element, etc.). + var imagePlugin = {}; + imagePlugin['canHandle'] = function(name) { + return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); + }; + imagePlugin['handle'] = function(byteArray, name, onload, onerror) { + var b = null; + if (Browser.hasBlobConstructor) { + try { + b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + if (b.size !== byteArray.length) { // Safari bug #118630 + // Safari's Blob can only take an ArrayBuffer + b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); + } + } catch(e) { + Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); + } + } + if (!b) { + var bb = new Browser.BlobBuilder(); + bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range + b = bb.getBlob(); + } + var url = Browser.URLObject.createObjectURL(b); + var img = new Image(); + img.onload = function() { + assert(img.complete, 'Image ' + name + ' could not be decoded'); + var canvas = document.createElement('canvas'); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext('2d'); + ctx.drawImage(img, 0, 0); + Module["preloadedImages"][name] = canvas; + Browser.URLObject.revokeObjectURL(url); + if (onload) onload(byteArray); + }; + img.onerror = function(event) { + console.log('Image ' + url + ' could not be decoded'); + if (onerror) onerror(); + }; + img.src = url; + }; + Module['preloadPlugins'].push(imagePlugin); + var audioPlugin = {}; + audioPlugin['canHandle'] = function(name) { + return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; + }; + audioPlugin['handle'] = function(byteArray, name, onload, onerror) { + var done = false; + function finish(audio) { + if (done) return; + done = true; + Module["preloadedAudios"][name] = audio; + if (onload) onload(byteArray); + } + function fail() { + if (done) return; + done = true; + Module["preloadedAudios"][name] = new Audio(); // empty shim + if (onerror) onerror(); + } + if (Browser.hasBlobConstructor) { + try { + var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + } catch(e) { + return fail(); + } + var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! + var audio = new Audio(); + audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 + audio.onerror = function(event) { + if (done) return; + console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); + function encode64(data) { + var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + var PAD = '='; + var ret = ''; + var leftchar = 0; + var leftbits = 0; + for (var i = 0; i < data.length; i++) { + leftchar = (leftchar << 8) | data[i]; + leftbits += 8; + while (leftbits >= 6) { + var curr = (leftchar >> (leftbits-6)) & 0x3f; + leftbits -= 6; + ret += BASE[curr]; + } + } + if (leftbits == 2) { + ret += BASE[(leftchar&3) << 4]; + ret += PAD + PAD; + } else if (leftbits == 4) { + ret += BASE[(leftchar&0xf) << 2]; + ret += PAD; + } + return ret; + } + audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); + finish(audio); // we don't wait for confirmation this worked - but it's worth trying + }; + audio.src = url; + // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror + Browser.safeSetTimeout(function() { + finish(audio); // try to use it even though it is not necessarily ready to play + }, 10000); + } else { + return fail(); + } + }; + Module['preloadPlugins'].push(audioPlugin); + // Canvas event setup + var canvas = Module['canvas']; + canvas.requestPointerLock = canvas['requestPointerLock'] || + canvas['mozRequestPointerLock'] || + canvas['webkitRequestPointerLock']; + canvas.exitPointerLock = document['exitPointerLock'] || + document['mozExitPointerLock'] || + document['webkitExitPointerLock'] || + function(){}; // no-op if function does not exist + canvas.exitPointerLock = canvas.exitPointerLock.bind(document); + function pointerLockChange() { + Browser.pointerLock = document['pointerLockElement'] === canvas || + document['mozPointerLockElement'] === canvas || + document['webkitPointerLockElement'] === canvas; + } + document.addEventListener('pointerlockchange', pointerLockChange, false); + document.addEventListener('mozpointerlockchange', pointerLockChange, false); + document.addEventListener('webkitpointerlockchange', pointerLockChange, false); + if (Module['elementPointerLock']) { + canvas.addEventListener("click", function(ev) { + if (!Browser.pointerLock && canvas.requestPointerLock) { + canvas.requestPointerLock(); + ev.preventDefault(); + } + }, false); + } + },createContext:function (canvas, useWebGL, setInModule) { + var ctx; + try { + if (useWebGL) { + ctx = canvas.getContext('experimental-webgl', { + alpha: false + }); + } else { + ctx = canvas.getContext('2d'); + } + if (!ctx) throw ':('; + } catch (e) { + Module.print('Could not create canvas - ' + e); + return null; + } + if (useWebGL) { + // Set the background of the WebGL canvas to black + canvas.style.backgroundColor = "black"; + // Warn on context loss + canvas.addEventListener('webglcontextlost', function(event) { + alert('WebGL context lost. You will need to reload the page.'); + }, false); + } + if (setInModule) { + Module.ctx = ctx; + Module.useWebGL = useWebGL; + Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); + Browser.init(); + } + return ctx; + },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) { + Browser.lockPointer = lockPointer; + Browser.resizeCanvas = resizeCanvas; + if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; + if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; + var canvas = Module['canvas']; + function fullScreenChange() { + Browser.isFullScreen = false; + if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || + document['mozFullScreenElement'] || document['mozFullscreenElement'] || + document['fullScreenElement'] || document['fullscreenElement']) === canvas) { + canvas.cancelFullScreen = document['cancelFullScreen'] || + document['mozCancelFullScreen'] || + document['webkitCancelFullScreen']; + canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); + if (Browser.lockPointer) canvas.requestPointerLock(); + Browser.isFullScreen = true; + if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); + } else if (Browser.resizeCanvas){ + Browser.setWindowedCanvasSize(); + } + if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); + } + if (!Browser.fullScreenHandlersInstalled) { + Browser.fullScreenHandlersInstalled = true; + document.addEventListener('fullscreenchange', fullScreenChange, false); + document.addEventListener('mozfullscreenchange', fullScreenChange, false); + document.addEventListener('webkitfullscreenchange', fullScreenChange, false); + } + canvas.requestFullScreen = canvas['requestFullScreen'] || + canvas['mozRequestFullScreen'] || + (canvas['webkitRequestFullScreen'] ? function() { canvas['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); + canvas.requestFullScreen(); + },requestAnimationFrame:function (func) { + if (!window.requestAnimationFrame) { + window.requestAnimationFrame = window['requestAnimationFrame'] || + window['mozRequestAnimationFrame'] || + window['webkitRequestAnimationFrame'] || + window['msRequestAnimationFrame'] || + window['oRequestAnimationFrame'] || + window['setTimeout']; + } + window.requestAnimationFrame(func); + },safeCallback:function (func) { + return function() { + if (!ABORT) return func.apply(null, arguments); + }; + },safeRequestAnimationFrame:function (func) { + return Browser.requestAnimationFrame(function() { + if (!ABORT) func(); + }); + },safeSetTimeout:function (func, timeout) { + return setTimeout(function() { + if (!ABORT) func(); + }, timeout); + },safeSetInterval:function (func, timeout) { + return setInterval(function() { + if (!ABORT) func(); + }, timeout); + },getMimetype:function (name) { + return { + 'jpg': 'image/jpeg', + 'jpeg': 'image/jpeg', + 'png': 'image/png', + 'bmp': 'image/bmp', + 'ogg': 'audio/ogg', + 'wav': 'audio/wav', + 'mp3': 'audio/mpeg' + }[name.substr(name.lastIndexOf('.')+1)]; + },getUserMedia:function (func) { + if(!window.getUserMedia) { + window.getUserMedia = navigator['getUserMedia'] || + navigator['mozGetUserMedia']; + } + window.getUserMedia(func); + },getMovementX:function (event) { + return event['movementX'] || + event['mozMovementX'] || + event['webkitMovementX'] || + 0; + },getMovementY:function (event) { + return event['movementY'] || + event['mozMovementY'] || + event['webkitMovementY'] || + 0; + },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup + if (Browser.pointerLock) { + // When the pointer is locked, calculate the coordinates + // based on the movement of the mouse. + // Workaround for Firefox bug 764498 + if (event.type != 'mousemove' && + ('mozMovementX' in event)) { + Browser.mouseMovementX = Browser.mouseMovementY = 0; + } else { + Browser.mouseMovementX = Browser.getMovementX(event); + Browser.mouseMovementY = Browser.getMovementY(event); + } + // check if SDL is available + if (typeof SDL != "undefined") { + Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; + Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; + } else { + // just add the mouse delta to the current absolut mouse position + // FIXME: ideally this should be clamped against the canvas size and zero + Browser.mouseX += Browser.mouseMovementX; + Browser.mouseY += Browser.mouseMovementY; + } + } else { + // Otherwise, calculate the movement based on the changes + // in the coordinates. + var rect = Module["canvas"].getBoundingClientRect(); + var x, y; + if (event.type == 'touchstart' || + event.type == 'touchend' || + event.type == 'touchmove') { + var t = event.touches.item(0); + if (t) { + x = t.pageX - (window.scrollX + rect.left); + y = t.pageY - (window.scrollY + rect.top); + } else { + return; + } + } else { + x = event.pageX - (window.scrollX + rect.left); + y = event.pageY - (window.scrollY + rect.top); + } + // the canvas might be CSS-scaled compared to its backbuffer; + // SDL-using content will want mouse coordinates in terms + // of backbuffer units. + var cw = Module["canvas"].width; + var ch = Module["canvas"].height; + x = x * (cw / rect.width); + y = y * (ch / rect.height); + Browser.mouseMovementX = x - Browser.mouseX; + Browser.mouseMovementY = y - Browser.mouseY; + Browser.mouseX = x; + Browser.mouseY = y; + } + },xhrLoad:function (url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = function() { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + onload(xhr.response); + } else { + onerror(); + } + }; + xhr.onerror = onerror; + xhr.send(null); + },asyncLoad:function (url, onload, onerror, noRunDep) { + Browser.xhrLoad(url, function(arrayBuffer) { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (!noRunDep) removeRunDependency('al ' + url); + }, function(event) { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (!noRunDep) addRunDependency('al ' + url); + },resizeListeners:[],updateResizeListeners:function () { + var canvas = Module['canvas']; + Browser.resizeListeners.forEach(function(listener) { + listener(canvas.width, canvas.height); + }); + },setCanvasSize:function (width, height, noUpdates) { + var canvas = Module['canvas']; + canvas.width = width; + canvas.height = height; + if (!noUpdates) Browser.updateResizeListeners(); + },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { + var canvas = Module['canvas']; + this.windowedWidth = canvas.width; + this.windowedHeight = canvas.height; + canvas.width = screen.width; + canvas.height = screen.height; + // check if SDL is available + if (typeof SDL != "undefined") { + var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; + flags = flags | 0x00800000; // set SDL_FULLSCREEN flag + HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags + } + Browser.updateResizeListeners(); + },setWindowedCanvasSize:function () { + var canvas = Module['canvas']; + canvas.width = this.windowedWidth; + canvas.height = this.windowedHeight; + // check if SDL is available + if (typeof SDL != "undefined") { + var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; + flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag + HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags + } + Browser.updateResizeListeners(); + }}; +FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; +___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; +_llvm_eh_exception.buf = allocate(12, "void*", ALLOC_STATIC); +Module["requestFullScreen"] = function(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) }; + Module["requestAnimationFrame"] = function(func) { Browser.requestAnimationFrame(func) }; + Module["setCanvasSize"] = function(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; + Module["pauseMainLoop"] = function() { Browser.mainLoop.pause() }; + Module["resumeMainLoop"] = function() { Browser.mainLoop.resume() }; + Module["getUserMedia"] = function() { Browser.getUserMedia() } +STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); +staticSealed = true; // seal the static portion of memory +STACK_MAX = STACK_BASE + 5242880; +DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); +assert(DYNAMIC_BASE < TOTAL_MEMORY); // Stack must fit in TOTAL_MEMORY; allocations from here on may enlarge TOTAL_MEMORY +var Math_min = Math.min; +function invoke_viiiii(index,a1,a2,a3,a4,a5) { + try { + Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiif(index,a1,a2,a3,a4,a5,a6) { + try { + return Module["dynCall_iiiiiif"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_vif(index,a1,a2) { + try { + Module["dynCall_vif"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viifii(index,a1,a2,a3,a4,a5) { + try { + Module["dynCall_viifii"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiifffffif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) { + try { + Module["dynCall_viiiifffffif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_vi(index,a1) { + try { + Module["dynCall_vi"](index,a1); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiffii(index,a1,a2,a3,a4,a5,a6,a7,a8) { + try { + return Module["dynCall_iiiiiffii"](index,a1,a2,a3,a4,a5,a6,a7,a8); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_vii(index,a1,a2) { + try { + Module["dynCall_vii"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiifii(index,a1,a2,a3,a4,a5,a6) { + try { + Module["dynCall_viiifii"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_ifffffffff(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { + try { + return Module["dynCall_ifffffffff"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiif(index,a1,a2,a3,a4,a5) { + try { + Module["dynCall_viiiif"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiffffii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) { + try { + Module["dynCall_viiiiffffii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_ii(index,a1) { + try { + return Module["dynCall_ii"](index,a1); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiiifif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { + try { + return Module["dynCall_iiiiiiifif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_vifffi(index,a1,a2,a3,a4,a5) { + try { + Module["dynCall_vifffi"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_ifiii(index,a1,a2,a3,a4) { + try { + return Module["dynCall_ifiii"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viifi(index,a1,a2,a3,a4) { + try { + Module["dynCall_viifi"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { + try { + Module["dynCall_viiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiiiff(index,a1,a2,a3,a4,a5,a6,a7,a8) { + try { + Module["dynCall_viiiiiiff"](index,a1,a2,a3,a4,a5,a6,a7,a8); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiifiii(index,a1,a2,a3,a4,a5,a6,a7) { + try { + return Module["dynCall_iiiifiii"](index,a1,a2,a3,a4,a5,a6,a7); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) { + try { + return Module["dynCall_iiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viffff(index,a1,a2,a3,a4,a5) { + try { + Module["dynCall_viffff"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viffiii(index,a1,a2,a3,a4,a5,a6) { + try { + Module["dynCall_viffiii"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) { + try { + return Module["dynCall_iiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fififii(index,a1,a2,a3,a4,a5,a6) { + try { + return Module["dynCall_fififii"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) { + try { + return Module["dynCall_fiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiifii(index,a1,a2,a3,a4,a5) { + try { + return Module["dynCall_fiifii"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_ifff(index,a1,a2,a3) { + try { + return Module["dynCall_ifff"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiff(index,a1,a2,a3,a4) { + try { + Module["dynCall_viiff"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iifi(index,a1,a2,a3) { + try { + return Module["dynCall_iifi"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiii(index,a1,a2,a3) { + try { + return Module["dynCall_iiii"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiifffffi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) { + try { + Module["dynCall_viiiifffffi"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fif(index,a1,a2) { + try { + return Module["dynCall_fif"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiff(index,a1,a2,a3,a4,a5) { + try { + return Module["dynCall_iiiiff"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viff(index,a1,a2,a3) { + try { + Module["dynCall_viff"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_vifi(index,a1,a2,a3) { + try { + Module["dynCall_vifi"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiif(index,a1,a2,a3,a4,a5,a6) { + try { + Module["dynCall_viiiiif"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_vifff(index,a1,a2,a3,a4) { + try { + Module["dynCall_vifff"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6) { + try { + Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiiff(index,a1,a2,a3,a4) { + try { + return Module["dynCall_fiiff"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiif(index,a1,a2,a3) { + try { + return Module["dynCall_iiif"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7) { + try { + return Module["dynCall_iiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) { + try { + Module["dynCall_viiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viffffff(index,a1,a2,a3,a4,a5,a6,a7) { + try { + Module["dynCall_viffffff"](index,a1,a2,a3,a4,a5,a6,a7); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiii(index,a1,a2,a3) { + try { + return Module["dynCall_fiii"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { + try { + return Module["dynCall_iiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiif(index,a1,a2,a3) { + try { + return Module["dynCall_fiif"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) { + try { + return Module["dynCall_fiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_ifii(index,a1,a2,a3) { + try { + return Module["dynCall_ifii"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiffiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) { + try { + return Module["dynCall_fiffiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) { + try { + return Module["dynCall_iiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiiiii(index,a1,a2,a3,a4,a5) { + try { + return Module["dynCall_fiiiii"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iif(index,a1,a2) { + try { + return Module["dynCall_iif"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_if(index,a1) { + try { + return Module["dynCall_if"](index,a1); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_vifffff(index,a1,a2,a3,a4,a5,a6) { + try { + Module["dynCall_vifffff"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { + try { + Module["dynCall_viiiiiiiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_vifii(index,a1,a2,a3,a4) { + try { + Module["dynCall_vifii"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fi(index,a1) { + try { + return Module["dynCall_fi"](index,a1); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) { + try { + Module["dynCall_viiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iii(index,a1,a2) { + try { + return Module["dynCall_iii"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiii(index,a1,a2,a3,a4,a5) { + try { + return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6) { + try { + return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8) { + try { + Module["dynCall_viiiiiiif"](index,a1,a2,a3,a4,a5,a6,a7,a8); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fii(index,a1,a2) { + try { + return Module["dynCall_fii"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_vifffffffff(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) { + try { + Module["dynCall_vifffffffff"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) { + try { + return Module["dynCall_fiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iifif(index,a1,a2,a3,a4) { + try { + return Module["dynCall_iifif"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iffff(index,a1,a2,a3,a4) { + try { + return Module["dynCall_iffff"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiiffffiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) { + try { + Module["dynCall_viiiiffffiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiif(index,a1,a2,a3,a4,a5) { + try { + return Module["dynCall_iiiiif"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiff(index,a1,a2,a3) { + try { + return Module["dynCall_iiff"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiif(index,a1,a2,a3,a4) { + try { + Module["dynCall_viiif"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_i(index) { + try { + return Module["dynCall_i"](index); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiiifii(index,a1,a2,a3,a4,a5,a6,a7) { + try { + Module["dynCall_viiiifii"](index,a1,a2,a3,a4,a5,a6,a7); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiifffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9) { + try { + return Module["dynCall_iiiifffiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viii(index,a1,a2,a3) { + try { + Module["dynCall_viii"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iff(index,a1,a2) { + try { + return Module["dynCall_iff"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_v(index) { + try { + Module["dynCall_v"](index); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) { + try { + return Module["dynCall_iiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiii(index,a1,a2,a3,a4) { + try { + return Module["dynCall_iiiii"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viif(index,a1,a2,a3) { + try { + Module["dynCall_viif"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_iiiif(index,a1,a2,a3,a4) { + try { + return Module["dynCall_iiiif"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_fiiifii(index,a1,a2,a3,a4,a5,a6) { + try { + return Module["dynCall_fiiifii"](index,a1,a2,a3,a4,a5,a6); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function invoke_viiii(index,a1,a2,a3,a4) { + try { + Module["dynCall_viiii"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} +function asmPrintInt(x, y) { + Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack); +} +function asmPrintFloat(x, y) { + Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack); +} +// EMSCRIPTEN_START_ASM +var asm=(function(global,env,buffer){"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.__ZTVN10__cxxabiv117__class_type_infoE|0;var n=env.__ZTVN10__cxxabiv120__si_class_type_infoE|0;var o=env.___dso_handle|0;var p=+env.NaN;var q=+env.Infinity;var r=0;var s=0;var t=0;var u=0;var v=0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0,D=0.0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=0;var O=global.Math.floor;var P=global.Math.abs;var Q=global.Math.sqrt;var R=global.Math.pow;var S=global.Math.cos;var T=global.Math.sin;var U=global.Math.tan;var V=global.Math.acos;var W=global.Math.asin;var X=global.Math.atan;var Y=global.Math.atan2;var Z=global.Math.exp;var _=global.Math.log;var $=global.Math.ceil;var aa=global.Math.imul;var ab=env.abort;var ac=env.assert;var ad=env.asmPrintInt;var ae=env.asmPrintFloat;var af=env.min;var ag=env.jsCall;var ah=env.invoke_viiiii;var ai=env.invoke_iiiiiif;var aj=env.invoke_vif;var ak=env.invoke_viifii;var al=env.invoke_viiiifffffif;var am=env.invoke_vi;var an=env.invoke_iiiiiffii;var ao=env.invoke_vii;var ap=env.invoke_viiifii;var aq=env.invoke_ifffffffff;var ar=env.invoke_viiiif;var as=env.invoke_viiiiffffii;var at=env.invoke_ii;var au=env.invoke_iiiiiiifif;var av=env.invoke_vifffi;var aw=env.invoke_ifiii;var ax=env.invoke_viifi;var ay=env.invoke_viiiiiiiii;var az=env.invoke_viiiiiiff;var aA=env.invoke_iiiifiii;var aB=env.invoke_iiiiiiiiiiiiii;var aC=env.invoke_viffff;var aD=env.invoke_viffiii;var aE=env.invoke_iiiiiiiiiiii;var aF=env.invoke_fififii;var aG=env.invoke_fiiiiiiiiiii;var aH=env.invoke_fiifii;var aI=env.invoke_ifff;var aJ=env.invoke_viiff;var aK=env.invoke_iifi;var aL=env.invoke_iiii;var aM=env.invoke_viiiifffffi;var aN=env.invoke_fif;var aO=env.invoke_iiiiff;var aP=env.invoke_viff;var aQ=env.invoke_vifi;var aR=env.invoke_viiiiif;var aS=env.invoke_vifff;var aT=env.invoke_viiiiii;var aU=env.invoke_fiiff;var aV=env.invoke_iiif;var aW=env.invoke_iiiiiiii;var aX=env.invoke_viiiiiiii;var aY=env.invoke_viffffff;var aZ=env.invoke_fiii;var a_=env.invoke_iiiiiiiiii;var a$=env.invoke_fiif;var a0=env.invoke_fiiiiiiiiii;var a1=env.invoke_ifii;var a2=env.invoke_fiffiiiiiii;var a3=env.invoke_iiiiiiiiiiiii;var a4=env.invoke_fiiiii;var a5=env.invoke_iif;var a6=env.invoke_if;var a7=env.invoke_vifffff;var a8=env.invoke_viiiiiiiif;var a9=env.invoke_vifii;var ba=env.invoke_fi;var bb=env.invoke_viiiiiiiiii;var bc=env.invoke_iii;var bd=env.invoke_iiiiii;var be=env.invoke_iiiiiii;var bf=env.invoke_viiiiiiif;var bg=env.invoke_fii;var bh=env.invoke_vifffffffff;var bi=env.invoke_fiiiiiiii;var bj=env.invoke_iifif;var bk=env.invoke_iffff;var bl=env.invoke_viiiiffffiif;var bm=env.invoke_iiiiif;var bn=env.invoke_iiff;var bo=env.invoke_viiif;var bp=env.invoke_i;var bq=env.invoke_viiiifii;var br=env.invoke_iiiifffiii;var bs=env.invoke_viii;var bt=env.invoke_iff;var bu=env.invoke_v;var bv=env.invoke_iiiiiiiii;var bw=env.invoke_iiiii;var bx=env.invoke_viif;var by=env.invoke_iiiif;var bz=env.invoke_fiiifii;var bA=env.invoke_viiii;var bB=env._llvm_lifetime_end;var bC=env._cosf;var bD=env._fabsf;var bE=env._sysconf;var bF=env.___cxa_throw;var bG=env._atexit;var bH=env._abort;var bI=env._fprintf;var bJ=env._llvm_eh_exception;var bK=env._printf;var bL=env._acosf;var bM=env._fflush;var bN=env._sqrtf;var bO=env._write;var bP=env.___setErrNo;var bQ=env._fwrite;var bR=env._send;var bS=env._llvm_pow_f32;var bT=env._llvm_umul_with_overflow_i32;var bU=env._exit;var bV=env._atan2f;var bW=env.___cxa_pure_virtual;var bX=env._llvm_bswap_i16;var bY=env.__formatString;var bZ=env.__reallyNegative;var b_=env._time;var b$=env._asinf;var b0=env.___cxa_does_inherit;var b1=env.___cxa_guard_acquire;var b2=env.__ZSt9terminatev;var b3=env._gettimeofday;var b4=env.___cxa_find_matching_catch;var b5=env._sinf;var b6=env.__ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback;var b7=env.___assert_func;var b8=env.__ZSt18uncaught_exceptionv;var b9=env._pwrite;var ca=env.___cxa_call_unexpected;var cb=env._sbrk;var cc=env.___cxa_guard_abort;var cd=env.___cxa_allocate_exception;var ce=env.___errno_location;var cf=env.___gxx_personality_v0;var cg=env.__ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback;var ch=env._llvm_lifetime_start;var ci=env.___cxa_is_number_type;var cj=env._llvm_bswap_i32;var ck=env._fmod;var cl=env.___cxa_guard_release;var cm=env.__exit;var cn=env.___resumeException; +// EMSCRIPTEN_START_FUNCS +function dJ(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+7>>3<<3;return b|0}function dK(){return i|0}function dL(a){a=a|0;i=a}function dM(a,b){a=a|0;b=b|0;if((r|0)==0){r=a;s=b}}function dN(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0]}function dO(b){b=b|0;a[k]=a[b];a[k+1|0]=a[b+1|0];a[k+2|0]=a[b+2|0];a[k+3|0]=a[b+3|0];a[k+4|0]=a[b+4|0];a[k+5|0]=a[b+5|0];a[k+6|0]=a[b+6|0];a[k+7|0]=a[b+7|0]}function dP(a){a=a|0;E=a}function dQ(a){a=a|0;F=a}function dR(a){a=a|0;G=a}function dS(a){a=a|0;H=a}function dT(a){a=a|0;I=a}function dU(a){a=a|0;J=a}function dV(a){a=a|0;K=a}function dW(a){a=a|0;L=a}function dX(a){a=a|0;M=a}function dY(a){a=a|0;N=a}function dZ(){c[n+8>>2]=512;c[n+12>>2]=384;c[n+16>>2]=82;c[n+20>>2]=488;c[n+24>>2]=174;c[n+28>>2]=80;c[n+32>>2]=104;c[n+36>>2]=224;c[m+8>>2]=512;c[m+12>>2]=440;c[m+16>>2]=82;c[m+20>>2]=488;c[m+24>>2]=174;c[m+28>>2]=52;c[m+32>>2]=96;c[m+36>>2]=544;c[8500]=n+8;c[8504]=n+8;c[8508]=n+8;c[8512]=n+8;c[8516]=n+8;c[8520]=n+8;c[8524]=n+8;c[8528]=n+8;c[8532]=n+8;c[8536]=n+8;c[8540]=n+8;c[8544]=n+8;c[8548]=n+8;c[8552]=n+8;c[8556]=n+8;c[8560]=n+8;c[8564]=n+8;c[8568]=n+8;c[8572]=n+8;c[8576]=n+8;c[8580]=n+8;c[8584]=n+8;c[8588]=m+8;c[8590]=m+8;c[8592]=n+8;c[8596]=m+8;c[8598]=m+8;c[8600]=n+8;c[8604]=n+8;c[8608]=n+8;c[8612]=n+8;c[8616]=n+8;c[8620]=n+8;c[8624]=n+8;c[8628]=n+8;c[8632]=m+8;c[8634]=n+8;c[8638]=n+8;c[8642]=n+8;c[8646]=n+8;c[8650]=n+8;c[8654]=m+8;c[8656]=m+8;c[8658]=m+8;c[8660]=m+8;c[8662]=n+8;c[8666]=n+8;c[8670]=n+8;c[8674]=n+8;c[8678]=m+8;c[8680]=n+8;c[8684]=n+8;c[8688]=n+8;c[8692]=n+8;c[8696]=n+8;c[8700]=n+8;c[8704]=n+8;c[8708]=n+8;c[8712]=m+8;c[8714]=n+8;c[8718]=n+8;c[8722]=n+8;c[8726]=m+8;c[8728]=m+8;c[8730]=n+8;c[8734]=n+8;c[8738]=n+8;c[8742]=n+8;c[8746]=n+8;c[8750]=n+8;c[8754]=n+8;c[8758]=n+8;c[8762]=n+8;c[8766]=n+8;c[8770]=n+8;c[8774]=n+8;c[8778]=m+8;c[8780]=m+8;c[8782]=n+8;c[8786]=n+8;c[8790]=n+8;c[8794]=n+8;c[8798]=n+8;c[8802]=n+8;c[8806]=n+8;c[8810]=n+8;c[8814]=m+8;c[8816]=m+8;c[8818]=m+8;c[8820]=n+8;c[8824]=n+8;c[8828]=n+8;c[8832]=n+8;c[8836]=n+8;c[8840]=n+8;c[8844]=n+8;c[8848]=n+8;c[8852]=n+8;c[8856]=n+8;c[8860]=n+8;c[8864]=n+8;c[8868]=n+8;c[8872]=n+8;c[8876]=n+8;c[8880]=n+8;c[8884]=n+8;c[8888]=n+8;c[8892]=m+8;c[8894]=n+8;c[8898]=n+8;c[8902]=n+8;c[8906]=m+8;c[8908]=n+8;c[8912]=n+8;c[8916]=m+8;c[8918]=n+8;c[8922]=n+8;c[8926]=n+8;c[8930]=n+8;c[8934]=n+8;c[8938]=n+8;c[8942]=n+8;c[8946]=m+8;c[8948]=m+8;c[8950]=n+8;c[8954]=n+8;c[8958]=n+8;c[8962]=n+8;c[8966]=n+8;c[8970]=n+8;c[8974]=m+8;c[8976]=m+8;c[8984]=m+8;c[8986]=n+8;c[8990]=n+8;c[8994]=n+8;c[8998]=m+8;c[9e3]=m+8;c[9002]=n+8;c[9014]=n+8;c[9018]=n+8;c[9022]=n+8;c[9026]=n+8;c[9030]=n+8;c[9034]=n+8;c[9038]=n+8;c[9042]=m+8;c[9044]=m+8;c[9046]=n+8;c[9050]=n+8;c[9054]=n+8;c[9058]=n+8;c[9062]=n+8;c[9066]=n+8;c[9070]=n+8;c[9074]=n+8;c[9078]=n+8;c[9082]=n+8;c[9086]=n+8;c[9090]=m+8;c[9092]=n+8;c[9096]=n+8;c[9100]=n+8;c[9104]=m+8;c[9106]=n+8;c[9110]=m+8;c[9112]=n+8;c[9116]=n+8;c[9120]=n+8;c[9124]=m+8;c[9126]=m+8;c[9128]=n+8;c[9132]=n+8;c[9136]=n+8;c[9140]=n+8;c[9144]=n+8;c[9148]=n+8}function d_(a){a=a|0;return 44}function d$(a,b,c,d,e,f,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0;l=a+48|0;m=a|0;do{m=m+16|0;}while((m|0)!=(l|0));g[a>>2]=+g[b>>2];g[a+4>>2]=+g[c>>2];g[a+8>>2]=+g[d>>2];g[a+12>>2]=0.0;g[a+16>>2]=+g[e>>2];g[a+20>>2]=+g[f>>2];g[a+24>>2]=+g[h>>2];g[a+28>>2]=0.0;g[a+32>>2]=+g[i>>2];g[a+36>>2]=+g[j>>2];g[a+40>>2]=+g[k>>2];g[a+44>>2]=0.0;return}function d0(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[b+(c<<4)+(d<<2)>>2]=+g[a+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}return}function d1(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+h[b+(c<<5)+(d<<3)>>3];d=d+1|0}c=c+1|0}return}function d2(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0,h=0.0,i=0,j=0.0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0;c=a|0;d=a+4|0;e=+g[d>>2]- +g[b+4>>2];f=a+8|0;h=+g[f>>2]- +g[b+8>>2];i=a+16|0;j=+g[i>>2]- +g[b+16>>2];k=a+20|0;l=+g[k>>2]- +g[b+20>>2];m=a+24|0;n=+g[m>>2]- +g[b+24>>2];o=a+32|0;p=+g[o>>2]- +g[b+32>>2];q=a+36|0;r=+g[q>>2]- +g[b+36>>2];s=a+40|0;t=+g[s>>2]- +g[b+40>>2];g[c>>2]=+g[c>>2]- +g[b>>2];g[d>>2]=e;g[f>>2]=h;g[a+12>>2]=0.0;g[i>>2]=j;g[k>>2]=l;g[m>>2]=n;g[a+28>>2]=0.0;g[o>>2]=p;g[q>>2]=r;g[s>>2]=t;g[a+44>>2]=0.0;return a|0}function d3(a,b){a=a|0;b=b|0;return+(+g[a+8>>2]*+g[b>>2]+ +g[a+24>>2]*+g[b+4>>2]+ +g[a+40>>2]*+g[b+8>>2])}function d4(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[b+(c<<4)+(d<<2)>>2]=+g[a+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}return}function d5(a,b){a=a|0;b=b|0;return+(+g[a>>2]*+g[b>>2]+ +g[a+16>>2]*+g[b+4>>2]+ +g[a+32>>2]*+g[b+8>>2])}function d6(a,b){a=a|0;b=b|0;return+(+g[a+4>>2]*+g[b>>2]+ +g[a+20>>2]*+g[b+4>>2]+ +g[a+36>>2]*+g[b+8>>2])}function d7(b,c){b=b|0;c=c|0;var d=0.0,e=0.0;do{if((a[43976]|0)==0){if((b1(43976)|0)==0){break}}}while(0);d=+g[b+16+(c<<2)>>2];e=+g[b+32+(c<<2)>>2];g[9778]=+g[b+(c<<2)>>2];g[9779]=d;g[9780]=e;g[9781]=0.0;return 39112}function d8(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0;e=i;i=i+120|0;f=e|0;h=e+8|0;j=e+16|0;k=e+24|0;l=e+32|0;m=e+40|0;n=e+48|0;o=e+56|0;p=e+64|0;q=e+72|0;do{if((a[44104]|0)==0){if((b1(44104)|0)==0){break}else{r=39064}do{r=r+16|0;}while((r|0)!=39112)}}while(0);s=+g[d>>2];g[f>>2]=+g[b>>2]*s;t=+g[d+4>>2];g[h>>2]=+g[b+4>>2]*t;u=+g[d+8>>2];g[j>>2]=+g[b+8>>2]*u;g[k>>2]=+g[b+16>>2]*s;g[l>>2]=+g[b+20>>2]*t;g[m>>2]=+g[b+24>>2]*u;g[n>>2]=+g[b+32>>2]*s;g[o>>2]=+g[b+36>>2]*t;g[p>>2]=+g[b+40>>2]*u;d$(q,f,h,j,k,l,m,n,o,p);p=q;c[9766]=c[p>>2];c[9767]=c[p+4>>2];c[9768]=c[p+8>>2];c[9769]=c[p+12>>2];p=q+16|0;c[9770]=c[p>>2];c[39084>>2]=c[p+4>>2];c[39088>>2]=c[p+8>>2];c[39092>>2]=c[p+12>>2];p=q+32|0;c[9774]=c[p>>2];c[39100>>2]=c[p+4>>2];c[39104>>2]=c[p+8>>2];c[39108>>2]=c[p+12>>2];i=e;return 39064}function d9(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=i;i=i+48|0;f=e|0;do{if((a[43888]|0)==0){if((b1(43888)|0)==0){break}else{g=38264}do{g=g+16|0;}while((g|0)!=38312)}}while(0);ea(f,b,d);d=f;c[9566]=c[d>>2];c[9567]=c[d+4>>2];c[9568]=c[d+8>>2];c[9569]=c[d+12>>2];d=f+16|0;c[9570]=c[d>>2];c[38284>>2]=c[d+4>>2];c[38288>>2]=c[d+8>>2];c[38292>>2]=c[d+12>>2];d=f+32|0;c[9574]=c[d>>2];c[38300>>2]=c[d+4>>2];c[38304>>2]=c[d+8>>2];c[38308>>2]=c[d+12>>2];i=e;return 38264}function ea(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;d=i;i=i+72|0;e=d|0;f=d+8|0;h=d+16|0;j=d+24|0;k=d+32|0;l=d+40|0;m=d+48|0;n=d+56|0;o=d+64|0;p=+g[b>>2];q=+g[c>>2];r=+g[b+16>>2];s=+g[c+16>>2];t=+g[b+32>>2];u=+g[c+32>>2];g[e>>2]=p*q+r*s+t*u;v=+g[c+4>>2];w=+g[c+20>>2];x=+g[c+36>>2];g[f>>2]=p*v+r*w+t*x;y=+g[c+8>>2];z=+g[c+24>>2];A=+g[c+40>>2];g[h>>2]=p*y+r*z+t*A;t=+g[b+4>>2];r=+g[b+20>>2];p=+g[b+36>>2];g[j>>2]=t*q+r*s+p*u;g[k>>2]=t*v+r*w+p*x;g[l>>2]=t*y+r*z+p*A;p=+g[b+8>>2];r=+g[b+24>>2];t=+g[b+40>>2];g[m>>2]=p*q+r*s+t*u;g[n>>2]=p*v+r*w+t*x;g[o>>2]=p*y+r*z+t*A;d$(a,e,f,h,j,k,l,m,n,o);i=d;return}function eb(a,b){a=a|0;b=b|0;ec(a,b);return}function ec(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=i;i=i+16|0;d=c|0;e=+g[a>>2];f=+g[a+20>>2];h=+g[a+40>>2];j=e+f+h;if(j>0.0){k=+Q(+(j+1.0));j=k*.5;g[d+12>>2]=j;l=.5/k;k=(+g[a+36>>2]- +g[a+24>>2])*l;g[d>>2]=k;m=(+g[a+8>>2]- +g[a+32>>2])*l;g[d+4>>2]=m;n=(+g[a+16>>2]- +g[a+4>>2])*l;g[d+8>>2]=n;o=k;p=m;q=n;r=j;s=b|0;g[s>>2]=o;t=b+4|0;g[t>>2]=p;u=b+8|0;g[u>>2]=q;v=b+12|0;g[v>>2]=r;i=c;return}if(e>>0)%3|0;y=((w+2|0)>>>0)%3|0;h=+Q(+(+g[a+(w<<4)+(w<<2)>>2]- +g[a+(x<<4)+(x<<2)>>2]- +g[a+(y<<4)+(y<<2)>>2]+1.0));g[d+(w<<2)>>2]=h*.5;e=.5/h;z=d+12|0;g[z>>2]=(+g[a+(y<<4)+(x<<2)>>2]- +g[a+(x<<4)+(y<<2)>>2])*e;g[d+(x<<2)>>2]=(+g[a+(x<<4)+(w<<2)>>2]+ +g[a+(w<<4)+(x<<2)>>2])*e;g[d+(y<<2)>>2]=(+g[a+(y<<4)+(w<<2)>>2]+ +g[a+(w<<4)+(y<<2)>>2])*e;o=+g[d>>2];p=+g[d+4>>2];q=+g[d+8>>2];r=+g[z>>2];s=b|0;g[s>>2]=o;t=b+4|0;g[t>>2]=p;u=b+8|0;g[u>>2]=q;v=b+12|0;g[v>>2]=r;i=c;return}function ed(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+120|0;e=d|0;f=d+8|0;h=d+16|0;j=d+24|0;k=d+32|0;l=d+40|0;m=d+48|0;n=d+56|0;o=d+64|0;p=d+72|0;do{if((a[44032]|0)==0){if((b1(44032)|0)==0){break}else{q=38056}do{q=q+16|0;}while((q|0)!=38104)}}while(0);g[e>>2]=+P(+(+g[b>>2]));g[f>>2]=+P(+(+g[b+4>>2]));g[h>>2]=+P(+(+g[b+8>>2]));g[j>>2]=+P(+(+g[b+16>>2]));g[k>>2]=+P(+(+g[b+20>>2]));g[l>>2]=+P(+(+g[b+24>>2]));g[m>>2]=+P(+(+g[b+32>>2]));g[n>>2]=+P(+(+g[b+36>>2]));g[o>>2]=+P(+(+g[b+40>>2]));d$(p,e,f,h,j,k,l,m,n,o);o=p;c[9514]=c[o>>2];c[9515]=c[o+4>>2];c[9516]=c[o+8>>2];c[9517]=c[o+12>>2];o=p+16|0;c[9518]=c[o>>2];c[38076>>2]=c[o+4>>2];c[38080>>2]=c[o+8>>2];c[38084>>2]=c[o+12>>2];o=p+32|0;c[9522]=c[o>>2];c[38092>>2]=c[o+4>>2];c[38096>>2]=c[o+8>>2];c[38100>>2]=c[o+12>>2];i=d;return 38056}function ee(){var a=0,b=0,d=0,e=0;while(1){a=aDx(48)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=65;break}dC[b&63]()}if((d|0)==65){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;b=a+48|0;e=a;do{e=e+16|0;}while((e|0)!=(b|0));return d|0}function ef(a){a=a|0;var b=0,d=0,e=0,f=0;while(1){b=aDx(48)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=79;break}dC[d&63]()}if((e|0)==79){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}e=b;d=b+48|0;f=b;do{f=f+16|0;}while((f|0)!=(d|0));em(e,a);return e|0}function eg(a,b,d,e,f,h,j,k,l){a=+a;b=+b;d=+d;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;m=i;i=i+72|0;n=m|0;o=m+8|0;p=m+16|0;q=m+24|0;r=m+32|0;s=m+40|0;t=m+48|0;u=m+56|0;v=m+64|0;g[n>>2]=a;g[o>>2]=b;g[p>>2]=d;g[q>>2]=e;g[r>>2]=f;g[s>>2]=h;g[t>>2]=j;g[u>>2]=k;g[v>>2]=l;while(1){w=aDx(48)|0;if((w|0)!=0){x=96;break}y=(C=c[10744]|0,c[10744]=C+0,C);if((y|0)==0){break}dC[y&63]()}if((x|0)==96){x=w;d$(x,n,o,p,q,r,s,t,u,v);i=m;return x|0}x=cd(4)|0;c[x>>2]=19096;bF(x|0,34368,676);return 0}function eh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+(+g[a+(b<<4)+(c<<2)>>2]*+g[a+(d<<4)+(e<<2)>>2]- +g[a+(b<<4)+(e<<2)>>2]*+g[a+(d<<4)+(c<<2)>>2])}function ei(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+g[b+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}return}function ej(a,b){a=a|0;b=b|0;return a+(b<<4)|0}function ek(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0,h=0.0,i=0,j=0.0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0;c=a|0;d=a+4|0;e=+g[d>>2]+ +g[b+4>>2];f=a+8|0;h=+g[f>>2]+ +g[b+8>>2];i=a+16|0;j=+g[i>>2]+ +g[b+16>>2];k=a+20|0;l=+g[k>>2]+ +g[b+20>>2];m=a+24|0;n=+g[m>>2]+ +g[b+24>>2];o=a+32|0;p=+g[o>>2]+ +g[b+32>>2];q=a+36|0;r=+g[q>>2]+ +g[b+36>>2];s=a+40|0;t=+g[s>>2]+ +g[b+40>>2];g[c>>2]=+g[c>>2]+ +g[b>>2];g[d>>2]=e;g[f>>2]=h;g[a+12>>2]=0.0;g[i>>2]=j;g[k>>2]=l;g[m>>2]=n;g[a+28>>2]=0.0;g[o>>2]=p;g[q>>2]=r;g[s>>2]=t;g[a+44>>2]=0.0;return a|0}function el(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;c=+g[b>>2];d=a|0;e=+g[d>>2];f=+g[b+16>>2];h=+g[a+4>>2];i=+g[b+32>>2];j=+g[a+8>>2];k=+g[b+4>>2];l=+g[b+20>>2];m=+g[b+36>>2];n=+g[b+8>>2];o=+g[b+24>>2];p=+g[b+40>>2];q=+g[a+16>>2];r=+g[a+20>>2];s=+g[a+24>>2];t=+g[a+32>>2];u=+g[a+36>>2];v=+g[a+40>>2];g[d>>2]=c*e+f*h+i*j;g[a+4>>2]=k*e+l*h+m*j;g[a+8>>2]=n*e+o*h+p*j;g[a+12>>2]=0.0;g[a+16>>2]=c*q+f*r+i*s;g[a+20>>2]=k*q+l*r+m*s;g[a+24>>2]=n*q+o*r+p*s;g[a+28>>2]=0.0;g[a+32>>2]=c*t+f*u+i*v;g[a+36>>2]=k*t+l*u+m*v;g[a+40>>2]=n*t+o*u+p*v;g[a+44>>2]=0.0;return a|0}function em(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];f=+g[b+12>>2];h=2.0/(c*c+d*d+e*e+f*f);i=c*h;j=d*h;k=e*h;h=f*i;l=f*j;m=f*k;f=c*i;i=c*j;n=c*k;c=d*j;j=d*k;d=e*k;g[a>>2]=1.0-(c+d);g[a+4>>2]=i-m;g[a+8>>2]=n+l;g[a+12>>2]=0.0;g[a+16>>2]=i+m;g[a+20>>2]=1.0-(f+d);g[a+24>>2]=j-h;g[a+28>>2]=0.0;g[a+32>>2]=n-l;g[a+36>>2]=j+h;g[a+40>>2]=1.0-(f+c);g[a+44>>2]=0.0;return}function en(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,h=0.0;b=+g[a+20>>2];c=+g[a+40>>2];d=+g[a+24>>2];e=+g[a+36>>2];f=+g[a+32>>2];h=+g[a+16>>2];return+(+g[a>>2]*(b*c-d*e)+ +g[a+4>>2]*(d*f-h*c)+ +g[a+8>>2]*(h*e-b*f))}function eo(a,b,c,d,e,f,h,i,j,k){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;h=+h;i=+i;j=+j;k=+k;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=0.0;g[a+16>>2]=e;g[a+20>>2]=f;g[a+24>>2]=h;g[a+28>>2]=0.0;g[a+32>>2]=i;g[a+36>>2]=j;g[a+40>>2]=k;g[a+44>>2]=0.0;return}function ep(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+48|0;e=d|0;do{if((a[44056]|0)==0){if((b1(44056)|0)==0){break}else{f=37848}do{f=f+16|0;}while((f|0)!=37896)}}while(0);eq(e,b);b=e;c[9462]=c[b>>2];c[9463]=c[b+4>>2];c[9464]=c[b+8>>2];c[9465]=c[b+12>>2];b=e+16|0;c[9466]=c[b>>2];c[37868>>2]=c[b+4>>2];c[37872>>2]=c[b+8>>2];c[37876>>2]=c[b+12>>2];b=e+32|0;c[9470]=c[b>>2];c[37884>>2]=c[b+4>>2];c[37888>>2]=c[b+8>>2];c[37892>>2]=c[b+12>>2];i=d;return 37848}function eq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;c=i;i=i+72|0;d=c|0;e=c+8|0;f=c+16|0;h=c+24|0;j=c+32|0;k=c+40|0;l=c+48|0;m=c+56|0;n=c+64|0;o=+g[b+20>>2];p=+g[b+40>>2];q=+g[b+24>>2];r=+g[b+36>>2];s=o*p-q*r;t=+g[b+32>>2];u=+g[b+16>>2];v=q*t-u*p;w=u*r-o*t;x=+g[b>>2];y=+g[b+4>>2];z=+g[b+8>>2];A=1.0/(x*s+y*v+z*w);g[d>>2]=s*A;g[e>>2]=(z*r-y*p)*A;g[f>>2]=(y*q-z*o)*A;g[h>>2]=v*A;g[j>>2]=(x*p-z*t)*A;g[k>>2]=(z*u-x*q)*A;g[l>>2]=w*A;g[m>>2]=(y*t-x*r)*A;g[n>>2]=(x*o-y*u)*A;d$(a,d,e,f,h,j,k,l,m,n);i=c;return}function er(){es();return 42816}function es(){var b=0,c=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0;b=i;i=i+72|0;c=b|0;d=b+8|0;e=b+16|0;f=b+24|0;h=b+32|0;j=b+40|0;k=b+48|0;l=b+56|0;m=b+64|0;if((a[43048]|0)!=0){i=b;return}if((b1(43048)|0)==0){i=b;return}g[c>>2]=1.0;g[d>>2]=0.0;g[e>>2]=0.0;g[f>>2]=0.0;g[h>>2]=1.0;g[j>>2]=0.0;g[k>>2]=0.0;g[l>>2]=0.0;g[m>>2]=1.0;d$(42816,c,d,e,f,h,j,k,l,m);i=b;return}function et(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;d=i;i=i+120|0;e=d|0;f=d+8|0;h=d+16|0;j=d+24|0;k=d+32|0;l=d+40|0;m=d+48|0;n=d+56|0;o=d+64|0;p=d+72|0;do{if((a[44064]|0)==0){if((b1(44064)|0)==0){break}else{q=37640}do{q=q+16|0;}while((q|0)!=37688)}}while(0);r=+g[b+20>>2];s=+g[b+40>>2];t=+g[b+24>>2];u=+g[b+36>>2];g[e>>2]=r*s-t*u;v=+g[b+8>>2];w=+g[b+4>>2];g[f>>2]=v*u-w*s;g[h>>2]=w*t-v*r;x=+g[b+32>>2];y=+g[b+16>>2];g[j>>2]=t*x-y*s;z=+g[b>>2];g[k>>2]=z*s-v*x;g[l>>2]=v*y-z*t;g[m>>2]=y*u-r*x;g[n>>2]=w*x-z*u;g[o>>2]=z*r-w*y;d$(p,e,f,h,j,k,l,m,n,o);o=p;c[9410]=c[o>>2];c[9411]=c[o+4>>2];c[9412]=c[o+8>>2];c[9413]=c[o+12>>2];o=p+16|0;c[9414]=c[o>>2];c[37660>>2]=c[o+4>>2];c[37664>>2]=c[o+8>>2];c[37668>>2]=c[o+12>>2];o=p+32|0;c[9418]=c[o>>2];c[37676>>2]=c[o+4>>2];c[37680>>2]=c[o+8>>2];c[37684>>2]=c[o+12>>2];i=d;return 37640}function eu(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ev(a,b,c,d);return}function ev(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;g[b>>2]=1.0;aDD(b+4|0,0,16);g[b+20>>2]=1.0;aDD(b+24|0,0,16);g[b+40>>2]=1.0;g[b+44>>2]=0.0;e=a+4|0;f=a+8|0;h=a+24|0;i=a|0;j=a+20|0;k=a+40|0;l=d;while(1){if((l|0)<=0){m=147;break}n=+P(+(+g[e>>2]));o=+P(+(+g[f>>2]));d=o>n;p=d?o:n;n=+P(+(+g[h>>2]));if(n>p){q=1;r=2;s=0;t=n}else{q=0;r=d?2:1;s=d?1:2;t=p}p=+P(+(+g[i>>2]));n=p+ +P(+(+g[j>>2]));p=(n+ +P(+(+g[k>>2])))*c;if(t>p){u=l}else{if(t>p*1.1920928955078125e-7){u=1}else{m=148;break}}d=a+(q<<4)+(r<<2)|0;p=+g[d>>2];v=a+(r<<4)+(r<<2)|0;w=a+(q<<4)+(q<<2)|0;n=(+g[v>>2]- +g[w>>2])/(p*2.0);o=n*n;if(o*o<83886080.0){x=+Q(+(o+1.0));if(n<0.0){y=n-x}else{y=n+x}x=1.0/y;z=1.0/+Q(+(x*x+1.0));A=z*x;B=z;C=x}else{x=1.0/(n*(.5/o+2.0));o=1.0-x*.5*x;A=o*x;B=o;C=x}g[a+(r<<4)+(q<<2)>>2]=0.0;g[d>>2]=0.0;x=C*p;g[w>>2]=+g[w>>2]-x;g[v>>2]=+g[v>>2]+x;v=a+(s<<4)+(q<<2)|0;x=+g[v>>2];w=a+(s<<4)+(r<<2)|0;p=+g[w>>2];o=B*x-A*p;g[a+(q<<4)+(s<<2)>>2]=o;g[v>>2]=o;o=B*p+A*x;g[a+(r<<4)+(s<<2)>>2]=o;g[w>>2]=o;w=0;while(1){if((w|0)>=3){break}o=+g[b+(w<<4)+(q<<2)>>2];x=+g[b+(w<<4)+(r<<2)>>2];g[b+(w<<4)+(q<<2)>>2]=B*o-A*x;g[b+(w<<4)+(r<<2)>>2]=B*x+A*o;w=w+1|0}l=u-1|0}if((m|0)==147){return}else if((m|0)==148){return}}function ew(a,b){a=a|0;b=b|0;em(a,b);return}function ex(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ey(a,b,c,d);return}function ey(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;e=+S(+b);f=+S(+c);h=+S(+d);i=+T(+b);b=+T(+c);c=+T(+d);d=e*h;j=e*c;k=i*h;l=i*c;g[a>>2]=f*h;g[a+4>>2]=b*k-j;g[a+8>>2]=b*d+l;g[a+12>>2]=0.0;g[a+16>>2]=f*c;g[a+20>>2]=b*l+d;g[a+24>>2]=b*j-k;g[a+28>>2]=0.0;g[a+32>>2]=-0.0-b;g[a+36>>2]=f*i;g[a+40>>2]=f*e;g[a+44>>2]=0.0;return}function ez(a){a=a|0;g[a>>2]=1.0;aDD(a+4|0,0,16);g[a+20>>2]=1.0;aDD(a+24|0,0,16);g[a+40>>2]=1.0;g[a+44>>2]=0.0;return}function eA(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+16|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+32|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return a|0}function eB(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0,f=0,h=0,j=0;e=i;i=i+24|0;f=e|0;h=e+8|0;j=e+16|0;g[f>>2]=b;g[h>>2]=c;g[j>>2]=d;eC(a,f,h,j,1);i=e;return}function eC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;f=+g[a+32>>2];if(+P(+f)<1.0){do{if(f<-1.0){h=-1.0}else{if(f<=1.0){h=f;break}h=1.0}}while(0);i=+W(+h);h=-0.0-i;j=i+3.1415927410125732;i=+g[a+36>>2];k=+S(+h);l=+g[a+40>>2];m=+Y(+(i/k),+(l/k));n=+S(+j);o=+Y(+(i/n),+(l/n));l=+g[a+16>>2];i=+g[a>>2];p=+Y(+(l/k),+(i/k));q=m;r=+Y(+(l/n),+(i/n));s=j;t=o;u=p;v=h}else{h=+Y(+(+g[a>>2]),+(+g[a+8>>2]))+1.5707963705062866;p=f>0.0?1.5707963705062866:-1.5707963705062866;q=h;r=0.0;s=p;t=h;u=0.0;v=p}a=(e|0)==1;g[b>>2]=a?u:r;g[c>>2]=a?v:s;g[d>>2]=a?q:t;return}function eD(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;var f=0,h=0,j=0,k=0;f=i;i=i+24|0;h=f|0;j=f+8|0;k=f+16|0;g[h>>2]=b;g[j>>2]=c;g[k>>2]=d;eC(a,h,j,k,e);i=f;return}function eE(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ey(a,d,c,b);return}function eF(a,b){a=a|0;b=b|0;var c=0,d=0;c=0;while(1){if((c|0)<3){d=0}else{break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+g[b+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}return}function eG(a,b){a=a|0;b=b|0;return a+(b<<4)|0}function eH(b,c){b=b|0;c=c|0;a[b+24|0]=c&1;return}function eI(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function eJ(a){a=a|0;return+(+g[a+12>>2])}function eK(a){a=a|0;return c[a+4>>2]|0}function eL(b){b=b|0;return(a[b+26|0]&1)!=0|0}function eM(b){b=b|0;return(a[b+16|0]&1)!=0|0}function eN(b,c){b=b|0;c=c|0;a[b+16|0]=c&1;return}function eO(a){a=a|0;return c[a+8>>2]|0}function eP(a,b){a=a|0;b=b|0;c[a+40>>2]=b;return}function eQ(a){a=a|0;return c[a+40>>2]|0}function eR(a){a=a|0;return+(+g[a>>2])}function eS(a){a=a|0;return+(+g[a+36>>2])}function eT(b){b=b|0;return(a[b+24|0]&1)!=0|0}function eU(a,b){a=a|0;b=+b;g[a+28>>2]=b;return}function eV(a,b){a=a|0;b=+b;g[a>>2]=b;return}function eW(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function eX(b,c){b=b|0;c=c|0;a[b+32|0]=c&1;return}function eY(b){b=b|0;return(a[b+32|0]&1)!=0|0}function eZ(a){a=a|0;return+(+g[a+28>>2])}function e_(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function e$(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function e0(b){b=b|0;return(a[b+25|0]&1)!=0|0}function e1(b,c){b=b|0;c=c|0;a[b+25|0]=c&1;return}function e2(b,c){b=b|0;c=c|0;a[b+26|0]=c&1;return}function e3(a){a=a|0;return(c[a+4>>2]|0)==31|0}function e4(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function e5(a){a=a|0;return c[a+52>>2]|0}function e6(a){a=a|0;return(c[a+4>>2]|0)<7|0}function e7(a){a=a|0;return+(+g[a+28+((((c[a+52>>2]|0)+2|0)%3|0)<<2)>>2])}function e8(a){a=a|0;return+(+g[a+28+(c[a+52>>2]<<2)>>2])}function e9(a){a=a|0;return a+12|0}function fa(a){a=a|0;return+(+g[a+44>>2])}function fb(a){a=a|0;return(c[a+4>>2]|0)<20|0}function fc(a){a=a|0;return(c[a+4>>2]|0)==28|0}function fd(a){a=a|0;return c[a+8>>2]|0}function fe(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function ff(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function fg(a){a=a|0;return(c[a+4>>2]|0)==32|0}function fh(a){a=a|0;return a+28|0}function fi(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function fj(b){b=b|0;var d=0,e=0,f=0;d=i;i=i+48|0;e=d|0;do{if((a[43968]|0)==0){if((b1(43968)|0)==0){break}else{f=37432}do{f=f+16|0;}while((f|0)!=37480)}}while(0);d$(e,b|0,b+16|0,b+32|0,b+4|0,b+20|0,b+36|0,b+8|0,b+24|0,b+40|0);b=e;c[9358]=c[b>>2];c[9359]=c[b+4>>2];c[9360]=c[b+8>>2];c[9361]=c[b+12>>2];b=e+16|0;c[9362]=c[b>>2];c[37452>>2]=c[b+4>>2];c[37456>>2]=c[b+8>>2];c[37460>>2]=c[b+12>>2];b=e+32|0;c[9366]=c[b>>2];c[37468>>2]=c[b+4>>2];c[37472>>2]=c[b+8>>2];c[37476>>2]=c[b+12>>2];i=d;return 37432}function fk(a){a=a|0;if((a|0)==0){return}aDB(a);return}function fl(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;e=i;i=i+120|0;f=e|0;h=e+8|0;j=e+16|0;k=e+24|0;l=e+32|0;m=e+40|0;n=e+48|0;o=e+56|0;p=e+64|0;q=e+72|0;do{if((a[43896]|0)==0){if((b1(43896)|0)==0){break}else{r=37224}do{r=r+16|0;}while((r|0)!=37272)}}while(0);s=+g[b>>2];t=+g[d>>2];u=+g[b+4>>2];v=+g[d+4>>2];w=+g[b+8>>2];x=+g[d+8>>2];g[f>>2]=s*t+u*v+w*x;y=+g[d+16>>2];z=+g[d+20>>2];A=+g[d+24>>2];g[h>>2]=s*y+u*z+w*A;B=+g[d+32>>2];C=+g[d+36>>2];D=+g[d+40>>2];g[j>>2]=s*B+u*C+w*D;w=+g[b+16>>2];u=+g[b+20>>2];s=+g[b+24>>2];g[k>>2]=w*t+u*v+s*x;g[l>>2]=w*y+u*z+s*A;g[m>>2]=w*B+u*C+s*D;s=+g[b+32>>2];u=+g[b+36>>2];w=+g[b+40>>2];g[n>>2]=s*t+u*v+w*x;g[o>>2]=s*y+u*z+w*A;g[p>>2]=s*B+u*C+w*D;d$(q,f,h,j,k,l,m,n,o,p);p=q;c[9306]=c[p>>2];c[9307]=c[p+4>>2];c[9308]=c[p+8>>2];c[9309]=c[p+12>>2];p=q+16|0;c[9310]=c[p>>2];c[37244>>2]=c[p+4>>2];c[37248>>2]=c[p+8>>2];c[37252>>2]=c[p+12>>2];p=q+32|0;c[9314]=c[p>>2];c[37260>>2]=c[p+4>>2];c[37264>>2]=c[p+8>>2];c[37268>>2]=c[p+12>>2];i=e;return 37224}function fm(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0;d=+g[a+32>>2];do{if(d>1.0){e=-1.0}else{if(d>=-1.0){e=-0.0-d;break}e=1.0}}while(0);+P(+(+W(+e)));return}function fn(a){a=a|0;if((a|0)==0){return}aDB(a);return}function fo(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function fp(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43720]|0)==0){if((b1(43720)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9262]=c[d>>2];c[9263]=c[d+4>>2];c[9264]=c[d+8>>2];c[9265]=c[d+12>>2];i=e;return 37048}function fq(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(75)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e>>2]=25424;c[e+4>>2]=10;c[e+52>>2]=1;g[e+28>>2]=a;g[e+32>>2]=b*.5;g[e+36>>2]=a;g[e+40>>2]=0.0;return e|0}function fr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function fs(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ft(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function fu(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function fv(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function fw(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function fx(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43256]|0)==0){if((b1(43256)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9218]=c[d>>2];c[9219]=c[d+4>>2];c[9220]=c[d+8>>2];c[9221]=c[d+12>>2];i=e;return 36872}function fy(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43416]|0)==0){if((b1(43416)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9762]=c[d>>2];c[9763]=c[d+4>>2];c[9764]=c[d+8>>2];c[9765]=c[d+12>>2];i=e;return 39048}function fz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function fA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function fB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43576]|0)==0){if((b1(43576)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9718]=c[d>>2];c[9719]=c[d+4>>2];c[9720]=c[d+8>>2];c[9721]=c[d+12>>2];i=e;return 38872}function fC(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function fD(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function fE(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function fF(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function fG(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function fH(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function fI(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function fJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function fK(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function fL(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function fM(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function fN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function fO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function fP(){var b=0,d=0,e=0;while(1){b=aDx(44)|0;if((b|0)!=0){d=299;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==299){g[b>>2]=0.0;c[b+4>>2]=0;c[b+8>>2]=1;g[b+12>>2]=1.0;a[b+16|0]=1;c[b+20>>2]=0;a[b+24|0]=0;a[b+25|0]=1;a[b+26|0]=1;g[b+28>>2]=.03999999910593033;a[b+32|0]=0;g[b+36>>2]=0.0;c[b+40>>2]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function fQ(a){a=a|0;return c[a+4>>2]|0}function fR(a){a=a|0;return(c[a+4>>2]|0)<20|0}function fS(a){a=a|0;return(c[a+4>>2]|0)<7|0}function fT(a){a=a|0;return c[a+104>>2]|0}function fU(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function fV(a){a=a|0;return a+12|0}function fW(a){a=a|0;return+(+g[a+44>>2])}function fX(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function fY(a){a=a|0;return(c[a+4>>2]|0)==28|0}function fZ(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function f_(a){a=a|0;return c[a+8>>2]|0}function f$(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function f0(a){a=a|0;return(c[a+4>>2]|0)==32|0}function f1(a){a=a|0;return c[a+104>>2]|0}function f2(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function f3(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function f4(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43632]|0)==0){if((b1(43632)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9674]=c[d>>2];c[9675]=c[d+4>>2];c[9676]=c[d+8>>2];c[9677]=c[d+12>>2];i=e;return 38696}function f5(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function f6(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0.0;do{if((a[43840]|0)==0){if((b1(43840)|0)==0){break}}}while(0);e=c[b+104>>2]|0;f=+g[e+(d<<4)+4>>2]*+g[b+16>>2];h=+g[e+(d<<4)+8>>2]*+g[b+20>>2];g[9630]=+g[e+(d<<4)>>2]*+g[b+12>>2];g[9631]=f;g[9632]=h;g[9633]=0.0;return 38520}function f7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function f8(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function f9(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ga(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function gb(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function gc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function gd(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function ge(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function gf(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function gg(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(131)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}d=b;avo(d,0,0,16);return d|0}function gh(a){a=a|0;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(131)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d;avo(e,a,0,16);return e|0}function gi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(131)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;avo(f,a,b,16);return f|0}function gj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[9806]=(c[9806]|0)+1;e=aDx(131)|0;if((e|0)==0){f=0}else{g=-(e+4|0)&15;c[e+g>>2]=e;f=e+(g+4)|0}g=f;avo(g,a,b,d);return g|0}function gk(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43160]|0)==0){if((b1(43160)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9598]=c[d>>2];c[9599]=c[d+4>>2];c[9600]=c[d+8>>2];c[9601]=c[d+12>>2];i=e;return 38392}function gl(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function gm(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function gn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function go(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43472]|0)==0){if((b1(43472)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9594]=c[d>>2];c[9595]=c[d+4>>2];c[9596]=c[d+8>>2];c[9597]=c[d+12>>2];i=e;return 38376}function gp(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function gq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=b+96|0;f=c[e>>2]|0;g=b+100|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<4|4)+15|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[e>>2]|0}n=b+104|0;if((k|0)>0){l=0;do{o=j+(l<<4)|0;if((o|0)!=0){p=o;o=(c[n>>2]|0)+(l<<4)|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=b+108|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-16+12>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[e>>2]|0}else{i=f}}while(0);f=(c[b+104>>2]|0)+(i<<4)|0;if((f|0)==0){q=i;r=q+1|0;c[e>>2]=r;s=b|0;aze(s);return}i=f;f=d;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];q=c[e>>2]|0;r=q+1|0;c[e>>2]=r;s=b|0;aze(s);return}function gr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function gs(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function gt(a){a=a|0;aze(a|0);return}function gu(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function gv(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function gw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;gx(a|0,b,c,d,e);return}function gx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;f=i;i=i+120|0;h=f|0;j=f+8|0;k=f+16|0;l=f+24|0;m=f+32|0;n=f+40|0;o=f+48|0;p=f+56|0;q=f+64|0;r=f+72|0;s=+g[a+72>>2];t=+g[a+56>>2];u=+g[a+76>>2];v=+g[a+60>>2];w=+g[a+80>>2];x=+g[a+64>>2];y=(s-t)*.5+e;z=(u-v)*.5+e;A=(w-x)*.5+e;e=(s+t)*.5;t=(u+v)*.5;v=(w+x)*.5;a=b|0;g[h>>2]=+P(+(+g[a>>2]));B=b+4|0;g[j>>2]=+P(+(+g[B>>2]));C=b+8|0;g[k>>2]=+P(+(+g[C>>2]));D=b+16|0;g[l>>2]=+P(+(+g[D>>2]));E=b+20|0;g[m>>2]=+P(+(+g[E>>2]));F=b+24|0;g[n>>2]=+P(+(+g[F>>2]));G=b+32|0;g[o>>2]=+P(+(+g[G>>2]));H=b+36|0;g[p>>2]=+P(+(+g[H>>2]));I=b+40|0;g[q>>2]=+P(+(+g[I>>2]));d$(r,h,j,k,l,m,n,o,p,q);x=+g[a>>2]*e+ +g[B>>2]*t+ +g[C>>2]*v+ +g[b+48>>2];w=+g[D>>2]*e+ +g[E>>2]*t+ +g[F>>2]*v+ +g[b+52>>2];u=+g[G>>2]*e+ +g[H>>2]*t+ +g[I>>2]*v+ +g[b+56>>2];v=+g[r>>2]*y+ +g[r+4>>2]*z+ +g[r+8>>2]*A;t=+g[r+16>>2]*y+ +g[r+20>>2]*z+ +g[r+24>>2]*A;e=+g[r+32>>2]*y+ +g[r+36>>2]*z+ +g[r+40>>2]*A;g[c>>2]=x-v;g[c+4>>2]=w-t;g[c+8>>2]=u-e;g[c+12>>2]=0.0;g[d>>2]=x+v;g[d+4>>2]=w+t;g[d+8>>2]=u+e;g[d+12>>2]=0.0;i=f;return}function gy(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43336]|0)==0){if((b1(43336)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9590]=c[d>>2];c[9591]=c[d+4>>2];c[9592]=c[d+8>>2];c[9593]=c[d+12>>2];i=e;return 38360}function gz(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 5:case 4:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function gA(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function gB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function gC(a){a=a|0;return a+28|0}function gD(a){a=a|0;return(c[a+4>>2]|0)==31|0}function gE(a){a=a|0;return c[a+52>>2]|0}function gF(a){a=a|0;return c[a+4>>2]|0}function gG(a){a=a|0;return c[a+96>>2]|0}function gH(a){a=a|0;return c[a>>2]|0}function gI(a){a=a|0;return c[a>>2]|0}function gJ(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function gK(a){a=a|0;return c[a+12>>2]|0}function gL(a){a=a|0;return c[a+16>>2]|0}function gM(a,b){a=a|0;b=b|0;c[a+24>>2]=b;return}function gN(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function gO(a){a=a|0;return c[a+28>>2]|0}function gP(a){a=a|0;return c[a+20>>2]|0}function gQ(a){a=a|0;return c[a>>2]|0}function gR(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function gS(a,b){a=a|0;b=b|0;c[a+28>>2]=b;return}function gT(a){a=a|0;return c[a+24>>2]|0}function gU(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function gV(a){a=a|0;return c[a+4>>2]|0}function gW(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function gX(a,b){a=a|0;b=b|0;c[a+20>>2]=b;return}function gY(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function gZ(a){a=a|0;return c[a+8>>2]|0}function g_(a){a=a|0;return+(+g[a+224>>2])}function g$(a,b){a=a|0;b=+b;g[a+184>>2]=b;return}function g0(a){a=a|0;return+(+g[a+220>>2])}function g1(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function g2(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function g3(a){a=a|0;var b=0;if((c[a+204>>2]&3|0)!=0){return}b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function g4(a,b){a=a|0;b=b|0;do{if(!b){if((c[a+204>>2]&3|0)==0){break}return}}while(0);b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function g5(a){a=a|0;return a+132|0}function g6(a){a=a|0;return(c[a+204>>2]&7|0)==0|0}function g7(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function g8(a){a=a|0;return c[a+208>>2]|0}function g9(a,b){a=a|0;b=b|0;c[a+212>>2]=b;return}function ha(a){a=a|0;return+(+g[a+248>>2])}function hb(a,b){a=a|0;b=b|0;c[a+236>>2]=b;return}function hc(a){a=a|0;return a+164|0}function hd(a){a=a|0;return a+148|0}function he(a,b){a=a|0;b=b|0;c[a+216>>2]=b;return}function hf(a){a=a|0;return a+68|0}function hg(a,b){a=a|0;b=b|0;c[a+208>>2]=b;return}function hh(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function hi(a){a=a|0;return c[a+204>>2]|0}function hj(a){a=a|0;return(c[a+204>>2]&1|0)!=0|0}function hk(a){a=a|0;return c[a+192>>2]|0}function hl(a){a=a|0;return c[a+188>>2]|0}function hm(a){a=a|0;return+(+g[a+228>>2])}function hn(a){a=a|0;return c[a+236>>2]|0}function ho(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function hp(a){a=a|0;return a+4|0}function hq(a){a=a|0;var b=0.0;b=+g[a+248>>2];return+(b*b)}function hr(a,b){a=a|0;b=b|0;c[a+192>>2]=b;return}function hs(a){a=a|0;return c[a+212>>2]|0}function ht(a){a=a|0;var b=0;b=c[a+216>>2]|0;return((b|0)==2?0:(b|0)!=5)|0}function hu(a){a=a|0;return c[a+232>>2]|0}function hv(a){a=a|0;return c[a+216>>2]|0}function hw(a){a=a|0;return(c[a+204>>2]&4|0)==0|0}function hx(a,b){a=a|0;b=b|0;var d=0;d=a+216|0;if(((c[d>>2]|0)-4|0)>>>0<2){return}c[d>>2]=b;return}function hy(a){a=a|0;return c[a+200>>2]|0}function hz(a){a=a|0;return+(+g[a+184>>2])}function hA(a){a=a|0;return+(+g[a+240>>2])}function hB(a){a=a|0;return+(+g[a+244>>2])}function hC(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function hD(a){a=a|0;return c[a+196>>2]|0}function hE(a,b){a=a|0;b=b|0;c[a+204>>2]=b;return}function hF(a){a=a|0;return(c[a+204>>2]&3|0)!=0|0}function hG(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function hH(a){a=a|0;return(c[a+180>>2]|0)!=0|0}function hI(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function hJ(a){a=a|0;return(c[a+204>>2]&2|0)!=0|0}function hK(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function hL(a){a=a|0;return c[a+92>>2]|0}function hM(a){a=a|0;return(c[a+4>>2]|0)<7|0}function hN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function hO(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function hP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function hQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function hR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function hS(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function hT(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function hU(a){a=a|0;if((a|0)==0){return}aDB(a);return}function hV(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-32+28>>2]|0);return}function hW(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(51)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}c[b+24>>2]=2;c[b+28>>2]=0;return b|0}function hX(a,b){a=a|0;b=b|0;var d=0;d=a+132|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function hY(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function hZ(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a,b,d)|0}function h_(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function h$(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(275)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}c[b>>2]=23736;g[b+164>>2]=1.0;g[b+168>>2]=1.0;g[b+172>>2]=1.0;g[b+176>>2]=0.0;c[b+180>>2]=0;g[b+184>>2]=999999984306749400.0;aDD(b+188|0,0,16);c[b+204>>2]=1;c[b+208>>2]=-1;c[b+212>>2]=-1;c[b+216>>2]=1;g[b+220>>2]=0.0;g[b+224>>2]=.5;g[b+228>>2]=0.0;c[b+232>>2]=1;c[b+236>>2]=0;g[b+240>>2]=1.0;g[b+244>>2]=0.0;g[b+248>>2]=0.0;c[b+252>>2]=0;g[b+4>>2]=1.0;aDD(b+8|0,0,16);g[b+24>>2]=1.0;aDD(b+28|0,0,16);g[b+44>>2]=1.0;aDD(b+48|0,0,20);return b|0}function h0(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function h1(a,b){a=a|0;b=b|0;var d=0;if((c[a+252>>2]|0)==0){d=1;return d|0}d=dj[c[c[a>>2]>>2]&511](a,b)|0;return d|0}function h2(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function h3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function h4(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+164|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];do{if(+g[b>>2]!=1.0){f=1}else{if(+g[b+4>>2]!=1.0){f=1;break}f=+g[b+8>>2]!=1.0|0}}while(0);c[a+180>>2]=f;return}function h5(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function h6(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function h7(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function h8(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function h9(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43448]|0)==0){if((b1(43448)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9586]=c[d>>2];c[9587]=c[d+4>>2];c[9588]=c[d+8>>2];c[9589]=c[d+12>>2];i=e;return 38344}function ia(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function ib(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function ic(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function id(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function ie(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(4)|0;if((b|0)!=0){d=578;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==578){c[b>>2]=a;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function ig(a){a=a|0;return a+12|0}function ih(a){a=a|0;return+(+g[a+44>>2])}function ii(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function ij(a){a=a|0;return(c[a+4>>2]|0)<20|0}function ik(a){a=a|0;return(c[a+4>>2]|0)==28|0}function il(a){a=a|0;return c[a+8>>2]|0}function im(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function io(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ip(a){a=a|0;return a+28|0}function iq(a){a=a|0;return(c[a+4>>2]|0)==31|0}function ir(a){a=a|0;return c[a+52>>2]|0}function is(a){a=a|0;return c[a+4>>2]|0}function it(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function iu(a){a=a|0;return+(+g[a+20>>2])}function iv(b){b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(115)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e+52>>2]=0;g[e+56>>2]=1.0;g[e+60>>2]=1.0;g[e+64>>2]=1.0;g[e+68>>2]=0.0;g[e+72>>2]=-1.0;g[e+76>>2]=-1.0;g[e+80>>2]=-1.0;g[e+84>>2]=0.0;a[e+88|0]=0;c[e>>2]=20672;c[e+92>>2]=b;c[e+4>>2]=3;aze(e);return e|0}function iw(b,d){b=b|0;d=d|0;var e=0,f=0,h=0;c[9806]=(c[9806]|0)+1;e=aDx(115)|0;if((e|0)==0){f=0}else{h=-(e+4|0)&15;c[e+h>>2]=e;f=e+(h+4)|0}h=f;c[f+8>>2]=0;g[f+12>>2]=1.0;g[f+16>>2]=1.0;g[f+20>>2]=1.0;g[f+24>>2]=0.0;g[f+44>>2]=.03999999910593033;c[f+52>>2]=0;g[f+56>>2]=1.0;g[f+60>>2]=1.0;g[f+64>>2]=1.0;g[f+68>>2]=0.0;g[f+72>>2]=-1.0;g[f+76>>2]=-1.0;g[f+80>>2]=-1.0;g[f+84>>2]=0.0;a[f+88|0]=0;c[f>>2]=20672;c[f+92>>2]=b;c[f+4>>2]=3;if(!d){return h|0}aze(f);return h|0}function ix(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43280]|0)==0){if((b1(43280)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9582]=c[d>>2];c[9583]=c[d+4>>2];c[9584]=c[d+8>>2];c[9585]=c[d+12>>2];i=e;return 38328}function iy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function iz(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function iA(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function iB(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function iC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function iD(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43088]|0)==0){if((b1(43088)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9578]=c[d>>2];c[9579]=c[d+4>>2];c[9580]=c[d+8>>2];c[9581]=c[d+12>>2];i=e;return 38312}function iE(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function iF(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function iG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function iH(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function iI(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function iJ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function iK(a){a=a|0;aze(a|0);return}function iL(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function iM(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function iN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;gx(a|0,b,c,d,e);return}function iO(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43152]|0)==0){if((b1(43152)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9562]=c[d>>2];c[9563]=c[d+4>>2];c[9564]=c[d+8>>2];c[9565]=c[d+12>>2];i=e;return 38248}function iP(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 13:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function iQ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function iR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function iS(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function iT(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function iU(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function iV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function iW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function iX(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function iY(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0;h=i;i=i+168|0;j=h|0;k=h+48|0;l=h+64|0;m=h+80|0;n=h+152|0;c[j>>2]=18392;a[j+4|0]=1;o=j+8|0;aDD(o|0,0,36);p=k|0;g[p>>2]=999999984306749400.0;q=k+4|0;g[q>>2]=999999984306749400.0;r=k+8|0;g[r>>2]=999999984306749400.0;g[k+12>>2]=0.0;s=b+92|0;b=c[s>>2]|0;t=c[(c[b>>2]|0)+8>>2]|0;g[l>>2]=-999999984306749400.0;g[l+4>>2]=-999999984306749400.0;g[l+8>>2]=-999999984306749400.0;g[l+12>>2]=0.0;dI[t&1023](b,j|0,l,k);f=+g[j+40>>2];if(f>0.0){u=1.0/f;v=u*+g[j+24>>2];w=u*+g[j+28>>2];x=u*+g[j+32>>2];y=0.0}else{v=+g[o>>2];w=+g[j+12>>2];x=+g[j+16>>2];y=+g[j+20>>2]}g[d+48>>2]=v;g[d+52>>2]=w;g[d+56>>2]=x;g[d+60>>2]=y;c[m>>2]=18360;aDD(m+4|0,0,48);g[m+52>>2]=v;g[m+56>>2]=w;g[m+60>>2]=x;g[m+64>>2]=y;j=c[s>>2]|0;s=c[(c[j>>2]|0)+8>>2]|0;y=-0.0- +g[q>>2];x=-0.0- +g[r>>2];g[n>>2]=-0.0- +g[p>>2];g[n+4>>2]=y;g[n+8>>2]=x;g[n+12>>2]=0.0;dI[s&1023](j,m|0,n,k);k=m+4|0;ev(k,d|0,9999999747378752.0e-21,20);x=+g[k>>2];y=+g[m+24>>2];w=+g[m+44>>2];g[e+12>>2]=0.0;v=1.0/(f*.1666666716337204);g[e>>2]=v*x;g[e+4>>2]=v*y;g[e+8>>2]=v*w;i=h;return}function iZ(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function i_(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function i$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a,b,d,e,g,h);i=f;return}function i0(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a,b,d,e,f,h);i=g;return}function i1(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e,f,g);return}function i2(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a,b,d,e,f);return}function i3(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function i4(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a,b);return}function i5(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function i6(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a);return}function i7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a,b,d,e);return}function i8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a,b,d,e);return}function i9(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a,b,d,e,f,g,h,i,j)|0}function ja(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function jb(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function jc(a){a=a|0;return+(+g[a+20>>2]*+g[a+24>>2])}function jd(b){b=b|0;return(a[b+28|0]&1)!=0|0}function je(a){a=a|0;return+(+g[a+12>>2])}function jf(a){a=a|0;return+(+g[a+24>>2])}function jg(a){a=a|0;return+(+g[a+8>>2])}function jh(a){a=a|0;return+(+g[a+4>>2])}function ji(a){a=a|0;return+(+g[a+16>>2])}function jj(a){a=a|0;var b=0;b=c[a+40>>2]|0;c[b+16>>2]=3;c[b+20>>2]=3;return}function jk(a,b){a=a|0;b=b|0;var d=0;d=c[a+40>>2]|0;c[d+16>>2]=b;c[d+20>>2]=3;return}function jl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+40>>2]|0;c[e+16>>2]=b;c[e+20>>2]=d;return}function jm(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function jn(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function jo(a){a=a|0;return b[a+6>>1]|0}function jp(a){a=a|0;return b[a+4>>1]|0}function jq(a,b){a=a|0;b=+b;var c=0,d=0;c=i;i=i+8|0;d=c|0;g[d>>2]=b;aq4(a,d);i=c;return}function jr(a){a=a|0;if((a|0)==0){return}aDB(a);return}function js(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0;d=(c-b)*.5;g[a+4>>2]=d;c=+ck(+(d+b),6.2831854820251465);do{if(c<-3.1415927410125732){e=c+6.2831854820251465}else{if(c<=3.1415927410125732){e=c;break}e=c-6.2831854820251465}}while(0);g[a>>2]=e;g[a+8>>2]=.8999999761581421;g[a+12>>2]=.30000001192092896;g[a+16>>2]=1.0;return}function jt(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0,f=0.0;e=(c-b)*.5;g[a+4>>2]=e;c=+ck(+(e+b),6.2831854820251465);do{if(c<-3.1415927410125732){f=c+6.2831854820251465}else{if(c<=3.1415927410125732){f=c;break}f=c-6.2831854820251465}}while(0);g[a>>2]=f;g[a+8>>2]=d;g[a+12>>2]=.30000001192092896;g[a+16>>2]=1.0;return}function ju(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0.0,h=0.0;f=(c-b)*.5;g[a+4>>2]=f;c=+ck(+(f+b),6.2831854820251465);do{if(c<-3.1415927410125732){h=c+6.2831854820251465}else{if(c<=3.1415927410125732){h=c;break}h=c-6.2831854820251465}}while(0);g[a>>2]=h;g[a+8>>2]=d;g[a+12>>2]=e;g[a+16>>2]=1.0;return}function jv(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var h=0.0,i=0.0;h=(c-b)*.5;g[a+4>>2]=h;c=+ck(+(h+b),6.2831854820251465);do{if(c<-3.1415927410125732){i=c+6.2831854820251465}else{if(c<=3.1415927410125732){i=c;break}i=c-6.2831854820251465}}while(0);g[a>>2]=i;g[a+8>>2]=d;g[a+12>>2]=e;g[a+16>>2]=f;return}function jw(a){a=a|0;var b=0.0,c=0.0;b=+ck(+(+g[a>>2]+ +g[a+4>>2]),6.2831854820251465);if(b<-3.1415927410125732){c=b+6.2831854820251465;return+c}if(b<=3.1415927410125732){c=b;return+c}c=b-6.2831854820251465;return+c}function jx(b,c){b=b|0;c=+c;var d=0,e=0,f=0,h=0,i=0.0,j=0.0;d=b+20|0;g[d>>2]=0.0;e=b+24|0;g[e>>2]=0.0;f=b+28|0;a[f]=0;h=b+4|0;if(+g[h>>2]<0.0){return}i=+ck(+(c- +g[b>>2]),6.2831854820251465);do{if(i<-3.1415927410125732){j=i+6.2831854820251465}else{if(i<=3.1415927410125732){j=i;break}j=i-6.2831854820251465}}while(0);i=+g[h>>2];if(j<-0.0-i){a[f]=1;g[d>>2]=-0.0-(j+i);g[e>>2]=1.0;return}if(j<=i){return}a[f]=1;g[d>>2]=i-j;g[e>>2]=-1.0;return}function jy(a){a=a|0;var b=0.0,c=0.0;b=+ck(+(+g[a>>2]- +g[a+4>>2]),6.2831854820251465);if(b<-3.1415927410125732){c=b+6.2831854820251465;return+c}if(b<=3.1415927410125732){c=b;return+c}c=b-6.2831854820251465;return+c}function jz(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function jA(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function jB(a){a=a|0;return cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0}function jC(a){a=a|0;return cA[c[(c[a>>2]|0)+24>>2]&4095](a)|0}function jD(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a)|0}function jE(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a,b,d)|0}function jF(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return+(+dq[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i))}function jG(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function jH(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function jI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;return+(+db[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f))}function jJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+8>>2]&255](a,b,d,e,f);return}function jK(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function jL(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function jM(){var b=0,d=0,e=0;while(1){b=aDx(32)|0;if((b|0)!=0){d=792;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==792){g[b>>2]=0.0;g[b+4>>2]=-1.0;g[b+8>>2]=.8999999761581421;g[b+12>>2]=.30000001192092896;g[b+16>>2]=1.0;g[b+20>>2]=0.0;g[b+24>>2]=0.0;a[b+28|0]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function jN(){var a=0,b=0,d=0,e=0,f=0;a=i;i=i+32|0;b=a|0;while(1){d=aDx(88)|0;if((d|0)!=0){e=804;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==804){e=d;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=4096;c[b+16>>2]=4096;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=1;aw$(e,b);i=a;return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function jO(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(88)|0;if((b|0)!=0){d=816;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==816){d=b;aw$(d,a);return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function jP(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(16)|0;if((b|0)!=0){d=828;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==828){d=b;c[d>>2]=22536;c[b+4>>2]=c[a>>2];c[d>>2]=19832;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function jQ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;while(1){g=aDx(16)|0;if((g|0)!=0){break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){i=837;break}dC[h&63]()}if((i|0)==837){i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}i=g;h=g;c[h>>2]=22536;j=c[d>>2]|0;c[g+4>>2]=j;c[h>>2]=19832;h=g+8|0;a[h]=0;d=g+12|0;c[d>>2]=b;if((b|0)!=0){return i|0}c[d>>2]=cS[c[(c[j>>2]|0)+12>>2]&511](j,e,f)|0;a[h]=1;return i|0}function jR(){var a=0,b=0,d=0;while(1){a=aDx(40)|0;if((a|0)!=0){b=856;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){b=853;break}dC[d&63]()}if((b|0)==853){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}else if((b|0)==856){b=a;az0(b,16384,0);return b|0}return 0}function jS(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(40)|0;if((b|0)!=0){d=870;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){d=867;break}dC[e&63]()}if((d|0)==867){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((d|0)==870){d=b;az0(d,a,0);return d|0}return 0}function jT(a,b){a=a|0;b=b|0;return}function jU(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(+g[b+16>>2]>+g[c+32>>2]){d=0;return d|0}if(+g[c+16>>2]>+g[b+32>>2]){d=0;return d|0}if(+g[b+20>>2]>+g[c+36>>2]){d=0;return d|0}if(+g[c+20>>2]>+g[b+36>>2]){d=0;return d|0}if(+g[b+24>>2]>+g[c+40>>2]){d=0;return d|0}d=+g[c+24>>2]<=+g[b+40>>2];return d|0}function jV(a,b){a=a|0;b=b|0;var c=0;if(+g[a+16>>2]>+g[b+32>>2]){c=0;return c|0}if(+g[b+16>>2]>+g[a+32>>2]){c=0;return c|0}if(+g[a+20>>2]>+g[b+36>>2]){c=0;return c|0}if(+g[b+20>>2]>+g[a+36>>2]){c=0;return c|0}if(+g[a+24>>2]>+g[b+40>>2]){c=0;return c|0}c=+g[b+24>>2]<=+g[a+40>>2];return c|0}function jW(a){a=a|0;return c[a+1116>>2]|0}function jX(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function jY(a){a=a|0;return c[a+1112>>2]|0}function jZ(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;d=+g[b+80>>2];if((c[b+144>>2]|0)>1){e=+g[a+1120>>2];f=d<=e;return f|0}else{e=+g[a+1124>>2];f=d<=e;return f|0}return 0}function j_(a){a=a|0;return c[a>>2]|0}function j$(a,b){a=a|0;b=b|0;c[a+1136>>2]=b;return}function j0(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0;d=+g[a+1120>>2];e=c[a+1116>>2]|0;if((e|0)<=0){f=-1;return f|0}h=+g[b>>2];i=+g[b+4>>2];j=+g[b+8>>2];b=0;k=-1;l=d*d;while(1){d=+g[a+4+(b*276|0)>>2]-h;m=+g[a+4+(b*276|0)+4>>2]-i;n=+g[a+4+(b*276|0)+8>>2]-j;o=d*d+m*m+n*n;p=o>2]|0}function j2(a,b){a=a|0;b=b|0;return a+4+(b*276|0)|0}function j3(a){a=a|0;return+(+g[a+1120>>2])}function j4(a){a=a|0;var b=0,d=0;b=a+1116|0;a=c[b>>2]|0;d=0;while(1){if((d|0)>=(a|0)){break}d=d+1|0}c[b>>2]=0;return}function j5(a){a=a|0;return c[a+1108>>2]|0}function j6(a,b,d){a=a|0;b=b|0;d=d|0;c[a+1108>>2]=b;c[a+1112>>2]=d;return}function j7(a){a=a|0;return c[a+1136>>2]|0}function j8(a){a=a|0;return+(+g[a+1124>>2])}function j9(a){a=a|0;return c[a+1132>>2]|0}function ka(a){a=a|0;return c[a+1128>>2]|0}function kb(a,b){a=a|0;b=b|0;c[a+1132>>2]=b;return}function kc(a,b){a=a|0;b=b|0;c[a+1128>>2]=b;return}function kd(a){a=a|0;return c[a+64>>2]|0}function ke(a){a=a|0;return(c[a+4>>2]|0)<20|0}function kf(a){a=a|0;return c[a+68>>2]|0}function kg(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a,b,d,e,f);return}function kh(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function ki(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a,b,d,e,g,h);i=f;return}function kj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a,b,d,e,f,h);i=g;return}function kk(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e,f,g);return}function kl(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function km(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a,b,d,e);return}function kn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a,b,d,e);return}function ko(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a,b,d,e,f,g,h,i,j)|0}function kp(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a);return}function kq(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function kr(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function ks(a){a=a|0;return cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0}function kt(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function ku(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a)|0}function kv(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a,b,d)|0}function kw(a,b,c){a=a|0;b=b|0;c=c|0;ay6(a,b,c);return}function kx(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(1159)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d>>2]=1025;c[d+112>>2]=0;g[d+116>>2]=0.0;a[d+120|0]=0;aDD(d+124|0,0,28);c[d+388>>2]=0;g[d+392>>2]=0.0;a[d+396|0]=0;aDD(d+400|0,0,28);c[d+664>>2]=0;g[d+668>>2]=0.0;a[d+672|0]=0;aDD(d+676|0,0,28);c[d+940>>2]=0;g[d+944>>2]=0.0;a[d+948|0]=0;aDD(d+952|0,0,28);c[d+1108>>2]=0;c[d+1112>>2]=0;c[d+1116>>2]=0;c[d+1136>>2]=0;return d|0}function ky(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=+f;h=+h;var i=0,j=0,k=0;c[9806]=(c[9806]|0)+1;e=aDx(1159)|0;i=-(e+4|0)&15;c[e+i>>2]=e;j=e+(i+4)|0;c[j>>2]=1025;i=j+1108|0;e=j+4|0;while(1){c[e+108>>2]=0;g[e+112>>2]=0.0;a[e+116|0]=0;k=e+276|0;aDD(e+120|0,0,28);if((k|0)==(i|0)){break}else{e=k}}c[j+1108>>2]=b;c[j+1112>>2]=d;c[j+1116>>2]=0;g[j+1120>>2]=f;g[j+1124>>2]=h;return j|0}function kz(a,b){a=a|0;b=b|0;return ay5(a,b)|0}function kA(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;e=b+1116|0;f=c[e>>2]|0;h=f-1|0;if((h|0)==(d|0)){i=f;j=i-1|0;c[e>>2]=j;return}f=b+4+(d*276|0)|0;d=b+4+(h*276|0)|0;aDC(f|0,d|0,276)|0;c[b+4+(h*276|0)+108>>2]=0;g[b+4+(h*276|0)+208>>2]=0.0;g[b+4+(h*276|0)+240>>2]=0.0;g[b+4+(h*276|0)+272>>2]=0.0;g[b+4+(h*276|0)+112>>2]=0.0;a[b+4+(h*276|0)+116|0]=0;g[b+4+(h*276|0)+120>>2]=0.0;g[b+4+(h*276|0)+124>>2]=0.0;c[b+4+(h*276|0)+144>>2]=0;i=c[e>>2]|0;j=i-1|0;c[e>>2]=j;return}function kB(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-1140+1136>>2]|0);return}function kC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0,k=0.0,l=0,m=0.0,n=0,o=0,p=0,q=0;e=a+4+(d*276|0)+144|0;f=c[e>>2]|0;h=a+4+(d*276|0)+208|0;i=+g[h>>2];j=a+4+(d*276|0)+240|0;k=+g[j>>2];l=a+4+(d*276|0)+272|0;m=+g[l>>2];n=a+4+(d*276|0)+108|0;o=c[n>>2]|0;p=a+4+(d*276|0)|0;q=b;aDC(p|0,q|0,276)|0;c[n>>2]=o;g[a+4+(d*276|0)+112>>2]=i;g[a+4+(d*276|0)+120>>2]=k;g[a+4+(d*276|0)+124>>2]=m;g[h>>2]=i;g[j>>2]=k;g[l>>2]=m;c[e>>2]=f;return}function kD(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,d);return}function kE(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function kF(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function kG(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function kH(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=i;i=i+48|0;e=d|0;f=d+16|0;g=e;h=f;j=b+64|0;if((c[j>>2]|0)!=0){i=d;return}c[9806]=(c[9806]|0)+1;k=aDx(59)|0;do{if((k|0)==0){l=0}else{m=-(k+4|0)&15;n=k+(m+4)|0;c[k+m>>2]=k;if((n|0)==0){l=0;break}a[k+(m+40)|0]=1;c[k+(m+36)>>2]=0;c[k+(m+28)>>2]=0;c[k+(m|32)>>2]=0;c[n>>2]=0;c[k+(m+8)>>2]=0;c[k+(m+12)>>2]=-1;c[k+(m|16)>>2]=0;c[k+(m+20)>>2]=0;l=n}}while(0);c[j>>2]=l;l=b+16|0;if((c[l>>2]|0)<=0){i=d;return}k=b+24|0;b=f+16|0;n=f|0;f=0;do{m=c[k>>2]|0;o=c[m+(f*80|0)+64>>2]|0;dI[c[(c[o>>2]|0)+8>>2]&1023](o,m+(f*80|0)|0,n,e);c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2];o=c[j>>2]|0;p=o+4|0;q=c[p>>2]|0;do{if((q|0)==0){c[9806]=(c[9806]|0)+1;r=aDx(63)|0;if((r|0)==0){s=0;break}t=-(r+4|0)&15;u=r+(t+4)|0;c[r+t>>2]=r;if((u|0)==0){s=0;break}aDD(u|0,0,44);s=u}else{c[p>>2]=0;s=q}}while(0);c[s+32>>2]=0;c[s+36>>2]=f;c[s+40>>2]=0;q=s;aDC(q|0,h|0,32)|0;awv(o,c[o>>2]|0,s);q=o+12|0;c[q>>2]=(c[q>>2]|0)+1;c[m+(f*80|0)+76>>2]=s;f=f+1|0;}while((f|0)<(c[l>>2]|0));i=d;return}function kI(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(111)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}d=b;auE(d,1);return d|0}function kJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;while(1){d=aDx(40)|0;if((d|0)!=0){e=1008;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){e=1005;break}dC[f&63]()}if((e|0)==1005){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}else if((e|0)==1008){e=d;az0(e,a,b);return e|0}return 0}function kK(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function kL(a){a=a|0;return(c[a+4>>2]|0)==31|0}function kM(a){a=a|0;return(c[a+4>>2]|0)<7|0}function kN(a,b){a=a|0;b=b|0;return c[(c[a+24>>2]|0)+(b*80|0)+64>>2]|0}function kO(a){a=a|0;return(c[a+4>>2]|0)==28|0}function kP(a,b){a=a|0;b=b|0;return(c[a+24>>2]|0)+(b*80|0)|0}function kQ(a){a=a|0;return c[a+8>>2]|0}function kR(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function kS(a){a=a|0;return c[a+24>>2]|0}function kT(a){a=a|0;return c[a+16>>2]|0}function kU(a){a=a|0;return(c[a+4>>2]|0)==32|0}function kV(a){a=a|0;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(111)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d;auE(e,a);return e|0}function kW(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function kX(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function kY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function kZ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function k_(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function k$(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;f=i;i=i+128|0;h=f+64|0;j=f+80|0;k=f+96|0;l=f|0;m=f+16|0;n=f+32|0;o=f+48|0;p=h;q=j;r=k;s=b+68|0;c[s>>2]=(c[s>>2]|0)+1;s=d;c[l>>2]=c[s>>2];c[l+4>>2]=c[s+4>>2];c[l+8>>2]=c[s+8>>2];c[l+12>>2]=c[s+12>>2];s=d+16|0;c[m>>2]=c[s>>2];c[m+4>>2]=c[s+4>>2];c[m+8>>2]=c[s+8>>2];c[m+12>>2]=c[s+12>>2];s=d+32|0;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];s=d+48|0;c[o>>2]=c[s>>2];c[o+4>>2]=c[s+4>>2];c[o+8>>2]=c[s+8>>2];c[o+12>>2]=c[s+12>>2];s=c[e+4>>2]|0;t=+dh[c[(c[e>>2]|0)+44>>2]&1023](e);dI[c[(c[e>>2]|0)+8>>2]&1023](e,d,h,j);d=b+32|0;u=+g[h>>2];if(+g[d>>2]>u){g[d>>2]=u}d=b+48|0;u=+g[j>>2];if(+g[d>>2]>2]=u}d=b+36|0;u=+g[h+4>>2];if(+g[d>>2]>u){g[d>>2]=u}d=b+52|0;u=+g[j+4>>2];if(+g[d>>2]>2]=u}d=b+40|0;u=+g[h+8>>2];if(+g[d>>2]>u){g[d>>2]=u}d=b+56|0;u=+g[j+8>>2];if(+g[d>>2]>2]=u}d=c[b+64>>2]|0;if((d|0)==0){v=0;w=b+16|0}else{c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];p=k+16|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=b+16|0;p=c[q>>2]|0;k=d+4|0;j=c[k>>2]|0;do{if((j|0)==0){c[9806]=(c[9806]|0)+1;h=aDx(63)|0;if((h|0)==0){x=0;break}y=-(h+4|0)&15;z=h+(y+4)|0;c[h+y>>2]=h;if((z|0)==0){x=0;break}aDD(z|0,0,44);x=z}else{c[k>>2]=0;x=j}}while(0);c[x+32>>2]=0;c[x+36>>2]=p;c[x+40>>2]=0;p=x;aDC(p|0,r|0,32)|0;awv(d,c[d>>2]|0,x);r=d+12|0;c[r>>2]=(c[r>>2]|0)+1;v=x;w=q}q=c[w>>2]|0;x=b+20|0;do{if((q|0)==(c[x>>2]|0)){r=(q|0)==0?1:q<<1;if((q|0)>=(r|0)){A=q;break}do{if((r|0)==0){B=0}else{c[9806]=(c[9806]|0)+1;d=aDx((r*80|0|4)+15|0)|0;if((d|0)==0){B=0;break}p=-(d+4|0)&15;c[d+p>>2]=d;B=d+(p+4)|0}}while(0);p=c[b+16>>2]|0;d=b+24|0;if((p|0)>0){j=0;do{k=c[d>>2]|0;z=B+(j*80|0)|0;h=k+(j*80|0)|0;c[z>>2]=c[h>>2];c[z+4>>2]=c[h+4>>2];c[z+8>>2]=c[h+8>>2];c[z+12>>2]=c[h+12>>2];h=B+(j*80|0)+16|0;z=k+(j*80|0)+16|0;c[h>>2]=c[z>>2];c[h+4>>2]=c[z+4>>2];c[h+8>>2]=c[z+8>>2];c[h+12>>2]=c[z+12>>2];z=B+(j*80|0)+32|0;h=k+(j*80|0)+32|0;c[z>>2]=c[h>>2];c[z+4>>2]=c[h+4>>2];c[z+8>>2]=c[h+8>>2];c[z+12>>2]=c[h+12>>2];h=B+(j*80|0)+48|0;z=k+(j*80|0)+48|0;c[h>>2]=c[z>>2];c[h+4>>2]=c[z+4>>2];c[h+8>>2]=c[z+8>>2];c[h+12>>2]=c[z+12>>2];c[B+(j*80|0)+64>>2]=c[k+(j*80|0)+64>>2];c[B+(j*80|0)+68>>2]=c[k+(j*80|0)+68>>2];g[B+(j*80|0)+72>>2]=+g[k+(j*80|0)+72>>2];c[B+(j*80|0)+76>>2]=c[k+(j*80|0)+76>>2];j=j+1|0;}while((j|0)<(p|0))}p=c[d>>2]|0;j=b+28|0;if((p|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-80+76>>2]|0)}c[d>>2]=0}a[j]=1;c[d>>2]=B;c[x>>2]=r;A=c[w>>2]|0}else{A=q}}while(0);q=c[b+24>>2]|0;b=q+(A*80|0)|0;c[b>>2]=c[l>>2];c[b+4>>2]=c[l+4>>2];c[b+8>>2]=c[l+8>>2];c[b+12>>2]=c[l+12>>2];l=q+(A*80|0)+16|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];m=q+(A*80|0)+32|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=q+(A*80|0)+48|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[q+(A*80|0)+64>>2]=e;c[q+(A*80|0)+68>>2]=s;g[q+(A*80|0)+72>>2]=t;c[q+(A*80|0)+76>>2]=v;c[w>>2]=(c[w>>2]|0)+1;i=f;return}function k0(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function k1(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function k2(a,b){a=a|0;b=b|0;auH(a,b);return}function k3(a){a=a|0;ct[c[(c[a>>2]|0)+64>>2]&2047](a);return}function k4(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function k5(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=f;j=g;k=a+24|0;l=c[k>>2]|0;m=l+(b*80|0)|0;n=d;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=l+(b*80|0)+16|0;m=d+16|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];m=l+(b*80|0)+32|0;n=d+32|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=l+(b*80|0)+48|0;l=d+48|0;c[n>>2]=c[l>>2];c[n+4>>2]=c[l+4>>2];c[n+8>>2]=c[l+8>>2];c[n+12>>2]=c[l+12>>2];l=a+64|0;if((c[l>>2]|0)==0){o=a;p=c[o>>2]|0;q=p+64|0;r=c[q>>2]|0;ct[r&2047](a);i=e;return}n=c[(c[k>>2]|0)+(b*80|0)+64>>2]|0;dI[c[(c[n>>2]|0)+8>>2]&1023](n,d,g|0,f);f=g+16|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=c[l>>2]|0;l=c[(c[k>>2]|0)+(b*80|0)+76>>2]|0;b=aww(h,l)|0;L1123:do{if((b|0)==0){s=0}else{k=c[h+8>>2]|0;if((k|0)>-1){t=0;u=b}else{s=c[h>>2]|0;break}while(1){if((t|0)>=(k|0)){s=u;break L1123}f=c[u+32>>2]|0;if((f|0)==0){s=u;break}else{t=t+1|0;u=f}}}}while(0);u=l;aDC(u|0,j|0,32)|0;awv(h,s,l);o=a;p=c[o>>2]|0;q=p+64|0;r=c[q>>2]|0;ct[r&2047](a);i=e;return}function k6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+48|0;g=f|0;h=f+16|0;j=g;k=h;l=a+24|0;m=c[l>>2]|0;n=m+(b*80|0)|0;o=d;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];o=m+(b*80|0)+16|0;n=d+16|0;c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2];n=m+(b*80|0)+32|0;o=d+32|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];o=m+(b*80|0)+48|0;m=d+48|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=a+64|0;if((c[m>>2]|0)!=0){o=c[(c[l>>2]|0)+(b*80|0)+64>>2]|0;dI[c[(c[o>>2]|0)+8>>2]&1023](o,d,h|0,g);g=h+16|0;c[g>>2]=c[j>>2];c[g+4>>2]=c[j+4>>2];c[g+8>>2]=c[j+8>>2];c[g+12>>2]=c[j+12>>2];j=c[m>>2]|0;m=c[(c[l>>2]|0)+(b*80|0)+76>>2]|0;b=aww(j,m)|0;L1135:do{if((b|0)==0){p=0}else{l=c[j+8>>2]|0;if((l|0)>-1){q=0;r=b}else{p=c[j>>2]|0;break}while(1){if((q|0)>=(l|0)){p=r;break L1135}g=c[r+32>>2]|0;if((g|0)==0){p=r;break}else{q=q+1|0;r=g}}}}while(0);r=m;aDC(r|0,k|0,32)|0;awv(j,p,m)}if(!e){i=f;return}ct[c[(c[a>>2]|0)+64>>2]&2047](a);i=f;return}function k7(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function k8(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function k9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function la(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function lb(a){a=a|0;return c[a+4>>2]|0}function lc(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function ld(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function le(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function lf(a){a=a|0;return(c[a+4>>2]|0)==31|0}function lg(a){a=a|0;return(c[a+4>>2]|0)<7|0}function lh(a){a=a|0;return c[a+32>>2]|0}function li(a){a=a|0;return(c[a+4>>2]|0)<20|0}function lj(a){a=a|0;return(c[a+4>>2]|0)==28|0}function lk(a){a=a|0;return c[a+8>>2]|0}function ll(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function lm(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function ln(a){a=a|0;return(c[a+4>>2]|0)==32|0}function lo(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function lp(a){a=a|0;return c[a+4>>2]|0}function lq(a){a=a|0;return a+100|0}function lr(a){a=a|0;return c[a+24>>2]|0}function ls(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function lt(a){a=a|0;return a+4|0}function lu(a,b){a=a|0;b=b|0;c[a+88>>2]=b;c[a+96>>2]=0;return}function lv(a,b,d){a=a|0;b=b|0;d=d|0;c[a+88>>2]=b;c[a+96>>2]=d;return}function lw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(e){c[a+92>>2]=b}else{c[a+88>>2]=b}c[a+96>>2]=d;return}function lx(b){b=b|0;return(a[b+84|0]&1)!=0|0}function ly(a){a=a|0;return c[a+8>>2]|0}function lz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0,M=0.0,N=0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0;f=i;i=i+64|0;h=f|0;j=f+48|0;k=h;l=c[a+16>>2]|0;m=(l|0)>0;if(m){n=c[a+24>>2]|0;o=0.0;p=0.0;q=0.0;r=0.0;s=0;while(1){t=+g[b+(s<<2)>>2];u=r+ +g[n+(s*80|0)+48>>2]*t;v=q+t*+g[n+(s*80|0)+52>>2];w=p+t*+g[n+(s*80|0)+56>>2];x=o+t;y=s+1|0;if((y|0)<(l|0)){o=x;p=w;q=v;r=u;s=y}else{z=x;A=w;B=v;C=u;break}}}else{z=0.0;A=0.0;B=0.0;C=0.0}r=1.0/z;z=C*r;C=B*r;B=A*r;g[d+48>>2]=z;g[d+52>>2]=C;g[d+56>>2]=B;g[d+60>>2]=0.0;s=h|0;n=h+4|0;y=h+8|0;D=h+16|0;E=h+20|0;F=h+24|0;G=h+32|0;H=h+36|0;I=h+40|0;aDD(k|0,0,48);if(!m){J=d|0;ev(h,J,9999999747378752.0e-21,20);K=+g[s>>2];L=e|0;g[L>>2]=K;M=+g[E>>2];N=e+4|0;g[N>>2]=M;O=+g[I>>2];P=e+8|0;g[P>>2]=O;Q=e+12|0;g[Q>>2]=0.0;i=f;return}m=a+24|0;a=j|0;k=j+4|0;R=j+8|0;S=0;T=c[m>>2]|0;r=0.0;A=0.0;q=0.0;p=0.0;o=0.0;u=0.0;v=0.0;w=0.0;x=0.0;do{U=c[T+(S*80|0)+64>>2]|0;V=b+(S<<2)|0;cX[c[(c[U>>2]|0)+32>>2]&255](U,+g[V>>2],j);T=c[m>>2]|0;t=+g[T+(S*80|0)+48>>2]-z;W=+g[T+(S*80|0)+52>>2]-C;X=+g[T+(S*80|0)+56>>2]-B;Y=+g[T+(S*80|0)>>2];Z=+g[T+(S*80|0)+16>>2];_=+g[T+(S*80|0)+32>>2];$=+g[T+(S*80|0)+4>>2];aa=+g[T+(S*80|0)+20>>2];ab=+g[T+(S*80|0)+36>>2];ac=+g[T+(S*80|0)+8>>2];ad=+g[T+(S*80|0)+24>>2];ae=+g[T+(S*80|0)+40>>2];af=+g[a>>2];ag=Y*af;ah=Z*af;ai=_*af;af=+g[k>>2];aj=$*af;ak=aa*af;al=ab*af;af=+g[R>>2];am=ac*af;an=ad*af;ao=ae*af;af=t*t+W*W+X*X;ap=-0.0-t;aq=-0.0-W;ar=-0.0-X;as=+g[V>>2];r=(t*ap+af)*as+(r+(Y*ag+$*aj+ac*am));g[s>>2]=r;A=(W*ap+0.0)*as+(A+(Y*ah+$*ak+ac*an));g[n>>2]=A;q=(X*ap+0.0)*as+(Y*ai+$*al+ac*ao+q);g[y>>2]=q;p=(t*aq+0.0)*as+(Z*ag+aa*aj+ad*am+p);g[D>>2]=p;o=(W*aq+af)*as+(Z*ah+aa*ak+ad*an+o);g[E>>2]=o;u=(X*aq+0.0)*as+(Z*ai+aa*al+ad*ao+u);g[F>>2]=u;v=(t*ar+0.0)*as+(_*ag+ab*aj+ae*am+v);g[G>>2]=v;w=(W*ar+0.0)*as+(_*ah+ab*ak+ae*an+w);g[H>>2]=w;x=(X*ar+af)*as+(_*ai+ab*al+ae*ao+x);g[I>>2]=x;S=S+1|0;}while((S|0)<(l|0));J=d|0;ev(h,J,9999999747378752.0e-21,20);K=+g[s>>2];L=e|0;g[L>>2]=K;M=+g[E>>2];N=e+4|0;g[N>>2]=M;O=+g[I>>2];P=e+8|0;g[P>>2]=O;Q=e+12|0;g[Q>>2]=0.0;i=f;return}function lA(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function lB(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function lC(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function lD(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function lE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function lF(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function lG(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function lH(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function lI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function lJ(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function lK(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function lL(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function lM(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function lN(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function lO(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function lP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function lQ(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function lR(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+68>>2]&2047](a,b);return}function lS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function lT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a|0,b);return}function lU(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+80>>2]&2047](a,b);return}function lV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+84>>2]&1023](a,b,d,e);return}function lW(a){a=a|0;ct[c[(c[a>>2]|0)+116>>2]&2047](a);return}function lX(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+124>>2]&2047](a,b);return}function lY(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function lZ(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a|0);return}function l_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a|0,b,d,e);return}function l$(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a,b);return}function l0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function l1(a){a=a|0;return cA[c[(c[a>>2]|0)+100>>2]&4095](a)|0}function l2(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,1,-1);return}function l3(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,-1);return}function l4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,e);return}function l5(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}function l6(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function l7(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function l8(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function l9(a){a=a|0;ct[c[(c[a>>2]|0)+76>>2]&2047](a);return}function ma(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a|0,b,c,d,e,0.0);return}function mb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a|0,b,c,d,e,f);return}function mc(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function md(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+52>>2]&511](a,b,0);return}function me(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+52>>2]&511](a,b,d);return}function mf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function mg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;while(1){d=aDx(36)|0;if((d|0)!=0){e=1205;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==1205){e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;g[d+12>>2]=0.0;c[d>>2]=20128;f=d+16|0;h=b;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[d+32>>2]=a;c[e>>2]=22;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function mh(a){a=a|0;return c[a+76>>2]|0}function mi(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function mj(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function mk(a){a=a|0;return c[a+96>>2]|0}function ml(a){a=a|0;return a+28|0}function mm(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function mn(a){a=a|0;return+(+g[a+4>>2])}function mo(a){a=a|0;return+(+g[a+8>>2])}function mp(a,b){a=a|0;b=+b;g[a>>2]=b;return}function mq(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function mr(a){a=a|0;return+(+g[a>>2])}function ms(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+8|0;e=c[d>>2]|0;f=e+b|0;if(f>>>0>=(c[a+4>>2]|0)>>>0){g=0;return g|0}c[d>>2]=f;g=(c[a>>2]|0)+e|0;return g|0}function mt(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=a+8|0;d=c[b>>2]|0;e=d+8|0;if(e>>>0<(c[a+4>>2]|0)>>>0){c[b>>2]=e;e=a|0;f=(c[e>>2]|0)+d|0;g=e}else{f=0;g=a|0}e=f;d=a+12|0;c[f>>2]=c[d>>2];c[f+4>>2]=(c[g>>2]|0)+(c[b>>2]|0);c[d>>2]=e;return e|0}function mu(a){a=a|0;return(c[a+4>>2]|0)-(c[a+8>>2]|0)|0}function mv(a,b){a=a|0;b=b|0;var d=0;d=a+12|0;if((c[d>>2]|0)!=(b|0)){return}c[d>>2]=c[b>>2];c[a+8>>2]=(c[b+4>>2]|0)-(c[a>>2]|0)-8;return}function mw(a){a=a|0;return c[a+28>>2]|0}function mx(a){a=a|0;return c[a+12>>2]|0}function my(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function mz(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function mA(a){a=a|0;return a+40|0}function mB(a,b){a=a|0;b=b|0;return+(+g[a+1248+(b<<2)>>2])}function mC(a){a=a|0;return a+104|0}function mD(a){a=a|0;return a+1056|0}function mE(a){a=a|0;return c[a+12>>2]|0}function mF(a){a=a|0;return c[a+4>>2]|0}function mG(a){a=a|0;return c[a+24>>2]|0}function mH(a){a=a|0;return+(+g[a+16>>2])}function mI(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43912]|0)==0){if((b1(43912)|0)==0){break}}}while(0);cv[c[(c[b>>2]|0)+72>>2]&2047](e,b);b=e;c[9558]=c[b>>2];c[9559]=c[b+4>>2];c[9560]=c[b+8>>2];c[9561]=c[b+12>>2];i=d;return 38232}function mJ(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function mK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function mL(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function mM(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+132>>2]&2047](a,b);return}function mN(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+104>>2]&511](a,b)|0}function mO(a){a=a|0;return cA[c[(c[a>>2]|0)+96>>2]&4095](a)|0}function mP(a,b){a=a|0;b=+b;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,1,.01666666753590107)|0}function mQ(a,b,d){a=a|0;b=+b;d=d|0;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,.01666666753590107)|0}function mR(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,e)|0}function mS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+128>>2]&2047](a,b);return}function mT(a){a=a|0;return cA[c[(c[a>>2]|0)+112>>2]&4095](a)|0}function mU(a,b){a=a|0;b=b|0;atC(a|0,b);return}function mV(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+120>>2]&2047](a,b);return}function mW(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function mX(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a|0,b);return}function mY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+92>>2]&2047](a,b);return}function mZ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function m_(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function m$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function m0(a){a=a|0;if((a|0)==0){return}aDB(a);return}function m1(b){b=b|0;var d=0,e=0,f=0,g=0;if((b|0)==0){return}d=b+8|0;L1333:do{if((c[d>>2]|0)==0){e=b|0;do{if((a[b+16|0]&1)==0){f=c[e>>2]|0;if((f|0)==0){c[e>>2]=0;c[d>>2]=0;break L1333}else{c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0);g=e;break}}else{g=e}}while(0);c[g>>2]=0;c[d>>2]=0}}while(0);aDB(b);return}function m2(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=b+8|0;if((c[e>>2]|0)==0){f=b|0;do{if((a[b+16|0]&1)==0){g=c[f>>2]|0;if((g|0)==0){h=f;break}c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0);h=f}else{h=f}}while(0);c[h>>2]=0;c[e>>2]=0}c[9806]=(c[9806]|0)+1;e=aDx(d+19|0)|0;if((e|0)==0){i=0;j=b|0;c[j>>2]=i;k=b+4|0;c[k>>2]=d;return}h=-(e+4|0)&15;c[e+h>>2]=e;i=e+(h+4)|0;j=b|0;c[j>>2]=i;k=b+4|0;c[k>>2]=d;return}function m3(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+8|0;if((c[d>>2]|0)!=0){return}e=b|0;do{if((a[b+16|0]&1)==0){f=c[e>>2]|0;if((f|0)==0){g=e;break}c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0);g=e}else{g=e}}while(0);c[g>>2]=0;c[d>>2]=0;return}function m4(a){a=a|0;if((a|0)==0){return}aDB(a);return}function m5(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function m6(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a|0,b,d,-1);return}function m7(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a|0,b,d,e);return}function m8(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;apb(a|0,b,c,d,e,f,g,h);return}function m9(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a|0,b,-1))}function na(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a|0,b,d))}function nb(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,h=0.0;d=i;i=i+16|0;e=d|0;g[e>>2]=0.0;g[e+4>>2]=b;g[e+8>>2]=c;g[e+12>>2]=0.0;f=0;while(1){if((f|0)>=3){break}c=+ck(+(+g[e+(f<<2)>>2]),6.2831854820251465);do{if(c<-3.1415927410125732){h=c+6.2831854820251465}else{if(c<=3.1415927410125732){h=c;break}h=c-6.2831854820251465}}while(0);g[a+860+(f<<6)+4>>2]=h;f=f+1|0}i=d;return}function nc(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a|0,b);return}function nd(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a|0,b);return}function ne(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(8)|0;if((b|0)!=0){d=1337;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==1337){c[b>>2]=20640;c[b+4>>2]=a;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function nf(){var a=0,b=0,d=0;while(1){a=aDx(12)|0;if((a|0)!=0){b=1349;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1349){g[a>>2]=.30000001192092896;g[a+4>>2]=1.0;g[a+8>>2]=0.0;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function ng(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;while(1){b=aDx(20)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=1358;break}dC[d&63]()}if((e|0)==1358){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}e=b;d=b;f=b+4|0;aDD(b|0,0,17);c[d>>2]=0;c[b+8>>2]=0;c[9806]=(c[9806]|0)+1;b=aDx(a+19|0)|0;if((b|0)==0){g=0;c[d>>2]=g;c[f>>2]=a;return e|0}h=-(b+4|0)&15;c[b+h>>2]=b;g=b+(h+4)|0;c[d>>2]=g;c[f>>2]=a;return e|0}function nh(){var a=0,b=0,d=0;while(1){a=aDx(72)|0;if((a|0)!=0){b=1377;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1377){g[a>>2]=.6000000238418579;g[a+4>>2]=1.0;g[a+8>>2]=.30000001192092896;g[a+16>>2]=0.0;g[a+24>>2]=20.0;c[a+20>>2]=10;g[a+32>>2]=.20000000298023224;g[a+36>>2]=.10000000149011612;g[a+40>>2]=0.0;g[a+28>>2]=1.0;c[a+44>>2]=0;g[a+48>>2]=-.019999999552965164;g[a+52>>2]=0.0;g[a+56>>2]=.8500000238418579;c[a+60>>2]=260;c[a+64>>2]=2;c[a+68>>2]=128;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function ni(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=3){break}g[b+(c<<2)>>2]=+g[a+860+(c<<6)>>2];c=c+1|0}return}function nj(a){a=a|0;return+(+g[a+32>>2])}function nk(b){b=b|0;return(a[b+20|0]&1)!=0|0}function nl(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function nm(a){a=a|0;return c[a+4>>2]|0}function nn(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function no(a){a=a|0;return a+1104|0}function np(b,c){b=b|0;c=c|0;a[b+1293|0]=c&1;return}function nq(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<3){c=+g[a+688+(b<<2)>>2]>=+g[a+672+(b<<2)>>2];return c|0}d=b-3|0;if(+g[a+860+(d<<6)>>2]>+g[a+860+(d<<6)+4>>2]){c=0;return c|0}c=1;return c|0}function nr(a){a=a|0;return+(+g[a+1188>>2])}function ns(a,b){a=a|0;b=b|0;return a+860+(b<<6)|0}function nt(a){a=a|0;return+(+g[a+1192>>2])}function nu(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+1300|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function nv(a){a=a|0;return a+1168|0}function nw(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function nx(b){b=b|0;return(a[b+1293|0]&1)!=0|0}function ny(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function nz(a){a=a|0;return a+1120|0}function nA(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function nB(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function nC(b){b=b|0;return(a[b+1300|0]&1)!=0|0}function nD(a){a=a|0;return+(+g[a+32>>2])}function nE(a){a=a|0;ct[c[(c[a>>2]|0)+44>>2]&2047](a|0);return}function nF(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function nG(b,c){b=b|0;c=c|0;do{if((a[43872]|0)==0){if((b1(43872)|0)==0){break}}}while(0);aDG(38216,b+1200+(c<<4)|0,16);return 38216}function nH(a,b){a=a|0;b=b|0;var d=0;d=b;b=a+688|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return}function nI(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a|0,b,d)|0}function nJ(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function nK(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function nL(a,b){a=a|0;b=b|0;var d=0;d=b;b=a+672|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return}function nM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a|0;f=a+40|0;g=b;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+56|0;f=b+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+72|0;g=b+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+88|0;f=b+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+104|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+120|0;f=d+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+136|0;g=d+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+152|0;f=d+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](e);aoZ(e,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function nN(a){a=a|0;aoZ(a|0,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function nO(a,b,c){a=a|0;b=b|0;c=c|0;aoZ(a|0,b,c);return}function nP(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ao7(a|0,b,c,d,e,f,g,h,i,j,k,l,0)|0}function nQ(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ao7(a|0,b,c,d,e,f,g,h,i,j,k,l,m)|0}function nR(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;nS(a|0,b,c,d);return}function nS(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0.0,f=0.0,h=0.0,i=0;if((b|0)<3){g[a+672+(b<<2)>>2]=c;g[a+688+(b<<2)>>2]=d;return}e=+ck(+c,6.2831854820251465);do{if(e<-3.1415927410125732){f=e+6.2831854820251465}else{if(e<=3.1415927410125732){f=e;break}f=e-6.2831854820251465}}while(0);e=+ck(+d,6.2831854820251465);do{if(e<-3.1415927410125732){h=e+6.2831854820251465}else{if(e<=3.1415927410125732){h=e;break}h=e-6.2831854820251465}}while(0);i=b-3|0;g[a+860+(i<<6)>>2]=f;g[a+860+(i<<6)+4>>2]=h;return}function nT(a,b){a=a|0;b=+b;return}function nU(a){a=a|0;return a+672|0}function nV(b){b=b|0;return(a[b+21|0]&1)!=0|0}function nW(a,b){a=a|0;b=b|0;return+(+g[a+1184+(b<<2)>>2])}function nX(b,c){b=b|0;c=c|0;a[b+1300|0]=c&1;return}function nY(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=3){break}g[b+(c<<2)>>2]=+g[a+860+(c<<6)+4>>2];c=c+1|0}return}function nZ(a){a=a|0;return c[a+4>>2]|0}function n_(a){a=a|0;return c[a+8>>2]|0}function n$(a){a=a|0;return+(+g[a+36>>2])}function n0(a){a=a|0;return a+1320|0}function n1(a){a=a|0;return c[a+12>>2]|0}function n2(a){a=a|0;return a+1336|0}function n3(a,b,c){a=a|0;b=+b;c=+c;var d=0,e=0,f=0,h=0.0;d=i;i=i+16|0;e=d|0;g[e>>2]=0.0;g[e+4>>2]=b;g[e+8>>2]=c;g[e+12>>2]=0.0;f=0;while(1){if((f|0)>=3){break}c=+ck(+(+g[e+(f<<2)>>2]),6.2831854820251465);do{if(c<-3.1415927410125732){h=c+6.2831854820251465}else{if(c<=3.1415927410125732){h=c;break}h=c-6.2831854820251465}}while(0);g[a+860+(f<<6)>>2]=h;f=f+1|0}i=d;return}function n4(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function n5(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;while(1){if((c|0)>=3){break}d=+ck(+(+g[b+(c<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[a+860+(c<<6)>>2]=e;c=c+1|0}return}function n6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function n7(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function n8(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;while(1){if((c|0)>=3){break}d=+ck(+(+g[b+(c<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[a+860+(c<<6)+4>>2]=e;c=c+1|0}return}function n9(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0,U=0;while(1){i=aDx(1352)|0;if((i|0)!=0){break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){k=1500;break}dC[j&63]()}if((k|0)==1500){k=cd(4)|0;c[k>>2]=19096;bF(k|0,34368,676);return 0}k=i;j=i;do{if((a[43040]|0)==0){if((b1(43040)|0)==0){break}do{if((a[43048]|0)==0){if((b1(43048)|0)==0){break}g[10704]=1.0;aDD(42820,0,16);g[10709]=1.0;aDD(42840,0,16);g[10714]=1.0;g[10715]=0.0}}while(0);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16)}}while(0);do{if((a[43040]|0)==0){if((b1(43040)|0)==0){break}do{if((a[43048]|0)==0){if((b1(43048)|0)==0){break}g[10704]=1.0;aDD(42820,0,16);g[10709]=1.0;aDD(42840,0,16);g[10714]=1.0;g[10715]=0.0}}while(0);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16)}}while(0);aoY(j,b,d,42752,42752,1);c[i>>2]=21976;j=i+1304|0;l=e;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=i+1320|0;j=f;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=i+1336|0;l=h;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=f|0;m=+g[l>>2];j=f+4|0;n=+g[j>>2];o=f+8|0;p=+g[o>>2];q=1.0/+Q(+(m*m+n*n+p*p));r=m*q;g[l>>2]=r;m=n*q;g[j>>2]=m;n=p*q;g[o>>2]=n;o=h|0;q=+g[o>>2];j=h+4|0;p=+g[j>>2];l=h+8|0;s=+g[l>>2];t=1.0/+Q(+(q*q+p*p+s*s));u=q*t;g[o>>2]=u;q=p*t;g[j>>2]=q;p=s*t;g[l>>2]=p;t=n*q-m*p;s=r*p-n*u;v=m*u-r*q;w=+g[e>>2];x=+g[e+4>>2];y=+g[e+8>>2];z=+g[b+4>>2];A=+g[b+20>>2];B=+g[b+36>>2];D=+g[b+8>>2];E=+g[b+24>>2];F=+g[b+40>>2];G=+g[b+12>>2];H=+g[b+28>>2];I=+g[b+44>>2];J=-0.0- +g[b+52>>2];K=-0.0- +g[b+56>>2];L=-0.0- +g[b+60>>2];g[i+40>>2]=t*z+s*A+v*B;g[i+44>>2]=u*z+q*A+p*B;g[i+48>>2]=r*z+m*A+n*B;g[i+52>>2]=0.0;g[i+56>>2]=t*D+s*E+v*F;g[i+60>>2]=u*D+q*E+p*F;g[i+64>>2]=r*D+m*E+n*F;g[i+68>>2]=0.0;g[i+72>>2]=t*G+s*H+v*I;g[i+76>>2]=u*G+q*H+p*I;g[i+80>>2]=r*G+m*H+n*I;g[i+84>>2]=0.0;g[i+88>>2]=w*z+x*A+y*B+(z*J+A*K+B*L);g[i+92>>2]=w*D+x*E+y*F+(D*J+E*K+F*L);g[i+96>>2]=w*G+x*H+y*I+(G*J+H*K+I*L);g[i+100>>2]=0.0;L=+g[d+4>>2];I=+g[d+20>>2];K=+g[d+36>>2];H=+g[d+8>>2];J=+g[d+24>>2];G=+g[d+40>>2];F=+g[d+12>>2];E=+g[d+28>>2];D=+g[d+44>>2];B=-0.0- +g[d+52>>2];A=-0.0- +g[d+56>>2];z=-0.0- +g[d+60>>2];g[i+104>>2]=t*L+s*I+v*K;g[i+108>>2]=u*L+q*I+p*K;g[i+112>>2]=r*L+m*I+n*K;g[i+116>>2]=0.0;g[i+120>>2]=t*H+s*J+v*G;g[i+124>>2]=u*H+q*J+p*G;g[i+128>>2]=r*H+m*J+n*G;g[i+132>>2]=0.0;g[i+136>>2]=t*F+s*E+v*D;g[i+140>>2]=u*F+q*E+p*D;g[i+144>>2]=r*F+m*E+n*D;g[i+148>>2]=0.0;g[i+152>>2]=w*L+x*I+y*K+(L*B+I*A+K*z);g[i+156>>2]=w*H+x*J+y*G+(H*B+J*A+G*z);g[i+160>>2]=w*F+x*E+y*D+(F*B+E*A+D*z);g[i+164>>2]=0.0;aDD(i+672|0,0,32);z=+ck(0.0,6.2831854820251465);do{if(z<-3.1415927410125732){M=z+6.2831854820251465}else{if(z<=3.1415927410125732){M=z;break}M=z-6.2831854820251465}}while(0);g[i+860>>2]=M;M=+ck(-1.5607963800430298,6.2831854820251465);do{if(M<-3.1415927410125732){N=M+6.2831854820251465}else{if(M<=3.1415927410125732){N=M;break}N=M-6.2831854820251465}}while(0);g[i+924>>2]=N;N=+ck(-3.1315927505493164,6.2831854820251465);do{if(N<-3.1415927410125732){O=N+6.2831854820251465}else{if(N<=3.1415927410125732){O=N;break}O=N-6.2831854820251465}}while(0);g[i+988>>2]=O;O=+ck(0.0,6.2831854820251465);do{if(O<-3.1415927410125732){P=O+6.2831854820251465}else{if(O<=3.1415927410125732){P=O;break}P=O-6.2831854820251465}}while(0);g[i+864>>2]=P;P=+ck(1.5607963800430298,6.2831854820251465);do{if(P<-3.1415927410125732){R=P+6.2831854820251465}else{if(P<=3.1415927410125732){R=P;break}R=P-6.2831854820251465}}while(0);g[i+928>>2]=R;R=+ck(3.1315927505493164,6.2831854820251465);if(R<-3.1415927410125732){S=R+6.2831854820251465;T=i+992|0;U=T;g[U>>2]=S;return k|0}if(R<=3.1415927410125732){S=R;T=i+992|0;U=T;g[U>>2]=S;return k|0}S=R-6.2831854820251465;T=i+992|0;U=T;g[U>>2]=S;return k|0}function oa(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ob(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function oc(a){a=a|0;return(c[a+4>>2]|0)==31|0}function od(a){a=a|0;return(c[a+4>>2]|0)<7|0}function oe(a){a=a|0;return(c[a+4>>2]|0)<20|0}function of(a){a=a|0;return(c[a+4>>2]|0)==28|0}function og(a){a=a|0;return c[a+8>>2]|0}function oh(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function oi(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function oj(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ok(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function ol(a){a=a|0;return c[a+4>>2]|0}function om(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0;d=a+216|0;e=c[d>>2]|0;if((e|0)==2|(e|0)==4){return}f=+g[a+304>>2];h=+g[a+308>>2];i=+g[a+312>>2];j=+g[a+464>>2];do{if(f*f+h*h+i*i>2];l=+g[a+324>>2];m=+g[a+328>>2];n=+g[a+468>>2];if(k*k+l*l+m*m>=n*n){break}o=a+220|0;g[o>>2]=+g[o>>2]+b;return}}while(0);g[a+220>>2]=0.0;if((e-4|0)>>>0<2){return}c[d>>2]=0;return}function on(a,b){a=a|0;b=b|0;c[a+236>>2]=b;return}function oo(b){b=b|0;var d=0,e=0;d=c[b+216>>2]|0;do{if((d|0)==4){e=0}else{if((a[39240]&1)!=0){e=0;break}if((d-2|0)>>>0<2){e=1;break}if(+g[b+220>>2]>2.0){e=1;break}e=0}}while(0);return e|0}function op(a){a=a|0;return a+132|0}function oq(a,b){a=a|0;b=b|0;c[a+604>>2]=b;return}function or(a){a=a|0;return+(+g[a+240>>2])}function os(a){a=a|0;return a+584|0}function ot(a){a=a|0;return a+552|0}function ou(a,b){a=a|0;b=b|0;c[a+208>>2]=b;return}function ov(a){a=a|0;return+(+g[a+336>>2])}function ow(a){a=a|0;return c[a+204>>2]|0}function ox(a){a=a|0;return a+404|0}function oy(a){a=a|0;return a+52|0}function oz(a){a=a|0;return+(+g[a+220>>2])}function oA(a){a=a|0;return c[a+200>>2]|0}function oB(a){a=a|0;return a+372|0}function oC(a,b){a=a|0;b=b|0;c[a+496>>2]=b;return}function oD(a){a=a|0;var b=0;b=c[a+216>>2]|0;return((b|0)==2?0:(b|0)!=5)|0}function oE(a){a=a|0;return c[a+216>>2]|0}function oF(a){a=a|0;return a+420|0}function oG(a){a=a|0;return a+256|0}function oH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;d=+g[b>>2]- +g[a+52>>2];e=+g[b+4>>2]- +g[a+56>>2];f=+g[b+8>>2]- +g[a+60>>2];h=+g[c+8>>2];i=+g[c+4>>2];j=e*h-f*i;k=+g[c>>2];l=f*k-d*h;m=d*i-e*k;n=+g[a+256>>2]*j+ +g[a+272>>2]*l+ +g[a+288>>2]*m;o=+g[a+260>>2]*j+ +g[a+276>>2]*l+ +g[a+292>>2]*m;p=+g[a+264>>2]*j+ +g[a+280>>2]*l+ +g[a+296>>2]*m;return+(+g[a+336>>2]+(k*(o*f-p*e)+i*(p*d-n*f)+h*(n*e-o*d)))}function oI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;e=a+1320|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+1336|0;e=d;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];h=+g[b>>2];i=+g[b+4>>2];j=+g[b+8>>2];k=1.0/+Q(+(h*h+i*i+j*j));l=h*k;h=i*k;i=j*k;k=+g[d>>2];j=+g[d+4>>2];m=+g[d+8>>2];n=1.0/+Q(+(k*k+j*j+m*m));o=k*n;k=j*n;j=m*n;n=i*k-h*j;m=l*j-i*o;p=h*o-l*k;q=+g[a+1304>>2];r=+g[a+1308>>2];s=+g[a+1312>>2];d=c[a+24>>2]|0;t=+g[d+4>>2];u=+g[d+20>>2];v=+g[d+36>>2];w=+g[d+8>>2];x=+g[d+24>>2];y=+g[d+40>>2];z=+g[d+12>>2];A=+g[d+28>>2];B=+g[d+44>>2];C=-0.0- +g[d+52>>2];D=-0.0- +g[d+56>>2];E=-0.0- +g[d+60>>2];g[a+40>>2]=n*t+m*u+p*v;g[a+44>>2]=o*t+k*u+j*v;g[a+48>>2]=l*t+h*u+i*v;g[a+52>>2]=0.0;g[a+56>>2]=n*w+m*x+p*y;g[a+60>>2]=o*w+k*x+j*y;g[a+64>>2]=l*w+h*x+i*y;g[a+68>>2]=0.0;g[a+72>>2]=n*z+m*A+p*B;g[a+76>>2]=o*z+k*A+j*B;g[a+80>>2]=l*z+h*A+i*B;g[a+84>>2]=0.0;g[a+88>>2]=q*t+r*u+s*v+(t*C+u*D+v*E);g[a+92>>2]=q*w+r*x+s*y+(w*C+x*D+y*E);g[a+96>>2]=q*z+r*A+s*B+(z*C+A*D+B*E);g[a+100>>2]=0.0;b=c[a+28>>2]|0;E=+g[b+4>>2];B=+g[b+20>>2];D=+g[b+36>>2];A=+g[b+8>>2];C=+g[b+24>>2];z=+g[b+40>>2];y=+g[b+12>>2];x=+g[b+28>>2];w=+g[b+44>>2];v=-0.0- +g[b+52>>2];u=-0.0- +g[b+56>>2];t=-0.0- +g[b+60>>2];g[a+104>>2]=n*E+m*B+p*D;g[a+108>>2]=o*E+k*B+j*D;g[a+112>>2]=l*E+h*B+i*D;g[a+116>>2]=0.0;g[a+120>>2]=n*A+m*C+p*z;g[a+124>>2]=o*A+k*C+j*z;g[a+128>>2]=l*A+h*C+i*z;g[a+132>>2]=0.0;g[a+136>>2]=n*y+m*x+p*w;g[a+140>>2]=o*y+k*x+j*w;g[a+144>>2]=l*y+h*x+i*w;g[a+148>>2]=0.0;g[a+152>>2]=q*E+r*B+s*D+(E*v+B*u+D*t);g[a+156>>2]=q*A+r*C+s*z+(A*v+C*u+z*t);g[a+160>>2]=q*y+r*x+s*w+(y*v+x*u+w*t);g[a+164>>2]=0.0;aoZ(a|0,d+4|0,b+4|0);return}function oJ(a,b){a=a|0;b=b|0;return ao$(a|0,b)|0}function oK(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function oL(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function oM(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function oN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function oO(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function oP(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function oQ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function oR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function oS(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function oT(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function oU(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function oV(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function oW(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function oX(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function oY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function oZ(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function o_(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43880]|0)==0){if((b1(43880)|0)==0){break}}}while(0);ec(b+4|0,e);b=e;c[9550]=c[b>>2];c[9551]=c[b+4>>2];c[9552]=c[b+8>>2];c[9553]=c[b+12>>2];i=d;return 38200}function o$(a,b,c){a=a|0;b=+b;c=c|0;apV(a,b,c);return}function o0(a,b){a=a|0;b=b|0;c[a+472>>2]=b;if((b|0)==0){return}cv[c[(c[b>>2]|0)+8>>2]&2047](b,a+4|0);return}function o1(a){a=a|0;aDD(a+404|0,0,32);return}function o2(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function o3(a,b){a=a|0;b=b|0;ap4(a,b);return}function o4(){var a=0,b=0,d=0;while(1){a=aDx(32)|0;if((a|0)!=0){b=1645;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1645){c[a+8>>2]=0;g[a+12>>2]=0.0;c[a>>2]=25688;c[a+4>>2]=27;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function o5(a){a=a|0;return+(+g[a+464>>2])}function o6(a){a=a|0;return c[a+196>>2]|0}function o7(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;d=b|0;e=+g[a+340>>2];f=b+4|0;h=+g[a+344>>2];i=+g[f>>2]*h;j=b+8|0;k=+g[a+348>>2];l=+g[j>>2]*k;b=a+404|0;g[b>>2]=+g[b>>2]+ +g[d>>2]*e;b=a+408|0;g[b>>2]=+g[b>>2]+i;b=a+412|0;g[b>>2]=+g[b>>2]+l;l=+g[d>>2]*e;e=+g[f>>2]*h;h=+g[j>>2]*k;k=+g[c+4>>2];i=+g[c+8>>2];m=+g[c>>2];n=(i*l-m*h)*+g[a+540>>2];o=(m*e-k*l)*+g[a+544>>2];c=a+420|0;g[c>>2]=+g[c>>2]+(k*h-i*e)*+g[a+536>>2];c=a+424|0;g[c>>2]=+g[c>>2]+n;c=a+428|0;g[c>>2]=+g[c>>2]+o;return}function o8(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;d=+g[a+320>>2]+ +g[a+520>>2];e=+g[a+324>>2]+ +g[a+524>>2];f=+g[a+328>>2]+ +g[a+528>>2];h=+g[b+8>>2];i=+g[b+4>>2];j=+g[b>>2];k=+g[a+308>>2]+ +g[a+508>>2]+(f*j-d*h);l=+g[a+312>>2]+ +g[a+512>>2]+(d*i-e*j);g[c>>2]=+g[a+304>>2]+ +g[a+504>>2]+(e*h-f*i);g[c+4>>2]=k;g[c+8>>2]=l;g[c+12>>2]=0.0;return}function o9(a){a=a|0;return(c[a+204>>2]&7|0)==0|0}function pa(a){a=a|0;return+(+g[a+224>>2])}function pb(a,b){a=a|0;b=+b;g[a+184>>2]=b;return}function pc(a){a=a|0;return a+520|0}function pd(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0;c=+g[b+4>>2]*+g[a+344>>2];d=+g[b+8>>2]*+g[a+348>>2];e=a+404|0;g[e>>2]=+g[e>>2]+ +g[b>>2]*+g[a+340>>2];b=a+408|0;g[b>>2]=+g[b>>2]+c;b=a+412|0;g[b>>2]=+g[b>>2]+d;return}function pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,f=0.0,h=0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;d=+g[a+336>>2];if(d==0.0){return}e=b|0;f=+g[a+340>>2];h=b+4|0;i=+g[a+344>>2];j=b+8|0;k=+g[a+348>>2];l=+g[h>>2]*i*d;m=+g[j>>2]*k*d;b=a+304|0;g[b>>2]=+g[b>>2]+ +g[e>>2]*f*d;b=a+308|0;g[b>>2]=+g[b>>2]+l;b=a+312|0;g[b>>2]=+g[b>>2]+m;if((a+536|0)==0){return}m=+g[e>>2]*f;f=+g[h>>2]*i;i=+g[j>>2]*k;k=+g[c+4>>2];l=+g[c+8>>2];d=k*i-l*f;n=+g[c>>2];o=l*m-n*i;i=n*f-k*m;m=(+g[a+272>>2]*d+ +g[a+276>>2]*o+ +g[a+280>>2]*i)*+g[a+540>>2];k=(+g[a+288>>2]*d+ +g[a+292>>2]*o+ +g[a+296>>2]*i)*+g[a+544>>2];c=a+320|0;g[c>>2]=+g[c>>2]+(+g[a+256>>2]*d+ +g[a+260>>2]*o+ +g[a+264>>2]*i)*+g[a+536>>2];c=a+324|0;g[c>>2]=+g[c>>2]+m;c=a+328|0;g[c>>2]=+g[c>>2]+k;return}function pf(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0;c=+g[b+4>>2]*+g[a+540>>2];d=+g[b+8>>2]*+g[a+544>>2];e=a+420|0;g[e>>2]=+g[e>>2]+ +g[b>>2]*+g[a+536>>2];b=a+424|0;g[b>>2]=+g[b>>2]+c;b=a+428|0;g[b>>2]=+g[b>>2]+d;return}function pg(a){a=a|0;return c[a+208>>2]|0}function ph(a){a=a|0;return a+536|0}function pi(a){a=a|0;return a+148|0}function pj(a,b){a=a|0;b=b|0;c[a+216>>2]=b;return}function pk(a){a=a|0;return a+320|0}function pl(a){a=a|0;return a+304|0}function pm(a){a=a|0;return c[a+188>>2]|0}function pn(a){a=a|0;return c[a+236>>2]|0}function po(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function pp(a){a=a|0;return(c[a+188>>2]|0)!=0|0}function pq(a,b){a=a|0;b=b|0;c[a+192>>2]=b;return}function pr(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];return+(c*(+g[a+256>>2]*c+ +g[a+272>>2]*d+ +g[a+288>>2]*e)+d*(+g[a+260>>2]*c+ +g[a+276>>2]*d+ +g[a+292>>2]*e)+e*(+g[a+264>>2]*c+ +g[a+280>>2]*d+ +g[a+296>>2]*e))}function ps(a){a=a|0;return+(+g[a+440>>2])}function pt(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function pu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=a+480|0;e=c[d>>2]|0;f=a+488|0;g=0;while(1){if((g|0)>=(e|0)){h=e;i=1683;break}j=c[f>>2]|0;k=j+(g<<2)|0;if((c[k>>2]|0)==(b|0)){break}else{g=g+1|0}}if((i|0)==1683){l=(h|0)>0;m=l&1;n=a+252|0;c[n>>2]=m;return}i=e-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[f>>2]|0)+(i<<2)>>2]=b;b=(c[d>>2]|0)-1|0;c[d>>2]=b;h=b;l=(h|0)>0;m=l&1;n=a+252|0;c[n>>2]=m;return}function pv(a){a=a|0;return a+536|0}function pw(a){a=a|0;return(c[a+204>>2]&3|0)!=0|0}function px(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function py(a){a=a|0;return(c[a+204>>2]&2|0)!=0|0}function pz(a){a=a|0;var b=0.0,c=0.0;if(+g[a+336>>2]==0.0){return}b=+g[a+308>>2]+ +g[a+508>>2];c=+g[a+312>>2]+ +g[a+512>>2];g[a+304>>2]=+g[a+304>>2]+ +g[a+504>>2];g[a+308>>2]=b;g[a+312>>2]=c;g[a+316>>2]=0.0;c=+g[a+324>>2]+ +g[a+524>>2];b=+g[a+328>>2]+ +g[a+528>>2];g[a+320>>2]=+g[a+320>>2]+ +g[a+520>>2];g[a+324>>2]=c;g[a+328>>2]=b;g[a+332>>2]=0.0;return}function pA(b){b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(627)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;g[e+164>>2]=1.0;g[e+168>>2]=1.0;g[e+172>>2]=1.0;g[e+176>>2]=0.0;c[e+180>>2]=0;g[e+184>>2]=999999984306749400.0;aDD(e+188|0,0,16);c[e+204>>2]=1;c[e+208>>2]=-1;c[e+212>>2]=-1;c[e+216>>2]=1;g[e+220>>2]=0.0;g[e+224>>2]=.5;g[e+228>>2]=0.0;c[e+232>>2]=1;c[e+236>>2]=0;g[e+240>>2]=1.0;g[e+244>>2]=0.0;g[e+248>>2]=0.0;c[e+252>>2]=0;g[e+4>>2]=1.0;aDD(e+8|0,0,16);g[e+24>>2]=1.0;aDD(e+28|0,0,16);g[e+44>>2]=1.0;aDD(e+48|0,0,20);c[e>>2]=26048;a[e+492|0]=1;c[e+488>>2]=0;c[e+480>>2]=0;c[e+484>>2]=0;ap_(f,b);return f|0}function pB(a,b,d){a=+a;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+16|0;f=e|0;c[9806]=(c[9806]|0)+1;g=aDx(627)|0;if((g|0)==0){h=0}else{j=-(g+4|0)&15;c[g+j>>2]=g;h=g+(j+4)|0}j=h;aDD(f|0,0,16);ap$(j,a,b,d,f);i=e;return j|0}function pC(a,b,d,e){a=+a;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;f=aDx(627)|0;if((f|0)==0){g=0}else{h=-(f+4|0)&15;c[f+h>>2]=f;g=f+(h+4)|0}h=g;ap$(h,a,b,d,e);return h|0}function pD(a,b,c){a=a|0;b=b|0;c=c|0;pe(a,b,c);return}function pE(a,b,c){a=a|0;b=+b;c=c|0;anY(a+4|0,+g[a+304>>2],+g[a+308>>2],+g[a+312>>2],a+320|0,b,c);return}function pF(a,b){a=a|0;b=b|0;return dj[c[c[a>>2]>>2]&511](a,b)|0}function pG(a,b){a=a|0;b=b|0;var d=0;d=a+320|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function pH(a,b){a=a|0;b=b|0;ap6(a,b);return}function pI(a,b){a=a|0;b=+b;ap5(a,b);return}function pJ(a,b){a=a|0;b=b|0;ap4(a,b);return}function pK(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0.0,l=0,m=0.0;d=i;i=i+64|0;e=d|0;f=e;if(+g[a+336>>2]==0.0){i=d;return}h=a+304|0;j=a+308|0;k=+g[j>>2]+ +g[a+508>>2];l=a+312|0;m=+g[l>>2]+ +g[a+512>>2];g[h>>2]=+g[h>>2]+ +g[a+504>>2];g[j>>2]=k;g[l>>2]=m;g[a+316>>2]=0.0;l=a+320|0;j=a+324|0;m=+g[j>>2]+ +g[a+524>>2];h=a+328|0;k=+g[h>>2]+ +g[a+528>>2];g[l>>2]=+g[l>>2]+ +g[a+520>>2];g[j>>2]=m;g[h>>2]=k;g[a+332>>2]=0.0;h=a+4|0;anY(h,+g[a+568>>2],+g[a+572>>2],+g[a+576>>2],a+584|0,b,e);j=h;c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];f=a+20|0;j=e+16|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];j=a+36|0;f=e+32|0;c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];f=a+52|0;a=e+48|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];i=d;return}function pL(a,b){a=a|0;b=b|0;var d=0;d=a+132|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function pM(a){a=a|0;var b=0.0,d=0.0,e=0;if((c[a+204>>2]&3|0)!=0){return}b=+g[a+360>>2]*+g[a+344>>2];d=+g[a+364>>2]*+g[a+348>>2];e=a+404|0;g[e>>2]=+g[a+356>>2]*+g[a+340>>2]+ +g[e>>2];e=a+408|0;g[e>>2]=b+ +g[e>>2];e=a+412|0;g[e>>2]=d+ +g[e>>2];return}function pN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0;if(+g[a+336>>2]==0.0){return}e=+g[b+4>>2]*d;f=+g[b+8>>2]*d;h=a+504|0;g[h>>2]=+g[h>>2]+ +g[b>>2]*d;b=a+508|0;g[b>>2]=+g[b>>2]+e;b=a+512|0;g[b>>2]=+g[b>>2]+f;f=+g[c+4>>2]*+g[a+540>>2]*d;e=+g[c+8>>2]*+g[a+544>>2]*d;b=a+520|0;g[b>>2]=+g[b>>2]+ +g[c>>2]*+g[a+536>>2]*d;c=a+524|0;g[c>>2]=+g[c>>2]+f;c=a+528|0;g[c>>2]=+g[c>>2]+e;return}function pO(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function pP(a){a=a|0;var b=0;if((c[a+204>>2]&3|0)!=0){return}b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function pQ(a,b){a=a|0;b=b|0;do{if(!b){if((c[a+204>>2]&3|0)==0){break}return}}while(0);b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function pR(a){a=a|0;return c[a+472>>2]|0}function pS(a,b){a=a|0;b=b|0;c[a+212>>2]=b;return}function pT(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0;if(+g[a+336>>2]==0.0){return}e=+g[b+4>>2]*d;f=+g[b+8>>2]*d;h=a+568|0;g[h>>2]=+g[h>>2]+ +g[b>>2]*d;b=a+572|0;g[b>>2]=+g[b>>2]+e;b=a+576|0;g[b>>2]=+g[b>>2]+f;f=+g[c+4>>2]*+g[a+540>>2]*d;e=+g[c+8>>2]*+g[a+544>>2]*d;b=a+584|0;g[b>>2]=+g[b>>2]+ +g[c>>2]*+g[a+536>>2]*d;c=a+588|0;g[c>>2]=+g[c>>2]+f;c=a+592|0;g[c>>2]=+g[c>>2]+e;return}function pU(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function pV(a){a=a|0;return+(+g[a+248>>2])}function pW(a){a=a|0;return a+340|0}function pX(a){a=a|0;return a+164|0}function pY(a){a=a|0;return+(+g[a+468>>2])}function pZ(a){a=a|0;return a+68|0}function p_(a,b){a=a|0;b=b|0;var c=0;c=a+52|0;g[c>>2]=+g[c>>2]+ +g[b>>2];c=a+56|0;g[c>>2]=+g[c>>2]+ +g[b+4>>2];c=a+60|0;g[c>>2]=+g[c>>2]+ +g[b+8>>2];return}function p$(a){a=a|0;return a+4|0}function p0(a){a=a|0;return c[a+188>>2]|0}function p1(a){a=a|0;return c[a+192>>2]|0}function p2(a){a=a|0;return c[a+600>>2]|0}function p3(a){a=a|0;return a+504|0}function p4(a){a=a|0;return(c[a+204>>2]&4|0)==0|0}function p5(a){a=a|0;var b=0;if((c[a+232>>2]&2|0)==0){b=0}else{b=a}return b|0}function p6(a){a=a|0;return c[a+212>>2]|0}function p7(a,b){a=a|0;b=b|0;var d=0;d=a+216|0;if(((c[d>>2]|0)-4|0)>>>0<2){return}c[d>>2]=b;return}function p8(a){a=a|0;return a+520|0}function p9(a){a=a|0;return+(+g[a+244>>2])}function qa(a,b){a=a|0;b=b|0;return c[(c[a+488>>2]|0)+(b<<2)>>2]|0}function qb(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function qc(a){a=a|0;return a+4|0}function qd(a){a=a|0;return(c[a+180>>2]|0)!=0|0}function qe(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function qf(a){a=a|0;return c[a+496>>2]|0}function qg(a){a=a|0;var b=0.0;b=+g[a+248>>2];return+(b*b)}function qh(a){a=a|0;return a+568|0}function qi(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;b=+g[a+4>>2];c=+g[a+388>>2];d=b*c;e=+g[a+8>>2];f=+g[a+392>>2];h=e*f;i=+g[a+12>>2];j=+g[a+396>>2];k=i*j;l=+g[a+20>>2];m=c*l;n=+g[a+24>>2];o=f*n;p=+g[a+28>>2];q=j*p;r=+g[a+36>>2];s=c*r;c=+g[a+40>>2];t=f*c;f=+g[a+44>>2];u=j*f;g[a+256>>2]=b*d+e*h+i*k;g[a+260>>2]=d*l+h*n+k*p;g[a+264>>2]=d*r+h*c+k*f;g[a+268>>2]=0.0;g[a+272>>2]=b*m+e*o+i*q;g[a+276>>2]=l*m+n*o+p*q;g[a+280>>2]=m*r+o*c+q*f;g[a+284>>2]=0.0;g[a+288>>2]=b*s+e*t+i*u;g[a+292>>2]=l*s+n*t+p*u;g[a+296>>2]=r*s+c*t+f*u;g[a+300>>2]=0.0;return}function qj(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function qk(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0;if(b<0.0){d=0.0}else{d=b>1.0?1.0:b}g[a+436>>2]=d;if(c<0.0){e=0.0}else{e=c>1.0?1.0:c}g[a+440>>2]=e;return}function ql(a){a=a|0;return c[a+232>>2]|0}function qm(a,b){a=a|0;b=b|0;c[a+600>>2]=b;return}function qn(a){a=a|0;return a+388|0}function qo(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0;c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];f=(+g[a+272>>2]*c+ +g[a+276>>2]*d+ +g[a+280>>2]*e)*+g[a+540>>2];h=(+g[a+288>>2]*c+ +g[a+292>>2]*d+ +g[a+296>>2]*e)*+g[a+544>>2];b=a+320|0;g[b>>2]=+g[b>>2]+(+g[a+256>>2]*c+ +g[a+260>>2]*d+ +g[a+264>>2]*e)*+g[a+536>>2];b=a+324|0;g[b>>2]=+g[b>>2]+f;b=a+328|0;g[b>>2]=+g[b>>2]+h;return}function qp(a){a=a|0;return a+568|0}function qq(a){a=a|0;return(c[a+204>>2]&1|0)!=0|0}function qr(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0;c=+g[a+336>>2];d=+g[b+4>>2]*+g[a+344>>2]*c;e=+g[b+8>>2]*+g[a+348>>2]*c;f=a+304|0;g[f>>2]=+g[f>>2]+ +g[b>>2]*+g[a+340>>2]*c;b=a+308|0;g[b>>2]=+g[b>>2]+d;b=a+312|0;g[b>>2]=+g[b>>2]+e;return}function qs(a,b){a=a|0;b=b|0;c[a+204>>2]=b;return}function qt(a){a=a|0;return a+504|0}function qu(a,b,c){a=a|0;b=+b;c=+c;g[a+464>>2]=b;g[a+468>>2]=c;return}function qv(a){a=a|0;return c[a+604>>2]|0}function qw(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+g[a+324>>2]+ +g[a+524>>2];d=+g[a+328>>2]+ +g[a+528>>2];g[b>>2]=+g[a+320>>2]+ +g[a+520>>2];g[b+4>>2]=c;g[b+8>>2]=d;g[b+12>>2]=0.0;return}function qx(a){a=a|0;return c[a+480>>2]|0}function qy(a){a=a|0;return+(+g[a+228>>2])}function qz(a){a=a|0;return+(+g[a+184>>2])}function qA(a){a=a|0;return a+584|0}function qB(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a,b,d)|0}function qC(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;do{if((a[43792]|0)==0){if((b1(43792)|0)==0){break}}}while(0);d=+g[b+324>>2];e=+g[c+8>>2];f=+g[b+328>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b+320>>2];k=+g[b+308>>2]+(f*i-j*e);l=+g[b+312>>2]+(j*h-d*i);g[9546]=+g[b+304>>2]+(d*e-f*h);g[9547]=k;g[9548]=l;g[9549]=0.0;return 38184}function qD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+192>>2]|0;dI[c[(c[e>>2]|0)+8>>2]&1023](e,a+4|0,b,d);return}function qE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function qF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+164|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];do{if(+g[b>>2]!=1.0){f=1}else{if(+g[b+4>>2]!=1.0){f=1;break}f=+g[b+8>>2]!=1.0|0}}while(0);c[a+180>>2]=f;return}function qG(a,b){a=a|0;b=+b;ap0(a,b);return}function qH(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function qI(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,h=0;d=+g[a+336>>2];if(d!=0.0){e=1.0/d;d=e*+g[b+4>>2];f=e*+g[b+8>>2];g[a+356>>2]=e*+g[b>>2];g[a+360>>2]=d;g[a+364>>2]=f;g[a+368>>2]=0.0}h=a+372|0;a=b;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];return}function qJ(a,b){a=a|0;b=b|0;var d=0;d=a+536|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function qK(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function qL(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function qM(a,b){a=a|0;b=b|0;var d=0;if((c[a+252>>2]|0)==0){d=1;return d|0}d=dj[c[c[a>>2]>>2]&511](a|0,b)|0;return d|0}function qN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0.0,j=0.0;d=a+340|0;e=d;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];h=+g[a+336>>2];i=+g[a+344>>2]*h;j=+g[a+348>>2]*h;g[a+552>>2]=+g[d>>2]*h;g[a+556>>2]=i;g[a+560>>2]=j;g[a+564>>2]=0.0;return}function qO(a,b){a=a|0;b=b|0;var d=0;d=a+304|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function qP(a,b){a=a|0;b=b|0;var d=0;d=a+388|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function qQ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function qR(){return 0}function qS(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function qT(a){a=a|0;return+(+g[a+436>>2])}function qU(a){a=a|0;return a+104|0}function qV(b,c,d){b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0;e=+g[c>>2]+-1.0;f=+g[c+4>>2]+-1.0;h=+g[c+8>>2]+-1.0;g[b+4>>2]=e;g[b+8>>2]=f;g[b+12>>2]=h;g[b+16>>2]=0.0;i=+g[d>>2]+1.0;j=+g[d+4>>2]+1.0;k=+g[d+8>>2]+1.0;g[b+20>>2]=i;g[b+24>>2]=j;g[b+28>>2]=k;g[b+32>>2]=0.0;g[b+36>>2]=65533.0/(i-e);g[b+40>>2]=65533.0/(j-f);g[b+44>>2]=65533.0/(k-h);g[b+48>>2]=0.0;a[b+60|0]=1;return}function qW(b,c,d,e){b=b|0;c=c|0;d=d|0;e=+e;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;f=+g[c>>2]-e;h=+g[c+4>>2]-e;i=+g[c+8>>2]-e;g[b+4>>2]=f;g[b+8>>2]=h;g[b+12>>2]=i;g[b+16>>2]=0.0;j=+g[d>>2]+e;k=+g[d+4>>2]+e;l=+g[d+8>>2]+e;g[b+20>>2]=j;g[b+24>>2]=k;g[b+28>>2]=l;g[b+32>>2]=0.0;g[b+36>>2]=65533.0/(j-f);g[b+40>>2]=65533.0/(k-h);g[b+44>>2]=65533.0/(l-i);g[b+48>>2]=0.0;a[b+60|0]=1;return}function qX(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0;f=(+g[d>>2]- +g[a+4>>2])*+g[a+36>>2];h=(+g[d+4>>2]- +g[a+8>>2])*+g[a+40>>2];i=(+g[d+8>>2]- +g[a+12>>2])*+g[a+44>>2];if((e|0)==0){b[c>>1]=~~f&-2;b[c+2>>1]=~~h&-2;b[c+4>>1]=~~i&-2;return}else{b[c>>1]=~~(f+1.0)|1;b[c+2>>1]=~~(h+1.0)|1;b[c+4>>1]=~~(i+1.0)|1;return}}function qY(b){b=b|0;return(a[b+60|0]&1)!=0|0}function qZ(b){b=b|0;return(c[b+168>>2]<<5)+172+(c[b+56>>2]<<((a[b+60|0]&1)==0?6:4))|0}function q_(a){a=a|0;return a+124|0}function q$(a){a=a|0;return a+148|0}function q0(a){a=a|0;return c[a+28>>2]|0}function q1(a){a=a|0;return c[a+24>>2]|0}function q2(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function q3(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function q4(a){a=a|0;return c[a+12>>2]|0}function q5(a){a=a|0;return c[a+4>>2]|0}function q6(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function q7(b){b=b|0;return(a[b+20|0]&1)!=0|0}function q8(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function q9(a){a=a|0;return c[a+4>>2]|0}function ra(a){a=a|0;return+(+g[a+36>>2])}function rb(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function rc(b){b=b|0;return(a[b+21|0]&1)!=0|0}function rd(a){a=a|0;return c[a+4>>2]|0}function re(a){a=a|0;return c[a+12>>2]|0}function rf(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function rg(a){a=a|0;return c[a+12>>2]|0}function rh(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function ri(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function rj(a){a=a|0;return+(+g[a+32>>2])}function rk(a){a=a|0;return+(+g[a+16>>2])}function rl(a){a=a|0;return c[a+8>>2]|0}function rm(a){a=a|0;return+(+g[a+32>>2])}function rn(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ro(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function rp(a){a=a|0;return(c[a+4>>2]|0)<7|0}function rq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function rr(a,b){a=a|0;b=+b;ap3(a,b);return}function rs(a){a=a|0;azj(a|0);return}function rt(a,b,d){a=a|0;b=b|0;d=d|0;return(cS[c[(c[a>>2]|0)+16>>2]&511](a|0,b,d)|0)!=0|0}function ru(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a|0,b,d,e)|0}function rv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qX(a|0,b,c,d);return}function rw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ayA(a,b,c,d);return}function rx(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;azn(a|0,b,c,d);return}function ry(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0;h=i;i=i+32|0;j=h|0;k=h+16|0;l=b|0;aDD(j|0,0,16);aDD(k|0,0,16);if((a[b+60|0]&1)==0){azp(l,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k);i=h;return}else{azq(l,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k,c[b+56>>2]|0);i=h;return}}function rz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ayv(a,b,c,d,e);return}function rA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ayB(a,b,+g[c>>2],+g[c+4>>2],+g[c+8>>2],+g[d>>2],+g[d+4>>2],+g[d+8>>2]);return}function rB(a,b,c){a=a|0;b=b|0;c=c|0;return azs(a,b,c)|0}function rC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rD(a|0,b,c,d);return}function rD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0;f=i;i=i+16|0;h=f|0;j=h;k=d;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=h|0;l=+g[k>>2];m=+g[a+4>>2];if(l>2]=m;n=m}else{n=l}j=h+4|0;l=+g[j>>2];m=+g[a+8>>2];if(l>2]=m;o=m}else{o=l}d=h+8|0;l=+g[d>>2];m=+g[a+12>>2];if(l>2]=m;p=m}else{p=l}q=h+12|0;l=+g[q>>2];m=+g[a+16>>2];if(l>2]=m;r=m}else{r=l}l=+g[a+20>>2];if(l>2]=l}l=+g[a+24>>2];if(l>2]=l}l=+g[a+28>>2];if(l>2]=l}l=+g[a+32>>2];if(l>=r){qX(a,b,h,e);i=f;return}g[q>>2]=l;qX(a,b,h,e);i=f;return}function rE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ayw(a,b,c,d);return}function rF(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function rG(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a|0)|0}function rH(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function rI(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a|0,b);return}function rJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e)|0}function rK(b,c){b=b|0;c=c|0;var d=0.0,f=0.0;do{if((a[43928]|0)==0){if((b1(43928)|0)==0){break}}}while(0);d=+((e[c+2>>1]|0)>>>0)/+g[b+40>>2]+ +g[b+8>>2];f=+((e[c+4>>1]|0)>>>0)/+g[b+44>>2]+ +g[b+12>>2];g[9542]=+((e[c>>1]|0)>>>0)/+g[b+36>>2]+ +g[b+4>>2];g[9543]=d;g[9544]=f;g[9545]=0.0;return 38168}function rL(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0;j=b|0;if((a[b+60|0]&1)==0){azp(j,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,i);return}else{azq(j,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,i,c[b+56>>2]|0);return}}function rM(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(191)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d+52>>2]=278;a[d+60|0]=0;a[d+80|0]=1;c[d+76>>2]=0;c[d+68>>2]=0;c[d+72>>2]=0;a[d+100|0]=1;c[d+96>>2]=0;c[d+88>>2]=0;c[d+92>>2]=0;a[d+120|0]=1;c[d+116>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;a[d+140|0]=1;c[d+136>>2]=0;c[d+128>>2]=0;c[d+132>>2]=0;c[d+144>>2]=0;a[d+164|0]=1;c[d+160>>2]=0;c[d+152>>2]=0;c[d+156>>2]=0;c[d+168>>2]=0;g[d+4>>2]=-3.4028234663852886e+38;g[d+8>>2]=-3.4028234663852886e+38;g[d+12>>2]=-3.4028234663852886e+38;g[d+16>>2]=0.0;g[d+20>>2]=3.4028234663852886e+38;g[d+24>>2]=3.4028234663852886e+38;g[d+28>>2]=3.4028234663852886e+38;g[d+32>>2]=0.0;c[d>>2]=25376;return d|0}function rN(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function rO(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function rP(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function rQ(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function rR(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function rS(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function rT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function rU(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function rV(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function rW(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function rX(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f);return}function rY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e);return}function rZ(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function r_(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function r$(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43488]|0)==0){if((b1(43488)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9538]=c[d>>2];c[9539]=c[d+4>>2];c[9540]=c[d+8>>2];c[9541]=c[d+12>>2];i=e;return 38152}function r0(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function r1(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function r2(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function r3(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function r4(a){a=a|0;return}function r5(a){a=a|0;return a+12|0}function r6(a){a=a|0;return+(+g[a+44>>2])}function r7(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function r8(a){a=a|0;return(c[a+4>>2]|0)<20|0}function r9(a){a=a|0;return(c[a+4>>2]|0)==28|0}function sa(a){a=a|0;return c[a+8>>2]|0}function sb(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function sc(a){a=a|0;return(c[a+4>>2]|0)==32|0}function sd(a){a=a|0;return a+28|0}function se(a){a=a|0;return(c[a+4>>2]|0)==31|0}function sf(a){a=a|0;return c[a+52>>2]|0}function sg(a){a=a|0;return c[a+4>>2]|0}function sh(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function si(a,b){a=a|0;b=b|0;c[a+140>>2]=b;return}function sj(b){b=b|0;return(a[b+153|0]&1)!=0|0}function sk(b,c){b=b|0;c=c|0;a[b+152|0]=c&1;return}function sl(a){a=a|0;return c[a+112>>2]|0}function sm(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function sn(b){b=b|0;return(a[b+152|0]&1)!=0|0}function so(a,b){a=a|0;b=b|0;c[a+108>>2]=b;return}function sp(b,c){b=b|0;c=c|0;a[b+153|0]=c&1;return}function sq(a,b){a=a|0;b=b|0;c[a+144>>2]=b;return}function sr(a,b){a=a|0;b=b|0;c[a+120>>2]=b;return}function ss(a){a=a|0;return c[a+124>>2]|0}function st(a,b){a=a|0;b=b|0;c[a+148>>2]=b;return}function su(a){a=a|0;return c[a+104>>2]|0}function sv(a,b){a=a|0;b=b|0;c[a+128>>2]=b;return}function sw(b,c){b=b|0;c=c|0;a[b+154|0]=c&1;return}function sx(a,b){a=a|0;b=b|0;c[a+132>>2]=b;return}function sy(a){a=a|0;return c[a+108>>2]|0}function sz(a){a=a|0;return c[a+140>>2]|0}function sA(a,b){a=a|0;b=b|0;c[a+112>>2]=b;return}function sB(a){a=a|0;return c[a+144>>2]|0}function sC(a,b){a=a|0;b=+b;g[a+136>>2]=b;return}function sD(a,b){a=a|0;b=+b;g[a+100>>2]=b;return}function sE(a){a=a|0;return c[a+128>>2]|0}function sF(a){a=a|0;return c[a+116>>2]|0}function sG(a,b){a=a|0;b=b|0;c[a+116>>2]=b;return}function sH(a){a=a|0;return+(+g[a+100>>2])}function sI(a){a=a|0;return c[a+148>>2]|0}function sJ(b){b=b|0;return(a[b+154|0]&1)!=0|0}function sK(a){a=a|0;return c[a+120>>2]|0}function sL(a){a=a|0;return+(+g[a+136>>2])}function sM(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function sN(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43328]|0)==0){if((b1(43328)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9534]=c[d>>2];c[9535]=c[d+4>>2];c[9536]=c[d+8>>2];c[9537]=c[d+12>>2];i=e;return 38136}function sO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function sP(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function sQ(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function sR(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function sS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function sT(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43104]|0)==0){if((b1(43104)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9530]=c[d>>2];c[9531]=c[d+4>>2];c[9532]=c[d+8>>2];c[9533]=c[d+12>>2];i=e;return 38120}function sU(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43168]|0)==0){if((b1(43168)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9526]=c[d>>2];c[9527]=c[d+4>>2];c[9528]=c[d+8>>2];c[9529]=c[d+12>>2];i=e;return 38104}function sV(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function sW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function sX(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function sY(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function sZ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function s_(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function s$(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function s0(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a)|0}function s1(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function s2(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 13:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function s3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function s4(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function s5(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function s6(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function s7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function s8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function s9(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function ta(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+40>>2]&511](a,b,d);return}function tb(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;cY[c[(c[a>>2]|0)+28>>2]&63](a,b,d,e,f,g);return}function tc(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;df[c[(c[a>>2]|0)+24>>2]&63](a,b,d,e,f,g,h,i,j);return}function td(a,b,d,e,f,g){a=a|0;b=+b;d=+d;e=e|0;f=f|0;g=g|0;cK[c[(c[a>>2]|0)+84>>2]&63](a,b,d,e,f,g);return}function te(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;g=g|0;cw[c[(c[a>>2]|0)+32>>2]&63](a,b,d,e,f,g);return}function tf(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=j|0;k=k|0;dt[c[(c[a>>2]|0)+60>>2]&63](a,b,d,e,f,g,h,i,j,k,10.0);return}function tg(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=j|0;k=k|0;l=+l;dt[c[(c[a>>2]|0)+60>>2]&63](a,b,d,e,f,g,h,i,j,k,l);return}function th(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function ti(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+12>>2]&255](a,b,d,e,f);return}function tj(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function tk(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function tl(a,b,d,e,f,g){a=a|0;b=+b;d=+d;e=e|0;f=f|0;g=g|0;cK[c[(c[a>>2]|0)+80>>2]&63](a,b,d,e,f,g);return}function tm(a,b,d){a=a|0;b=b|0;d=+d;dF[c[(c[a>>2]|0)+56>>2]&255](a,b,d);return}function tn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+52>>2]&1023](a,b,d,e);return}function to(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;cr[c[(c[a>>2]|0)+88>>2]&63](a,b,d,e,f);return}function tp(a,b,d,e,f,g){a=a|0;b=+b;d=+d;e=e|0;f=f|0;g=g|0;cK[c[(c[a>>2]|0)+76>>2]&63](a,b,d,e,f,g);return}function tq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function tr(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+72>>2]&255](a,b,d,e,f);return}function ts(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a,b);return}function tt(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=+j;k=k|0;cs[c[(c[a>>2]|0)+64>>2]&63](a,b,d,e,f,g,h,i,j,k,10.0);return}function tu(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=+j;k=k|0;l=+l;cs[c[(c[a>>2]|0)+64>>2]&63](a,b,d,e,f,g,h,i,j,k,l);return}function tv(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;dg[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e);return}function tw(a,b){a=a|0;b=b|0;awS(a,b);return}function tx(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function ty(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a,b,d,e,g,h);i=f;return}function tz(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a,b,d,e,f,h);i=g;return}function tA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e,f,g);return}function tB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a,b,d,e,f);return}function tC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a,b);return}function tD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a,b,d,e);return}function tE(a,b){a=a|0;b=b|0;awR(a,b);return}function tF(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a);return}function tG(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a,b,d,e,f,g,h,i,j)|0}function tH(a){a=a|0;aws(a+4|0);aws(a+44|0);return}function tI(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function tJ(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function tK(){var a=0,b=0,d=0;while(1){a=aDx(156)|0;if((a|0)!=0){b=2117;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){b=2114;break}dC[d&63]()}if((b|0)==2114){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}else if((b|0)==2117){b=a;awx(b,0);return b|0}return 0}function tL(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(156)|0;if((b|0)!=0){d=2131;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){d=2128;break}dC[e&63]()}if((d|0)==2128){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((d|0)==2131){d=b;awx(d,a);return d|0}return 0}function tM(a){a=a|0;return(a|0)==28|0}function tN(a){a=a|0;return(a|0)==31|0}function tO(a){a=a|0;return(a|0)<7|0}function tP(a){a=a|0;return(a|0)<20|0}function tQ(a){a=a|0;return((a|0)>20&(a|0)<30?(a|0)!=25:0)|0}function tR(a){a=a|0;return((a|0)==17?1:(a|0)==18)|0}function tS(a){a=a|0;return(a|0)==32|0}function tT(a){a=a|0;return((a|0)>20?(a|0)<30:0)|0}function tU(a,b){a=a|0;b=+b;g[a+100>>2]=b;return}function tV(a){a=a|0;return+(+g[a+100>>2])}function tW(a){a=a|0;return c[a+96>>2]|0}function tX(a){a=a|0;return c[a+132>>2]|0}function tY(a,b){a=a|0;b=b|0;c[a+124>>2]=b;return}function tZ(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function t_(a){a=a|0;return c[a>>2]|0}function t$(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function t0(a,b){a=a|0;b=b|0;c[a+48>>2]=b;return}function t1(a){a=a|0;return c[a+48>>2]|0}function t2(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function t3(a){a=a|0;return a+16|0}function t4(a){a=a|0;return b[a+6>>1]|0}function t5(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function t6(a){a=a|0;return c[a+48>>2]|0}function t7(a){a=a|0;return c[a+12>>2]|0}function t8(a){a=a|0;return a+32|0}function t9(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function ua(a){a=a|0;return c[a+12>>2]|0}function ub(a,b){a=a|0;b=b|0;c[a+48>>2]=b;return}function uc(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function ud(a){a=a|0;return c[a+8>>2]|0}function ue(a){a=a|0;return b[a+4>>1]|0}function uf(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function ug(a){a=a|0;return c[a+188>>2]|0}function uh(a){a=a|0;return c[a+4>>2]|0}function ui(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function uj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+200+(b*144|0)+(d<<2)>>2]=e;return}function uk(a,b){a=a|0;b=b|0;c[a+5384>>2]=b;return}function ul(a){a=a|0;return c[a+5384>>2]|0}function um(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=i;i=i+48|0;h=g|0;j=g+32|0;k=h;l=d;m=e;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];e=h+16|0;h=f;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];e=d+60|0;if((c[e>>2]|0)==2){f=b+44|0;n=d+48|0;o=c[n>>2]|0;aww(f,o)|0;f=b+48|0;p=c[f>>2]|0;if((p|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-44+40>>2]|0)}c[f>>2]=o;o=b+56|0;c[o>>2]=(c[o>>2]|0)-1;o=b+4|0;f=b+8|0;p=c[f>>2]|0;do{if((p|0)==0){c[9806]=(c[9806]|0)+1;q=aDx(63)|0;if((q|0)==0){r=0;break}s=-(q+4|0)&15;t=q+(s+4)|0;c[q+s>>2]=q;if((t|0)==0){r=0;break}aDD(t|0,0,44);r=t}else{c[f>>2]=0;r=p}}while(0);c[r+32>>2]=0;c[r+36>>2]=d;c[r+40>>2]=0;p=r;aDC(p|0,k|0,32)|0;awv(o,c[o>>2]|0,r);r=b+16|0;c[r>>2]=(c[r>>2]|0)+1;c[n>>2]=p}else{p=b+128|0;c[p>>2]=(c[p>>2]|0)+1;p=b+4|0;n=c[d+48>>2]|0;r=aww(p,n)|0;L2259:do{if((r|0)==0){u=0}else{o=c[b+12>>2]|0;if((o|0)>-1){v=0;w=r}else{u=c[p>>2]|0;break}while(1){if((v|0)>=(o|0)){u=w;break L2259}f=c[w+32>>2]|0;if((f|0)==0){u=w;break}else{v=v+1|0;w=f}}}}while(0);w=n;aDC(w|0,k|0,32)|0;awv(p,u,n);n=b+132|0;c[n>>2]=(c[n>>2]|0)+1}n=d+52|0;u=c[n>>2]|0;p=d+56|0;k=c[p>>2]|0;if((u|0)==0){c[b+84+(c[e>>2]<<2)>>2]=k}else{c[u+56>>2]=k}k=c[p>>2]|0;if((k|0)!=0){c[k+52>>2]=c[n>>2]}k=d+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];m=d+32|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];h=b+104|0;c[e>>2]=c[h>>2];e=b+84+(c[h>>2]<<2)|0;c[n>>2]=0;c[p>>2]=c[e>>2];p=c[e>>2]|0;if((p|0)!=0){c[p+52>>2]=l}c[e>>2]=l;a[b+154|0]=1;if((a[b+153|0]&1)!=0){x=32;y=0;i=g;return}c[j>>2]=23368;c[j+4>>2]=b;l=b+44|0;e=d+48|0;d=j|0;awL(l,c[l>>2]|0,c[e>>2]|0,d);l=b+4|0;awL(l,c[l>>2]|0,c[e>>2]|0,d);x=32;y=0;i=g;return}function un(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a,b,d,e);return}function uo(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function up(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function uq(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(71)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}c[b>>2]=0;c[b+8>>2]=0;return b|0}function ur(a,d,e,f,g,h,i){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0;c[9806]=(c[9806]|0)+1;e=aDx(71)|0;if((e|0)==0){j=0}else{k=-(e+4|0)&15;c[e+k>>2]=e;j=e+(k+4)|0}c[j>>2]=f;b[j+4>>1]=g;b[j+6>>1]=h;h=j+16|0;g=a;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];g=j+32|0;h=d;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[j+8>>2]=i;return j|0}function us(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ut(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function uu(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-52+48>>2]|0);return}function uv(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function uw(a,b,d){a=a|0;b=b|0;d=d|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,0)|0}function ux(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function uy(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+28>>2]&511](a,b,d)|0}function uz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function uA(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+40>>2]&511](a,b)|0}function uB(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+24>>2]&511](a,b,d)|0}function uC(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function uD(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function uE(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+12>>2]&511](a,b,d)|0}function uF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function uG(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+56>>2]&511](a,b)|0}function uH(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function uI(a){a=a|0;return cA[c[(c[a>>2]|0)+44>>2]&4095](a)|0}function uJ(a,b,c){a=a|0;b=b|0;c=c|0;ata(a,b,c);return}function uK(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function uL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(135)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;aq6(f,a,b,16384,0,0);return f|0}function uM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[9806]=(c[9806]|0)+1;e=aDx(135)|0;if((e|0)==0){f=0}else{g=-(e+4|0)&15;c[e+g>>2]=e;f=e+(g+4)|0}g=f;aq6(g,a,b,d,0,0);return g|0}function uN(b){b=b|0;var d=0,e=0,f=0,g=0;while(1){d=aDx(5388)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=2257;break}dC[e&63]()}if((f|0)==2257){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;c[d>>2]=22392;c[d+4>>2]=2;a[d+24|0]=1;c[d+20>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;c[d+28>>2]=24e3;aDD(d+172|0,-1|0,16);e=d+5384|0;c[e>>2]=b;c[d+188>>2]=156;g=b;c[d+192>>2]=cA[c[(c[g>>2]|0)+12>>2]&4095](b)|0;c[d+196>>2]=cA[c[(c[g>>2]|0)+8>>2]&4095](b)|0;b=0;do{g=0;do{d=c[e>>2]|0;c[f+200+(b*144|0)+(g<<2)>>2]=cS[c[(c[d>>2]|0)+20>>2]&511](d,b,g)|0;g=g+1|0;}while((g|0)<36);b=b+1|0;}while((b|0)<36);return f|0}function uO(a){a=a|0;return b[a+56>>1]|0}function uP(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0,k=0,l=0,m=0;f=(+g[d>>2]- +g[a+8>>2])*+g[a+40>>2];h=(+g[d+4>>2]- +g[a+12>>2])*+g[a+44>>2];i=(+g[d+8>>2]- +g[a+16>>2])*+g[a+48>>2];do{if(f>0.0){d=b[a+6>>1]|0;if(f<+(d&65535|0)){j=(~~f&b[a+4>>1]&65535|e)&65535;break}else{j=(d&b[a+4>>1]&65535|e)&65535;break}}else{j=e&65535}}while(0);b[c>>1]=j;do{if(h>0.0){j=b[a+6>>1]|0;if(h<+(j&65535|0)){k=(~~h&b[a+4>>1]&65535|e)&65535;break}else{k=(j&b[a+4>>1]&65535|e)&65535;break}}else{k=e&65535}}while(0);b[c+2>>1]=k;if(i<=0.0){l=e&65535;m=c+4|0;b[m>>1]=l;return}k=b[a+6>>1]|0;if(i<+(k&65535|0)){l=(~~i&b[a+4>>1]&65535|e)&65535;m=c+4|0;b[m>>1]=l;return}else{l=(k&b[a+4>>1]&65535|e)&65535;m=c+4|0;b[m>>1]=l;return}}function uQ(a){a=a|0;return c[a+96>>2]|0}function uR(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,f=0;a=b;b=c;c=0;while(1){if((c|0)>=3){d=1;f=2303;break}if((e[a+54+(c<<1)>>1]|0)<(e[b+48+(c<<1)>>1]|0)){d=0;f=2304;break}if((e[b+54+(c<<1)>>1]|0)<(e[a+48+(c<<1)>>1]|0)){d=0;f=2302;break}c=c+1|0}if((f|0)==2302){return d|0}else if((f|0)==2303){return d|0}else if((f|0)==2304){return d|0}return 0}function uS(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function uT(a,d,f,h){a=a|0;d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0;i=d;j=c[a+68>>2]|0;k=(b[j+((e[d+54>>1]|0)<<2)>>1]|0)+1&65535;l=c[a+72>>2]|0;m=(b[l+((e[d+56>>1]|0)<<2)>>1]|0)+1&65535;n=c[a+76>>2]|0;o=(b[n+((e[i+58>>1]|0)<<2)>>1]|0)+1&65535;p=a+40|0;q=+((e[j+((e[d+48>>1]|0)<<2)>>1]|0)>>>0)/+g[p>>2];j=a+44|0;r=+((e[l+((e[i+50>>1]|0)<<2)>>1]|0)>>>0)/+g[j>>2];i=a+48|0;s=+((e[n+((e[d+52>>1]|0)<<2)>>1]|0)>>>0)/+g[i>>2];d=f|0;g[d>>2]=q;n=f+4|0;g[n>>2]=r;l=f+8|0;g[l>>2]=s;g[f+12>>2]=0.0;f=a+8|0;g[d>>2]=q+ +g[f>>2];d=a+12|0;g[n>>2]=r+ +g[d>>2];n=a+16|0;g[l>>2]=s+ +g[n>>2];s=+((k&65535)>>>0)/+g[p>>2];r=+((m&65535)>>>0)/+g[j>>2];q=+((o&65535)>>>0)/+g[i>>2];i=h|0;g[i>>2]=s;o=h+4|0;g[o>>2]=r;j=h+8|0;g[j>>2]=q;g[h+12>>2]=0.0;g[i>>2]=s+ +g[f>>2];g[o>>2]=r+ +g[d>>2];g[j>>2]=q+ +g[n>>2];return}function uU(a,b){a=a|0;b=b|0;return(c[a+60>>2]|0)+((b&65535)<<6)|0}function uV(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function uW(a){a=a|0;return c[a>>2]|0}function uX(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function uY(a){a=a|0;return c[a+4>>2]|0}function uZ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;f=aDx(135)|0;if((f|0)==0){g=0}else{h=-(f+4|0)&15;c[f+h>>2]=f;g=f+(h+4)|0}h=g;aq6(h,a,b,d,e,0);return h|0}function u_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;c[9806]=(c[9806]|0)+1;g=aDx(135)|0;if((g|0)==0){h=0}else{i=-(g+4|0)&15;c[g+i>>2]=g;h=g+(i+4)|0}i=h;aq6(i,a,b,d,e,f);return i|0}function u$(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return u0(a|0,b,c,d,e,f,g,h)|0}function u0(a,d,f,g,h,j,k,l){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,x=0,y=0;m=i;i=i+16|0;n=m|0;o=m+8|0;uP(a,n|0,d,0);uP(a,o|0,f,1);f=a+64|0;d=b[f>>1]|0;p=a+60|0;q=c[p>>2]|0;r=d&65535;b[f>>1]=b[q+(r<<6)+48>>1]|0;f=a+56|0;b[f>>1]=(b[f>>1]|0)+1&65535;c[q+(r<<6)+12>>2]=r;c[q+(r<<6)>>2]=g;b[q+(r<<6)+4>>1]=h;b[q+(r<<6)+6>>1]=j;c[q+(r<<6)+8>>2]=l;l=b[f>>1]<<1;f=l&65535;j=f|1;h=f-1|0;g=l-1&65535;s=0;while(1){if((s&65535)>=3){break}t=s&65535;u=(c[p>>2]|0)+54+(t<<1)|0;b[u>>1]=(b[u>>1]|0)+2&65535;u=a+68+(t<<2)|0;v=c[u>>2]|0;x=v+(h<<2)|0;y=v+(j<<2)|0;w=e[x>>1]|e[x+2>>1]<<16;b[y>>1]=w&65535;b[y+2>>1]=w>>16;b[(c[u>>2]|0)+(h<<2)>>1]=b[n+(t<<1)>>1]|0;b[(c[u>>2]|0)+(h<<2)+2>>1]=d;b[(c[u>>2]|0)+(f<<2)>>1]=b[o+(t<<1)>>1]|0;b[(c[u>>2]|0)+(f<<2)+2>>1]=d;b[q+(r<<6)+48+(t<<1)>>1]=g;b[q+(r<<6)+54+(t<<1)>>1]=l;s=s+1&65535}and(a,0,b[q+(r<<6)+48>>1]|0,0);ang(a,0,b[q+(r<<6)+54>>1]|0,k,0);and(a,1,b[q+(r<<6)+50>>1]|0,0);ang(a,1,b[q+(r<<6)+56>>1]|0,k,0);and(a,2,b[q+(r<<6)+52>>1]|0,1);ang(a,2,b[q+(r<<6)+58>>1]|0,k,1);i=m;return d|0}function u1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;uP(a|0,b,c,d);return}function u2(a,b,c){a=a|0;b=b|0;c=c|0;u3(a|0,b,c);return}function u3(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=a+60|0;h=c[g>>2]|0;i=d&65535;j=a+92|0;k=c[j>>2]|0;if(!(cA[c[(c[k>>2]|0)+56>>2]&4095](k)|0)){k=c[j>>2]|0;dA[c[(c[k>>2]|0)+16>>2]&511](k|0,h+(i<<6)|0,f)}k=a+56|0;j=(e[k>>1]|0)<<1;l=0;while(1){if((l|0)>=3){break}m=(c[g>>2]|0)+54+(l<<1)|0;b[m>>1]=(b[m>>1]|0)-2&65535;l=l+1|0}l=a+6|0;m=j-1|0;j=0;while(1){if((j|0)>=3){break}n=c[a+68+(j<<2)>>2]|0;o=b[h+(i<<6)+54+(j<<1)>>1]|0;b[n+((o&65535)<<2)>>1]=b[l>>1]|0;ane(a,j,o,0);o=b[h+(i<<6)+48+(j<<1)>>1]|0;b[n+((o&65535)<<2)>>1]=b[l>>1]|0;anf(a,j,o,f,0);b[n+(m<<2)+2>>1]=0;b[n+(m<<2)>>1]=b[l>>1]|0;j=j+1|0}j=a+64|0;b[(c[g>>2]|0)+(i<<6)+48>>1]=b[j>>1]|0;b[j>>1]=d;b[k>>1]=(b[k>>1]|0)-1&65535;return}function u4(a,b){a=a|0;b=b|0;b6(a|0,b|0);return}function u5(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a|0,b,d,e,g,h);i=f;return}function u6(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a|0,b,d,e,f,h);i=g;return}function u7(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e,f,g);return}function u8(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a|0,b,d,e,f);return}function u9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a|0,b);return}function va(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a|0,b,d,e);return}function vb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;vc(a|0,b,c,d,e);return}function vc(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;j=i;i=i+16|0;k=j|0;l=j+8|0;m=c[a+60>>2]|0;n=d&65535;uP(a,k|0,f,0);uP(a,l|0,g,1);g=0;while(1){if((g|0)>=3){break}f=b[m+(n<<6)+48+(g<<1)>>1]|0;d=b[m+(n<<6)+54+(g<<1)>>1]|0;o=b[k+(g<<1)>>1]|0;p=a+68+(g<<2)|0;q=c[p>>2]|0;r=q+((f&65535)<<2)|0;s=(o&65535)-(e[r>>1]|0)|0;t=b[l+(g<<1)>>1]|0;u=d&65535;v=(t&65535)-(e[q+(u<<2)>>1]|0)|0;b[r>>1]=o;b[(c[p>>2]|0)+(u<<2)>>1]=t;if((s|0)<0){and(a,g,f,1)}if((v|0)>0){ane(a,g,d,1)}if((s|0)>0){anf(a,g,f,h,1)}if((v|0)<0){ang(a,g,d,h,1)}g=g+1|0}i=j;return}function vd(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a|0);return}function ve(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a|0,b,d,e,f,g,h,i,j)|0}function vf(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function vg(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a|0,b);return}function vh(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function vi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function vj(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a|0,b,d);return}function vk(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,d);return}function vl(a){a=a|0;if((a|0)==0){return}aDB(a);return}function vm(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+68>>2]&2047](a,b);return}function vn(){var a=0,b=0,d=0;while(1){a=aDx(8)|0;if((a|0)!=0){b=2391;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==2391){c[a>>2]=0;c[a+4>>2]=0;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function vo(a,b){a=a|0;b=b|0;var d=0,e=0;while(1){d=aDx(8)|0;if((d|0)!=0){e=2403;break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){break}dC[b&63]()}if((e|0)==2403){c[d>>2]=a;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function vp(a){a=a|0;return a+100|0}function vq(a){a=a|0;return c[a+24>>2]|0}function vr(a){a=a|0;return a|0}function vs(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function vt(b){b=b|0;return(a[b+242|0]&1)!=0|0}function vu(b,c){b=b|0;c=c|0;a[b+242|0]=c&1;return}function vv(a){a=a|0;return a+4|0}function vw(a,b){a=a|0;b=b|0;c[a+88>>2]=b;c[a+96>>2]=0;return}function vx(a,b,d){a=a|0;b=b|0;d=d|0;c[a+88>>2]=b;c[a+96>>2]=d;return}function vy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(e){c[a+92>>2]=b}else{c[a+88>>2]=b}c[a+96>>2]=d;return}function vz(b){b=b|0;return(a[b+84|0]&1)!=0|0}function vA(a){a=a|0;return c[a+8>>2]|0}function vB(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function vC(a){a=a|0;return c[a+96>>2]|0}function vD(a){a=a|0;return c[a+76>>2]|0}function vE(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function vF(a){a=a|0;return c[a+176>>2]|0}function vG(a){a=a|0;return a+28|0}function vH(a){a=a|0;return c[a+28>>2]|0}function vI(a){a=a|0;return c[a+24>>2]|0}function vJ(b){b=b|0;return(a[b+518|0]&1)!=0|0}function vK(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function vL(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function vM(a){a=a|0;return a+292|0}function vN(a){a=a|0;return a+356|0}function vO(a){a=a|0;return+(+g[a+440>>2])}function vP(a){a=a|0;return+(+g[a+436>>2])}function vQ(a){a=a|0;return c[a+4>>2]|0}function vR(a,b){a=a|0;b=+b;g[a+432>>2]=b;return}function vS(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function vT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function vU(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function vV(a){a=a|0;ct[c[(c[a>>2]|0)+164>>2]&2047](a);return}function vW(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a,b);return}function vX(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+80>>2]&2047](a,b);return}function vY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+84>>2]&1023](a,b,d,e);return}function vZ(a){a=a|0;ct[c[(c[a>>2]|0)+116>>2]&2047](a);return}function v_(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+124>>2]&2047](a,b);return}function v$(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+168>>2]&2047](a,b);return}function v0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a|0,b,d,e);return}function v1(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a,b);return}function v2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function v3(a){a=a|0;return cA[c[(c[a>>2]|0)+100>>2]&4095](a)|0}function v4(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,2,-3);return}function v5(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,-3);return}function v6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function v7(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}function v8(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function v9(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a|0);return}function wa(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function wb(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function wc(a,b){a=a|0;b=b|0;aoh(a,b);return}function wd(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function we(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a|0,b,c,d,e,0.0);return}function wf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a|0,b,c,d,e,f);return}function wg(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+52>>2]&511](a,b,0);return}function wh(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+52>>2]&511](a,b,d);return}function wi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function wj(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43816]|0)==0){if((b1(43816)|0)==0){break}}}while(0);cv[c[(c[b>>2]|0)+72>>2]&2047](e,b);b=e;c[9510]=c[b>>2];c[9511]=c[b+4>>2];c[9512]=c[b+8>>2];c[9513]=c[b+12>>2];i=d;return 38040}function wk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function wl(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function wm(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function wn(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+132>>2]&2047](a,b);return}function wo(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+104>>2]&511](a,b)|0}function wp(a){a=a|0;return cA[c[(c[a>>2]|0)+96>>2]&4095](a)|0}function wq(a,b){a=a|0;b=+b;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,1,.01666666753590107)|0}function wr(a,b,d){a=a|0;b=+b;d=d|0;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,.01666666753590107)|0}function ws(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,e)|0}function wt(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+128>>2]&2047](a,b);return}function wu(a){a=a|0;return cA[c[(c[a>>2]|0)+112>>2]&4095](a)|0}function wv(a,b){a=a|0;b=b|0;atC(a|0,b);return}function ww(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+172>>2]&1023](a,b);return}function wx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+64|0;e=d|0;f=b+472|0;if((c[f>>2]|0)==0){i=d;return}if((c[b+204>>2]&3|0)!=0){i=d;return}anY(b+68|0,+g[b+132>>2],+g[b+136>>2],+g[b+140>>2],b+148|0,+g[a+236>>2]*+g[b+240>>2],e);b=c[f>>2]|0;cv[c[(c[b>>2]|0)+12>>2]&2047](b,e);i=d;return}function wy(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+120>>2]&2047](a,b);return}function wz(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function wA(a){a=a|0;ct[c[(c[a>>2]|0)+76>>2]&2047](a);return}function wB(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function wC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+92>>2]&2047](a,b);return}function wD(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function wE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function wF(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function wG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;anP(a,b,c,d,e);return}function wH(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function wI(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function wJ(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function wK(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function wL(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function wM(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function wN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;while(1){f=aDx(268)|0;if((f|0)!=0){g=2523;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){g=2520;break}dC[h&63]()}if((g|0)==2523){h=f;aob(h,a,b,d,e);return h|0}else if((g|0)==2520){g=cd(4)|0;c[g>>2]=19096;bF(g|0,34368,676);return 0}return 0}function wO(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;while(1){e=aDx(600)|0;if((e|0)!=0){f=2537;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){f=2534;break}dC[h&63]()}if((f|0)==2534){h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}else if((f|0)==2537){aq1(e,5,b);c[e>>2]=22328;b=e+292|0;f=d;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e+308|0;h=d+16|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=e+324|0;i=d+32|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];i=e+340|0;j=d+48|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];j=e+356|0;a[e+519|0]=0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];b=e+372|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e+388|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=e+404|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];a[e+516|0]=0;a[e+517|0]=0;a[e+518|0]=0;a[e+544|0]=0;g[e+564>>2]=-1.0;g[e+436>>2]=999999984306749400.0;g[e+440>>2]=999999984306749400.0;g[e+444>>2]=999999984306749400.0;g[e+420>>2]=1.0;g[e+424>>2]=.30000001192092896;g[e+428>>2]=1.0;g[e+432>>2]=.009999999776482582;g[e+448>>2]=.05000000074505806;c[e+584>>2]=0;g[e+588>>2]=0.0;g[e+592>>2]=.699999988079071;g[e+596>>2]=0.0;return e|0}return 0}function wP(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function wQ(b){b=b|0;return(a[b+20|0]&1)!=0|0}function wR(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function wS(a){a=a|0;return c[a+4>>2]|0}function wT(a){a=a|0;return+(+g[a+504>>2])}function wU(b,c){b=b|0;c=+c;g[b+564>>2]=c;a[b+545|0]=1;return}function wV(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function wW(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function wX(b){b=b|0;return(a[b+21|0]&1)!=0|0}function wY(a){a=a|0;return c[a+4>>2]|0}function wZ(b){b=b|0;return a[b+517|0]&1|0}function w_(a){a=a|0;return c[a+12>>2]|0}function w$(b,c){b=b|0;c=c|0;a[b+544|0]=c&1;return}function w0(a){a=a|0;return a+356|0}function w1(a,b){a=a|0;b=b|0;c[b>>2]=6;c[b+4>>2]=0;return}function w2(a){a=a|0;return c[a+12>>2]|0}function w3(a){a=a|0;return+(+g[a+36>>2])}function w4(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function w5(a){a=a|0;return+(+g[a+448>>2])}function w6(b){b=b|0;return a[b+517|0]&1|0}function w7(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function w8(a){a=a|0;return+(+g[a+32>>2])}function w9(b,c){b=b|0;c=c|0;a[b+516|0]=c&1;return}function xa(a,b,c){a=a|0;b=b|0;c=+c;if((b|0)==3){g[a+444>>2]=c;return}else if((b|0)==5){g[a+436>>2]=c;return}else if((b|0)==4){g[a+440>>2]=c;return}else{return}}function xb(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;g[a+436>>2]=b;g[a+440>>2]=c;g[a+444>>2]=d;g[a+420>>2]=1.0;g[a+424>>2]=.30000001192092896;g[a+428>>2]=1.0;return}function xc(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;g[a+436>>2]=b;g[a+440>>2]=c;g[a+444>>2]=d;g[a+420>>2]=e;g[a+424>>2]=.30000001192092896;g[a+428>>2]=1.0;return}function xd(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g[a+436>>2]=b;g[a+440>>2]=c;g[a+444>>2]=d;g[a+420>>2]=e;g[a+424>>2]=f;g[a+428>>2]=1.0;return}function xe(a,b,c,d,e,f,h){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;h=+h;g[a+436>>2]=b;g[a+440>>2]=c;g[a+444>>2]=d;g[a+420>>2]=e;g[a+424>>2]=f;g[a+428>>2]=h;return}function xf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0;d=i;i=i+208|0;e=d|0;f=d+80|0;h=d+160|0;j=d+176|0;k=d+192|0;l=c[a+24>>2]|0;m=+g[l+4>>2];n=+g[l+8>>2];o=+g[l+12>>2];p=+g[l+20>>2];q=+g[l+24>>2];r=+g[l+28>>2];s=+g[l+36>>2];t=+g[l+40>>2];u=+g[l+44>>2];v=+g[l+52>>2];w=+g[l+56>>2];x=+g[l+60>>2];l=c[a+28>>2]|0;y=+g[l+4>>2];z=+g[l+8>>2];A=+g[l+12>>2];B=+g[l+20>>2];C=+g[l+24>>2];D=+g[l+28>>2];E=+g[l+36>>2];F=+g[l+40>>2];G=+g[l+44>>2];H=+g[l+52>>2];I=+g[l+56>>2];J=+g[l+60>>2];K=-0.0-H;L=-0.0-I;M=-0.0-J;g[e>>2]=m*y+p*B+s*E;g[e+4>>2]=n*y+q*B+t*E;g[e+8>>2]=o*y+r*B+u*E;g[e+12>>2]=0.0;g[e+16>>2]=m*z+p*C+s*F;g[e+20>>2]=n*z+q*C+t*F;g[e+24>>2]=o*z+r*C+u*F;g[e+28>>2]=0.0;g[e+32>>2]=m*A+p*D+s*G;g[e+36>>2]=n*A+q*D+t*G;g[e+40>>2]=o*A+r*D+u*G;g[e+44>>2]=0.0;g[e+48>>2]=v*y+w*B+x*E+(y*K+B*L+E*M);g[e+52>>2]=v*z+w*C+x*F+(z*K+C*L+F*M);g[e+56>>2]=v*A+w*D+x*G+(A*K+D*L+G*M);g[e+60>>2]=0.0;ec(e|0,d+64|0);e=a+356|0;M=+g[e>>2];L=+g[a+372>>2];K=+g[a+388>>2];N=y*M+z*L+A*K;O=+g[a+360>>2];P=+g[a+376>>2];Q=+g[a+392>>2];R=y*O+z*P+A*Q;S=+g[a+364>>2];T=+g[a+380>>2];U=+g[a+396>>2];V=y*S+z*T+A*U;W=B*M+C*L+D*K;X=B*O+C*P+D*Q;Y=B*S+C*T+D*U;Z=E*M+F*L+G*K;K=E*O+F*P+G*Q;Q=E*S+F*T+G*U;U=+g[a+404>>2];T=+g[a+408>>2];S=+g[a+412>>2];P=-0.0-(H+(y*U+z*T+A*S));A=-0.0-(I+(B*U+C*T+D*S));D=-0.0-(J+(E*U+F*T+G*S));l=a+292|0;S=+g[l>>2];G=+g[a+308>>2];T=+g[a+324>>2];F=m*S+n*G+o*T;U=+g[a+296>>2];E=+g[a+312>>2];J=+g[a+328>>2];C=m*U+n*E+o*J;B=+g[a+300>>2];I=+g[a+316>>2];z=+g[a+332>>2];y=m*B+n*I+o*z;H=p*S+q*G+r*T;O=p*U+q*E+r*J;L=p*B+q*I+r*z;M=s*S+t*G+u*T;T=s*U+t*E+u*J;J=s*B+t*I+u*z;z=+g[a+340>>2];I=+g[a+344>>2];B=+g[a+348>>2];E=v+(m*z+n*I+o*B);o=w+(p*z+q*I+r*B);r=x+(s*z+t*I+u*B);g[f>>2]=Z*M+(N*F+W*H);g[f+4>>2]=Z*T+(N*C+W*O);g[f+8>>2]=Z*J+(N*y+W*L);g[f+12>>2]=0.0;g[f+16>>2]=K*M+(R*F+X*H);g[f+20>>2]=K*T+(R*C+X*O);g[f+24>>2]=K*J+(R*y+X*L);g[f+28>>2]=0.0;g[f+32>>2]=Q*M+(V*F+Y*H);g[f+36>>2]=Q*T+(V*C+Y*O);g[f+40>>2]=Q*J+(V*y+Y*L);g[f+44>>2]=0.0;g[f+48>>2]=Z*D+(N*P+W*A)+(Z*r+(N*E+W*o));g[f+52>>2]=K*D+(R*P+X*A)+(K*r+(R*E+X*o));g[f+56>>2]=Q*D+(V*P+Y*A)+(Q*r+(V*E+Y*o));g[f+60>>2]=0.0;ec(f|0,d+144|0);ec(e|0,j);o=-0.0- +g[j>>2];Y=-0.0- +g[j+4>>2];E=-0.0- +g[j+8>>2];V=+g[j+12>>2];r=+g[b>>2];Q=+g[b+12>>2];A=+g[b+8>>2];P=+g[b+4>>2];D=V*r+Q*o+A*Y-P*E;X=r*E+(Q*Y+V*P)-A*o;R=Q*E+V*A+P*o-r*Y;K=V*Q-r*o-P*Y-A*E;ec(l|0,k);E=+g[k>>2];A=+g[k+12>>2];Y=+g[k+8>>2];P=+g[k+4>>2];g[h>>2]=E*K+D*A+X*Y-R*P;g[h+4>>2]=E*R+(A*X+K*P)-D*Y;g[h+8>>2]=A*R+K*Y+D*P-E*X;g[h+12>>2]=K*A-E*D-X*P-R*Y;an_(a,h);i=d;return}function xg(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function xh(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function xi(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function xj(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function xk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0;while(1){h=aDx(600)|0;if((h|0)!=0){i=2596;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==2596){c[h+4>>2]=5;c[h+8>>2]=-1;c[h+12>>2]=-1;g[h+16>>2]=3.4028234663852886e+38;a[h+20|0]=1;a[h+21|0]=0;c[h+24>>2]=b;c[h+28>>2]=d;g[h+32>>2]=0.0;g[h+36>>2]=.30000001192092896;c[h>>2]=22328;d=h+292|0;b=e;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+308|0;d=e+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=h+324|0;b=e+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+340|0;d=e+48|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=h+356|0;b=f;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+372|0;d=f+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=h+388|0;b=f+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+404|0;d=f+48|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];a[h+544|0]=0;d=h+516|0;w=0;a[d]=w&255;w=w>>8;a[d+1|0]=w&255;w=w>>8;a[d+2|0]=w&255;w=w>>8;a[d+3|0]=w&255;g[h+564>>2]=-1.0;g[h+436>>2]=999999984306749400.0;g[h+440>>2]=999999984306749400.0;g[h+444>>2]=999999984306749400.0;g[h+420>>2]=1.0;g[h+424>>2]=.30000001192092896;g[h+428>>2]=1.0;g[h+432>>2]=.009999999776482582;g[h+448>>2]=.05000000074505806;c[h+584>>2]=0;g[h+588>>2]=0.0;g[h+592>>2]=.699999988079071;g[h+596>>2]=0.0;return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function xl(a,b){a=a|0;b=+b;return}function xm(a){a=a|0;return+(+g[a+32>>2])}function xn(a){a=a|0;return+(+g[a+492>>2])}function xo(b,c){b=b|0;c=+c;g[b+564>>2]=c;a[b+545|0]=0;return}function xp(a){a=a|0;return c[a+12>>2]|0}function xq(a,b){a=a|0;b=+b;g[a+448>>2]=b;return}function xr(a){a=a|0;return+(+g[a+16>>2])}function xs(a){a=a|0;return c[a+8>>2]|0}function xt(a){a=a|0;return+(+g[a+444>>2])}function xu(a){a=a|0;return a+292|0}function xv(a){a=a|0;return c[a+28>>2]|0}function xw(a){a=a|0;return c[a+24>>2]|0}function xx(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function xy(a){a=a|0;return+(+g[a+672>>2])}function xz(a){a=a|0;return a+544|0}function xA(a){a=a|0;return a+608|0}function xB(a,b){a=a|0;b=+b;g[a+676>>2]=b;return}function xC(a){a=a|0;return c[a+4>>2]|0}function xD(b,c,d,e){b=b|0;c=c|0;d=+d;e=+e;a[b+729|0]=c&1;g[b+672>>2]=d;g[b+676>>2]=e;return}function xE(a){a=a|0;return+(+g[a+704>>2])}function xF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function xG(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;anR(a,b,c,d,e,f);return}function xH(a,b){a=a|0;b=b|0;an_(a,b);return}function xI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e);return}function xJ(b,d,e){b=b|0;d=+d;e=+e;var f=0,g=0;f=i;i=i+16|0;g=f|0;do{if((a[43744]|0)==0){if((b1(43744)|0)==0){break}}}while(0);anZ(g,b,d,e);b=g;c[9506]=c[b>>2];c[9507]=c[b+4>>2];c[9508]=c[b+8>>2];c[9509]=c[b+12>>2];i=f;return 38024}function xK(b){b=b|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0;d=b+496|0;g[d>>2]=0.0;g[b+492>>2]=0.0;e=b+517|0;a[e]=0;f=b+518|0;a[f]=0;h=c[b+24>>2]|0;i=+g[b+292>>2];j=+g[b+308>>2];k=+g[b+324>>2];l=+g[h+4>>2];m=+g[h+8>>2];n=+g[h+12>>2];o=i*l+j*m+k*n;p=+g[h+20>>2];q=+g[h+24>>2];r=+g[h+28>>2];s=i*p+j*q+k*r;t=+g[h+36>>2];u=+g[h+40>>2];v=+g[h+44>>2];w=i*t+j*u+k*v;h=c[b+28>>2]|0;k=+g[b+356>>2];j=+g[b+372>>2];i=+g[b+388>>2];x=h+4|0;y=h+8|0;z=h+12|0;A=k*+g[x>>2]+j*+g[y>>2]+i*+g[z>>2];B=h+20|0;C=h+24|0;D=h+28|0;E=k*+g[B>>2]+j*+g[C>>2]+i*+g[D>>2];F=h+36|0;G=h+40|0;H=h+44|0;I=k*+g[F>>2]+j*+g[G>>2]+i*+g[H>>2];i=+g[b+436>>2];if(i<.05000000074505806){J=0.0;K=0.0;L=0.0;M=0.0}else{j=+g[b+296>>2];k=+g[b+312>>2];N=+g[b+328>>2];O=l*j+m*k+n*N;R=p*j+q*k+r*N;S=t*j+u*k+v*N;N=o*A+s*E+w*I;k=I*S+(A*O+E*R);j=+P(+k);if(N<0.0){T=2.356194496154785-(N+j)/(j-N)*.7853981852531433}else{T=.7853981852531433-(N-j)/(N+j)*.7853981852531433}if(k<0.0){U=-0.0-T}else{U=T}T=(N*N+k*k)*10.0*10.0;J=U*(T/(T+1.0));K=O;L=R;M=S}S=+g[b+440>>2];if(S<.05000000074505806){V=0.0;W=0.0;X=0.0;Y=0.0}else{R=+g[b+300>>2];O=+g[b+316>>2];T=+g[b+332>>2];U=R*l+O*m+T*n;n=R*p+O*q+T*r;r=R*t+O*u+T*v;v=o*A+s*E+w*I;T=A*U+E*n+I*r;u=+P(+T);if(v<0.0){Z=2.356194496154785-(v+u)/(u-v)*.7853981852531433}else{Z=.7853981852531433-(v-u)/(v+u)*.7853981852531433}if(T<0.0){_=-0.0-Z}else{_=Z}Z=(v*v+T*T)*10.0*10.0;V=_*(Z/(Z+1.0));W=U;X=n;Y=r}r=1.0/(i*i)*+P(+(J*J));J=r+1.0/(S*S)*+P(+(V*V));if(J>1.0){g[d>>2]=J+-1.0;a[f]=1;J=I*M+(E*L+A*K);V=I*Y+(E*X+A*W);S=K*J+W*V;r=L*J+X*V;i=M*J+Y*V;V=E*i-I*r;J=I*S-A*i;i=A*r-E*S;g[b+464>>2]=0.0;S=1.0/+Q(+(V*V+J*J+i*i));r=o*A+s*E+w*I>=0.0?1.0:-1.0;g[b+452>>2]=r*V*S;g[b+456>>2]=r*J*S;g[b+460>>2]=r*i*S}S=+g[b+444>>2];if(S<0.0){return}i=+g[b+360>>2];r=+g[b+376>>2];J=+g[b+392>>2];V=i*+g[x>>2]+r*+g[y>>2]+J*+g[z>>2];n=i*+g[B>>2]+r*+g[C>>2]+J*+g[D>>2];U=i*+g[F>>2]+r*+g[G>>2]+J*+g[H>>2];J=o*A+s*E+w*I;do{if(J<-.9999998807907104){if(+P(+I)>.7071067690849304){r=1.0/+Q(+(E*E+I*I));$=0.0;aa=r*(-0.0-I);ab=E*r;ac=0.0;break}else{r=1.0/+Q(+(A*A+E*E));$=r*(-0.0-E);aa=A*r;ab=0.0;ac=0.0;break}}else{r=+Q(+((J+1.0)*2.0));i=1.0/r;$=(w*E-s*I)*i;aa=(o*I-w*A)*i;ab=(s*A-o*E)*i;ac=r*.5}}while(0);J=V*ac+U*aa-n*ab;r=n*ac+V*ab-U*$;i=U*ac+n*$-V*aa;Z=-0.0-$;$=V*Z-n*aa-U*ab;U=-0.0-aa;aa=-0.0-ab;ab=r*aa+(ac*J+$*Z)-i*U;n=i*Z+(ac*r+$*U)-J*aa;V=J*U+(ac*i+$*aa)-r*Z;Z=Y*V+(W*ab+X*n);X=M*V+(K*ab+L*n);n=+P(+Z);if(X<0.0){ad=2.356194496154785-(n+X)/(n-X)*.7853981852531433}else{ad=.7853981852531433-(X-n)/(n+X)*.7853981852531433}if(Z<0.0){ae=-0.0-ad}else{ae=ad}g[b+504>>2]=ae;ad=S>.05000000074505806?1.0:0.0;if(ae<=ad*(-0.0-S)){g[b+500>>2]=-0.0-(ae+S);a[e]=1;Z=(o+A)*.5;X=(s+E)*.5;n=(w+I)*.5;g[b+480>>2]=0.0;L=1.0/+Q(+(Z*Z+X*X+n*n));g[b+468>>2]=Z*L*-1.0;g[b+472>>2]=X*L*-1.0;g[b+476>>2]=n*L*-1.0;return}if(ae<=S*ad){return}g[b+500>>2]=ae-S;a[e]=1;S=(o+A)*.5;A=(s+E)*.5;E=(w+I)*.5;g[b+480>>2]=0.0;I=1.0/+Q(+(S*S+A*A+E*E));g[b+468>>2]=S*I;g[b+472>>2]=A*I;g[b+476>>2]=E*I;return}function xL(b,c,d,e,f,h){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;i=+apy(b,d,e);g[b+720>>2]=i;j=b+700|0;g[j>>2]=0.0;k=b+704|0;g[k>>2]=0.0;l=b+708|0;a[l]=0;m=b+684|0;do{if(+g[m>>2]>=0.0){n=+ck(+(i- +g[b+680>>2]),6.2831854820251465);do{if(n<-3.1415927410125732){o=n+6.2831854820251465}else{if(n<=3.1415927410125732){o=n;break}o=n-6.2831854820251465}}while(0);n=+g[m>>2];if(o<-0.0-n){a[l]=1;g[j>>2]=-0.0-(o+n);g[k>>2]=1.0;break}if(o<=n){break}a[l]=1;g[j>>2]=n-o;g[k>>2]=-1.0}}while(0);apx(b,c,d,e,f,h);return}function xM(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function xN(a){a=a|0;return+(+apy(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0))}function xO(a,b,c){a=a|0;b=b|0;c=c|0;return+(+apy(a,b,c))}function xP(b,c,d){b=b|0;c=c|0;d=d|0;var e=0.0,f=0,h=0,i=0.0,j=0.0;e=+apy(b,c,d);g[b+720>>2]=e;d=b+700|0;g[d>>2]=0.0;c=b+704|0;g[c>>2]=0.0;f=b+708|0;a[f]=0;h=b+684|0;if(+g[h>>2]<0.0){return}i=+ck(+(e- +g[b+680>>2]),6.2831854820251465);do{if(i<-3.1415927410125732){j=i+6.2831854820251465}else{if(i<=3.1415927410125732){j=i;break}j=i-6.2831854820251465}}while(0);i=+g[h>>2];if(j<-0.0-i){a[f]=1;g[d>>2]=-0.0-(j+i);g[c>>2]=1.0;return}if(j<=i){return}a[f]=1;g[d>>2]=i-j;g[c>>2]=-1.0;return}function xQ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function xR(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;apx(a,b,c,d,e,f);return}function xS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function xT(a){a=a|0;var b=0.0,c=0.0;b=+ck(+(+g[a+680>>2]+ +g[a+684>>2]),6.2831854820251465);if(b<-3.1415927410125732){c=b+6.2831854820251465;return+c}if(b<=3.1415927410125732){c=b;return+c}c=b-6.2831854820251465;return+c}function xU(a,b){a=a|0;b=+b;return}function xV(b){b=b|0;return(a[b+20|0]&1)!=0|0}function xW(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function xX(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function xY(a){a=a|0;return c[a+4>>2]|0}function xZ(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function x_(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function x$(a){a=a|0;return+(+g[a+676>>2])}function x0(b,c){b=b|0;c=c|0;a[b+731|0]=c&1;return}function x1(b){b=b|0;return(a[b+729|0]&1)!=0|0}function x2(b){b=b|0;return(a[b+21|0]&1)!=0|0}function x3(a){a=a|0;return c[a+4>>2]|0}function x4(a){a=a|0;return c[a+12>>2]|0}function x5(b,c){b=b|0;c=c|0;a[b+729|0]=c&1;return}function x6(a){a=a|0;return a+608|0}function x7(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+730|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function x8(a){a=a|0;return c[a+12>>2]|0}function x9(a){a=a|0;return+(+g[a+36>>2])}function ya(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function yb(b){b=b|0;return(a[b+731|0]&1)!=0|0}function yc(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function yd(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function ye(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function yf(a){a=a|0;return+(+g[a+32>>2])}function yg(b,c){b=b|0;c=c|0;a[b+728|0]=c&1;return}function yh(b){b=b|0;return a[b+708|0]&1|0}function yi(a){a=a|0;return c[a+12>>2]|0}function yj(a){a=a|0;return+(+g[a+16>>2])}function yk(a){a=a|0;return c[a+8>>2]|0}function yl(b){b=b|0;return(a[b+728|0]&1)!=0|0}function ym(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function yn(a){a=a|0;var b=0.0,c=0.0;b=+ck(+(+g[a+680>>2]- +g[a+684>>2]),6.2831854820251465);if(b<-3.1415927410125732){c=b+6.2831854820251465;return+c}if(b<=3.1415927410125732){c=b;return+c}c=b-6.2831854820251465;return+c}function yo(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function yp(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function yq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aps(a,b,c,d,e,f);return}function yr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function ys(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function yt(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function yu(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function yv(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0;d=(c-b)*.5;g[a+684>>2]=d;c=+ck(+(d+b),6.2831854820251465);do{if(c<-3.1415927410125732){e=c+6.2831854820251465}else{if(c<=3.1415927410125732){e=c;break}e=c-6.2831854820251465}}while(0);g[a+680>>2]=e;g[a+688>>2]=.8999999761581421;g[a+692>>2]=.30000001192092896;g[a+696>>2]=1.0;return}function yw(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0,f=0.0;e=(c-b)*.5;g[a+684>>2]=e;c=+ck(+(e+b),6.2831854820251465);do{if(c<-3.1415927410125732){f=c+6.2831854820251465}else{if(c<=3.1415927410125732){f=c;break}f=c-6.2831854820251465}}while(0);g[a+680>>2]=f;g[a+688>>2]=d;g[a+692>>2]=.30000001192092896;g[a+696>>2]=1.0;return}function yx(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0.0,h=0.0;f=(c-b)*.5;g[a+684>>2]=f;c=+ck(+(f+b),6.2831854820251465);do{if(c<-3.1415927410125732){h=c+6.2831854820251465}else{if(c<=3.1415927410125732){h=c;break}h=c-6.2831854820251465}}while(0);g[a+680>>2]=h;g[a+688>>2]=d;g[a+692>>2]=e;g[a+696>>2]=1.0;return}function yy(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var h=0.0,i=0.0;h=(c-b)*.5;g[a+684>>2]=h;c=+ck(+(h+b),6.2831854820251465);do{if(c<-3.1415927410125732){i=c+6.2831854820251465}else{if(c<=3.1415927410125732){i=c;break}i=c-6.2831854820251465}}while(0);g[a+680>>2]=i;g[a+688>>2]=d;g[a+692>>2]=e;g[a+696>>2]=f;return}function yz(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function yA(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function yB(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,R=0.0,S=0.0,T=0.0,U=0;e=i;i=i+40|0;f=e|0;h=e+8|0;j=e+24|0;ec(a+608|0,h);k=-0.0- +g[h>>2];l=-0.0- +g[h+4>>2];m=-0.0- +g[h+8>>2];n=+g[h+12>>2];o=+g[b>>2];q=+g[b+12>>2];r=+g[b+8>>2];s=+g[b+4>>2];t=n*o+q*k+r*l-s*m;u=o*m+(q*l+n*s)-r*k;v=q*m+n*r+s*k-o*l;w=n*q-o*k-s*l-r*m;ec(a+544|0,j);m=+g[j>>2];r=+g[j+12>>2];l=+g[j+8>>2];s=+g[j+4>>2];k=m*w+t*r+u*l-v*s;o=m*v+(r*u+w*s)-t*l;q=r*v+w*l+t*s-m*u;n=w*r-m*t-u*s-v*l;l=1.0/+Q(+(n*n+(q*q+(k*k+o*o))));v=k*l;k=l*o;o=l*q;q=l*n;n=q*0.0;l=o*0.0;s=n+k-l;u=l+n-v;n=k*0.0;l=q+v*0.0-n;t=-0.0-v;m=v*-0.0-n-o;n=-0.0-k;r=-0.0-o;w=u*r+(q*s+m*t)-l*n;x=l*t+(q*u+m*n)-s*r;y=s*n+(q*l+m*r)-u*t;t=1.0/+Q(+(y*y+(w*w+x*x)));u=t*w;w=t*x;x=t*y;y=u*0.0;t=w*0.0;r=x+(t+y);do{if(r<-.9999998807907104){if(+P(1.0)>.7071067690849304){z=0.0;A=-1.0;B=0.0;C=0.0;break}z=p;A=p;B=0.0;C=0.0}else{m=x*0.0;l=+Q(+((r+1.0)*2.0));n=1.0/l;z=(m-w)*n;A=(u-m)*n;B=(t-y)*n;C=l*.5}}while(0);y=-0.0-z;z=-0.0-A;A=-0.0-B;B=o*z+(v*C+q*y)-k*A;t=v*A+(k*C+q*z)-o*y;u=o*C+q*A+k*y-v*z;w=q*C-v*y-k*z-o*A;A=1.0/+Q(+(w*w+(u*u+(t*t+B*B))));B=A*u;u=A*w;w=u<-1.0?-1.0:u;A=+V(+(w>1.0?1.0:w))*2.0;if(A>3.1415927410125732){w=u>1.0?-1.0:-0.0-u;D=+V(+(w>1.0?1.0:w))*2.0;E=-0.0-B}else{D=A;E=B}if(E>=0.0){F=D;G=f;g[f>>2]=F;H=a+680|0;aq4(H,f);I=a+24|0;J=c[I>>2]|0;K=J+4|0;L=a+28|0;M=c[L>>2]|0;N=M+4|0;O=+apy(a,K,N);R=+g[f>>2];S=R-O;T=S/d;U=a+672|0;g[U>>2]=T;i=e;return}F=-0.0-D;G=f;g[f>>2]=F;H=a+680|0;aq4(H,f);I=a+24|0;J=c[I>>2]|0;K=J+4|0;L=a+28|0;M=c[L>>2]|0;N=M+4|0;O=+apy(a,K,N);R=+g[f>>2];S=R-O;T=S/d;U=a+672|0;g[U>>2]=T;i=e;return}function yC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=aDx(756)|0;if((e|0)!=0){f=2798;break}g=(C=c[10744]|0,c[10744]=C+0,C);if((g|0)==0){f=2795;break}dC[g&63]()}if((f|0)==2798){g=e;apo(g,a,b,d,0);return g|0}else if((f|0)==2795){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}return 0}function yD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;while(1){f=aDx(756)|0;if((f|0)!=0){g=2812;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){g=2809;break}dC[h&63]()}if((g|0)==2812){h=f;apo(h,a,b,d,e);return h|0}else if((g|0)==2809){g=cd(4)|0;c[g>>2]=19096;bF(g|0,34368,676);return 0}return 0}function yE(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;while(1){h=aDx(756)|0;if((h|0)!=0){i=2826;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==2826){i=h;apn(i,a,b,d,e,f,g,0);return i|0}i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}function yF(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;while(1){i=aDx(756)|0;if((i|0)!=0){j=2838;break}k=(C=c[10744]|0,c[10744]=C+0,C);if((k|0)==0){break}dC[k&63]()}if((j|0)==2838){j=i;apn(j,a,b,d,e,f,g,h);return j|0}j=cd(4)|0;c[j>>2]=19096;bF(j|0,34368,676);return 0}function yG(a){a=a|0;return+(+g[a+32>>2])}function yH(a){a=a|0;return a+544|0}function yI(a,b){a=a|0;b=+b;g[a>>2]=b;return}function yJ(a,b){a=a|0;b=+b;g[a+48>>2]=b;return}function yK(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function yL(b){b=b|0;var d=0;do{if((c[b+56>>2]|0)==0){if((a[b+44|0]&1)==0){d=0}else{break}return d|0}}while(0);d=1;return d|0}function yM(a,b){a=a|0;b=+b;g[a+52>>2]=b;return}function yN(b,d,e,f,h,i){b=b|0;d=+d;e=e|0;f=+f;h=h|0;i=i|0;var j=0.0,k=0.0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0;do{if((c[b+56>>2]|0)==0){if((a[b+44|0]&1)==0){j=0.0;return+j}else{k=+g[b+8>>2];l=b+12|0;break}}else{k=+g[b+48>>2]*(-0.0- +g[b+32>>2])/d;l=b+16|0}}while(0);m=+g[l>>2]*d;l=h+520|0;n=h+524|0;o=h+528|0;p=i+520|0;q=i+524|0;r=i+528|0;s=e|0;t=e+4|0;u=e+8|0;d=+g[b+24>>2]*(k- +g[b+20>>2]*((+g[h+320>>2]+ +g[l>>2]-(+g[i+320>>2]+ +g[p>>2]))*+g[s>>2]+(+g[h+324>>2]+ +g[n>>2]-(+g[i+324>>2]+ +g[q>>2]))*+g[t>>2]+(+g[h+328>>2]+ +g[o>>2]-(+g[i+328>>2]+ +g[r>>2]))*+g[u>>2]));if(d<1.1920928955078125e-7&d>-1.1920928955078125e-7){j=0.0;return+j}k=d*(+g[b+40>>2]+1.0)*f;if(k>0.0){v=k>m?m:k}else{f=-0.0-m;v=k>2];f=v+k;if(f>999999984306749400.0){w=0.0}else{w=f<-999999984306749400.0?0.0:f}g[e>>2]=w;f=w-k;k=+g[s>>2];w=+g[t>>2];v=+g[u>>2];if(+g[h+336>>2]!=0.0){m=w*+g[h+292>>2]+k*+g[h+288>>2]+v*+g[h+296>>2];d=w*+g[h+276>>2]+k*+g[h+272>>2]+v*+g[h+280>>2];x=w*+g[h+260>>2]+k*+g[h+256>>2]+v*+g[h+264>>2];y=f*0.0;e=h+504|0;g[e>>2]=y+ +g[e>>2];e=h+508|0;g[e>>2]=y+ +g[e>>2];e=h+512|0;g[e>>2]=y+ +g[e>>2];y=d*f*+g[h+540>>2];d=m*f*+g[h+544>>2];g[l>>2]=x*f*+g[h+536>>2]+ +g[l>>2];g[n>>2]=y+ +g[n>>2];g[o>>2]=d+ +g[o>>2];z=+g[s>>2];A=+g[t>>2];B=+g[u>>2]}else{z=k;A=w;B=v}v=-0.0-f;if(+g[i+336>>2]==0.0){j=f;return+j}w=A*+g[i+292>>2]+z*+g[i+288>>2]+B*+g[i+296>>2];k=A*+g[i+276>>2]+z*+g[i+272>>2]+B*+g[i+280>>2];d=A*+g[i+260>>2]+z*+g[i+256>>2]+B*+g[i+264>>2];B=f*-0.0;u=i+504|0;g[u>>2]=B+ +g[u>>2];u=i+508|0;g[u>>2]=B+ +g[u>>2];u=i+512|0;g[u>>2]=B+ +g[u>>2];B=k*+g[i+540>>2]*v;k=w*+g[i+544>>2]*v;g[p>>2]=d*+g[i+536>>2]*v+ +g[p>>2];g[q>>2]=B+ +g[q>>2];g[r>>2]=k+ +g[r>>2];j=f;return+j}function yO(a){a=a|0;return+(+g[a+32>>2])}function yP(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function yQ(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function yR(a){a=a|0;return+(+g[a+52>>2])}function yS(a){a=a|0;return+(+g[a+36>>2])}function yT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+544|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+560|0;e=b+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+576|0;f=b+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+592|0;e=b+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+608|0;f=d;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+624|0;e=d+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+640|0;f=d+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+656|0;e=d+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function yU(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0;d=i;i=i+272|0;e=d|0;f=d+32|0;h=d+80|0;j=d+96|0;k=d+112|0;l=d+176|0;m=d+224|0;n=k;o=l;anN(b,h,j);p=+g[a+592>>2];q=+g[a+596>>2];r=+g[a+600>>2];s=b|0;t=b+4|0;u=b+8|0;v=+g[h>>2];g[a+544>>2]=v;g[a+548>>2]=+g[j>>2];g[a+552>>2]=+g[s>>2];g[a+556>>2]=0.0;w=+g[h+4>>2];g[a+560>>2]=w;g[a+564>>2]=+g[j+4>>2];g[a+568>>2]=+g[t>>2];g[a+572>>2]=0.0;x=+g[h+8>>2];g[a+576>>2]=x;g[a+580>>2]=+g[j+8>>2];g[a+584>>2]=+g[u>>2];g[a+588>>2]=0.0;j=a+24|0;h=c[j>>2]|0;y=+g[s>>2];z=+g[t>>2];A=+g[u>>2];B=+g[h+4>>2]*y+ +g[h+8>>2]*z+ +g[h+12>>2]*A;C=+g[h+20>>2]*y+ +g[h+24>>2]*z+ +g[h+28>>2]*A;D=+g[h+36>>2]*y+ +g[h+40>>2]*z+ +g[h+44>>2]*A;E=y*B+z*C+A*D;if(E<-.9999998807907104){anN(b,e,d+16|0);F=0.0;G=+g[e+8>>2];H=+g[e+4>>2];I=+g[e>>2]}else{J=+Q(+((E+1.0)*2.0));E=1.0/J;F=J*.5;G=(y*C-z*B)*E;H=(A*B-y*D)*E;I=(z*D-A*C)*E}E=F*v+H*x-G*w;A=F*w+G*v-I*x;z=F*x+I*w-H*v;y=-0.0-I;I=v*y-H*w-G*x;x=-0.0-H;H=-0.0-G;G=I*y+E*F+A*H-z*x;w=I*x+A*F+z*y-E*H;v=I*H+z*F+E*x-A*y;y=C*v-D*w;A=D*G-B*v;x=B*w-C*G;e=a+28|0;b=c[e>>2]|0;h=f;d$(f,b+4|0,b+20|0,b+36|0,b+8|0,b+24|0,b+40|0,b+12|0,b+28|0,b+44|0);E=-0.0- +g[b+52>>2];F=-0.0- +g[b+56>>2];z=-0.0- +g[b+60>>2];H=+g[f>>2]*E+ +g[f+4>>2]*F+ +g[f+8>>2]*z;I=+g[f+16>>2]*E+ +g[f+20>>2]*F+ +g[f+24>>2]*z;J=+g[f+32>>2]*E+ +g[f+36>>2]*F+ +g[f+40>>2]*z;b=k+48|0;u=k|0;do{u=u+16|0;}while((u|0)!=(b|0));c[n>>2]=c[h>>2];c[n+4>>2]=c[h+4>>2];c[n+8>>2]=c[h+8>>2];c[n+12>>2]=c[h+12>>2];h=k+16|0;n=f+16|0;c[h>>2]=c[n>>2];c[h+4>>2]=c[n+4>>2];c[h+8>>2]=c[n+8>>2];c[h+12>>2]=c[n+12>>2];n=k+32|0;h=f+32|0;c[n>>2]=c[h>>2];c[n+4>>2]=c[h+4>>2];c[n+8>>2]=c[h+8>>2];c[n+12>>2]=c[h+12>>2];g[k+48>>2]=H;g[k+52>>2]=I;g[k+56>>2]=J;g[k+60>>2]=0.0;h=c[j>>2]|0;z=+g[h+4>>2]*p+ +g[h+8>>2]*q+ +g[h+12>>2]*r+ +g[h+52>>2];F=+g[h+20>>2]*p+ +g[h+24>>2]*q+ +g[h+28>>2]*r+ +g[h+56>>2];E=+g[h+36>>2]*p+ +g[h+40>>2]*q+ +g[h+44>>2]*r+ +g[h+60>>2];r=+g[k+16>>2]*z+ +g[k+20>>2]*F+ +g[k+24>>2]*E+I;I=+g[k+32>>2]*z+ +g[k+36>>2]*F+ +g[k+40>>2]*E+J;g[a+656>>2]=+g[k>>2]*z+ +g[k+4>>2]*F+ +g[k+8>>2]*E+H;g[a+660>>2]=r;g[a+664>>2]=I;g[a+668>>2]=0.0;k=a+608|0;g[k>>2]=G;g[a+612>>2]=y;g[a+616>>2]=B;g[a+620>>2]=0.0;g[a+624>>2]=w;g[a+628>>2]=A;g[a+632>>2]=C;g[a+636>>2]=0.0;g[a+640>>2]=v;g[a+644>>2]=x;g[a+648>>2]=D;g[a+652>>2]=0.0;eq(m,(c[e>>2]|0)+4|0);anx(l,m,k);m=k;c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];o=a+624|0;m=l+16|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];m=a+640|0;a=l+32|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];i=d;return}function yV(){var b=0,d=0,e=0;while(1){b=aDx(64)|0;if((b|0)!=0){d=2893;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==2893){g[b+60>>2]=0.0;g[b+8>>2]=0.0;g[b+12>>2]=.10000000149011612;g[b+16>>2]=300.0;g[b>>2]=1.0;g[b+4>>2]=-1.0;g[b+28>>2]=0.0;g[b+32>>2]=.20000000298023224;g[b+36>>2]=0.0;g[b+40>>2]=0.0;g[b+20>>2]=1.0;g[b+24>>2]=.5;c[b+56>>2]=0;g[b+48>>2]=0.0;a[b+44|0]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function yW(b){b=b|0;return(a[b+44|0]&1)!=0|0}function yX(b,c){b=b|0;c=c|0;a[b+44|0]=c&1;return}function yY(a,b){a=a|0;b=+b;var d=0.0,e=0.0,f=0,h=0;d=+g[a>>2];e=+g[a+4>>2];if(d>e){c[a+56>>2]=0;f=0;return f|0}if(d>b){c[a+56>>2]=1;g[a+48>>2]=b-d;f=1;return f|0}h=a+56|0;if(e>2]=2;g[a+48>>2]=b-e;f=2;return f|0}else{c[h>>2]=0;f=0;return f|0}return 0}function yZ(a){a=a|0;return+(+g[a+48>>2])}function y_(a,b){a=a|0;b=+b;g[a+24>>2]=b;return}function y$(a){a=a|0;return+(+g[a>>2])}function y0(a){a=a|0;return c[a+56>>2]|0}function y1(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function y2(a){a=a|0;return+(+g[a+40>>2])}function y3(a){a=a|0;return+(+g[a+8>>2])}function y4(a){a=a|0;return+(+g[a+60>>2])}function y5(a,b){a=a|0;b=+b;g[a+20>>2]=b;return}function y6(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function y7(a,b){a=a|0;b=+b;g[a+28>>2]=b;return}function y8(a){a=a|0;return+(+g[a+16>>2])}function y9(a){a=a|0;return+(+g[a+20>>2])}function za(a){a=a|0;return+(+g[a+28>>2])}function zb(a){a=a|0;return+(+g[a+4>>2])}function zc(a,b){a=a|0;b=+b;g[a+60>>2]=b;return}function zd(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function ze(a){a=a|0;return(+g[a>>2]>+g[a+4>>2]?0:1)|0}function zf(a){a=a|0;return+(+g[a+12>>2])}function zg(a,b){a=a|0;b=b|0;c[a+56>>2]=b;return}function zh(a,b){a=a|0;b=+b;g[a+40>>2]=b;return}function zi(a){a=a|0;return+(+g[a+24>>2])}function zj(a){a=a|0;return(c[a+4>>2]|0)==31|0}function zk(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function zl(a){a=a|0;return+(+g[a+44>>2])}function zm(a){a=a|0;return(c[a+4>>2]|0)<7|0}function zn(a){a=a|0;return+(+g[a+56>>2])}function zo(a){a=a|0;return+(+g[a+60>>2])}function zp(a){a=a|0;return a+12|0}function zq(a,b){a=a|0;b=b|0;if((b|0)==0){c[a+64>>2]=1;c[a+68>>2]=0;c[a+72>>2]=2;return}else if((b|0)==2){c[a+64>>2]=0;c[a+68>>2]=2;c[a+72>>2]=1;return}else if((b|0)==1){c[a+64>>2]=0;c[a+68>>2]=1;c[a+72>>2]=2;return}else{return}}function zr(a){a=a|0;return(c[a+4>>2]|0)<20|0}function zs(a){a=a|0;return(c[a+4>>2]|0)==28|0}function zt(a){a=a|0;return c[a+8>>2]|0}function zu(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function zv(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function zw(a){a=a|0;return(c[a+4>>2]|0)==32|0}function zx(a){a=a|0;return a+28|0}function zy(a){a=a|0;return c[a+68>>2]|0}function zz(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function zA(a){a=a|0;return c[a+4>>2]|0}function zB(a){a=a|0;return(c[a+4>>2]|0)==31|0}function zC(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function zD(a){a=a|0;return+(+g[a+44>>2])}function zE(a){a=a|0;return(c[a+4>>2]|0)<7|0}function zF(a){a=a|0;return+(+g[a+56>>2])}function zG(a){a=a|0;if((a|0)==0){return}aDB(a);return}function zH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function zI(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function zJ(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43760]|0)==0){if((b1(43760)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9502]=c[d>>2];c[9503]=c[d+4>>2];c[9504]=c[d+8>>2];c[9505]=c[d+12>>2];i=e;return 38008}function zK(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function zL(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function zM(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function zN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function zO(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function zP(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(95)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;g[e+56>>2]=a;g[e+60>>2]=b;c[e+4>>2]=11;g[e+52>>2]=a/+Q(+(a*a+b*b));c[e>>2]=25768;c[e+64>>2]=0;c[e+68>>2]=2;c[e+72>>2]=1;return e|0}function zQ(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function zR(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43296]|0)==0){if((b1(43296)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9498]=c[d>>2];c[9499]=c[d+4>>2];c[9500]=c[d+8>>2];c[9501]=c[d+12>>2];i=e;return 37992}function zS(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43456]|0)==0){if((b1(43456)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9494]=c[d>>2];c[9495]=c[d+4>>2];c[9496]=c[d+8>>2];c[9497]=c[d+12>>2];i=e;return 37976}function zT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function zU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function zV(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43600]|0)==0){if((b1(43600)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9490]=c[d>>2];c[9491]=c[d+4>>2];c[9492]=c[d+8>>2];c[9493]=c[d+12>>2];i=e;return 37960}function zW(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function zX(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function zY(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function zZ(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function z_(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function z$(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 10:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function z0(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function z1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function z2(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function z3(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function z4(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function z5(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function z6(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function z7(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function z8(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43768]|0)==0){if((b1(43768)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9486]=c[d>>2];c[9487]=c[d+4>>2];c[9488]=c[d+8>>2];c[9489]=c[d+12>>2];i=e;return 37944}function z9(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function Aa(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Ab(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function Ac(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Ad(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Ae(b){b=b|0;var d=0,e=0,f=0;while(1){d=aDx(64)|0;if((d|0)!=0){e=3041;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==3041){g[d+8>>2]=+g[b+8>>2];g[d+12>>2]=+g[b+12>>2];g[d+24>>2]=+g[b+24>>2];g[d>>2]=+g[b>>2];g[d+4>>2]=+g[b+4>>2];g[d+28>>2]=+g[b+28>>2];g[d+32>>2]=+g[b+32>>2];g[d+36>>2]=+g[b+36>>2];g[d+40>>2]=+g[b+40>>2];c[d+56>>2]=c[b+56>>2];g[d+48>>2]=+g[b+48>>2];a[d+44|0]=a[b+44|0]&1;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function Af(a){a=a|0;return+(+g[a+60>>2])}function Ag(a){a=a|0;return a+12|0}function Ah(a,b){a=a|0;b=b|0;if((b|0)==1){c[a+64>>2]=0;c[a+68>>2]=1;c[a+72>>2]=2;return}else if((b|0)==2){c[a+64>>2]=0;c[a+68>>2]=2;c[a+72>>2]=1;return}else if((b|0)==0){c[a+64>>2]=1;c[a+68>>2]=0;c[a+72>>2]=2;return}else{return}}function Ai(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Aj(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Ak(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Al(a){a=a|0;return c[a+8>>2]|0}function Am(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function An(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Ao(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Ap(a){a=a|0;return a+28|0}function Aq(a){a=a|0;return c[a+68>>2]|0}function Ar(a){a=a|0;return c[a+4>>2]|0}function As(a){a=a|0;return+(+g[a+168>>2])}function At(b){b=b|0;return(a[b+165|0]&1)!=0|0}function Au(a){a=a|0;return a+4|0}function Av(a,b){a=a|0;b=+b;g[a+168>>2]=b;return}function Aw(b){b=b|0;return(a[b+164|0]&1)!=0|0}function Ax(b){b=b|0;return(c[((a[b+164|0]&1)==0?b+148|0:b+128|0)>>2]|0)/3|0|0}function Ay(a){a=a|0;return a+20|0}function Az(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(95)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;g[e+56>>2]=a;g[e+60>>2]=b;c[e+4>>2]=11;g[e+52>>2]=a/+Q(+(a*a+b*b));c[e>>2]=25872;c[e+64>>2]=1;c[e+68>>2]=0;c[e+72>>2]=2;return e|0}function AA(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43304]|0)==0){if((b1(43304)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9482]=c[d>>2];c[9483]=c[d+4>>2];c[9484]=c[d+8>>2];c[9485]=c[d+12>>2];i=e;return 37928}function AB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43464]|0)==0){if((b1(43464)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9478]=c[d>>2];c[9479]=c[d+4>>2];c[9480]=c[d+8>>2];c[9481]=c[d+12>>2];i=e;return 37912}function AC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function AD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function AE(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43608]|0)==0){if((b1(43608)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9474]=c[d>>2];c[9475]=c[d+4>>2];c[9476]=c[d+8>>2];c[9477]=c[d+12>>2];i=e;return 37896}function AF(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function AG(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function AH(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function AI(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function AJ(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function AK(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 10:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function AL(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function AM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function AN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function AO(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function AP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function AQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function AR(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function AS(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function AT(a,b){a=a|0;b=b|0;aBk(a,b);return}function AU(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function AV(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+40|0;f=e|0;c[f>>2]=18624;g[f+4>>2]=999999984306749400.0;g[f+8>>2]=999999984306749400.0;g[f+12>>2]=999999984306749400.0;g[f+16>>2]=0.0;g[f+20>>2]=-999999984306749400.0;g[f+24>>2]=-999999984306749400.0;g[f+28>>2]=-999999984306749400.0;g[f+32>>2]=0.0;g[b>>2]=-999999984306749400.0;g[b+4>>2]=-999999984306749400.0;g[b+8>>2]=-999999984306749400.0;g[b+12>>2]=0.0;g[d>>2]=999999984306749400.0;g[d+4>>2]=999999984306749400.0;g[d+8>>2]=999999984306749400.0;g[d+12>>2]=0.0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,f|0,b,d);a=b;b=f+4|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];b=d;d=f+20|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];i=e;return}function AW(a,b,c){a=a|0;b=b|0;c=c|0;return aBn(a,b,c)|0}function AX(a,b){a=a|0;b=b|0;AY(a|0,b,2);return}function AY(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=b+24|0;g=c[f>>2]|0;h=b+28|0;do{if((g|0)==(c[h>>2]|0)){i=(g|0)==0?1:g<<1;if((g|0)>=(i|0)){j=g;break}do{if((i|0)==0){k=0}else{c[9806]=(c[9806]|0)+1;l=aDx((i<<5|4)+15|0)|0;if((l|0)==0){k=0;break}m=-(l+4|0)&15;c[l+m>>2]=l;k=l+(m+4)|0}}while(0);m=c[f>>2]|0;l=b+32|0;n=0;while(1){if((n|0)>=(m|0)){break}o=k+(n<<5)|0;p=(c[l>>2]|0)+(n<<5)|0;aDC(o|0,p|0,32)|0;n=n+1|0}n=c[f>>2]|0;m=0;while(1){if((m|0)>=(n|0)){break}m=m+1|0}m=c[l>>2]|0;p=b+36|0;if((m|0)==0){q=n;r=p}else{if((a[p]&1)==0){s=n}else{c[9804]=(c[9804]|0)+1;aDB(c[m-32+28>>2]|0);s=c[f>>2]|0}c[l>>2]=0;q=s;r=p}a[r]=1;c[l>>2]=k;c[h>>2]=i;j=q}else{j=g}}while(0);g=b+32|0;b=(c[g>>2]|0)+(j<<5)|0;j=d;aDC(b|0,j|0,32)|0;j=c[f>>2]|0;c[f>>2]=j+1;c[(c[g>>2]|0)+(j<<5)+24>>2]=e;return}function AZ(a,b,c){a=a|0;b=b|0;c=c|0;AY(a|0,b,c);return}function A_(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a|0,b,d);return}function A$(a){a=a|0;return cA[c[(c[a>>2]|0)+52>>2]&4095](a|0)|0}function A0(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(191)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}d=b;aBj(d,1,1);return d|0}function A1(a){a=a|0;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(191)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d;aBj(e,a,1);return e|0}function A2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(191)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;aBj(f,a,b);return f|0}function A3(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a|0,b,d);return}function A4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function A5(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function A6(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function A7(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+16>>2]&63](a|0,b,d,e,f,g,h,i,j,0);return}function A8(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+16>>2]&63](a|0,b,d,e,f,g,h,i,j,k);return}function A9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function Ba(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+56>>2]&511](a|0,b,d)|0}function Bb(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a|0,b);return}function Bc(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Bd(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Be(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+12>>2]&63](a|0,b,d,e,f,g,h,i,j,0);return}function Bf(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+12>>2]&63](a|0,b,d,e,f,g,h,i,j,k);return}function Bg(a){a=a|0;return cA[c[(c[a>>2]|0)+40>>2]&4095](a|0)|0}function Bh(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Bi(a){a=a|0;return c[a>>2]|0}function Bj(a){a=a|0;return c[a+4>>2]|0}function Bk(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Bl(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function Bm(a){a=a|0;return c[a+12>>2]|0}function Bn(a){a=a|0;return c[a+12>>2]|0}function Bo(a){a=a|0;return c[a+8>>2]|0}function Bp(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Bq(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Br(a){a=a|0;return a+4|0}function Bs(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function Bt(a){a=a|0;return+(+g[a+32>>2])}function Bu(a){a=a|0;return+(+g[a+4>>2])}function Bv(a,c){a=a|0;c=c|0;b[a+8>>1]=c;return}function Bw(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function Bx(a,c){a=a|0;c=c|0;b[a+10>>1]=c;return}function By(a){a=a|0;return+g[a+4>>2]<1.0|0}function Bz(a){a=a|0;return b[a+10>>1]|0}function BA(a){a=a|0;return b[a+8>>1]|0}function BB(a){a=a|0;return a+132|0}function BC(a){a=a|0;return c[a+196>>2]|0}function BD(a){a=a|0;return a+4|0}function BE(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function BF(a){a=a|0;return a+68|0}function BG(a){a=a|0;return a+100|0}function BH(a){a=a|0;return c[a+24>>2]|0}function BI(a){a=a|0;return a|0}function BJ(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function BK(b){b=b|0;return(a[b+242|0]&1)!=0|0}function BL(b,c){b=b|0;c=c|0;a[b+242|0]=c&1;return}function BM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=c[a+32>>2]|0;c[f>>2]=(c[f>>2]|0)+1;aBk(a,aBn(a,b,0)|0);aBk(a,aBn(a,d,0)|0);aBk(a,aBn(a,e,0)|0);return}function BN(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+32>>2]|0;c[g>>2]=(c[g>>2]|0)+1;aBk(a,aBn(a,b,f)|0);aBk(a,aBn(a,d,f)|0);aBk(a,aBn(a,e,f)|0);return}function BO(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function BP(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-16+12>>2]|0);return}function BQ(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(35)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}aDD(b|0,0,16);return b|0}function BR(a){a=a|0;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(35)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return d|0}function BS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;d=aDx(35)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e|0;if((c[a+12>>2]|0)<(c[b+12>>2]|0)){c[f>>2]=a;c[e+4>>2]=b;g=e+8|0;c[g>>2]=0;h=e+12|0;c[h>>2]=0;return e|0}else{c[f>>2]=b;c[e+4>>2]=a;g=e+8|0;c[g>>2]=0;h=e+12|0;c[h>>2]=0;return e|0}return 0}function BT(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function BU(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function BV(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function BW(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function BX(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function BY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+8>>2]&2047](a,b);return}function BZ(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+132|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+148|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+164|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+180|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function B_(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function B$(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function B0(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;c[a>>2]=22504;e=a+4|0;f=a+52|0;g=e|0;do{g=g+16|0;}while((g|0)!=(f|0));f=e;e=b;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];f=a+20|0;g=b+16|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];f=a+36|0;h=b+32|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];f=a+52|0;i=b+48|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];f=a+68|0;b=a+116|0;j=f|0;do{j=j+16|0;}while((j|0)!=(b|0));b=f;f=d;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=a+84|0;b=d+16|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];b=a+100|0;f=d+32|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=a+116|0;b=d+48|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];b=a+132|0;f=a+180|0;d=b|0;do{d=d+16|0;}while((d|0)!=(f|0));f=b;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+148|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=a+164|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=a+180|0;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];c[a+196>>2]=0;return}function B1(){var b=0;if((a[43040]|0)!=0){return}if((b1(43040)|0)==0){return}es();b=42752;do{b=b+16|0;}while((b|0)!=42800);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16);return}function B2(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function B3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+68>>2]&2047](a|0,b);return}function B4(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a|0,b);return}function B5(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function B6(a){a=a|0;ct[c[(c[a>>2]|0)+164>>2]&2047](a|0);return}function B7(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a|0,b);return}function B8(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+80>>2]&2047](a|0,b);return}function B9(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+84>>2]&1023](a|0,b,d,e);return}function Ca(a){a=a|0;ct[c[(c[a>>2]|0)+116>>2]&2047](a|0);return}function Cb(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+124>>2]&2047](a|0,b);return}function Cc(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+156>>2]&1023](a,b);return}function Cd(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+168>>2]&2047](a|0,b);return}function Ce(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+176>>2]&1023](a,b);return}function Cf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a|0,b,d,e);return}function Cg(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function Ch(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function Ci(a){a=a|0;return cA[c[(c[a>>2]|0)+100>>2]&4095](a|0)|0}function Cj(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,2,-3);return}function Ck(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,-3);return}function Cl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,e);return}function Cm(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+88>>2]&2047](a|0,b);return}function Cn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function Co(){var a=0,b=0,d=0;while(1){a=aDx(200)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=3290;break}dC[b&63]()}if((d|0)==3290){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;B1();B1();B0(d,42752,42752);return d|0}function Cp(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(200)|0;if((b|0)!=0){d=3308;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){d=3305;break}dC[e&63]()}if((d|0)==3305){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((d|0)==3308){d=b;B1();B0(d,a,42752);return d|0}return 0}function Cq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;while(1){d=aDx(200)|0;if((d|0)!=0){e=3322;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==3322){e=d;B0(e,a,b);return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function Cr(a,b){a=a|0;b=b|0;c[a+88>>2]=b;c[a+96>>2]=0;return}function Cs(a,b,d){a=a|0;b=b|0;d=d|0;c[a+88>>2]=b;c[a+96>>2]=d;return}function Ct(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(e){c[a+92>>2]=b}else{c[a+88>>2]=b}c[a+96>>2]=d;return}function Cu(b){b=b|0;return(a[b+84|0]&1)!=0|0}function Cv(a){a=a|0;return c[a+8>>2]|0}function Cw(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function Cx(a){a=a|0;return c[a+96>>2]|0}function Cy(a){a=a|0;return c[a+76>>2]|0}function Cz(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function CA(a){a=a|0;return a+4|0}function CB(a){a=a|0;return c[a+176>>2]|0}function CC(a){a=a|0;return a+28|0}function CD(a){a=a|0;return(c[a+4>>2]|0)==31|0}function CE(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function CF(a){a=a|0;return+(+g[a+44>>2])}function CG(a){a=a|0;return(c[a+4>>2]|0)<7|0}function CH(a){a=a|0;return+(+g[a+56>>2])}function CI(a){a=a|0;return+(+g[a+60>>2])}function CJ(a){a=a|0;return a+12|0}function CK(a,b){a=a|0;b=b|0;if((b|0)==0){c[a+64>>2]=1;c[a+68>>2]=0;c[a+72>>2]=2;return}else if((b|0)==2){c[a+64>>2]=0;c[a+68>>2]=2;c[a+72>>2]=1;return}else if((b|0)==1){c[a+64>>2]=0;c[a+68>>2]=1;c[a+72>>2]=2;return}else{return}}function CL(a){a=a|0;return(c[a+4>>2]|0)<20|0}function CM(a){a=a|0;return(c[a+4>>2]|0)==28|0}function CN(a){a=a|0;return c[a+8>>2]|0}function CO(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function CP(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function CQ(a){a=a|0;return(c[a+4>>2]|0)==32|0}function CR(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a|0);return}function CS(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function CT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function CU(a,b){a=a|0;b=b|0;aoh(a|0,b);return}function CV(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a|0);return}function CW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a|0,b,c,d,e,0.0);return}function CX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a|0,b,c,d,e,f);return}function CY(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+52>>2]&511](a|0,b,0);return}function CZ(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d);return}function C_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function C$(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43776]|0)==0){if((b1(43776)|0)==0){break}}}while(0);cv[c[(c[b>>2]|0)+72>>2]&2047](e,b|0);b=e;c[9458]=c[b>>2];c[9459]=c[b+4>>2];c[9460]=c[b+8>>2];c[9461]=c[b+12>>2];i=d;return 37832}function C0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function C1(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a|0,b);return}function C2(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function C3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+132>>2]&2047](a|0,b);return}function C4(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+104>>2]&511](a|0,b)|0}function C5(a){a=a|0;return cA[c[(c[a>>2]|0)+96>>2]&4095](a|0)|0}function C6(a,b){a=a|0;b=+b;return dr[c[(c[a>>2]|0)+48>>2]&63](a|0,b,1,.01666666753590107)|0}function C7(a,b,d){a=a|0;b=+b;d=d|0;return dr[c[(c[a>>2]|0)+48>>2]&63](a|0,b,d,.01666666753590107)|0}function C8(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;return dr[c[(c[a>>2]|0)+48>>2]&63](a|0,b,d,e)|0}function C9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+128>>2]&2047](a|0,b);return}function Da(a){a=a|0;return cA[c[(c[a>>2]|0)+112>>2]&4095](a)|0}function Db(a,b){a=a|0;b=b|0;atC(a|0,b);return}function Dc(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+172>>2]&1023](a|0,b);return}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=i;i=i+64|0;e=d|0;f=b+472|0;if((c[f>>2]|0)==0){i=d;return}if((c[b+204>>2]&3|0)!=0){i=d;return}anY(b+68|0,+g[b+132>>2],+g[b+136>>2],+g[b+140>>2],b+148|0,+g[a+236>>2]*+g[b+240>>2],e);b=c[f>>2]|0;cv[c[(c[b>>2]|0)+12>>2]&2047](b,e);i=d;return}function De(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+120>>2]&2047](a|0,b);return}function Df(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function Dg(a){a=a|0;ct[c[(c[a>>2]|0)+76>>2]&2047](a|0);return}function Dh(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a|0,b);return}function Di(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+92>>2]&2047](a|0,b);return}function Dj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function Dk(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function Dl(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43784]|0)==0){if((b1(43784)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9454]=c[d>>2];c[9455]=c[d+4>>2];c[9456]=c[d+8>>2];c[9457]=c[d+12>>2];i=e;return 37816}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function Dn(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Do(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function Dp(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(95)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e>>2]=26096;g[e+56>>2]=a;g[e+60>>2]=b;c[e+4>>2]=11;c[e+64>>2]=0;c[e+68>>2]=1;c[e+72>>2]=2;g[e+52>>2]=a/+Q(+(a*a+b*b));return e|0}function Dq(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Dr(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Ds(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43320]|0)==0){if((b1(43320)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9450]=c[d>>2];c[9451]=c[d+4>>2];c[9452]=c[d+8>>2];c[9453]=c[d+12>>2];i=e;return 37800}function Dt(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43480]|0)==0){if((b1(43480)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9446]=c[d>>2];c[9447]=c[d+4>>2];c[9448]=c[d+8>>2];c[9449]=c[d+12>>2];i=e;return 37784}function Du(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function Dv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function Dw(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43624]|0)==0){if((b1(43624)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9442]=c[d>>2];c[9443]=c[d+4>>2];c[9444]=c[d+8>>2];c[9445]=c[d+12>>2];i=e;return 37768}function Dx(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function Dy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Dz(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function DA(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function DB(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function DC(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function DD(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 10:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 1:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function DE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;while(1){f=aDx(268)|0;if((f|0)!=0){g=3461;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){g=3458;break}dC[h&63]()}if((g|0)==3461){aob(f,a,b,d,e);c[f>>2]=20808;return f|0}else if((g|0)==3458){g=cd(4)|0;c[g>>2]=19096;bF(g|0,34368,676);return 0}return 0}function DF(a){a=a|0;return a+28|0}function DG(a){a=a|0;return c[a+68>>2]|0}function DH(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function DI(a){a=a|0;return c[a+4>>2]|0}function DJ(a,b){a=a|0;b=+b;g[a+208>>2]=b;return}function DK(a){a=a|0;return+(+g[a+212>>2])}function DL(a){a=a|0;return+(+g[a+204>>2])}function DM(a,b){a=a|0;b=+b;g[a+216>>2]=b;return}function DN(a,b){a=a|0;b=+b;g[a+212>>2]=b;return}function DO(a){a=a|0;return+(+g[a+248>>2])}function DP(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;e=i;f=d;d=i;i=i+92|0;i=i+7>>3<<3;aDC(d,f,92)|0;if((a[b+84|0]&1)==0){g[b+32>>2]=+g[b+204>>2];g[b+272>>2]=0.0;h=-0.0- +g[b+56>>2];j=-0.0- +g[b+60>>2];g[b>>2]=-0.0- +g[b+52>>2];g[b+4>>2]=h;g[b+8>>2]=j;g[b+12>>2]=0.0;g[b+268>>2]=1.0;i=e;return}j=+g[b>>2];h=+g[b+4>>2];k=+g[b+8>>2];l=j*+g[b+52>>2]+h*+g[b+56>>2]+k*+g[b+60>>2];m=+g[b+16>>2]- +g[c+52>>2];n=+g[b+20>>2]- +g[c+56>>2];o=+g[b+24>>2]- +g[c+60>>2];p=+g[c+324>>2];q=+g[c+328>>2];r=+g[c+320>>2];if(l<-.10000000149011612){s=-1.0/l;g[b+272>>2]=s*(h*(m*q-o*r+ +g[c+308>>2])+j*(p*o-n*q+ +g[c+304>>2])+k*(n*r-m*p+ +g[c+312>>2]));g[b+268>>2]=s;i=e;return}else{g[b+272>>2]=0.0;g[b+268>>2]=10.0;i=e;return}}function DQ(a){a=a|0;return+(+g[a+220>>2])}function DR(a){a=a|0;return+(+g[a+268>>2])}function DS(a){a=a|0;return a+92|0}function DT(a){a=a|0;return+(+g[a+228>>2])}function DU(b){b=b|0;return(a[b+260|0]&1)!=0|0}function DV(a,b){a=a|0;b=+b;g[a+252>>2]=b;return}function DW(a){a=a|0;return+(+g[a+252>>2])}function DX(a){a=a|0;return+(+g[a+232>>2])}function DY(a){a=a|0;return+(+g[a+244>>2])}function DZ(a){a=a|0;return+(+g[a+272>>2])}function D_(a,b){a=a|0;b=b|0;c[a+264>>2]=b;return}function D$(a,b){a=a|0;b=+b;g[a+256>>2]=b;return}function D0(a,b){a=a|0;b=+b;g[a+272>>2]=b;return}function D1(b,c){b=b|0;c=c|0;a[b+260|0]=c&1;return}function D2(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function D3(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function D4(a){a=a|0;return c[a+264>>2]|0}function D5(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function D6(a){a=a|0;return+(+g[a+280>>2])}function D7(a){a=a|0;return+(+g[a+204>>2])}function D8(a){a=a|0;return+(+g[a+224>>2])}function D9(a){a=a|0;return+(+g[a+208>>2])}function Ea(a,b){a=a|0;b=+b;g[a+232>>2]=b;return}function Eb(a){a=a|0;return a+156|0}function Ec(a){a=a|0;return+(+g[a+256>>2])}function Ed(a,b){a=a|0;b=+b;g[a+280>>2]=b;return}function Ee(a){a=a|0;return+(+g[a+276>>2])}function Ef(a,b){a=a|0;b=+b;g[a+204>>2]=b;return}function Eg(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function Eh(a){a=a|0;return+(+g[a+236>>2])}function Ei(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function Ej(a){a=a|0;return a+172|0}function Ek(a){a=a|0;return+(+g[a+216>>2])}function El(a,b){a=a|0;b=+b;g[a+268>>2]=b;return}function Em(a,b){a=a|0;b=+b;g[a+236>>2]=b;return}function En(a){a=a|0;return a+188|0}function Eo(a,b){a=a|0;b=+b;g[a+276>>2]=b;return}function Ep(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function Eq(a){a=a|0;return+(+g[a+240>>2])}function Er(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Es(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Et(a){a=a|0;return a+12|0}function Eu(a){a=a|0;return+(+g[a+44>>2])}function Ev(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Ew(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Ex(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Ey(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Ez(a){a=a|0;return c[a+8>>2]|0}function EA(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function EB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function EC(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ED(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function EE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function EF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function EG(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function EH(a,b){a=a|0;b=b|0;var d=0;d=a+156|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function EI(a,b){a=a|0;b=b|0;var d=0;d=a+172|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function EJ(a,b){a=a|0;b=b|0;var d=0;d=a+188|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function EK(a){a=a|0;if((a|0)==0){return}aDB(a);return}function EL(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+92|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+108|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+124|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+140|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function EM(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function EN(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function EO(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43680]|0)==0){if((b1(43680)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9438]=c[d>>2];c[9439]=c[d+4>>2];c[9440]=c[d+8>>2];c[9441]=c[d+12>>2];i=e;return 37752}function EP(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function EQ(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function ER(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+92|0;e=c[d>>2]|0;c[d>>2]=e+1;d=a+96+(e<<4)|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];aze(a|0);return}function ES(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ET(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function EU(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function EV(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43520]|0)==0){if((b1(43520)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9434]=c[d>>2];c[9435]=c[d+4>>2];c[9436]=c[d+8>>2];c[9437]=c[d+12>>2];i=e;return 37736}function EW(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+116>>2]&511](a,b)|0}function EX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function EY(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function EZ(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function E_(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function E$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function E0(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43192]|0)==0){if((b1(43192)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9430]=c[d>>2];c[9431]=c[d+4>>2];c[9432]=c[d+8>>2];c[9433]=c[d+12>>2];i=e;return 37720}function E1(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function E2(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function E3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function E4(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function E5(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function E6(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(179)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d+8>>2]=0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[d+52>>2]=0;g[d+56>>2]=1.0;g[d+60>>2]=1.0;g[d+64>>2]=1.0;g[d+68>>2]=0.0;g[d+72>>2]=-1.0;g[d+76>>2]=-1.0;g[d+80>>2]=-1.0;g[d+84>>2]=0.0;a[d+88|0]=0;c[d>>2]=24456;c[d+92>>2]=0;c[d+4>>2]=2;return d|0}function E7(b){b=b|0;var d=0,e=0,f=0,h=0;while(1){d=aDx(284)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=3593;break}dC[e&63]()}if((f|0)==3593){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;e=d+140|0;h=d+92|0;do{h=h+16|0;}while((h|0)!=(e|0));g[d+204>>2]=+g[b+48>>2];g[d+208>>2]=+g[b+52>>2];g[d+212>>2]=+g[b+56>>2];g[d+216>>2]=+g[b+60>>2];g[d+220>>2]=+g[b+64>>2];g[d+224>>2]=+g[b+68>>2];e=d+156|0;h=b;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=d+172|0;e=b+16|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];e=d+188|0;h=b+32|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];g[d+228>>2]=+g[b+72>>2];g[d+232>>2]=0.0;g[d+252>>2]=0.0;g[d+236>>2]=0.0;g[d+240>>2]=0.0;g[d+256>>2]=0.0;g[d+244>>2]=.10000000149011612;a[d+260|0]=a[b+80|0]&1;g[d+248>>2]=+g[b+76>>2];return f|0}function E8(a){a=a|0;return(c[a+4>>2]|0)==32|0}function E9(a){a=a|0;c[a+92>>2]=0;return}function Fa(a){a=a|0;return a+28|0}function Fb(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Fc(a){a=a|0;return c[a+52>>2]|0}function Fd(a){a=a|0;return c[a+4>>2]|0}function Fe(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Ff(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(d>=+g[c>>2]){return}g[c>>2]=d;return}function Fg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0;e=a+8|0;f=-0.0- +g[e>>2];h=a+4|0;g[b>>2]=0.0;g[b+4>>2]=f;g[b+8>>2]=+g[h>>2];g[b+12>>2]=0.0;b=a|0;f=-0.0- +g[b>>2];g[c>>2]=+g[e>>2];g[c+4>>2]=0.0;g[c+8>>2]=f;g[c+12>>2]=0.0;g[d>>2]=-0.0- +g[h>>2];g[d+4>>2]=+g[b>>2];g[d+8>>2]=0.0;g[d+12>>2]=0.0;return}function Fh(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[b+(c<<2)>>2]=+g[a+(c<<2)>>2];c=c+1|0}return}function Fi(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+h[b+(c<<3)>>3];c=c+1|0}return}function Fj(a){a=a|0;return+(+g[a>>2])}function Fk(a){a=a|0;var b=0.0,c=0,d=0.0,e=0,f=0.0,h=0;b=+g[a>>2];c=b<999999984306749400.0;d=c?b:999999984306749400.0;b=+g[a+4>>2];e=b>2];h=d>2]<(h?d:f)?3:h?2:e?1:c?0:-1)|0}function Fl(a){a=a|0;return+(+g[a+8>>2])}function Fm(b){b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(179)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e+52>>2]=0;g[e+56>>2]=1.0;g[e+60>>2]=1.0;g[e+64>>2]=1.0;g[e+68>>2]=0.0;g[e+72>>2]=-1.0;g[e+76>>2]=-1.0;g[e+80>>2]=-1.0;g[e+84>>2]=0.0;a[e+88|0]=0;c[e>>2]=24456;f=e+96|0;c[e+4>>2]=2;c[e+92>>2]=1;d=b;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];aze(e);return e|0}function Fn(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;c[9806]=(c[9806]|0)+1;e=aDx(179)|0;if((e|0)==0){f=0}else{h=-(e+4|0)&15;c[e+h>>2]=e;f=e+(h+4)|0}h=f;e=f;c[f+8>>2]=0;g[f+12>>2]=1.0;g[f+16>>2]=1.0;g[f+20>>2]=1.0;g[f+24>>2]=0.0;g[f+44>>2]=.03999999910593033;c[f+52>>2]=0;g[f+56>>2]=1.0;g[f+60>>2]=1.0;g[f+64>>2]=1.0;g[f+68>>2]=0.0;g[f+72>>2]=-1.0;g[f+76>>2]=-1.0;g[f+80>>2]=-1.0;g[f+84>>2]=0.0;a[f+88|0]=0;c[f>>2]=24456;i=f+92|0;j=f+96|0;c[f+4>>2]=2;c[i>>2]=1;f=b;c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];aze(e);f=c[i>>2]|0;c[i>>2]=f+1;i=h+96+(f<<4)|0;f=d;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];aze(e);return h|0}function Fo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0;c[9806]=(c[9806]|0)+1;f=aDx(179)|0;if((f|0)==0){h=0}else{i=-(f+4|0)&15;c[f+i>>2]=f;h=f+(i+4)|0}i=h;f=h;c[h+8>>2]=0;g[h+12>>2]=1.0;g[h+16>>2]=1.0;g[h+20>>2]=1.0;g[h+24>>2]=0.0;g[h+44>>2]=.03999999910593033;c[h+52>>2]=0;g[h+56>>2]=1.0;g[h+60>>2]=1.0;g[h+64>>2]=1.0;g[h+68>>2]=0.0;g[h+72>>2]=-1.0;g[h+76>>2]=-1.0;g[h+80>>2]=-1.0;g[h+84>>2]=0.0;a[h+88|0]=0;c[h>>2]=24456;j=h+92|0;k=h+96|0;c[h+4>>2]=2;c[j>>2]=1;h=b;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];aze(f);h=c[j>>2]|0;c[j>>2]=h+1;k=i+96+(h<<4)|0;h=d;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];aze(f);h=c[j>>2]|0;c[j>>2]=h+1;j=i+96+(h<<4)|0;h=e;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];aze(f);return i|0}function Fp(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0;c[9806]=(c[9806]|0)+1;h=aDx(179)|0;if((h|0)==0){i=0}else{j=-(h+4|0)&15;c[h+j>>2]=h;i=h+(j+4)|0}j=i;h=i;c[i+8>>2]=0;g[i+12>>2]=1.0;g[i+16>>2]=1.0;g[i+20>>2]=1.0;g[i+24>>2]=0.0;g[i+44>>2]=.03999999910593033;c[i+52>>2]=0;g[i+56>>2]=1.0;g[i+60>>2]=1.0;g[i+64>>2]=1.0;g[i+68>>2]=0.0;g[i+72>>2]=-1.0;g[i+76>>2]=-1.0;g[i+80>>2]=-1.0;g[i+84>>2]=0.0;a[i+88|0]=0;c[i>>2]=24456;k=i+92|0;l=i+96|0;c[i+4>>2]=2;c[k>>2]=1;i=b;c[l>>2]=c[i>>2];c[l+4>>2]=c[i+4>>2];c[l+8>>2]=c[i+8>>2];c[l+12>>2]=c[i+12>>2];aze(h);i=c[k>>2]|0;c[k>>2]=i+1;l=j+96+(i<<4)|0;i=d;c[l>>2]=c[i>>2];c[l+4>>2]=c[i+4>>2];c[l+8>>2]=c[i+8>>2];c[l+12>>2]=c[i+12>>2];aze(h);i=c[k>>2]|0;c[k>>2]=i+1;l=j+96+(i<<4)|0;i=e;c[l>>2]=c[i>>2];c[l+4>>2]=c[i+4>>2];c[l+8>>2]=c[i+8>>2];c[l+12>>2]=c[i+12>>2];aze(h);i=c[k>>2]|0;c[k>>2]=i+1;k=j+96+(i<<4)|0;i=f;c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];aze(h);return j|0}function Fq(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function Fr(a){a=a|0;aze(a|0);return}function Fs(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function Ft(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function Fu(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function Fv(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43368]|0)==0){if((b1(43368)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9426]=c[d>>2];c[9427]=c[d+4>>2];c[9428]=c[d+8>>2];c[9429]=c[d+12>>2];i=e;return 37704}function Fw(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 5:case 4:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 1:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function Fx(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Fy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function Fz(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function FA(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function FB(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function FC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function FD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function FE(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function FF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;gx(a|0,b,c,d,e);return}function FG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0;e=1.0-d;g[a>>2]=e*+g[b>>2]+ +g[c>>2]*d;g[a+4>>2]=e*+g[b+4>>2]+ +g[c+4>>2]*d;g[a+8>>2]=e*+g[b+8>>2]+ +g[c+8>>2]*d;return}function FH(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;d=+g[b+4>>2];e=+g[c+8>>2];f=+g[b+8>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b>>2];return+(+g[a>>2]*(d*e-f*h)+ +g[a+4>>2]*(f*i-j*e)+ +g[a+8>>2]*(j*h-d*i))}function FI(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+g[b+(c<<2)>>2];c=c+1|0}return}function FJ(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(+g[c>>2]>2]=d}c=a+4|0;d=+g[b+4>>2];if(+g[c>>2]>2]=d}c=a+8|0;d=+g[b+8>>2];if(+g[c>>2]>2]=d}c=a+12|0;d=+g[b+12>>2];if(+g[c>>2]>=d){return}g[c>>2]=d;return}function FK(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}h[b+(c<<3)>>3]=+g[a+(c<<2)>>2];c=c+1|0}return}function FL(a){a=a|0;return+(+g[a+12>>2])}function FM(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[b>>2]- +g[a>>2];d=+g[b+4>>2]- +g[a+4>>2];e=+g[b+8>>2]- +g[a+8>>2];return+(c*c+d*d+e*e)}function FN(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=e;return}function FO(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return b*b+c*c+d*d<1.1920928955078125e-7|0}function FP(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+g[b+(c<<2)>>2];c=c+1|0}return}function FQ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];if(b>2]!=0.0){b=0;return b|0}if(+g[a+4>>2]!=0.0){b=0;return b|0}b=+g[a+8>>2]==0.0;return b|0}function FS(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[b+(c<<2)>>2]=+g[a+(c<<2)>>2];c=c+1|0}return}function FT(a,b){a=a|0;b=+b;g[a>>2]=b;return}function FU(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function FV(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function FW(a){a=a|0;var b=0.0,c=0,d=0.0,e=0,f=0.0,h=0;b=+g[a>>2];c=b>-999999984306749400.0;d=c?b:-999999984306749400.0;b=+g[a+4>>2];e=b>d;f=e?b:d;d=+g[a+8>>2];h=d>f;return(+g[a+12>>2]>(h?d:f)?3:h?2:e?1:c?0:-1)|0}function FX(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];if(b>2])}function FZ(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return+(b*b+c*c+d*d)}function F_(b){b=b|0;var c=0.0,d=0.0,e=0.0;do{if((a[44072]|0)==0){if((b1(44072)|0)==0){break}}}while(0);c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[9422]=c;g[9423]=d;g[9424]=e;g[9425]=0.0;return 37688}function F$(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0,h=0.0,i=0.0;b=a|0;c=+g[b>>2];d=a+4|0;e=+g[d>>2];f=a+8|0;h=+g[f>>2];i=1.0/+Q(+(c*c+e*e+h*h));g[b>>2]=c*i;g[d>>2]=e*i;g[f>>2]=h*i;return a|0}function F0(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;c=+g[a>>2];d=+g[a+4>>2];e=+g[a+8>>2];f=+g[b>>2];h=+g[b+4>>2];i=+g[b+8>>2];j=(c*f+d*h+e*i)/+Q(+((c*c+d*d+e*e)*(f*f+h*h+i*i)));if(j<-1.0){k=-1.0;l=+V(+k);return+l}if(j<=1.0){k=j;l=+V(+k);return+l}k=1.0;l=+V(+k);return+l}function F1(b,c,d){b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0;do{if((a[44144]|0)==0){if((b1(44144)|0)==0){break}}}while(0);e=+g[b>>2];f=+g[b+4>>2];h=f+(+g[c+4>>2]-f)*d;f=+g[b+8>>2];i=f+(+g[c+8>>2]-f)*d;g[9406]=e+(+g[c>>2]-e)*d;g[9407]=h;g[9408]=i;g[9409]=0.0;return 37624}function F2(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;do{if((a[44128]|0)==0){if((b1(44128)|0)==0){break}}}while(0);d=+g[b+4>>2];e=+g[c+8>>2];f=+g[b+8>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b>>2];g[9402]=d*e-f*h;g[9403]=f*i-j*e;g[9404]=j*h-d*i;g[9405]=0.0;return 37608}function F3(b){b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;do{if((a[44040]|0)==0){if((b1(44040)|0)==0){break}}}while(0);c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));f=+P(+(+g[b+12>>2]));g[9398]=c;g[9399]=d;g[9400]=e;g[9401]=f;return 37592}function F4(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));if(b>2]- +g[a>>2];d=+g[b+4>>2]- +g[a+4>>2];e=+g[b+8>>2]- +g[a+8>>2];return+(+Q(+(c*c+d*d+e*e)))}function F6(a){a=a|0;return F7(a|0)|0}function F7(a){a=a|0;var b=0,c=0,d=0,e=0.0,f=0.0,h=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0;b=i;i=i+16|0;c=b|0;d=a|0;e=+g[d>>2];f=+P(+e);h=a+4|0;j=+g[h>>2];k=+P(+j);l=a+8|0;m=+g[l>>2];n=+P(+m);g[c>>2]=f;g[c+4>>2]=k;g[c+8>>2]=n;g[c+12>>2]=0.0;if(f>2];if(n>0.0){f=1.0/n;n=e*f;e=j*f;j=m*f;f=1.0/+Q(+(n*n+e*e+j*j));g[d>>2]=n*f;g[h>>2]=e*f;g[l>>2]=j*f;i=b;return a|0}else{g[d>>2]=1.0;g[h>>2]=0.0;g[l>>2]=0.0;g[a+12>>2]=0.0;i=b;return a|0}return 0}function F8(b){b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0;do{if((a[43984]|0)==0){if((b1(43984)|0)==0){break}}}while(0);c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];f=1.0/+Q(+(c*c+d*d+e*e));g[9394]=c*f;g[9395]=d*f;g[9396]=e*f;g[9397]=0.0;return 37576}function F9(a){a=a|0;if((a|0)==0){return}aDB(a);return}function Ga(b,d,e){b=b|0;d=d|0;e=+e;var f=0,g=0;f=i;i=i+16|0;g=f|0;do{if((a[44112]|0)==0){if((b1(44112)|0)==0){break}}}while(0);Gb(g,b|0,d,e);d=g;c[9390]=c[d>>2];c[9391]=c[d+4>>2];c[9392]=c[d+8>>2];c[9393]=c[d+12>>2];i=f;return 37560}function Gb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;e=+g[c>>2];f=+g[b>>2];h=+g[c+4>>2];i=+g[b+4>>2];j=+g[c+8>>2];k=+g[b+8>>2];l=e*f+h*i+j*k;m=e*l;n=h*l;o=j*l;l=+S(+d);p=+T(+d);g[a>>2]=m+(f-m)*l+(h*k-j*i)*p;g[a+4>>2]=n+(i-n)*l+(j*f-e*k)*p;g[a+8>>2]=o+(k-o)*l+(e*i-h*f)*p;g[a+12>>2]=0.0;return}function Gc(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0,f=0.0,h=0,i=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));e=b>-999999984306749400.0;f=e?b:-999999984306749400.0;h=c>f;b=h?c:f;i=d>b;return(+P(+(+g[a+12>>2]))>(i?d:b)?3:i?2:h?1:e?0:-1)|0}function Gd(a){a=a|0;aDD(a|0,0,16);return}function Ge(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=3828;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==3828){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function Gf(a,b,d,e){a=+a;b=+b;d=+d;e=+e;var f=0,h=0,i=0;while(1){f=aDx(16)|0;if((f|0)!=0){h=3840;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==3840){g[f>>2]=a;g[f+4>>2]=b;g[f+8>>2]=d;g[f+12>>2]=e;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function Gg(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function Gh(a){a=a|0;return+(+g[a+12>>2])}function Gi(a){a=a|0;return+(+g[a+4>>2])}function Gj(a){a=a|0;return+(+g[a>>2])}function Gk(a){a=a|0;return+(+g[a+8>>2])}function Gl(a,b){a=a|0;b=b|0;return+(+g[a>>2]*+g[b>>2]+ +g[a+4>>2]*+g[b+4>>2]+ +g[a+8>>2]*+g[b+8>>2])}function Gm(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(d>=+g[c>>2]){return}g[c>>2]=d;return}function Gn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0.0,h=0;e=a+8|0;f=-0.0- +g[e>>2];h=a+4|0;g[b>>2]=0.0;g[b+4>>2]=f;g[b+8>>2]=+g[h>>2];g[b+12>>2]=0.0;b=a|0;f=-0.0- +g[b>>2];g[c>>2]=+g[e>>2];g[c+4>>2]=0.0;g[c+8>>2]=f;g[c+12>>2]=0.0;g[d>>2]=-0.0- +g[h>>2];g[d+4>>2]=+g[b>>2];g[d+8>>2]=0.0;g[d+12>>2]=0.0;return}function Go(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[b+(c<<2)>>2]=+g[a+(c<<2)>>2];c=c+1|0}return}function Gp(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+h[b+(c<<3)>>3];c=c+1|0}return}function Gq(a){a=a|0;return+(+g[a>>2])}function Gr(a){a=a|0;return+(+g[a+4>>2])}function Gs(a){a=a|0;return+(+g[a+8>>2])}function Gt(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0.0;e=1.0-d;g[a>>2]=e*+g[b>>2]+ +g[c>>2]*d;g[a+4>>2]=e*+g[b+4>>2]+ +g[c+4>>2]*d;g[a+8>>2]=e*+g[b+8>>2]+ +g[c+8>>2]*d;return}function Gu(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;d=+g[b+4>>2];e=+g[c+8>>2];f=+g[b+8>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b>>2];return+(+g[a>>2]*(d*e-f*h)+ +g[a+4>>2]*(f*i-j*e)+ +g[a+8>>2]*(j*h-d*i))}function Gv(a,b){a=a|0;b=b|0;var c=0;c=a|0;g[c>>2]=+g[c>>2]- +g[b>>2];c=a+4|0;g[c>>2]=+g[c>>2]- +g[b+4>>2];c=a+8|0;g[c>>2]=+g[c>>2]- +g[b+8>>2];return a|0}function Gw(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(+g[c>>2]>2]=d}c=a+4|0;d=+g[b+4>>2];if(+g[c>>2]>2]=d}c=a+8|0;d=+g[b+8>>2];if(+g[c>>2]>2]=d}c=a+12|0;d=+g[b+12>>2];if(+g[c>>2]>=d){return}g[c>>2]=d;return}function Gx(a,b){a=a|0;b=b|0;var c=0;c=a|0;g[c>>2]=+g[c>>2]+ +g[b>>2];c=a+4|0;g[c>>2]=+g[c>>2]+ +g[b+4>>2];c=a+8|0;g[c>>2]=+g[c>>2]+ +g[b+8>>2];return a|0}function Gy(a,b){a=a|0;b=b|0;var c=0;if(+g[a+12>>2]!=+g[b+12>>2]){c=0;return c|0}if(+g[a+8>>2]!=+g[b+8>>2]){c=0;return c|0}if(+g[a+4>>2]!=+g[b+4>>2]){c=0;return c|0}c=+g[a>>2]==+g[b>>2];return c|0}function Gz(a,b){a=a|0;b=+b;var c=0;c=a|0;g[c>>2]=+g[c>>2]*b;c=a+4|0;g[c>>2]=+g[c>>2]*b;c=a+8|0;g[c>>2]=+g[c>>2]*b;return a|0}function GA(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}h[b+(c<<3)>>3]=+g[a+(c<<2)>>2];c=c+1|0}return}function GB(a){a=a|0;var b=0;if(+g[a>>2]!=0.0){b=0;return b|0}if(+g[a+4>>2]!=0.0){b=0;return b|0}b=+g[a+8>>2]==0.0;return b|0}function GC(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[b>>2]- +g[a>>2];d=+g[b+4>>2]- +g[a+4>>2];e=+g[b+8>>2]- +g[a+8>>2];return+(c*c+d*d+e*e)}function GD(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=0.0;return}function GE(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return b*b+c*c+d*d<1.1920928955078125e-7|0}function GF(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[a+(c<<2)>>2]=+g[b+(c<<2)>>2];c=c+1|0}return}function GG(a,b){a=a|0;b=+b;var c=0.0,d=0;c=1.0/b;d=a|0;g[d>>2]=+g[d>>2]*c;d=a+4|0;g[d>>2]=+g[d>>2]*c;d=a+8|0;g[d>>2]=+g[d>>2]*c;return a|0}function GH(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];if(b>2];c=+g[a+4>>2];d=+g[a+8>>2];return+(+Q(+(b*b+c*c+d*d)))}function GJ(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));if(b>2]|0)+8>>2]&255](a,b,d);return}function GL(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function GM(b){b=b|0;var c=0.0,d=0.0,e=0.0;do{if((a[44080]|0)==0){if((b1(44080)|0)==0){break}}}while(0);c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[9386]=c;g[9387]=d;g[9388]=e;g[9389]=0.0;return 37544}function GN(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0,h=0.0,i=0.0;b=a|0;c=+g[b>>2];d=a+4|0;e=+g[d>>2];f=a+8|0;h=+g[f>>2];i=1.0/+Q(+(c*c+e*e+h*h));g[b>>2]=c*i;g[d>>2]=e*i;g[f>>2]=h*i;return a|0}function GO(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;c=+g[a>>2];d=+g[a+4>>2];e=+g[a+8>>2];f=+g[b>>2];h=+g[b+4>>2];i=+g[b+8>>2];j=(c*f+d*h+e*i)/+Q(+((c*c+d*d+e*e)*(f*f+h*h+i*i)));if(j<-1.0){k=-1.0;l=+V(+k);return+l}if(j<=1.0){k=j;l=+V(+k);return+l}k=1.0;l=+V(+k);return+l}function GP(b,c,d){b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0;do{if((a[44152]|0)==0){if((b1(44152)|0)==0){break}}}while(0);e=+g[b>>2];f=+g[b+4>>2];h=f+(+g[c+4>>2]-f)*d;f=+g[b+8>>2];i=f+(+g[c+8>>2]-f)*d;g[9382]=e+(+g[c>>2]-e)*d;g[9383]=h;g[9384]=i;g[9385]=0.0;return 37528}function GQ(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;do{if((a[44136]|0)==0){if((b1(44136)|0)==0){break}}}while(0);d=+g[b+4>>2];e=+g[c+8>>2];f=+g[b+8>>2];h=+g[c+4>>2];i=+g[c>>2];j=+g[b>>2];g[9378]=d*e-f*h;g[9379]=f*i-j*e;g[9380]=j*h-d*i;g[9381]=0.0;return 37512}function GR(a){a=a|0;if((a|0)==0){return}aDB(a);return}function GS(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return(a|0)!=0|0}function GT(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));if(b>2];d=+g[b+4>>2];e=+g[b+8>>2];f=1.0/+Q(+(c*c+d*d+e*e));g[9374]=c*f;g[9375]=d*f;g[9376]=e*f;g[9377]=0.0;return 37496}function GW(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=3977;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==3977){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function GX(a,b,d){a=+a;b=+b;d=+d;var e=0,f=0,h=0;while(1){e=aDx(16)|0;if((e|0)!=0){f=3989;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((f|0)==3989){g[e>>2]=a;g[e+4>>2]=b;g[e+8>>2]=d;g[e+12>>2]=0.0;return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function GY(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=4){break}g[b+(c<<2)>>2]=+g[a+(c<<2)>>2];c=c+1|0}return}function GZ(a,b){a=a|0;b=+b;g[a>>2]=b;return}function G_(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function G$(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function G0(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];if(b=4){break}g[a+(c<<2)>>2]=+g[b+(c<<2)>>2];c=c+1|0}return}function G2(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return+(b*b+c*c+d*d)}function G3(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function G4(a,b){a=a|0;b=b|0;return+(+g[a>>2]*+g[b>>2]+ +g[a+4>>2]*+g[b+4>>2]+ +g[a+8>>2]*+g[b+8>>2])}function G5(a){a=a|0;return+(+g[a+12>>2])}function G6(a){a=a|0;return+(+g[a+4>>2])}function G7(a){a=a|0;return+(+g[a>>2])}function G8(a){a=a|0;return+(+g[a+8>>2])}function G9(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function Ha(a){a=a|0;return+(+g[a+8>>2])}function Hb(a){a=a|0;return+(+g[a+4>>2])}function Hc(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Hd(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function He(a){a=a|0;return+(+g[a+12>>2])}function Hf(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function Hg(a){a=a|0;return c[a>>2]|0}function Hh(a,c){a=a|0;c=c|0;b[a+12>>1]=c;return}function Hi(a){a=a|0;return a+36|0}function Hj(a){a=a|0;return a+68|0}function Hk(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Hl(a){a=a|0;return c[a+8>>2]|0}function Hm(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function Hn(a){a=a|0;return a+20|0}function Ho(a){a=a|0;return b[a+14>>1]|0}function Hp(a){a=a|0;return+(+g[a+4>>2])}function Hq(a){a=a|0;return c[a+16>>2]|0}function Hr(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function Hs(a,c){a=a|0;c=c|0;b[a+14>>1]=c;return}function Ht(a){a=a|0;return(c[a+8>>2]|0)!=0|0}function Hu(a){a=a|0;return a+52|0}function Hv(a){a=a|0;return b[a+12>>1]|0}function Hw(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function Hx(a){a=a|0;return a+8|0}function Hy(a,b){a=a|0;b=+b;g[a+24>>2]=b;return}function Hz(a){a=a|0;return+(+g[a+24>>2])}function HA(a){a=a|0;return c[a+4>>2]|0}function HB(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function HC(a){a=a|0;return c[a>>2]|0}function HD(a){a=a|0;return c[a+28>>2]|0}function HE(a){a=a|0;return c[a+12>>2]|0}function HF(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function HG(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function HH(a){a=a|0;return a+40|0}function HI(a,b){a=a|0;b=b|0;return+(+g[a+1248+(b<<2)>>2])}function HJ(a){a=a|0;return a+1120|0}function HK(a){a=a|0;return a+1056|0}function HL(a){a=a|0;return c[a+12>>2]|0}function HM(a){a=a|0;return c[a+4>>2]|0}function HN(a){a=a|0;return c[a+24>>2]|0}function HO(a){a=a|0;return+(+g[a+16>>2])}function HP(a,b,c){a=a|0;b=b|0;c=+c;g[a+1356+(b<<2)>>2]=c;return}function HQ(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+g[b>>2]- +g[a>>2];d=+g[b+4>>2]- +g[a+4>>2];e=+g[b+8>>2]- +g[a+8>>2];return+(+Q(+(c*c+d*d+e*e)))}function HR(b,d,e){b=b|0;d=d|0;e=+e;var f=0,g=0;f=i;i=i+16|0;g=f|0;do{if((a[44120]|0)==0){if((b1(44120)|0)==0){break}}}while(0);Gb(g,b,d,e);d=g;c[9370]=c[d>>2];c[9371]=c[d+4>>2];c[9372]=c[d+8>>2];c[9373]=c[d+12>>2];i=f;return 37480}function HS(a){a=a|0;aDD(a|0,0,16);return}function HT(a){a=a|0;var b=0.0,c=0.0,d=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];return+(+Q(+(b*b+c*c+d*d)))}function HU(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0;b=+P(+(+g[a>>2]));c=+P(+(+g[a+4>>2]));d=+P(+(+g[a+8>>2]));if(b>2]|0)+56>>2]&2047](a,b);return}function HW(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+40>>2]&511](a,b)|0}function HX(a){a=a|0;ct[c[(c[a>>2]|0)+32>>2]&2047](a);return}function HY(a){a=a|0;return cA[c[(c[a>>2]|0)+52>>2]&4095](a)|0}function HZ(a){a=a|0;ct[c[(c[a>>2]|0)+36>>2]&2047](a);return}function H_(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+28>>2]&511](a,b)|0}function H$(a){a=a|0;return cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0}function H0(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a)|0}function H1(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+20>>2]&255](a,b,d,e,f);return}function H2(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a,b);return}function H3(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+24>>2]&511](a,b)|0}function H4(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function H5(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+16>>2]&511](a,b,d)|0}function H6(a){a=a|0;if((a|0)==0){return}aDB(a);return}function H7(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function H8(a,b){a=a|0;b=b|0;var d=0;d=a+36|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function H9(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function Ia(a,b){a=a|0;b=b|0;var d=0;d=a+52|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ib(a,b){a=a|0;b=b|0;var d=0;d=a+68|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ic(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Id(a,b){a=a|0;b=b|0;var d=0;d=a+20|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ie(a){a=a|0;if((a|0)==0){return}aDB(a);return}function If(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ig(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function Ih(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function Ii(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function Ij(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a|0,b,d)|0}function Ik(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0;c=i;i=i+16|0;d=c|0;e=a;g[d>>2]=-1.0;g[d+4>>2]=0.0;g[d+8>>2]=b;g[d+12>>2]=0.0;a=0;while(1){if((a|0)>=3){break}b=+ck(+(+g[d+(a<<2)>>2]),6.2831854820251465);do{if(b<-3.1415927410125732){f=b+6.2831854820251465}else{if(b<=3.1415927410125732){f=b;break}f=b-6.2831854820251465}}while(0);g[e+860+(a<<6)+4>>2]=f;a=a+1|0}i=c;return}function Il(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function Im(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function In(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function Io(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a|0,b);return}function Ip(a){a=a|0;ct[c[(c[a>>2]|0)+44>>2]&2047](a);return}function Iq(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=4133;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==4133){g[a+4>>2]=6.2831854820251465;g[a+8>>2]=6.2831854820251465;g[a+12>>2]=6.2831854820251465;c[a>>2]=0;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function Ir(a,d){a=a|0;d=d|0;var e=0,f=0,h=0;while(1){e=aDx(84)|0;if((e|0)!=0){f=4145;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((f|0)==4145){g[e+4>>2]=1.0;c[e+8>>2]=0;b[e+12>>1]=1;b[e+14>>1]=-1;c[e+16>>2]=0;c[e>>2]=19480;f=e+20|0;h=a;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=e+36|0;f=d;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function Is(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=0,i=0;while(1){f=aDx(28)|0;if((f|0)!=0){h=4157;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==4157){c[f>>2]=a;c[f+4>>2]=b;b=f+8|0;a=d;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];g[f+24>>2]=e;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function It(a,b){a=a|0;b=+b;return}function Iu(a,b){a=a|0;b=b|0;var c=0;c=a;a=0;while(1){if((a|0)>=3){break}g[b+(a<<2)>>2]=+g[c+860+(a<<6)>>2];a=a+1|0}return}function Iv(a,b,c){a=a|0;b=b|0;c=+c;g[a+1308+(b<<2)>>2]=c;return}function Iw(a){a=a|0;return+(+g[a+32>>2])}function Ix(b){b=b|0;return(a[b+20|0]&1)!=0|0}function Iy(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Iz(a){a=a|0;return c[a+4>>2]|0}function IA(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function IB(a){a=a|0;return a+1104|0}function IC(b,c){b=b|0;c=c|0;a[b+1293|0]=c&1;return}function ID(a,b){a=a|0;b=b|0;var c=0,d=0;c=a;if((b|0)<3){d=+g[a+688+(b<<2)>>2]>=+g[a+672+(b<<2)>>2];return d|0}a=b-3|0;if(+g[c+860+(a<<6)>>2]>+g[c+860+(a<<6)+4>>2]){d=0;return d|0}d=1;return d|0}function IE(a){a=a|0;return+(+g[a+1184>>2])}function IF(a,b){a=a|0;b=b|0;return a+860+(b<<6)|0}function IG(a){a=a|0;return+(+g[a+1192>>2])}function IH(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+1300|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function II(a){a=a|0;return a+104|0}function IJ(a){a=a|0;return a+1168|0}function IK(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function IL(b){b=b|0;return(a[b+1293|0]&1)!=0|0}function IM(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function IN(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=d&1;a[b+1301+c|0]=e;if((c|0)<3){a[b+(c+780)|0]=e;return}else{a[b+860+(c-3<<6)+44|0]=e;return}}function IO(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function IP(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function IQ(a,b,c){a=a|0;b=b|0;c=+c;g[a+1332+(b<<2)>>2]=c;return}function IR(b){b=b|0;return(a[b+1300|0]&1)!=0|0}function IS(a){a=a|0;return+(+g[a+32>>2])}function IT(b,c){b=b|0;c=c|0;a[b+1300|0]=c&1;return}function IU(a){a=a|0;return a+672|0}function IV(b){b=b|0;return(a[b+21|0]&1)!=0|0}function IW(a,b){a=a|0;b=b|0;return+(+g[a+1184+(b<<2)>>2])}function IX(a,b){a=a|0;b=b|0;var c=0;c=a;a=0;while(1){if((a|0)>=3){break}g[b+(a<<2)>>2]=+g[c+860+(a<<6)+4>>2];a=a+1|0}return}function IY(a){a=a|0;return c[a+4>>2]|0}function IZ(a){a=a|0;return c[a+8>>2]|0}function I_(a){a=a|0;return+(+g[a+36>>2])}function I$(a){a=a|0;return a+1396|0}function I0(a){a=a|0;return c[a+12>>2]|0}function I1(a){a=a|0;return a+1412|0}function I2(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function I3(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);g[a+1308>>2]=+g[a+1248>>2];g[a+1312>>2]=+g[a+1252>>2];g[a+1316>>2]=+g[a+1256>>2];g[a+1320>>2]=+g[a+1184>>2];g[a+1324>>2]=+g[a+1188>>2];g[a+1328>>2]=+g[a+1192>>2];return}function I4(a,b){a=a|0;b=b|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);if((b|0)<3){g[a+1308+(b<<2)>>2]=+g[a+1248+(b<<2)>>2];return}else{g[a+1308+(b<<2)>>2]=+g[a+1184+(b-3<<2)>>2];return}}function I5(b,c){b=b|0;c=c|0;do{if((a[43904]|0)==0){if((b1(43904)|0)==0){break}}}while(0);aDG(37416,b+1200+(c<<4)|0,16);return 37416}function I6(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];return}function I7(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function I8(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function I9(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];return}function Ja(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a;f=a+40|0;g=b;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+56|0;f=b+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+72|0;g=b+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+88|0;f=b+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+104|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+120|0;f=d+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+136|0;g=d+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+152|0;f=d+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](e);aoZ(e,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function Jb(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function Jc(a,b,c){a=a|0;b=b|0;c=c|0;aoZ(a,b,c);return}function Jd(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,0)|0}function Je(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,m)|0}function Jf(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;nS(a,b,c,d);return}function Jg(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0;c=i;i=i+16|0;d=c|0;e=a;g[d>>2]=1.0;g[d+4>>2]=0.0;g[d+8>>2]=b;g[d+12>>2]=0.0;a=0;while(1){if((a|0)>=3){break}b=+ck(+(+g[d+(a<<2)>>2]),6.2831854820251465);do{if(b<-3.1415927410125732){f=b+6.2831854820251465}else{if(b<=3.1415927410125732){f=b;break}f=b-6.2831854820251465}}while(0);g[e+860+(a<<6)>>2]=f;a=a+1|0}i=c;return}function Jh(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f);return}function Ji(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;apb(a,b,c,d,e,f,g,h);return}function Jj(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=a;a=0;while(1){if((a|0)>=3){break}d=+ck(+(+g[b+(a<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[c+860+(a<<6)>>2]=e;a=a+1|0}return}function Jk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e);return}function Jl(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Jm(b,d){b=b|0;d=+d;var e=0,f=0,h=0,i=0.0,j=0.0,k=0;d=1.0/+g[(c[b+116>>2]|0)+336>>2];e=b+136|0;if((c[e>>2]|0)<=0){return}f=b+144|0;b=0;do{h=c[f>>2]|0;do{if((a[h+(b*284|0)+84|0]&1)==0){g[h+(b*284|0)+276>>2]=0.0}else{i=+g[h+(b*284|0)+272>>2];j=d*(+g[h+(b*284|0)+216>>2]*(+g[h+(b*284|0)+204>>2]- +g[h+(b*284|0)+32>>2])*+g[h+(b*284|0)+268>>2]-i*+g[(i<0.0?h+(b*284|0)+220|0:h+(b*284|0)+224|0)>>2]);k=h+(b*284|0)+276|0;g[k>>2]=j;if(j>=0.0){break}g[k>>2]=0.0}}while(0);b=b+1|0;}while((b|0)<(c[e>>2]|0));return}function Jn(a){a=a|0;return c[a+116>>2]|0}function Jo(a){a=a|0;return c[a+88>>2]|0}function Jp(a,b){a=a|0;b=b|0;return(c[a+144>>2]|0)+(b*284|0)+92|0}function Jq(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Jr(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=a;a=0;while(1){if((a|0)>=3){break}d=+ck(+(+g[b+(a<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[c+860+(a<<6)+4>>2]=e;a=a+1|0}return}function Js(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a|0,b,d);return}function Jt(a,b){a=a|0;b=b|0;return ao$(a,b)|0}function Ju(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function Jv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+16>>2]&1023](a,b,d,e);return}function Jw(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return+(+cN[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,k,l))}function Jx(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,d);return}function Jy(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0.0,A=0.0,B=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0.0,ap=0,aq=0,ar=0.0,as=0,at=0,au=0.0,av=0,aw=0,ax=0.0,ay=0,az=0,aA=0.0,aB=0,aC=0,aD=0.0;while(1){i=aDx(1428)|0;if((i|0)!=0){break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){k=4300;break}dC[j&63]()}if((k|0)==4300){k=cd(4)|0;c[k>>2]=19096;bF(k|0,34368,676);return 0}k=i;do{if((a[43040]|0)==0){if((b1(43040)|0)==0){break}do{if((a[43048]|0)==0){if((b1(43048)|0)==0){break}g[10704]=1.0;aDD(42820,0,16);g[10709]=1.0;aDD(42840,0,16);g[10714]=1.0;g[10715]=0.0}}while(0);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16)}}while(0);do{if((a[43040]|0)==0){if((b1(43040)|0)==0){break}do{if((a[43048]|0)==0){if((b1(43048)|0)==0){break}g[10704]=1.0;aDD(42820,0,16);g[10709]=1.0;aDD(42840,0,16);g[10714]=1.0;g[10715]=0.0}}while(0);c[10688]=c[10704];c[10689]=c[10705];c[10690]=c[10706];c[10691]=c[10707];c[10692]=c[10708];c[42772>>2]=c[42836>>2];c[42776>>2]=c[42840>>2];c[42780>>2]=c[42844>>2];c[10696]=c[10712];c[42788>>2]=c[42852>>2];c[42792>>2]=c[42856>>2];c[42796>>2]=c[42860>>2];aDD(42800,0,16)}}while(0);j=i;aoY(j,b,d,42752,42752,1);c[i+4>>2]=9;a[i+1301|0]=0;l=i+1308|0;g[l>>2]=0.0;g[i+1332>>2]=0.0;g[i+1356>>2]=1.0;a[i+1302|0]=0;m=i+1312|0;g[m>>2]=0.0;g[i+1336>>2]=0.0;g[i+1360>>2]=1.0;n=i+1303|0;a[n]=0;o=i+1316|0;g[o>>2]=0.0;p=i+1340|0;g[p>>2]=0.0;q=i+1364|0;g[q>>2]=1.0;a[i+1304|0]=0;r=i+1320|0;g[r>>2]=0.0;g[i+1344>>2]=0.0;g[i+1368>>2]=1.0;a[i+1305|0]=0;s=i+1324|0;g[s>>2]=0.0;g[i+1348>>2]=0.0;g[i+1372>>2]=1.0;a[i+1306|0]=0;t=i+1328|0;g[t>>2]=0.0;g[i+1352>>2]=0.0;g[i+1376>>2]=1.0;c[i>>2]=23296;u=i+1380|0;v=e;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];v=i+1396|0;u=f;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];u=i+1412|0;v=h;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];v=f|0;w=+g[v>>2];u=f+4|0;x=+g[u>>2];y=f+8|0;z=+g[y>>2];A=1.0/+Q(+(w*w+x*x+z*z));B=w*A;g[v>>2]=B;w=x*A;g[u>>2]=w;x=z*A;g[y>>2]=x;y=h|0;A=+g[y>>2];u=h+4|0;z=+g[u>>2];v=h+8|0;D=+g[v>>2];E=1.0/+Q(+(A*A+z*z+D*D));F=A*E;g[y>>2]=F;A=z*E;g[u>>2]=A;z=D*E;g[v>>2]=z;E=w*z-x*A;D=x*F-B*z;G=B*A-w*F;H=+g[e>>2];I=+g[e+4>>2];J=+g[e+8>>2];K=+g[b+4>>2];L=+g[b+20>>2];M=+g[b+36>>2];N=+g[b+8>>2];O=+g[b+24>>2];P=+g[b+40>>2];R=+g[b+12>>2];S=+g[b+28>>2];T=+g[b+44>>2];U=-0.0- +g[b+52>>2];V=-0.0- +g[b+56>>2];W=-0.0- +g[b+60>>2];g[i+40>>2]=F*K+A*L+z*M;g[i+44>>2]=E*K+D*L+G*M;g[i+48>>2]=B*K+w*L+x*M;g[i+52>>2]=0.0;g[i+56>>2]=F*N+A*O+z*P;g[i+60>>2]=E*N+D*O+G*P;g[i+64>>2]=B*N+w*O+x*P;g[i+68>>2]=0.0;g[i+72>>2]=F*R+A*S+z*T;g[i+76>>2]=E*R+D*S+G*T;g[i+80>>2]=B*R+w*S+x*T;g[i+84>>2]=0.0;g[i+88>>2]=H*K+I*L+J*M+(K*U+L*V+M*W);g[i+92>>2]=H*N+I*O+J*P+(N*U+O*V+P*W);g[i+96>>2]=H*R+I*S+J*T+(R*U+S*V+T*W);g[i+100>>2]=0.0;W=+g[d+4>>2];T=+g[d+20>>2];V=+g[d+36>>2];S=+g[d+8>>2];U=+g[d+24>>2];R=+g[d+40>>2];P=+g[d+12>>2];O=+g[d+28>>2];N=+g[d+44>>2];M=-0.0- +g[d+52>>2];L=-0.0- +g[d+56>>2];K=-0.0- +g[d+60>>2];g[i+104>>2]=F*W+A*T+z*V;g[i+108>>2]=E*W+D*T+G*V;g[i+112>>2]=B*W+w*T+x*V;g[i+116>>2]=0.0;g[i+120>>2]=F*S+A*U+z*R;g[i+124>>2]=E*S+D*U+G*R;g[i+128>>2]=B*S+w*U+x*R;g[i+132>>2]=0.0;g[i+136>>2]=F*P+A*O+z*N;g[i+140>>2]=E*P+D*O+G*N;g[i+144>>2]=B*P+w*O+x*N;g[i+148>>2]=0.0;g[i+152>>2]=H*W+I*T+J*V+(W*M+T*L+V*K);g[i+156>>2]=H*S+I*U+J*R+(S*M+U*L+R*K);g[i+160>>2]=H*P+I*O+J*N+(P*M+O*L+N*K);g[i+164>>2]=0.0;g[i+672>>2]=0.0;g[i+676>>2]=0.0;g[i+680>>2]=-1.0;g[i+684>>2]=0.0;g[i+688>>2]=0.0;g[i+692>>2]=0.0;g[i+696>>2]=1.0;g[i+700>>2]=0.0;K=+ck(1.0,6.2831854820251465);do{if(K<-3.1415927410125732){X=K+6.2831854820251465}else{if(K<=3.1415927410125732){X=K;break}X=K-6.2831854820251465}}while(0);g[i+860>>2]=X;X=+ck(0.0,6.2831854820251465);do{if(X<-3.1415927410125732){Y=X+6.2831854820251465}else{if(X<=3.1415927410125732){Y=X;break}Y=X-6.2831854820251465}}while(0);g[i+924>>2]=Y;Y=+ck(-.7853981852531433,6.2831854820251465);do{if(Y<-3.1415927410125732){Z=Y+6.2831854820251465}else{if(Y<=3.1415927410125732){Z=Y;break}Z=Y-6.2831854820251465}}while(0);g[i+988>>2]=Z;Z=+ck(-1.0,6.2831854820251465);do{if(Z<-3.1415927410125732){_=Z+6.2831854820251465}else{if(Z<=3.1415927410125732){_=Z;break}_=Z-6.2831854820251465}}while(0);g[i+864>>2]=_;_=+ck(0.0,6.2831854820251465);do{if(_<-3.1415927410125732){$=_+6.2831854820251465}else{if(_<=3.1415927410125732){$=_;break}$=_-6.2831854820251465}}while(0);g[i+928>>2]=$;$=+ck(.7853981852531433,6.2831854820251465);if($<-3.1415927410125732){aa=$+6.2831854820251465;ab=i+992|0;ac=ab;g[ac>>2]=aa;a[n]=1;ad=i+782|0;a[ad]=1;g[p>>2]=39.47842025756836;g[q>>2]=.009999999776482582;ae=i+24|0;af=ae;ag=c[af>>2]|0;ah=ag+4|0;ai=i+28|0;aj=ai;ak=c[aj>>2]|0;al=ak+4|0;aoZ(j,ah,al);am=i+1248|0;an=am;ao=+g[an>>2];g[l>>2]=ao;ap=i+1252|0;aq=ap;ar=+g[aq>>2];g[m>>2]=ar;as=i+1256|0;at=as;au=+g[at>>2];g[o>>2]=au;av=i+1184|0;aw=av;ax=+g[aw>>2];g[r>>2]=ax;ay=i+1188|0;az=ay;aA=+g[az>>2];g[s>>2]=aA;aB=i+1192|0;aC=aB;aD=+g[aC>>2];g[t>>2]=aD;return k|0}if($<=3.1415927410125732){aa=$;ab=i+992|0;ac=ab;g[ac>>2]=aa;a[n]=1;ad=i+782|0;a[ad]=1;g[p>>2]=39.47842025756836;g[q>>2]=.009999999776482582;ae=i+24|0;af=ae;ag=c[af>>2]|0;ah=ag+4|0;ai=i+28|0;aj=ai;ak=c[aj>>2]|0;al=ak+4|0;aoZ(j,ah,al);am=i+1248|0;an=am;ao=+g[an>>2];g[l>>2]=ao;ap=i+1252|0;aq=ap;ar=+g[aq>>2];g[m>>2]=ar;as=i+1256|0;at=as;au=+g[at>>2];g[o>>2]=au;av=i+1184|0;aw=av;ax=+g[aw>>2];g[r>>2]=ax;ay=i+1188|0;az=ay;aA=+g[az>>2];g[s>>2]=aA;aB=i+1192|0;aC=aB;aD=+g[aC>>2];g[t>>2]=aD;return k|0}aa=$-6.2831854820251465;ab=i+992|0;ac=ab;g[ac>>2]=aa;a[n]=1;ad=i+782|0;a[ad]=1;g[p>>2]=39.47842025756836;g[q>>2]=.009999999776482582;ae=i+24|0;af=ae;ag=c[af>>2]|0;ah=ag+4|0;ai=i+28|0;aj=ai;ak=c[aj>>2]|0;al=ak+4|0;aoZ(j,ah,al);am=i+1248|0;an=am;ao=+g[an>>2];g[l>>2]=ao;ap=i+1252|0;aq=ap;ar=+g[aq>>2];g[m>>2]=ar;as=i+1256|0;at=as;au=+g[at>>2];g[o>>2]=au;av=i+1184|0;aw=av;ax=+g[aw>>2];g[r>>2]=ax;ay=i+1188|0;az=ay;aA=+g[az>>2];g[s>>2]=aA;aB=i+1192|0;aC=aB;aD=+g[aC>>2];g[t>>2]=aD;return k|0}function Jz(a,b){a=a|0;b=b|0;c[a+88>>2]=b;return}function JA(a){a=a|0;return c[a+136>>2]|0}function JB(a){a=a|0;return c[a+120>>2]|0}function JC(a,b,d){a=a|0;b=+b;d=d|0;g[(c[a+144>>2]|0)+(d*284|0)+252>>2]=b;return}function JD(a,b){a=a|0;b=b|0;return(c[a+144>>2]|0)+(b*284|0)|0}function JE(a){a=a|0;return(c[a+116>>2]|0)+4|0}function JF(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0;b=a+136|0;if((c[b>>2]|0)<=0){return}d=a+144|0;a=0;do{e=c[d>>2]|0;g[e+(a*284|0)+32>>2]=+g[e+(a*284|0)+204>>2];g[e+(a*284|0)+272>>2]=0.0;f=-0.0- +g[e+(a*284|0)+56>>2];h=-0.0- +g[e+(a*284|0)+60>>2];g[e+(a*284|0)>>2]=-0.0- +g[e+(a*284|0)+52>>2];g[e+(a*284|0)+4>>2]=f;g[e+(a*284|0)+8>>2]=h;g[e+(a*284|0)+12>>2]=0.0;g[e+(a*284|0)+268>>2]=1.0;a=a+1|0;}while((a|0)<(c[b>>2]|0));return}function JG(a,b){a=a|0;b=b|0;c[a+84>>2]=b;return}function JH(a){a=a|0;return c[a+128>>2]|0}function JI(a,b){a=a|0;b=b|0;return+(+g[(c[a+144>>2]|0)+(b*284|0)+232>>2])}function JJ(a){a=a|0;return c[a+84>>2]|0}function JK(a){a=a|0;return c[a+124>>2]|0}function JL(a,b){a=a|0;b=+b;g[a+104>>2]=b;return}function JM(a){a=a|0;return+(+g[a+112>>2])}function JN(a,b,d){a=a|0;b=+b;d=d|0;g[(c[a+144>>2]|0)+(d*284|0)+256>>2]=b;return}function JO(a,b,d){a=a|0;b=+b;d=d|0;g[(c[a+144>>2]|0)+(d*284|0)+232>>2]=b;return}function JP(a,c){a=a|0;c=c|0;b[a+12>>1]=c;return}function JQ(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function JR(a,c){a=a|0;c=c|0;b[a+14>>1]=c;return}function JS(a){a=a|0;return+(+g[a+4>>2])}function JT(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function JU(a){a=a|0;return b[a+14>>1]|0}function JV(a){a=a|0;return a+56|0}function JW(a){a=a|0;return c[a+16>>2]|0}function JX(a){a=a|0;return a+40|0}function JY(a){a=a|0;return b[a+12>>1]|0}function JZ(a){a=a|0;return(c[a+8>>2]|0)!=0|0}function J_(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function J$(a){a=a|0;return c[a+8>>2]|0}function J0(a){a=a|0;return(c[a+4>>2]|0)==31|0} +function J1(b,d,e,f,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;h=+h;j=+j;k=k|0;l=l|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;m=i;i=i+256|0;n=m+48|0;o=l&1;l=m|0;p=m+16|0;q=m+32|0;r=n;s=d;c[l>>2]=c[s>>2];c[l+4>>2]=c[s+4>>2];c[l+8>>2]=c[s+8>>2];c[l+12>>2]=c[s+12>>2];s=e;c[p>>2]=c[s>>2];c[p+4>>2]=c[s+4>>2];c[p+8>>2]=c[s+8>>2];c[p+12>>2]=c[s+12>>2];s=f;c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];t=+g[k>>2];u=+g[k+4>>2];v=+g[k+8>>2];w=+g[k+16>>2];x=+g[k+12>>2];y=+g[k+20>>2];k=n+156|0;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];l=n+172|0;c[l>>2]=c[p>>2];c[l+4>>2]=c[p+4>>2];c[l+8>>2]=c[p+8>>2];c[l+12>>2]=c[p+12>>2];p=n+188|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=b+136|0;s=c[q>>2]|0;f=b+140|0;do{if((s|0)==(c[f>>2]|0)){e=(s|0)==0?1:s<<1;if((s|0)>=(e|0)){z=s;break}if((e|0)==0){A=0;B=s}else{c[9806]=(c[9806]|0)+1;d=aDx((e*284|0)+19|0)|0;if((d|0)==0){C=0}else{D=-(d+4|0)&15;c[d+D>>2]=d;C=d+(D+4)|0}A=C;B=c[q>>2]|0}D=b+144|0;if((B|0)>0){d=0;while(1){E=A+(d*284|0)|0;if((E|0)!=0){F=c[D>>2]|0;G=E;E=F+(d*284|0)|0;aDC(G|0,E|0,92)|0;E=A+(d*284|0)+92|0;G=F+(d*284|0)+92|0;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];c[E+8>>2]=c[G+8>>2];c[E+12>>2]=c[G+12>>2];G=A+(d*284|0)+108|0;E=F+(d*284|0)+108|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];E=A+(d*284|0)+124|0;G=F+(d*284|0)+124|0;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];c[E+8>>2]=c[G+8>>2];c[E+12>>2]=c[G+12>>2];G=A+(d*284|0)+140|0;E=F+(d*284|0)+140|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];E=A+(d*284|0)+156|0;G=F+(d*284|0)+156|0;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];c[E+8>>2]=c[G+8>>2];c[E+12>>2]=c[G+12>>2];G=A+(d*284|0)+172|0;E=F+(d*284|0)+172|0;c[G>>2]=c[E>>2];c[G+4>>2]=c[E+4>>2];c[G+8>>2]=c[E+8>>2];c[G+12>>2]=c[E+12>>2];E=A+(d*284|0)+188|0;G=F+(d*284|0)+188|0;c[E>>2]=c[G>>2];c[E+4>>2]=c[G+4>>2];c[E+8>>2]=c[G+8>>2];c[E+12>>2]=c[G+12>>2];g[A+(d*284|0)+204>>2]=+g[F+(d*284|0)+204>>2];g[A+(d*284|0)+208>>2]=+g[F+(d*284|0)+208>>2];g[A+(d*284|0)+212>>2]=+g[F+(d*284|0)+212>>2];g[A+(d*284|0)+216>>2]=+g[F+(d*284|0)+216>>2];g[A+(d*284|0)+220>>2]=+g[F+(d*284|0)+220>>2];g[A+(d*284|0)+224>>2]=+g[F+(d*284|0)+224>>2];g[A+(d*284|0)+228>>2]=+g[F+(d*284|0)+228>>2];g[A+(d*284|0)+232>>2]=+g[F+(d*284|0)+232>>2];g[A+(d*284|0)+236>>2]=+g[F+(d*284|0)+236>>2];g[A+(d*284|0)+240>>2]=+g[F+(d*284|0)+240>>2];g[A+(d*284|0)+244>>2]=+g[F+(d*284|0)+244>>2];g[A+(d*284|0)+248>>2]=+g[F+(d*284|0)+248>>2];g[A+(d*284|0)+252>>2]=+g[F+(d*284|0)+252>>2];g[A+(d*284|0)+256>>2]=+g[F+(d*284|0)+256>>2];a[A+(d*284|0)+260|0]=a[F+(d*284|0)+260|0]&1;c[A+(d*284|0)+264>>2]=c[F+(d*284|0)+264>>2];g[A+(d*284|0)+268>>2]=+g[F+(d*284|0)+268>>2];g[A+(d*284|0)+272>>2]=+g[F+(d*284|0)+272>>2];g[A+(d*284|0)+276>>2]=+g[F+(d*284|0)+276>>2];g[A+(d*284|0)+280>>2]=+g[F+(d*284|0)+280>>2]}F=d+1|0;if((F|0)<(B|0)){d=F}else{H=D;break}}}else{H=D}d=c[H>>2]|0;F=b+148|0;if((d|0)!=0){if((a[F]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-284+280>>2]|0)}c[H>>2]=0}a[F]=1;c[H>>2]=A;c[f>>2]=e;z=c[q>>2]|0}else{z=s}}while(0);s=b+144|0;f=c[s>>2]|0;A=f+(z*284|0)|0;if((A|0)==0){I=z;J=f;K=I+1|0;c[q>>2]=K;L=J+(I*284|0)|0;apO(b,L,0);M=c[q>>2]|0;N=M-1|0;apP(b,N,0);O=16;P=0;Q=16;R=0;S=16;T=0;U=204;V=0;i=m;return L|0}H=A;aDC(H|0,r|0,92)|0;r=f+(z*284|0)+92|0;H=n+92|0;c[r>>2]=c[H>>2];c[r+4>>2]=c[H+4>>2];c[r+8>>2]=c[H+8>>2];c[r+12>>2]=c[H+12>>2];H=f+(z*284|0)+108|0;r=n+108|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];r=f+(z*284|0)+124|0;H=n+124|0;c[r>>2]=c[H>>2];c[r+4>>2]=c[H+4>>2];c[r+8>>2]=c[H+8>>2];c[r+12>>2]=c[H+12>>2];H=f+(z*284|0)+140|0;r=n+140|0;c[H>>2]=c[r>>2];c[H+4>>2]=c[r+4>>2];c[H+8>>2]=c[r+8>>2];c[H+12>>2]=c[r+12>>2];r=f+(z*284|0)+156|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=f+(z*284|0)+172|0;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];l=f+(z*284|0)+188|0;c[l>>2]=c[p>>2];c[l+4>>2]=c[p+4>>2];c[l+8>>2]=c[p+8>>2];c[l+12>>2]=c[p+12>>2];g[f+(z*284|0)+204>>2]=h;g[f+(z*284|0)+208>>2]=x;g[f+(z*284|0)+212>>2]=j;g[f+(z*284|0)+216>>2]=t;g[f+(z*284|0)+220>>2]=u;g[f+(z*284|0)+224>>2]=v;g[f+(z*284|0)+228>>2]=w;g[f+(z*284|0)+232>>2]=0.0;g[f+(z*284|0)+236>>2]=0.0;g[f+(z*284|0)+240>>2]=0.0;g[f+(z*284|0)+244>>2]=.10000000149011612;g[f+(z*284|0)+248>>2]=y;g[f+(z*284|0)+252>>2]=0.0;g[f+(z*284|0)+256>>2]=0.0;a[f+(z*284|0)+260|0]=o;I=c[q>>2]|0;J=c[s>>2]|0;K=I+1|0;c[q>>2]=K;L=J+(I*284|0)|0;apO(b,L,0);M=c[q>>2]|0;N=M-1|0;apP(b,N,0);O=16;P=0;Q=16;R=0;S=16;T=0;U=204;V=0;i=m;return L|0}function J2(a,b){a=a|0;b=b|0;apP(a,b,1);return}function J3(a,b,c){a=a|0;b=b|0;c=c|0;apP(a,b,c);return}function J4(a,b){a=a|0;b=b|0;return+(+apQ(a,b))}function J5(b){b=b|0;var d=0,e=0,f=0.0,h=0.0;do{if((a[43824]|0)==0){if((b1(43824)|0)==0){break}}}while(0);d=c[b+116>>2]|0;e=c[b+128>>2]|0;f=+g[d+20+(e<<2)>>2];h=+g[d+36+(e<<2)>>2];g[9350]=+g[d+4+(e<<2)>>2];g[9351]=f;g[9352]=h;g[9353]=0.0;return 37400}function J6(a,b){a=a|0;b=b|0;apO(a,b,1);return}function J7(a,b,c){a=a|0;b=b|0;c=c|0;apO(a,b,c);return}function J8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a,b,d,e);return}function J9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function Ka(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Kb(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+20>>2]&1023](a,b);return}function Kc(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+16>>2]&1023](a,b);return}function Kd(a,b,d){a=a|0;b=b|0;d=+d;dF[c[(c[a>>2]|0)+8>>2]&255](a,b,d);return}function Ke(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Kf(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function Kg(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function Kh(a,b){a=a|0;b=b|0;var d=0;d=a+56|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ki(a,b){a=a|0;b=b|0;var d=0;d=a+40|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Kj(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function Kk(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0;while(1){f=aDx(152)|0;if((f|0)!=0){h=4445;break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){break}dC[b&63]()}if((h|0)==4445){c[f>>2]=23912;a[f+20|0]=1;c[f+16>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;a[f+40|0]=1;c[f+36>>2]=0;c[f+28>>2]=0;c[f+32>>2]=0;a[f+60|0]=1;c[f+56>>2]=0;c[f+48>>2]=0;c[f+52>>2]=0;a[f+80|0]=1;c[f+76>>2]=0;c[f+68>>2]=0;c[f+72>>2]=0;c[f+100>>2]=e;g[f+104>>2]=0.0;a[f+148|0]=1;c[f+144>>2]=0;c[f+136>>2]=0;c[f+140>>2]=0;c[f+116>>2]=d;c[f+120>>2]=0;c[f+124>>2]=2;c[f+128>>2]=1;g[f+112>>2]=0.0;g[f+108>>2]=0.0;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function Kl(d,e){d=d|0;e=e|0;var f=0,h=0,i=0;while(1){f=aDx(132)|0;if((f|0)!=0){h=4457;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==4457){g[f+4>>2]=1.0;c[f+8>>2]=0;b[f+12>>1]=1;b[f+14>>1]=-1;c[f+16>>2]=0;c[f>>2]=19512;a[f+36|0]=1;c[f+32>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;h=f+40|0;i=d;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];i=f+56|0;h=e;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];a[f+88|0]=1;c[f+84>>2]=0;c[f+76>>2]=0;c[f+80>>2]=0;a[f+108|0]=1;c[f+104>>2]=0;c[f+96>>2]=0;c[f+100>>2]=0;a[f+128|0]=1;c[f+124>>2]=0;c[f+116>>2]=0;c[f+120>>2]=0;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function Km(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Kn(a){a=a|0;return c[a+52>>2]|0}function Ko(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Kp(a){a=a|0;return a+12|0}function Kq(a){a=a|0;return+(+g[a+44>>2])}function Kr(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Ks(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Kt(a){a=a|0;return c[a+8>>2]|0}function Ku(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Kv(a){a=a|0;return a+28|0}function Kw(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Kx(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Ky(a){a=a|0;return a+28|0}function Kz(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function KA(a){a=a|0;return c[a+4>>2]|0}function KB(a){a=a|0;return+(+g[a+4>>2])}function KC(a,c){a=a|0;c=c|0;b[a+12>>1]=c;return}function KD(a){a=a|0;return c[a+16>>2]|0}function KE(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function KF(a,c){a=a|0;c=c|0;b[a+14>>1]=c;return}function KG(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function KH(a){a=a|0;return(c[a+8>>2]|0)!=0|0}function KI(a){a=a|0;return b[a+14>>1]|0}function KJ(a){a=a|0;return b[a+12>>1]|0}function KK(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function KL(a){a=a|0;return c[a+8>>2]|0}function KM(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function KN(a){a=a|0;return(c[a+4>>2]|0)<7|0}function KO(a){a=a|0;return(c[a+4>>2]|0)==31|0}function KP(a){a=a|0;return c[a+12>>2]|0}function KQ(a){a=a|0;return(c[a+4>>2]|0)<20|0}function KR(a){a=a|0;return(c[a+4>>2]|0)==28|0}function KS(a){a=a|0;return c[a+8>>2]|0}function KT(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function KU(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function KV(a){a=a|0;return(c[a+4>>2]|0)==32|0}function KW(a){a=a|0;return+(+g[a+16>>2])}function KX(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43664]|0)==0){if((b1(43664)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9346]=c[d>>2];c[9347]=c[d+4>>2];c[9348]=c[d+8>>2];c[9349]=c[d+12>>2];i=e;return 37384}function KY(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function KZ(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function K_(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function K$(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function K0(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+84>>2]&1023](a))}function K1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function K2(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function K3(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function K4(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43184]|0)==0){if((b1(43184)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9342]=c[d>>2];c[9343]=c[d+4>>2];c[9344]=c[d+8>>2];c[9345]=c[d+12>>2];i=e;return 37368}function K5(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43360]|0)==0){if((b1(43360)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9338]=c[d>>2];c[9339]=c[d+4>>2];c[9340]=c[d+8>>2];c[9341]=c[d+12>>2];i=e;return 37352}function K6(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function K7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function K8(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43504]|0)==0){if((b1(43504)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9334]=c[d>>2];c[9335]=c[d+4>>2];c[9336]=c[d+8>>2];c[9337]=c[d+12>>2];i=e;return 37336}function K9(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function La(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function Lb(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function Lc(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ld(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 1:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function Le(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Lf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function Lg(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function Lh(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function Li(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,i=0.0;c[9806]=(c[9806]|0)+1;b=aDx(75)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;b=d|0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[b>>2]=24848;f=d+52|0;c[f>>2]=1;h=+g[a+4>>2]+-.03999999910593033;i=+g[a+8>>2]+-.03999999910593033;g[d+28>>2]=+g[a>>2]+-.03999999910593033;g[d+32>>2]=h;g[d+36>>2]=i;g[d+40>>2]=0.0;c[e>>2]=13;c[b>>2]=24256;c[f>>2]=0;return d|0}function Lj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function Lk(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function Ll(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function Lm(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;do{if((a[43672]|0)==0){if((b1(43672)|0)==0){break}}}while(0);d=+g[b+28>>2];e=+g[b+32>>2];f=+g[b+36>>2];h=+g[b+40>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=f+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);g[9330]=d+k;g[9331]=e+l;g[9332]=m;g[9333]=h;return 37320}function Ln(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function Lo(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function Lp(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function Lq(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43560]|0)==0){if((b1(43560)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9326]=c[d>>2];c[9327]=c[d+4>>2];c[9328]=c[d+8>>2];c[9329]=c[d+12>>2];i=e;return 37304}function Lr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function Ls(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function Lt(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a)|0}function Lu(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43376]|0)==0){if((b1(43376)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9322]=c[d>>2];c[9323]=c[d+4>>2];c[9324]=c[d+8>>2];c[9325]=c[d+12>>2];i=e;return 37288}function Lv(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Lw(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Lx(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Ly(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43112]|0)==0){if((b1(43112)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9318]=c[d>>2];c[9319]=c[d+4>>2];c[9320]=c[d+8>>2];c[9321]=c[d+12>>2];i=e;return 37272}function Lz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function LA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function LB(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function LC(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function LD(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function LE(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a,b,d);return}function LF(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function LG(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43232]|0)==0){if((b1(43232)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9302]=c[d>>2];c[9303]=c[d+4>>2];c[9304]=c[d+8>>2];c[9305]=c[d+12>>2];i=e;return 37208}function LH(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function LI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function LJ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function LK(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function LL(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function LM(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function LN(a){a=a|0;return c[a+4>>2]|0}function LO(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function LP(a){a=a|0;return a+16|0}function LQ(a){a=a|0;return a|0}function LR(a){a=a|0;return+(+g[a+32>>2])}function LS(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(d>=+g[c>>2]){return}g[c>>2]=d;return}function LT(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=0.0;return}function LU(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=e;return}function LV(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(+g[c>>2]>2]=d}c=a+4|0;d=+g[b+4>>2];if(+g[c>>2]>2]=d}c=a+8|0;d=+g[b+8>>2];if(+g[c>>2]>2]=d}c=a+12|0;d=+g[b+12>>2];if(+g[c>>2]>=d){return}g[c>>2]=d;return}function LW(a,b){a=a|0;b=b|0;var c=0;if(+g[a+12>>2]!=+g[b+12>>2]){c=0;return c|0}if(+g[a+8>>2]!=+g[b+8>>2]){c=0;return c|0}if(+g[a+4>>2]!=+g[b+4>>2]){c=0;return c|0}c=+g[a>>2]==+g[b>>2];return c|0}function LX(a){a=a|0;return+(+g[a>>2])}function LY(a){a=a|0;return+(+g[a+4>>2])}function LZ(a){a=a|0;return+(+g[a+8>>2])}function L_(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function L$(a){a=a|0;return+(+g[a+12>>2])}function L0(a){a=a|0;return+(+g[a+4>>2])}function L1(a){a=a|0;return+(+g[a>>2])}function L2(a){a=a|0;return+(+g[a+8>>2])}function L3(a,b){a=a|0;b=+b;g[a>>2]=b;return}function L4(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function L5(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function L6(a){a=a|0;return(c[a+4>>2]|0)==31|0}function L7(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function L8(a){a=a|0;return c[a+52>>2]|0}function L9(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Ma(a){a=a|0;return a+12|0}function Mb(a){a=a|0;return+(+g[a+44>>2])}function Mc(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Md(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Me(a){a=a|0;return c[a+8>>2]|0}function Mf(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Mg(a){a=a|0;return a+28|0}function Mh(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Mi(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Mj(a){a=a|0;return a+28|0}function Mk(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function Ml(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function Mm(a,b){a=a|0;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(39)|0;e=-(d+4|0)&15;c[d+e>>2]=d;f=d+(e+4)|0;c[f+8>>2]=0;c[f>>2]=22040;c[f+12>>2]=a;g[f+16>>2]=b;c[f+4>>2]=14;return f|0}function Mn(a){a=a|0;if((a|0)==0){return}aDB(a);return}function Mo(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Mp(a,b){a=a|0;b=b|0;var d=0;d=a;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Mq(a){a=a|0;if((a|0)==0){return}aDB(a);return}function Mr(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return(a|0)!=0|0}function Ms(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function Mt(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43688]|0)==0){if((b1(43688)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9298]=c[d>>2];c[9299]=c[d+4>>2];c[9300]=c[d+8>>2];c[9301]=c[d+12>>2];i=e;return 37192}function Mu(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function Mv(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Mw(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function Mx(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+84>>2]&1023](a))}function My(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Mz(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function MA(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function MB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43200]|0)==0){if((b1(43200)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9294]=c[d>>2];c[9295]=c[d+4>>2];c[9296]=c[d+8>>2];c[9297]=c[d+12>>2];i=e;return 37176}function MC(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43384]|0)==0){if((b1(43384)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9290]=c[d>>2];c[9291]=c[d+4>>2];c[9292]=c[d+8>>2];c[9293]=c[d+12>>2];i=e;return 37160}function MD(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function ME(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function MF(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43528]|0)==0){if((b1(43528)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9286]=c[d>>2];c[9287]=c[d+4>>2];c[9288]=c[d+8>>2];c[9289]=c[d+12>>2];i=e;return 37144}function MG(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function MH(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function MI(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function MJ(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function MK(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 1:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function ML(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function MM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function MN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function MO(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function MP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function MQ(){var a=0,b=0,d=0;while(1){a=aDx(36)|0;if((a|0)!=0){b=4740;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==4740){g[a+32>>2]=-1.0;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function MR(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=4752;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==4752){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function MS(a,b,d){a=+a;b=+b;d=+d;var e=0,f=0,h=0;while(1){e=aDx(16)|0;if((e|0)!=0){f=4764;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((f|0)==4764){g[e>>2]=a;g[e+4>>2]=b;g[e+8>>2]=d;g[e+12>>2]=0.0;return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function MT(a,b,d,e){a=+a;b=+b;d=+d;e=+e;var f=0,h=0,i=0;while(1){f=aDx(16)|0;if((f|0)!=0){h=4776;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==4776){g[f>>2]=a;g[f+4>>2]=b;g[f+8>>2]=d;g[f+12>>2]=e;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function MU(a){a=a|0;return(a|0)==31|0}function MV(a){a=a|0;return(a|0)<7|0}function MW(a){a=a|0;return(a|0)<20|0}function MX(a){a=a|0;return((a|0)>20&(a|0)<30?(a|0)!=25:0)|0}function MY(a){a=a|0;return(a|0)==32|0}function MZ(a){a=a|0;return(a|0)==28|0}function M_(a){a=a|0;return((a|0)>20?(a|0)<30:0)|0}function M$(a){a=a|0;return((a|0)==17?1:(a|0)==18)|0}function M0(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function M1(a){a=a|0;return c[a+4>>2]|0}function M2(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function M3(a){a=a|0;return+(+g[a+36>>2])}function M4(a){a=a|0;return a+20|0}function M5(a){a=a|0;return a+4|0}function M6(a){a=a|0;return c[a>>2]|0}function M7(a){a=a|0;return c[a+60>>2]|0}function M8(a,b){a=a|0;b=b|0;c[a+60>>2]=b;return}function M9(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Na(a){a=a|0;return c[a+48>>2]|0}function Nb(a){a=a|0;return a+16|0}function Nc(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Nd(a){a=a|0;return b[a+6>>1]|0}function Ne(a){a=a|0;return c[a+12>>2]|0}function Nf(a){a=a|0;return a+32|0}function Ng(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Nh(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function Ni(a){a=a|0;return c[a+12>>2]|0}function Nj(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function Nk(a,b){a=a|0;b=b|0;c[a+48>>2]=b;return}function Nl(a){a=a|0;return c[a+8>>2]|0}function Nm(a){a=a|0;return b[a+4>>1]|0}function Nn(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function No(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function Np(a){a=a|0;return b[a+6>>1]|0}function Nq(a){a=a|0;return b[a+4>>1]|0}function Nr(a){a=a|0;var b=0;b=a+124|0;a=(aa(c[b>>2]|0,1664525)|0)+1013904223|0;c[b>>2]=a;return a|0}function Ns(a){a=a|0;return c[a+124>>2]|0}function Nt(a,b){a=a|0;b=b|0;c[a+124>>2]=b;return}function Nu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+124|0;a=(aa(c[d>>2]|0,1664525)|0)+1013904223|0;c[d>>2]=a;do{if(b>>>0<65537){d=a>>>16^a;if(b>>>0>=257){e=d;break}f=d>>>8^d;if(b>>>0>=17){e=f;break}d=f>>>4^f;if(b>>>0>=5){e=d;break}f=d>>>2^d;if(b>>>0>=3){e=f;break}e=f>>>1^f}else{e=a}}while(0);return(e>>>0)%(b>>>0)|0|0}function Nv(a){a=a|0;return a+100|0}function Nw(a){a=a|0;return c[a+24>>2]|0}function Nx(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function Ny(a){a=a|0;return a+4|0}function Nz(a,b){a=a|0;b=b|0;c[a+88>>2]=b;c[a+96>>2]=0;return}function NA(a,b,d){a=a|0;b=b|0;d=d|0;c[a+88>>2]=b;c[a+96>>2]=d;return}function NB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;if(e){c[a+92>>2]=b}else{c[a+88>>2]=b}c[a+96>>2]=d;return}function NC(b){b=b|0;return(a[b+84|0]&1)!=0|0}function ND(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function NE(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function NF(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function NG(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0;c[9806]=(c[9806]|0)+1;b=aDx(75)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[d>>2]=24848;c[d+52>>2]=1;f=+g[a+4>>2]+-.03999999910593033;h=+g[a+8>>2]+-.03999999910593033;g[d+28>>2]=+g[a>>2]+-.03999999910593033;g[d+32>>2]=f;g[d+36>>2]=h;g[d+40>>2]=0.0;c[e>>2]=13;return d|0}function NH(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;do{if((a[43696]|0)==0){if((b1(43696)|0)==0){break}}}while(0);d=+g[b+28>>2];e=+g[b+32>>2];f=+g[b+36>>2];h=+g[b+40>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=f+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);g[9282]=d+k;g[9283]=e+l;g[9284]=m;g[9285]=h;return 37128}function NI(a,b){a=a|0;b=b|0;var d=0;d=a+20|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function NJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+16>>2]&127](a,b,d,e);return}function NK(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function NL(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,d);return}function NM(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a|0,b,d);return}function NN(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function NO(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;c[9806]=(c[9806]|0)+1;h=aDx(83)|0;if((h|0)==0){i=0}else{j=-(h+4|0)&15;c[h+j>>2]=h;i=h+(j+4)|0}c[i>>2]=e;b[i+4>>1]=f;b[i+6>>1]=g;g=i+16|0;f=a;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=i+32|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[i+8>>2]=0;c[i+56>>2]=0;c[i+52>>2]=0;return i|0}function NP(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function NQ(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-64+60>>2]|0);return}function NR(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function NS(a,b,d,e,f,g,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return+(+dq[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i))}function NT(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function NU(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function NV(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function NW(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a|0,b,d);return}function NX(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+16>>2]&1023](a|0,b,d,e);return}function NY(a,b,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return+(+cN[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,k,l))}function NZ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+68>>2]&2047](a,b);return}function N_(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function N$(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a|0,b);return}function N0(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+80>>2]&2047](a,b);return}function N1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+84>>2]&1023](a,b,d,e);return}function N2(a){a=a|0;ct[c[(c[a>>2]|0)+116>>2]&2047](a);return}function N3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+124>>2]&2047](a|0,b);return}function N4(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function N5(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a|0);return}function N6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a|0,b,d,e);return}function N7(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function N8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function N9(a){a=a|0;return cA[c[(c[a>>2]|0)+100>>2]&4095](a|0)|0}function Oa(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,1,-1);return}function Ob(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,-1);return}function Oc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b,d,e);return}function Od(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}function Oe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function Of(){var a=0,d=0,e=0;while(1){a=aDx(8)|0;if((a|0)!=0){d=4903;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==4903){b[a+4>>1]=1;b[a+6>>1]=-1;c[a>>2]=20096;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function Og(){var b=0,d=0,e=0;while(1){b=aDx(128)|0;if((b|0)!=0){d=4915;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==4915){c[b>>2]=19632;a[b+20|0]=1;c[b+16>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;a[b+40|0]=1;c[b+36>>2]=0;c[b+28>>2]=0;c[b+32>>2]=0;a[b+60|0]=1;c[b+56>>2]=0;c[b+48>>2]=0;c[b+52>>2]=0;a[b+80|0]=1;c[b+76>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;a[b+100|0]=1;c[b+96>>2]=0;c[b+88>>2]=0;c[b+92>>2]=0;a[b+120|0]=1;c[b+116>>2]=0;c[b+108>>2]=0;c[b+112>>2]=0;c[b+124>>2]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function Oh(a){a=a|0;return c[a+8>>2]|0}function Oi(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function Oj(a){a=a|0;return c[a+96>>2]|0}function Ok(a){a=a|0;return c[a+76>>2]|0}function Ol(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function Om(a){a=a|0;return a+28|0}function On(a){a=a|0;return c[a+4>>2]|0}function Oo(a){a=a|0;return c[a+136>>2]|0}function Op(a){a=a|0;return c[a+140>>2]|0}function Oq(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function Or(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Os(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Ot(a){a=a|0;return+(+g[a+44>>2])}function Ou(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function Ov(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function Ow(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function Ox(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a|0,b,c,d,e,0.0);return}function Oy(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a|0,b,c,d,e,f);return}function Oz(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+52>>2]&511](a|0,b,0);return}function OA(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d);return}function OB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function OC(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43832]|0)==0){if((b1(43832)|0)==0){break}}}while(0);cv[c[(c[b>>2]|0)+72>>2]&2047](e,b);b=e;c[9278]=c[b>>2];c[9279]=c[b+4>>2];c[9280]=c[b+8>>2];c[9281]=c[b+12>>2];i=d;return 37112}function OD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function OE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function OF(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function OG(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+132>>2]&2047](a|0,b);return}function OH(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+104>>2]&511](a|0,b)|0}function OI(a){a=a|0;return cA[c[(c[a>>2]|0)+96>>2]&4095](a)|0}function OJ(a,b){a=a|0;b=+b;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,1,.01666666753590107)|0}function OK(a,b,d){a=a|0;b=+b;d=d|0;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,.01666666753590107)|0}function OL(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;return dr[c[(c[a>>2]|0)+48>>2]&63](a,b,d,e)|0}function OM(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+128>>2]&2047](a|0,b);return}function ON(a){a=a|0;return cA[c[(c[a>>2]|0)+112>>2]&4095](a)|0}function OO(a,b){a=a|0;b=b|0;atC(a|0,b);return}function OP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+120>>2]&2047](a|0,b);return}function OQ(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function OR(a){a=a|0;ct[c[(c[a>>2]|0)+76>>2]&2047](a);return}function OS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function OT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+92>>2]&2047](a,b);return}function OU(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function OV(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function OW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+16>>2]&127](a,b,d,e);return}function OX(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function OY(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,d);return}function OZ(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((c[b+1116>>2]|0)==0){return}if((c[b+1108>>2]|0)==(c[a+136>>2]|0)){ay6(b,a+8|0,a+72|0);return}else{ay6(b,a+72|0,a+8|0);return}}function O_(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function O$(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43616]|0)==0){if((b1(43616)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9274]=c[d>>2];c[9275]=c[d+4>>2];c[9276]=c[d+8>>2];c[9277]=c[d+12>>2];i=e;return 37096}function O0(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function O1(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0;while(1){h=aDx(196)|0;if((h|0)!=0){i=5e3;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){i=4997;break}dC[j&63]()}if((i|0)==4997){j=cd(4)|0;c[j>>2]=19096;bF(j|0,34368,676);return 0}else if((i|0)==5e3){aty(h,b,d,f);c[h+88>>2]=0;c[h+92>>2]=0;c[h+96>>2]=0;g[h+100>>2]=.6000000238418579;g[h+104>>2]=1.0;g[h+108>>2]=.30000001192092896;g[h+116>>2]=0.0;g[h+124>>2]=20.0;c[h+120>>2]=10;g[h+132>>2]=.20000000298023224;g[h+136>>2]=.10000000149011612;g[h+140>>2]=0.0;g[h+128>>2]=1.0;c[h+144>>2]=0;g[h+148>>2]=-.019999999552965164;g[h+152>>2]=0.0;g[h+156>>2]=.8500000238418579;c[h+160>>2]=260;c[h+164>>2]=2;c[h+168>>2]=128;c[h>>2]=22176;c[h+172>>2]=e;a[h+176|0]=0;g[h+180>>2]=0.0;g[h+184>>2]=0.0;g[h+188>>2]=-10.0;g[h+192>>2]=0.0;return h|0}return 0}function O2(){var a=0,b=0,d=0,e=0;while(1){a=aDx(160)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=5011;break}dC[b&63]()}if((d|0)==5011){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;c[a>>2]=24e3;b=a+56|0;e=a+8|0;do{e=e+16|0;}while((e|0)!=(b|0));b=a+120|0;e=a+72|0;do{e=e+16|0;}while((e|0)!=(b|0));aDD(a+144|0,-1|0,16);return d|0}function O3(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;while(1){d=aDx(160)|0;if((d|0)!=0){e=5030;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==5030){c[d>>2]=24e3;c[d+4>>2]=0;e=d+8|0;f=d+72|0;c[d+136>>2]=a;c[d+140>>2]=b;g=a+4|0;aDD(d+144|0,-1|0,16);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=d+24|0;e=a+20|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=d+40|0;g=a+36|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=d+56|0;e=a+52|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=b+4|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=d+88|0;f=b+20|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=d+104|0;e=b+36|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=d+120|0;f=b+52|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function O4(a){a=a|0;return(c[a+4>>2]|0)<7|0}function O5(a,b){a=a|0;b=b|0;return+(+g[(c[a+120>>2]|0)+(b<<2)>>2])}function O6(a){a=a|0;return c[a+92>>2]|0}function O7(a){a=a|0;return a+12|0}function O8(a,b){a=a|0;b=b|0;return(c[a+100>>2]|0)+(b<<4)|0}function O9(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Pa(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Pb(a){a=a|0;return c[a+8>>2]|0}function Pc(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Pd(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Pe(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Pf(a){a=a|0;return a+28|0}function Pg(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Ph(a){a=a|0;return c[a+4>>2]|0}function Pi(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Pj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=i;i=i+16|0;c[9806]=(c[9806]|0)+1;h=aDx(147)|0;if((h|0)==0){j=0}else{k=-(h+4|0)&15;c[h+k>>2]=h;j=h+(k+4)|0}k=j;h=f|0;l=j;c[j+8>>2]=0;g[j+12>>2]=1.0;g[j+16>>2]=1.0;g[j+20>>2]=1.0;g[j+24>>2]=0.0;g[j+44>>2]=.03999999910593033;g[j+52>>2]=1.0;g[j+56>>2]=1.0;g[j+60>>2]=1.0;g[j+64>>2]=0.0;g[j+68>>2]=-1.0;g[j+72>>2]=-1.0;g[j+76>>2]=-1.0;g[j+80>>2]=0.0;a[j+84|0]=0;c[j>>2]=23192;m=j+104|0;a[m]=1;n=j+100|0;c[n>>2]=0;o=j+92|0;c[o>>2]=0;p=j+96|0;c[p>>2]=0;q=j+124|0;a[q]=1;r=j+120|0;c[r>>2]=0;s=j+112|0;c[s>>2]=0;t=j+116|0;c[t>>2]=0;c[j+4>>2]=9;j=(e|0)>0;if(j){c[9806]=(c[9806]|0)+1;u=aDx((e<<4|4)+15|0)|0;if((u|0)==0){v=0}else{w=-(u+4|0)&15;c[u+w>>2]=u;v=u+(w+4)|0}w=c[o>>2]|0;if((w|0)>0){u=0;do{x=v+(u<<4)|0;if((x|0)!=0){y=x;x=(c[n>>2]|0)+(u<<4)|0;c[y>>2]=c[x>>2];c[y+4>>2]=c[x+4>>2];c[y+8>>2]=c[x+8>>2];c[y+12>>2]=c[x+12>>2]}u=u+1|0;}while((u|0)<(w|0))}w=c[n>>2]|0;if((w|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[w-16+12>>2]|0)}c[n>>2]=0}a[m]=1;c[n>>2]=v;c[p>>2]=e;p=0;m=v;while(1){v=m+(p<<4)|0;if((v|0)!=0){w=v;c[w>>2]=c[h>>2];c[w+4>>2]=c[h+4>>2];c[w+8>>2]=c[h+8>>2];c[w+12>>2]=c[h+12>>2]}w=p+1|0;if((w|0)>=(e|0)){break}p=w;m=c[n>>2]|0}z=c[s>>2]|0}else{z=0}c[o>>2]=e;if((z|0)<(e|0)){if((c[t>>2]|0)<(e|0)){if((e|0)==0){A=0;B=z}else{c[9806]=(c[9806]|0)+1;o=aDx((e<<2)+19|0)|0;if((o|0)==0){C=0}else{m=-(o+4|0)&15;c[o+m>>2]=o;C=o+(m+4)|0}A=C;B=c[s>>2]|0}if((B|0)>0){C=0;do{m=A+(C<<2)|0;if((m|0)!=0){g[m>>2]=+g[(c[r>>2]|0)+(C<<2)>>2]}C=C+1|0;}while((C|0)<(B|0))}B=c[r>>2]|0;if((B|0)!=0){if((a[q]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[B-4>>2]|0)}c[r>>2]=0}a[q]=1;c[r>>2]=A;c[t>>2]=e;D=z}else{D=z}do{z=(c[r>>2]|0)+(D<<2)|0;if((z|0)!=0){g[z>>2]=0.0}D=D+1|0;}while((D|0)<(e|0))}c[s>>2]=e;if(j){j=0;do{s=(c[n>>2]|0)+(j<<4)|0;D=b+(j<<4)|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];g[(c[r>>2]|0)+(j<<2)>>2]=+g[d+(j<<2)>>2];j=j+1|0;}while((j|0)<(e|0))}avA(l);i=f;return k|0}function Pk(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function Pl(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43440]|0)==0){if((b1(43440)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9270]=c[d>>2];c[9271]=c[d+4>>2];c[9272]=c[d+8>>2];c[9273]=c[d+12>>2];i=e;return 37080}function Pm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function Pn(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function Po(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Pp(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43144]|0)==0){if((b1(43144)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9266]=c[d>>2];c[9267]=c[d+4>>2];c[9268]=c[d+8>>2];c[9269]=c[d+12>>2];i=e;return 37064}function Pq(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Pr(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function Ps(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function Pt(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function Pu(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function Pv(a){a=a|0;avA(a|0);return}function Pw(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function Px(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function Py(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Pz(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43312]|0)==0){if((b1(43312)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9258]=c[d>>2];c[9259]=c[d+4>>2];c[9260]=c[d+8>>2];c[9261]=c[d+12>>2];i=e;return 37032}function PA(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 1:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function PB(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function PC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function PD(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function PE(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function PF(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function PG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function PH(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function PI(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function PJ(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function PK(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function PL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function PM(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0;while(1){j=aDx(124)|0;if((j|0)!=0){k=5158;break}l=(C=c[10744]|0,c[10744]=C+0,C);if((l|0)==0){break}dC[l&63]()}if((k|0)==5158){k=j;c[j+4>>2]=35;c[j+8>>2]=0;g[j+12>>2]=0.0;c[j>>2]=20552;ax$(k,a,b,d,e/65535.0,0.0,e,f,h?0:5,i);return k|0}k=cd(4)|0;c[k>>2]=19096;bF(k|0,34368,676);return 0}function PN(a,b,d,e,f,h,i,j,k){a=a|0;b=b|0;d=d|0;e=+e;f=+f;h=+h;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0;while(1){l=aDx(124)|0;if((l|0)!=0){m=5170;break}n=(C=c[10744]|0,c[10744]=C+0,C);if((n|0)==0){break}dC[n&63]()}if((m|0)==5170){m=l;c[l+4>>2]=35;c[l+8>>2]=0;g[l+12>>2]=0.0;c[l>>2]=20552;ax$(m,a,b,d,e,f,h,i,j,k);return m|0}m=cd(4)|0;c[m>>2]=19096;bF(m|0,34368,676);return 0}function PO(a){a=a|0;return(c[a+4>>2]|0)==31|0}function PP(a){a=a|0;return(c[a+4>>2]|0)<7|0}function PQ(b){b=b|0;a[b+101|0]=1;return}function PR(b,c){b=b|0;c=c|0;a[b+101|0]=c&1;return}function PS(a){a=a|0;return(c[a+4>>2]|0)<20|0}function PT(a){a=a|0;return(c[a+4>>2]|0)==28|0}function PU(a){a=a|0;return c[a+8>>2]|0}function PV(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function PW(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function PX(a){a=a|0;return(c[a+4>>2]|0)==32|0}function PY(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function PZ(a){a=a|0;return c[a+4>>2]|0}function P_(a){a=a|0;return(c[a+4>>2]|0)==31|0}function P$(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function P0(a){a=a|0;return+(+g[a+44>>2])}function P1(a){a=a|0;return(c[a+4>>2]|0)<7|0}function P2(a){a=a|0;return a+12|0}function P3(a){a=a|0;return(c[a+4>>2]|0)<20|0}function P4(a){a=a|0;return(c[a+4>>2]|0)==28|0}function P5(a){a=a|0;return c[a+8>>2]|0}function P6(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function P7(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function P8(a){a=a|0;return(c[a+4>>2]|0)==32|0}function P9(a){a=a|0;return a+28|0}function Qa(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Qb(a){a=a|0;return c[a+4>>2]|0}function Qc(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Qd(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Qe(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Qf(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Qg(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Qh(a){a=a|0;return c[a+8>>2]|0}function Qi(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Qj(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Qk(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Ql(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Qm(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Qn(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function Qo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function Qp(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function Qq(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function Qr(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function Qs(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Qt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function Qu(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function Qv(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function Qw(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function Qx(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function Qy(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43288]|0)==0){if((b1(43288)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9254]=c[d>>2];c[9255]=c[d+4>>2];c[9256]=c[d+8>>2];c[9257]=c[d+12>>2];i=e;return 37016}function Qz(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function QA(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function QB(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function QC(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43136]|0)==0){if((b1(43136)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9250]=c[d>>2];c[9251]=c[d+4>>2];c[9252]=c[d+8>>2];c[9253]=c[d+12>>2];i=e;return 37e3}function QD(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function QE(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function QF(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function QG(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43072]|0)==0){if((b1(43072)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9246]=c[d>>2];c[9247]=c[d+4>>2];c[9248]=c[d+8>>2];c[9249]=c[d+12>>2];i=e;return 36984}function QH(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function QI(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function QJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function QK(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function QL(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function QM(a){a=a|0;avA(a);return}function QN(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function QO(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function QP(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43096]|0)==0){if((b1(43096)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9242]=c[d>>2];c[9243]=c[d+4>>2];c[9244]=c[d+8>>2];c[9245]=c[d+12>>2];i=e;return 36968}function QQ(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 0:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 10:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function QR(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function QS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function QT(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function QU(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function QV(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function QW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function QX(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function QY(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function QZ(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43736]|0)==0){if((b1(43736)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9238]=c[d>>2];c[9239]=c[d+4>>2];c[9240]=c[d+8>>2];c[9241]=c[d+12>>2];i=e;return 36952}function Q_(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function Q$(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function Q0(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a)|0}function Q1(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43592]|0)==0){if((b1(43592)|0)==0){break}}}while(0);avC(f,b,d);d=f;c[9234]=c[d>>2];c[9235]=c[d+4>>2];c[9236]=c[d+8>>2];c[9237]=c[d+12>>2];i=e;return 36936}function Q2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a,b,c,d);return}function Q3(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function Q4(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function Q5(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43272]|0)==0){if((b1(43272)|0)==0){break}}}while(0);avB(f,b,d);d=f;c[9230]=c[d>>2];c[9231]=c[d+4>>2];c[9232]=c[d+8>>2];c[9233]=c[d+12>>2];i=e;return 36920}function Q6(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function Q7(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function Q8(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function Q9(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function Ra(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a,b,d);return}function Rb(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function Rc(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43432]|0)==0){if((b1(43432)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9226]=c[d>>2];c[9227]=c[d+4>>2];c[9228]=c[d+8>>2];c[9229]=c[d+12>>2];i=e;return 36904}function Rd(a){a=a|0;var b=0.0;switch(c[a+4>>2]|0){case 13:{b=+g[a+44>>2];break};case 8:{b=+g[a+28>>2]*+g[a+12>>2];break};case 1:{b=+g[a+44>>2];break};case 0:{b=+g[a+44>>2];break};case 10:{b=+g[a+44>>2];break};case 5:case 4:{b=+g[a+44>>2];break};default:{b=+dh[c[(c[a>>2]|0)+44>>2]&1023](a)}}return+b}function Re(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function Rf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function Rg(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function Rh(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function Ri(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function Rj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function Rk(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Rl(a){a=a|0;return c[a+4>>2]|0}function Rm(a,b){a=a|0;b=b|0;c[a+20>>2]=b;return}function Rn(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Ro(a){a=a|0;return c[a+20>>2]|0}function Rp(a){a=a|0;return c[a+4>>2]|0}function Rq(a,b){a=a|0;b=b|0;c[a+28>>2]=b;return}function Rr(a){a=a|0;return c[a+24>>2]|0}function Rs(a,b){a=a|0;b=b|0;c[a+24>>2]=b;return}function Rt(a){a=a|0;return c[a+16>>2]|0}function Ru(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Rv(a){a=a|0;return c[a+28>>2]|0}function Rw(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Rx(a){a=a|0;return c[a+8>>2]|0}function Ry(a){a=a|0;return c[a>>2]|0}function Rz(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function RA(a){a=a|0;return c[a+12>>2]|0}function RB(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function RC(a){a=a|0;return a+32|0}function RD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;co[c[(c[a>>2]|0)+8>>2]&255](a,b,d,e,0);return}function RE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+8>>2]&255](a,b,d,e,f);return}function RF(a){a=a|0;if((a|0)==0){return}aDB(a);return}function RG(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+56>>2]&511](a,b)|0}function RH(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+40>>2]&511](a,b)|0}function RI(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function RJ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function RK(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function RL(a){a=a|0;return cA[c[(c[a>>2]|0)+44>>2]&4095](a)|0}function RM(a,b,d){a=a|0;b=b|0;d=d|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,0)|0}function RN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function RO(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+28>>2]&511](a,b,d)|0}function RP(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+12>>2]&511](a,b,d)|0}function RQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function RR(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function RS(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+24>>2]&511](a,b,d)|0}function RT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function RU(a){a=a|0;if((a|0)==0){return}aDB(a);return}function RV(a,b){a=a|0;b=b|0;var d=0;d=a;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function RW(){var a=0,b=0,d=0;while(1){a=aDx(32)|0;if((a|0)!=0){b=5374;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==5374){c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=4096;c[a+16>>2]=4096;c[a+20>>2]=0;c[a+24>>2]=0;c[a+28>>2]=1;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function RX(){var a=0,b=0,d=0;while(1){a=aDx(84)|0;if((a|0)!=0){b=5386;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==5386){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function RY(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;while(1){f=aDx(84)|0;if((f|0)!=0){h=5398;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==5398){h=f+16|0;i=a;aDD(f|0,0,16);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];j=-0.0- +g[b>>2];k=-0.0- +g[b+4>>2];l=-0.0- +g[b+8>>2];g[f+32>>2]=j;g[f+36>>2]=k;g[f+40>>2]=l;g[f+44>>2]=0.0;m=+g[h>>2];n=+g[d>>2]*m;o=+g[f+20>>2];p=+g[d+4>>2]*o;q=+g[f+24>>2];r=+g[d+8>>2]*q;g[f+48>>2]=n;g[f+52>>2]=p;g[f+56>>2]=r;g[f+60>>2]=0.0;s=+g[e>>2]*j;t=+g[e+4>>2]*k;u=+g[e+8>>2]*l;g[f+64>>2]=s;g[f+68>>2]=t;g[f+72>>2]=u;g[f+76>>2]=0.0;g[f+80>>2]=n*m+p*o+r*q+(s*j+t*k+u*l);return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function RZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0;while(1){h=aDx(84)|0;if((h|0)!=0){i=5410;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==5410){aDD(h|0,0,16);i=a|0;k=+g[i>>2];j=a+4|0;l=+g[j>>2];m=a+8|0;n=+g[m>>2];o=+g[b>>2]*k+ +g[b+4>>2]*l+ +g[b+8>>2]*n;p=+g[b+16>>2]*k+ +g[b+20>>2]*l+ +g[b+24>>2]*n;q=+g[b+32>>2]*k+ +g[b+36>>2]*l+ +g[b+40>>2]*n;g[h+16>>2]=o;g[h+20>>2]=p;g[h+24>>2]=q;g[h+28>>2]=0.0;n=-0.0- +g[i>>2];l=-0.0- +g[j>>2];k=-0.0- +g[m>>2];r=+g[d>>2]*n+ +g[d+4>>2]*l+ +g[d+8>>2]*k;s=+g[d+16>>2]*n+ +g[d+20>>2]*l+ +g[d+24>>2]*k;t=+g[d+32>>2]*n+ +g[d+36>>2]*l+ +g[d+40>>2]*k;g[h+32>>2]=r;g[h+36>>2]=s;g[h+40>>2]=t;g[h+44>>2]=0.0;k=+g[e>>2]*o;l=+g[e+4>>2]*p;n=+g[e+8>>2]*q;g[h+48>>2]=k;g[h+52>>2]=l;g[h+56>>2]=n;g[h+60>>2]=0.0;u=+g[f>>2]*r;v=+g[f+4>>2]*s;w=+g[f+8>>2]*t;g[h+64>>2]=u;g[h+68>>2]=v;g[h+72>>2]=w;g[h+76>>2]=0.0;g[h+80>>2]=k*o+l*p+n*q+(u*r+v*s+w*t);return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function R_(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var i=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,D=0.0,E=0.0;while(1){i=aDx(84)|0;if((i|0)!=0){j=5422;break}k=(C=c[10744]|0,c[10744]=C+0,C);if((k|0)==0){break}dC[k&63]()}if((j|0)==5422){j=e;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];l=+g[b+4>>2];j=e+8|0;m=+g[j>>2];n=+g[b+8>>2];k=e+4|0;o=+g[k>>2];p=l*m-n*o;q=e|0;r=+g[q>>2];s=+g[b>>2];t=n*r-s*m;m=s*o-l*r;b=a|0;e=a+4|0;u=a+8|0;r=+g[b>>2]*p+ +g[e>>2]*t+ +g[u>>2]*m;v=a+16|0;w=a+20|0;x=a+24|0;l=+g[v>>2]*p+ +g[w>>2]*t+ +g[x>>2]*m;y=a+32|0;z=a+36|0;A=a+40|0;o=+g[y>>2]*p+ +g[z>>2]*t+ +g[A>>2]*m;g[i+16>>2]=r;g[i+20>>2]=l;g[i+24>>2]=o;g[i+28>>2]=0.0;m=-0.0- +g[q>>2];t=-0.0- +g[k>>2];p=-0.0- +g[j>>2];s=+g[d+4>>2];n=+g[d+8>>2];B=s*p-n*t;D=+g[d>>2];E=n*m-D*p;p=D*t-s*m;m=+g[v>>2]*B+ +g[w>>2]*E+ +g[x>>2]*p;s=+g[y>>2]*B+ +g[z>>2]*E+ +g[A>>2]*p;g[i+32>>2]=+g[b>>2]*B+ +g[e>>2]*E+ +g[u>>2]*p;g[i+36>>2]=m;g[i+40>>2]=s;g[i+44>>2]=0.0;s=+g[f>>2]*r;m=+g[f+4>>2]*l;p=+g[f+8>>2]*o;g[i+48>>2]=s;g[i+52>>2]=m;g[i+56>>2]=p;aDD(i+60|0,0,20);g[i+80>>2]=s*r+m*l+p*o+h;return i|0}i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}function R$(a){a=a|0;return a|0}function R0(a){a=a|0;return+(+g[a+80>>2])}function R1(a,b){a=a|0;b=+b;g[a+80>>2]=b;return}function R2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+(+g[c>>2]*+g[a+16>>2]+ +g[e>>2]*+g[a+32>>2]+(+g[b>>2]- +g[d>>2])*+g[a>>2]+(+g[c+4>>2]*+g[a+20>>2]+ +g[e+4>>2]*+g[a+36>>2]+(+g[b+4>>2]- +g[d+4>>2])*+g[a+4>>2])+(+g[c+8>>2]*+g[a+24>>2]+ +g[e+8>>2]*+g[a+40>>2]+(+g[b+8>>2]- +g[d+8>>2])*+g[a+8>>2])+1.1920928955078125e-7)}function R3(a){a=a|0;return+(+g[a+80>>2])}function R4(a,b,c){a=a|0;b=b|0;c=+c;return+((+g[a>>2]*+g[b>>2]+ +g[a+4>>2]*+g[b+4>>2]+ +g[a+8>>2]*+g[b+8>>2])*c+(+g[a+48>>2]*+g[b+16>>2]+ +g[a+52>>2]*+g[b+20>>2]+ +g[a+56>>2]*+g[b+24>>2]))}function R5(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0.0,f=0.0,h=0.0;e=+g[a>>2]*+g[b>>2];f=+g[a+4>>2]*+g[b+4>>2];h=+g[a+8>>2]*+g[b+8>>2];return+(+g[a+48>>2]*+g[b+16>>2]+ +g[a+64>>2]*+g[b+32>>2]+e*c+e*d+(+g[a+52>>2]*+g[b+20>>2]+ +g[a+68>>2]*+g[b+36>>2]+f*c+f*d)+(+g[a+56>>2]*+g[b+24>>2]+ +g[a+72>>2]*+g[b+40>>2]+h*c+h*d))}function R6(a){a=a|0;return a+48|0}function R7(a){a=a|0;return a+16|0}function R8(a){a=a|0;return a+64|0}function R9(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function Sa(a,b){a=a|0;b=b|0;return(c[a>>2]|0)==(c[b>>2]|0)|0}function Sb(a){a=a|0;return c[a>>2]|0}function Sc(a){a=a|0;var b=0;b=c[a>>2]|0;a=b+~(b<<15)|0;b=(a^a>>10)*9|0;a=b^b>>6;b=a+~(a<<11)|0;return b^b>>16|0}function Sd(b){b=b|0;return(a[b+4|0]&1)!=0|0}function Se(b,c){b=b|0;c=c|0;a[b+4|0]=c&1;return}function Sf(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function Sg(a){a=a|0;return c[a+24>>2]|0}function Sh(a){a=a|0;return a+28|0}function Si(a){a=a|0;return a+4|0}function Sj(b){b=b|0;return(a[b+84|0]&1)!=0|0}function Sk(a){a=a|0;return c[a+8>>2]|0}function Sl(a){a=a|0;return c[a+76>>2]|0}function Sm(b,c){b=b|0;c=c|0;a[b+84|0]=c&1;return}function Sn(b,d){b=b|0;d=d|0;var e=0;do{if((c[b+176+(d<<2)>>2]|0)==0){if((a[b+108+d|0]&1)==0){e=0}else{break}return e|0}}while(0);e=1;return e|0}function So(a){a=a|0;return a+144|0}function Sp(a){a=a|0;return a+160|0}function Sq(a){a=a|0;return a+76|0}function Sr(a){a=a|0;return a+92|0}function Ss(a){a=a|0;return a|0}function St(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Su(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Sv(a,b){a=a|0;b=b|0;var d=0;d=a+64|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Sw(a,b){a=a|0;b=b|0;var d=0;d=a+48|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Sx(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+8>>2]&511](a,b,d)|0}function Sy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e)|0}function Sz(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+16>>2]&511](a,b,d);return}function SA(a){a=a|0;if((a|0)==0){return}aDB(a);return}function SB(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function SC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function SD(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a,b);return}function SE(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0}function SF(a){a=a|0;ct[c[(c[a>>2]|0)+40>>2]&2047](a);return}function SG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+24>>2]&1023](a,b,d,e);return}function SH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a,b,d,e);return}function SI(a,b){a=a|0;b=b|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,1,-1);return}function SJ(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,-1);return}function SK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function SL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;e=i;i=i+48|0;f=e|0;g=e+16|0;h=e+32|0;j=c[b+192>>2]|0;dI[c[(c[j>>2]|0)+8>>2]&1023](j,b+4|0,f,g);c[h>>2]=21168;c[h+4>>2]=b;c[h+8>>2]=a;c[h+12>>2]=d;d=c[a+76>>2]|0;dI[c[(c[d>>2]|0)+28>>2]&1023](d,f,g,h|0);i=e;return}function SM(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function SN(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function SO(a){a=a|0;ct[c[(c[a>>2]|0)+20>>2]&2047](a);return}function SP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;atO(a,b,c,d,e,0.0);return}function SQ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;atO(a,b,c,d,e,f);return}function SR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+168|0;g=f|0;h=a+24|0;j=c[h>>2]|0;k=dE[c[(c[j>>2]|0)+8>>2]&127](j,b,d,0)|0;if((k|0)==0){i=f;return}c[g+4>>2]=0;c[g+136>>2]=b;c[g+140>>2]=d;j=g+8|0;l=b+4|0;aDD(g+144|0,-1|0,16);c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+24|0;j=b+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+40|0;l=b+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+56|0;j=b+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+72|0;l=d+4|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+88|0;j=d+20|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];j=g+104|0;l=d+36|0;c[j>>2]=c[l>>2];c[j+4>>2]=c[l+4>>2];c[j+8>>2]=c[l+8>>2];c[j+12>>2]=c[l+12>>2];l=g+120|0;j=d+52|0;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];c[g>>2]=21728;c[g+160>>2]=e;co[c[(c[k>>2]|0)+8>>2]&255](k,b,d,a+28|0,g|0);ct[c[c[k>>2]>>2]&2047](k);g=c[h>>2]|0;cv[c[(c[g>>2]|0)+60>>2]&2047](g,k);i=f;return}function SS(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;atG(a,b,c,d,e,f);return}function ST(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function SU(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;atI(a,b,c,d,e,f,g,h);return}function SV(a,b){a=a|0;b=b|0;atC(a,b);return}function SW(a){a=a|0;var b=0;b=c[a+76>>2]|0;return cA[c[(c[b>>2]|0)+36>>2]&4095](b)|0}function SX(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function SY(a,b){a=a|0;b=b|0;var d=0;d=a+144|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function SZ(a,b){a=a|0;b=b|0;var d=0;d=a+76|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function S_(a,b){a=a|0;b=b|0;var d=0;d=a+92|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function S$(a,b){a=a|0;b=b|0;var d=0;d=a+128|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function S0(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=i|0;j=+j;var k=0,l=0,m=0;while(1){k=aDx(84)|0;if((k|0)!=0){l=5520;break}m=(C=c[10744]|0,c[10744]=C+0,C);if((m|0)==0){break}dC[m&63]()}if((l|0)==5520){l=k;anz(l,a,b,d,e,f,g,h,i,j);return l|0}l=cd(4)|0;c[l>>2]=19096;bF(l|0,34368,676);return 0}function S1(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(4)|0;if((b|0)!=0){d=5532;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==5532){c[b>>2]=a;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function S2(){var b=0,d=0,e=0;while(1){b=aDx(8)|0;if((b|0)!=0){d=5544;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==5544){c[b>>2]=19992;a[b+4|0]=0;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function S3(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=aDx(88)|0;if((e|0)!=0){f=5556;break}g=(C=c[10744]|0,c[10744]=C+0,C);if((g|0)==0){f=5553;break}dC[g&63]()}if((f|0)==5553){g=cd(4)|0;c[g>>2]=19096;bF(g|0,34368,676);return 0}else if((f|0)==5556){f=e;aty(f,a,b,d);return f|0}return 0}function S4(a,b,d){a=a|0;b=b|0;d=+d;var e=0.0,f=0.0,h=0,i=0;e=+g[a+(b<<2)>>2];f=+g[a+16+(b<<2)>>2];if(e>f){c[a+176+(b<<2)>>2]=0;g[a+144+(b<<2)>>2]=0.0;h=0;return h|0}if(e>d){c[a+176+(b<<2)>>2]=2;g[a+144+(b<<2)>>2]=d-e;h=2;return h|0}i=a+176+(b<<2)|0;if(f>2]=1;g[a+144+(b<<2)>>2]=d-f;h=1;return h|0}else{c[i>>2]=0;g[a+144+(b<<2)>>2]=0.0;h=0;return h|0}return 0}function S5(a,b){a=a|0;b=+b;g[a+56>>2]=b;return}function S6(a,b){a=a|0;b=+b;g[a+48>>2]=b;return}function S7(a){a=a|0;return+(+g[a+56>>2])}function S8(a){a=a|0;return a+112|0}function S9(a){a=a|0;return a+128|0}function Ta(a,b){a=a|0;b=+b;g[a+52>>2]=b;return}function Tb(a){a=a|0;return a+16|0}function Tc(a){a=a|0;return+(+g[a+52>>2])}function Td(a){a=a|0;return a+60|0}function Te(a,b){a=a|0;b=b|0;return+g[a+16+(b<<2)>>2]>=+g[a+(b<<2)>>2]|0}function Tf(a){a=a|0;return a+32|0}function Tg(a){a=a|0;return+(+g[a+48>>2])}function Th(a,b,c,d,e,f,h,i,j,k){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0,J=0.0,K=0,L=0.0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0;l=+g[k>>2];m=l- +g[d+52>>2];n=+g[k+4>>2];o=n- +g[d+56>>2];p=+g[k+8>>2];q=p- +g[d+60>>2];r=l- +g[f+52>>2];l=n- +g[f+56>>2];n=p- +g[f+60>>2];k=d+504|0;s=d+508|0;t=d+512|0;u=d+520|0;p=+g[d+320>>2]+ +g[u>>2];v=d+524|0;w=+g[d+324>>2]+ +g[v>>2];x=d+528|0;y=+g[d+328>>2]+ +g[x>>2];z=f+504|0;A=f+508|0;B=f+512|0;C=f+520|0;D=+g[f+320>>2]+ +g[C>>2];E=f+524|0;F=+g[f+324>>2]+ +g[E>>2];G=f+528|0;H=+g[f+328>>2]+ +g[G>>2];I=j|0;J=+g[I>>2];K=j+4|0;L=+g[K>>2];M=j+8|0;N=+g[M>>2];O=N*(+g[d+312>>2]+ +g[t>>2]+(o*p-m*w)-(+g[f+312>>2]+ +g[B>>2]+(l*D-r*F)))+(J*(+g[d+304>>2]+ +g[k>>2]+(q*w-o*y)-(+g[f+304>>2]+ +g[z>>2]+(n*F-l*H)))+L*(+g[d+308>>2]+ +g[s>>2]+(m*y-q*p)-(+g[f+308>>2]+ +g[A>>2]+(r*H-n*D))));D=-0.0-(J*(+g[e>>2]- +g[h>>2])+L*(+g[e+4>>2]- +g[h+4>>2])+N*(+g[e+8>>2]- +g[h+8>>2]));N=+g[a+(i<<2)>>2];L=+g[a+16+(i<<2)>>2];do{if(ND){P=D-N;Q=-999999984306749400.0;R=0.0;break}else{S=0.0;return+S}}else{P=D;Q=-999999984306749400.0;R=999999984306749400.0}}while(0);h=a+32+(i<<2)|0;D=+g[h>>2];N=D+ +g[a+48>>2]*(P*+g[a+56>>2]/b-O*+g[a+52>>2])*c;if(N>R){T=0.0}else{T=N>2]=T;N=T-D;D=+g[I>>2];T=+g[K>>2];Q=+g[M>>2];R=o*Q-q*T;c=q*D-m*Q;q=m*T-o*D;o=l*Q-n*T;m=n*D-r*Q;n=r*T-l*D;l=+g[d+336>>2];if(l!=0.0){r=c*+g[d+292>>2]+R*+g[d+288>>2]+q*+g[d+296>>2];O=c*+g[d+276>>2]+R*+g[d+272>>2]+q*+g[d+280>>2];b=c*+g[d+260>>2]+R*+g[d+256>>2]+q*+g[d+264>>2];g[k>>2]=N*D*l+ +g[k>>2];g[s>>2]=N*T*l+ +g[s>>2];g[t>>2]=N*Q*l+ +g[t>>2];l=O*N*+g[d+540>>2];O=r*N*+g[d+544>>2];g[u>>2]=b*N*+g[d+536>>2]+ +g[u>>2];g[v>>2]=l+ +g[v>>2];g[x>>2]=O+ +g[x>>2]}O=+g[f+336>>2];l=-0.0-N;if(O==0.0){S=N;return+S}b=m*+g[f+292>>2]+o*+g[f+288>>2]+n*+g[f+296>>2];r=m*+g[f+276>>2]+o*+g[f+272>>2]+n*+g[f+280>>2];Q=m*+g[f+260>>2]+o*+g[f+256>>2]+n*+g[f+264>>2];n=O*+g[K>>2]*l;o=O*+g[M>>2]*l;g[z>>2]=+g[z>>2]+O*+g[I>>2]*l;g[A>>2]=n+ +g[A>>2];g[B>>2]=o+ +g[B>>2];o=r*+g[f+540>>2]*l;r=b*+g[f+544>>2]*l;g[C>>2]=Q*+g[f+536>>2]*l+ +g[C>>2];g[E>>2]=o+ +g[E>>2];g[G>>2]=r+ +g[G>>2];S=N;return+S}function Ti(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Tj(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Tk(a){a=a|0;return+(+g[a+44>>2])}function Tl(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Tm(a){a=a|0;return a+12|0}function Tn(a){a=a|0;return(c[a+4>>2]|0)<20|0}function To(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Tp(a){a=a|0;return c[a+8>>2]|0}function Tq(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Tr(a,b){a=a|0;b=b|0;var d=0;d=a+160|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ts(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Tt(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Tu(a){a=a|0;if((a|0)==0){return}aDB(a);return}function Tv(a,b){a=a|0;b=b|0;var d=0;d=a+60|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Tw(a,b){a=a|0;b=b|0;var d=0;d=a+112|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Tx(a,b){a=a|0;b=b|0;var d=0;d=a;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Ty(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function Tz(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function TA(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43568]|0)==0){if((b1(43568)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9222]=c[d>>2];c[9223]=c[d+4>>2];c[9224]=c[d+8>>2];c[9225]=c[d+12>>2];i=e;return 36888}function TB(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function TC(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function TD(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a)|0}function TE(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43392]|0)==0){if((b1(43392)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9214]=c[d>>2];c[9215]=c[d+4>>2];c[9216]=c[d+8>>2];c[9217]=c[d+12>>2];i=e;return 36856}function TF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function TG(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function TH(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function TI(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43128]|0)==0){if((b1(43128)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9210]=c[d>>2];c[9211]=c[d+4>>2];c[9212]=c[d+8>>2];c[9213]=c[d+12>>2];i=e;return 36840}function TJ(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function TK(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function TL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function TM(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function TN(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function TO(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a,b,d);return}function TP(){var b=0,d=0,e=0,f=0;while(1){b=aDx(188)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=5652;break}dC[d&63]()}if((e|0)==5652){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}e=b;aDD(b|0,0,48);aDD(b+60|0,0,16);g[b+76>>2]=.20000000298023224;g[b+80>>2]=.20000000298023224;g[b+84>>2]=.20000000298023224;aDD(b+88|0,0,20);g[b+48>>2]=.699999988079071;g[b+52>>2]=1.0;g[b+56>>2]=.5;d=b+112|0;f=b+128|0;b=0;while(1){if((b|0)>=3){break}a[e+108+b|0]=0;g[d+(b<<2)>>2]=0.0;g[f+(b<<2)>>2]=0.0;b=b+1|0}return e|0}function TQ(b){b=b|0;var d=0,e=0,f=0,h=0;while(1){d=aDx(188)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=5667;break}dC[e&63]()}if((f|0)==5667){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=d+16|0;h=b+16|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=d+32|0;e=b+32|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];g[d+48>>2]=+g[b+48>>2];g[d+52>>2]=+g[b+52>>2];g[d+56>>2]=+g[b+56>>2];e=d+60|0;h=b+60|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=d+76|0;e=b+76|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];e=d+92|0;h=b+92|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=d+112|0;e=d+128|0;d=0;while(1){if((d|0)>=3){break}a[f+108+d|0]=a[b+108+d|0]&1;g[h+(d<<2)>>2]=+g[b+112+(d<<2)>>2];g[e+(d<<2)>>2]=+g[b+128+(d<<2)>>2];d=d+1|0}return f|0}function TR(a,b){a=a|0;b=b|0;return(c[a>>2]|0)==(c[b>>2]|0)|0}function TS(a){a=a|0;return c[a>>2]|0}function TT(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function TU(a){a=a|0;return(c[a+4>>2]|0)==32|0}function TV(a){a=a|0;return a+28|0}function TW(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function TX(a){a=a|0;return c[a+4>>2]|0}function TY(a){a=a|0;var b=0;b=c[a>>2]|0;a=b+~(b<<15)|0;b=(a^a>>10)*9|0;a=b^b>>6;b=a+~(a<<11)|0;return b^b>>16|0}function TZ(a){a=a|0;return+(+g[a+224>>2])}function T_(a){a=a|0;return+(+g[a+220>>2])}function T$(a,b){a=a|0;b=b|0;c[a+212>>2]=b;return}function T0(a){a=a|0;return+(+g[a+244>>2])}function T1(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function T2(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function T3(a,b){a=a|0;b=+b;g[a+184>>2]=b;return}function T4(a){a=a|0;return a+132|0}function T5(a){a=a|0;return(c[a+204>>2]&7|0)==0|0}function T6(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function T7(a){a=a|0;return c[a+208>>2]|0}function T8(a){a=a|0;return c[a+260>>2]|0}function T9(a,b){a=a|0;b=b|0;c[a+236>>2]=b;return}function Ua(a){a=a|0;return a+148|0}function Ub(a,b){a=a|0;b=b|0;c[a+216>>2]=b;return}function Uc(a){a=a|0;var b=0;if((c[a+204>>2]&3|0)!=0){return}b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function Ud(a,b){a=a|0;b=b|0;do{if(!b){if((c[a+204>>2]&3|0)==0){break}return}}while(0);b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function Ue(a,b){a=a|0;b=b|0;c[a+208>>2]=b;return}function Uf(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function Ug(a){a=a|0;return a+68|0}function Uh(a){a=a|0;return+(+g[a+240>>2])}function Ui(a,b){a=a|0;b=b|0;return c[(c[a+268>>2]|0)+(b<<2)>>2]|0}function Uj(a){a=a|0;return(c[a+204>>2]&1|0)!=0|0}function Uk(a){a=a|0;return c[a+192>>2]|0}function Ul(a){a=a|0;return c[a+216>>2]|0}function Um(a){a=a|0;return c[a+188>>2]|0}function Un(a){a=a|0;return+(+g[a+228>>2])}function Uo(a){a=a|0;return c[a+236>>2]|0}function Up(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function Uq(a){a=a|0;return a+4|0}function Ur(a){a=a|0;var b=0.0;b=+g[a+248>>2];return+(b*b)}function Us(a,b){a=a|0;b=b|0;c[a+192>>2]=b;return}function Ut(a){a=a|0;return+(+g[a+248>>2])}function Uu(a){a=a|0;return c[a+212>>2]|0}function Uv(a){a=a|0;var b=0;b=c[a+216>>2]|0;return((b|0)==2?0:(b|0)!=5)|0}function Uw(a){a=a|0;return c[a+232>>2]|0}function Ux(a){a=a|0;return(c[a+204>>2]&4|0)==0|0}function Uy(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function Uz(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43248]|0)==0){if((b1(43248)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9206]=c[d>>2];c[9207]=c[d+4>>2];c[9208]=c[d+8>>2];c[9209]=c[d+12>>2];i=e;return 36824}function UA(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 13:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function UB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function UC(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function UD(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function UE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function UF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function UG(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function UH(a){a=a|0;if((a|0)==0){return}aDB(a);return}function UI(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,0);return}function UJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function UK(a,b){a=a|0;b=b|0;var d=0;d=a+132|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function UL(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function UM(){var b=0,d=0,e=0,f=0,h=0,i=0,j=0,k=0;c[9806]=(c[9806]|0)+1;b=aDx(299)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d;g[d+164>>2]=1.0;g[d+168>>2]=1.0;g[d+172>>2]=1.0;g[d+176>>2]=0.0;c[d+180>>2]=0;g[d+184>>2]=999999984306749400.0;aDD(d+188|0,0,16);c[d+204>>2]=1;c[d+208>>2]=-1;c[d+212>>2]=-1;c[d+216>>2]=1;g[d+220>>2]=0.0;g[d+224>>2]=.5;g[d+228>>2]=0.0;c[d+236>>2]=0;g[d+240>>2]=1.0;g[d+244>>2]=0.0;g[d+248>>2]=0.0;c[d+252>>2]=0;g[d+4>>2]=1.0;aDD(d+8|0,0,16);g[d+24>>2]=1.0;aDD(d+28|0,0,16);g[d+44>>2]=1.0;aDD(d+48|0,0,20);a[d+272|0]=1;c[d+268>>2]=0;c[d+260>>2]=0;c[d+264>>2]=0;c[d+232>>2]=4;c[d>>2]=21080;c[9806]=(c[9806]|0)+1;b=aDx(95)|0;if((b|0)==0){f=0;h=d+276|0;i=h;c[i>>2]=f;return e|0}j=-(b+4|0)&15;k=b+(j+4)|0;c[b+j>>2]=b;if((k|0)==0){f=0;h=d+276|0;i=h;c[i>>2]=f;return e|0}b=k;ayI(b);f=b;h=d+276|0;i=h;c[i>>2]=f;return e|0}function UN(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function UO(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function UP(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+28>>2]&511](a,b,0);return}function UQ(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+28>>2]&511](a,b,d);return}function UR(a,b){a=a|0;b=b|0;var d=0;if((c[a+252>>2]|0)==0){d=1;return d|0}d=dj[c[c[a>>2]>>2]&511](a|0,b)|0;return d|0}function US(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0;f=i;i=i+128|0;h=f|0;j=f+64|0;g[h>>2]=1.0;aDD(h+4|0,0,16);g[h+20>>2]=1.0;aDD(h+24|0,0,16);g[h+40>>2]=1.0;c[h+44>>2]=0;k=h+48|0;l=b;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[j>>2]=1.0;aDD(j+4|0,0,16);g[j+20>>2]=1.0;aDD(j+24|0,0,16);g[j+40>>2]=1.0;c[j+44>>2]=0;l=j+48|0;k=d;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];c[l+12>>2]=c[k+12>>2];k=a+260|0;if((c[k>>2]|0)<=0){i=f;return}l=a+268|0;a=e;d=0;do{b=c[(c[l>>2]|0)+(d<<2)>>2]|0;if(dj[c[(c[a>>2]|0)+8>>2]&511](e,c[b+188>>2]|0)|0){atG(h,j,b,c[b+192>>2]|0,b+4|0,e)}d=d+1|0;}while((d|0)<(c[k>>2]|0));i=f;return}function UT(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function UU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;axT(a|0,b,c,d,e,0.0);return}function UV(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;axT(a|0,b,c,d,e,f);return}function UW(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+164|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];do{if(+g[b>>2]!=1.0){f=1}else{if(+g[b+4>>2]!=1.0){f=1;break}f=+g[b+8>>2]!=1.0|0}}while(0);c[a+180>>2]=f;return}function UX(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function UY(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a|0,b,d)|0}function UZ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function U_(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function U$(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(8)|0;if((b|0)!=0){d=5820;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==5820){c[b>>2]=a;return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function U0(a){a=a|0;var b=0;if((c[a+232>>2]|0)==4){b=a}else{b=0}return b|0}function U1(a,b){a=a|0;b=b|0;var d=0;d=a+216|0;if(((c[d>>2]|0)-4|0)>>>0<2){return}c[d>>2]=b;return}function U2(a){a=a|0;return c[a+200>>2]|0}function U3(a){a=a|0;return+(+g[a+184>>2])}function U4(a){a=a|0;return c[a+204>>2]|0}function U5(a){a=a|0;return c[a+276>>2]|0}function U6(a){a=a|0;return a+164|0}function U7(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function U8(a){a=a|0;return c[a+196>>2]|0}function U9(a,b){a=a|0;b=b|0;c[a+204>>2]=b;return}function Va(a){a=a|0;return(c[a+204>>2]&3|0)!=0|0}function Vb(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function Vc(a){a=a|0;return(c[a+180>>2]|0)!=0|0}function Vd(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function Ve(a){a=a|0;return(c[a+204>>2]&2|0)!=0|0}function Vf(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Vg(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Vh(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Vi(a){a=a|0;return a+48|0}function Vj(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Vk(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Vl(a){a=a|0;return c[a+8>>2]|0}function Vm(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Vn(a){a=a|0;return+(+g[a+64>>2])}function Vo(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Vp(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Vq(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Vr(a){a=a|0;return c[a+4>>2]|0}function Vs(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Vt(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Vu(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Vv(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Vw(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Vx(a){a=a|0;return c[a+8>>2]|0}function Vy(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Vz(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function VA(a){a=a|0;return(c[a+4>>2]|0)==32|0}function VB(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function VC(a){a=a|0;return c[a+4>>2]|0}function VD(a){a=a|0;return c[a+28>>2]|0}function VE(a){a=a|0;return c[a+12>>2]|0}function VF(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function VG(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function VH(a){a=a|0;return a+40|0}function VI(a,b){a=a|0;b=b|0;return+(+g[a+1248+(b<<2)>>2])}function VJ(a){a=a|0;return a+104|0}function VK(a){a=a|0;return a+1056|0}function VL(a){a=a|0;return c[a+12>>2]|0}function VM(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a,b)|0}function VN(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function VO(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function VP(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function VQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function VR(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function VS(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function VT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function VU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function VV(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function VW(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function VX(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function VY(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function VZ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function V_(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function V$(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function V0(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function V1(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function V2(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function V3(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+8>>2]&511](a|0,b,d)|0}function V4(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+16>>2]&511](a|0,b,d);return}function V5(a){a=a|0;return cA[c[(c[a>>2]|0)+56>>2]&4095](a)|0}function V6(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function V7(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function V8(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+40>>2]&511](a,b,d);return}function V9(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+32>>2]&511](a,b,d);return}function Wa(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Wb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e)|0}function Wc(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+44>>2]&2047](a,b);return}function Wd(a){a=a|0;return cA[c[(c[a>>2]|0)+20>>2]&4095](a)|0}function We(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a,b,d);return}function Wf(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function Wg(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function Wh(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function Wi(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function Wj(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Wk(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function Wl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function Wm(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a,b))}function Wn(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function Wo(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function Wp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a,b,c,d,e,f,g);return}function Wq(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,f);i=e;return}function Wr(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a))}function Ws(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a,b);return}function Wt(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function Wu(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function Wv(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function Ww(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;apb(a,b,c,d,e,f,g,h);return}function Wx(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0;while(1){d=aDx(84)|0;if((d|0)!=0){e=5939;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==5939){e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;g[d+12>>2]=0.0;c[d>>2]=22976;h=+g[a>>2];i=+g[a+4>>2];j=+g[a+8>>2];k=1.0/+Q(+(h*h+i*i+j*j));g[d+48>>2]=h*k;g[d+52>>2]=i*k;g[d+56>>2]=j*k;g[d+60>>2]=0.0;g[d+64>>2]=b;aDD(d+68|0,0,16);c[e>>2]=28;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function Wy(a,b){a=a|0;b=+b;return}function Wz(a){a=a|0;return c[a+24>>2]|0}function WA(a){a=a|0;return+(+g[a+16>>2])}function WB(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=3){break}g[b+(c<<2)>>2]=+g[a+860+(c<<6)>>2];c=c+1|0}return}function WC(a){a=a|0;return+(+g[a+32>>2])}function WD(b){b=b|0;return(a[b+20|0]&1)!=0|0}function WE(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function WF(a){a=a|0;return c[a+4>>2]|0}function WG(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function WH(b,c){b=b|0;c=c|0;a[b+1293|0]=c&1;return}function WI(b){b=b|0;return(a[b+21|0]&1)!=0|0}function WJ(a){a=a|0;return c[a+4>>2]|0}function WK(a,b){a=a|0;b=b|0;return a+860+(b<<6)|0}function WL(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+1300|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function WM(a){a=a|0;return+(+g[a+36>>2])}function WN(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function WO(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)<3){c=+g[a+688+(b<<2)>>2]>=+g[a+672+(b<<2)>>2];return c|0}d=b-3|0;if(+g[a+860+(d<<6)>>2]>+g[a+860+(d<<6)+4>>2]){c=0;return c|0}c=1;return c|0}function WP(b){b=b|0;return(a[b+1293|0]&1)!=0|0}function WQ(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function WR(a){a=a|0;return a+1120|0}function WS(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function WT(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function WU(b){b=b|0;return(a[b+1300|0]&1)!=0|0}function WV(a){a=a|0;return+(+g[a+32>>2])}function WW(b,c){b=b|0;c=c|0;a[b+1300|0]=c&1;return}function WX(a){a=a|0;return a+672|0}function WY(a,b){a=a|0;b=b|0;return+(+g[a+1184+(b<<2)>>2])}function WZ(a,b){a=a|0;b=b|0;var c=0;c=0;while(1){if((c|0)>=3){break}g[b+(c<<2)>>2]=+g[a+860+(c<<6)+4>>2];c=c+1|0}return}function W_(a){a=a|0;return c[a+4>>2]|0}function W$(a){a=a|0;return c[a+8>>2]|0}function W0(a){a=a|0;return c[a+12>>2]|0}function W1(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function W2(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function W3(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function W4(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function W5(a){a=a|0;ct[c[(c[a>>2]|0)+44>>2]&2047](a);return}function W6(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function W7(b,c){b=b|0;c=c|0;do{if((a[43848]|0)==0){if((b1(43848)|0)==0){break}}}while(0);aDG(36808,b+1200+(c<<4)|0,16);return 36808}function W8(a,b){a=a|0;b=b|0;var d=0;d=b;b=a+688|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return}function W9(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function Xa(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Xb(a,b){a=a|0;b=b|0;var d=0;d=b;b=a+672|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return}function Xc(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function Xd(a,b,c){a=a|0;b=b|0;c=c|0;aoZ(a,b,c);return}function Xe(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,0)|0}function Xf(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,m)|0}function Xg(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;nS(a,b,c,d);return}function Xh(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function Xi(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function Xj(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;while(1){if((c|0)>=3){break}d=+ck(+(+g[b+(c<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[a+860+(c<<6)>>2]=e;c=c+1|0}return}function Xk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function Xl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+40|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+56|0;e=b+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+72|0;f=b+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+88|0;e=b+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+104|0;f=d;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+120|0;e=d+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+136|0;f=d+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+152|0;e=d+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](a);aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function Xm(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function Xn(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=0;while(1){if((c|0)>=3){break}d=+ck(+(+g[b+(c<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[a+860+(c<<6)+4>>2]=e;c=c+1|0}return}function Xo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;f=i;i=i+112|0;h=f|0;j=f+48|0;k=e&1;while(1){l=aDx(1304)|0;if((l|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){m=6041;break}dC[e&63]()}if((m|0)==6041){m=cd(4)|0;c[m>>2]=19096;bF(m|0,34368,676);return 0}m=l;e=j;aq2();c[l+4>>2]=6;c[l+8>>2]=-1;c[l+12>>2]=-1;g[l+16>>2]=3.4028234663852886e+38;a[l+20|0]=1;a[l+21|0]=0;n=l+24|0;c[n>>2]=41520;o=l+28|0;c[o>>2]=b;g[l+32>>2]=0.0;g[l+36>>2]=.30000001192092896;c[l>>2]=21400;p=l+104|0;q=d;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=l+120|0;r=d+16|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];r=l+136|0;q=d+32|0;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];q=l+152|0;r=d+48|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];r=l+40|0;aDD(l+672|0,0,48);aDD(l+732|0,0,16);g[l+748>>2]=.20000000298023224;g[l+752>>2]=.20000000298023224;g[l+756>>2]=.20000000298023224;aDD(l+760|0,0,20);g[l+720>>2]=.699999988079071;g[l+724>>2]=1.0;g[l+728>>2]=.5;a[l+780|0]=0;g[l+784>>2]=0.0;g[l+800>>2]=0.0;a[l+781|0]=0;g[l+788>>2]=0.0;g[l+804>>2]=0.0;a[l+782|0]=0;g[l+792>>2]=0.0;g[l+808>>2]=0.0;g[l+920>>2]=0.0;g[l+868>>2]=0.0;g[l+872>>2]=.10000000149011612;g[l+876>>2]=300.0;g[l+860>>2]=1.0;g[l+864>>2]=-1.0;g[l+888>>2]=0.0;g[l+892>>2]=.20000000298023224;g[l+896>>2]=0.0;g[l+900>>2]=0.0;g[l+880>>2]=1.0;g[l+884>>2]=.5;c[l+916>>2]=0;g[l+908>>2]=0.0;a[l+904|0]=0;g[l+984>>2]=0.0;g[l+932>>2]=0.0;g[l+936>>2]=.10000000149011612;g[l+940>>2]=300.0;g[l+924>>2]=1.0;g[l+928>>2]=-1.0;g[l+952>>2]=0.0;g[l+956>>2]=.20000000298023224;g[l+960>>2]=0.0;g[l+964>>2]=0.0;g[l+944>>2]=1.0;g[l+948>>2]=.5;c[l+980>>2]=0;g[l+972>>2]=0.0;a[l+968|0]=0;g[l+1048>>2]=0.0;g[l+996>>2]=0.0;g[l+1e3>>2]=.10000000149011612;g[l+1004>>2]=300.0;g[l+988>>2]=1.0;g[l+992>>2]=-1.0;g[l+1016>>2]=0.0;g[l+1020>>2]=.20000000298023224;g[l+1024>>2]=0.0;g[l+1028>>2]=0.0;g[l+1008>>2]=1.0;g[l+1012>>2]=.5;c[l+1044>>2]=0;g[l+1036>>2]=0.0;a[l+1032|0]=0;a[l+1292|0]=k;a[l+1293|0]=1;c[l+1296>>2]=0;a[l+1300|0]=0;k=b+4|0;q=h;anx(h,k|0,p);s=+g[l+152>>2];t=+g[l+156>>2];u=+g[l+160>>2];v=+g[k>>2]*s+ +g[b+8>>2]*t+ +g[b+12>>2]*u+ +g[b+52>>2];w=+g[b+20>>2]*s+ +g[b+24>>2]*t+ +g[b+28>>2]*u+ +g[b+56>>2];x=+g[b+36>>2]*s+ +g[b+40>>2]*t+ +g[b+44>>2]*u+ +g[b+60>>2];b=j+48|0;k=j|0;do{k=k+16|0;}while((k|0)!=(b|0));c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];c[e+8>>2]=c[q+8>>2];c[e+12>>2]=c[q+12>>2];q=j+16|0;b=h+16|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];b=j+32|0;k=h+32|0;c[b>>2]=c[k>>2];c[b+4>>2]=c[k+4>>2];c[b+8>>2]=c[k+8>>2];c[b+12>>2]=c[k+12>>2];g[j+48>>2]=v;g[j+52>>2]=w;g[j+56>>2]=x;g[j+60>>2]=0.0;c[r>>2]=c[e>>2];c[r+4>>2]=c[e+4>>2];c[r+8>>2]=c[e+8>>2];c[r+12>>2]=c[e+12>>2];e=l+56|0;c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];c[e+8>>2]=c[q+8>>2];c[e+12>>2]=c[q+12>>2];q=l+72|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];b=l+88|0;l=j+48|0;c[b>>2]=c[l>>2];c[b+4>>2]=c[l+4>>2];c[b+8>>2]=c[l+8>>2];c[b+12>>2]=c[l+12>>2];aoZ(m,(c[n>>2]|0)+4|0,(c[o>>2]|0)+4|0);i=f;return m|0}function Xp(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;while(1){g=aDx(1304)|0;if((g|0)!=0){h=6060;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==6060){h=g;aoY(h,a,b,d,e,f);return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function Xq(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function Xr(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b>>2]|0;b=c[a>>2]|0;e=c[d+4>>2]|0;c[b>>2]=c[d>>2];c[b+4>>2]=e;return a|0}function Xs(a,b){a=a|0;b=b|0;g[a>>2]=+g[b>>2];g[a+4>>2]=+g[b+16>>2];g[a+8>>2]=+g[b+32>>2];g[a+12>>2]=0.0;g[a+16>>2]=+g[b+4>>2];g[a+20>>2]=+g[b+20>>2];g[a+24>>2]=+g[b+36>>2];g[a+28>>2]=0.0;g[a+32>>2]=+g[b+8>>2];g[a+36>>2]=+g[b+24>>2];g[a+40>>2]=+g[b+40>>2];g[a+44>>2]=0.0;g[a+48>>2]=+g[b+48>>2];g[a+52>>2]=+g[b+52>>2];g[a+56>>2]=+g[b+56>>2];g[a+60>>2]=0.0;return}function Xt(a){a=a|0;return a+48|0}function Xu(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+h[b+(c<<5)+(d<<3)>>3];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[a+48+(e<<2)>>2]=+h[b+96+(e<<3)>>3];e=e+1|0}return}function Xv(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+g[b+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[a+48+(e<<2)>>2]=+g[b+48+(e<<2)>>2];e=e+1|0}return}function Xw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;e=+g[b>>2];f=+g[b+4>>2];h=+g[b+8>>2];i=1.0/+Q(+(e*e+f*f+h*h));j=e*i;e=f*i;f=h*i;i=+g[d>>2];h=+g[d+4>>2];k=+g[d+8>>2];l=1.0/+Q(+(i*i+h*h+k*k));m=i*l;i=h*l;h=k*l;l=f*i-e*h;k=j*h-f*m;n=e*m-j*i;d=c[a+24>>2]|0;o=+g[d+4>>2];p=+g[d+20>>2];q=+g[d+36>>2];r=+g[d+8>>2];s=+g[d+24>>2];t=+g[d+40>>2];u=+g[d+12>>2];v=+g[d+28>>2];w=+g[d+44>>2];x=-0.0- +g[d+52>>2];y=-0.0- +g[d+56>>2];z=-0.0- +g[d+60>>2];g[a+40>>2]=o*l+k*p+n*q;g[a+44>>2]=m*o+i*p+h*q;g[a+48>>2]=j*o+e*p+f*q;g[a+52>>2]=0.0;g[a+56>>2]=l*r+k*s+n*t;g[a+60>>2]=m*r+i*s+h*t;g[a+64>>2]=j*r+e*s+f*t;g[a+68>>2]=0.0;g[a+72>>2]=l*u+k*v+n*w;g[a+76>>2]=m*u+i*v+h*w;g[a+80>>2]=j*u+e*v+f*w;g[a+84>>2]=0.0;g[a+88>>2]=o*0.0+p*0.0+q*0.0+(o*x+p*y+q*z);g[a+92>>2]=r*0.0+s*0.0+t*0.0+(r*x+s*y+t*z);g[a+96>>2]=u*0.0+v*0.0+w*0.0+(u*x+v*y+w*z);g[a+100>>2]=0.0;b=c[a+28>>2]|0;z=+g[b+4>>2];w=+g[b+20>>2];y=+g[b+36>>2];v=+g[b+8>>2];x=+g[b+24>>2];u=+g[b+40>>2];t=+g[b+12>>2];s=+g[b+28>>2];r=+g[b+44>>2];q=-0.0- +g[b+52>>2];p=-0.0- +g[b+56>>2];o=-0.0- +g[b+60>>2];g[a+104>>2]=l*z+k*w+n*y;g[a+108>>2]=m*z+i*w+h*y;g[a+112>>2]=j*z+e*w+f*y;g[a+116>>2]=0.0;g[a+120>>2]=l*v+k*x+n*u;g[a+124>>2]=m*v+i*x+h*u;g[a+128>>2]=j*v+e*x+f*u;g[a+132>>2]=0.0;g[a+136>>2]=l*t+k*s+n*r;g[a+140>>2]=m*t+i*s+h*r;g[a+144>>2]=j*t+e*s+f*r;g[a+148>>2]=0.0;g[a+152>>2]=z*0.0+w*0.0+y*0.0+(z*q+w*p+y*o);g[a+156>>2]=v*0.0+x*0.0+u*0.0+(v*q+x*p+u*o);g[a+160>>2]=t*0.0+s*0.0+r*0.0+(t*q+s*p+r*o);g[a+164>>2]=0.0;aoZ(a,d+4|0,b+4|0);return}function Xx(a,b){a=a|0;b=b|0;return ao$(a,b)|0}function Xy(a){a=a|0;b3(c[a>>2]|0,0)|0;return}function Xz(a){a=a|0;var b=0;if((a|0)==0){return}b=c[a>>2]|0;if((b|0)!=0){aDB(b)}aDB(a);return}function XA(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+8|0;d=b|0;b3(d|0,0)|0;e=c[a>>2]|0;i=b;return(((c[d+4>>2]|0)-(c[e+4>>2]|0)|0)/1e3|0)+(((c[d>>2]|0)-(c[e>>2]|0)|0)*1e3|0)|0}function XB(a){a=a|0;var b=0,d=0,e=0;b=i;i=i+8|0;d=b|0;b3(d|0,0)|0;e=c[a>>2]|0;i=b;return(c[d+4>>2]|0)-(c[e+4>>2]|0)+(((c[d>>2]|0)-(c[e>>2]|0)|0)*1e6|0)|0}function XC(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+16|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+32|0;a=b+32|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function XD(b){b=b|0;var d=0,e=0;d=i;i=i+16|0;e=d|0;do{if((a[43944]|0)==0){if((b1(43944)|0)==0){break}}}while(0);ec(b|0,e);b=e;c[9198]=c[b>>2];c[9199]=c[b+4>>2];c[9200]=c[b+8>>2];c[9201]=c[b+12>>2];i=d;return 36792}function XE(b){b=b|0;var d=0,e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0;d=i;i=i+112|0;e=d|0;f=d+48|0;do{if((a[44048]|0)==0){if((b1(44048)|0)==0){break}else{h=36728}do{h=h+16|0;}while((h|0)!=36776)}}while(0);h=e;d$(e,b|0,b+16|0,b+32|0,b+4|0,b+20|0,b+36|0,b+8|0,b+24|0,b+40|0);j=-0.0- +g[b+48>>2];k=-0.0- +g[b+52>>2];l=-0.0- +g[b+56>>2];m=+g[e>>2]*j+ +g[e+4>>2]*k+ +g[e+8>>2]*l;n=+g[e+16>>2]*j+ +g[e+20>>2]*k+ +g[e+24>>2]*l;o=+g[e+32>>2]*j+ +g[e+36>>2]*k+ +g[e+40>>2]*l;b=f+48|0;p=f|0;do{p=p+16|0;}while((p|0)!=(b|0));b=f;c[b>>2]=c[h>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];h=f+16|0;p=e+16|0;c[h>>2]=c[p>>2];c[h+4>>2]=c[p+4>>2];c[h+8>>2]=c[p+8>>2];c[h+12>>2]=c[p+12>>2];p=f+32|0;h=e+32|0;c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];g[f+48>>2]=m;g[f+52>>2]=n;g[f+56>>2]=o;g[f+60>>2]=0.0;c[9182]=c[b>>2];c[9183]=c[b+4>>2];c[9184]=c[b+8>>2];c[9185]=c[b+12>>2];b=f+16|0;c[9186]=c[b>>2];c[36748>>2]=c[b+4>>2];c[36752>>2]=c[b+8>>2];c[36756>>2]=c[b+12>>2];b=f+32|0;c[9190]=c[b>>2];c[36764>>2]=c[b+4>>2];c[36768>>2]=c[b+8>>2];c[36772>>2]=c[b+12>>2];b=f+48|0;c[9194]=c[b>>2];c[36780>>2]=c[b+4>>2];c[36784>>2]=c[b+8>>2];c[36788>>2]=c[b+12>>2];i=d;return 36728}function XF(){B1();return 42752}function XG(){var a=0,b=0,d=0,e=0,f=0;while(1){a=aDx(4)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=6114;break}dC[b&63]()}if((d|0)==6114){b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}b=a;while(1){e=aDx(8)|0;if((e|0)!=0){d=6128;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){d=6126;break}dC[f&63]()}if((d|0)==6126){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}else if((d|0)==6128){c[a>>2]=e;b3(e|0,0)|0;return b|0}return 0}function XH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;while(1){b=aDx(4)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=6140;break}dC[d&63]()}if((e|0)==6140){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=b;while(1){f=aDx(8)|0;if((f|0)!=0){e=6154;break}g=(C=c[10744]|0,c[10744]=C+0,C);if((g|0)==0){break}dC[g&63]()}if((e|0)==6154){c[b>>2]=f;b=c[a>>2]|0;a=f;f=c[b+4>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=f;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function XI(a,b){a=a|0;b=b|0;g[b>>2]=+g[a>>2];g[b+4>>2]=+g[a+16>>2];g[b+8>>2]=+g[a+32>>2];g[b+12>>2]=0.0;g[b+16>>2]=+g[a+4>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+36>>2];g[b+28>>2]=0.0;g[b+32>>2]=+g[a+8>>2];g[b+36>>2]=+g[a+24>>2];g[b+40>>2]=+g[a+40>>2];g[b+44>>2]=0.0;g[b+48>>2]=+g[a+48>>2];g[b+52>>2]=+g[a+52>>2];g[b+56>>2]=+g[a+56>>2];g[b+60>>2]=1.0;return}function XJ(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[b+(c<<4)+(d<<2)>>2]=+g[a+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[b+48+(e<<2)>>2]=+g[a+48+(e<<2)>>2];e=e+1|0}return}function XK(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[a+(c<<4)+(d<<2)>>2]=+g[b+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[a+48+(e<<2)>>2]=+g[b+48+(e<<2)>>2];e=e+1|0}return}function XL(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;while(1){if((c|0)<3){d=0}else{e=0;break}while(1){if((d|0)>=4){break}g[b+(c<<4)+(d<<2)>>2]=+g[a+(c<<4)+(d<<2)>>2];d=d+1|0}c=c+1|0}while(1){if((e|0)>=4){break}g[b+48+(e<<2)>>2]=+g[a+48+(e<<2)>>2];e=e+1|0}return}function XM(a){a=a|0;return a|0}function XN(a){a=a|0;return+(+g[a+104>>2])}function XO(b){b=b|0;return(a[b+116|0]&1)!=0|0}function XP(a,b){a=a|0;b=+b;g[a>>2]=b;return}function XQ(b,c){b=b|0;c=c|0;a[b+116|0]=c&1;return}function XR(a,b){a=a|0;b=+b;g[a+112>>2]=b;return}function XS(a,b){a=a|0;b=+b;g[a+96>>2]=b;return}function XT(a){a=a|0;return+(+g[a+108>>2])}function XU(a,b){a=a|0;b=+b;g[a+100>>2]=b;return}function XV(a){a=a|0;return+(+g[a+92>>2])}function XW(a){a=a|0;return+(+g[a+96>>2])}function XX(a){a=a|0;return+(+g[a>>2])}function XY(a,b){a=a|0;b=+b;g[a+92>>2]=b;return}function XZ(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;e=i;i=i+112|0;f=e|0;h=e+48|0;do{if((a[43936]|0)==0){if((b1(43936)|0)==0){break}else{j=36664}do{j=j+16|0;}while((j|0)!=36712)}}while(0);j=f;k=+g[d+48>>2]- +g[b+48>>2];l=+g[d+52>>2]- +g[b+52>>2];m=+g[d+56>>2]- +g[b+56>>2];ea(f,b|0,d|0);n=+g[b>>2]*k+ +g[b+16>>2]*l+ +g[b+32>>2]*m;o=+g[b+4>>2]*k+ +g[b+20>>2]*l+ +g[b+36>>2]*m;p=+g[b+8>>2]*k+ +g[b+24>>2]*l+ +g[b+40>>2]*m;b=h+48|0;d=h|0;do{d=d+16|0;}while((d|0)!=(b|0));b=h;c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];c[b+12>>2]=c[j+12>>2];j=h+16|0;d=f+16|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];d=h+32|0;j=f+32|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];g[h+48>>2]=n;g[h+52>>2]=o;g[h+56>>2]=p;g[h+60>>2]=0.0;c[9166]=c[b>>2];c[9167]=c[b+4>>2];c[9168]=c[b+8>>2];c[9169]=c[b+12>>2];b=h+16|0;c[9170]=c[b>>2];c[36684>>2]=c[b+4>>2];c[36688>>2]=c[b+8>>2];c[36692>>2]=c[b+12>>2];b=h+32|0;c[9174]=c[b>>2];c[36700>>2]=c[b+4>>2];c[36704>>2]=c[b+8>>2];c[36708>>2]=c[b+12>>2];b=h+48|0;c[9178]=c[b>>2];c[36716>>2]=c[b+4>>2];c[36720>>2]=c[b+8>>2];c[36724>>2]=c[b+12>>2];i=e;return 36664}function X_(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0;do{if((a[44088]|0)==0){if((b1(44088)|0)==0){break}}}while(0);d=+g[c>>2];e=+g[c+4>>2];f=+g[c+8>>2];h=+g[b+16>>2]*d+ +g[b+20>>2]*e+ +g[b+24>>2]*f+ +g[b+52>>2];i=+g[b+32>>2]*d+ +g[b+36>>2]*e+ +g[b+40>>2]*f+ +g[b+56>>2];g[9162]=+g[b>>2]*d+ +g[b+4>>2]*e+ +g[b+8>>2]*f+ +g[b+48>>2];g[9163]=h;g[9164]=i;g[9165]=0.0;return 36648}function X$(a,b){a=a|0;b=b|0;em(a|0,b);return}function X0(a){a=a|0;X1(a);return}function X1(a){a=a|0;g[a>>2]=1.0;aDD(a+4|0,0,16);g[a+20>>2]=1.0;aDD(a+24|0,0,16);g[a+40>>2]=1.0;g[a+44>>2]=0.0;aDD(a+48|0,0,16);return}function X2(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+16|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+32|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+48|0;d=b+48|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];return a|0}function X3(b,c){b=b|0;c=c|0;var d=0,e=0,f=0.0,h=0.0,j=0.0,k=0.0,l=0.0;d=i;i=i+48|0;e=d|0;do{if((a[44e3]|0)==0){if((b1(44e3)|0)==0){break}}}while(0);f=+g[c>>2]- +g[b+48>>2];h=+g[c+4>>2]- +g[b+52>>2];j=+g[c+8>>2]- +g[b+56>>2];d$(e,b|0,b+16|0,b+32|0,b+4|0,b+20|0,b+36|0,b+8|0,b+24|0,b+40|0);k=+g[e+16>>2]*f+ +g[e+20>>2]*h+ +g[e+24>>2]*j;l=+g[e+32>>2]*f+ +g[e+36>>2]*h+ +g[e+40>>2]*j;g[9158]=+g[e>>2]*f+ +g[e+4>>2]*h+ +g[e+8>>2]*j;g[9159]=k;g[9160]=l;g[9161]=0.0;i=d;return 36632}function X4(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;e=i;i=i+48|0;f=e|0;h=f;anx(f,b|0,d|0);j=a;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];h=a+16|0;j=f+16|0;c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];j=a+32|0;h=f+32|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];k=+g[d+48>>2];l=+g[d+52>>2];m=+g[d+56>>2];n=+g[b+16>>2]*k+ +g[b+20>>2]*l+ +g[b+24>>2]*m+ +g[b+52>>2];o=+g[b+32>>2]*k+ +g[b+36>>2]*l+ +g[b+40>>2]*m+ +g[b+56>>2];g[a+48>>2]=+g[b>>2]*k+ +g[b+4>>2]*l+ +g[b+8>>2]*m+ +g[b+48>>2];g[a+52>>2]=n;g[a+56>>2]=o;g[a+60>>2]=0.0;i=e;return}function X5(a){a=a|0;if((a|0)==0){return}aDB(a);return}function X6(a,b){a=a|0;b=b|0;var d=0;d=a+48|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function X7(){var a=0,b=0,d=0,e=0;while(1){a=aDx(64)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=6229;break}dC[b&63]()}if((d|0)==6229){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;b=a+48|0;e=a;do{e=e+16|0;}while((e|0)!=(b|0));return d|0}function X8(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;while(1){b=aDx(64)|0;if((b|0)!=0){break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){e=6243;break}dC[d&63]()}if((e|0)==6243){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}e=b;d=b+48|0;f=d;g=b;do{g=g+16|0;}while((g|0)!=(f|0));f=a;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=b+16|0;g=a+16|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=b+32|0;b=a+32|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];b=a+48|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];return e|0}function X9(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;while(1){d=aDx(64)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=6257;break}dC[e&63]()}if((f|0)==6257){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;e=d;g=d+48|0;h=g;i=d;do{i=i+16|0;}while((i|0)!=(h|0));em(e,a);a=b;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];return f|0}function Ya(b,d,e){b=+b;d=d|0;e=e|0;var f=0,h=0,i=0,j=0;while(1){f=aDx(136)|0;if((f|0)!=0){break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){i=6271;break}dC[h&63]()}if((i|0)==6271){i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}i=f;g[f>>2]=b;c[f+4>>2]=d;d=f+8|0;h=f+56|0;j=d;do{j=j+16|0;}while((j|0)!=(h|0));c[f+72>>2]=e;aDD(f+76|0,0,24);g[f+100>>2]=.5;g[f+104>>2]=0.0;g[f+108>>2]=.800000011920929;g[f+112>>2]=1.0;a[f+116|0]=0;g[f+120>>2]=.004999999888241291;g[f+124>>2]=.009999999776482582;g[f+128>>2]=.009999999776482582;g[f+132>>2]=.009999999776482582;X1(d);return i|0}function Yb(a,b){a=a|0;b=+b;g[a+104>>2]=b;return}function Yc(a){a=a|0;return+(+g[a+132>>2])}function Yd(a){a=a|0;return+(+g[a+128>>2])}function Ye(a,b){a=a|0;b=b|0;c[a+72>>2]=b;return}function Yf(a,b){a=a|0;b=+b;g[a+128>>2]=b;return}function Yg(a,b){a=a|0;b=+b;g[a+124>>2]=b;return}function Yh(a){a=a|0;return c[a+72>>2]|0}function Yi(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function Yj(a){a=a|0;return+(+g[a+100>>2])}function Yk(a,b){a=a|0;b=+b;g[a+108>>2]=b;return}function Yl(a){a=a|0;return a+8|0}function Ym(a){a=a|0;return a+76|0}function Yn(a){a=a|0;return c[a+4>>2]|0}function Yo(a){a=a|0;return+(+g[a+120>>2])}function Yp(a){a=a|0;return+(+g[a+124>>2])}function Yq(a,b){a=a|0;b=+b;g[a+120>>2]=b;return}function Yr(a){a=a|0;return+(+g[a+112>>2])}function Ys(a,b){a=a|0;b=+b;g[a+132>>2]=b;return}function Yt(a){a=a|0;return c[a+20>>2]|0}function Yu(a){a=a|0;return c[a+4>>2]|0}function Yv(a){a=a|0;return c[a>>2]|0}function Yw(a){a=a|0;return+(+g[a+8>>2])}function Yx(a){a=a|0;return c[a+28>>2]|0}function Yy(a){a=a|0;return c[a+24>>2]|0}function Yz(a){a=a|0;return+(+g[a+128>>2])}function YA(a){a=a|0;return a|0}function YB(a){a=a|0;return a+64|0}function YC(a,b){a=a|0;b=b|0;c[a+132>>2]=b;return}function YD(a){a=a|0;return c[a+132>>2]|0}function YE(a,b){a=a|0;b=+b;g[a+128>>2]=b;return}function YF(a){a=a|0;return a+32|0}function YG(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+24|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+40|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+56|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function YH(a,b){a=a|0;b=b|0;var d=0;d=a+76|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function YI(a){a=a|0;if((a|0)==0){return}aDB(a);return}function YJ(a){a=a|0;aDg(a);return}function YK(a){a=a|0;if((a|0)==0){return}aDh(a);aDB(a);return}function YL(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0;b=i;i=i+8|0;d=b|0;e=a+16|0;f=(c[e>>2]|0)-1|0;c[e>>2]=f;if((f|0)!=0){h=f;j=(h|0)==0;i=b;return j|0}if((c[a+4>>2]|0)==0){h=0;j=(h|0)==0;i=b;return j|0}b3(d|0,0)|0;f=c[10742]|0;k=a+8|0;g[k>>2]=+(((c[d+4>>2]|0)-(c[f+4>>2]|0)+(((c[d>>2]|0)-(c[f>>2]|0)|0)*1e6|0)-(c[a+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[k>>2];h=c[e>>2]|0;j=(h|0)==0;i=b;return j|0}function YM(a){a=a|0;var b=0,d=0;b=a+24|0;d=c[b>>2]|0;if((d|0)!=0){aDh(d);aDB(d)}c[b>>2]=0;b=a+28|0;a=c[b>>2]|0;if((a|0)==0){c[b>>2]=0;return}aDh(a);aDB(a);c[b>>2]=0;return}function YN(a){a=a|0;var b=0,d=0,e=0,f=0;b=i;i=i+8|0;d=b|0;e=a+4|0;c[e>>2]=(c[e>>2]|0)+1;e=a+16|0;f=c[e>>2]|0;c[e>>2]=f+1;if((f|0)!=0){i=b;return}b3(d|0,0)|0;f=c[10742]|0;c[a+12>>2]=(c[d+4>>2]|0)-(c[f+4>>2]|0)+(((c[d>>2]|0)-(c[f>>2]|0)|0)*1e6|0);i=b;return}function YO(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+64|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+80|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+96|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+112|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function YP(a,b){a=a|0;b=b|0;var d=0,e=0;d=a;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+16|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+32|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+48|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function YQ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function YR(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function YS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(95)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;asr(f,a,b,1);return f|0}function YT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[9806]=(c[9806]|0)+1;e=aDx(95)|0;if((e|0)==0){f=0}else{g=-(e+4|0)&15;c[e+g>>2]=e;f=e+(g+4)|0}g=f;asr(g,a,b,d);return g|0}function YU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;f=aDx(95)|0;if((f|0)==0){g=0}else{h=-(f+4|0)&15;c[f+h>>2]=f;g=f+(h+4)|0}h=g;ass(h,a,b,d,e,1);return h|0}function YV(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;c[9806]=(c[9806]|0)+1;g=aDx(95)|0;if((g|0)==0){h=0}else{i=-(g+4|0)&15;c[g+i>>2]=g;h=g+(i+4)|0}i=h;ass(i,a,b,d,e,f);return i|0}function YW(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+76>>2]&2047](a,b);return}function YX(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a,b,d)|0}function YY(b,d,e,f){b=+b;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0;while(1){h=aDx(136)|0;if((h|0)!=0){break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){j=6393;break}dC[i&63]()}if((j|0)==6393){j=cd(4)|0;c[j>>2]=19096;bF(j|0,34368,676);return 0}j=h;g[h>>2]=b;c[h+4>>2]=d;d=h+8|0;i=h+56|0;k=d;do{k=k+16|0;}while((k|0)!=(i|0));c[h+72>>2]=e;e=h+76|0;i=f;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];g[h+92>>2]=0.0;g[h+96>>2]=0.0;g[h+100>>2]=.5;g[h+104>>2]=0.0;g[h+108>>2]=.800000011920929;g[h+112>>2]=1.0;a[h+116|0]=0;g[h+120>>2]=.004999999888241291;g[h+124>>2]=.009999999776482582;g[h+128>>2]=.009999999776482582;g[h+132>>2]=.009999999776482582;X1(d);return j|0}function YZ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a+24|0;e=d;while(1){f=c[e>>2]|0;if((f|0)==0){break}if((c[f>>2]|0)==(b|0)){g=f;h=6414;break}else{e=f+28|0}}if((h|0)==6414){return g|0}while(1){i=aDx(32)|0;if((i|0)!=0){h=6412;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){h=6409;break}dC[e&63]()}if((h|0)==6409){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((h|0)==6412){h=i;c[i>>2]=b;aDD(i+4|0,0,16);c[i+20>>2]=a;c[i+24>>2]=0;a=i+28|0;c[a>>2]=0;aDg(h);c[a>>2]=c[d>>2];c[d>>2]=h;g=h;return g|0}return 0}function Y_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;while(1){d=aDx(32)|0;if((d|0)!=0){e=6427;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==6427){e=d;c[d>>2]=a;aDD(d+4|0,0,16);c[d+20>>2]=b;c[d+24>>2]=0;c[d+28>>2]=0;aDg(e);return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function Y$(){var a=0,b=0,d=0,e=0;while(1){a=aDx(136)|0;if((a|0)!=0){break}b=(C=c[10744]|0,c[10744]=C+0,C);if((b|0)==0){d=6436;break}dC[b&63]()}if((d|0)==6436){d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}d=a;b=a+48|0;e=a;do{e=e+16|0;}while((e|0)!=(b|0));b=a+112|0;e=a+64|0;do{e=e+16|0;}while((e|0)!=(b|0));g[a+128>>2]=999999984306749400.0;c[a+132>>2]=0;return d|0}function Y0(b){b=b|0;return(a[b+61|0]&1)!=0|0}function Y1(a){a=a|0;return c[a+48>>2]|0}function Y2(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function Y3(a,b){a=a|0;b=b|0;c[a+56>>2]=b;return}function Y4(b){b=b|0;return(a[b+60|0]&1)!=0|0}function Y5(a){a=a|0;return c[a+56>>2]|0}function Y6(a){a=a|0;return(c[a+4>>2]|0)==31|0}function Y7(a){a=a|0;return(c[a+4>>2]|0)<7|0}function Y8(a){a=a|0;return c[a+52>>2]|0}function Y9(a){a=a|0;return a+16|0}function Za(a){a=a|0;return(c[a+4>>2]|0)<20|0}function Zb(a){a=a|0;return(c[a+4>>2]|0)==28|0}function Zc(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function Zd(a){a=a|0;return c[a+8>>2]|0}function Ze(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function Zf(a){a=a|0;return(c[a+4>>2]|0)==32|0}function Zg(a){a=a|0;return c[a+4>>2]|0}function Zh(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function Zi(a){a=a|0;return c[a+28>>2]|0}function Zj(a){a=a|0;return c[a+24>>2]|0}function Zk(a){a=a|0;return+(+g[a+1080>>2])}function Zl(a){a=a|0;return+(+g[a+1108>>2])}function Zm(a){a=a|0;return+(+g[a+1076>>2])}function Zn(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function Zo(b){b=b|0;return(a[b+20|0]&1)!=0|0}function Zp(b){b=b|0;return(a[b+1088|0]&1)!=0|0}function Zq(b,c){b=b|0;c=c|0;a[b+41|0]=c&1;return}function Zr(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function Zs(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43552]|0)==0){if((b1(43552)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9154]=c[d>>2];c[9155]=c[d+4>>2];c[9156]=c[d+8>>2];c[9157]=c[d+12>>2];i=e;return 36616}function Zt(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function Zu(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function Zv(a,b,d){a=a|0;b=b|0;d=d|0;ayw(c[a+52>>2]|0,c[a+48>>2]|0,b,d);aBy(a|0);return}function Zw(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0}function Zx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0;h=i;i=i+48|0;j=h|0;k=h+16|0;l=h+32|0;m=c[b+48>>2]|0;c[l>>2]=18760;c[l+4>>2]=m;c[l+8>>2]=d;d=c[b+52>>2]|0;b=d|0;m=l|0;aDD(j|0,0,16);aDD(k|0,0,16);if((a[d+60|0]&1)==0){azp(b,m,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k);i=h;return}else{azq(b,m,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k,c[d+56>>2]|0);i=h;return}}function Zy(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function Zz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function ZA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function ZB(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function ZC(b){b=b|0;var d=0,e=0,f=0,h=0,i=0;d=b+61|0;e=b+52|0;do{if((a[d]&1)!=0){f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-172+168>>2]|0)}}while(0);c[9806]=(c[9806]|0)+1;f=aDx(191)|0;if((f|0)==0){h=0}else{i=-(f+4|0)&15;c[f+i>>2]=f;h=f+(i+4)|0}c[h+52>>2]=278;a[h+60|0]=0;a[h+80|0]=1;c[h+76>>2]=0;c[h+68>>2]=0;c[h+72>>2]=0;a[h+100|0]=1;c[h+96>>2]=0;c[h+88>>2]=0;c[h+92>>2]=0;a[h+120|0]=1;c[h+116>>2]=0;c[h+108>>2]=0;c[h+112>>2]=0;a[h+140|0]=1;c[h+136>>2]=0;c[h+128>>2]=0;c[h+132>>2]=0;c[h+144>>2]=0;a[h+164|0]=1;c[h+160>>2]=0;c[h+152>>2]=0;c[h+156>>2]=0;c[h+168>>2]=0;g[h+4>>2]=-3.4028234663852886e+38;g[h+8>>2]=-3.4028234663852886e+38;g[h+12>>2]=-3.4028234663852886e+38;g[h+16>>2]=0.0;g[h+20>>2]=3.4028234663852886e+38;g[h+24>>2]=3.4028234663852886e+38;g[h+28>>2]=3.4028234663852886e+38;g[h+32>>2]=0.0;c[h>>2]=25376;c[e>>2]=h;ayv(h,c[b+48>>2]|0,(a[b+60|0]&1)!=0,b+16|0,b+32|0);a[d]=1;return}function ZD(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function ZE(a){a=a|0;aBy(a|0);return}function ZF(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function ZG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0;e=b|0;f=b+4|0;h=b+8|0;i=d|0;j=d+4|0;k=d+8|0;ayB(c[a+52>>2]|0,c[a+48>>2]|0,+g[e>>2],+g[f>>2],+g[h>>2],+g[i>>2],+g[j>>2],+g[k>>2]);l=a+16|0;m=+g[e>>2];if(m<+g[l>>2]){g[l>>2]=m}l=a+20|0;m=+g[f>>2];if(m<+g[l>>2]){g[l>>2]=m}l=a+24|0;m=+g[h>>2];if(m<+g[l>>2]){g[l>>2]=m}l=a+28|0;m=+g[b+12>>2];if(m<+g[l>>2]){g[l>>2]=m}l=a+32|0;m=+g[i>>2];if(+g[l>>2]>2]=m}l=a+36|0;m=+g[j>>2];if(+g[l>>2]>2]=m}l=a+40|0;m=+g[k>>2];if(+g[l>>2]>2]=m}l=a+44|0;m=+g[d+12>>2];if(+g[l>>2]>=m){return}g[l>>2]=m;return}function ZH(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0;k=i;i=i+16|0;l=k|0;m=c[b+48>>2]|0;c[l>>2]=18728;c[l+4>>2]=m;c[l+8>>2]=d;d=c[b+52>>2]|0;b=d|0;m=l|0;if((a[d+60|0]&1)==0){azp(b,m,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,j);i=k;return}else{azq(b,m,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,j,c[d+56>>2]|0);i=k;return}}function ZI(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43224]|0)==0){if((b1(43224)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+68>>2]&511](f,b|0,d);d=f;c[9758]=c[d>>2];c[9759]=c[d+4>>2];c[9760]=c[d+8>>2];c[9761]=c[d+12>>2];i=e;return 39032}function ZJ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function ZK(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function ZL(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ZM(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function ZN(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function ZO(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+72>>2]&2047](a,b);return}function ZP(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0;e=i;i=i+16|0;f=e|0;g[f>>2]=1.0;g[f+4>>2]=1.0;g[f+8>>2]=1.0;g[f+12>>2]=0.0;c[b+52>>2]=d;a[b+61|0]=0;d=b|0;h=cA[c[(c[b>>2]|0)+28>>2]&4095](d)|0;j=+g[h>>2]+-1.0;k=+g[h+4>>2]+-1.0;l=+g[h+8>>2]+-1.0;if(j*j+k*k+l*l<=1.1920928955078125e-7){i=e;return}aBB(d,f);i=e;return}function ZQ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0.0,j=0.0;c[b+52>>2]=d;a[b+61|0]=0;d=b|0;f=cA[c[(c[b>>2]|0)+28>>2]&4095](d)|0;h=+g[f>>2]- +g[e>>2];i=+g[f+4>>2]- +g[e+4>>2];j=+g[f+8>>2]- +g[e+8>>2];if(h*h+i*i+j*j<=1.1920928955078125e-7){return}aBB(d,e);return}function ZR(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+8>>2]&511](a,b,d)|0}function ZS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a|0,b);return}function ZT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;return+(+db[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f))}function ZU(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+8>>2]&255](a|0,b,d,e,f);return}function ZV(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function ZW(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function ZX(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function ZY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function ZZ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function Z_(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0;do{if((a[43864]|0)==0){if((b1(43864)|0)==0){break}}}while(0);d=(+g[b+176>>2]+ +g[b+180>>2])*.5;e=+g[b+944>>2]*d+ +g[b+960>>2];f=d*+g[b+948>>2]+ +g[b+964>>2];h=d*+g[b+952>>2]+ +g[b+968>>2];i=c[b+24>>2]|0;d=+g[i+4>>2];j=+g[i+20>>2];k=+g[i+36>>2];l=+g[i+8>>2];m=+g[i+24>>2];n=+g[i+40>>2];o=+g[i+12>>2];p=+g[i+28>>2];q=+g[i+44>>2];r=-0.0- +g[i+52>>2];s=-0.0- +g[i+56>>2];t=-0.0- +g[i+60>>2];g[9754]=d*r+j*s+k*t+(d*e+j*f+k*h);g[9755]=l*r+m*s+n*t+(l*e+m*f+n*h);g[9756]=o*r+p*s+q*t+(o*e+p*f+q*h);g[9757]=0.0;return 39016}function Z$(a,b){a=a|0;b=+b;g[a+216>>2]=b;return}function Z0(b){b=b|0;return(a[b+288|0]&1)!=0|0}function Z1(b){b=b|0;return(a[b+41|0]&1)!=0|0}function Z2(a){a=a|0;return+(+g[a+1112>>2])}function Z3(a,b){a=a|0;b=+b;g[a+212>>2]=b;return}function Z4(b){b=b|0;return(a[b+21|0]&1)!=0|0}function Z5(a){a=a|0;return+(+g[a+1096>>2])}function Z6(a){a=a|0;return c[a+4>>2]|0}function Z7(a,b){a=a|0;b=+b;g[a+264>>2]=b;return}function Z8(b){b=b|0;return(a[b+289|0]&1)!=0|0}function Z9(b,c){b=b|0;c=c|0;a[b+1104|0]=c&1;return}function _a(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function _b(a){a=a|0;return+(+g[a+1072>>2])}function _c(a){a=a|0;return a+880|0}function _d(a){a=a|0;return a+816|0}function _e(a){a=a|0;return c[a+4>>2]|0}function _f(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function _g(a,b){a=a|0;b=+b;g[a+200>>2]=b;return}function _h(a){a=a|0;return+(+g[a+188>>2])}function _i(a){a=a|0;return+(+g[a+244>>2])}function _j(a){a=a|0;return+(+g[a+256>>2])}function _k(a,b){a=a|0;b=+b;g[a+176>>2]=b;return}function _l(a){a=a|0;return+(+g[a+196>>2])}function _m(a,b){a=a|0;b=b|0;c[b>>2]=6;c[b+4>>2]=0;return}function _n(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function _o(a){a=a|0;return c[a+12>>2]|0}function _p(a,b){a=a|0;b=+b;g[a+1092>>2]=b;return}function _q(a){a=a|0;return+(+g[a+180>>2])}function _r(a,b){a=a|0;b=+b;g[a+1096>>2]=b;return}function _s(a){a=a|0;return+(+g[a+184>>2])}function _t(a){a=a|0;return+(+g[a+16>>2])}function _u(a,b){a=a|0;b=+b;g[a+192>>2]=b;return}function _v(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function _w(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function _x(a){a=a|0;return a+44|0}function _y(a){a=a|0;return a+108|0}function _z(a){a=a|0;return+(+g[a+216>>2])}function _A(a){a=a|0;return+(+g[a+228>>2])}function _B(a){a=a|0;return+(+g[a+272>>2])}function _C(a,b){a=a|0;b=+b;g[a+256>>2]=b;return}function _D(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function _E(a){a=a|0;return+(+g[a+200>>2])}function _F(a){a=a|0;return+(+g[a+36>>2])}function _G(a){a=a|0;return c[a+12>>2]|0}function _H(a){a=a|0;return+(+g[a+224>>2])}function _I(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function _J(b,c){b=b|0;c=c|0;a[b+1088|0]=c&1;return}function _K(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function _L(a){a=a|0;return+(+g[a+1024>>2])}function _M(a){a=a|0;return+(+g[a+232>>2])}function _N(a){a=a|0;return+(+g[a+212>>2])}function _O(a){a=a|0;return+(+g[a+32>>2])}function _P(a){a=a|0;return+(+g[a+248>>2])}function _Q(a,b){a=a|0;b=+b;g[a+260>>2]=b;return}function _R(a,b){a=a|0;b=+b;g[a+196>>2]=b;return}function _S(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function _T(b){b=b|0;do{if((a[43856]|0)==0){if((b1(43856)|0)==0){break}}}while(0);aDG(39e3,b+156|0,16);return 39e3}function _U(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function _V(a){a=a|0;aqT(a);return}function _W(a,b){a=a|0;b=+b;var c=0.0,d=0.0;c=+ck(+b,6.2831854820251465);do{if(c<-3.1415927410125732){d=c+6.2831854820251465}else{if(c<=3.1415927410125732){d=c;break}d=c-6.2831854820251465}}while(0);g[a+188>>2]=d;return}function _X(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;aqV(a,b,c,d,e,f,g,h);return}function _Y(a,b,c){a=a|0;b=b|0;c=c|0;aqR(a,b,c);return}function _Z(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function __(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function _$(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function _0(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function _1(a){a=a|0;return c[a+12>>2]|0}function _2(a,b){a=a|0;b=+b;g[a+208>>2]=b;return}function _3(a,b){a=a|0;b=+b;g[a+180>>2]=b;return}function _4(a,b){a=a|0;b=+b;g[a+1108>>2]=b;return}function _5(a){a=a|0;return+(+g[a+208>>2])}function _6(a,b){a=a|0;b=+b;g[a+1112>>2]=b;return}function _7(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function _8(a){a=a|0;return c[a+4>>2]|0}function _9(b){b=b|0;return(a[b+1104|0]&1)!=0|0}function $a(a){a=a|0;return+(+g[a+280>>2])}function $b(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function $c(a){a=a|0;return+(+g[a+260>>2])}function $d(a){a=a|0;return+(+g[a+1092>>2])}function $e(b){b=b|0;var c=0,d=0,e=0.0,f=0.0,h=0.0;c=b+288|0;a[c]=0;d=b+1024|0;e=+g[d>>2];g[b+1072>>2]=e;f=+g[b+176>>2];h=+g[b+180>>2];if(f>h){g[d>>2]=0.0;return}if(e>h){g[d>>2]=e-h;a[c]=1;return}if(e>2]=e-f;a[c]=1;return}else{g[d>>2]=0.0;return}}function $f(a){a=a|0;return+(+g[a+176>>2])}function $g(a,b){a=a|0;b=+b;g[a+280>>2]=b;return}function $h(a){a=a|0;return c[a+8>>2]|0}function $i(a,b){a=a|0;b=+b;g[a+276>>2]=b;return}function $j(a){a=a|0;return+(+g[a+276>>2])}function $k(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function $l(a){a=a|0;return+(+g[a+264>>2])}function $m(a){a=a|0;return+(+g[a+32>>2])}function $n(a){a=a|0;return+(+g[a+240>>2])}function $o(a,b){a=a|0;b=+b;g[a+272>>2]=b;return}function $p(a,b){a=a|0;b=+b;g[a+232>>2]=b;return}function $q(a){a=a|0;return+(+g[a+192>>2])}function $r(b){b=b|0;return(a[b+172|0]&1)!=0|0}function $s(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function $t(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function $u(a){a=a|0;return+(+g[a+12>>2])}function $v(a,b){a=a|0;b=+b;g[a>>2]=b;return}function $w(a){a=a|0;return+(+g[a+16>>2])}function $x(a){a=a|0;return+(+g[a+8>>2])}function $y(a){a=a|0;return+(+g[a>>2])}function $z(a){a=a|0;return+(+g[a+4>>2])}function $A(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function $B(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function $C(a,b){a=a|0;b=+b;g[a+20>>2]=b;return}function $D(a){a=a|0;return+(+g[a+20>>2])}function $E(a){a=a|0;return c[a+28>>2]|0}function $F(a){a=a|0;return c[a+24>>2]|0}function $G(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function $H(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function $I(a,b){a=a|0;b=+b;var c=0.0,d=0.0;c=+ck(+b,6.2831854820251465);do{if(c<-3.1415927410125732){d=c+6.2831854820251465}else{if(c<=3.1415927410125732){d=c;break}d=c-6.2831854820251465}}while(0);g[a+184>>2]=d;return}function $J(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function $K(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+44|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+60|0;e=b+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+76|0;f=b+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+92|0;e=b+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+108|0;f=d;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+124|0;e=d+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+140|0;f=d+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+156|0;e=d+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];aqR(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);ct[c[(c[a>>2]|0)+8>>2]&2047](a|0);return}function $L(a){a=a|0;if((a|0)==0){return}aDB(a);return}function $M(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function $N(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;f=i;i=i+112|0;h=f|0;j=f+48|0;k=e&1;while(1){l=aDx(1120)|0;if((l|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){m=80;break}dC[e&63]()}if((m|0)==80){m=cd(4)|0;c[m>>2]=19096;bF(m|0,34368,676);return 0}m=l;e=j;aq2();c[l+4>>2]=7;c[l+8>>2]=-1;c[l+12>>2]=-1;g[l+16>>2]=3.4028234663852886e+38;a[l+20|0]=1;a[l+21|0]=0;n=l+24|0;c[n>>2]=41520;o=l+28|0;c[o>>2]=b;g[l+32>>2]=0.0;g[l+36>>2]=.30000001192092896;c[l>>2]=23056;a[l+40|0]=0;p=l+108|0;q=d;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=l+124|0;r=d+16|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];r=l+140|0;q=d+32|0;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];q=l+156|0;r=d+48|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];a[l+172|0]=k;k=l+44|0;r=b+4|0;q=h;anx(h,r|0,p);s=+g[l+156>>2];t=+g[l+160>>2];u=+g[l+164>>2];v=+g[r>>2]*s+ +g[b+8>>2]*t+ +g[b+12>>2]*u+ +g[b+52>>2];w=+g[b+20>>2]*s+ +g[b+24>>2]*t+ +g[b+28>>2]*u+ +g[b+56>>2];x=+g[b+36>>2]*s+ +g[b+40>>2]*t+ +g[b+44>>2]*u+ +g[b+60>>2];b=j+48|0;r=j|0;do{r=r+16|0;}while((r|0)!=(b|0));c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];c[e+8>>2]=c[q+8>>2];c[e+12>>2]=c[q+12>>2];q=j+16|0;b=h+16|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];b=j+32|0;r=h+32|0;c[b>>2]=c[r>>2];c[b+4>>2]=c[r+4>>2];c[b+8>>2]=c[r+8>>2];c[b+12>>2]=c[r+12>>2];g[j+48>>2]=v;g[j+52>>2]=w;g[j+56>>2]=x;g[j+60>>2]=0.0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];e=l+60|0;c[e>>2]=c[q>>2];c[e+4>>2]=c[q+4>>2];c[e+8>>2]=c[q+8>>2];c[e+12>>2]=c[q+12>>2];q=l+76|0;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];b=l+92|0;q=j+48|0;c[b>>2]=c[q>>2];c[b+4>>2]=c[q+4>>2];c[b+8>>2]=c[q+8>>2];c[b+12>>2]=c[q+12>>2];g[l+176>>2]=1.0;g[l+180>>2]=-1.0;g[l+184>>2]=0.0;g[l+188>>2]=0.0;g[l+192>>2]=1.0;g[l+196>>2]=.699999988079071;g[l+200>>2]=0.0;g[l+204>>2]=0.0;g[l+208>>2]=1.0;g[l+212>>2]=.699999988079071;g[l+216>>2]=0.0;g[l+220>>2]=0.0;g[l+256>>2]=1.0;g[l+260>>2]=.699999988079071;g[l+264>>2]=1.0;g[l+268>>2]=0.0;g[l+272>>2]=1.0;g[l+276>>2]=.699999988079071;g[l+280>>2]=1.0;g[l+284>>2]=0.0;g[l+224>>2]=1.0;g[l+228>>2]=.699999988079071;g[l+232>>2]=1.0;g[l+236>>2]=0.0;g[l+240>>2]=1.0;g[l+244>>2]=.699999988079071;g[l+248>>2]=1.0;g[l+252>>2]=0.0;a[l+1088|0]=0;g[l+1108>>2]=0.0;g[l+1112>>2]=0.0;g[l+1116>>2]=0.0;c[l+292>>2]=0;aDD(l+1092|0,0,13);a[l+41|0]=1;aqR(m,(c[n>>2]|0)+4|0,(c[o>>2]|0)+4|0);i=f;return m|0}function $O(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0;i=h&1;while(1){j=aDx(1120)|0;if((j|0)!=0){k=99;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((k|0)==99){k=j;c[j+4>>2]=7;c[j+8>>2]=-1;c[j+12>>2]=-1;g[j+16>>2]=3.4028234663852886e+38;a[j+20|0]=1;a[j+21|0]=0;c[j+24>>2]=b;c[j+28>>2]=d;g[j+32>>2]=0.0;g[j+36>>2]=.30000001192092896;c[j>>2]=23056;a[j+40|0]=0;h=j+44|0;l=e;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];c[h+8>>2]=c[l+8>>2];c[h+12>>2]=c[l+12>>2];l=j+60|0;h=e+16|0;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];c[l+8>>2]=c[h+8>>2];c[l+12>>2]=c[h+12>>2];h=j+76|0;l=e+32|0;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];c[h+8>>2]=c[l+8>>2];c[h+12>>2]=c[l+12>>2];l=j+92|0;h=e+48|0;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];c[l+8>>2]=c[h+8>>2];c[l+12>>2]=c[h+12>>2];h=j+108|0;l=f;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];c[h+8>>2]=c[l+8>>2];c[h+12>>2]=c[l+12>>2];l=j+124|0;h=f+16|0;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];c[l+8>>2]=c[h+8>>2];c[l+12>>2]=c[h+12>>2];h=j+140|0;l=f+32|0;c[h>>2]=c[l>>2];c[h+4>>2]=c[l+4>>2];c[h+8>>2]=c[l+8>>2];c[h+12>>2]=c[l+12>>2];l=j+156|0;h=f+48|0;c[l>>2]=c[h>>2];c[l+4>>2]=c[h+4>>2];c[l+8>>2]=c[h+8>>2];c[l+12>>2]=c[h+12>>2];a[j+172|0]=i;g[j+176>>2]=1.0;g[j+180>>2]=-1.0;g[j+184>>2]=0.0;g[j+188>>2]=0.0;g[j+192>>2]=1.0;g[j+196>>2]=.699999988079071;g[j+200>>2]=0.0;g[j+204>>2]=0.0;g[j+208>>2]=1.0;g[j+212>>2]=.699999988079071;g[j+216>>2]=0.0;g[j+220>>2]=0.0;g[j+256>>2]=1.0;g[j+260>>2]=.699999988079071;g[j+264>>2]=1.0;g[j+268>>2]=0.0;g[j+272>>2]=1.0;g[j+276>>2]=.699999988079071;g[j+280>>2]=1.0;g[j+284>>2]=0.0;g[j+224>>2]=1.0;g[j+228>>2]=.699999988079071;g[j+232>>2]=1.0;g[j+236>>2]=0.0;g[j+240>>2]=1.0;g[j+244>>2]=.699999988079071;g[j+248>>2]=1.0;g[j+252>>2]=0.0;a[j+1088|0]=0;g[j+1108>>2]=0.0;g[j+1112>>2]=0.0;g[j+1116>>2]=0.0;c[j+292>>2]=0;aDD(j+1092|0,0,13);a[j+41|0]=1;aqR(k,b+4|0,d+4|0);return k|0}k=cd(4)|0;c[k>>2]=19096;bF(k|0,34368,676);return 0}function $P(){var a=0,b=0,d=0;while(1){a=aDx(24)|0;if((a|0)!=0){b=111;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==111){g[a>>2]=5.880000114440918;g[a+4>>2]=.8299999833106995;g[a+8>>2]=.8799999952316284;g[a+12>>2]=500.0;g[a+16>>2]=10.5;g[a+20>>2]=6.0e3;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function $Q(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function $R(a){a=a|0;return a+40|0}function $S(a){a=a|0;return c[a+12>>2]|0}function $T(a){a=a|0;return c[a+4>>2]|0}function $U(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function $V(b){b=b|0;return(a[b+20|0]&1)!=0|0}function $W(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function $X(a){a=a|0;return c[a+4>>2]|0}function $Y(a){a=a|0;return+(+g[a+36>>2])}function $Z(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function $_(b){b=b|0;return(a[b+21|0]&1)!=0|0}function $$(a){a=a|0;return c[a+4>>2]|0}function $0(a){a=a|0;return c[a+12>>2]|0}function $1(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function $2(a){a=a|0;return c[a+12>>2]|0}function $3(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function $4(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function $5(a){a=a|0;return+(+g[a+32>>2])}function $6(a){a=a|0;return+(+g[a+16>>2])}function $7(a){a=a|0;return c[a+8>>2]|0}function $8(a){a=a|0;return+(+g[a+32>>2])}function $9(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function aaa(a){a=a|0;return+(+g[a+136>>2])}function aab(a){a=a|0;return+(+g[a+140>>2])}function aac(a,b){a=a|0;b=+b;g[a+112>>2]=b;return}function aad(a,b){a=a|0;b=+b;g[a+136>>2]=b;return}function aae(a){a=a|0;return+(+g[a+84>>2])}function aaf(a){a=a|0;return c[a+92>>2]|0}function aag(a){a=a|0;return c[a+96>>2]|0}function aah(a){a=a|0;return a+64|0}function aai(a,b){a=a|0;b=+b;g[a+84>>2]=b;return}function aaj(a){a=a|0;return c[a+104>>2]|0}function aak(a){a=a|0;return c[a+100>>2]|0}function aal(a,b){a=a|0;b=b|0;c[a+108>>2]=b;return}function aam(a,b){a=a|0;b=+b;g[a+140>>2]=b;return}function aan(a){a=a|0;return+(+g[a+112>>2])}function aao(a){a=a|0;return c[a+108>>2]|0}function aap(a){a=a|0;return+(+g[a+80>>2])}function aaq(a){a=a|0;return c[a+144>>2]|0}function aar(a){a=a|0;return a+32|0}function aas(a){a=a|0;return a+48|0}function aat(a,b){a=a|0;b=b|0;c[a+92>>2]=b;return}function aau(a,b){a=a|0;b=b|0;c[a+96>>2]=b;return}function aav(a,b){a=a|0;b=+b;g[a+80>>2]=b;return}function aaw(a){a=a|0;return+(+g[a+120>>2])}function aax(a){a=a|0;return+(+g[a+124>>2])}function aay(b,c){b=b|0;c=c|0;a[b+116|0]=c&1;return}function aaz(a){a=a|0;return c[a+144>>2]|0}function aaA(a,b){a=a|0;b=b|0;c[a+100>>2]=b;return}function aaB(a){a=a|0;return+(+g[a+128>>2])}function aaC(a){a=a|0;return+(+g[a+132>>2])}function aaD(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function aaE(a){a=a|0;return a+148|0}function aaF(a,b){a=a|0;b=+b;g[a+88>>2]=b;return}function aaG(a){a=a|0;return a+48|0}function aaH(a){a=a|0;return a+164|0}function aaI(a){a=a|0;return a+32|0}function aaJ(a,b){a=a|0;b=+b;g[a+120>>2]=b;return}function aaK(a,b){a=a|0;b=+b;g[a+124>>2]=b;return}function aaL(b){b=b|0;return(a[b+116|0]&1)!=0|0}function aaM(a){a=a|0;return+(+g[a+88>>2])}function aaN(a,b){a=a|0;b=+b;g[a+128>>2]=b;return}function aaO(a,b){a=a|0;b=+b;g[a+132>>2]=b;return}function aaP(a){a=a|0;return a+16|0}function aaQ(a){a=a|0;return a|0}function aaR(a,b){a=a|0;b=+b;g[a+80>>2]=b;return}function aaS(a){a=a|0;return+(+g[a+80>>2])}function aaT(a){a=a|0;return+(+g[a+112>>2])}function aaU(a,b){a=a|0;b=b|0;c[a+144>>2]=b;return}function aaV(a){a=a|0;return a+4|0}function aaW(a){a=a|0;return c[a+28>>2]|0}function aaX(a){a=a|0;return c[a+12>>2]|0}function aaY(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function aaZ(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function aa_(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function aa$(a){a=a|0;return c[a+12>>2]|0}function aa0(a){a=a|0;return c[a+4>>2]|0}function aa1(a){a=a|0;return c[a+24>>2]|0}function aa2(b,c){b=b|0;c=c|0;a[b+336|0]=c&1;return}function aa3(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a|0,b,d)|0}function aa4(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a|0,b,d,-1);return}function aa5(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a|0,b,d,e);return}function aa6(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a|0,b,-1))}function aa7(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a|0,b,d))}function aa8(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function aa9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function aba(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function abb(a,b){a=a|0;b=b|0;var c=0;c=a+40|0;a=b;aDC(c|0,a|0,1140)|0;return}function abc(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function abd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function abe(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function abf(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abg(a,b){a=a|0;b=b|0;var d=0;d=a+48|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abh(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abi(a){a=a|0;if((a|0)==0){return}aDB(a);return}function abj(a,b){a=a|0;b=b|0;var d=0;d=a+64|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abk(a,b){a=a|0;b=b|0;var d=0;d=a+164|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abl(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abm(a,b){a=a|0;b=b|0;var d=0;d=a;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abn(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e,f,g,h,i,j,0);return}function abo(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e,f,g,h,i,j,k);return}function abp(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function abq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+40|0;f=e|0;c[f>>2]=18624;g[f+4>>2]=999999984306749400.0;g[f+8>>2]=999999984306749400.0;g[f+12>>2]=999999984306749400.0;g[f+16>>2]=0.0;g[f+20>>2]=-999999984306749400.0;g[f+24>>2]=-999999984306749400.0;g[f+28>>2]=-999999984306749400.0;g[f+32>>2]=0.0;g[b>>2]=-999999984306749400.0;g[b+4>>2]=-999999984306749400.0;g[b+8>>2]=-999999984306749400.0;g[b+12>>2]=0.0;g[d>>2]=999999984306749400.0;g[d+4>>2]=999999984306749400.0;g[d+8>>2]=999999984306749400.0;g[d+12>>2]=0.0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,f|0,b,d);a=b;b=f+4|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];b=d;d=f+20|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];i=e;return}function abr(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+56>>2]&511](a,b,d)|0}function abs(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function abt(a){a=a|0;return cA[c[(c[a>>2]|0)+52>>2]&4095](a)|0}function abu(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function abv(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function abw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function abx(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a,b,d);return}function aby(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function abz(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,0);return}function abA(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,k);return}function abB(a){a=a|0;return cA[c[(c[a>>2]|0)+40>>2]&4095](a)|0}function abC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function abD(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function abE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;apD(a,b,c,d);return}function abF(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function abG(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function abH(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function abI(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function abJ(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function abK(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function abL(){var b=0,d=0,e=0;while(1){b=aDx(276)|0;if((b|0)!=0){d=254;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){break}dC[e&63]()}if((d|0)==254){c[b+108>>2]=0;g[b+112>>2]=0.0;a[b+116|0]=0;aDD(b+120|0,0,28);return b|0}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676);return 0}function abM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0;while(1){h=aDx(276)|0;if((h|0)!=0){i=266;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==266){i=b;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];i=h+16|0;b=d;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];b=h+64|0;i=e;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];g[h+80>>2]=f;g[h+84>>2]=0.0;g[h+88>>2]=0.0;c[h+108>>2]=0;g[h+112>>2]=0.0;a[h+116|0]=0;g[h+208>>2]=0.0;g[h+240>>2]=0.0;g[h+272>>2]=0.0;aDD(h+120|0,0,28);return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function abN(a,b){a=a|0;b=+b;return}function abO(a){a=a|0;return c[a+4>>2]|0}function abP(a){a=a|0;return a+292|0}function abQ(a){a=a|0;return a+308|0}function abR(a){a=a|0;return a+340|0}function abS(b){b=b|0;return(a[b+20|0]&1)!=0|0}function abT(a){a=a|0;return c[a+4>>2]|0}function abU(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function abV(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function abW(b){b=b|0;return(a[b+21|0]&1)!=0|0}function abX(a){a=a|0;return c[a+12>>2]|0}function abY(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+336|0]&1)==0){c[e>>2]=3;c[d+4>>2]=3;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function abZ(a){a=a|0;return+(+g[a+36>>2])}function ab_(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function ab$(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function ab0(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function ab1(a){a=a|0;return+(+g[a+32>>2])}function ab2(b){b=b|0;return(a[b+336|0]&1)!=0|0}function ab3(a){a=a|0;return+(+g[a+16>>2])}function ab4(a){a=a|0;return c[a+8>>2]|0}function ab5(a){a=a|0;return+(+g[a+32>>2])}function ab6(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ab7(a){a=a|0;return(c[a+4>>2]|0)==31|0}function ab8(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function ab9(a){a=a|0;return c[a+52>>2]|0}function aca(a){a=a|0;return(c[a+4>>2]|0)<7|0}function acb(a){a=a|0;return a+12|0}function acc(a){a=a|0;return+(+g[a+44>>2])}function acd(a){a=a|0;return(c[a+4>>2]|0)<20|0}function ace(a){a=a|0;return(c[a+4>>2]|0)==28|0}function acf(a){a=a|0;return c[a+8>>2]|0}function acg(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function ach(a){a=a|0;return a+28|0}function aci(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function acj(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ack(a){a=a|0;return a+28|0}function acl(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function acm(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function acn(a,b){a=a|0;b=b|0;var d=0;d=a+340|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];return}function aco(a,b){a=a|0;b=b|0;var d=0;d=a+292|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function acp(a,b){a=a|0;b=b|0;var d=0;d=a+308|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function acq(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function acr(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function acs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a|0,b,d,e,f);return}function act(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e);return}function acu(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function acv(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43648]|0)==0){if((b1(43648)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9746]=c[d>>2];c[9747]=c[d+4>>2];c[9748]=c[d+8>>2];c[9749]=c[d+12>>2];i=e;return 38984}function acw(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function acx(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function acy(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function acz(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+84>>2]&1023](a))}function acA(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function acB(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function acC(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function acD(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43176]|0)==0){if((b1(43176)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9742]=c[d>>2];c[9743]=c[d+4>>2];c[9744]=c[d+8>>2];c[9745]=c[d+12>>2];i=e;return 38968}function acE(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function acF(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function acG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function acH(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43496]|0)==0){if((b1(43496)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9738]=c[d>>2];c[9739]=c[d+4>>2];c[9740]=c[d+8>>2];c[9741]=c[d+12>>2];i=e;return 38952}function acI(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function acJ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function acK(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function acL(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43352]|0)==0){if((b1(43352)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9734]=c[d>>2];c[9735]=c[d+4>>2];c[9736]=c[d+8>>2];c[9737]=c[d+12>>2];i=e;return 38936}function acM(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function acN(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function acO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function acP(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function acQ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function acR(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function acS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function acT(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,i=0.0;c[9806]=(c[9806]|0)+1;b=aDx(75)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}e=d+4|0;c[e>>2]=35;c[d+8>>2]=0;b=d|0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[b>>2]=24848;f=d+52|0;c[f>>2]=1;h=+g[a+4>>2]+-.03999999910593033;i=+g[a+8>>2]+-.03999999910593033;g[d+28>>2]=+g[a>>2]+-.03999999910593033;g[d+32>>2]=h;g[d+36>>2]=i;g[d+40>>2]=0.0;c[e>>2]=13;c[b>>2]=24152;c[f>>2]=2;return d|0}function acU(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function acV(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function acW(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;while(1){e=aDx(352)|0;if((e|0)!=0){f=386;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){f=383;break}dC[h&63]()}if((f|0)==383){h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}else if((f|0)==386){aq1(e,3,b);c[e>>2]=21336;f=e+292|0;h=d;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];i=+g[d>>2];j=+g[d+4>>2];k=+g[d+8>>2];l=+g[b+56>>2]+(i*+g[b+20>>2]+j*+g[b+24>>2]+k*+g[b+28>>2]);m=+g[b+60>>2]+(i*+g[b+36>>2]+j*+g[b+40>>2]+k*+g[b+44>>2]);g[e+308>>2]=+g[b+52>>2]+(+g[b+4>>2]*i+ +g[b+8>>2]*j+ +g[b+12>>2]*k);g[e+312>>2]=l;g[e+316>>2]=m;g[e+320>>2]=0.0;c[e+324>>2]=0;a[e+336|0]=0;g[e+340>>2]=.30000001192092896;g[e+344>>2]=1.0;g[e+348>>2]=0.0;return e|0}return 0}function acX(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0;while(1){h=aDx(352)|0;if((h|0)!=0){i=400;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==400){c[h+4>>2]=3;c[h+8>>2]=-1;c[h+12>>2]=-1;g[h+16>>2]=3.4028234663852886e+38;a[h+20|0]=1;a[h+21|0]=0;c[h+24>>2]=b;c[h+28>>2]=d;g[h+32>>2]=0.0;g[h+36>>2]=.30000001192092896;c[h>>2]=21336;d=h+292|0;b=e;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=h+308|0;d=f;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[h+324>>2]=0;a[h+336|0]=0;g[h+340>>2]=.30000001192092896;g[h+344>>2]=1.0;g[h+348>>2]=0.0;return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function acY(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function acZ(a){a=a|0;return c[a+4>>2]|0}function ac_(a){a=a|0;return c[a+16>>2]|0}function ac$(a){a=a|0;return c[a+12>>2]|0}function ac0(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ac1(a,c){a=a|0;c=c|0;b[a>>1]=b[c>>1]|0;b[a+2>>1]=b[c+2>>1]|0;b[a+4>>1]=b[c+4>>1]|0;b[a+6>>1]=b[c+6>>1]|0;b[a+8>>1]=b[c+8>>1]|0;b[a+10>>1]=b[c+10>>1]|0;return}function ac2(a,b){a=a|0;b=b|0;c[a+16>>2]=b;return}function ac3(a){a=a|0;return a+28|0}function ac4(a,c){a=a|0;c=c|0;b[a+8>>1]=c;return}function ac5(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function ac6(a){a=a|0;return+(+g[a+4>>2])}function ac7(a){a=a|0;return c[a+76>>2]|0}function ac8(a,b){a=a|0;b=b|0;c[a+76>>2]=b;return}function ac9(a){a=a|0;return a+44|0}function ada(a){a=a|0;return a+60|0}function adb(a){a=a|0;return b[a+10>>1]|0}function adc(a){a=a|0;return+g[a+4>>2]<1.0|0}function add(a){a=a|0;return a+12|0}function ade(a){a=a|0;return b[a+8>>1]|0}function adf(a,c){a=a|0;c=c|0;b[a+10>>1]=c;return}function adg(a){a=a|0;return+(+g[a+88>>2])}function adh(a){a=a|0;return c[a+28>>2]|0}function adi(a){a=a|0;return c[a+12>>2]|0}function adj(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function adk(b,c){b=b|0;c=c|0;a[b+20|0]=c&1;return}function adl(a){a=a|0;return a+40|0}function adm(a,b){a=a|0;b=b|0;return+(+g[a+1248+(b<<2)>>2])}function adn(a){a=a|0;return a+104|0}function ado(a){a=a|0;return a+1056|0}function adp(a){a=a|0;return c[a+12>>2]|0}function adq(a){a=a|0;return c[a+4>>2]|0}function adr(a){a=a|0;return c[a+24>>2]|0}function ads(a){a=a|0;return+(+g[a+16>>2])}function adt(a,b,c){a=a|0;b=b|0;c=+c;g[a+1356+(b<<2)>>2]=c;return}function adu(a,b){a=a|0;b=b|0;var c=0;c=a;a=0;while(1){if((a|0)>=3){break}g[b+(a<<2)>>2]=+g[c+860+(a<<6)>>2];a=a+1|0}return}function adv(a,b,c){a=a|0;b=b|0;c=+c;g[a+1308+(b<<2)>>2]=c;return}function adw(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;do{if((a[43656]|0)==0){if((b1(43656)|0)==0){break}}}while(0);d=+g[b+28>>2];e=+g[b+32>>2];f=+g[b+36>>2];h=+g[b+40>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=f+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);g[9730]=d+k;g[9731]=e+l;g[9732]=m;g[9733]=h;return 38920}function adx(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-32+28>>2]|0);return}function ady(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(51)|0;if((a|0)==0){b=0;return b|0}d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0;return b|0}function adz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function adA(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+8>>2]&2047](a,b);return}function adB(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function adC(a,b){a=a|0;b=b|0;return dj[c[(c[a>>2]|0)+8>>2]&511](a|0,b)|0}function adD(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+12>>2]&127](a,b,d))}function adE(a,b){a=a|0;b=b|0;var d=0;d=a+60|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function adF(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function adG(a,b){a=a|0;b=b|0;var d=0;d=a+44|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function adH(a,b){a=a|0;b=b|0;var d=0;d=a+12|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function adI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0;e=i;i=i+96|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+64|0;m=e+80|0;n=f;o=h;p=b+48|0;q=d+48|0;ec(b|0,f);ec(d|0,h);d=a+88|0;b=a+32|0;if(+g[d>>2]>0.0){anu(b,p,a|0,f,j,k);f=a+48|0;r=a+16|0;anu(f,q,r,h,l,m);s=+g[k>>2];t=+g[k+4>>2];u=+g[k+8>>2];v=+Q(+(s*s+t*t+u*u));u=v*+g[a+80>>2];v=+g[m>>2];t=+g[m+4>>2];s=+g[m+8>>2];w=+Q(+(v*v+t*t+s*s));s=(+g[l>>2]- +g[j>>2])*+g[a+64>>2]+(+g[l+4>>2]- +g[j+4>>2])*+g[a+68>>2]+(+g[l+8>>2]- +g[j+8>>2])*+g[a+72>>2];g[d>>2]=+g[d>>2]-(u+w*+g[a+84>>2]+(s<0.0?0.0:s));x=b;y=f;z=r}else{x=b;y=a+48|0;z=a+16|0}b=x;x=p;c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];x=y;y=q;c[x>>2]=c[y>>2];c[x+4>>2]=c[y+4>>2];c[x+8>>2]=c[y+8>>2];c[x+12>>2]=c[y+12>>2];y=a;c[y>>2]=c[n>>2];c[y+4>>2]=c[n+4>>2];c[y+8>>2]=c[n+8>>2];c[y+12>>2]=c[n+12>>2];n=z;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];i=e;return}function adJ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function adK(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;h=i;i=i+32|0;j=h|0;k=h+16|0;l=j;m=k;g[a+88>>2]=d;if(d<=0.0){i=h;return}n=a+64|0;o=b;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];ec(e|0,j);ec(f|0,k);k=a+32|0;j=e+48|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=a+48|0;k=f+48|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=a;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];l=a+16|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];i=h;return}function adL(a){a=a|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function adM(a,b,d){a=a|0;b=b|0;d=+d;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,-1);return}function adN(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;cE[c[(c[a>>2]|0)+28>>2]&127](a,b,d,e);return}function adO(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;apb(a,b,c,d,e,f,g,h);return}function adP(a,b){a=a|0;b=b|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,-1))}function adQ(a,b,d){a=a|0;b=b|0;d=d|0;return+(+c4[c[(c[a>>2]|0)+32>>2]&127](a,b,d))}function adR(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function adS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function adT(a){a=a|0;ct[c[(c[a>>2]|0)+44>>2]&2047](a);return}function adU(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);g[a+1308>>2]=+g[a+1248>>2];g[a+1312>>2]=+g[a+1252>>2];g[a+1316>>2]=+g[a+1256>>2];g[a+1320>>2]=+g[a+1184>>2];g[a+1324>>2]=+g[a+1188>>2];g[a+1328>>2]=+g[a+1192>>2];return}function adV(a,b){a=a|0;b=b|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);if((b|0)<3){g[a+1308+(b<<2)>>2]=+g[a+1248+(b<<2)>>2];return}else{g[a+1308+(b<<2)>>2]=+g[a+1184+(b-3<<2)>>2];return}}function adW(a,d){a=a|0;d=d|0;var e=0,f=0,h=0;while(1){e=aDx(80)|0;if((e|0)!=0){f=508;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]()}if((f|0)==508){g[e+4>>2]=1.0;b[e+8>>1]=1;b[e+10>>1]=-1;c[e>>2]=19448;f=e+12|0;h=a;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];h=e+28|0;f=d;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];c[e+76>>2]=0;return e|0}e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}function adX(a,b){a=+a;b=+b;var d=0,e=0,f=0;while(1){d=aDx(92)|0;if((d|0)!=0){e=520;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==520){g[d+80>>2]=a;g[d+84>>2]=b;g[d+88>>2]=0.0;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function adY(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0;while(1){i=aDx(1380)|0;if((i|0)!=0){j=532;break}k=(C=c[10744]|0,c[10744]=C+0,C);if((k|0)==0){break}dC[k&63]()}if((j|0)==532){aoY(i,b,d,e,f,h);c[i>>2]=20024;c[i+4>>2]=9;a[i+1301|0]=0;g[i+1308>>2]=0.0;g[i+1332>>2]=0.0;g[i+1356>>2]=1.0;a[i+1302|0]=0;g[i+1312>>2]=0.0;g[i+1336>>2]=0.0;g[i+1360>>2]=1.0;a[i+1303|0]=0;g[i+1316>>2]=0.0;g[i+1340>>2]=0.0;g[i+1364>>2]=1.0;a[i+1304|0]=0;g[i+1320>>2]=0.0;g[i+1344>>2]=0.0;g[i+1368>>2]=1.0;a[i+1305|0]=0;g[i+1324>>2]=0.0;g[i+1348>>2]=0.0;g[i+1372>>2]=1.0;a[i+1306|0]=0;g[i+1328>>2]=0.0;g[i+1352>>2]=0.0;g[i+1376>>2]=1.0;return i|0}i=cd(4)|0;c[i>>2]=19096;bF(i|0,34368,676);return 0}function adZ(a,b){a=a|0;b=+b;return}function ad_(a){a=a|0;return(a|0)==28|0}function ad$(a){a=a|0;return(a|0)==31|0}function ad0(a){a=a|0;return(a|0)<7|0}function ad1(a){a=a|0;return(a|0)<20|0}function ad2(a){a=a|0;return((a|0)>20&(a|0)<30?(a|0)!=25:0)|0}function ad3(a){a=a|0;return((a|0)==17?1:(a|0)==18)|0}function ad4(a){a=a|0;return(a|0)==32|0}function ad5(a){a=a|0;return((a|0)>20?(a|0)<30:0)|0}function ad6(a){a=a|0;return+(+g[a+32>>2])}function ad7(b){b=b|0;return(a[b+20|0]&1)!=0|0}function ad8(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function ad9(a){a=a|0;return c[a+4>>2]|0}function aea(b,c){b=b|0;c=c|0;a[b+21|0]=c&1;return}function aeb(b,c){b=b|0;c=c|0;a[b+1293|0]=c&1;return}function aec(b){b=b|0;return(a[b+21|0]&1)!=0|0}function aed(a){a=a|0;return c[a+4>>2]|0}function aee(a,b){a=a|0;b=b|0;return a+860+(b<<6)|0}function aef(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+1300|0]&1)==0){c[e>>2]=6;c[d+4>>2]=0;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function aeg(a){a=a|0;return+(+g[a+36>>2])}function aeh(a,b){a=a|0;b=+b;g[a+36>>2]=b;return}function aei(a,b){a=a|0;b=b|0;var c=0,d=0;c=a;if((b|0)<3){d=+g[a+688+(b<<2)>>2]>=+g[a+672+(b<<2)>>2];return d|0}a=b-3|0;if(+g[c+860+(a<<6)>>2]>+g[c+860+(a<<6)+4>>2]){d=0;return d|0}d=1;return d|0}function aej(b){b=b|0;return(a[b+1293|0]&1)!=0|0}function aek(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function ael(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=d&1;a[b+1301+c|0]=e;if((c|0)<3){a[b+(c+780)|0]=e;return}else{a[b+860+(c-3<<6)+44|0]=e;return}}function aem(a){a=a|0;return a+1120|0}function aen(a,b){a=a|0;b=+b;g[a+32>>2]=b;return}function aeo(a,b){a=a|0;b=+b;g[a+16>>2]=b;return}function aep(b){b=b|0;return(a[b+1300|0]&1)!=0|0}function aeq(a){a=a|0;return+(+g[a+32>>2])}function aer(b,c){b=b|0;c=c|0;a[b+1300|0]=c&1;return}function aes(a){a=a|0;return a+672|0}function aet(a,b){a=a|0;b=b|0;return+(+g[a+1184+(b<<2)>>2])}function aeu(a,b){a=a|0;b=b|0;var c=0;c=a;a=0;while(1){if((a|0)>=3){break}g[b+(a<<2)>>2]=+g[c+860+(a<<6)+4>>2];a=a+1|0}return}function aev(a){a=a|0;return c[a+8>>2]|0}function aew(a,b,c){a=a|0;b=b|0;c=+c;g[a+1332+(b<<2)>>2]=c;return}function aex(a){a=a|0;return c[a+12>>2]|0}function aey(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function aez(a){a=a|0;return c[a>>2]|0}function aeA(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function aeB(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function aeC(a){a=a|0;return a+16|0}function aeD(a,b){a=a|0;b=b|0;c[a+12>>2]=b;return}function aeE(a){a=a|0;return b[a+6>>1]|0}function aeF(a){a=a|0;return c[a+12>>2]|0}function aeG(a){a=a|0;return a+32|0}function aeH(a,c){a=a|0;c=c|0;b[a+4>>1]=c;return}function aeI(a){a=a|0;return c[a+12>>2]|0}function aeJ(a,c){a=a|0;c=c|0;b[a+6>>1]=c;return}function aeK(a){a=a|0;return c[a+8>>2]|0}function aeL(a){a=a|0;return b[a+4>>1]|0}function aeM(a){a=a|0;return a+20|0}function aeN(a){a=a|0;return a+4|0}function aeO(b,c){b=b|0;c=c|0;do{if((a[43752]|0)==0){if((b1(43752)|0)==0){break}}}while(0);aDG(38904,b+1200+(c<<4)|0,16);return 38904}function aeP(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];return}function aeQ(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+40>>2]&511](a,b,d)|0}function aeR(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function aeS(a,b){a=a|0;b=b|0;var d=0;d=a+672|0;a=b;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];return}function aeT(a){a=a|0;aoZ(a,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function aeU(a,b,c){a=a|0;b=b|0;c=c|0;aoZ(a,b,c);return}function aeV(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function aeW(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,0)|0}function aeX(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ao7(a,b,c,d,e,f,g,h,i,j,k,l,m)|0}function aeY(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;nS(a,b,c,d);return}function aeZ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function ae_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;cy[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f);return}function ae$(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=a;a=0;while(1){if((a|0)>=3){break}d=+ck(+(+g[b+(a<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[c+860+(a<<6)>>2]=e;a=a+1|0}return}function ae0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+24>>2]&127](a,b,d,e);return}function ae1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=a;f=a+40|0;g=b;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+56|0;f=b+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+72|0;g=b+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+88|0;f=b+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+104|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+120|0;f=d+16|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+136|0;g=d+32|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+152|0;f=d+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](e);aoZ(e,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function ae2(a,b){a=a|0;b=b|0;var d=0;d=a+688|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ae3(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0;c=a;a=0;while(1){if((a|0)>=3){break}d=+ck(+(+g[b+(a<<2)>>2]),6.2831854820251465);do{if(d<-3.1415927410125732){e=d+6.2831854820251465}else{if(d<=3.1415927410125732){e=d;break}e=d-6.2831854820251465}}while(0);g[c+860+(a<<6)+4>>2]=e;a=a+1|0}return}function ae4(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a,b,d);return}function ae5(a,b){a=a|0;b=b|0;return ao$(a,b)|0}function ae6(){var a=0,b=0,d=0;c[9806]=(c[9806]|0)+1;a=aDx(67)|0;if((a|0)==0){b=0}else{d=-(a+4|0)&15;c[a+d>>2]=a;b=a+(d+4)|0}c[b>>2]=0;c[b+8>>2]=0;return b|0}function ae7(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;c[9806]=(c[9806]|0)+1;h=aDx(67)|0;if((h|0)==0){i=0}else{j=-(h+4|0)&15;c[h+j>>2]=h;i=h+(j+4)|0}c[i>>2]=e;b[i+4>>1]=f;b[i+6>>1]=g;g=i+16|0;f=a;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=i+32|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[i+8>>2]=0;return i|0}function ae8(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0;c[9806]=(c[9806]|0)+1;i=aDx(67)|0;if((i|0)==0){j=0}else{k=-(i+4|0)&15;c[i+k>>2]=i;j=i+(k+4)|0}c[j>>2]=e;b[j+4>>1]=f;b[j+6>>1]=g;g=j+16|0;f=a;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=j+32|0;g=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];c[j+8>>2]=h;return j|0}function ae9(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function afa(a,b){a=a|0;b=b|0;var d=0;d=a+32|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function afb(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-48+44>>2]|0);return}function afc(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e,f,g,h,i,j,0);return}function afd(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+16>>2]&63](a,b,d,e,f,g,h,i,j,k);return}function afe(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+36>>2]&2047](a,b);return}function aff(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+40|0;f=e|0;c[f>>2]=18624;g[f+4>>2]=999999984306749400.0;g[f+8>>2]=999999984306749400.0;g[f+12>>2]=999999984306749400.0;g[f+16>>2]=0.0;g[f+20>>2]=-999999984306749400.0;g[f+24>>2]=-999999984306749400.0;g[f+28>>2]=-999999984306749400.0;g[f+32>>2]=0.0;g[b>>2]=-999999984306749400.0;g[b+4>>2]=-999999984306749400.0;g[b+8>>2]=-999999984306749400.0;g[b+12>>2]=0.0;g[d>>2]=999999984306749400.0;g[d+4>>2]=999999984306749400.0;g[d+8>>2]=999999984306749400.0;g[d+12>>2]=0.0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,f|0,b,d);a=b;b=f+4|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];b=d;d=f+20|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];i=e;return}function afg(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function afh(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a,b);return}function afi(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+56>>2]&511](a|0,b,d)|0}function afj(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(103)|0;d=-(b+4|0)&15;c[b+d>>2]=b;e=b+(d+4)|0;g[e+4>>2]=1.0;g[e+8>>2]=1.0;g[e+12>>2]=1.0;g[e+16>>2]=0.0;c[e>>2]=20368;a[e+36|0]=1;c[e+32>>2]=0;c[e+24>>2]=0;c[e+28>>2]=0;c[e+48>>2]=0;return e|0}function afk(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;k=i;i=i+32|0;l=k|0;c[9806]=(c[9806]|0)+1;m=aDx(103)|0;if((m|0)==0){n=0}else{o=-(m+4|0)&15;c[m+o>>2]=m;n=m+(o+4)|0}g[n+4>>2]=1.0;g[n+8>>2]=1.0;g[n+12>>2]=1.0;g[n+16>>2]=0.0;c[n>>2]=20368;a[n+36|0]=1;c[n+32>>2]=0;c[n+24>>2]=0;c[n+28>>2]=0;c[n+48>>2]=0;c[l+24>>2]=2;c[l+28>>2]=0;c[l>>2]=b;c[l+4>>2]=d;c[l+8>>2]=e;c[l+12>>2]=f;c[l+16>>2]=h;c[l+20>>2]=j;AY(n,l,2);i=k;return n|0}function afl(a,b){a=a|0;b=b|0;var d=0;d=a+4|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function afm(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function afn(a){a=a|0;return(c[a+4>>2]|0)<7|0}function afo(a){a=a|0;return a+12|0}function afp(a){a=a|0;return(c[a+4>>2]|0)==31|0}function afq(a){a=a|0;return+(+g[a+44>>2])}function afr(a){a=a|0;return(c[a+4>>2]|0)<20|0}function afs(a){a=a|0;return(c[a+4>>2]|0)==28|0}function aft(a){a=a|0;return c[a+8>>2]|0}function afu(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function afv(a){a=a|0;return a+28|0}function afw(a){a=a|0;return(c[a+4>>2]|0)==32|0}function afx(a){a=a|0;return a+28|0}function afy(a){a=a|0;return c[a+52>>2]|0}function afz(a){a=a|0;return c[a+4>>2]|0}function afA(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function afB(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function afC(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function afD(a){a=a|0;return(c[a+4>>2]|0)<7|0}function afE(a){a=a|0;return a+12|0}function afF(a){a=a|0;return cA[c[(c[a>>2]|0)+52>>2]&4095](a|0)|0}function afG(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a,b,d);return}function afH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function afI(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+48>>2]&511](a,b,d);return}function afJ(a,b){a=a|0;b=b|0;AY(a,b,2);return}function afK(a,b,c){a=a|0;b=b|0;c=c|0;AY(a,b,c);return}function afL(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0}function afM(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;di[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,0);return}function afN(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[c[(c[a>>2]|0)+12>>2]&63](a,b,d,e,f,g,h,i,j,k);return}function afO(a){a=a|0;return cA[c[(c[a>>2]|0)+40>>2]&4095](a)|0}function afP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function afQ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function afR(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function afS(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a)|0}function afT(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43800]|0)==0){if((b1(43800)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9722]=c[d>>2];c[9723]=c[d+4>>2];c[9724]=c[d+8>>2];c[9725]=c[d+12>>2];i=e;return 38888}function afU(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a,b,d)|0}function afV(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a)|0}function afW(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function afX(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a)|0}function afY(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43344]|0)==0){if((b1(43344)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9714]=c[d>>2];c[9715]=c[d+4>>2];c[9716]=c[d+8>>2];c[9717]=c[d+12>>2];i=e;return 38856}function afZ(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a,b,d);return}function af_(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+116>>2]&511](a,b,d);return}function af$(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43640]|0)==0){if((b1(43640)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9710]=c[d>>2];c[9711]=c[d+4>>2];c[9712]=c[d+8>>2];c[9713]=c[d+12>>2];i=e;return 38840}function af0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function af1(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function af2(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a)|0}function af3(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function af4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a,b,d,e);return}function af5(a){a=a|0;var b=0,d=0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0;c[9806]=(c[9806]|0)+1;b=aDx(75)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d+8>>2]=0;e=d+12|0;g[e>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;g[d+44>>2]=.03999999910593033;c[d+52>>2]=0;c[d>>2]=26200;c[d+4>>2]=0;b=d;f=d;h=+ar4(b);i=+dh[c[(c[f>>2]|0)+44>>2]&1023](b);j=+dh[c[(c[f>>2]|0)+44>>2]&1023](b);k=+g[a+4>>2]*+g[d+16>>2]-i;i=+g[a+8>>2]*+g[d+20>>2]-j;g[d+28>>2]=+g[a>>2]*+g[e>>2]-h;g[d+32>>2]=k;g[d+36>>2]=i;g[d+40>>2]=0.0;return d|0}function af6(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function af7(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function af8(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function af9(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function aga(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function agb(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function agc(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a,b,d);return}function agd(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function age(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43512]|0)==0){if((b1(43512)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9706]=c[d>>2];c[9707]=c[d+4>>2];c[9708]=c[d+8>>2];c[9709]=c[d+12>>2];i=e;return 38824}function agf(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 13:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function agg(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function agh(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function agi(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function agj(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function agk(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function agl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function agm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a,b,d,e);return}function agn(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function ago(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function agp(b){b=b|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;do{if((a[43808]|0)==0){if((b1(43808)|0)==0){break}}}while(0);d=+g[b+28>>2];e=+g[b+32>>2];f=+g[b+36>>2];h=+g[b+40>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=f+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);g[9702]=d+k;g[9703]=e+l;g[9704]=m;g[9705]=h;return 38808}function agq(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,b,d);return}function agr(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,d);return}function ags(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;dw[c[(c[a>>2]|0)+16>>2]&127](a,b,d,e);return}function agt(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function agu(a){a=a|0;return cA[c[(c[a>>2]|0)+104>>2]&4095](a|0)|0}function agv(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43240]|0)==0){if((b1(43240)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9698]=c[d>>2];c[9699]=c[d+4>>2];c[9700]=c[d+8>>2];c[9701]=c[d+12>>2];i=e;return 38792}function agw(a,b,d){a=a|0;b=b|0;d=+d;return c0[c[(c[a>>2]|0)+112>>2]&127](a|0,b,d)|0}function agx(a){a=a|0;return cA[c[(c[a>>2]|0)+88>>2]&4095](a|0)|0}function agy(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function agz(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function agA(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+100>>2]&511](a|0,b,d);return}function agB(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43120]|0)==0){if((b1(43120)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9694]=c[d>>2];c[9695]=c[d+4>>2];c[9696]=c[d+8>>2];c[9697]=c[d+12>>2];i=e;return 38776}function agC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function agD(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function agE(a){a=a|0;return cA[c[(c[a>>2]|0)+92>>2]&4095](a|0)|0}function agF(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function agG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+96>>2]&1023](a|0,b,d,e);return}function agH(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43064]|0)==0){if((b1(43064)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9690]=c[d>>2];c[9691]=c[d+4>>2];c[9692]=c[d+8>>2];c[9693]=c[d+12>>2];i=e;return 38760}function agI(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function agJ(a){a=a|0;return(c[a+4>>2]|0)<20|0}function agK(a){a=a|0;return(c[a+4>>2]|0)==28|0}function agL(a){a=a|0;return c[a+8>>2]|0}function agM(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function agN(a){a=a|0;return+(+g[a+44>>2])}function agO(a){a=a|0;return(c[a+4>>2]|0)==32|0}function agP(a){a=a|0;return a+28|0}function agQ(a){a=a|0;return(c[a+4>>2]|0)==31|0}function agR(a){a=a|0;return c[a+52>>2]|0}function agS(a){a=a|0;return c[a+4>>2]|0}function agT(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function agU(a){a=a|0;return(c[a+4>>2]|0)==31|0}function agV(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function agW(a){a=a|0;return c[a+52>>2]|0}function agX(a){a=a|0;return(c[a+4>>2]|0)<7|0}function agY(a){a=a|0;return+(+g[a+28+((((c[a+52>>2]|0)+2|0)%3|0)<<2)>>2])}function agZ(a){a=a|0;return+(+g[a+28+(c[a+52>>2]<<2)>>2])}function ag_(a){a=a|0;return a+12|0}function ag$(a){a=a|0;return+(+g[a+44>>2])}function ag0(a){a=a|0;return(c[a+4>>2]|0)<20|0}function ag1(a){a=a|0;return(c[a+4>>2]|0)==28|0}function ag2(a){a=a|0;return c[a+8>>2]|0}function ag3(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function ag4(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function ag5(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ag6(a){a=a|0;return a+28|0}function ag7(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function ag8(a){a=a|0;return c[a+4>>2]|0}function ag9(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43080]|0)==0){if((b1(43080)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9686]=c[d>>2];c[9687]=c[d+4>>2];c[9688]=c[d+8>>2];c[9689]=c[d+12>>2];i=e;return 38744}function aha(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function ahb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function ahc(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function ahd(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function ahe(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function ahf(a){a=a|0;aze(a);return}function ahg(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function ahh(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function ahi(a){a=a|0;return cA[c[(c[a>>2]|0)+84>>2]&4095](a|0)|0}function ahj(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ahk(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function ahl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function ahm(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ahn(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function aho(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function ahp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function ahq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+108>>2]&1023](a|0,b,d,e);return}function ahr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function ahs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;gx(a,b,c,d,e);return}function aht(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0;b=i;i=i+8|0;d=b|0;if((a|0)==0){i=b;return}e=c[9152]|0;f=e+16|0;h=(c[f>>2]|0)-1|0;c[f>>2]=h;do{if((h|0)==0){if((c[e+4>>2]|0)==0){j=e}else{b3(d|0,0)|0;k=c[10742]|0;l=e+8|0;g[l>>2]=+(((c[d+4>>2]|0)-(c[k+4>>2]|0)+(((c[d>>2]|0)-(c[k>>2]|0)|0)*1e6|0)-(c[e+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[l>>2];if((c[f>>2]|0)!=0){break}j=c[9152]|0}c[9152]=c[j+20>>2]}}while(0);aDB(a|0);i=b;return}function ahu(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function ahv(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43712]|0)==0){if((b1(43712)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9682]=c[d>>2];c[9683]=c[d+4>>2];c[9684]=c[d+8>>2];c[9685]=c[d+12>>2];i=e;return 38728}function ahw(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function ahx(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ahy(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function ahz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function ahA(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function ahB(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function ahC(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43216]|0)==0){if((b1(43216)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9678]=c[d>>2];c[9679]=c[d+4>>2];c[9680]=c[d+8>>2];c[9681]=c[d+12>>2];i=e;return 38712}function ahD(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43408]|0)==0){if((b1(43408)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9670]=c[d>>2];c[9671]=c[d+4>>2];c[9672]=c[d+8>>2];c[9673]=c[d+12>>2];i=e;return 38680}function ahE(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function ahF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function ahG(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43544]|0)==0){if((b1(43544)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9666]=c[d>>2];c[9667]=c[d+4>>2];c[9668]=c[d+8>>2];c[9669]=c[d+12>>2];i=e;return 38664}function ahH(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function ahI(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(75)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e+4>>2]=10;c[e>>2]=25144;c[e+52>>2]=0;g[e+28>>2]=b*.5;g[e+32>>2]=a;g[e+36>>2]=a;g[e+40>>2]=0.0;return e|0}function ahJ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function ahK(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function ahL(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function ahM(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ahN(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function ahO(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function ahP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function ahQ(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ahR(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function ahS(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function ahT(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function ahU(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function ahV(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[44008]|0)==0){if((b1(44008)|0)==0){break}}}while(0);ah6(f,b,d);d=f;c[9662]=c[d>>2];c[9663]=c[d+4>>2];c[9664]=c[d+8>>2];c[9665]=c[d+12>>2];i=e;return 38648}function ahW(a){a=a|0;var b=0,d=0,e=0;while(1){b=aDx(1)|0;if((b|0)!=0){d=950;break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){d=947;break}dC[e&63]()}if((d|0)==947){e=cd(4)|0;c[e>>2]=19096;bF(e|0,34368,676);return 0}else if((d|0)==950){aDo(a);return b|0}return 0}function ahX(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+4|0;d=+g[b+4>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+8|0;d=+g[b+8>>2];if(d<+g[c>>2]){g[c>>2]=d}c=a+12|0;d=+g[b+12>>2];if(d>=+g[c>>2]){return}g[c>>2]=d;return}function ahY(a){a=a|0;return+(+g[a>>2])}function ahZ(a){a=a|0;return+(+g[a+4>>2])}function ah_(a){a=a|0;return+(+g[a+8>>2])}function ah$(a,b){a=a|0;b=b|0;var c=0;c=a|0;g[c>>2]=+g[c>>2]- +g[b>>2];c=a+4|0;g[c>>2]=+g[c>>2]- +g[b+4>>2];c=a+8|0;g[c>>2]=+g[c>>2]- +g[b+8>>2];c=a+12|0;g[c>>2]=+g[c>>2]- +g[b+12>>2];return a|0}function ah0(a){a=a|0;return+(+g[a+12>>2])}function ah1(a,b){a=a|0;b=b|0;var c=0,d=0.0;c=a|0;d=+g[b>>2];if(+g[c>>2]>2]=d}c=a+4|0;d=+g[b+4>>2];if(+g[c>>2]>2]=d}c=a+8|0;d=+g[b+8>>2];if(+g[c>>2]>2]=d}c=a+12|0;d=+g[b+12>>2];if(+g[c>>2]>=d){return}g[c>>2]=d;return}function ah2(a,b){a=a|0;b=b|0;var c=0;c=a|0;g[c>>2]=+g[c>>2]+ +g[b>>2];c=a+4|0;g[c>>2]=+g[c>>2]+ +g[b+4>>2];c=a+8|0;g[c>>2]=+g[c>>2]+ +g[b+8>>2];c=a+12|0;g[c>>2]=+g[c>>2]+ +g[b+12>>2];return a|0}function ah3(a,b){a=a|0;b=+b;var c=0;c=a|0;g[c>>2]=+g[c>>2]*b;c=a+4|0;g[c>>2]=+g[c>>2]*b;c=a+8|0;g[c>>2]=+g[c>>2]*b;c=a+12|0;g[c>>2]=+g[c>>2]*b;return a|0}function ah4(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=0.0;return}function ah5(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;g[a>>2]=b;g[a+4>>2]=c;g[a+8>>2]=d;g[a+12>>2]=e;return}function ah6(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0;e=+g[b>>2];f=+g[d>>2];h=e-f;i=+g[b+4>>2];j=+g[d+4>>2];k=i-j;l=+g[b+8>>2];m=+g[d+8>>2];n=l-m;o=+g[b+12>>2];p=+g[d+12>>2];q=o-p;r=e+f;e=i+j;i=l+m;l=o+p;if(h*h+k*k+n*n+q*q>2]=c[s>>2];c[b+4>>2]=c[s+4>>2];c[b+8>>2]=c[s+8>>2];c[b+12>>2]=c[s+12>>2];return}else{g[a>>2]=-0.0-f;g[a+4>>2]=-0.0-j;g[a+8>>2]=-0.0-m;g[a+12>>2]=-0.0-p;return}}function ah7(b,c){b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;do{if((a[43960]|0)==0){if((b1(43960)|0)==0){break}}}while(0);d=+g[b>>2];e=+g[c>>2];f=d-e;h=+g[b+4>>2];i=+g[c+4>>2];j=h-i;k=+g[b+8>>2];l=+g[c+8>>2];m=k-l;n=+g[b+12>>2];o=+g[c+12>>2];p=n-o;q=d+e;d=h+i;h=k+l;k=n+o;if(f*f+j*j+m*m+p*p>q*q+d*d+h*h+k*k){r=e;s=i;t=l;u=o;g[9658]=r;g[9659]=s;g[9660]=t;g[9661]=u;return 38632}r=-0.0-e;s=-0.0-i;t=-0.0-l;u=-0.0-o;g[9658]=r;g[9659]=s;g[9660]=t;g[9661]=u;return 38632}function ah8(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;ah9(a,b,c,f);i=e;return}function ah9(a,b,c,d){a=a|0;b=+b;c=+c;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;e=b*.5;b=c*.5;c=+g[d>>2]*.5;f=+S(+e);h=+T(+e);e=+S(+b);i=+T(+b);b=+S(+c);j=+T(+c);c=b*i;k=j*e;l=b*e;e=j*i;g[a>>2]=c*f+k*h;g[a+4>>2]=l*h-e*f;g[a+8>>2]=k*f-c*h;g[a+12>>2]=l*f+e*h;return}function aia(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0,h=0.0,i=0,j=0.0,k=0.0;b=a|0;c=+g[b>>2];d=a+4|0;e=+g[d>>2];f=a+8|0;h=+g[f>>2];i=a+12|0;j=+g[i>>2];k=1.0/+Q(+(c*c+e*e+h*h+j*j));g[b>>2]=c*k;g[d>>2]=e*k;g[f>>2]=h*k;g[i>>2]=j*k;return a|0}function aib(b,c,d){b=b|0;c=c|0;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0;do{if((a[44096]|0)==0){if((b1(44096)|0)==0){break}}}while(0);e=+aie(b,c);if(e==0.0){f=+g[b>>2];h=+g[b+4>>2];i=+g[b+8>>2];j=+g[b+12>>2];g[9654]=f;g[9655]=h;g[9656]=i;g[9657]=j;return 38616}k=1.0/+T(+e);l=+T(+((1.0-d)*e));m=+T(+(e*d));d=+g[b>>2];e=+g[c>>2];n=+g[b+4>>2];o=+g[c+4>>2];p=+g[b+8>>2];q=+g[c+8>>2];r=+g[b+12>>2];s=+g[c+12>>2];t=d*l;if(d*e+n*o+p*q+r*s<0.0){f=(t+m*(-0.0-e))*k;h=(n*l+m*(-0.0-o))*k;i=(p*l+m*(-0.0-q))*k;j=(r*l+m*(-0.0-s))*k;g[9654]=f;g[9655]=h;g[9656]=i;g[9657]=j;return 38616}else{f=(t+e*m)*k;h=(n*l+o*m)*k;i=(p*l+q*m)*k;j=(r*l+s*m)*k;g[9654]=f;g[9655]=h;g[9656]=i;g[9657]=j;return 38616}return 0}function aic(b){b=b|0;var c=0.0,d=0.0,e=0.0;do{if((a[44016]|0)==0){if((b1(44016)|0)==0){break}}}while(0);c=-0.0- +g[b+4>>2];d=-0.0- +g[b+8>>2];e=+g[b+12>>2];g[9650]=-0.0- +g[b>>2];g[9651]=c;g[9652]=d;g[9653]=e;return 38600}function aid(a,b){a=a|0;b=b|0;return+(+aie(a,b))}function aie(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;c=+g[a>>2];d=+g[a+4>>2];e=+g[a+8>>2];f=+g[a+12>>2];h=+g[b>>2];i=+g[b+4>>2];j=+g[b+8>>2];k=+g[b+12>>2];l=(c*h+d*i+e*j+f*k)/+Q(+((c*c+d*d+e*e+f*f)*(h*h+i*i+j*j+k*k)));if(l<-1.0){m=-1.0;n=+V(+m);return+n}if(l<=1.0){m=l;n=+V(+m);return+n}m=1.0;n=+V(+m);return+n}function aif(b){b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0;do{if((a[44024]|0)==0){if((b1(44024)|0)==0){break}}}while(0);c=1.0- +R(+(+g[b+12>>2]),2.0);if(c<11920928955078125.0e-22){d=1.0;e=0.0;f=0.0}else{h=+Q(+c);d=+g[b>>2]/h;e=+g[b+4>>2]/h;f=+g[b+8>>2]/h}g[9646]=d;g[9647]=e;g[9648]=f;g[9649]=0.0;return 38584}function aig(){if((a[43032]|0)!=0){return 42736}if((b1(43032)|0)==0){return 42736}g[10684]=0.0;g[10685]=0.0;g[10686]=0.0;g[10687]=1.0;return 42736}function aih(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0;d=+g[b>>2];e=+g[b+4>>2];f=+g[b+8>>2];h=+Q(+(d*d+e*e+f*f));i=c*.5;c=+T(+i)/h;h=+S(+i);g[a>>2]=d*c;g[a+4>>2]=e*c;g[a+8>>2]=f*c;g[a+12>>2]=h;return}function aii(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0;e=b*.5;b=c*.5;c=d*.5;d=+S(+e);f=+T(+e);e=+S(+b);h=+T(+b);b=+S(+c);i=+T(+c);c=i*e;j=b*h;k=b*e;e=i*h;g[a>>2]=c*d-j*f;g[a+4>>2]=j*d+c*f;g[a+8>>2]=k*f-e*d;g[a+12>>2]=k*d+e*f;return}function aij(){var a=0,b=0,d=0;while(1){a=aDx(16)|0;if((a|0)!=0){b=1051;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1051){return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function aik(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;while(1){d=aDx(16)|0;if((d|0)!=0){e=1063;break}f=(C=c[10744]|0,c[10744]=C+0,C);if((f|0)==0){break}dC[f&63]()}if((e|0)==1063){h=+g[a>>2];i=+g[a+4>>2];j=+g[a+8>>2];k=+Q(+(h*h+i*i+j*j));l=b*.5;b=+T(+l)/k;k=+S(+l);g[d>>2]=h*b;g[d+4>>2]=i*b;g[d+8>>2]=j*b;g[d+12>>2]=k;return d|0}d=cd(4)|0;c[d>>2]=19096;bF(d|0,34368,676);return 0}function ail(a,b,d){a=+a;b=+b;d=+d;var e=0,f=0,h=0,j=0,k=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;while(1){h=aDx(16)|0;if((h|0)!=0){j=1075;break}k=(C=c[10744]|0,c[10744]=C+0,C);if((k|0)==0){break}dC[k&63]()}if((j|0)==1075){j=h;ah9(j,a,b,f);i=e;return j|0}j=cd(4)|0;c[j>>2]=19096;bF(j|0,34368,676);return 0}function aim(a,b){a=a|0;b=+b;var c=0.0,d=0;c=1.0/b;d=a|0;g[d>>2]=+g[d>>2]*c;d=a+4|0;g[d>>2]=+g[d>>2]*c;d=a+8|0;g[d>>2]=+g[d>>2]*c;d=a+12|0;g[d>>2]=+g[d>>2]*c;return a|0}function ain(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function aio(a,b){a=a|0;b=+b;g[a>>2]=b;return}function aip(a,b){a=a|0;b=+b;g[a+4>>2]=b;return}function aiq(a,b){a=a|0;b=+b;g[a+8>>2]=b;return}function air(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];e=+g[a+12>>2];return+(b*b+c*c+d*d+e*e)}function ais(a){a=a|0;return+(+g[a+12>>2])}function ait(a){a=a|0;return+(+g[a+4>>2])}function aiu(a){a=a|0;return+(+g[a>>2])}function aiv(a){a=a|0;return+(+g[a+8>>2])}function aiw(a,b){a=a|0;b=b|0;return+(+g[a>>2]*+g[b>>2]+ +g[a+4>>2]*+g[b+4>>2]+ +g[a+8>>2]*+g[b+8>>2]+ +g[a+12>>2]*+g[b+12>>2])}function aix(a){a=a|0;return(c[a+4>>2]|0)==31|0}function aiy(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function aiz(a){a=a|0;return c[a+52>>2]|0}function aiA(a){a=a|0;return(c[a+4>>2]|0)<7|0}function aiB(a){a=a|0;return+(+g[a+28+((((c[a+52>>2]|0)+2|0)%3|0)<<2)>>2])}function aiC(a){a=a|0;return+(+g[a+28+(c[a+52>>2]<<2)>>2])}function aiD(a){a=a|0;return a+12|0}function aiE(a){a=a|0;return+(+g[a+44>>2])}function aiF(a){a=a|0;return(c[a+4>>2]|0)<20|0}function aiG(a){a=a|0;return(c[a+4>>2]|0)==28|0}function aiH(a){a=a|0;return c[a+8>>2]|0}function aiI(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function aiJ(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function aiK(a){a=a|0;return(c[a+4>>2]|0)==32|0}function aiL(a){a=a|0;return a+28|0}function aiM(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function aiN(a){a=a|0;return c[a+4>>2]|0}function aiO(a){a=a|0;return+(+g[a+224>>2])}function aiP(a){a=a|0;return+(+g[a+220>>2])}function aiQ(a,b){a=a|0;b=b|0;c[a+212>>2]=b;return}function aiR(a){a=a|0;return+(+g[a+244>>2])}function aiS(a,b){a=a|0;b=+b;g[a+224>>2]=b;return}function aiT(a,b){a=a|0;b=b|0;c[a+196>>2]=b;return}function aiU(a,b){a=a|0;b=+b;g[a+184>>2]=b;return}function aiV(a){a=a|0;return a+132|0}function aiW(a){a=a|0;return(c[a+204>>2]&7|0)==0|0}function aiX(a,b){a=a|0;b=+b;g[a+248>>2]=b;return}function aiY(a){a=a|0;return c[a+208>>2]|0}function aiZ(a){a=a|0;return c[a+260>>2]|0}function ai_(a,b){a=a|0;b=b|0;c[a+236>>2]=b;return}function ai$(b){b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,h=0.0;do{if((a[43952]|0)==0){if((b1(43952)|0)==0){break}}}while(0);c=+g[b>>2];d=+g[b+4>>2];e=+g[b+8>>2];f=+g[b+12>>2];h=1.0/+Q(+(c*c+d*d+e*e+f*f));g[9642]=c*h;g[9643]=d*h;g[9644]=e*h;g[9645]=f*h;return 38568}function ai0(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ai1(a){a=a|0;var b=0.0,c=0.0;b=+g[a+12>>2];do{if(b<-1.0){c=-1.0}else{if(b<=1.0){c=b;break}c=1.0}}while(0);return+(+V(+c)*2.0)}function ai2(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;b=+g[a>>2];c=+g[a+4>>2];d=+g[a+8>>2];e=+g[a+12>>2];return+(+Q(+(b*b+c*c+d*d+e*e)))}function ai3(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function ai4(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43704]|0)==0){if((b1(43704)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b|0,d);d=f;c[9638]=c[d>>2];c[9639]=c[d+4>>2];c[9640]=c[d+8>>2];c[9641]=c[d+12>>2];i=e;return 38552}function ai5(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function ai6(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function ai7(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function ai8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function ai9(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function aja(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function ajb(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43208]|0)==0){if((b1(43208)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9634]=c[d>>2];c[9635]=c[d+4>>2];c[9636]=c[d+8>>2];c[9637]=c[d+12>>2];i=e;return 38536}function ajc(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43400]|0)==0){if((b1(43400)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b|0,d);d=f;c[9626]=c[d>>2];c[9627]=c[d+4>>2];c[9628]=c[d+8>>2];c[9629]=c[d+12>>2];i=e;return 38504}function ajd(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function aje(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function ajf(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43536]|0)==0){if((b1(43536)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9622]=c[d>>2];c[9623]=c[d+4>>2];c[9624]=c[d+8>>2];c[9625]=c[d+12>>2];i=e;return 38488}function ajg(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function ajh(a,b){a=+a;b=+b;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(75)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}c[e+8>>2]=0;g[e+12>>2]=1.0;g[e+16>>2]=1.0;g[e+20>>2]=1.0;g[e+24>>2]=0.0;g[e+44>>2]=.03999999910593033;c[e+4>>2]=10;c[e>>2]=25040;c[e+52>>2]=2;g[e+28>>2]=a;g[e+32>>2]=a;g[e+36>>2]=b*.5;g[e+40>>2]=0.0;return e|0}function aji(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0))}function ajj(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function ajk(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a|0,b);return}function ajl(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ajm(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 0:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 10:{d=+g[b+44>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function ajn(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function ajo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a|0,b,d,e);return}function ajp(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function ajq(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function ajr(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function ajs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function ajt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function aju(a,b,d){a=a|0;b=b|0;d=d|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,0);return}function ajv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+32>>2]&1023](a,b,d,e);return}function ajw(a,b){a=a|0;b=b|0;var d=0;d=a+132|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ajx(a,b){a=a|0;b=b|0;var d=0;d=a+148|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ajy(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+20>>2]&511](a|0,b,d)|0}function ajz(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+68|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+84|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+100|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+116|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function ajA(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+12>>2]&2047](a|0,b);return}function ajB(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+28>>2]&511](a,b,0);return}function ajC(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+28>>2]&511](a,b,d);return}function ajD(a,b){a=a|0;b=b|0;var d=0;if((c[a+252>>2]|0)==0){d=1;return d|0}d=dj[c[c[a>>2]>>2]&511](a|0,b)|0;return d|0}function ajE(a,b,d,e){a=+a;b=+b;d=+d;e=+e;var f=0,h=0,i=0;while(1){f=aDx(16)|0;if((f|0)!=0){h=1209;break}i=(C=c[10744]|0,c[10744]=C+0,C);if((i|0)==0){break}dC[i&63]()}if((h|0)==1209){g[f>>2]=a;g[f+4>>2]=b;g[f+8>>2]=d;g[f+12>>2]=e;return f|0}f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}function ajF(a){a=a|0;return a+148|0}function ajG(a,b){a=a|0;b=b|0;c[a+216>>2]=b;return}function ajH(a){a=a|0;var b=0;if((c[a+204>>2]&3|0)!=0){return}b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function ajI(a,b){a=a|0;b=b|0;do{if(!b){if((c[a+204>>2]&3|0)==0){break}return}}while(0);b=a+216|0;if(((c[b>>2]|0)-4|0)>>>0>=2){c[b>>2]=1}g[a+220>>2]=0.0;return}function ajJ(a,b){a=a|0;b=b|0;c[a+208>>2]=b;return}function ajK(a,b){a=a|0;b=+b;g[a+240>>2]=b;return}function ajL(a,b){a=a|0;b=+b;g[a+244>>2]=b;return}function ajM(a){a=a|0;return a+68|0}function ajN(a,b){a=a|0;b=b|0;return c[(c[a+268>>2]|0)+(b<<2)>>2]|0}function ajO(a){a=a|0;return(c[a+204>>2]&1|0)!=0|0}function ajP(a){a=a|0;return c[a+192>>2]|0}function ajQ(a){a=a|0;return c[a+216>>2]|0}function ajR(a){a=a|0;return c[a+188>>2]|0}function ajS(a){a=a|0;return+(+g[a+228>>2])}function ajT(a){a=a|0;return c[a+236>>2]|0}function ajU(a){a=a|0;return a+4|0}function ajV(a){a=a|0;var b=0.0;b=+g[a+248>>2];return+(b*b)}function ajW(a,b){a=a|0;b=b|0;c[a+192>>2]=b;return}function ajX(a){a=a|0;return+(+g[a+248>>2])}function ajY(a){a=a|0;return c[a+212>>2]|0}function ajZ(a){a=a|0;var b=0;b=c[a+216>>2]|0;return((b|0)==2?0:(b|0)!=5)|0}function aj_(a){a=a|0;return c[a+232>>2]|0}function aj$(a){a=a|0;return(c[a+204>>2]&4|0)==0|0}function aj0(a){a=a|0;var b=0;if((c[a+232>>2]|0)==4){b=a}else{b=0}return b|0}function aj1(a,b){a=a|0;b=b|0;var d=0;d=a+216|0;if(((c[d>>2]|0)-4|0)>>>0<2){return}c[d>>2]=b;return}function aj2(a){a=a|0;return c[a+200>>2]|0}function aj3(a){a=a|0;return+(+g[a+184>>2])}function aj4(a){a=a|0;return c[a+204>>2]|0}function aj5(a){a=a|0;return+(+g[a+240>>2])}function aj6(a){a=a|0;return a+164|0}function aj7(a,b){a=a|0;b=+b;g[a+220>>2]=b;return}function aj8(a){a=a|0;return c[a+196>>2]|0}function aj9(a,b){a=a|0;b=b|0;c[a+204>>2]=b;return}function aka(a){a=a|0;return(c[a+204>>2]&3|0)!=0|0}function akb(a,b){a=a|0;b=+b;g[a+228>>2]=b;return}function akc(a){a=a|0;return(c[a+180>>2]|0)!=0|0}function akd(a,b){a=a|0;b=b|0;c[a+188>>2]=b;return}function ake(a){a=a|0;return(c[a+204>>2]&2|0)!=0|0}function akf(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function akg(a){a=a|0;return(c[a+4>>2]|0)==31|0}function akh(a){a=a|0;return(c[a+4>>2]|0)<7|0}function aki(a){a=a|0;return(c[a+4>>2]|0)<20|0}function akj(a){a=a|0;return(c[a+4>>2]|0)==28|0}function akk(a){a=a|0;return c[a+8>>2]|0}function akl(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function akm(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function akn(a){a=a|0;return(c[a+4>>2]|0)==32|0}function ako(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function akp(a){a=a|0;return c[a+4>>2]|0}function akq(a){a=a|0;return+(+g[a+104>>2])}function akr(a){a=a|0;return+(+g[a+100>>2])}function aks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0;f=i;i=i+128|0;h=f|0;j=f+64|0;g[h>>2]=1.0;aDD(h+4|0,0,16);g[h+20>>2]=1.0;aDD(h+24|0,0,16);g[h+40>>2]=1.0;c[h+44>>2]=0;k=h+48|0;l=b;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[j>>2]=1.0;aDD(j+4|0,0,16);g[j+20>>2]=1.0;aDD(j+24|0,0,16);g[j+40>>2]=1.0;c[j+44>>2]=0;l=j+48|0;k=d;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];c[l+12>>2]=c[k+12>>2];k=a+260|0;if((c[k>>2]|0)<=0){i=f;return}l=a+268|0;a=e;d=0;do{b=c[(c[l>>2]|0)+(d<<2)>>2]|0;if(dj[c[(c[a>>2]|0)+8>>2]&511](e,c[b+188>>2]|0)|0){atG(h,j,b,c[b+192>>2]|0,b+4|0,e)}d=d+1|0;}while((d|0)<(c[k>>2]|0));i=f;return}function akt(a){a=a|0;return cA[c[(c[a>>2]|0)+16>>2]&4095](a|0)|0}function aku(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function akv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;axT(a,b,c,d,e,0.0);return}function akw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;axT(a,b,c,d,e,f);return}function akx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+164|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];do{if(+g[b>>2]!=1.0){f=1}else{if(+g[b+4>>2]!=1.0){f=1;break}f=+g[b+8>>2]!=1.0|0}}while(0);c[a+180>>2]=f;return}function aky(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(295)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}g[d+164>>2]=1.0;g[d+168>>2]=1.0;g[d+172>>2]=1.0;g[d+176>>2]=0.0;c[d+180>>2]=0;g[d+184>>2]=999999984306749400.0;aDD(d+188|0,0,16);c[d+204>>2]=1;c[d+208>>2]=-1;c[d+212>>2]=-1;c[d+216>>2]=1;g[d+220>>2]=0.0;g[d+224>>2]=.5;g[d+228>>2]=0.0;c[d+236>>2]=0;g[d+240>>2]=1.0;g[d+244>>2]=0.0;g[d+248>>2]=0.0;c[d+252>>2]=0;g[d+4>>2]=1.0;aDD(d+8|0,0,16);g[d+24>>2]=1.0;aDD(d+28|0,0,16);g[d+44>>2]=1.0;aDD(d+48|0,0,20);c[d>>2]=25632;a[d+272|0]=1;c[d+268>>2]=0;c[d+260>>2]=0;c[d+264>>2]=0;c[d+232>>2]=4;return d|0}function akz(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+20|0;d=b+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=a+36|0;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=a+52|0;a=b+48|0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];return}function akA(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function akB(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a|0,b,d);return}function akC(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function akD(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function akE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+60>>2]&1023](a,b,d,e);return}function akF(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function akG(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function akH(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function akI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a|0,b,d,e);return}function akJ(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function akK(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function akL(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function akM(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function akN(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function akO(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function akP(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function akQ(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function akR(a){a=a|0;return cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0}function akS(a,b){a=a|0;b=+b;g[a+84>>2]=b;return}function akT(a){a=a|0;return+(+g[a+96>>2])}function akU(a,b){a=a|0;b=+b;g[a+92>>2]=b;return}function akV(a,b){a=a|0;b=+b;g[a+88>>2]=b;return}function akW(a){a=a|0;return+(+g[a+92>>2])}function akX(a){a=a|0;return+(+g[a+84>>2])}function akY(a,b){a=a|0;b=+b;g[a+96>>2]=b;return}function akZ(a,b){a=a|0;b=+b;g[a+100>>2]=b;return}function ak_(a,b){a=a|0;b=+b;g[a+104>>2]=b;return}function ak$(a){a=a|0;return+(+g[a+88>>2])}function ak0(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function ak1(a){a=a|0;return a+8|0}function ak2(a){a=a|0;return c[a>>2]|0}function ak3(a,b){a=a|0;b=+b;g[a+40>>2]=b;return}function ak4(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function ak5(a){a=a|0;return+(+g[a+40>>2])}function ak6(a){a=a|0;return c[a+4>>2]|0}function ak7(a){a=a|0;return a+24|0}function ak8(a){a=a|0;return c[a+60>>2]|0}function ak9(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0,k=0,l=0,m=0;f=(+g[d>>2]- +g[a+12>>2])*+g[a+44>>2];h=(+g[d+4>>2]- +g[a+16>>2])*+g[a+48>>2];i=(+g[d+8>>2]- +g[a+20>>2])*+g[a+52>>2];do{if(f>0.0){d=c[a+8>>2]|0;if(f<+(d>>>0>>>0)){j=~~f&c[a+4>>2]|e;break}else{j=d&c[a+4>>2]|e;break}}else{j=e}}while(0);c[b>>2]=j;do{if(h>0.0){j=c[a+8>>2]|0;if(h<+(j>>>0>>>0)){k=~~h&c[a+4>>2]|e;break}else{k=j&c[a+4>>2]|e;break}}else{k=e}}while(0);c[b+4>>2]=k;if(i<=0.0){l=e;m=b+8|0;c[m>>2]=l;return}k=c[a+8>>2]|0;if(i<+(k>>>0>>>0)){l=~~i&c[a+4>>2]|e;m=b+8|0;c[m>>2]=l;return}else{l=k&c[a+4>>2]|e;m=b+8|0;c[m>>2]=l;return}}function ala(a){a=a|0;return c[a+104>>2]|0}function alb(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=i;i=i+16|0;f=e|0;h=e+8|0;g[b+84>>2]=+g[d+16>>2];g[b+88>>2]=+g[d+20>>2];g[b+92>>2]=+g[d+24>>2];g[b+96>>2]=+g[d+28>>2];g[b+104>>2]=+g[d+32>>2];j=b+4|0;b=d+40|0;k=c[b>>2]|0;c[f>>2]=0;ant(j,k,f);f=d|0;k=j+12|0;l=0;while(1){if((l|0)>=(c[b>>2]|0)){break}c[(c[k>>2]|0)+(l<<2)>>2]=c[(c[f>>2]|0)+(l<<2)>>2];l=l+1|0}l=d+36|0;f=c[l>>2]|0;c[h>>2]=0;ant(j+20|0,f,h);h=d+4|0;f=j+32|0;k=0;while(1){if((k|0)>=(c[l>>2]|0)){break}c[(c[f>>2]|0)+(k<<2)>>2]=c[(c[h>>2]|0)+(k<<2)>>2];k=k+1|0}k=d+44|0;h=c[k>>2]|0;f=j+44|0;l=c[f>>2]|0;L1395:do{if((h|0)<(l|0)){b=h;while(1){if((b|0)>=(l|0)){break}b=b+1|0}m=j+52|0}else{do{if((h|0)>(l|0)){b=j+48|0;if((c[b>>2]|0)>=(h|0)){break}do{if((h|0)==0){n=0}else{c[9806]=(c[9806]|0)+1;o=aDx((h<<4|4)+15|0)|0;if((o|0)==0){n=0;break}p=-(o+4|0)&15;c[o+p>>2]=o;n=o+(p+4)|0}}while(0);p=c[f>>2]|0;o=j+52|0;q=0;while(1){if((q|0)>=(p|0)){break}r=n+(q<<4)|0;if((r|0)!=0){s=r;r=(c[o>>2]|0)+(q<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2]}q=q+1|0}q=c[f>>2]|0;p=0;while(1){if((p|0)>=(q|0)){break}p=p+1|0}p=c[o>>2]|0;q=j+56|0;if((p|0)==0){t=q}else{if((a[q]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-16+12>>2]|0)}c[o>>2]=0;t=q}a[t]=1;c[o>>2]=n;c[b>>2]=h}}while(0);q=j+52|0;p=l;while(1){if((p|0)>=(h|0)){m=q;break L1395}r=c[q>>2]|0;s=r+(p<<4)|0;if((s|0)!=0){c[s>>2]=0;g[r+(p<<4)+4>>2]=6.2831854820251465;g[r+(p<<4)+8>>2]=6.2831854820251465;g[r+(p<<4)+12>>2]=6.2831854820251465}p=p+1|0}}}while(0);c[f>>2]=h;h=d+8|0;f=0;while(1){if((f|0)>=(c[k>>2]|0)){break}g[(c[m>>2]|0)+(f<<4)+4>>2]=+g[(c[h>>2]|0)+(f<<4)+4>>2];g[(c[m>>2]|0)+(f<<4)+8>>2]=+g[(c[h>>2]|0)+(f<<4)+8>>2];g[(c[m>>2]|0)+(f<<4)+12>>2]=+g[(c[h>>2]|0)+(f<<4)+12>>2];c[(c[m>>2]|0)+(f<<4)>>2]=c[(c[h>>2]|0)+(f<<4)>>2];f=f+1|0}f=d+48|0;h=c[f>>2]|0;m=j+64|0;k=c[m>>2]|0;L1437:do{if((h|0)<(k|0)){l=h;while(1){if((l|0)>=(k|0)){break}l=l+1|0}u=j+72|0}else{do{if((h|0)>(k|0)){l=j+68|0;if((c[l>>2]|0)>=(h|0)){break}do{if((h|0)==0){v=0}else{c[9806]=(c[9806]|0)+1;n=aDx((h<<2)+19|0)|0;if((n|0)==0){v=0;break}t=-(n+4|0)&15;c[n+t>>2]=n;v=n+(t+4)|0}}while(0);b=c[m>>2]|0;o=j+72|0;t=0;while(1){if((t|0)>=(b|0)){break}n=v+(t<<2)|0;if((n|0)!=0){c[n>>2]=c[(c[o>>2]|0)+(t<<2)>>2]}t=t+1|0}t=c[m>>2]|0;b=0;while(1){if((b|0)>=(t|0)){break}b=b+1|0}b=c[o>>2]|0;t=j+76|0;if((b|0)==0){w=t}else{if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0)}c[o>>2]=0;w=t}a[w]=1;c[o>>2]=v;c[l>>2]=h}}while(0);t=j+72|0;b=k;while(1){if((b|0)>=(h|0)){u=t;break L1437}n=(c[t>>2]|0)+(b<<2)|0;if((n|0)!=0){c[n>>2]=0}b=b+1|0}}}while(0);c[m>>2]=h;h=d+12|0;d=0;while(1){if((d|0)>=(c[f>>2]|0)){break}c[(c[u>>2]|0)+(d<<2)>>2]=c[(c[h>>2]|0)+(d<<2)>>2];d=d+1|0}i=e;return}function alc(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+12>>2]&511](a,b,d)|0}function ald(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ale(a,b){a=a|0;b=b|0;var d=0;d=a+8|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function alf(a,b){a=a|0;b=b|0;var d=0;d=a+24|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function alg(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return alh(a|0,b,c,d,e,f,g,h)|0}function alh(a,d,e,f,g,h,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;l=i;i=i+32|0;m=l|0;n=l+16|0;ak9(a,m|0,d,0);ak9(a,n|0,e,1);e=a+72|0;d=c[e>>2]|0;o=a+68|0;p=c[o>>2]|0;c[e>>2]=c[p+(d*76|0)+48>>2];e=a+60|0;c[e>>2]=(c[e>>2]|0)+1;c[p+(d*76|0)+12>>2]=d;c[p+(d*76|0)>>2]=f;b[p+(d*76|0)+4>>1]=g;b[p+(d*76|0)+6>>1]=h;c[p+(d*76|0)+8>>2]=k;k=c[e>>2]<<1;e=k|1;h=k-1|0;g=0;while(1){if(g>>>0>=3){break}f=(c[o>>2]|0)+60+(g<<2)|0;c[f>>2]=(c[f>>2]|0)+2;f=a+76+(g<<2)|0;q=c[f>>2]|0;r=q+(h<<3)|0;s=q+(e<<3)|0;q=c[r+4>>2]|0;c[s>>2]=c[r>>2];c[s+4>>2]=q;c[(c[f>>2]|0)+(h<<3)>>2]=c[m+(g<<2)>>2];c[(c[f>>2]|0)+(h<<3)+4>>2]=d;c[(c[f>>2]|0)+(k<<3)>>2]=c[n+(g<<2)>>2];c[(c[f>>2]|0)+(k<<3)+4>>2]=d;c[p+(d*76|0)+48+(g<<2)>>2]=h;c[p+(d*76|0)+60+(g<<2)>>2]=k;g=g+1|0}am6(a,0,c[p+(d*76|0)+48>>2]|0,0);anc(a,0,c[p+(d*76|0)+60>>2]|0,j,0);am6(a,1,c[p+(d*76|0)+52>>2]|0,0);anc(a,1,c[p+(d*76|0)+64>>2]|0,j,0);am6(a,2,c[p+(d*76|0)+56>>2]|0,1);anc(a,2,c[p+(d*76|0)+68>>2]|0,j,1);i=l;return d|0}function ali(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ak9(a|0,b,c,d);return}function alj(a,b,c){a=a|0;b=b|0;c=c|0;alk(a|0,b,c);return}function alk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+68|0;f=c[e>>2]|0;g=a+100|0;h=c[g>>2]|0;if(!(cA[c[(c[h>>2]|0)+56>>2]&4095](h)|0)){h=c[g>>2]|0;dA[c[(c[h>>2]|0)+16>>2]&511](h|0,f+(b*76|0)|0,d)}h=a+60|0;g=c[h>>2]<<1;i=0;while(1){if((i|0)>=3){break}j=(c[e>>2]|0)+60+(i<<2)|0;c[j>>2]=(c[j>>2]|0)-2;i=i+1|0}i=a+8|0;j=g-1|0;g=0;while(1){if((g|0)>=3){break}k=c[a+76+(g<<2)>>2]|0;l=c[f+(b*76|0)+60+(g<<2)>>2]|0;c[k+(l<<3)>>2]=c[i>>2];ana(a,g,l,0);l=c[f+(b*76|0)+48+(g<<2)>>2]|0;c[k+(l<<3)>>2]=c[i>>2];anb(a,g,l,d,0);c[k+(j<<3)+4>>2]=0;c[k+(j<<3)>>2]=c[i>>2];g=g+1|0}g=a+72|0;c[(c[e>>2]|0)+(b*76|0)+48>>2]=c[g>>2];c[g>>2]=b;c[h>>2]=(c[h>>2]|0)-1;return}function all(a,b){a=a|0;b=b|0;cg(a|0,b|0);return}function alm(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0;while(1){h=aDx(44)|0;if((h|0)!=0){i=1465;break}j=(C=c[10744]|0,c[10744]=C+0,C);if((j|0)==0){break}dC[j&63]()}if((i|0)==1465){c[h>>2]=a;c[h+4>>2]=b;b=h+8|0;a=d;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];a=h+24|0;b=e;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];g[h+40>>2]=f;return h|0}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676);return 0}function aln(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=b;b=d;d=0;while(1){if((d|0)>=3){e=1;f=1474;break}if((c[a+60+(d<<2)>>2]|0)>>>0<(c[b+48+(d<<2)>>2]|0)>>>0){e=0;f=1472;break}if((c[b+60+(d<<2)>>2]|0)>>>0<(c[a+48+(d<<2)>>2]|0)>>>0){e=0;f=1473;break}d=d+1|0}if((f|0)==1472){return e|0}else if((f|0)==1473){return e|0}else if((f|0)==1474){return e|0}return 0}function alo(a,b){a=a|0;b=b|0;c[a+104>>2]=b;return}function alp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0;f=c[a+76>>2]|0;h=(c[f+(c[b+60>>2]<<3)>>2]|0)+1&65535;i=c[a+80>>2]|0;j=(c[i+(c[b+64>>2]<<3)>>2]|0)+1&65535;k=c[a+84>>2]|0;l=(c[k+(c[b+68>>2]<<3)>>2]|0)+1&65535;m=a+44|0;n=+((c[f+(c[b+48>>2]<<3)>>2]&65535)>>>0)/+g[m>>2];f=a+48|0;o=+((c[i+(c[b+52>>2]<<3)>>2]&65535)>>>0)/+g[f>>2];i=a+52|0;p=+((c[k+(c[b+56>>2]<<3)>>2]&65535)>>>0)/+g[i>>2];b=d|0;g[b>>2]=n;k=d+4|0;g[k>>2]=o;q=d+8|0;g[q>>2]=p;g[d+12>>2]=0.0;d=a+12|0;g[b>>2]=n+ +g[d>>2];b=a+16|0;g[k>>2]=o+ +g[b>>2];k=a+20|0;g[q>>2]=p+ +g[k>>2];p=+((h&65535)>>>0)/+g[m>>2];o=+((j&65535)>>>0)/+g[f>>2];n=+((l&65535)>>>0)/+g[i>>2];i=e|0;g[i>>2]=p;l=e+4|0;g[l>>2]=o;f=e+8|0;g[f>>2]=n;g[e+12>>2]=0.0;g[i>>2]=p+ +g[d>>2];g[l>>2]=o+ +g[b>>2];g[f>>2]=n+ +g[k>>2];return}function alq(a,b){a=a|0;b=b|0;return(c[a+68>>2]|0)+(b*76|0)|0}function alr(a){a=a|0;return(c[a+4>>2]|0)==31|0}function als(a,b){a=a|0;b=b|0;c[a+8>>2]=b;return}function alt(a){a=a|0;return+(+g[a+44>>2])}function alu(a){a=a|0;return(c[a+4>>2]|0)<7|0}function alv(a){a=a|0;return+(+g[a+28>>2]*+g[a+12>>2])}function alw(a){a=a|0;return a+12|0}function alx(a,b){a=a|0;b=+b;g[a+28>>2]=b;g[a+44>>2]=b;return}function aly(a){a=a|0;return(c[a+4>>2]|0)<20|0}function alz(a){a=a|0;return(c[a+4>>2]|0)==28|0}function alA(a){a=a|0;return c[a+8>>2]|0}function alB(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20&(b|0)<30?(b|0)!=25:0)|0}function alC(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)==17?1:(b|0)==18)|0}function alD(a){a=a|0;return(c[a+4>>2]|0)==32|0}function alE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+32|0;g=f|0;h=f+16|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(g|0,0,16);aDD(h|0,0,16);c_[j&127](a|0,b,d,e,g,h);i=f;return}function alF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;g=i;i=i+16|0;h=g|0;j=c[(c[a>>2]|0)+24>>2]|0;aDD(h|0,0,16);c_[j&127](a|0,b,d,e,f,h);i=g;return}function alG(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[c[(c[a>>2]|0)+24>>2]&127](a|0,b,d,e,f,g);return}function alH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+16>>2]&255](a|0,b,d,e,f);return}function alI(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+48>>2]&2047](a|0,b);return}function alJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+20>>2]&1023](a|0,b,d,e);return}function alK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;alL(a|0,b,c,d,e);return}function alL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=i;i=i+32|0;h=g|0;j=g+16|0;k=c[a+68>>2]|0;ak9(a,h|0,d,0);ak9(a,j|0,e,1);e=0;while(1){if((e|0)>=3){break}d=c[k+(b*76|0)+48+(e<<2)>>2]|0;l=c[k+(b*76|0)+60+(e<<2)>>2]|0;m=c[h+(e<<2)>>2]|0;n=a+76+(e<<2)|0;o=c[n>>2]|0;p=o+(d<<3)|0;q=m-(c[p>>2]|0)|0;r=c[j+(e<<2)>>2]|0;s=r-(c[o+(l<<3)>>2]|0)|0;c[p>>2]=m;c[(c[n>>2]|0)+(l<<3)>>2]=r;if((q|0)<0){am6(a,e,d,1)}if((s|0)>0){ana(a,e,l,1)}if((q|0)>0){anb(a,e,d,f,1)}if((s|0)<0){anc(a,e,l,f,1)}e=e+1|0}i=g;return}function alM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[9806]=(c[9806]|0)+1;d=aDx(143)|0;if((d|0)==0){e=0}else{f=-(d+4|0)&15;c[d+f>>2]=d;e=d+(f+4)|0}f=e;aq7(f,a,b,15e5,0,0);return f|0}function alN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;c[9806]=(c[9806]|0)+1;e=aDx(143)|0;if((e|0)==0){f=0}else{g=-(e+4|0)&15;c[e+g>>2]=e;f=e+(g+4)|0}g=f;aq7(g,a,b,d,0,0);return g|0}function alO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;c[9806]=(c[9806]|0)+1;f=aDx(143)|0;if((f|0)==0){g=0}else{h=-(f+4|0)&15;c[f+h>>2]=f;g=f+(h+4)|0}h=g;aq7(h,a,b,d,e,0);return h|0}function alP(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;c[9806]=(c[9806]|0)+1;g=aDx(143)|0;if((g|0)==0){h=0}else{i=-(g+4|0)&15;c[g+i>>2]=g;h=g+(i+4)|0}i=h;aq7(i,a,b,d,e,f);return i|0}function alQ(a){a=a|0;ct[c[(c[a>>2]|0)+52>>2]&2047](a|0);return}function alR(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[c[(c[a>>2]|0)+8>>2]&63](a|0,b,d,e,f,g,h,i,j)|0}function alS(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function alT(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+32>>2]&2047](a|0,b);return}function alU(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a|0)|0}function alV(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+28>>2]&1023](a|0,b,d,e);return}function alW(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+44>>2]&511](a|0,b,d);return}function alX(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,d);return}function alY(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+16>>2]&2047](a,b);return}function alZ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;return+(+db[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e,f))}function al_(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;co[c[(c[a>>2]|0)+8>>2]&255](a,b,d,e,f);return}function al$(a,b,d){a=a|0;b=+b;d=d|0;cX[c[(c[a>>2]|0)+32>>2]&255](a,b,d);return}function al0(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43728]|0)==0){if((b1(43728)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+60>>2]&511](f,b,d);d=f;c[9618]=c[d>>2];c[9619]=c[d+4>>2];c[9620]=c[d+8>>2];c[9621]=c[d+12>>2];i=e;return 38472}function al1(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+52>>2]&511](a|0,b,d)|0}function al2(a){a=a|0;return cA[c[(c[a>>2]|0)+28>>2]&4095](a|0)|0}function al3(a){a=a|0;return cA[c[(c[a>>2]|0)+76>>2]&4095](a|0)|0}function al4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;avP(a|0,b,c,d);return}function al5(a){a=a|0;return cA[c[(c[a>>2]|0)+48>>2]&4095](a|0)|0}function al6(a){a=a|0;return cA[c[(c[a>>2]|0)+36>>2]&4095](a)|0}function al7(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43264]|0)==0){if((b1(43264)|0)==0){break}}}while(0);avB(f,b|0,d);d=f;c[9614]=c[d>>2];c[9615]=c[d+4>>2];c[9616]=c[d+8>>2];c[9617]=c[d+12>>2];i=e;return 38456}function al8(a,b){a=a|0;b=b|0;var d=0;d=a+28|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function al9(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a|0,b);return}function ama(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function amb(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43584]|0)==0){if((b1(43584)|0)==0){break}}}while(0);avC(f,b|0,d);d=f;c[9610]=c[d>>2];c[9611]=c[d+4>>2];c[9612]=c[d+8>>2];c[9613]=c[d+12>>2];i=e;return 38440}function amc(a,b){a=a|0;b=+b;return+(+cU[c[(c[a>>2]|0)+20>>2]&127](a|0,b))}function amd(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+44>>2]&1023](a))}function ame(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+80>>2]&511](a|0,b,d);return}function amf(a,b){a=a|0;b=+b;cq[c[(c[a>>2]|0)+40>>2]&1023](a,b);return}function amg(a){a=+a;var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(71)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d+8>>2]=0;g[d+12>>2]=1.0;g[d+16>>2]=1.0;g[d+20>>2]=1.0;g[d+24>>2]=0.0;c[d>>2]=25528;c[d+4>>2]=8;g[d+28>>2]=a;g[d+44>>2]=a;return d|0}function amh(b,d){b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;do{if((a[43424]|0)==0){if((b1(43424)|0)==0){break}}}while(0);dA[c[(c[b>>2]|0)+64>>2]&511](f,b,d);d=f;c[9606]=c[d>>2];c[9607]=c[d+4>>2];c[9608]=c[d+8>>2];c[9609]=c[d+12>>2];i=e;return 38424}function ami(a){a=a|0;var b=0,d=0.0;b=a|0;switch(c[a+4>>2]|0){case 10:{d=+g[b+44>>2];break};case 1:{d=+g[b+44>>2];break};case 13:{d=+g[b+44>>2];break};case 8:{d=+g[b+28>>2]*+g[b+12>>2];break};case 5:case 4:{d=+g[b+44>>2];break};case 0:{d=+g[b+44>>2];break};default:{d=+dh[c[(c[a>>2]|0)+44>>2]&1023](b)}}return+d}function amj(){return 0}function amk(a){a=a|0;return}function aml(a){a=a|0;return}function amm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return}function amn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return}function amo(a){a=a|0;return a+28|0}function amp(a){a=a|0;var b=0;b=c[a+4>>2]|0;return((b|0)>20?(b|0)<30:0)|0}function amq(a){a=a|0;return c[a+4>>2]|0}function amr(a,b){a=a|0;b=b|0;c[a+144>>2]=b;return}function ams(a){a=a|0;return a+104|0}function amt(b,c,d){b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0;e=+g[c>>2]+-1.0;f=+g[c+4>>2]+-1.0;h=+g[c+8>>2]+-1.0;g[b+4>>2]=e;g[b+8>>2]=f;g[b+12>>2]=h;g[b+16>>2]=0.0;i=+g[d>>2]+1.0;j=+g[d+4>>2]+1.0;k=+g[d+8>>2]+1.0;g[b+20>>2]=i;g[b+24>>2]=j;g[b+28>>2]=k;g[b+32>>2]=0.0;g[b+36>>2]=65533.0/(i-e);g[b+40>>2]=65533.0/(j-f);g[b+44>>2]=65533.0/(k-h);g[b+48>>2]=0.0;a[b+60|0]=1;return}function amu(b,c,d,e){b=b|0;c=c|0;d=d|0;e=+e;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;f=+g[c>>2]-e;h=+g[c+4>>2]-e;i=+g[c+8>>2]-e;g[b+4>>2]=f;g[b+8>>2]=h;g[b+12>>2]=i;g[b+16>>2]=0.0;j=+g[d>>2]+e;k=+g[d+4>>2]+e;l=+g[d+8>>2]+e;g[b+20>>2]=j;g[b+24>>2]=k;g[b+28>>2]=l;g[b+32>>2]=0.0;g[b+36>>2]=65533.0/(j-f);g[b+40>>2]=65533.0/(k-h);g[b+44>>2]=65533.0/(l-i);g[b+48>>2]=0.0;a[b+60|0]=1;return}function amv(b){b=b|0;return(a[b+60|0]&1)!=0|0}function amw(b){b=b|0;return(c[b+168>>2]<<5)+172+(c[b+56>>2]<<((a[b+60|0]&1)==0?6:4))|0}function amx(a){a=a|0;return a+124|0}function amy(a){a=a|0;return a+148|0}function amz(a){a=a|0;return c[a>>2]|0}function amA(a,b){a=a|0;b=b|0;c[a+4>>2]=b;return}function amB(a,b){a=a|0;b=b|0;c[a>>2]=b;return}function amC(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=c[b>>2]|0;b=c[d>>2]|0;if((e|0)==(b|0)){f=1;return f|0}else{g=e;h=b}while(1){i=a[g]|0;j=a[h]|0;if(i<<24>>24!=j<<24>>24){k=1618;break}if(i<<24>>24==0){l=0;break}g=g+1|0;h=h+1|0}do{if((k|0)==1618){h=(i&255)-(j&255)|0;if((h|0)<0){l=-1;break}else{m=h}l=(m|0)>0?1:m}}while(0);f=(l|0)==0;return f|0}function amD(a){a=a|0;return c[a+4>>2]|0}function amE(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;b=d;d=c;while(1){e=a[d]|0;f=a[b]|0;if(e<<24>>24!=f<<24>>24){break}if(e<<24>>24==0){g=0;h=1633;break}b=b+1|0;d=d+1|0}if((h|0)==1633){return g|0}h=(e&255)-(f&255)|0;if((h|0)<0){g=-1;return g|0}else{g=h;return((g|0)>0?1:g)|0}return 0}function amF(a){a=a|0;return c[a+4>>2]|0}function amG(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function amH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+68>>2]&1023](a,b,d,e);return}function amI(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0;e=i;i=i+8|0;f=e|0;g[f>>2]=d;dA[c[(c[a>>2]|0)+12>>2]&511](a|0,b,f);i=e;return}function amJ(a){a=a|0;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a|0))}function amK(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+56>>2]&2047](a|0,b);return}function amL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function amM(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;atv(a|0,b,c,d,e,f,g);return}function amN(a){a=a|0;azj(a);return}function amO(a,b,d){a=a|0;b=b|0;d=d|0;return(cS[c[(c[a>>2]|0)+16>>2]&511](a,b,d)|0)!=0|0}function amP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+8>>2]&127](a,b,d,e)|0}function amQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;qX(a,b,c,d);return}function amR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;azn(a,b,c,d);return}function amS(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0;h=i;i=i+32|0;j=h|0;k=h+16|0;aDD(j|0,0,16);aDD(k|0,0,16);if((a[b+60|0]&1)==0){azp(b,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k);i=h;return}else{azq(b,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],j,k,c[b+56>>2]|0);i=h;return}}function amT(a,b,c){a=a|0;b=b|0;c=c|0;return azs(a,b,c)|0}function amU(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;rD(a,b,c,d);return}function amV(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+24>>2]&2047](a,b);return}function amW(a){a=a|0;return cA[c[(c[a>>2]|0)+12>>2]&4095](a)|0}function amX(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function amY(){var b=0,d=0,e=0;c[9806]=(c[9806]|0)+1;b=aDx(191)|0;if((b|0)==0){d=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;d=b+(e+4)|0}c[d>>2]=25328;c[d+52>>2]=278;a[d+60|0]=0;a[d+80|0]=1;c[d+76>>2]=0;c[d+68>>2]=0;c[d+72>>2]=0;a[d+100|0]=1;c[d+96>>2]=0;c[d+88>>2]=0;c[d+92>>2]=0;a[d+120|0]=1;c[d+116>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;a[d+140|0]=1;c[d+136>>2]=0;c[d+128>>2]=0;c[d+132>>2]=0;c[d+144>>2]=0;a[d+164|0]=1;c[d+160>>2]=0;c[d+152>>2]=0;c[d+156>>2]=0;c[d+168>>2]=0;g[d+4>>2]=-3.4028234663852886e+38;g[d+8>>2]=-3.4028234663852886e+38;g[d+12>>2]=-3.4028234663852886e+38;g[d+16>>2]=0.0;g[d+20>>2]=3.4028234663852886e+38;g[d+24>>2]=3.4028234663852886e+38;g[d+28>>2]=3.4028234663852886e+38;g[d+32>>2]=0.0;return d|0}function amZ(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);return}function am_(b,c){b=b|0;c=c|0;var d=0.0,f=0.0;do{if((a[43920]|0)==0){if((b1(43920)|0)==0){break}}}while(0);d=+((e[c+2>>1]|0)>>>0)/+g[b+40>>2]+ +g[b+8>>2];f=+((e[c+4>>1]|0)>>>0)/+g[b+44>>2]+ +g[b+12>>2];g[9602]=+((e[c>>1]|0)>>>0)/+g[b+36>>2]+ +g[b+4>>2];g[9603]=d;g[9604]=f;g[9605]=0.0;return 38408}function am$(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;if((a[b+60|0]&1)==0){azp(b,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,i);return}else{azq(b,d,e,+g[f>>2],+g[f+4>>2],+g[f+8>>2],h,i,c[b+56>>2]|0);return}}function am0(a){a=a|0;if((a|0)==0){return}aDB(a);return}function am1(a,b,d){a=a|0;b=b|0;d=d|0;return cS[c[(c[a>>2]|0)+8>>2]&511](a,b,d)|0}function am2(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return dE[c[(c[a>>2]|0)+12>>2]&127](a,b,d,e)|0}function am3(a){a=a|0;if((a|0)==0){return}ct[c[(c[a>>2]|0)+4>>2]&2047](a);return}function am4(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[a>>2]|0)+16>>2]&511](a,b,d);return}function am5(a){a=a|0;if((a|0)==0){return}aDB(a);return}function am6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=c[a+76+(b<<2)>>2]|0;g=c[f+(d<<3)+4>>2]|0;h=a+68|0;i=c[h>>2]|0;j=i+(g*76|0)+48+(b<<2)|0;k=1<>2]|0;if((c[g>>2]|0)>>>0>=d>>>0){break}f=c[i+4>>2]|0;s=c[h>>2]|0;if((d&1|0)==0){d=s+(f*76|0)+48+(b<<2)|0;c[d>>2]=(c[d>>2]|0)+1}else{do{if(e){if((c[m>>2]|0)>>>0<(c[s+(f*76|0)+48+(k<<2)>>2]|0)>>>0){break}if((c[s+(f*76|0)+60+(k<<2)>>2]|0)>>>0<(c[a>>2]|0)>>>0){break}if((c[q>>2]|0)>>>0<(c[s+(f*76|0)+48+(l<<2)>>2]|0)>>>0){break}if((c[s+(f*76|0)+60+(l<<2)>>2]|0)>>>0<(c[r>>2]|0)>>>0){break}d=c[n>>2]|0;t=d|0;u=c[(c[d>>2]|0)+8>>2]|0;d=s+(f*76|0)|0;cS[u&511](t,o,d)|0;t=c[p>>2]|0;if((t|0)==0){break}u=c[(c[t>>2]|0)+8>>2]|0;cS[u&511](t,o,d)|0}}while(0);d=s+(f*76|0)+60+(b<<2)|0;c[d>>2]=(c[d>>2]|0)+1}c[j>>2]=(c[j>>2]|0)-1;d=g;t=c[d>>2]|0;u=c[d+4>>2]|0;v=i;w=c[v+4>>2]|0;c[d>>2]=c[v>>2];c[d+4>>2]=w;c[v>>2]=t;c[v+4>>2]=u;g=g-8|0;i=i-8|0}return}function am7(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;while(1){d=aDx(8)|0;if((d|0)!=0){break}e=(C=c[10744]|0,c[10744]=C+0,C);if((e|0)==0){f=1720;break}dC[e&63]()}if((f|0)==1720){f=cd(4)|0;c[f>>2]=19096;bF(f|0,34368,676);return 0}f=d;c[d>>2]=b;e=0;g=-2128831035;while(1){h=a[b+e|0]|0;if(h<<24>>24==0){break}e=e+1|0;g=aa(g^h<<24>>24,16777619)|0}c[d+4>>2]=g;return f|0}function am8(){var a=0,b=0,d=0;while(1){a=aDx(4)|0;if((a|0)!=0){b=1738;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==1738){c[a>>2]=22888;return a|0}a=cd(4)|0;c[a>>2]=19096;bF(a|0,34368,676);return 0}function am9(a){a=a|0;return}function ana(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=c[a+76+(b<<2)>>2]|0;g=c[f+(d<<3)+4>>2]|0;h=a+68|0;i=c[h>>2]|0;j=1<>2]|0;if((d|0)==0){r=1755;break}f=c[i>>2]|0;if((c[g>>2]|0)>>>0>>0){r=1756;break}s=c[h>>2]|0;if((f&1|0)==0){do{if(e){if((c[l>>2]|0)>>>0<(c[s+(d*76|0)+48+(j<<2)>>2]|0)>>>0){break}if((c[s+(d*76|0)+60+(j<<2)>>2]|0)>>>0<(c[a>>2]|0)>>>0){break}if((c[o>>2]|0)>>>0<(c[s+(d*76|0)+48+(k<<2)>>2]|0)>>>0){break}if((c[s+(d*76|0)+60+(k<<2)>>2]|0)>>>0<(c[p>>2]|0)>>>0){break}f=c[m>>2]|0;t=f|0;u=c[(c[f>>2]|0)+8>>2]|0;f=s+((c[g+4>>2]|0)*76|0)|0;v=s+(d*76|0)|0;cS[u&511](t,f,v)|0;t=c[n>>2]|0;if((t|0)==0){break}u=c[(c[t>>2]|0)+8>>2]|0;cS[u&511](t,f,v)|0}}while(0);v=s+(d*76|0)+48+(b<<2)|0;c[v>>2]=(c[v>>2]|0)-1}else{v=s+(d*76|0)+60+(b<<2)|0;c[v>>2]=(c[v>>2]|0)-1}c[q>>2]=(c[q>>2]|0)+1;v=g;f=c[v>>2]|0;t=c[v+4>>2]|0;u=i;w=c[u+4>>2]|0;c[v>>2]=c[u>>2];c[v+4>>2]=w;c[u>>2]=f;c[u+4>>2]=t;g=g+8|0;i=i+8|0}if((r|0)==1755){return}else if((r|0)==1756){return}}function anb(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=c[a+76+(b<<2)>>2]|0;h=a+68|0;i=(c[h>>2]|0)+((c[g+(d<<3)+4>>2]|0)*76|0)+48+(b<<2)|0;j=1<>2]|0;if((d|0)==0){o=1773;break}g=c[n>>2]|0;if((c[a>>2]|0)>>>0>>0){o=1772;break}p=c[h>>2]|0;if((g&1|0)==0){g=p+(d*76|0)+48+(b<<2)|0;c[g>>2]=(c[g>>2]|0)-1}else{g=c[a+4>>2]|0;do{if(f){if((c[p+(g*76|0)+60+(j<<2)>>2]|0)>>>0<(c[p+(d*76|0)+48+(j<<2)>>2]|0)>>>0){break}if((c[p+(d*76|0)+60+(j<<2)>>2]|0)>>>0<(c[p+(g*76|0)+48+(j<<2)>>2]|0)>>>0){break}if((c[p+(g*76|0)+60+(k<<2)>>2]|0)>>>0<(c[p+(d*76|0)+48+(k<<2)>>2]|0)>>>0){break}if((c[p+(d*76|0)+60+(k<<2)>>2]|0)>>>0<(c[p+(g*76|0)+48+(k<<2)>>2]|0)>>>0){break}q=c[l>>2]|0;r=q|0;s=c[(c[q>>2]|0)+12>>2]|0;q=p+(g*76|0)|0;t=p+(d*76|0)|0;dE[s&127](r,q,t,e)|0;r=c[m>>2]|0;if((r|0)==0){break}s=c[(c[r>>2]|0)+12>>2]|0;dE[s&127](r,q,t,e)|0}}while(0);g=p+(d*76|0)+60+(b<<2)|0;c[g>>2]=(c[g>>2]|0)-1}c[i>>2]=(c[i>>2]|0)+1;g=a;t=c[g>>2]|0;q=c[g+4>>2]|0;r=n;s=c[r+4>>2]|0;c[g>>2]=c[r>>2];c[g+4>>2]=s;c[r>>2]=t;c[r+4>>2]=q;a=a+8|0;n=n+8|0}if((o|0)==1772){return}else if((o|0)==1773){return}}function anc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;g=c[a+76+(b<<2)>>2]|0;h=a+68|0;i=1<>2]|0)+((c[g+(d<<3)+4>>2]|0)*76|0)+60+(b<<2)|0;m=g+(d<<3)|0;n=g+(d-1<<3)|0;while(1){d=c[n>>2]|0;if((c[m>>2]|0)>>>0>=d>>>0){break}g=c[n+4>>2]|0;o=c[h>>2]|0;if((d&1|0)==0){d=c[m+4>>2]|0;do{if(f){if((c[o+(d*76|0)+60+(i<<2)>>2]|0)>>>0<(c[o+(g*76|0)+48+(i<<2)>>2]|0)>>>0){break}if((c[o+(g*76|0)+60+(i<<2)>>2]|0)>>>0<(c[o+(d*76|0)+48+(i<<2)>>2]|0)>>>0){break}if((c[o+(d*76|0)+60+(j<<2)>>2]|0)>>>0<(c[o+(g*76|0)+48+(j<<2)>>2]|0)>>>0){break}if((c[o+(g*76|0)+60+(j<<2)>>2]|0)>>>0<(c[o+(d*76|0)+48+(j<<2)>>2]|0)>>>0){break}p=c[k>>2]|0;q=p|0;r=c[(c[p>>2]|0)+12>>2]|0;p=o+(d*76|0)|0;s=o+(g*76|0)|0;dE[r&127](q,p,s,e)|0;q=c[l>>2]|0;if((q|0)==0){break}r=c[(c[q>>2]|0)+12>>2]|0;dE[r&127](q,p,s,e)|0}}while(0);d=o+(g*76|0)+48+(b<<2)|0;c[d>>2]=(c[d>>2]|0)+1}else{d=o+(g*76|0)+60+(b<<2)|0;c[d>>2]=(c[d>>2]|0)+1}c[a>>2]=(c[a>>2]|0)-1;d=m;s=c[d>>2]|0;p=c[d+4>>2]|0;q=n;r=c[q+4>>2]|0;c[d>>2]=c[q>>2];c[d+4>>2]=r;c[q>>2]=s;c[q+4>>2]=p;m=m-8|0;n=n-8|0}return}function and(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,x=0;h=c[a+68+(d<<2)>>2]|0;i=f&65535;f=a+60|0;j=c[f>>2]|0;k=e[h+(i<<2)+2>>1]|0;l=j+(k<<6)+48+(d<<1)|0;m=1<>1]|0;if((e[k>>1]|0)>=(i&65535)){break}h=c[f>>2]|0;u=e[j+2>>1]|0;if((i&1)==0){i=h+(u<<6)+48+(d<<1)|0;b[i>>1]=(b[i>>1]|0)+1&65535}else{do{if(g){if((e[o>>1]|0)<(e[h+(u<<6)+48+(m<<1)>>1]|0)){break}if((e[h+(u<<6)+54+(m<<1)>>1]|0)<(e[a>>1]|0)){break}if((e[s>>1]|0)<(e[h+(u<<6)+48+(n<<1)>>1]|0)){break}if((e[h+(u<<6)+54+(n<<1)>>1]|0)<(e[t>>1]|0)){break}i=c[p>>2]|0;v=i|0;x=c[(c[i>>2]|0)+8>>2]|0;i=h+(u<<6)|0;cS[x&511](v,q,i)|0;v=c[r>>2]|0;if((v|0)==0){break}x=c[(c[v>>2]|0)+8>>2]|0;cS[x&511](v,q,i)|0}}while(0);i=h+(u<<6)+54+(d<<1)|0;b[i>>1]=(b[i>>1]|0)+1&65535}b[l>>1]=(b[l>>1]|0)-1&65535;i=k;v=e[i>>1]|e[i+2>>1]<<16;x=j;w=e[x>>1]|e[x+2>>1]<<16;b[i>>1]=w&65535;b[i+2>>1]=w>>16;w=v;b[x>>1]=w&65535;b[x+2>>1]=w>>16;k=k-4|0;j=j-4|0}return}function ane(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,x=0,y=0;h=c[a+68+(d<<2)>>2]|0;i=f&65535;f=a+60|0;j=c[f>>2]|0;k=e[h+(i<<2)+2>>1]|0;l=1<>1]|0;if(i<<16>>16==0){t=1817;break}h=b[j>>1]|0;if((e[k>>1]|0)<(h&65535)){t=1818;break}u=c[f>>2]|0;v=i&65535;if((h&1)==0){do{if(g){if((e[n>>1]|0)<(e[u+(v<<6)+48+(l<<1)>>1]|0)){break}if((e[u+(v<<6)+54+(l<<1)>>1]|0)<(e[a>>1]|0)){break}if((e[q>>1]|0)<(e[u+(v<<6)+48+(m<<1)>>1]|0)){break}if((e[u+(v<<6)+54+(m<<1)>>1]|0)<(e[r>>1]|0)){break}h=c[o>>2]|0;i=h|0;x=c[(c[h>>2]|0)+8>>2]|0;h=u+((e[k+2>>1]|0)<<6)|0;y=u+(v<<6)|0;cS[x&511](i,h,y)|0;i=c[p>>2]|0;if((i|0)==0){break}x=c[(c[i>>2]|0)+8>>2]|0;cS[x&511](i,h,y)|0}}while(0);y=u+(v<<6)+48+(d<<1)|0;b[y>>1]=(b[y>>1]|0)-1&65535}else{y=u+(v<<6)+54+(d<<1)|0;b[y>>1]=(b[y>>1]|0)-1&65535}b[s>>1]=(b[s>>1]|0)+1&65535;y=k;h=e[y>>1]|e[y+2>>1]<<16;i=j;w=e[i>>1]|e[i+2>>1]<<16;b[y>>1]=w&65535;b[y+2>>1]=w>>16;w=h;b[i>>1]=w&65535;b[i+2>>1]=w>>16;k=k+4|0;j=j+4|0}if((t|0)==1817){return}else if((t|0)==1818){return}}function anf(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;i=c[a+68+(d<<2)>>2]|0;j=f&65535;f=a+60|0;k=(c[f>>2]|0)+((e[i+(j<<2)+2>>1]|0)<<6)+48+(d<<1)|0;l=1<>1]|0;if(j<<16>>16==0){q=1834;break}i=b[p>>1]|0;if((e[a>>1]|0)<(i&65535)){q=1835;break}r=c[f>>2]|0;s=j&65535;if((i&1)==0){i=r+(s<<6)+48+(d<<1)|0;b[i>>1]=(b[i>>1]|0)-1&65535}else{i=e[a+2>>1]|0;do{if(h){if((e[r+(i<<6)+54+(l<<1)>>1]|0)<(e[r+(s<<6)+48+(l<<1)>>1]|0)){break}if((e[r+(s<<6)+54+(l<<1)>>1]|0)<(e[r+(i<<6)+48+(l<<1)>>1]|0)){break}if((e[r+(i<<6)+54+(m<<1)>>1]|0)<(e[r+(s<<6)+48+(m<<1)>>1]|0)){break}if((e[r+(s<<6)+54+(m<<1)>>1]|0)<(e[r+(i<<6)+48+(m<<1)>>1]|0)){break}j=c[n>>2]|0;t=j|0;u=c[(c[j>>2]|0)+12>>2]|0;j=r+(i<<6)|0;v=r+(s<<6)|0;dE[u&127](t,j,v,g)|0;t=c[o>>2]|0;if((t|0)==0){break}u=c[(c[t>>2]|0)+12>>2]|0;dE[u&127](t,j,v,g)|0}}while(0);i=r+(s<<6)+54+(d<<1)|0;b[i>>1]=(b[i>>1]|0)-1&65535}b[k>>1]=(b[k>>1]|0)+1&65535;i=a;v=e[i>>1]|e[i+2>>1]<<16;j=p;w=e[j>>1]|e[j+2>>1]<<16;b[i>>1]=w&65535;b[i+2>>1]=w>>16;w=v;b[j>>1]=w&65535;b[j+2>>1]=w>>16;a=a+4|0;p=p+4|0}if((q|0)==1834){return}else if((q|0)==1835){return}}function ang(a,d,f,g,h){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;i=c[a+68+(d<<2)>>2]|0;j=f&65535;f=a+60|0;k=1<>2]|0)+((e[i+(j<<2)+2>>1]|0)<<6)+54+(d<<1)|0;o=i+(j<<2)|0;p=i+(j-1<<2)|0;while(1){j=b[p>>1]|0;if((e[o>>1]|0)>=(j&65535)){break}i=c[f>>2]|0;q=e[p+2>>1]|0;if((j&1)==0){j=e[o+2>>1]|0;do{if(h){if((e[i+(j<<6)+54+(k<<1)>>1]|0)<(e[i+(q<<6)+48+(k<<1)>>1]|0)){break}if((e[i+(q<<6)+54+(k<<1)>>1]|0)<(e[i+(j<<6)+48+(k<<1)>>1]|0)){break}if((e[i+(j<<6)+54+(l<<1)>>1]|0)<(e[i+(q<<6)+48+(l<<1)>>1]|0)){break}if((e[i+(q<<6)+54+(l<<1)>>1]|0)<(e[i+(j<<6)+48+(l<<1)>>1]|0)){break}r=c[m>>2]|0;s=r|0;t=c[(c[r>>2]|0)+12>>2]|0;r=i+(j<<6)|0;u=i+(q<<6)|0;dE[t&127](s,r,u,g)|0;s=c[n>>2]|0;if((s|0)==0){break}t=c[(c[s>>2]|0)+12>>2]|0;dE[t&127](s,r,u,g)|0}}while(0);j=i+(q<<6)+48+(d<<1)|0;b[j>>1]=(b[j>>1]|0)+1&65535}else{j=i+(q<<6)+54+(d<<1)|0;b[j>>1]=(b[j>>1]|0)+1&65535}b[a>>1]=(b[a>>1]|0)-1&65535;j=o;u=e[j>>1]|e[j+2>>1]<<16;r=p;w=e[r>>1]|e[r+2>>1]<<16;b[j>>1]=w&65535;b[j+2>>1]=w>>16;w=u;b[r>>1]=w&65535;b[r+2>>1]=w>>16;o=o-4|0;p=p-4|0}return}function anh(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ani(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;a=c[b>>2]|0;e=c[d>>2]|0;if((c[a+232>>2]|0)==4){f=a}else{f=0}if((c[e+232>>2]|0)==4){g=e}else{g=0}if((f|0)!=0){dA[c[(c[f>>2]|0)+28>>2]&511](f,d,b)}if((g|0)==0){return 0}dA[c[(c[g>>2]|0)+28>>2]&511](g,b,d);return 0}function anj(a,b,c){a=a|0;b=b|0;c=c|0;return}function ank(a){a=a|0;return}function anl(a){a=a|0;return}function anm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function ann(a){a=a|0;return}function ano(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+0.0}function anp(a,b){a=a|0;b=+b;g[a+44>>2]=b;return}function anq(a,c){a=a|0;c=c|0;var d=0;if((b[c+4>>1]&b[a+10>>1])<<16>>16==0){d=0;return d|0}d=(b[a+8>>1]&b[c+6>>1])<<16>>16!=0;return d|0}function anr(a,c){a=a|0;c=c|0;var d=0;if((b[c+4>>1]&b[a+6>>1])<<16>>16==0){d=0;return d|0}d=(b[a+4>>1]&b[c+6>>1])<<16>>16!=0;return d|0}function ans(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a=c[b>>2]|0;f=c[d>>2]|0;if((c[a+232>>2]|0)==4){g=a}else{g=0}if((c[f+232>>2]|0)==4){h=f}else{h=0}if((g|0)!=0){dI[c[(c[g>>2]|0)+32>>2]&1023](g,d,e,b)}if((h|0)==0){return 0}dI[c[(c[h>>2]|0)+32>>2]&1023](h,b,e,d);return 0}function ant(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=b+4|0;g=c[f>>2]|0;if((g|0)>(d|0)){h=d;while(1){if((h|0)>=(g|0)){break}h=h+1|0}c[f>>2]=d;return}do{if((g|0)<(d|0)){h=b+8|0;if((c[h>>2]|0)>=(d|0)){break}do{if((d|0)==0){i=0}else{c[9806]=(c[9806]|0)+1;j=aDx((d<<2)+19|0)|0;if((j|0)==0){i=0;break}k=-(j+4|0)&15;c[j+k>>2]=j;i=j+(k+4)|0}}while(0);k=c[f>>2]|0;j=b+12|0;l=0;while(1){if((l|0)>=(k|0)){break}m=i+(l<<2)|0;if((m|0)!=0){c[m>>2]=c[(c[j>>2]|0)+(l<<2)>>2]}l=l+1|0}l=c[f>>2]|0;k=0;while(1){if((k|0)>=(l|0)){break}k=k+1|0}k=c[j>>2]|0;l=b+16|0;if((k|0)==0){n=l}else{if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[k-4>>2]|0)}c[j>>2]=0;n=l}a[n]=1;c[j>>2]=i;c[h>>2]=d}}while(0);i=b+12|0;b=g;while(1){if((b|0)>=(d|0)){break}g=(c[i>>2]|0)+(b<<2)|0;if((g|0)!=0){c[g>>2]=c[e>>2]}b=b+1|0}c[f>>2]=d;return}function anu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;h=i;i=i+16|0;j=h|0;k=+g[b+4>>2]- +g[a+4>>2];l=+g[b+8>>2]- +g[a+8>>2];g[e>>2]=+g[b>>2]- +g[a>>2];g[e+4>>2]=k;g[e+8>>2]=l;g[e+12>>2]=0.0;e=c+12|0;a=c+8|0;do{if(+g[e>>2]==+g[d+12>>2]){if(+g[a>>2]!=+g[d+8>>2]){m=a;n=1926;break}b=c+4|0;if(+g[b>>2]!=+g[d+4>>2]){m=a;n=1926;break}o=c|0;if(+g[o>>2]!=+g[d>>2]){p=o;q=b;r=a;break}aDD(f|0,0,16);i=h;return}else{m=a;n=1926}}while(0);if((n|0)==1926){p=c|0;q=c+4|0;r=m}ah6(j,c,d);l=-0.0- +g[p>>2];k=-0.0- +g[q>>2];s=-0.0- +g[r>>2];t=+g[e>>2];u=+g[j+12>>2];v=+g[j>>2];w=+g[j+4>>2];x=+g[j+8>>2];y=u*l+v*t+w*s-x*k;z=u*k+w*t+x*l-v*s;A=u*s+x*t+v*k-w*l;B=u*t-v*l-w*k-x*s;do{if(B<-1.0){C=-1.0}else{if(B<=1.0){C=B;break}C=1.0}}while(0);B=+V(+C)*2.0;C=y*y+z*z+A*A;if(C<1.4210854715202004e-14){D=0.0;E=0.0;F=1.0}else{s=1.0/+Q(+C);D=A*s;E=z*s;F=y*s}g[f>>2]=F*B;g[f+4>>2]=E*B;g[f+8>>2]=D*B;g[f+12>>2]=0.0;i=h;return}function anv(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;e=b+40|0;g[a+4>>2]=+g[e>>2];f=c[b>>2]|0;c[a+76>>2]=f;if(d){d=a+44|0;h=b+8|0;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];i=a+60|0;j=b+24|0;k=i;l=j;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];m=+g[e>>2];return+m}else{n=+g[b+8>>2];o=+g[b+12>>2];p=+g[b+16>>2];q=+g[f+20>>2]*n+ +g[f+24>>2]*o+ +g[f+28>>2]*p;r=+g[f+36>>2]*n+ +g[f+40>>2]*o+ +g[f+44>>2]*p;g[a+44>>2]=+g[f+4>>2]*n+ +g[f+8>>2]*o+ +g[f+12>>2]*p;g[a+48>>2]=q;g[a+52>>2]=r;g[a+56>>2]=0.0;i=a+60|0;j=b+24|0;k=i;l=j;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];m=+g[e>>2];return+m}return 0.0}function anx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;d=i;i=i+72|0;e=d|0;f=d+8|0;h=d+16|0;j=d+24|0;k=d+32|0;l=d+40|0;m=d+48|0;n=d+56|0;o=d+64|0;p=+g[c>>2];q=+g[b>>2];r=+g[c+16>>2];s=+g[b+4>>2];t=+g[c+32>>2];u=+g[b+8>>2];g[e>>2]=p*q+r*s+t*u;v=+g[c+4>>2];w=+g[c+20>>2];x=+g[c+36>>2];g[f>>2]=v*q+w*s+x*u;y=+g[c+8>>2];z=+g[c+24>>2];A=+g[c+40>>2];g[h>>2]=y*q+z*s+A*u;u=+g[b+16>>2];s=+g[b+20>>2];q=+g[b+24>>2];g[j>>2]=p*u+r*s+t*q;g[k>>2]=v*u+w*s+x*q;g[l>>2]=y*u+z*s+A*q;q=+g[b+32>>2];s=+g[b+36>>2];u=+g[b+40>>2];g[m>>2]=p*q+r*s+t*u;g[n>>2]=v*q+w*s+x*u;g[o>>2]=y*q+z*s+A*u;d$(a,e,f,h,j,k,l,m,n,o);i=d;return}function any(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anz(a,b,d,e,f,h,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=+j;k=k|0;l=+l;var m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;m=a;n=h;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];o=+g[e+4>>2];p=+g[a+8>>2];q=+g[e+8>>2];r=+g[a+4>>2];s=o*p-q*r;t=+g[a>>2];u=+g[e>>2];v=q*t-u*p;q=u*r-o*t;o=+g[b>>2]*s+ +g[b+4>>2]*v+ +g[b+8>>2]*q;u=+g[b+16>>2]*s+ +g[b+20>>2]*v+ +g[b+24>>2]*q;w=+g[b+32>>2]*s+ +g[b+36>>2]*v+ +g[b+40>>2]*q;g[a+16>>2]=o;g[a+20>>2]=u;g[a+24>>2]=w;g[a+28>>2]=0.0;q=-0.0-t;t=-0.0-r;r=-0.0-p;p=+g[f+4>>2];v=+g[f+8>>2];s=p*r-v*t;x=+g[f>>2];y=v*q-x*r;r=x*t-p*q;q=+g[d>>2]*s+ +g[d+4>>2]*y+ +g[d+8>>2]*r;p=+g[d+16>>2]*s+ +g[d+20>>2]*y+ +g[d+24>>2]*r;t=+g[d+32>>2]*s+ +g[d+36>>2]*y+ +g[d+40>>2]*r;g[a+32>>2]=q;g[a+36>>2]=p;g[a+40>>2]=t;g[a+44>>2]=0.0;r=+g[i>>2]*o;y=+g[i+4>>2]*u;s=+g[i+8>>2]*w;g[a+48>>2]=r;g[a+52>>2]=y;g[a+56>>2]=s;g[a+60>>2]=0.0;x=+g[k>>2]*q;v=+g[k+4>>2]*p;z=+g[k+8>>2]*t;g[a+64>>2]=x;g[a+68>>2]=v;g[a+72>>2]=z;g[a+76>>2]=0.0;g[a+80>>2]=r*o+y*u+s*w+j+l+(x*q+v*p+z*t);return}function anA(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anB(a){a=a|0;return}function anC(a){a=a|0;return}function anD(a,c){a=a|0;c=c|0;var d=0;if((b[c+4>>1]&b[a+14>>1])<<16>>16==0){d=0;return d|0}d=(b[a+12>>1]&b[c+6>>1])<<16>>16!=0;return d|0}function anE(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c[b>>2]=19512;d=b+116|0;e=c[d>>2]|0;f=0;while(1){if((f|0)>=(e|0)){break}f=f+1|0}f=b+124|0;e=c[f>>2]|0;g=b+128|0;if((e|0)==0){h=g}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}c[f>>2]=0;h=g}a[h]=1;c[f>>2]=0;c[d>>2]=0;c[b+120>>2]=0;d=b+96|0;f=c[d>>2]|0;h=0;while(1){if((h|0)>=(f|0)){break}h=h+1|0}h=b+104|0;f=c[h>>2]|0;g=b+108|0;if((f|0)==0){i=g}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[h>>2]=0;i=g}a[i]=1;c[h>>2]=0;c[d>>2]=0;c[b+100>>2]=0;d=b+76|0;h=c[d>>2]|0;i=0;while(1){if((i|0)>=(h|0)){break}i=i+1|0}i=b+84|0;h=c[i>>2]|0;g=b+88|0;if((h|0)==0){j=g}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[h-16+12>>2]|0)}c[i>>2]=0;j=g}a[j]=1;c[i>>2]=0;c[d>>2]=0;c[b+80>>2]=0;d=b+24|0;i=c[d>>2]|0;j=0;while(1){if((j|0)>=(i|0)){break}j=j+1|0}j=b+32|0;i=c[j>>2]|0;g=b+36|0;if((i|0)==0){k=g;a[k]=1;c[j>>2]=0;c[d>>2]=0;l=b+28|0;c[l>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[i-4>>2]|0)}c[j>>2]=0;k=g;a[k]=1;c[j>>2]=0;c[d>>2]=0;l=b+28|0;c[l>>2]=0;return}function anF(a){a=a|0;anE(a);if((a|0)==0){return}aDB(a);return}function anG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=d|0;l=b+8|0;c[l>>2]=c[k>>2];m=b+24|0;n=c[m>>2]|0;o=b+28|0;do{if((n|0)==(c[o>>2]|0)){p=(n|0)==0?1:n<<1;if((n|0)>=(p|0)){q=n;break}do{if((p|0)==0){r=0}else{c[9806]=(c[9806]|0)+1;s=aDx((p<<2)+19|0)|0;if((s|0)==0){r=0;break}t=-(s+4|0)&15;c[s+t>>2]=s;r=s+(t+4)|0}}while(0);t=c[m>>2]|0;s=b+32|0;u=0;while(1){if((u|0)>=(t|0)){break}v=r+(u<<2)|0;if((v|0)!=0){c[v>>2]=c[(c[s>>2]|0)+(u<<2)>>2]}u=u+1|0}u=c[m>>2]|0;t=0;while(1){if((t|0)>=(u|0)){break}t=t+1|0}t=c[s>>2]|0;v=b+36|0;if((t|0)==0){w=u;x=v}else{if((a[v]&1)==0){y=u}else{c[9804]=(c[9804]|0)+1;aDB(c[t-4>>2]|0);y=c[m>>2]|0}c[s>>2]=0;w=y;x=v}a[x]=1;c[s>>2]=r;c[o>>2]=p;q=w}else{q=n}}while(0);n=(c[b+32>>2]|0)+(q<<2)|0;if((n|0)==0){z=q}else{c[n>>2]=c[k>>2];z=c[m>>2]|0}c[m>>2]=z+1;if(e){e=h;z=d+8|0;c[e>>2]=c[z>>2];c[e+4>>2]=c[z+4>>2];c[e+8>>2]=c[z+8>>2];c[e+12>>2]=c[z+12>>2]}else{z=c[l>>2]|0;A=+g[d+8>>2];B=+g[d+12>>2];C=+g[d+16>>2];D=+g[z+20>>2]*A+ +g[z+24>>2]*B+ +g[z+28>>2]*C;E=+g[z+36>>2]*A+ +g[z+40>>2]*B+ +g[z+44>>2]*C;g[h>>2]=+g[z+4>>2]*A+ +g[z+8>>2]*B+ +g[z+12>>2]*C;g[h+4>>2]=D;g[h+8>>2]=E;g[h+12>>2]=0.0}anH(b+72|0,h);h=d+24|0;E=+g[h>>2];D=1.0-E;g[j>>2]=D*+g[b+40>>2]+ +g[b+56>>2]*E;g[j+4>>2]=D*+g[b+44>>2]+E*+g[b+60>>2];g[j+8>>2]=D*+g[b+48>>2]+E*+g[b+64>>2];anH(b+92|0,j);j=b+116|0;d=c[j>>2]|0;z=b+120|0;do{if((d|0)==(c[z>>2]|0)){l=(d|0)==0?1:d<<1;if((d|0)>=(l|0)){F=d;break}do{if((l|0)==0){G=0}else{c[9806]=(c[9806]|0)+1;e=aDx((l<<2)+19|0)|0;if((e|0)==0){G=0;break}m=-(e+4|0)&15;c[e+m>>2]=e;G=e+(m+4)|0}}while(0);p=c[j>>2]|0;s=b+124|0;u=0;while(1){if((u|0)>=(p|0)){break}m=G+(u<<2)|0;if((m|0)!=0){g[m>>2]=+g[(c[s>>2]|0)+(u<<2)>>2]}u=u+1|0}u=c[j>>2]|0;p=0;while(1){if((p|0)>=(u|0)){break}p=p+1|0}p=c[s>>2]|0;m=b+128|0;if((p|0)==0){H=u;I=m}else{if((a[m]&1)==0){J=u}else{c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0);J=c[j>>2]|0}c[s>>2]=0;H=J;I=m}a[I]=1;c[s>>2]=G;c[z>>2]=l;F=H}else{F=d}}while(0);d=(c[b+124>>2]|0)+(F<<2)|0;if((d|0)==0){K=F;L=K+1|0;c[j>>2]=L;M=b+4|0;N=+g[M>>2];i=f;return+N}g[d>>2]=+g[h>>2];K=c[j>>2]|0;L=K+1|0;c[j>>2]=L;M=b+4|0;N=+g[M>>2];i=f;return+N}function anH(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;e=b+4|0;f=c[e>>2]|0;g=b+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}do{if((h|0)==0){j=0}else{c[9806]=(c[9806]|0)+1;k=aDx((h<<4|4)+15|0)|0;if((k|0)==0){j=0;break}l=-(k+4|0)&15;c[k+l>>2]=k;j=k+(l+4)|0}}while(0);l=c[e>>2]|0;k=b+12|0;m=0;while(1){if((m|0)>=(l|0)){break}n=j+(m<<4)|0;if((n|0)!=0){o=n;n=(c[k>>2]|0)+(m<<4)|0;c[o>>2]=c[n>>2];c[o+4>>2]=c[n+4>>2];c[o+8>>2]=c[n+8>>2];c[o+12>>2]=c[n+12>>2]}m=m+1|0}m=c[e>>2]|0;l=0;while(1){if((l|0)>=(m|0)){break}l=l+1|0}l=c[k>>2]|0;n=b+16|0;if((l|0)==0){p=m;q=n}else{if((a[n]&1)==0){r=m}else{c[9804]=(c[9804]|0)+1;aDB(c[l-16+12>>2]|0);r=c[e>>2]|0}c[k>>2]=0;p=r;q=n}a[q]=1;c[k>>2]=j;c[g>>2]=h;i=p}else{i=f}}while(0);f=(c[b+12>>2]|0)+(i<<4)|0;if((f|0)==0){s=i;t=s+1|0;c[e>>2]=t;return}i=f;f=d;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];s=c[e>>2]|0;t=s+1|0;c[e>>2]=t;return}function anI(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;e=b+24|0;g[a+4>>2]=+g[e>>2];f=c[b>>2]|0;c[a+8>>2]=f;if(d){d=a+52|0;h=b+8|0;c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2]}else{i=+g[b+8>>2];j=+g[b+12>>2];k=+g[b+16>>2];l=+g[f+20>>2]*i+ +g[f+24>>2]*j+ +g[f+28>>2]*k;m=+g[f+36>>2]*i+ +g[f+40>>2]*j+ +g[f+44>>2]*k;g[a+52>>2]=+g[f+4>>2]*i+ +g[f+8>>2]*j+ +g[f+12>>2]*k;g[a+56>>2]=l;g[a+60>>2]=m;g[a+64>>2]=0.0}m=+g[e>>2];l=1.0-m;g[a+68>>2]=l*+g[a+20>>2]+ +g[a+36>>2]*m;g[a+72>>2]=l*+g[a+24>>2]+m*+g[a+40>>2];g[a+76>>2]=l*+g[a+28>>2]+m*+g[a+44>>2];return+(+g[e>>2])}function anK(a){a=a|0;if((a|0)==0){return}aDB(a);return}function anL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0;d=i;i=i+224|0;e=d|0;f=d+48|0;h=d+96|0;j=d+160|0;k=f;d$(f,a+68|0,a+84|0,a+100|0,a+72|0,a+88|0,a+104|0,a+76|0,a+92|0,a+108|0);l=-0.0- +g[a+116>>2];m=-0.0- +g[a+120>>2];n=-0.0- +g[a+124>>2];o=+g[f>>2]*l+ +g[f+4>>2]*m+ +g[f+8>>2]*n;p=+g[f+16>>2]*l+ +g[f+20>>2]*m+ +g[f+24>>2]*n;q=+g[f+32>>2]*l+ +g[f+36>>2]*m+ +g[f+40>>2]*n;r=j+48|0;s=j|0;do{s=s+16|0;}while((s|0)!=(r|0));r=j;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=j+16|0;r=f+16|0;c[k>>2]=c[r>>2];c[k+4>>2]=c[r+4>>2];c[k+8>>2]=c[r+8>>2];c[k+12>>2]=c[r+12>>2];r=j+32|0;k=f+32|0;c[r>>2]=c[k>>2];c[r+4>>2]=c[k+4>>2];c[r+8>>2]=c[k+8>>2];c[r+12>>2]=c[k+12>>2];k=j+48|0;g[k>>2]=o;r=j+52|0;g[r>>2]=p;f=j+56|0;g[f>>2]=q;g[j+60>>2]=0.0;s=e;anx(e,j|0,a+4|0);q=+g[a+52>>2];p=+g[a+56>>2];o=+g[a+60>>2];n=+g[j>>2]*q+ +g[j+4>>2]*p+ +g[j+8>>2]*o+ +g[k>>2];m=+g[j+16>>2]*q+ +g[j+20>>2]*p+ +g[j+24>>2]*o+ +g[r>>2];l=+g[j+32>>2]*q+ +g[j+36>>2]*p+ +g[j+40>>2]*o+ +g[f>>2];f=h+48|0;j=h|0;do{j=j+16|0;}while((j|0)!=(f|0));f=h;c[f>>2]=c[s>>2];c[f+4>>2]=c[s+4>>2];c[f+8>>2]=c[s+8>>2];c[f+12>>2]=c[s+12>>2];s=h+16|0;j=e+16|0;c[s>>2]=c[j>>2];c[s+4>>2]=c[j+4>>2];c[s+8>>2]=c[j+8>>2];c[s+12>>2]=c[j+12>>2];j=h+32|0;s=e+32|0;c[j>>2]=c[s>>2];c[j+4>>2]=c[s+4>>2];c[j+8>>2]=c[s+8>>2];c[j+12>>2]=c[s+12>>2];g[h+48>>2]=n;g[h+52>>2]=m;g[h+56>>2]=l;g[h+60>>2]=0.0;s=b;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];f=b+16|0;s=h+16|0;c[f>>2]=c[s>>2];c[f+4>>2]=c[s+4>>2];c[f+8>>2]=c[s+8>>2];c[f+12>>2]=c[s+12>>2];s=b+32|0;f=h+32|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];f=b+48|0;b=h+48|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];i=d;return}function anM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0;d=i;i=i+112|0;e=d|0;f=d+48|0;h=a+4|0;j=e;anx(e,b|0,a+68|0);k=+g[a+116>>2];l=+g[a+120>>2];m=+g[a+124>>2];n=+g[b>>2]*k+ +g[b+4>>2]*l+ +g[b+8>>2]*m+ +g[b+48>>2];o=+g[b+16>>2]*k+ +g[b+20>>2]*l+ +g[b+24>>2]*m+ +g[b+52>>2];p=+g[b+32>>2]*k+ +g[b+36>>2]*l+ +g[b+40>>2]*m+ +g[b+56>>2];b=f+48|0;q=f|0;do{q=q+16|0;}while((q|0)!=(b|0));b=f;c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];c[b+12>>2]=c[j+12>>2];j=f+16|0;q=e+16|0;c[j>>2]=c[q>>2];c[j+4>>2]=c[q+4>>2];c[j+8>>2]=c[q+8>>2];c[j+12>>2]=c[q+12>>2];q=f+32|0;j=e+32|0;c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];g[f+48>>2]=n;g[f+52>>2]=o;g[f+56>>2]=p;g[f+60>>2]=0.0;j=h;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];b=a+20|0;j=f+16|0;c[b>>2]=c[j>>2];c[b+4>>2]=c[j+4>>2];c[b+8>>2]=c[j+8>>2];c[b+12>>2]=c[j+12>>2];j=a+36|0;b=f+32|0;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];b=a+52|0;a=f+48|0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];i=d;return}function anN(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,h=0.0,i=0.0,j=0,k=0;d=a+8|0;e=+g[d>>2];if(+P(+e)>.7071067690849304){f=a+4|0;h=+g[f>>2];i=h*h+e*e;e=1.0/+Q(+i);g[b>>2]=0.0;j=b+4|0;g[j>>2]=e*(-0.0- +g[d>>2]);k=b+8|0;g[k>>2]=+g[f>>2]*e;g[c>>2]=i*e;f=a|0;g[c+4>>2]=+g[k>>2]*(-0.0- +g[f>>2]);g[c+8>>2]=+g[f>>2]*+g[j>>2];return}else{j=a|0;e=+g[j>>2];i=+g[a+4>>2];h=e*e+i*i;e=1.0/+Q(+h);a=b|0;g[a>>2]=e*(-0.0-i);i=+g[j>>2]*e;g[b+4>>2]=i;g[b+8>>2]=0.0;g[c>>2]=i*(-0.0- +g[d>>2]);g[c+4>>2]=+g[d>>2]*+g[a>>2];g[c+8>>2]=h*e;return}}function anO(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0;e=d|0;if((a[b+519|0]&1)!=0){c[e>>2]=0;c[d+4>>2]=0;return}c[e>>2]=3;f=d+4|0;c[f>>2]=3;d=c[b+24>>2]|0;h=c[b+28>>2]|0;anP(b,d+4|0,h+4|0,d+256|0,h+256|0);do{if((a[b+518|0]&1)!=0){h=c[e>>2]|0;c[e>>2]=h+1;d=c[f>>2]|0;c[f>>2]=d-1;i=+g[b+448>>2];if(+g[b+436>>2]>=i){break}if(+g[b+440>>2]>=i){break}c[e>>2]=h+2;c[f>>2]=d-2}}while(0);if((a[b+517|0]&1)==0){return}c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1;return}function anP(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0.0,N=0.0,O=0,R=0,U=0,W=0,X=0.0,Z=0.0,_=0.0,$=0,aa=0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0.0,aQ=0.0,aR=0.0,aS=0.0,aT=0.0,aU=0.0,aV=0.0,aW=0.0,aX=0.0,aY=0.0,aZ=0.0,a_=0.0;j=i;i=i+368|0;k=j|0;l=j+48|0;m=j+96|0;n=j+160|0;o=j+224|0;q=j+288|0;r=j+304|0;s=j+320|0;t=j+336|0;u=j+352|0;v=b+496|0;g[v>>2]=0.0;g[b+492>>2]=0.0;w=b+517|0;a[w]=0;x=b+518|0;a[x]=0;do{if((a[b+544|0]&1)!=0){if((a[b+519|0]&1)!=0){break}y=+g[b+548>>2];z=+g[b+552>>2];A=+g[b+556>>2];B=+g[b+560>>2];C=2.0/(y*y+z*z+A*A+B*B);D=y*C;E=z*C;F=A*C;C=B*D;G=B*E;H=B*F;B=y*D;D=y*E;I=y*F;y=z*E;E=z*F;z=A*F;F=1.0-(y+z);A=D-H;J=I+G;K=D+H;H=1.0-(B+z);z=E-C;D=I-G;G=E+C;C=1.0-(B+y);L=l;anx(l,d|0,b+292|0);y=+g[b+340>>2];B=+g[b+344>>2];E=+g[b+348>>2];I=+g[d>>2]*y+ +g[d+4>>2]*B+ +g[d+8>>2]*E+ +g[d+48>>2];M=+g[d+16>>2]*y+ +g[d+20>>2]*B+ +g[d+24>>2]*E+ +g[d+52>>2];N=+g[d+32>>2]*y+ +g[d+36>>2]*B+ +g[d+40>>2]*E+ +g[d+56>>2];O=m+48|0;R=m|0;do{R=R+16|0;}while((R|0)!=(O|0));O=m;c[O>>2]=c[L>>2];c[O+4>>2]=c[L+4>>2];c[O+8>>2]=c[L+8>>2];c[O+12>>2]=c[L+12>>2];O=m+16|0;R=l+16|0;c[O>>2]=c[R>>2];c[O+4>>2]=c[R+4>>2];c[O+8>>2]=c[R+8>>2];c[O+12>>2]=c[R+12>>2];R=m+32|0;O=l+32|0;c[R>>2]=c[O>>2];c[R+4>>2]=c[O+4>>2];c[R+8>>2]=c[O+8>>2];c[R+12>>2]=c[O+12>>2];O=m+48|0;g[O>>2]=I;R=m+52|0;g[R>>2]=M;U=m+56|0;g[U>>2]=N;g[m+60>>2]=0.0;W=k;anx(k,e|0,b+356|0);E=+g[b+404>>2];B=+g[b+408>>2];y=+g[b+412>>2];X=+g[e>>2]*E+ +g[e+4>>2]*B+ +g[e+8>>2]*y+ +g[e+48>>2];Z=+g[e+16>>2]*E+ +g[e+20>>2]*B+ +g[e+24>>2]*y+ +g[e+52>>2];_=+g[e+32>>2]*E+ +g[e+36>>2]*B+ +g[e+40>>2]*y+ +g[e+56>>2];$=n+48|0;aa=n|0;do{aa=aa+16|0;}while((aa|0)!=($|0));$=n;c[$>>2]=c[W>>2];c[$+4>>2]=c[W+4>>2];c[$+8>>2]=c[W+8>>2];c[$+12>>2]=c[W+12>>2];$=n+16|0;aa=k+16|0;c[$>>2]=c[aa>>2];c[$+4>>2]=c[aa+4>>2];c[$+8>>2]=c[aa+8>>2];c[$+12>>2]=c[aa+12>>2];aa=n+32|0;$=k+32|0;c[aa>>2]=c[$>>2];c[aa+4>>2]=c[$+4>>2];c[aa+8>>2]=c[$+8>>2];c[aa+12>>2]=c[$+12>>2];g[n+48>>2]=X;g[n+52>>2]=Z;g[n+56>>2]=_;g[n+60>>2]=0.0;N=+g[n>>2];M=+g[n+4>>2];I=+g[n+8>>2];y=N*F+K*M+D*I;B=N*A+M*H+G*I;E=N*J+z*M+C*I;ab=+g[n+16>>2];ac=+g[n+20>>2];ad=+g[n+24>>2];ae=F*ab+K*ac+D*ad;af=A*ab+H*ac+G*ad;ag=J*ab+z*ac+C*ad;ah=+g[n+32>>2];ai=+g[n+36>>2];aj=+g[n+40>>2];ak=F*ah+K*ai+D*aj;al=A*ah+H*ai+G*aj;am=J*ah+z*ai+C*aj;an=+g[m>>2];ao=+g[m+16>>2];ap=+g[m+32>>2];aq=+g[m+4>>2];ar=+g[m+20>>2];as=+g[m+36>>2];at=+g[m+8>>2];au=+g[m+24>>2];av=+g[m+40>>2];aw=-0.0- +g[O>>2];ax=-0.0- +g[R>>2];ay=-0.0- +g[U>>2];az=an*aw+ao*ax+ap*ay;aA=aq*aw+ar*ax+as*ay;aB=at*aw+au*ax+av*ay;g[o>>2]=y*an+B*aq+E*at;g[o+4>>2]=y*ao+B*ar+E*au;g[o+8>>2]=y*ap+B*as+E*av;g[o+12>>2]=0.0;g[o+16>>2]=ae*an+af*aq+ag*at;g[o+20>>2]=ae*ao+af*ar+ag*au;g[o+24>>2]=ae*ap+af*as+ag*av;g[o+28>>2]=0.0;g[o+32>>2]=ak*an+al*aq+am*at;g[o+36>>2]=ak*ao+al*ar+am*au;g[o+40>>2]=ak*ap+al*as+am*av;g[o+44>>2]=0.0;g[o+48>>2]=N*0.0+M*0.0+I*0.0+X+(E*aB+(y*az+B*aA));g[o+52>>2]=ab*0.0+ac*0.0+ad*0.0+Z+(ag*aB+(ae*az+af*aA));g[o+56>>2]=ah*0.0+ai*0.0+aj*0.0+_+(am*aB+(ak*az+al*aA));g[o+60>>2]=0.0;ec(o|0,q);aA=+g[q>>2];al=+g[q+4>>2];az=+g[q+8>>2];g[b+464>>2]=0.0;ak=1.0/+Q(+(aA*aA+al*al+az*az));g[b+452>>2]=aA*ak;g[b+456>>2]=al*ak;g[b+460>>2]=az*ak;ak=+g[q+12>>2];az=ak<-1.0?-1.0:ak;ak=+V(+(az>1.0?1.0:az))*2.0;g[v>>2]=ak;if(+P(+ak)<1.1920928955078125e-7){i=j;return}a[x]=1;i=j;return}}while(0);ec(d|0,r);q=b+292|0;ec(q,s);ak=+g[r+12>>2];az=+g[s>>2];al=+g[r>>2];aA=+g[s+12>>2];aB=+g[r+4>>2];am=+g[s+8>>2];aj=+g[r+8>>2];ai=+g[s+4>>2];ah=ak*az+al*aA+aB*am-aj*ai;af=az*aj+(aA*aB+ak*ai)-al*am;ae=ak*am+aA*aj+al*ai-az*aB;ag=ak*aA-az*al-aB*ai-am*aj;ec(e|0,t);s=b+356|0;ec(s,u);aj=+g[t+12>>2];am=+g[u>>2];ai=+g[t>>2];aB=+g[u+12>>2];al=+g[t+4>>2];az=+g[u+8>>2];aA=+g[t+8>>2];ak=+g[u+4>>2];ad=aj*am+ai*aB+al*az-aA*ak;ac=am*aA+(aB*al+aj*ak)-ai*az;ab=aj*az+aB*aA+ai*ak-am*al;B=aj*aB-am*ai-al*ak-az*aA;aA=-0.0-ad;az=-0.0-ac;ak=-0.0-ab;al=ah*B+ag*aA+ae*az-af*ak;ai=ah*ak+(af*B+ag*az)-ae*aA;am=af*aA+(ae*B+ag*ak)-ah*az;aB=ag*B-ah*aA-af*az-ae*ak;aj=ai*0.0;y=am*0.0;E=aB+aj-y;I=aB*0.0;M=al*0.0;N=am+I-M;av=I+M-ai;M=-0.0-al;I=M-aj-y;y=-0.0-ai;aj=-0.0-am;as=N*aj+(aB*E+I*M)-av*y;ap=av*M+(aB*N+I*y)-E*aj;au=E*y+(aB*av+I*aj)-N*M;M=1.0/+Q(+(au*au+(as*as+ap*ap)));N=M*as;as=M*ap;ap=M*au;au=as*0.0;M=ap*0.0;aj=M+(au+N);do{if(aj<-.9999998807907104){if(+P(0.0)>.7071067690849304){aC=0.0;aD=p;aE=p;aF=0.0;break}aC=-0.0;aD=1.0;aE=0.0;aF=0.0}else{I=N*0.0;av=+Q(+((aj+1.0)*2.0));y=1.0/av;aC=(M-au)*y;aD=(I-ap)*y;aE=(as-I)*y;aF=av*.5}}while(0);as=1.0/+Q(+(aF*aF+(aE*aE+(aD*aD+aC*aC))));ap=aC*as;aC=aD*as;aD=aE*as;aE=aF*as;as=-0.0-ap;aF=-0.0-aC;au=-0.0-aD;M=am*aF+(al*aE+aB*as)-ai*au;aj=al*au+(ai*aE+aB*aF)-am*as;N=ai*as+(am*aE+aB*au)-al*aF;av=aB*aE-al*as-ai*aF-am*au;au=1.0/+Q(+(av*av+(N*N+(M*M+aj*aj))));am=au*M;M=au*aj;aj=au*N;N=au*av;av=+g[b+436>>2];au=+g[b+448>>2];u=av>2];if(aF1.0?1.0:ai))*2.0;do{if(as>1.1920928955078125e-7){ai=1.0/+Q(+(aD*aD+(ap*ap+aC*aC)));al=ap*ai;aB=aC*ai;y=aD*ai;if(+P(+aB)<=1.1920928955078125e-7){aH=al;aI=aB;aJ=y;aK=av;break}ai=y*y/(aB*aB);aH=al;aI=aB;aJ=y;aK=+Q(+((ai+1.0)/(1.0/(aF*aF)+ai/(av*av))))}else{aH=0.0;aI=0.0;aJ=0.0;aK=0.0}}while(0);_=+g[b+420>>2];Z=aK*_;if(as<=Z){break}a[x]=1;X=as-Z;if(as>2]=aL;g[v>>2]=X;if(+P(+aI)>1.1920928955078125e-7){X=+P(+(aI*(-0.0-aJ)/aI*(aF/av)));if(aJ<-0.0){aM=X}else{aM=-0.0-X}X=aM;Z=1.0/+Q(+(aI*aI+aH*aH+X*X));aN=aH*Z;aO=aI*Z;aP=Z*(-0.0-X)}else{aN=aH;aO=aI;aP=aJ}X=-0.0-aN;Z=-0.0-aO;_=-0.0-aP;C=ac*_+B*X-ab*Z;z=B*Z+ab*X-ad*_;J=B*_+ad*Z-ac*X;X=ad*aN-ac*Z-ab*_;_=z*ak+(X*aA+B*C)-J*az;Z=J*aA+(X*az+B*z)-C*ak;G=C*az+(B*J+X*ak)-z*aA;g[b+452>>2]=_;g[b+456>>2]=Z;g[b+460>>2]=G;g[b+464>>2]=0.0;aDD(b+528|0,0,16);g[b+484>>2]=1.0/(_*(+g[f>>2]*_+ +g[f+16>>2]*Z+ +g[f+32>>2]*G)+Z*(_*+g[f+4>>2]+Z*+g[f+20>>2]+G*+g[f+36>>2])+G*(_*+g[f+8>>2]+Z*+g[f+24>>2]+G*+g[f+40>>2])+(_*(_*+g[h>>2]+Z*+g[h+16>>2]+G*+g[h+32>>2])+Z*(_*+g[h+4>>2]+Z*+g[h+20>>2]+G*+g[h+36>>2])+G*(_*+g[h+8>>2]+Z*+g[h+24>>2]+G*+g[h+40>>2])))}}while(0);L2289:do{if((aG|0)==2138){aN=+g[q>>2];aP=+g[b+308>>2];aO=+g[b+324>>2];aJ=+g[d>>2];aI=+g[d+4>>2];aH=+g[d+8>>2];aM=aN*aJ+aP*aI+aO*aH;aL=+g[d+16>>2];aK=+g[d+20>>2];aD=+g[d+24>>2];aC=aN*aL+aP*aK+aO*aD;ap=+g[d+32>>2];aE=+g[d+36>>2];G=+g[d+40>>2];Z=aN*ap+aP*aE+aO*G;aO=+g[b+296>>2];aP=+g[b+312>>2];aN=+g[b+328>>2];_=aJ*aO+aI*aP+aH*aN;z=aL*aO+aK*aP+aD*aN;X=ap*aO+aE*aP+G*aN;aN=+g[b+300>>2];aP=+g[b+316>>2];aO=+g[b+332>>2];J=aJ*aN+aI*aP+aH*aO;aH=aL*aN+aK*aP+aD*aO;aD=ap*aN+aE*aP+G*aO;aO=+g[s>>2];G=+g[b+372>>2];aP=+g[b+388>>2];aE=aO*+g[e>>2]+G*+g[e+4>>2]+aP*+g[e+8>>2];aN=aO*+g[e+16>>2]+G*+g[e+20>>2]+aP*+g[e+24>>2];ap=aO*+g[e+32>>2]+G*+g[e+36>>2]+aP*+g[e+40>>2];aP=aM*aE+aC*aN+Z*ap;G=_*aE+z*aN+X*ap;aO=J*aE+aH*aN+aD*ap;do{if(av>2];U=+P(+G)<1.1920928955078125e-7;if(aK>2]=-0.0-(Z*aN-aC*ap);g[b+456>>2]=-0.0-(aM*ap-Z*aE);g[b+460>>2]=-0.0-(aC*aE-aM*aN);g[b+464>>2]=0.0;break L2289}if(U){aQ=aP;aR=G;aS=aO;break}a[x]=1;if(aKaK){aI=+S(+aK);aQ=aI;aR=0.0;aS=+T(+aK);break}if(aL>=-0.0-aK){aQ=aP;aR=0.0;aS=aO;break}aL=+S(+aK);aQ=aL;aR=0.0;aS=-0.0- +T(+aK)}else{if(+P(+aO)<1.1920928955078125e-7){aQ=aP;aR=G;aS=aO;break}a[x]=1;if(u){aQ=aP;aR=G;aS=aO;break}aK=+Y(+G,+aP);if(aK>av){aL=+S(+av);aQ=aL;aR=+T(+av);aS=0.0;break}if(aK>=-0.0-av){aQ=aP;aR=G;aS=0.0;break}aK=+S(+av);aQ=aK;aR=-0.0- +T(+av);aS=0.0}}while(0);G=J*aS+(_*aR+aM*aQ);aP=aH*aS+(z*aR+aC*aQ);aO=aD*aS+(X*aR+Z*aQ);aF=1.0/+Q(+(aO*aO+(G*G+aP*aP)));as=aF*G;G=aF*aP;aP=aF*aO;aO=aN*aP-ap*G;aF=ap*as-aE*aP;aP=aE*G-aN*as;g[b+464>>2]=0.0;as=+Q(+(aO*aO+aF*aF+aP*aP));g[v>>2]=as;G=1.0/as;g[b+452>>2]=G*(-0.0-aO);g[b+456>>2]=G*(-0.0-aF);g[b+460>>2]=G*(-0.0-aP)}}while(0);aQ=+g[b+444>>2];v=b+504|0;if(aQ<0.0){g[v>>2]=0.0;i=j;return}aR=N<-1.0?-1.0:N;aS=+V(+(aR>1.0?1.0:aR))*2.0;if(aS>3.1415927410125732){aR=N>1.0?-1.0:-0.0-N;aT=-0.0-am;aU=-0.0-M;aV=-0.0-aj;aW=+V(+(aR>1.0?1.0:aR))*2.0}else{aT=am;aU=M;aV=aj;aW=aS}g[v>>2]=aW;if(aW>1.1920928955078125e-7){aS=1.0/+Q(+(aV*aV+(aU*aU+aT*aT)));aX=aT*aS;aY=aU*aS;aZ=aV*aS}else{aX=aT;aY=aU;aZ=aV}aV=+g[b+420>>2];aU=aQ*aV;if(aW>aU+1.0e-4){a[w]=1;aT=aW-aU;if(aW>2]=a_;g[b+500>>2]=aT;aT=-0.0-aX;a_=-0.0-aY;aU=-0.0-aZ;aQ=ac*aU+B*aT-ab*a_;aV=B*a_+ab*aT-ad*aU;aW=B*aU+ad*a_-ac*aT;aT=ad*aX-ac*a_-ab*aU;aU=aV*ak+(aT*aA+B*aQ)-aW*az;ab=aW*aA+(aT*az+B*aV)-aQ*ak;a_=aQ*az+(B*aW+aT*ak)-aV*aA;g[b+468>>2]=aU;g[b+472>>2]=ab;g[b+476>>2]=a_;g[b+480>>2]=0.0;g[b+488>>2]=1.0/(aU*(+g[f>>2]*aU+ +g[f+16>>2]*ab+ +g[f+32>>2]*a_)+ab*(aU*+g[f+4>>2]+ab*+g[f+20>>2]+a_*+g[f+36>>2])+a_*(aU*+g[f+8>>2]+ab*+g[f+24>>2]+a_*+g[f+40>>2])+(aU*(aU*+g[h>>2]+ab*+g[h+16>>2]+a_*+g[h+32>>2])+ab*(aU*+g[h+4>>2]+ab*+g[h+20>>2]+a_*+g[h+36>>2])+a_*(aU*+g[h+8>>2]+ab*+g[h+24>>2]+a_*+g[h+40>>2])))}if((a[x]&1)==0){i=j;return}a_=-0.0-aX;ab=-0.0-aY;aY=-0.0-aZ;aZ=af*aY+ag*a_-ae*ab;aU=ag*ab+ae*a_-ah*aY;aA=ag*aY+ah*ab-af*a_;a_=-0.0-ah;aV=ah*aX-af*ab-ae*aY;aY=-0.0-af;af=-0.0-ae;g[b+528>>2]=aU*af+(aV*a_+ag*aZ)-aA*aY;g[b+532>>2]=aA*a_+(aV*aY+ag*aU)-aZ*af;g[b+536>>2]=aZ*aY+(ag*aA+aV*af)-aU*a_;g[b+540>>2]=0.0;i=j;return}function anQ(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+24>>2]|0;e=c[a+28>>2]|0;anR(a,b,d+4|0,e+4|0,d+256|0,e+256|0);return} +function anR(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0,W=0,X=0,Y=0.0;k=i;i=i+112|0;l=k|0;m=k+48|0;anP(b,e,f,h,j);j=d+8|0;g[c[j>>2]>>2]=1.0;h=d+24|0;g[(c[j>>2]|0)+((c[h>>2]|0)+1<<2)>>2]=1.0;g[(c[j>>2]|0)+((c[h>>2]<<1)+2<<2)>>2]=1.0;j=e|0;n=+g[b+340>>2];o=e+4|0;p=+g[b+344>>2];q=e+8|0;r=+g[b+348>>2];s=+g[j>>2]*n+ +g[o>>2]*p+ +g[q>>2]*r;t=e+16|0;u=e+20|0;v=e+24|0;w=n*+g[t>>2]+p*+g[u>>2]+r*+g[v>>2];x=e+32|0;y=e+36|0;z=e+40|0;A=n*+g[x>>2]+p*+g[y>>2]+r*+g[z>>2];B=d+12|0;C=c[B>>2]|0;D=c[h>>2]|0;E=D<<1;g[C>>2]=0.0;g[C+4>>2]=A;g[C+8>>2]=-0.0-w;g[C+12>>2]=0.0;g[C+(D<<2)>>2]=-0.0-A;g[C+(D+1<<2)>>2]=0.0;g[C+(D+2<<2)>>2]=s;g[C+(D+3<<2)>>2]=0.0;g[C+(E<<2)>>2]=w;g[C+((E|1)<<2)>>2]=-0.0-s;g[C+(E+2<<2)>>2]=0.0;g[C+(E+3<<2)>>2]=0.0;r=+g[b+404>>2];p=+g[b+408>>2];n=+g[b+412>>2];F=+g[f>>2]*r+ +g[f+4>>2]*p+ +g[f+8>>2]*n;G=r*+g[f+16>>2]+p*+g[f+20>>2]+n*+g[f+24>>2];H=r*+g[f+32>>2]+p*+g[f+36>>2]+n*+g[f+40>>2];E=d+20|0;C=c[E>>2]|0;D=c[h>>2]|0;I=D<<1;g[C>>2]=0.0;g[C+4>>2]=-0.0-H;g[C+8>>2]=G;g[C+12>>2]=0.0;g[C+(D<<2)>>2]=H;g[C+(D+1<<2)>>2]=0.0;g[C+(D+2<<2)>>2]=-0.0-F;g[C+(D+3<<2)>>2]=0.0;g[C+(I<<2)>>2]=-0.0-G;g[C+((I|1)<<2)>>2]=F;g[C+(I+2<<2)>>2]=0.0;g[C+(I+3<<2)>>2]=0.0;I=b+584|0;C=d|0;n=+g[((c[I>>2]&2|0)==0?d+4|0:b+592|0)>>2]*+g[C>>2];D=d+28|0;J=d+36|0;K=d+40|0;L=b+588|0;M=d+32|0;d=e+48|0;g[c[D>>2]>>2]=n*(F+ +g[f+48>>2]-s- +g[d>>2]);g[c[J>>2]>>2]=-3.4028234663852886e+38;g[c[K>>2]>>2]=3.4028234663852886e+38;if((c[I>>2]&1|0)!=0){g[c[M>>2]>>2]=+g[L>>2]}N=e+52|0;g[(c[D>>2]|0)+(c[h>>2]<<2)>>2]=n*(G+ +g[f+52>>2]-w- +g[N>>2]);g[(c[J>>2]|0)+(c[h>>2]<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(c[h>>2]<<2)>>2]=3.4028234663852886e+38;if((c[I>>2]&1|0)!=0){g[(c[M>>2]|0)+(c[h>>2]<<2)>>2]=+g[L>>2]}O=e+56|0;g[(c[D>>2]|0)+(c[h>>2]<<1<<2)>>2]=n*(H+ +g[f+56>>2]-A- +g[O>>2]);g[(c[J>>2]|0)+(c[h>>2]<<1<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(c[h>>2]<<1<<2)>>2]=3.4028234663852886e+38;if((c[I>>2]&1|0)!=0){g[(c[M>>2]|0)+(c[h>>2]<<1<<2)>>2]=+g[L>>2]}L=(c[h>>2]|0)*3|0;L2345:do{if((a[b+518|0]&1)==0){P=L}else{f=c[B>>2]|0;Q=c[E>>2]|0;A=+g[b+448>>2];do{if(+g[b+436>>2]>2]>=A){break}R=l;anx(l,e|0,b+292|0);H=+g[b+340>>2];n=+g[b+344>>2];w=+g[b+348>>2];G=+g[j>>2]*H+ +g[o>>2]*n+ +g[q>>2]*w+ +g[d>>2];s=+g[t>>2]*H+ +g[u>>2]*n+ +g[v>>2]*w+ +g[N>>2];F=+g[x>>2]*H+ +g[y>>2]*n+ +g[z>>2]*w+ +g[O>>2];S=m+48|0;T=m|0;do{T=T+16|0;}while((T|0)!=(S|0));S=m;c[S>>2]=c[R>>2];c[S+4>>2]=c[R+4>>2];c[S+8>>2]=c[R+8>>2];c[S+12>>2]=c[R+12>>2];S=m+16|0;T=l+16|0;c[S>>2]=c[T>>2];c[S+4>>2]=c[T+4>>2];c[S+8>>2]=c[T+8>>2];c[S+12>>2]=c[T+12>>2];T=m+32|0;S=l+32|0;c[T>>2]=c[S>>2];c[T+4>>2]=c[S+4>>2];c[T+8>>2]=c[S+8>>2];c[T+12>>2]=c[S+12>>2];g[m+48>>2]=G;g[m+52>>2]=s;g[m+56>>2]=F;g[m+60>>2]=0.0;w=+g[m+4>>2];n=+g[m+20>>2];H=+g[m+36>>2];p=+g[m+8>>2];r=+g[m+24>>2];U=+g[m+40>>2];S=(c[h>>2]|0)+L|0;g[f+(L<<2)>>2]=w;T=L+1|0;g[f+(T<<2)>>2]=n;V=L+2|0;g[f+(V<<2)>>2]=H;g[f+(S<<2)>>2]=p;W=S+1|0;g[f+(W<<2)>>2]=r;X=S+2|0;g[f+(X<<2)>>2]=U;g[Q+(L<<2)>>2]=-0.0-w;g[Q+(T<<2)>>2]=-0.0-n;g[Q+(V<<2)>>2]=-0.0-H;g[Q+(S<<2)>>2]=-0.0-p;g[Q+(W<<2)>>2]=-0.0-r;g[Q+(X<<2)>>2]=-0.0-U;Y=+g[C>>2]*+g[b+428>>2];X=b+452|0;W=b+456|0;V=b+460|0;g[(c[D>>2]|0)+(L<<2)>>2]=Y*(w*+g[X>>2]+n*+g[W>>2]+H*+g[V>>2]);g[(c[D>>2]|0)+(S<<2)>>2]=Y*(p*+g[X>>2]+r*+g[W>>2]+U*+g[V>>2]);g[(c[J>>2]|0)+(L<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(L<<2)>>2]=3.4028234663852886e+38;g[(c[J>>2]|0)+(S<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(S<<2)>>2]=3.4028234663852886e+38;P=(c[h>>2]|0)+S|0;break L2345}}while(0);A=+g[b+428>>2];U=A*+g[b+452>>2]*A;r=A*A*+g[b+456>>2];p=A*A*+g[b+460>>2];g[f+(L<<2)>>2]=U;S=L+1|0;g[f+(S<<2)>>2]=r;V=L+2|0;g[f+(V<<2)>>2]=p;g[Q+(L<<2)>>2]=-0.0-U;g[Q+(S<<2)>>2]=-0.0-r;g[Q+(V<<2)>>2]=-0.0-p;g[(c[D>>2]|0)+(L<<2)>>2]=+g[C>>2]*+g[b+424>>2]*+g[b+496>>2];if((c[I>>2]&4|0)!=0){g[(c[M>>2]|0)+(L<<2)>>2]=+g[b+596>>2]}g[(c[J>>2]|0)+(L<<2)>>2]=0.0;g[(c[K>>2]|0)+(L<<2)>>2]=3.4028234663852886e+38;P=(c[h>>2]|0)+L|0}}while(0);if((a[b+517|0]&1)==0){i=k;return}p=+g[b+428>>2];r=p*+g[b+468>>2]*p;U=p*p*+g[b+472>>2];A=p*p*+g[b+476>>2];L=c[B>>2]|0;B=c[E>>2]|0;g[L+(P<<2)>>2]=r;E=P+1|0;g[L+(E<<2)>>2]=U;h=P+2|0;g[L+(h<<2)>>2]=A;g[B+(P<<2)>>2]=-0.0-r;g[B+(E<<2)>>2]=-0.0-U;g[B+(h<<2)>>2]=-0.0-A;h=b+500|0;g[(c[D>>2]|0)+(P<<2)>>2]=+g[C>>2]*+g[b+424>>2]*+g[h>>2];if((c[I>>2]&4|0)!=0){g[(c[M>>2]|0)+(P<<2)>>2]=+g[b+596>>2]}if(+g[b+444>>2]<=0.0){g[(c[J>>2]|0)+(P<<2)>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(P<<2)>>2]=3.4028234663852886e+38;i=k;return}b=(c[J>>2]|0)+(P<<2)|0;if(+g[h>>2]>0.0){g[b>>2]=0.0;g[(c[K>>2]|0)+(P<<2)>>2]=3.4028234663852886e+38;i=k;return}else{g[b>>2]=-3.4028234663852886e+38;g[(c[K>>2]|0)+(P<<2)>>2]=0.0;i=k;return}}function anS(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0;d=i;i=i+176|0;e=d|0;f=d+48|0;h=d+96|0;j=d+144|0;k=d+160|0;if((a[b+519|0]&1)==0){i=d;return}g[b+32>>2]=0.0;g[b+512>>2]=0.0;g[b+508>>2]=0.0;aDD(b+568|0,0,16);l=b+24|0;if((a[b+516|0]&1)==0){m=c[l>>2]|0;n=+g[b+340>>2];o=+g[b+344>>2];p=+g[b+348>>2];q=+g[m+56>>2]+(n*+g[m+20>>2]+o*+g[m+24>>2]+p*+g[m+28>>2]);r=b+28|0;s=c[r>>2]|0;t=+g[b+404>>2];u=+g[b+408>>2];v=+g[b+412>>2];w=+g[s+56>>2]+(t*+g[s+20>>2]+u*+g[s+24>>2]+v*+g[s+28>>2]);x=+g[s+60>>2]+(t*+g[s+36>>2]+u*+g[s+40>>2]+v*+g[s+44>>2]);y=w-q;z=+g[m+52>>2]+(+g[m+4>>2]*n+ +g[m+8>>2]*o+ +g[m+12>>2]*p);A=+g[m+60>>2]+(n*+g[m+36>>2]+o*+g[m+40>>2]+p*+g[m+44>>2]);p=+g[s+52>>2]+(+g[s+4>>2]*t+ +g[s+8>>2]*u+ +g[s+12>>2]*v);v=p-z;u=x-A;t=v*v+y*y+u*u;if(t>1.1920928955078125e-7){o=1.0/+Q(+t);t=v*o;v=y*o;y=u*o;g[e>>2]=t;g[e+4>>2]=v;g[e+8>>2]=y;g[e+12>>2]=0.0;B=y;C=v;D=t}else{g[e>>2]=1.0;g[e+4>>2]=0.0;g[e+8>>2]=0.0;g[e+12>>2]=0.0;B=0.0;C=0.0;D=1.0}s=e+16|0;m=e+32|0;if(+P(+B)>.7071067690849304){t=B*B+C*C;v=1.0/+Q(+t);g[s>>2]=0.0;y=v*(-0.0-B);g[e+20>>2]=y;o=v*C;g[e+24>>2]=o;g[m>>2]=t*v;g[e+36>>2]=o*(-0.0-D);g[e+40>>2]=D*y}else{y=D*D+C*C;o=1.0/+Q(+y);v=o*(-0.0-C);g[s>>2]=v;C=o*D;g[e+20>>2]=C;g[e+24>>2]=0.0;g[m>>2]=C*(-0.0-B);g[e+36>>2]=B*v;g[e+40>>2]=y*o}m=f|0;s=f+4|0;E=f+8|0;F=f+12|0;G=f+16|0;H=f+20|0;I=f+24|0;J=f+28|0;K=f+32|0;L=f+36|0;M=f+40|0;N=f+44|0;O=h|0;R=h+4|0;S=h+8|0;T=h+12|0;U=h+16|0;V=h+20|0;W=h+24|0;X=h+28|0;Y=h+32|0;Z=h+36|0;_=h+40|0;$=h+44|0;aa=j|0;ab=j+4|0;ac=j+8|0;ad=j+12|0;ae=k|0;af=k+4|0;ag=k+8|0;ah=k+12|0;ai=0;while(1){aj=b+40+(ai*84|0)|0;if((aj|0)!=0){ak=c[l>>2]|0;g[m>>2]=+g[ak+4>>2];g[s>>2]=+g[ak+20>>2];g[E>>2]=+g[ak+36>>2];g[F>>2]=0.0;g[G>>2]=+g[ak+8>>2];g[H>>2]=+g[ak+24>>2];g[I>>2]=+g[ak+40>>2];g[J>>2]=0.0;g[K>>2]=+g[ak+12>>2];g[L>>2]=+g[ak+28>>2];g[M>>2]=+g[ak+44>>2];g[N>>2]=0.0;al=c[r>>2]|0;g[O>>2]=+g[al+4>>2];g[R>>2]=+g[al+20>>2];g[S>>2]=+g[al+36>>2];g[T>>2]=0.0;g[U>>2]=+g[al+8>>2];g[V>>2]=+g[al+24>>2];g[W>>2]=+g[al+40>>2];g[X>>2]=0.0;g[Y>>2]=+g[al+12>>2];g[Z>>2]=+g[al+28>>2];g[_>>2]=+g[al+44>>2];g[$>>2]=0.0;o=q- +g[ak+56>>2];y=A- +g[ak+60>>2];g[aa>>2]=z- +g[ak+52>>2];g[ab>>2]=o;g[ac>>2]=y;g[ad>>2]=0.0;y=w- +g[al+56>>2];o=x- +g[al+60>>2];g[ae>>2]=p- +g[al+52>>2];g[af>>2]=y;g[ag>>2]=o;g[ah>>2]=0.0;anz(aj,f,h,j,k,e+(ai<<4)|0,ak+388|0,+g[ak+336>>2],al+388|0,+g[al+336>>2])}al=ai+1|0;if((al|0)<3){ai=al}else{am=r;break}}}else{am=b+28|0}r=c[l>>2]|0;l=c[am>>2]|0;anP(b,r+4|0,l+4|0,r+256|0,l+256|0);i=d;return}function anT(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0.0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0,_=0,$=0.0,aa=0,ab=0.0,ac=0,ad=0.0,ae=0,af=0,ag=0,ah=0,ai=0.0,aj=0,ak=0.0,al=0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0.0,aD=0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0.0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0.0,bf=0.0,bg=0,bh=0.0,bi=0.0,bj=0.0,bk=0.0,bl=0.0;h=i;i=i+464|0;j=h|0;k=h+16|0;l=h+24|0;m=h+40|0;n=h+48|0;o=h+112|0;p=h+176|0;q=h+192|0;r=h+208|0;s=h+272|0;t=h+336|0;u=h+400|0;if((a[b+519|0]&1)==0){i=h;return}v=b+24|0;w=c[v>>2]|0;x=b+340|0;y=+g[x>>2];z=b+344|0;A=+g[z>>2];B=b+348|0;C=+g[B>>2];D=+g[w+52>>2];E=D+(+g[w+4>>2]*y+ +g[w+8>>2]*A+ +g[w+12>>2]*C);F=+g[w+56>>2];G=F+(y*+g[w+20>>2]+A*+g[w+24>>2]+C*+g[w+28>>2]);H=+g[w+60>>2];I=H+(y*+g[w+36>>2]+A*+g[w+40>>2]+C*+g[w+44>>2]);J=b+28|0;K=c[J>>2]|0;L=b+404|0;C=+g[L>>2];M=b+408|0;A=+g[M>>2];N=b+412|0;y=+g[N>>2];O=+g[K+52>>2];P=O+(+g[K+4>>2]*C+ +g[K+8>>2]*A+ +g[K+12>>2]*y);R=+g[K+56>>2];S=R+(C*+g[K+20>>2]+A*+g[K+24>>2]+y*+g[K+28>>2]);T=+g[K+60>>2];U=T+(C*+g[K+36>>2]+A*+g[K+40>>2]+y*+g[K+44>>2]);L2399:do{if((a[b+516|0]&1)==0){y=E-D;A=G-F;C=I-H;V=P-O;W=S-R;X=U-T;K=d+504|0;Y=d+508|0;Z=d+512|0;_=d+520|0;$=+g[d+320>>2]+ +g[_>>2];aa=d+524|0;ab=+g[d+324>>2]+ +g[aa>>2];ac=d+528|0;ad=+g[d+328>>2]+ +g[ac>>2];ae=e+504|0;af=e+508|0;ag=e+512|0;ah=e+520|0;ai=+g[e+320>>2]+ +g[ah>>2];aj=e+524|0;ak=+g[e+324>>2]+ +g[aj>>2];al=e+528|0;am=+g[e+328>>2]+ +g[al>>2];an=+g[d+304>>2]+ +g[K>>2]+(C*ab-A*ad)-(+g[e+304>>2]+ +g[ae>>2]+(X*ak-W*am));ao=+g[d+308>>2]+ +g[Y>>2]+(y*ad-C*$)-(+g[e+308>>2]+ +g[af>>2]+(V*am-X*ai));am=+g[d+312>>2]+ +g[Z>>2]+(A*$-y*ab)-(+g[e+312>>2]+ +g[ag>>2]+(W*ai-V*ak));ak=E-P;ai=G-S;ab=I-U;ap=b+32|0;aq=d+336|0;ar=d+536|0;as=d+540|0;at=d+544|0;au=e+336|0;av=e+536|0;aw=e+540|0;ax=e+544|0;ay=0;az=w;while(1){$=1.0/+g[b+40+(ay*84|0)+80>>2];aA=b+40+(ay*84|0)|0;ad=+g[aA>>2];aB=b+40+(ay*84|0)+4|0;aC=+g[aB>>2];aD=b+40+(ay*84|0)+8|0;aE=+g[aD>>2];aF=$*((ak*ad+ai*aC+ab*aE)*-.30000001192092896/f)-$*(an*ad+ao*aC+am*aE);g[ap>>2]=+g[ap>>2]+aF;aE=+g[aD>>2];aC=+g[aB>>2];ad=A*aE-C*aC;$=+g[aA>>2];aG=C*$-y*aE;aH=y*aC-A*$;aI=W*aE-X*aC;aJ=X*$-V*aE;aK=V*aC-W*$;aL=+g[az+336>>2];if(+g[aq>>2]!=0.0){aM=aG*+g[az+292>>2]+ad*+g[az+288>>2]+aH*+g[az+296>>2];aN=aG*+g[az+276>>2]+ad*+g[az+272>>2]+aH*+g[az+280>>2];aO=aG*+g[az+260>>2]+ad*+g[az+256>>2]+aH*+g[az+264>>2];g[K>>2]=aF*$*aL+ +g[K>>2];g[Y>>2]=aF*aC*aL+ +g[Y>>2];g[Z>>2]=aF*aE*aL+ +g[Z>>2];aL=aN*aF*+g[as>>2];aN=aM*aF*+g[at>>2];g[_>>2]=aO*aF*+g[ar>>2]+ +g[_>>2];g[aa>>2]=aL+ +g[aa>>2];g[ac>>2]=aN+ +g[ac>>2]}aP=c[J>>2]|0;aN=+g[aP+336>>2];aL=-0.0-aF;if(+g[au>>2]!=0.0){aF=aJ*+g[aP+292>>2]+aI*+g[aP+288>>2]+aK*+g[aP+296>>2];aO=aJ*+g[aP+276>>2]+aI*+g[aP+272>>2]+aK*+g[aP+280>>2];aM=aJ*+g[aP+260>>2]+aI*+g[aP+256>>2]+aK*+g[aP+264>>2];aK=aN*+g[aB>>2]*aL;aI=aN*+g[aD>>2]*aL;g[ae>>2]=+g[ae>>2]+aN*+g[aA>>2]*aL;g[af>>2]=aK+ +g[af>>2];g[ag>>2]=aI+ +g[ag>>2];aI=aO*+g[aw>>2]*aL;aO=aF*+g[ax>>2]*aL;g[ah>>2]=aM*+g[av>>2]*aL+ +g[ah>>2];g[aj>>2]=aI+ +g[aj>>2];g[al>>2]=aO+ +g[al>>2]}aA=ay+1|0;if((aA|0)>=3){break L2399}ay=aA;az=c[v>>2]|0}}}while(0);do{if((a[b+544|0]&1)==0){U=+g[b+432>>2];w=d+320|0;if(U<=1.1920928955078125e-7){aQ=w;aR=d+520|0;aS=d+324|0;aT=d+524|0;aU=d+328|0;aV=d+528|0;aW=e+320|0;aX=e+520|0;aY=e+324|0;aZ=e+524|0;a_=e+328|0;a$=e+528|0;break}az=d+520|0;I=+g[az>>2];ay=d+324|0;al=d+524|0;S=+g[al>>2];aj=d+328|0;ah=d+528|0;G=+g[ah>>2];av=e+320|0;ax=e+520|0;aw=e+324|0;ag=e+524|0;af=e+328|0;ae=e+528|0;P=+g[av>>2]+ +g[ax>>2]-(+g[w>>2]+I);E=+g[aw>>2]+ +g[ag>>2]-(+g[ay>>2]+S);T=+g[af>>2]+ +g[ae>>2]-(+g[aj>>2]+G);R=P*P+E*E+T*T;if(R<=1.1920928955078125e-7){aQ=w;aR=az;aS=ay;aT=al;aU=aj;aV=ah;aW=av;aX=ax;aY=aw;aZ=ag;a_=af;a$=ae;break}O=1.0/+Q(+R);R=P*O;H=E*O;F=T*O;au=c[v>>2]|0;O=+g[au+256>>2];D=+g[au+272>>2];W=+g[au+288>>2];V=+g[au+260>>2];X=+g[au+276>>2];A=+g[au+292>>2];y=+g[au+264>>2];C=+g[au+280>>2];am=+g[au+296>>2];au=c[J>>2]|0;ao=U*(1.0/(R*(R*O+H*D+F*W)+H*(R*V+H*X+F*A)+F*(R*y+H*C+F*am)+(R*(R*+g[au+256>>2]+H*+g[au+272>>2]+F*+g[au+288>>2])+H*(R*+g[au+260>>2]+H*+g[au+276>>2]+F*+g[au+292>>2])+F*(R*+g[au+264>>2]+H*+g[au+280>>2]+F*+g[au+296>>2]))));F=P*ao;P=E*ao;E=T*ao;ao=+Q(+(E*E+(F*F+P*P)));T=1.0/ao;H=T*F;F=T*P;P=T*E;if(+g[d+336>>2]!=0.0){E=ao*0.0;ac=d+504|0;g[ac>>2]=E+ +g[ac>>2];ac=d+508|0;g[ac>>2]=E+ +g[ac>>2];ac=d+512|0;g[ac>>2]=E+ +g[ac>>2];E=(F*X+H*D+P*C)*ao*+g[d+540>>2];C=(F*A+H*W+P*am)*ao*+g[d+544>>2];g[az>>2]=(F*V+H*O+P*y)*ao*+g[d+536>>2]+I;g[al>>2]=E+S;g[ah>>2]=C+G;a0=c[J>>2]|0}else{a0=au}G=-0.0-ao;if(+g[e+336>>2]==0.0){aQ=w;aR=az;aS=ay;aT=al;aU=aj;aV=ah;aW=av;aX=ax;aY=aw;aZ=ag;a_=af;a$=ae;break}C=F*+g[a0+292>>2]+H*+g[a0+288>>2]+P*+g[a0+296>>2];S=F*+g[a0+276>>2]+H*+g[a0+272>>2]+P*+g[a0+280>>2];E=F*+g[a0+260>>2]+H*+g[a0+256>>2]+P*+g[a0+264>>2];P=ao*-0.0;au=e+504|0;g[au>>2]=P+ +g[au>>2];au=e+508|0;g[au>>2]=P+ +g[au>>2];au=e+512|0;g[au>>2]=P+ +g[au>>2];P=S*+g[e+540>>2]*G;S=C*+g[e+544>>2]*G;g[ax>>2]=E*+g[e+536>>2]*G+ +g[ax>>2];g[ag>>2]=P+ +g[ag>>2];g[ae>>2]=S+ +g[ae>>2];aQ=w;aR=az;aS=ay;aT=al;aU=aj;aV=ah;aW=av;aX=ax;aY=aw;aZ=ag;a_=af;a$=ae}else{ae=c[v>>2]|0;af=n;ag=ae+4|0;c[af>>2]=c[ag>>2];c[af+4>>2]=c[ag+4>>2];c[af+8>>2]=c[ag+8>>2];c[af+12>>2]=c[ag+12>>2];ag=n+16|0;af=ae+20|0;c[ag>>2]=c[af>>2];c[ag+4>>2]=c[af+4>>2];c[ag+8>>2]=c[af+8>>2];c[ag+12>>2]=c[af+12>>2];af=n+32|0;ag=ae+36|0;c[af>>2]=c[ag>>2];c[af+4>>2]=c[ag+4>>2];c[af+8>>2]=c[ag+8>>2];c[af+12>>2]=c[ag+12>>2];ag=n+48|0;af=ae+52|0;c[ag>>2]=c[af>>2];c[ag+4>>2]=c[af+4>>2];c[ag+8>>2]=c[af+8>>2];c[ag+12>>2]=c[af+12>>2];af=c[J>>2]|0;ag=o;ae=af+4|0;c[ag>>2]=c[ae>>2];c[ag+4>>2]=c[ae+4>>2];c[ag+8>>2]=c[ae+8>>2];c[ag+12>>2]=c[ae+12>>2];ae=o+16|0;ag=af+20|0;c[ae>>2]=c[ag>>2];c[ae+4>>2]=c[ag+4>>2];c[ae+8>>2]=c[ag+8>>2];c[ae+12>>2]=c[ag+12>>2];ag=o+32|0;ae=af+36|0;c[ag>>2]=c[ae>>2];c[ag+4>>2]=c[ae+4>>2];c[ag+8>>2]=c[ae+8>>2];c[ag+12>>2]=c[ae+12>>2];ae=o+48|0;ag=af+52|0;c[ae>>2]=c[ag>>2];c[ae+4>>2]=c[ag+4>>2];c[ae+8>>2]=c[ag+8>>2];c[ae+12>>2]=c[ag+12>>2];ag=d+320|0;ae=d+520|0;af=d+324|0;aw=d+524|0;S=+g[af>>2]+ +g[aw>>2];ax=d+328|0;av=d+528|0;P=+g[ax>>2]+ +g[av>>2];ah=p|0;g[ah>>2]=+g[ag>>2]+ +g[ae>>2];aj=p+4|0;g[aj>>2]=S;al=p+8|0;g[al>>2]=P;g[p+12>>2]=0.0;ay=e+320|0;az=e+520|0;w=e+324|0;au=e+524|0;P=+g[w>>2]+ +g[au>>2];ac=e+328|0;aa=e+528|0;S=+g[ac>>2]+ +g[aa>>2];_=q|0;g[_>>2]=+g[ay>>2]+ +g[az>>2];ar=q+4|0;g[ar>>2]=P;at=q+8|0;g[at>>2]=S;g[q+12>>2]=0.0;as=r|0;g[as>>2]=1.0;Z=r+4|0;Y=r+20|0;aDD(Z|0,0,16);g[Y>>2]=1.0;K=r+24|0;aq=r+40|0;aDD(K|0,0,16);g[aq>>2]=1.0;aDD(r+44|0,0,20);anY(n,0.0,0.0,0.0,p,f,r);ap=s|0;g[ap>>2]=1.0;aA=s+4|0;aD=s+20|0;aDD(aA|0,0,16);g[aD>>2]=1.0;aB=s+24|0;aP=s+40|0;aDD(aB|0,0,16);g[aP>>2]=1.0;aDD(s+44|0,0,20);anY(o,0.0,0.0,0.0,q,f,s);S=+g[b+548>>2];P=+g[b+552>>2];G=+g[b+556>>2];E=+g[b+560>>2];C=2.0/(S*S+P*P+G*G+E*E);ao=S*C;H=P*C;F=G*C;C=E*ao;I=E*H;y=E*F;E=S*ao;ao=S*H;O=S*F;S=P*H;H=P*F;P=G*F;F=1.0-(S+P);G=ao-y;V=O+I;am=ao+y;y=1.0-(E+P);P=H-C;ao=O-I;I=H+C;C=1.0-(E+S);S=+g[b+356>>2];E=+g[b+360>>2];H=+g[b+364>>2];O=ao*H+(E*am+S*F);W=H*I+(S*G+E*y);A=S*V+E*P+H*C;D=+g[b+372>>2];X=+g[b+376>>2];T=+g[b+380>>2];R=F*D+am*X+ao*T;U=G*D+y*X+I*T;an=V*D+P*X+C*T;ab=+g[b+388>>2];ai=+g[b+392>>2];ak=+g[b+396>>2];aO=F*ab+am*ai+ao*ak;ao=G*ab+y*ai+I*ak;I=V*ab+P*ai+C*ak;C=+g[b+292>>2];P=+g[b+308>>2];V=+g[b+324>>2];y=+g[b+296>>2];G=+g[b+312>>2];am=+g[b+328>>2];F=+g[b+300>>2];aI=+g[b+316>>2];aL=+g[b+332>>2];aM=-0.0- +g[x>>2];aF=-0.0- +g[z>>2];aK=-0.0- +g[B>>2];aN=C*aM+P*aF+V*aK;aJ=y*aM+G*aF+am*aK;aE=F*aM+aI*aF+aL*aK;aK=O*C+W*y+A*F;aF=O*P+W*G+A*aI;aM=O*V+W*am+A*aL;aC=R*C+U*y+an*F;$=R*P+U*G+an*aI;aH=R*V+U*am+an*aL;ad=aO*C+ao*y+I*F;F=aO*P+ao*G+I*aI;aI=aO*V+ao*am+I*aL;aL=S*0.0+E*0.0+H*0.0+ +g[L>>2]+(A*aE+(O*aN+W*aJ));W=D*0.0+X*0.0+T*0.0+ +g[M>>2]+(an*aE+(R*aN+U*aJ));U=ab*0.0+ai*0.0+ak*0.0+ +g[N>>2]+(I*aE+(aO*aN+ao*aJ));aJ=+g[ap>>2];ao=+g[aA>>2];aN=+g[s+8>>2];aO=+g[s+16>>2];aE=+g[aD>>2];I=+g[aB>>2];ak=+g[s+32>>2];ai=+g[s+36>>2];ab=+g[aP>>2];R=+g[s+48>>2]+(aN*U+(aJ*aL+ao*W));an=I*U+(aO*aL+aE*W)+ +g[s+52>>2];T=aL*ak+W*ai+U*ab+ +g[s+56>>2];g[t>>2]=aK*aJ+aC*ao+ad*aN;g[t+4>>2]=aF*aJ+$*ao+F*aN;g[t+8>>2]=aM*aJ+aH*ao+aI*aN;g[t+12>>2]=0.0;g[t+16>>2]=aK*aO+aC*aE+ad*I;g[t+20>>2]=aF*aO+$*aE+F*I;g[t+24>>2]=aM*aO+aH*aE+aI*I;g[t+28>>2]=0.0;g[t+32>>2]=aK*ak+aC*ai+ad*ab;g[t+36>>2]=aF*ak+$*ai+F*ab;g[t+40>>2]=aM*ak+aH*ai+aI*ab;g[t+44>>2]=0.0;g[t+48>>2]=R;g[t+52>>2]=an;g[t+56>>2]=T;g[t+60>>2]=0.0;T=-0.0-aL;aL=-0.0-W;W=-0.0-U;U=ad*W+(aK*T+aC*aL);an=F*W+(aF*T+$*aL);R=aI*W+(aM*T+aH*aL);aL=+g[as>>2];T=+g[Z>>2];W=+g[r+8>>2];ab=+g[r+16>>2];ai=+g[Y>>2];ak=+g[K>>2];I=+g[r+32>>2];aE=+g[r+36>>2];aO=+g[aq>>2];aN=U*aL+an*T+R*W+ +g[r+48>>2];ao=U*ab+an*ai+R*ak+ +g[r+52>>2];aJ=U*I+an*aE+R*aO+ +g[r+56>>2];g[u>>2]=aK*aL+aF*T+aM*W;g[u+4>>2]=aC*aL+$*T+aH*W;g[u+8>>2]=ad*aL+F*T+aI*W;g[u+12>>2]=0.0;g[u+16>>2]=aK*ab+aF*ai+aM*ak;g[u+20>>2]=aC*ab+$*ai+aH*ak;g[u+24>>2]=ad*ab+F*ai+aI*ak;g[u+28>>2]=0.0;g[u+32>>2]=aK*I+aF*aE+aM*aO;g[u+36>>2]=aC*I+$*aE+aH*aO;g[u+40>>2]=ad*I+F*aE+aI*aO;g[u+44>>2]=0.0;g[u+48>>2]=aN;g[u+52>>2]=ao;g[u+56>>2]=aJ;g[u+60>>2]=0.0;aJ=1.0/f;an6(n,t,j,k);ao=+g[k>>2];aN=aJ*+g[j>>2]*ao;aO=aJ*ao*+g[j+4>>2];aI=aJ*ao*+g[j+8>>2];an6(o,u,l,m);ao=+g[m>>2];aE=aN- +g[ah>>2];aN=aO- +g[aj>>2];aO=aI- +g[al>>2];aI=aJ*+g[l>>2]*ao- +g[_>>2];F=aJ*ao*+g[l+4>>2]- +g[ar>>2];I=aJ*ao*+g[l+8>>2]- +g[at>>2];ao=aE*aE+aN*aN+aO*aO;if(ao>1.1920928955078125e-7){aJ=1.0/+Q(+ao);ao=aE*aJ;ad=aN*aJ;aH=aO*aJ;at=c[v>>2]|0;a1=ao*(ao*+g[at+256>>2]+ad*+g[at+272>>2]+aH*+g[at+288>>2])+ad*(ao*+g[at+260>>2]+ad*+g[at+276>>2]+aH*+g[at+292>>2])+aH*(ao*+g[at+264>>2]+ad*+g[at+280>>2]+aH*+g[at+296>>2]);a2=ao;a3=ad;a4=aH}else{a1=0.0;a2=0.0;a3=0.0;a4=0.0}aH=aI*aI+F*F+I*I;if(aH>1.1920928955078125e-7){ad=1.0/+Q(+aH);aH=aI*ad;ao=F*ad;aJ=I*ad;at=c[J>>2]|0;a5=aH*(aH*+g[at+256>>2]+ao*+g[at+272>>2]+aJ*+g[at+288>>2])+ao*(aH*+g[at+260>>2]+ao*+g[at+276>>2]+aJ*+g[at+292>>2])+aJ*(aH*+g[at+264>>2]+ao*+g[at+280>>2]+aJ*+g[at+296>>2]);a6=aH;a7=ao;a8=aJ}else{a5=0.0;a6=0.0;a7=0.0;a8=0.0}aJ=a2*a1+a6*a5;ao=a3*a1+a7*a5;aH=a4*a1+a8*a5;ad=aH*aH+(aJ*aJ+ao*ao);if(ad<=1.1920928955078125e-7){aQ=ag;aR=ae;aS=af;aT=aw;aU=ax;aV=av;aW=ay;aX=az;aY=w;aZ=au;a_=ac;a$=aa;break}$=1.0/+Q(+ad);ad=aJ*$;aJ=ao*$;ao=aH*$;at=c[v>>2]|0;ar=at+256|0;_=at+272|0;al=at+288|0;aj=at+260|0;ah=at+276|0;aq=at+292|0;K=at+264|0;Y=at+280|0;Z=at+296|0;$=ad*(ad*+g[ar>>2]+aJ*+g[_>>2]+ao*+g[al>>2])+aJ*(ad*+g[aj>>2]+aJ*+g[ah>>2]+ao*+g[aq>>2])+ao*(ad*+g[K>>2]+aJ*+g[Y>>2]+ao*+g[Z>>2]);at=c[J>>2]|0;aH=ad*(ad*+g[at+256>>2]+aJ*+g[at+272>>2]+ao*+g[at+288>>2])+aJ*(ad*+g[at+260>>2]+aJ*+g[at+276>>2]+ao*+g[at+292>>2])+ao*(ad*+g[at+264>>2]+aJ*+g[at+280>>2]+ao*+g[at+296>>2]);ao=$+aH;aJ=1.0/(ao*ao);ao=aJ*(aE*$-aI*aH);aI=aJ*(aN*$-F*aH);F=aJ*(aO*$-I*aH);aH=+g[b+564>>2];if(aH<0.0){a9=ao;ba=aI;bb=F}else{if((a[b+545|0]&1)==0){bc=aH}else{bc=aH/$}as=b+568|0;$=+g[as>>2];aH=ao+$;aP=b+572|0;I=+g[aP>>2];aO=aI+I;aB=b+576|0;aJ=+g[aB>>2];aN=F+aJ;aE=+Q(+(aH*aH+aO*aO+aN*aN));if(aE>bc){ad=1.0/aE;bd=bc*aH*ad-$;be=bc*aO*ad-I;bf=bc*aN*ad-aJ}else{bd=ao;be=aI;bf=F}g[as>>2]=bd+$;g[aP>>2]=be+I;g[aB>>2]=bf+aJ;a9=bd;ba=be;bb=bf}aJ=+Q(+(bb*bb+(ba*ba+a9*a9)));I=1.0/aJ;$=a9*I;F=ba*I;aI=bb*I;if(+g[d+336>>2]!=0.0){I=F*+g[aq>>2]+$*+g[al>>2]+aI*+g[Z>>2];ao=F*+g[ah>>2]+$*+g[_>>2]+aI*+g[Y>>2];ad=F*+g[aj>>2]+$*+g[ar>>2]+aI*+g[K>>2];aN=aJ*0.0;K=d+504|0;g[K>>2]=aN+ +g[K>>2];K=d+508|0;g[K>>2]=aN+ +g[K>>2];K=d+512|0;g[K>>2]=aN+ +g[K>>2];aN=ao*aJ*+g[d+540>>2];ao=I*aJ*+g[d+544>>2];g[ae>>2]=ad*aJ*+g[d+536>>2]+ +g[ae>>2];g[aw>>2]=aN+ +g[aw>>2];g[av>>2]=ao+ +g[av>>2];bg=c[J>>2]|0}else{bg=at}ao=-0.0-aJ;if(+g[e+336>>2]==0.0){aQ=ag;aR=ae;aS=af;aT=aw;aU=ax;aV=av;aW=ay;aX=az;aY=w;aZ=au;a_=ac;a$=aa;break}aN=F*+g[bg+292>>2]+$*+g[bg+288>>2]+aI*+g[bg+296>>2];ad=F*+g[bg+276>>2]+$*+g[bg+272>>2]+aI*+g[bg+280>>2];I=F*+g[bg+260>>2]+$*+g[bg+256>>2]+aI*+g[bg+264>>2];aI=aJ*-0.0;at=e+504|0;g[at>>2]=aI+ +g[at>>2];at=e+508|0;g[at>>2]=aI+ +g[at>>2];at=e+512|0;g[at>>2]=aI+ +g[at>>2];aI=ad*+g[e+540>>2]*ao;ad=aN*+g[e+544>>2]*ao;g[az>>2]=I*+g[e+536>>2]*ao+ +g[az>>2];g[au>>2]=aI+ +g[au>>2];g[aa>>2]=ad+ +g[aa>>2];aQ=ag;aR=ae;aS=af;aT=aw;aU=ax;aV=av;aW=ay;aX=az;aY=w;aZ=au;a_=ac;a$=aa}}while(0);bb=+g[aQ>>2]+ +g[aR>>2];ba=+g[aS>>2]+ +g[aT>>2];a9=+g[aU>>2]+ +g[aV>>2];bf=+g[aW>>2]+ +g[aX>>2];be=+g[aY>>2]+ +g[aZ>>2];bd=+g[a_>>2]+ +g[a$>>2];do{if((a[b+518|0]&1)!=0){bc=+g[b+520>>2];a5=bc*+g[b+496>>2]*+g[b+424>>2]/f;a8=+g[b+452>>2];a1=+g[b+456>>2];a4=+g[b+460>>2];a7=(bf-bb)*a8+(be-ba)*a1+(bd-a9)*a4;if(a7>0.0){bh=a5+bc*a7*+g[b+428>>2]}else{bh=a5}a_=b+508|0;a5=+g[a_>>2];a7=a5+bh*+g[b+484>>2];bc=a7>0.0?a7:0.0;g[a_>>2]=bc;a7=bc-a5;a5=a8*a7;a8=a1*a7;a1=a4*a7;a7=+g[b+528>>2];a4=+g[b+532>>2];bc=+g[b+536>>2];a3=a7*a5+a8*a4+a1*bc;a6=a5-a7*a3;a7=a8-a4*a3;a4=a1-bc*a3;a3=+Q(+(a4*a4+(a6*a6+a7*a7)));bc=1.0/a3;a1=bc*a6;a6=bc*a7;a7=bc*a4;a_=c[v>>2]|0;if(+g[d+336>>2]!=0.0){a4=a6*+g[a_+292>>2]+a1*+g[a_+288>>2]+a7*+g[a_+296>>2];bc=a6*+g[a_+276>>2]+a1*+g[a_+272>>2]+a7*+g[a_+280>>2];a8=a6*+g[a_+260>>2]+a1*+g[a_+256>>2]+a7*+g[a_+264>>2];a5=a3*0.0;a_=d+504|0;g[a_>>2]=a5+ +g[a_>>2];a_=d+508|0;g[a_>>2]=a5+ +g[a_>>2];a_=d+512|0;g[a_>>2]=a5+ +g[a_>>2];a5=bc*a3*+g[d+540>>2];bc=a4*a3*+g[d+544>>2];g[aR>>2]=a8*a3*+g[d+536>>2]+ +g[aR>>2];g[aT>>2]=a5+ +g[aT>>2];g[aV>>2]=bc+ +g[aV>>2]}a_=c[J>>2]|0;bc=-0.0-a3;if(+g[e+336>>2]==0.0){break}a5=a6*+g[a_+292>>2]+a1*+g[a_+288>>2]+a7*+g[a_+296>>2];a8=a6*+g[a_+276>>2]+a1*+g[a_+272>>2]+a7*+g[a_+280>>2];a4=a6*+g[a_+260>>2]+a1*+g[a_+256>>2]+a7*+g[a_+264>>2];a7=a3*-0.0;a_=e+504|0;g[a_>>2]=a7+ +g[a_>>2];a_=e+508|0;g[a_>>2]=a7+ +g[a_>>2];a_=e+512|0;g[a_>>2]=a7+ +g[a_>>2];a7=a8*+g[e+540>>2]*bc;a8=a5*+g[e+544>>2]*bc;g[aX>>2]=a4*+g[e+536>>2]*bc+ +g[aX>>2];g[aZ>>2]=a7+ +g[aZ>>2];g[a$>>2]=a8+ +g[a$>>2]}}while(0);if((a[b+517|0]&1)==0){i=h;return}bh=+g[b+524>>2];a8=bh*+g[b+500>>2]*+g[b+424>>2]/f;a_=b+468|0;f=+g[a_>>2];aY=b+472|0;a7=+g[aY>>2];aW=b+476|0;bc=+g[aW>>2];a4=(bf-bb)*f+(be-ba)*a7+(bd-a9)*bc;if(a4>0.0){bi=a8+bh*a4*+g[b+428>>2]}else{bi=a8}aU=b+512|0;a8=+g[aU>>2];a4=a8+bi*+g[b+488>>2];bi=a4>0.0?a4:0.0;g[aU>>2]=bi;a4=bi-a8;aU=c[v>>2]|0;if(+g[d+336>>2]!=0.0){a8=a7*+g[aU+292>>2]+f*+g[aU+288>>2]+bc*+g[aU+296>>2];bi=a7*+g[aU+276>>2]+f*+g[aU+272>>2]+bc*+g[aU+280>>2];bh=a7*+g[aU+260>>2]+f*+g[aU+256>>2]+bc*+g[aU+264>>2];a9=a4*0.0;aU=d+504|0;g[aU>>2]=a9+ +g[aU>>2];aU=d+508|0;g[aU>>2]=a9+ +g[aU>>2];aU=d+512|0;g[aU>>2]=a9+ +g[aU>>2];a9=bi*a4*+g[d+540>>2];bi=a8*a4*+g[d+544>>2];g[aR>>2]=bh*a4*+g[d+536>>2]+ +g[aR>>2];g[aT>>2]=a9+ +g[aT>>2];g[aV>>2]=bi+ +g[aV>>2];bj=+g[a_>>2];bk=+g[aY>>2];bl=+g[aW>>2]}else{bj=f;bk=a7;bl=bc}aW=c[J>>2]|0;bc=-0.0-a4;if(+g[e+336>>2]==0.0){i=h;return}a7=bk*+g[aW+292>>2]+bj*+g[aW+288>>2]+bl*+g[aW+296>>2];f=bk*+g[aW+276>>2]+bj*+g[aW+272>>2]+bl*+g[aW+280>>2];bi=bk*+g[aW+260>>2]+bj*+g[aW+256>>2]+bl*+g[aW+264>>2];bl=a4*-0.0;aW=e+504|0;g[aW>>2]=bl+ +g[aW>>2];aW=e+508|0;g[aW>>2]=bl+ +g[aW>>2];aW=e+512|0;g[aW>>2]=bl+ +g[aW>>2];bl=f*+g[e+540>>2]*bc;f=a7*+g[e+544>>2]*bc;g[aX>>2]=bi*+g[e+536>>2]*bc+ +g[aX>>2];g[aZ>>2]=bl+ +g[aZ>>2];g[a$>>2]=f+ +g[a$>>2];i=h;return}function anU(a){a=a|0;return}function anV(a){a=a|0;return 204}function anW(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0;if((b|0)==1|(b|0)==2){if(e>>>0<3){g[a+592>>2]=d;f=a+584|0;c[f>>2]=c[f>>2]|2;return}else{g[a+424>>2]=d;return}}else if((b|0)==3|(b|0)==4){if(e>>>0<3){g[a+588>>2]=d;e=a+584|0;c[e>>2]=c[e>>2]|1;return}else{g[a+596>>2]=d;e=a+584|0;c[e>>2]=c[e>>2]|4;return}}else{return}}function anX(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;do{if((b|0)==1|(b|0)==2){if(c>>>0<3){d=+g[a+592>>2];break}if((c-3|0)>>>0>=3){d=0.0;break}d=+g[a+424>>2]}else if((b|0)==3|(b|0)==4){if(c>>>0<3){d=+g[a+588>>2];break}if((c-3|0)>>>0>=3){d=0.0;break}d=+g[a+596>>2]}else{d=0.0}}while(0);return+d}function anY(a,b,c,d,e,f,h){a=a|0;b=+b;c=+c;d=+d;e=e|0;f=+f;h=h|0;var j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;j=i;i=i+16|0;k=j|0;l=c*f+ +g[a+52>>2];c=d*f+ +g[a+56>>2];g[h+48>>2]=b*f+ +g[a+48>>2];g[h+52>>2]=l;g[h+56>>2]=c;g[h+60>>2]=0.0;c=+g[e>>2];l=+g[e+4>>2];b=+g[e+8>>2];d=+Q(+(c*c+l*l+b*b));if(d*f>.7853981852531433){m=.7853981852531433/f}else{m=d}if(m<.0010000000474974513){n=f*.5-m*f*f*f*.02083333395421505*m}else{n=+T(+(m*.5*f))/m}d=n*c;c=n*l;l=n*b;b=+S(+(m*f*.5));ec(a|0,k);f=+g[k>>2];m=+g[k+12>>2];n=+g[k+8>>2];o=+g[k+4>>2];p=b*f+d*m+c*n-l*o;q=l*f+(c*m+b*o)-d*n;r=l*m+b*n+d*o-c*f;s=b*m-d*f-c*o-l*n;n=1.0/+Q(+(s*s+(r*r+(p*p+q*q))));l=p*n;p=n*q;q=n*r;r=n*s;s=2.0/(r*r+(q*q+(l*l+p*p)));n=l*s;o=s*p;c=s*q;s=r*n;f=r*o;d=r*c;r=l*n;n=l*o;m=l*c;l=p*o;o=p*c;p=q*c;g[h>>2]=1.0-(p+l);g[h+4>>2]=n-d;g[h+8>>2]=m+f;g[h+12>>2]=0.0;g[h+16>>2]=d+n;g[h+20>>2]=1.0-(r+p);g[h+24>>2]=o-s;g[h+28>>2]=0.0;g[h+32>>2]=m-f;g[h+36>>2]=s+o;g[h+40>>2]=1.0-(r+l);g[h+44>>2]=0.0;i=j;return}function anZ(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;e=+S(+c);f=+T(+c);c=+g[b+436>>2];if(+P(+e)>1.1920928955078125e-7){h=f*f;i=e*e;j=h/i;k=+g[b+440>>2];l=+Q(+((j+1.0)/(1.0/(k*k)+j/(c*c))));m=i;n=h}else{l=c;m=e*e;n=f*f}c=+Q(+(m+0.0+n));n=l*.5;l=+T(+n)/c;c=l*0.0;m=e*l;e=l*(-0.0-f);f=+S(+n);n=m*0.0;l=e*0.0;h=f*d+n-l;i=f*0.0;j=c*0.0;k=e*d+i-j;o=i+j-m*d;j=-0.0-c;c=d*j-n-l;l=-0.0-m;m=-0.0-e;g[a>>2]=k*m+(f*h+c*j)-o*l;g[a+4>>2]=o*j+(f*k+c*l)-h*m;g[a+8>>2]=h*l+(f*o+c*m)-k*j;g[a+12>>2]=0.0;return}function an_(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,R=0.0,U=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0;d=a+548|0;e=d;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+560|0;h=+g[f>>2];e=a+552|0;i=+g[e>>2];j=i*0.0;b=a+556|0;k=+g[b>>2];l=k*0.0;m=h+j-l;n=h*0.0;o=+g[d>>2];q=o*0.0;r=k+n-q;s=n+q-i;q=-0.0-o;n=q-j-l;l=-0.0-i;j=-0.0-k;t=r*j+(h*m+n*q)-s*l;u=s*q+(h*r+n*l)-m*j;v=m*l+(h*s+n*j)-r*q;q=u*0.0;r=v*0.0;j=r+(q+t);do{if(j<-.9999998807907104){if(+P(0.0)>.7071067690849304){w=0.0;x=p;y=p;z=0.0;break}w=-0.0;x=1.0;y=0.0;z=0.0}else{n=t*0.0;s=+Q(+((j+1.0)*2.0));l=1.0/s;w=(r-q)*l;x=(n-v)*l;y=(u-n)*l;z=s*.5}}while(0);u=1.0/+Q(+(z*z+(y*y+(x*x+w*w))));v=w*u;w=x*u;x=y*u;y=z*u;u=-0.0-v;z=-0.0-w;q=-0.0-x;r=y*o+h*u+k*z-i*q;j=o*q+(h*z+y*i)-k*u;t=h*q+y*k+i*u-o*z;s=y*h-o*u-i*z-k*q;q=1.0/+Q(+(s*s+(t*t+(r*r+j*j))));k=r*q;r=q*j;j=q*t;t=q*s;s=+g[a+436>>2];do{if(s<.05000000074505806){A=v;B=w;C=x;D=y}else{q=+g[a+440>>2];if(q<.05000000074505806){A=v;B=w;C=x;D=y;break}z=y<-1.0?-1.0:y;i=+V(+(z>1.0?1.0:z))*2.0;do{if(i>1.1920928955078125e-7){z=1.0/+Q(+(x*x+(v*v+w*w)));u=v*z;o=w*z;h=x*z;if(+P(+o)<=1.1920928955078125e-7){E=u;F=o;G=h;H=s;break}z=h*h/(o*o);E=u;F=o;G=h;H=+Q(+((z+1.0)/(1.0/(q*q)+z/(s*s))))}else{E=0.0;F=0.0;G=0.0;H=0.0}}while(0);if(+P(+i)<=1.1920928955078125e-7){A=v;B=w;C=x;D=y;break}do{if(i>H){I=H}else{q=-0.0-H;if(i>=q){I=i;break}I=q}}while(0);i=+Q(+(G*G+(F*F+E*E)));q=I*.5;z=+T(+q)/i;A=E*z;B=F*z;C=G*z;D=+S(+q)}}while(0);G=+g[a+444>>2];do{if(G<.05000000074505806){J=k;K=r;L=j;M=t}else{F=t<-1.0?-1.0:t;E=+V(+(F>1.0?1.0:F))*2.0;if(E>3.1415927410125732){F=t>1.0?-1.0:-0.0-t;N=-0.0-k;O=-0.0-r;R=-0.0-j;U=+V(+(F>1.0?1.0:F))*2.0}else{N=k;O=r;R=j;U=E}if(U>1.1920928955078125e-7){E=1.0/+Q(+(R*R+(O*O+N*N)));W=N*E;X=O*E;Y=R*E}else{W=N;X=O;Y=R}if(+P(+U)<=1.1920928955078125e-7){J=k;K=r;L=j;M=t;break}do{if(U>G){Z=G}else{E=-0.0-G;if(U>=E){Z=U;break}Z=E}}while(0);E=+Q(+(Y*Y+(X*X+W*W)));F=Z*.5;I=+T(+F)/E;J=W*I;K=X*I;L=Y*I;M=+S(+F)}}while(0);g[a+548>>2]=B*L+(A*M+D*J)-C*K;g[e>>2]=C*J+(B*M+D*K)-A*L;g[b>>2]=C*M+D*L+A*K-B*J;g[f>>2]=D*M-A*J-B*K-C*L;return}function an$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+292|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+308|0;e=b+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+324|0;f=b+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+340|0;e=b+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+356|0;f=d;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+372|0;e=d+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=a+388|0;f=d+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+404|0;e=d+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];ct[c[(c[a>>2]|0)+8>>2]&2047](a);return}function an0(a){a=a|0;if((a|0)==0){return}aDB(a);return}function an1(a){a=a|0;return 3}function an2(a,b){a=a|0;b=b|0;return}function an3(a,b){a=a|0;b=b|0;c[a+80>>2]=b;return}function an4(a){a=a|0;return c[a+80>>2]|0}function an5(a,b,c){a=a|0;b=b|0;c=c|0;aq3(a|0,b,c)|0;g[b+44>>2]=+g[a+292>>2];g[b+48>>2]=+g[a+296>>2];g[b+52>>2]=+g[a+300>>2];g[b+56>>2]=+g[a+304>>2];g[b+60>>2]=+g[a+308>>2];g[b+64>>2]=+g[a+312>>2];g[b+68>>2]=+g[a+316>>2];g[b+72>>2]=+g[a+320>>2];g[b+76>>2]=+g[a+324>>2];g[b+80>>2]=+g[a+328>>2];g[b+84>>2]=+g[a+332>>2];g[b+88>>2]=+g[a+336>>2];g[b+92>>2]=+g[a+340>>2];g[b+96>>2]=+g[a+344>>2];g[b+100>>2]=+g[a+348>>2];g[b+104>>2]=+g[a+352>>2];g[b+108>>2]=+g[a+356>>2];g[b+112>>2]=+g[a+360>>2];g[b+116>>2]=+g[a+364>>2];g[b+120>>2]=+g[a+368>>2];g[b+124>>2]=+g[a+372>>2];g[b+128>>2]=+g[a+376>>2];g[b+132>>2]=+g[a+380>>2];g[b+136>>2]=+g[a+384>>2];g[b+140>>2]=+g[a+388>>2];g[b+144>>2]=+g[a+392>>2];g[b+148>>2]=+g[a+396>>2];g[b+152>>2]=+g[a+400>>2];g[b+156>>2]=+g[a+404>>2];g[b+160>>2]=+g[a+408>>2];g[b+164>>2]=+g[a+412>>2];g[b+168>>2]=+g[a+416>>2];g[b+172>>2]=+g[a+436>>2];g[b+176>>2]=+g[a+440>>2];g[b+180>>2]=+g[a+444>>2];g[b+184>>2]=+g[a+420>>2];g[b+188>>2]=+g[a+424>>2];g[b+192>>2]=+g[a+428>>2];g[b+196>>2]=+g[a+432>>2];return 18136}function an6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0;e=i;i=i+64|0;f=e|0;h=e+48|0;j=+g[a+20>>2];k=+g[a+40>>2];l=+g[a+24>>2];m=+g[a+36>>2];n=j*k-l*m;o=+g[a+32>>2];p=+g[a+16>>2];q=l*o-k*p;r=m*p-j*o;s=+g[a>>2];t=+g[a+4>>2];u=+g[a+8>>2];v=1.0/(n*s+t*q+r*u);w=n*v;n=v*(m*u-k*t);x=v*(l*t-j*u);y=q*v;q=v*(k*s-o*u);k=v*(p*u-l*s);l=r*v;r=v*(o*t-m*s);m=v*(j*s-p*t);t=+g[b>>2];p=+g[b+4>>2];s=+g[b+8>>2];j=+g[b+16>>2];v=+g[b+20>>2];o=+g[b+24>>2];u=+g[b+32>>2];z=+g[b+36>>2];A=+g[b+40>>2];g[f>>2]=w*t+y*p+l*s;g[f+4>>2]=t*n+p*q+r*s;g[f+8>>2]=t*x+p*k+m*s;g[f+12>>2]=0.0;g[f+16>>2]=w*j+y*v+l*o;g[f+20>>2]=n*j+q*v+r*o;g[f+24>>2]=x*j+k*v+m*o;g[f+28>>2]=0.0;g[f+32>>2]=w*u+y*z+l*A;g[f+36>>2]=n*u+q*z+r*A;g[f+40>>2]=x*u+k*z+m*A;g[f+44>>2]=0.0;ec(f,h);f=h|0;A=+g[f>>2];b=h+4|0;m=+g[b>>2];a=h+8|0;z=+g[a>>2];B=h+12|0;k=+g[B>>2];u=1.0/+Q(+(A*A+m*m+z*z+k*k));x=A*u;g[f>>2]=x;A=m*u;g[b>>2]=A;m=z*u;g[a>>2]=m;z=k*u;g[B>>2]=z;u=z<-1.0?-1.0:z;g[d>>2]=+V(+(u>1.0?1.0:u))*2.0;d=c|0;g[d>>2]=x;B=c+4|0;g[B>>2]=A;a=c+8|0;g[a>>2]=m;b=c+12|0;g[b>>2]=0.0;u=x*x+A*A+m*m;if(u<1.4210854715202004e-14){g[d>>2]=1.0;g[B>>2]=0.0;g[a>>2]=0.0;g[b>>2]=0.0;i=e;return}else{z=1.0/+Q(+u);g[d>>2]=x*z;g[B>>2]=z*A;g[a>>2]=z*m;i=e;return}}function an7(a){a=a|0;aof(a|0);if((a|0)==0){return}aDB(a);return}function an8(a){a=a|0;aof(a|0);return}function an9(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0;d=i;i=i+32|0;e=d|0;f=d+16|0;h=a+8|0;j=c[h>>2]|0;if((j|0)>0){k=a+16|0;l=f|0;m=f+4|0;n=f+8|0;o=e|0;p=e+4|0;q=e+8|0;r=e+12|0;s=f+12|0;t=a+76|0;u=a+24|0;v=0;w=j;while(1){j=c[(c[k>>2]|0)+(v<<2)>>2]|0;if((c[j+232>>2]&2|0)==0|(j|0)==0){x=w}else{y=c[j+192>>2]|0;dI[c[(c[y>>2]|0)+8>>2]&1023](y,j+4|0,e,f);z=+g[l>>2];A=+g[m>>2];B=+g[n>>2];C=+g[o>>2];D=+g[p>>2];E=+g[q>>2];F=+g[j+304>>2]*b;G=+g[j+308>>2]*b;H=+g[j+312>>2]*b;if(F>0.0){I=C;J=z+F}else{I=C+F;J=z}if(G>0.0){K=D;L=A+G}else{K=D+G;L=A}if(H>0.0){M=E;N=B+H}else{M=E+H;N=B}g[o>>2]=I;g[p>>2]=K;g[q>>2]=M;g[r>>2]=0.0;g[s>>2]=0.0;g[l>>2]=J+0.0;g[m>>2]=L+0.0;g[n>>2]=N+0.0;y=c[t>>2]|0;co[c[(c[y>>2]|0)+16>>2]&255](y,c[j+188>>2]|0,e,f,c[u>>2]|0);x=c[h>>2]|0}j=v+1|0;if((j|0)<(x|0)){v=j;w=x}else{O=t;P=u;break}}}else{O=a+76|0;P=a+24|0}u=c[O>>2]|0;cv[c[(c[u>>2]|0)+32>>2]&2047](u,c[P>>2]|0);P=a+28|0;g[P>>2]=b;g[a+40>>2]=1.0;c[a+32>>2]=0;u=a+36|0;c[u>>2]=2;O=a+24|0;t=c[O>>2]|0;if((t|0)==0){c[u>>2]=1;i=d;return}x=c[(c[t>>2]|0)+32>>2]|0;w=c[a+76>>2]|0;a=cA[c[(c[w>>2]|0)+36>>2]&4095](w)|0;dI[x&1023](t,a,P,c[O>>2]|0);c[u>>2]=1;i=d;return}function aoa(a,b){a=a|0;b=+b;var d=0,e=0,f=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0;d=i;i=i+16|0;e=d|0;f=a|0;aDi();j=a|0;k=c[a+92>>2]|0;if((k|0)!=0){cq[k&1023](j,b)}k=a|0;l=a;ct[c[(c[l>>2]|0)+8>>2]&2047](k);m=a;cq[c[(c[m>>2]|0)+136>>2]&1023](f,b);g[a+28>>2]=b;c[a+32>>2]=0;c[a+48>>2]=cA[c[(c[a>>2]|0)+16>>2]&4095](k)|0;ct[c[(c[l>>2]|0)+40>>2]&2047](k);ct[c[(c[a>>2]|0)+148>>2]&2047](f);g[a+112>>2]=b;cv[c[(c[a>>2]|0)+152>>2]&2047](f,a+100|0);cq[c[(c[a>>2]|0)+176>>2]&1023](a,b);n=+g[a+40>>2];if(n<0.0){o=n;bK(17384,(l=i,i=i+8|0,h[l>>3]=o,l)|0)|0;i=l}cq[c[(c[m>>2]|0)+140>>2]&1023](f,n*b);aDo(16856);m=a+248|0;if((c[m>>2]|0)>0){l=a+256|0;p=0;do{q=c[(c[l>>2]|0)+(p<<2)>>2]|0;dF[c[(c[q>>2]|0)+8>>2]&255](q,k,b);p=p+1|0;}while((p|0)<(c[m>>2]|0))}m=c[9152]|0;p=m+16|0;k=(c[p>>2]|0)-1|0;c[p>>2]=k;do{if((k|0)==0){if((c[m+4>>2]|0)==0){r=m}else{b3(e|0,0)|0;l=c[10742]|0;q=m+8|0;g[q>>2]=+(((c[e+4>>2]|0)-(c[l+4>>2]|0)+(((c[e>>2]|0)-(c[l>>2]|0)|0)*1e6|0)-(c[m+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[q>>2];if((c[p>>2]|0)!=0){break}r=c[9152]|0}c[9152]=c[r+20>>2]}}while(0);aom(f,b);f=c[a+88>>2]|0;if((f|0)==0){i=d;return}cq[f&1023](j,b);i=d;return}function aob(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0;aty(b|0,d,e,h);c[b+88>>2]=0;c[b+92>>2]=0;c[b+96>>2]=0;g[b+100>>2]=.6000000238418579;g[b+104>>2]=1.0;g[b+108>>2]=.30000001192092896;g[b+116>>2]=0.0;g[b+124>>2]=20.0;c[b+120>>2]=10;g[b+132>>2]=.20000000298023224;g[b+136>>2]=.10000000149011612;g[b+140>>2]=0.0;g[b+128>>2]=1.0;c[b+144>>2]=0;g[b+148>>2]=-.019999999552965164;g[b+152>>2]=0.0;g[b+156>>2]=.8500000238418579;c[b+160>>2]=260;c[b+164>>2]=2;c[b+168>>2]=128;c[b>>2]=21464;h=b+172|0;c[h>>2]=f;a[b+196|0]=1;c[b+192>>2]=0;c[b+184>>2]=0;c[b+188>>2]=0;a[b+216|0]=1;c[b+212>>2]=0;c[b+204>>2]=0;c[b+208>>2]=0;g[b+220>>2]=0.0;g[b+224>>2]=-10.0;g[b+228>>2]=0.0;g[b+232>>2]=0.0;g[b+236>>2]=0.0;a[b+242|0]=0;a[b+260|0]=1;c[b+256>>2]=0;c[b+248>>2]=0;c[b+252>>2]=0;c[b+264>>2]=0;if((f|0)==0){c[9806]=(c[9806]|0)+1;f=aDx(147)|0;do{if((f|0)==0){i=0}else{e=-(f+4|0)&15;d=f+(e+4)|0;c[f+e>>2]=f;if((d|0)==0){i=0;break}c[d>>2]=19632;a[f+(e+24)|0]=1;c[f+(e+20)>>2]=0;c[f+(e+12)>>2]=0;c[f+(e|16)>>2]=0;a[f+(e+44)|0]=1;c[f+(e+40)>>2]=0;c[f+(e|32)>>2]=0;c[f+(e+36)>>2]=0;a[f+(e|64)|0]=1;c[f+(e+60)>>2]=0;c[f+(e+52)>>2]=0;c[f+(e+56)>>2]=0;a[f+(e+84)|0]=1;c[f+(e|80)>>2]=0;c[f+(e+72)>>2]=0;c[f+(e+76)>>2]=0;a[f+(e+104)|0]=1;c[f+(e+100)>>2]=0;c[f+(e+92)>>2]=0;c[f+(e|96)>>2]=0;a[f+(e+124)|0]=1;c[f+(e+120)>>2]=0;c[f+(e|112)>>2]=0;c[f+(e+116)>>2]=0;c[f+(e|128)>>2]=0;i=d}}while(0);c[h>>2]=i;a[b+241|0]=1}else{a[b+241|0]=0}c[9806]=(c[9806]|0)+1;i=aDx(87)|0;if((i|0)==0){j=0;k=b+176|0;c[k>>2]=j;l=b+240|0;a[l]=1;return}h=-(i+4|0)&15;f=i+(h+4)|0;c[i+h>>2]=i;if((f|0)==0){j=0;k=b+176|0;c[k>>2]=j;l=b+240|0;a[l]=1;return}c[f>>2]=20520;a[i+(h+24)|0]=1;c[i+(h+20)>>2]=0;c[i+(h+12)>>2]=0;c[i+(h|16)>>2]=0;a[i+(h+44)|0]=1;c[i+(h+40)>>2]=0;c[i+(h|32)>>2]=0;c[i+(h+36)>>2]=0;a[i+(h|64)|0]=1;c[i+(h+60)>>2]=0;c[i+(h+52)>>2]=0;c[i+(h+56)>>2]=0;a[i+(h+68)|0]=1;j=f;k=b+176|0;c[k>>2]=j;l=b+240|0;a[l]=1;return}function aoc(a){a=a|0;aof(a);if((a|0)==0){return}aDB(a);return}function aod(a,b){a=a|0;b=+b;var d=0,e=0,f=0,g=0,h=0;d=a+8|0;e=c[d>>2]|0;if((e|0)<=0){return}f=a+16|0;a=0;g=e;while(1){e=c[(c[f>>2]|0)+(a<<2)>>2]|0;do{if((c[e+232>>2]&2|0)==0){h=g}else{if((e|0)==0){h=g;break}if((c[e+216>>2]|0)==2){h=g;break}if((c[e+204>>2]&2|0)==0){h=g;break}ap0(e,b);h=c[d>>2]|0}}while(0);e=a+1|0;if((e|0)<(h|0)){a=e;g=h}else{break}}return}function aoe(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0,l=0;d=i;i=i+16|0;e=d|0;aDo(16856);f=a+248|0;if((c[f>>2]|0)>0){h=a+256|0;j=a|0;a=0;do{k=c[(c[h>>2]|0)+(a<<2)>>2]|0;dF[c[(c[k>>2]|0)+8>>2]&255](k,j,b);a=a+1|0;}while((a|0)<(c[f>>2]|0))}f=c[9152]|0;a=f+16|0;j=(c[a>>2]|0)-1|0;c[a>>2]=j;if((j|0)!=0){i=d;return}do{if((c[f+4>>2]|0)==0){l=f}else{b3(e|0,0)|0;j=c[10742]|0;h=f+8|0;g[h>>2]=+(((c[e+4>>2]|0)-(c[j+4>>2]|0)+(((c[e>>2]|0)-(c[j>>2]|0)|0)*1e6|0)-(c[f+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[h>>2];if((c[a>>2]|0)==0){l=c[9152]|0;break}else{i=d;return}}}while(0);c[9152]=c[l+20>>2];i=d;return}function aof(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[b>>2]=21464;do{if((a[b+240|0]&1)!=0){d=b+176|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[e-68+64>>2]|0)}}while(0);do{if((a[b+241|0]&1)!=0){e=b+172|0;d=c[e>>2]|0;ct[c[c[d>>2]>>2]&2047](d);d=c[e>>2]|0;if((d|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}}while(0);d=b+248|0;e=b+256|0;f=c[e>>2]|0;g=b+260|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+252>>2]=0;d=b+204|0;e=b+212|0;g=c[e>>2]|0;f=b+216|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+208>>2]=0;d=b+184|0;e=b+192|0;f=c[e>>2]|0;g=b+196|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+188|0;c[h>>2]=0;i=b|0;atA(i);return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+188|0;c[h>>2]=0;i=b|0;atA(i);return}function aog(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;i=i+16|0;d=b|0;aDo(17208);e=a|0;atR(e);f=a;L2701:do{if((cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0)!=0){h=cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0;if(((cA[c[(c[h>>2]|0)+48>>2]&4095](h)|0)&6144|0)==0){break}h=a;j=cA[c[(c[a>>2]|0)+100>>2]&4095](a)|0;while(1){k=j-1|0;if((j|0)<=0){break L2701}aoh(a,dj[c[(c[h>>2]|0)+104>>2]&511](a,k)|0);j=k}}}while(0);do{if((cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0)!=0){j=cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0;if(((cA[c[(c[j>>2]|0)+48>>2]&4095](j)|0)&3|0)==0){break}if((cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0)==0){break}j=cA[c[(c[f>>2]|0)+16>>2]&4095](e)|0;if((cA[c[(c[j>>2]|0)+48>>2]&4095](j)|0)==0){break}j=a+248|0;if((c[j>>2]|0)<=0){break}h=a+256|0;k=a+80|0;l=0;do{m=c[(c[h>>2]|0)+(l<<2)>>2]|0;cv[c[(c[m>>2]|0)+12>>2]&2047](m,c[k>>2]|0);l=l+1|0;}while((l|0)<(c[j>>2]|0))}}while(0);a=c[9152]|0;e=a+16|0;f=(c[e>>2]|0)-1|0;c[e>>2]=f;if((f|0)!=0){i=b;return}do{if((c[a+4>>2]|0)==0){n=a}else{b3(d|0,0)|0;f=c[10742]|0;j=a+8|0;g[j>>2]=+(((c[d+4>>2]|0)-(c[f+4>>2]|0)+(((c[d>>2]|0)-(c[f>>2]|0)|0)*1e6|0)-(c[a+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[j>>2];if((c[e>>2]|0)==0){n=c[9152]|0;break}else{i=b;return}}}while(0);c[9152]=c[n+20>>2];i=b;return}function aoh(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0,ak=0,al=0,am=0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0;e=i;i=i+1392|0;f=e|0;h=e+48|0;j=e+96|0;k=e+144|0;l=e+192|0;m=e+240|0;n=e+288|0;o=e+336|0;p=e+384|0;q=e+448|0;r=e+512|0;s=e+576|0;t=e+592|0;u=e+608|0;v=e+624|0;w=e+688|0;x=e+752|0;y=e+768|0;z=e+784|0;A=e+800|0;B=e+816|0;C=e+880|0;D=e+944|0;E=e+960|0;F=e+976|0;G=e+992|0;H=e+1008|0;I=e+1072|0;J=e+1088|0;K=e+1104|0;L=e+1120|0;M=e+1136|0;N=e+1152|0;O=e+1168|0;P=e+1184|0;Q=e+1200|0;R=e+1216|0;U=e+1232|0;V=e+1296|0;W=e+1312|0;X=e+1328|0;Y=e+1344|0;Z=e+1360|0;_=e+1376|0;$=b|0;aa=b;b=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;ab=(cA[c[(c[b>>2]|0)+48>>2]&4095](b)|0)>>>11;b=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;ac=(cA[c[(c[b>>2]|0)+48>>2]&4095](b)|0)>>>12;ad=+g[d+36>>2];if(ad<=0.0){i=e;return}switch(c[d+4>>2]|0){case 3:{g[p>>2]=1.0;aDD(p+4|0,0,16);g[p+20>>2]=1.0;aDD(p+24|0,0,16);g[p+40>>2]=1.0;aDD(p+44|0,0,20);ae=+g[d+292>>2];af=+g[d+296>>2];ag=+g[d+300>>2];b=c[d+24>>2]|0;ah=+g[b+56>>2]+(ae*+g[b+20>>2]+af*+g[b+24>>2]+ag*+g[b+28>>2]);ai=+g[b+60>>2]+(ae*+g[b+36>>2]+af*+g[b+40>>2]+ag*+g[b+44>>2]);aj=p+48|0;g[aj>>2]=+g[b+52>>2]+(ae*+g[b+4>>2]+af*+g[b+8>>2]+ag*+g[b+12>>2]);b=p+52|0;g[b>>2]=ah;ak=p+56|0;g[ak>>2]=ai;al=p+60|0;g[al>>2]=0.0;am=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[am>>2]|0)+56>>2]&255](am,p,ad);ai=+g[d+308>>2];ah=+g[d+312>>2];ag=+g[d+316>>2];am=c[d+28>>2]|0;af=+g[am+56>>2]+(ai*+g[am+20>>2]+ah*+g[am+24>>2]+ag*+g[am+28>>2]);ae=+g[am+60>>2]+(ai*+g[am+36>>2]+ah*+g[am+40>>2]+ag*+g[am+44>>2]);g[aj>>2]=+g[am+52>>2]+(ai*+g[am+4>>2]+ah*+g[am+8>>2]+ag*+g[am+12>>2]);g[b>>2]=af;g[ak>>2]=ae;g[al>>2]=0.0;if((ab&1|0)==0){i=e;return}al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[al>>2]|0)+56>>2]&255](al,p,ad);i=e;return};case 4:{p=c[d+24>>2]|0;al=p+4|0;ak=d+544|0;b=o;anx(o,al|0,ak);ae=+g[ak+48>>2];af=+g[ak+52>>2];ag=+g[ak+56>>2];ah=+g[al>>2]*ae+ +g[p+8>>2]*af+ +g[p+12>>2]*ag+ +g[p+52>>2];ai=+g[p+20>>2]*ae+ +g[p+24>>2]*af+ +g[p+28>>2]*ag+ +g[p+56>>2];an=+g[p+36>>2]*ae+ +g[p+40>>2]*af+ +g[p+44>>2]*ag+ +g[p+60>>2];p=q+48|0;al=q|0;do{al=al+16|0;}while((al|0)!=(p|0));p=q;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];b=q+16|0;al=o+16|0;c[b>>2]=c[al>>2];c[b+4>>2]=c[al+4>>2];c[b+8>>2]=c[al+8>>2];c[b+12>>2]=c[al+12>>2];al=q+32|0;ak=o+32|0;c[al>>2]=c[ak>>2];c[al+4>>2]=c[ak+4>>2];c[al+8>>2]=c[ak+8>>2];c[al+12>>2]=c[ak+12>>2];g[q+48>>2]=ah;g[q+52>>2]=ai;g[q+56>>2]=an;g[q+60>>2]=0.0;if((ab&1|0)==0){ak=c[d+28>>2]|0;o=ak+4|0;am=d+608|0;aj=m;anx(m,o|0,am);an=+g[am+48>>2];ai=+g[am+52>>2];ah=+g[am+56>>2];ag=+g[o>>2]*an+ +g[ak+8>>2]*ai+ +g[ak+12>>2]*ah+ +g[ak+52>>2];af=+g[ak+20>>2]*an+ +g[ak+24>>2]*ai+ +g[ak+28>>2]*ah+ +g[ak+56>>2];ae=+g[ak+36>>2]*an+ +g[ak+40>>2]*ai+ +g[ak+44>>2]*ah+ +g[ak+60>>2];ak=r+48|0;o=r|0;do{o=o+16|0;}while((o|0)!=(ak|0));ak=r;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];aj=r+16|0;o=m+16|0;c[aj>>2]=c[o>>2];c[aj+4>>2]=c[o+4>>2];c[aj+8>>2]=c[o+8>>2];c[aj+12>>2]=c[o+12>>2];o=r+32|0;am=m+32|0;c[o>>2]=c[am>>2];c[o+4>>2]=c[am+4>>2];c[o+8>>2]=c[am+8>>2];c[o+12>>2]=c[am+12>>2];g[r+48>>2]=ag;g[r+52>>2]=af;g[r+56>>2]=ae;g[r+60>>2]=0.0;c[p>>2]=c[ak>>2];c[p+4>>2]=c[ak+4>>2];c[p+8>>2]=c[ak+8>>2];c[p+12>>2]=c[ak+12>>2];c[b>>2]=c[aj>>2];c[b+4>>2]=c[aj+4>>2];c[b+8>>2]=c[aj+8>>2];c[b+12>>2]=c[aj+12>>2];c[al>>2]=c[o>>2];c[al+4>>2]=c[o+4>>2];c[al+8>>2]=c[o+8>>2];c[al+12>>2]=c[o+12>>2];o=q+48|0;aj=r+48|0;c[o>>2]=c[aj>>2];c[o+4>>2]=c[aj+4>>2];c[o+8>>2]=c[aj+8>>2];c[o+12>>2]=c[aj+12>>2]}else{aj=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[aj>>2]|0)+56>>2]&255](aj,q,ad);aj=c[d+28>>2]|0;o=aj+4|0;ak=d+608|0;am=n;anx(n,o|0,ak);ae=+g[ak+48>>2];af=+g[ak+52>>2];ag=+g[ak+56>>2];ah=+g[o>>2]*ae+ +g[aj+8>>2]*af+ +g[aj+12>>2]*ag+ +g[aj+52>>2];ai=+g[aj+20>>2]*ae+ +g[aj+24>>2]*af+ +g[aj+28>>2]*ag+ +g[aj+56>>2];an=+g[aj+36>>2]*ae+ +g[aj+40>>2]*af+ +g[aj+44>>2]*ag+ +g[aj+60>>2];aj=r+48|0;o=r|0;do{o=o+16|0;}while((o|0)!=(aj|0));aj=r;c[aj>>2]=c[am>>2];c[aj+4>>2]=c[am+4>>2];c[aj+8>>2]=c[am+8>>2];c[aj+12>>2]=c[am+12>>2];am=r+16|0;o=n+16|0;c[am>>2]=c[o>>2];c[am+4>>2]=c[o+4>>2];c[am+8>>2]=c[o+8>>2];c[am+12>>2]=c[o+12>>2];o=r+32|0;ak=n+32|0;c[o>>2]=c[ak>>2];c[o+4>>2]=c[ak+4>>2];c[o+8>>2]=c[ak+8>>2];c[o+12>>2]=c[ak+12>>2];g[r+48>>2]=ah;g[r+52>>2]=ai;g[r+56>>2]=an;g[r+60>>2]=0.0;c[p>>2]=c[aj>>2];c[p+4>>2]=c[aj+4>>2];c[p+8>>2]=c[aj+8>>2];c[p+12>>2]=c[aj+12>>2];c[b>>2]=c[am>>2];c[b+4>>2]=c[am+4>>2];c[b+8>>2]=c[am+8>>2];c[b+12>>2]=c[am+12>>2];c[al>>2]=c[o>>2];c[al+4>>2]=c[o+4>>2];c[al+8>>2]=c[o+8>>2];c[al+12>>2]=c[o+12>>2];o=q+48|0;al=r+48|0;c[o>>2]=c[al>>2];c[o+4>>2]=c[al+4>>2];c[o+8>>2]=c[al+8>>2];c[o+12>>2]=c[al+12>>2];al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[al>>2]|0)+56>>2]&255](al,q,ad)}al=d+680|0;o=d+684|0;an=+ck(+(+g[al>>2]- +g[o>>2]),6.2831854820251465);do{if(an<-3.1415927410125732){ao=an+6.2831854820251465}else{if(an<=3.1415927410125732){ao=an;break}ao=an-6.2831854820251465}}while(0);an=+ck(+(+g[al>>2]+ +g[o>>2]),6.2831854820251465);do{if(an<-3.1415927410125732){ap=an+6.2831854820251465}else{if(an<=3.1415927410125732){ap=an;break}ap=an-6.2831854820251465}}while(0);if(ao==ap){i=e;return}o=ao>ap;if((ac&1|0)==0){i=e;return}g[s>>2]=+g[q+8>>2];g[s+4>>2]=+g[q+24>>2];g[s+8>>2]=+g[q+40>>2];g[s+12>>2]=0.0;g[t>>2]=+g[q>>2];g[t+4>>2]=+g[q+16>>2];g[t+8>>2]=+g[q+32>>2];g[t+12>>2]=0.0;al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;r=c[(c[al>>2]|0)+60>>2]|0;aDD(u|0,0,16);dt[r&63](al,q+48|0,s,t,ad,ad,o?0.0:ao,o?6.2831854820251465:ap,u,o^1,10.0);i=e;return};case 7:{o=d+816|0;u=U;t=o;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=U+16|0;s=o+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];s=U+32|0;q=o+32|0;c[s>>2]=c[q>>2];c[s+4>>2]=c[q+4>>2];c[s+8>>2]=c[q+8>>2];c[s+12>>2]=c[q+12>>2];q=U+48|0;al=o+48|0;c[q>>2]=c[al>>2];c[q+4>>2]=c[al+4>>2];c[q+8>>2]=c[al+8>>2];c[q+12>>2]=c[al+12>>2];if((ab&1|0)==0){al=d+880|0;c[u>>2]=c[al>>2];c[u+4>>2]=c[al+4>>2];c[u+8>>2]=c[al+8>>2];c[u+12>>2]=c[al+12>>2];al=d+896|0;c[t>>2]=c[al>>2];c[t+4>>2]=c[al+4>>2];c[t+8>>2]=c[al+8>>2];c[t+12>>2]=c[al+12>>2];al=d+912|0;c[s>>2]=c[al>>2];c[s+4>>2]=c[al+4>>2];c[s+8>>2]=c[al+8>>2];c[s+12>>2]=c[al+12>>2];al=d+928|0;c[q>>2]=c[al>>2];c[q+4>>2]=c[al+4>>2];c[q+8>>2]=c[al+8>>2];c[q+12>>2]=c[al+12>>2]}else{al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[al>>2]|0)+56>>2]&255](al,U,ad);al=d+880|0;c[u>>2]=c[al>>2];c[u+4>>2]=c[al+4>>2];c[u+8>>2]=c[al+8>>2];c[u+12>>2]=c[al+12>>2];al=d+896|0;c[t>>2]=c[al>>2];c[t+4>>2]=c[al+4>>2];c[t+8>>2]=c[al+8>>2];c[t+12>>2]=c[al+12>>2];al=d+912|0;c[s>>2]=c[al>>2];c[s+4>>2]=c[al+4>>2];c[s+8>>2]=c[al+8>>2];c[s+12>>2]=c[al+12>>2];al=d+928|0;c[q>>2]=c[al>>2];c[q+4>>2]=c[al+4>>2];c[q+8>>2]=c[al+8>>2];c[q+12>>2]=c[al+12>>2];al=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[al>>2]|0)+56>>2]&255](al,U,ad)}if((ac&1|0)==0){i=e;return}U=(a[d+172|0]&1)!=0?o:d+880|0;ap=+g[U>>2];ao=+g[U+4>>2];an=+g[U+16>>2];ai=+g[U+20>>2];ah=+g[U+32>>2];ag=+g[U+36>>2];af=+g[U+48>>2];ae=+g[U+52>>2];aq=+g[U+56>>2];ar=+g[d+176>>2];as=ao*0.0;at=+g[U+8>>2]*0.0;au=ai*0.0;av=+g[U+24>>2]*0.0;aw=ag*0.0;ax=+g[U+40>>2]*0.0;g[V>>2]=af+(at+(as+ap*ar));g[V+4>>2]=ae+(av+(au+an*ar));g[V+8>>2]=aq+(ax+(aw+ah*ar));g[V+12>>2]=0.0;ar=+g[d+180>>2];g[W>>2]=af+(at+(as+ap*ar));g[W+4>>2]=ae+(av+(au+an*ar));g[W+8>>2]=aq+(ax+(aw+ah*ar));g[W+12>>2]=0.0;U=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;o=c[(c[U>>2]|0)+8>>2]|0;aDD(X|0,0,16);dI[o&1023](U,V,W,X);g[Y>>2]=ap;g[Y+4>>2]=an;g[Y+8>>2]=ah;g[Y+12>>2]=0.0;g[Z>>2]=ao;g[Z+4>>2]=ai;g[Z+8>>2]=ag;g[Z+12>>2]=0.0;ag=+g[d+184>>2];ai=+g[d+188>>2];X=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;W=c[(c[X>>2]|0)+60>>2]|0;aDD(_|0,0,16);dt[W&63](X,d+928|0,Y,Z,ad,ad,ag,ai,_,1,10.0);i=e;return};case 9:case 6:{_=d+1056|0;Z=H;Y=_;c[Z>>2]=c[Y>>2];c[Z+4>>2]=c[Y+4>>2];c[Z+8>>2]=c[Y+8>>2];c[Z+12>>2]=c[Y+12>>2];X=H+16|0;W=_+16|0;c[X>>2]=c[W>>2];c[X+4>>2]=c[W+4>>2];c[X+8>>2]=c[W+8>>2];c[X+12>>2]=c[W+12>>2];V=H+32|0;U=_+32|0;c[V>>2]=c[U>>2];c[V+4>>2]=c[U+4>>2];c[V+8>>2]=c[U+8>>2];c[V+12>>2]=c[U+12>>2];o=H+48|0;al=_+48|0;c[o>>2]=c[al>>2];c[o+4>>2]=c[al+4>>2];c[o+8>>2]=c[al+8>>2];c[o+12>>2]=c[al+12>>2];if((ab&1|0)==0){_=d+1120|0;c[Z>>2]=c[_>>2];c[Z+4>>2]=c[_+4>>2];c[Z+8>>2]=c[_+8>>2];c[Z+12>>2]=c[_+12>>2];_=d+1136|0;c[X>>2]=c[_>>2];c[X+4>>2]=c[_+4>>2];c[X+8>>2]=c[_+8>>2];c[X+12>>2]=c[_+12>>2];_=d+1152|0;c[V>>2]=c[_>>2];c[V+4>>2]=c[_+4>>2];c[V+8>>2]=c[_+8>>2];c[V+12>>2]=c[_+12>>2];_=d+1168|0;c[o>>2]=c[_>>2];c[o+4>>2]=c[_+4>>2];c[o+8>>2]=c[_+8>>2];c[o+12>>2]=c[_+12>>2]}else{_=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[_>>2]|0)+56>>2]&255](_,H,ad);_=d+1120|0;c[Z>>2]=c[_>>2];c[Z+4>>2]=c[_+4>>2];c[Z+8>>2]=c[_+8>>2];c[Z+12>>2]=c[_+12>>2];_=d+1136|0;c[X>>2]=c[_>>2];c[X+4>>2]=c[_+4>>2];c[X+8>>2]=c[_+8>>2];c[X+12>>2]=c[_+12>>2];_=d+1152|0;c[V>>2]=c[_>>2];c[V+4>>2]=c[_+4>>2];c[V+8>>2]=c[_+8>>2];c[V+12>>2]=c[_+12>>2];_=d+1168|0;c[o>>2]=c[_>>2];c[o+4>>2]=c[_+4>>2];c[o+8>>2]=c[_+8>>2];c[o+12>>2]=c[_+12>>2];_=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[_>>2]|0)+56>>2]&255](_,H,ad)}if((ac&1|0)==0){i=e;return}c[Z>>2]=c[Y>>2];c[Z+4>>2]=c[Y+4>>2];c[Z+8>>2]=c[Y+8>>2];c[Z+12>>2]=c[Y+12>>2];c[X>>2]=c[W>>2];c[X+4>>2]=c[W+4>>2];c[X+8>>2]=c[W+8>>2];c[X+12>>2]=c[W+12>>2];c[V>>2]=c[U>>2];c[V+4>>2]=c[U+4>>2];c[V+8>>2]=c[U+8>>2];c[V+12>>2]=c[U+12>>2];c[o>>2]=c[al>>2];c[o+4>>2]=c[al+4>>2];c[o+8>>2]=c[al+8>>2];c[o+12>>2]=c[al+12>>2];_=d+1168|0;q=_;g[I>>2]=+g[H+8>>2];g[I+4>>2]=+g[H+24>>2];g[I+8>>2]=+g[H+40>>2];g[I+12>>2]=0.0;s=H|0;t=H+16|0;u=H+32|0;r=J|0;g[r>>2]=+g[s>>2];am=J+4|0;g[am>>2]=+g[t>>2];b=J+8|0;g[b>>2]=+g[u>>2];aj=J+12|0;g[aj>>2]=0.0;p=d+924|0;ai=+g[p>>2];ag=+g[p+4>>2];p=d+988|0;ao=+g[p>>2];ah=+g[p+4>>2];p=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;ak=c[(c[p>>2]|0)+64>>2]|0;aDD(K|0,0,16);cs[ak&63](p,q,I,J,ad*.8999999761581421,ai,ag,ao,ah,K,10.0);ah=+g[H+4>>2];ao=+g[H+20>>2];ag=+g[H+36>>2];g[r>>2]=ah;g[am>>2]=ao;g[b>>2]=ag;g[aj>>2]=0.0;ai=+g[d+1188>>2];an=+g[d+1192>>2];ap=+S(+ai);ar=+T(+ai);ai=+S(+an);aw=+T(+an);g[L>>2]=ap*ai*ah+ap*aw*ao-ar*ag;g[L+4>>2]=ah*(-0.0-aw)+ai*ao;g[L+8>>2]=ar*ai*ah+ar*aw*ao+ap*ag;aj=d+1120|0;c[Z>>2]=c[aj>>2];c[Z+4>>2]=c[aj+4>>2];c[Z+8>>2]=c[aj+8>>2];c[Z+12>>2]=c[aj+12>>2];aj=d+1136|0;c[X>>2]=c[aj>>2];c[X+4>>2]=c[aj+4>>2];c[X+8>>2]=c[aj+8>>2];c[X+12>>2]=c[aj+12>>2];aj=d+1152|0;c[V>>2]=c[aj>>2];c[V+4>>2]=c[aj+4>>2];c[V+8>>2]=c[aj+8>>2];c[V+12>>2]=c[aj+12>>2];aj=_;c[o>>2]=c[aj>>2];c[o+4>>2]=c[aj+4>>2];c[o+8>>2]=c[aj+8>>2];c[o+12>>2]=c[aj+12>>2];ag=-0.0- +g[t>>2];ap=-0.0- +g[u>>2];g[M>>2]=-0.0- +g[s>>2];g[M+4>>2]=ag;g[M+8>>2]=ap;g[M+12>>2]=0.0;s=d+860|0;ap=+g[s>>2];ag=+g[s+4>>2];do{if(ap>ag){s=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;u=c[(c[s>>2]|0)+60>>2]|0;aDD(N|0,0,16);dt[u&63](s,q,M,L,ad,ad,-3.1415927410125732,3.1415927410125732,N,0,10.0)}else{if(ap>=ag){break}s=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;u=c[(c[s>>2]|0)+60>>2]|0;aDD(O|0,0,16);dt[u&63](s,q,M,L,ad,ad,ap,ag,O,1,10.0)}}while(0);c[Z>>2]=c[Y>>2];c[Z+4>>2]=c[Y+4>>2];c[Z+8>>2]=c[Y+8>>2];c[Z+12>>2]=c[Y+12>>2];c[X>>2]=c[W>>2];c[X+4>>2]=c[W+4>>2];c[X+8>>2]=c[W+8>>2];c[X+12>>2]=c[W+12>>2];c[V>>2]=c[U>>2];c[V+4>>2]=c[U+4>>2];c[V+8>>2]=c[U+8>>2];c[V+12>>2]=c[U+12>>2];c[o>>2]=c[al>>2];c[o+4>>2]=c[al+4>>2];c[o+8>>2]=c[al+8>>2];c[o+12>>2]=c[al+12>>2];al=d+672|0;o=P;U=al;c[o>>2]=c[U>>2];c[o+4>>2]=c[U+4>>2];c[o+8>>2]=c[U+8>>2];c[o+12>>2]=c[U+12>>2];U=Q;o=al+16|0;c[U>>2]=c[o>>2];c[U+4>>2]=c[o+4>>2];c[U+8>>2]=c[o+8>>2];c[U+12>>2]=c[o+12>>2];o=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;U=c[(c[o>>2]|0)+72>>2]|0;aDD(R|0,0,16);co[U&255](o,P,Q,H,R);i=e;return};case 5:{R=d;H=d+24|0;Q=c[H>>2]|0;P=Q+4|0;o=d+292|0;U=l;al=o;anx(l,P|0,al);V=o+48|0;ag=+g[V>>2];W=o+52|0;ap=+g[W>>2];X=o+56|0;ao=+g[X>>2];aw=+g[P>>2]*ag+ +g[Q+8>>2]*ap+ +g[Q+12>>2]*ao+ +g[Q+52>>2];ar=+g[Q+20>>2]*ag+ +g[Q+24>>2]*ap+ +g[Q+28>>2]*ao+ +g[Q+56>>2];ah=+g[Q+36>>2]*ag+ +g[Q+40>>2]*ap+ +g[Q+44>>2]*ao+ +g[Q+60>>2];Q=v+48|0;P=v|0;do{P=P+16|0;}while((P|0)!=(Q|0));Q=v;c[Q>>2]=c[U>>2];c[Q+4>>2]=c[U+4>>2];c[Q+8>>2]=c[U+8>>2];c[Q+12>>2]=c[U+12>>2];U=v+16|0;P=l+16|0;c[U>>2]=c[P>>2];c[U+4>>2]=c[P+4>>2];c[U+8>>2]=c[P+8>>2];c[U+12>>2]=c[P+12>>2];P=v+32|0;o=l+32|0;c[P>>2]=c[o>>2];c[P+4>>2]=c[o+4>>2];c[P+8>>2]=c[o+8>>2];c[P+12>>2]=c[o+12>>2];o=v+48|0;g[o>>2]=aw;l=v+52|0;g[l>>2]=ar;Y=v+56|0;g[Y>>2]=ah;g[v+60>>2]=0.0;if((ab&1|0)==0){ab=c[d+28>>2]|0;Z=ab+4|0;O=d+356|0;L=j;anx(j,Z|0,O);ah=+g[O+48>>2];ar=+g[O+52>>2];aw=+g[O+56>>2];ao=+g[Z>>2]*ah+ +g[ab+8>>2]*ar+ +g[ab+12>>2]*aw+ +g[ab+52>>2];ap=+g[ab+20>>2]*ah+ +g[ab+24>>2]*ar+ +g[ab+28>>2]*aw+ +g[ab+56>>2];ag=+g[ab+36>>2]*ah+ +g[ab+40>>2]*ar+ +g[ab+44>>2]*aw+ +g[ab+60>>2];ab=w+48|0;Z=w|0;do{Z=Z+16|0;}while((Z|0)!=(ab|0));ab=w;c[ab>>2]=c[L>>2];c[ab+4>>2]=c[L+4>>2];c[ab+8>>2]=c[L+8>>2];c[ab+12>>2]=c[L+12>>2];L=w+16|0;Z=j+16|0;c[L>>2]=c[Z>>2];c[L+4>>2]=c[Z+4>>2];c[L+8>>2]=c[Z+8>>2];c[L+12>>2]=c[Z+12>>2];Z=w+32|0;O=j+32|0;c[Z>>2]=c[O>>2];c[Z+4>>2]=c[O+4>>2];c[Z+8>>2]=c[O+8>>2];c[Z+12>>2]=c[O+12>>2];g[w+48>>2]=ao;g[w+52>>2]=ap;g[w+56>>2]=ag;g[w+60>>2]=0.0;c[Q>>2]=c[ab>>2];c[Q+4>>2]=c[ab+4>>2];c[Q+8>>2]=c[ab+8>>2];c[Q+12>>2]=c[ab+12>>2];c[U>>2]=c[L>>2];c[U+4>>2]=c[L+4>>2];c[U+8>>2]=c[L+8>>2];c[U+12>>2]=c[L+12>>2];c[P>>2]=c[Z>>2];c[P+4>>2]=c[Z+4>>2];c[P+8>>2]=c[Z+8>>2];c[P+12>>2]=c[Z+12>>2];Z=v+48|0;L=w+48|0;c[Z>>2]=c[L>>2];c[Z+4>>2]=c[L+4>>2];c[Z+8>>2]=c[L+8>>2];c[Z+12>>2]=c[L+12>>2]}else{L=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[L>>2]|0)+56>>2]&255](L,v,ad);L=c[d+28>>2]|0;Z=L+4|0;ab=d+356|0;O=k;anx(k,Z|0,ab);ag=+g[ab+48>>2];ap=+g[ab+52>>2];ao=+g[ab+56>>2];aw=+g[Z>>2]*ag+ +g[L+8>>2]*ap+ +g[L+12>>2]*ao+ +g[L+52>>2];ar=+g[L+20>>2]*ag+ +g[L+24>>2]*ap+ +g[L+28>>2]*ao+ +g[L+56>>2];ah=+g[L+36>>2]*ag+ +g[L+40>>2]*ap+ +g[L+44>>2]*ao+ +g[L+60>>2];L=w+48|0;Z=w|0;do{Z=Z+16|0;}while((Z|0)!=(L|0));L=w;c[L>>2]=c[O>>2];c[L+4>>2]=c[O+4>>2];c[L+8>>2]=c[O+8>>2];c[L+12>>2]=c[O+12>>2];O=w+16|0;Z=k+16|0;c[O>>2]=c[Z>>2];c[O+4>>2]=c[Z+4>>2];c[O+8>>2]=c[Z+8>>2];c[O+12>>2]=c[Z+12>>2];Z=w+32|0;ab=k+32|0;c[Z>>2]=c[ab>>2];c[Z+4>>2]=c[ab+4>>2];c[Z+8>>2]=c[ab+8>>2];c[Z+12>>2]=c[ab+12>>2];g[w+48>>2]=aw;g[w+52>>2]=ar;g[w+56>>2]=ah;g[w+60>>2]=0.0;c[Q>>2]=c[L>>2];c[Q+4>>2]=c[L+4>>2];c[Q+8>>2]=c[L+8>>2];c[Q+12>>2]=c[L+12>>2];c[U>>2]=c[O>>2];c[U+4>>2]=c[O+4>>2];c[U+8>>2]=c[O+8>>2];c[U+12>>2]=c[O+12>>2];c[P>>2]=c[Z>>2];c[P+4>>2]=c[Z+4>>2];c[P+8>>2]=c[Z+8>>2];c[P+12>>2]=c[Z+12>>2];Z=v+48|0;O=w+48|0;c[Z>>2]=c[O>>2];c[Z+4>>2]=c[O+4>>2];c[Z+8>>2]=c[O+8>>2];c[Z+12>>2]=c[O+12>>2];O=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;dF[c[(c[O>>2]|0)+56>>2]&255](O,v,ad)}if((ac&1|0)==0){i=e;return}anZ(x,R,6.0868353843688965,ad);ac=v|0;O=x|0;ah=+g[O>>2];Z=v+4|0;w=x+4|0;ar=+g[w>>2];L=v+8|0;ab=x+8|0;aw=+g[ab>>2];k=v+16|0;j=v+20|0;M=v+24|0;ao=+g[l>>2]+(ah*+g[k>>2]+ar*+g[j>>2]+aw*+g[M>>2]);q=v+32|0;N=v+36|0;s=v+40|0;ap=+g[Y>>2]+(ah*+g[q>>2]+ar*+g[N>>2]+aw*+g[s>>2]);u=x;g[O>>2]=+g[o>>2]+(+g[ac>>2]*ah+ +g[Z>>2]*ar+ +g[L>>2]*aw);g[w>>2]=ao;g[ab>>2]=ap;g[x+12>>2]=0.0;ab=y|0;w=y+4|0;O=y+8|0;t=y;aj=y+12|0;_=v+48|0;v=z;b=A;am=0;do{anZ(y,R,+(am|0)*6.283185005187988*.03125,ad);ap=+g[ab>>2];ao=+g[w>>2];aw=+g[O>>2];ar=+g[l>>2]+(ap*+g[k>>2]+ao*+g[j>>2]+aw*+g[M>>2]);ah=+g[Y>>2]+(ap*+g[q>>2]+ao*+g[N>>2]+aw*+g[s>>2]);g[ab>>2]=+g[o>>2]+(+g[ac>>2]*ap+ +g[Z>>2]*ao+ +g[L>>2]*aw);g[w>>2]=ar;g[O>>2]=ah;g[aj>>2]=0.0;r=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;K=c[(c[r>>2]|0)+8>>2]|0;aDD(v|0,0,16);dI[K&1023](r,x,y,z);if((am&3|0)==0){r=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;K=c[(c[r>>2]|0)+8>>2]|0;aDD(b|0,0,16);dI[K&1023](r,_,y,A)}c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];am=am+1|0;}while((am|0)<32);ah=+g[d+444>>2];ar=+g[d+504>>2];am=c[d+28>>2]|0;if(+g[am+336>>2]>0.0){t=am+4|0;u=d+356|0;d=h;anx(h,t|0,u);aw=+g[u+48>>2];ao=+g[u+52>>2];ap=+g[u+56>>2];ag=+g[t>>2]*aw+ +g[am+8>>2]*ao+ +g[am+12>>2]*ap+ +g[am+52>>2];ai=+g[am+20>>2]*aw+ +g[am+24>>2]*ao+ +g[am+28>>2]*ap+ +g[am+56>>2];an=+g[am+36>>2]*aw+ +g[am+40>>2]*ao+ +g[am+44>>2]*ap+ +g[am+60>>2];am=B+48|0;t=B|0;do{t=t+16|0;}while((t|0)!=(am|0));am=B;c[am>>2]=c[d>>2];c[am+4>>2]=c[d+4>>2];c[am+8>>2]=c[d+8>>2];c[am+12>>2]=c[d+12>>2];d=B+16|0;t=h+16|0;c[d>>2]=c[t>>2];c[d+4>>2]=c[t+4>>2];c[d+8>>2]=c[t+8>>2];c[d+12>>2]=c[t+12>>2];t=B+32|0;u=h+32|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];g[B+48>>2]=ag;g[B+52>>2]=ai;g[B+56>>2]=an;g[B+60>>2]=0.0;c[Q>>2]=c[am>>2];c[Q+4>>2]=c[am+4>>2];c[Q+8>>2]=c[am+8>>2];c[Q+12>>2]=c[am+12>>2];c[U>>2]=c[d>>2];c[U+4>>2]=c[d+4>>2];c[U+8>>2]=c[d+8>>2];c[U+12>>2]=c[d+12>>2];c[P>>2]=c[t>>2];c[P+4>>2]=c[t+4>>2];c[P+8>>2]=c[t+8>>2];c[P+12>>2]=c[t+12>>2];t=_;d=B+48|0;c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2]}else{d=c[H>>2]|0;H=d+4|0;t=f;anx(f,H|0,al);an=+g[V>>2];ai=+g[W>>2];ag=+g[X>>2];ap=+g[H>>2]*an+ +g[d+8>>2]*ai+ +g[d+12>>2]*ag+ +g[d+52>>2];ao=+g[d+20>>2]*an+ +g[d+24>>2]*ai+ +g[d+28>>2]*ag+ +g[d+56>>2];aw=+g[d+36>>2]*an+ +g[d+40>>2]*ai+ +g[d+44>>2]*ag+ +g[d+60>>2];d=C+48|0;H=C|0;do{H=H+16|0;}while((H|0)!=(d|0));d=C;c[d>>2]=c[t>>2];c[d+4>>2]=c[t+4>>2];c[d+8>>2]=c[t+8>>2];c[d+12>>2]=c[t+12>>2];t=C+16|0;H=f+16|0;c[t>>2]=c[H>>2];c[t+4>>2]=c[H+4>>2];c[t+8>>2]=c[H+8>>2];c[t+12>>2]=c[H+12>>2];H=C+32|0;X=f+32|0;c[H>>2]=c[X>>2];c[H+4>>2]=c[X+4>>2];c[H+8>>2]=c[X+8>>2];c[H+12>>2]=c[X+12>>2];g[C+48>>2]=ap;g[C+52>>2]=ao;g[C+56>>2]=aw;g[C+60>>2]=0.0;c[Q>>2]=c[d>>2];c[Q+4>>2]=c[d+4>>2];c[Q+8>>2]=c[d+8>>2];c[Q+12>>2]=c[d+12>>2];c[U>>2]=c[t>>2];c[U+4>>2]=c[t+4>>2];c[U+8>>2]=c[t+8>>2];c[U+12>>2]=c[t+12>>2];c[P>>2]=c[H>>2];c[P+4>>2]=c[H+4>>2];c[P+8>>2]=c[H+8>>2];c[P+12>>2]=c[H+12>>2];H=_;P=C+48|0;c[H>>2]=c[P>>2];c[H+4>>2]=c[P+4>>2];c[H+8>>2]=c[P+8>>2];c[H+12>>2]=c[P+12>>2]}P=D;H=_;c[P>>2]=c[H>>2];c[P+4>>2]=c[H+4>>2];c[P+8>>2]=c[H+8>>2];c[P+12>>2]=c[H+12>>2];g[E>>2]=+g[ac>>2];g[E+4>>2]=+g[k>>2];g[E+8>>2]=+g[q>>2];g[E+12>>2]=0.0;g[F>>2]=+g[Z>>2];g[F+4>>2]=+g[j>>2];g[F+8>>2]=+g[N>>2];g[F+12>>2]=0.0;N=cA[c[(c[aa>>2]|0)+16>>2]&4095]($)|0;$=c[(c[N>>2]|0)+60>>2]|0;aDD(G|0,0,16);dt[$&63](N,D,E,F,ad,ad,-0.0-ar-ah,ah-ar,G,1,10.0);i=e;return};default:{i=e;return}}}function aoi(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0;b=a+204|0;d=c[b>>2]|0;if((d|0)<=0){return}e=a+212|0;a=0;f=d;while(1){d=c[(c[e>>2]|0)+(a<<2)>>2]|0;h=c[d+216>>2]|0;do{if((h|0)==5|(h|0)==2){i=f}else{if((c[d+204>>2]&3|0)!=0){i=f;break}j=+g[d+360>>2]*+g[d+344>>2];k=+g[d+364>>2]*+g[d+348>>2];l=d+404|0;g[l>>2]=+g[d+356>>2]*+g[d+340>>2]+ +g[l>>2];l=d+408|0;g[l>>2]=j+ +g[l>>2];l=d+412|0;g[l>>2]=k+ +g[l>>2];i=c[b>>2]|0}}while(0);d=a+1|0;if((d|0)<(i|0)){a=d;f=i}else{break}}return}function aoj(a){a=a|0;var b=0,d=0;b=a+204|0;if((c[b>>2]|0)<=0){return}d=a+212|0;a=0;do{aDD((c[(c[d>>2]|0)+(a<<2)>>2]|0)+404|0,0,32);a=a+1|0;}while((a|0)<(c[b>>2]|0));return}function aok(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=i;i=i+144|0;e=d|0;f=d+16|0;h=d+80|0;aDo(17984);do{if((a[b+242|0]&1)==0){j=b+204|0;k=c[j>>2]|0;if((k|0)<=0){break}l=b+212|0;m=b+236|0;n=0;o=k;while(1){k=c[(c[l>>2]|0)+(n<<2)>>2]|0;p=c[k+216>>2]|0;do{if((p|0)==5|(p|0)==2){q=o}else{r=k+472|0;if((c[r>>2]|0)==0){q=o;break}if((c[k+204>>2]&3|0)!=0){q=o;break}anY(k+68|0,+g[k+132>>2],+g[k+136>>2],+g[k+140>>2],k+148|0,+g[m>>2]*+g[k+240>>2],h);s=c[r>>2]|0;cv[c[(c[s>>2]|0)+12>>2]&2047](s,h);q=c[j>>2]|0}}while(0);k=n+1|0;if((k|0)<(q|0)){n=k;o=q}else{break}}}else{o=b+8|0;n=c[o>>2]|0;if((n|0)<=0){break}j=b+16|0;m=b+236|0;l=0;k=n;while(1){n=c[(c[j>>2]|0)+(l<<2)>>2]|0;do{if((c[n+232>>2]&2|0)==0|(n|0)==0){t=k}else{p=n+472|0;if((c[p>>2]|0)==0){t=k;break}if((c[n+204>>2]&3|0)!=0){t=k;break}anY(n+68|0,+g[n+132>>2],+g[n+136>>2],+g[n+140>>2],n+148|0,+g[m>>2]*+g[n+240>>2],f);s=c[p>>2]|0;cv[c[(c[s>>2]|0)+12>>2]&2047](s,f);t=c[o>>2]|0}}while(0);n=l+1|0;if((n|0)<(t|0)){l=n;k=t}else{break}}}}while(0);t=c[9152]|0;f=t+16|0;b=(c[f>>2]|0)-1|0;c[f>>2]=b;if((b|0)!=0){i=d;return}do{if((c[t+4>>2]|0)==0){u=t}else{b3(e|0,0)|0;b=c[10742]|0;q=t+8|0;g[q>>2]=+(((c[e+4>>2]|0)-(c[b+4>>2]|0)+(((c[e>>2]|0)-(c[b>>2]|0)|0)*1e6|0)-(c[t+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[q>>2];if((c[f>>2]|0)==0){u=c[9152]|0;break}else{i=d;return}}}while(0);c[9152]=c[u+20>>2];i=d;return}function aol(b,d,e,f){b=b|0;d=+d;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0;h=i;i=i+16|0;j=h|0;aDi();aDo(17464);k=b+236|0;do{if((e|0)==0){g[k>>2]=d;l=+P(+d)>=1.1920928955078125e-7|0;m=l;n=d;o=l}else{p=+g[k>>2]+d;g[k>>2]=p;if(p>2]=p- +(l|0)*f;m=e;n=f;o=l}}while(0);e=b|0;k=b;if((cA[c[(c[k>>2]|0)+16>>2]&4095](e)|0)!=0){l=cA[c[(c[k>>2]|0)+16>>2]&4095](e)|0;a[39240]=(cA[c[(c[l>>2]|0)+48>>2]&4095](l)|0)>>>4&1}do{if((o|0)==0){ct[c[(c[b>>2]|0)+76>>2]&2047](b)}else{l=(o|0)>(m|0)?m:o;e=b;cq[c[(c[e>>2]|0)+160>>2]&1023](b,n*+(l|0));k=b;ct[c[(c[k>>2]|0)+164>>2]&2047](b);if((l|0)>0){q=0}else{break}do{cq[c[(c[e>>2]|0)+156>>2]&1023](b,n);ct[c[(c[k>>2]|0)+76>>2]&2047](b);q=q+1|0;}while((q|0)<(l|0))}}while(0);ct[c[(c[b>>2]|0)+116>>2]&2047](b);c[10736]=(c[10736]|0)+1;b=c[9152]|0;q=b+16|0;m=(c[q>>2]|0)-1|0;c[q>>2]=m;if((m|0)!=0){i=h;return o|0}do{if((c[b+4>>2]|0)==0){r=b}else{b3(j|0,0)|0;m=c[10742]|0;l=b+8|0;g[l>>2]=+(((c[j+4>>2]|0)-(c[m+4>>2]|0)+(((c[j>>2]|0)-(c[m>>2]|0)|0)*1e6|0)-(c[b+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[l>>2];if((c[q>>2]|0)==0){r=c[9152]|0;break}else{i=h;return o|0}}}while(0);c[9152]=c[r+20>>2];i=h;return o|0}function aom(b,d){b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0;e=i;i=i+8|0;f=e|0;aDo(16648);h=b+204|0;if((c[h>>2]|0)>0){j=b+212|0;b=(a[39240]&1)==0;k=0;do{l=c[(c[j>>2]|0)+(k<<2)>>2]|0;L2926:do{if((l|0)!=0){m=l+216|0;n=c[m>>2]|0;L2928:do{if((n|0)==2|(n|0)==4){o=n;p=2712}else{q=+g[l+304>>2];r=+g[l+308>>2];s=+g[l+312>>2];t=+g[l+464>>2];do{if(q*q+r*r+s*s>2];v=+g[l+324>>2];w=+g[l+328>>2];x=+g[l+468>>2];if(u*u+v*v+w*w>=x*x){break}y=l+220|0;g[y>>2]=+g[y>>2]+d;o=n;p=2712;break L2928}}while(0);g[l+220>>2]=0.0;if((n-4|0)>>>0<2){o=n;p=2712;break}c[m>>2]=0;z=0}}while(0);if((p|0)==2712){p=0;if((o|0)==4){break}else{z=o}}do{if(b){if((z-2|0)>>>0>=2){if(+g[l+220>>2]<=2.0){break}}if((c[l+204>>2]&3|0)!=0){if((z-4|0)>>>0<2){break L2926}c[m>>2]=2;break L2926}if((z|0)==1){c[m>>2]=3;break L2926}else{A=z}if((A|0)!=2){break L2926}aDD(l+304|0,0,32);break L2926}}while(0);if((z-4|0)>>>0<2){break}c[m>>2]=1}}while(0);k=k+1|0;}while((k|0)<(c[h>>2]|0))}h=c[9152]|0;k=h+16|0;z=(c[k>>2]|0)-1|0;c[k>>2]=z;if((z|0)!=0){i=e;return}do{if((c[h+4>>2]|0)==0){B=h}else{b3(f|0,0)|0;z=c[10742]|0;A=h+8|0;g[A>>2]=+(((c[f+4>>2]|0)-(c[z+4>>2]|0)+(((c[f>>2]|0)-(c[z>>2]|0)|0)*1e6|0)-(c[h+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[A>>2];if((c[k>>2]|0)==0){B=c[9152]|0;break}else{i=e;return}}}while(0);c[9152]=c[B+20>>2];i=e;return}function aon(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0;d=a+220|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];d=a+204|0;f=c[d>>2]|0;if((f|0)<=0){return}h=a+212|0;a=b|0;i=b+4|0;j=b+8|0;b=0;k=f;while(1){f=c[(c[h>>2]|0)+(b<<2)>>2]|0;l=c[f+216>>2]|0;do{if((l|0)==5|(l|0)==2){m=k}else{if((c[f+496>>2]&1|0)!=0){m=k;break}n=+g[f+336>>2];if(n!=0.0){o=1.0/n;n=o*+g[i>>2];p=o*+g[j>>2];g[f+356>>2]=o*+g[a>>2];g[f+360>>2]=n;g[f+364>>2]=p;g[f+368>>2]=0.0}q=f+372|0;c[q>>2]=c[e>>2];c[q+4>>2]=c[e+4>>2];c[q+8>>2]=c[e+8>>2];c[q+12>>2]=c[e+12>>2];m=c[d>>2]|0}}while(0);f=b+1|0;if((f|0)<(m|0)){b=f;k=m}else{break}}return}function aoo(a,b){a=a|0;b=b|0;var d=0;d=a;a=b+220|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function aop(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;atB(a|0,b,c,d);return}function aoq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!((c[b+232>>2]&2|0)==0|(b|0)==0)){cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}d=b+188|0;e=c[d>>2]|0;if((e|0)!=0){f=a+76|0;g=c[f>>2]|0;h=cA[c[(c[g>>2]|0)+36>>2]&4095](g)|0;g=a+24|0;dA[c[(c[h>>2]|0)+40>>2]&511](h,e,c[g>>2]|0);h=c[f>>2]|0;dA[c[(c[h>>2]|0)+12>>2]&511](h,e,c[g>>2]|0);c[d>>2]=0}d=a+8|0;g=c[d>>2]|0;e=a+16|0;a=0;while(1){if((a|0)>=(g|0)){i=2759;break}j=c[e>>2]|0;k=j+(a<<2)|0;if((c[k>>2]|0)==(b|0)){break}else{a=a+1|0}}if((i|0)==2759){return}i=g-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[e>>2]|0)+(i<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1;return}function aor(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=a+204|0;e=c[d>>2]|0;f=a+212|0;g=0;while(1){if((g|0)>=(e|0)){break}h=c[f>>2]|0;i=h+(g<<2)|0;if((c[i>>2]|0)==(b|0)){j=2763;break}else{g=g+1|0}}if((j|0)==2763){g=e-1|0;c[i>>2]=c[h+(g<<2)>>2];c[(c[f>>2]|0)+(g<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1}d=b|0;g=b+188|0;b=c[g>>2]|0;if((b|0)!=0){f=a+76|0;h=c[f>>2]|0;i=cA[c[(c[h>>2]|0)+36>>2]&4095](h)|0;h=a+24|0;dA[c[(c[i>>2]|0)+40>>2]&511](i,b,c[h>>2]|0);i=c[f>>2]|0;dA[c[(c[i>>2]|0)+12>>2]&511](i,b,c[h>>2]|0);c[g>>2]=0}g=a+8|0;h=c[g>>2]|0;b=a+16|0;a=0;while(1){if((a|0)>=(h|0)){j=2772;break}k=c[b>>2]|0;l=k+(a<<2)|0;if((c[l>>2]|0)==(d|0)){break}else{a=a+1|0}}if((j|0)==2772){return}j=h-1|0;c[l>>2]=c[k+(j<<2)>>2];c[(c[b>>2]|0)+(j<<2)>>2]=d;c[g>>2]=(c[g>>2]|0)-1;return}function aos(b,d){b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=i;i=i+32|0;f=e|0;h=e+8|0;aDo(17080);j=b|0;k=c[b+92>>2]|0;if((k|0)!=0){cq[k&1023](j,d)}k=b;cq[c[(c[k>>2]|0)+136>>2]&1023](b,d);l=b|0;g[b+28>>2]=d;c[b+32>>2]=0;c[b+48>>2]=cA[c[(c[b>>2]|0)+16>>2]&4095](l)|0;ct[c[(c[b>>2]|0)+40>>2]&2047](l);if((a[b+44|0]&1)!=0){cq[c[(c[k>>2]|0)+144>>2]&1023](b,d)}ct[c[(c[b>>2]|0)+148>>2]&2047](b);g[b+112>>2]=d;cv[c[(c[b>>2]|0)+152>>2]&2047](b,b+100|0);cq[c[(c[k>>2]|0)+140>>2]&1023](b,d);aDo(16856);k=b+248|0;if((c[k>>2]|0)>0){m=b+256|0;n=0;do{o=c[(c[m>>2]|0)+(n<<2)>>2]|0;dF[c[(c[o>>2]|0)+8>>2]&255](o,l,d);n=n+1|0;}while((n|0)<(c[k>>2]|0))}k=c[9152]|0;n=k+16|0;l=(c[n>>2]|0)-1|0;c[n>>2]=l;do{if((l|0)==0){if((c[k+4>>2]|0)==0){p=k}else{b3(h|0,0)|0;m=c[10742]|0;o=k+8|0;g[o>>2]=+(((c[h+4>>2]|0)-(c[m+4>>2]|0)+(((c[h>>2]|0)-(c[m>>2]|0)|0)*1e6|0)-(c[k+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[o>>2];if((c[n>>2]|0)!=0){break}p=c[9152]|0}c[9152]=c[p+20>>2]}}while(0);aom(b,d);p=c[b+88>>2]|0;if((p|0)!=0){cq[p&1023](j,d)}j=c[9152]|0;p=j+16|0;b=(c[p>>2]|0)-1|0;c[p>>2]=b;if((b|0)!=0){i=e;return}do{if((c[j+4>>2]|0)==0){q=j}else{b3(f|0,0)|0;b=c[10742]|0;n=j+8|0;g[n>>2]=+(((c[f+4>>2]|0)-(c[b+4>>2]|0)+(((c[f>>2]|0)-(c[b>>2]|0)|0)*1e6|0)-(c[j+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[n>>2];if((c[p>>2]|0)==0){q=c[9152]|0;break}else{i=e;return}}}while(0);c[9152]=c[q+20>>2];i=e;return}function aot(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+184|0;e=c[d>>2]|0;f=a+192|0;a=0;while(1){if((a|0)>=(e|0)){break}g=c[f>>2]|0;h=g+(a<<2)|0;if((c[h>>2]|0)==(b|0)){i=2825;break}else{a=a+1|0}}if((i|0)==2825){a=e-1|0;c[h>>2]=c[g+(a<<2)>>2];c[(c[f>>2]|0)+(a<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1}d=c[b+24>>2]|0;a=d+480|0;f=c[a>>2]|0;g=d+488|0;h=0;while(1){if((h|0)>=(f|0)){j=f;break}k=c[g>>2]|0;l=k+(h<<2)|0;if((c[l>>2]|0)==(b|0)){i=2829;break}else{h=h+1|0}}if((i|0)==2829){h=f-1|0;c[l>>2]=c[k+(h<<2)>>2];c[(c[g>>2]|0)+(h<<2)>>2]=b;h=(c[a>>2]|0)-1|0;c[a>>2]=h;j=h}c[d+252>>2]=(j|0)>0;j=c[b+28>>2]|0;d=j+480|0;h=c[d>>2]|0;a=j+488|0;g=0;while(1){if((g|0)>=(h|0)){m=h;i=2835;break}n=c[a>>2]|0;o=n+(g<<2)|0;if((c[o>>2]|0)==(b|0)){break}else{g=g+1|0}}if((i|0)==2835){p=(m|0)>0;q=p&1;r=j+252|0;c[r>>2]=q;return}i=h-1|0;c[o>>2]=c[n+(i<<2)>>2];c[(c[a>>2]|0)+(i<<2)>>2]=b;b=(c[d>>2]|0)-1|0;c[d>>2]=b;m=b;p=(m|0)>0;q=p&1;r=j+252|0;c[r>>2]=q;return}function aou(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a+248|0;e=c[d>>2]|0;f=a+256|0;a=0;while(1){if((a|0)>=(e|0)){g=2843;break}h=c[f>>2]|0;i=h+(a<<2)|0;if((c[i>>2]|0)==(b|0)){break}else{a=a+1|0}}if((g|0)==2843){return}g=e-1|0;c[i>>2]=c[h+(g<<2)>>2];c[(c[f>>2]|0)+(g<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1;return}function aov(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=d|0;f=d+204|0;h=c[f>>2]|0;do{if((h&3|0)==0){if((c[d+496>>2]&1|0)!=0){break}i=b+220|0;j=+g[d+336>>2];if(j!=0.0){k=1.0/j;j=k*+g[b+224>>2];l=k*+g[b+228>>2];g[d+356>>2]=k*+g[i>>2];g[d+360>>2]=j;g[d+364>>2]=l;g[d+368>>2]=0.0}m=d+372|0;n=i;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2]}}while(0);if((c[d+192>>2]|0)==0){return}do{if((h&1|0)==0){n=b+204|0;m=c[n>>2]|0;i=b+208|0;do{if((m|0)==(c[i>>2]|0)){o=(m|0)==0?1:m<<1;if((m|0)>=(o|0)){p=m;break}if((o|0)==0){q=0;r=m}else{c[9806]=(c[9806]|0)+1;s=aDx((o<<2)+19|0)|0;if((s|0)==0){t=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;t=s+(u+4)|0}q=t;r=c[n>>2]|0}u=b+212|0;if((r|0)>0){s=0;do{v=q+(s<<2)|0;if((v|0)!=0){c[v>>2]=c[(c[u>>2]|0)+(s<<2)>>2]}s=s+1|0;}while((s|0)<(r|0))}s=c[u>>2]|0;v=b+216|0;if((s|0)!=0){if((a[v]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[s-4>>2]|0)}c[u>>2]=0}a[v]=1;c[u>>2]=q;c[i>>2]=o;p=c[n>>2]|0}else{p=m}}while(0);m=(c[b+212>>2]|0)+(p<<2)|0;if((m|0)==0){w=p}else{c[m>>2]=d;w=c[n>>2]|0}c[n>>2]=w+1;x=c[f>>2]|0}else{m=d+216|0;if(((c[m>>2]|0)-4|0)>>>0<2){x=h;break}c[m>>2]=2;x=h}}while(0);if((x&1|0)==0){y=(x&2|0)==0}else{y=0}dI[c[(c[b>>2]|0)+32>>2]&1023](b,e,y?1:2,y?-1:-3);return}function aow(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;h=d|0;i=c[d+204>>2]|0;do{if((i&3|0)==0){if((c[d+496>>2]&1|0)!=0){break}j=b+220|0;k=+g[d+336>>2];if(k!=0.0){l=1.0/k;k=l*+g[b+224>>2];m=l*+g[b+228>>2];g[d+356>>2]=l*+g[j>>2];g[d+360>>2]=k;g[d+364>>2]=m;g[d+368>>2]=0.0}n=d+372|0;o=j;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2]}}while(0);if((c[d+192>>2]|0)==0){return}do{if((i&1|0)==0){o=b+204|0;n=c[o>>2]|0;j=b+208|0;do{if((n|0)==(c[j>>2]|0)){p=(n|0)==0?1:n<<1;if((n|0)>=(p|0)){q=n;break}if((p|0)==0){r=0;s=n}else{c[9806]=(c[9806]|0)+1;t=aDx((p<<2)+19|0)|0;if((t|0)==0){u=0}else{v=-(t+4|0)&15;c[t+v>>2]=t;u=t+(v+4)|0}r=u;s=c[o>>2]|0}v=b+212|0;if((s|0)>0){t=0;do{w=r+(t<<2)|0;if((w|0)!=0){c[w>>2]=c[(c[v>>2]|0)+(t<<2)>>2]}t=t+1|0;}while((t|0)<(s|0))}t=c[v>>2]|0;w=b+216|0;if((t|0)!=0){if((a[w]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[t-4>>2]|0)}c[v>>2]=0}a[w]=1;c[v>>2]=r;c[j>>2]=p;q=c[o>>2]|0}else{q=n}}while(0);n=(c[b+212>>2]|0)+(q<<2)|0;if((n|0)==0){x=q}else{c[n>>2]=d;x=c[o>>2]|0}c[o>>2]=x+1}else{n=d+216|0;if(((c[n>>2]|0)-4|0)>>>0<2){break}c[n>>2]=2}}while(0);dI[c[(c[b>>2]|0)+32>>2]&1023](b,h,e,f);return}function aox(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=b+184|0;g=c[f>>2]|0;h=b+188|0;do{if((g|0)==(c[h>>2]|0)){i=(g|0)==0?1:g<<1;if((g|0)>=(i|0)){j=g;break}if((i|0)==0){k=0;l=g}else{c[9806]=(c[9806]|0)+1;m=aDx((i<<2)+19|0)|0;if((m|0)==0){n=0}else{o=-(m+4|0)&15;c[m+o>>2]=m;n=m+(o+4)|0}k=n;l=c[f>>2]|0}o=b+192|0;if((l|0)>0){m=0;do{p=k+(m<<2)|0;if((p|0)!=0){c[p>>2]=c[(c[o>>2]|0)+(m<<2)>>2]}m=m+1|0;}while((m|0)<(l|0))}m=c[o>>2]|0;p=b+196|0;if((m|0)!=0){if((a[p]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-4>>2]|0)}c[o>>2]=0}a[p]=1;c[o>>2]=k;c[h>>2]=i;j=c[f>>2]|0}else{j=g}}while(0);g=(c[b+192>>2]|0)+(j<<2)|0;if((g|0)==0){q=j}else{c[g>>2]=d;q=c[f>>2]|0}c[f>>2]=q+1;if(!e){return}ap6(c[d+24>>2]|0,d);ap6(c[d+28>>2]|0,d);return}function aoy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=b+248|0;f=c[e>>2]|0;g=b+252|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[e>>2]|0}n=b+256|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=b+260|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[e>>2]|0}else{i=f}}while(0);f=(c[b+256>>2]|0)+(i<<2)|0;if((f|0)==0){p=i;q=p+1|0;c[e>>2]=q;return}c[f>>2]=d;p=c[e>>2]|0;q=p+1|0;c[e>>2]=q;return}function aoz(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function aoA(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function aoB(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+60>>2]&2047](a,b);return}function aoC(a,b){a=a|0;b=b|0;cv[c[(c[a>>2]|0)+64>>2]&2047](a,b);return}function aoD(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0;e=i;i=i+176|0;f=e+8|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+56|0;m=e+80|0;aDo(16528);n=l+16|0;a[n]=1;o=l+12|0;c[o>>2]=0;p=l+4|0;c[p>>2]=0;q=l+8|0;c[q>>2]=0;r=c[b+184>>2]|0;L3236:do{if((r|0)>0){c[9806]=(c[9806]|0)+1;s=aDx((r<<2)+19|0)|0;if((s|0)==0){t=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;t=s+(u+4)|0}u=c[p>>2]|0;if((u|0)>0){s=0;do{v=t+(s<<2)|0;if((v|0)!=0){c[v>>2]=c[(c[o>>2]|0)+(s<<2)>>2]}s=s+1|0;}while((s|0)<(u|0))}u=c[o>>2]|0;if((u|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[u-4>>2]|0)}c[o>>2]=0}a[n]=1;c[o>>2]=t;c[q>>2]=r;u=0;s=t;while(1){v=s+(u<<2)|0;if((v|0)!=0){c[v>>2]=0}v=u+1|0;if((v|0)>=(r|0)){break L3236}u=v;s=c[o>>2]|0}}}while(0);c[p>>2]=r;r=b;t=b+192|0;s=0;while(1){if((s|0)>=(cA[c[(c[r>>2]|0)+100>>2]&4095](b)|0)){break}c[(c[o>>2]|0)+(s<<2)>>2]=c[(c[t>>2]|0)+(s<<2)>>2];s=s+1|0}s=c[p>>2]|0;if((s|0)>1){aoR(l,0,s-1|0)}s=(cA[c[(c[r>>2]|0)+100>>2]&4095](b)|0)==0;r=s?0:c[o>>2]|0;s=b+172|0;l=c[s>>2]|0;t=c[p>>2]|0;u=b+80|0;v=c[u>>2]|0;w=b+72|0;x=c[w>>2]|0;y=b+24|0;z=c[y>>2]|0;c[m>>2]=18656;c[m+4>>2]=d;c[m+8>>2]=l;c[m+12>>2]=r;c[m+16>>2]=t;c[m+20>>2]=v;c[m+24>>2]=x;c[m+28>>2]=z;a[m+48|0]=1;c[m+44>>2]=0;c[m+36>>2]=0;c[m+40>>2]=0;a[m+68|0]=1;c[m+64>>2]=0;c[m+56>>2]=0;c[m+60>>2]=0;a[m+88|0]=1;c[m+84>>2]=0;c[m+76>>2]=0;c[m+80>>2]=0;x=c[(c[l>>2]|0)+8>>2]|0;v=b+8|0;t=c[v>>2]|0;r=cA[c[(c[z>>2]|0)+36>>2]&4095](z)|0;dA[x&511](l,t,r);r=c[b+176>>2]|0;t=c[y>>2]|0;y=m|0;aDo(16320);l=r+28|0;x=c[l>>2]|0;if((x|0)<0){z=r+32|0;A=r+36|0;if((c[z>>2]|0)<0){B=c[A>>2]|0;C=r+40|0;if((B|0)!=0){if((a[C]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[B-4>>2]|0)}c[A>>2]=0}a[C]=1;c[A>>2]=0;c[z>>2]=0;D=x}else{D=x}do{x=(c[A>>2]|0)+(D<<2)|0;if((x|0)!=0){c[x>>2]=0}D=D+1|0;}while((D|0)<0)}c[l>>2]=0;D=r+4|0;A=r+8|0;x=c[A>>2]|0;do{if((x|0)>0){z=r+16|0;C=0;do{B=c[z>>2]|0;E=B+(C<<3)|0;F=c[E>>2]|0;if((F|0)==(C|0)){G=C;H=B}else{I=B;B=E;E=F;while(1){F=I+(E<<3)|0;c[B>>2]=c[F>>2];J=c[F>>2]|0;F=c[z>>2]|0;K=F+(J<<3)|0;L=c[K>>2]|0;if((J|0)==(L|0)){G=J;H=F;break}else{I=F;B=K;E=L}}}c[H+(C<<3)>>2]=G;C=C+1|0;}while((C|0)<(x|0));C=c[A>>2]|0;z=k|0;if((C|0)>1){aBX(D,0,C-1|0);M=z;N=c[A>>2]|0}else{M=z;N=C}if((N|0)<=0){break}C=r+16|0;z=b+16|0;E=0;while(1){B=c[C>>2]|0;I=c[B+(E<<3)>>2]|0;L=E;do{L=L+1|0;O=(L|0)<(N|0);if(!O){break}}while((c[B+(L<<3)>>2]|0)==(I|0));L3309:do{if((E|0)<(L|0)){K=c[z>>2]|0;F=E;J=1;while(1){P=c[K+(c[B+(F<<3)+4>>2]<<2)>>2]|0;if((c[P+208>>2]|0)==(I|0)){Q=c[P+216>>2]|0;R=J&(Q|0)!=1&(Q|0)!=4}else{R=J}Q=F+1|0;if((Q|0)<(L|0)){F=Q;J=R}else{break}}if(R){J=E;F=B;Q=K;while(1){P=c[Q+(c[F+(J<<3)+4>>2]<<2)>>2]|0;do{if((c[P+208>>2]|0)==(I|0)){S=P+216|0;if(((c[S>>2]|0)-4|0)>>>0<2){break}c[S>>2]=2}}while(0);P=J+1|0;if((P|0)>=(L|0)){break L3309}J=P;F=c[C>>2]|0;Q=c[z>>2]|0}}else{Q=E;F=B;J=K;while(1){P=c[J+(c[F+(Q<<3)+4>>2]<<2)>>2]|0;do{if((c[P+208>>2]|0)==(I|0)){S=P+216|0;if((c[S>>2]|0)!=2){break}c[S>>2]=3;g[P+220>>2]=0.0}}while(0);P=Q+1|0;if((P|0)>=(L|0)){break L3309}Q=P;F=c[C>>2]|0;J=c[z>>2]|0}}}}while(0);if(O){E=L}else{break}}}else{}}while(0);O=t;R=cA[c[(c[O>>2]|0)+36>>2]&4095](t)|0;if((R|0)>0){N=t;M=r+64|0;D=t;k=r+32|0;x=r+36|0;G=r+40|0;H=0;do{E=dj[c[(c[N>>2]|0)+40>>2]&511](t,H)|0;z=c[E+1108>>2]|0;C=z;I=c[E+1112>>2]|0;B=I;if((z|0)==0){T=3037}else{if((c[z+216>>2]|0)==2){T=3037}else{T=3039}}do{if((T|0)==3037){T=0;if((I|0)==0){break}if((c[I+216>>2]|0)!=2){T=3039}}}while(0);do{if((T|0)==3039){T=0;J=z+204|0;do{if((c[J>>2]&2|0)!=0){if((c[z+216>>2]|0)==2){break}if((c[I+204>>2]&3|0)!=0){break}F=I+216|0;if(((c[F>>2]|0)-4|0)>>>0>=2){c[F>>2]=1}g[I+220>>2]=0.0}}while(0);do{if((c[I+204>>2]&2|0)!=0){if((c[I+216>>2]|0)==2){break}if((c[J>>2]&3|0)!=0){break}L=z+216|0;if(((c[L>>2]|0)-4|0)>>>0>=2){c[L>>2]=1}g[z+220>>2]=0.0}}while(0);if((a[M]&1)==0){break}if(!(cS[c[(c[D>>2]|0)+28>>2]&511](t,C,B)|0)){break}J=c[l>>2]|0;do{if((J|0)==(c[k>>2]|0)){L=(J|0)==0?1:J<<1;if((J|0)>=(L|0)){U=J;break}if((L|0)==0){V=0;W=J}else{c[9806]=(c[9806]|0)+1;F=aDx((L<<2)+19|0)|0;if((F|0)==0){X=0}else{Q=-(F+4|0)&15;c[F+Q>>2]=F;X=F+(Q+4)|0}V=X;W=c[l>>2]|0}if((W|0)>0){Q=0;do{F=V+(Q<<2)|0;if((F|0)!=0){c[F>>2]=c[(c[x>>2]|0)+(Q<<2)>>2]}Q=Q+1|0;}while((Q|0)<(W|0))}Q=c[x>>2]|0;if((Q|0)!=0){if((a[G]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[Q-4>>2]|0)}c[x>>2]=0}a[G]=1;c[x>>2]=V;c[k>>2]=L;U=c[l>>2]|0}else{U=J}}while(0);J=(c[x>>2]|0)+(U<<2)|0;if((J|0)==0){Y=U}else{c[J>>2]=E;Y=c[l>>2]|0}c[l>>2]=Y+1}}while(0);H=H+1|0;}while((H|0)<(R|0))}R=c[9152]|0;H=R+16|0;Y=(c[H>>2]|0)-1|0;c[H>>2]=Y;do{if((Y|0)==0){if((c[R+4>>2]|0)==0){Z=R}else{b3(j|0,0)|0;U=c[10742]|0;x=R+8|0;g[x>>2]=+(((c[j+4>>2]|0)-(c[U+4>>2]|0)+(((c[j>>2]|0)-(c[U>>2]|0)|0)*1e6|0)-(c[R+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[x>>2];if((c[H>>2]|0)!=0){break}Z=c[9152]|0}c[9152]=c[Z+20>>2]}}while(0);Z=c[A>>2]|0;aDo(17616);do{if((a[r+64|0]&1)==0){A=cA[c[(c[t>>2]|0)+44>>2]&4095](t)|0;H=cA[c[(c[O>>2]|0)+36>>2]&4095](t)|0;c_[c[(c[m>>2]|0)+8>>2]&127](y,c[b+16>>2]|0,c[v>>2]|0,A,H,-1)}else{H=c[l>>2]|0;if((H|0)>1){aAo(r+24|0,0,H-1|0)}if((Z|0)<=0){break}A=r+16|0;R=r+36|0;j=r+48|0;Y=r+52|0;x=r+56|0;U=r+60|0;k=m;V=b+16|0;G=1;W=0;X=0;while(1){D=c[A>>2]|0;M=c[D+(X<<3)>>2]|0;L3414:do{if((X|0)<(Z|0)){T=1;N=X;E=D;B=M;while(1){if((B|0)!=(M|0)){_=T;$=N;break L3414}C=c[(c[V>>2]|0)+(c[E+(N<<3)+4>>2]<<2)>>2]|0;z=c[j>>2]|0;do{if((z|0)==(c[Y>>2]|0)){I=(z|0)==0?1:z<<1;if((z|0)>=(I|0)){aa=z;break}if((I|0)==0){ab=0;ac=z}else{c[9806]=(c[9806]|0)+1;J=aDx((I<<2)+19|0)|0;if((J|0)==0){ad=0}else{Q=-(J+4|0)&15;c[J+Q>>2]=J;ad=J+(Q+4)|0}ab=ad;ac=c[j>>2]|0}if((ac|0)>0){Q=0;do{J=ab+(Q<<2)|0;if((J|0)!=0){c[J>>2]=c[(c[x>>2]|0)+(Q<<2)>>2]}Q=Q+1|0;}while((Q|0)<(ac|0))}Q=c[x>>2]|0;if((Q|0)!=0){if((a[U]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[Q-4>>2]|0)}c[x>>2]=0}a[U]=1;c[x>>2]=ab;c[Y>>2]=I;aa=c[j>>2]|0}else{aa=z}}while(0);z=(c[x>>2]|0)+(aa<<2)|0;if((z|0)==0){ae=aa}else{c[z>>2]=C;ae=c[j>>2]|0}c[j>>2]=ae+1;z=c[C+216>>2]|0;Q=T&((z|0)==2|(z|0)==5);z=N+1|0;if((z|0)>=(Z|0)){_=Q;$=z;break L3414}J=c[A>>2]|0;T=Q;N=z;E=J;B=c[J+(z<<3)>>2]|0}}else{_=1;$=X}}while(0);do{if((W|0)<(H|0)){D=c[R>>2]|0;B=D+(W<<2)|0;E=c[B>>2]|0;N=c[(c[E+1108>>2]|0)+208>>2]|0;if((N|0)>-1){af=N}else{af=c[(c[E+1112>>2]|0)+208>>2]|0}if((af|0)==(M|0)){ag=W}else{ah=0;ai=0;aj=G;break}do{ag=ag+1|0;if((ag|0)>=(H|0)){break}E=c[D+(ag<<2)>>2]|0;N=c[(c[E+1108>>2]|0)+208>>2]|0;if((N|0)>-1){ak=N}else{ak=c[(c[E+1112>>2]|0)+208>>2]|0}}while((M|0)==(ak|0));ah=B;ai=ag-W|0;aj=ag}else{ah=0;ai=0;aj=G}}while(0);if(!_){c_[c[(c[k>>2]|0)+8>>2]&127](y,c[x>>2]|0,c[j>>2]|0,ah,ai,M)}D=(ai|0)==0?W:aj;E=c[j>>2]|0;if((E|0)<0){if((c[Y>>2]|0)<0){N=c[x>>2]|0;if((N|0)!=0){if((a[U]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[N-4>>2]|0)}c[x>>2]=0}a[U]=1;c[x>>2]=0;c[Y>>2]=0;al=E}else{al=E}do{E=(c[x>>2]|0)+(al<<2)|0;if((E|0)!=0){c[E>>2]=0}al=al+1|0;}while((al|0)<0)}c[j>>2]=0;if(($|0)<(Z|0)){G=aj;W=D;X=$}else{break}}}}while(0);$=c[9152]|0;aj=$+16|0;Z=(c[aj>>2]|0)-1|0;c[aj>>2]=Z;do{if((Z|0)==0){if((c[$+4>>2]|0)==0){am=$}else{b3(h|0,0)|0;al=c[10742]|0;ai=$+8|0;g[ai>>2]=+(((c[h+4>>2]|0)-(c[al+4>>2]|0)+(((c[h>>2]|0)-(c[al>>2]|0)|0)*1e6|0)-(c[$+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[ai>>2];if((c[aj>>2]|0)!=0){break}am=c[9152]|0}c[9152]=c[am+20>>2]}}while(0);aoE(m);am=c[s>>2]|0;dI[c[(c[am>>2]|0)+16>>2]&1023](am,d,c[u>>2]|0,c[w>>2]|0);aoV(m);m=c[o>>2]|0;if((m|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-4>>2]|0)}c[o>>2]=0}a[n]=1;c[o>>2]=0;c[p>>2]=0;c[q>>2]=0;q=c[9152]|0;p=q+16|0;o=(c[p>>2]|0)-1|0;c[p>>2]=o;if((o|0)!=0){i=e;return}do{if((c[q+4>>2]|0)==0){an=q}else{b3(f|0,0)|0;o=c[10742]|0;n=q+8|0;g[n>>2]=+(((c[f+4>>2]|0)-(c[o+4>>2]|0)+(((c[f>>2]|0)-(c[o>>2]|0)|0)*1e6|0)-(c[q+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[n>>2];if((c[p>>2]|0)==0){an=c[9152]|0;break}else{i=e;return}}}while(0);c[9152]=c[an+20>>2];i=e;return}function aoE(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=b+56|0;e=c[d>>2]|0;f=b+76|0;g=c[f>>2]|0;if((g+e|0)>0){h=c[b+8>>2]|0;i=c[(c[h>>2]|0)+12>>2]|0;j=c[b+44>>2]|0;k=b+36|0;l=c[k>>2]|0;m=c[b+64>>2]|0;n=c[b+84>>2]|0;o=c[b+4>>2]|0;p=c[b+20>>2]|0;q=c[b+24>>2]|0;r=c[b+28>>2]|0;+cN[i&63](h,j,l,m,e,n,g,o,p,q,r);s=k}else{s=b+36|0}k=c[s>>2]|0;if((k|0)<0){r=b+40|0;q=b+44|0;if((c[r>>2]|0)<0){p=c[q>>2]|0;o=b+48|0;if((p|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[q>>2]=0}a[o]=1;c[q>>2]=0;c[r>>2]=0;t=k}else{t=k}do{k=(c[q>>2]|0)+(t<<2)|0;if((k|0)!=0){c[k>>2]=0}t=t+1|0;}while((t|0)<0)}c[s>>2]=0;s=c[d>>2]|0;if((s|0)<0){t=b+60|0;q=b+64|0;if((c[t>>2]|0)<0){k=c[q>>2]|0;r=b+68|0;if((k|0)!=0){if((a[r]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[k-4>>2]|0)}c[q>>2]=0}a[r]=1;c[q>>2]=0;c[t>>2]=0;u=s}else{u=s}do{s=(c[q>>2]|0)+(u<<2)|0;if((s|0)!=0){c[s>>2]=0}u=u+1|0;}while((u|0)<0)}c[d>>2]=0;d=c[f>>2]|0;if((d|0)>=0){c[f>>2]=0;return}u=b+80|0;q=b+84|0;if((c[u>>2]|0)<0){s=c[q>>2]|0;t=b+88|0;if((s|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[s-4>>2]|0)}c[q>>2]=0}a[t]=1;c[q>>2]=0;c[u>>2]=0;v=d}else{v=d}do{d=(c[q>>2]|0)+(v<<2)|0;if((d|0)!=0){c[d>>2]=0}v=v+1|0;}while((v|0)<0);c[f>>2]=0;return}function aoF(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;b=i;i=i+16|0;d=b|0;aDo(16384);e=a+176|0;f=c[e>>2]|0;h=a|0;dA[c[(c[f>>2]|0)+8>>2]&511](f,h,c[a+24>>2]|0);f=c[a+184>>2]|0;if((f|0)>0){j=a+192|0;a=0;do{k=c[(c[j>>2]|0)+(a<<2)>>2]|0;l=c[k+24>>2]|0;m=c[k+28>>2]|0;do{if((l|0)!=0){if((c[l+204>>2]&3|0)!=0|(m|0)==0){break}if((c[m+204>>2]&3|0)!=0){break}k=c[l+216>>2]|0;if((k|0)==5|(k|0)==2){k=c[m+216>>2]|0;if((k|0)==5|(k|0)==2){break}}k=c[l+208>>2]|0;n=c[m+208>>2]|0;o=(c[e>>2]|0)+16|0;p=c[o>>2]|0;q=p+(k<<3)|0;r=c[q>>2]|0;if((r|0)==(k|0)){s=k;t=p}else{k=p;p=q;q=r;while(1){r=k+(q<<3)|0;c[p>>2]=c[r>>2];u=c[r>>2]|0;r=c[o>>2]|0;v=r+(u<<3)|0;w=c[v>>2]|0;if((u|0)==(w|0)){s=u;t=r;break}else{k=r;p=v;q=w}}}q=t+(n<<3)|0;p=c[q>>2]|0;if((p|0)==(n|0)){x=n;y=t}else{k=t;w=q;q=p;while(1){p=k+(q<<3)|0;c[w>>2]=c[p>>2];v=c[p>>2]|0;p=c[o>>2]|0;r=p+(v<<3)|0;u=c[r>>2]|0;if((v|0)==(u|0)){x=v;y=p;break}else{k=p;w=r;q=u}}}if((s|0)==(x|0)){break}c[y+(s<<3)>>2]=x;q=c[o>>2]|0;w=q+(x<<3)+4|0;c[w>>2]=(c[w>>2]|0)+(c[q+(s<<3)+4>>2]|0)}}while(0);a=a+1|0;}while((a|0)<(f|0))}f=c[e>>2]|0;cv[c[(c[f>>2]|0)+12>>2]&2047](f,h);h=c[9152]|0;f=h+16|0;e=(c[f>>2]|0)-1|0;c[f>>2]=e;if((e|0)!=0){i=b;return}do{if((c[h+4>>2]|0)==0){z=h}else{b3(d|0,0)|0;e=c[10742]|0;a=h+8|0;g[a>>2]=+(((c[d+4>>2]|0)-(c[e+4>>2]|0)+(((c[d>>2]|0)-(c[e>>2]|0)|0)*1e6|0)-(c[h+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[a>>2];if((c[f>>2]|0)==0){z=c[9152]|0;break}else{i=b;return}}}while(0);c[9152]=c[z+20>>2];i=b;return}function aoG(a){a=a|0;return}function aoH(d,e){d=d|0;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0.0,aK=0,aL=0.0,aM=0,aN=0.0,aO=0.0,aP=0.0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0.0,aW=0.0,aX=0.0,aY=0.0,aZ=0.0,a_=0.0,a$=0.0,a0=0.0,a1=0.0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0,bf=0,bg=0,bh=0,bi=0;f=i;i=i+376|0;h=f+8|0;j=f+16|0;k=f+24|0;l=f+40|0;m=f+56|0;n=f+72|0;o=f+96|0;p=f+160|0;q=f+256|0;r=f+312|0;aDo(16224);s=d+204|0;if((c[s>>2]|0)>0){t=d+212|0;u=o+48|0;v=u|0;w=o+52|0;x=o+56|0;y=d|0;z=d+44|0;A=d+76|0;B=d+24|0;C=p|0;D=p+4|0;E=p+8|0;F=p+10|0;G=p+12|0;H=p+28|0;I=u;u=p+76|0;J=p+80|0;K=p+84|0;L=p+88|0;M=p+92|0;N=q|0;O=q+4|0;P=q+28|0;Q=q+44|0;R=d+56|0;S=p|0;T=r;U=r+16|0;V=r+32|0;W=r+48|0;X=q|0;Y=q+8|0;Z=q+12|0;_=q+16|0;$=q+20|0;aa=q+24|0;q=p+60|0;ab=p+64|0;ac=p+68|0;ad=k|0;ae=k+4|0;af=k+8|0;ag=k+12|0;ah=l|0;ai=l+4|0;aj=l+8|0;ak=l+12|0;al=p+44|0;am=p+48|0;an=p+52|0;p=d+132|0;ao=d+112|0;d=m|0;ap=m+4|0;aq=m+8|0;ar=m+12|0;as=n|0;at=n+4|0;au=n+8|0;av=n+12|0;aw=h|0;ax=h+4|0;ay=0;do{az=c[(c[t>>2]|0)+(ay<<2)>>2]|0;aA=az|0;aB=az+240|0;g[aB>>2]=1.0;aC=c[az+216>>2]|0;L3601:do{if(!((aC|0)==5|(aC|0)==2)){if((c[az+204>>2]&3|0)!=0){break}aD=az+4|0;aE=az+320|0;aF=az+304|0;aG=az+308|0;aH=az+312|0;anY(aD,+g[aF>>2],+g[aG>>2],+g[aH>>2],aE,e,o);aI=az+52|0;aJ=+g[v>>2]- +g[aI>>2];aK=az+56|0;aL=+g[w>>2]- +g[aK>>2];aM=az+60|0;aN=+g[x>>2]- +g[aM>>2];do{if((a[z]&1)!=0){aO=+g[az+248>>2];aP=aO*aO;if(!(aP!=0.0&aP>2]|0)+4>>2]|0)<20){c[9802]=(c[9802]|0)+1;aQ=c[A>>2]|0;aR=cA[c[(c[aQ>>2]|0)+36>>2]&4095](aQ)|0;aQ=c[B>>2]|0;g[D>>2]=1.0;b[E>>1]=1;b[F>>1]=-1;c[C>>2]=19448;aS=aI;c[G>>2]=c[aS>>2];c[G+4>>2]=c[aS+4>>2];c[G+8>>2]=c[aS+8>>2];c[G+12>>2]=c[aS+12>>2];c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];c[u>>2]=0;c[C>>2]=19728;c[J>>2]=aA;g[K>>2]=0.0;c[L>>2]=aR;c[M>>2]=aQ;aP=+g[az+244>>2];c[Y>>2]=0;g[Z>>2]=1.0;g[_>>2]=1.0;g[$>>2]=1.0;g[aa>>2]=0.0;c[N>>2]=25528;c[O>>2]=8;g[P>>2]=aP;g[Q>>2]=aP;g[K>>2]=+g[R>>2];aQ=az+188|0;b[E>>1]=b[(c[aQ>>2]|0)+4>>1]|0;b[F>>1]=b[(c[aQ>>2]|0)+6>>1]|0;c[W>>2]=c[I>>2];c[W+4>>2]=c[I+4>>2];c[W+8>>2]=c[I+8>>2];c[W+12>>2]=c[I+12>>2];aQ=aD;c[T>>2]=c[aQ>>2];c[T+4>>2]=c[aQ+4>>2];c[T+8>>2]=c[aQ+8>>2];c[T+12>>2]=c[aQ+12>>2];aQ=az+20|0;c[U>>2]=c[aQ>>2];c[U+4>>2]=c[aQ+4>>2];c[U+8>>2]=c[aQ+8>>2];c[U+12>>2]=c[aQ+12>>2];aQ=az+36|0;c[V>>2]=c[aQ>>2];c[V+4>>2]=c[aQ+4>>2];c[V+8>>2]=c[aQ+8>>2];c[V+12>>2]=c[aQ+12>>2];atO(y,X,aD,r,S,0.0);aP=+g[D>>2];if(aP>=1.0){aT=0;break}g[aB>>2]=aP;anY(aD,+g[aF>>2],+g[aG>>2],+g[aH>>2],aE,aP*e,o);g[aB>>2]=0.0;ap4(az,o);aQ=c[u>>2]|0;if((c[aQ+232>>2]&2|0)==0){aU=0}else{aU=aQ}aP=+g[q>>2];aO=aP- +g[az+52>>2];aV=+g[ab>>2];aW=aV- +g[aK>>2];aX=+g[ac>>2];aY=aX- +g[aM>>2];g[ad>>2]=aO;g[ae>>2]=aW;g[af>>2]=aY;g[ag>>2]=0.0;aZ=aP- +g[aQ+52>>2];a_=aV- +g[aQ+56>>2];a$=aX- +g[aQ+60>>2];g[ah>>2]=aZ;g[ai>>2]=a_;g[aj>>2]=a$;g[ak>>2]=0.0;a0=+g[az+324>>2];a1=+g[az+328>>2];a2=+g[az+320>>2];aR=(aU|0)!=0;if(aR){a3=+g[aU+324>>2];a4=+g[aU+328>>2];a5=+g[aU+320>>2];a6=a3*a$-a4*a_+ +g[aU+304>>2];a7=+g[aU+308>>2]+(a4*aZ-a$*a5);a8=a_*a5-a3*aZ+ +g[aU+312>>2]}else{a6=0.0;a7=0.0;a8=0.0}aZ=+g[al>>2];a3=+g[am>>2];a5=+g[an>>2];a_=aZ*(a0*aY-a1*aW+ +g[aF>>2]-a6)+(+g[aG>>2]+(a1*aO-aY*a2)-a7)*a3+(aW*a2-a0*aO+ +g[aH>>2]-a8)*a5;a0=a5*aW-a3*aY;a2=aZ*aY-a5*aO;a1=a3*aO-aZ*aW;a$=a1*+g[az+288>>2]+(+g[az+256>>2]*a0+ +g[az+272>>2]*a2);a4=a0*+g[az+260>>2]+a2*+g[az+276>>2]+a1*+g[az+292>>2];a9=a0*+g[az+264>>2]+a2*+g[az+280>>2]+a1*+g[az+296>>2];if(aR){a1=aP- +g[aU+52>>2];aP=aV- +g[aU+56>>2];aV=aX- +g[aU+60>>2];aX=a5*aP-a3*aV;a2=aZ*aV-a5*a1;a0=a3*a1-aZ*aP;ba=a0*+g[aU+288>>2]+(+g[aU+256>>2]*aX+ +g[aU+272>>2]*a2);bb=aX*+g[aU+260>>2]+a2*+g[aU+276>>2]+a0*+g[aU+292>>2];bc=aX*+g[aU+264>>2]+a2*+g[aU+280>>2]+a0*+g[aU+296>>2];bd=+g[aU+336>>2]+(a5*(aP*ba-a1*bb)+(aZ*(aV*bb-aP*bc)+a3*(a1*bc-aV*ba)));be=1}else{bd=0.0;be=0}ba=1.0/(+g[az+336>>2]+(a5*(aW*a$-aO*a4)+(aZ*(aY*a4-aW*a9)+a3*(aO*a9-aY*a$)))+bd);a$=+g[p>>2]*-0.0/+g[ao>>2]*ba+a_*(-0.0-(+g[az+228>>2]*+g[aQ+228>>2]*(-0.0-a_)+1.0))*ba;ba=a$<0.0?0.0:a$;g[d>>2]=aZ*ba;g[ap>>2]=a3*ba;g[aq>>2]=a5*ba;g[ar>>2]=0.0;pe(az,m,k);if(!be){aT=4;break}a5=ba*(-0.0- +g[am>>2]);a3=ba*(-0.0- +g[an>>2]);g[as>>2]=ba*(-0.0- +g[al>>2]);g[at>>2]=a5;g[au>>2]=a3;g[av>>2]=0.0;pe(aU,n,l);aT=4}else{aT=0}}while(0);aQ=c[9152]|0;aR=aQ+16|0;aS=(c[aR>>2]|0)-1|0;c[aR>>2]=aS;do{if((aS|0)==0){if((c[aQ+4>>2]|0)==0){bf=aQ}else{b3(h|0,0)|0;bg=c[10742]|0;bh=aQ+8|0;g[bh>>2]=+(((c[ax>>2]|0)-(c[bg+4>>2]|0)+(((c[aw>>2]|0)-(c[bg>>2]|0)|0)*1e6|0)-(c[aQ+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[bh>>2];if((c[aR>>2]|0)!=0){break}bf=c[9152]|0}c[9152]=c[bf+20>>2]}}while(0);if((aT|0)==4){break L3601}}}while(0);ap4(az,o)}}while(0);ay=ay+1|0;}while((ay|0)<(c[s>>2]|0))}s=c[9152]|0;ay=s+16|0;o=(c[ay>>2]|0)-1|0;c[ay>>2]=o;if((o|0)!=0){i=f;return}do{if((c[s+4>>2]|0)==0){bi=s}else{b3(j|0,0)|0;o=c[10742]|0;aT=s+8|0;g[aT>>2]=+(((c[j+4>>2]|0)-(c[o+4>>2]|0)+(((c[j>>2]|0)-(c[o>>2]|0)|0)*1e6|0)-(c[s+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[aT>>2];if((c[ay>>2]|0)==0){bi=c[9152]|0;break}else{i=f;return}}}while(0);c[9152]=c[bi+20>>2];i=f;return}function aoI(a){a=a|0;return 2}function aoJ(a){a=a|0;return c[a+172>>2]|0}function aoK(a){a=a|0;return c[a+184>>2]|0}function aoL(a,b){a=a|0;b=b|0;return c[(c[a+192>>2]|0)+(b<<2)>>2]|0}function aoM(a,b){a=a|0;b=b|0;return c[(c[a+192>>2]|0)+(b<<2)>>2]|0}function aoN(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+8|0;e=d|0;aDo(18048);f=a+204|0;h=c[f>>2]|0;if((h|0)>0){j=a+212|0;a=0;k=h;while(1){h=c[(c[j>>2]|0)+(a<<2)>>2]|0;if((c[h+204>>2]&3|0)==0){ap5(h,b);ap3(h,b);anY(h+4|0,+g[h+304>>2],+g[h+308>>2],+g[h+312>>2],h+320|0,b,h+68|0);l=c[f>>2]|0}else{l=k}h=a+1|0;if((h|0)<(l|0)){a=h;k=l}else{break}}}l=c[9152]|0;k=l+16|0;a=(c[k>>2]|0)-1|0;c[k>>2]=a;if((a|0)!=0){i=d;return}do{if((c[l+4>>2]|0)==0){m=l}else{b3(e|0,0)|0;a=c[10742]|0;f=l+8|0;g[f>>2]=+(((c[e+4>>2]|0)-(c[a+4>>2]|0)+(((c[e>>2]|0)-(c[a>>2]|0)|0)*1e6|0)-(c[l+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[f>>2];if((c[k>>2]|0)==0){m=c[9152]|0;break}else{i=d;return}}}while(0);c[9152]=c[m+20>>2];i=d;return}function aoO(b,d){b=b|0;d=d|0;var e=0,f=0;e=b+241|0;f=b+172|0;do{if((a[e]&1)!=0){b=c[f>>2]|0;if((b|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0)}}while(0);a[e]=0;c[f>>2]=d;return}function aoP(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=b;ct[c[(c[d>>2]|0)+32>>2]&2047](b);e=a+8|0;f=c[e>>2]|0;if((f|0)>0){g=a+16|0;h=b;i=b;j=0;k=f;while(1){f=c[(c[g>>2]|0)+(j<<2)>>2]|0;if((c[f+232>>2]&2|0)==0){l=k}else{m=cA[c[(c[f>>2]|0)+16>>2]&4095](f)|0;n=cS[c[(c[h>>2]|0)+16>>2]&511](b,m,1)|0;m=cS[c[(c[f>>2]|0)+20>>2]&511](f,c[n+8>>2]|0,b)|0;co[c[(c[i>>2]|0)+20>>2]&255](b,n,m,1497645650,f);l=c[e>>2]|0}f=j+1|0;if((f|0)<(l|0)){j=f;k=l}else{break}}}l=a+184|0;if((c[l>>2]|0)<=0){o=a|0;atW(o,b);p=c[d>>2]|0;q=p+36|0;r=c[q>>2]|0;ct[r&2047](b);return}k=a+192|0;j=b;e=b;i=0;do{h=c[(c[k>>2]|0)+(i<<2)>>2]|0;g=cA[c[(c[h>>2]|0)+36>>2]&4095](h)|0;f=cS[c[(c[j>>2]|0)+16>>2]&511](b,g,1)|0;g=cS[c[(c[h>>2]|0)+40>>2]&511](h,c[f+8>>2]|0,b)|0;co[c[(c[e>>2]|0)+20>>2]&255](b,f,g,1397641027,h);i=i+1|0;}while((i|0)<(c[l>>2]|0));o=a|0;atW(o,b);p=c[d>>2]|0;q=p+36|0;r=c[q>>2]|0;ct[r&2047](b);return}function aoQ(d,e){d=d|0;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0.0,aO=0,aP=0.0,aQ=0,aR=0.0,aS=0.0,aT=0.0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0.0,a0=0,a1=0;f=i;i=i+528|0;h=f|0;j=f+16|0;k=f+32|0;l=f+96|0;m=f+192|0;n=f+248|0;o=f+312|0;p=f+336|0;q=f+496|0;r=f+512|0;aDo(18112);s=d+204|0;if((c[s>>2]|0)>0){t=d+212|0;u=k+48|0;v=u|0;w=k+52|0;x=k+56|0;y=d|0;z=d+76|0;A=d+24|0;d=l|0;B=l+4|0;C=l+8|0;D=l+10|0;E=l+12|0;F=l+28|0;G=u;u=l+76|0;H=l+80|0;I=l+84|0;J=l+88|0;K=l+92|0;L=m|0;M=m+4|0;N=m+28|0;O=m+44|0;P=l|0;R=n;S=n+16|0;T=n+32|0;U=n+48|0;V=U;W=m|0;X=o+16|0;Y=o+12|0;Z=o+4|0;_=o+8|0;$=p+4|0;aa=U|0;U=n+52|0;ab=n+56|0;ac=q;ad=l+60|0;ae=q|0;af=q+4|0;ag=q+8|0;ah=l+44|0;ai=ah|0;aj=l+48|0;ak=l+52|0;l=r|0;al=r+4|0;am=r+8|0;an=r+12|0;ao=m+8|0;ap=m+12|0;aq=m+16|0;ar=m+20|0;as=m+24|0;m=p|0;at=p+136|0;au=p+140|0;av=p+8|0;aw=p+144|0;ax=p+24|0;ay=p+40|0;az=p+56|0;aA=p+72|0;aB=p+88|0;aC=p+104|0;aD=p+120|0;aE=h|0;aF=h+4|0;aG=0;do{aH=c[(c[t>>2]|0)+(aG<<2)>>2]|0;aI=aH|0;g[aH+240>>2]=1.0;aJ=c[aH+216>>2]|0;do{if(!((aJ|0)==5|(aJ|0)==2)){if((c[aH+204>>2]&3|0)!=0){break}aK=aH+4|0;anY(aK,+g[aH+304>>2],+g[aH+308>>2],+g[aH+312>>2],aH+320|0,e,k);aL=aH+52|0;aM=aL|0;aN=+g[v>>2]- +g[aM>>2];aO=aH+56|0;aP=+g[w>>2]- +g[aO>>2];aQ=aH+60|0;aR=+g[x>>2]- +g[aQ>>2];aS=+g[aH+248>>2];aT=aS*aS;if(!(aT!=0.0&aT>2]|0)+4>>2]|0)<20){c[9802]=(c[9802]|0)+1;aU=c[z>>2]|0;aV=cA[c[(c[aU>>2]|0)+36>>2]&4095](aU)|0;aU=c[A>>2]|0;g[B>>2]=1.0;b[C>>1]=1;b[D>>1]=-1;c[d>>2]=19448;aW=aL;c[E>>2]=c[aW>>2];c[E+4>>2]=c[aW+4>>2];c[E+8>>2]=c[aW+8>>2];c[E+12>>2]=c[aW+12>>2];c[F>>2]=c[G>>2];c[F+4>>2]=c[G+4>>2];c[F+8>>2]=c[G+8>>2];c[F+12>>2]=c[G+12>>2];c[u>>2]=0;c[d>>2]=19728;c[H>>2]=aI;g[I>>2]=0.0;c[J>>2]=aV;c[K>>2]=aU;aR=+g[aH+244>>2];c[ao>>2]=0;g[ap>>2]=1.0;g[aq>>2]=1.0;g[ar>>2]=1.0;g[as>>2]=0.0;c[L>>2]=25528;c[M>>2]=8;g[N>>2]=aR;g[O>>2]=aR;aU=aH+188|0;b[C>>1]=b[(c[aU>>2]|0)+4>>1]|0;b[D>>1]=b[(c[aU>>2]|0)+6>>1]|0;c[V>>2]=c[G>>2];c[V+4>>2]=c[G+4>>2];c[V+8>>2]=c[G+8>>2];c[V+12>>2]=c[G+12>>2];aV=aK;c[R>>2]=c[aV>>2];c[R+4>>2]=c[aV+4>>2];c[R+8>>2]=c[aV+8>>2];c[R+12>>2]=c[aV+12>>2];aX=aH+20|0;c[S>>2]=c[aX>>2];c[S+4>>2]=c[aX+4>>2];c[S+8>>2]=c[aX+8>>2];c[S+12>>2]=c[aX+12>>2];aY=aH+36|0;c[T>>2]=c[aY>>2];c[T+4>>2]=c[aY+4>>2];c[T+8>>2]=c[aY+8>>2];c[T+12>>2]=c[aY+12>>2];atO(y,W,aK,n,P,0.0);if(+g[B>>2]>=1.0){break}aZ=c[J>>2]|0;a_=cS[c[(c[aZ>>2]|0)+52>>2]&511](aZ,c[aU>>2]|0,c[(c[u>>2]|0)+188>>2]|0)|0;if((a_|0)==0){break}aU=a_+8|0;if((c[aU>>2]|0)==0){break}a[X]=1;c[Y>>2]=0;c[Z>>2]=0;c[_>>2]=0;a_=c[aU>>2]|0;cv[c[(c[a_>>2]|0)+16>>2]&2047](a_,o);do{if((c[Z>>2]|0)!=0){a_=c[u>>2]|0;c[m>>2]=24e3;c[at>>2]=aI;c[au>>2]=a_;aDD(aw|0,-1|0,16);c[av>>2]=c[aV>>2];c[av+4>>2]=c[aV+4>>2];c[av+8>>2]=c[aV+8>>2];c[av+12>>2]=c[aV+12>>2];c[ax>>2]=c[aX>>2];c[ax+4>>2]=c[aX+4>>2];c[ax+8>>2]=c[aX+8>>2];c[ax+12>>2]=c[aX+12>>2];c[ay>>2]=c[aY>>2];c[ay+4>>2]=c[aY+4>>2];c[ay+8>>2]=c[aY+8>>2];c[ay+12>>2]=c[aY+12>>2];c[az>>2]=c[aW>>2];c[az+4>>2]=c[aW+4>>2];c[az+8>>2]=c[aW+8>>2];c[az+12>>2]=c[aW+12>>2];aU=a_+4|0;c[aA>>2]=c[aU>>2];c[aA+4>>2]=c[aU+4>>2];c[aA+8>>2]=c[aU+8>>2];c[aA+12>>2]=c[aU+12>>2];aU=a_+20|0;c[aB>>2]=c[aU>>2];c[aB+4>>2]=c[aU+4>>2];c[aB+8>>2]=c[aU+8>>2];c[aB+12>>2]=c[aU+12>>2];aU=a_+36|0;c[aC>>2]=c[aU>>2];c[aC+4>>2]=c[aU+4>>2];c[aC+8>>2]=c[aU+8>>2];c[aC+12>>2]=c[aU+12>>2];aU=a_+52|0;c[aD>>2]=c[aU>>2];c[aD+4>>2]=c[aU+4>>2];c[aD+8>>2]=c[aU+8>>2];c[aD+12>>2]=c[aU+12>>2];aU=c[c[Y>>2]>>2]|0;c[$>>2]=aU;aR=+g[B>>2];aP=(+g[aa>>2]- +g[aM>>2])*aR;aN=(+g[U>>2]- +g[aO>>2])*aR;aT=aR*(+g[ab>>2]- +g[aQ>>2]);aR=aT*aT+(aP*aP+aN*aN);c[ac>>2]=c[ad>>2];c[ac+4>>2]=c[ad+4>>2];c[ac+8>>2]=c[ad+8>>2];c[ac+12>>2]=c[ad+12>>2];if(aR>1.1920928955078125e-7){aS=+Q(+aR);g[ae>>2]=+g[ae>>2]-aP;g[af>>2]=+g[af>>2]-aN;g[ag>>2]=+g[ag>>2]-aT;a$=aS}else{a$=0.0}if((c[aU+1108>>2]|0)==(aH|0)){aya(p,ah,q,a$);break}else{aS=-0.0- +g[aj>>2];aT=-0.0- +g[ak>>2];g[l>>2]=-0.0- +g[ai>>2];g[al>>2]=aS;g[am>>2]=aT;g[an>>2]=0.0;aya(p,r,q,a$);break}}}while(0);aW=c[Y>>2]|0;if((aW|0)!=0){if((a[X]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aW-4>>2]|0)}c[Y>>2]=0}a[X]=1;c[Y>>2]=0;c[Z>>2]=0;c[_>>2]=0}}while(0);aQ=c[9152]|0;aO=aQ+16|0;aM=(c[aO>>2]|0)-1|0;c[aO>>2]=aM;if((aM|0)!=0){break}if((c[aQ+4>>2]|0)==0){a0=aQ}else{b3(h|0,0)|0;aM=c[10742]|0;aK=aQ+8|0;g[aK>>2]=+(((c[aF>>2]|0)-(c[aM+4>>2]|0)+(((c[aE>>2]|0)-(c[aM>>2]|0)|0)*1e6|0)-(c[aQ+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[aK>>2];if((c[aO>>2]|0)!=0){break}a0=c[9152]|0}c[9152]=c[a0+20>>2]}}while(0);aG=aG+1|0;}while((aG|0)<(c[s>>2]|0))}s=c[9152]|0;aG=s+16|0;a0=(c[aG>>2]|0)-1|0;c[aG>>2]=a0;if((a0|0)!=0){i=f;return}do{if((c[s+4>>2]|0)==0){a1=s}else{b3(j|0,0)|0;a0=c[10742]|0;aE=s+8|0;g[aE>>2]=+(((c[j+4>>2]|0)-(c[a0+4>>2]|0)+(((c[j>>2]|0)-(c[a0>>2]|0)|0)*1e6|0)-(c[s+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[aE>>2];if((c[aG>>2]|0)==0){a1=c[9152]|0;break}else{i=f;return}}}while(0);c[9152]=c[a1+20>>2];i=f;return}function aoR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=a+12|0;f=c[e>>2]|0;g=c[f+(((d+b|0)/2|0)<<2)>>2]|0;h=g+24|0;i=g+28|0;g=b;j=d;k=f;while(1){f=c[(c[h>>2]|0)+208>>2]|0;l=(f|0)>-1;if(l){m=g;while(1){n=c[k+(m<<2)>>2]|0;o=c[(c[n+24>>2]|0)+208>>2]|0;if((o|0)>-1){p=o}else{p=c[(c[n+28>>2]|0)+208>>2]|0}if((p|0)<(f|0)){m=m+1|0}else{q=m;r=n;break}}}else{m=c[(c[i>>2]|0)+208>>2]|0;n=g;while(1){o=c[k+(n<<2)>>2]|0;s=c[(c[o+24>>2]|0)+208>>2]|0;if((s|0)>-1){t=s}else{t=c[(c[o+28>>2]|0)+208>>2]|0}if((t|0)<(m|0)){n=n+1|0}else{q=n;r=o;break}}}if(l){n=j;while(1){m=c[k+(n<<2)>>2]|0;o=c[(c[m+24>>2]|0)+208>>2]|0;if((o|0)>-1){u=o}else{u=c[(c[m+28>>2]|0)+208>>2]|0}if((f|0)<(u|0)){n=n-1|0}else{v=n;w=m;break}}}else{n=c[(c[i>>2]|0)+208>>2]|0;f=j;while(1){l=c[k+(f<<2)>>2]|0;m=c[(c[l+24>>2]|0)+208>>2]|0;if((m|0)>-1){x=m}else{x=c[(c[l+28>>2]|0)+208>>2]|0}if((n|0)<(x|0)){f=f-1|0}else{v=f;w=l;break}}}if((q|0)>(v|0)){y=q;z=v}else{c[k+(q<<2)>>2]=w;c[(c[e>>2]|0)+(v<<2)>>2]=r;y=q+1|0;z=v-1|0}if((y|0)>(z|0)){break}g=y;j=z;k=c[e>>2]|0}if((z|0)>(b|0)){aoR(a,b,z)}if((y|0)>=(d|0)){return}aoR(a,y,d);return}function aoS(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aoT(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;e=c[d>>2]|0;f=c[a+80>>2]|0;if((e|0)==(f|0)){g=0;return g|0}if((b[a+10>>1]&b[d+4>>1])<<16>>16==0){g=0;return g|0}if((b[d+6>>1]&b[a+8>>1])<<16>>16==0){g=0;return g|0}d=c[a+92>>2]|0;g=cS[c[(c[d>>2]|0)+28>>2]&511](d,f,e)|0;return g|0}function aoU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;e=b|0;f=c[e>>2]|0;if((f|0)==(c[a+80>>2]|0)){h=1.0;return+h}if((c[f+204>>2]&4|0)!=0){h=1.0;return+h}f=b+8|0;i=b+12|0;j=b+16|0;if((+g[a+28>>2]- +g[a+12>>2])*+g[f>>2]+(+g[a+32>>2]- +g[a+16>>2])*+g[i>>2]+(+g[a+36>>2]- +g[a+20>>2])*+g[j>>2]>=-0.0- +g[a+84>>2]){h=1.0;return+h}k=b+40|0;g[a+4>>2]=+g[k>>2];l=c[e>>2]|0;c[a+76>>2]=l;if(d){d=a+44|0;e=f;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2]}else{m=+g[b+8>>2];n=+g[i>>2];o=+g[j>>2];p=m*+g[l+20>>2]+n*+g[l+24>>2]+o*+g[l+28>>2];q=m*+g[l+36>>2]+n*+g[l+40>>2]+o*+g[l+44>>2];g[a+44>>2]=+g[l+4>>2]*m+ +g[l+8>>2]*n+ +g[l+12>>2]*o;g[a+48>>2]=p;g[a+52>>2]=q;g[a+56>>2]=0.0}l=a+60|0;a=b+24|0;c[l>>2]=c[a>>2];c[l+4>>2]=c[a+4>>2];c[l+8>>2]=c[a+8>>2];c[l+12>>2]=c[a+12>>2];h=+g[k>>2];return+h}function aoV(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=18656;d=b+76|0;e=b+84|0;f=c[e>>2]|0;g=b+88|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+80>>2]=0;d=b+56|0;e=b+64|0;g=c[e>>2]|0;f=b+68|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+60>>2]=0;d=b+36|0;e=b+44|0;f=c[e>>2]|0;g=b+48|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+40|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+40|0;c[h>>2]=0;return}function aoW(a){a=a|0;aoV(a);if((a|0)==0){return}aDB(a);return}function aoX(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;i=c[b+16>>2]|0;if((h|0)<0){if((i|0)==(-g|0)){return}j=c[b+8>>2]|0;k=c[(c[j>>2]|0)+12>>2]|0;l=c[b+12>>2]|0;m=c[b+4>>2]|0;n=c[b+20>>2]|0;o=c[b+24>>2]|0;p=c[b+28>>2]|0;+cN[k&63](j,d,e,f,g,l,i,m,n,o,p);return}p=b+12|0;o=0;while(1){if((o|0)>=(i|0)){q=0;r=0;break}s=c[p>>2]|0;t=s+(o<<2)|0;n=c[t>>2]|0;m=c[(c[n+24>>2]|0)+208>>2]|0;if((m|0)>-1){u=m}else{u=c[(c[n+28>>2]|0)+208>>2]|0}if((u|0)==(h|0)){v=0;w=o;x=3485;break}else{o=o+1|0}}if((x|0)==3485){while(1){x=0;o=c[s+(w<<2)>>2]|0;u=c[(c[o+24>>2]|0)+208>>2]|0;if((u|0)>-1){y=u}else{y=c[(c[o+28>>2]|0)+208>>2]|0}o=((y|0)==(h|0))+v|0;u=w+1|0;if((u|0)<(i|0)){v=o;w=u;x=3485}else{q=o;r=t;break}}}t=b+4|0;x=c[t>>2]|0;if((c[x+68>>2]|0)<2){if((q|0)==(-g|0)){return}w=c[b+8>>2]|0;v=c[(c[w>>2]|0)+12>>2]|0;i=c[b+20>>2]|0;h=c[b+24>>2]|0;y=c[b+28>>2]|0;+cN[v&63](w,d,e,f,g,r,q,x,i,h,y);return}if((e|0)>0){y=b+36|0;h=b+40|0;i=b+44|0;x=b+48|0;w=0;v=c[y>>2]|0;do{s=d+(w<<2)|0;do{if((v|0)==(c[h>>2]|0)){o=(v|0)==0?1:v<<1;if((v|0)>=(o|0)){z=v;break}if((o|0)==0){A=0;B=v}else{c[9806]=(c[9806]|0)+1;u=aDx((o<<2)+19|0)|0;if((u|0)==0){C=0}else{p=-(u+4|0)&15;c[u+p>>2]=u;C=u+(p+4)|0}A=C;B=c[y>>2]|0}if((B|0)>0){p=0;do{u=A+(p<<2)|0;if((u|0)!=0){c[u>>2]=c[(c[i>>2]|0)+(p<<2)>>2]}p=p+1|0;}while((p|0)<(B|0))}p=c[i>>2]|0;if((p|0)!=0){if((a[x]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[i>>2]=0}a[x]=1;c[i>>2]=A;c[h>>2]=o;z=c[y>>2]|0}else{z=v}}while(0);p=(c[i>>2]|0)+(z<<2)|0;if((p|0)==0){D=z}else{c[p>>2]=c[s>>2];D=c[y>>2]|0}v=D+1|0;c[y>>2]=v;w=w+1|0;}while((w|0)<(e|0))}if((g|0)>0){e=b+56|0;w=b+60|0;v=b+64|0;y=b+68|0;D=0;z=c[e>>2]|0;do{i=f+(D<<2)|0;do{if((z|0)==(c[w>>2]|0)){h=(z|0)==0?1:z<<1;if((z|0)>=(h|0)){E=z;break}if((h|0)==0){F=0;G=z}else{c[9806]=(c[9806]|0)+1;A=aDx((h<<2)+19|0)|0;if((A|0)==0){H=0}else{x=-(A+4|0)&15;c[A+x>>2]=A;H=A+(x+4)|0}F=H;G=c[e>>2]|0}if((G|0)>0){x=0;do{A=F+(x<<2)|0;if((A|0)!=0){c[A>>2]=c[(c[v>>2]|0)+(x<<2)>>2]}x=x+1|0;}while((x|0)<(G|0))}x=c[v>>2]|0;if((x|0)!=0){if((a[y]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[x-4>>2]|0)}c[v>>2]=0}a[y]=1;c[v>>2]=F;c[w>>2]=h;E=c[e>>2]|0}else{E=z}}while(0);s=(c[v>>2]|0)+(E<<2)|0;if((s|0)==0){I=E}else{c[s>>2]=c[i>>2];I=c[e>>2]|0}z=I+1|0;c[e>>2]=z;D=D+1|0;}while((D|0)<(g|0))}g=b+76|0;if((q|0)>0){D=b+80|0;z=b+84|0;e=b+88|0;I=0;E=c[g>>2]|0;while(1){v=r+(I<<2)|0;do{if((E|0)==(c[D>>2]|0)){w=(E|0)==0?1:E<<1;if((E|0)>=(w|0)){J=E;break}if((w|0)==0){K=0;L=E}else{c[9806]=(c[9806]|0)+1;F=aDx((w<<2)+19|0)|0;if((F|0)==0){M=0}else{y=-(F+4|0)&15;c[F+y>>2]=F;M=F+(y+4)|0}K=M;L=c[g>>2]|0}if((L|0)>0){y=0;do{F=K+(y<<2)|0;if((F|0)!=0){c[F>>2]=c[(c[z>>2]|0)+(y<<2)>>2]}y=y+1|0;}while((y|0)<(L|0))}y=c[z>>2]|0;if((y|0)!=0){if((a[e]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-4>>2]|0)}c[z>>2]=0}a[e]=1;c[z>>2]=K;c[D>>2]=w;J=c[g>>2]|0}else{J=E}}while(0);i=(c[z>>2]|0)+(J<<2)|0;if((i|0)==0){N=J}else{c[i>>2]=c[v>>2];N=c[g>>2]|0}i=N+1|0;c[g>>2]=i;y=I+1|0;if((y|0)<(q|0)){I=y;E=i}else{O=i;break}}}else{O=c[g>>2]|0}if(((c[b+56>>2]|0)+O|0)<=(c[(c[t>>2]|0)+68>>2]|0)){return}aoE(b);return}function aoY(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0;c[b+4>>2]=6;c[b+8>>2]=-1;c[b+12>>2]=-1;g[b+16>>2]=3.4028234663852886e+38;a[b+20|0]=1;a[b+21|0]=0;c[b+24>>2]=d;c[b+28>>2]=e;g[b+32>>2]=0.0;g[b+36>>2]=.30000001192092896;c[b>>2]=21400;j=b+40|0;k=f;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=b+56|0;j=f+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=b+72|0;k=f+32|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=b+88|0;j=f+48|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=b+104|0;k=h;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=b+120|0;j=h+16|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=b+136|0;k=h+32|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=b+152|0;j=h+48|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];aDD(b+672|0,0,48);aDD(b+732|0,0,16);g[b+748>>2]=.20000000298023224;g[b+752>>2]=.20000000298023224;g[b+756>>2]=.20000000298023224;aDD(b+760|0,0,20);g[b+720>>2]=.699999988079071;g[b+724>>2]=1.0;g[b+728>>2]=.5;a[b+780|0]=0;g[b+784>>2]=0.0;g[b+800>>2]=0.0;a[b+781|0]=0;g[b+788>>2]=0.0;g[b+804>>2]=0.0;a[b+782|0]=0;g[b+792>>2]=0.0;g[b+808>>2]=0.0;g[b+920>>2]=0.0;g[b+868>>2]=0.0;g[b+872>>2]=.10000000149011612;g[b+876>>2]=300.0;g[b+860>>2]=1.0;g[b+864>>2]=-1.0;g[b+888>>2]=0.0;g[b+892>>2]=.20000000298023224;g[b+896>>2]=0.0;g[b+900>>2]=0.0;g[b+880>>2]=1.0;g[b+884>>2]=.5;c[b+916>>2]=0;g[b+908>>2]=0.0;a[b+904|0]=0;g[b+984>>2]=0.0;g[b+932>>2]=0.0;g[b+936>>2]=.10000000149011612;g[b+940>>2]=300.0;g[b+924>>2]=1.0;g[b+928>>2]=-1.0;g[b+952>>2]=0.0;g[b+956>>2]=.20000000298023224;g[b+960>>2]=0.0;g[b+964>>2]=0.0;g[b+944>>2]=1.0;g[b+948>>2]=.5;c[b+980>>2]=0;g[b+972>>2]=0.0;a[b+968|0]=0;g[b+1048>>2]=0.0;g[b+996>>2]=0.0;g[b+1e3>>2]=.10000000149011612;g[b+1004>>2]=300.0;g[b+988>>2]=1.0;g[b+992>>2]=-1.0;g[b+1016>>2]=0.0;g[b+1020>>2]=.20000000298023224;g[b+1024>>2]=0.0;g[b+1028>>2]=0.0;g[b+1008>>2]=1.0;g[b+1012>>2]=.5;c[b+1044>>2]=0;g[b+1036>>2]=0.0;a[b+1032|0]=0;a[b+1292|0]=i&1;a[b+1293|0]=1;c[b+1296>>2]=0;a[b+1300|0]=0;aoZ(b,d+4|0,e+4|0);return}function aoZ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0.0;f=i;i=i+224|0;h=f|0;j=f+48|0;k=f+96|0;l=f+160|0;m=b+1056|0;n=j;anx(j,d|0,b+40|0);o=+g[b+88>>2];p=+g[b+92>>2];q=+g[b+96>>2];r=+g[d>>2]*o+ +g[d+4>>2]*p+ +g[d+8>>2]*q+ +g[d+48>>2];s=+g[d+16>>2]*o+ +g[d+20>>2]*p+ +g[d+24>>2]*q+ +g[d+52>>2];t=+g[d+32>>2]*o+ +g[d+36>>2]*p+ +g[d+40>>2]*q+ +g[d+56>>2];d=k+48|0;u=k|0;do{u=u+16|0;}while((u|0)!=(d|0));d=k;c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];n=k+16|0;u=j+16|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];u=k+32|0;v=j+32|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];g[k+48>>2]=r;g[k+52>>2]=s;g[k+56>>2]=t;g[k+60>>2]=0.0;v=m;c[v>>2]=c[d>>2];c[v+4>>2]=c[d+4>>2];c[v+8>>2]=c[d+8>>2];c[v+12>>2]=c[d+12>>2];d=b+1072|0;c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];n=b+1088|0;c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];u=b+1104|0;n=k+48|0;c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];n=b+1120|0;u=h;anx(h,e|0,b+104|0);t=+g[b+152>>2];s=+g[b+156>>2];r=+g[b+160>>2];q=+g[e>>2]*t+ +g[e+4>>2]*s+ +g[e+8>>2]*r+ +g[e+48>>2];p=+g[e+16>>2]*t+ +g[e+20>>2]*s+ +g[e+24>>2]*r+ +g[e+52>>2];o=+g[e+32>>2]*t+ +g[e+36>>2]*s+ +g[e+40>>2]*r+ +g[e+56>>2];e=l+48|0;k=l|0;do{k=k+16|0;}while((k|0)!=(e|0));e=l;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];u=l+16|0;k=h+16|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];k=l+32|0;d=h+32|0;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];g[l+48>>2]=q;g[l+52>>2]=p;g[l+56>>2]=o;g[l+60>>2]=0.0;d=n;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=b+1136|0;c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];u=b+1152|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];k=b+1168|0;u=l+48|0;c[k>>2]=c[u>>2];c[k+4>>2]=c[u+4>>2];c[k+8>>2]=c[u+8>>2];c[k+12>>2]=c[u+12>>2];o=+g[b+1168>>2]- +g[b+1104>>2];p=+g[b+1172>>2]- +g[b+1108>>2];q=+g[b+1176>>2]- +g[b+1112>>2];r=+g[b+1076>>2];s=+g[b+1096>>2];t=+g[b+1080>>2];w=+g[b+1092>>2];x=r*s-t*w;y=+g[b+1088>>2];z=+g[b+1072>>2];A=t*y-s*z;B=w*z-r*y;C=+g[b+1056>>2];D=+g[b+1060>>2];E=+g[b+1064>>2];F=1.0/(x*C+D*A+B*E);G=x*F;x=F*(w*E-s*D);H=F*(t*D-r*E);I=A*F;A=F*(s*C-y*E);J=F*(z*E-t*C);K=B*F;B=F*(y*D-w*C);w=F*(r*C-z*D);D=G*o+x*p+H*q;z=o*I+p*A+J*q;C=o*K+B*p+w*q;g[b+1248>>2]=D;g[b+1252>>2]=z;g[b+1256>>2]=C;g[b+1260>>2]=0.0;g[b+832>>2]=D;q=+g[b+672>>2];p=+g[b+688>>2];do{if(q>p){c[b+848>>2]=0;g[b+816>>2]=0.0}else{if(q>D){c[b+848>>2]=2;g[b+816>>2]=D-q;break}u=b+848|0;if(p>2]=1;g[b+816>>2]=D-p;break}else{c[u>>2]=0;g[b+816>>2]=0.0;break}}}while(0);g[b+836>>2]=z;p=+g[b+676>>2];D=+g[b+692>>2];do{if(p>D){c[b+852>>2]=0;g[b+820>>2]=0.0}else{if(p>z){c[b+852>>2]=2;g[b+820>>2]=z-p;break}u=b+852|0;if(D>2]=1;g[b+820>>2]=z-D;break}else{c[u>>2]=0;g[b+820>>2]=0.0;break}}}while(0);g[b+840>>2]=C;D=+g[b+680>>2];z=+g[b+696>>2];do{if(D>z){c[b+856>>2]=0;g[b+824>>2]=0.0}else{if(D>C){c[b+856>>2]=2;g[b+824>>2]=C-D;break}u=b+856|0;if(z>2]=1;g[b+824>>2]=C-z;break}else{c[u>>2]=0;g[b+824>>2]=0.0;break}}}while(0);z=+g[b+1120>>2];C=+g[b+1136>>2];D=+g[b+1152>>2];p=z*G+C*x+H*D;q=+g[b+1124>>2];o=+g[b+1140>>2];r=+g[b+1156>>2];F=G*q+x*o+H*r;H=z*I+C*A+J*D;x=I*q+A*o+J*r;J=z*K+B*C+w*D;A=K*q+B*o+w*r;r=K*+g[b+1128>>2]+B*+g[b+1144>>2]+w*+g[b+1160>>2];u=b+1184|0;do{if(J<1.0){if(J>-1.0){g[u>>2]=+Y(+(-0.0-A),+r);w=J<-1.0?-1.0:J;g[b+1188>>2]=+W(+(w>1.0?1.0:w));g[b+1192>>2]=+Y(+(-0.0-H),+p);break}else{g[u>>2]=-0.0- +Y(+F,+x);g[b+1188>>2]=-1.5707963705062866;g[b+1192>>2]=0.0;break}}else{g[u>>2]=+Y(+F,+x);g[b+1188>>2]=1.5707963705062866;g[b+1192>>2]=0.0}}while(0);x=D*t-C*s;F=z*s-D*E;p=C*E-z*t;g[b+1228>>2]=0.0;H=s*F-t*p;J=E*p-s*x;s=t*x-E*F;g[b+1212>>2]=0.0;E=C*p-D*F;t=D*x-z*p;D=z*F-C*x;g[b+1244>>2]=0.0;C=1.0/+Q(+(H*H+J*J+s*s));g[b+1200>>2]=H*C;g[b+1204>>2]=J*C;g[b+1208>>2]=s*C;C=1.0/+Q(+(x*x+F*F+p*p));g[b+1216>>2]=x*C;g[b+1220>>2]=F*C;g[b+1224>>2]=p*C;C=1.0/+Q(+(E*E+t*t+D*D));g[b+1232>>2]=E*C;g[b+1236>>2]=t*C;g[b+1240>>2]=D*C;if((a[b+1293|0]&1)==0){i=f;return}C=+g[(c[b+24>>2]|0)+336>>2];D=+g[(c[b+28>>2]|0)+336>>2];if(C<1.1920928955078125e-7){L=1}else{L=D<1.1920928955078125e-7|0}a[b+1272|0]=L;t=C+D;if(t>0.0){C=D/t;g[b+1264>>2]=C;M=C}else{g[b+1264>>2]=.5;M=.5}g[b+1268>>2]=1.0-M;i=f;return}function ao_(a,b,d,e,f,h,j,k,l){a=a|0;b=b|0;d=d|0;e=+e;f=+f;h=+h;j=+j;k=+k;l=+l;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;m=i;i=i+128|0;n=m|0;o=m+48|0;p=m+96|0;q=m+112|0;if((b|0)==0){i=m;return}r=c[a+24>>2]|0;g[n>>2]=+g[r+4>>2];g[n+4>>2]=+g[r+20>>2];g[n+8>>2]=+g[r+36>>2];g[n+12>>2]=0.0;g[n+16>>2]=+g[r+8>>2];g[n+20>>2]=+g[r+24>>2];g[n+24>>2]=+g[r+40>>2];g[n+28>>2]=0.0;g[n+32>>2]=+g[r+12>>2];g[n+36>>2]=+g[r+28>>2];g[n+40>>2]=+g[r+44>>2];g[n+44>>2]=0.0;s=c[a+28>>2]|0;g[o>>2]=+g[s+4>>2];g[o+4>>2]=+g[s+20>>2];g[o+8>>2]=+g[s+36>>2];g[o+12>>2]=0.0;g[o+16>>2]=+g[s+8>>2];g[o+20>>2]=+g[s+24>>2];g[o+24>>2]=+g[s+40>>2];g[o+28>>2]=0.0;g[o+32>>2]=+g[s+12>>2];g[o+36>>2]=+g[s+28>>2];g[o+40>>2]=+g[s+44>>2];g[o+44>>2]=0.0;t=f- +g[r+56>>2];f=h- +g[r+60>>2];g[p>>2]=e- +g[r+52>>2];g[p+4>>2]=t;g[p+8>>2]=f;g[p+12>>2]=0.0;f=k- +g[s+56>>2];k=l- +g[s+60>>2];g[q>>2]=j- +g[s+52>>2];g[q+4>>2]=f;g[q+8>>2]=k;g[q+12>>2]=0.0;anz(b,n,o,p,q,d,r+388|0,+g[r+336>>2],s+388|0,+g[s+336>>2]);i=m;return}function ao$(b,d){b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0,l=0;e=b+860+(d<<6)|0;f=b+860+(d<<6)+4|0;h=+ao0(+g[b+1184+(d<<2)>>2],+g[e>>2],+g[f>>2]);g[b+860+(d<<6)+52>>2]=h;i=+g[e>>2];j=+g[f>>2];do{if(i>j){c[b+860+(d<<6)+56>>2]=0;k=3614}else{if(i>h){c[b+860+(d<<6)+56>>2]=1;g[b+860+(d<<6)+48>>2]=h-i;break}f=b+860+(d<<6)+56|0;if(j>2]=2;g[b+860+(d<<6)+48>>2]=h-j;break}else{c[f>>2]=0;k=3614;break}}}while(0);do{if((k|0)==3614){if((a[b+860+(d<<6)+44|0]&1)==0){l=0}else{break}return l|0}}while(0);l=1;return l|0}function ao0(a,b,c){a=+a;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0;if(b>=c){d=a;return+d}if(a=g){d=a;return+d}d=a-6.2831854820251465;return+d}function ao1(b){b=b|0;var d=0,e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0;d=i;i=i+16|0;e=d|0;if((a[b+1300|0]&1)==0){i=d;return}g[b+920>>2]=0.0;g[b+984>>2]=0.0;g[b+1048>>2]=0.0;f=b+24|0;aDD(b+704|0,0,16);h=b+28|0;aoZ(b,(c[f>>2]|0)+4|0,(c[h>>2]|0)+4|0);ct[c[(c[b>>2]|0)+44>>2]&2047](b);j=+g[b+1276>>2];k=+g[b+1280>>2];l=+g[b+1284>>2];m=b+1292|0;n=e|0;o=e+4|0;p=e+8|0;q=e+12|0;if(+g[b+688>>2]>=+g[b+672>>2]){if((a[m]&1)==0){r=b+1152|0;s=b+1136|0;t=b+1120|0}else{r=b+1088|0;s=b+1072|0;t=b+1056|0}u=+g[r>>2];v=+g[s>>2];g[n>>2]=+g[t>>2];g[o>>2]=v;g[p>>2]=u;g[q>>2]=0.0;ao_(b,b+168|0,e,j,k,l,j,k,l)}if(+g[b+692>>2]>=+g[b+676>>2]){if((a[m]&1)==0){w=b+1156|0;x=b+1140|0;y=b+1124|0}else{w=b+1092|0;x=b+1076|0;y=b+1060|0}u=+g[w>>2];v=+g[x>>2];g[n>>2]=+g[y>>2];g[o>>2]=v;g[p>>2]=u;g[q>>2]=0.0;ao_(b,b+252|0,e,j,k,l,j,k,l)}if(+g[b+696>>2]>=+g[b+680>>2]){if((a[m]&1)==0){z=b+1160|0;A=b+1144|0;B=b+1128|0}else{z=b+1096|0;A=b+1080|0;B=b+1064|0}u=+g[z>>2];v=+g[A>>2];g[n>>2]=+g[B>>2];g[o>>2]=v;g[p>>2]=u;g[q>>2]=0.0;ao_(b,b+336|0,e,j,k,l,j,k,l)}q=e;e=0;do{B=b+860+(e<<6)|0;A=b+860+(e<<6)+4|0;l=+ao0(+g[b+1184+(e<<2)>>2],+g[B>>2],+g[A>>2]);g[b+860+(e<<6)+52>>2]=l;k=+g[B>>2];j=+g[A>>2];do{if(k>j){c[b+860+(e<<6)+56>>2]=0;C=3663}else{if(k>l){c[b+860+(e<<6)+56>>2]=1;g[b+860+(e<<6)+48>>2]=l-k;C=3664;break}A=b+860+(e<<6)+56|0;if(j>2]=2;g[b+860+(e<<6)+48>>2]=l-j;C=3664;break}else{c[A>>2]=0;C=3663;break}}}while(0);if((C|0)==3663){C=0;if((a[b+860+(e<<6)+44|0]&1)!=0){C=3664}}do{if((C|0)==3664){C=0;A=b+1200+(e<<4)|0;c[q>>2]=c[A>>2];c[q+4>>2]=c[A+4>>2];c[q+8>>2]=c[A+8>>2];c[q+12>>2]=c[A+12>>2];A=b+420+(e*84|0)|0;if((A|0)==0){break}B=c[f>>2]|0;j=+g[B+4>>2];l=+g[B+20>>2];k=+g[B+36>>2];u=+g[B+8>>2];v=+g[B+24>>2];D=+g[B+40>>2];E=+g[B+12>>2];F=+g[B+28>>2];G=+g[B+44>>2];z=c[h>>2]|0;H=+g[z+4>>2];I=+g[z+20>>2];J=+g[z+36>>2];K=+g[z+8>>2];L=+g[z+24>>2];M=+g[z+40>>2];N=+g[z+12>>2];O=+g[z+28>>2];P=+g[z+44>>2];aDD(A|0,0,16);Q=+g[n>>2];R=+g[o>>2];S=+g[p>>2];T=j*Q+l*R+k*S;k=u*Q+v*R+D*S;D=E*Q+F*R+G*S;g[b+420+(e*84|0)+16>>2]=T;g[b+420+(e*84|0)+20>>2]=k;g[b+420+(e*84|0)+24>>2]=D;g[b+420+(e*84|0)+28>>2]=0.0;G=-0.0-Q;Q=-0.0-R;R=-0.0-S;S=H*G+I*Q+J*R;J=K*G+L*Q+M*R;M=N*G+O*Q+P*R;g[b+420+(e*84|0)+32>>2]=S;g[b+420+(e*84|0)+36>>2]=J;g[b+420+(e*84|0)+40>>2]=M;g[b+420+(e*84|0)+44>>2]=0.0;R=T*+g[B+388>>2];P=k*+g[B+392>>2];Q=D*+g[B+396>>2];g[b+420+(e*84|0)+48>>2]=R;g[b+420+(e*84|0)+52>>2]=P;g[b+420+(e*84|0)+56>>2]=Q;g[b+420+(e*84|0)+60>>2]=0.0;O=S*+g[z+388>>2];G=J*+g[z+392>>2];N=M*+g[z+396>>2];g[b+420+(e*84|0)+64>>2]=O;g[b+420+(e*84|0)+68>>2]=G;g[b+420+(e*84|0)+72>>2]=N;g[b+420+(e*84|0)+76>>2]=0.0;g[b+420+(e*84|0)+80>>2]=T*R+k*P+D*Q+(S*O+J*G+M*N)}}while(0);e=e+1|0;}while((e|0)<3);i=d;return}function ao2(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0;if((a[b+1300|0]&1)!=0){c[d>>2]=0;c[d+4>>2]=0;return}aoZ(b,(c[b+24>>2]|0)+4|0,(c[b+28>>2]|0)+4|0);e=d|0;c[e>>2]=0;f=d+4|0;c[f>>2]=6;if((c[b+848>>2]|0)==0){if((a[b+780|0]&1)==0){h=0;i=6}else{j=3684}}else{j=3684}if((j|0)==3684){c[e>>2]=1;c[f>>2]=5;h=1;i=5}if((c[b+852>>2]|0)==0){if((a[b+781|0]&1)==0){k=h;l=i}else{j=3698}}else{j=3698}if((j|0)==3698){d=h+1|0;c[e>>2]=d;h=i-1|0;c[f>>2]=h;k=d;l=h}if((c[b+856>>2]|0)==0){if((a[b+782|0]&1)==0){m=0}else{j=3701}}else{j=3701}if((j|0)==3701){c[e>>2]=k+1;c[f>>2]=l-1;m=0}do{l=b+860+(m<<6)|0;k=b+860+(m<<6)+4|0;n=+ao0(+g[b+1184+(m<<2)>>2],+g[l>>2],+g[k>>2]);g[b+860+(m<<6)+52>>2]=n;o=+g[l>>2];p=+g[k>>2];do{if(o>p){c[b+860+(m<<6)+56>>2]=0;j=3693}else{if(o>n){c[b+860+(m<<6)+56>>2]=1;g[b+860+(m<<6)+48>>2]=n-o;j=3694;break}k=b+860+(m<<6)+56|0;if(p>2]=2;g[b+860+(m<<6)+48>>2]=n-p;j=3694;break}else{c[k>>2]=0;j=3693;break}}}while(0);if((j|0)==3693){j=0;if((a[b+860+(m<<6)+44|0]&1)!=0){j=3694}}if((j|0)==3694){j=0;c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1}m=m+1|0;}while((m|0)<3);return}function ao3(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[b+24>>2]|0;f=e+4|0;g=c[b+28>>2]|0;h=g+4|0;i=e+304|0;j=g+304|0;k=e+320|0;e=g+320|0;if((a[b+1293|0]&1)==0){g=ao5(b,d,0,f,h,i,j,k,e)|0;ao4(b,d,g,f,h,i,j,k,e)|0;return}else{g=ao4(b,d,0,f,h,i,j,k,e)|0;ao5(b,d,g,f,h,i,j,k,e)|0;return}}function ao4(b,d,e,f,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;n=i;i=i+16|0;o=n|0;p=o;q=b+1296|0;r=d+32|0;s=d+4|0;t=0;u=e;while(1){e=b+860+(t<<6)|0;if((c[b+860+(t<<6)+56>>2]|0)==0){if((a[b+860+(t<<6)+44|0]&1)==0){v=u}else{w=3713}}else{w=3713}if((w|0)==3713){w=0;x=b+1200+(t<<4)|0;c[p>>2]=c[x>>2];c[p+4>>2]=c[x+4>>2];c[p+8>>2]=c[x+8>>2];c[p+12>>2]=c[x+12>>2];x=c[q>>2]>>(t*3|0)+9;if((x&1|0)==0){g[b+860+(t<<6)+28>>2]=+g[c[r>>2]>>2]}if((x&2|0)==0){g[b+860+(t<<6)+36>>2]=+g[c[r>>2]>>2]}if((x&4|0)==0){g[b+860+(t<<6)+32>>2]=+g[s>>2]}v=(ao7(b,e,f,h,j,k,l,m,d,u,o,1,0)|0)+u|0}e=t+1|0;if((e|0)<3){t=e;u=v}else{break}}i=n;return v|0}function ao5(b,d,e,f,h,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;n=i;i=i+80|0;o=n|0;p=n+64|0;g[o+60>>2]=0.0;q=o+8|0;g[q>>2]=0.0;r=o+12|0;g[r>>2]=.10000000149011612;s=o+16|0;g[s>>2]=300.0;t=o|0;g[t>>2]=1.0;u=o+4|0;g[u>>2]=-1.0;v=o+28|0;g[v>>2]=0.0;w=o+32|0;g[w>>2]=.20000000298023224;x=o+36|0;g[x>>2]=0.0;y=o+40|0;g[y>>2]=0.0;z=o+20|0;g[z>>2]=1.0;A=o+24|0;g[A>>2]=.5;B=o+56|0;c[B>>2]=0;C=o+48|0;g[C>>2]=0.0;D=o+44|0;a[D]=0;E=o+52|0;F=b+724|0;G=b+720|0;H=p|0;I=p+4|0;J=p+8|0;K=p+12|0;L=b+1296|0;M=d+32|0;N=d+4|0;O=b+1293|0;P=0;Q=e;while(1){e=c[b+848+(P<<2)>>2]|0;R=a[b+780+P|0]&1;do{if((e|0)==0&R<<24>>24==0){S=Q}else{g[y>>2]=0.0;c[B>>2]=e;g[E>>2]=+g[b+832+(P<<2)>>2];g[C>>2]=+g[b+816+(P<<2)>>2];g[z>>2]=+g[F>>2];a[D]=R;g[u>>2]=+g[b+688+(P<<2)>>2];g[A>>2]=+g[G>>2];g[t>>2]=+g[b+672+(P<<2)>>2];g[s>>2]=0.0;g[r>>2]=+g[b+800+(P<<2)>>2];g[q>>2]=+g[b+784+(P<<2)>>2];g[H>>2]=+g[b+1056+(P<<2)>>2];g[I>>2]=+g[b+1072+(P<<2)>>2];g[J>>2]=+g[b+1088+(P<<2)>>2];g[K>>2]=0.0;T=c[L>>2]>>(P*3|0);if((T&1|0)==0){U=c[M>>2]|0}else{U=b+732+(P<<2)|0}g[v>>2]=+g[U>>2];if((T&2|0)==0){V=c[M>>2]|0}else{V=b+764+(P<<2)|0}g[x>>2]=+g[V>>2];if((T&4|0)==0){W=N}else{W=b+748+(P<<2)|0}g[w>>2]=+g[W>>2];if((a[O]&1)==0){S=(ao7(b,o,f,h,j,k,l,m,d,Q,p,0,0)|0)+Q|0;break}T=P+1|0;if((c[b+860+(((T|0)==3?0:T)<<6)+56>>2]|0)==0){X=1}else{X=(c[b+860+(((P+2|0)%3|0)<<6)+56>>2]|0)==0|0}S=(ao7(b,o,f,h,j,k,l,m,d,Q,p,0,X)|0)+Q|0}}while(0);R=P+1|0;if((R|0)<3){P=R;Q=S}else{break}}i=n;return S|0}function ao6(a){a=a|0;return}function ao7(b,d,e,f,h,i,j,k,l,m,n,o,p){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,ab=0,ac=0,ad=0.0,ae=0.0,af=0.0;q=aa(c[l+24>>2]|0,m)|0;m=(a[d+44|0]&1)==0;r=c[d+56>>2]|0;if(m&(r|0)==0){s=0;return s|0}t=(o|0)!=0;o=l+12|0;u=c[(t?o:l+8|0)>>2]|0;if(t){v=c[l+20>>2]|0}else{v=0}w=n|0;g[u+(q<<2)>>2]=+g[w>>2];x=n+4|0;y=q+1|0;g[u+(y<<2)>>2]=+g[x>>2];z=n+8|0;n=q+2|0;g[u+(n<<2)>>2]=+g[z>>2];do{if(t){g[v+(q<<2)>>2]=-0.0- +g[w>>2];g[v+(y<<2)>>2]=-0.0- +g[x>>2];g[v+(n<<2)>>2]=-0.0- +g[z>>2]}else{u=b+1168|0;A=+g[u>>2];if((a[b+1293|0]&1)==0){B=A- +g[e+48>>2];C=b+1172|0;D=+g[C>>2]- +g[e+52>>2];E=b+1176|0;F=+g[E>>2]- +g[e+56>>2];G=+g[z>>2];H=+g[x>>2];I=+g[w>>2];g[(c[o>>2]|0)+(q<<2)>>2]=D*G-F*H;g[(c[o>>2]|0)+(y<<2)>>2]=F*I-B*G;g[(c[o>>2]|0)+(n<<2)>>2]=B*H-D*I;I=+g[u>>2]- +g[f+48>>2];D=+g[C>>2]- +g[f+52>>2];H=+g[E>>2]- +g[f+56>>2];B=+g[z>>2];G=+g[x>>2];F=+g[w>>2];E=l+20|0;g[(c[E>>2]|0)+(q<<2)>>2]=-0.0-(D*B-H*G);g[(c[E>>2]|0)+(y<<2)>>2]=-0.0-(H*F-I*B);g[(c[E>>2]|0)+(n<<2)>>2]=-0.0-(I*G-D*F);break}F=A- +g[f+48>>2];A=+g[b+1172>>2]- +g[f+52>>2];D=+g[b+1176>>2]- +g[f+56>>2];G=+g[w>>2];I=+g[x>>2];B=+g[z>>2];H=F*G+A*I+D*B;J=G*H;K=I*H;L=B*H;H=+g[b+1104>>2]- +g[e+48>>2];M=+g[b+1108>>2]- +g[e+52>>2];N=+g[b+1112>>2]- +g[e+56>>2];O=G*H+I*M+B*N;P=G*O;Q=I*O;R=B*O;O=+g[d+52>>2]- +g[d+48>>2];S=P+G*O-J;T=Q+I*O-K;U=R+B*O-L;O=+g[b+1264>>2];V=H-P+O*S;P=M-Q+O*T;Q=N-R+O*U;R=+g[b+1268>>2];N=F-J-R*S;S=A-K-R*T;T=D-L-R*U;U=B*P-I*Q;L=G*Q-B*V;Q=I*V-G*P;P=B*S-I*T;V=G*T-B*N;B=I*N-G*S;if((a[b+1272|0]&1)!=0&(p|0)==0){W=O*U;X=O*L;Y=O*Q;Z=R*P;_=R*V;$=R*B}else{W=U;X=L;Y=Q;Z=P;_=V;$=B}g[(c[o>>2]|0)+(q<<2)>>2]=W;g[(c[o>>2]|0)+(y<<2)>>2]=X;g[(c[o>>2]|0)+(n<<2)>>2]=Y;E=l+20|0;g[(c[E>>2]|0)+(q<<2)>>2]=-0.0-Z;g[(c[E>>2]|0)+(y<<2)>>2]=-0.0-_;g[(c[E>>2]|0)+(n<<2)>>2]=-0.0-$}}while(0);n=(r|0)!=0;do{if(n){if(+g[d>>2]!=+g[d+4>>2]){ab=3753;break}y=l+28|0;g[(c[y>>2]|0)+(q<<2)>>2]=0.0;ac=y}else{ab=3753}}while(0);do{if((ab|0)==3753){y=l+28|0;g[(c[y>>2]|0)+(q<<2)>>2]=0.0;if(!m){g[(c[l+32>>2]|0)+(q<<2)>>2]=+g[d+28>>2];if(n){ac=y;break}$=+g[d+8>>2];if(t){ad=$}else{ad=-0.0-$}_=+g[d+52>>2];Z=+g[d>>2];Y=+g[d+4>>2];X=+g[l>>2]*+g[d+32>>2];L4236:do{if(Z>Y){ae=1.0}else{if(Z==Y){ae=0.0;break}W=ad/X;if(W<0.0){do{if(_>=Z){if(Z-W<=_){break}ae=(Z-_)/W;break L4236}}while(0);ae=_=_){break}ae=(Y-_)/W;break L4236}}while(0);ae=_>Y?0.0:1.0}}while(0);o=(c[y>>2]|0)+(q<<2)|0;g[o>>2]=ae*$+ +g[o>>2];o=d+12|0;g[(c[l+36>>2]|0)+(q<<2)>>2]=-0.0- +g[o>>2];g[(c[l+40>>2]|0)+(q<<2)>>2]=+g[o>>2]}if(n){ac=y;break}else{s=1}return s|0}}while(0);ae=+g[l>>2]*+g[d+32>>2];if(t){n=(c[ac>>2]|0)+(q<<2)|0;g[n>>2]=+g[d+48>>2]*(-0.0-ae)+ +g[n>>2]}else{n=(c[ac>>2]|0)+(q<<2)|0;g[n>>2]=ae*+g[d+48>>2]+ +g[n>>2]}g[(c[l+32>>2]|0)+(q<<2)>>2]=+g[d+36>>2];if(+g[d>>2]==+g[d+4>>2]){g[(c[l+36>>2]|0)+(q<<2)>>2]=-3.4028234663852886e+38;g[(c[l+40>>2]|0)+(q<<2)>>2]=3.4028234663852886e+38;s=1;return s|0}n=(r|0)==1;r=(c[l+36>>2]|0)+(q<<2)|0;if(n){g[r>>2]=0.0;g[(c[l+40>>2]|0)+(q<<2)>>2]=3.4028234663852886e+38}else{g[r>>2]=-3.4028234663852886e+38;g[(c[l+40>>2]|0)+(q<<2)>>2]=0.0}ae=+g[d+40>>2];if(ae<=0.0){s=1;return s|0}if(t){ad=+g[w>>2];Y=+g[x>>2];_=+g[z>>2];af=+g[j>>2]*ad+ +g[j+4>>2]*Y+ +g[j+8>>2]*_-(ad*+g[k>>2]+Y*+g[k+4>>2]+_*+g[k+8>>2])}else{_=+g[w>>2];Y=+g[x>>2];ad=+g[z>>2];af=+g[h>>2]*_+ +g[h+4>>2]*Y+ +g[h+8>>2]*ad-(_*+g[i>>2]+Y*+g[i+4>>2]+ad*+g[i+8>>2])}if(n){if(af>=0.0){s=1;return s|0}ad=af*(-0.0-ae);n=(c[ac>>2]|0)+(q<<2)|0;if(ad<=+g[n>>2]){s=1;return s|0}g[n>>2]=ad;s=1;return s|0}else{if(af<=0.0){s=1;return s|0}ad=af*(-0.0-ae);n=(c[ac>>2]|0)+(q<<2)|0;if(ad>=+g[n>>2]){s=1;return s|0}g[n>>2]=ad;s=1;return s|0}return 0}function ao8(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0.0;b=+g[(c[a+24>>2]|0)+336>>2];d=+g[(c[a+28>>2]|0)+336>>2];if(d==0.0){e=1.0}else{e=b/(b+d)}d=1.0-e;b=e*+g[a+1108>>2]+d*+g[a+1172>>2];f=e*+g[a+1112>>2]+d*+g[a+1176>>2];g[a+1276>>2]=e*+g[a+1104>>2]+d*+g[a+1168>>2];g[a+1280>>2]=b;g[a+1284>>2]=f;g[a+1288>>2]=0.0;return}function ao9(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0,h=0;if(e>>>0<3){if((b|0)==3){g[a+732+(e<<2)>>2]=d;f=a+1296|0;c[f>>2]=c[f>>2]|1<<(e*3|0);return}else if((b|0)==4){g[a+764+(e<<2)>>2]=d;f=a+1296|0;c[f>>2]=c[f>>2]|2<<(e*3|0);return}else if((b|0)==2){g[a+748+(e<<2)>>2]=d;f=a+1296|0;c[f>>2]=c[f>>2]|4<<(e*3|0);return}else{return}}f=e-3|0;if(f>>>0>=3){return}if((b|0)==2){g[a+860+(f<<6)+32>>2]=d;h=a+1296|0;c[h>>2]=c[h>>2]|4<<(e*3|0);return}else if((b|0)==3){g[a+860+(f<<6)+28>>2]=d;h=a+1296|0;c[h>>2]=c[h>>2]|1<<(e*3|0);return}else if((b|0)==4){g[a+860+(f<<6)+36>>2]=d;f=a+1296|0;c[f>>2]=c[f>>2]|2<<(e*3|0);return}else{return}}function apa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0;do{if(c>>>0<3){if((b|0)==2){d=+g[a+748+(c<<2)>>2];break}else if((b|0)==4){d=+g[a+764+(c<<2)>>2];break}else if((b|0)==3){d=+g[a+732+(c<<2)>>2];break}else{d=0.0;break}}else{e=c-3|0;if(e>>>0>=3){d=0.0;break}if((b|0)==3){d=+g[a+860+(e<<6)+28>>2];break}else if((b|0)==4){d=+g[a+860+(e<<6)+36>>2];break}else if((b|0)==2){d=+g[a+860+(e<<6)+32>>2];break}else{d=0.0;break}}}while(0);return+d}function apb(b,d,e,f,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0.0,o=0.0,p=0.0;aoZ(b,e,f);l=b+860|0;m=b+864|0;n=+ao0(+g[b+1184>>2],+g[l>>2],+g[m>>2]);g[b+912>>2]=n;o=+g[l>>2];p=+g[m>>2];do{if(o>p){c[b+916>>2]=0}else{if(o>n){c[b+916>>2]=1;g[b+908>>2]=n-o;break}m=b+916|0;if(p>2]=2;g[b+908>>2]=n-p;break}else{c[m>>2]=0;break}}}while(0);m=b+924|0;l=b+928|0;p=+ao0(+g[b+1188>>2],+g[m>>2],+g[l>>2]);g[b+976>>2]=p;n=+g[m>>2];o=+g[l>>2];do{if(n>o){c[b+980>>2]=0}else{if(n>p){c[b+980>>2]=1;g[b+972>>2]=p-n;break}l=b+980|0;if(o>2]=2;g[b+972>>2]=p-o;break}else{c[l>>2]=0;break}}}while(0);l=b+988|0;m=b+992|0;o=+ao0(+g[b+1192>>2],+g[l>>2],+g[m>>2]);g[b+1040>>2]=o;p=+g[l>>2];n=+g[m>>2];do{if(p>n){c[b+1044>>2]=0}else{if(p>o){c[b+1044>>2]=1;g[b+1036>>2]=o-p;break}m=b+1044|0;if(n>2]=2;g[b+1036>>2]=o-n;break}else{c[m>>2]=0;break}}}while(0);if((a[b+1293|0]&1)==0){m=ao5(b,d,0,e,f,h,i,j,k)|0;ao4(b,d,m,e,f,h,i,j,k)|0;return}else{m=ao4(b,d,0,e,f,h,i,j,k)|0;ao5(b,d,m,e,f,h,i,j,k)|0;return}}function apc(a){a=a|0;if((a|0)==0){return}aDB(a);return}function apd(a){a=a|0;return 244}function ape(a){a=a|0;return}function apf(a){a=a|0;return 340}function apg(a){a=a|0;return}function aph(b,d,e){b=b|0;d=d|0;e=e|0;aq3(b|0,d,e)|0;g[d+44>>2]=+g[b+40>>2];g[d+48>>2]=+g[b+44>>2];g[d+52>>2]=+g[b+48>>2];g[d+56>>2]=+g[b+52>>2];g[d+60>>2]=+g[b+56>>2];g[d+64>>2]=+g[b+60>>2];g[d+68>>2]=+g[b+64>>2];g[d+72>>2]=+g[b+68>>2];g[d+76>>2]=+g[b+72>>2];g[d+80>>2]=+g[b+76>>2];g[d+84>>2]=+g[b+80>>2];g[d+88>>2]=+g[b+84>>2];g[d+92>>2]=+g[b+88>>2];g[d+96>>2]=+g[b+92>>2];g[d+100>>2]=+g[b+96>>2];g[d+104>>2]=+g[b+100>>2];g[d+108>>2]=+g[b+104>>2];g[d+112>>2]=+g[b+108>>2];g[d+116>>2]=+g[b+112>>2];g[d+120>>2]=+g[b+116>>2];g[d+124>>2]=+g[b+120>>2];g[d+128>>2]=+g[b+124>>2];g[d+132>>2]=+g[b+128>>2];g[d+136>>2]=+g[b+132>>2];g[d+140>>2]=+g[b+136>>2];g[d+144>>2]=+g[b+140>>2];g[d+148>>2]=+g[b+144>>2];g[d+152>>2]=+g[b+148>>2];g[d+156>>2]=+g[b+152>>2];g[d+160>>2]=+g[b+156>>2];g[d+164>>2]=+g[b+160>>2];g[d+168>>2]=+g[b+164>>2];g[d+220>>2]=+g[b+860>>2];g[d+204>>2]=+g[b+864>>2];g[d+188>>2]=+g[b+672>>2];g[d+172>>2]=+g[b+688>>2];g[d+224>>2]=+g[b+924>>2];g[d+208>>2]=+g[b+928>>2];g[d+192>>2]=+g[b+676>>2];g[d+176>>2]=+g[b+692>>2];g[d+228>>2]=+g[b+988>>2];g[d+212>>2]=+g[b+992>>2];g[d+196>>2]=+g[b+680>>2];g[d+180>>2]=+g[b+696>>2];c[d+236>>2]=a[b+1292|0]&1;c[d+240>>2]=a[b+1293|0]&1;return 17808}function api(b,d){b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0;e=d|0;f=d+48|0;if((a[b+1301|0]&1)!=0){h=(+g[b+1248>>2]- +g[b+1308>>2])*+g[b+1332>>2];g[b+784>>2]=h*(+g[e>>2]*+g[b+1356>>2]/+(c[f>>2]|0));i=+P(+h);g[b+800>>2]=i/+g[e>>2]}if((a[b+1302|0]&1)!=0){i=(+g[b+1252>>2]- +g[b+1312>>2])*+g[b+1336>>2];g[b+788>>2]=i*(+g[e>>2]*+g[b+1360>>2]/+(c[f>>2]|0));h=+P(+i);g[b+804>>2]=h/+g[e>>2]}if((a[b+1303|0]&1)!=0){h=(+g[b+1256>>2]- +g[b+1316>>2])*+g[b+1340>>2];g[b+792>>2]=h*(+g[e>>2]*+g[b+1364>>2]/+(c[f>>2]|0));i=+P(+h);g[b+808>>2]=i/+g[e>>2]}if((a[b+1304|0]&1)!=0){i=+g[b+1344>>2]*(-0.0-(+g[b+1184>>2]- +g[b+1320>>2]));g[b+868>>2]=i*(+g[e>>2]*+g[b+1368>>2]/+(c[f>>2]|0));h=+P(+i);g[b+872>>2]=h/+g[e>>2]}if((a[b+1305|0]&1)!=0){h=+g[b+1348>>2]*(-0.0-(+g[b+1188>>2]- +g[b+1324>>2]));g[b+932>>2]=h*(+g[e>>2]*+g[b+1372>>2]/+(c[f>>2]|0));i=+P(+h);g[b+936>>2]=i/+g[e>>2]}if((a[b+1306|0]&1)==0){j=b;ao3(j,d);return}i=+g[b+1352>>2]*(-0.0-(+g[b+1192>>2]- +g[b+1328>>2]));g[b+996>>2]=i*(+g[e>>2]*+g[b+1376>>2]/+(c[f>>2]|0));h=+P(+i);g[b+1e3>>2]=h/+g[e>>2];j=b;ao3(j,d);return}function apj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;e=+g[b>>2];f=+g[b+4>>2];h=+g[b+8>>2];i=1.0/+Q(+(e*e+f*f+h*h));j=e*i;e=f*i;f=h*i;i=+g[d>>2];h=+g[d+4>>2];k=+g[d+8>>2];l=1.0/+Q(+(i*i+h*h+k*k));m=i*l;i=h*l;h=k*l;l=f*i-e*h;k=j*h-f*m;n=e*m-j*i;d=c[a+24>>2]|0;o=+g[d+4>>2];p=+g[d+20>>2];q=+g[d+36>>2];r=+g[d+8>>2];s=+g[d+24>>2];t=+g[d+40>>2];u=+g[d+12>>2];v=+g[d+28>>2];w=+g[d+44>>2];x=-0.0- +g[d+52>>2];y=-0.0- +g[d+56>>2];z=-0.0- +g[d+60>>2];g[a+40>>2]=o*l+k*p+n*q;g[a+44>>2]=m*o+i*p+h*q;g[a+48>>2]=j*o+e*p+f*q;g[a+52>>2]=0.0;g[a+56>>2]=l*r+k*s+n*t;g[a+60>>2]=m*r+i*s+h*t;g[a+64>>2]=j*r+e*s+f*t;g[a+68>>2]=0.0;g[a+72>>2]=l*u+k*v+n*w;g[a+76>>2]=m*u+i*v+h*w;g[a+80>>2]=j*u+e*v+f*w;g[a+84>>2]=0.0;g[a+88>>2]=o*0.0+p*0.0+q*0.0+(o*x+p*y+q*z);g[a+92>>2]=r*0.0+s*0.0+t*0.0+(r*x+s*y+t*z);g[a+96>>2]=u*0.0+v*0.0+w*0.0+(u*x+v*y+w*z);g[a+100>>2]=0.0;b=c[a+28>>2]|0;z=+g[b+4>>2];w=+g[b+20>>2];y=+g[b+36>>2];v=+g[b+8>>2];x=+g[b+24>>2];u=+g[b+40>>2];t=+g[b+12>>2];s=+g[b+28>>2];r=+g[b+44>>2];q=-0.0- +g[b+52>>2];p=-0.0- +g[b+56>>2];o=-0.0- +g[b+60>>2];g[a+104>>2]=l*z+k*w+n*y;g[a+108>>2]=m*z+i*w+h*y;g[a+112>>2]=j*z+e*w+f*y;g[a+116>>2]=0.0;g[a+120>>2]=l*v+k*x+n*u;g[a+124>>2]=m*v+i*x+h*u;g[a+128>>2]=j*v+e*x+f*u;g[a+132>>2]=0.0;g[a+136>>2]=l*t+k*s+n*r;g[a+140>>2]=m*t+i*s+h*r;g[a+144>>2]=j*t+e*s+f*r;g[a+148>>2]=0.0;g[a+152>>2]=z*0.0+w*0.0+y*0.0+(z*q+w*p+y*o);g[a+156>>2]=v*0.0+x*0.0+u*0.0+(v*q+x*p+u*o);g[a+160>>2]=t*0.0+s*0.0+r*0.0+(t*q+s*p+r*o);g[a+164>>2]=0.0;aoZ(a,d+4|0,b+4|0);return}function apk(a){a=a|0;if((a|0)==0){return}aDB(a|0);return}function apl(b,d,e){b=b|0;d=d|0;e=e|0;aph(b,d,e)|0;g[d+268>>2]=+g[b+1308>>2];g[d+316>>2]=+g[b+1356>>2];c[d+244>>2]=a[b+1301|0]&1;g[d+292>>2]=+g[b+1332>>2];g[d+272>>2]=+g[b+1312>>2];g[d+320>>2]=+g[b+1360>>2];c[d+248>>2]=a[b+1302|0]&1;g[d+296>>2]=+g[b+1336>>2];g[d+276>>2]=+g[b+1316>>2];g[d+324>>2]=+g[b+1364>>2];c[d+252>>2]=a[b+1303|0]&1;g[d+300>>2]=+g[b+1340>>2];g[d+280>>2]=+g[b+1320>>2];g[d+328>>2]=+g[b+1368>>2];c[d+256>>2]=a[b+1304|0]&1;g[d+304>>2]=+g[b+1344>>2];g[d+284>>2]=+g[b+1324>>2];g[d+332>>2]=+g[b+1372>>2];c[d+260>>2]=a[b+1305|0]&1;g[d+308>>2]=+g[b+1348>>2];g[d+288>>2]=+g[b+1328>>2];g[d+336>>2]=+g[b+1376>>2];c[d+264>>2]=a[b+1306|0]&1;g[d+312>>2]=+g[b+1352>>2];return 17808}function apm(a){a=a|0;if((a|0)==0){return}aDB(a|0);return}function apn(b,d,e,f,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;c[b+4>>2]=4;c[b+8>>2]=-1;c[b+12>>2]=-1;g[b+16>>2]=3.4028234663852886e+38;a[b+20|0]=1;a[b+21|0]=0;c[b+24>>2]=d;c[b+28>>2]=e;g[b+32>>2]=0.0;g[b+36>>2]=.30000001192092896;c[b>>2]=23504;g[b+680>>2]=0.0;g[b+684>>2]=-1.0;g[b+688>>2]=.8999999761581421;g[b+692>>2]=.30000001192092896;g[b+696>>2]=1.0;g[b+700>>2]=0.0;g[b+704>>2]=0.0;a[b+708|0]=0;a[b+728|0]=0;a[b+729|0]=0;a[b+730|0]=0;a[b+731|0]=1;a[b+732|0]=k&1;c[b+740>>2]=0;e=b+592|0;l=f;c[e>>2]=c[l>>2];c[e+4>>2]=c[l+4>>2];c[e+8>>2]=c[l+8>>2];c[e+12>>2]=c[l+12>>2];m=+g[d+4>>2];n=+g[d+20>>2];o=+g[d+36>>2];l=i|0;p=+g[l>>2];e=i+4|0;q=+g[e>>2];f=i+8|0;r=+g[f>>2];s=m*p+n*q+o*r;do{if(s<.9999998807907104){if(s>-.9999998807907104){t=o*q-n*r;u=m*r-o*p;v=n*p-m*q;w=t;x=u;y=v;z=r*u-q*v;A=p*v-r*t;B=q*t-p*u;break}else{w=+g[d+8>>2];x=+g[d+24>>2];y=+g[d+40>>2];z=+g[d+12>>2];A=+g[d+28>>2];B=+g[d+44>>2];break}}else{w=+g[d+8>>2];x=+g[d+24>>2];y=+g[d+40>>2];z=-0.0- +g[d+12>>2];A=-0.0- +g[d+28>>2];B=-0.0- +g[d+44>>2]}}while(0);g[b+544>>2]=z;g[b+548>>2]=w;g[b+552>>2]=+g[l>>2];g[b+556>>2]=0.0;g[b+560>>2]=A;g[b+564>>2]=x;g[b+568>>2]=+g[e>>2];g[b+572>>2]=0.0;g[b+576>>2]=B;g[b+580>>2]=y;g[b+584>>2]=+g[f>>2];g[b+588>>2]=0.0;y=+g[e>>2];e=j+8|0;x=+g[e>>2];w=+g[f>>2];f=j+4|0;p=+g[f>>2];d=j|0;q=+g[d>>2];r=+g[l>>2];m=x*w+(y*p+q*r);do{if(m<-.9999998807907104){if(+P(+w)>.7071067690849304){n=1.0/+Q(+(y*y+w*w));C=0.0;D=n*(-0.0-w);E=y*n;F=0.0;break}else{n=1.0/+Q(+(y*y+r*r));C=n*(-0.0-y);D=r*n;E=0.0;F=0.0;break}}else{n=+Q(+((m+1.0)*2.0));o=1.0/n;C=(y*x-w*p)*o;D=(w*q-x*r)*o;E=(p*r-y*q)*o;F=n*.5}}while(0);y=z*F+B*D-A*E;r=A*F+z*E-B*C;w=B*F+A*C-z*D;m=-0.0-C;C=z*m-A*D-B*E;B=-0.0-D;D=-0.0-E;E=r*D+(F*y+C*m)-w*B;A=w*m+(F*r+C*B)-y*D;z=y*B+(F*w+C*D)-r*m;l=b+656|0;j=h;c[l>>2]=c[j>>2];c[l+4>>2]=c[j+4>>2];c[l+8>>2]=c[j+8>>2];c[l+12>>2]=c[j+12>>2];g[b+608>>2]=E;g[b+612>>2]=p*z-x*A;g[b+616>>2]=+g[d>>2];g[b+620>>2]=0.0;g[b+624>>2]=A;g[b+628>>2]=x*E-q*z;g[b+632>>2]=+g[f>>2];g[b+636>>2]=0.0;g[b+640>>2]=z;g[b+644>>2]=q*A-p*E;g[b+648>>2]=+g[e>>2];g[b+652>>2]=0.0;g[b+724>>2]=k?-1.0:1.0;return}function apo(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;aq1(b|0,4,d);c[b>>2]=23504;g[b+680>>2]=0.0;g[b+684>>2]=-1.0;g[b+688>>2]=.8999999761581421;g[b+692>>2]=.30000001192092896;g[b+696>>2]=1.0;g[b+700>>2]=0.0;g[b+704>>2]=0.0;a[b+708|0]=0;a[b+728|0]=0;a[b+729|0]=0;a[b+730|0]=0;a[b+731|0]=1;a[b+732|0]=h&1;c[b+740>>2]=0;i=f|0;j=f+8|0;k=+g[j>>2];if(+P(+k)>.7071067690849304){l=+g[f+4>>2];m=k*k+l*l;n=1.0/+Q(+m);o=n*(-0.0-k);p=l*n;l=+g[i>>2];q=m*n;r=p*(-0.0-l);s=l*o;t=0.0;u=o;v=p}else{p=+g[i>>2];o=+g[f+4>>2];l=p*p+o*o;n=1.0/+Q(+l);m=n*(-0.0-o);o=p*n;q=o*(-0.0-k);r=k*m;s=l*n;t=m;u=o;v=0.0}w=b+592|0;x=e;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];x=f+4|0;g[b+544>>2]=t;g[b+548>>2]=q;g[b+552>>2]=+g[i>>2];g[b+556>>2]=0.0;g[b+560>>2]=u;g[b+564>>2]=r;g[b+568>>2]=+g[x>>2];g[b+572>>2]=0.0;g[b+576>>2]=v;g[b+580>>2]=s;g[b+584>>2]=+g[j>>2];g[b+588>>2]=0.0;s=+g[d+4>>2];r=+g[i>>2];q=+g[d+8>>2];o=+g[x>>2];m=+g[d+12>>2];n=+g[j>>2];l=s*r+q*o+m*n;k=+g[d+20>>2];p=+g[d+24>>2];y=+g[d+28>>2];z=r*k+o*p+n*y;A=+g[d+36>>2];B=+g[d+40>>2];C=+g[d+44>>2];D=r*A+o*B+n*C;E=r*l+o*z+n*D;do{if(E<-.9999998807907104){if(+P(+n)>.7071067690849304){F=1.0/+Q(+(o*o+n*n));G=0.0;H=F*(-0.0-n);I=o*F;J=0.0;break}else{F=1.0/+Q(+(r*r+o*o));G=F*(-0.0-o);H=r*F;I=0.0;J=0.0;break}}else{F=+Q(+((E+1.0)*2.0));K=1.0/F;G=(o*D-n*z)*K;H=(n*l-r*D)*K;I=(r*z-o*l)*K;J=F*.5}}while(0);o=t*J+v*H-u*I;r=u*J+t*I-v*G;n=v*J+u*G-t*H;E=-0.0-G;G=t*E-u*H-v*I;v=-0.0-H;H=-0.0-I;I=r*H+(J*o+G*E)-n*v;u=n*E+(J*r+G*v)-o*H;t=o*v+(J*n+G*H)-r*E;E=+g[e>>2];r=+g[e+4>>2];H=+g[e+8>>2];G=+g[d+56>>2]+(E*k+r*p+H*y);y=+g[d+60>>2]+(E*A+r*B+H*C);g[b+656>>2]=+g[d+52>>2]+(s*E+q*r+m*H);g[b+660>>2]=G;g[b+664>>2]=y;g[b+668>>2]=0.0;g[b+608>>2]=I;g[b+612>>2]=z*t-D*u;g[b+616>>2]=l;g[b+620>>2]=0.0;g[b+624>>2]=u;g[b+628>>2]=D*I-l*t;g[b+632>>2]=z;g[b+636>>2]=0.0;g[b+640>>2]=t;g[b+644>>2]=l*u-z*I;g[b+648>>2]=D;g[b+652>>2]=0.0;g[b+724>>2]=h?-1.0:1.0;return}function app(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0,aA=0.0;d=i;i=i+176|0;e=d|0;f=d+48|0;h=d+96|0;j=d+144|0;k=d+160|0;if((a[b+730|0]&1)==0){i=d;return}g[b+32>>2]=0.0;g[b+736>>2]=0.0;if((a[b+728|0]&1)==0){l=b+24|0;m=c[l>>2]|0;n=+g[b+592>>2];o=+g[b+596>>2];p=+g[b+600>>2];q=+g[m+56>>2]+(n*+g[m+20>>2]+o*+g[m+24>>2]+p*+g[m+28>>2]);r=b+28|0;s=c[r>>2]|0;t=+g[b+656>>2];u=+g[b+660>>2];v=+g[b+664>>2];w=+g[s+56>>2]+(t*+g[s+20>>2]+u*+g[s+24>>2]+v*+g[s+28>>2]);x=+g[s+60>>2]+(t*+g[s+36>>2]+u*+g[s+40>>2]+v*+g[s+44>>2]);y=w-q;z=+g[m+52>>2]+(+g[m+4>>2]*n+ +g[m+8>>2]*o+ +g[m+12>>2]*p);A=+g[m+60>>2]+(n*+g[m+36>>2]+o*+g[m+40>>2]+p*+g[m+44>>2]);p=+g[s+52>>2]+(+g[s+4>>2]*t+ +g[s+8>>2]*u+ +g[s+12>>2]*v);v=p-z;u=x-A;t=v*v+y*y+u*u;if(t>1.1920928955078125e-7){o=1.0/+Q(+t);t=v*o;v=y*o;y=u*o;g[e>>2]=t;g[e+4>>2]=v;g[e+8>>2]=y;g[e+12>>2]=0.0;B=y;C=v;D=t}else{g[e>>2]=1.0;g[e+4>>2]=0.0;g[e+8>>2]=0.0;g[e+12>>2]=0.0;B=0.0;C=0.0;D=1.0}s=e+16|0;m=e+32|0;if(+P(+B)>.7071067690849304){t=B*B+C*C;v=1.0/+Q(+t);g[s>>2]=0.0;y=v*(-0.0-B);g[e+20>>2]=y;o=v*C;g[e+24>>2]=o;g[m>>2]=t*v;g[e+36>>2]=o*(-0.0-D);g[e+40>>2]=D*y}else{y=D*D+C*C;o=1.0/+Q(+y);v=o*(-0.0-C);g[s>>2]=v;C=o*D;g[e+20>>2]=C;g[e+24>>2]=0.0;g[m>>2]=C*(-0.0-B);g[e+36>>2]=B*v;g[e+40>>2]=y*o}m=f|0;s=f+4|0;E=f+8|0;F=f+12|0;G=f+16|0;H=f+20|0;I=f+24|0;J=f+28|0;K=f+32|0;L=f+36|0;M=f+40|0;N=f+44|0;O=h|0;R=h+4|0;S=h+8|0;T=h+12|0;U=h+16|0;V=h+20|0;W=h+24|0;X=h+28|0;Y=h+32|0;Z=h+36|0;_=h+40|0;$=h+44|0;aa=j|0;ab=j+4|0;ac=j+8|0;ad=j+12|0;ae=k|0;af=k+4|0;ag=k+8|0;ah=k+12|0;ai=0;do{aj=b+40+(ai*84|0)|0;if((aj|0)!=0){ak=c[l>>2]|0;g[m>>2]=+g[ak+4>>2];g[s>>2]=+g[ak+20>>2];g[E>>2]=+g[ak+36>>2];g[F>>2]=0.0;g[G>>2]=+g[ak+8>>2];g[H>>2]=+g[ak+24>>2];g[I>>2]=+g[ak+40>>2];g[J>>2]=0.0;g[K>>2]=+g[ak+12>>2];g[L>>2]=+g[ak+28>>2];g[M>>2]=+g[ak+44>>2];g[N>>2]=0.0;al=c[r>>2]|0;g[O>>2]=+g[al+4>>2];g[R>>2]=+g[al+20>>2];g[S>>2]=+g[al+36>>2];g[T>>2]=0.0;g[U>>2]=+g[al+8>>2];g[V>>2]=+g[al+24>>2];g[W>>2]=+g[al+40>>2];g[X>>2]=0.0;g[Y>>2]=+g[al+12>>2];g[Z>>2]=+g[al+28>>2];g[_>>2]=+g[al+44>>2];g[$>>2]=0.0;o=q- +g[ak+56>>2];y=A- +g[ak+60>>2];g[aa>>2]=z- +g[ak+52>>2];g[ab>>2]=o;g[ac>>2]=y;g[ad>>2]=0.0;y=w- +g[al+56>>2];o=x- +g[al+60>>2];g[ae>>2]=p- +g[al+52>>2];g[af>>2]=y;g[ag>>2]=o;g[ah>>2]=0.0;anz(aj,f,h,j,k,e+(ai<<4)|0,ak+388|0,+g[ak+336>>2],al+388|0,+g[al+336>>2])}ai=ai+1|0;}while((ai|0)<3)}ai=b+552|0;e=b+568|0;k=b+584|0;p=+g[ai>>2];x=+g[e>>2];w=+g[k>>2];if(+P(+w)>.7071067690849304){z=x*x+w*w;A=1.0/+Q(+z);q=A*(-0.0-w);o=x*A;am=z*A;an=o*(-0.0-p);ao=p*q;ap=0.0;aq=q;ar=o}else{o=p*p+x*x;q=1.0/+Q(+o);A=q*(-0.0-x);z=p*q;am=z*(-0.0-w);an=w*A;ao=o*q;ap=A;aq=z;ar=0.0}j=b+24|0;h=c[j>>2]|0;f=h+4|0;z=+g[f>>2];ah=h+8|0;A=+g[ah>>2];ag=h+12|0;q=+g[ag>>2];o=ap*z+aq*A+ar*q;af=h+20|0;y=+g[af>>2];ae=h+24|0;v=+g[ae>>2];ad=h+28|0;B=+g[ad>>2];C=ap*y+aq*v+ar*B;ac=h+36|0;D=+g[ac>>2];ab=h+40|0;t=+g[ab>>2];aa=h+44|0;u=+g[aa>>2];n=ap*D+aq*t+ar*u;ar=am*z+an*A+ao*q;aq=am*y+an*v+ao*B;ap=am*D+an*t+ao*u;ao=z*p+A*x+q*w;an=y*p+v*x+B*w;am=D*p+t*x+u*w;$=b+292|0;if(($|0)!=0){_=c[b+28>>2]|0;w=+g[_+4>>2];x=+g[_+20>>2];p=+g[_+36>>2];as=+g[_+8>>2];at=+g[_+24>>2];au=+g[_+40>>2];av=+g[_+12>>2];aw=+g[_+28>>2];ax=+g[_+44>>2];aDD($|0,0,16);ay=z*o+y*C+D*n;D=A*o+v*C+t*n;t=q*o+B*C+u*n;g[b+308>>2]=ay;g[b+312>>2]=D;g[b+316>>2]=t;g[b+320>>2]=0.0;u=-0.0-o;o=-0.0-C;C=-0.0-n;n=w*u+x*o+p*C;p=as*u+at*o+au*C;au=av*u+aw*o+ax*C;g[b+324>>2]=n;g[b+328>>2]=p;g[b+332>>2]=au;g[b+336>>2]=0.0;C=ay*+g[h+388>>2];ax=D*+g[h+392>>2];o=t*+g[h+396>>2];g[b+340>>2]=C;g[b+344>>2]=ax;g[b+348>>2]=o;g[b+352>>2]=0.0;aw=n*+g[_+388>>2];u=p*+g[_+392>>2];av=au*+g[_+396>>2];g[b+356>>2]=aw;g[b+360>>2]=u;g[b+364>>2]=av;g[b+368>>2]=0.0;g[b+372>>2]=ay*C+D*ax+t*o+(n*aw+p*u+au*av)}_=b+376|0;if((_|0)!=0){av=+g[f>>2];au=+g[af>>2];u=+g[ac>>2];p=+g[ah>>2];aw=+g[ae>>2];n=+g[ab>>2];o=+g[ag>>2];t=+g[ad>>2];ax=+g[aa>>2];$=c[b+28>>2]|0;D=+g[$+4>>2];C=+g[$+20>>2];ay=+g[$+36>>2];at=+g[$+8>>2];as=+g[$+24>>2];x=+g[$+40>>2];w=+g[$+12>>2];B=+g[$+28>>2];q=+g[$+44>>2];aDD(_|0,0,16);v=ar*av+aq*au+ap*u;u=ar*p+aq*aw+ap*n;n=ar*o+aq*t+ap*ax;g[b+392>>2]=v;g[b+396>>2]=u;g[b+400>>2]=n;g[b+404>>2]=0.0;ax=-0.0-ar;ar=-0.0-aq;aq=-0.0-ap;ap=D*ax+C*ar+ay*aq;ay=at*ax+as*ar+x*aq;x=w*ax+B*ar+q*aq;g[b+408>>2]=ap;g[b+412>>2]=ay;g[b+416>>2]=x;g[b+420>>2]=0.0;aq=v*+g[h+388>>2];q=u*+g[h+392>>2];ar=n*+g[h+396>>2];g[b+424>>2]=aq;g[b+428>>2]=q;g[b+432>>2]=ar;g[b+436>>2]=0.0;B=ap*+g[$+388>>2];ax=ay*+g[$+392>>2];w=x*+g[$+396>>2];g[b+440>>2]=B;g[b+444>>2]=ax;g[b+448>>2]=w;g[b+452>>2]=0.0;g[b+456>>2]=v*aq+u*q+n*ar+(ap*B+ay*ax+x*w)}$=b+460|0;if(($|0)==0){az=b+28|0}else{w=+g[f>>2];x=+g[af>>2];ax=+g[ac>>2];ay=+g[ah>>2];B=+g[ae>>2];ap=+g[ab>>2];ar=+g[ag>>2];n=+g[ad>>2];q=+g[aa>>2];aa=b+28|0;ad=c[aa>>2]|0;u=+g[ad+4>>2];aq=+g[ad+20>>2];v=+g[ad+36>>2];as=+g[ad+8>>2];at=+g[ad+24>>2];C=+g[ad+40>>2];D=+g[ad+12>>2];t=+g[ad+28>>2];o=+g[ad+44>>2];aDD($|0,0,16);aw=ao*w+an*x+am*ax;ax=ao*ay+an*B+am*ap;ap=ao*ar+an*n+am*q;g[b+476>>2]=aw;g[b+480>>2]=ax;g[b+484>>2]=ap;g[b+488>>2]=0.0;q=-0.0-ao;ao=-0.0-an;an=-0.0-am;am=u*q+aq*ao+v*an;v=as*q+at*ao+C*an;C=D*q+t*ao+o*an;g[b+492>>2]=am;g[b+496>>2]=v;g[b+500>>2]=C;g[b+504>>2]=0.0;an=aw*+g[h+388>>2];o=ax*+g[h+392>>2];ao=ap*+g[h+396>>2];g[b+508>>2]=an;g[b+512>>2]=o;g[b+516>>2]=ao;g[b+520>>2]=0.0;t=am*+g[ad+388>>2];q=v*+g[ad+392>>2];D=C*+g[ad+396>>2];g[b+524>>2]=t;g[b+528>>2]=q;g[b+532>>2]=D;g[b+536>>2]=0.0;g[b+540>>2]=aw*an+ax*o+ap*ao+(am*t+v*q+C*D);az=aa}g[b+716>>2]=0.0;D=+apy(b,h+4|0,(c[az>>2]|0)+4|0);g[b+720>>2]=D;h=b+700|0;g[h>>2]=0.0;aa=b+704|0;g[aa>>2]=0.0;ad=b+708|0;a[ad]=0;$=b+684|0;do{if(+g[$>>2]>=0.0){C=+ck(+(D- +g[b+680>>2]),6.2831854820251465);do{if(C<-3.1415927410125732){aA=C+6.2831854820251465}else{if(C<=3.1415927410125732){aA=C;break}aA=C-6.2831854820251465}}while(0);C=+g[$>>2];if(aA<-0.0-C){a[ad]=1;g[h>>2]=-0.0-(aA+C);g[aa>>2]=1.0;break}if(aA<=C){break}a[ad]=1;g[h>>2]=C-aA;g[aa>>2]=-1.0}}while(0);aa=c[j>>2]|0;aA=+g[ai>>2];D=+g[e>>2];C=+g[k>>2];q=aA*+g[aa+4>>2]+D*+g[aa+8>>2]+C*+g[aa+12>>2];v=aA*+g[aa+20>>2]+D*+g[aa+24>>2]+C*+g[aa+28>>2];t=aA*+g[aa+36>>2]+D*+g[aa+40>>2]+C*+g[aa+44>>2];k=c[az>>2]|0;g[b+712>>2]=1.0/(q*(q*+g[aa+256>>2]+v*+g[aa+272>>2]+t*+g[aa+288>>2])+v*(q*+g[aa+260>>2]+v*+g[aa+276>>2]+t*+g[aa+292>>2])+t*(q*+g[aa+264>>2]+v*+g[aa+280>>2]+t*+g[aa+296>>2])+(q*(q*+g[k+256>>2]+v*+g[k+272>>2]+t*+g[k+288>>2])+v*(q*+g[k+260>>2]+v*+g[k+276>>2]+t*+g[k+292>>2])+t*(q*+g[k+264>>2]+v*+g[k+280>>2]+t*+g[k+296>>2])));i=d;return}function apq(b,d){b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0;e=d|0;if((a[b+730|0]&1)!=0){c[e>>2]=0;c[d+4>>2]=0;return}c[e>>2]=5;f=d+4|0;c[f>>2]=1;h=+apy(b,(c[b+24>>2]|0)+4|0,(c[b+28>>2]|0)+4|0);g[b+720>>2]=h;d=b+700|0;g[d>>2]=0.0;i=b+704|0;g[i>>2]=0.0;j=b+708|0;a[j]=0;k=b+684|0;do{if(+g[k>>2]<0.0){l=3966}else{m=+ck(+(h- +g[b+680>>2]),6.2831854820251465);do{if(m<-3.1415927410125732){n=m+6.2831854820251465}else{if(m<=3.1415927410125732){n=m;break}n=m-6.2831854820251465}}while(0);m=+g[k>>2];if(n<-0.0-m){a[j]=1;g[d>>2]=-0.0-(n+m);g[i>>2]=1.0;break}if(n>m){a[j]=1;g[d>>2]=m-n;g[i>>2]=-1.0;break}else{if((a[j]&1)==0){l=3966;break}else{break}}}}while(0);do{if((l|0)==3966){if((a[b+729|0]&1)!=0){break}return}}while(0);c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1;return}function apr(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=c[b+24>>2]|0;f=e+4|0;g=c[b+28>>2]|0;h=g+4|0;i=e+320|0;e=g+320|0;if((a[b+731|0]&1)==0){apx(b,d,f,h,i,e);return}else{aps(b,d,f,h,i,e);return}}function aps(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0.0,B=0,C=0.0,D=0.0,E=0.0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0.0,ar=0,as=0.0,at=0.0,au=0.0;k=i;i=i+224|0;l=k|0;m=k+48|0;n=k+96|0;o=k+160|0;p=d+24|0;q=c[p>>2]|0;r=m;anx(m,e|0,b+544|0);s=+g[b+592>>2];t=+g[b+596>>2];u=+g[b+600>>2];v=e+48|0;w=+g[e>>2]*s+ +g[e+4>>2]*t+ +g[e+8>>2]*u+ +g[v>>2];x=e+52|0;y=+g[e+16>>2]*s+ +g[e+20>>2]*t+ +g[e+24>>2]*u+ +g[x>>2];z=e+56|0;A=+g[e+32>>2]*s+ +g[e+36>>2]*t+ +g[e+40>>2]*u+ +g[z>>2];e=n+48|0;B=n|0;do{B=B+16|0;}while((B|0)!=(e|0));e=n;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];r=n+16|0;e=m+16|0;c[r>>2]=c[e>>2];c[r+4>>2]=c[e+4>>2];c[r+8>>2]=c[e+8>>2];c[r+12>>2]=c[e+12>>2];e=n+32|0;r=m+32|0;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];r=n+48|0;g[r>>2]=w;e=n+52|0;g[e>>2]=y;m=n+56|0;g[m>>2]=A;g[n+60>>2]=0.0;B=l;anx(l,f|0,b+608|0);A=+g[b+656>>2];y=+g[b+660>>2];w=+g[b+664>>2];u=+g[f+48>>2];t=+g[f>>2]*A+ +g[f+4>>2]*y+ +g[f+8>>2]*w+u;s=+g[f+52>>2];C=+g[f+16>>2]*A+ +g[f+20>>2]*y+ +g[f+24>>2]*w+s;D=+g[f+56>>2];E=+g[f+32>>2]*A+ +g[f+36>>2]*y+ +g[f+40>>2]*w+D;f=o+48|0;F=o|0;do{F=F+16|0;}while((F|0)!=(f|0));f=o;c[f>>2]=c[B>>2];c[f+4>>2]=c[B+4>>2];c[f+8>>2]=c[B+8>>2];c[f+12>>2]=c[B+12>>2];B=o+16|0;f=l+16|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];f=o+32|0;B=l+32|0;c[f>>2]=c[B>>2];c[f+4>>2]=c[B+4>>2];c[f+8>>2]=c[B+8>>2];c[f+12>>2]=c[B+12>>2];g[o+48>>2]=t;g[o+52>>2]=C;g[o+56>>2]=E;g[o+60>>2]=0.0;w=+g[r>>2];y=t-w;A=+g[e>>2];G=C-A;H=+g[m>>2];I=E-H;J=+g[(c[b+24>>2]|0)+336>>2];K=+g[(c[b+28>>2]|0)+336>>2];if(J<1.1920928955078125e-7){L=1}else{L=K<1.1920928955078125e-7}M=J+K;if(M>0.0){N=K/M}else{N=.5}M=1.0-N;K=+g[n+8>>2];J=+g[n+24>>2];O=+g[n+40>>2];P=+g[o+8>>2];R=+g[o+24>>2];S=+g[o+40>>2];T=N*K+M*P;U=N*J+M*R;V=N*O+M*S;W=1.0/+Q(+(T*T+U*U+V*V));X=T*W;T=U*W;U=V*W;o=q<<1;W=t-u;u=C-s;s=E-D;D=W*X+u*T+s*U;E=X*D;C=T*D;t=U*D;D=W-E;W=u-C;u=s-t;s=w- +g[v>>2];w=A- +g[x>>2];A=H- +g[z>>2];H=X*s+T*w+U*A;V=X*H;Y=T*H;Z=U*H;H=s-V;s=w-Y;w=A-Z;A=V-E;E=Y-C;C=Z-t;t=H+N*A;Z=s+N*E;Y=w+N*C;V=D-M*A;A=W-M*E;E=u-M*C;C=N*D+M*H;H=N*W+M*s;s=N*u+M*w;w=C*C+H*H+s*s;if(w>1.1920928955078125e-7){u=1.0/+Q(+w);_=u*s;$=u*H;aa=C*u}else{_=+g[n+36>>2];$=+g[n+20>>2];aa=+g[n+4>>2]}u=T*_-U*$;C=U*aa-_*X;H=$*X-T*aa;n=d+12|0;g[c[n>>2]>>2]=Z*_-Y*$;g[(c[n>>2]|0)+4>>2]=Y*aa-t*_;g[(c[n>>2]|0)+8>>2]=t*$-Z*aa;z=d+20|0;g[c[z>>2]>>2]=-0.0-(A*_-E*$);g[(c[z>>2]|0)+4>>2]=-0.0-(E*aa-V*_);g[(c[z>>2]|0)+8>>2]=-0.0-(V*$-A*aa);s=Z*H-Y*C;w=Y*u-t*H;W=t*C-Z*u;D=A*H-E*C;ab=E*u-V*H;ac=V*C-A*u;do{if(L){if((a[b+708|0]&1)==0){ad=s;ae=w;af=W;ag=D;ah=ab;ai=ac;break}ad=N*s;ae=N*w;af=N*W;ag=M*D;ah=M*ab;ai=M*ac}else{ad=s;ae=w;af=W;ag=D;ah=ab;ai=ac}}while(0);g[(c[n>>2]|0)+(q<<2)>>2]=ad;x=q+1|0;g[(c[n>>2]|0)+(x<<2)>>2]=ae;v=q+2|0;g[(c[n>>2]|0)+(v<<2)>>2]=af;g[(c[z>>2]|0)+(q<<2)>>2]=-0.0-ag;g[(c[z>>2]|0)+(x<<2)>>2]=-0.0-ah;g[(c[z>>2]|0)+(v<<2)>>2]=-0.0-ai;ai=Z*U-Y*T;ah=Y*X-t*U;Y=t*T-Z*X;Z=A*U-E*T;t=E*X-V*U;E=V*T-A*X;if(L){aj=N*ai;ak=N*ah;al=N*Y;am=M*Z;an=M*t;ao=M*E}else{aj=ai;ak=ah;al=Y;am=Z;an=t;ao=E}g[(c[n>>2]|0)+(o<<2)>>2]=aj;L=o|1;g[(c[n>>2]|0)+(L<<2)>>2]=ak;m=o+2|0;g[(c[n>>2]|0)+(m<<2)>>2]=al;g[(c[z>>2]|0)+(o<<2)>>2]=-0.0-am;g[(c[z>>2]|0)+(L<<2)>>2]=-0.0-an;g[(c[z>>2]|0)+(m<<2)>>2]=-0.0-ao;e=d|0;r=d+4|0;ao=+g[e>>2]*+g[r>>2];if((a[b+728|0]&1)==0){B=d+8|0;g[c[B>>2]>>2]=aa;g[(c[B>>2]|0)+4>>2]=$;g[(c[B>>2]|0)+8>>2]=_;g[(c[B>>2]|0)+(q<<2)>>2]=u;g[(c[B>>2]|0)+(x<<2)>>2]=C;g[(c[B>>2]|0)+(v<<2)>>2]=H;g[(c[B>>2]|0)+(o<<2)>>2]=X;g[(c[B>>2]|0)+(L<<2)>>2]=T;g[(c[B>>2]|0)+(m<<2)>>2]=U;m=d+28|0;g[c[m>>2]>>2]=ao*(y*aa+G*$+I*_);g[(c[m>>2]|0)+(q<<2)>>2]=ao*(y*u+G*C+I*H);g[(c[m>>2]|0)+(o<<2)>>2]=ao*(y*X+G*T+I*U);ap=m}else{ap=d+28|0}m=q*3|0;o=q<<2;g[(c[n>>2]|0)+(m<<2)>>2]=aa;q=m+1|0;g[(c[n>>2]|0)+(q<<2)>>2]=$;B=m+2|0;g[(c[n>>2]|0)+(B<<2)>>2]=_;g[(c[n>>2]|0)+(o<<2)>>2]=u;L=o|1;g[(c[n>>2]|0)+(L<<2)>>2]=C;v=o|2;g[(c[n>>2]|0)+(v<<2)>>2]=H;g[(c[z>>2]|0)+(m<<2)>>2]=-0.0-aa;g[(c[z>>2]|0)+(q<<2)>>2]=-0.0-$;g[(c[z>>2]|0)+(B<<2)>>2]=-0.0-_;g[(c[z>>2]|0)+(o<<2)>>2]=-0.0-u;g[(c[z>>2]|0)+(L<<2)>>2]=-0.0-C;g[(c[z>>2]|0)+(v<<2)>>2]=-0.0-H;I=+g[e>>2]*+g[r>>2];G=J*S-O*R;y=O*P-K*S;S=K*R-J*P;g[(c[ap>>2]|0)+(m<<2)>>2]=I*(G*aa+y*$+S*_);g[(c[ap>>2]|0)+(o<<2)>>2]=I*(G*u+y*C+S*H);if((a[b+708|0]&1)==0){aq=0.0;ar=0}else{H=+g[b+700>>2]*+g[b+724>>2];aq=H;ar=H>0.0?1:2}o=(ar|0)!=0;m=(a[b+729|0]&1)==0;if(m&(o^1)){i=k;return}v=(c[p>>2]|0)*5|0;g[(c[n>>2]|0)+(v<<2)>>2]=X;p=v+1|0;g[(c[n>>2]|0)+(p<<2)>>2]=T;L=v+2|0;g[(c[n>>2]|0)+(L<<2)>>2]=U;g[(c[z>>2]|0)+(v<<2)>>2]=-0.0-X;g[(c[z>>2]|0)+(p<<2)>>2]=-0.0-T;g[(c[z>>2]|0)+(L<<2)>>2]=-0.0-U;L=b+680|0;z=b+684|0;H=+ck(+(+g[L>>2]- +g[z>>2]),6.2831854820251465);do{if(H<-3.1415927410125732){as=H+6.2831854820251465}else{if(H<=3.1415927410125732){as=H;break}as=H-6.2831854820251465}}while(0);H=+ck(+(+g[L>>2]+ +g[z>>2]),6.2831854820251465);do{if(H<-3.1415927410125732){at=H+6.2831854820251465}else{if(H<=3.1415927410125732){at=H;break}at=H-6.2831854820251465}}while(0);z=as==at;g[(c[ap>>2]|0)+(v<<2)>>2]=0.0;L=b+740|0;p=c[L>>2]|0;H=+g[((p&2|0)==0?r:b+752|0)>>2];if(!(o&z|m)){if((p&4|0)!=0){g[(c[d+32>>2]|0)+(v<<2)>>2]=+g[b+744>>2]}S=+g[b+720>>2];C=+g[b+672>>2];p=as>at;L4562:do{if(p|z){au=p?1.0:0.0}else{y=C/(H*+g[e>>2]);if(y<0.0){do{if(S>=as){if(as-y<=S){break}au=(as-S)/y;break L4562}}while(0);au=S=S){break}au=(at-S)/y;break L4562}}while(0);au=S>at?0.0:1.0}}while(0);p=(c[ap>>2]|0)+(v<<2)|0;g[p>>2]=au*C*+g[b+724>>2]+ +g[p>>2];p=b+676|0;g[(c[d+36>>2]|0)+(v<<2)>>2]=-0.0- +g[p>>2];g[(c[d+40>>2]|0)+(v<<2)>>2]=+g[p>>2]}if(!o){i=k;return}o=(c[ap>>2]|0)+(v<<2)|0;g[o>>2]=+g[o>>2]+aq*H*+g[e>>2];if((c[L>>2]&1|0)!=0){g[(c[d+32>>2]|0)+(v<<2)>>2]=+g[b+748>>2]}do{if(z){g[(c[d+36>>2]|0)+(v<<2)>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(v<<2)>>2]=3.4028234663852886e+38}else{L=(c[d+36>>2]|0)+(v<<2)|0;if((ar|0)==1){g[L>>2]=0.0;g[(c[d+40>>2]|0)+(v<<2)>>2]=3.4028234663852886e+38;break}else{g[L>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(v<<2)>>2]=0.0;break}}}while(0);H=+g[b+696>>2];do{if(H>0.0){aq=+g[h>>2]*X+ +g[h+4>>2]*T+ +g[h+8>>2]*U-(X*+g[j>>2]+T*+g[j+4>>2]+U*+g[j+8>>2]);if((ar|0)==1){if(aq>=0.0){break}C=aq*(-0.0-H);d=(c[ap>>2]|0)+(v<<2)|0;if(C<=+g[d>>2]){break}g[d>>2]=C;break}else{if(aq<=0.0){break}C=aq*(-0.0-H);d=(c[ap>>2]|0)+(v<<2)|0;if(C>=+g[d>>2]){break}g[d>>2]=C;break}}}while(0);ar=(c[ap>>2]|0)+(v<<2)|0;g[ar>>2]=+g[b+692>>2]*+g[ar>>2];i=k;return}function apt(a){a=a|0;return}function apu(a){a=a|0;return 212}function apv(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;if(!((e|0)==(-1|0)|(e|0)==5)){return}if((b|0)==3){g[a+744>>2]=d;e=a+740|0;c[e>>2]=c[e>>2]|4;return}else if((b|0)==4){g[a+748>>2]=d;e=a+740|0;c[e>>2]=c[e>>2]|1;return}else if((b|0)==2){g[a+752>>2]=d;b=a+740|0;c[b>>2]=c[b>>2]|2;return}else{return}}function apw(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;do{if((c|0)==(-1|0)|(c|0)==5){if((b|0)==2){d=+g[a+752>>2];break}else if((b|0)==4){d=+g[a+748>>2];break}else if((b|0)==3){d=+g[a+744>>2];break}else{d=0.0;break}}else{d=0.0}}while(0);return+d}function apx(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0,U=0.0,V=0.0,W=0.0;k=i;i=i+224|0;l=k|0;m=k+48|0;n=k+96|0;o=k+160|0;p=d+24|0;q=c[p>>2]|0;r=m;anx(m,e|0,b+544|0);s=+g[b+592>>2];t=+g[b+596>>2];u=+g[b+600>>2];v=e+48|0;w=+g[e>>2]*s+ +g[e+4>>2]*t+ +g[e+8>>2]*u+ +g[v>>2];x=e+52|0;y=+g[e+16>>2]*s+ +g[e+20>>2]*t+ +g[e+24>>2]*u+ +g[x>>2];z=e+56|0;A=+g[e+32>>2]*s+ +g[e+36>>2]*t+ +g[e+40>>2]*u+ +g[z>>2];e=n+48|0;B=n|0;do{B=B+16|0;}while((B|0)!=(e|0));e=n;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];r=n+16|0;e=m+16|0;c[r>>2]=c[e>>2];c[r+4>>2]=c[e+4>>2];c[r+8>>2]=c[e+8>>2];c[r+12>>2]=c[e+12>>2];e=n+32|0;r=m+32|0;c[e>>2]=c[r>>2];c[e+4>>2]=c[r+4>>2];c[e+8>>2]=c[r+8>>2];c[e+12>>2]=c[r+12>>2];r=n+48|0;g[r>>2]=w;e=n+52|0;g[e>>2]=y;m=n+56|0;g[m>>2]=A;g[n+60>>2]=0.0;B=l;anx(l,f|0,b+608|0);A=+g[b+656>>2];y=+g[b+660>>2];w=+g[b+664>>2];C=f+48|0;u=+g[f>>2]*A+ +g[f+4>>2]*y+ +g[f+8>>2]*w+ +g[C>>2];D=f+52|0;t=+g[f+16>>2]*A+ +g[f+20>>2]*y+ +g[f+24>>2]*w+ +g[D>>2];E=f+56|0;s=+g[f+32>>2]*A+ +g[f+36>>2]*y+ +g[f+40>>2]*w+ +g[E>>2];f=o+48|0;F=o|0;do{F=F+16|0;}while((F|0)!=(f|0));f=o;c[f>>2]=c[B>>2];c[f+4>>2]=c[B+4>>2];c[f+8>>2]=c[B+8>>2];c[f+12>>2]=c[B+12>>2];B=o+16|0;f=l+16|0;c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];f=o+32|0;B=l+32|0;c[f>>2]=c[B>>2];c[f+4>>2]=c[B+4>>2];c[f+8>>2]=c[B+8>>2];c[f+12>>2]=c[B+12>>2];g[o+48>>2]=u;g[o+52>>2]=t;g[o+56>>2]=s;g[o+60>>2]=0.0;w=+g[r>>2];y=+g[e>>2];A=+g[m>>2];m=b+728|0;if((a[m]&1)==0){e=d+8|0;g[c[e>>2]>>2]=1.0;r=q+1|0;g[(c[e>>2]|0)+(r<<2)>>2]=1.0;B=q<<1;f=B+2|0;g[(c[e>>2]|0)+(f<<2)>>2]=1.0;G=B;H=r;I=f}else{f=q<<1;G=f;H=q+1|0;I=f+2|0}J=w- +g[v>>2];K=y- +g[x>>2];L=A- +g[z>>2];z=d+12|0;x=c[z>>2]|0;g[x>>2]=0.0;g[x+4>>2]=L;g[x+8>>2]=-0.0-K;g[x+12>>2]=0.0;g[x+(q<<2)>>2]=-0.0-L;g[x+(H<<2)>>2]=0.0;v=q+2|0;g[x+(v<<2)>>2]=J;f=q+3|0;g[x+(f<<2)>>2]=0.0;g[x+(G<<2)>>2]=K;r=G|1;g[x+(r<<2)>>2]=-0.0-J;g[x+(I<<2)>>2]=0.0;B=G+3|0;g[x+(B<<2)>>2]=0.0;J=u- +g[C>>2];K=t- +g[D>>2];L=s- +g[E>>2];E=d+20|0;D=c[E>>2]|0;g[D>>2]=0.0;g[D+4>>2]=-0.0-L;g[D+8>>2]=K;g[D+12>>2]=0.0;g[D+(q<<2)>>2]=L;g[D+(H<<2)>>2]=0.0;g[D+(v<<2)>>2]=-0.0-J;g[D+(f<<2)>>2]=0.0;g[D+(G<<2)>>2]=-0.0-K;g[D+(r<<2)>>2]=J;g[D+(I<<2)>>2]=0.0;g[D+(B<<2)>>2]=0.0;B=d|0;D=d+4|0;J=+g[B>>2]*+g[D>>2];I=d+28|0;if((a[m]&1)==0){g[c[I>>2]>>2]=J*(u-w);g[(c[I>>2]|0)+(q<<2)>>2]=J*(t-y);g[(c[I>>2]|0)+(q<<1<<2)>>2]=J*(s-A)}A=+g[n+8>>2];s=+g[n+24>>2];y=+g[n+40>>2];t=+g[n>>2];w=+g[n+16>>2];u=+g[n+32>>2];K=+g[n+4>>2];L=+g[n+20>>2];M=+g[n+36>>2];n=c[p>>2]|0;q=n*3|0;m=n<<2;g[(c[z>>2]|0)+(q<<2)>>2]=t;n=q+1|0;g[(c[z>>2]|0)+(n<<2)>>2]=w;r=q+2|0;g[(c[z>>2]|0)+(r<<2)>>2]=u;g[(c[z>>2]|0)+(m<<2)>>2]=K;G=m|1;g[(c[z>>2]|0)+(G<<2)>>2]=L;f=m|2;g[(c[z>>2]|0)+(f<<2)>>2]=M;g[(c[E>>2]|0)+(q<<2)>>2]=-0.0-t;g[(c[E>>2]|0)+(n<<2)>>2]=-0.0-w;g[(c[E>>2]|0)+(r<<2)>>2]=-0.0-u;g[(c[E>>2]|0)+(m<<2)>>2]=-0.0-K;g[(c[E>>2]|0)+(G<<2)>>2]=-0.0-L;g[(c[E>>2]|0)+(f<<2)>>2]=-0.0-M;N=+g[o+8>>2];O=+g[o+24>>2];P=+g[o+40>>2];Q=s*P-y*O;R=y*N-A*P;P=A*O-s*N;g[(c[I>>2]|0)+(q<<2)>>2]=J*(u*P+(t*Q+w*R));g[(c[I>>2]|0)+(m<<2)>>2]=J*(M*P+(K*Q+L*R));if((a[b+708|0]&1)==0){S=0.0;T=0}else{R=+g[b+700>>2]*+g[b+724>>2];S=R;T=R>0.0?1:2}m=(T|0)!=0;q=(a[b+729|0]&1)==0;if(q&(m^1)){i=k;return}o=(c[p>>2]|0)*5|0;g[(c[z>>2]|0)+(o<<2)>>2]=A;p=o+1|0;g[(c[z>>2]|0)+(p<<2)>>2]=s;f=o+2|0;g[(c[z>>2]|0)+(f<<2)>>2]=y;g[(c[E>>2]|0)+(o<<2)>>2]=-0.0-A;g[(c[E>>2]|0)+(p<<2)>>2]=-0.0-s;g[(c[E>>2]|0)+(f<<2)>>2]=-0.0-y;f=b+680|0;E=b+684|0;R=+ck(+(+g[f>>2]- +g[E>>2]),6.2831854820251465);do{if(R<-3.1415927410125732){U=R+6.2831854820251465}else{if(R<=3.1415927410125732){U=R;break}U=R-6.2831854820251465}}while(0);R=+ck(+(+g[f>>2]+ +g[E>>2]),6.2831854820251465);do{if(R<-3.1415927410125732){V=R+6.2831854820251465}else{if(R<=3.1415927410125732){V=R;break}V=R-6.2831854820251465}}while(0);E=U==V;g[(c[I>>2]|0)+(o<<2)>>2]=0.0;f=b+740|0;p=c[f>>2]|0;R=+g[((p&2|0)==0?D:b+752|0)>>2];if(!(m&E|q)){if((p&4|0)!=0){g[(c[d+32>>2]|0)+(o<<2)>>2]=+g[b+744>>2]}L=+g[b+720>>2];Q=+g[b+672>>2];p=U>V;L4659:do{if(p|E){W=p?1.0:0.0}else{K=Q/(R*+g[B>>2]);if(K<0.0){do{if(L>=U){if(U-K<=L){break}W=(U-L)/K;break L4659}}while(0);W=L=L){break}W=(V-L)/K;break L4659}}while(0);W=L>V?0.0:1.0}}while(0);p=(c[I>>2]|0)+(o<<2)|0;g[p>>2]=W*Q*+g[b+724>>2]+ +g[p>>2];p=b+676|0;g[(c[d+36>>2]|0)+(o<<2)>>2]=-0.0- +g[p>>2];g[(c[d+40>>2]|0)+(o<<2)>>2]=+g[p>>2]}if(!m){i=k;return}m=(c[I>>2]|0)+(o<<2)|0;g[m>>2]=+g[m>>2]+S*R*+g[B>>2];if((c[f>>2]&1|0)!=0){g[(c[d+32>>2]|0)+(o<<2)>>2]=+g[b+748>>2]}do{if(E){g[(c[d+36>>2]|0)+(o<<2)>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(o<<2)>>2]=3.4028234663852886e+38}else{f=(c[d+36>>2]|0)+(o<<2)|0;if((T|0)==1){g[f>>2]=0.0;g[(c[d+40>>2]|0)+(o<<2)>>2]=3.4028234663852886e+38;break}else{g[f>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(o<<2)>>2]=0.0;break}}}while(0);R=+g[b+696>>2];do{if(R>0.0){S=A*+g[h>>2]+s*+g[h+4>>2]+y*+g[h+8>>2]-(A*+g[j>>2]+s*+g[j+4>>2]+y*+g[j+8>>2]);if((T|0)==1){if(S>=0.0){break}Q=S*(-0.0-R);d=(c[I>>2]|0)+(o<<2)|0;if(Q<=+g[d>>2]){break}g[d>>2]=Q;break}else{if(S<=0.0){break}Q=S*(-0.0-R);d=(c[I>>2]|0)+(o<<2)|0;if(Q>=+g[d>>2]){break}g[d>>2]=Q;break}}}while(0);T=(c[I>>2]|0)+(o<<2)|0;g[T>>2]=+g[b+692>>2]*+g[T>>2];i=k;return}function apy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0;d=+g[a+544>>2];e=+g[a+560>>2];f=+g[a+576>>2];h=+g[b>>2];i=+g[b+4>>2];j=+g[b+8>>2];k=+g[b+16>>2];l=+g[b+20>>2];m=+g[b+24>>2];n=+g[b+32>>2];o=+g[b+36>>2];p=+g[b+40>>2];q=+g[a+548>>2];r=+g[a+564>>2];s=+g[a+580>>2];t=+g[a+612>>2];u=+g[a+628>>2];v=+g[a+644>>2];w=t*+g[c>>2]+u*+g[c+4>>2]+v*+g[c+8>>2];x=t*+g[c+16>>2]+u*+g[c+20>>2]+v*+g[c+24>>2];y=t*+g[c+32>>2]+u*+g[c+36>>2]+v*+g[c+40>>2];v=+Y(+((d*h+e*i+f*j)*w+(d*k+e*l+f*m)*x+(d*n+e*o+f*p)*y),+((h*q+i*r+j*s)*w+(k*q+l*r+m*s)*x+(n*q+o*r+p*s)*y));return+(v*+g[a+724>>2])}function apz(a){a=a|0;if((a|0)==0){return}aDB(a);return}function apA(a){a=a|0;return}function apB(a){a=a|0;return 76}function apC(b,d){b=b|0;d=d|0;var e=0;e=d|0;if((a[b+336|0]&1)==0){c[e>>2]=3;c[d+4>>2]=3;return}else{c[e>>2]=0;c[d+4>>2]=0;return}}function apD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0;f=b+8|0;g[c[f>>2]>>2]=1.0;h=b+24|0;g[(c[f>>2]|0)+((c[h>>2]|0)+1<<2)>>2]=1.0;g[(c[f>>2]|0)+((c[h>>2]<<1)+2<<2)>>2]=1.0;i=+g[a+292>>2];j=+g[a+296>>2];k=+g[a+300>>2];l=+g[d>>2]*i+ +g[d+4>>2]*j+ +g[d+8>>2]*k;m=i*+g[d+16>>2]+j*+g[d+20>>2]+k*+g[d+24>>2];n=i*+g[d+32>>2]+j*+g[d+36>>2]+k*+g[d+40>>2];f=c[b+12>>2]|0;o=c[h>>2]|0;p=o<<1;g[f>>2]=0.0;g[f+4>>2]=n;g[f+8>>2]=-0.0-m;g[f+12>>2]=0.0;g[f+(o<<2)>>2]=-0.0-n;g[f+(o+1<<2)>>2]=0.0;g[f+(o+2<<2)>>2]=l;g[f+(o+3<<2)>>2]=0.0;g[f+(p<<2)>>2]=m;g[f+((p|1)<<2)>>2]=-0.0-l;g[f+(p+2<<2)>>2]=0.0;g[f+(p+3<<2)>>2]=0.0;k=+g[a+308>>2];j=+g[a+312>>2];i=+g[a+316>>2];q=+g[e>>2]*k+ +g[e+4>>2]*j+ +g[e+8>>2]*i;r=k*+g[e+16>>2]+j*+g[e+20>>2]+i*+g[e+24>>2];s=k*+g[e+32>>2]+j*+g[e+36>>2]+i*+g[e+40>>2];p=c[b+20>>2]|0;f=c[h>>2]|0;o=f<<1;g[p>>2]=0.0;g[p+4>>2]=-0.0-s;g[p+8>>2]=r;g[p+12>>2]=0.0;g[p+(f<<2)>>2]=s;g[p+(f+1<<2)>>2]=0.0;g[p+(f+2<<2)>>2]=-0.0-q;g[p+(f+3<<2)>>2]=0.0;g[p+(o<<2)>>2]=-0.0-r;g[p+((o|1)<<2)>>2]=q;g[p+(o+2<<2)>>2]=0.0;g[p+(o+3<<2)>>2]=0.0;o=a+324|0;i=+g[((c[o>>2]&1|0)==0?b+4|0:a+328|0)>>2]*+g[b>>2];p=b+28|0;g[c[p>>2]>>2]=i*(q+ +g[e+48>>2]-l- +g[d+48>>2]);g[(c[p>>2]|0)+(c[h>>2]<<2)>>2]=i*(r+ +g[e+52>>2]-m- +g[d+52>>2]);g[(c[p>>2]|0)+(c[h>>2]<<1<<2)>>2]=i*(s+ +g[e+56>>2]-n- +g[d+56>>2]);if((c[o>>2]&2|0)!=0){o=a+332|0;d=b+32|0;g[c[d>>2]>>2]=+g[o>>2];g[(c[d>>2]|0)+(c[h>>2]<<2)>>2]=+g[o>>2];g[(c[d>>2]|0)+(c[h>>2]<<1<<2)>>2]=+g[o>>2]}o=a+348|0;n=+g[o>>2];s=-0.0-n;d=b+36|0;e=b+40|0;if(n>0.0){g[c[d>>2]>>2]=s;g[c[e>>2]>>2]=n;t=+g[o>>2]}else{t=n}if(t>0.0){g[(c[d>>2]|0)+(c[h>>2]<<2)>>2]=s;g[(c[e>>2]|0)+(c[h>>2]<<2)>>2]=n;u=+g[o>>2]}else{u=t}if(u<=0.0){v=a+344|0;w=+g[v>>2];x=b+52|0;g[x>>2]=w;return}g[(c[d>>2]|0)+(c[h>>2]<<1<<2)>>2]=s;g[(c[e>>2]|0)+(c[h>>2]<<1<<2)>>2]=n;v=a+344|0;w=+g[v>>2];x=b+52|0;g[x>>2]=w;return}function apE(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;if((e|0)!=-1){return}if((b|0)==1|(b|0)==2){g[a+328>>2]=d;e=a+324|0;c[e>>2]=c[e>>2]|1;return}else if((b|0)==3|(b|0)==4){g[a+332>>2]=d;b=a+324|0;c[b>>2]=c[b>>2]|2;return}else{return}}function apF(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;do{if((c|0)==-1){if((b|0)==3|(b|0)==4){d=+g[a+332>>2];break}else if((b|0)==1|(b|0)==2){d=+g[a+328>>2];break}else{d=3.4028234663852886e+38;break}}else{d=3.4028234663852886e+38}}while(0);return+d}function apG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0.0,w=0,x=0;aq3(b|0,d,e)|0;g[d+44>>2]=+g[b+544>>2];g[d+48>>2]=+g[b+548>>2];g[d+52>>2]=+g[b+552>>2];g[d+56>>2]=+g[b+556>>2];g[d+60>>2]=+g[b+560>>2];g[d+64>>2]=+g[b+564>>2];g[d+68>>2]=+g[b+568>>2];g[d+72>>2]=+g[b+572>>2];g[d+76>>2]=+g[b+576>>2];g[d+80>>2]=+g[b+580>>2];g[d+84>>2]=+g[b+584>>2];g[d+88>>2]=+g[b+588>>2];g[d+92>>2]=+g[b+592>>2];g[d+96>>2]=+g[b+596>>2];g[d+100>>2]=+g[b+600>>2];g[d+104>>2]=+g[b+604>>2];g[d+108>>2]=+g[b+608>>2];g[d+112>>2]=+g[b+612>>2];g[d+116>>2]=+g[b+616>>2];g[d+120>>2]=+g[b+620>>2];g[d+124>>2]=+g[b+624>>2];g[d+128>>2]=+g[b+628>>2];g[d+132>>2]=+g[b+632>>2];g[d+136>>2]=+g[b+636>>2];g[d+140>>2]=+g[b+640>>2];g[d+144>>2]=+g[b+644>>2];g[d+148>>2]=+g[b+648>>2];g[d+152>>2]=+g[b+652>>2];g[d+156>>2]=+g[b+656>>2];g[d+160>>2]=+g[b+660>>2];g[d+164>>2]=+g[b+664>>2];g[d+168>>2]=+g[b+668>>2];c[d+176>>2]=a[b+728|0]&1;c[d+180>>2]=a[b+729|0]&1;g[d+188>>2]=+g[b+676>>2];g[d+184>>2]=+g[b+672>>2];c[d+172>>2]=a[b+732|0]&1;e=b+680|0;f=b+684|0;h=+ck(+(+g[e>>2]- +g[f>>2]),6.2831854820251465);do{if(h<-3.1415927410125732){i=h+6.2831854820251465}else{if(h<=3.1415927410125732){i=h;break}i=h-6.2831854820251465}}while(0);g[d+192>>2]=i;i=+ck(+(+g[e>>2]+ +g[f>>2]),6.2831854820251465);if(i<-3.1415927410125732){j=i+6.2831854820251465;k=d+196|0;l=k;g[l>>2]=j;m=b+688|0;n=+g[m>>2];o=d+200|0;p=o;g[p>>2]=n;q=b+692|0;r=+g[q>>2];s=d+204|0;t=s;g[t>>2]=r;u=b+696|0;v=+g[u>>2];w=d+208|0;x=w;g[x>>2]=v;return 17696}if(i<=3.1415927410125732){j=i;k=d+196|0;l=k;g[l>>2]=j;m=b+688|0;n=+g[m>>2];o=d+200|0;p=o;g[p>>2]=n;q=b+692|0;r=+g[q>>2];s=d+204|0;t=s;g[t>>2]=r;u=b+696|0;v=+g[u>>2];w=d+208|0;x=w;g[x>>2]=v;return 17696}j=i-6.2831854820251465;k=d+196|0;l=k;g[l>>2]=j;m=b+688|0;n=+g[m>>2];o=d+200|0;p=o;g[p>>2]=n;q=b+692|0;r=+g[q>>2];s=d+204|0;t=s;g[t>>2]=r;u=b+696|0;v=+g[u>>2];w=d+208|0;x=w;g[x>>2]=v;return 17696}function apH(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0;b=i;i=i+144|0;d=b|0;e=b+16|0;f=b+64|0;h=b+112|0;j=b+128|0;g[a+32>>2]=0.0;k=a+24|0;l=e|0;m=e+4|0;n=e+8|0;o=e+12|0;p=e+16|0;q=e+20|0;r=e+24|0;s=e+28|0;t=e+32|0;u=e+36|0;v=e+40|0;w=e+44|0;x=a+28|0;y=f|0;z=f+4|0;A=f+8|0;B=f+12|0;C=f+16|0;D=f+20|0;E=f+24|0;F=f+28|0;G=f+32|0;H=f+36|0;I=f+40|0;J=f+44|0;K=a+292|0;L=a+296|0;M=a+300|0;N=h|0;O=h+4|0;P=h+8|0;Q=h+12|0;R=a+308|0;S=a+312|0;T=a+316|0;U=j|0;V=j+4|0;W=j+8|0;X=j+12|0;aDD(d|0,0,16);Y=0;do{Z=d+(Y<<2)|0;g[Z>>2]=1.0;_=a+40+(Y*84|0)|0;if((_|0)!=0){$=c[k>>2]|0;aa=+g[$+4>>2];g[l>>2]=aa;ab=+g[$+20>>2];g[m>>2]=ab;ac=+g[$+36>>2];g[n>>2]=ac;g[o>>2]=0.0;ad=+g[$+8>>2];g[p>>2]=ad;ae=+g[$+24>>2];g[q>>2]=ae;af=+g[$+40>>2];g[r>>2]=af;g[s>>2]=0.0;ag=+g[$+12>>2];g[t>>2]=ag;ah=+g[$+28>>2];g[u>>2]=ah;ai=+g[$+44>>2];g[v>>2]=ai;g[w>>2]=0.0;aj=c[x>>2]|0;ak=+g[aj+4>>2];g[y>>2]=ak;al=+g[aj+20>>2];g[z>>2]=al;am=+g[aj+36>>2];g[A>>2]=am;g[B>>2]=0.0;an=+g[aj+8>>2];g[C>>2]=an;ao=+g[aj+24>>2];g[D>>2]=ao;ap=+g[aj+40>>2];g[E>>2]=ap;g[F>>2]=0.0;aq=+g[aj+12>>2];g[G>>2]=aq;ar=+g[aj+28>>2];g[H>>2]=ar;as=+g[aj+44>>2];g[I>>2]=as;g[J>>2]=0.0;at=+g[K>>2];au=+g[L>>2];av=+g[M>>2];aw=+g[$+52>>2];ax=+g[$+56>>2];ay=+g[$+60>>2];g[N>>2]=aw+(aa*at+ad*au+ag*av)-aw;g[O>>2]=ax+(at*ab+au*ae+av*ah)-ax;g[P>>2]=ay+(at*ac+au*af+av*ai)-ay;g[Q>>2]=0.0;ay=+g[R>>2];ai=+g[S>>2];av=+g[T>>2];af=+g[aj+52>>2];au=+g[aj+56>>2];ac=+g[aj+60>>2];g[U>>2]=af+(ak*ay+an*ai+aq*av)-af;g[V>>2]=au+(ay*al+ai*ao+av*ar)-au;g[W>>2]=ac+(ay*am+ai*ap+av*as)-ac;g[X>>2]=0.0;anz(_,e,f,h,j,d,$+388|0,+g[$+336>>2],aj+388|0,+g[aj+336>>2])}g[Z>>2]=0.0;Y=Y+1|0;}while((Y|0)<3);i=b;return}function apI(a,b){a=a|0;b=b|0;apD(a,b,(c[a+24>>2]|0)+4|0,(c[a+28>>2]|0)+4|0);return}function apJ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function apK(a,b,c){a=a|0;b=b|0;c=c|0;aq3(a|0,b,c)|0;g[b+44>>2]=+g[a+292>>2];g[b+48>>2]=+g[a+296>>2];g[b+52>>2]=+g[a+300>>2];g[b+56>>2]=+g[a+304>>2];g[b+60>>2]=+g[a+308>>2];g[b+64>>2]=+g[a+312>>2];g[b+68>>2]=+g[a+316>>2];g[b+72>>2]=+g[a+320>>2];return 17480}function apL(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=26048;d=b+480|0;e=b+488|0;f=c[e>>2]|0;g=b+492|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+484>>2]=0;return}function apM(a){a=a|0;apN(a);if((a|0)==0){return}aDB(a);return}function apN(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=23912;d=b+136|0;e=b+144|0;f=c[e>>2]|0;g=b+148|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-284+280>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+140>>2]=0;d=b+68|0;e=b+76|0;g=c[e>>2]|0;f=b+80|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+72>>2]=0;d=b+48|0;e=b+56|0;f=c[e>>2]|0;g=b+60|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+52>>2]=0;d=b+28|0;e=b+36|0;g=c[e>>2]|0;f=b+40|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+32>>2]=0;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}function apO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0;f=i;i=i+64|0;h=f|0;a[d+84|0]=0;j=c[b+116>>2]|0;b=h;k=j+4|0;c[b>>2]=c[k>>2];c[b+4>>2]=c[k+4>>2];c[b+8>>2]=c[k+8>>2];c[b+12>>2]=c[k+12>>2];k=h+16|0;b=j+20|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];b=h+32|0;k=j+36|0;c[b>>2]=c[k>>2];c[b+4>>2]=c[k+4>>2];c[b+8>>2]=c[k+8>>2];c[b+12>>2]=c[k+12>>2];k=h+48|0;b=j+52|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];do{if(e){b=c[j+472>>2]|0;if((b|0)==0){break}cv[c[(c[b>>2]|0)+8>>2]&2047](b,h)}}while(0);l=+g[h>>2];m=+g[d+156>>2];n=+g[h+4>>2];o=+g[d+160>>2];p=+g[h+8>>2];q=+g[d+164>>2];r=+g[h+16>>2];s=+g[h+20>>2];t=+g[h+24>>2];u=+g[h+52>>2]+(m*r+o*s+q*t);v=+g[h+32>>2];w=+g[h+36>>2];x=+g[h+40>>2];y=+g[h+56>>2]+(m*v+o*w+q*x);g[d+36>>2]=+g[h+48>>2]+(l*m+n*o+p*q);g[d+40>>2]=u;g[d+44>>2]=y;g[d+48>>2]=0.0;y=+g[d+172>>2];u=+g[d+176>>2];q=+g[d+180>>2];g[d+52>>2]=l*y+n*u+p*q;g[d+56>>2]=y*r+u*s+q*t;g[d+60>>2]=y*v+u*w+q*x;g[d+64>>2]=0.0;q=+g[d+188>>2];u=+g[d+192>>2];y=+g[d+196>>2];g[d+68>>2]=l*q+n*u+p*y;g[d+72>>2]=q*r+u*s+y*t;g[d+76>>2]=q*v+u*w+y*x;g[d+80>>2]=0.0;i=f;return}function apP(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0;e=c[a+144>>2]|0;apO(a,e+(b*284|0)|0,d);f=+g[e+(b*284|0)+52>>2];h=-0.0-f;i=+g[e+(b*284|0)+56>>2];j=-0.0-i;k=+g[e+(b*284|0)+60>>2];l=-0.0-k;m=+g[e+(b*284|0)+76>>2];n=+g[e+(b*284|0)+72>>2];o=m*j-n*l;p=+g[e+(b*284|0)+68>>2];q=p*l-m*h;r=n*h-p*j;s=1.0/+Q(+(r*r+(o*o+q*q)));t=o*s;o=s*q;q=s*r;r=+g[e+(b*284|0)+232>>2];s=+Q(+(f*f+i*i+k*k));u=r*.5;r=+T(+u)/s;s=r*h;v=r*j;w=r*l;r=+S(+u);u=2.0/(r*r+(w*w+(s*s+v*v)));x=s*u;y=v*u;z=w*u;u=r*x;A=r*y;B=r*z;r=s*x;x=s*y;C=s*z;s=v*y;y=v*z;v=w*z;z=1.0-(s+v);w=x-B;D=C+A;E=x+B;B=1.0-(r+v);v=y-u;x=C-A;A=y+u;u=1.0-(r+s);s=+g[e+(b*284|0)+236>>2];r=+Q(+(m*m+(n*n+p*p)));y=s*-.5;s=+T(+y)/r;r=p*s;C=n*s;F=m*s;s=+S(+y);y=2.0/(s*s+(F*F+(r*r+C*C)));G=r*y;H=C*y;I=F*y;y=s*G;J=s*H;K=s*I;s=r*G;G=r*H;L=r*I;r=C*H;H=C*I;C=F*I;I=1.0-(r+C);F=G-K;M=L+J;N=G+K;K=1.0-(s+C);C=H-y;G=L-J;J=H+y;y=1.0-(s+r);r=D*G+(w*N+z*I);s=D*J+(z*F+w*K);H=z*M+w*C+D*y;D=v*G+(B*N+E*I);w=v*J+(E*F+B*K);z=E*M+B*C+v*y;v=u*G+(A*N+x*I);I=u*J+(x*F+A*K);K=x*M+A*C+u*y;g[e+(b*284|0)+92>>2]=m*H+(p*r+n*s);g[e+(b*284|0)+96>>2]=q*H+(t*r+o*s);g[e+(b*284|0)+100>>2]=H*l+(r*h+s*j);g[e+(b*284|0)+104>>2]=0.0;g[e+(b*284|0)+108>>2]=m*z+(p*D+n*w);g[e+(b*284|0)+112>>2]=q*z+(t*D+o*w);g[e+(b*284|0)+116>>2]=z*l+(D*h+w*j);g[e+(b*284|0)+120>>2]=0.0;g[e+(b*284|0)+124>>2]=m*K+(p*v+n*I);g[e+(b*284|0)+128>>2]=q*K+(t*v+o*I);g[e+(b*284|0)+132>>2]=K*l+(v*h+I*j);g[e+(b*284|0)+136>>2]=0.0;j=+g[e+(b*284|0)+32>>2];I=j*i+ +g[e+(b*284|0)+40>>2];i=j*k+ +g[e+(b*284|0)+44>>2];g[e+(b*284|0)+140>>2]=f*j+ +g[e+(b*284|0)+36>>2];g[e+(b*284|0)+144>>2]=I;g[e+(b*284|0)+148>>2]=i;g[e+(b*284|0)+152>>2]=0.0;return}function apQ(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;e=i;i=i+72|0;f=e|0;h=e+16|0;j=e+32|0;apO(b,d,0);k=d+204|0;l=d+212|0;m=+g[k>>2]+ +g[l>>2];n=d+52|0;p=d+56|0;q=d+60|0;r=d+36|0;s=d+16|0;t=m*+g[p>>2]+ +g[d+40>>2];u=m*+g[q>>2]+ +g[d+44>>2];v=s;g[d+16>>2]=+g[n>>2]*m+ +g[r>>2];w=d+20|0;g[w>>2]=t;x=d+24|0;g[x>>2]=u;g[d+28>>2]=0.0;y=j+32|0;g[y>>2]=-1.0;z=c[b+100>>2]|0;A=dE[c[(c[z>>2]|0)+8>>2]&127](z,r,s,j)|0;r=d+88|0;c[r>>2]=0;if((A|0)==0){g[d+32>>2]=+g[k>>2];g[d+272>>2]=0.0;u=-0.0- +g[p>>2];t=-0.0- +g[q>>2];g[d>>2]=-0.0- +g[n>>2];g[d+4>>2]=u;g[d+8>>2]=t;g[d+12>>2]=0.0;g[d+268>>2]=1.0;B=-1.0;i=e;return+B}t=m*+g[y>>2];y=d;A=j+16|0;c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];a[d+84|0]=1;A=f;y=h;do{if((a[43024]|0)==0){if((b1(43024)|0)==0){break}aDD(A|0,0,16);ap$(42128,0.0,0,0,f);bG(198,42128,o|0)|0}}while(0);aDD(y|0,0,16);apV(42128,0.0,h);c[r>>2]=42128;m=t- +g[l>>2];l=d+32|0;g[l>>2]=m;u=+g[k>>2];C=+g[d+208>>2]*.009999999776482582;D=u-C;E=u+C;if(m>2]=D;F=D}else{F=m}if(F>E){g[l>>2]=E}l=j;c[v>>2]=c[l>>2];c[v+4>>2]=c[l+4>>2];c[v+8>>2]=c[l+8>>2];c[v+12>>2]=c[l+12>>2];E=+g[d>>2];F=+g[d+4>>2];m=+g[d+8>>2];D=E*+g[n>>2]+F*+g[p>>2]+m*+g[q>>2];q=c[b+116>>2]|0;C=+g[s>>2]- +g[q+52>>2];u=+g[w>>2]- +g[q+56>>2];G=+g[x>>2]- +g[q+60>>2];H=+g[q+324>>2];I=+g[q+328>>2];J=+g[q+320>>2];if(D<-.10000000149011612){K=-1.0/D;g[d+272>>2]=K*(F*(C*I-G*J+ +g[q+308>>2])+E*(H*G-u*I+ +g[q+304>>2])+m*(u*J-C*H+ +g[q+312>>2]));g[d+268>>2]=K;B=t;i=e;return+B}else{g[d+272>>2]=0.0;g[d+268>>2]=10.0;B=t;i=e;return+B}return 0.0}function apR(b,d){b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0;e=i;i=i+32|0;f=e|0;h=e+16|0;j=b+136|0;k=c[j>>2]|0;if((k|0)>0){l=0;while(1){apP(b,l,0);m=l+1|0;n=c[j>>2]|0;if((m|0)<(n|0)){l=m}else{o=n;break}}}else{o=k}k=b+116|0;l=c[k>>2]|0;n=l+304|0;p=+g[n>>2];m=l+308|0;q=+g[m>>2];r=l+312|0;s=+g[r>>2];t=+Q(+(p*p+q*q+s*s))*3.5999999046325684;u=b+112|0;g[u>>2]=t;v=b+128|0;w=c[v>>2]|0;if(+g[l+4+(w<<2)>>2]*+g[n>>2]+ +g[l+20+(w<<2)>>2]*+g[m>>2]+ +g[l+36+(w<<2)>>2]*+g[r>>2]<0.0){g[u>>2]=t*-1.0}do{if((o|0)>0){u=b+144|0;r=0;do{+apQ(b,(c[u>>2]|0)+(r*284|0)|0);r=r+1|0;x=c[j>>2]|0;}while((r|0)<(x|0));t=1.0/+g[(c[k>>2]|0)+336>>2];if((x|0)>0){y=0}else{break}do{r=c[u>>2]|0;do{if((a[r+(y*284|0)+84|0]&1)==0){g[r+(y*284|0)+276>>2]=0.0}else{s=+g[r+(y*284|0)+272>>2];q=t*(+g[r+(y*284|0)+216>>2]*(+g[r+(y*284|0)+204>>2]- +g[r+(y*284|0)+32>>2])*+g[r+(y*284|0)+268>>2]-s*+g[(s<0.0?r+(y*284|0)+220|0:r+(y*284|0)+224|0)>>2]);w=r+(y*284|0)+276|0;g[w>>2]=q;if(q>=0.0){break}g[w>>2]=0.0}}while(0);y=y+1|0;z=c[j>>2]|0;}while((y|0)<(z|0));if((z|0)<=0){break}r=f|0;w=f+4|0;l=f+8|0;m=f+12|0;n=h|0;A=h+4|0;B=h+8|0;C=h+12|0;D=0;do{E=c[u>>2]|0;t=+g[E+(D*284|0)+276>>2];q=+g[E+(D*284|0)+248>>2];s=t>q?q:t;t=s*+g[E+(D*284|0)+4>>2]*d;q=s*+g[E+(D*284|0)+8>>2]*d;g[r>>2]=+g[E+(D*284|0)>>2]*s*d;g[w>>2]=t;g[l>>2]=q;g[m>>2]=0.0;F=c[k>>2]|0;q=+g[E+(D*284|0)+20>>2]- +g[F+56>>2];t=+g[E+(D*284|0)+24>>2]- +g[F+60>>2];g[n>>2]=+g[E+(D*284|0)+16>>2]- +g[F+52>>2];g[A>>2]=q;g[B>>2]=t;g[C>>2]=0.0;pe(F,f,h);D=D+1|0;}while((D|0)<(c[j>>2]|0))}}while(0);cq[c[(c[b>>2]|0)+20>>2]&1023](b,d);if((c[j>>2]|0)<=0){i=e;return}h=b+144|0;b=0;do{f=c[h>>2]|0;z=c[k>>2]|0;t=+g[f+(b*284|0)+36>>2]- +g[z+52>>2];q=+g[f+(b*284|0)+40>>2]- +g[z+56>>2];s=+g[f+(b*284|0)+44>>2]- +g[z+60>>2];p=+g[z+324>>2];G=+g[z+328>>2];H=+g[z+320>>2];if((a[f+(b*284|0)+84|0]&1)==0){I=+g[f+(b*284|0)+240>>2];y=f+(b*284|0)+236|0;g[y>>2]=I+ +g[y>>2];J=I}else{y=c[v>>2]|0;I=+g[z+4+(y<<2)>>2];K=+g[z+20+(y<<2)>>2];L=+g[z+36+(y<<2)>>2];M=+g[f+(b*284|0)>>2];N=+g[f+(b*284|0)+4>>2];O=+g[f+(b*284|0)+8>>2];P=I*M+K*N+L*O;R=((q*H-t*p+ +g[z+312>>2])*(L-O*P)+((p*s-q*G+ +g[z+304>>2])*(I-M*P)+(t*G-s*H+ +g[z+308>>2])*(K-N*P)))*d/+g[f+(b*284|0)+212>>2];g[f+(b*284|0)+240>>2]=R;z=f+(b*284|0)+236|0;g[z>>2]=R+ +g[z>>2];J=R}g[f+(b*284|0)+240>>2]=J*.9900000095367432;b=b+1|0;}while((b|0)<(c[j>>2]|0));i=e;return}function apS(b,d){b=b|0;d=+d;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0.0,ar=0.0,as=0,at=0,au=0.0,av=0,aw=0.0,ax=0,ay=0.0,az=0.0,aA=0.0,aB=0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0.0,aK=0,aL=0,aM=0,aN=0.0,aO=0.0,aP=0.0,aQ=0.0,aR=0.0,aS=0.0,aT=0.0,aU=0.0,aV=0.0,aW=0,aX=0,aY=0,aZ=0,a_=0;e=i;i=i+376|0;f=e|0;h=e+16|0;j=e+32|0;k=e+120|0;l=e+168|0;m=e+216|0;n=e+232|0;o=e+248|0;p=e+296|0;q=e+312|0;r=e+328|0;s=e+344|0;t=e+360|0;u=b+136|0;v=c[u>>2]|0;if((v|0)==0){i=e;return}w=b+8|0;x=c[w>>2]|0;if((x|0)<(v|0)){y=b+12|0;if((c[y>>2]|0)<(v|0)){c[9806]=(c[9806]|0)+1;z=aDx((v<<4|4)+15|0)|0;if((z|0)==0){A=0}else{B=-(z+4|0)&15;c[z+B>>2]=z;A=z+(B+4)|0}B=c[w>>2]|0;z=b+16|0;if((B|0)>0){C=0;do{D=A+(C<<4)|0;if((D|0)!=0){E=D;D=(c[z>>2]|0)+(C<<4)|0;c[E>>2]=c[D>>2];c[E+4>>2]=c[D+4>>2];c[E+8>>2]=c[D+8>>2];c[E+12>>2]=c[D+12>>2]}C=C+1|0;}while((C|0)<(B|0))}B=c[z>>2]|0;C=b+20|0;if((B|0)!=0){if((a[C]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[B-16+12>>2]|0)}c[z>>2]=0}a[C]=1;c[z>>2]=A;c[y>>2]=v;F=z}else{F=b+16|0}z=m;m=x;do{x=(c[F>>2]|0)+(m<<4)|0;if((x|0)!=0){y=x;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2]}m=m+1|0;}while((m|0)<(v|0))}c[w>>2]=v;w=b+28|0;m=c[w>>2]|0;if((m|0)<(v|0)){z=b+32|0;if((c[z>>2]|0)<(v|0)){c[9806]=(c[9806]|0)+1;F=aDx((v<<4|4)+15|0)|0;if((F|0)==0){G=0}else{y=-(F+4|0)&15;c[F+y>>2]=F;G=F+(y+4)|0}y=c[w>>2]|0;F=b+36|0;if((y|0)>0){x=0;do{A=G+(x<<4)|0;if((A|0)!=0){C=A;A=(c[F>>2]|0)+(x<<4)|0;c[C>>2]=c[A>>2];c[C+4>>2]=c[A+4>>2];c[C+8>>2]=c[A+8>>2];c[C+12>>2]=c[A+12>>2]}x=x+1|0;}while((x|0)<(y|0))}y=c[F>>2]|0;x=b+40|0;if((y|0)!=0){if((a[x]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-16+12>>2]|0)}c[F>>2]=0}a[x]=1;c[F>>2]=G;c[z>>2]=v;H=F}else{H=b+36|0}F=n;n=m;do{m=(c[H>>2]|0)+(n<<4)|0;if((m|0)!=0){z=m;c[z>>2]=c[F>>2];c[z+4>>2]=c[F+4>>2];c[z+8>>2]=c[F+8>>2];c[z+12>>2]=c[F+12>>2]}n=n+1|0;}while((n|0)<(v|0))}c[w>>2]=v;w=b+48|0;n=c[w>>2]|0;if((n|0)<(v|0)){F=b+52|0;if((c[F>>2]|0)<(v|0)){c[9806]=(c[9806]|0)+1;H=aDx((v<<2)+19|0)|0;if((H|0)==0){I=0}else{z=-(H+4|0)&15;c[H+z>>2]=H;I=H+(z+4)|0}z=c[w>>2]|0;H=b+56|0;if((z|0)>0){m=0;do{G=I+(m<<2)|0;if((G|0)!=0){g[G>>2]=+g[(c[H>>2]|0)+(m<<2)>>2]}m=m+1|0;}while((m|0)<(z|0))}z=c[H>>2]|0;m=b+60|0;if((z|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[z-4>>2]|0)}c[H>>2]=0}a[m]=1;c[H>>2]=I;c[F>>2]=v;J=H}else{J=b+56|0}H=n;do{n=(c[J>>2]|0)+(H<<2)|0;if((n|0)!=0){g[n>>2]=0.0}H=H+1|0;}while((H|0)<(v|0))}c[w>>2]=v;w=b+68|0;H=c[w>>2]|0;if((H|0)<(v|0)){J=b+72|0;if((c[J>>2]|0)<(v|0)){c[9806]=(c[9806]|0)+1;n=aDx((v<<2)+19|0)|0;if((n|0)==0){K=0}else{F=-(n+4|0)&15;c[n+F>>2]=n;K=n+(F+4)|0}F=c[w>>2]|0;n=b+76|0;if((F|0)>0){I=0;do{m=K+(I<<2)|0;if((m|0)!=0){g[m>>2]=+g[(c[n>>2]|0)+(I<<2)>>2]}I=I+1|0;}while((I|0)<(F|0))}F=c[n>>2]|0;I=b+80|0;if((F|0)!=0){if((a[I]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[F-4>>2]|0)}c[n>>2]=0}a[I]=1;c[n>>2]=K;c[J>>2]=v;L=n}else{L=b+76|0}n=H;do{H=(c[L>>2]|0)+(n<<2)|0;if((H|0)!=0){g[H>>2]=0.0}n=n+1|0;}while((n|0)<(v|0))}c[w>>2]=v;if((c[u>>2]|0)<=0){i=e;return}v=b+76|0;w=b+56|0;n=0;do{g[(c[v>>2]|0)+(n<<2)>>2]=0.0;g[(c[w>>2]|0)+(n<<2)>>2]=0.0;n=n+1|0;M=c[u>>2]|0;}while((n|0)<(M|0));if((M|0)<=0){i=e;return}n=b+144|0;L=o;H=o+16|0;J=o+32|0;K=b+36|0;I=b+120|0;F=b+16|0;m=b+116|0;z=f|0;G=f+4|0;x=f+8|0;y=f+12|0;A=h|0;C=h+4|0;B=h+8|0;D=h+12|0;E=k|0;N=k+4|0;O=k+8|0;P=k+12|0;R=k+16|0;S=k+20|0;T=k+24|0;U=k+28|0;V=k+32|0;W=k+36|0;X=k+40|0;Y=k+44|0;Z=l|0;_=l+4|0;$=l+8|0;aa=l+12|0;ab=l+16|0;ac=l+20|0;ad=l+24|0;ae=l+28|0;af=l+32|0;ag=l+36|0;ah=l+40|0;ai=l+44|0;aj=j+80|0;ak=0;al=M;while(1){M=c[n>>2]|0;am=c[M+(ak*284|0)+88>>2]|0;if((am|0)==0){an=al}else{ao=M+(ak*284|0)+92|0;c[L>>2]=c[ao>>2];c[L+4>>2]=c[ao+4>>2];c[L+8>>2]=c[ao+8>>2];c[L+12>>2]=c[ao+12>>2];ao=M+(ak*284|0)+108|0;c[H>>2]=c[ao>>2];c[H+4>>2]=c[ao+4>>2];c[H+8>>2]=c[ao+8>>2];c[H+12>>2]=c[ao+12>>2];ao=M+(ak*284|0)+124|0;c[J>>2]=c[ao>>2];c[J+4>>2]=c[ao+4>>2];c[J+8>>2]=c[ao+8>>2];c[J+12>>2]=c[ao+12>>2];ao=c[K>>2]|0;ap=c[I>>2]|0;aq=+g[o+16+(ap<<2)>>2];ar=+g[o+32+(ap<<2)>>2];g[ao+(ak<<4)>>2]=+g[o+(ap<<2)>>2];g[ao+(ak<<4)+4>>2]=aq;g[ao+(ak<<4)+8>>2]=ar;g[ao+(ak<<4)+12>>2]=0.0;ao=c[K>>2]|0;ap=ao+(ak<<4)|0;ar=+g[ap>>2];as=M+(ak*284|0)|0;aq=+g[as>>2];at=ao+(ak<<4)+4|0;au=+g[at>>2];av=M+(ak*284|0)+4|0;aw=+g[av>>2];ax=ao+(ak<<4)+8|0;ay=+g[ax>>2];ao=M+(ak*284|0)+8|0;az=+g[ao>>2];aA=ar*aq+au*aw+ay*az;g[ap>>2]=ar-aq*aA;g[at>>2]=au-aw*aA;g[ax>>2]=ay-az*aA;ax=c[K>>2]|0;at=ax+(ak<<4)|0;aA=+g[at>>2];ap=ax+(ak<<4)+4|0;az=+g[ap>>2];aB=ax+(ak<<4)+8|0;ay=+g[aB>>2];aw=1.0/+Q(+(aA*aA+az*az+ay*ay));g[at>>2]=aA*aw;g[ap>>2]=az*aw;g[aB>>2]=ay*aw;aB=c[F>>2]|0;ap=c[K>>2]|0;aw=+g[av>>2];ay=+g[ap+(ak<<4)+8>>2];az=+g[ao>>2];aA=+g[ap+(ak<<4)+4>>2];au=+g[ap+(ak<<4)>>2];aq=+g[as>>2];g[aB+(ak<<4)>>2]=aw*ay-az*aA;g[aB+(ak<<4)+4>>2]=az*au-ay*aq;g[aB+(ak<<4)+8>>2]=aA*aq-aw*au;g[aB+(ak<<4)+12>>2]=0.0;aB=c[F>>2]|0;as=aB+(ak<<4)|0;au=+g[as>>2];ap=aB+(ak<<4)+4|0;aw=+g[ap>>2];ao=aB+(ak<<4)+8|0;aq=+g[ao>>2];aA=1.0/+Q(+(au*au+aw*aw+aq*aq));g[as>>2]=au*aA;g[ap>>2]=aw*aA;g[ao>>2]=aq*aA;ao=c[m>>2]|0;ap=c[K>>2]|0;as=ap+(ak<<4)|0;aB=(c[v>>2]|0)+(ak<<2)|0;av=as|0;aA=+g[av>>2];at=ap+(ak<<4)+4|0;aq=+g[at>>2];ax=ap+(ak<<4)+8|0;aw=+g[ax>>2];if(aA*aA+aq*aq+aw*aw>1.100000023841858){aC=0.0}else{aw=+g[M+(ak*284|0)+16>>2];aq=aw- +g[ao+52>>2];aA=+g[M+(ak*284|0)+20>>2];au=aA- +g[ao+56>>2];ay=+g[M+(ak*284|0)+24>>2];az=ay- +g[ao+60>>2];g[z>>2]=aq;g[G>>2]=au;g[x>>2]=az;g[y>>2]=0.0;ar=aw- +g[am+52>>2];aw=aA- +g[am+56>>2];aA=ay- +g[am+60>>2];g[A>>2]=ar;g[C>>2]=aw;g[B>>2]=aA;g[D>>2]=0.0;ay=+g[ao+324>>2];aD=+g[ao+328>>2];aE=+g[ao+320>>2];aF=+g[am+324>>2];aG=+g[am+328>>2];aH=+g[am+320>>2];aI=ay*az-aD*au+ +g[ao+304>>2]-(aF*aA-aG*aw+ +g[am+304>>2]);aJ=+g[ao+308>>2]+(aD*aq-az*aE)-(+g[am+308>>2]+(aG*ar-aA*aH));aA=au*aE-ay*aq+ +g[ao+312>>2]-(aw*aH-aF*ar+ +g[am+312>>2]);g[E>>2]=+g[ao+4>>2];g[N>>2]=+g[ao+20>>2];g[O>>2]=+g[ao+36>>2];g[P>>2]=0.0;g[R>>2]=+g[ao+8>>2];g[S>>2]=+g[ao+24>>2];g[T>>2]=+g[ao+40>>2];g[U>>2]=0.0;g[V>>2]=+g[ao+12>>2];g[W>>2]=+g[ao+28>>2];g[X>>2]=+g[ao+44>>2];g[Y>>2]=0.0;g[Z>>2]=+g[am+4>>2];g[_>>2]=+g[am+20>>2];g[$>>2]=+g[am+36>>2];g[aa>>2]=0.0;g[ab>>2]=+g[am+8>>2];g[ac>>2]=+g[am+24>>2];g[ad>>2]=+g[am+40>>2];g[ae>>2]=0.0;g[af>>2]=+g[am+12>>2];g[ag>>2]=+g[am+28>>2];g[ah>>2]=+g[am+44>>2];g[ai>>2]=0.0;anz(j,k,l,f,h,as,ao+388|0,+g[ao+336>>2],am+388|0,+g[am+336>>2]);aC=1.0/+g[aj>>2]*(aI*+g[av>>2]+aJ*+g[at>>2]+aA*+g[ax>>2])*-.20000000298023224}g[aB>>2]=aC;an=c[u>>2]|0}aB=ak+1|0;if((aB|0)<(an|0)){ak=aB;al=an}else{break}}if((an|0)>0){aK=0;aL=0}else{i=e;return}while(1){an=c[n>>2]|0;al=c[an+(aK*284|0)+88>>2]|0;do{if((al|0)==0){g[(c[w>>2]|0)+(aK<<2)>>2]=0.0;g[(c[n>>2]|0)+(aK*284|0)+280>>2]=1.0;aM=aL}else{aC=+g[an+(aK*284|0)+252>>2];if(aC!=0.0){g[(c[w>>2]|0)+(aK<<2)>>2]=0.0;g[(c[n>>2]|0)+(aK*284|0)+280>>2]=1.0;aN=aC*d}else{aC=+g[an+(aK*284|0)+256>>2];aA=aC!=0.0?aC:0.0;ak=c[m>>2]|0;aj=c[F>>2]|0;aC=+g[an+(aK*284|0)+16>>2];aJ=+g[an+(aK*284|0)+20>>2];aI=+g[an+(aK*284|0)+24>>2];ar=+g[aj+(aK<<4)>>2];aF=+g[aj+(aK<<4)+4>>2];aH=+g[aj+(aK<<4)+8>>2];aw=aC- +g[ak+52>>2];aq=aJ- +g[ak+56>>2];ay=aI- +g[ak+60>>2];aE=aq*aH-ay*aF;au=ay*ar-aw*aH;aG=aw*aF-aq*ar;az=+g[ak+256>>2]*aE+ +g[ak+272>>2]*au+aG*+g[ak+288>>2];aD=aE*+g[ak+260>>2]+au*+g[ak+276>>2]+aG*+g[ak+292>>2];aO=aE*+g[ak+264>>2]+au*+g[ak+280>>2]+aG*+g[ak+296>>2];aG=aC- +g[al+52>>2];aC=aJ- +g[al+56>>2];aJ=aI- +g[al+60>>2];aI=aH*aC-aF*aJ;au=ar*aJ-aH*aG;aE=aF*aG-ar*aC;aP=aE*+g[al+288>>2]+(+g[al+256>>2]*aI+ +g[al+272>>2]*au);aQ=aI*+g[al+260>>2]+au*+g[al+276>>2]+aE*+g[al+292>>2];aR=aI*+g[al+264>>2]+au*+g[al+280>>2]+aE*+g[al+296>>2];aE=+g[ak+324>>2];au=+g[ak+328>>2];aI=+g[ak+320>>2];aS=+g[al+324>>2];aT=+g[al+328>>2];aU=+g[al+320>>2];aV=1.0/(+g[ak+336>>2]+(aH*(aq*az-aw*aD)+(ar*(ay*aD-aq*aO)+aF*(aw*aO-ay*az)))+(+g[al+336>>2]+(aH*(aC*aP-aG*aQ)+(ar*(aJ*aQ-aC*aR)+aF*(aG*aR-aJ*aP)))))*(-0.0-((ay*aE-aq*au+ +g[ak+304>>2]-(aJ*aS-aC*aT+ +g[al+304>>2]))*ar+(+g[ak+308>>2]+(aw*au-ay*aI)-(+g[al+308>>2]+(aG*aT-aJ*aU)))*aF+(aq*aI-aw*aE+ +g[ak+312>>2]-(aC*aU-aG*aS+ +g[al+312>>2]))*aH));aH=aA>2]|0)+(aK<<2)>>2]=0.0;g[(c[n>>2]|0)+(aK*284|0)+280>>2]=1.0;aN=aH>2]|0)+(aK*284|0)+280>>2]=1.0;aH=+g[an+(aK*284|0)+276>>2]*d*+g[an+(aK*284|0)+228>>2];g[(c[w>>2]|0)+(aK<<2)>>2]=aN;aV=+g[(c[w>>2]|0)+(aK<<2)>>2]*.5;aA=+g[(c[v>>2]|0)+(aK<<2)>>2];aS=aV*aV+aA*aA;if(aS<=aH*aH){aM=aL;break}aA=aH/+Q(+aS);ak=(c[n>>2]|0)+(aK*284|0)+280|0;g[ak>>2]=aA*+g[ak>>2];aM=1}}while(0);an=aK+1|0;aW=c[u>>2]|0;if((an|0)<(aW|0)){aK=an;aL=aM}else{break}}if(aM){if((aW|0)>0){aX=0;aY=aW}else{i=e;return}while(1){do{if(+g[(c[v>>2]|0)+(aX<<2)>>2]!=0.0){aN=+g[(c[n>>2]|0)+(aX*284|0)+280>>2];if(aN>=1.0){aZ=aY;break}aM=(c[w>>2]|0)+(aX<<2)|0;g[aM>>2]=aN*+g[aM>>2];aM=(c[v>>2]|0)+(aX<<2)|0;g[aM>>2]=+g[(c[n>>2]|0)+(aX*284|0)+280>>2]*+g[aM>>2];aZ=c[u>>2]|0}else{aZ=aY}}while(0);aM=aX+1|0;if((aM|0)<(aZ|0)){aX=aM;aY=aZ}else{a_=aZ;break}}}else{a_=aW}if((a_|0)<=0){i=e;return}a_=p|0;aW=p+4|0;aZ=p+8|0;aY=p+12|0;aX=q|0;aM=q+4|0;aL=q+8|0;aK=q+12|0;an=r|0;al=r+4|0;ak=r+8|0;aj=r+12|0;h=s|0;f=s+4|0;l=s+8|0;k=s+12|0;j=b+124|0;b=t|0;ai=t+4|0;ah=t+8|0;ag=t+12|0;af=0;do{ae=c[n>>2]|0;ad=c[m>>2]|0;ac=ae+(af*284|0)+16|0;ab=ae+(af*284|0)+20|0;aN=+g[ab>>2]- +g[ad+56>>2];aa=ae+(af*284|0)+24|0;d=+g[aa>>2]- +g[ad+60>>2];g[a_>>2]=+g[ac>>2]- +g[ad+52>>2];g[aW>>2]=aN;g[aZ>>2]=d;g[aY>>2]=0.0;d=+g[(c[w>>2]|0)+(af<<2)>>2];if(d!=0.0){$=c[F>>2]|0;aN=d*+g[$+(af<<4)+4>>2];aA=d*+g[$+(af<<4)+8>>2];g[aX>>2]=d*+g[$+(af<<4)>>2];g[aM>>2]=aN;g[aL>>2]=aA;g[aK>>2]=0.0;pe(ad,q,p)}aA=+g[(c[v>>2]|0)+(af<<2)>>2];if(aA!=0.0){ad=c[(c[n>>2]|0)+(af*284|0)+88>>2]|0;aN=+g[ab>>2]- +g[ad+56>>2];d=+g[aa>>2]- +g[ad+60>>2];g[an>>2]=+g[ac>>2]- +g[ad+52>>2];g[al>>2]=aN;g[ak>>2]=d;g[aj>>2]=0.0;ac=c[K>>2]|0;d=aA*+g[ac+(af<<4)+4>>2];aN=aA*+g[ac+(af<<4)+8>>2];g[h>>2]=+g[ac+(af<<4)>>2]*aA;g[f>>2]=d;g[l>>2]=aN;g[k>>2]=0.0;ac=c[m>>2]|0;aa=c[j>>2]|0;aN=+g[ac+4+(aa<<2)>>2];d=+g[ac+20+(aa<<2)>>2];aA=+g[ac+36+(aa<<2)>>2];aS=+g[a_>>2];aH=+g[aW>>2];aV=+g[aZ>>2];aG=(aN*aS+d*aH+aA*aV)*(1.0- +g[ae+(af*284|0)+244>>2]);g[a_>>2]=aS-aN*aG;g[aW>>2]=aH-d*aG;g[aZ>>2]=aV-aA*aG;pe(ac,s,p);aG=-0.0- +g[f>>2];aA=-0.0- +g[l>>2];g[b>>2]=-0.0- +g[h>>2];g[ai>>2]=aG;g[ah>>2]=aA;g[ag>>2]=0.0;pe(ad,t,r)}af=af+1|0;}while((af|0)<(c[u>>2]|0));i=e;return}function apT(a){a=a|0;return}function apU(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;c[a+120>>2]=b;c[a+124>>2]=d;c[a+128>>2]=e;return}function apV(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;e=a+204|0;f=c[e>>2]|0;if(b==0.0){c[e>>2]=f|1;g[a+336>>2]=0.0;h=0.0}else{c[e>>2]=f&-2;i=1.0/b;g[a+336>>2]=i;h=i}i=+g[a+376>>2]*b;j=+g[a+380>>2]*b;g[a+356>>2]=+g[a+372>>2]*b;g[a+360>>2]=i;g[a+364>>2]=j;g[a+368>>2]=0.0;j=+g[d>>2];if(j!=0.0){k=1.0/j}else{k=0.0}j=+g[d+4>>2];if(j!=0.0){l=1.0/j}else{l=0.0}j=+g[d+8>>2];if(j!=0.0){m=1.0/j}else{m=0.0}g[a+388>>2]=k;g[a+392>>2]=l;g[a+396>>2]=m;g[a+400>>2]=0.0;m=h*+g[a+344>>2];l=h*+g[a+348>>2];g[a+552>>2]=+g[a+340>>2]*h;g[a+556>>2]=m;g[a+560>>2]=l;g[a+564>>2]=0.0;return}function apW(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;e=i;i=i+48|0;f=e|0;h=e+16|0;j=e+32|0;k=b+136|0;if((c[k>>2]|0)<=0){i=e;return}l=f|0;m=f+4|0;n=f+8|0;o=f+12|0;p=b+144|0;q=h;r=b+120|0;b=d;s=h|0;t=h+4|0;u=h+8|0;v=j|0;w=j+4|0;x=j+8|0;y=j+12|0;z=0;do{g[l>>2]=0.0;g[m>>2]=1.0;g[n>>2]=1.0;g[o>>2]=0.0;A=c[p>>2]|0;g[l>>2]=(a[A+(z*284|0)+84|0]&1)==0?1.0:0.0;g[m>>2]=0.0;g[n>>2]=1.0;g[o>>2]=0.0;B=A+(z*284|0)+140|0;c[q>>2]=c[B>>2];c[q+4>>2]=c[B+4>>2];c[q+8>>2]=c[B+8>>2];c[q+12>>2]=c[B+12>>2];B=c[r>>2]|0;C=c[(c[b>>2]|0)+8>>2]|0;D=+g[A+(z*284|0)+108+(B<<2)>>2]+ +g[t>>2];E=+g[A+(z*284|0)+124+(B<<2)>>2]+ +g[u>>2];g[v>>2]=+g[A+(z*284|0)+92+(B<<2)>>2]+ +g[s>>2];g[w>>2]=D;g[x>>2]=E;g[y>>2]=0.0;dI[C&1023](d,h,j,f);dI[c[(c[b>>2]|0)+8>>2]&1023](d,h,(c[p>>2]|0)+(z*284|0)+16|0,f);z=z+1|0;}while((z|0)<(c[k>>2]|0));i=e;return}function apX(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;h=i;i=i+88|0;j=h|0;k=j+4|0;g[k>>2]=1.0;l=j+8|0;c[l>>2]=0;b[j+12>>1]=1;b[j+14>>1]=-1;c[j+16>>2]=0;c[j>>2]=19480;m=j+20|0;n=d;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=j+36|0;m=e;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];m=c[a+4>>2]|0;dI[c[(c[m>>2]|0)+28>>2]&1023](m|0,d,e,j|0);e=c[l>>2]|0;if((e|0)==0){o=0;i=h;return o|0}if((c[e+232>>2]&2|0)==0){o=0;i=h;return o|0}if((c[e+204>>2]&4|0)!=0){o=0;i=h;return o|0}l=f;d=j+68|0;c[l>>2]=c[d>>2];c[l+4>>2]=c[d+4>>2];c[l+8>>2]=c[d+8>>2];c[l+12>>2]=c[d+12>>2];d=f+16|0;l=d;m=j+52|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];m=d|0;p=+g[m>>2];d=f+20|0;q=+g[d>>2];l=f+24|0;r=+g[l>>2];s=1.0/+Q(+(p*p+q*q+r*r));g[m>>2]=p*s;g[d>>2]=q*s;g[l>>2]=r*s;g[f+32>>2]=+g[k>>2];o=e;i=h;return o|0}function apY(a,b,d){a=a|0;b=b|0;d=+d;cq[c[(c[a>>2]|0)+16>>2]&1023](a,d);return}function apZ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ap_(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0;c[b+232>>2]=2;aDD(b+304|0,0,32);g[b+536>>2]=1.0;g[b+540>>2]=1.0;g[b+544>>2]=1.0;g[b+548>>2]=0.0;e=b+340|0;g[e>>2]=1.0;f=b+344|0;g[f>>2]=1.0;h=b+348|0;g[h>>2]=1.0;aDD(b+352|0,0,36);aDD(b+404|0,0,32);i=+g[d+92>>2];j=+g[d+96>>2];if(i<0.0){k=0.0}else{k=i>1.0?1.0:i}g[b+436>>2]=k;if(j<0.0){l=0.0}else{l=j>1.0?1.0:j}g[b+440>>2]=l;g[b+464>>2]=+g[d+108>>2];g[b+468>>2]=+g[d+112>>2];m=c[d+4>>2]|0;c[b+472>>2]=m;c[b+600>>2]=0;c[b+604>>2]=0;a[b+444|0]=a[d+116|0]&1;g[b+448>>2]=+g[d+120>>2];g[b+452>>2]=+g[d+124>>2];g[b+456>>2]=+g[d+128>>2];g[b+460>>2]=+g[d+132>>2];if((m|0)==0){n=b+4|0;o=d+8|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];o=b+20|0;p=d+24|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];p=b+36|0;q=d+40|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=b+52|0;r=d+56|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];s=n;t=o;u=p;v=q}else{q=b+4|0;cv[c[(c[m>>2]|0)+8>>2]&2047](m,q);s=q;t=b+20|0;u=b+36|0;v=b+52|0}q=b+68|0;c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];s=b+84|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];t=b+100|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];u=b+116|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];aDD(b+132|0,0,32);g[b+224>>2]=+g[d+100>>2];g[b+228>>2]=+g[d+104>>2];cv[c[(c[b>>2]|0)+12>>2]&2047](b|0,c[d+72>>2]|0);v=c[10738]|0;c[10738]=v+1;c[b+500>>2]=v;l=+g[d>>2];v=b+204|0;u=c[v>>2]|0;if(l==0.0){c[v>>2]=u|1;g[b+336>>2]=0.0;w=0.0}else{c[v>>2]=u&-2;j=1.0/l;g[b+336>>2]=j;w=j}j=l*+g[b+376>>2];k=l*+g[b+380>>2];g[b+356>>2]=l*+g[b+372>>2];g[b+360>>2]=j;g[b+364>>2]=k;g[b+368>>2]=0.0;k=+g[d+76>>2];if(k!=0.0){x=1.0/k}else{x=0.0}k=+g[d+80>>2];if(k!=0.0){y=1.0/k}else{y=0.0}k=+g[d+84>>2];if(k!=0.0){z=1.0/k}else{z=0.0}g[b+388>>2]=x;g[b+392>>2]=y;g[b+396>>2]=z;g[b+400>>2]=0.0;k=w*+g[e>>2];j=w*+g[f>>2];l=w*+g[h>>2];w=+g[b+4>>2];i=w*x;A=+g[b+8>>2];B=A*y;C=+g[b+12>>2];D=C*z;E=+g[b+20>>2];F=x*E;G=+g[b+24>>2];H=y*G;I=+g[b+28>>2];J=z*I;K=+g[b+36>>2];L=x*K;x=+g[b+40>>2];M=y*x;y=+g[b+44>>2];N=z*y;g[b+256>>2]=w*i+A*B+C*D;g[b+260>>2]=i*E+B*G+D*I;g[b+264>>2]=i*K+B*x+D*y;g[b+268>>2]=0.0;g[b+272>>2]=w*F+A*H+C*J;g[b+276>>2]=E*F+G*H+I*J;g[b+280>>2]=F*K+H*x+J*y;g[b+284>>2]=0.0;g[b+288>>2]=w*L+A*M+C*N;g[b+292>>2]=E*L+G*M+I*N;g[b+296>>2]=K*L+x*M+y*N;g[b+300>>2]=0.0;c[b+496>>2]=0;aDD(b+504|0,0,32);g[b+552>>2]=k;g[b+556>>2]=j;g[b+560>>2]=l;aDD(b+564|0,0,36);return}function ap$(b,d,e,f,h){b=b|0;d=+d;e=e|0;f=f|0;h=h|0;var j=0,k=0;j=i;i=i+136|0;k=j|0;g[b+164>>2]=1.0;g[b+168>>2]=1.0;g[b+172>>2]=1.0;g[b+176>>2]=0.0;c[b+180>>2]=0;g[b+184>>2]=999999984306749400.0;aDD(b+188|0,0,16);c[b+204>>2]=1;c[b+208>>2]=-1;c[b+212>>2]=-1;c[b+216>>2]=1;g[b+220>>2]=0.0;g[b+224>>2]=.5;g[b+228>>2]=0.0;c[b+232>>2]=1;c[b+236>>2]=0;g[b+240>>2]=1.0;g[b+244>>2]=0.0;g[b+248>>2]=0.0;c[b+252>>2]=0;g[b+4>>2]=1.0;aDD(b+8|0,0,16);g[b+24>>2]=1.0;aDD(b+28|0,0,16);g[b+44>>2]=1.0;aDD(b+48|0,0,20);c[b>>2]=26048;a[b+492|0]=1;c[b+488>>2]=0;c[b+480>>2]=0;c[b+484>>2]=0;g[k>>2]=d;c[k+4>>2]=e;c[k+72>>2]=f;f=k+76|0;e=h;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];g[k+92>>2]=0.0;g[k+96>>2]=0.0;g[k+100>>2]=.5;g[k+104>>2]=0.0;g[k+108>>2]=.800000011920929;g[k+112>>2]=1.0;a[k+116|0]=0;g[k+120>>2]=.004999999888241291;g[k+124>>2]=.009999999776482582;g[k+128>>2]=.009999999776482582;g[k+132>>2]=.009999999776482582;g[k+8>>2]=1.0;aDD(k+12|0,0,16);g[k+28>>2]=1.0;aDD(k+32|0,0,16);g[k+48>>2]=1.0;aDD(k+52|0,0,20);ap_(b,k);i=j;return}function ap0(a,b){a=a|0;b=+b;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0;d=i;i=i+24|0;e=d|0;f=d+16|0;if(b==0.0){i=d;return}h=c[a+472>>2]|0;if((h|0)==0){j=a+4|0}else{k=a+4|0;cv[c[(c[h>>2]|0)+8>>2]&2047](h,k);j=k}k=a+68|0;h=a+304|0;l=a+320|0;m=1.0/b;b=(+g[a+56>>2]- +g[a+120>>2])*m;n=m*(+g[a+60>>2]- +g[a+124>>2]);g[h>>2]=(+g[a+52>>2]- +g[a+116>>2])*m;g[a+308>>2]=b;g[a+312>>2]=n;g[a+316>>2]=0.0;an6(k,j,e,f);n=+g[f>>2];b=m*n*+g[e+4>>2];o=m*n*+g[e+8>>2];g[l>>2]=m*+g[e>>2]*n;g[a+324>>2]=b;g[a+328>>2]=o;g[a+332>>2]=0.0;e=a+132|0;f=h;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+148|0;e=l;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=k;k=j;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];k=a+84|0;e=a+20|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];e=a+100|0;k=a+36|0;c[e>>2]=c[k>>2];c[e+4>>2]=c[k+4>>2];c[e+8>>2]=c[k+8>>2];c[e+12>>2]=c[k+12>>2];k=a+116|0;e=a+52|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];i=d;return}function ap1(a){a=a|0;return 480}function ap2(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((c[b+232>>2]&2|0)==0){d=1;return d|0}e=b;b=a+488|0;f=c[a+480>>2]|0;a=0;while(1){if((a|0)>=(f|0)){d=1;g=4452;break}h=c[(c[b>>2]|0)+(a<<2)>>2]|0;if((c[h+24>>2]|0)==(e|0)){d=0;g=4455;break}if((c[h+28>>2]|0)==(e|0)){d=0;g=4453;break}else{a=a+1|0}}if((g|0)==4455){return d|0}else if((g|0)==4452){return d|0}else if((g|0)==4453){return d|0}return 0}function ap3(b,c){b=b|0;c=+c;var d=0.0,e=0.0,f=0,h=0.0,i=0,j=0.0,k=0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;d=+g[b+436>>2];e=+R(+(1.0-d),+c);f=b+304|0;h=e*+g[f>>2];g[f>>2]=h;i=b+308|0;j=e*+g[i>>2];g[i>>2]=j;k=b+312|0;l=e*+g[k>>2];g[k>>2]=l;e=+g[b+440>>2];m=+R(+(1.0-e),+c);n=b+320|0;c=m*+g[n>>2];g[n>>2]=c;o=b+324|0;p=m*+g[o>>2];g[o>>2]=p;q=b+328|0;r=m*+g[q>>2];g[q>>2]=r;if((a[b+444|0]&1)==0){return}do{if(r*r+(c*c+p*p)<+g[b+456>>2]){if(h*h+j*j+l*l>=+g[b+452>>2]){s=h;t=j;u=l;v=c;w=p;x=r;break}m=+g[b+448>>2];y=c*m;g[n>>2]=y;z=m*p;g[o>>2]=z;A=m*r;g[q>>2]=A;B=m*h;g[f>>2]=B;C=m*j;g[i>>2]=C;D=m*l;g[k>>2]=D;s=B;t=C;u=D;v=y;w=z;x=A}else{s=h;t=j;u=l;v=c;w=p;x=r}}while(0);r=+Q(+(s*s+t*t+u*u));do{if(r.004999999888241291){p=1.0/r;g[f>>2]=s-s*p*.004999999888241291;g[i>>2]=t-t*p*.004999999888241291;g[k>>2]=u-u*p*.004999999888241291;break}else{aDD(f|0,0,16);break}}}while(0);u=+Q(+(v*v+w*w+x*x));if(u>=e){return}if(u>.004999999888241291){e=1.0/u;g[n>>2]=v-v*e*.004999999888241291;g[o>>2]=w-w*e*.004999999888241291;g[q>>2]=x-x*e*.004999999888241291;return}else{aDD(n|0,0,16);return}}function ap4(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0;d=a+68|0;if((c[a+204>>2]&3|0)==0){e=d;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];e=a+84|0;h=b+16|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];e=a+100|0;i=b+32|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];e=a+116|0;j=b+48|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];k=a+4|0;l=f;m=a+20|0;n=h;o=a+36|0;p=i;q=a+52|0;r=j}else{j=d;d=a+4|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];j=a+84|0;i=a+20|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];j=a+100|0;h=a+36|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];j=a+116|0;f=a+52|0;c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];k=d;l=b;m=i;n=b+16|0;o=h;p=b+32|0;q=f;r=b+48|0}b=a+132|0;f=a+304|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=a+148|0;b=a+320|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];s=+g[a+4>>2];t=+g[a+388>>2];u=s*t;v=+g[a+8>>2];w=+g[a+392>>2];x=v*w;y=+g[a+12>>2];z=+g[a+396>>2];A=y*z;B=+g[a+20>>2];C=t*B;D=+g[a+24>>2];E=w*D;F=+g[a+28>>2];G=z*F;H=+g[a+36>>2];I=t*H;t=+g[a+40>>2];J=w*t;w=+g[a+44>>2];K=z*w;g[a+256>>2]=s*u+v*x+y*A;g[a+260>>2]=u*B+x*D+A*F;g[a+264>>2]=u*H+x*t+A*w;g[a+268>>2]=0.0;g[a+272>>2]=s*C+v*E+y*G;g[a+276>>2]=B*C+D*E+F*G;g[a+280>>2]=C*H+E*t+G*w;g[a+284>>2]=0.0;g[a+288>>2]=s*I+v*J+y*K;g[a+292>>2]=B*I+D*J+F*K;g[a+296>>2]=H*I+t*J+w*K;g[a+300>>2]=0.0;return}function ap5(a,b){a=a|0;b=+b;var d=0.0,e=0.0,f=0.0,h=0,i=0.0,j=0.0,k=0.0,l=0,m=0;if((c[a+204>>2]&3|0)!=0){return}d=+g[a+336>>2]*b;e=d*+g[a+408>>2];f=d*+g[a+412>>2];h=a+304|0;g[h>>2]=+g[a+404>>2]*d+ +g[h>>2];h=a+308|0;g[h>>2]=e+ +g[h>>2];h=a+312|0;g[h>>2]=f+ +g[h>>2];f=+g[a+420>>2];e=+g[a+424>>2];d=+g[a+428>>2];i=(f*+g[a+272>>2]+e*+g[a+276>>2]+d*+g[a+280>>2])*b;j=(f*+g[a+288>>2]+e*+g[a+292>>2]+d*+g[a+296>>2])*b;h=a+320|0;k=(+g[a+256>>2]*f+ +g[a+260>>2]*e+ +g[a+264>>2]*d)*b+ +g[h>>2];g[h>>2]=k;l=a+324|0;d=i+ +g[l>>2];g[l>>2]=d;m=a+328|0;i=j+ +g[m>>2];g[m>>2]=i;j=+Q(+(i*i+(k*k+d*d)));if(j*b<=1.5707963705062866){return}e=1.5707963705062866/b/j;g[h>>2]=k*e;g[l>>2]=e*d;g[m>>2]=e*i;return}function ap6(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=b+480|0;f=c[e>>2]|0;g=b+488|0;h=0;while(1){if((h|0)>=(f|0)){break}if((c[(c[g>>2]|0)+(h<<2)>>2]|0)==(d|0)){i=4487;break}else{h=h+1|0}}do{if((i|0)==4487){if((h|0)==(f|0)){break}j=b+252|0;c[j>>2]=1;return}}while(0);h=b+484|0;do{if((f|0)==(c[h>>2]|0)){i=(f|0)==0?1:f<<1;if((f|0)>=(i|0)){k=f;break}if((i|0)==0){l=0;m=f}else{c[9806]=(c[9806]|0)+1;n=aDx((i<<2)+19|0)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}l=o;m=c[e>>2]|0}if((m|0)>0){p=0;do{n=l+(p<<2)|0;if((n|0)!=0){c[n>>2]=c[(c[g>>2]|0)+(p<<2)>>2]}p=p+1|0;}while((p|0)<(m|0))}p=c[g>>2]|0;n=b+492|0;if((p|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[g>>2]=0}a[n]=1;c[g>>2]=l;c[h>>2]=i;k=c[e>>2]|0}else{k=f}}while(0);f=(c[g>>2]|0)+(k<<2)|0;if((f|0)==0){q=k}else{c[f>>2]=d;q=c[e>>2]|0}c[e>>2]=q+1;j=b+252|0;c[j>>2]=1;return}function ap7(b,d,e){b=b|0;d=d|0;e=e|0;atq(b|0,d,e)|0;g[d+248>>2]=+g[b+256>>2];g[d+252>>2]=+g[b+260>>2];g[d+256>>2]=+g[b+264>>2];g[d+260>>2]=+g[b+268>>2];g[d+264>>2]=+g[b+272>>2];g[d+268>>2]=+g[b+276>>2];g[d+272>>2]=+g[b+280>>2];g[d+276>>2]=+g[b+284>>2];g[d+280>>2]=+g[b+288>>2];g[d+284>>2]=+g[b+292>>2];g[d+288>>2]=+g[b+296>>2];g[d+292>>2]=+g[b+300>>2];g[d+296>>2]=+g[b+304>>2];g[d+300>>2]=+g[b+308>>2];g[d+304>>2]=+g[b+312>>2];g[d+308>>2]=+g[b+316>>2];g[d+312>>2]=+g[b+320>>2];g[d+316>>2]=+g[b+324>>2];g[d+320>>2]=+g[b+328>>2];g[d+324>>2]=+g[b+332>>2];g[d+440>>2]=+g[b+336>>2];g[d+328>>2]=+g[b+536>>2];g[d+332>>2]=+g[b+540>>2];g[d+336>>2]=+g[b+544>>2];g[d+340>>2]=+g[b+548>>2];g[d+344>>2]=+g[b+340>>2];g[d+348>>2]=+g[b+344>>2];g[d+352>>2]=+g[b+348>>2];g[d+356>>2]=+g[b+352>>2];g[d+360>>2]=+g[b+356>>2];g[d+364>>2]=+g[b+360>>2];g[d+368>>2]=+g[b+364>>2];g[d+372>>2]=+g[b+368>>2];g[d+376>>2]=+g[b+372>>2];g[d+380>>2]=+g[b+376>>2];g[d+384>>2]=+g[b+380>>2];g[d+388>>2]=+g[b+384>>2];g[d+392>>2]=+g[b+388>>2];g[d+396>>2]=+g[b+392>>2];g[d+400>>2]=+g[b+396>>2];g[d+404>>2]=+g[b+400>>2];g[d+408>>2]=+g[b+404>>2];g[d+412>>2]=+g[b+408>>2];g[d+416>>2]=+g[b+412>>2];g[d+420>>2]=+g[b+416>>2];g[d+424>>2]=+g[b+420>>2];g[d+428>>2]=+g[b+424>>2];g[d+432>>2]=+g[b+428>>2];g[d+436>>2]=+g[b+432>>2];g[d+444>>2]=+g[b+436>>2];g[d+448>>2]=+g[b+440>>2];c[d+476>>2]=a[b+444|0]&1;g[d+452>>2]=+g[b+448>>2];g[d+456>>2]=+g[b+452>>2];g[d+460>>2]=+g[b+456>>2];g[d+464>>2]=+g[b+460>>2];g[d+468>>2]=+g[b+464>>2];g[d+472>>2]=+g[b+468>>2];return 17400}function ap8(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[(c[b>>2]|0)+16>>2]|0;e=cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0;f=cS[d&511](b,e,1)|0;e=cS[c[(c[a>>2]|0)+20>>2]&511](a,c[f+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,f,e,1497645650,a);return}function ap9(a,b){a=a|0;b=b|0;c[a+192>>2]=b;c[a+200>>2]=b;return}function aqa(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;d=c+84|0;e=+g[d>>2];f=c+16|0;h=+g[f>>2];i=a+504|0;j=c+20|0;k=+g[j>>2];l=a+508|0;m=c+24|0;n=+g[m>>2];o=a+512|0;p=a+520|0;q=a+524|0;r=a+528|0;s=b+504|0;t=b+508|0;u=b+512|0;v=b+520|0;w=b+524|0;x=b+528|0;y=+g[c+92>>2];z=+g[c+116>>2]-e*+g[c+120>>2]-(h*+g[i>>2]+k*+g[l>>2]+n*+g[o>>2]+(+g[c>>2]*+g[p>>2]+ +g[c+4>>2]*+g[q>>2]+ +g[c+8>>2]*+g[r>>2]))*y-y*(+g[c+32>>2]*+g[v>>2]+ +g[c+36>>2]*+g[w>>2]+ +g[c+40>>2]*+g[x>>2]-(h*+g[s>>2]+k*+g[t>>2]+n*+g[u>>2]));y=e+z;A=+g[c+124>>2];do{if(y>2]=A;B=A-e}else{C=+g[c+128>>2];if(y>C){g[d>>2]=C;B=C-e;break}else{g[d>>2]=y;B=z;break}}}while(0);if(+g[a+336>>2]!=0.0){z=B*+g[a+556>>2]*k;k=B*+g[a+560>>2]*n;g[i>>2]=+g[i>>2]+B*+g[a+552>>2]*h;g[l>>2]=z+ +g[l>>2];g[o>>2]=k+ +g[o>>2];k=B*+g[a+540>>2]*+g[c+52>>2];z=B*+g[a+544>>2]*+g[c+56>>2];g[p>>2]=B*+g[a+536>>2]*+g[c+48>>2]+ +g[p>>2];g[q>>2]=k+ +g[q>>2];g[r>>2]=z+ +g[r>>2]}if(+g[b+336>>2]==0.0){return}z=B*+g[b+556>>2]*(-0.0- +g[j>>2]);k=B*+g[b+560>>2]*(-0.0- +g[m>>2]);g[s>>2]=+g[s>>2]+B*+g[b+552>>2]*(-0.0- +g[f>>2]);g[t>>2]=z+ +g[t>>2];g[u>>2]=k+ +g[u>>2];k=B*+g[b+540>>2]*+g[c+68>>2];z=B*+g[b+544>>2]*+g[c+72>>2];g[v>>2]=B*+g[b+536>>2]*+g[c+64>>2]+ +g[v>>2];g[w>>2]=k+ +g[w>>2];g[x>>2]=z+ +g[x>>2];return}function aqb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0.0,f=0,h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;d=c+84|0;e=+g[d>>2];f=c+16|0;h=+g[f>>2];i=a+504|0;j=c+20|0;k=+g[j>>2];l=a+508|0;m=c+24|0;n=+g[m>>2];o=a+512|0;p=a+520|0;q=a+524|0;r=a+528|0;s=b+504|0;t=b+508|0;u=b+512|0;v=b+520|0;w=b+524|0;x=b+528|0;y=+g[c+92>>2];z=+g[c+116>>2]-e*+g[c+120>>2]-(h*+g[i>>2]+k*+g[l>>2]+n*+g[o>>2]+(+g[c>>2]*+g[p>>2]+ +g[c+4>>2]*+g[q>>2]+ +g[c+8>>2]*+g[r>>2]))*y-y*(+g[c+32>>2]*+g[v>>2]+ +g[c+36>>2]*+g[w>>2]+ +g[c+40>>2]*+g[x>>2]-(h*+g[s>>2]+k*+g[t>>2]+n*+g[u>>2]));y=e+z;A=+g[c+124>>2];if(y>2]=C;if(+g[a+336>>2]!=0.0){C=B*+g[a+556>>2]*k;k=B*+g[a+560>>2]*n;g[i>>2]=+g[i>>2]+B*+g[a+552>>2]*h;g[l>>2]=C+ +g[l>>2];g[o>>2]=k+ +g[o>>2];k=B*+g[a+540>>2]*+g[c+52>>2];C=B*+g[a+544>>2]*+g[c+56>>2];g[p>>2]=B*+g[a+536>>2]*+g[c+48>>2]+ +g[p>>2];g[q>>2]=k+ +g[q>>2];g[r>>2]=C+ +g[r>>2]}if(+g[b+336>>2]==0.0){return}C=B*+g[b+556>>2]*(-0.0- +g[j>>2]);k=B*+g[b+560>>2]*(-0.0- +g[m>>2]);g[s>>2]=+g[s>>2]+B*+g[b+552>>2]*(-0.0- +g[f>>2]);g[t>>2]=C+ +g[t>>2];g[u>>2]=k+ +g[u>>2];k=B*+g[b+540>>2]*+g[c+68>>2];C=B*+g[b+544>>2]*+g[c+72>>2];g[v>>2]=B*+g[b+536>>2]*+g[c+64>>2]+ +g[v>>2];g[w>>2]=k+ +g[w>>2];g[x>>2]=C+ +g[x>>2];return}function aqc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,h=0.0,i=0,j=0.0,k=0,l=0,m=0.0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0;e=+g[d+132>>2];if(e==0.0){return}c[9794]=(c[9794]|0)+1;f=d+80|0;h=+g[f>>2];i=d+16|0;j=+g[i>>2];k=a+568|0;l=d+20|0;m=+g[l>>2];n=a+572|0;o=d+24|0;p=+g[o>>2];q=a+576|0;r=a+584|0;s=a+588|0;t=a+592|0;u=b+568|0;v=b+572|0;w=b+576|0;x=b+584|0;y=b+588|0;z=b+592|0;A=+g[d+92>>2];B=e-h*+g[d+120>>2]-(j*+g[k>>2]+m*+g[n>>2]+p*+g[q>>2]+(+g[d>>2]*+g[r>>2]+ +g[d+4>>2]*+g[s>>2]+ +g[d+8>>2]*+g[t>>2]))*A-A*(+g[d+32>>2]*+g[x>>2]+ +g[d+36>>2]*+g[y>>2]+ +g[d+40>>2]*+g[z>>2]-(j*+g[u>>2]+m*+g[v>>2]+p*+g[w>>2]));A=h+B;e=+g[d+124>>2];if(A>2]=D;if(+g[a+336>>2]!=0.0){D=C*+g[a+556>>2]*m;m=C*+g[a+560>>2]*p;g[k>>2]=+g[k>>2]+C*+g[a+552>>2]*j;g[n>>2]=D+ +g[n>>2];g[q>>2]=m+ +g[q>>2];m=C*+g[a+540>>2]*+g[d+52>>2];D=C*+g[a+544>>2]*+g[d+56>>2];g[r>>2]=C*+g[a+536>>2]*+g[d+48>>2]+ +g[r>>2];g[s>>2]=m+ +g[s>>2];g[t>>2]=D+ +g[t>>2]}if(+g[b+336>>2]==0.0){return}D=C*+g[b+556>>2]*(-0.0- +g[l>>2]);m=C*+g[b+560>>2]*(-0.0- +g[o>>2]);g[u>>2]=+g[u>>2]+C*+g[b+552>>2]*(-0.0- +g[i>>2]);g[v>>2]=D+ +g[v>>2];g[w>>2]=m+ +g[w>>2];m=C*+g[b+540>>2]*+g[d+68>>2];D=C*+g[b+544>>2]*+g[d+72>>2];g[x>>2]=C*+g[b+536>>2]*+g[d+64>>2]+ +g[x>>2];g[y>>2]=m+ +g[y>>2];g[z>>2]=D+ +g[z>>2];return}function aqd(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=26048;d=b+480|0;e=b+488|0;f=c[e>>2]|0;g=b+492|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+484>>2]=0}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+484>>2]=0}c[9804]=(c[9804]|0)+1;aDB(c[b-608+604>>2]|0);return}function aqe(a){a=a|0;aqf(a);if((a|0)==0){return}aDB(a);return}function aqf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=19632;d=b+108|0;e=b+116|0;f=c[e>>2]|0;g=b+120|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-8+4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+112>>2]=0;d=b+88|0;e=b+96|0;g=c[e>>2]|0;f=b+100|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+92>>2]=0;d=b+68|0;e=b+76|0;f=c[e>>2]|0;g=b+80|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+72>>2]=0;d=b+48|0;e=b+56|0;g=c[e>>2]|0;f=b+60|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-136+132>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+52>>2]=0;d=b+28|0;e=b+36|0;f=c[e>>2]|0;g=b+40|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-136+132>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+32>>2]=0;d=b+8|0;e=b+16|0;g=c[e>>2]|0;f=b+20|0;if((g|0)==0){a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-136+132>>2]|0)}c[e>>2]=0;a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}function aqg(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,h=0.0,i=0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;if((a|0)==0){return}if((c[a+180>>2]|0)==0){return}d=+g[a+4>>2];e=b|0;f=+g[e>>2];h=+g[a+20>>2];i=b+4|0;j=+g[i>>2];k=+g[a+36>>2];l=b+8|0;m=+g[l>>2];n=+g[a+8>>2];o=+g[a+24>>2];p=+g[a+40>>2];q=+g[a+12>>2];r=+g[a+28>>2];s=+g[a+44>>2];t=(d*f+h*j+k*m)*+g[a+164>>2];u=(f*n+j*o+m*p)*+g[a+168>>2];v=(f*q+j*r+m*s)*+g[a+172>>2];g[e>>2]=d*t+n*u+q*v;g[i>>2]=h*t+o*u+r*v;g[l>>2]=k*t+p*u+s*v;g[b+12>>2]=0.0;return}function aqh(b,d,e,f,h,j,k,l,m,n,p){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=+m;n=+n;p=+p;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0,ax=0,ay=0,az=0;q=i;i=i+64|0;r=q|0;s=q+16|0;t=q+32|0;u=q+48|0;v=b+48|0;w=c[v>>2]|0;x=b+52|0;do{if((w|0)==(c[x>>2]|0)){y=(w|0)==0?1:w<<1;if((w|0)>=(y|0)){z=w;break}if((y|0)==0){A=0;B=w}else{c[9806]=(c[9806]|0)+1;C=aDx((y*136|0|4)+15|0)|0;if((C|0)==0){D=0}else{E=-(C+4|0)&15;c[C+E>>2]=C;D=C+(E+4)|0}A=D;B=c[v>>2]|0}E=b+56|0;if((B|0)>0){C=0;do{F=A+(C*136|0)|0;G=(c[E>>2]|0)+(C*136|0)|0;aDC(F|0,G|0,136)|0;C=C+1|0;}while((C|0)<(B|0))}C=c[E>>2]|0;G=b+60|0;if((C|0)!=0){if((a[G]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[C-136+132>>2]|0)}c[E>>2]=0}a[G]=1;c[E>>2]=A;c[x>>2]=y;z=c[v>>2]|0}else{z=w}}while(0);c[v>>2]=z+1;z=c[b+56>>2]|0;c[z+(w*136|0)+100>>2]=e;if((c[k+232>>2]&2|0)==0){H=0}else{H=k}if((c[l+232>>2]&2|0)==0){I=0}else{I=l}l=z+(w*136|0)+16|0;k=l;e=d;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];e=(H|0)!=0;if(e){J=H}else{k=r;b=s;do{if((a[42984]|0)==0){if((b1(42984)|0)==0){break}aDD(k|0,0,16);ap$(39728,0.0,0,0,r);bG(198,39728,o|0)|0}}while(0);aDD(b|0,0,16);apV(39728,0.0,s);J=39728}c[z+(w*136|0)+104>>2]=J;J=(I|0)!=0;if(J){K=I}else{s=t;b=u;do{if((a[42984]|0)==0){if((b1(42984)|0)==0){break}aDD(s|0,0,16);ap$(39728,0.0,0,0,t);bG(198,39728,o|0)|0}}while(0);aDD(b|0,0,16);apV(39728,0.0,u);K=39728}c[z+(w*136|0)+108>>2]=K;g[z+(w*136|0)+88>>2]=+g[f+84>>2];c[z+(w*136|0)+112>>2]=0;g[z+(w*136|0)+84>>2]=0.0;g[z+(w*136|0)+80>>2]=0.0;f=h+4|0;L=+g[f>>2];M=+g[z+(w*136|0)+24>>2];K=h+8|0;N=+g[K>>2];O=+g[z+(w*136|0)+20>>2];P=L*M-N*O;Q=+g[l>>2];l=h|0;R=+g[l>>2];S=N*Q-M*R;N=O*R-L*Q;g[z+(w*136|0)>>2]=P;g[z+(w*136|0)+4>>2]=S;g[z+(w*136|0)+8>>2]=N;g[z+(w*136|0)+12>>2]=0.0;if(e){T=(P*+g[H+256>>2]+S*+g[H+260>>2]+N*+g[H+264>>2])*+g[H+536>>2];U=(P*+g[H+272>>2]+S*+g[H+276>>2]+N*+g[H+280>>2])*+g[H+540>>2];V=(P*+g[H+288>>2]+S*+g[H+292>>2]+N*+g[H+296>>2])*+g[H+544>>2]}else{T=0.0;U=0.0;V=0.0}g[z+(w*136|0)+48>>2]=T;g[z+(w*136|0)+52>>2]=U;g[z+(w*136|0)+56>>2]=V;g[z+(w*136|0)+60>>2]=0.0;L=-0.0-Q;R=-0.0-O;W=-0.0-M;h=j+4|0;X=+g[h>>2];u=j+8|0;Y=+g[u>>2];Z=X*W-Y*R;b=j|0;_=+g[b>>2];$=Y*L-_*W;W=_*R-X*L;g[z+(w*136|0)+32>>2]=Z;g[z+(w*136|0)+36>>2]=$;g[z+(w*136|0)+40>>2]=W;g[z+(w*136|0)+44>>2]=0.0;if(J){aa=(Z*+g[I+256>>2]+$*+g[I+260>>2]+W*+g[I+264>>2])*+g[I+536>>2];ab=(Z*+g[I+272>>2]+$*+g[I+276>>2]+W*+g[I+280>>2])*+g[I+540>>2];ac=(Z*+g[I+288>>2]+$*+g[I+292>>2]+W*+g[I+296>>2])*+g[I+544>>2]}else{aa=0.0;ab=0.0;ac=0.0}g[z+(w*136|0)+64>>2]=aa;g[z+(w*136|0)+68>>2]=ab;g[z+(w*136|0)+72>>2]=ac;g[z+(w*136|0)+76>>2]=0.0;if(e){L=+g[K>>2];X=+g[f>>2];R=+g[l>>2];ad=+g[H+336>>2]+((U*L-V*X)*+g[d>>2]+(V*R-L*T)*+g[d+4>>2]+(X*T-U*R)*+g[d+8>>2])}else{ad=0.0}if(J){R=-0.0-aa;aa=-0.0-ab;ab=-0.0-ac;ac=+g[u>>2];U=+g[h>>2];T=+g[b>>2];ae=+g[I+336>>2]+((ac*aa-U*ab)*+g[d>>2]+(T*ab-ac*R)*+g[d+4>>2]+(U*R-T*aa)*+g[d+8>>2])}else{ae=0.0}aa=m/(ad+ae);g[z+(w*136|0)+92>>2]=aa;if(e){af=+g[H+320>>2];ag=+g[H+324>>2];ah=+g[H+328>>2];ai=+g[H+304>>2]*Q+ +g[H+308>>2]*O+ +g[H+312>>2]*M}else{af=0.0;ag=0.0;ah=0.0;ai=Q*0.0+O*0.0+M*0.0}ae=ai+(af*P+ag*S+ah*N);if(J){aj=+g[I+320>>2];ak=+g[I+324>>2];al=+g[I+328>>2];am=+g[I+304>>2]*Q+ +g[I+308>>2]*O+ +g[I+312>>2]*M;an=aj*Z;ao=ak*$;ap=an+ao;aq=al*W;ar=ap+aq;as=ar-am;at=ae+as;au=n-at;av=aa*au;aw=z+(w*136|0)+116|0;g[aw>>2]=av;ax=z+(w*136|0)+120|0;g[ax>>2]=p;ay=z+(w*136|0)+124|0;g[ay>>2]=0.0;az=z+(w*136|0)+128|0;g[az>>2]=1.0e10;i=q;return}else{aj=0.0;ak=0.0;al=0.0;am=Q*0.0+O*0.0+M*0.0;an=aj*Z;ao=ak*$;ap=an+ao;aq=al*W;ar=ap+aq;as=ar-am;at=ae+as;au=n-at;av=aa*au;aw=z+(w*136|0)+116|0;g[aw>>2]=av;ax=z+(w*136|0)+120|0;g[ax>>2]=p;ay=z+(w*136|0)+124|0;g[ay>>2]=0.0;az=z+(w*136|0)+128|0;g[az>>2]=1.0e10;i=q;return}}function aqi(b,d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0.0,ax=0.0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0,bo=0.0,bp=0.0,bq=0.0,br=0.0,bs=0.0,bt=0.0,bu=0.0,bv=0.0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0.0,bD=0.0,bE=0.0,bF=0.0,bH=0.0,bI=0.0,bJ=0.0,bK=0.0,bL=0.0,bM=0.0,bN=0.0,bO=0.0,bP=0.0,bQ=0.0,bR=0.0,bS=0.0,bT=0.0,bU=0.0,bV=0.0,bW=0,bX=0,bY=0,bZ=0,b_=0,b$=0,b0=0,b2=0,b4=0,b5=0,b6=0;n=i;i=i+304|0;m=n|0;p=n+8|0;q=n+24|0;r=n+40|0;s=n+56|0;t=n+72|0;u=n+88|0;v=n+112|0;w=n+248|0;aDo(17152);do{if((k|0)!=(-h|0)){x=l+44|0;y=(e|0)>0;do{if((c[x>>2]|0)==0){if(y){z=0}else{break}do{A=c[d+(z<<2)>>2]|0;if(!((c[A+232>>2]&2|0)==0|(A|0)==0)){aDD(A+504|0,0,32)}z=z+1|0;}while((z|0)<(e|0))}else{if(y){B=0}else{break}do{A=c[d+(B<<2)>>2]|0;if(!((c[A+232>>2]&2|0)==0|(A|0)==0)){aDD(A+504|0,0,32);aDD(A+568|0,0,32)}B=B+1|0;}while((B|0)<(e|0))}}while(0);y=(k|0)>0;if(y){A=0;do{C=c[j+(A<<2)>>2]|0;ct[c[(c[C>>2]|0)+8>>2]&2047](C);g[C+32>>2]=0.0;A=A+1|0;}while((A|0)<(k|0))}A=b+108|0;C=c[A>>2]|0;if((C|0)<(k|0)){D=b+112|0;if((c[D>>2]|0)<(k|0)){if((k|0)==0){E=0;F=C}else{c[9806]=(c[9806]|0)+1;G=aDx((k<<3|4)+15|0)|0;if((G|0)==0){H=0}else{I=-(G+4|0)&15;c[G+I>>2]=G;H=G+(I+4)|0}E=H;F=c[A>>2]|0}I=b+116|0;if((F|0)>0){G=0;do{J=E+(G<<3)|0;if((J|0)!=0){K=(c[I>>2]|0)+(G<<3)|0;L=J;J=c[K+4>>2]|0;c[L>>2]=c[K>>2];c[L+4>>2]=J}G=G+1|0;}while((G|0)<(F|0))}G=c[I>>2]|0;J=b+120|0;if((G|0)!=0){if((a[J]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[G-8+4>>2]|0)}c[I>>2]=0}a[J]=1;c[I>>2]=E;c[D>>2]=k;M=I}else{M=b+116|0}J=C;do{G=(c[M>>2]|0)+(J<<3)|0;if((G|0)!=0){L=G;c[L>>2]=0;c[L+4>>2]=0}J=J+1|0;}while((J|0)<(k|0))}c[A>>2]=k;if(y){J=b+116|0;C=0;I=0;while(1){D=c[J>>2]|0;L=D+(C<<3)|0;G=c[j+(C<<2)>>2]|0;if((a[G+20|0]&1)==0){c[L>>2]=0;c[D+(C<<3)+4>>2]=0;N=0}else{cv[c[(c[G>>2]|0)+16>>2]&2047](G,L);N=c[L>>2]|0}L=N+I|0;G=C+1|0;if((G|0)<(k|0)){C=G;I=L}else{O=L;break}}}else{O=0}I=v;aDD(I|0,0,136);C=b+28|0;J=c[C>>2]|0;if((J|0)<(O|0)){A=b+32|0;if((c[A>>2]|0)<(O|0)){if((O|0)==0){R=0;S=J}else{c[9806]=(c[9806]|0)+1;L=aDx((O*136|0|4)+15|0)|0;if((L|0)==0){T=0}else{G=-(L+4|0)&15;c[L+G>>2]=L;T=L+(G+4)|0}R=T;S=c[C>>2]|0}G=b+36|0;if((S|0)>0){L=0;do{D=R+(L*136|0)|0;K=(c[G>>2]|0)+(L*136|0)|0;aDC(D|0,K|0,136)|0;L=L+1|0;}while((L|0)<(S|0))}L=c[G>>2]|0;K=b+40|0;if((L|0)!=0){if((a[K]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[L-136+132>>2]|0)}c[G>>2]=0}a[K]=1;c[G>>2]=R;c[A>>2]=O;U=G}else{U=b+36|0}K=J;do{L=(c[U>>2]|0)+(K*136|0)|0;aDC(L|0,I|0,136)|0;K=K+1|0;}while((K|0)<(O|0))}c[C>>2]=O;if(y){K=b+116|0;I=b+36|0;J=l+12|0;G=w|0;A=l+32|0;L=w+4|0;D=w+8|0;V=w+12|0;W=w+16|0;X=w+20|0;Y=w+24|0;Z=w+28|0;_=l+40|0;$=l+4|0;aa=w+52|0;ab=w+32|0;ac=w+36|0;ad=w+40|0;ae=l+20|0;af=w+48|0;ag=0;ah=0;ai=c[K>>2]|0;while(1){aj=ai+(ah<<3)|0;ak=c[aj>>2]|0;if((ak|0)==0){al=ai;am=0}else{an=c[I>>2]|0;ao=j+(ah<<2)|0;ap=c[ao>>2]|0;aq=ap+24|0;ar=c[aq>>2]|0;as=ap+28|0;at=c[as>>2]|0;if((ak|0)>0){ak=0;do{au=ak+ag|0;aDD(an+(au*136|0)|0,0,136);g[an+(au*136|0)+124>>2]=-3.4028234663852886e+38;g[an+(au*136|0)+128>>2]=3.4028234663852886e+38;g[an+(au*136|0)+84>>2]=0.0;g[an+(au*136|0)+80>>2]=0.0;c[an+(au*136|0)+104>>2]=ar;c[an+(au*136|0)+108>>2]=at;ak=ak+1|0;}while((ak|0)<(c[aj>>2]|0))}aDD(ar+504|0,0,32);aDD(at+504|0,0,32);g[G>>2]=1.0/+g[J>>2];g[L>>2]=+g[A>>2];c[D>>2]=an+(ag*136|0)+16;c[V>>2]=an+(ag*136|0);c[W>>2]=0;c[X>>2]=an+(ag*136|0)+32;c[Y>>2]=34;c[Z>>2]=an+(ag*136|0)+116;ak=an+(ag*136|0)+120|0;g[ak>>2]=+g[_>>2];g[aa>>2]=+g[$>>2];c[ab>>2]=ak;ak=an+(ag*136|0)+124|0;c[ac>>2]=ak;au=an+(ag*136|0)+128|0;c[ad>>2]=au;c[af>>2]=c[ae>>2];av=c[ao>>2]|0;cv[c[(c[av>>2]|0)+20>>2]&2047](av,w);aw=+g[(c[ao>>2]|0)+16>>2];if(+g[au>>2]>aw){g[au>>2]=aw;ax=+g[(c[ao>>2]|0)+16>>2]}else{ax=aw}aw=-0.0-ax;if(+g[ak>>2]>2]=aw}if((c[aj>>2]|0)>0){ak=ap;au=ar+336|0;av=ar+256|0;ay=ar+260|0;az=ar+264|0;aA=ar+272|0;aB=ar+276|0;aC=ar+280|0;aD=ar+288|0;aE=ar+292|0;aF=ar+296|0;aG=at+336|0;aH=at+256|0;aI=at+260|0;aJ=at+264|0;aK=at+272|0;aL=at+276|0;aM=at+280|0;aN=at+288|0;aO=at+292|0;aP=at+296|0;aQ=ar+304|0;aR=ar+308|0;aS=ar+312|0;aT=ar+320|0;aU=ar+324|0;aV=ar+328|0;aW=at+304|0;aX=at+308|0;aY=at+312|0;aZ=at+320|0;a_=at+324|0;a$=at+328|0;a0=0;do{a1=a0+ag|0;c[an+(a1*136|0)+112>>2]=ak;a2=c[aq>>2]|0;aw=+g[an+(a1*136|0)>>2];a3=+g[an+(a1*136|0)+4>>2];a4=+g[an+(a1*136|0)+8>>2];a5=(aw*+g[a2+272>>2]+a3*+g[a2+276>>2]+a4*+g[a2+280>>2])*+g[a2+540>>2];a6=(aw*+g[a2+288>>2]+a3*+g[a2+292>>2]+a4*+g[a2+296>>2])*+g[a2+544>>2];g[an+(a1*136|0)+48>>2]=(+g[a2+256>>2]*aw+ +g[a2+260>>2]*a3+ +g[a2+264>>2]*a4)*+g[a2+536>>2];g[an+(a1*136|0)+52>>2]=a5;g[an+(a1*136|0)+56>>2]=a6;g[an+(a1*136|0)+60>>2]=0.0;a2=c[as>>2]|0;a6=+g[an+(a1*136|0)+32>>2];a5=+g[an+(a1*136|0)+36>>2];a7=+g[an+(a1*136|0)+40>>2];a8=(a6*+g[a2+272>>2]+a5*+g[a2+276>>2]+a7*+g[a2+280>>2])*+g[a2+540>>2];a9=(a6*+g[a2+288>>2]+a5*+g[a2+292>>2]+a7*+g[a2+296>>2])*+g[a2+544>>2];g[an+(a1*136|0)+64>>2]=(+g[a2+256>>2]*a6+ +g[a2+260>>2]*a5+ +g[a2+264>>2]*a7)*+g[a2+536>>2];g[an+(a1*136|0)+68>>2]=a8;g[an+(a1*136|0)+72>>2]=a9;g[an+(a1*136|0)+76>>2]=0.0;a9=+g[au>>2];a8=+g[an+(a1*136|0)+16>>2];ba=+g[an+(a1*136|0)+20>>2];bb=+g[an+(a1*136|0)+24>>2];bc=+g[aG>>2];bd=1.0/(a8*a9*a8+ba*a9*ba+bb*a9*bb+(aw*(+g[av>>2]*aw+ +g[ay>>2]*a3+ +g[az>>2]*a4)+a3*(aw*+g[aA>>2]+a3*+g[aB>>2]+a4*+g[aC>>2])+a4*(aw*+g[aD>>2]+a3*+g[aE>>2]+a4*+g[aF>>2]))+(bb*bb*bc+(a8*a8*bc+ba*ba*bc))+(a6*(+g[aH>>2]*a6+ +g[aI>>2]*a5+ +g[aJ>>2]*a7)+a5*(a6*+g[aK>>2]+a5*+g[aL>>2]+a7*+g[aM>>2])+a7*(a6*+g[aN>>2]+a5*+g[aO>>2]+a7*+g[aP>>2])));g[an+(a1*136|0)+92>>2]=bd;a2=an+(a1*136|0)+116|0;g[a2>>2]=bd*+g[a2>>2]+bd*(0.0- +g[aa>>2]*(a8*+g[aQ>>2]+ba*+g[aR>>2]+bb*+g[aS>>2]+(aw*+g[aT>>2]+a3*+g[aU>>2]+a4*+g[aV>>2])+(a6*+g[aZ>>2]+a5*+g[a_>>2]+a7*+g[a$>>2]-(a8*+g[aW>>2]+ba*+g[aX>>2]+bb*+g[aY>>2]))));g[an+(a1*136|0)+84>>2]=0.0;a0=a0+1|0;}while((a0|0)<(c[aj>>2]|0))}aj=c[K>>2]|0;al=aj;am=c[aj+(ah<<3)>>2]|0}aj=ah+1|0;if((aj|0)<(k|0)){ag=am+ag|0;ah=aj;ai=al}else{break}}}if((h|0)>0){ai=b+8|0;ah=b+12|0;ag=b+16|0;K=b+20|0;aa=r;ae=s;af=p;ad=q;ac=b+48|0;ab=l+60|0;$=t|0;_=t+4|0;Z=t+8|0;Y=t+12|0;X=u|0;W=u+4|0;V=u+8|0;D=u+12|0;A=l+52|0;L=l+64|0;J=l+12|0;G=b+56|0;I=l+56|0;y=l+48|0;C=l+32|0;aj=0;while(1){a0=c[f+(aj<<2)>>2]|0;an=c[a0+1108>>2]|0;aY=an;aX=c[a0+1112>>2]|0;aW=aX;a$=an+232|0;if((c[a$>>2]&2|0)==0){be=0}else{be=an}a_=aX+232|0;if((c[a_>>2]&2|0)==0){bf=0}else{bf=aX}if((be|0)==0){bg=4731}else{if(+g[be+336>>2]!=0.0){bg=4733}else{bg=4731}}do{if((bg|0)==4731){bg=0;if((bf|0)==0){break}if(+g[bf+336>>2]!=0.0){bg=4733}}}while(0);do{if((bg|0)==4733){bg=0;aZ=a0+1116|0;aV=c[aZ>>2]|0;if((aV|0)<=0){break}aU=a0+1124|0;aT=aX;aS=an;aR=an+52|0;aQ=an+56|0;aP=an+60|0;aO=aX+52|0;aN=aX+56|0;aM=aX+60|0;aL=0;aK=aV;while(1){aV=a0+4+(aL*276|0)|0;aJ=a0+4+(aL*276|0)+80|0;if(+g[aJ>>2]>+g[aU>>2]){bh=aK}else{aI=c[ai>>2]|0;do{if((aI|0)==(c[ah>>2]|0)){aH=(aI|0)==0?1:aI<<1;if((aI|0)>=(aH|0)){bi=aI;break}if((aH|0)==0){bj=0;bk=aI}else{c[9806]=(c[9806]|0)+1;aF=aDx((aH*136|0|4)+15|0)|0;if((aF|0)==0){bl=0}else{aE=-(aF+4|0)&15;c[aF+aE>>2]=aF;bl=aF+(aE+4)|0}bj=bl;bk=c[ai>>2]|0}if((bk|0)>0){aE=0;do{aF=bj+(aE*136|0)|0;aD=(c[ag>>2]|0)+(aE*136|0)|0;aDC(aF|0,aD|0,136)|0;aE=aE+1|0;}while((aE|0)<(bk|0))}aE=c[ag>>2]|0;if((aE|0)!=0){if((a[K]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aE-136+132>>2]|0)}c[ag>>2]=0}a[K]=1;c[ag>>2]=bj;c[ah>>2]=aH;bi=c[ai>>2]|0}else{bi=aI}}while(0);c[ai>>2]=bi+1;aE=c[ag>>2]|0;aD=(c[a$>>2]&2|0)==0?0:aS;aF=(c[a_>>2]&2|0)==0?0:aT;aC=(aD|0)==0;if(aC){do{if((a[42984]|0)==0){if((b1(42984)|0)==0){break}aDD(aa|0,0,16);ap$(39728,0.0,0,0,r);bG(198,39728,o|0)|0}}while(0);aDD(ae|0,0,16);apV(39728,0.0,s);bm=39728}else{bm=aD}c[aE+(aI*136|0)+104>>2]=bm;aB=(aF|0)==0;if(aB){do{if((a[42984]|0)==0){if((b1(42984)|0)==0){break}aDD(af|0,0,16);ap$(39728,0.0,0,0,p);bG(198,39728,o|0)|0}}while(0);aDD(ad|0,0,16);apV(39728,0.0,q);bn=39728}else{bn=aF}c[aE+(aI*136|0)+108>>2]=bn;c[aE+(aI*136|0)+112>>2]=aV;aA=(c[a$>>2]&2|0)==0?0:aS;az=(c[a_>>2]&2|0)==0?0:aT;bb=+g[a0+4+(aL*276|0)+48>>2]- +g[aR>>2];ba=+g[a0+4+(aL*276|0)+52>>2]- +g[aQ>>2];a8=+g[a0+4+(aL*276|0)+56>>2]- +g[aP>>2];g[$>>2]=bb;g[_>>2]=ba;g[Z>>2]=a8;g[Y>>2]=0.0;a7=+g[a0+4+(aL*276|0)+32>>2]- +g[aO>>2];a5=+g[a0+4+(aL*276|0)+36>>2]- +g[aN>>2];a6=+g[a0+4+(aL*276|0)+40>>2]- +g[aM>>2];g[X>>2]=a7;g[W>>2]=a5;g[V>>2]=a6;g[D>>2]=0.0;ay=a0+4+(aL*276|0)+64|0;av=a0+4+(aL*276|0)+72|0;a4=+g[av>>2];aG=a0+4+(aL*276|0)+68|0;a3=+g[aG>>2];aw=ba*a4-a8*a3;au=ay|0;bd=+g[au>>2];bc=a8*bd-a4*bb;a4=a3*bb-ba*bd;as=(aA|0)!=0;if(as){bo=(aw*+g[aA+256>>2]+bc*+g[aA+260>>2]+a4*+g[aA+264>>2])*+g[aA+536>>2];bp=(aw*+g[aA+272>>2]+bc*+g[aA+276>>2]+a4*+g[aA+280>>2])*+g[aA+540>>2];bq=(aw*+g[aA+288>>2]+bc*+g[aA+292>>2]+a4*+g[aA+296>>2])*+g[aA+544>>2]}else{bo=0.0;bp=0.0;bq=0.0}aq=aE+(aI*136|0)+48|0;g[aq>>2]=bo;ak=aE+(aI*136|0)+52|0;g[ak>>2]=bp;at=aE+(aI*136|0)+56|0;g[at>>2]=bq;g[aE+(aI*136|0)+60>>2]=0.0;a4=+g[av>>2];bc=+g[aG>>2];aw=+g[au>>2];ar=(az|0)!=0;if(ar){bd=-0.0-(a5*a4-a6*bc);a3=-0.0-(a6*aw-a4*a7);a4=-0.0-(bc*a7-a5*aw);br=(+g[az+256>>2]*bd+ +g[az+260>>2]*a3+ +g[az+264>>2]*a4)*+g[az+536>>2];bs=(+g[az+272>>2]*bd+ +g[az+276>>2]*a3+ +g[az+280>>2]*a4)*+g[az+540>>2];bt=(+g[az+288>>2]*bd+ +g[az+292>>2]*a3+ +g[az+296>>2]*a4)*+g[az+544>>2]}else{br=0.0;bs=0.0;bt=0.0}ap=aE+(aI*136|0)+64|0;g[ap>>2]=br;ao=aE+(aI*136|0)+68|0;g[ao>>2]=bs;a1=aE+(aI*136|0)+72|0;g[a1>>2]=bt;g[aE+(aI*136|0)+76>>2]=0.0;if(as){bu=+g[aA+336>>2]+((bp*a8-bq*ba)*+g[au>>2]+(bq*bb-a8*bo)*+g[aG>>2]+(ba*bo-bp*bb)*+g[av>>2])}else{bu=0.0}if(ar){a4=-0.0-br;a3=-0.0-bs;bd=-0.0-bt;bv=+g[az+336>>2]+((a6*a3-a5*bd)*+g[au>>2]+(a7*bd-a6*a4)*+g[aG>>2]+(a5*a4-a7*a3)*+g[av>>2])}else{bv=0.0}a2=aE+(aI*136|0)+92|0;g[a2>>2]=1.0/(bu+bv);bw=aE+(aI*136|0)+16|0;bx=bw;by=ay;c[bx>>2]=c[by>>2];c[bx+4>>2]=c[by+4>>2];c[bx+8>>2]=c[by+8>>2];c[bx+12>>2]=c[by+12>>2];a3=+g[av>>2];a4=+g[aG>>2];bd=+g[au>>2];by=aE+(aI*136|0)|0;g[by>>2]=ba*a3-a8*a4;bx=aE+(aI*136|0)+4|0;g[bx>>2]=a8*bd-a3*bb;ay=aE+(aI*136|0)+8|0;g[ay>>2]=a4*bb-ba*bd;g[aE+(aI*136|0)+12>>2]=0.0;bd=-0.0- +g[au>>2];a4=-0.0- +g[aG>>2];a3=-0.0- +g[av>>2];bz=aE+(aI*136|0)+32|0;g[bz>>2]=a5*a3-a6*a4;bA=aE+(aI*136|0)+36|0;g[bA>>2]=a6*bd-a7*a3;bB=aE+(aI*136|0)+40|0;g[bB>>2]=a7*a4-a5*bd;g[aE+(aI*136|0)+44>>2]=0.0;if(as){bd=+g[aA+324>>2];a4=+g[aA+328>>2];a3=+g[aA+320>>2];bC=bd*a8-a4*ba+ +g[aA+304>>2];bD=+g[aA+308>>2]+(a4*bb-a8*a3);bE=ba*a3-bd*bb+ +g[aA+312>>2]}else{bC=0.0;bD=0.0;bE=0.0}if(ar){bb=+g[az+324>>2];bd=+g[az+328>>2];a3=+g[az+320>>2];bF=bb*a6-bd*a5+ +g[az+304>>2];bH=+g[az+308>>2]+(bd*a7-a6*a3);bI=a5*a3-bb*a7+ +g[az+312>>2]}else{bF=0.0;bH=0.0;bI=0.0}a7=bC-bF;bb=bD-bH;a3=bE-bI;a5=+g[au>>2]*a7+ +g[aG>>2]*bb+ +g[av>>2]*a3;a6=+g[aJ>>2]+ +g[A>>2];g[aE+(aI*136|0)+88>>2]=+g[a0+4+(aL*276|0)+84>>2];do{if((c[a0+4+(aL*276|0)+144>>2]|0)>(c[L>>2]|0)){bJ=0.0}else{bd=+g[a0+4+(aL*276|0)+88>>2]*(-0.0-a5);if(bd>0.0){bJ=bd;break}bJ=0.0}}while(0);do{if((c[ab>>2]&4|0)==0){g[aE+(aI*136|0)+84>>2]=0.0}else{bd=+g[a0+4+(aL*276|0)+112>>2]*+g[I>>2];aJ=aE+(aI*136|0)+84|0;g[aJ>>2]=bd;do{if(as){ba=+g[aA+336>>2];if(ba==0.0){break}a8=bd*ba*+g[aE+(aI*136|0)+20>>2]*+g[aA+344>>2];a4=bd*ba*+g[aE+(aI*136|0)+24>>2]*+g[aA+348>>2];au=aA+504|0;g[au>>2]=+g[au>>2]+bd*ba*+g[bw>>2]*+g[aA+340>>2];au=aA+508|0;g[au>>2]=a8+ +g[au>>2];au=aA+512|0;g[au>>2]=a4+ +g[au>>2];a4=bd*+g[aA+540>>2]*+g[ak>>2];a8=bd*+g[aA+544>>2]*+g[at>>2];au=aA+520|0;g[au>>2]=bd*+g[aA+536>>2]*+g[aq>>2]+ +g[au>>2];au=aA+524|0;g[au>>2]=a4+ +g[au>>2];au=aA+528|0;g[au>>2]=a8+ +g[au>>2]}}while(0);if(!ar){break}bd=+g[az+336>>2];a8=-0.0- +g[aJ>>2];if(bd==0.0){break}a4=-0.0- +g[a1>>2];ba=-0.0- +g[ao>>2];aw=-0.0- +g[ap>>2];bc=bd*+g[aE+(aI*136|0)+20>>2]*+g[az+344>>2]*a8;a9=bd*+g[aE+(aI*136|0)+24>>2]*+g[az+348>>2]*a8;aH=az+504|0;g[aH>>2]=+g[aH>>2]+bd*+g[bw>>2]*+g[az+340>>2]*a8;aH=az+508|0;g[aH>>2]=bc+ +g[aH>>2];aH=az+512|0;g[aH>>2]=a9+ +g[aH>>2];a9=+g[az+540>>2]*a8*ba;ba=+g[az+544>>2]*a8*a4;aH=az+520|0;g[aH>>2]=+g[az+536>>2]*a8*aw+ +g[aH>>2];aH=az+524|0;g[aH>>2]=a9+ +g[aH>>2];aH=az+528|0;g[aH>>2]=ba+ +g[aH>>2]}}while(0);g[aE+(aI*136|0)+80>>2]=0.0;if(as){bK=+g[aA+304>>2];bL=+g[aA+308>>2];bM=+g[aA+312>>2]}else{bK=0.0;bL=0.0;bM=0.0}ba=+g[bw>>2];a9=+g[aE+(aI*136|0)+20>>2];aw=+g[aE+(aI*136|0)+24>>2];if(as){bN=+g[aA+320>>2];bO=+g[aA+324>>2];bP=+g[aA+328>>2]}else{bN=0.0;bO=0.0;bP=0.0}if(ar){bQ=+g[az+320>>2];bR=+g[az+324>>2];bS=+g[az+328>>2];bT=+g[az+304>>2]*ba+ +g[az+308>>2]*a9+ +g[az+312>>2]*aw}else{bQ=0.0;bR=0.0;bS=0.0;bT=ba*0.0+a9*0.0+aw*0.0}a8=bJ-(bK*ba+bL*a9+bM*aw+(bN*+g[by>>2]+bO*+g[bx>>2]+bP*+g[ay>>2])+(bQ*+g[bz>>2]+bR*+g[bA>>2]+bS*+g[bB>>2]-bT));if(a6>0.0){bU=a8-a6/+g[J>>2];bV=0.0}else{bU=a8;bV=+g[C>>2]*(-0.0-a6)/+g[J>>2]}a8=+g[a2>>2];aw=bV*a8;a9=bU*a8;do{if((c[x>>2]|0)==0){bg=4798}else{if(a6>+g[y>>2]){bg=4798;break}g[aE+(aI*136|0)+116>>2]=a9;g[aE+(aI*136|0)+132>>2]=aw}}while(0);if((bg|0)==4798){bg=0;g[aE+(aI*136|0)+116>>2]=aw+a9;g[aE+(aI*136|0)+132>>2]=0.0}g[aE+(aI*136|0)+120>>2]=0.0;g[aE+(aI*136|0)+124>>2]=0.0;g[aE+(aI*136|0)+128>>2]=1.0e10;a2=aE+(aI*136|0)+100|0;c[a2>>2]=c[ac>>2];do{if((c[ab>>2]&32|0)==0){bg=4802}else{if((a[a0+4+(aL*276|0)+116|0]&1)==0){bg=4802;break}aqh(b,a0+4+(aL*276|0)+148|0,aI,aV,t,u,aY,aW,1.0,+g[a0+4+(aL*276|0)+128>>2],+g[a0+4+(aL*276|0)+136>>2]);if((c[ab>>2]&16|0)==0){break}aqh(b,a0+4+(aL*276|0)+164|0,aI,aV,t,u,aY,aW,1.0,+g[a0+4+(aL*276|0)+132>>2],+g[a0+4+(aL*276|0)+140>>2])}}while(0);do{if((bg|0)==4802){bg=0;aE=a0+4+(aL*276|0)+148|0;a9=+g[a0+4+(aL*276|0)+64>>2];aw=+g[aG>>2];a6=+g[av>>2];a8=a7-a9*a5;ba=bb-a5*aw;a4=a3-a5*a6;g[a0+4+(aL*276|0)+148>>2]=a8;bB=a0+4+(aL*276|0)+152|0;g[bB>>2]=ba;bA=a0+4+(aL*276|0)+156|0;g[bA>>2]=a4;g[a0+4+(aL*276|0)+160>>2]=0.0;bz=aE|0;bc=a8*a8+ba*ba+a4*a4;if((c[ab>>2]&64|0)==0&bc>1.1920928955078125e-7){bd=1.0/+Q(+bc);bc=a8*bd;g[bz>>2]=bc;a8=bd*ba;g[bB>>2]=a8;ba=bd*a4;g[bA>>2]=ba;if((c[ab>>2]&16|0)!=0){ay=a0+4+(aL*276|0)+164|0;a4=a8*a6-ba*aw;bd=ba*a9-a6*bc;ba=aw*bc-a8*a9;g[a0+4+(aL*276|0)+164>>2]=a4;g[a0+4+(aL*276|0)+176>>2]=0.0;a8=1.0/+Q(+(a4*a4+bd*bd+ba*ba));g[ay>>2]=a4*a8;g[a0+4+(aL*276|0)+168>>2]=bd*a8;g[a0+4+(aL*276|0)+172>>2]=ba*a8;aqg(aY,ay);aqg(aW,ay);aqh(b,ay,aI,aV,t,u,aY,aW,1.0,0.0,0.0)}aqg(aY,aE);aqg(aW,aE);aqh(b,aE,aI,aV,t,u,aY,aW,1.0,0.0,0.0);a[a0+4+(aL*276|0)+116|0]=1;break}ay=a0+4+(aL*276|0)+164|0;if(+P(+a6)>.7071067690849304){a8=a6*a6+aw*aw;ba=1.0/+Q(+a8);g[bz>>2]=0.0;bd=ba*(-0.0-a6);g[bB>>2]=bd;a4=ba*aw;g[bA>>2]=a4;g[ay>>2]=a8*ba;g[a0+4+(aL*276|0)+168>>2]=a4*(-0.0-a9);g[a0+4+(aL*276|0)+172>>2]=a9*bd}else{bd=a9*a9+aw*aw;a4=1.0/+Q(+bd);ba=a4*(-0.0-aw);g[bz>>2]=ba;aw=a4*a9;g[bB>>2]=aw;g[bA>>2]=0.0;g[ay>>2]=aw*(-0.0-a6);g[a0+4+(aL*276|0)+168>>2]=a6*ba;g[a0+4+(aL*276|0)+172>>2]=bd*a4}if((c[ab>>2]&16|0)!=0){aqg(aY,ay);aqg(aW,ay);aqh(b,ay,aI,aV,t,u,aY,aW,1.0,0.0,0.0)}aqg(aY,aE);aqg(aW,aE);aqh(b,aE,aI,aV,t,u,aY,aW,1.0,0.0,0.0);a[a0+4+(aL*276|0)+116|0]=1}}while(0);aV=c[ab>>2]|0;aI=c[a2>>2]|0;av=c[G>>2]|0;do{if((aV&8|0)==0){g[av+(aI*136|0)+84>>2]=0.0;if((c[ab>>2]&16|0)==0){break}g[(c[G>>2]|0)+(((c[a2>>2]|0)+1|0)*136|0)+84>>2]=0.0}else{do{if((aV&4|0)==0){g[av+(aI*136|0)+84>>2]=0.0}else{a5=+g[a0+4+(aL*276|0)+120>>2]*+g[I>>2];aG=av+(aI*136|0)+84|0;g[aG>>2]=a5;do{if(!aC){a3=+g[aD+336>>2];if(a3==0.0){break}bb=a5*a3*+g[av+(aI*136|0)+20>>2]*+g[aD+344>>2];a7=a5*a3*+g[av+(aI*136|0)+24>>2]*+g[aD+348>>2];aE=aD+504|0;g[aE>>2]=+g[aE>>2]+a5*a3*+g[av+(aI*136|0)+16>>2]*+g[aD+340>>2];aE=aD+508|0;g[aE>>2]=bb+ +g[aE>>2];aE=aD+512|0;g[aE>>2]=a7+ +g[aE>>2];a7=a5*+g[aD+540>>2]*+g[av+(aI*136|0)+52>>2];bb=a5*+g[aD+544>>2]*+g[av+(aI*136|0)+56>>2];aE=aD+520|0;g[aE>>2]=a5*+g[aD+536>>2]*+g[av+(aI*136|0)+48>>2]+ +g[aE>>2];aE=aD+524|0;g[aE>>2]=a7+ +g[aE>>2];aE=aD+528|0;g[aE>>2]=bb+ +g[aE>>2]}}while(0);if(aB){break}a5=+g[aF+336>>2];bb=-0.0- +g[aG>>2];if(a5==0.0){break}a7=-0.0- +g[av+(aI*136|0)+72>>2];a3=-0.0- +g[av+(aI*136|0)+68>>2];a4=-0.0- +g[av+(aI*136|0)+64>>2];bd=a5*+g[av+(aI*136|0)+20>>2]*+g[aF+344>>2]*bb;ba=a5*+g[av+(aI*136|0)+24>>2]*+g[aF+348>>2]*bb;aE=aF+504|0;g[aE>>2]=+g[aE>>2]+a5*+g[av+(aI*136|0)+16>>2]*+g[aF+340>>2]*bb;aE=aF+508|0;g[aE>>2]=bd+ +g[aE>>2];aE=aF+512|0;g[aE>>2]=ba+ +g[aE>>2];ba=+g[aF+540>>2]*bb*a3;a3=+g[aF+544>>2]*bb*a7;aE=aF+520|0;g[aE>>2]=+g[aF+536>>2]*bb*a4+ +g[aE>>2];aE=aF+524|0;g[aE>>2]=ba+ +g[aE>>2];aE=aF+528|0;g[aE>>2]=a3+ +g[aE>>2]}}while(0);aJ=c[ab>>2]|0;if((aJ&16|0)==0){break}aE=(c[a2>>2]|0)+1|0;ay=c[G>>2]|0;if((aJ&4|0)==0){g[ay+(aE*136|0)+84>>2]=0.0;break}a3=+g[a0+4+(aL*276|0)+124>>2]*+g[I>>2];aJ=ay+(aE*136|0)+84|0;g[aJ>>2]=a3;do{if(!aC){ba=+g[aD+336>>2];if(ba==0.0){break}a4=a3*ba*+g[ay+(aE*136|0)+20>>2];bb=a3*ba*+g[ay+(aE*136|0)+24>>2];bA=aD+504|0;g[bA>>2]=+g[bA>>2]+a3*ba*+g[ay+(aE*136|0)+16>>2];bA=aD+508|0;g[bA>>2]=a4+ +g[bA>>2];bA=aD+512|0;g[bA>>2]=bb+ +g[bA>>2];bb=a3*+g[aD+540>>2]*+g[ay+(aE*136|0)+52>>2];a4=a3*+g[aD+544>>2]*+g[ay+(aE*136|0)+56>>2];bA=aD+520|0;g[bA>>2]=a3*+g[aD+536>>2]*+g[ay+(aE*136|0)+48>>2]+ +g[bA>>2];bA=aD+524|0;g[bA>>2]=bb+ +g[bA>>2];bA=aD+528|0;g[bA>>2]=a4+ +g[bA>>2]}}while(0);if(aB){break}a3=+g[aF+336>>2];a4=-0.0- +g[aJ>>2];if(a3==0.0){break}bb=-0.0- +g[ay+(aE*136|0)+72>>2];ba=-0.0- +g[ay+(aE*136|0)+68>>2];a7=-0.0- +g[ay+(aE*136|0)+64>>2];bd=a3*+g[ay+(aE*136|0)+20>>2]*a4;a5=a3*+g[ay+(aE*136|0)+24>>2]*a4;bA=aF+504|0;g[bA>>2]=+g[bA>>2]+a3*+g[ay+(aE*136|0)+16>>2]*a4;bA=aF+508|0;g[bA>>2]=bd+ +g[bA>>2];bA=aF+512|0;g[bA>>2]=a5+ +g[bA>>2];a5=+g[aF+540>>2]*a4*ba;ba=+g[aF+544>>2]*a4*bb;bA=aF+520|0;g[bA>>2]=+g[aF+536>>2]*a4*a7+ +g[bA>>2];bA=aF+524|0;g[bA>>2]=a5+ +g[bA>>2];bA=aF+528|0;g[bA>>2]=ba+ +g[bA>>2]}}while(0);bh=c[aZ>>2]|0}aF=aL+1|0;if((aF|0)<(bh|0)){aL=aF;aK=bh}else{break}}}}while(0);a0=aj+1|0;if((a0|0)<(h|0)){aj=a0}else{bW=ai;bX=ac;break}}}else{bW=b+8|0;bX=b+48|0}ac=c[bW>>2]|0;ai=c[bX>>2]|0;aj=b+68|0;I=c[aj>>2]|0;if((I|0)<(ac|0)){G=b+72|0;if((c[G>>2]|0)<(ac|0)){if((ac|0)==0){bY=0;bZ=I}else{c[9806]=(c[9806]|0)+1;ab=aDx((ac<<2)+19|0)|0;if((ab|0)==0){b_=0}else{y=-(ab+4|0)&15;c[ab+y>>2]=ab;b_=ab+(y+4)|0}bY=b_;bZ=c[aj>>2]|0}y=b+76|0;if((bZ|0)>0){ab=0;do{x=bY+(ab<<2)|0;if((x|0)!=0){c[x>>2]=c[(c[y>>2]|0)+(ab<<2)>>2]}ab=ab+1|0;}while((ab|0)<(bZ|0))}ab=c[y>>2]|0;x=b+80|0;if((ab|0)!=0){if((a[x]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ab-4>>2]|0)}c[y>>2]=0}a[x]=1;c[y>>2]=bY;c[G>>2]=ac;b$=y}else{b$=b+76|0}x=I;do{ab=(c[b$>>2]|0)+(x<<2)|0;if((ab|0)!=0){c[ab>>2]=0}x=x+1|0;}while((x|0)<(ac|0))}c[aj>>2]=ac;x=b+88|0;I=c[x>>2]|0;if((I|0)<(ai|0)){y=b+92|0;if((c[y>>2]|0)<(ai|0)){if((ai|0)==0){b0=0;b2=I}else{c[9806]=(c[9806]|0)+1;G=aDx((ai<<2)+19|0)|0;if((G|0)==0){b4=0}else{ab=-(G+4|0)&15;c[G+ab>>2]=G;b4=G+(ab+4)|0}b0=b4;b2=c[x>>2]|0}ab=b+96|0;if((b2|0)>0){G=0;do{J=b0+(G<<2)|0;if((J|0)!=0){c[J>>2]=c[(c[ab>>2]|0)+(G<<2)>>2]}G=G+1|0;}while((G|0)<(b2|0))}G=c[ab>>2]|0;aj=b+100|0;if((G|0)!=0){if((a[aj]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[G-4>>2]|0)}c[ab>>2]=0}a[aj]=1;c[ab>>2]=b0;c[y>>2]=ai;b5=ab}else{b5=b+96|0}aj=I;do{G=(c[b5>>2]|0)+(aj<<2)|0;if((G|0)!=0){c[G>>2]=0}aj=aj+1|0;}while((aj|0)<(ai|0))}c[x>>2]=ai;if((ac|0)>0){aj=b+76|0;I=0;do{c[(c[aj>>2]|0)+(I<<2)>>2]=I;I=I+1|0;}while((I|0)<(ac|0))}if((ai|0)<=0){break}ac=b+96|0;I=0;do{c[(c[ac>>2]|0)+(I<<2)>>2]=I;I=I+1|0;}while((I|0)<(ai|0))}}while(0);b=c[9152]|0;b5=b+16|0;b0=(c[b5>>2]|0)-1|0;c[b5>>2]=b0;if((b0|0)!=0){i=n;return+0.0}do{if((c[b+4>>2]|0)==0){b6=b}else{b3(m|0,0)|0;b0=c[10742]|0;b2=b+8|0;g[b2>>2]=+(((c[m+4>>2]|0)-(c[b0+4>>2]|0)+(((c[m>>2]|0)-(c[b0>>2]|0)|0)*1e6|0)-(c[b+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[b2>>2];if((c[b5>>2]|0)==0){b6=c[9152]|0;break}else{i=n;return+0.0}}}while(0);c[9152]=c[b6+20>>2];i=n;return+0.0}function aqj(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0;if((c[i+44>>2]|0)==0){return}k=i+20|0;j=c[k>>2]|0;h=(j|0)>0;if((c[i+60>>2]&256|0)==0){if(!h){return}i=a+8|0;g=a+76|0;f=a+16|0;e=1;d=j;while(1){b=c[i>>2]|0;if((b|0)>0){l=0;do{m=c[(c[g>>2]|0)+(l<<2)>>2]|0;n=c[f>>2]|0;aqc(c[n+(m*136|0)+104>>2]|0,c[n+(m*136|0)+108>>2]|0,n+(m*136|0)|0);l=l+1|0;}while((l|0)<(b|0));o=c[k>>2]|0}else{o=d}if((e|0)>=(o|0)){break}e=e+1|0;d=o}return}else{if(!h){return}h=a+8|0;o=a+76|0;d=a+16|0;a=1;e=j;while(1){j=c[h>>2]|0;if((j|0)>0){f=0;do{g=c[(c[o>>2]|0)+(f<<2)>>2]|0;i=c[d>>2]|0;aqc(c[i+(g*136|0)+104>>2]|0,c[i+(g*136|0)+108>>2]|0,i+(g*136|0)|0);f=f+1|0;}while((f|0)<(j|0));p=c[k>>2]|0}else{p=e}if((a|0)>=(p|0)){break}a=a+1|0;e=p}return}}function aqk(a,b,d,e,f,h,j,k,l,m){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0;n=i;i=i+16|0;o=n|0;aDo(18008);di[c[(c[a>>2]|0)+24>>2]&63](a,b,d,e,f,h,j,k,l,m);m=k+20|0;if((c[m>>2]|0)>0){l=a+8|0;f=a+48|0;e=k+60|0;d=a+28|0;b=a+36|0;p=(j|0)>0;q=k+12|0;k=a+76|0;r=a+16|0;s=a+96|0;t=a+56|0;u=a+124|0;a=0;do{v=c[l>>2]|0;w=c[f>>2]|0;x=c[e>>2]|0;do{if((x&1|0)==0){y=x}else{if((a&7|0)!=0){y=x;break}if((v|0)>0){z=0;do{A=c[k>>2]|0;B=A+(z<<2)|0;C=c[B>>2]|0;z=z+1|0;D=(aa(c[u>>2]|0,1664525)|0)+1013904223|0;c[u>>2]=D;do{if(z>>>0<65537){E=D>>>16^D;if(z>>>0>=257){F=E;break}G=E>>>8^E;if(z>>>0>=17){F=G;break}E=G>>>4^G;if(z>>>0>=5){F=E;break}G=E>>>2^E;if(z>>>0>=3){F=G;break}F=G>>>1^G}else{F=D}}while(0);D=(F>>>0)%(z>>>0)|0;c[B>>2]=c[A+(D<<2)>>2];c[(c[k>>2]|0)+(D<<2)>>2]=C;}while((z|0)<(v|0))}if((w|0)>0){z=0;do{D=c[s>>2]|0;G=D+(z<<2)|0;E=c[G>>2]|0;z=z+1|0;H=(aa(c[u>>2]|0,1664525)|0)+1013904223|0;c[u>>2]=H;do{if(z>>>0<65537){I=H>>>16^H;if(z>>>0>=257){J=I;break}K=I>>>8^I;if(z>>>0>=17){J=K;break}I=K>>>4^K;if(z>>>0>=5){J=I;break}K=I>>>2^I;if(z>>>0>=3){J=K;break}J=K>>>1^K}else{J=H}}while(0);H=(J>>>0)%(z>>>0)|0;c[G>>2]=c[D+(H<<2)>>2];c[(c[s>>2]|0)+(H<<2)>>2]=E;}while((z|0)<(w|0))}y=c[e>>2]|0}}while(0);w=(c[d>>2]|0)>0;do{if((y&256|0)==0){if(w){v=0;do{x=c[b>>2]|0;aqa(c[x+(v*136|0)+104>>2]|0,c[x+(v*136|0)+108>>2]|0,x+(v*136|0)|0);v=v+1|0;}while((v|0)<(c[d>>2]|0))}if(p){v=0;do{x=c[h+(v<<2)>>2]|0;dw[c[(c[x>>2]|0)+24>>2]&127](x,c[x+24>>2]|0,c[x+28>>2]|0,+g[q>>2]);v=v+1|0;}while((v|0)<(j|0))}v=c[l>>2]|0;if((v|0)>0){x=0;do{z=c[(c[k>>2]|0)+(x<<2)>>2]|0;H=c[r>>2]|0;aqb(c[H+(z*136|0)+104>>2]|0,c[H+(z*136|0)+108>>2]|0,H+(z*136|0)|0);x=x+1|0;}while((x|0)<(v|0))}v=c[f>>2]|0;if((v|0)>0){L=0}else{break}do{x=c[(c[s>>2]|0)+(L<<2)>>2]|0;z=c[t>>2]|0;M=+g[(c[r>>2]|0)+((c[z+(x*136|0)+100>>2]|0)*136|0)+84>>2];if(M>0.0){N=M*+g[z+(x*136|0)+88>>2];g[z+(x*136|0)+124>>2]=-0.0-N;g[z+(x*136|0)+128>>2]=N;aqa(c[z+(x*136|0)+104>>2]|0,c[z+(x*136|0)+108>>2]|0,z+(x*136|0)|0)}L=L+1|0;}while((L|0)<(v|0))}else{if(w){v=0;do{x=c[b>>2]|0;aqa(c[x+(v*136|0)+104>>2]|0,c[x+(v*136|0)+108>>2]|0,x+(v*136|0)|0);v=v+1|0;}while((v|0)<(c[d>>2]|0))}if(p){v=0;do{x=c[h+(v<<2)>>2]|0;dw[c[(c[x>>2]|0)+24>>2]&127](x,c[x+24>>2]|0,c[x+28>>2]|0,+g[q>>2]);v=v+1|0;}while((v|0)<(j|0))}v=c[l>>2]|0;if((v|0)>0){x=0;do{z=c[(c[k>>2]|0)+(x<<2)>>2]|0;H=c[r>>2]|0;aqb(c[H+(z*136|0)+104>>2]|0,c[H+(z*136|0)+108>>2]|0,H+(z*136|0)|0);x=x+1|0;}while((x|0)<(v|0))}v=c[f>>2]|0;if((v|0)>0){O=0}else{break}do{x=c[(c[s>>2]|0)+(O<<2)>>2]|0;z=c[t>>2]|0;N=+g[(c[r>>2]|0)+((c[z+(x*136|0)+100>>2]|0)*136|0)+84>>2];if(N>0.0){M=N*+g[z+(x*136|0)+88>>2];g[z+(x*136|0)+124>>2]=-0.0-M;g[z+(x*136|0)+128>>2]=M;aqa(c[z+(x*136|0)+104>>2]|0,c[z+(x*136|0)+108>>2]|0,z+(x*136|0)|0)}O=O+1|0;}while((O|0)<(v|0))}}while(0);a=a+1|0;}while((a|0)<(c[m>>2]|0))}m=c[9152]|0;a=m+16|0;O=(c[a>>2]|0)-1|0;c[a>>2]=O;if((O|0)!=0){i=n;return+0.0}do{if((c[m+4>>2]|0)==0){P=m}else{b3(o|0,0)|0;O=c[10742]|0;r=m+8|0;g[r>>2]=+(((c[o+4>>2]|0)-(c[O+4>>2]|0)+(((c[o>>2]|0)-(c[O>>2]|0)|0)*1e6|0)-(c[m+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[r>>2];if((c[a>>2]|0)==0){P=c[9152]|0;break}else{i=n;return+0.0}}}while(0);c[9152]=c[P+20>>2];i=n;return+0.0}function aql(a,b,c){a=a|0;b=b|0;c=c|0;return}function aqm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function aqn(a){a=a|0;c[a+124>>2]=0;return}function aqo(b,d,e,f,h,j,k,l,m,n){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0,F=0,G=0;n=i;i=i+472|0;m=n|0;k=n+64|0;j=n+200|0;h=n+336|0;f=b+8|0;o=c[f>>2]|0;if((o|0)>0){p=b+16|0;q=l+60|0;r=b+56|0;s=0;do{t=c[p>>2]|0;u=c[t+(s*136|0)+112>>2]|0;g[u+112>>2]=+g[t+(s*136|0)+84>>2];if((c[q>>2]&8|0)!=0){v=t+(s*136|0)+100|0;g[u+120>>2]=+g[(c[r>>2]|0)+((c[v>>2]|0)*136|0)+84>>2];g[u+124>>2]=+g[(c[r>>2]|0)+(((c[v>>2]|0)+1|0)*136|0)+84>>2]}s=s+1|0;}while((s|0)<(o|0))}o=b+28|0;s=c[o>>2]|0;if((s|0)>0){r=b+36|0;q=0;do{p=c[r>>2]|0;v=c[p+(q*136|0)+112>>2]|0;u=p+(q*136|0)+84|0;g[v+32>>2]=+g[u>>2];if(+g[u>>2]>+g[v+16>>2]){a[v+20|0]=0}q=q+1|0;}while((q|0)<(s|0))}s=(e|0)>0;do{if((c[l+44>>2]|0)==0){if(s){w=0}else{break}do{q=c[d+(w<<2)>>2]|0;do{if(!((c[q+232>>2]&2|0)==0|(q|0)==0)){if(+g[q+336>>2]==0.0){break}r=q+304|0;v=q+308|0;x=+g[v>>2]+ +g[q+508>>2];u=q+312|0;y=+g[u>>2]+ +g[q+512>>2];g[r>>2]=+g[r>>2]+ +g[q+504>>2];g[v>>2]=x;g[u>>2]=y;g[q+316>>2]=0.0;u=q+320|0;v=q+324|0;y=+g[v>>2]+ +g[q+524>>2];r=q+328|0;x=+g[r>>2]+ +g[q+528>>2];g[u>>2]=+g[u>>2]+ +g[q+520>>2];g[v>>2]=y;g[r>>2]=x;g[q+332>>2]=0.0}}while(0);w=w+1|0;}while((w|0)<(e|0))}else{if(!s){break}q=l+12|0;r=m;v=m+16|0;u=m+32|0;p=m+48|0;t=0;do{z=c[d+(t<<2)>>2]|0;do{if(!((c[z+232>>2]&2|0)==0|(z|0)==0)){x=+g[q>>2];if(+g[z+336>>2]==0.0){break}A=z+304|0;B=z+308|0;y=+g[B>>2]+ +g[z+508>>2];C=z+312|0;D=+g[C>>2]+ +g[z+512>>2];g[A>>2]=+g[A>>2]+ +g[z+504>>2];g[B>>2]=y;g[C>>2]=D;g[z+316>>2]=0.0;C=z+320|0;B=z+324|0;D=+g[B>>2]+ +g[z+524>>2];A=z+328|0;y=+g[A>>2]+ +g[z+528>>2];g[C>>2]=+g[C>>2]+ +g[z+520>>2];g[B>>2]=D;g[A>>2]=y;g[z+332>>2]=0.0;A=z+4|0;anY(A,+g[z+568>>2],+g[z+572>>2],+g[z+576>>2],z+584|0,x,m);B=A;c[B>>2]=c[r>>2];c[B+4>>2]=c[r+4>>2];c[B+8>>2]=c[r+8>>2];c[B+12>>2]=c[r+12>>2];B=z+20|0;c[B>>2]=c[v>>2];c[B+4>>2]=c[v+4>>2];c[B+8>>2]=c[v+8>>2];c[B+12>>2]=c[v+12>>2];B=z+36|0;c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];B=z+52|0;c[B>>2]=c[p>>2];c[B+4>>2]=c[p+4>>2];c[B+8>>2]=c[p+8>>2];c[B+12>>2]=c[p+12>>2]}}while(0);t=t+1|0;}while((t|0)<(e|0))}}while(0);e=k;aDD(e|0,0,136);k=c[f>>2]|0;if((k|0)<0){m=b+12|0;d=b+16|0;if((c[m>>2]|0)<0){l=c[d>>2]|0;s=b+20|0;if((l|0)!=0){if((a[s]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-136+132>>2]|0)}c[d>>2]=0}a[s]=1;c[d>>2]=0;c[m>>2]=0;E=k}else{E=k}do{k=(c[d>>2]|0)+(E*136|0)|0;aDC(k|0,e|0,136)|0;E=E+1|0;}while((E|0)<0)}c[f>>2]=0;f=j;aDD(f|0,0,136);j=c[o>>2]|0;if((j|0)<0){E=b+32|0;e=b+36|0;if((c[E>>2]|0)<0){d=c[e>>2]|0;k=b+40|0;if((d|0)!=0){if((a[k]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-136+132>>2]|0)}c[e>>2]=0}a[k]=1;c[e>>2]=0;c[E>>2]=0;F=j}else{F=j}do{j=(c[e>>2]|0)+(F*136|0)|0;aDC(j|0,f|0,136)|0;F=F+1|0;}while((F|0)<0)}c[o>>2]=0;o=h;aDD(o|0,0,136);h=b+48|0;F=c[h>>2]|0;if((F|0)>=0){c[h>>2]=0;i=n;return+0.0}f=b+52|0;e=b+56|0;if((c[f>>2]|0)<0){j=c[e>>2]|0;E=b+60|0;if((j|0)!=0){if((a[E]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-136+132>>2]|0)}c[e>>2]=0}a[E]=1;c[e>>2]=0;c[f>>2]=0;G=F}else{G=F}do{F=(c[e>>2]|0)+(G*136|0)|0;aDC(F|0,o|0,136)|0;G=G+1|0;}while((G|0)<0);c[h>>2]=0;i=n;return+0.0}function aqp(b){b=b|0;var d=0;c[b>>2]=22176;do{if((a[b+176|0]&1)!=0){d=c[b+172>>2]|0;if((d|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}}while(0);atA(b|0);if((b|0)==0){return}aDB(b);return}function aqq(b){b=b|0;var d=0;c[b>>2]=22176;do{if((a[b+176|0]&1)!=0){d=c[b+172>>2]|0;if((d|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}}while(0);atA(b|0);return}function aqr(a,b,d,e){a=a|0;b=+b;d=d|0;e=+e;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=i;i=i+136|0;f=d|0;h=d+64|0;j=a+8|0;k=c[j>>2]|0;if((k|0)>0){l=a+16|0;m=0;n=k;while(1){k=c[(c[l>>2]|0)+(m<<2)>>2]|0;do{if((c[k+232>>2]&2|0)==0){o=n}else{p=k;if((k|0)==0){o=n;break}q=c[k+204>>2]|0;if((q&1|0)!=0){o=n;break}r=c[k+216>>2]|0;if((r|0)==5|(r|0)==2){o=n;break}if((q&3|0)==0){e=+g[k+360>>2]*+g[k+344>>2];s=+g[k+364>>2]*+g[k+348>>2];q=k+404|0;g[q>>2]=+g[k+356>>2]*+g[k+340>>2]+ +g[q>>2];q=k+408|0;g[q>>2]=e+ +g[q>>2];q=k+412|0;g[q>>2]=s+ +g[q>>2]}ap5(p,b);ap3(p,b);anY(k+4|0,+g[k+304>>2],+g[k+308>>2],+g[k+312>>2],k+320|0,b,k+68|0);o=c[j>>2]|0}}while(0);k=m+1|0;if((k|0)<(o|0)){m=k;n=o}else{break}}}o=a|0;g[a+28>>2]=b;c[a+32>>2]=0;c[a+48>>2]=cA[c[(c[a>>2]|0)+16>>2]&4095](o)|0;ct[c[(c[a>>2]|0)+40>>2]&2047](o);o=a+24|0;n=c[o>>2]|0;m=cA[c[(c[n>>2]|0)+36>>2]&4095](n)|0;if((m|0)!=0){n=c[o>>2]|0;l=cA[c[(c[n>>2]|0)+44>>2]&4095](n)|0;g[h>>2]=.6000000238418579;g[h+4>>2]=1.0;g[h+8>>2]=.30000001192092896;g[h+16>>2]=0.0;g[h+24>>2]=20.0;c[h+20>>2]=10;g[h+32>>2]=.20000000298023224;g[h+36>>2]=.10000000149011612;g[h+40>>2]=0.0;g[h+28>>2]=1.0;c[h+44>>2]=0;g[h+48>>2]=-.019999999552965164;g[h+52>>2]=0.0;g[h+56>>2]=.8500000238418579;c[h+60>>2]=260;c[h+64>>2]=2;c[h+68>>2]=128;g[h+12>>2]=b;n=a+172|0;k=c[n>>2]|0;dA[c[(c[k>>2]|0)+8>>2]&511](k,0,m);k=c[n>>2]|0;p=c[(c[k>>2]|0)+12>>2]|0;q=c[a+16>>2]|0;r=c[j>>2]|0;t=a+80|0;u=c[t>>2]|0;v=a+72|0;w=c[v>>2]|0;x=c[o>>2]|0;+cN[p&63](k,q,r,l,m,0,0,h,u,w,x);x=c[n>>2]|0;dI[c[(c[x>>2]|0)+16>>2]&1023](x,h,c[t>>2]|0,c[v>>2]|0)}v=c[j>>2]|0;if((v|0)<=0){y=a;z=c[y>>2]|0;A=z+8|0;B=c[A>>2]|0;ct[B&2047](a);C=c[y>>2]|0;D=C+76|0;E=c[D>>2]|0;ct[E&2047](a);F=c[y>>2]|0;G=F+116|0;H=c[G>>2]|0;ct[H&2047](a);i=d;return 1}t=a+16|0;h=0;x=v;while(1){v=c[(c[t>>2]|0)+(h<<2)>>2]|0;do{if((c[v+232>>2]&2|0)==0){I=x}else{if((v|0)==0){I=x;break}n=c[v+216>>2]|0;if((n|0)==5|(n|0)==2){I=x;break}if((c[v+204>>2]&1|0)!=0){I=x;break}anY(v+4|0,+g[v+304>>2],+g[v+308>>2],+g[v+312>>2],v+320|0,b,f);ap4(v,f);I=c[j>>2]|0}}while(0);v=h+1|0;if((v|0)<(I|0)){h=v;x=I}else{break}}y=a;z=c[y>>2]|0;A=z+8|0;B=c[A>>2]|0;ct[B&2047](a);C=c[y>>2]|0;D=C+76|0;E=c[D>>2]|0;ct[E&2047](a);F=c[y>>2]|0;G=F+116|0;H=c[G>>2]|0;ct[H&2047](a);i=d;return 1}function aqs(a,b,d,e,f,h,j,k,l,m,n){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0;n=i;i=i+16|0;o=n+8|0;aDo(17448);p=a;+c7[c[(c[p>>2]|0)+32>>2]&63](a,b,d,e,f,h,j,k,l,m);+c7[c[(c[p>>2]|0)+36>>2]&63](a,b,d,e,f,h,j,k,l,m);+c7[c[(c[p>>2]|0)+28>>2]&63](a,b,d,e,f,h,j,k,l,m);m=c[9152]|0;l=m+16|0;k=(c[l>>2]|0)-1|0;c[l>>2]=k;if((k|0)!=0){i=n;return+0.0}do{if((c[m+4>>2]|0)==0){q=m}else{b3(o|0,0)|0;k=c[10742]|0;j=m+8|0;g[j>>2]=+(((c[o+4>>2]|0)-(c[k+4>>2]|0)+(((c[o>>2]|0)-(c[k>>2]|0)|0)*1e6|0)-(c[m+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[j>>2];if((c[l>>2]|0)==0){q=c[9152]|0;break}else{i=n;return+0.0}}}while(0);c[9152]=c[q+20>>2];i=n;return+0.0}function aqt(a){a=a|0;return}function aqu(a,b){a=a|0;b=b|0;return}function aqv(a,b){a=a|0;b=b|0;return}function aqw(a,b,c){a=a|0;b=b|0;c=c|0;return}function aqx(a,b){a=a|0;b=b|0;return}function aqy(a){a=a|0;return 0}function aqz(a,b){a=a|0;b=b|0;return 0}function aqA(a,b){a=a|0;b=b|0;return 0}function aqB(a){a=a|0;return 1}function aqC(a,b){a=a|0;b=b|0;return}function aqD(a,b){a=a|0;b=b|0;return}function aqE(a,b){a=a|0;b=b|0;return}function aqF(a,b){a=a|0;b=b|0;return}function aqG(a){a=a|0;return c[a+172>>2]|0}function aqH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;b=a+8|0;d=c[b>>2]|0;if((d|0)<=0){return}e=a+16|0;a=0;f=d;while(1){d=c[(c[e>>2]|0)+(a<<2)>>2]|0;if((c[d+232>>2]&2|0)==0|(d|0)==0){g=f}else{aDD(d+404|0,0,32);g=c[b>>2]|0}d=a+1|0;if((d|0)<(g|0)){a=d;f=g}else{break}}return}function aqI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0;d=a+180|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];d=a+8|0;f=c[d>>2]|0;if((f|0)<=0){return}h=a+16|0;a=b|0;i=b+4|0;j=b+8|0;b=0;k=f;while(1){f=c[(c[h>>2]|0)+(b<<2)>>2]|0;if((c[f+232>>2]&2|0)==0|(f|0)==0){l=k}else{m=+g[f+336>>2];if(m!=0.0){n=1.0/m;m=n*+g[i>>2];o=n*+g[j>>2];g[f+356>>2]=n*+g[a>>2];g[f+360>>2]=m;g[f+364>>2]=o;g[f+368>>2]=0.0}p=f+372|0;c[p>>2]=c[e>>2];c[p+4>>2]=c[e+4>>2];c[p+8>>2]=c[e+8>>2];c[p+12>>2]=c[e+12>>2];l=c[d>>2]|0}p=b+1|0;if((p|0)<(l|0)){b=p;k=l}else{break}}return}function aqJ(a,b){a=a|0;b=b|0;var d=0;d=a;a=b+180|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function aqK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=b|0;e=b+188|0;b=c[e>>2]|0;if((b|0)!=0){f=a+76|0;g=c[f>>2]|0;h=cA[c[(c[g>>2]|0)+36>>2]&4095](g)|0;g=a+24|0;dA[c[(c[h>>2]|0)+40>>2]&511](h,b,c[g>>2]|0);h=c[f>>2]|0;dA[c[(c[h>>2]|0)+12>>2]&511](h,b,c[g>>2]|0);c[e>>2]=0}e=a+8|0;g=c[e>>2]|0;b=a+16|0;a=0;while(1){if((a|0)>=(g|0)){i=5136;break}j=c[b>>2]|0;k=j+(a<<2)|0;if((c[k>>2]|0)==(d|0)){break}else{a=a+1|0}}if((i|0)==5136){return}i=g-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[b>>2]|0)+(i<<2)>>2]=d;c[e>>2]=(c[e>>2]|0)-1;return}function aqL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!((c[b+232>>2]&2|0)==0|(b|0)==0)){cv[c[(c[a>>2]|0)+88>>2]&2047](a,b);return}d=b+188|0;e=c[d>>2]|0;if((e|0)!=0){f=a+76|0;g=c[f>>2]|0;h=cA[c[(c[g>>2]|0)+36>>2]&4095](g)|0;g=a+24|0;dA[c[(c[h>>2]|0)+40>>2]&511](h,e,c[g>>2]|0);h=c[f>>2]|0;dA[c[(c[h>>2]|0)+12>>2]&511](h,e,c[g>>2]|0);c[d>>2]=0}d=a+8|0;g=c[d>>2]|0;e=a+16|0;a=0;while(1){if((a|0)>=(g|0)){i=5148;break}j=c[e>>2]|0;k=j+(a<<2)|0;if((c[k>>2]|0)==(b|0)){break}else{a=a+1|0}}if((i|0)==5148){return}i=g-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[e>>2]|0)+(i<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1;return}function aqM(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,h=0.0,i=0,j=0;d=a+180|0;e=+g[b+336>>2];if(e!=0.0){f=1.0/e;e=f*+g[a+184>>2];h=f*+g[a+188>>2];g[b+356>>2]=f*+g[d>>2];g[b+360>>2]=e;g[b+364>>2]=h;g[b+368>>2]=0.0}i=b+372|0;j=d;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];if((c[b+192>>2]|0)==0){return}dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b|0,1,-1);return}function aqN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0.0,j=0.0,k=0,l=0;f=a+180|0;h=+g[b+336>>2];if(h!=0.0){i=1.0/h;h=i*+g[a+184>>2];j=i*+g[a+188>>2];g[b+356>>2]=i*+g[f>>2];g[b+360>>2]=h;g[b+364>>2]=j;g[b+368>>2]=0.0}k=b+372|0;l=f;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];if((c[b+192>>2]|0)==0){return}dI[c[(c[a>>2]|0)+32>>2]&1023](a|0,b|0,d,e);return}function aqO(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;b=i;i=i+32|0;d=b|0;e=b+16|0;f=a+8|0;g=c[f>>2]|0;if((g|0)<=0){i=b;return}h=a+16|0;j=a+76|0;k=a+24|0;a=0;l=g;while(1){g=c[(c[h>>2]|0)+(a<<2)>>2]|0;do{if((c[g+232>>2]&2|0)==0|(g|0)==0){m=l}else{n=c[g+216>>2]|0;if((n|0)==5|(n|0)==2){m=l;break}if((c[g+204>>2]&1|0)!=0){m=l;break}n=c[g+192>>2]|0;dI[c[(c[n>>2]|0)+8>>2]&1023](n,g+4|0,d,e);n=c[j>>2]|0;co[c[(c[n>>2]|0)+16>>2]&255](n,c[g+188>>2]|0,d,e,c[k>>2]|0);m=c[f>>2]|0}}while(0);g=a+1|0;if((g|0)<(m|0)){a=g;l=m}else{break}}i=b;return}function aqP(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+8|0;d=c[b>>2]|0;if((d|0)<=0){return}e=a+16|0;a=0;f=d;while(1){d=c[(c[e>>2]|0)+(a<<2)>>2]|0;do{if((c[d+232>>2]&2|0)==0|(d|0)==0){g=f}else{h=c[d+472>>2]|0;if((h|0)==0){g=f;break}if((c[d+216>>2]|0)==2){g=f;break}cv[c[(c[h>>2]|0)+12>>2]&2047](h,d+4|0);g=c[b>>2]|0}}while(0);d=a+1|0;if((d|0)<(g|0)){a=d;f=g}else{break}}return}function aqQ(b,d){b=b|0;d=d|0;var e=0,f=0;e=b+176|0;f=b+172|0;do{if((a[e]&1)!=0){b=c[f>>2]|0;if((b|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0)}}while(0);a[e]=0;c[f>>2]=d;return} +function aqR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0,ar=0,as=0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0;f=i;i=i+448|0;h=f|0;j=f+48|0;k=f+96|0;l=f+144|0;m=f+192|0;n=f+256|0;o=f+320|0;p=f+384|0;q=b+172|0;do{if((a[q]&1)==0){if((a[b+40|0]&1)==0){r=3;break}s=b+816|0;t=j;anx(j,e|0,b+108|0);u=+g[b+156>>2];v=+g[b+160>>2];w=+g[b+164>>2];x=+g[e>>2]*u+ +g[e+4>>2]*v+ +g[e+8>>2]*w+ +g[e+48>>2];y=+g[e+16>>2]*u+ +g[e+20>>2]*v+ +g[e+24>>2]*w+ +g[e+52>>2];z=+g[e+32>>2]*u+ +g[e+36>>2]*v+ +g[e+40>>2]*w+ +g[e+56>>2];A=o+48|0;B=o|0;do{B=B+16|0;}while((B|0)!=(A|0));A=o;c[A>>2]=c[t>>2];c[A+4>>2]=c[t+4>>2];c[A+8>>2]=c[t+8>>2];c[A+12>>2]=c[t+12>>2];B=o+16|0;C=j+16|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];c[B+8>>2]=c[C+8>>2];c[B+12>>2]=c[C+12>>2];C=o+32|0;D=j+32|0;c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];c[C+8>>2]=c[D+8>>2];c[C+12>>2]=c[D+12>>2];g[o+48>>2]=x;g[o+52>>2]=y;g[o+56>>2]=z;g[o+60>>2]=0.0;D=s;c[D>>2]=c[A>>2];c[D+4>>2]=c[A+4>>2];c[D+8>>2]=c[A+8>>2];c[D+12>>2]=c[A+12>>2];A=b+832|0;c[A>>2]=c[B>>2];c[A+4>>2]=c[B+4>>2];c[A+8>>2]=c[B+8>>2];c[A+12>>2]=c[B+12>>2];B=b+848|0;c[B>>2]=c[C>>2];c[B+4>>2]=c[C+4>>2];c[B+8>>2]=c[C+8>>2];c[B+12>>2]=c[C+12>>2];C=b+864|0;B=o+48|0;c[C>>2]=c[B>>2];c[C+4>>2]=c[B+4>>2];c[C+8>>2]=c[B+8>>2];c[C+12>>2]=c[B+12>>2];B=b+880|0;C=h;anx(h,d|0,b+44|0);w=+g[b+92>>2];v=+g[b+96>>2];u=+g[b+100>>2];E=+g[d>>2]*w+ +g[d+4>>2]*v+ +g[d+8>>2]*u+ +g[d+48>>2];F=+g[d+16>>2]*w+ +g[d+20>>2]*v+ +g[d+24>>2]*u+ +g[d+52>>2];G=+g[d+32>>2]*w+ +g[d+36>>2]*v+ +g[d+40>>2]*u+ +g[d+56>>2];A=p+48|0;D=p|0;do{D=D+16|0;}while((D|0)!=(A|0));A=p;c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];c[A+8>>2]=c[C+8>>2];c[A+12>>2]=c[C+12>>2];D=p+16|0;s=h+16|0;c[D>>2]=c[s>>2];c[D+4>>2]=c[s+4>>2];c[D+8>>2]=c[s+8>>2];c[D+12>>2]=c[s+12>>2];s=p+32|0;t=h+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];g[p+48>>2]=E;g[p+52>>2]=F;g[p+56>>2]=G;g[p+60>>2]=0.0;t=B;c[t>>2]=c[A>>2];c[t+4>>2]=c[A+4>>2];c[t+8>>2]=c[A+8>>2];c[t+12>>2]=c[A+12>>2];A=b+896|0;c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];c[A+8>>2]=c[D+8>>2];c[A+12>>2]=c[D+12>>2];D=b+912|0;c[D>>2]=c[s>>2];c[D+4>>2]=c[s+4>>2];c[D+8>>2]=c[s+8>>2];c[D+12>>2]=c[s+12>>2];s=b+928|0;D=p+48|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2]}else{r=3}}while(0);if((r|0)==3){r=b+816|0;p=l;anx(l,d|0,b+44|0);z=+g[b+92>>2];y=+g[b+96>>2];x=+g[b+100>>2];u=+g[d>>2]*z+ +g[d+4>>2]*y+ +g[d+8>>2]*x+ +g[d+48>>2];v=+g[d+16>>2]*z+ +g[d+20>>2]*y+ +g[d+24>>2]*x+ +g[d+52>>2];w=+g[d+32>>2]*z+ +g[d+36>>2]*y+ +g[d+40>>2]*x+ +g[d+56>>2];d=m+48|0;h=m|0;do{h=h+16|0;}while((h|0)!=(d|0));d=m;c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];p=m+16|0;h=l+16|0;c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];h=m+32|0;o=l+32|0;c[h>>2]=c[o>>2];c[h+4>>2]=c[o+4>>2];c[h+8>>2]=c[o+8>>2];c[h+12>>2]=c[o+12>>2];g[m+48>>2]=u;g[m+52>>2]=v;g[m+56>>2]=w;g[m+60>>2]=0.0;o=r;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];d=b+832|0;c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];p=b+848|0;c[p>>2]=c[h>>2];c[p+4>>2]=c[h+4>>2];c[p+8>>2]=c[h+8>>2];c[p+12>>2]=c[h+12>>2];h=b+864|0;p=m+48|0;c[h>>2]=c[p>>2];c[h+4>>2]=c[p+4>>2];c[h+8>>2]=c[p+8>>2];c[h+12>>2]=c[p+12>>2];p=b+880|0;h=k;anx(k,e|0,b+108|0);w=+g[b+156>>2];v=+g[b+160>>2];u=+g[b+164>>2];x=+g[e>>2]*w+ +g[e+4>>2]*v+ +g[e+8>>2]*u+ +g[e+48>>2];y=+g[e+16>>2]*w+ +g[e+20>>2]*v+ +g[e+24>>2]*u+ +g[e+52>>2];z=+g[e+32>>2]*w+ +g[e+36>>2]*v+ +g[e+40>>2]*u+ +g[e+56>>2];e=n+48|0;m=n|0;do{m=m+16|0;}while((m|0)!=(e|0));e=n;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=n+16|0;m=k+16|0;c[h>>2]=c[m>>2];c[h+4>>2]=c[m+4>>2];c[h+8>>2]=c[m+8>>2];c[h+12>>2]=c[m+12>>2];m=n+32|0;d=k+32|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];g[n+48>>2]=x;g[n+52>>2]=y;g[n+56>>2]=z;g[n+60>>2]=0.0;d=p;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=b+896|0;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=b+912|0;c[h>>2]=c[m>>2];c[h+4>>2]=c[m+4>>2];c[h+8>>2]=c[m+8>>2];c[h+12>>2]=c[m+12>>2];m=b+928|0;h=n+48|0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2]}h=b+960|0;m=h;n=b+864|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=b+976|0;m=n;e=b+928|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];z=+g[b+816>>2];y=+g[b+832>>2];x=+g[b+848>>2];g[b+944>>2]=z;g[b+948>>2]=y;g[b+952>>2]=x;g[b+956>>2]=0.0;do{if((a[q]&1)==0){if((a[b+40|0]&1)!=0){break}u=+g[h>>2];v=u- +g[n>>2];w=+g[b+964>>2];H=w- +g[b+980>>2];I=+g[b+968>>2];J=I- +g[b+984>>2];g[b+1008>>2]=v;g[b+1012>>2]=H;g[b+1016>>2]=J;g[b+1020>>2]=0.0;K=v;L=H;M=J;N=u;O=w;P=I;Q=z*K;R=y*L;S=Q+R;T=x*M;U=S+T;V=z*U;W=y*U;X=x*U;Y=N+V;Z=O+W;_=P+X;$=b+992|0;g[$>>2]=Y;aa=b+996|0;g[aa>>2]=Z;ab=b+1e3|0;g[ab>>2]=_;ac=b+1004|0;g[ac>>2]=0.0;ad=b+1024|0;g[ad>>2]=U;ae=b+820|0;af=b+836|0;ag=b+852|0;ah=+g[ae>>2];ai=+g[af>>2];aj=+g[ag>>2];ak=ah*K;al=ai*L;am=ak+al;an=aj*M;ao=am+an;ap=b+1028|0;g[ap>>2]=ao;aq=b+824|0;ar=b+840|0;as=b+856|0;at=+g[aq>>2];au=+g[ar>>2];av=+g[as>>2];aw=at*K;ax=au*L;ay=aw+ax;az=av*M;aA=ay+az;aB=b+1032|0;g[aB>>2]=aA;i=f;return}}while(0);I=+g[h>>2];w=+g[n>>2]-I;u=+g[b+964>>2];J=+g[b+980>>2]-u;H=+g[b+968>>2];v=+g[b+984>>2]-H;g[b+1008>>2]=w;g[b+1012>>2]=J;g[b+1016>>2]=v;g[b+1020>>2]=0.0;K=w;L=J;M=v;N=I;O=u;P=H;Q=z*K;R=y*L;S=Q+R;T=x*M;U=S+T;V=z*U;W=y*U;X=x*U;Y=N+V;Z=O+W;_=P+X;$=b+992|0;g[$>>2]=Y;aa=b+996|0;g[aa>>2]=Z;ab=b+1e3|0;g[ab>>2]=_;ac=b+1004|0;g[ac>>2]=0.0;ad=b+1024|0;g[ad>>2]=U;ae=b+820|0;af=b+836|0;ag=b+852|0;ah=+g[ae>>2];ai=+g[af>>2];aj=+g[ag>>2];ak=ah*K;al=ai*L;am=ak+al;an=aj*M;ao=am+an;ap=b+1028|0;g[ap>>2]=ao;aq=b+824|0;ar=b+840|0;as=b+856|0;at=+g[aq>>2];au=+g[ar>>2];av=+g[as>>2];aw=at*K;ax=au*L;ay=aw+ax;az=av*M;aA=ay+az;aB=b+1032|0;g[aB>>2]=aA;i=f;return}function aqS(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0;e=d|0;if((a[b+40|0]&1)!=0){c[e>>2]=0;c[d+4>>2]=0;return}c[e>>2]=4;f=d+4|0;c[f>>2]=2;aqR(b,(c[b+24>>2]|0)+4|0,(c[b+28>>2]|0)+4|0);aqT(b);d=b+288|0;a[d]=0;h=b+1024|0;i=+g[h>>2];g[b+1072>>2]=i;j=+g[b+176>>2];k=+g[b+180>>2];do{if(j>k){l=27}else{if(i>k){g[h>>2]=i-k;a[d]=1;l=28;break}if(i>=j){l=27;break}g[h>>2]=i-j;a[d]=1;l=28}}while(0);if((l|0)==27){g[h>>2]=0.0;if((a[b+1088|0]&1)!=0){l=28}}if((l|0)==28){c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1}do{if((a[b+289|0]&1)==0){if((a[b+1104|0]&1)!=0){break}return}}while(0);c[e>>2]=(c[e>>2]|0)+1;c[f>>2]=(c[f>>2]|0)-1;return}function aqT(b){b=b|0;var c=0,d=0,e=0,f=0.0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;c=b+1080|0;g[c>>2]=0.0;d=b+289|0;a[d]=0;e=b+184|0;f=+g[e>>2];h=b+188|0;i=+g[h>>2];if(f>i){return}j=+g[b+884>>2];k=+g[b+900>>2];l=+g[b+916>>2];m=+ao0(+Y(+(+g[b+824>>2]*j+ +g[b+840>>2]*k+ +g[b+856>>2]*l),+(+g[b+820>>2]*j+ +g[b+836>>2]*k+ +g[b+852>>2]*l)),f,i);g[b+1076>>2]=m;i=+g[e>>2];if(m>2]=m-i;a[d]=1;return}i=+g[h>>2];if(m<=i){return}g[c>>2]=m-i;a[d]=1;return}function aqU(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+24>>2]|0;e=c[a+28>>2]|0;aqV(a,b,d+4|0,e+4|0,d+304|0,e+304|0,+g[d+336>>2],+g[e+336>>2]);return}function aqV(b,d,e,f,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;j=+j;k=+k;var l=0,m=0,n=0.0,o=0,p=0,q=0.0,r=0,s=0,t=0.0,u=0,v=0,w=0.0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0,_=0,$=0.0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0,aH=0,aI=0.0,aJ=0.0,aK=0,aL=0.0,aM=0.0,aN=0.0;l=d+24|0;m=c[l>>2]|0;n=(a[b+172|0]&1)!=0?1.0:-1.0;o=b+928|0;p=b+864|0;q=+g[o>>2]- +g[p>>2];r=b+932|0;s=b+868|0;t=+g[r>>2]- +g[s>>2];u=b+936|0;v=b+872|0;w=+g[u>>2]- +g[v>>2];if(j<1.1920928955078125e-7){x=1}else{x=k<1.1920928955078125e-7}y=j+k;if(y>0.0){z=k/y}else{z=.5}y=1.0-z;k=+g[b+816>>2];j=+g[b+832>>2];A=+g[b+848>>2];B=+g[b+880>>2];C=+g[b+896>>2];D=+g[b+912>>2];E=b+41|0;do{if((a[E]&1)==0){F=k;G=j;H=A;I=+g[b+824>>2];J=+g[b+840>>2];K=+g[b+856>>2];L=+g[b+820>>2];M=+g[b+836>>2];N=+g[b+852>>2]}else{O=z*k+y*B;R=z*j+y*C;S=z*A+y*D;T=1.0/+Q(+(O*O+R*R+S*S));U=O*T;O=R*T;R=S*T;if(+P(+R)>.7071067690849304){T=R*R+O*O;S=1.0/+Q(+T);V=S*(-0.0-R);W=O*S;F=U;G=O;H=R;I=T*S;J=W*(-0.0-U);K=U*V;L=0.0;M=V;N=W;break}else{W=U*U+O*O;V=1.0/+Q(+W);S=V*(-0.0-O);T=U*V;F=U;G=O;H=R;I=T*(-0.0-R);J=R*S;K=W*V;L=S;M=T;N=0.0;break}}}while(0);X=d+12|0;g[c[X>>2]>>2]=L;g[(c[X>>2]|0)+4>>2]=M;g[(c[X>>2]|0)+8>>2]=N;g[(c[X>>2]|0)+(m<<2)>>2]=I;Y=m+1|0;g[(c[X>>2]|0)+(Y<<2)>>2]=J;Z=m+2|0;g[(c[X>>2]|0)+(Z<<2)>>2]=K;_=d+20|0;g[c[_>>2]>>2]=-0.0-L;g[(c[_>>2]|0)+4>>2]=-0.0-M;g[(c[_>>2]|0)+8>>2]=-0.0-N;g[(c[_>>2]|0)+(m<<2)>>2]=-0.0-I;g[(c[_>>2]|0)+(Y<<2)>>2]=-0.0-J;g[(c[_>>2]|0)+(Z<<2)>>2]=-0.0-K;Z=b+292|0;T=+g[b+272>>2];if((c[Z>>2]&128|0)==0){$=T*+g[d+4>>2]}else{$=T}Y=d|0;T=$*+g[Y>>2];$=j*D-A*C;S=A*B-k*D;D=k*C-j*B;ab=d+28|0;g[c[ab>>2]>>2]=T*($*L+S*M+D*N);g[(c[ab>>2]|0)+(m<<2)>>2]=T*($*I+S*J+D*K);if((c[Z>>2]&64|0)!=0){ac=b+284|0;ad=d+32|0;g[c[ad>>2]>>2]=+g[ac>>2];g[(c[ad>>2]|0)+(m<<2)>>2]=+g[ac>>2]}D=+g[e+48>>2];S=+g[e+52>>2];$=+g[e+56>>2];T=+g[f+48>>2];B=+g[f+52>>2];j=+g[f+56>>2];f=m<<1;e=m*3|0;if((a[E]&1)==0){C=T-D;k=B-S;A=j-$;V=k*N-A*M;W=A*L-C*N;R=C*M-k*L;g[(c[X>>2]|0)+(f<<2)>>2]=z*V;m=f|1;g[(c[X>>2]|0)+(m<<2)>>2]=z*W;ac=f+2|0;g[(c[X>>2]|0)+(ac<<2)>>2]=z*R;g[(c[_>>2]|0)+(f<<2)>>2]=y*V;g[(c[_>>2]|0)+(m<<2)>>2]=y*W;g[(c[_>>2]|0)+(ac<<2)>>2]=y*R;R=k*K-A*J;W=A*I-C*K;V=C*J-k*I;g[(c[X>>2]|0)+(e<<2)>>2]=z*R;ad=e+1|0;g[(c[X>>2]|0)+(ad<<2)>>2]=z*W;ae=e+2|0;g[(c[X>>2]|0)+(ae<<2)>>2]=z*V;g[(c[_>>2]|0)+(e<<2)>>2]=y*R;g[(c[_>>2]|0)+(ad<<2)>>2]=y*W;g[(c[_>>2]|0)+(ae<<2)>>2]=y*V;af=d+8|0;g[(c[af>>2]|0)+(f<<2)>>2]=L;g[(c[af>>2]|0)+(m<<2)>>2]=M;g[(c[af>>2]|0)+(ac<<2)>>2]=N;g[(c[af>>2]|0)+(e<<2)>>2]=I;g[(c[af>>2]|0)+(ad<<2)>>2]=J;g[(c[af>>2]|0)+(ae<<2)>>2]=K;ag=C;ah=k;ai=A;aj=0.0;ak=0.0;al=0.0;am=0.0;an=0.0;ao=0.0;ap=L;aq=M;ar=N;as=I;at=J;au=K}else{K=+g[o>>2]-T;T=+g[r>>2]-B;B=+g[u>>2]-j;j=F*K+G*T+H*B;J=F*j;I=G*j;N=H*j;j=K-J;K=T-I;T=B-N;B=+g[p>>2]-D;D=+g[s>>2]-S;S=+g[v>>2]-$;$=F*B+G*D+H*S;M=F*$;L=G*$;A=H*$;$=B-M;B=D-L;D=S-A;S=+g[b+1072>>2]- +g[b+1024>>2];k=M+F*S-J;J=L+G*S-I;I=A+H*S-N;N=$+z*k;S=B+z*J;A=D+z*I;L=j-y*k;k=K-y*J;J=T-y*I;I=z*j+y*$;$=z*K+y*B;B=z*T+y*D;D=I*I+$*$+B*B;if(D>1.1920928955078125e-7){T=1.0/+Q(+D);av=T*B;aw=T*$;ax=I*T}else{av=+g[b+852>>2];aw=+g[b+836>>2];ax=+g[b+820>>2]}T=G*av-H*aw;I=H*ax-F*av;$=F*aw-G*ax;g[(c[X>>2]|0)+(f<<2)>>2]=S*av-A*aw;v=f|1;g[(c[X>>2]|0)+(v<<2)>>2]=A*ax-N*av;s=f+2|0;g[(c[X>>2]|0)+(s<<2)>>2]=N*aw-S*ax;g[(c[_>>2]|0)+(f<<2)>>2]=-0.0-(k*av-J*aw);g[(c[_>>2]|0)+(v<<2)>>2]=-0.0-(J*ax-L*av);g[(c[_>>2]|0)+(s<<2)>>2]=-0.0-(L*aw-k*ax);B=S*$-A*I;D=A*T-N*$;K=N*I-S*T;j=k*$-J*I;M=J*T-L*$;C=L*I-k*T;do{if(x){if((a[b+289|0]&1)==0){ay=B;az=D;aA=K;aB=j;aC=M;aD=C;break}ay=z*B;az=z*D;aA=z*K;aB=y*j;aC=y*M;aD=y*C}else{ay=B;az=D;aA=K;aB=j;aC=M;aD=C}}while(0);g[(c[X>>2]|0)+(e<<2)>>2]=ay;p=e+1|0;g[(c[X>>2]|0)+(p<<2)>>2]=az;u=e+2|0;g[(c[X>>2]|0)+(u<<2)>>2]=aA;g[(c[_>>2]|0)+(e<<2)>>2]=-0.0-aB;g[(c[_>>2]|0)+(p<<2)>>2]=-0.0-aC;g[(c[_>>2]|0)+(u<<2)>>2]=-0.0-aD;r=d+8|0;g[(c[r>>2]|0)+(f<<2)>>2]=ax;g[(c[r>>2]|0)+(v<<2)>>2]=aw;g[(c[r>>2]|0)+(s<<2)>>2]=av;g[(c[r>>2]|0)+(e<<2)>>2]=T;g[(c[r>>2]|0)+(p<<2)>>2]=I;g[(c[r>>2]|0)+(u<<2)>>2]=$;ag=0.0;ah=0.0;ai=0.0;aj=L;ak=k;al=J;am=N;an=S;ao=A;ap=ax;aq=aw;ar=av;as=T;at=I;au=$}$=+g[b+256>>2];if((c[Z>>2]&32|0)==0){aE=$*+g[d+4>>2]}else{aE=$}$=aE*+g[Y>>2];g[(c[ab>>2]|0)+(f<<2)>>2]=$*(q*ap+t*aq+w*ar);g[(c[ab>>2]|0)+(e<<2)>>2]=$*(q*as+t*at+w*au);if((c[Z>>2]&16|0)!=0){u=b+268|0;r=d+32|0;g[(c[r>>2]|0)+(f<<2)>>2]=+g[u>>2];g[(c[r>>2]|0)+(e<<2)>>2]=+g[u>>2]}if((a[b+288|0]&1)==0){aF=0.0;aG=0}else{au=n*+g[b+1024>>2];aF=au;aG=au>0.0?2:1}u=(aG|0)!=0;e=(a[b+1088|0]&1)==0;do{if(e&(u^1)){aH=4}else{r=c[l>>2]<<2;f=d+8|0;g[(c[f>>2]|0)+(r<<2)>>2]=F;p=r|1;g[(c[f>>2]|0)+(p<<2)>>2]=G;s=r|2;g[(c[f>>2]|0)+(s<<2)>>2]=H;do{if((a[E]&1)==0){au=H*ah-G*ai;w=F*ai-H*ag;at=G*ag-F*ah;g[(c[X>>2]|0)+(r<<2)>>2]=z*au;g[(c[X>>2]|0)+(p<<2)>>2]=z*w;g[(c[X>>2]|0)+(s<<2)>>2]=z*at;g[(c[_>>2]|0)+(r<<2)>>2]=y*au;g[(c[_>>2]|0)+(p<<2)>>2]=y*w;g[(c[_>>2]|0)+(s<<2)>>2]=y*at}else{if(x){break}g[(c[X>>2]|0)+(r<<2)>>2]=H*an-G*ao;g[(c[X>>2]|0)+(p<<2)>>2]=F*ao-H*am;g[(c[X>>2]|0)+(s<<2)>>2]=G*am-F*an;g[(c[_>>2]|0)+(r<<2)>>2]=-0.0-(H*ak-G*al);g[(c[_>>2]|0)+(p<<2)>>2]=-0.0-(F*al-H*aj);g[(c[_>>2]|0)+(s<<2)>>2]=-0.0-(G*aj-F*ak)}}while(0);s=b+176|0;p=b+180|0;f=+g[s>>2]==+g[p>>2];g[(c[ab>>2]|0)+(r<<2)>>2]=0.0;v=d+36|0;g[(c[v>>2]|0)+(r<<2)>>2]=0.0;o=d+40|0;g[(c[o>>2]|0)+(r<<2)>>2]=0.0;ae=c[Z>>2]|0;af=b+224|0;at=+g[((ae&512|0)==0?d+4|0:af)>>2];if(!(u&f|e)){if((ae&1|0)!=0){g[(c[d+32>>2]|0)+(r<<2)>>2]=+g[b+204>>2]}w=+g[b+1092>>2];au=+g[b+1072>>2];t=+g[s>>2];as=+g[p>>2];q=at*+g[Y>>2];L112:do{if(t>as){aI=1.0}else{if(t==as){aI=0.0;break}$=w/q;if($<0.0){do{if(au>=t){if(t-$<=au){break}aI=(t-au)/$;break L112}}while(0);aI=au=au){break}aI=(as-au)/$;break L112}}while(0);aI=au>as?0.0:1.0}}while(0);p=(c[ab>>2]|0)+(r<<2)|0;g[p>>2]=+g[p>>2]-n*aI*w;p=b+1096|0;s=(c[v>>2]|0)+(r<<2)|0;g[s>>2]=+g[Y>>2]*(-0.0- +g[p>>2])+ +g[s>>2];s=(c[o>>2]|0)+(r<<2)|0;g[s>>2]=+g[p>>2]*+g[Y>>2]+ +g[s>>2]}if(!u){aH=5;break}s=(c[ab>>2]|0)+(r<<2)|0;g[s>>2]=+g[s>>2]+aF*at*+g[Y>>2];if((c[Z>>2]&256|0)!=0){g[(c[d+32>>2]|0)+(r<<2)>>2]=+g[b+236>>2]}do{if(f){g[(c[v>>2]|0)+(r<<2)>>2]=-3.4028234663852886e+38;g[(c[o>>2]|0)+(r<<2)>>2]=3.4028234663852886e+38}else{s=(c[v>>2]|0)+(r<<2)|0;if((aG|0)==1){g[s>>2]=-3.4028234663852886e+38;g[(c[o>>2]|0)+(r<<2)>>2]=0.0;break}else{g[s>>2]=0.0;g[(c[o>>2]|0)+(r<<2)>>2]=3.4028234663852886e+38;break}}}while(0);at=1.0- +g[b+232>>2];w=+P(+at);do{if(at!=0.0){as=n*(F*+g[h>>2]+G*+g[h+4>>2]+H*+g[h+8>>2]-(F*+g[i>>2]+G*+g[i+4>>2]+H*+g[i+8>>2]));if((aG|0)==1){if(as>=0.0){break}au=as*(-0.0-w);o=(c[ab>>2]|0)+(r<<2)|0;if(au<=+g[o>>2]){break}g[o>>2]=au;break}else{if(as<=0.0){break}au=as*(-0.0-w);o=(c[ab>>2]|0)+(r<<2)|0;if(au>=+g[o>>2]){break}g[o>>2]=au;break}}}while(0);o=(c[ab>>2]|0)+(r<<2)|0;g[o>>2]=+g[af>>2]*+g[o>>2];aH=5}}while(0);if((a[b+289|0]&1)==0){aJ=0.0;aK=0}else{n=+g[b+1080>>2];aJ=n;aK=n>0.0?1:2}aG=(aK|0)!=0;i=(a[b+1104|0]&1)==0;if(i&(aG^1)){return}h=aa(c[l>>2]|0,aH)|0;g[(c[X>>2]|0)+(h<<2)>>2]=F;aH=h+1|0;g[(c[X>>2]|0)+(aH<<2)>>2]=G;l=h+2|0;g[(c[X>>2]|0)+(l<<2)>>2]=H;g[(c[_>>2]|0)+(h<<2)>>2]=-0.0-F;g[(c[_>>2]|0)+(aH<<2)>>2]=-0.0-G;g[(c[_>>2]|0)+(l<<2)>>2]=-0.0-H;l=b+184|0;n=+g[l>>2];_=b+188|0;aF=+g[_>>2];aH=n==aF;X=c[Z>>2]|0;u=b+240|0;aI=+g[((X&2048|0)==0?d+4|0:u)>>2];if(!(aG&aH|i)){if((X&4|0)==0){aL=n;aM=aF}else{g[(c[d+32>>2]|0)+(h<<2)>>2]=+g[b+220>>2];aL=+g[l>>2];aM=+g[_>>2]}aF=+g[b+1076>>2];n=+g[b+1108>>2];ak=aI*+g[Y>>2];L162:do{if(aL>aM){aN=1.0}else{if(aL==aM){aN=0.0;break}aj=n/ak;if(aj<0.0){do{if(aF>=aL){if(aL-aj<=aF){break}aN=(aL-aF)/aj;break L162}}while(0);aN=aF=aF){break}aN=(aM-aF)/aj;break L162}}while(0);aN=aF>aM?0.0:1.0}}while(0);g[(c[ab>>2]|0)+(h<<2)>>2]=aN*n;af=b+1112|0;g[(c[d+36>>2]|0)+(h<<2)>>2]=+g[Y>>2]*(-0.0- +g[af>>2]);g[(c[d+40>>2]|0)+(h<<2)>>2]=+g[af>>2]*+g[Y>>2]}if(!aG){return}aG=(c[ab>>2]|0)+(h<<2)|0;g[aG>>2]=+g[aG>>2]+aJ*aI*+g[Y>>2];if((c[Z>>2]&1024|0)!=0){g[(c[d+32>>2]|0)+(h<<2)>>2]=+g[b+252>>2]}do{if(aH){g[(c[d+36>>2]|0)+(h<<2)>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(h<<2)>>2]=3.4028234663852886e+38}else{Z=(c[d+36>>2]|0)+(h<<2)|0;if((aK|0)==1){g[Z>>2]=0.0;g[(c[d+40>>2]|0)+(h<<2)>>2]=3.4028234663852886e+38;break}else{g[Z>>2]=-3.4028234663852886e+38;g[(c[d+40>>2]|0)+(h<<2)>>2]=0.0;break}}}while(0);aI=1.0- +g[b+248>>2];aJ=+P(+aI);do{if(aI!=0.0){d=c[b+24>>2]|0;aH=c[b+28>>2]|0;n=F*+g[d+320>>2]+G*+g[d+324>>2]+H*+g[d+328>>2]-(F*+g[aH+320>>2]+G*+g[aH+324>>2]+H*+g[aH+328>>2]);if((aK|0)==1){if(n>=0.0){break}aN=n*(-0.0-aJ);aH=(c[ab>>2]|0)+(h<<2)|0;if(aN<=+g[aH>>2]){break}g[aH>>2]=aN;break}else{if(n<=0.0){break}aN=n*(-0.0-aJ);aH=(c[ab>>2]|0)+(h<<2)|0;if(aN>=+g[aH>>2]){break}g[aH>>2]=aN;break}}}while(0);aK=(c[ab>>2]|0)+(h<<2)|0;g[aK>>2]=+g[u>>2]*+g[aK>>2];return}function aqW(a){a=a|0;return}function aqX(a){a=a|0;return 196}function aqY(a){a=a|0;return}function aqZ(a,b,d,e){a=a|0;b=b|0;d=+d;e=e|0;var f=0;if((b|0)==2){if((e|0)<1){g[a+224>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|512;return}if((e|0)<3){g[a+256>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|32;return}if((e|0)==3){g[a+240>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|2048;return}if((e|0)>=6){return}g[a+272>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|128;return}else if((b|0)==3){if((e|0)<1){g[a+204>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|1;return}if((e|0)!=3){return}g[a+220>>2]=d;f=a+292|0;c[f>>2]=c[f>>2]|4;return}else if((b|0)==4){if((e|0)<1){g[a+236>>2]=d;b=a+292|0;c[b>>2]=c[b>>2]|256;return}if((e|0)<3){g[a+268>>2]=d;b=a+292|0;c[b>>2]=c[b>>2]|16;return}if((e|0)==3){g[a+252>>2]=d;b=a+292|0;c[b>>2]=c[b>>2]|1024;return}if((e|0)>=6){return}g[a+284>>2]=d;e=a+292|0;c[e>>2]=c[e>>2]|64;return}else{return}}function aq_(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;do{if((b|0)==2){if((c|0)<1){d=+g[a+224>>2];break}if((c|0)<3){d=+g[a+256>>2];break}if((c|0)==3){d=+g[a+240>>2];break}if((c|0)>=6){d=3.4028234663852886e+38;break}d=+g[a+272>>2]}else if((b|0)==3){if((c|0)<1){d=+g[a+204>>2];break}if((c|0)!=3){d=3.4028234663852886e+38;break}d=+g[a+220>>2]}else if((b|0)==4){if((c|0)<1){d=+g[a+236>>2];break}if((c|0)<3){d=+g[a+268>>2];break}if((c|0)==3){d=+g[a+252>>2];break}if((c|0)>=6){d=3.4028234663852886e+38;break}d=+g[a+284>>2]}else{d=3.4028234663852886e+38}}while(0);return+d}function aq$(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aq0(b,d,e){b=b|0;d=d|0;e=e|0;aq3(b|0,d,e)|0;g[d+44>>2]=+g[b+44>>2];g[d+48>>2]=+g[b+48>>2];g[d+52>>2]=+g[b+52>>2];g[d+56>>2]=+g[b+56>>2];g[d+60>>2]=+g[b+60>>2];g[d+64>>2]=+g[b+64>>2];g[d+68>>2]=+g[b+68>>2];g[d+72>>2]=+g[b+72>>2];g[d+76>>2]=+g[b+76>>2];g[d+80>>2]=+g[b+80>>2];g[d+84>>2]=+g[b+84>>2];g[d+88>>2]=+g[b+88>>2];g[d+92>>2]=+g[b+92>>2];g[d+96>>2]=+g[b+96>>2];g[d+100>>2]=+g[b+100>>2];g[d+104>>2]=+g[b+104>>2];g[d+108>>2]=+g[b+108>>2];g[d+112>>2]=+g[b+112>>2];g[d+116>>2]=+g[b+116>>2];g[d+120>>2]=+g[b+120>>2];g[d+124>>2]=+g[b+124>>2];g[d+128>>2]=+g[b+128>>2];g[d+132>>2]=+g[b+132>>2];g[d+136>>2]=+g[b+136>>2];g[d+140>>2]=+g[b+140>>2];g[d+144>>2]=+g[b+144>>2];g[d+148>>2]=+g[b+148>>2];g[d+152>>2]=+g[b+152>>2];g[d+156>>2]=+g[b+156>>2];g[d+160>>2]=+g[b+160>>2];g[d+164>>2]=+g[b+164>>2];g[d+168>>2]=+g[b+168>>2];g[d+172>>2]=+g[b+180>>2];g[d+176>>2]=+g[b+176>>2];g[d+180>>2]=+g[b+188>>2];g[d+184>>2]=+g[b+184>>2];c[d+188>>2]=a[b+172|0]&1;c[d+192>>2]=a[b+41|0]&1;return 17128}function aq1(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0;f=i;i=i+32|0;h=f|0;j=f+16|0;c[b+4>>2]=d;c[b>>2]=23440;c[b+8>>2]=-1;c[b+12>>2]=-1;g[b+16>>2]=3.4028234663852886e+38;a[b+20|0]=1;a[b+21|0]=0;c[b+24>>2]=e;e=b+28|0;d=h;k=j;do{if((a[43016]|0)==0){if((b1(43016)|0)==0){break}aDD(d|0,0,16);ap$(41520,0.0,0,0,h);bG(198,41520,o|0)|0}}while(0);aDD(k|0,0,16);apV(41520,0.0,j);c[e>>2]=41520;g[b+32>>2]=0.0;g[b+36>>2]=.30000001192092896;i=f;return}function aq2(){var b=0,c=0,d=0;b=i;i=i+32|0;c=b|0;d=b+16|0;do{if((a[43016]|0)==0){if((b1(43016)|0)==0){break}aDD(c|0,0,16);ap$(41520,0.0,0,0,c);bG(198,41520,o|0)|0}}while(0);aDD(d|0,0,16);apV(41520,0.0,d);i=b;return}function aq3(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;f=e;h=b+24|0;c[d>>2]=dj[c[(c[f>>2]|0)+28>>2]&511](e,c[h>>2]|0)|0;i=b+28|0;c[d+4>>2]=dj[c[(c[f>>2]|0)+28>>2]&511](e,c[i>>2]|0)|0;j=dj[c[(c[f>>2]|0)+40>>2]&511](e,b)|0;k=dj[c[(c[f>>2]|0)+28>>2]&511](e,j)|0;c[d+8>>2]=k;if((k|0)!=0){cv[c[(c[e>>2]|0)+48>>2]&2047](e,j)}c[d+12>>2]=c[b+4>>2];c[d+24>>2]=a[b+21|0]&1;c[d+20>>2]=c[b+12>>2];c[d+16>>2]=c[b+8>>2];g[d+28>>2]=+g[b+32>>2];g[d+32>>2]=+g[b+36>>2];j=d+36|0;c[j>>2]=0;d=c[h>>2]|0;if((c[d+480>>2]|0)>0){e=0;k=d;while(1){if((c[(c[k+488>>2]|0)+(e<<2)>>2]|0)==(b|0)){c[j>>2]=1;l=c[h>>2]|0}else{l=k}d=e+1|0;if((d|0)<(c[l+480>>2]|0)){e=d;k=l}else{break}}}l=c[i>>2]|0;if((c[l+480>>2]|0)>0){m=0;n=l}else{return 17056}while(1){if((c[(c[n+488>>2]|0)+(m<<2)>>2]|0)==(b|0)){c[j>>2]=1;o=c[i>>2]|0}else{o=n}l=m+1|0;if((l|0)<(c[o+480>>2]|0)){m=l;n=o}else{break}}return 17056}function aq4(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;c=a+4|0;if(+g[c>>2]<=0.0){return}d=a|0;e=+ck(+(+g[b>>2]- +g[d>>2]),6.2831854820251465);do{if(e<-3.1415927410125732){f=e+6.2831854820251465}else{if(e<=3.1415927410125732){f=e;break}f=e-6.2831854820251465}}while(0);e=+g[c>>2];if(f<=e&f>=-0.0-e){return}h=+g[d>>2];if(f>0.0){f=+ck(+(h+e),6.2831854820251465);do{if(f<-3.1415927410125732){i=f+6.2831854820251465}else{if(f<=3.1415927410125732){i=f;break}i=f-6.2831854820251465}}while(0);g[b>>2]=i;return}else{i=+ck(+(h-e),6.2831854820251465);do{if(i<-3.1415927410125732){j=i+6.2831854820251465}else{if(i<=3.1415927410125732){j=i;break}j=i-6.2831854820251465}}while(0);g[b>>2]=j;return}}function aq5(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aq6(d,f,h,i,j,k){d=d|0;f=f|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0,B=0,C=0,D=0,E=0;l=d|0;c[l>>2]=22576;b[d+4>>1]=-2;m=d+6|0;b[m>>1]=-1;n=d+8|0;o=d+24|0;p=d+92|0;c[p>>2]=j;c[d+96>>2]=0;q=d+100|0;a[q]=0;c[d+104>>2]=0;r=d+108|0;c[r>>2]=0;s=i+1&65535;if((j|0)==0){c[9806]=(c[9806]|0)+1;j=aDx(95)|0;do{if((j|0)==0){t=0}else{i=-(j+4|0)&15;u=j+(i+4)|0;c[j+i>>2]=j;if((u|0)==0){t=0;break}i=u;ayI(i);t=i}}while(0);c[p>>2]=t;a[q]=1}if(!k){c[9806]=(c[9806]|0)+1;k=aDx(43)|0;do{if((k|0)==0){v=0}else{q=-(k+4|0)&15;t=k+(q+4)|0;c[k+q>>2]=k;if((t|0)==0){v=0;break}aDD(t|0,0,24);c[t>>2]=24728;a[k+(q+24)|0]=1;c[k+(q+20)>>2]=0;c[k+(q+12)>>2]=0;c[k+(q|16)>>2]=0;v=t}}while(0);k=d+112|0;c[k>>2]=v;c[9806]=(c[9806]|0)+1;v=aDx(175)|0;do{if((v|0)==0){w=0}else{t=-(v+4|0)&15;q=v+(t+4)|0;c[v+t>>2]=v;if((q|0)==0){w=0;break}t=q;awx(t,c[k>>2]|0);w=t}}while(0);c[r>>2]=w;a[w+153|0]=1}w=n;r=f;c[w>>2]=c[r>>2];c[w+4>>2]=c[r+4>>2];c[w+8>>2]=c[r+8>>2];c[w+12>>2]=c[r+12>>2];r=o;w=h;c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];x=+((e[m>>1]|0)>>>0);y=x/(+g[d+28>>2]- +g[d+12>>2]);z=x/(+g[d+32>>2]- +g[d+16>>2]);g[d+40>>2]=x/(+g[o>>2]- +g[n>>2]);g[d+44>>2]=y;g[d+48>>2]=z;g[d+52>>2]=0.0;n=s&65535;c[9806]=(c[9806]|0)+1;o=aDx((n<<6|4)+15|0)|0;if((o|0)==0){A=0}else{w=-(o+4|0)&15;c[o+w>>2]=o;A=o+(w+4)|0}if(s<<16>>16!=0){w=A+(n<<6)|0;o=A;do{c[o>>2]=0;c[o+8>>2]=0;o=o+64|0;}while((o|0)!=(w|0))}w=d+60|0;c[w>>2]=A;b[d+58>>1]=s;b[d+56>>1]=0;b[d+64>>1]=1;if((s&65535)>1){o=1;r=A;while(1){h=o+1&65535;b[r+((o&65535)<<6)+48>>1]=h;f=c[w>>2]|0;if((h&65535)<(s&65535)){o=h;r=f}else{B=f;break}}}else{B=A}b[B+(n-1<<6)+48>>1]=0;c[9806]=(c[9806]|0)+1;B=(n<<3|4)+15|0;n=aDx(B)|0;do{if((n|0)==0){c[d+80>>2]=0;C=0}else{A=-(n+4|0)&15;r=n+(A+4)|0;c[n+A>>2]=n;c[d+80>>2]=r;if((r|0)==0){C=0;break}C=r}}while(0);n=d+68|0;c[n>>2]=C;c[9806]=(c[9806]|0)+1;C=aDx(B)|0;do{if((C|0)==0){c[d+84>>2]=0;D=0}else{r=-(C+4|0)&15;A=C+(r+4)|0;c[C+r>>2]=C;c[d+84>>2]=A;if((A|0)==0){D=0;break}D=A}}while(0);C=d+72|0;c[C>>2]=D;c[9806]=(c[9806]|0)+1;D=aDx(B)|0;do{if((D|0)==0){c[d+88>>2]=0;E=0}else{B=-(D+4|0)&15;A=D+(B+4)|0;c[D+B>>2]=D;c[d+88>>2]=A;if((A|0)==0){E=0;break}E=A}}while(0);D=d+76|0;c[D>>2]=E;c[c[w>>2]>>2]=0;b[(c[w>>2]|0)+48>>1]=0;b[(c[w>>2]|0)+54>>1]=1;b[c[n>>2]>>1]=0;b[(c[n>>2]|0)+2>>1]=0;b[(c[n>>2]|0)+4>>1]=b[m>>1]|0;b[(c[n>>2]|0)+6>>1]=0;b[(c[w>>2]|0)+50>>1]=0;b[(c[w>>2]|0)+56>>1]=1;b[c[C>>2]>>1]=0;b[(c[C>>2]|0)+2>>1]=0;b[(c[C>>2]|0)+4>>1]=b[m>>1]|0;b[(c[C>>2]|0)+6>>1]=0;b[(c[w>>2]|0)+52>>1]=0;b[(c[w>>2]|0)+58>>1]=1;b[c[D>>2]>>1]=0;b[(c[D>>2]|0)+2>>1]=0;b[(c[D>>2]|0)+4>>1]=b[m>>1]|0;b[(c[D>>2]|0)+6>>1]=0;c[l>>2]=25976;return}function aq7(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0;j=b|0;c[j>>2]=22648;c[b+4>>2]=-2;k=b+8|0;c[k>>2]=2147483647;l=b+12|0;m=b+28|0;n=b+100|0;c[n>>2]=h;c[b+104>>2]=0;o=b+108|0;a[o]=0;c[b+112>>2]=0;p=b+116|0;c[p>>2]=0;q=f+1|0;if((h|0)==0){c[9806]=(c[9806]|0)+1;h=aDx(95)|0;do{if((h|0)==0){r=0}else{s=-(h+4|0)&15;t=h+(s+4)|0;c[h+s>>2]=h;if((t|0)==0){r=0;break}s=t;ayI(s);r=s}}while(0);c[n>>2]=r;a[o]=1}if(!i){c[9806]=(c[9806]|0)+1;i=aDx(43)|0;do{if((i|0)==0){u=0}else{o=-(i+4|0)&15;r=i+(o+4)|0;c[i+o>>2]=i;if((r|0)==0){u=0;break}aDD(r|0,0,24);c[r>>2]=24728;a[i+(o+24)|0]=1;c[i+(o+20)>>2]=0;c[i+(o+12)>>2]=0;c[i+(o|16)>>2]=0;u=r}}while(0);i=b+120|0;c[i>>2]=u;c[9806]=(c[9806]|0)+1;u=aDx(175)|0;do{if((u|0)==0){v=0}else{r=-(u+4|0)&15;o=u+(r+4)|0;c[u+r>>2]=u;if((o|0)==0){v=0;break}r=o;awx(r,c[i>>2]|0);v=r}}while(0);c[p>>2]=v;a[v+153|0]=1}v=l;p=d;c[v>>2]=c[p>>2];c[v+4>>2]=c[p+4>>2];c[v+8>>2]=c[p+8>>2];c[v+12>>2]=c[p+12>>2];p=m;v=e;c[p>>2]=c[v>>2];c[p+4>>2]=c[v+4>>2];c[p+8>>2]=c[v+8>>2];c[p+12>>2]=c[v+12>>2];w=+((c[k>>2]|0)>>>0>>>0);x=w/(+g[b+32>>2]- +g[b+16>>2]);y=w/(+g[b+36>>2]- +g[b+20>>2]);g[b+44>>2]=w/(+g[m>>2]- +g[l>>2]);g[b+48>>2]=x;g[b+52>>2]=y;g[b+56>>2]=0.0;l=bT(q|0,76)|0;c[9806]=(c[9806]|0)+1;m=aDx(E?18:l+19|0)|0;if((m|0)==0){z=0}else{l=-(m+4|0)&15;c[m+l>>2]=m;z=m+(l+4)|0}if((q|0)!=0){l=z+(q*76|0)|0;m=z;do{c[m>>2]=0;c[m+8>>2]=0;m=m+76|0;}while((m|0)!=(l|0))}l=b+68|0;c[l>>2]=z;c[b+64>>2]=q;c[b+60>>2]=0;c[b+72>>2]=1;if(q>>>0>1){m=1;v=z;while(1){p=m+1|0;c[v+(m*76|0)+48>>2]=p;e=c[l>>2]|0;if(p>>>0>>0){m=p;v=e}else{A=e;break}}}else{A=z}c[A+(f*76|0)+48>>2]=0;c[9806]=(c[9806]|0)+1;f=(q<<4|4)+15|0;q=aDx(f)|0;do{if((q|0)==0){c[b+88>>2]=0;B=0}else{A=-(q+4|0)&15;z=q+(A+4)|0;c[q+A>>2]=q;c[b+88>>2]=z;if((z|0)==0){B=0;break}B=z}}while(0);q=b+76|0;c[q>>2]=B;c[9806]=(c[9806]|0)+1;B=aDx(f)|0;do{if((B|0)==0){c[b+92>>2]=0;C=0}else{z=-(B+4|0)&15;A=B+(z+4)|0;c[B+z>>2]=B;c[b+92>>2]=A;if((A|0)==0){C=0;break}C=A}}while(0);B=b+80|0;c[B>>2]=C;c[9806]=(c[9806]|0)+1;C=aDx(f)|0;do{if((C|0)==0){c[b+96>>2]=0;D=0}else{f=-(C+4|0)&15;A=C+(f+4)|0;c[C+f>>2]=C;c[b+96>>2]=A;if((A|0)==0){D=0;break}D=A}}while(0);C=b+84|0;c[C>>2]=D;c[c[l>>2]>>2]=0;c[(c[l>>2]|0)+48>>2]=0;c[(c[l>>2]|0)+60>>2]=1;c[c[q>>2]>>2]=0;c[(c[q>>2]|0)+4>>2]=0;c[(c[q>>2]|0)+8>>2]=c[k>>2];c[(c[q>>2]|0)+12>>2]=0;c[(c[l>>2]|0)+52>>2]=0;c[(c[l>>2]|0)+64>>2]=1;c[c[B>>2]>>2]=0;c[(c[B>>2]|0)+4>>2]=0;c[(c[B>>2]|0)+8>>2]=c[k>>2];c[(c[B>>2]|0)+12>>2]=0;c[(c[l>>2]|0)+56>>2]=0;c[(c[l>>2]|0)+68>>2]=1;c[c[C>>2]>>2]=0;c[(c[C>>2]|0)+4>>2]=0;c[(c[C>>2]|0)+8>>2]=c[k>>2];c[(c[C>>2]|0)+12>>2]=0;c[j>>2]=23784;return}function aq8(a){a=a|0;arU(a|0);return}function aq9(a){a=a|0;arU(a|0);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-124+120>>2]|0);return}function ara(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0;k=alh(a,b,d,f,g,h,i,j)|0;j=c[a+68>>2]|0;l=c[a+116>>2]|0;if((l|0)==0){m=j+(k*76|0)|0;return m|0}c[j+(k*76|0)+72>>2]=c5[c[(c[l>>2]|0)+8>>2]&63](l,b,d,e,f,g,h,i,0)|0;m=j+(k*76|0)|0;return m|0}function arb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+116>>2]|0;if((e|0)!=0){dA[c[(c[e>>2]|0)+12>>2]&511](e,c[b+72>>2]|0,d)}alk(a,c[b+12>>2]|0,d);return}function arc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=b+16|0;h=d;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=b+32|0;g=e;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];alL(a,c[b+12>>2]|0,d,e,f);g=c[a+116>>2]|0;if((g|0)==0){return}co[c[(c[g>>2]|0)+16>>2]&255](g,c[b+72>>2]|0,d,e,f);return}function ard(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=d;d=b+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];d=e;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function are(a){a=a|0;return}function arf(a){a=a|0;return}function arg(a){a=a|0;return c[a+100>>2]|0}function arh(a){a=a|0;return c[a+100>>2]|0}function ari(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((c[a+60>>2]|0)!=0){return}c[a+72>>2]=1;b=a+64|0;d=c[b>>2]|0;e=a+68|0;if(d>>>0>1){a=1;while(1){f=a+1|0;c[(c[e>>2]|0)+(a*76|0)+48>>2]=f;g=c[b>>2]|0;if(f>>>0>>0){a=f}else{h=g;break}}}else{h=d}c[(c[e>>2]|0)+((h-1|0)*76|0)+48>>2]=0;return}function arj(a){a=a|0;return c[a+92>>2]|0}function ark(a){a=a|0;return c[a+92>>2]|0}function arl(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if((b[a+56>>1]|0)!=0){return}b[a+64>>1]=1;d=a+58|0;e=b[d>>1]|0;f=a+60|0;if((e&65535)>1){a=1;while(1){g=a+1&65535;b[(c[f>>2]|0)+((a&65535)<<6)+48>>1]=g;h=b[d>>1]|0;if((g&65535)<(h&65535)){a=g}else{i=h;break}}}else{i=e}b[(c[f>>2]|0)+((i&65535)-1<<6)+48>>1]=0;return}function arm(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0;h=c[a+116>>2]|0;if((h|0)!=0){c_[c[(c[h>>2]|0)+24>>2]&127](h,b,d,e,f,g);return}g=a+60|0;f=c[g>>2]|0;if(f<<1>>>0<=1){return}d=a+76|0;b=e|0;h=e;e=a+68|0;a=1;i=f;while(1){f=c[d>>2]|0;if((c[f+(a<<3)>>2]&1|0)==0){j=i}else{k=c[(c[h>>2]|0)+8>>2]|0;l=(c[e>>2]|0)+((c[f+(a<<3)+4>>2]|0)*76|0)|0;dj[k&511](b,l)|0;j=c[g>>2]|0}l=a+1|0;if(l>>>0<(j<<1|1)>>>0){a=l;i=j}else{break}}return}function arn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=c[a+116>>2]|0;if((f|0)!=0){dI[c[(c[f>>2]|0)+28>>2]&1023](f,b,d,e);return}f=a+60|0;h=c[f>>2]|0;if(h<<1>>>0<=1){return}i=a+76|0;j=a+68|0;a=b|0;k=b+8|0;l=b+4|0;b=d+4|0;m=e;n=d+8|0;o=d|0;d=1;p=h;while(1){h=c[i>>2]|0;do{if((c[h+(d<<3)>>2]&1|0)==0){q=p}else{r=c[h+(d<<3)+4>>2]|0;s=c[j>>2]|0;do{if(+g[a>>2]>+g[s+(r*76|0)+32>>2]){t=0}else{if(+g[o>>2]<+g[s+(r*76|0)+16>>2]){t=0;break}t=1}}while(0);do{if(+g[k>>2]>+g[s+(r*76|0)+40>>2]){u=0}else{if(+g[n>>2]<+g[s+(r*76|0)+24>>2]){u=0;break}u=t}}while(0);if(+g[l>>2]>+g[s+(r*76|0)+36>>2]){q=p;break}if(+g[b>>2]<+g[s+(r*76|0)+20>>2]|u^1){q=p;break}v=s+(r*76|0)|0;w=c[(c[m>>2]|0)+8>>2]|0;dj[w&511](e,v)|0;q=c[f>>2]|0}}while(0);h=d+1|0;if(h>>>0<(q<<1|1)>>>0){d=h;p=q}else{break}}return}function aro(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;d=i;i=i+40|0;e=d|0;f=d+8|0;g=d+24|0;h=a+100|0;j=c[h>>2]|0;if(!(cA[c[(c[j>>2]|0)+56>>2]&4095](j)|0)){i=d;return}j=c[h>>2]|0;k=cA[c[(c[j>>2]|0)+28>>2]&4095](j)|0;j=k+4|0;l=c[j>>2]|0;if((l|0)>1){arQ(k,0,l-1|0);m=c[j>>2]|0}else{m=l}l=a+112|0;a=m-(c[l>>2]|0)|0;aDD(f|0,0,16);arP(k,a,f);c[l>>2]=0;f=c[j>>2]|0;do{if((f|0)>0){a=k+12|0;m=0;n=0;o=0;p=f;q=0;while(1){r=c[a>>2]|0;s=r+(o<<4)|0;t=s|0;u=c[t>>2]|0;v=r+(o<<4)+4|0;r=c[v>>2]|0;if((u|0)==(n|0)){if((r|0)==(m|0)){w=n;x=m;y=424}else{z=n;y=420}}else{z=u;y=420}L540:do{if((y|0)==420){y=0;u=z+60|0;A=r+60|0;B=r+48|0;C=z+48|0;D=0;while(1){if((D|0)>=3){E=z;F=r;G=p;H=q;break L540}if((c[u+(D<<2)>>2]|0)>>>0<(c[B+(D<<2)>>2]|0)>>>0){w=z;x=r;y=424;break L540}if((c[A+(D<<2)>>2]|0)>>>0<(c[C+(D<<2)>>2]|0)>>>0){w=z;x=r;y=424;break}else{D=D+1|0}}}}while(0);if((y|0)==424){y=0;r=c[h>>2]|0;dA[c[(c[r>>2]|0)+32>>2]&511](r,s,b);c[t>>2]=0;c[v>>2]=0;r=(c[l>>2]|0)+1|0;c[l>>2]=r;c[9792]=(c[9792]|0)-1;E=w;F=x;G=c[j>>2]|0;H=r}r=o+1|0;if((r|0)<(G|0)){m=F;n=E;o=r;p=G;q=H}else{break}}q=e|0;if((G|0)<=1){I=G;J=q;K=H;break}arQ(k,0,G-1|0);I=c[j>>2]|0;J=q;K=c[l>>2]|0}else{I=f;J=e|0;K=0}}while(0);aDD(g|0,0,16);arP(k,I-K|0,g);c[l>>2]=0;i=d;return}function arp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b;b=a+12|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];b=d;d=a+28|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];return}function arq(a){a=a|0;arR(a|0);return}function arr(a){a=a|0;arR(a|0);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-116+112>>2]|0);return}function ars(a,b,d,e,f,g,h,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0;k=u0(a,b,d,f,g,h,i,j)|0;j=c[a+60>>2]|0;l=k&65535;k=c[a+108>>2]|0;if((k|0)==0){m=j+(l<<6)|0;return m|0}c[j+(l<<6)+60>>2]=c5[c[(c[k>>2]|0)+8>>2]&63](k,b,d,e,f,g,h,i,0)|0;m=j+(l<<6)|0;return m|0}function art(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+108>>2]|0;if((e|0)!=0){dA[c[(c[e>>2]|0)+12>>2]&511](e,c[b+60>>2]|0,d)}u3(a,c[b+12>>2]&65535,d);return}function aru(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=b+16|0;h=d;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=b+32|0;g=e;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];vc(a,c[b+12>>2]&65535,d,e,f);g=c[a+108>>2]|0;if((g|0)==0){return}co[c[(c[g>>2]|0)+16>>2]&255](g,c[b+60>>2]|0,d,e,f);return}function arv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=d;d=b+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];d=e;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function arw(a,d,f,g,h,i){a=a|0;d=d|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0;j=c[a+108>>2]|0;if((j|0)!=0){c_[c[(c[j>>2]|0)+24>>2]&127](j,d,f,g,h,i);return}i=a+56|0;h=b[i>>1]|0;if((h&65535)<<1>>>0<=1){return}f=a+68|0;d=g|0;j=g;g=a+60|0;a=2;k=1;l=h;while(1){h=c[f>>2]|0;if((b[h+(k<<2)>>1]&1)==0){m=l}else{n=c[(c[j>>2]|0)+8>>2]|0;o=(c[g>>2]|0)+((e[h+(k<<2)+2>>1]|0)<<6)|0;dj[n&511](d,o)|0;m=b[i>>1]|0}o=a&65535;if(o>>>0>=((m&65535)<<1|1)>>>0){break}a=a+1&65535;k=o;l=m}return}function arx(a,d,f,h){a=a|0;d=d|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;i=c[a+108>>2]|0;if((i|0)!=0){dI[c[(c[i>>2]|0)+28>>2]&1023](i,d,f,h);return}i=a+56|0;j=b[i>>1]|0;if((j&65535)<<1>>>0<=1){return}k=a+68|0;l=a+60|0;a=d|0;m=d+8|0;n=d+4|0;d=f+4|0;o=h;p=f+8|0;q=f|0;f=2;r=1;s=j;while(1){j=c[k>>2]|0;do{if((b[j+(r<<2)>>1]&1)==0){t=s}else{u=c[l>>2]|0;v=e[j+(r<<2)+2>>1]|0;do{if(+g[a>>2]>+g[u+(v<<6)+32>>2]){w=0}else{if(+g[q>>2]<+g[u+(v<<6)+16>>2]){w=0;break}w=1}}while(0);do{if(+g[m>>2]>+g[u+(v<<6)+40>>2]){x=0}else{if(+g[p>>2]<+g[u+(v<<6)+24>>2]){x=0;break}x=w}}while(0);if(+g[n>>2]>+g[u+(v<<6)+36>>2]){t=s;break}if(+g[d>>2]<+g[u+(v<<6)+20>>2]|x^1){t=s;break}y=u+(v<<6)|0;z=c[(c[o>>2]|0)+8>>2]|0;dj[z&511](h,y)|0;t=b[i>>1]|0}}while(0);j=f&65535;if(j>>>0>=((t&65535)<<1|1)>>>0){break}f=f+1&65535;r=j;s=t}return}function ary(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;d=i;i=i+40|0;f=d|0;g=d+8|0;h=d+24|0;j=a+92|0;k=c[j>>2]|0;if(!(cA[c[(c[k>>2]|0)+56>>2]&4095](k)|0)){i=d;return}k=c[j>>2]|0;l=cA[c[(c[k>>2]|0)+28>>2]&4095](k)|0;k=l+4|0;m=c[k>>2]|0;if((m|0)>1){arQ(l,0,m-1|0);n=c[k>>2]|0}else{n=m}m=a+104|0;a=n-(c[m>>2]|0)|0;aDD(g|0,0,16);arP(l,a,g);c[m>>2]=0;g=c[k>>2]|0;do{if((g|0)>0){a=l+12|0;n=0;o=0;p=0;q=g;r=0;while(1){s=c[a>>2]|0;t=s+(p<<4)|0;u=t|0;v=c[u>>2]|0;w=s+(p<<4)+4|0;s=c[w>>2]|0;if((v|0)==(o|0)){if((s|0)==(n|0)){x=o;y=n;z=501}else{A=o;z=497}}else{A=v;z=497}L630:do{if((z|0)==497){z=0;v=A+54|0;B=s+54|0;C=s+48|0;D=A+48|0;E=0;while(1){if((E|0)>=3){F=A;G=s;H=q;I=r;break L630}if((e[v+(E<<1)>>1]|0)<(e[C+(E<<1)>>1]|0)){x=A;y=s;z=501;break L630}if((e[B+(E<<1)>>1]|0)<(e[D+(E<<1)>>1]|0)){x=A;y=s;z=501;break}else{E=E+1|0}}}}while(0);if((z|0)==501){z=0;s=c[j>>2]|0;dA[c[(c[s>>2]|0)+32>>2]&511](s,t,b);c[u>>2]=0;c[w>>2]=0;s=(c[m>>2]|0)+1|0;c[m>>2]=s;c[9792]=(c[9792]|0)-1;F=x;G=y;H=c[k>>2]|0;I=s}s=p+1|0;if((s|0)<(H|0)){n=G;o=F;p=s;q=H;r=I}else{break}}r=f|0;if((H|0)<=1){J=H;K=r;L=I;break}arQ(l,0,H-1|0);J=c[k>>2]|0;K=r;L=c[m>>2]|0}else{J=g;K=f|0;L=0}}while(0);aDD(h|0,0,16);arP(l,J-L|0,h);c[m>>2]=0;i=d;return}function arz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b;b=a+8|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];b=d;d=a+24|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];return}function arA(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function arB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function arC(a,b,c){a=a|0;b=b|0;c=c|0;return}function arD(a,b,c){a=a|0;b=b|0;c=c|0;return}function arE(a){a=a|0;return 0}function arF(a,b,c){a=a|0;b=b|0;c=c|0;return}function arG(a,b){a=a|0;b=b|0;return}function arH(a,b,c){a=a|0;b=b|0;c=c|0;return}function arI(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function arJ(a){a=a|0;return 1}function arK(a,b){a=a|0;b=b|0;return}function arL(a,b){a=a|0;b=b|0;return}function arM(a){a=a|0;return c[a+16>>2]|0}function arN(a){a=a|0;return c[a+16>>2]|0}function arO(a){a=a|0;return a+4|0}function arP(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=b+4|0;g=c[f>>2]|0;if(!((g|0)<=(d|0)&(g|0)<(d|0))){c[f>>2]=d;return}h=b+8|0;if((c[h>>2]|0)<(d|0)){if((d|0)==0){i=0;j=g}else{c[9806]=(c[9806]|0)+1;k=aDx((d<<4|4)+15|0)|0;if((k|0)==0){l=0}else{m=-(k+4|0)&15;c[k+m>>2]=k;l=k+(m+4)|0}i=l;j=c[f>>2]|0}l=b+12|0;if((j|0)>0){m=0;do{k=c[l>>2]|0;c[i+(m<<4)>>2]=c[k+(m<<4)>>2];c[i+(m<<4)+4>>2]=c[k+(m<<4)+4>>2];c[i+(m<<4)+8>>2]=c[k+(m<<4)+8>>2];c[i+(m<<4)+12>>2]=c[k+(m<<4)+12>>2];m=m+1|0;}while((m|0)<(j|0))}j=c[l>>2]|0;m=b+16|0;if((j|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-16+12>>2]|0)}c[l>>2]=0}a[m]=1;c[l>>2]=i;c[h>>2]=d;n=l}else{n=b+12|0}b=e|0;l=e+4|0;h=e+8|0;i=e+12|0;e=g;do{g=c[n>>2]|0;c[g+(e<<4)>>2]=c[b>>2];c[g+(e<<4)+4>>2]=c[l>>2];c[g+(e<<4)+8>>2]=c[h>>2];c[g+(e<<4)+12>>2]=c[i>>2];e=e+1|0;}while((e|0)<(d|0));c[f>>2]=d;return}function arQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;e=(d+b|0)/2|0;f=a+12|0;g=c[f>>2]|0;h=c[g+(e<<4)>>2]|0;i=c[g+(e<<4)+4>>2]|0;j=c[g+(e<<4)+8>>2]|0;e=(h|0)==0;k=(i|0)==0;l=i+12|0;m=h+12|0;n=d;o=b;p=g;while(1){g=o;L690:while(1){q=c[p+(g<<4)>>2]|0;if((q|0)==0){r=-1}else{r=c[q+12>>2]|0}if(e){s=-1}else{s=c[m>>2]|0}t=c[p+(g<<4)+4>>2]|0;if((t|0)==0){u=-1}else{u=c[t+12>>2]|0}if(k){v=-1}else{v=c[l>>2]|0}do{if((r|0)<=(s|0)){w=(q|0)==(h|0);x=w&(u|0)>(v|0);if(x|w^1){if(x){break}else{break L690}}if((t|0)!=(i|0)){break L690}if((c[p+(g<<4)+8>>2]|0)>>>0<=j>>>0){break L690}}}while(0);g=g+1|0}L712:do{if(e){x=n;while(1){w=c[p+(x<<4)>>2]|0;y=(w|0)==0;if(y){z=-1}else{z=c[w+12>>2]|0}if(k){A=-1}else{A=c[l>>2]|0}w=c[p+(x<<4)+4>>2]|0;if((w|0)==0){B=-1}else{B=c[w+12>>2]|0}do{if((z|0)>=-1){C=y&(A|0)>(B|0);if(C|y^1){if(C){break}else{D=x;break L712}}if((i|0)!=(w|0)){D=x;break L712}if(j>>>0<=(c[p+(x<<4)+8>>2]|0)>>>0){D=x;break L712}}}while(0);x=x-1|0}}else{x=c[m>>2]|0;w=n;while(1){y=c[p+(w<<4)>>2]|0;if((y|0)==0){E=-1}else{E=c[y+12>>2]|0}if(k){F=-1}else{F=c[l>>2]|0}C=c[p+(w<<4)+4>>2]|0;if((C|0)==0){G=-1}else{G=c[C+12>>2]|0}do{if((x|0)<=(E|0)){H=(h|0)==(y|0);I=H&(F|0)>(G|0);if(I|H^1){if(I){break}else{D=w;break L712}}if((i|0)!=(C|0)){D=w;break L712}if(j>>>0<=(c[p+(w<<4)+8>>2]|0)>>>0){D=w;break L712}}}while(0);w=w-1|0}}}while(0);if((g|0)>(D|0)){J=D;K=g}else{w=c[p+(g<<4)+8>>2]|0;x=c[p+(g<<4)+12>>2]|0;C=p+(g<<4)|0;y=p+(D<<4)|0;c[C>>2]=c[y>>2];c[C+4>>2]=c[y+4>>2];c[C+8>>2]=c[y+8>>2];c[C+12>>2]=c[y+12>>2];y=c[f>>2]|0;c[y+(D<<4)>>2]=q;c[y+(D<<4)+4>>2]=t;c[y+(D<<4)+8>>2]=w;c[y+(D<<4)+12>>2]=x;J=D-1|0;K=g+1|0}if((K|0)>(J|0)){break}n=J;o=K;p=c[f>>2]|0}if((J|0)>(b|0)){arQ(a,b,J)}if((K|0)>=(d|0)){return}arQ(a,K,d);return}function arR(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=22576;d=b+108|0;do{if((c[d>>2]|0)!=0){e=b+112|0;f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}f=c[d>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[d>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-156+152>>2]|0)}}while(0);d=c[b+88>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+84>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+80>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+60>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-64+60>>2]|0)}if((a[b+100|0]&1)==0){return}d=b+92|0;b=c[d>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[d>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function arS(a){a=a|0;arR(a);return}function arT(a){a=a|0;arR(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-116+112>>2]|0);return}function arU(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=22648;d=b+116|0;do{if((c[d>>2]|0)!=0){e=b+120|0;f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}f=c[d>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[d>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-156+152>>2]|0)}}while(0);d=c[b+96>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+92>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+88>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}d=c[b+68>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-76+72>>2]|0)}if((a[b+108|0]&1)==0){return}d=b+100|0;b=c[d>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[d>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function arV(a){a=a|0;arU(a);return}function arW(a){a=a|0;arU(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-124+120>>2]|0);return}function arX(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=24728;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+12>>2]=0;return}function arY(b){b=b|0;var d=0;c[b>>2]=24728;d=c[b+16>>2]|0;do{if((d|0)!=0){if((a[b+20|0]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-16+12>>2]|0)}if((b|0)!=0){break}return}}while(0);aDB(b);return}function arZ(a){a=a|0;return 17976|0}function ar_(a){a=a|0;return 52}function ar$(a){a=a|0;return 6}function ar0(a){a=a|0;return 8}function ar1(a){a=a|0;return 12}function ar2(a){a=a|0;return 6}function ar3(a){a=a|0;return a+12|0}function ar4(a){a=a|0;return+(+g[a+44>>2])}function ar5(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0;d=+g[b+28>>2];e=+g[b+32>>2];f=+g[c+4>>2]>=0.0?e:-0.0-e;e=+g[b+36>>2];h=+g[c+8>>2]>=0.0?e:-0.0-e;g[a>>2]=+g[c>>2]>=0.0?d:-0.0-d;g[a+4>>2]=f;g[a+8>>2]=h;g[a+12>>2]=0.0;return}function ar6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0;if((d|0)<=0){return}e=a+28|0;f=a+32|0;h=a+36|0;a=0;do{i=+g[e>>2];j=+g[f>>2];k=+g[b+(a<<4)+4>>2]>=0.0?j:-0.0-j;j=+g[h>>2];l=+g[b+(a<<4)+8>>2]>=0.0?j:-0.0-j;g[c+(a<<4)>>2]=+g[b+(a<<4)>>2]>=0.0?i:-0.0-i;g[c+(a<<4)+4>>2]=k;g[c+(a<<4)+8>>2]=l;g[c+(a<<4)+12>>2]=0.0;a=a+1|0;}while((a|0)<(d|0));return}function ar7(a,b,c){a=a|0;b=b|0;c=c|0;switch(b|0){case 3:{g[c>>2]=0.0;g[c+4>>2]=-1.0;g[c+8>>2]=0.0;g[c+12>>2]=0.0;return};case 4:{g[c>>2]=0.0;g[c+4>>2]=0.0;g[c+8>>2]=1.0;g[c+12>>2]=0.0;return};case 0:{g[c>>2]=1.0;g[c+4>>2]=0.0;g[c+8>>2]=0.0;g[c+12>>2]=0.0;return};case 5:{g[c>>2]=0.0;g[c+4>>2]=0.0;g[c+8>>2]=-1.0;g[c+12>>2]=0.0;return};case 1:{g[c>>2]=-1.0;g[c+4>>2]=0.0;g[c+8>>2]=0.0;g[c+12>>2]=0.0;return};case 2:{g[c>>2]=0.0;g[c+4>>2]=1.0;g[c+8>>2]=0.0;g[c+12>>2]=0.0;return};default:{return}}}function ar8(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0,f=0.0,h=0.0,i=0;d=+g[a+28>>2];e=+g[a+32>>2];f=+g[a+36>>2];h=+g[b>>2];if(h>d+c){i=0;return i|0}if(h<-0.0-d-c){i=0;return i|0}d=+g[b+4>>2];if(d>e+c){i=0;return i|0}if(d<-0.0-e-c){i=0;return i|0}e=+g[b+8>>2];if(e>f+c){i=0;return i|0}i=e>=-0.0-f-c;return i|0}function ar9(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;d=+g[a+28>>2];e=+g[a+32>>2];f=+g[a+36>>2];switch(c|0){case 3:{g[b>>2]=0.0;g[b+4>>2]=-1.0;g[b+8>>2]=0.0;g[b+12>>2]=-0.0-e;return};case 4:{g[b>>2]=0.0;g[b+4>>2]=0.0;g[b+8>>2]=1.0;g[b+12>>2]=-0.0-f;return};case 0:{g[b>>2]=1.0;g[b+4>>2]=0.0;g[b+8>>2]=0.0;g[b+12>>2]=-0.0-d;return};case 5:{g[b>>2]=0.0;g[b+4>>2]=0.0;g[b+8>>2]=-1.0;g[b+12>>2]=-0.0-f;return};case 1:{g[b>>2]=-1.0;g[b+4>>2]=0.0;g[b+8>>2]=0.0;g[b+12>>2]=-0.0-d;return};case 2:{g[b>>2]=0.0;g[b+4>>2]=1.0;g[b+8>>2]=0.0;g[b+12>>2]=-0.0-e;return};default:{return}}}function asa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;f=+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0);h=f+ +g[a+28>>2];i=f+ +g[a+32>>2];j=f+ +g[a+36>>2];f=+P(+(+g[b>>2]));k=+P(+(+g[b+4>>2]));l=+P(+(+g[b+8>>2]));m=+P(+(+g[b+16>>2]));n=+P(+(+g[b+20>>2]));o=+P(+(+g[b+24>>2]));p=+P(+(+g[b+32>>2]));q=+P(+(+g[b+36>>2]));r=+P(+(+g[b+40>>2]));s=+g[b+48>>2];t=+g[b+52>>2];u=+g[b+56>>2];v=h*f+i*k+j*l;l=h*m+i*n+j*o;o=h*p+i*q+j*r;g[d>>2]=s-v;g[d+4>>2]=t-l;g[d+8>>2]=u-o;g[d+12>>2]=0.0;g[e>>2]=v+s;g[e+4>>2]=l+t;g[e+8>>2]=o+u;g[e+12>>2]=0.0;return}function asb(a,b,d){a=a|0;b=+b;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;e=+g[a+28>>2];f=+g[a+32>>2];h=+g[a+36>>2];i=a|0;j=a;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=(e+k)*2.0;k=(f+l)*2.0;l=(h+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i))*2.0;h=b/12.0;b=k*k;k=l*l;l=m*m;g[d>>2]=h*(b+k);g[d+4>>2]=h*(l+k);g[d+8>>2]=h*(l+b);g[d+12>>2]=0.0;return}function asc(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function asd(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function ase(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);d=a+28|0;e=a+32|0;j=a+36|0;k=a+12|0;l=(f+ +g[d>>2])/+g[k>>2];m=a+16|0;n=(h+ +g[e>>2])/+g[m>>2];o=a+20|0;p=(i+ +g[j>>2])/+g[o>>2];q=+P(+(+g[b>>2]));r=+P(+(+g[b+4>>2]));s=+P(+(+g[b+8>>2]));g[k>>2]=q;g[m>>2]=r;g[o>>2]=s;g[a+24>>2]=0.0;g[d>>2]=l*q-f;g[e>>2]=n*r-h;g[j>>2]=p*s-i;g[a+40>>2]=0.0;return}function asf(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);j=a+28|0;k=f+ +g[j>>2];l=a+32|0;f=h+ +g[l>>2];m=a+36|0;h=i+ +g[m>>2];g[a+44>>2]=b;b=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);n=h- +dh[c[(c[e>>2]|0)+44>>2]&1023](d);g[j>>2]=k-b;g[l>>2]=f-i;g[m>>2]=n;g[a+40>>2]=0.0;return}function asg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];return 16992}function ash(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;e=+g[b+28>>2];f=+g[b+32>>2];h=+g[b+36>>2];i=b|0;j=b;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=e+k;k=f+l;l=h+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);h=+g[d+4>>2]>=0.0?k:-0.0-k;k=+g[d+8>>2]>=0.0?l:-0.0-l;g[a>>2]=+g[d>>2]>=0.0?m:-0.0-m;g[a+4>>2]=h;g[a+8>>2]=k;g[a+12>>2]=0.0;return}function asi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;switch(b|0){case 6:{f=b;g=2;break};case 7:{f=b;g=3;break};case 8:{f=5;g=4;break};case 9:{f=6;g=4;break};case 10:{f=7;g=5;break};case 11:{f=7;g=6;break};case 2:{f=3;g=1;break};case 3:{f=b;g=2;break};case 5:{f=b;g=1;break};case 0:{f=1;g=0;break};case 1:{f=2;g=0;break};case 4:{f=b;g=0;break};default:{f=0;g=0}}b=a;dA[c[(c[b>>2]|0)+100>>2]&511](a,g,d);dA[c[(c[b>>2]|0)+100>>2]&511](a,f,e);return}function asj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0;e=+g[a+28>>2];f=+g[a+32>>2];h=+g[a+36>>2];i=a|0;j=a;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=e+k;k=f+l;l=h+ +dh[c[(c[j>>2]|0)+44>>2]&1023](i);i=b&1;j=b>>>1&1;a=b>>>2&1;g[d>>2]=+(i^1|0)*m- +(i|0)*m;g[d+4>>2]=+(j^1|0)*k- +(j|0)*k;g[d+8>>2]=+(a^1|0)*l- +(a|0)*l;g[d+12>>2]=0.0;return}function ask(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0;f=i;i=i+48|0;h=f|0;j=f+16|0;k=f+32|0;dA[c[(c[a>>2]|0)+116>>2]&511](a,h,e);l=+g[h>>2];m=+g[h+4>>2];n=+g[h+8>>2];g[b>>2]=l;g[b+4>>2]=m;g[b+8>>2]=n;g[b+12>>2]=0.0;b=c[(c[a>>2]|0)+60>>2]|0;g[k>>2]=-0.0-l;g[k+4>>2]=-0.0-m;g[k+8>>2]=-0.0-n;g[k+12>>2]=0.0;dA[b&511](j,a,k);k=d;d=j;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];i=f;return}function asl(a){a=a|0;return 17960|0}function asm(a){a=a|0;return 60}function asn(a){a=a|0;return}function aso(a){a=a|0;return}function asp(a,b){a=a|0;b=+b;g[a+12>>2]=b;return}function asq(a){a=a|0;return+(+g[a+12>>2])}function asr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0;aBr(b|0,d);c[b>>2]=21848;d=b+52|0;c[d>>2]=0;c[b+56>>2]=0;h=b+60|0;a[h]=e&1;e=b+61|0;a[e]=0;c[b+4>>2]=21;if(!f){return}c[9806]=(c[9806]|0)+1;f=aDx(191)|0;if((f|0)==0){i=0}else{j=-(f+4|0)&15;c[f+j>>2]=f;i=f+(j+4)|0}c[i+52>>2]=278;a[i+60|0]=0;a[i+80|0]=1;c[i+76>>2]=0;c[i+68>>2]=0;c[i+72>>2]=0;a[i+100|0]=1;c[i+96>>2]=0;c[i+88>>2]=0;c[i+92>>2]=0;a[i+120|0]=1;c[i+116>>2]=0;c[i+108>>2]=0;c[i+112>>2]=0;a[i+140|0]=1;c[i+136>>2]=0;c[i+128>>2]=0;c[i+132>>2]=0;c[i+144>>2]=0;a[i+164|0]=1;c[i+160>>2]=0;c[i+152>>2]=0;c[i+156>>2]=0;c[i+168>>2]=0;g[i+4>>2]=-3.4028234663852886e+38;g[i+8>>2]=-3.4028234663852886e+38;g[i+12>>2]=-3.4028234663852886e+38;g[i+16>>2]=0.0;g[i+20>>2]=3.4028234663852886e+38;g[i+24>>2]=3.4028234663852886e+38;g[i+28>>2]=3.4028234663852886e+38;g[i+32>>2]=0.0;c[i>>2]=25376;c[d>>2]=i;ayv(i,c[b+48>>2]|0,(a[h]&1)!=0,b+16|0,b+32|0);a[e]=1;return}function ass(b,d,e,f,h,i){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;i=i|0;var j=0,k=0,l=0;aBr(b|0,d);c[b>>2]=21848;j=b+52|0;c[j>>2]=0;c[b+56>>2]=0;k=b+60|0;a[k]=e&1;e=b+61|0;a[e]=0;c[b+4>>2]=21;if(!i){return}c[9806]=(c[9806]|0)+1;i=aDx(191)|0;if((i|0)==0){l=0}else{b=-(i+4|0)&15;c[i+b>>2]=i;l=i+(b+4)|0}c[l+52>>2]=278;a[l+60|0]=0;a[l+80|0]=1;c[l+76>>2]=0;c[l+68>>2]=0;c[l+72>>2]=0;a[l+100|0]=1;c[l+96>>2]=0;c[l+88>>2]=0;c[l+92>>2]=0;a[l+120|0]=1;c[l+116>>2]=0;c[l+108>>2]=0;c[l+112>>2]=0;a[l+140|0]=1;c[l+136>>2]=0;c[l+128>>2]=0;c[l+132>>2]=0;c[l+144>>2]=0;a[l+164|0]=1;c[l+160>>2]=0;c[l+152>>2]=0;c[l+156>>2]=0;c[l+168>>2]=0;g[l+4>>2]=-3.4028234663852886e+38;g[l+8>>2]=-3.4028234663852886e+38;g[l+12>>2]=-3.4028234663852886e+38;g[l+16>>2]=0.0;g[l+20>>2]=3.4028234663852886e+38;g[l+24>>2]=3.4028234663852886e+38;g[l+28>>2]=3.4028234663852886e+38;g[l+32>>2]=0.0;c[l>>2]=25376;c[j>>2]=l;ayv(l,d,(a[k]&1)!=0,f,h);a[e]=1;return}function ast(b){b=b|0;var d=0,e=0;c[b>>2]=21848;do{if((a[b+61|0]&1)!=0){d=b+52|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-172+168>>2]|0)}if((b|0)!=0){break}return}}while(0);c[9804]=(c[9804]|0)+1;aDB(c[b-76+72>>2]|0);return}function asu(b){b=b|0;var d=0;c[b>>2]=21848;if((a[b+61|0]&1)==0){return}d=b+52|0;b=c[d>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[d>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-172+168>>2]|0);return}function asv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+64|0;g=f|0;h=c[a+48>>2]|0;c[g>>2]=18424;c[g+4>>2]=h;c[g+8>>2]=b;azn(c[a+52>>2]|0,g|0,d,e);i=f;return}function asw(b,d){b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0,l=0;e=b|0;f=cA[c[(c[b>>2]|0)+28>>2]&4095](e)|0;h=+g[f>>2]- +g[d>>2];i=+g[f+4>>2]- +g[d+4>>2];j=+g[f+8>>2]- +g[d+8>>2];if(h*h+i*i+j*j<=1.1920928955078125e-7){return}aBB(e,d);d=b+61|0;e=b+52|0;do{if((a[d]&1)!=0){f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-172+168>>2]|0)}}while(0);c[9806]=(c[9806]|0)+1;f=aDx(191)|0;if((f|0)==0){k=0}else{l=-(f+4|0)&15;c[f+l>>2]=f;k=f+(l+4)|0}c[k+52>>2]=278;a[k+60|0]=0;a[k+80|0]=1;c[k+76>>2]=0;c[k+68>>2]=0;c[k+72>>2]=0;a[k+100|0]=1;c[k+96>>2]=0;c[k+88>>2]=0;c[k+92>>2]=0;a[k+120|0]=1;c[k+116>>2]=0;c[k+108>>2]=0;c[k+112>>2]=0;a[k+140|0]=1;c[k+136>>2]=0;c[k+128>>2]=0;c[k+132>>2]=0;c[k+144>>2]=0;a[k+164|0]=1;c[k+160>>2]=0;c[k+152>>2]=0;c[k+156>>2]=0;c[k+168>>2]=0;g[k+4>>2]=-3.4028234663852886e+38;g[k+8>>2]=-3.4028234663852886e+38;g[k+12>>2]=-3.4028234663852886e+38;g[k+16>>2]=0.0;g[k+20>>2]=3.4028234663852886e+38;g[k+24>>2]=3.4028234663852886e+38;g[k+28>>2]=3.4028234663852886e+38;g[k+32>>2]=0.0;c[k>>2]=25376;c[e>>2]=k;ayv(k,c[b+48>>2]|0,(a[b+60|0]&1)!=0,b+16|0,b+32|0);a[d]=1;return}function asx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];f=c[a+48>>2]|0;cS[c[(c[f>>2]|0)+56>>2]&511](f,b+12|0,d)|0;g[b+52>>2]=+g[a+12>>2];f=a+52|0;do{if((c[f>>2]|0)==0){i=815}else{if(((cA[c[(c[d>>2]|0)+52>>2]&4095](d)|0)&1|0)!=0){i=815;break}h=dj[c[(c[e>>2]|0)+24>>2]&511](d,c[f>>2]|0)|0;if((h|0)==0){c[b+40>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[f>>2]|0)|0;c[b+44>>2]=0;j=c[f>>2]|0;k=cA[c[(c[j>>2]|0)+12>>2]&4095](j|0)|0;j=cS[c[(c[d>>2]|0)+16>>2]&511](d,k,1)|0;k=c[f>>2]|0;l=cS[c[(c[k>>2]|0)+16>>2]&511](k|0,c[j+8>>2]|0,d)|0;co[c[(c[d>>2]|0)+20>>2]&255](d,j,l,1213612625,c[f>>2]|0);break}else{c[b+40>>2]=h;c[b+44>>2]=0;break}}}while(0);if((i|0)==815){c[b+40>>2]=0;c[b+44>>2]=0}i=a+56|0;do{if((c[i>>2]|0)!=0){if(((cA[c[(c[d>>2]|0)+52>>2]&4095](d)|0)&2|0)!=0){break}a=dj[c[(c[e>>2]|0)+24>>2]&511](d,c[i>>2]|0)|0;if((a|0)==0){c[b+48>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[i>>2]|0)|0;f=c[i>>2]|0;h=cA[c[(c[f>>2]|0)+8>>2]&4095](f)|0;f=cS[c[(c[d>>2]|0)+16>>2]&511](d,h,1)|0;h=c[i>>2]|0;l=cS[c[(c[h>>2]|0)+12>>2]&511](h,c[f+8>>2]|0,d)|0;co[c[(c[d>>2]|0)+20>>2]&255](d,f,l,1346456916,c[i>>2]|0);return 16968}else{c[b+48>>2]=a;return 16968}}}while(0);c[b+48>>2]=0;return 16968}function asy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+52|0;a=c[d>>2]|0;if((a|0)==0){return}e=cA[c[(c[a>>2]|0)+12>>2]&4095](a|0)|0;a=cS[c[(c[b>>2]|0)+16>>2]&511](b,e,1)|0;e=c[d>>2]|0;f=cS[c[(c[e>>2]|0)+16>>2]&511](e|0,c[a+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,a,f,1213612625,c[d>>2]|0);return}function asz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+56|0;a=c[d>>2]|0;if((a|0)==0){return}e=cA[c[(c[a>>2]|0)+8>>2]&4095](a)|0;a=cS[c[(c[b>>2]|0)+16>>2]&511](b,e,1)|0;e=c[d>>2]|0;f=cS[c[(c[e>>2]|0)+12>>2]&511](e,c[a+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,a,f,1346456916,c[d>>2]|0);return}function asA(a,b,d){a=a|0;b=b|0;d=d|0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);return}function asB(a){a=a|0;if((a|0)==0){return}aDB(a);return}function asC(a,b,f){a=a|0;b=b|0;f=f|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;j=i;i=i+64|0;k=j|0;l=j+16|0;m=j+24|0;n=j+32|0;o=j+40|0;p=j+56|0;q=a+4|0;r=c[q>>2]|0;di[c[(c[r>>2]|0)+16>>2]&63](r,k,j+8|0,l,m,n,o,j+48|0,p,b);r=c[n>>2]|0;n=aa(c[o>>2]|0,f)|0;o=r+n|0;s=o;t=c[q>>2]|0;u=t+4|0;v=t+8|0;w=t+12|0;t=o;o=c[p>>2]|0;p=2;while(1){if((o|0)==2){x=c[s+(p<<2)>>2]|0}else if((o|0)==3){x=e[t+(p<<1)>>1]|0}else{x=d[r+(p+n)|0]|0}y=(c[l>>2]|0)==0;z=c[k>>2]|0;A=aa(c[m>>2]|0,x)|0;B=z+A|0;if(y){C=+g[z+(A+4)>>2]*+g[v>>2];D=+g[z+(A+8)>>2]*+g[w>>2];g[a+12+(p<<4)>>2]=+g[B>>2]*+g[u>>2];g[a+12+(p<<4)+4>>2]=C;g[a+12+(p<<4)+8>>2]=D;g[a+12+(p<<4)+12>>2]=0.0}else{D=+h[z+(A+8)>>3]*+g[v>>2];C=+h[z+(A+16)>>3]*+g[w>>2];g[a+12+(p<<4)>>2]=+h[B>>3]*+g[u>>2];g[a+12+(p<<4)+4>>2]=D;g[a+12+(p<<4)+8>>2]=C;g[a+12+(p<<4)+12>>2]=0.0}if((p|0)>0){p=p-1|0}else{break}}p=c[a+8>>2]|0;dI[c[(c[p>>2]|0)+8>>2]&1023](p,a+12|0,b,f);f=c[q>>2]|0;cv[c[(c[f>>2]|0)+24>>2]&2047](f,b);i=j;return}function asD(a){a=a|0;return}function asE(a){a=a|0;return}function asF(a){a=a|0;return 16760|0}function asG(a){a=a|0;return 60}function asH(a){a=a|0;return 0}function asI(a,b,c){a=a|0;b=b|0;c=c|0;return}function asJ(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0.0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0;e=i;i=i+16|0;f=e|0;h=c[a+52>>2]|0;j=+g[a+28+(((h+2|0)%3|0)<<2)>>2];k=f|0;g[k>>2]=j;l=f+4|0;g[l>>2]=j;m=f+8|0;g[m>>2]=j;g[f+12>>2]=0.0;n=f+(h<<2)|0;g[n>>2]=+g[a+28+(h<<2)>>2]+ +g[n>>2];j=(+g[k>>2]+.03999999910593033)*2.0;o=(+g[l>>2]+.03999999910593033)*2.0;p=(+g[m>>2]+.03999999910593033)*2.0;q=j*j;j=o*o;o=p*p;p=b*.0833333283662796;g[d>>2]=p*(j+o);g[d+4>>2]=p*(q+o);g[d+8>>2]=p*(q+j);i=e;return}function asK(a){a=a|0;if((a|0)==0){return}aDB(a);return}function asL(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0;f=i;i=i+112|0;j=f|0;k=f+48|0;l=f+64|0;m=f+72|0;n=f+80|0;o=f+88|0;p=f+104|0;q=j|0;r=a+4|0;s=c[r>>2]|0;di[c[(c[s>>2]|0)+16>>2]&63](s,k,f+56|0,l,m,n,o,f+96|0,p,b);s=c[n>>2]|0;n=s+(aa(c[o>>2]|0,d)|0)|0;o=n;s=c[r>>2]|0;t=n;n=s+4|0;u=s+8|0;v=s+12|0;s=(c[p>>2]|0)==3;p=2;while(1){if(s){w=e[t+(p<<1)>>1]|0}else{w=c[o+(p<<2)>>2]|0}x=(c[l>>2]|0)==0;y=c[k>>2]|0;z=aa(c[m>>2]|0,w)|0;A=y+z|0;if(x){B=+g[y+(z+4)>>2]*+g[u>>2];C=+g[y+(z+8)>>2]*+g[v>>2];g[j+(p<<4)>>2]=+g[A>>2]*+g[n>>2];g[j+(p<<4)+4>>2]=B;g[j+(p<<4)+8>>2]=C;g[j+(p<<4)+12>>2]=0.0}else{C=+h[y+(z+8)>>3]*+g[u>>2];B=+h[y+(z+16)>>3]*+g[v>>2];g[j+(p<<4)>>2]=+h[A>>3]*+g[n>>2];g[j+(p<<4)+4>>2]=C;g[j+(p<<4)+8>>2]=B;g[j+(p<<4)+12>>2]=0.0}if((p|0)>0){p=p-1|0}else{break}}p=c[a+8>>2]|0;dI[c[(c[p>>2]|0)+8>>2]&1023](p,q,b,d);d=c[r>>2]|0;cv[c[(c[d>>2]|0)+24>>2]&2047](d,b);i=f;return}function asM(a){a=a|0;if((a|0)==0){return}aDB(a);return}function asN(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0;f=i;i=i+112|0;j=f|0;k=f+48|0;l=f+64|0;m=f+72|0;n=f+80|0;o=f+88|0;p=f+104|0;q=j|0;r=a+4|0;s=c[r>>2]|0;di[c[(c[s>>2]|0)+16>>2]&63](s,k,f+56|0,l,m,n,o,f+96|0,p,b);s=c[n>>2]|0;n=s+(aa(c[o>>2]|0,d)|0)|0;o=n;s=c[r>>2]|0;t=n;n=s+4|0;u=s+8|0;v=s+12|0;s=(c[p>>2]|0)==3;p=2;while(1){if(s){w=e[t+(p<<1)>>1]|0}else{w=c[o+(p<<2)>>2]|0}x=(c[l>>2]|0)==0;y=c[k>>2]|0;z=aa(c[m>>2]|0,w)|0;A=y+z|0;if(x){B=+g[y+(z+4)>>2]*+g[u>>2];C=+g[y+(z+8)>>2]*+g[v>>2];g[j+(p<<4)>>2]=+g[A>>2]*+g[n>>2];g[j+(p<<4)+4>>2]=B;g[j+(p<<4)+8>>2]=C;g[j+(p<<4)+12>>2]=0.0}else{C=+h[y+(z+8)>>3]*+g[u>>2];B=+h[y+(z+16)>>3]*+g[v>>2];g[j+(p<<4)>>2]=+h[A>>3]*+g[n>>2];g[j+(p<<4)+4>>2]=C;g[j+(p<<4)+8>>2]=B;g[j+(p<<4)+12>>2]=0.0}if((p|0)>0){p=p-1|0}else{break}}p=c[a+8>>2]|0;dI[c[(c[p>>2]|0)+8>>2]&1023](p,q,b,d);d=c[r>>2]|0;cv[c[(c[d>>2]|0)+24>>2]&2047](d,b);i=f;return}function asO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0.0,z=0.0,A=0;e=i;i=i+32|0;f=e|0;h=e+16|0;j=a|0;k=a+4|0;l=a+8|0;m=a+12|0;aDD(a|0,0,16);n=+g[d>>2];o=+g[d+4>>2];p=+g[d+8>>2];q=n*n+o*o+p*p;if(q<9999999747378752.0e-20){r=1.0;s=0.0;t=0.0}else{u=1.0/+Q(+q);r=n*u;s=o*u;t=p*u}d=b+52|0;a=c[d>>2]|0;u=+g[b+28+(((a+2|0)%3|0)<<2)>>2];aDD(f|0,0,16);g[f+(a<<2)>>2]=+g[b+28+(a<<2)>>2];a=b|0;v=b+12|0;w=b+16|0;x=b+20|0;p=u*r*+g[v>>2]+ +g[f>>2];o=u*s*+g[w>>2]+ +g[f+4>>2];n=u*t*+g[x>>2]+ +g[f+8>>2];f=b;q=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);y=p-r*q;p=o-s*q;o=n-t*q;q=t*o+(r*y+s*p);if(q>-999999984306749400.0){g[j>>2]=y;g[k>>2]=p;g[l>>2]=o;g[m>>2]=0.0;z=q}else{z=-999999984306749400.0}aDD(h|0,0,16);A=c[d>>2]|0;g[h+(A<<2)>>2]=-0.0- +g[b+28+(A<<2)>>2];q=u*r*+g[v>>2]+ +g[h>>2];o=u*s*+g[w>>2]+ +g[h+4>>2];p=u*t*+g[x>>2]+ +g[h+8>>2];u=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);y=q-r*u;q=o-s*u;o=p-t*u;if(t*o+(r*y+s*q)<=z){i=e;return}g[j>>2]=y;g[k>>2]=q;g[l>>2]=o;g[m>>2]=0.0;i=e;return}function asP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=a+52|0;l=c[k>>2]|0;m=+g[a+28+(((l+2|0)%3|0)<<2)>>2];if((e|0)<=0){i=f;return}n=h|0;o=h+4|0;p=h+8|0;q=a|0;r=a+12|0;s=a+16|0;t=a+20|0;u=a;v=j|0;w=j+4|0;x=j+8|0;y=h;z=j;A=0;B=l;while(1){aDD(y|0,0,16);g[h+(B<<2)>>2]=+g[a+28+(B<<2)>>2];l=b+(A<<4)|0;C=b+(A<<4)+4|0;D=b+(A<<4)+8|0;E=m*+g[l>>2]*+g[r>>2]+ +g[n>>2];F=m*+g[C>>2]*+g[s>>2]+ +g[o>>2];G=m*+g[D>>2]*+g[t>>2]+ +g[p>>2];H=+dh[c[(c[u>>2]|0)+44>>2]&1023](q);I=+g[l>>2];J=+g[C>>2];K=+g[D>>2];L=E-H*I;E=F-H*J;F=G-H*K;H=I*L+J*E+K*F;if(H>-999999984306749400.0){g[d+(A<<4)>>2]=L;g[d+(A<<4)+4>>2]=E;g[d+(A<<4)+8>>2]=F;g[d+(A<<4)+12>>2]=0.0;M=H;N=+g[l>>2];O=+g[C>>2];P=+g[D>>2]}else{M=-999999984306749400.0;N=I;O=J;P=K}aDD(z|0,0,16);Q=c[k>>2]|0;g[j+(Q<<2)>>2]=-0.0- +g[a+28+(Q<<2)>>2];K=m*N*+g[r>>2]+ +g[v>>2];J=m*O*+g[s>>2]+ +g[w>>2];I=m*P*+g[t>>2]+ +g[x>>2];H=+dh[c[(c[u>>2]|0)+44>>2]&1023](q);F=+g[l>>2];E=+g[C>>2];L=+g[D>>2];G=K-H*F;K=J-H*E;J=I-H*L;if(F*G+E*K+L*J>M){g[d+(A<<4)>>2]=G;g[d+(A<<4)+4>>2]=K;g[d+(A<<4)+8>>2]=J;g[d+(A<<4)+12>>2]=0.0}D=A+1|0;if((D|0)>=(e|0)){break}A=D;B=c[k>>2]|0}i=f;return}function asQ(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function asR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0.0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;f=i;i=i+16|0;h=f|0;j=c[a+52>>2]|0;k=+g[a+28+(((j+2|0)%3|0)<<2)>>2];l=h|0;g[l>>2]=k;m=h+4|0;g[m>>2]=k;n=h+8|0;g[n>>2]=k;g[h+12>>2]=0.0;g[h+(j<<2)>>2]=k+ +g[a+28+(j<<2)>>2];j=a|0;h=a;k=+dh[c[(c[h>>2]|0)+44>>2]&1023](j);o=+dh[c[(c[h>>2]|0)+44>>2]&1023](j);p=+dh[c[(c[h>>2]|0)+44>>2]&1023](j);q=k+ +g[l>>2];g[l>>2]=q;k=o+ +g[m>>2];g[m>>2]=k;o=p+ +g[n>>2];p=+P(+(+g[b>>2]));r=+P(+(+g[b+4>>2]));s=+P(+(+g[b+8>>2]));t=+P(+(+g[b+16>>2]));u=+P(+(+g[b+20>>2]));v=+P(+(+g[b+24>>2]));w=+P(+(+g[b+32>>2]));x=+P(+(+g[b+36>>2]));y=+P(+(+g[b+40>>2]));z=+g[b+48>>2];A=+g[b+52>>2];B=+g[b+56>>2];C=o*s+(p*q+r*k);r=o*v+(t*q+u*k);u=o*y+(w*q+x*k);g[d>>2]=z-C;g[d+4>>2]=A-r;g[d+8>>2]=B-u;g[d+12>>2]=0.0;g[e>>2]=z+C;g[e+4>>2]=A+r;g[e+8>>2]=B+u;g[e+12>>2]=0.0;i=f;return}function asS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);d=a+28|0;e=a+32|0;j=a+36|0;k=a+12|0;l=(f+ +g[d>>2])/+g[k>>2];m=a+16|0;n=(h+ +g[e>>2])/+g[m>>2];o=a+20|0;p=(i+ +g[j>>2])/+g[o>>2];q=+P(+(+g[b>>2]));r=+P(+(+g[b+4>>2]));s=+P(+(+g[b+8>>2]));g[k>>2]=q;g[m>>2]=r;g[o>>2]=s;g[a+24>>2]=0.0;g[d>>2]=l*q-f;g[e>>2]=n*r-h;g[j>>2]=p*s-i;g[a+40>>2]=0.0;return}function asT(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);j=a+28|0;k=f+ +g[j>>2];l=a+32|0;f=h+ +g[l>>2];m=a+36|0;h=i+ +g[m>>2];g[a+44>>2]=b;b=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);n=h- +dh[c[(c[e>>2]|0)+44>>2]&1023](d);g[j>>2]=k-b;g[l>>2]=f-i;g[m>>2]=n;g[a+40>>2]=0.0;return}function asU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];c[b+52>>2]=c[a+52>>2];return 17424}function asV(a){a=a|0;return}function asW(a){a=a|0;return 17944|0}function asX(a){a=a|0;return}function asY(a){a=a|0;return 16952|0}function asZ(a){a=a|0;return}function as_(a){a=a|0;return}function as$(a){a=a|0;return}function as0(a,b){a=a|0;b=b|0;var d=0;a=b+1116|0;b=c[a>>2]|0;if((b|0)>0){d=0}else{c[a>>2]=0;return}do{d=d+1|0;}while((d|0)<(b|0));c[a>>2]=0;return}function as1(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+204>>2]|0;do{if((a&4|0)==0){b=c[d+204>>2]|0;if((b&4|0)!=0){e=0;break}if((a&3|0)==0){e=1;break}e=(b&3|0)==0}else{e=0}}while(0);return e|0}function as2(a){a=a|0;return c[a+12>>2]|0}function as3(a,b){a=a|0;b=b|0;return c[(c[a+20>>2]|0)+(b<<2)>>2]|0}function as4(a){a=a|0;return c[a+20>>2]|0}function as5(a){a=a|0;return c[a+196>>2]|0}function as6(a){a=a|0;return c[a+196>>2]|0}function as7(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function as8(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function as9(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ata(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0;e=i;i=i+160|0;f=e|0;h=c[c[a>>2]>>2]|0;j=h;k=c[c[a+4>>2]>>2]|0;l=k;if(!(cS[c[(c[b>>2]|0)+24>>2]&511](b,j,l)|0)){i=e;return}m=a+8|0;a=c[m>>2]|0;do{if((a|0)==0){n=dE[c[(c[b>>2]|0)+8>>2]&127](b,j,l,0)|0;c[m>>2]=n;if((n|0)!=0){o=n;break}i=e;return}else{o=a}}while(0);c[f>>2]=24e3;c[f+4>>2]=0;c[f+136>>2]=j;c[f+140>>2]=l;a=h+4|0;m=f+8|0;aDD(f+144|0,-1|0,16);c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];a=h+20|0;m=f+24|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];a=h+36|0;m=f+40|0;c[m>>2]=c[a>>2];c[m+4>>2]=c[a+4>>2];c[m+8>>2]=c[a+8>>2];c[m+12>>2]=c[a+12>>2];a=h+52|0;h=f+56|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=k+4|0;h=f+72|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=k+20|0;h=f+88|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=k+36|0;h=f+104|0;c[h>>2]=c[a>>2];c[h+4>>2]=c[a+4>>2];c[h+8>>2]=c[a+8>>2];c[h+12>>2]=c[a+12>>2];a=k+52|0;k=f+120|0;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];if((c[d+8>>2]|0)==1){co[c[(c[o>>2]|0)+8>>2]&255](o,j,l,d,f);i=e;return}p=+db[c[(c[o>>2]|0)+12>>2]&127](o,j,l,d,f);f=d+12|0;if(+g[f>>2]<=p){i=e;return}g[f>>2]=p;i=e;return}function atb(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=22392;d=b+12|0;e=b+20|0;f=c[e>>2]|0;g=b+24|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+16>>2]=0;h=b;aDB(h);return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+16>>2]=0;h=b;aDB(h);return}function atc(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=22392;d=b+12|0;e=b+20|0;f=c[e>>2]|0;g=b+24|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+16>>2]=0;return}function atd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=i;i=i+16|0;h=f|0;j=f+8|0;c[9796]=(c[9796]|0)+1;k=b+4|0;if((c[k>>2]&2|0)==0){l=16024}else{m=c[d+192>>2]|0;n=+cU[c[(c[m>>2]|0)+20>>2]&127](m,.019999999552965164);g[h>>2]=n;m=c[e+192>>2]|0;o=+cU[c[(c[m>>2]|0)+20>>2]&127](m,.019999999552965164);g[j>>2]=o;l=n>2];n=+g[d+184>>2];p=+g[e+184>>2];q=n>2]|0;j=l+8|0;h=c[j>>2]|0;do{if((h|0)==0){if((c[k>>2]&4|0)!=0){r=0;i=f;return r|0}c[9806]=(c[9806]|0)+1;m=aDx(1159)|0;if((m|0)==0){s=0;break}t=-(m+4|0)&15;c[m+t>>2]=m;s=m+(t+4)|0}else{t=l+12|0;m=c[t>>2]|0;c[t>>2]=c[m>>2];c[j>>2]=h-1;s=m}}while(0);h=s;c[s>>2]=1025;c[s+112>>2]=0;g[s+116>>2]=0.0;a[s+120|0]=0;aDD(s+124|0,0,28);c[s+388>>2]=0;g[s+392>>2]=0.0;a[s+396|0]=0;aDD(s+400|0,0,28);c[s+664>>2]=0;g[s+668>>2]=0.0;a[s+672|0]=0;aDD(s+676|0,0,28);c[s+940>>2]=0;g[s+944>>2]=0.0;a[s+948|0]=0;aDD(s+952|0,0,28);c[s+1108>>2]=d;c[s+1112>>2]=e;c[s+1116>>2]=0;g[s+1120>>2]=o;g[s+1124>>2]=q;e=b+12|0;c[s+1136>>2]=c[e>>2];s=c[e>>2]|0;d=b+16|0;do{if((s|0)==(c[d>>2]|0)){j=(s|0)==0?1:s<<1;if((s|0)>=(j|0)){u=s;break}if((j|0)==0){v=0;w=s}else{c[9806]=(c[9806]|0)+1;l=aDx((j<<2)+19|0)|0;if((l|0)==0){x=0}else{k=-(l+4|0)&15;c[l+k>>2]=l;x=l+(k+4)|0}v=x;w=c[e>>2]|0}k=b+20|0;if((w|0)>0){l=0;do{m=v+(l<<2)|0;if((m|0)!=0){c[m>>2]=c[(c[k>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(w|0))}l=c[k>>2]|0;m=b+24|0;if((l|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[k>>2]=0}a[m]=1;c[k>>2]=v;c[d>>2]=j;u=c[e>>2]|0}else{u=s}}while(0);s=(c[b+20>>2]|0)+(u<<2)|0;if((s|0)==0){y=u}else{c[s>>2]=h;y=c[e>>2]|0}c[e>>2]=y+1;r=h;i=f;return r|0}function ate(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c[9796]=(c[9796]|0)-1;cv[c[(c[a>>2]|0)+20>>2]&2047](a,b);d=c[b+1136>>2]|0;e=a+12|0;f=(c[e>>2]|0)-1|0;g=a+20|0;h=c[g>>2]|0;i=h+(d<<2)|0;j=c[i>>2]|0;c[i>>2]=c[h+(f<<2)>>2];c[(c[g>>2]|0)+(f<<2)>>2]=j;c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+1136>>2]=d;c[e>>2]=(c[e>>2]|0)-1;e=c[a+196>>2]|0;a=b;if((b|0)==0){return}d=c[e+16>>2]|0;do{if(d>>>0<=a>>>0){if((d+(aa(c[e>>2]|0,c[e+4>>2]|0)|0)|0)>>>0<=a>>>0){break}g=e+12|0;c[b>>2]=c[g>>2];c[g>>2]=a;g=e+8|0;c[g>>2]=(c[g>>2]|0)+1;return}}while(0);c[9804]=(c[9804]|0)+1;aDB(c[b-1140+1136>>2]|0);return}function atf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+8|0;g=f|0;c[g>>2]=a;c[g+4>>2]=e;e=c[a+200+((c[(c[b+192>>2]|0)+4>>2]|0)*144|0)+(c[(c[d+192>>2]|0)+4>>2]<<2)>>2]|0;a=dE[c[(c[e>>2]|0)+8>>2]&127](e,g,b,d)|0;i=f;return a|0}function atg(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;a=c[b+216>>2]|0;do{if((a|0)==5|(a|0)==2){e=c[d+216>>2]|0;if((e|0)==5|(e|0)==2){f=0}else{break}return f|0}}while(0);if((c[b+252>>2]|0)==0){f=1;return f|0}f=dj[c[c[b>>2]>>2]&511](b,d)|0;return f|0}function ath(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=i;i=i+16|0;g=f|0;c[g>>2]=21696;c[g+4>>2]=d;c[g+8>>2]=a;dA[c[(c[b>>2]|0)+48>>2]&511](b,g|0,e);i=f;return}function ati(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=c[a+192>>2]|0;a=d+8|0;e=c[a>>2]|0;if((e|0)!=0){f=d+12|0;d=c[f>>2]|0;c[f>>2]=c[d>>2];c[a>>2]=e-1;g=d;return g|0}c[9806]=(c[9806]|0)+1;d=aDx(b+19|0)|0;if((d|0)==0){g=0;return g|0}b=-(d+4|0)&15;c[d+b>>2]=d;g=d+(b+4)|0;return g|0}function atj(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+192>>2]|0;if((b|0)==0){return}a=c[d+16>>2]|0;do{if(a>>>0<=b>>>0){if((a+(aa(c[d>>2]|0,c[d+4>>2]|0)|0)|0)>>>0<=b>>>0){break}e=d+12|0;c[b>>2]=c[e>>2];c[e>>2]=b;e=d+8|0;c[e>>2]=(c[e>>2]|0)+1;return}}while(0);c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function atk(a){a=a|0;if((a|0)==0){return}aDB(a);return}function atl(a,b){a=a|0;b=b|0;var d=0;d=c[a+8>>2]|0;dA[c[d+188>>2]&511](b,d,c[a+4>>2]|0);return 0}function atm(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-256+252>>2]|0);return}function atn(a,b){a=a|0;b=b|0;return 1}function ato(a){a=a|0;return 248}function atp(a){a=a|0;return 12}function atq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0;g[b+16>>2]=+g[a+4>>2];g[b+20>>2]=+g[a+8>>2];g[b+24>>2]=+g[a+12>>2];g[b+28>>2]=+g[a+16>>2];g[b+32>>2]=+g[a+20>>2];g[b+36>>2]=+g[a+24>>2];g[b+40>>2]=+g[a+28>>2];g[b+44>>2]=+g[a+32>>2];g[b+48>>2]=+g[a+36>>2];g[b+52>>2]=+g[a+40>>2];g[b+56>>2]=+g[a+44>>2];g[b+60>>2]=+g[a+48>>2];g[b+64>>2]=+g[a+52>>2];g[b+68>>2]=+g[a+56>>2];g[b+72>>2]=+g[a+60>>2];g[b+76>>2]=+g[a+64>>2];g[b+80>>2]=+g[a+68>>2];g[b+84>>2]=+g[a+72>>2];g[b+88>>2]=+g[a+76>>2];g[b+92>>2]=+g[a+80>>2];g[b+96>>2]=+g[a+84>>2];g[b+100>>2]=+g[a+88>>2];g[b+104>>2]=+g[a+92>>2];g[b+108>>2]=+g[a+96>>2];g[b+112>>2]=+g[a+100>>2];g[b+116>>2]=+g[a+104>>2];g[b+120>>2]=+g[a+108>>2];g[b+124>>2]=+g[a+112>>2];g[b+128>>2]=+g[a+116>>2];g[b+132>>2]=+g[a+120>>2];g[b+136>>2]=+g[a+124>>2];g[b+140>>2]=+g[a+128>>2];g[b+144>>2]=+g[a+132>>2];g[b+148>>2]=+g[a+136>>2];g[b+152>>2]=+g[a+140>>2];g[b+156>>2]=+g[a+144>>2];g[b+160>>2]=+g[a+148>>2];g[b+164>>2]=+g[a+152>>2];g[b+168>>2]=+g[a+156>>2];g[b+172>>2]=+g[a+160>>2];g[b+176>>2]=+g[a+164>>2];g[b+180>>2]=+g[a+168>>2];g[b+184>>2]=+g[a+172>>2];g[b+188>>2]=+g[a+176>>2];c[b+220>>2]=c[a+180>>2];g[b+192>>2]=+g[a+184>>2];c[b>>2]=0;e=d;c[b+4>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[a+192>>2]|0)|0;c[b+8>>2]=0;c[b+224>>2]=c[a+204>>2];c[b+228>>2]=c[a+208>>2];c[b+232>>2]=c[a+212>>2];f=a+216|0;h=b+236|0;c[h>>2]=c[f>>2];c[h>>2]=c[f>>2];g[b+196>>2]=+g[a+220>>2];g[b+200>>2]=+g[a+224>>2];g[b+204>>2]=+g[a+228>>2];c[b+240>>2]=c[a+232>>2];f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b+12>>2]=h;if((h|0)==0){i=a+240|0;j=+g[i>>2];k=b+208|0;l=k;g[l>>2]=j;m=a+244|0;n=+g[m>>2];o=b+212|0;p=o;g[p>>2]=n;q=a+248|0;r=+g[q>>2];s=b+216|0;t=s;g[t>>2]=r;u=+g[q>>2];g[t>>2]=u;v=a+252|0;w=c[v>>2]|0;x=b+244|0;y=x;c[y>>2]=w;return 16872}cv[c[(c[d>>2]|0)+48>>2]&2047](d,f);i=a+240|0;j=+g[i>>2];k=b+208|0;l=k;g[l>>2]=j;m=a+244|0;n=+g[m>>2];o=b+212|0;p=o;g[p>>2]=n;q=a+248|0;r=+g[q>>2];s=b+216|0;t=s;g[t>>2]=r;u=+g[q>>2];g[t>>2]=u;v=a+252|0;w=c[v>>2]|0;x=b+244|0;y=x;c[y>>2]=w;return 16872}function atr(a,b){a=a|0;b=b|0;var d=0,e=0;d=cA[c[(c[a>>2]|0)+16>>2]&4095](a)|0;e=cS[c[(c[b>>2]|0)+16>>2]&511](b,d,1)|0;d=cS[c[(c[a>>2]|0)+20>>2]&511](a,c[e+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,e,d,1245859651,a);return}function ats(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;e=i;i=i+96|0;f=e|0;h=e+64|0;j=e+80|0;g[f>>2]=1.0;aDD(f+4|0,0,16);g[f+20>>2]=1.0;aDD(f+24|0,0,16);g[f+40>>2]=1.0;aDD(f+44|0,0,20);dI[c[(c[a>>2]|0)+8>>2]&1023](a,f,h,j);k=+g[j>>2];l=+g[h>>2];m=k-l;n=+g[j+4>>2];o=+g[h+4>>2];p=n-o;q=+g[j+8>>2];r=+g[h+8>>2];s=q-r;g[d>>2]=+Q(+(m*m+p*p+s*s))*.5;g[b>>2]=(l+k)*.5;g[b+4>>2]=(o+n)*.5;g[b+8>>2]=(r+q)*.5;g[b+12>>2]=0.0;i=e;return}function att(a,b){a=a|0;b=+b;return+(+dh[c[(c[a>>2]|0)+16>>2]&1023](a)*b)}function atu(a){a=a|0;var b=0,d=0,e=0,f=0.0,h=0.0,j=0.0,k=0.0;b=i;i=i+24|0;d=b|0;e=b+16|0;dA[c[(c[a>>2]|0)+12>>2]&511](a,d,e);f=+g[d>>2];h=+g[d+4>>2];j=+g[d+8>>2];k=+Q(+(f*f+h*h+j*j));i=b;return+(k+ +g[e>>2])}function atv(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=h|0;i=i|0;var j=0.0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,h,i);b=i|0;j=+g[b>>2];k=i+4|0;l=+g[k>>2];m=i+8|0;n=+g[m>>2];o=h|0;p=+g[o>>2];q=h+4|0;r=+g[q>>2];s=h+8|0;t=+g[s>>2];u=+g[d>>2]*f;v=+g[d+4>>2]*f;w=+g[d+8>>2]*f;if(u>0.0){x=p;y=j+u}else{x=p+u;y=j}if(v>0.0){z=r;A=l+v}else{z=r+v;A=l}if(w>0.0){B=t;C=n+w}else{B=t+w;C=n}n=+g[e>>2];w=+g[e+4>>2];t=+g[e+8>>2];l=+Q(+(n*n+w*w+t*t));t=l*+dh[c[(c[a>>2]|0)+16>>2]&1023](a)*f;g[o>>2]=x;g[q>>2]=z;g[s>>2]=B;g[h+12>>2]=0.0;g[b>>2]=y;g[k>>2]=A;g[m>>2]=C;g[i+12>>2]=0.0;g[o>>2]=+g[o>>2]-t;g[q>>2]=+g[q>>2]-t;g[s>>2]=+g[s>>2]-t;g[b>>2]=t+ +g[b>>2];g[k>>2]=t+ +g[k>>2];g[m>>2]=t+ +g[m>>2];return}function atw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;g=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=g;if((g|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];return 16832}function atx(a,b){a=a|0;b=b|0;var d=0,e=0;d=cA[c[(c[a>>2]|0)+48>>2]&4095](a)|0;e=cS[c[(c[b>>2]|0)+16>>2]&511](b,d,1)|0;d=cS[c[(c[a>>2]|0)+52>>2]&511](a,c[e+8>>2]|0,b)|0;co[c[(c[b>>2]|0)+20>>2]&255](b,e,d,1346455635,a);return}function aty(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=24360;a[b+20|0]=1;c[b+16>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+24>>2]=d;g[b+28>>2]=0.0;c[b+32>>2]=0;c[b+36>>2]=1;g[b+40>>2]=1.0;a[b+44|0]=1;c[b+48>>2]=0;a[b+52|0]=0;a[b+53|0]=1;a[b+54|0]=1;g[b+56>>2]=.03999999910593033;a[b+60|0]=0;g[b+64>>2]=0.0;d=b+68|0;c[d>>2]=0;c[b+76>>2]=e;c[b+80>>2]=0;a[b+84|0]=1;e=cA[c[(c[f>>2]|0)+16>>2]&4095](f)|0;c[b+72>>2]=e;c[d>>2]=e;return}function atz(a){a=a|0;atA(a);if((a|0)==0){return}aDB(a);return}function atA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;c[b>>2]=24360;d=b+8|0;e=c[d>>2]|0;f=b+16|0;g=c[f>>2]|0;if((e|0)>0){h=b+76|0;i=b+24|0;j=0;k=g;l=e;while(1){e=(c[k+(j<<2)>>2]|0)+188|0;m=c[e>>2]|0;if((m|0)==0){n=l;o=k}else{p=c[h>>2]|0;q=cA[c[(c[p>>2]|0)+36>>2]&4095](p)|0;dA[c[(c[q>>2]|0)+40>>2]&511](q,m,c[i>>2]|0);q=c[h>>2]|0;dA[c[(c[q>>2]|0)+12>>2]&511](q,m,c[i>>2]|0);c[e>>2]=0;n=c[d>>2]|0;o=c[f>>2]|0}e=j+1|0;if((e|0)<(n|0)){j=e;k=o;l=n}else{r=o;break}}}else{r=g}g=b+20|0;if((r|0)==0){a[g]=1;c[f>>2]=0;c[d>>2]=0;s=b+12|0;c[s>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[r-4>>2]|0)}c[f>>2]=0;a[g]=1;c[f>>2]=0;c[d>>2]=0;s=b+12|0;c[s>>2]=0;return}function atB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;g=i;i=i+96|0;h=g|0;j=g+64|0;k=g+80|0;l=b+8|0;m=c[l>>2]|0;n=b+12|0;do{if((m|0)==(c[n>>2]|0)){o=(m|0)==0?1:m<<1;if((m|0)>=(o|0)){p=m;break}if((o|0)==0){q=0;r=m}else{c[9806]=(c[9806]|0)+1;s=aDx((o<<2)+19|0)|0;if((s|0)==0){t=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;t=s+(u+4)|0}q=t;r=c[l>>2]|0}u=b+16|0;if((r|0)>0){s=0;do{v=q+(s<<2)|0;if((v|0)!=0){c[v>>2]=c[(c[u>>2]|0)+(s<<2)>>2]}s=s+1|0;}while((s|0)<(r|0))}s=c[u>>2]|0;v=b+20|0;if((s|0)!=0){if((a[v]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[s-4>>2]|0)}c[u>>2]=0}a[v]=1;c[u>>2]=q;c[n>>2]=o;p=c[l>>2]|0}else{p=m}}while(0);m=(c[b+16>>2]|0)+(p<<2)|0;if((m|0)==0){w=p}else{c[m>>2]=d;w=c[l>>2]|0}c[l>>2]=w+1;w=h;l=d+4|0;c[w>>2]=c[l>>2];c[w+4>>2]=c[l+4>>2];c[w+8>>2]=c[l+8>>2];c[w+12>>2]=c[l+12>>2];l=h+16|0;w=d+20|0;c[l>>2]=c[w>>2];c[l+4>>2]=c[w+4>>2];c[l+8>>2]=c[w+8>>2];c[l+12>>2]=c[w+12>>2];w=h+32|0;l=d+36|0;c[w>>2]=c[l>>2];c[w+4>>2]=c[l+4>>2];c[w+8>>2]=c[l+8>>2];c[w+12>>2]=c[l+12>>2];l=h+48|0;w=d+52|0;c[l>>2]=c[w>>2];c[l+4>>2]=c[w+4>>2];c[l+8>>2]=c[w+8>>2];c[l+12>>2]=c[w+12>>2];w=d+192|0;l=c[w>>2]|0;dI[c[(c[l>>2]|0)+8>>2]&1023](l,h,j,k);h=c[b+76>>2]|0;c[d+188>>2]=c5[c[(c[h>>2]|0)+8>>2]&63](h,j,k,c[(c[w>>2]|0)+4>>2]|0,d,e,f,c[b+24>>2]|0,0)|0;i=g;return}function atC(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0,v=0.0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0;e=i;i=i+64|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=d+192|0;m=c[l>>2]|0;dI[c[(c[m>>2]|0)+8>>2]&1023](m,d+4|0,f,h);m=f|0;n=+g[m>>2]+-.019999999552965164;g[m>>2]=n;o=f+4|0;p=+g[o>>2]+-.019999999552965164;g[o>>2]=p;q=f+8|0;r=+g[q>>2]+-.019999999552965164;g[q>>2]=r;s=h|0;t=+g[s>>2]+.019999999552965164;g[s>>2]=t;u=h+4|0;v=+g[u>>2]+.019999999552965164;g[u>>2]=v;w=h+8|0;x=+g[w>>2]+.019999999552965164;g[w>>2]=x;do{if((a[b+44|0]&1)==0){y=t;z=n;A=v;B=p;C=x;D=r}else{if((c[d+232>>2]|0)!=2){y=t;z=n;A=v;B=p;C=x;D=r;break}E=c[l>>2]|0;dI[c[(c[E>>2]|0)+8>>2]&1023](E,d+68|0,j,k);E=j|0;F=+g[E>>2]+-.019999999552965164;g[E>>2]=F;E=j+4|0;G=+g[E>>2]+-.019999999552965164;g[E>>2]=G;E=j+8|0;H=+g[E>>2]+-.019999999552965164;g[E>>2]=H;E=k|0;I=+g[E>>2]+.019999999552965164;g[E>>2]=I;E=k+4|0;J=+g[E>>2]+.019999999552965164;g[E>>2]=J;E=k+8|0;K=+g[E>>2]+.019999999552965164;g[E>>2]=K;L=+g[m>>2];if(F>2]=F;M=F}else{M=L}L=+g[o>>2];if(G>2]=G;N=G}else{N=L}L=+g[q>>2];if(H>2]=H;O=H}else{O=L}E=f+12|0;L=+g[j+12>>2];if(L<+g[E>>2]){g[E>>2]=L}L=+g[s>>2];if(L>2]=I;P=I}else{P=L}L=+g[u>>2];if(L>2]=J;Q=J}else{Q=L}L=+g[w>>2];if(L>2]=K;R=K}else{R=L}E=h+12|0;L=+g[k+12>>2];if(+g[E>>2]>=L){y=P;z=M;A=Q;B=N;C=R;D=O;break}g[E>>2]=L;y=P;z=M;A=Q;B=N;C=R;D=O}}while(0);k=c[b+76>>2]|0;do{if((c[d+204>>2]&1|0)==0){O=y-z;R=A-B;N=C-D;if(O*O+R*R+N*N<999999995904.0){break}w=d+216|0;if(((c[w>>2]|0)-4|0)>>>0>=2){c[w>>2]=5}if(a[18312]|0){i=e;return}w=b+80|0;u=c[w>>2]|0;if((u|0)==0){i=e;return}a[18312]=1;cv[c[(c[u>>2]|0)+36>>2]&2047](u,16776);u=c[w>>2]|0;cv[c[(c[u>>2]|0)+36>>2]&2047](u,17872);u=c[w>>2]|0;cv[c[(c[u>>2]|0)+36>>2]&2047](u,17312);u=c[w>>2]|0;cv[c[(c[u>>2]|0)+36>>2]&2047](u,17024);i=e;return}}while(0);co[c[(c[k>>2]|0)+16>>2]&255](k,c[d+188>>2]|0,f,h,c[b+24>>2]|0);i=e;return}function atD(b){b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+16|0;e=d|0;aDo(16744);f=b+8|0;h=c[f>>2]|0;if((h|0)>0){j=b+16|0;k=b+84|0;l=0;m=h;while(1){h=c[(c[j>>2]|0)+(l<<2)>>2]|0;if((a[k]&1)==0){n=c[h+216>>2]|0;if((n|0)==5|(n|0)==2){o=m}else{p=1171}}else{p=1171}if((p|0)==1171){p=0;atC(b,h);o=c[f>>2]|0}h=l+1|0;if((h|0)<(o|0)){l=h;m=o}else{break}}}o=c[9152]|0;m=o+16|0;l=(c[m>>2]|0)-1|0;c[m>>2]=l;if((l|0)!=0){i=d;return}do{if((c[o+4>>2]|0)==0){q=o}else{b3(e|0,0)|0;l=c[10742]|0;f=o+8|0;g[f>>2]=+(((c[e+4>>2]|0)-(c[l+4>>2]|0)+(((c[e>>2]|0)-(c[l>>2]|0)|0)*1e6|0)-(c[o+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[f>>2];if((c[m>>2]|0)==0){q=c[9152]|0;break}else{i=d;return}}}while(0);c[9152]=c[q+20>>2];i=d;return}function atE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=b+188|0;e=c[d>>2]|0;if((e|0)!=0){f=a+76|0;g=c[f>>2]|0;h=cA[c[(c[g>>2]|0)+36>>2]&4095](g)|0;g=a+24|0;dA[c[(c[h>>2]|0)+40>>2]&511](h,e,c[g>>2]|0);h=c[f>>2]|0;dA[c[(c[h>>2]|0)+12>>2]&511](h,e,c[g>>2]|0);c[d>>2]=0}d=a+8|0;g=c[d>>2]|0;e=a+16|0;a=0;while(1){if((a|0)>=(g|0)){i=1198;break}j=c[e>>2]|0;k=j+(a<<2)|0;if((c[k>>2]|0)==(b|0)){break}else{a=a+1|0}}if((i|0)==1198){return}i=g-1|0;c[k>>2]=c[j+(i<<2)>>2];c[(c[e>>2]|0)+(i<<2)>>2]=b;c[d>>2]=(c[d>>2]|0)-1;return}function atF(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=i;i=i+48|0;d=b+8|0;e=b+16|0;f=b+40|0;aDo(16592);h=a+28|0;ct[c[(c[a>>2]|0)+8>>2]&2047](a);aDo(16472);j=a+76|0;k=c[j>>2]|0;l=a+24|0;cv[c[(c[k>>2]|0)+32>>2]&2047](k,c[l>>2]|0);k=c[9152]|0;a=k+16|0;m=(c[a>>2]|0)-1|0;c[a>>2]=m;do{if((m|0)==0){if((c[k+4>>2]|0)==0){n=k}else{b3(f|0,0)|0;o=c[10742]|0;p=k+8|0;g[p>>2]=+(((c[f+4>>2]|0)-(c[o+4>>2]|0)+(((c[f>>2]|0)-(c[o>>2]|0)|0)*1e6|0)-(c[k+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[p>>2];if((c[a>>2]|0)!=0){break}n=c[9152]|0}c[9152]=c[n+20>>2]}}while(0);n=c[l>>2]|0;aDo(16288);if((n|0)!=0){a=c[(c[n>>2]|0)+32>>2]|0;k=c[j>>2]|0;j=cA[c[(c[k>>2]|0)+36>>2]&4095](k)|0;dI[a&1023](n,j,h,c[l>>2]|0)}l=c[9152]|0;h=l+16|0;j=(c[h>>2]|0)-1|0;c[h>>2]=j;do{if((j|0)==0){if((c[l+4>>2]|0)==0){q=l}else{b3(e|0,0)|0;n=c[10742]|0;a=l+8|0;g[a>>2]=+(((c[e+4>>2]|0)-(c[n+4>>2]|0)+(((c[e>>2]|0)-(c[n>>2]|0)|0)*1e6|0)-(c[l+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[a>>2];a=c[9152]|0;if((c[h>>2]|0)==0){q=a}else{r=a;break}}a=c[q+20>>2]|0;c[9152]=a;r=a}else{r=l}}while(0);l=r+16|0;q=(c[l>>2]|0)-1|0;c[l>>2]=q;if((q|0)!=0){i=b;return}do{if((c[r+4>>2]|0)==0){s=r}else{b3(d|0,0)|0;q=c[10742]|0;h=r+8|0;g[h>>2]=+(((c[d+4>>2]|0)-(c[q+4>>2]|0)+(((c[d>>2]|0)-(c[q>>2]|0)|0)*1e6|0)-(c[r+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[h>>2];if((c[l>>2]|0)==0){s=c[9152]|0;break}else{i=b;return}}}while(0);c[9152]=c[s+20>>2];i=b;return}function atG(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0.0,at=0.0,au=0.0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0;l=i;i=i+1408|0;m=l|0;n=l+48|0;o=l+96|0;p=l+112|0;q=l+128|0;r=l+144|0;s=l+176|0;t=l+224|0;u=l+288|0;v=l+320|0;w=l+376|0;x=l+552|0;y=l+912|0;z=l+928|0;A=l+960|0;B=l+976|0;C=l+1096|0;D=l+1216|0;E=l+1232|0;F=l+1248|0;G=l+1280|0;H=l+1344|0;c[v+8>>2]=0;g[v+12>>2]=1.0;g[v+16>>2]=1.0;g[v+20>>2]=1.0;g[v+24>>2]=0.0;c[v>>2]=25528;c[v+4>>2]=8;g[v+28>>2]=0.0;g[v+44>>2]=0.0;I=c[h+4>>2]|0;if((I|0)<20){c[w>>2]=19544;J=w+164|0;c[w+168>>2]=0;g[w+172>>2]=0.0;K=k+4|0;g[J>>2]=+g[K>>2];g[x+308>>2]=9999999747378752.0e-20;b[x+332>>1]=0;c[y>>2]=21768;c[y+4>>2]=x;c[y+8>>2]=v;c[y+12>>2]=h;if(!(aA0(y,d,e,j,j,w)|0)){i=l;return}y=w+132|0;v=y|0;L=+g[v>>2];x=w+136|0;M=+g[x>>2];N=w+140|0;O=+g[N>>2];if(L*L+M*M+O*O<=9999999747378752.0e-20){i=l;return}P=+g[J>>2];if(P>=+g[K>>2]){i=l;return}R=L*+g[d>>2]+M*+g[d+4>>2]+O*+g[d+8>>2];S=L*+g[d+16>>2]+M*+g[d+20>>2]+O*+g[d+24>>2];T=L*+g[d+32>>2]+M*+g[d+36>>2]+O*+g[d+40>>2];g[w+144>>2]=0.0;O=1.0/+Q(+(R*R+S*S+T*T));g[v>>2]=R*O;g[x>>2]=S*O;g[N>>2]=T*O;c[z>>2]=f;c[z+4>>2]=0;N=z+8|0;x=y;c[N>>2]=c[x>>2];c[N+4>>2]=c[x+4>>2];c[N+8>>2]=c[x+8>>2];c[N+12>>2]=c[x+12>>2];g[z+24>>2]=P;x=c[(c[k>>2]|0)+12>>2]|0;+c4[x&127](k,z,1);i=l;return}if((I-21|0)>>>0<9){if((I|0)==21){P=+g[j>>2];O=+g[j+16>>2];T=+g[j+32>>2];S=+g[j+4>>2];R=+g[j+20>>2];M=+g[j+36>>2];L=+g[j+8>>2];U=+g[j+24>>2];V=+g[j+40>>2];W=-0.0- +g[j+48>>2];X=-0.0- +g[j+52>>2];Y=-0.0- +g[j+56>>2];Z=P*W+O*X+T*Y;_=S*W+R*X+M*Y;$=L*W+U*X+V*Y;Y=+g[d+48>>2];X=+g[d+52>>2];W=+g[d+56>>2];g[A>>2]=Z+(P*Y+O*X+T*W);g[A+4>>2]=_+(S*Y+R*X+M*W);g[A+8>>2]=$+(L*Y+U*X+V*W);g[A+12>>2]=0.0;W=+g[e+48>>2];X=+g[e+52>>2];Y=+g[e+56>>2];aa=Z+(P*W+O*X+T*Y);T=_+(S*W+R*X+M*Y);M=$+(L*W+U*X+V*Y);z=c[k+16>>2]|0;x=B+4|0;N=A;c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];g[B+20>>2]=aa;g[B+24>>2]=T;g[B+28>>2]=M;g[B+32>>2]=0.0;c[B+36>>2]=z;c[B>>2]=18968;c[B+44>>2]=k;c[B+48>>2]=f;c[B+52>>2]=h;z=B+56|0;N=j;c[z>>2]=c[N>>2];c[z+4>>2]=c[N+4>>2];c[z+8>>2]=c[N+8>>2];c[z+12>>2]=c[N+12>>2];N=B+72|0;z=j+16|0;c[N>>2]=c[z>>2];c[N+4>>2]=c[z+4>>2];c[N+8>>2]=c[z+8>>2];c[N+12>>2]=c[z+12>>2];z=B+88|0;N=j+32|0;c[z>>2]=c[N>>2];c[z+4>>2]=c[N+4>>2];c[z+8>>2]=c[N+8>>2];c[z+12>>2]=c[N+12>>2];N=B+104|0;z=j+48|0;c[N>>2]=c[z>>2];c[N+4>>2]=c[z+4>>2];c[N+8>>2]=c[z+8>>2];c[N+12>>2]=c[z+12>>2];g[B+40>>2]=+g[k+4>>2];z=c[h+48>>2]|0;c[q>>2]=18760;c[q+4>>2]=z;c[q+8>>2]=B;B=c[h+52>>2]|0;z=B|0;N=q|0;aDD(o|0,0,16);aDD(p|0,0,16);if((a[B+60|0]&1)==0){azp(z,N,A,aa,T,M,o,p);i=l;return}else{azq(z,N,A,aa,T,M,o,p,c[B+56>>2]|0);i=l;return}}B=h;M=+g[j>>2];T=+g[j+16>>2];aa=+g[j+32>>2];Y=+g[j+4>>2];V=+g[j+20>>2];X=+g[j+36>>2];U=+g[j+8>>2];W=+g[j+24>>2];L=+g[j+40>>2];$=-0.0- +g[j+48>>2];R=-0.0- +g[j+52>>2];S=-0.0- +g[j+56>>2];_=M*$+T*R+aa*S;O=Y*$+V*R+X*S;P=U*$+W*R+L*S;S=+g[d+48>>2];R=+g[d+52>>2];$=+g[d+56>>2];Z=_+(M*S+T*R+aa*$);ab=O+(Y*S+V*R+X*$);ac=P+(U*S+W*R+L*$);$=+g[e+48>>2];R=+g[e+52>>2];S=+g[e+56>>2];ad=_+(M*$+T*R+aa*S);aa=O+(Y*$+V*R+X*S);X=P+(U*$+W*R+L*S);p=c[k+16>>2]|0;g[C+4>>2]=Z;g[C+8>>2]=ab;g[C+12>>2]=ac;g[C+16>>2]=0.0;g[C+20>>2]=ad;g[C+24>>2]=aa;g[C+28>>2]=X;g[C+32>>2]=0.0;c[C+36>>2]=p;c[C>>2]=18936;c[C+44>>2]=k;c[C+48>>2]=f;c[C+52>>2]=B;p=C+56|0;o=j;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=C+72|0;p=j+16|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];p=C+88|0;o=j+32|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=C+104|0;p=j+48|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];g[C+40>>2]=+g[k+4>>2];p=D|0;g[p>>2]=Z;o=D+4|0;g[o>>2]=ab;A=D+8|0;g[A>>2]=ac;g[D+12>>2]=0.0;if(ad>2]=ad}if(aa>2]=aa}if(X>2]=X}A=E|0;g[A>>2]=Z;o=E+4|0;g[o>>2]=ab;p=E+8|0;g[p>>2]=ac;g[E+12>>2]=0.0;if(Z>2]=ad}if(ab>2]=aa}if(ac>2]=X}dI[c[(c[h>>2]|0)+60>>2]&1023](B,C|0,D,E);i=l;return}if((I|0)!=31){i=l;return}I=h;E=c[h+64>>2]|0;c[F>>2]=18888;D=F+4|0;c[D>>2]=f;f=F+8|0;c[f>>2]=I;C=F+12|0;c[C>>2]=j;B=F+16|0;c[B>>2]=d;p=F+20|0;c[p>>2]=e;o=F+24|0;c[o>>2]=k;if((E|0)==0){k=c[h+16>>2]|0;if((k|0)<=0){i=l;return}h=t;A=u|0;N=u+4|0;z=u+8|0;q=u+12|0;x=u+14|0;y=u+16|0;v=u+20|0;w=u+24|0;K=u|0;u=s;J=t|0;ae=t+48|0;af=t+16|0;ag=s+16|0;ah=t+32|0;ai=s+32|0;aj=t+48|0;ak=t+52|0;al=t+56|0;am=t+60|0;an=0;ao=I;I=j;while(1){ap=c[ao+24>>2]|0;aq=c[ap+(an*80|0)+64>>2]|0;anx(s,I|0,ap+(an*80|0)|0);X=+g[ap+(an*80|0)+48>>2];ac=+g[ap+(an*80|0)+52>>2];aa=+g[ap+(an*80|0)+56>>2];ab=+g[I>>2]*X+ +g[I+4>>2]*ac+ +g[I+8>>2]*aa+ +g[I+48>>2];ad=+g[I+16>>2]*X+ +g[I+20>>2]*ac+ +g[I+24>>2]*aa+ +g[I+52>>2];Z=+g[I+32>>2]*X+ +g[I+36>>2]*ac+ +g[I+40>>2]*aa+ +g[I+56>>2];ap=J;do{ap=ap+16|0;}while((ap|0)!=(ae|0));c[h>>2]=c[u>>2];c[h+4>>2]=c[u+4>>2];c[h+8>>2]=c[u+8>>2];c[h+12>>2]=c[u+12>>2];c[af>>2]=c[ag>>2];c[af+4>>2]=c[ag+4>>2];c[af+8>>2]=c[ag+8>>2];c[af+12>>2]=c[ag+12>>2];c[ah>>2]=c[ai>>2];c[ah+4>>2]=c[ai+4>>2];c[ah+8>>2]=c[ai+8>>2];c[ah+12>>2]=c[ai+12>>2];g[aj>>2]=ab;g[ak>>2]=ad;g[al>>2]=Z;g[am>>2]=0.0;ap=(c[D>>2]|0)+192|0;ar=c[ap>>2]|0;c[ap>>2]=aq;ap=c[o>>2]|0;g[N>>2]=1.0;c[z>>2]=0;b[q>>1]=1;b[x>>1]=-1;c[y>>2]=0;c[A>>2]=19e3;c[v>>2]=ap;c[w>>2]=an;g[N>>2]=+g[ap+4>>2];atG(c[B>>2]|0,c[p>>2]|0,c[D>>2]|0,aq,t,K);c[(c[D>>2]|0)+192>>2]=ar;ar=an+1|0;if((ar|0)>=(k|0)){break}an=ar;ao=c[f>>2]|0;I=c[C>>2]|0}i=l;return}C=n;I=j+48|0;aa=+g[d+48>>2]- +g[I>>2];f=j+52|0;ac=+g[d+52>>2]- +g[f>>2];ao=j+56|0;X=+g[d+56>>2]- +g[ao>>2];an=j|0;ea(n,an,d|0);d=j|0;k=j+16|0;D=j+32|0;S=+g[d>>2]*aa+ +g[k>>2]*ac+ +g[D>>2]*X;K=j+4|0;t=j+20|0;p=j+36|0;L=+g[K>>2]*aa+ +g[t>>2]*ac+ +g[p>>2]*X;B=j+8|0;N=j+24|0;w=j+40|0;R=+g[B>>2]*aa+ +g[N>>2]*ac+ +g[w>>2]*X;j=G+48|0;v=G|0;do{v=v+16|0;}while((v|0)!=(j|0));j=G;c[j>>2]=c[C>>2];c[j+4>>2]=c[C+4>>2];c[j+8>>2]=c[C+8>>2];c[j+12>>2]=c[C+12>>2];C=G+16|0;j=n+16|0;c[C>>2]=c[j>>2];c[C+4>>2]=c[j+4>>2];c[C+8>>2]=c[j+8>>2];c[C+12>>2]=c[j+12>>2];j=G+32|0;C=n+32|0;c[j>>2]=c[C>>2];c[j+4>>2]=c[C+4>>2];c[j+8>>2]=c[C+8>>2];c[j+12>>2]=c[C+12>>2];g[G+48>>2]=S;g[G+52>>2]=L;g[G+56>>2]=R;g[G+60>>2]=0.0;G=m;X=+g[e+48>>2]- +g[I>>2];ac=+g[e+52>>2]- +g[f>>2];aa=+g[e+56>>2]- +g[ao>>2];ea(m,an,e|0);W=+g[d>>2]*X+ +g[k>>2]*ac+ +g[D>>2]*aa;$=+g[K>>2]*X+ +g[t>>2]*ac+ +g[p>>2]*aa;U=+g[B>>2]*X+ +g[N>>2]*ac+ +g[w>>2]*aa;w=H+48|0;N=H|0;do{N=N+16|0;}while((N|0)!=(w|0));w=H;c[w>>2]=c[G>>2];c[w+4>>2]=c[G+4>>2];c[w+8>>2]=c[G+8>>2];c[w+12>>2]=c[G+12>>2];G=H+16|0;w=m+16|0;c[G>>2]=c[w>>2];c[G+4>>2]=c[w+4>>2];c[G+8>>2]=c[w+8>>2];c[G+12>>2]=c[w+12>>2];w=H+32|0;G=m+32|0;c[w>>2]=c[G>>2];c[w+4>>2]=c[G+4>>2];c[w+8>>2]=c[G+8>>2];c[w+12>>2]=c[G+12>>2];g[H+48>>2]=W;g[H+52>>2]=$;g[H+56>>2]=U;g[H+60>>2]=0.0;H=c[E>>2]|0;E=F|0;G=r;if((H|0)==0){i=l;return}aa=W-S;W=$-L;$=U-R;U=1.0/+Q(+(aa*aa+W*W+$*$));ac=aa*U;X=W*U;P=$*U;if(ac==0.0){as=999999984306749400.0}else{as=1.0/ac}if(X==0.0){at=999999984306749400.0}else{at=1.0/X}if(P==0.0){au=999999984306749400.0}else{au=1.0/P}w=as<0.0|0;m=at<0.0|0;N=au<0.0|0;U=ac*aa+X*W+P*$;c[9806]=(c[9806]|0)+1;B=aDx(531)|0;if((B|0)==0){av=0}else{p=-(B+4|0)&15;c[B+p>>2]=B;av=B+(p+4)|0}p=0;do{B=av+(p<<2)|0;if((B|0)!=0){c[B>>2]=0}p=p+1|0;}while((p|0)<128);c[av>>2]=H;H=r+16|0;p=r+(w<<4)|0;B=r+((w^1)<<4)|0;w=r+(m<<4)+4|0;t=r+((m^1)<<4)+4|0;m=r+(N<<4)+8|0;K=r+((N^1)<<4)+8|0;N=F;F=1;r=126;D=128;k=128;d=av;while(1){av=F-1|0;e=c[d+(av<<2)>>2]|0;an=e;c[G>>2]=c[an>>2];c[G+4>>2]=c[an+4>>2];c[G+8>>2]=c[an+8>>2];c[G+12>>2]=c[an+12>>2];an=e+16|0;c[H>>2]=c[an>>2];c[H+4>>2]=c[an+4>>2];c[H+8>>2]=c[an+8>>2];c[H+12>>2]=c[an+12>>2];$=as*(+g[p>>2]-S);P=as*(+g[B>>2]-S);W=at*(+g[w>>2]-L);X=at*(+g[t>>2]-L);do{if($>X|W>P){aw=av;ax=r;ay=D;az=k;aA=d}else{aa=W>$?W:$;ac=X>2]-R);Y=au*(+g[K>>2]-R);if(aa>Y|V>ac){aw=av;ax=r;ay=D;az=k;aA=d;break}if((V>aa?V:aa)>=U){aw=av;ax=r;ay=D;az=k;aA=d;break}if((Y>2]|0)==0){cv[c[(c[N>>2]|0)+12>>2]&2047](E,e);aw=av;ax=r;ay=D;az=k;aA=d;break}if((av|0)>(r|0)){ao=D<<1;if((D|0)<(ao|0)){do{if((k|0)<(ao|0)){do{if((ao|0)==0){aB=0}else{c[9806]=(c[9806]|0)+1;f=aDx((D<<3|4)+15|0)|0;if((f|0)==0){aB=0;break}I=-(f+4|0)&15;c[f+I>>2]=f;aB=f+(I+4)|0}}while(0);if((D|0)>0){I=0;do{f=aB+(I<<2)|0;if((f|0)!=0){c[f>>2]=c[d+(I<<2)>>2]}I=I+1|0;}while((I|0)<(D|0))}if((d|0)==0){aC=ao;aD=aB;break}c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0);aC=ao;aD=aB}else{aC=k;aD=d}}while(0);I=D;while(1){f=aD+(I<<2)|0;if((f|0)!=0){c[f>>2]=0}f=I+1|0;if((f|0)<(ao|0)){I=f}else{aE=aC;aF=aD;break}}}else{aE=k;aF=d}aG=ao-2|0;aH=ao;aI=aE;aJ=aF}else{aG=r;aH=D;aI=k;aJ=d}c[aJ+(av<<2)>>2]=c[e+36>>2];c[aJ+(F<<2)>>2]=c[an>>2];aw=F+1|0;ax=aG;ay=aH;az=aI;aA=aJ}}while(0);if((aw|0)==0){break}else{F=aw;r=ax;D=ay;k=az;d=aA}}if((aA|0)==0){i=l;return}c[9804]=(c[9804]|0)+1;aDB(c[aA-4>>2]|0);i=l;return}function atH(a){a=a|0;return}function atI(d,e,f,h,j,k,l,m){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=+m;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0.0,aQ=0.0,aR=0.0,aS=0.0,aT=0.0,aU=0,aV=0.0,aW=0.0,aX=0.0,aY=0.0,aZ=0.0,a_=0.0;n=i;i=i+1672|0;o=n|0;p=n+24|0;q=n+32|0;r=n+208|0;s=n+568|0;t=n+576|0;u=n+600|0;v=n+648|0;w=n+664|0;x=n+728|0;y=n+952|0;z=n+968|0;A=n+984|0;B=n+1160|0;C=n+1184|0;D=n+1232|0;E=n+1296|0;F=n+1520|0;G=n+1536|0;H=n+1552|0;I=n+1568|0;J=n+1584|0;K=n+1648|0;L=c[j+4>>2]|0;if((L|0)<20){c[q>>2]=19544;M=q+164|0;c[q+168>>2]=0;g[q+172>>2]=m;N=l+4|0;g[M>>2]=+g[N>>2];g[r+308>>2]=9999999747378752.0e-20;b[r+332>>1]=0;c[s>>2]=19960;c[t>>2]=20336;c[t+4>>2]=r;c[t+8>>2]=s;c[t+12>>2]=d;c[t+16>>2]=j;c[t+20>>2]=0;if(!(ava(t,e,f,k,k,q)|0)){i=n;return}t=q+132|0;s=t|0;O=+g[s>>2];r=q+136|0;P=+g[r>>2];R=q+140|0;S=+g[R>>2];T=O*O+P*P+S*S;if(T<=9999999747378752.0e-20){i=n;return}U=+g[M>>2];if(U>=+g[N>>2]){i=n;return}V=1.0/+Q(+T);g[s>>2]=O*V;g[r>>2]=P*V;g[R>>2]=S*V;c[u>>2]=h;c[u+4>>2]=0;R=u+8|0;r=t;c[R>>2]=c[r>>2];c[R+4>>2]=c[r+4>>2];c[R+8>>2]=c[r+8>>2];c[R+12>>2]=c[r+12>>2];r=u+24|0;R=q+148|0;c[r>>2]=c[R>>2];c[r+4>>2]=c[R+4>>2];c[r+8>>2]=c[R+8>>2];c[r+12>>2]=c[R+12>>2];g[u+40>>2]=U;R=c[(c[l>>2]|0)+12>>2]|0;+c4[R&127](l,u,1);i=n;return}if((L-21|0)>>>0>=9){if((L|0)!=31){i=n;return}aDo(16160);u=j+16|0;if((c[u>>2]|0)>0){R=j+24|0;r=k|0;q=k+4|0;t=k+8|0;s=k+16|0;N=k+20|0;M=k+24|0;W=k+32|0;X=k+36|0;Y=k+40|0;Z=k+48|0;_=k+52|0;$=k+56|0;aa=J|0;ab=J+4|0;ac=J+8|0;ad=J+12|0;ae=J+16|0;af=J+20|0;ag=J+24|0;ah=J+28|0;ai=J+32|0;aj=J+36|0;ak=J+40|0;al=J+44|0;am=J+48|0;an=J+52|0;ao=J+56|0;ap=J+60|0;aq=h+192|0;ar=K|0;as=K+4|0;at=K+8|0;au=K+10|0;av=K+12|0;aw=K+16|0;ax=l+4|0;ay=K|0;K=c[aq>>2]|0;az=0;do{aA=c[R>>2]|0;U=+g[aA+(az*80|0)>>2];V=+g[aA+(az*80|0)+4>>2];S=+g[aA+(az*80|0)+8>>2];P=+g[aA+(az*80|0)+16>>2];O=+g[aA+(az*80|0)+20>>2];T=+g[aA+(az*80|0)+24>>2];aB=+g[aA+(az*80|0)+32>>2];aC=+g[aA+(az*80|0)+36>>2];aD=+g[aA+(az*80|0)+40>>2];aE=+g[aA+(az*80|0)+48>>2];aF=+g[aA+(az*80|0)+52>>2];aG=+g[aA+(az*80|0)+56>>2];aH=c[aA+(az*80|0)+64>>2]|0;aI=+g[r>>2];aJ=+g[q>>2];aK=+g[t>>2];aL=+g[s>>2];aM=+g[N>>2];aN=+g[M>>2];aO=+g[W>>2];aP=+g[X>>2];aQ=+g[Y>>2];aR=aE*aI+aF*aJ+aG*aK+ +g[Z>>2];aS=aE*aL+aF*aM+aG*aN+ +g[_>>2];aT=aE*aO+aF*aP+aG*aQ+ +g[$>>2];g[aa>>2]=U*aI+P*aJ+aB*aK;g[ab>>2]=V*aI+O*aJ+aC*aK;g[ac>>2]=S*aI+T*aJ+aD*aK;g[ad>>2]=0.0;g[ae>>2]=U*aL+P*aM+aB*aN;g[af>>2]=V*aL+O*aM+aC*aN;g[ag>>2]=S*aL+T*aM+aD*aN;g[ah>>2]=0.0;g[ai>>2]=U*aO+P*aP+aB*aQ;g[aj>>2]=V*aO+O*aP+aC*aQ;g[ak>>2]=S*aO+T*aP+aD*aQ;g[al>>2]=0.0;g[am>>2]=aR;g[an>>2]=aS;g[ao>>2]=aT;g[ap>>2]=0.0;c[aq>>2]=aH;b[at>>1]=1;b[au>>1]=-1;c[ar>>2]=18856;c[av>>2]=l;c[aw>>2]=az;g[as>>2]=+g[ax>>2];atI(d,e,f,h,aH,J,ay,m);c[aq>>2]=K;az=az+1|0;}while((az|0)<(c[u>>2]|0))}u=c[9152]|0;az=u+16|0;K=(c[az>>2]|0)-1|0;c[az>>2]=K;if((K|0)!=0){i=n;return}do{if((c[u+4>>2]|0)==0){aU=u}else{b3(p|0,0)|0;K=c[10742]|0;aq=u+8|0;g[aq>>2]=+(((c[p+4>>2]|0)-(c[K+4>>2]|0)+(((c[p>>2]|0)-(c[K>>2]|0)|0)*1e6|0)-(c[u+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[aq>>2];if((c[az>>2]|0)==0){aU=c[9152]|0;break}else{i=n;return}}}while(0);c[9152]=c[aU+20>>2];i=n;return}if((L|0)==21){aT=+g[k>>2];aS=+g[k+16>>2];aR=+g[k+32>>2];aQ=+g[k+4>>2];aD=+g[k+20>>2];aP=+g[k+36>>2];T=+g[k+8>>2];aO=+g[k+24>>2];S=+g[k+40>>2];aC=-0.0- +g[k+48>>2];O=-0.0- +g[k+52>>2];V=-0.0- +g[k+56>>2];aB=aT*aC+aS*O+aR*V;P=aQ*aC+aD*O+aP*V;U=T*aC+aO*O+S*V;V=+g[e+48>>2];O=+g[e+52>>2];aC=+g[e+56>>2];g[v>>2]=aB+(aT*V+aS*O+aR*aC);g[v+4>>2]=P+(aQ*V+aD*O+aP*aC);g[v+8>>2]=U+(T*V+aO*O+S*aC);g[v+12>>2]=0.0;aC=+g[f+48>>2];O=+g[f+52>>2];V=+g[f+56>>2];aN=aB+(aT*aC+aS*O+aR*V);aB=P+(aQ*aC+aD*O+aP*V);P=U+(T*aC+aO*O+S*V);V=+g[f>>2];O=+g[f+16>>2];aC=+g[f+32>>2];U=+g[f+4>>2];aM=+g[f+20>>2];aL=+g[f+36>>2];aK=+g[f+8>>2];aJ=+g[f+24>>2];aI=+g[f+40>>2];g[w>>2]=aT*V+aS*O+aR*aC;g[w+4>>2]=aT*U+aS*aM+aR*aL;g[w+8>>2]=aT*aK+aS*aJ+aR*aI;g[w+12>>2]=0.0;g[w+16>>2]=aQ*V+aD*O+aP*aC;g[w+20>>2]=aQ*U+aD*aM+aP*aL;g[w+24>>2]=aQ*aK+aD*aJ+aP*aI;g[w+28>>2]=0.0;g[w+32>>2]=T*V+aO*O+S*aC;g[w+36>>2]=T*U+aO*aM+S*aL;g[w+40>>2]=T*aK+aO*aJ+S*aI;aDD(w+44|0,0,20);aI=+dh[c[(c[j>>2]|0)+44>>2]&1023](j);c[x+4>>2]=d;aU=x+8|0;az=e;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+24|0;aU=e+16|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+40|0;az=e+32|0;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+56|0;aU=e+48|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+72|0;az=f;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+88|0;aU=f+16|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+104|0;az=f+32|0;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+120|0;aU=f+48|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+136|0;az=k;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+152|0;aU=k+16|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];aU=x+168|0;az=k+32|0;c[aU>>2]=c[az>>2];c[aU+4>>2]=c[az+4>>2];c[aU+8>>2]=c[az+8>>2];c[aU+12>>2]=c[az+12>>2];az=x+184|0;aU=k+48|0;c[az>>2]=c[aU>>2];c[az+4>>2]=c[aU+4>>2];c[az+8>>2]=c[aU+8>>2];c[az+12>>2]=c[aU+12>>2];g[x+204>>2]=aI;c[x>>2]=18824;c[x+212>>2]=l;c[x+216>>2]=h;c[x+220>>2]=j;g[x+200>>2]=+g[l+4>>2];g[x+208>>2]=m;dI[c[(c[d>>2]|0)+8>>2]&1023](d,w,y,z);w=c[j+48>>2]|0;c[o>>2]=18728;c[o+4>>2]=w;c[o+8>>2]=x;x=c[j+52>>2]|0;w=x|0;aU=o|0;if((a[x+60|0]&1)==0){azp(w,aU,v,aN,aB,P,y,z);i=n;return}else{azq(w,aU,v,aN,aB,P,y,z,c[x+56>>2]|0);i=n;return}}else if((L|0)==28){c[A>>2]=19544;L=A+164|0;c[A+168>>2]=0;g[A+172>>2]=m;x=l+4|0;g[L>>2]=+g[x>>2];c[B>>2]=20336;c[B+4>>2]=0;c[B+8>>2]=0;c[B+12>>2]=d;c[B+16>>2]=0;c[B+20>>2]=j;if(!(ava(B,e,f,k,k,A)|0)){i=n;return}B=A+132|0;z=B|0;P=+g[z>>2];y=A+136|0;aB=+g[y>>2];v=A+140|0;aN=+g[v>>2];aI=P*P+aB*aB+aN*aN;if(aI<=9999999747378752.0e-20){i=n;return}S=+g[L>>2];if(S>=+g[x>>2]){i=n;return}aJ=1.0/+Q(+aI);g[z>>2]=P*aJ;g[y>>2]=aB*aJ;g[v>>2]=aN*aJ;c[C>>2]=h;c[C+4>>2]=0;v=C+8|0;y=B;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=C+24|0;v=A+148|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];g[C+40>>2]=S;+c4[c[(c[l>>2]|0)+12>>2]&127](l,C,1);i=n;return}else{C=j;S=+g[k>>2];aJ=+g[k+16>>2];aN=+g[k+32>>2];aB=+g[k+4>>2];P=+g[k+20>>2];aI=+g[k+36>>2];aO=+g[k+8>>2];aK=+g[k+24>>2];T=+g[k+40>>2];aL=-0.0- +g[k+48>>2];aM=-0.0- +g[k+52>>2];U=-0.0- +g[k+56>>2];aC=S*aL+aJ*aM+aN*U;O=aB*aL+P*aM+aI*U;V=aO*aL+aK*aM+T*U;U=+g[e+48>>2];aM=+g[e+52>>2];aL=+g[e+56>>2];aP=aC+(S*U+aJ*aM+aN*aL);aD=O+(aB*U+P*aM+aI*aL);aQ=V+(aO*U+aK*aM+T*aL);aL=+g[f+48>>2];aM=+g[f+52>>2];U=+g[f+56>>2];aR=aC+(S*aL+aJ*aM+aN*U);aC=O+(aB*aL+P*aM+aI*U);O=V+(aO*aL+aK*aM+T*U);U=+g[f>>2];aM=+g[f+16>>2];aL=+g[f+32>>2];V=+g[f+4>>2];aS=+g[f+20>>2];aT=+g[f+36>>2];aG=+g[f+8>>2];aF=+g[f+24>>2];aE=+g[f+40>>2];g[D>>2]=S*U+aJ*aM+aN*aL;g[D+4>>2]=S*V+aJ*aS+aN*aT;g[D+8>>2]=S*aG+aJ*aF+aN*aE;g[D+12>>2]=0.0;g[D+16>>2]=aB*U+P*aM+aI*aL;g[D+20>>2]=aB*V+P*aS+aI*aT;g[D+24>>2]=aB*aG+P*aF+aI*aE;g[D+28>>2]=0.0;g[D+32>>2]=aO*U+aK*aM+T*aL;g[D+36>>2]=aO*V+aK*aS+T*aT;g[D+40>>2]=aO*aG+aK*aF+T*aE;aDD(D+44|0,0,20);aE=+dh[c[(c[j>>2]|0)+44>>2]&1023](C);c[E+4>>2]=d;v=E+8|0;y=e;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+24|0;v=e+16|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+40|0;y=e+32|0;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+56|0;v=e+48|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+72|0;y=f;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+88|0;v=f+16|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+104|0;y=f+32|0;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+120|0;v=f+48|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+136|0;y=k;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+152|0;v=k+16|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];v=E+168|0;y=k+32|0;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];y=E+184|0;v=k+48|0;c[y>>2]=c[v>>2];c[y+4>>2]=c[v+4>>2];c[y+8>>2]=c[v+8>>2];c[y+12>>2]=c[v+12>>2];g[E+204>>2]=aE;c[E>>2]=18792;c[E+212>>2]=l;c[E+216>>2]=h;c[E+220>>2]=C;g[E+200>>2]=+g[l+4>>2];g[E+208>>2]=m;dI[c[(c[d>>2]|0)+8>>2]&1023](d,D,F,G);D=H|0;g[D>>2]=aP;d=H+4|0;g[d>>2]=aD;l=H+8|0;g[l>>2]=aQ;g[H+12>>2]=0.0;if(aR>2]=aR;aV=aR}else{aV=aP}if(aC>2]=aC;aW=aC}else{aW=aD}if(O>2]=O;aX=O}else{aX=aQ}h=I|0;g[h>>2]=aP;v=I+4|0;g[v>>2]=aD;y=I+8|0;g[y>>2]=aQ;g[I+12>>2]=0.0;if(aP>2]=aR;aY=aR}else{aY=aP}if(aD>2]=aC;aZ=aC}else{aZ=aD}if(aQ>2]=O;a_=O}else{a_=aQ}g[D>>2]=+g[F>>2]+aV;g[d>>2]=+g[F+4>>2]+aW;g[l>>2]=+g[F+8>>2]+aX;g[h>>2]=+g[G>>2]+aY;g[v>>2]=+g[G+4>>2]+aZ;g[y>>2]=+g[G+8>>2]+a_;dI[c[(c[j>>2]|0)+60>>2]&1023](C,E|0,H,I);i=n;return}}function atJ(a){a=a|0;return}function atK(a){a=a|0;return}function atL(a){a=a|0;return}function atM(a){a=a|0;return}function atN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;f=i;i=i+256|0;h=f|0;j=f+224|0;k=f+240|0;c[h>>2]=22856;l=h+36|0;m=l;n=b;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];n=h+52|0;o=n;p=d;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];c[h+212>>2]=a;c[h+216>>2]=e;g[h+68>>2]=1.0;aDD(h+72|0,0,16);g[h+88>>2]=1.0;aDD(h+92|0,0,16);g[h+108>>2]=1.0;c[h+112>>2]=0;e=h+116|0;c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];g[h+132>>2]=1.0;aDD(h+136|0,0,16);g[h+152>>2]=1.0;aDD(h+156|0,0,16);g[h+172>>2]=1.0;c[h+176>>2]=0;m=h+180|0;c[m>>2]=c[p>>2];c[m+4>>2]=c[p+4>>2];c[m+8>>2]=c[p+8>>2];c[m+12>>2]=c[p+12>>2];q=+g[d>>2]- +g[b>>2];r=+g[d+4>>2]- +g[b+4>>2];s=+g[d+8>>2]- +g[b+8>>2];t=1.0/+Q(+(q*q+r*r+s*s));u=q*t;q=r*t;r=s*t;if(u==0.0){v=999999984306749400.0}else{v=1.0/u}g[h+4>>2]=v;if(q==0.0){w=999999984306749400.0}else{w=1.0/q}g[h+8>>2]=w;if(r==0.0){x=999999984306749400.0}else{x=1.0/r}g[h+12>>2]=x;c[h+20>>2]=v<0.0;c[h+24>>2]=w<0.0;c[h+28>>2]=x<0.0;g[h+32>>2]=u*(+g[n>>2]- +g[l>>2])+q*(+g[h+56>>2]- +g[h+40>>2])+r*(+g[h+60>>2]- +g[h+44>>2]);l=c[a+76>>2]|0;a=c[(c[l>>2]|0)+24>>2]|0;aDD(j|0,0,16);aDD(k|0,0,16);c_[a&127](l,b,d,h|0,j,k);i=f;return}function atO(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0;j=i;i=i+512|0;k=j+8|0;l=j+16|0;m=j+32|0;n=j+40|0;o=j+104|0;p=j+168|0;q=j+184|0;r=j+200|0;s=j+216|0;t=j+232|0;u=j+296|0;v=j+312|0;aDo(16032);w=n;x=d;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];w=n+16|0;y=d+16|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];w=n+32|0;z=d+32|0;c[w>>2]=c[z>>2];c[w+4>>2]=c[z+4>>2];c[w+8>>2]=c[z+8>>2];c[w+12>>2]=c[z+12>>2];w=n+48|0;A=w;B=d+48|0;c[A>>2]=c[B>>2];c[A+4>>2]=c[B+4>>2];c[A+8>>2]=c[B+8>>2];c[A+12>>2]=c[B+12>>2];A=o;d=e;c[A>>2]=c[d>>2];c[A+4>>2]=c[d+4>>2];c[A+8>>2]=c[d+8>>2];c[A+12>>2]=c[d+12>>2];A=o+16|0;C=e+16|0;c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];c[A+8>>2]=c[C+8>>2];c[A+12>>2]=c[C+12>>2];A=o+32|0;D=e+32|0;c[A>>2]=c[D>>2];c[A+4>>2]=c[D+4>>2];c[A+8>>2]=c[D+8>>2];c[A+12>>2]=c[D+12>>2];A=o+48|0;E=A;F=e+48|0;c[E>>2]=c[F>>2];c[E+4>>2]=c[F+4>>2];c[E+8>>2]=c[F+8>>2];c[E+12>>2]=c[F+12>>2];an6(n,o,l,m);G=+g[m>>2];H=G*+g[l+4>>2];I=G*+g[l+8>>2];g[r>>2]=+g[l>>2]*G;g[r+4>>2]=H;g[r+8>>2]=I;g[r+12>>2]=0.0;aDD(s|0,0,16);l=t+4|0;m=l;c[m>>2]=0;c[m+4>>2]=0;m=t+24|0;o=m;c[o>>2]=0;c[o+4>>2]=0;o=t+44|0;aDD(o|0,0,20);ec(n|0,u);I=+g[u>>2];H=+g[u+4>>2];G=+g[u+8>>2];J=+g[u+12>>2];K=2.0/(I*I+H*H+G*G+J*J);L=I*K;M=H*K;N=G*K;K=J*L;O=J*M;P=J*N;J=I*L;L=I*M;R=I*N;I=H*M;M=H*N;H=G*N;g[t>>2]=1.0-(I+H);g[l>>2]=L-P;g[t+8>>2]=R+O;g[t+12>>2]=0.0;g[t+16>>2]=L+P;g[t+20>>2]=1.0-(J+H);g[m>>2]=M-K;g[t+28>>2]=0.0;g[t+32>>2]=R-O;g[t+36>>2]=M+K;g[t+40>>2]=1.0-(J+I);g[o>>2]=0.0;atv(b|0,t,s,r,1.0,p,q);c[v>>2]=22144;r=v+36|0;c[r>>2]=c[x>>2];c[r+4>>2]=c[x+4>>2];c[r+8>>2]=c[x+8>>2];c[r+12>>2]=c[x+12>>2];x=v+52|0;c[x>>2]=c[y>>2];c[x+4>>2]=c[y+4>>2];c[x+8>>2]=c[y+8>>2];c[x+12>>2]=c[y+12>>2];y=v+68|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];z=v+84|0;y=z;c[y>>2]=c[B>>2];c[y+4>>2]=c[B+4>>2];c[y+8>>2]=c[B+8>>2];c[y+12>>2]=c[B+12>>2];B=v+100|0;c[B>>2]=c[d>>2];c[B+4>>2]=c[d+4>>2];c[B+8>>2]=c[d+8>>2];c[B+12>>2]=c[d+12>>2];d=v+116|0;c[d>>2]=c[C>>2];c[d+4>>2]=c[C+4>>2];c[d+8>>2]=c[C+8>>2];c[d+12>>2]=c[C+12>>2];C=v+132|0;c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];c[C+8>>2]=c[D+8>>2];c[C+12>>2]=c[D+12>>2];D=v+148|0;C=D;c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];c[v+180>>2]=a;c[v+184>>2]=f;g[v+188>>2]=h;c[v+192>>2]=b;h=+g[D>>2]- +g[z>>2];I=+g[v+152>>2]- +g[v+88>>2];J=+g[v+156>>2]- +g[v+92>>2];K=1.0/+Q(+(h*h+I*I+J*J));M=h*K;O=I*K;R=J*K;if(M==0.0){S=999999984306749400.0}else{S=1.0/M}g[v+4>>2]=S;if(O==0.0){T=999999984306749400.0}else{T=1.0/O}g[v+8>>2]=T;if(R==0.0){U=999999984306749400.0}else{U=1.0/R}g[v+12>>2]=U;c[v+20>>2]=S<0.0;c[v+24>>2]=T<0.0;c[v+28>>2]=U<0.0;g[v+32>>2]=J*R+(h*M+I*O);z=c[a+76>>2]|0;c_[c[(c[z>>2]|0)+24>>2]&127](z,w,A,v|0,p,q);q=c[9152]|0;p=q+16|0;v=(c[p>>2]|0)-1|0;c[p>>2]=v;if((v|0)!=0){i=j;return}do{if((c[q+4>>2]|0)==0){V=q}else{b3(k|0,0)|0;v=c[10742]|0;A=q+8|0;g[A>>2]=+(((c[k+4>>2]|0)-(c[v+4>>2]|0)+(((c[k>>2]|0)-(c[v>>2]|0)|0)*1e6|0)-(c[q+12>>2]|0)|0)>>>0>>>0)/1.0e3+ +g[A>>2];if((c[p>>2]|0)==0){V=c[9152]|0;break}else{i=j;return}}}while(0);c[9152]=c[V+20>>2];i=j;return}function atP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0,aK=0,aL=0.0,aM=0.0,aN=0.0;f=i;i=i+576|0;h=f|0;j=f+64|0;k=f+80|0;l=f+96|0;m=f+160|0;n=f+176|0;o=f+192|0;p=f+208|0;q=f+304|0;r=f+320|0;s=f+336|0;t=f+432|0;u=f+448|0;v=f+464|0;w=f+480|0;x=f+496|0;y=f+512|0;z=f+528|0;A=f+544|0;B=f+560|0;C=a;D=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;dF[c[(c[D>>2]|0)+56>>2]&255](D,b,1.0);D=d+4|0;E=c[D>>2]|0;switch(E|0){case 28:{F=+g[d+64>>2];G=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;cr[c[(c[G>>2]|0)+88>>2]&63](G,d+48|0,F,b,e);i=f;return};case 8:{F=+dh[c[(c[d>>2]|0)+44>>2]&1023](d);G=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;dg[c[(c[G>>2]|0)+16>>2]&63](G,F,b,e);i=f;return};case 10:{G=d;H=c[d+52>>2]|0;F=+g[G+28+(((H+2|0)%3|0)<<2)>>2];I=+g[G+28+(H<<2)>>2];G=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;cK[c[(c[G>>2]|0)+76>>2]&63](G,F,I,H,b,e);i=f;return};case 31:{H=c[d+16>>2]|0;if((H|0)<=0){i=f;return}G=d+24|0;J=a;K=b|0;L=b+4|0;M=b+8|0;N=b+16|0;O=b+20|0;P=b+24|0;Q=b+32|0;R=b+36|0;S=b+40|0;T=b+48|0;U=b+52|0;V=b+56|0;W=h|0;X=h+4|0;Y=h+8|0;Z=h+12|0;_=h+16|0;$=h+20|0;aa=h+24|0;ab=h+28|0;ac=h+32|0;ad=h+36|0;ae=h+40|0;af=h+44|0;ag=h+48|0;ah=h+52|0;ai=h+56|0;aj=h+60|0;ak=H;do{ak=ak-1|0;H=c[G>>2]|0;I=+g[H+(ak*80|0)>>2];F=+g[H+(ak*80|0)+4>>2];al=+g[H+(ak*80|0)+8>>2];am=+g[H+(ak*80|0)+16>>2];an=+g[H+(ak*80|0)+20>>2];ao=+g[H+(ak*80|0)+24>>2];ap=+g[H+(ak*80|0)+32>>2];aq=+g[H+(ak*80|0)+36>>2];ar=+g[H+(ak*80|0)+40>>2];as=+g[H+(ak*80|0)+48>>2];at=+g[H+(ak*80|0)+52>>2];au=+g[H+(ak*80|0)+56>>2];av=c[H+(ak*80|0)+64>>2]|0;H=c[(c[J>>2]|0)+24>>2]|0;aw=+g[K>>2];ax=+g[L>>2];ay=+g[M>>2];az=+g[N>>2];aA=+g[O>>2];aB=+g[P>>2];aC=+g[Q>>2];aD=+g[R>>2];aE=+g[S>>2];aF=as*aw+at*ax+au*ay+ +g[T>>2];aG=as*az+at*aA+au*aB+ +g[U>>2];aH=as*aC+at*aD+au*aE+ +g[V>>2];g[W>>2]=I*aw+am*ax+ap*ay;g[X>>2]=F*aw+an*ax+aq*ay;g[Y>>2]=al*aw+ao*ax+ar*ay;g[Z>>2]=0.0;g[_>>2]=I*az+am*aA+ap*aB;g[$>>2]=F*az+an*aA+aq*aB;g[aa>>2]=al*az+ao*aA+ar*aB;g[ab>>2]=0.0;g[ac>>2]=I*aC+am*aD+ap*aE;g[ad>>2]=F*aC+an*aD+aq*aE;g[ae>>2]=al*aC+ao*aD+ar*aE;g[af>>2]=0.0;g[ag>>2]=aF;g[ah>>2]=aG;g[ai>>2]=aH;g[aj>>2]=0.0;dI[H&1023](a,h,av,e);}while((ak|0)>0);i=f;return};case 11:{aH=+g[d+56>>2];aG=+g[d+60>>2];ak=c[d+68>>2]|0;h=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;cK[c[(c[h>>2]|0)+84>>2]&63](h,aH,aG,ak,b,e);i=f;return};case 9:{ak=c[d+92>>2]|0;if((ak|0)<=0){i=f;return}h=d+100|0;aj=d+120|0;ai=b|0;ah=b+4|0;ag=b+8|0;af=b+16|0;ae=b+20|0;ad=b+24|0;ac=b+32|0;ab=b+36|0;aa=b+40|0;$=b+48|0;_=b+52|0;Z=b+56|0;Y=l|0;X=l+4|0;W=l+8|0;V=l+12|0;U=l+16|0;T=l+20|0;S=l+24|0;R=l+28|0;Q=l+32|0;P=l+36|0;O=l+40|0;N=l+44|0;M=l+48|0;L=l+52|0;K=l+56|0;J=l+60|0;G=ak;do{G=G-1|0;ak=c[h>>2]|0;aG=+g[ak+(G<<4)>>2];aH=+g[ak+(G<<4)+4>>2];aF=+g[ak+(G<<4)+8>>2];ak=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;av=c[(c[ak>>2]|0)+16>>2]|0;aE=+g[(c[aj>>2]|0)+(G<<2)>>2];ar=+g[ai>>2];aD=+g[ah>>2];ao=aD*0.0;aC=+g[ag>>2];al=aC*0.0;aq=ar*0.0;an=+g[af>>2];F=+g[ae>>2];ap=F*0.0;am=+g[ad>>2];I=am*0.0;aB=an*0.0;aA=+g[ac>>2];az=+g[ab>>2];ay=az*0.0;ax=+g[aa>>2];aw=ax*0.0;au=aA*0.0;at=aG*ar+aH*aD+aF*aC+ +g[$>>2];as=aG*an+aH*F+aF*am+ +g[_>>2];aI=aG*aA+aH*az+aF*ax+ +g[Z>>2];g[Y>>2]=ar+ao+al;g[X>>2]=aq+aD+al;g[W>>2]=aC+(aq+ao);g[V>>2]=0.0;g[U>>2]=an+ap+I;g[T>>2]=aB+F+I;g[S>>2]=am+(aB+ap);g[R>>2]=0.0;g[Q>>2]=aA+ay+aw;g[P>>2]=au+az+aw;g[O>>2]=ax+(au+ay);g[N>>2]=0.0;g[M>>2]=at;g[L>>2]=as;g[K>>2]=aI;g[J>>2]=0.0;dg[av&63](ak,aE,l,e);}while((G|0)>0);i=f;return};case 13:{G=c[d+52>>2]|0;aE=+dh[c[(c[d>>2]|0)+84>>2]&1023](d);l=m;J=d+28|0;c[l>>2]=c[J>>2];c[l+4>>2]=c[J+4>>2];c[l+8>>2]=c[J+8>>2];c[l+12>>2]=c[J+12>>2];J=d;l=d;aI=+dh[c[(c[l>>2]|0)+44>>2]&1023](J);as=+dh[c[(c[l>>2]|0)+44>>2]&1023](J);at=+dh[c[(c[l>>2]|0)+44>>2]&1023](J);J=m|0;g[J>>2]=aI+ +g[J>>2];J=m+4|0;g[J>>2]=as+ +g[J>>2];J=m+8|0;g[J>>2]=at+ +g[J>>2];at=+g[m+(G<<2)>>2];m=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;cK[c[(c[m>>2]|0)+80>>2]&63](m,aE,at,G,b,e);i=f;return};case 0:{G=j;m=d+28|0;c[G>>2]=c[m>>2];c[G+4>>2]=c[m+4>>2];c[G+8>>2]=c[m+8>>2];c[G+12>>2]=c[m+12>>2];m=d;G=d;at=+dh[c[(c[G>>2]|0)+44>>2]&1023](m);aE=+dh[c[(c[G>>2]|0)+44>>2]&1023](m);as=+dh[c[(c[G>>2]|0)+44>>2]&1023](m);m=j|0;aI=at+ +g[m>>2];g[m>>2]=aI;m=j+4|0;at=aE+ +g[m>>2];g[m>>2]=at;m=j+8|0;aE=as+ +g[m>>2];g[m>>2]=aE;m=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;G=c[(c[m>>2]|0)+72>>2]|0;g[k>>2]=-0.0-aI;g[k+4>>2]=-0.0-at;g[k+8>>2]=-0.0-aE;g[k+12>>2]=0.0;co[G&255](m,k,j,b,e);i=f;return};default:{if((E-21|0)>>>0<9){g[n>>2]=999999984306749400.0;g[n+4>>2]=999999984306749400.0;g[n+8>>2]=999999984306749400.0;g[n+12>>2]=0.0;g[o>>2]=-999999984306749400.0;g[o+4>>2]=-999999984306749400.0;g[o+8>>2]=-999999984306749400.0;g[o+12>>2]=0.0;j=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;c[p>>2]=23856;c[p+4>>2]=23880;c[p+8>>2]=j;j=p+12|0;k=e;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=p+28|0;j=b;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=p+44|0;k=b+16|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=p+60|0;j=b+32|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];j=p+76|0;k=b+48|0;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];dI[c[(c[d>>2]|0)+60>>2]&1023](d,p|0,o,n);aJ=c[D>>2]|0}else{aJ=E}if((aJ|0)==3){g[q>>2]=999999984306749400.0;g[q+4>>2]=999999984306749400.0;g[q+8>>2]=999999984306749400.0;g[q+12>>2]=0.0;g[r>>2]=-999999984306749400.0;g[r+4>>2]=-999999984306749400.0;g[r+8>>2]=-999999984306749400.0;g[r+12>>2]=0.0;E=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;c[s>>2]=23856;c[s+4>>2]=23880;c[s+8>>2]=E;E=s+12|0;n=e;c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2];n=s+28|0;E=b;c[n>>2]=c[E>>2];c[n+4>>2]=c[E+4>>2];c[n+8>>2]=c[E+8>>2];c[n+12>>2]=c[E+12>>2];E=s+44|0;n=b+16|0;c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2];n=s+60|0;E=b+32|0;c[n>>2]=c[E>>2];c[n+4>>2]=c[E+4>>2];c[n+8>>2]=c[E+8>>2];c[n+12>>2]=c[E+12>>2];E=s+76|0;n=b+48|0;c[E>>2]=c[n>>2];c[E+4>>2]=c[n+4>>2];c[E+8>>2]=c[n+8>>2];c[E+12>>2]=c[n+12>>2];n=c[d+92>>2]|0;dI[c[(c[n>>2]|0)+8>>2]&1023](n,s+4|0,r,q);aK=c[D>>2]|0}else{aK=aJ}if((aK|0)>=7){i=f;return}aK=d;aJ=c[d+52>>2]|0;if((aJ|0)==0){D=d;if((cA[c[(c[D>>2]|0)+92>>2]&4095](aK)|0)<=0){i=f;return}q=d;d=b|0;r=y|0;s=b+4|0;n=y+4|0;E=b+8|0;o=y+8|0;p=b+48|0;k=b+16|0;j=b+20|0;m=b+24|0;G=b+52|0;J=b+32|0;l=b+36|0;K=b+40|0;L=b+56|0;M=A|0;N=A+4|0;O=A+8|0;P=A+12|0;Q=z|0;R=z+4|0;S=z+8|0;T=B|0;U=B+4|0;V=B+8|0;W=B+12|0;X=0;do{dI[c[(c[q>>2]|0)+96>>2]&1023](aK,X,y,z);aE=+g[d>>2];at=+g[r>>2];aI=+g[s>>2];as=+g[n>>2];ay=+g[E>>2];au=+g[o>>2];ax=+g[p>>2];aw=+g[k>>2];az=+g[j>>2];aA=+g[m>>2];ap=+g[G>>2];aB=+g[J>>2];am=+g[l>>2];I=+g[K>>2];F=+g[L>>2];g[M>>2]=ax+(aE*at+aI*as+ay*au);g[N>>2]=ap+(at*aw+as*az+au*aA);g[O>>2]=F+(at*aB+as*am+au*I);g[P>>2]=0.0;au=+g[Q>>2];as=+g[R>>2];at=+g[S>>2];g[T>>2]=ax+(aE*au+aI*as+ay*at);g[U>>2]=ap+(au*aw+as*az+at*aA);g[V>>2]=F+(au*aB+as*am+at*I);g[W>>2]=0.0;Y=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;dI[c[(c[Y>>2]|0)+8>>2]&1023](Y,A,B,e);X=X+1|0;}while((X|0)<(cA[c[(c[D>>2]|0)+92>>2]&4095](aK)|0));i=f;return}aK=aJ+28|0;if((c[aK>>2]|0)<=0){i=f;return}D=aJ+36|0;X=v|0;B=v+4|0;A=v+8|0;W=v+12|0;V=b|0;U=b+4|0;T=b+8|0;S=b+48|0;R=b+16|0;Q=b+20|0;P=b+24|0;O=b+52|0;N=b+32|0;M=b+36|0;L=b+40|0;K=b+56|0;b=w|0;l=w+4|0;J=w+8|0;G=w+12|0;m=x|0;j=x+4|0;k=x+8|0;p=x+12|0;o=aJ+16|0;aJ=t|0;E=t+4|0;n=t+8|0;s=t+12|0;r=u|0;d=u+4|0;z=u+8|0;y=u+12|0;q=0;do{Y=c[D>>2]|0;Z=c[Y+(q*56|0)+4>>2]|0;L1758:do{if((Z|0)>0){_=c[Y+(q*56|0)+12>>2]|0;I=0.0;at=0.0;am=0.0;$=c[_+(Z-1<<2)>>2]|0;aa=0;ab=_;while(1){_=c[ab+(aa<<2)>>2]|0;ac=c[o>>2]|0;as=am+ +g[ac+(_<<4)>>2];aB=at+ +g[ac+(_<<4)+4>>2];au=I+ +g[ac+(_<<4)+8>>2];ac=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;ad=c[(c[ac>>2]|0)+8>>2]|0;ae=c[o>>2]|0;F=+g[V>>2];aA=+g[ae+($<<4)>>2];az=+g[U>>2];aw=+g[ae+($<<4)+4>>2];ap=+g[T>>2];ay=+g[ae+($<<4)+8>>2];aI=+g[S>>2];aE=+g[R>>2];ax=+g[Q>>2];an=+g[P>>2];ao=+g[O>>2];aq=+g[N>>2];aC=+g[M>>2];al=+g[L>>2];aD=+g[K>>2];g[aJ>>2]=aI+(F*aA+az*aw+ap*ay);g[E>>2]=ao+(aA*aE+aw*ax+ay*an);g[n>>2]=aD+(aA*aq+aw*aC+ay*al);g[s>>2]=0.0;ae=c[o>>2]|0;ay=+g[ae+(_<<4)>>2];aw=+g[ae+(_<<4)+4>>2];aA=+g[ae+(_<<4)+8>>2];g[r>>2]=aI+(F*ay+az*aw+ap*aA);g[d>>2]=ao+(ay*aE+aw*ax+aA*an);g[z>>2]=aD+(ay*aq+aw*aC+aA*al);g[y>>2]=0.0;dI[ad&1023](ac,t,u,e);ac=aa+1|0;ad=c[D>>2]|0;if((ac|0)>=(c[ad+(q*56|0)+4>>2]|0)){aL=as;aM=aB;aN=au;break L1758}I=au;at=aB;am=as;$=_;aa=ac;ab=c[ad+(q*56|0)+12>>2]|0}}else{aL=0.0;aM=0.0;aN=0.0}}while(0);am=1.0/+(Z|0);at=aL*am;I=aM*am;as=aN*am;g[X>>2]=1.0;g[B>>2]=1.0;g[A>>2]=0.0;g[W>>2]=0.0;Y=c[D>>2]|0;am=+g[Y+(q*56|0)+40>>2];aB=+g[Y+(q*56|0)+44>>2];au=+g[Y+(q*56|0)+48>>2];Y=cA[c[(c[C>>2]|0)+16>>2]&4095](a)|0;ab=c[(c[Y>>2]|0)+8>>2]|0;al=+g[V>>2];aA=+g[U>>2];aC=+g[T>>2];aw=+g[S>>2];aq=+g[R>>2];ay=+g[Q>>2];aD=+g[P>>2];an=+g[O>>2];ax=+g[N>>2];aE=+g[M>>2];ao=+g[L>>2];ap=+g[K>>2];g[b>>2]=aw+(at*al+I*aA+as*aC);g[l>>2]=an+(at*aq+I*ay+as*aD);g[J>>2]=ap+(at*ax+I*aE+as*ao);g[G>>2]=0.0;az=at+am;am=I+aB;aB=as+au;g[m>>2]=aw+(az*al+am*aA+aB*aC);g[j>>2]=an+(az*aq+am*ay+aB*aD);g[k>>2]=ap+(az*ax+am*aE+aB*ao);g[p>>2]=0.0;dI[ab&1023](Y,w,x,v);q=q+1|0;}while((q|0)<(c[aK>>2]|0));i=f;return}}}function atQ(a){a=a|0;return}function atR(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0;b=i;i=i+112|0;d=b|0;e=b+16|0;f=b+32|0;h=b+48|0;j=b+64|0;k=b+80|0;l=b+96|0;m=a;do{if((cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0)!=0){n=cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0;if(((cA[c[(c[n>>2]|0)+48>>2]&4095](n)|0)&8|0)==0){break}n=a+24|0;o=c[n>>2]|0;p=cA[c[(c[o>>2]|0)+36>>2]&4095](o)|0;aDD(d|0,0,16);if((p|0)>0){q=0}else{break}do{o=c[n>>2]|0;r=dj[c[(c[o>>2]|0)+40>>2]&511](o,q)|0;o=c[r+1116>>2]|0;if((o|0)>0){s=0;do{t=cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0;cw[c[(c[t>>2]|0)+32>>2]&63](t,r+4+(s*276|0)+32|0,r+4+(s*276|0)+64|0,+g[r+4+(s*276|0)+80>>2],c[r+4+(s*276|0)+144>>2]|0,d);s=s+1|0;}while((s|0)<(o|0))}q=q+1|0;}while((q|0)<(p|0))}}while(0);if((cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0)==0){i=b;return}q=cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0;if(((cA[c[(c[q>>2]|0)+48>>2]&4095](q)|0)&3|0)==0){i=b;return}q=a+8|0;if((c[q>>2]|0)<=0){i=b;return}d=a+16|0;p=a+80|0;n=j|0;o=j+4|0;s=j+8|0;r=j+12|0;t=f|0;u=f+4|0;v=f+8|0;w=h|0;x=h+4|0;y=h+8|0;z=k|0;A=k+4|0;B=k+8|0;C=l|0;D=l+4|0;E=l+8|0;F=f+12|0;G=k+12|0;H=h+12|0;I=l+12|0;J=e|0;K=e+4|0;L=e+8|0;M=e+12|0;N=a;O=0;do{P=c[(c[d>>2]|0)+(O<<2)>>2]|0;do{if((c[P+204>>2]&32|0)==0){do{if((cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0)!=0){Q=cA[c[(c[m>>2]|0)+16>>2]&4095](a)|0;if(((cA[c[(c[Q>>2]|0)+48>>2]&4095](Q)|0)&1|0)==0){break}g[J>>2]=1.0;g[K>>2]=1.0;g[L>>2]=1.0;g[M>>2]=0.0;switch(c[P+216>>2]|0){case 1:{g[J>>2]=1.0;g[K>>2]=1.0;g[L>>2]=1.0;g[M>>2]=0.0;break};case 2:{g[J>>2]=0.0;g[K>>2]=1.0;g[L>>2]=0.0;g[M>>2]=0.0;break};case 3:{g[J>>2]=0.0;g[K>>2]=1.0;g[L>>2]=1.0;g[M>>2]=0.0;break};case 4:{g[J>>2]=1.0;g[K>>2]=0.0;g[L>>2]=0.0;g[M>>2]=0.0;break};case 5:{g[J>>2]=1.0;g[K>>2]=1.0;g[L>>2]=0.0;g[M>>2]=0.0;break};default:{g[J>>2]=1.0;g[K>>2]=0.0;g[L>>2]=0.0;g[M>>2]=0.0}}dI[c[(c[N>>2]|0)+24>>2]&1023](a,P+4|0,c[P+192>>2]|0,e)}}while(0);Q=c[p>>2]|0;if((Q|0)==0){break}if(((cA[c[(c[Q>>2]|0)+48>>2]&4095](Q)|0)&2|0)==0){break}g[n>>2]=1.0;g[o>>2]=0.0;g[s>>2]=0.0;g[r>>2]=0.0;Q=P+192|0;R=c[Q>>2]|0;dI[c[(c[R>>2]|0)+8>>2]&1023](R,P+4|0,f,h);g[t>>2]=+g[t>>2]+-.019999999552965164;g[u>>2]=+g[u>>2]+-.019999999552965164;g[v>>2]=+g[v>>2]+-.019999999552965164;g[w>>2]=+g[w>>2]+.019999999552965164;g[x>>2]=+g[x>>2]+.019999999552965164;g[y>>2]=+g[y>>2]+.019999999552965164;do{if((c[P+232>>2]|0)==2){R=c[Q>>2]|0;dI[c[(c[R>>2]|0)+8>>2]&1023](R,P+68|0,k,l);S=+g[z>>2]+-.019999999552965164;g[z>>2]=S;T=+g[A>>2]+-.019999999552965164;g[A>>2]=T;U=+g[B>>2]+-.019999999552965164;g[B>>2]=U;V=+g[C>>2]+.019999999552965164;g[C>>2]=V;W=+g[D>>2]+.019999999552965164;g[D>>2]=W;X=+g[E>>2]+.019999999552965164;g[E>>2]=X;if(S<+g[t>>2]){g[t>>2]=S}if(T<+g[u>>2]){g[u>>2]=T}if(U<+g[v>>2]){g[v>>2]=U}U=+g[G>>2];if(U<+g[F>>2]){g[F>>2]=U}if(+g[w>>2]>2]=V}if(+g[x>>2]>2]=W}if(+g[y>>2]>2]=X}X=+g[I>>2];if(+g[H>>2]>=X){break}g[H>>2]=X}}while(0);Q=c[p>>2]|0;dI[c[(c[Q>>2]|0)+52>>2]&1023](Q,f,h,j)}}while(0);O=O+1|0;}while((O|0)<(c[q>>2]|0));i=b;return}function atS(a){a=a|0;return}function atT(a,b){a=a|0;b=b|0;var d=0;d=b;ct[c[(c[d>>2]|0)+32>>2]&2047](b);atW(a,b);ct[c[(c[d>>2]|0)+36>>2]&2047](b);return}function atU(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b+64|0;e=b+72|0;f=c[e>>2]|0;g=b+76|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-8+4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+68>>2]=0;d=b+44|0;e=b+52|0;g=c[e>>2]|0;f=b+56|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+48>>2]=0;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0;d=b+4|0;e=b+12|0;g=c[e>>2]|0;f=b+16|0;if((g|0)==0){a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+8|0;c[h>>2]=0;return}if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0;a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+8|0;c[h>>2]=0;return}function atV(a){a=a|0;if((a|0)==0){return}aDB(a);return}function atW(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0;e=i;i=i+80|0;f=e|0;g=b+8|0;h=c[g>>2]|0;if((h|0)>0){j=b+16|0;k=0;l=h;while(1){m=c[(c[j>>2]|0)+(k<<2)>>2]|0;if((c[m+232>>2]|0)==1){cv[c[(c[m>>2]|0)+24>>2]&2047](m,d);n=c[g>>2]|0}else{n=l}m=k+1|0;if((m|0)<(n|0)){k=m;l=n}else{o=n;break}}}else{o=h}h=f+16|0;a[h]=1;n=f+12|0;c[n>>2]=0;l=f+4|0;c[l>>2]=0;k=f+8|0;c[k>>2]=0;j=f+36|0;a[j]=1;m=f+32|0;c[m>>2]=0;p=f+24|0;c[p>>2]=0;q=f+28|0;c[q>>2]=0;r=f+56|0;a[r]=1;s=f+52|0;c[s>>2]=0;t=f+44|0;c[t>>2]=0;u=f+48|0;c[u>>2]=0;v=f+76|0;a[v]=1;w=f+72|0;c[w>>2]=0;x=f+64|0;c[x>>2]=0;y=f+68|0;c[y>>2]=0;if((o|0)<=0){atU(f);i=e;return}z=b+16|0;b=0;A=-1;B=0;C=o;o=0;D=0;E=0;while(1){F=c[(c[(c[z>>2]|0)+(b<<2)>>2]|0)+192>>2]|0;G=F;H=G+~(G<<15)|0;I=(H>>10^H)*9|0;H=I>>6^I;I=H+~(H<<11)|0;H=I>>16^I;I=H&A;J=F;L1902:do{if(I>>>0>>0){K=c[o+(I<<2)>>2]|0;if((K|0)==-1){L=1594;break}M=c[w>>2]|0;N=K;while(1){if((J|0)==(c[M+(N<<3)>>2]|0)){break}K=c[D+(N<<2)>>2]|0;if((K|0)==-1){L=1594;break L1902}else{N=K}}if((N|0)==-1){L=1594;break}if(((c[s>>2]|0)+(N<<2)|0)==0){L=1594}else{O=C;P=o;Q=D;R=E}}else{L=1594}}while(0);if((L|0)==1594){L=0;I=H&E-1;L1912:do{if(I>>>0>>0){M=c[o+(I<<2)>>2]|0;if((M|0)==-1){L=1601;break}K=c[w>>2]|0;S=M;while(1){if((J|0)==(c[K+(S<<3)>>2]|0)){break}M=c[D+(S<<2)>>2]|0;if((M|0)==-1){L=1601;break L1912}else{S=M}}if((S|0)==-1){L=1601;break}c[(c[s>>2]|0)+(S<<2)>>2]=F;T=o;U=D;V=E}else{L=1601}}while(0);if((L|0)==1601){L=0;J=c[t>>2]|0;do{if((J|0)==(E|0)){K=(E|0)==0?1:E<<1;if((E|0)>=(K|0)){W=E;break}do{if((K|0)==0){X=0}else{c[9806]=(c[9806]|0)+1;N=aDx((K<<2)+19|0)|0;if((N|0)==0){X=0;break}M=-(N+4|0)&15;c[N+M>>2]=N;X=N+(M+4)|0}}while(0);if((E|0)>0){S=0;do{M=X+(S<<2)|0;if((M|0)!=0){c[M>>2]=c[(c[s>>2]|0)+(S<<2)>>2]}S=S+1|0;}while((S|0)<(E|0))}S=c[s>>2]|0;if((S|0)!=0){if((a[r]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[S-4>>2]|0)}c[s>>2]=0}a[r]=1;c[s>>2]=X;c[u>>2]=K;W=c[t>>2]|0}else{W=J}}while(0);S=(c[s>>2]|0)+(W<<2)|0;if((S|0)!=0){c[S>>2]=F}c[t>>2]=W+1;S=c[x>>2]|0;do{if((S|0)==(c[y>>2]|0)){M=(S|0)==0?1:S<<1;if((S|0)>=(M|0)){Y=S;break}do{if((M|0)==0){Z=0}else{c[9806]=(c[9806]|0)+1;N=aDx((M<<3|4)+15|0)|0;if((N|0)==0){Z=0;break}_=-(N+4|0)&15;c[N+_>>2]=N;Z=N+(_+4)|0}}while(0);if((S|0)>0){K=0;do{_=Z+(K<<3)|0;if((_|0)!=0){N=(c[w>>2]|0)+(K<<3)|0;$=_;_=c[N+4>>2]|0;c[$>>2]=c[N>>2];c[$+4>>2]=_}K=K+1|0;}while((K|0)<(S|0))}K=c[w>>2]|0;if((K|0)!=0){if((a[v]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[K-8+4>>2]|0)}c[w>>2]=0}a[v]=1;c[w>>2]=Z;c[y>>2]=M;Y=c[x>>2]|0}else{Y=S}}while(0);S=(c[w>>2]|0)+(Y<<3)|0;if((S|0)!=0){K=S;c[K>>2]=G;c[K+4>>2]=0}c[x>>2]=Y+1;K=c[u>>2]|0;if((E|0)<(K|0)){S=c[l>>2]|0;do{if((S|0)<(K|0)){if((S|0)<=(K|0)){if((c[k>>2]|0)<(K|0)){do{if((K|0)==0){aa=0}else{c[9806]=(c[9806]|0)+1;_=aDx((K<<2)+19|0)|0;if((_|0)==0){aa=0;break}$=-(_+4|0)&15;c[_+$>>2]=_;aa=_+($+4)|0}}while(0);if((S|0)>0){M=0;do{$=aa+(M<<2)|0;if(($|0)!=0){c[$>>2]=c[(c[n>>2]|0)+(M<<2)>>2]}M=M+1|0;}while((M|0)<(S|0))}M=c[n>>2]|0;if((M|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[M-4>>2]|0)}c[n>>2]=0}a[h]=1;c[n>>2]=aa;c[k>>2]=K;ab=aa}else{ab=c[n>>2]|0}M=S;do{$=ab+(M<<2)|0;if(($|0)!=0){c[$>>2]=0}M=M+1|0;}while((M|0)<(K|0))}c[l>>2]=K;M=c[p>>2]|0;if((M|0)<(K|0)){if((c[q>>2]|0)<(K|0)){do{if((K|0)==0){ac=0}else{c[9806]=(c[9806]|0)+1;$=aDx((K<<2)+19|0)|0;if(($|0)==0){ac=0;break}_=-($+4|0)&15;c[$+_>>2]=$;ac=$+(_+4)|0}}while(0);if((M|0)>0){_=0;do{$=ac+(_<<2)|0;if(($|0)!=0){c[$>>2]=c[(c[m>>2]|0)+(_<<2)>>2]}_=_+1|0;}while((_|0)<(M|0))}_=c[m>>2]|0;if((_|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[_-4>>2]|0)}c[m>>2]=0}a[j]=1;c[m>>2]=ac;c[q>>2]=K;ad=ac}else{ad=c[m>>2]|0}_=M;do{$=ad+(_<<2)|0;if(($|0)!=0){c[$>>2]=0}_=_+1|0;}while((_|0)<(K|0))}c[p>>2]=K;if((K|0)>0){_=c[n>>2]|0;M=0;do{c[_+(M<<2)>>2]=-1;M=M+1|0;}while((M|0)<(K|0));M=c[m>>2]|0;_=0;do{c[M+(_<<2)>>2]=-1;_=_+1|0;}while((_|0)<(K|0))}if((S|0)<=0){break}_=c[w>>2]|0;M=c[u>>2]|0;$=c[n>>2]|0;N=c[m>>2]|0;ae=0;do{af=c[_+(ae<<3)>>2]|0;ag=af+~(af<<15)|0;af=(ag>>10^ag)*9|0;ag=af>>6^af;af=ag+~(ag<<11)|0;ag=$+(((af>>16^af)&M-1)<<2)|0;c[N+(ae<<2)>>2]=c[ag>>2];c[ag>>2]=ae;ae=ae+1|0;}while((ae|0)<(S|0))}}while(0);S=c[u>>2]|0;ah=H&S-1;ai=S}else{ah=I;ai=K}S=c[n>>2]|0;G=S+(ah<<2)|0;ae=c[m>>2]|0;c[ae+(J<<2)>>2]=c[G>>2];c[G>>2]=J;T=S;U=ae;V=ai}cv[c[(c[F>>2]|0)+56>>2]&2047](F,d);O=c[g>>2]|0;P=T;Q=U;R=V}ae=b+1|0;if((ae|0)>=(O|0)){break}b=ae;A=R-1|0;B=c[l>>2]|0;C=O;o=P;D=Q;E=R}atU(f);i=e;return}function atX(a){a=a|0;return}function atY(a){a=a|0;return}function atZ(a){a=a|0;return}function at_(a,b,d){a=a|0;b=b|0;d=d|0;c[a+144>>2]=b;c[a+152>>2]=d;return}function at$(a,b,d){a=a|0;b=b|0;d=d|0;c[a+148>>2]=b;c[a+156>>2]=d;return}function at0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0;e=i;i=i+96|0;d=e|0;f=e+16|0;h=e+32|0;j=e+48|0;k=e+64|0;l=e+80|0;m=+g[a+28>>2];n=+g[b>>2];o=+g[a+32>>2];p=+g[b+4>>2];q=+g[a+36>>2];r=+g[b+8>>2];s=+g[a+76>>2];t=s+(m*n+o*p+q*r);u=+g[a+44>>2];v=+g[a+48>>2];w=+g[a+52>>2];x=+g[a+80>>2];y=x+(n*u+p*v+r*w);z=+g[a+60>>2];A=+g[a+64>>2];B=+g[a+68>>2];C=+g[a+84>>2];D=C+(n*z+p*A+r*B);g[d>>2]=t;g[d+4>>2]=y;g[d+8>>2]=D;g[d+12>>2]=0.0;r=+g[b+16>>2];p=+g[b+20>>2];n=+g[b+24>>2];E=s+(m*r+o*p+q*n);F=x+(r*u+p*v+n*w);G=C+(r*z+p*A+n*B);g[f>>2]=E;g[f+4>>2]=F;g[f+8>>2]=G;g[f+12>>2]=0.0;n=+g[b+32>>2];p=+g[b+36>>2];r=+g[b+40>>2];H=s+(m*n+o*p+q*r);q=x+(n*u+p*v+r*w);w=C+(n*z+p*A+r*B);g[h>>2]=H;g[h+4>>2]=q;g[h+8>>2]=w;g[h+12>>2]=0.0;B=(t+E+H)*.3333333432674408;r=(y+F+q)*.3333333432674408;A=(D+G+w)*.3333333432674408;g[j>>2]=B;g[j+4>>2]=r;g[j+8>>2]=A;g[j+12>>2]=0.0;p=E-t;E=F-y;F=G-D;G=H-t;t=q-y;y=w-D;D=E*y-F*t;w=F*G-p*y;y=p*t-E*G;G=1.0/+Q(+(y*y+(D*D+w*w)));g[k>>2]=1.0;g[k+4>>2]=1.0;g[k+8>>2]=0.0;g[k+12>>2]=0.0;b=a+8|0;I=c[b>>2]|0;J=c[(c[I>>2]|0)+8>>2]|0;g[l>>2]=G*D+B;g[l+4>>2]=G*w+r;g[l+8>>2]=G*y+A;g[l+12>>2]=0.0;dI[J&1023](I,j,l,k);k=c[b>>2]|0;l=a+12|0;dI[c[(c[k>>2]|0)+8>>2]&1023](k,d,f,l);k=c[b>>2]|0;dI[c[(c[k>>2]|0)+8>>2]&1023](k,f,h,l);f=c[b>>2]|0;dI[c[(c[f>>2]|0)+8>>2]&1023](f,h,d,l);i=e;return}function at1(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);return}function at2(a){a=a|0;var b=0;b=a-92+88|0;if((b|0)==0){return}aDB(b);return}function at3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a-92+88|0;dI[c[(c[f>>2]|0)+8>>2]&1023](f,b,d,e);return}function at4(a){a=a|0;if((a|0)==0){return}aDB(a);return}function at5(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0.0;h=i;i=i+280|0;j=h|0;k=b+136|0;l=(c[(c[b+4>>2]|0)+1108>>2]|0)!=(c[k>>2]|0);m=+g[e>>2];n=+g[d>>2]*f+m;o=+g[e+4>>2];p=+g[d+4>>2]*f+o;q=+g[e+8>>2];r=+g[d+8>>2]*f+q;if(l){s=n- +g[b+120>>2];t=p- +g[b+124>>2];u=r- +g[b+128>>2];v=m- +g[b+56>>2];w=o- +g[b+60>>2];x=q- +g[b+64>>2];y=v*+g[b+8>>2]+w*+g[b+24>>2]+x*+g[b+40>>2];z=v*+g[b+12>>2]+w*+g[b+28>>2]+x*+g[b+44>>2];A=v*+g[b+16>>2]+w*+g[b+32>>2]+x*+g[b+48>>2];B=s*+g[b+72>>2]+t*+g[b+88>>2]+u*+g[b+104>>2];C=s*+g[b+76>>2]+t*+g[b+92>>2]+u*+g[b+108>>2];D=s*+g[b+80>>2]+t*+g[b+96>>2]+u*+g[b+112>>2]}else{u=n- +g[b+56>>2];t=p- +g[b+60>>2];s=r- +g[b+64>>2];x=m- +g[b+120>>2];m=o- +g[b+124>>2];o=q- +g[b+128>>2];y=x*+g[b+72>>2]+m*+g[b+88>>2]+o*+g[b+104>>2];z=x*+g[b+76>>2]+m*+g[b+92>>2]+o*+g[b+108>>2];A=x*+g[b+80>>2]+m*+g[b+96>>2]+o*+g[b+112>>2];B=u*+g[b+8>>2]+t*+g[b+24>>2]+s*+g[b+40>>2];C=u*+g[b+12>>2]+t*+g[b+28>>2]+s*+g[b+44>>2];D=u*+g[b+16>>2]+t*+g[b+32>>2]+s*+g[b+48>>2]}g[j>>2]=B;g[j+4>>2]=C;g[j+8>>2]=D;g[j+12>>2]=0.0;g[j+16>>2]=y;g[j+20>>2]=z;g[j+24>>2]=A;g[j+28>>2]=0.0;E=j+64|0;F=d;c[E>>2]=c[F>>2];c[E+4>>2]=c[F+4>>2];c[E+8>>2]=c[F+8>>2];c[E+12>>2]=c[F+12>>2];g[j+80>>2]=f;g[j+84>>2]=0.0;g[j+88>>2]=0.0;c[j+108>>2]=0;g[j+112>>2]=0.0;a[j+116|0]=0;g[j+208>>2]=0.0;g[j+240>>2]=0.0;g[j+272>>2]=0.0;aDD(j+120|0,0,28);g[j+48>>2]=n;g[j+52>>2]=p;g[j+56>>2]=r;g[j+60>>2]=0.0;F=j+32|0;E=e;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];if(l){E=c[b+148>>2]|0;c[j+92>>2]=E;F=c[b+144>>2]|0;c[j+96>>2]=F;e=c[b+156>>2]|0;c[j+100>>2]=e;d=c[b+152>>2]|0;c[j+104>>2]=d;G=E;H=e;I=F;J=d;K=b+140|0;L=l?K:k;M=c[L>>2]|0;N=l?k:K;O=c[N>>2]|0;P=b+160|0;Q=c[P>>2]|0;R=Q;S=c[R>>2]|0;T=S+12|0;U=c[T>>2]|0;V=+dq[U&63](Q,j,M,G,H,O,I,J);i=h;return}else{d=c[b+144>>2]|0;c[j+92>>2]=d;F=c[b+148>>2]|0;c[j+96>>2]=F;e=c[b+152>>2]|0;c[j+100>>2]=e;E=c[b+156>>2]|0;c[j+104>>2]=E;G=d;H=e;I=F;J=E;K=b+140|0;L=l?K:k;M=c[L>>2]|0;N=l?k:K;O=c[N>>2]|0;P=b+160|0;Q=c[P>>2]|0;R=Q;S=c[R>>2]|0;T=S+12|0;U=c[T>>2]|0;V=+dq[U&63](Q,j,M,G,H,O,I,J);i=h;return}}function at6(a){a=a|0;if((a|0)==0){return}aDB(a);return}function at7(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;d=i;i=i+168|0;e=d|0;f=c[b>>2]|0;b=f;g=a+4|0;if((b|0)==(c[g>>2]|0)){i=d;return 1}h=a+12|0;j=c[h>>2]|0;if(!(dj[c[(c[j>>2]|0)+8>>2]&511](j,c[f+188>>2]|0)|0)){i=d;return 1}j=a+8|0;a=c[(c[j>>2]|0)+24>>2]|0;k=dE[c[(c[a>>2]|0)+8>>2]&127](a,c[g>>2]|0,b,0)|0;if((k|0)==0){i=d;return 1}a=c[g>>2]|0;g=c[h>>2]|0;h=e|0;c[h>>2]=24e3;c[e+4>>2]=0;c[e+136>>2]=a;c[e+140>>2]=b;l=e+8|0;m=a+4|0;aDD(e+144|0,-1|0,16);c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];m=e+24|0;l=a+20|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=e+40|0;m=a+36|0;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];m=e+56|0;l=a+52|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=f+4|0;m=e+72|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=f+20|0;m=e+88|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=f+36|0;m=e+104|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];l=f+52|0;f=e+120|0;c[f>>2]=c[l>>2];c[f+4>>2]=c[l+4>>2];c[f+8>>2]=c[l+8>>2];c[f+12>>2]=c[l+12>>2];c[h>>2]=21728;c[e+160>>2]=g;co[c[(c[k>>2]|0)+8>>2]&255](k,a,b,(c[j>>2]|0)+28|0,e|0);ct[c[c[k>>2]>>2]&2047](k);e=c[(c[j>>2]|0)+24>>2]|0;cv[c[(c[e>>2]|0)+60>>2]&2047](e,k);i=d;return 1}function at8(a){a=a|0;if((a|0)==0){return}aDB(a);return}function at9(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=a+184|0;e=c[d>>2]|0;if(+g[e+4>>2]==0.0){f=0;return f|0}h=c[b>>2]|0;if(!(dj[c[(c[e>>2]|0)+8>>2]&511](e,c[h+188>>2]|0)|0)){f=1;return f|0}atI(c[a+192>>2]|0,a+36|0,a+100|0,h,c[h+192>>2]|0,h+4|0,c[d>>2]|0,+g[a+188>>2]);f=1;return f|0}function aua(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aub(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0;d=a+216|0;e=c[d>>2]|0;if(+g[e+4>>2]==0.0){f=0;return f|0}h=c[b>>2]|0;if(!(dj[c[(c[e>>2]|0)+8>>2]&511](e,c[h+188>>2]|0)|0)){f=1;return f|0}atG(a+68|0,a+132|0,h,c[h+192>>2]|0,h+4|0,c[d>>2]|0);f=1;return f|0}function auc(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aud(a,b){a=a|0;b=b|0;var d=0;d=c[a+12>>2]|0;return dj[c[(c[d>>2]|0)+8>>2]&511](d,b)|0}function aue(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0;e=i;i=i+8|0;f=e|0;c[f>>2]=-1;c[f+4>>2]=c[a+16>>2];h=b+4|0;if((c[h>>2]|0)==0){c[h>>2]=f}f=a+12|0;h=c[f>>2]|0;j=+c4[c[(c[h>>2]|0)+12>>2]&127](h,b,d);g[a+4>>2]=+g[(c[f>>2]|0)+4>>2];i=e;return+j}function auf(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aug(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;h=h|0;var j=0,k=0,l=0,m=0.0;j=i;i=i+56|0;k=j|0;l=j+8|0;c[k>>2]=f;c[k+4>>2]=h;h=c[a+212>>2]|0;if(+g[h+4>>2]>2]=c[a+216>>2];c[l+4>>2]=k;k=l+8|0;a=b;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];a=l+24|0;k=d;c[a>>2]=c[k>>2];c[a+4>>2]=c[k+4>>2];c[a+8>>2]=c[k+8>>2];c[a+12>>2]=c[k+12>>2];g[l+40>>2]=e;m=+c4[c[(c[h>>2]|0)+12>>2]&127](h,l,0);i=j;return+m}function auh(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aui(a){a=a|0;return}function auj(a){a=a|0;return}function auk(a,b,c){a=a|0;b=b|0;c=c|0;return}function aul(a,b){a=a|0;b=b|0;return 1}function aum(a,b){a=a|0;b=b|0;return 1}function aun(a){a=a|0;return}function auo(a){a=a|0;return}function aup(a,b){a=a|0;b=+b;return}function auq(a,b){a=a|0;b=b|0;return}function aur(a,b,c){a=a|0;b=b|0;c=c|0;return}function aus(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;h=h|0;var j=0,k=0,l=0,m=0.0;j=i;i=i+56|0;k=j|0;l=j+8|0;c[k>>2]=f;c[k+4>>2]=h;h=c[a+212>>2]|0;if(+g[h+4>>2]>2]=c[a+216>>2];c[l+4>>2]=k;k=l+8|0;a=b;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];a=l+24|0;k=d;c[a>>2]=c[k>>2];c[a+4>>2]=c[k+4>>2];c[a+8>>2]=c[k+8>>2];c[a+12>>2]=c[k+12>>2];g[l+40>>2]=e;m=+c4[c[(c[h>>2]|0)+12>>2]&127](h,l,1);i=j;return+m}function aut(a){a=a|0;if((a|0)==0){return}aDB(a);return}function auu(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;return dj[c[(c[d>>2]|0)+8>>2]&511](d,b)|0}function auv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0;e=i;i=i+8|0;f=e|0;c[f>>2]=-1;c[f+4>>2]=c[a+24>>2];h=b+4|0;if((c[h>>2]|0)==0){c[h>>2]=f}f=a+20|0;h=c[f>>2]|0;j=+c4[c[(c[h>>2]|0)+12>>2]&127](h,b,d);g[a+4>>2]=+g[(c[f>>2]|0)+4>>2];i=e;return+j}function auw(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aux(a,d){a=a|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;e=i;i=i+144|0;f=e|0;h=e+48|0;j=e+112|0;k=c[d+36>>2]|0;d=h;l=c[(c[a+8>>2]|0)+24>>2]|0;m=c[l+(k*80|0)+64>>2]|0;n=c[a+12>>2]|0;o=f;anx(f,n|0,l+(k*80|0)|0);p=+g[l+(k*80|0)+48>>2];q=+g[l+(k*80|0)+52>>2];r=+g[l+(k*80|0)+56>>2];s=+g[n>>2]*p+ +g[n+4>>2]*q+ +g[n+8>>2]*r+ +g[n+48>>2];t=+g[n+16>>2]*p+ +g[n+20>>2]*q+ +g[n+24>>2]*r+ +g[n+52>>2];u=+g[n+32>>2]*p+ +g[n+36>>2]*q+ +g[n+40>>2]*r+ +g[n+56>>2];n=h+48|0;l=h|0;do{l=l+16|0;}while((l|0)!=(n|0));c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];o=h+16|0;d=f+16|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];d=h+32|0;o=f+32|0;c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];g[h+48>>2]=s;g[h+52>>2]=t;g[h+56>>2]=u;g[h+60>>2]=0.0;o=a+4|0;d=(c[o>>2]|0)+192|0;f=c[d>>2]|0;c[d>>2]=m;d=c[a+24>>2]|0;n=j+4|0;g[n>>2]=1.0;c[j+8>>2]=0;b[j+12>>1]=1;b[j+14>>1]=-1;c[j+16>>2]=0;c[j>>2]=19e3;c[j+20>>2]=d;c[j+24>>2]=k;g[n>>2]=+g[d+4>>2];atG(c[a+16>>2]|0,c[a+20>>2]|0,c[o>>2]|0,m,h,j|0);c[(c[o>>2]|0)+192>>2]=f;i=e;return}function auy(a,b,d){a=a|0;b=b|0;d=+d;cv[c[(c[a>>2]|0)+12>>2]&2047](a,b);return}function auz(a){a=a|0;if((a|0)==0){return}aDB(a);return}function auA(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;h=i;i=i+40|0;j=h|0;k=h+8|0;c[j>>2]=e;c[j+4>>2]=f;l=+g[b>>2];m=+g[b+4>>2];n=+g[b+8>>2];o=+g[a+56>>2]*l+ +g[a+60>>2]*m+ +g[a+64>>2]*n;p=l*+g[a+72>>2]+m*+g[a+76>>2]+n*+g[a+80>>2];q=l*+g[a+88>>2]+m*+g[a+92>>2]+n*+g[a+96>>2];c[k>>2]=c[a+48>>2];c[k+4>>2]=j;g[k+8>>2]=o;g[k+12>>2]=p;g[k+16>>2]=q;g[k+20>>2]=0.0;g[k+24>>2]=d;j=c[a+44>>2]|0;d=+c4[c[(c[j>>2]|0)+12>>2]&127](j,k,1);i=h;return+d}function auB(a){a=a|0;if((a|0)==0){return}aDB(a);return}function auC(a,b,d,e,f){a=a|0;b=b|0;d=+d;e=e|0;f=f|0;var h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;h=i;i=i+40|0;j=h|0;k=h+8|0;c[j>>2]=e;c[j+4>>2]=f;l=+g[b>>2];m=+g[b+4>>2];n=+g[b+8>>2];o=+g[a+56>>2]*l+ +g[a+60>>2]*m+ +g[a+64>>2]*n;p=l*+g[a+72>>2]+m*+g[a+76>>2]+n*+g[a+80>>2];q=l*+g[a+88>>2]+m*+g[a+92>>2]+n*+g[a+96>>2];c[k>>2]=c[a+48>>2];c[k+4>>2]=j;g[k+8>>2]=o;g[k+12>>2]=p;g[k+16>>2]=q;g[k+20>>2]=0.0;g[k+24>>2]=d;j=c[a+44>>2]|0;d=+c4[c[(c[j>>2]|0)+12>>2]&127](j,k,1);i=h;return+d}function auD(a){a=a|0;if((a|0)==0){return}aDB(a);return}function auE(b,d){b=b|0;d=d|0;var e=0,f=0,h=0;c[b+8>>2]=0;c[b>>2]=24952;a[b+28|0]=1;c[b+24>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;g[b+32>>2]=999999984306749400.0;g[b+36>>2]=999999984306749400.0;g[b+40>>2]=999999984306749400.0;g[b+44>>2]=0.0;g[b+48>>2]=-999999984306749400.0;g[b+52>>2]=-999999984306749400.0;g[b+56>>2]=-999999984306749400.0;g[b+60>>2]=0.0;e=b+64|0;c[e>>2]=0;c[b+68>>2]=1;g[b+72>>2]=0.0;g[b+76>>2]=1.0;g[b+80>>2]=1.0;g[b+84>>2]=1.0;g[b+88>>2]=0.0;c[b+4>>2]=31;if(!d){return}c[9806]=(c[9806]|0)+1;d=aDx(59)|0;do{if((d|0)==0){f=0}else{b=-(d+4|0)&15;h=d+(b+4)|0;c[d+b>>2]=d;if((h|0)==0){f=0;break}a[d+(b+40)|0]=1;c[d+(b+36)>>2]=0;c[d+(b+28)>>2]=0;c[d+(b|32)>>2]=0;c[h>>2]=0;c[d+(b+8)>>2]=0;c[d+(b+12)>>2]=-1;c[d+(b|16)>>2]=0;c[d+(b+20)>>2]=0;f=h}}while(0);c[e>>2]=f;return}function auF(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=24952;d=b+64|0;e=c[d>>2]|0;do{if((e|0)!=0){awp(e);f=c[d>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-40+36>>2]|0)}}while(0);d=b+16|0;e=b+24|0;f=c[e>>2]|0;g=b+28|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-80+76>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+20>>2]=0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-92+88>>2]|0);return}function auG(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=24952;d=b+64|0;e=c[d>>2]|0;do{if((e|0)!=0){awp(e);f=c[d>>2]|0;if((f|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[f-40+36>>2]|0)}}while(0);d=b+16|0;e=b+24|0;f=c[e>>2]|0;g=b+28|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+20|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-80+76>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+20|0;c[h>>2]=0;return}function auH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0;d=i;i=i+64|0;e=d|0;f=d+16|0;h=d+32|0;j=d+48|0;k=a+68|0;c[k>>2]=(c[k>>2]|0)+1;k=a+64|0;l=c[k>>2]|0;m=a+24|0;if((l|0)!=0){n=c[(c[m>>2]|0)+(b*80|0)+76>>2]|0;aww(l,n)|0;o=l+4|0;p=c[o>>2]|0;if((p|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-44+40>>2]|0)}c[o>>2]=n;n=l+12|0;c[n>>2]=(c[n>>2]|0)-1}n=a+16|0;a=(c[n>>2]|0)-1|0;l=e;e=f;f=h;h=j;j=c[m>>2]|0;o=j+(b*80|0)|0;c[l>>2]=c[o>>2];c[l+4>>2]=c[o+4>>2];c[l+8>>2]=c[o+8>>2];c[l+12>>2]=c[o+12>>2];p=j+(b*80|0)+16|0;c[e>>2]=c[p>>2];c[e+4>>2]=c[p+4>>2];c[e+8>>2]=c[p+8>>2];c[e+12>>2]=c[p+12>>2];q=j+(b*80|0)+32|0;c[f>>2]=c[q>>2];c[f+4>>2]=c[q+4>>2];c[f+8>>2]=c[q+8>>2];c[f+12>>2]=c[q+12>>2];r=j+(b*80|0)+48|0;c[h>>2]=c[r>>2];c[h+4>>2]=c[r+4>>2];c[h+8>>2]=c[r+8>>2];c[h+12>>2]=c[r+12>>2];s=j+(b*80|0)+64|0;t=c[s>>2]|0;u=j+(b*80|0)+68|0;v=c[u>>2]|0;w=j+(b*80|0)+72|0;x=+g[w>>2];y=j+(b*80|0)+76|0;z=c[y>>2]|0;A=j+(a*80|0)|0;c[o>>2]=c[A>>2];c[o+4>>2]=c[A+4>>2];c[o+8>>2]=c[A+8>>2];c[o+12>>2]=c[A+12>>2];A=j+(a*80|0)+16|0;c[p>>2]=c[A>>2];c[p+4>>2]=c[A+4>>2];c[p+8>>2]=c[A+8>>2];c[p+12>>2]=c[A+12>>2];A=j+(a*80|0)+32|0;c[q>>2]=c[A>>2];c[q+4>>2]=c[A+4>>2];c[q+8>>2]=c[A+8>>2];c[q+12>>2]=c[A+12>>2];A=j+(a*80|0)+48|0;c[r>>2]=c[A>>2];c[r+4>>2]=c[A+4>>2];c[r+8>>2]=c[A+8>>2];c[r+12>>2]=c[A+12>>2];c[s>>2]=c[j+(a*80|0)+64>>2];c[u>>2]=c[j+(a*80|0)+68>>2];g[w>>2]=+g[j+(a*80|0)+72>>2];c[y>>2]=c[j+(a*80|0)+76>>2];j=c[m>>2]|0;y=j+(a*80|0)|0;c[y>>2]=c[l>>2];c[y+4>>2]=c[l+4>>2];c[y+8>>2]=c[l+8>>2];c[y+12>>2]=c[l+12>>2];l=j+(a*80|0)+16|0;c[l>>2]=c[e>>2];c[l+4>>2]=c[e+4>>2];c[l+8>>2]=c[e+8>>2];c[l+12>>2]=c[e+12>>2];e=j+(a*80|0)+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=j+(a*80|0)+48|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];c[j+(a*80|0)+64>>2]=t;c[j+(a*80|0)+68>>2]=v;g[j+(a*80|0)+72>>2]=x;c[j+(a*80|0)+76>>2]=z;if((c[k>>2]|0)==0){B=c[n>>2]|0;C=B-1|0;c[n>>2]=C;i=d;return}c[(c[(c[m>>2]|0)+(b*80|0)+76>>2]|0)+36>>2]=b;B=c[n>>2]|0;C=B-1|0;c[n>>2]=C;i=d;return}function auI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=a+68|0;c[d>>2]=(c[d>>2]|0)+1;d=c[a+16>>2]|0;if((d|0)>0){e=a+24|0;f=d;do{f=f-1|0;if((c[(c[e>>2]|0)+(f*80|0)+64>>2]|0)==(b|0)){auH(a,f)}}while((f|0)>0)}ct[c[(c[a>>2]|0)+64>>2]&2047](a);return}function auJ(a){a=a|0;return 17296|0}function auK(a){a=a|0;return 24}function auL(a){a=a|0;return}function auM(a){a=a|0;return a+76|0}function auN(a,b){a=a|0;b=+b;g[a+72>>2]=b;return}function auO(a){a=a|0;return+(+g[a+72>>2])}function auP(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;b=i;i=i+32|0;d=b|0;e=b+16|0;f=a+32|0;g[f>>2]=999999984306749400.0;h=a+36|0;g[h>>2]=999999984306749400.0;j=a+40|0;g[j>>2]=999999984306749400.0;g[a+44>>2]=0.0;k=a+48|0;g[k>>2]=-999999984306749400.0;l=a+52|0;g[l>>2]=-999999984306749400.0;m=a+56|0;g[m>>2]=-999999984306749400.0;g[a+60>>2]=0.0;n=a+16|0;if((c[n>>2]|0)<=0){i=b;return}o=a+24|0;a=d|0;p=e|0;q=d+4|0;r=e+4|0;s=d+8|0;t=e+8|0;u=0;do{v=c[o>>2]|0;w=c[v+(u*80|0)+64>>2]|0;dI[c[(c[w>>2]|0)+8>>2]&1023](w,v+(u*80|0)|0,d,e);x=+g[a>>2];if(+g[f>>2]>x){g[f>>2]=x}x=+g[p>>2];if(+g[k>>2]>2]=x}x=+g[q>>2];if(+g[h>>2]>x){g[h>>2]=x}x=+g[r>>2];if(+g[l>>2]>2]=x}x=+g[s>>2];if(+g[j>>2]>x){g[j>>2]=x}x=+g[t>>2];if(+g[m>>2]>2]=x}u=u+1|0;}while((u|0)<(c[n>>2]|0));i=b;return}function auQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0;f=+g[a+48>>2];h=+g[a+32>>2];i=+g[a+52>>2];j=+g[a+36>>2];k=+g[a+56>>2];l=+g[a+40>>2];m=(c[a+16>>2]|0)==0;n=m?0.0:(k+l)*.5;o=m?0.0:(i+j)*.5;p=m?0.0:(f+h)*.5;q=a;r=+dh[c[(c[q>>2]|0)+44>>2]&1023](a);s=+dh[c[(c[q>>2]|0)+44>>2]&1023](a);t=(m?0.0:(f-h)*.5)+r;r=(m?0.0:(i-j)*.5)+s;s=(m?0.0:(k-l)*.5)+ +dh[c[(c[q>>2]|0)+44>>2]&1023](a);l=+g[b>>2];k=+P(+l);j=+g[b+4>>2];i=+P(+j);h=+g[b+8>>2];f=+P(+h);u=+g[b+16>>2];v=+P(+u);w=+g[b+20>>2];x=+P(+w);y=+g[b+24>>2];z=+P(+y);A=+g[b+32>>2];B=+P(+A);C=+g[b+36>>2];D=+P(+C);E=+g[b+40>>2];F=+P(+E);G=+g[b+48>>2]+(p*l+o*j+n*h);h=+g[b+52>>2]+(p*u+o*w+n*y);y=+g[b+56>>2]+(p*A+o*C+n*E);E=t*k+r*i+s*f;f=t*v+r*x+s*z;z=t*B+r*D+s*F;g[d>>2]=G-E;g[d+4>>2]=h-f;g[d+8>>2]=y-z;g[d+12>>2]=0.0;g[e>>2]=E+G;g[e+4>>2]=f+h;g[e+8>>2]=z+y;g[e+12>>2]=0.0;return}function auR(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0;e=i;i=i+96|0;f=e|0;h=e+64|0;j=e+80|0;g[f>>2]=1.0;aDD(f+4|0,0,16);g[f+20>>2]=1.0;aDD(f+24|0,0,16);g[f+40>>2]=1.0;aDD(f+44|0,0,20);dI[c[(c[a>>2]|0)+8>>2]&1023](a,f,h,j);k=(+g[j>>2]- +g[h>>2])*.5*2.0;l=(+g[j+4>>2]- +g[h+4>>2])*.5*2.0;m=(+g[j+8>>2]- +g[h+8>>2])*.5*2.0;n=b/12.0;b=l*l;l=m*m;g[d>>2]=n*(b+l);m=k*k;g[d+4>>2]=n*(m+l);g[d+8>>2]=n*(m+b);i=e;return}function auS(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=i;i=i+128|0;e=d|0;f=d+16|0;h=d+48|0;j=d+112|0;k=a+16|0;if((c[k>>2]|0)<=0){l=a+76|0;m=l;n=b;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];o=a;p=c[o>>2]|0;q=p+64|0;r=c[q>>2]|0;ct[r&2047](a);i=d;return}s=a+24|0;t=h;u=h+16|0;v=h+32|0;w=h+48|0;x=w;y=j;z=j|0;A=b|0;B=j+4|0;C=b+4|0;D=j+8|0;E=b+8|0;F=a+76|0;G=a+80|0;H=a+84|0;I=j+12|0;J=w|0;w=h+52|0;K=h+56|0;L=h+48|0;M=h+60|0;N=e;O=f;P=a+64|0;Q=f|0;R=f+16|0;f=0;do{S=c[s>>2]|0;T=S+(f*80|0)|0;c[t>>2]=c[T>>2];c[t+4>>2]=c[T+4>>2];c[t+8>>2]=c[T+8>>2];c[t+12>>2]=c[T+12>>2];T=S+(f*80|0)+16|0;c[u>>2]=c[T>>2];c[u+4>>2]=c[T+4>>2];c[u+8>>2]=c[T+8>>2];c[u+12>>2]=c[T+12>>2];T=S+(f*80|0)+32|0;c[v>>2]=c[T>>2];c[v+4>>2]=c[T+4>>2];c[v+8>>2]=c[T+8>>2];c[v+12>>2]=c[T+12>>2];T=S+(f*80|0)+48|0;c[x>>2]=c[T>>2];c[x+4>>2]=c[T+4>>2];c[x+8>>2]=c[T+8>>2];c[x+12>>2]=c[T+12>>2];T=c[S+(f*80|0)+64>>2]|0;S=cA[c[(c[T>>2]|0)+28>>2]&4095](T)|0;c[y>>2]=c[S>>2];c[y+4>>2]=c[S+4>>2];c[y+8>>2]=c[S+8>>2];U=+g[B>>2]*+g[C>>2]/+g[G>>2];V=+g[D>>2]*+g[E>>2]/+g[H>>2];g[z>>2]=+g[z>>2]*+g[A>>2]/+g[F>>2];g[B>>2]=U;g[D>>2]=V;g[I>>2]=0.0;S=c[(c[s>>2]|0)+(f*80|0)+64>>2]|0;cv[c[(c[S>>2]|0)+24>>2]&2047](S,j);V=+g[w>>2]*+g[C>>2];U=+g[K>>2]*+g[E>>2];g[L>>2]=+g[J>>2]*+g[A>>2];g[w>>2]=V;g[K>>2]=U;g[M>>2]=0.0;S=c[s>>2]|0;T=S+(f*80|0)|0;c[T>>2]=c[t>>2];c[T+4>>2]=c[t+4>>2];c[T+8>>2]=c[t+8>>2];c[T+12>>2]=c[t+12>>2];T=S+(f*80|0)+16|0;c[T>>2]=c[u>>2];c[T+4>>2]=c[u+4>>2];c[T+8>>2]=c[u+8>>2];c[T+12>>2]=c[u+12>>2];T=S+(f*80|0)+32|0;c[T>>2]=c[v>>2];c[T+4>>2]=c[v+4>>2];c[T+8>>2]=c[v+8>>2];c[T+12>>2]=c[v+12>>2];T=S+(f*80|0)+48|0;c[T>>2]=c[x>>2];c[T+4>>2]=c[x+4>>2];c[T+8>>2]=c[x+8>>2];c[T+12>>2]=c[x+12>>2];if((c[P>>2]|0)!=0){T=c[(c[s>>2]|0)+(f*80|0)+64>>2]|0;dI[c[(c[T>>2]|0)+8>>2]&1023](T,h,Q,e);c[R>>2]=c[N>>2];c[R+4>>2]=c[N+4>>2];c[R+8>>2]=c[N+8>>2];c[R+12>>2]=c[N+12>>2];T=c[P>>2]|0;S=c[(c[s>>2]|0)+(f*80|0)+76>>2]|0;W=aww(T,S)|0;L2296:do{if((W|0)==0){X=0}else{Y=c[T+8>>2]|0;if((Y|0)>-1){Z=0;_=W}else{X=c[T>>2]|0;break}while(1){if((Z|0)>=(Y|0)){X=_;break L2296}$=c[_+32>>2]|0;if(($|0)==0){X=_;break}else{Z=Z+1|0;_=$}}}}while(0);W=S;aDC(W|0,O|0,32)|0;awv(T,X,S)}f=f+1|0;}while((f|0)<(c[k>>2]|0));l=a+76|0;m=l;n=b;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];o=a;p=c[o>>2]|0;q=p+64|0;r=c[q>>2]|0;ct[r&2047](a);i=d;return}function auT(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+20>>2]=+g[a+72>>2];f=c[a+16>>2]|0;h=b+16|0;c[h>>2]=f;i=b+12|0;c[i>>2]=0;if((f|0)==0){return 17848}b=d;j=cS[c[(c[b>>2]|0)+16>>2]&511](d,76,f)|0;f=j+8|0;k=c[f>>2]|0;c[i>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,k)|0;if((c[h>>2]|0)>0){i=a+24|0;a=d;l=0;m=k;while(1){g[m+72>>2]=+g[(c[i>>2]|0)+(l*80|0)+72>>2];c[m+64>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[(c[i>>2]|0)+(l*80|0)+64>>2]|0)|0;if((dj[c[(c[e>>2]|0)+24>>2]&511](d,c[(c[i>>2]|0)+(l*80|0)+64>>2]|0)|0)==0){k=c[(c[b>>2]|0)+16>>2]|0;n=c[(c[i>>2]|0)+(l*80|0)+64>>2]|0;o=cA[c[(c[n>>2]|0)+48>>2]&4095](n)|0;n=cS[k&511](d,o,1)|0;o=c[(c[i>>2]|0)+(l*80|0)+64>>2]|0;k=cS[c[(c[o>>2]|0)+52>>2]&511](o,c[n+8>>2]|0,d)|0;co[c[(c[a>>2]|0)+20>>2]&255](d,n,k,1346455635,c[(c[i>>2]|0)+(l*80|0)+64>>2]|0)}c[m+68>>2]=c[(c[i>>2]|0)+(l*80|0)+68>>2];k=c[i>>2]|0;g[m>>2]=+g[k+(l*80|0)>>2];g[m+4>>2]=+g[k+(l*80|0)+4>>2];g[m+8>>2]=+g[k+(l*80|0)+8>>2];g[m+12>>2]=+g[k+(l*80|0)+12>>2];g[m+16>>2]=+g[k+(l*80|0)+16>>2];g[m+20>>2]=+g[k+(l*80|0)+20>>2];g[m+24>>2]=+g[k+(l*80|0)+24>>2];g[m+28>>2]=+g[k+(l*80|0)+28>>2];g[m+32>>2]=+g[k+(l*80|0)+32>>2];g[m+36>>2]=+g[k+(l*80|0)+36>>2];g[m+40>>2]=+g[k+(l*80|0)+40>>2];g[m+44>>2]=+g[k+(l*80|0)+44>>2];g[m+48>>2]=+g[k+(l*80|0)+48>>2];g[m+52>>2]=+g[k+(l*80|0)+52>>2];g[m+56>>2]=+g[k+(l*80|0)+56>>2];g[m+60>>2]=+g[k+(l*80|0)+60>>2];k=l+1|0;if((k|0)<(c[h>>2]|0)){l=k;m=m+76|0}else{p=a;break}}}else{p=d}co[c[(c[p>>2]|0)+20>>2]&255](d,j,16696,1497453121,c[f>>2]|0);return 17848}function auU(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;e=i;i=i+48|0;f=e|0;h=e+16|0;j=e+32|0;k=+g[b+60>>2]*.5;l=c[b+68>>2]|0;m=+g[d+(l<<2)>>2];n=+g[d>>2];o=+g[d+4>>2];p=+g[d+8>>2];q=+Q(+(n*n+o*o+p*p));r=c[b+64>>2]|0;if(m>q*+g[b+52>>2]){g[f+(r<<2)>>2]=0.0;g[f+(l<<2)>>2]=k;g[f+(c[b+72>>2]<<2)>>2]=0.0;s=a;t=f;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];i=e;return}q=+g[d+(r<<2)>>2];t=c[b+72>>2]|0;m=+g[d+(t<<2)>>2];p=+Q(+(q*q+m*m));if(p>1.1920928955078125e-7){o=+g[b+56>>2]/p;g[h+(r<<2)>>2]=q*o;g[h+(l<<2)>>2]=-0.0-k;g[h+(t<<2)>>2]=o*m;b=a;d=h;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];i=e;return}else{g[j+(r<<2)>>2]=0.0;g[j+(l<<2)>>2]=-0.0-k;g[j+(t<<2)>>2]=0.0;t=a;a=j;c[t>>2]=c[a>>2];c[t+4>>2]=c[a+4>>2];c[t+8>>2]=c[a+8>>2];c[t+12>>2]=c[a+12>>2];i=e;return}}function auV(a,b,c){a=a|0;b=b|0;c=c|0;auU(a,b,c);return}function auW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0;f=i;i=i+16|0;g=f|0;if((e|0)<=0){i=f;return}h=g;j=0;do{auU(g,a,b+(j<<4)|0);k=d+(j<<4)|0;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];j=j+1|0;}while((j|0)<(e|0));i=f;return}function auX(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;auU(a,b,d);e=b|0;f=b;if(+dh[c[(c[f>>2]|0)+44>>2]&1023](e)==0.0){return}h=+g[d>>2];i=+g[d+4>>2];j=+g[d+8>>2];d=h*h+i*i+j*j<1.4210854715202004e-14;k=d?-1.0:j;j=d?-1.0:i;i=d?-1.0:h;h=1.0/+Q(+(k*k+(i*i+j*j)));l=+dh[c[(c[f>>2]|0)+44>>2]&1023](e);e=a|0;g[e>>2]=h*i*l+ +g[e>>2];e=a+4|0;g[e>>2]=l*h*j+ +g[e>>2];e=a+8|0;g[e>>2]=l*h*k+ +g[e>>2];return}function auY(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0.0,j=0.0,k=0.0;d=c[a+68>>2]|0;e=c[a+64>>2]|0;f=c[a+72>>2]|0;h=a+60|0;i=+g[b+(d<<2)>>2]/+g[a+12+(d<<2)>>2]*+g[h>>2];g[h>>2]=i;h=a+56|0;j=+g[h>>2]*(+g[b+(e<<2)>>2]/+g[a+12+(e<<2)>>2]+ +g[b+(f<<2)>>2]/+g[a+12+(f<<2)>>2])*.5;g[h>>2]=j;g[a+52>>2]=j/+Q(+(i*i+j*j));j=+P(+(+g[b>>2]));i=+P(+(+g[b+4>>2]));k=+P(+(+g[b+8>>2]));g[a+12>>2]=j;g[a+16>>2]=i;g[a+20>>2]=k;g[a+24>>2]=0.0;return}function auZ(a){a=a|0;return 17840|0}function au_(a){a=a|0;return}function au$(a){a=a|0;return}function au0(a){a=a|0;return}function au1(a){a=a|0;return}function au2(a,b,c){a=a|0;b=b|0;c=c|0;return}function au3(a,b,c){a=a|0;b=b|0;c=c|0;return}function au4(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-76+72>>2]|0);return}function au5(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function au6(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0;e=i;i=i+96|0;f=e|0;h=e+64|0;j=e+80|0;g[f>>2]=1.0;aDD(f+4|0,0,16);g[f+20>>2]=1.0;aDD(f+24|0,0,16);g[f+40>>2]=1.0;aDD(f+44|0,0,20);k=a|0;dI[c[(c[a>>2]|0)+8>>2]&1023](k,f,h,j);l=(+g[j>>2]- +g[h>>2])*.5;m=(+g[j+4>>2]- +g[h+4>>2])*.5;n=(+g[j+8>>2]- +g[h+8>>2])*.5;o=+dh[c[(c[a>>2]|0)+44>>2]&1023](k);p=(l+o)*2.0;l=(m+o)*2.0;m=(n+o)*2.0;o=p*p;p=l*l;l=m*m;m=b*.0833333283662796;g[d>>2]=m*(p+l);g[d+4>>2]=m*(o+l);g[d+8>>2]=m*(o+p);g[d+12>>2]=0.0;i=e;return}function au7(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-76+72>>2]|0);return}function au8(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-76+72>>2]|0);return}function au9(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0.0,Z=0,_=0.0,$=0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0,aj=0,ak=0,al=0;j=i;i=i+280|0;k=j|0;l=j+80|0;m=j+216|0;n=j+232|0;o=j+248|0;p=j+264|0;q=d+16|0;if((c[q>>2]|0)==0){r=c[d+12>>2]|0;s=c[d+20>>2]|0;t=+g[e>>2];u=+g[e+4>>2];v=+g[e+8>>2];w=+g[e+16>>2];x=+g[e+20>>2];y=+g[e+24>>2];z=+g[e+32>>2];A=+g[e+36>>2];B=+g[e+40>>2];C=+g[e+48>>2];D=+g[e+52>>2];E=+g[e+56>>2];F=f|0;G=f+16|0;H=f+32|0;I=f+4|0;J=f+20|0;K=f+36|0;L=f+8|0;M=f+24|0;N=f+40|0;O=+g[F>>2];P=+g[G>>2];Q=+g[H>>2];R=+g[I>>2];S=+g[J>>2];T=+g[K>>2];U=+g[L>>2];V=+g[M>>2];W=+g[N>>2];X=f+48|0;Y=-0.0- +g[X>>2];Z=f+52|0;_=-0.0- +g[Z>>2];$=f+56|0;aa=-0.0- +g[$>>2];ab=t*O+w*P+z*Q;ac=u*O+x*P+A*Q;ad=v*O+y*P+B*Q;ae=t*R+w*S+z*T;af=u*R+x*S+A*T;ag=v*R+y*S+B*T;ah=t*U+w*V+z*W;z=u*U+x*V+A*W;A=v*U+y*V+B*W;ai=c[(c[r>>2]|0)+60>>2]|0;aj=s+48|0;B=-0.0- +g[aj>>2];ak=s+52|0;y=-0.0- +g[ak>>2];al=s+56|0;v=-0.0- +g[al>>2];g[n>>2]=ab*B+ae*y+ah*v;g[n+4>>2]=ac*B+af*y+z*v;g[n+8>>2]=ad*B+ag*y+A*v;g[n+12>>2]=0.0;dA[ai&511](m,r,n);v=+g[m>>2];y=+g[m+4>>2];B=+g[m+8>>2];x=C*O+D*P+E*Q+(O*Y+P*_+Q*aa)+(ab*v+ac*y+ad*B);ad=C*R+D*S+E*T+(R*Y+S*_+T*aa)+(ae*v+af*y+ag*B);ag=C*U+D*V+E*W+(U*Y+V*_+W*aa)+(ah*v+z*y+A*B);B=+g[aj>>2];A=+g[ak>>2];y=+g[al>>2];z=y*ag+(B*x+A*ad)- +g[s+64>>2];v=x-B*z;B=ad-A*z;A=ag-y*z;y=+g[F>>2];ag=+g[I>>2];ad=+g[L>>2];x=+g[G>>2];ah=+g[J>>2];aa=+g[M>>2];W=+g[Z>>2]+(v*x+B*ah+A*aa);_=+g[H>>2];V=+g[K>>2];Y=+g[N>>2];U=+g[$>>2]+(v*_+B*V+A*Y);g[o>>2]=+g[X>>2]+(ad*A+(y*v+ag*B));g[o+4>>2]=W;g[o+8>>2]=U;g[o+12>>2]=0.0;U=+g[aj>>2];W=+g[ak>>2];B=+g[al>>2];g[p>>2]=y*U+ag*W+ad*B;g[p+4>>2]=U*x+W*ah+B*aa;g[p+8>>2]=U*_+W*V+B*Y;g[p+12>>2]=0.0;dw[c[(c[h>>2]|0)+16>>2]&127](h,p,o,z);i=j;return}else{o=d+4|0;p=c[o>>2]|0;a[p+312|0]=0;c[p>>2]=0;a[p+356|0]=1;g[p+292>>2]=999999984306749400.0;g[p+296>>2]=999999984306749400.0;g[p+300>>2]=999999984306749400.0;g[p+304>>2]=0.0;al=p+332|0;aDD(p+336|0,0,17);b[al>>1]=b[al>>1]&-16;al=c[d+12>>2]|0;p=c[q>>2]|0;ak=c[al+4>>2]|0;aj=c[p+4>>2]|0;z=+dh[c[(c[al>>2]|0)+44>>2]&1023](al);X=c[q>>2]|0;Y=+dh[c[(c[X>>2]|0)+44>>2]&1023](X);X=c[o>>2]|0;o=c[d+8>>2]|0;c[k>>2]=23568;g[k+4>>2]=0.0;g[k+8>>2]=1.0;g[k+12>>2]=0.0;g[k+16>>2]=0.0;c[k+20>>2]=o;c[k+24>>2]=X;c[k+28>>2]=al;c[k+32>>2]=p;c[k+36>>2]=ak;c[k+40>>2]=aj;g[k+44>>2]=z;g[k+48>>2]=Y;a[k+52|0]=0;c[k+60>>2]=-1;c[k+72>>2]=1;g[l+128>>2]=999999984306749400.0;c[l+132>>2]=0;aj=l;ak=e;c[aj>>2]=c[ak>>2];c[aj+4>>2]=c[ak+4>>2];c[aj+8>>2]=c[ak+8>>2];c[aj+12>>2]=c[ak+12>>2];ak=l+16|0;aj=e+16|0;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];aj=l+32|0;ak=e+32|0;c[aj>>2]=c[ak>>2];c[aj+4>>2]=c[ak+4>>2];c[aj+8>>2]=c[ak+8>>2];c[aj+12>>2]=c[ak+12>>2];ak=l+48|0;aj=e+48|0;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];aj=l+64|0;ak=f;c[aj>>2]=c[ak>>2];c[aj+4>>2]=c[ak+4>>2];c[aj+8>>2]=c[ak+8>>2];c[aj+12>>2]=c[ak+12>>2];ak=l+80|0;aj=f+16|0;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];aj=l+96|0;ak=f+32|0;c[aj>>2]=c[ak>>2];c[aj+4>>2]=c[ak+4>>2];c[aj+8>>2]=c[ak+8>>2];c[aj+12>>2]=c[ak+12>>2];ak=l+112|0;aj=f+48|0;c[ak>>2]=c[aj>>2];c[ak+4>>2]=c[aj+4>>2];c[ak+8>>2]=c[aj+8>>2];c[ak+12>>2]=c[aj+12>>2];axX(k,l,h|0,0,0);i=j;return}}function ava(b,d,e,f,h,j){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0.0,ae=0,af=0,ag=0.0,ah=0.0,ai=0;k=i;i=i+352|0;l=k|0;m=k+16|0;n=k+24|0;o=k+40|0;p=k+48|0;q=k+64|0;r=k+80|0;s=k+96|0;t=k+144|0;u=k+160|0;v=k+224|0;w=k+288|0;x=k+304|0;y=+g[e+48>>2]- +g[d+48>>2];z=+g[e+52>>2]- +g[d+52>>2];A=+g[e+56>>2]- +g[d+56>>2];an6(d,e,n,o);B=+g[o>>2];C=+g[n>>2]*B;D=B*+g[n+4>>2];E=B*+g[n+8>>2];g[p>>2]=C;g[p+4>>2]=D;g[p+8>>2]=E;g[p+12>>2]=0.0;B=+g[h+48>>2]- +g[f+48>>2];F=+g[h+52>>2]- +g[f+52>>2];G=+g[h+56>>2]- +g[f+56>>2];an6(f,h,l,m);H=+g[m>>2];I=+g[l>>2]*H;J=H*+g[l+4>>2];K=H*+g[l+8>>2];g[q>>2]=I;g[q+4>>2]=J;g[q+8>>2]=K;g[q+12>>2]=0.0;l=c[b+12>>2]|0;H=+dh[c[(c[l>>2]|0)+16>>2]&1023](l|0);l=c[b+16>>2]|0;if((l|0)==0){L=0.0}else{L=+dh[c[(c[l>>2]|0)+16>>2]&1023](l|0)}M=H*+Q(+(C*C+D*D+E*E));E=M+L*+Q(+(I*I+J*J+K*K));K=B-y;J=F-z;I=G-A;if(E+ +Q(+(K*K+J*J+I*I))==0.0){N=0;i=k;return N|0}c[s>>2]=23960;l=s+36|0;g[l>>2]=999999984306749400.0;m=s+40|0;a[m]=0;au9(b,d,f,s);h=(a[m]&1)==0;m=r;n=s+20|0;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];if(h){N=0;i=k;return N|0}h=j+172|0;L=+g[s+4>>2];M=+g[s+8>>2];D=+g[s+12>>2];if(E+(K*L+J*M+I*D)<=1.1920928955078125e-7){N=0;i=k;return N|0}n=j+168|0;o=j;e=x|0;O=x+36|0;P=x+40|0;R=x+20|0;S=x+4|0;T=x+8|0;U=x+12|0;V=x+16|0;W=u+48|0;X=w|0;Y=w+4|0;Z=w+8|0;_=w+12|0;$=t|0;aa=t+4|0;ab=t+8|0;ac=t+12|0;C=+g[l>>2]+ +g[h>>2];l=0;H=0.0;ad=L;L=M;M=D;D=+g[s+16>>2];while(1){if(C<=.0010000000474974513){ae=2020;break}s=c[n>>2]|0;if((s|0)!=0){af=c[(c[s>>2]|0)+20>>2]|0;g[$>>2]=1.0;g[aa>>2]=1.0;g[ab>>2]=1.0;g[ac>>2]=0.0;cE[af&127](s,r,.20000000298023224,t)}ag=E+(I*M+(J*L+K*ad));if(ag<=1.1920928955078125e-7){N=0;ae=2024;break}ah=H+C/ag;if(!(ah>=0.0&ah<=1.0&ah>H)){N=0;ae=2030;break}anY(d,y,z,A,p,ah,u);anY(f,B,F,G,q,ah,v);s=c[n>>2]|0;if((s|0)!=0){af=c[(c[s>>2]|0)+20>>2]|0;g[X>>2]=1.0;g[Y>>2]=0.0;g[Z>>2]=0.0;g[_>>2]=0.0;cE[af&127](s,W,.20000000298023224,w)}cq[c[c[o>>2]>>2]&1023](j,ah);c[e>>2]=23960;g[O>>2]=999999984306749400.0;a[P]=0;au9(b,u,v,x);if((a[P]&1)==0){ae=2018;break}ag=+g[O>>2]+ +g[h>>2];c[m>>2]=c[R>>2];c[m+4>>2]=c[R+4>>2];c[m+8>>2]=c[R+8>>2];c[m+12>>2]=c[R+12>>2];ai=l+1|0;if((ai|0)>64){ae=2019;break}else{C=ag;l=ai;H=ah;ad=+g[S>>2];L=+g[T>>2];M=+g[U>>2];D=+g[V>>2]}}if((ae|0)==2024){i=k;return N|0}else if((ae|0)==2030){i=k;return N|0}else if((ae|0)==2019){dA[c[(c[j>>2]|0)+8>>2]&511](j,-2,ai);N=0;i=k;return N|0}else if((ae|0)==2020){g[j+164>>2]=H;g[j+132>>2]=ad;g[j+136>>2]=L;g[j+140>>2]=M;g[j+144>>2]=D;ai=j+148|0;c[ai>>2]=c[m>>2];c[ai+4>>2]=c[m+4>>2];c[ai+8>>2]=c[m+8>>2];c[ai+12>>2]=c[m+12>>2];N=1;i=k;return N|0}else if((ae|0)==2018){dA[c[(c[j>>2]|0)+8>>2]&511](j,-1,l);N=0;i=k;return N|0}return 0}function avb(a){a=a|0;if((a|0)==0){return}aDB(a);return}function avc(a){a=a|0;if((a|0)==0){return}aDB(a);return}function avd(a){a=a|0;return 0}function ave(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function avf(a,b,c){a=a|0;b=b|0;c=+c;return 0}function avg(a){a=a|0;return 17288|0}function avh(a){a=a|0;return 68}function avi(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0;f=(e|0)>0;if(f){h=0;do{g[d+(h<<4)+12>>2]=-999999984306749400.0;h=h+1|0;}while((h|0)<(e|0))}h=a+96|0;i=c[h>>2]|0;if((i|0)<=0){return}j=a+104|0;k=a+12|0;l=a+16|0;m=a+20|0;if(f){n=0}else{f=0;do{f=f+1|0;}while((f|0)<(i|0));return}do{i=c[j>>2]|0;o=+g[i+(n<<4)>>2]*+g[k>>2];p=+g[i+(n<<4)+4>>2]*+g[l>>2];q=+g[i+(n<<4)+8>>2]*+g[m>>2];i=0;do{r=o*+g[b+(i<<4)>>2]+p*+g[b+(i<<4)+4>>2]+q*+g[b+(i<<4)+8>>2];f=d+(i<<4)+12|0;if(r>+g[f>>2]){g[d+(i<<4)>>2]=o;g[d+(i<<4)+4>>2]=p;g[d+(i<<4)+8>>2]=q;g[f>>2]=r}i=i+1|0;}while((i|0)<(e|0));n=n+1|0;}while((n|0)<(c[h>>2]|0));return}function avj(a){a=a|0;return c[a+96>>2]|0}function avk(a){a=a|0;return c[a+96>>2]|0}function avl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0.0,m=0,n=0.0;f=c[a+96>>2]|0;h=(b|0)%(f|0)|0;i=(b+1|0)%(f|0)|0;f=a+104|0;b=c[f>>2]|0;j=a+12|0;k=a+16|0;l=+g[b+(h<<4)+4>>2]*+g[k>>2];m=a+20|0;n=+g[b+(h<<4)+8>>2]*+g[m>>2];g[d>>2]=+g[b+(h<<4)>>2]*+g[j>>2];g[d+4>>2]=l;g[d+8>>2]=n;g[d+12>>2]=0.0;d=c[f>>2]|0;n=+g[d+(i<<4)+4>>2]*+g[k>>2];l=+g[d+(i<<4)+8>>2]*+g[m>>2];g[e>>2]=+g[d+(i<<4)>>2]*+g[j>>2];g[e+4>>2]=n;g[e+8>>2]=l;g[e+12>>2]=0.0;return}function avm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0.0;e=c[a+104>>2]|0;f=+g[e+(b<<4)+4>>2]*+g[a+16>>2];h=+g[e+(b<<4)+8>>2]*+g[a+20>>2];g[d>>2]=+g[e+(b<<4)>>2]*+g[a+12>>2];g[d+4>>2]=f;g[d+8>>2]=h;g[d+12>>2]=0.0;return}function avn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0,j=0;h=b+36|0;if(+g[h>>2]<=f){return}a[b+40|0]=1;i=b+4|0;j=d;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];j=b+20|0;b=e;c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];g[h>>2]=f;return}function avo(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0;h=i;i=i+16|0;j=h|0;k=b|0;c[b+8>>2]=0;g[b+12>>2]=1.0;g[b+16>>2]=1.0;g[b+20>>2]=1.0;g[b+24>>2]=0.0;g[b+44>>2]=.03999999910593033;c[b+52>>2]=0;g[b+56>>2]=1.0;g[b+60>>2]=1.0;g[b+64>>2]=1.0;g[b+68>>2]=0.0;g[b+72>>2]=-1.0;g[b+76>>2]=-1.0;g[b+80>>2]=-1.0;g[b+84>>2]=0.0;a[b+88|0]=0;c[b>>2]=23600;l=b+108|0;a[l]=1;m=b+104|0;c[m>>2]=0;n=b+96|0;c[n>>2]=0;o=b+100|0;c[o>>2]=0;c[b+4>>2]=4;L2460:do{if((e|0)>0){c[9806]=(c[9806]|0)+1;b=aDx((e<<4|4)+15|0)|0;if((b|0)==0){p=0}else{q=-(b+4|0)&15;c[b+q>>2]=b;p=b+(q+4)|0}q=c[n>>2]|0;if((q|0)>0){b=0;do{r=p+(b<<4)|0;if((r|0)!=0){s=r;r=(c[m>>2]|0)+(b<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2]}b=b+1|0;}while((b|0)<(q|0))}q=c[m>>2]|0;if((q|0)!=0){if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-16+12>>2]|0)}c[m>>2]=0}a[l]=1;c[m>>2]=p;c[o>>2]=e;q=j;b=0;r=p;while(1){s=r+(b<<4)|0;if((s|0)!=0){t=s;c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2]}t=b+1|0;if((t|0)>=(e|0)){break}b=t;r=c[m>>2]|0}c[n>>2]=e;r=d;b=0;while(1){q=c[m>>2]|0;u=+g[r+4>>2];v=+g[r+8>>2];g[q+(b<<4)>>2]=+g[r>>2];g[q+(b<<4)+4>>2]=u;g[q+(b<<4)+8>>2]=v;g[q+(b<<4)+12>>2]=0.0;q=b+1|0;if((q|0)>=(e|0)){break L2460}r=r+f|0;b=q}}else{c[n>>2]=e}}while(0);aze(k);i=h;return}function avp(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];aze(a|0);return}function avq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;e=a|0;f=a+4|0;h=a+8|0;i=a+12|0;aDD(a|0,0,16);a=c[b+96>>2]|0;if((a|0)<=0){return}j=c[b+104>>2]|0;k=+g[b+12>>2];l=+g[b+16>>2];m=+g[b+20>>2];n=+g[d>>2];o=+g[d+4>>2];p=+g[d+8>>2];q=-999999984306749400.0;d=0;while(1){r=+g[j+(d<<4)>>2]*k;s=+g[j+(d<<4)+4>>2]*l;t=+g[j+(d<<4)+8>>2]*m;u=r*n+s*o+t*p;if(u>q){g[e>>2]=r;g[f>>2]=s;g[h>>2]=t;g[i>>2]=0.0;v=u}else{v=q}b=d+1|0;if((b|0)<(a|0)){q=v;d=b}else{break}}return}function avr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);e=b|0;f=b;if(+dh[c[(c[f>>2]|0)+44>>2]&1023](e)==0.0){return}h=+g[d>>2];i=+g[d+4>>2];j=+g[d+8>>2];d=h*h+i*i+j*j<1.4210854715202004e-14;k=d?-1.0:j;j=d?-1.0:i;i=d?-1.0:h;h=1.0/+Q(+(k*k+(i*i+j*j)));l=+dh[c[(c[f>>2]|0)+44>>2]&1023](e);e=a|0;g[e>>2]=h*i*l+ +g[e>>2];e=a+4|0;g[e>>2]=l*h*j+ +g[e>>2];e=a+8|0;g[e>>2]=l*h*k+ +g[e>>2];return}function avs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];f=c[a+96>>2]|0;c[b+60>>2]=f;if((f|0)==0){c[b+52>>2]=0;c[b+56>>2]=0;return 17784}h=a+104|0;c[b+52>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[h>>2]|0)|0;c[b+56>>2]=0;b=cS[c[(c[d>>2]|0)+16>>2]&511](d,16,f)|0;if((f|0)>0){e=c[b+8>>2]|0;a=0;while(1){i=c[h>>2]|0;g[e>>2]=+g[i+(a<<4)>>2];g[e+4>>2]=+g[i+(a<<4)+4>>2];g[e+8>>2]=+g[i+(a<<4)+8>>2];g[e+12>>2]=+g[i+(a<<4)+12>>2];i=a+1|0;if((i|0)<(f|0)){e=e+16|0;a=i}else{break}}}co[c[(c[d>>2]|0)+20>>2]&255](d,b,16904,1497453121,c[h>>2]|0);return 17784}function avt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b|0;c[d>>2]=23600;e=b+96|0;f=b+104|0;g=c[f>>2]|0;h=b+108|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[f>>2]=0}a[h]=1;c[f>>2]=0;c[e>>2]=0;c[b+100>>2]=0;c[d>>2]=21200;d=c[b+52>>2]|0;if((d|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[d-80+76>>2]|0);return}function avu(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b|0;c[d>>2]=23600;e=b+96|0;f=b+104|0;g=c[f>>2]|0;h=b+108|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[f>>2]=0}a[h]=1;c[f>>2]=0;c[e>>2]=0;c[b+100>>2]=0;c[d>>2]=21200;d=c[b+52>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-80+76>>2]|0)}if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-112+108>>2]|0);return}function avv(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[a+12>>2]=c;g[a+16>>2]=d;g[a+20>>2]=e;g[a+24>>2]=0.0;return}function avw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0;f=i;i=i+96|0;h=f|0;j=f+16|0;k=f+32|0;l=f+48|0;m=f+64|0;n=f+80|0;o=+dh[c[(c[a>>2]|0)+44>>2]&1023](a);p=h|0;q=h+4|0;r=h+8|0;s=a;t=b|0;u=b+16|0;v=b+32|0;w=b+4|0;x=b+20|0;y=b+36|0;z=b+8|0;A=b+24|0;B=b+40|0;C=k|0;D=k+4|0;E=k+8|0;F=k+12|0;G=j|0;H=j+4|0;I=j+8|0;J=b+48|0;K=b+52|0;L=b+56|0;b=l|0;M=l+4|0;N=l+8|0;O=l+12|0;P=n|0;Q=n+4|0;R=n+8|0;S=n+12|0;T=m|0;U=m+4|0;V=m+8|0;W=h;X=0;do{Y=h+(X<<2)|0;aDD(W|0,0,16);g[Y>>2]=1.0;Z=c[(c[s>>2]|0)+60>>2]|0;_=+g[p>>2];$=+g[q>>2];aa=+g[r>>2];ab=_*+g[w>>2]+$*+g[x>>2]+aa*+g[y>>2];ac=_*+g[z>>2]+$*+g[A>>2]+aa*+g[B>>2];g[C>>2]=+g[t>>2]*_+ +g[u>>2]*$+ +g[v>>2]*aa;g[D>>2]=ab;g[E>>2]=ac;g[F>>2]=0.0;dA[Z&511](j,a,k);ac=+g[G>>2];ab=+g[H>>2];aa=+g[I>>2];$=+g[K>>2]+(ac*+g[u>>2]+ab*+g[x>>2]+aa*+g[A>>2]);_=+g[L>>2]+(ac*+g[v>>2]+ab*+g[y>>2]+aa*+g[B>>2]);g[b>>2]=+g[J>>2]+(+g[t>>2]*ac+ +g[w>>2]*ab+ +g[z>>2]*aa);g[M>>2]=$;g[N>>2]=_;g[O>>2]=0.0;Z=l+(X<<2)|0;g[e+(X<<2)>>2]=o+ +g[Z>>2];g[Y>>2]=-1.0;Y=c[(c[s>>2]|0)+60>>2]|0;_=+g[p>>2];$=+g[q>>2];aa=+g[r>>2];ab=_*+g[w>>2]+$*+g[x>>2]+aa*+g[y>>2];ac=_*+g[z>>2]+$*+g[A>>2]+aa*+g[B>>2];g[P>>2]=+g[t>>2]*_+ +g[u>>2]*$+ +g[v>>2]*aa;g[Q>>2]=ab;g[R>>2]=ac;g[S>>2]=0.0;dA[Y&511](m,a,n);ac=+g[T>>2];ab=+g[U>>2];aa=+g[V>>2];$=+g[K>>2]+(ac*+g[u>>2]+ab*+g[x>>2]+aa*+g[A>>2]);_=+g[L>>2]+(ac*+g[v>>2]+ab*+g[y>>2]+aa*+g[B>>2]);g[b>>2]=+g[J>>2]+(+g[t>>2]*ac+ +g[w>>2]*ab+ +g[z>>2]*aa);g[M>>2]=$;g[N>>2]=_;g[O>>2]=0.0;g[d+(X<<2)>>2]=+g[Z>>2]-o;X=X+1|0;}while((X|0)<3);i=f;return}function avx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b|0,d);e=b;if(+dh[c[(c[e>>2]|0)+44>>2]&1023](b)==0.0){return}f=+g[d>>2];h=+g[d+4>>2];i=+g[d+8>>2];d=f*f+h*h+i*i<1.4210854715202004e-14;j=d?-1.0:i;i=d?-1.0:h;h=d?-1.0:f;f=1.0/+Q(+(j*j+(h*h+i*i)));k=+dh[c[(c[e>>2]|0)+44>>2]&1023](b);b=a|0;g[b>>2]=f*h*k+ +g[b>>2];b=a+4|0;g[b>>2]=k*f*i+ +g[b>>2];b=a+8|0;g[b>>2]=k*f*j+ +g[b>>2];return}function avy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;f=+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0);h=+g[a+68>>2];i=+g[a+52>>2];j=+g[a+72>>2];k=+g[a+56>>2];l=+g[a+76>>2];m=+g[a+60>>2];n=f+(h-i)*.5;o=f+(j-k)*.5;p=f+(l-m)*.5;f=(h+i)*.5;i=(j+k)*.5;k=(l+m)*.5;m=+g[b>>2];l=+P(+m);j=+g[b+4>>2];h=+P(+j);q=+g[b+8>>2];r=+P(+q);s=+g[b+16>>2];t=+P(+s);u=+g[b+20>>2];v=+P(+u);w=+g[b+24>>2];x=+P(+w);y=+g[b+32>>2];z=+P(+y);A=+g[b+36>>2];B=+P(+A);C=+g[b+40>>2];D=+P(+C);E=f*m+i*j+k*q+ +g[b+48>>2];q=f*s+i*u+k*w+ +g[b+52>>2];w=f*y+i*A+k*C+ +g[b+56>>2];C=n*l+o*h+p*r;r=n*t+o*v+p*x;x=n*z+o*B+p*D;g[d>>2]=E-C;g[d+4>>2]=q-r;g[d+8>>2]=w-x;g[d+12>>2]=0.0;g[e>>2]=C+E;g[e+4>>2]=r+q;g[e+8>>2]=x+w;g[e+12>>2]=0.0;return}function avz(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[a+12>>2]=c;g[a+16>>2]=d;g[a+20>>2]=e;g[a+24>>2]=0.0;avA(a);return}function avA(b){b=b|0;var d=0,e=0,f=0.0;d=i;i=i+96|0;e=d|0;a[b+84|0]=1;do{if((a[43008]|0)==0){if((b1(43008)|0)==0){break}g[10356]=1.0;aDD(41428,0,16);g[10361]=1.0;aDD(41448,0,16);g[10366]=1.0;g[10367]=0.0;g[10368]=-1.0;aDD(41476,0,16);g[10373]=-1.0;aDD(41496,0,16);g[10378]=-1.0;g[10379]=0.0}}while(0);aDD(e|0,0,96);dI[c[(c[b>>2]|0)+68>>2]&1023](b|0,41424,e|0,6);f=+g[b+44>>2];g[b+68>>2]=+g[e>>2]+f;g[b+52>>2]=+g[e+48>>2]-f;g[b+72>>2]=+g[e+20>>2]+f;g[b+56>>2]=+g[e+68>>2]-f;g[b+76>>2]=+g[e+40>>2]+f;g[b+60>>2]=+g[e+88>>2]-f;i=d;return}function avB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0,O=0,P=0,R=0.0,S=0.0,T=0.0,U=0;e=i;i=i+80|0;f=e|0;h=e+16|0;j=e+32|0;k=e+48|0;l=e+64|0;switch(c[b+4>>2]|0){case 8:{aDD(a|0,0,16);i=e;return};case 0:{m=b+28|0;n=+g[m>>2];o=+g[m+4>>2];p=+g[d+4>>2]>=0.0?o:-0.0-o;o=+g[m+8>>2];q=+g[d+8>>2]>=0.0?o:-0.0-o;g[a>>2]=+g[d>>2]>=0.0?n:-0.0-n;g[a+4>>2]=p;g[a+8>>2]=q;g[a+12>>2]=0.0;i=e;return};case 4:{m=c[b+104>>2]|0;r=c[b+96>>2]|0;q=+g[b+12>>2];p=+g[b+16>>2];n=+g[b+20>>2];o=+g[d>>2]*q;s=+g[d+4>>2]*p;t=+g[d+8>>2]*n;if((r|0)>0){u=-999999984306749400.0;v=-1;w=0;while(1){x=o*+g[m+(w<<4)>>2]+s*+g[m+(w<<4)+4>>2]+t*+g[m+(w<<4)+8>>2];y=x>u;z=y?w:v;A=w+1|0;if((A|0)<(r|0)){u=y?x:u;v=z;w=A}else{B=z;break}}}else{B=-1}u=p*+g[m+(B<<4)+4>>2];p=n*+g[m+(B<<4)+8>>2];g[a>>2]=q*+g[m+(B<<4)>>2];g[a+4>>2]=u;g[a+8>>2]=p;g[a+12>>2]=0.0;i=e;return};case 10:{p=+g[d>>2];u=+g[d+4>>2];q=+g[d+8>>2];B=b;m=c[b+52>>2]|0;n=+g[B+28+(m<<2)>>2];t=+g[B+28+(((m+2|0)%3|0)<<2)>>2];s=p*p+u*u+q*q;if(s<9999999747378752.0e-20){C=1.0;D=0.0;E=0.0}else{o=1.0/+Q(+s);C=p*o;D=u*o;E=q*o}aDD(k|0,0,16);g[k+(m<<2)>>2]=n;o=t*C*+g[b+12>>2];q=t*D*+g[b+16>>2];u=t*E*+g[b+20>>2];t=+g[b+44>>2];p=C*t;s=D*t;x=E*t;t=o+ +g[k>>2]-p;F=q+ +g[k+4>>2]-s;G=u+ +g[k+8>>2]-x;H=E*G+(C*t+D*F);if(H>-999999984306749400.0){I=H;J=t;K=F;L=G}else{I=-999999984306749400.0;J=0.0;K=0.0;L=0.0}aDD(l|0,0,16);g[l+(m<<2)>>2]=-0.0-n;n=o+ +g[l>>2]-p;p=q+ +g[l+4>>2]-s;s=u+ +g[l+8>>2]-x;l=E*s+(C*n+D*p)>I;g[a>>2]=l?n:J;g[a+4>>2]=l?p:K;g[a+8>>2]=l?s:L;g[a+12>>2]=0.0;i=e;return};case 5:{l=c[b+92>>2]|0;m=c[b+96>>2]|0;L=+g[b+12>>2];s=+g[b+16>>2];K=+g[b+20>>2];p=+g[d>>2]*L;J=+g[d+4>>2]*s;n=+g[d+8>>2]*K;if((m|0)>0){I=-999999984306749400.0;k=-1;B=0;while(1){D=p*+g[l+(B<<4)>>2]+J*+g[l+(B<<4)+4>>2]+n*+g[l+(B<<4)+8>>2];w=D>I;v=w?B:k;r=B+1|0;if((r|0)<(m|0)){I=w?D:I;k=v;B=r}else{M=v;break}}}else{M=-1}I=s*+g[l+(M<<4)+4>>2];s=K*+g[l+(M<<4)+8>>2];g[a>>2]=L*+g[l+(M<<4)>>2];g[a+4>>2]=I;g[a+8>>2]=s;g[a+12>>2]=0.0;i=e;return};case 13:{M=f;l=b+28|0;c[M>>2]=c[l>>2];c[M+4>>2]=c[l+4>>2];c[M+8>>2]=c[l+8>>2];c[M+12>>2]=c[l+12>>2];g[h>>2]=+g[d>>2];s=+g[d+4>>2];g[h+4>>2]=s;I=+g[d+8>>2];g[h+8>>2]=I;g[h+12>>2]=0.0;l=c[b+52>>2]|0;if((l|0)==1){N=0;O=l;P=2;R=I}else if((l|0)==2){N=0;O=l;P=1;R=s}else{N=1;O=0;P=2;R=I}I=+g[f+(N<<2)>>2];s=+g[f+(l<<2)>>2];L=+g[h+(N<<2)>>2];K=+Q(+(L*L+R*R));if(K!=0.0){n=I/K;g[j+(N<<2)>>2]=L*n;if(+g[h+(O<<2)>>2]<0.0){S=-0.0-s}else{S=s}g[j+(O<<2)>>2]=S;g[j+(P<<2)>>2]=n*R;g[a>>2]=+g[j>>2];g[a+4>>2]=+g[j+4>>2];g[a+8>>2]=+g[j+8>>2];g[a+12>>2]=0.0;i=e;return}else{g[j+(N<<2)>>2]=I;if(+g[h+(O<<2)>>2]<0.0){T=-0.0-s}else{T=s}g[j+(O<<2)>>2]=T;g[j+(P<<2)>>2]=0.0;g[a>>2]=+g[j>>2];g[a+4>>2]=+g[j+4>>2];g[a+8>>2]=+g[j+8>>2];g[a+12>>2]=0.0;i=e;return}break};case 1:{T=+g[d>>2];s=+g[d+4>>2];I=+g[d+8>>2];j=b+56|0;P=j;R=T*+g[j>>2]+s*+g[j+4>>2]+I*+g[j+8>>2];n=T*+g[j+16>>2]+s*+g[j+20>>2]+I*+g[j+24>>2];S=T*+g[j+32>>2]+s*+g[j+36>>2]+I*+g[j+40>>2];if(R>2];R=+g[P+(U<<4)+8>>2];g[a>>2]=+g[P+(U<<4)>>2];g[a+4>>2]=S;g[a+8>>2]=R;g[a+12>>2]=0.0;i=e;return};default:{dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);i=e;return}}}function avC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;e=i;i=i+32|0;f=e|0;h=e+16|0;j=f;k=d;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=f|0;l=+g[k>>2];j=f+4|0;m=+g[j>>2];d=f+8|0;n=+g[d>>2];if(l*l+m*m+n*n<1.4210854715202004e-14){g[k>>2]=-1.0;g[j>>2]=-1.0;g[d>>2]=-1.0;g[f+12>>2]=0.0;o=-1.0;p=-1.0;q=-1.0}else{o=l;p=m;q=n}n=1.0/+Q(+(o*o+p*p+q*q));g[k>>2]=o*n;g[j>>2]=p*n;g[d>>2]=q*n;avB(h,b,f);switch(c[b+4>>2]|0){case 0:{r=+g[b+44>>2];break};case 13:{r=+g[b+44>>2];break};case 1:{r=+g[b+44>>2];break};case 5:case 4:{r=+g[b+44>>2];break};case 8:{r=+g[b+28>>2]*+g[b+12>>2];break};case 10:{r=+g[b+44>>2];break};default:{r=+dh[c[(c[b>>2]|0)+44>>2]&1023](b)}}n=r*+g[j>>2]+ +g[h+4>>2];q=r*+g[d>>2]+ +g[h+8>>2];g[a>>2]=r*+g[k>>2]+ +g[h>>2];g[a+4>>2]=n;g[a+8>>2]=q;g[a+12>>2]=0.0;i=e;return}function avD(a){a=a|0;return}function avE(a){a=a|0;return 0}function avF(a){a=a|0;return 0}function avG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function avH(a,b,c){a=a|0;b=b|0;c=c|0;return}function avI(a){a=a|0;return 0}function avJ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function avK(a,b,c){a=a|0;b=b|0;c=+c;return 0}function avL(a){a=a|0;return 17768|0}function avM(a){a=a|0;return}function avN(a){a=a|0;return}function avO(a){a=a|0;return(c[a+92>>2]|0)+4|0}function avP(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0;f=i;i=i+112|0;h=f|0;j=f+16|0;k=f+32|0;l=f+48|0;m=f+64|0;n=f+80|0;o=f+96|0;p=c[a+4>>2]|0;switch(p|0){case 10:{q=a;r=c[a+52>>2]|0;s=+g[q+28+(((r+2|0)%3|0)<<2)>>2];t=o|0;g[t>>2]=s;u=o+4|0;g[u>>2]=s;v=o+8|0;g[v>>2]=s;g[o+12>>2]=0.0;g[o+(r<<2)>>2]=s+ +g[q+28+(r<<2)>>2];s=+g[a+44>>2];w=s+ +g[t>>2];g[t>>2]=w;x=s+ +g[u>>2];g[u>>2]=x;y=s+ +g[v>>2];g[v>>2]=y;s=+P(+(+g[b>>2]));z=+P(+(+g[b+4>>2]));A=+P(+(+g[b+8>>2]));B=+P(+(+g[b+16>>2]));C=+P(+(+g[b+20>>2]));D=+P(+(+g[b+24>>2]));E=+P(+(+g[b+32>>2]));F=+P(+(+g[b+36>>2]));G=+P(+(+g[b+40>>2]));H=+g[b+48>>2];I=+g[b+52>>2];J=+g[b+56>>2];K=y*A+(s*w+z*x);z=y*D+(B*w+C*x);C=y*G+(E*w+F*x);g[d>>2]=H-K;g[d+4>>2]=I-z;g[d+8>>2]=J-C;g[d+12>>2]=0.0;g[e>>2]=H+K;g[e+4>>2]=I+z;g[e+8>>2]=J+C;g[e+12>>2]=0.0;i=f;return};case 0:case 13:{C=+g[a+44>>2];J=C+ +g[a+28>>2];z=C+ +g[a+32>>2];I=C+ +g[a+36>>2];C=+P(+(+g[b>>2]));K=+P(+(+g[b+4>>2]));H=+P(+(+g[b+8>>2]));x=+P(+(+g[b+16>>2]));F=+P(+(+g[b+20>>2]));w=+P(+(+g[b+24>>2]));E=+P(+(+g[b+32>>2]));G=+P(+(+g[b+36>>2]));y=+P(+(+g[b+40>>2]));B=+g[b+48>>2];D=+g[b+52>>2];s=+g[b+56>>2];A=J*C+z*K+I*H;H=J*x+z*F+I*w;w=J*E+z*G+I*y;g[d>>2]=B-A;g[d+4>>2]=D-H;g[d+8>>2]=s-w;g[d+12>>2]=0.0;g[e>>2]=A+B;g[e+4>>2]=H+D;g[e+8>>2]=w+s;g[e+12>>2]=0.0;i=f;return};case 8:{s=+g[a+28>>2];w=s+s*+g[a+12>>2];v=b+48|0;u=b+52|0;s=+g[u>>2]-w;t=b+56|0;D=+g[t>>2]-w;g[d>>2]=+g[v>>2]-w;g[d+4>>2]=s;g[d+8>>2]=D;g[d+12>>2]=0.0;D=w+ +g[u>>2];s=w+ +g[t>>2];g[e>>2]=w+ +g[v>>2];g[e+4>>2]=D;g[e+8>>2]=s;g[e+12>>2]=0.0;i=f;return};case 1:{s=+g[a+44>>2];v=h|0;t=h+4|0;u=h+8|0;r=b|0;q=b+16|0;o=b+32|0;L=b+4|0;M=b+20|0;N=b+36|0;O=b+8|0;Q=b+24|0;R=b+40|0;S=k|0;T=k+4|0;U=k+8|0;V=k+12|0;W=j|0;X=j+4|0;Y=j+8|0;Z=b+48|0;_=b+52|0;$=b+56|0;aa=l|0;ab=l+4|0;ac=l+8|0;ad=l+12|0;ae=n|0;af=n+4|0;ag=n+8|0;ah=n+12|0;ai=m|0;aj=m+4|0;ak=m+8|0;al=h;am=0;do{an=h+(am<<2)|0;aDD(al|0,0,16);g[an>>2]=1.0;D=+g[v>>2];w=+g[t>>2];H=+g[u>>2];B=D*+g[L>>2]+w*+g[M>>2]+H*+g[N>>2];A=D*+g[O>>2]+w*+g[Q>>2]+H*+g[R>>2];g[S>>2]=+g[r>>2]*D+ +g[q>>2]*w+ +g[o>>2]*H;g[T>>2]=B;g[U>>2]=A;g[V>>2]=0.0;avB(j,a,k);A=+g[W>>2];B=+g[X>>2];H=+g[Y>>2];w=+g[_>>2]+(A*+g[q>>2]+B*+g[M>>2]+H*+g[Q>>2]);D=+g[$>>2]+(A*+g[o>>2]+B*+g[N>>2]+H*+g[R>>2]);g[aa>>2]=+g[Z>>2]+(+g[r>>2]*A+ +g[L>>2]*B+ +g[O>>2]*H);g[ab>>2]=w;g[ac>>2]=D;g[ad>>2]=0.0;ao=l+(am<<2)|0;g[e+(am<<2)>>2]=s+ +g[ao>>2];g[an>>2]=-1.0;D=+g[v>>2];w=+g[t>>2];H=+g[u>>2];B=D*+g[L>>2]+w*+g[M>>2]+H*+g[N>>2];A=D*+g[O>>2]+w*+g[Q>>2]+H*+g[R>>2];g[ae>>2]=+g[r>>2]*D+ +g[q>>2]*w+ +g[o>>2]*H;g[af>>2]=B;g[ag>>2]=A;g[ah>>2]=0.0;avB(m,a,n);A=+g[ai>>2];B=+g[aj>>2];H=+g[ak>>2];w=+g[_>>2]+(A*+g[q>>2]+B*+g[M>>2]+H*+g[Q>>2]);D=+g[$>>2]+(A*+g[o>>2]+B*+g[N>>2]+H*+g[R>>2]);g[aa>>2]=+g[Z>>2]+(+g[r>>2]*A+ +g[L>>2]*B+ +g[O>>2]*H);g[ab>>2]=w;g[ac>>2]=D;g[ad>>2]=0.0;g[d+(am<<2)>>2]=+g[ao>>2]-s;am=am+1|0;}while((am|0)<3);i=f;return};case 4:case 5:{if((p-4|0)>>>0<2){ap=+g[a+44>>2]}else{ap=+dh[c[(c[a>>2]|0)+44>>2]&1023](a)}s=+g[a+72>>2];D=+g[a+56>>2];w=+g[a+76>>2];H=+g[a+60>>2];B=+g[a+80>>2];A=+g[a+64>>2];y=ap+(s-D)*.5;I=ap+(w-H)*.5;G=ap+(B-A)*.5;ap=(s+D)*.5;D=(w+H)*.5;H=(B+A)*.5;A=+g[b>>2];B=+P(+A);w=+g[b+4>>2];s=+P(+w);z=+g[b+8>>2];E=+P(+z);J=+g[b+16>>2];F=+P(+J);x=+g[b+20>>2];K=+P(+x);C=+g[b+24>>2];aq=+P(+C);ar=+g[b+32>>2];as=+P(+ar);at=+g[b+36>>2];au=+P(+at);av=+g[b+40>>2];aw=+P(+av);ax=ap*A+D*w+H*z+ +g[b+48>>2];z=ap*J+D*x+H*C+ +g[b+52>>2];C=ap*ar+D*at+H*av+ +g[b+56>>2];av=y*B+I*s+G*E;E=y*F+I*K+G*aq;aq=y*as+I*au+G*aw;g[d>>2]=ax-av;g[d+4>>2]=z-E;g[d+8>>2]=C-aq;g[d+12>>2]=0.0;g[e>>2]=av+ax;g[e+4>>2]=E+z;g[e+8>>2]=aq+C;g[e+12>>2]=0.0;i=f;return};default:{dI[c[(c[a>>2]|0)+8>>2]&1023](a,b,d,e);i=f;return}}}function avQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;e=i;i=i+72|0;f=e|0;h=e+40|0;j=e+56|0;k=a;aDD(k|0,0,16);l=+g[d>>2];m=+g[d+4>>2];n=+g[d+8>>2];o=l*l+m*m+n*n;if(o<9999999747378752.0e-20){p=1.0;q=0.0;r=0.0;s=0.0}else{t=+g[d+12>>2];u=1.0/+Q(+o);p=l*u;q=m*u;r=n*u;s=t}c[f>>2]=20488;aDD(f+4|0,0,16);g[f+20>>2]=-999999984306749400.0;g[f+24>>2]=p;g[f+28>>2]=q;g[f+32>>2]=r;g[f+36>>2]=s;g[h>>2]=999999984306749400.0;g[h+4>>2]=999999984306749400.0;g[h+8>>2]=999999984306749400.0;g[h+12>>2]=0.0;d=c[b+92>>2]|0;b=c[(c[d>>2]|0)+8>>2]|0;g[j>>2]=-999999984306749400.0;g[j+4>>2]=-999999984306749400.0;g[j+8>>2]=-999999984306749400.0;g[j+12>>2]=0.0;dI[b&1023](d,f|0,j,h);h=f+4|0;c[k>>2]=c[h>>2];c[k+4>>2]=c[h+4>>2];c[k+8>>2]=c[h+8>>2];c[k+12>>2]=c[h+12>>2];i=e;return}function avR(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;f=i;i=i+72|0;h=f|0;j=f+40|0;k=f+56|0;if((e|0)>0){l=0}else{i=f;return}do{g[d+(l<<4)+12>>2]=-999999984306749400.0;l=l+1|0;}while((l|0)<(e|0));l=h|0;m=h+20|0;n=h+4|0;o=h+24|0;p=j|0;q=j+4|0;r=j+8|0;s=j+12|0;t=a+92|0;a=k|0;u=k+4|0;v=k+8|0;w=k+12|0;x=h|0;y=h+4|0;h=0;do{c[l>>2]=20488;aDD(n|0,0,16);g[m>>2]=-999999984306749400.0;z=b+(h<<4)|0;c[o>>2]=c[z>>2];c[o+4>>2]=c[z+4>>2];c[o+8>>2]=c[z+8>>2];c[o+12>>2]=c[z+12>>2];g[p>>2]=999999984306749400.0;g[q>>2]=999999984306749400.0;g[r>>2]=999999984306749400.0;g[s>>2]=0.0;z=c[t>>2]|0;A=c[(c[z>>2]|0)+8>>2]|0;g[a>>2]=-999999984306749400.0;g[u>>2]=-999999984306749400.0;g[v>>2]=-999999984306749400.0;g[w>>2]=0.0;dI[A&1023](z,x,k,j);z=d+(h<<4)|0;c[z>>2]=c[y>>2];c[z+4>>2]=c[y+4>>2];c[z+8>>2]=c[y+8>>2];c[z+12>>2]=c[y+12>>2];h=h+1|0;}while((h|0)<(e|0));i=f;return}function avS(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);e=b|0;f=b;if(+dh[c[(c[f>>2]|0)+44>>2]&1023](e)==0.0){return}h=+g[d>>2];i=+g[d+4>>2];j=+g[d+8>>2];d=h*h+i*i+j*j<1.4210854715202004e-14;k=d?-1.0:j;j=d?-1.0:i;i=d?-1.0:h;h=1.0/+Q(+(k*k+(i*i+j*j)));l=+dh[c[(c[f>>2]|0)+44>>2]&1023](e);e=a|0;g[e>>2]=h*i*l+ +g[e>>2];e=a+4|0;g[e>>2]=l*h*j+ +g[e>>2];e=a+8|0;g[e>>2]=l*h*k+ +g[e>>2];return}function avT(a,b){a=a|0;b=b|0;var d=0,e=0;d=(c[a+92>>2]|0)+4|0;e=b;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];aze(a|0);return}function avU(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function avV(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-96+92>>2]|0);return}function avW(a){a=a|0;if((a|0)==0){return}aDB(a);return}function avX(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0,A=0.0,B=0.0,C=0.0;d=i;i=i+96|0;c=d|0;e=d+48|0;f=d+64|0;h=d+80|0;j=+g[a+52>>2];k=+g[b>>2]-j;l=+g[a+56>>2];m=+g[b+4>>2]-l;n=+g[a+60>>2];o=+g[b+8>>2]-n;g[e>>2]=k;g[e+4>>2]=m;g[e+8>>2]=o;g[e+12>>2]=0.0;p=+g[b+16>>2]-j;q=+g[b+20>>2]-l;r=+g[b+24>>2]-n;g[f>>2]=p;g[f+4>>2]=q;g[f+8>>2]=r;g[f+12>>2]=0.0;s=+g[b+32>>2]-j;j=+g[b+36>>2]-l;l=+g[b+40>>2]-n;g[h>>2]=s;g[h+4>>2]=j;g[h+8>>2]=l;g[h+12>>2]=0.0;n=+P(+(o*(j*p-q*s)+(k*(q*l-r*j)+m*(r*s-l*p))))*-.1666666716337204;t=k*p;u=k*s;v=p*s;b=c|0;g[b>>2]=n*((k*k+p*p+s*s)*.10000000149011612+(v+(v+(u+(t+t+u))))*.05000000074505806);w=0;u=k;t=p;v=s;while(1){x=n*((m*u+q*t+j*v)*.10000000149011612+(t*j+(q*v+(u*j+(u*q+m*t+m*v))))*.05000000074505806);g[c+(w<<4)+4>>2]=x;g[c+16+(w<<2)>>2]=x;y=w+1|0;if((w|0)>0){z=0;A=k;B=p;C=s;break}w=y;u=+g[e+(y<<2)>>2];t=+g[f+(y<<2)>>2];v=+g[h+(y<<2)>>2]}while(1){v=n*((o*A+r*B+l*C)*.10000000149011612+(B*l+(r*C+(A*l+(A*r+o*B+o*C))))*.05000000074505806);g[c+(z<<4)+8>>2]=v;g[c+32+(z<<2)>>2]=v;w=z+1|0;if((w|0)>2){break}z=w;A=+g[e+(w<<2)>>2];B=+g[f+(w<<2)>>2];C=+g[h+(w<<2)>>2]}C=+g[b>>2];h=c+20|0;B=+g[h>>2];f=c+40|0;A=+g[f>>2];o=-0.0-A-B;g[b>>2]=o;r=-0.0-C-A;g[h>>2]=r;A=-0.0-B-C;g[f>>2]=A;f=a+4|0;g[f>>2]=o+ +g[f>>2];f=a+8|0;g[f>>2]=+g[c+4>>2]+ +g[f>>2];f=a+12|0;g[f>>2]=+g[c+8>>2]+ +g[f>>2];f=a+20|0;g[f>>2]=+g[c+16>>2]+ +g[f>>2];f=a+24|0;g[f>>2]=r+ +g[f>>2];f=a+28|0;g[f>>2]=+g[c+24>>2]+ +g[f>>2];f=a+36|0;g[f>>2]=+g[c+32>>2]+ +g[f>>2];f=a+40|0;g[f>>2]=+g[c+36>>2]+ +g[f>>2];f=a+44|0;g[f>>2]=A+ +g[f>>2];i=d;return}function avY(a){a=a|0;if((a|0)==0){return}aDB(a);return}function avZ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0;f=b+4|0;e=b+8|0;if((a[f]&1)==0){h=+g[d>>2];i=+g[e>>2];j=+g[d+4>>2];k=+g[b+12>>2];l=+g[d+8>>2];m=+g[b+16>>2];n=+g[d+16>>2];o=n-i;p=+g[d+20>>2];q=p-k;r=+g[d+24>>2];s=r-m;t=+g[d+32>>2];u=t-i;v=+g[d+36>>2];w=v-k;x=+g[d+40>>2];y=x-m;z=+P(+((l-m)*(o*w-q*u)+((h-i)*(q*y-s*w)+(j-k)*(s*u-o*y))));y=z*.25;A=b+24|0;g[A>>2]=+g[A>>2]+(i+(h+n+t))*y;A=b+28|0;g[A>>2]=(k+(j+p+v))*y+ +g[A>>2];A=b+32|0;g[A>>2]=y*(m+(l+r+x))+ +g[A>>2];A=b+40|0;g[A>>2]=z+ +g[A>>2];return}else{A=e;e=d;c[A>>2]=c[e>>2];c[A+4>>2]=c[e+4>>2];c[A+8>>2]=c[e+8>>2];c[A+12>>2]=c[e+12>>2];a[f]=0;return}}function av_(a){a=a|0;if((a|0)==0){return}aDB(a);return}function av$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0;e=a+20|0;d=a+4|0;f=+g[a+24>>2];h=+g[a+28>>2];i=+g[a+32>>2];j=f*+g[b>>2]+h*+g[b+4>>2]+i*+g[b+8>>2];k=+g[e>>2];if(j>k){g[e>>2]=j;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];l=j}else{l=k}a=b+16|0;k=f*+g[a>>2]+h*+g[b+20>>2]+i*+g[b+24>>2];if(k>l){g[e>>2]=k;m=a;c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];n=k}else{n=l}m=b+32|0;l=f*+g[m>>2]+h*+g[b+36>>2]+i*+g[b+40>>2];if(l<=n){return}g[e>>2]=l;e=m;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function av0(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0;f=+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0);h=f+ +g[a+28>>2];i=f+ +g[a+32>>2];j=f+ +g[a+36>>2];f=+P(+(+g[b>>2]));k=+P(+(+g[b+4>>2]));l=+P(+(+g[b+8>>2]));m=+P(+(+g[b+16>>2]));n=+P(+(+g[b+20>>2]));o=+P(+(+g[b+24>>2]));p=+P(+(+g[b+32>>2]));q=+P(+(+g[b+36>>2]));r=+P(+(+g[b+40>>2]));s=+g[b+48>>2];t=+g[b+52>>2];u=+g[b+56>>2];v=h*f+i*k+j*l;l=h*m+i*n+j*o;o=h*p+i*q+j*r;g[d>>2]=s-v;g[d+4>>2]=t-l;g[d+8>>2]=u-o;g[d+12>>2]=0.0;g[e>>2]=v+s;g[e+4>>2]=l+t;g[e+8>>2]=o+u;g[e+12>>2]=0.0;return}function av1(a,b,d){a=a|0;b=+b;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0;e=+g[a+28>>2];f=+g[a+32>>2];h=+g[a+36>>2];i=a|0;j=a;k=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);l=+dh[c[(c[j>>2]|0)+44>>2]&1023](i);m=k+e;e=l+f;f=+dh[c[(c[j>>2]|0)+44>>2]&1023](i)+h;h=b/12.0;l=b*.25;k=b*.5;i=c[a+52>>2]|0;if((i|0)==0){b=e*e;n=l*b+h*m*m*4.0;g[d>>2]=k*b;g[d+4>>2]=n;g[d+8>>2]=n;g[d+12>>2]=0.0;return}else if((i|0)==2){n=m*m;b=l*n+h*f*f*4.0;g[d>>2]=b;g[d+4>>2]=b;g[d+8>>2]=k*n;g[d+12>>2]=0.0;return}else{n=m*m;m=l*n+h*e*e*4.0;g[d>>2]=m;g[d+4>>2]=k*n;g[d+8>>2]=m;g[d+12>>2]=0.0;return}}function av2(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;d=+g[b+32>>2];e=+g[b+28>>2];b=c|0;f=+g[c+4>>2];h=+g[c+8>>2];i=+Q(+(f*f+h*h));if(i!=0.0){j=d/i;g[a+4>>2]=f*j;if(+g[b>>2]<0.0){k=-0.0-e}else{k=e}g[a>>2]=k;g[a+8>>2]=h*j;return}else{g[a+4>>2]=d;if(+g[b>>2]<0.0){l=-0.0-e}else{l=e}g[a>>2]=l;g[a+8>>2]=0.0;return}}function av3(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;d=+g[b+28>>2];e=+g[b+36>>2];f=+g[c>>2];h=+g[c+4>>2];i=+Q(+(f*f+h*h));if(i!=0.0){j=d/i;g[a>>2]=f*j;if(+g[c+8>>2]<0.0){k=-0.0-e}else{k=e}g[a+8>>2]=k;g[a+4>>2]=h*j;return}else{g[a>>2]=d;if(+g[c+8>>2]<0.0){l=-0.0-e}else{l=e}g[a+8>>2]=l;g[a+4>>2]=0.0;return}}function av4(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;d=+g[b+28>>2];e=+g[b+32>>2];f=+g[c>>2];h=+g[c+8>>2];i=+Q(+(f*f+h*h));if(i!=0.0){j=d/i;g[a>>2]=f*j;if(+g[c+4>>2]<0.0){k=-0.0-e}else{k=e}g[a+4>>2]=k;g[a+8>>2]=h*j;return}else{g[a>>2]=d;if(+g[c+4>>2]<0.0){l=-0.0-e}else{l=e}g[a+4>>2]=l;g[a+8>>2]=0.0;return}}function av5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;if((d|0)<=0){return}e=a+28|0;f=a+32|0;a=0;do{h=+g[e>>2];i=+g[f>>2];j=+g[b+(a<<4)>>2];k=+g[b+(a<<4)+8>>2];l=+Q(+(j*j+k*k));do{if(l!=0.0){m=h/l;if(+g[b+(a<<4)+4>>2]<0.0){n=-0.0-i}else{n=i}o=j*m;p=n;q=k*m}else{if(+g[b+(a<<4)+4>>2]>=0.0){o=h;p=i;q=0.0;break}o=h;p=-0.0-i;q=0.0}}while(0);g[c+(a<<4)>>2]=o;g[c+(a<<4)+4>>2]=p;g[c+(a<<4)+8>>2]=q;a=a+1|0;}while((a|0)<(d|0));return}function av6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0;if((d|0)<=0){return}e=a+28|0;f=a+36|0;a=0;do{h=+g[e>>2];i=+g[f>>2];j=+g[b+(a<<4)>>2];k=+g[b+(a<<4)+4>>2];l=+Q(+(j*j+k*k));do{if(l!=0.0){m=h/l;if(+g[b+(a<<4)+8>>2]<0.0){n=-0.0-i}else{n=i}o=j*m;p=k*m;q=n}else{if(+g[b+(a<<4)+8>>2]>=0.0){o=h;p=0.0;q=i;break}o=h;p=0.0;q=-0.0-i}}while(0);g[c+(a<<4)>>2]=o;g[c+(a<<4)+4>>2]=p;g[c+(a<<4)+8>>2]=q;a=a+1|0;}while((a|0)<(d|0));return}function av7(a){a=a|0;return}function av8(a){a=a|0;return 16728|0}function av9(a){a=a|0;return 60}function awa(a){a=a|0;return}function awb(a){a=a|0;return 17752|0}function awc(a){a=a|0;return}function awd(a){a=a|0;return 16632|0}function awe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;if((d|0)<=0){return}e=a+28|0;f=a+32|0;a=0;do{h=+g[f>>2];i=+g[e>>2];j=b+(a<<4)|0;k=+g[b+(a<<4)+4>>2];l=+g[b+(a<<4)+8>>2];m=+Q(+(k*k+l*l));do{if(m!=0.0){n=h/m;if(+g[j>>2]<0.0){o=-0.0-i}else{o=i}p=o;q=k*n;r=l*n}else{if(+g[j>>2]>=0.0){p=i;q=h;r=0.0;break}p=-0.0-i;q=h;r=0.0}}while(0);g[c+(a<<4)>>2]=p;g[c+(a<<4)+4>>2]=q;g[c+(a<<4)+8>>2]=r;a=a+1|0;}while((a|0)<(d|0));return}function awf(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function awg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0,l=0.0,m=0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);d=a+28|0;e=a+32|0;j=a+36|0;k=a+12|0;l=(f+ +g[d>>2])/+g[k>>2];m=a+16|0;n=(h+ +g[e>>2])/+g[m>>2];o=a+20|0;p=(i+ +g[j>>2])/+g[o>>2];q=+P(+(+g[b>>2]));r=+P(+(+g[b+4>>2]));s=+P(+(+g[b+8>>2]));g[k>>2]=q;g[m>>2]=r;g[o>>2]=s;g[a+24>>2]=0.0;g[d>>2]=l*q-f;g[e>>2]=n*r-h;g[j>>2]=p*s-i;g[a+40>>2]=0.0;return}function awh(a,b){a=a|0;b=+b;var d=0,e=0,f=0.0,h=0.0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0;d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);h=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);j=a+28|0;k=f+ +g[j>>2];l=a+32|0;f=h+ +g[l>>2];m=a+36|0;h=i+ +g[m>>2];g[a+44>>2]=b;b=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);i=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);n=h- +dh[c[(c[e>>2]|0)+44>>2]&1023](d);g[j>>2]=k-b;g[l>>2]=f-i;g[m>>2]=n;g[a+40>>2]=0.0;return}function awi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];c[b+52>>2]=c[a+52>>2];return 17264}function awj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);e=b|0;f=b;if(+dh[c[(c[f>>2]|0)+44>>2]&1023](e)==0.0){return}h=+g[d>>2];i=+g[d+4>>2];j=+g[d+8>>2];d=h*h+i*i+j*j<1.4210854715202004e-14;k=d?-1.0:j;j=d?-1.0:i;i=d?-1.0:h;h=1.0/+Q(+(k*k+(i*i+j*j)));l=+dh[c[(c[f>>2]|0)+44>>2]&1023](e);e=a|0;g[e>>2]=h*i*l+ +g[e>>2];e=a+4|0;g[e>>2]=l*h*j+ +g[e>>2];e=a+8|0;g[e>>2]=l*h*k+ +g[e>>2];return}function awk(a){a=a|0;var b=0.0,d=0,e=0,f=0.0;b=+g[a+28>>2];d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);return+(b+f)}function awl(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function awm(a){a=a|0;var b=0.0,d=0,e=0,f=0.0;b=+g[a+32>>2];d=a|0;e=a;+dh[c[(c[e>>2]|0)+44>>2]&1023](d);f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);return+(b+f)}function awn(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function awo(a){a=a|0;var b=0.0,d=0,e=0,f=0.0;b=+g[a+28>>2];d=a|0;e=a;f=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);+dh[c[(c[e>>2]|0)+44>>2]&1023](d);return+(b+f)}function awp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]|0;if((d|0)!=0){awq(b,d)}d=b+4|0;e=c[d>>2]|0;if((e|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-44+40>>2]|0)}c[d>>2]=0;c[b+8>>2]=-1;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)==0){h=b+28|0;i=b+16|0;c[i>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-8+4>>2]|0)}c[e>>2]=0;h=b+28|0;i=b+16|0;c[i>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;c[h>>2]=0;return}function awq(a,b){a=a|0;b=b|0;var d=0;d=b+40|0;if((c[d>>2]|0)!=0){awq(a,c[b+36>>2]|0);awq(a,c[d>>2]|0)}d=a|0;if((c[d>>2]|0)==(b|0)){c[d>>2]=0}d=a+4|0;a=c[d>>2]|0;if((a|0)==0){c[d>>2]=b;return}c[9804]=(c[9804]|0)+1;aDB(c[a-44+40>>2]|0);c[d>>2]=b;return}function awr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=d+40|0;if(!((c[g>>2]|0)==0|(f|0)==0)){h=f-1|0;awr(b,c[d+36>>2]|0,e,h);awr(b,c[g>>2]|0,e,h);h=b+4|0;b=c[h>>2]|0;if((b|0)==0){c[h>>2]=d;return}c[9804]=(c[9804]|0)+1;aDB(c[b-44+40>>2]|0);c[h>>2]=d;return}h=e+4|0;b=c[h>>2]|0;g=e+8|0;do{if((b|0)==(c[g>>2]|0)){f=(b|0)==0?1:b<<1;if((b|0)>=(f|0)){i=b;break}if((f|0)==0){j=0;k=b}else{c[9806]=(c[9806]|0)+1;l=aDx((f<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[h>>2]|0}n=e+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=e+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=f;i=c[h>>2]|0}else{i=b}}while(0);b=(c[e+12>>2]|0)+(i<<2)|0;if((b|0)==0){p=i;q=p+1|0;c[h>>2]=q;return}c[b>>2]=d;p=c[h>>2]|0;q=p+1|0;c[h>>2]=q;return}function aws(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=i;i=i+24|0;e=d|0;f=b|0;g=c[f>>2]|0;if((g|0)==0){i=d;return}h=e+16|0;a[h]=1;j=e+12|0;c[j>>2]=0;k=e+4|0;c[k>>2]=0;l=e+8|0;c[l>>2]=0;m=c[b+12>>2]|0;if((m|0)>0){c[9806]=(c[9806]|0)+1;n=aDx((m<<2)+19|0)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}p=c[k>>2]|0;if((p|0)>0){n=0;do{q=o+(n<<2)|0;if((q|0)!=0){c[q>>2]=c[(c[j>>2]|0)+(n<<2)>>2]}n=n+1|0;}while((n|0)<(p|0))}p=c[j>>2]|0;if((p|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[j>>2]=0}a[h]=1;c[j>>2]=o;c[l>>2]=m;r=c[f>>2]|0}else{r=g}awr(b,r,e,-1);c[f>>2]=awt(b,e)|0;e=c[j>>2]|0;if((e|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}c[j>>2]=0}a[h]=1;c[j>>2]=0;c[k>>2]=0;c[l>>2]=0;i=d;return}function awt(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,Q=0,R=0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0;e=i;i=i+64|0;f=e|0;h=e+40|0;do{if((a[43056]|0)==0){if((b1(43056)|0)==0){break}g[10716]=1.0;aDD(42868,0,16);g[10721]=1.0;aDD(42888,0,16);g[10726]=1.0;g[10727]=0.0}}while(0);j=d+4|0;k=c[j>>2]|0;if((k|0)<=1){l=c[c[d+12>>2]>>2]|0;i=e;return l|0}m=d+12|0;if((k|0)<=128){d=b+4|0;n=k;while(1){L2956:do{if((n|0)>0){o=0;p=-1;q=-1;r=3.4028234663852886e+38;L2957:while(1){s=o+1|0;if((s|0)>=(n|0)){t=p;u=q;break L2956}v=c[m>>2]|0;w=c[v+(o<<2)>>2]|0;x=+g[w>>2];y=+g[w+16>>2];z=+g[w+4>>2];A=+g[w+20>>2];B=+g[w+8>>2];C=+g[w+24>>2];w=s;D=p;E=q;F=r;while(1){G=c[v+(w<<2)>>2]|0;H=+g[G>>2];I=+g[G+16>>2];J=+g[G+4>>2];K=+g[G+20>>2];L=+g[G+8>>2];M=+g[G+24>>2];N=(y>I?y:I)-(xK?A:K)-(zM?C:M)-(B>2]|0;p=c[q+(t<<2)>>2]|0;o=c[q+(u<<2)>>2]|0;q=c[d>>2]|0;do{if((q|0)==0){c[9806]=(c[9806]|0)+1;s=aDx(63)|0;if((s|0)==0){R=0;break}E=-(s+4|0)&15;D=s+(E+4)|0;c[s+E>>2]=s;if((D|0)==0){R=0;break}aDD(D|0,0,44);R=D}else{c[d>>2]=0;R=q}}while(0);c[R+32>>2]=0;q=R+36|0;c[q>>2]=0;D=R+40|0;c[D>>2]=0;r=+g[p>>2];F=+g[o>>2];g[R>>2]=r>2];r=+g[o+16>>2];g[R+16>>2]=F>r?F:r;r=+g[p+4>>2];F=+g[o+4>>2];g[R+4>>2]=r>2];r=+g[o+20>>2];g[R+20>>2]=F>r?F:r;r=+g[p+8>>2];F=+g[o+8>>2];g[R+8>>2]=r>2];r=+g[o+24>>2];g[R+24>>2]=F>r?F:r;c[q>>2]=p;c[D>>2]=o;c[p+32>>2]=R;c[o+32>>2]=R;c[(c[m>>2]|0)+(t<<2)>>2]=R;D=(c[j>>2]|0)-1|0;q=c[m>>2]|0;s=q+(u<<2)|0;E=c[s>>2]|0;c[s>>2]=c[q+(D<<2)>>2];c[(c[m>>2]|0)+(D<<2)>>2]=E;n=(c[j>>2]|0)-1|0;c[j>>2]=n;if((n|0)<=1){break}}l=c[c[m>>2]>>2]|0;i=e;return l|0}n=c[m>>2]|0;u=c[n>>2]|0;r=+g[u+12>>2];F=+g[u+28>>2];B=+g[u+24>>2];C=+g[u+20>>2];z=+g[u+16>>2];A=+g[u+8>>2];x=+g[u+4>>2];y=+g[u>>2];u=1;do{R=c[n+(u<<2)>>2]|0;J=+g[R>>2];y=y>2];z=z>J?z:J;J=+g[R+4>>2];x=x>2];C=C>J?C:J;J=+g[R+8>>2];A=A>2];B=B>J?B:J;u=u+1|0;}while((u|0)<(k|0));J=(x+C)*.5;u=f|0;R=f+16|0;a[R]=1;t=f+12|0;c[t>>2]=0;d=f+4|0;c[d>>2]=0;E=f+8|0;c[E>>2]=0;D=f+36|0;a[D]=1;q=f+32|0;c[q>>2]=0;s=f+24|0;c[s>>2]=0;w=f+28|0;c[w>>2]=0;L=(y+z)*.5;H=(A+B)*.5;aDD(h|0,0,24);do{if((k|0)>0){N=+g[10716];M=+g[10717];K=+g[10718];I=+g[10720];S=+g[10721];T=+g[10722];U=+g[10724];V=+g[10725];W=+g[10726];v=0;do{Q=c[n+(v<<2)>>2]|0;X=(+g[Q>>2]+ +g[Q+16>>2])*.5-L;Y=(+g[Q+4>>2]+ +g[Q+20>>2])*.5-J;Z=(+g[Q+8>>2]+ +g[Q+24>>2])*.5-H;Q=h+((X*N+Y*M+Z*K>0.0)<<2)|0;c[Q>>2]=(c[Q>>2]|0)+1;Q=h+8+((X*I+Y*S+Z*T>0.0)<<2)|0;c[Q>>2]=(c[Q>>2]|0)+1;Q=h+16+((X*U+Y*V+Z*W>0.0)<<2)|0;c[Q>>2]=(c[Q>>2]|0)+1;v=v+1|0;}while((v|0)<(k|0));v=c[h>>2]|0;if((v|0)<=0){_=-1;$=k;break}o=c[h+4>>2]|0;if((o|0)<=0){_=-1;$=k;break}p=~~+P(+(+(v-o|0)));o=(p|0)<(k|0);_=(o^1)<<31>>31;$=o?p:k}else{_=-1;$=k}}while(0);n=c[h+8>>2]|0;do{if((n|0)>0){p=c[h+12>>2]|0;if((p|0)<=0){aa=_;ab=$;break}o=~~+P(+(+(n-p|0)));p=(o|0)<($|0);aa=p?1:_;ab=p?o:$}else{aa=_;ab=$}}while(0);$=c[h+16>>2]|0;do{if(($|0)>0){_=c[h+20>>2]|0;if((_|0)<=0){ac=aa;break}ac=(~~+P(+(+($-_|0)))|0)<(ab|0)?2:aa}else{ac=aa}}while(0);do{if((ac|0)>-1){aa=c[h+(ac<<3)>>2]|0;if((aa|0)>0){c[9806]=(c[9806]|0)+1;ab=aDx((aa<<2)+19|0)|0;if((ab|0)==0){ad=0}else{$=-(ab+4|0)&15;c[ab+$>>2]=ab;ad=ab+($+4)|0}a[R]=1;c[t>>2]=ad;c[E>>2]=aa}aa=c[h+(ac<<3)+4>>2]|0;if((aa|0)>0){c[9806]=(c[9806]|0)+1;$=aDx((aa<<2)+19|0)|0;if(($|0)==0){ae=0}else{ab=-($+4|0)&15;c[$+ab>>2]=$;ae=$+(ab+4)|0}a[D]=1;c[q>>2]=ae;c[w>>2]=aa}c[d>>2]=0;c[s>>2]=0;aa=c[j>>2]|0;if((aa|0)<=0){break}ab=42864+(ac<<4)|0;$=42868+(ac<<4)|0;_=42872+(ac<<4)|0;n=0;do{o=(c[m>>2]|0)+(n<<2)|0;p=c[o>>2]|0;if(((+g[p>>2]+ +g[p+16>>2])*.5-L)*+g[ab>>2]+((+g[p+4>>2]+ +g[p+20>>2])*.5-J)*+g[$>>2]+((+g[p+8>>2]+ +g[p+24>>2])*.5-H)*+g[_>>2]<0.0){p=c[d>>2]|0;do{if((p|0)==(c[E>>2]|0)){v=(p|0)==0?1:p<<1;if((p|0)>=(v|0)){af=p;break}do{if((v|0)==0){ag=0}else{c[9806]=(c[9806]|0)+1;Q=aDx((v<<2)+19|0)|0;if((Q|0)==0){ag=0;break}O=-(Q+4|0)&15;c[Q+O>>2]=Q;ag=Q+(O+4)|0}}while(0);if((p|0)>0){O=0;do{Q=ag+(O<<2)|0;if((Q|0)!=0){c[Q>>2]=c[(c[t>>2]|0)+(O<<2)>>2]}O=O+1|0;}while((O|0)<(p|0))}O=c[t>>2]|0;if((O|0)!=0){if((a[R]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[O-4>>2]|0)}c[t>>2]=0}a[R]=1;c[t>>2]=ag;c[E>>2]=v;af=c[d>>2]|0}else{af=p}}while(0);p=(c[t>>2]|0)+(af<<2)|0;if((p|0)==0){ah=af}else{c[p>>2]=c[o>>2];ah=c[d>>2]|0}c[d>>2]=ah+1}else{p=c[s>>2]|0;do{if((p|0)==(c[w>>2]|0)){O=(p|0)==0?1:p<<1;if((p|0)>=(O|0)){ai=p;break}do{if((O|0)==0){aj=0}else{c[9806]=(c[9806]|0)+1;Q=aDx((O<<2)+19|0)|0;if((Q|0)==0){aj=0;break}G=-(Q+4|0)&15;c[Q+G>>2]=Q;aj=Q+(G+4)|0}}while(0);if((p|0)>0){v=0;do{G=aj+(v<<2)|0;if((G|0)!=0){c[G>>2]=c[(c[q>>2]|0)+(v<<2)>>2]}v=v+1|0;}while((v|0)<(p|0))}v=c[q>>2]|0;if((v|0)!=0){if((a[D]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[v-4>>2]|0)}c[q>>2]=0}a[D]=1;c[q>>2]=aj;c[w>>2]=O;ai=c[s>>2]|0}else{ai=p}}while(0);p=(c[q>>2]|0)+(ai<<2)|0;if((p|0)==0){ak=ai}else{c[p>>2]=c[o>>2];ak=c[s>>2]|0}c[s>>2]=ak+1}n=n+1|0;}while((n|0)<(aa|0))}else{aa=((k|0)/2|0)+1|0;if((aa|0)>0){c[9806]=(c[9806]|0)+1;n=aDx((aa<<2)+19|0)|0;if((n|0)==0){al=0}else{_=-(n+4|0)&15;c[n+_>>2]=n;al=n+(_+4)|0}_=c[d>>2]|0;if((_|0)>0){n=0;do{$=al+(n<<2)|0;if(($|0)!=0){c[$>>2]=c[(c[t>>2]|0)+(n<<2)>>2]}n=n+1|0;}while((n|0)<(_|0))}_=c[t>>2]|0;if((_|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[_-4>>2]|0);c[t>>2]=0}a[R]=1;c[t>>2]=al;c[E>>2]=aa;am=c[j>>2]|0}else{am=k}_=(am|0)/2|0;if((am|0)>1){do{if((am+1|0)>>>0<3){an=0}else{c[9806]=(c[9806]|0)+1;n=aDx((_<<2)+19|0)|0;if((n|0)==0){an=0;break}$=-(n+4|0)&15;c[n+$>>2]=n;an=n+($+4)|0}}while(0);a[D]=1;c[q>>2]=an;c[w>>2]=_;ao=c[j>>2]|0}else{ao=am}if((ao|0)>0){ap=0}else{break}do{aa=ap&1;$=(c[m>>2]|0)+(ap<<2)|0;n=f+(aa*20|0)+4|0;ab=c[n>>2]|0;p=f+(aa*20|0)+8|0;do{if((ab|0)==(c[p>>2]|0)){v=(ab|0)==0?1:ab<<1;if((ab|0)>=(v|0)){aq=ab;break}do{if((v|0)==0){ar=0}else{c[9806]=(c[9806]|0)+1;G=aDx((v<<2)+19|0)|0;if((G|0)==0){ar=0;break}Q=-(G+4|0)&15;c[G+Q>>2]=G;ar=G+(Q+4)|0}}while(0);O=f+(aa*20|0)+12|0;if((ab|0)>0){Q=0;do{G=ar+(Q<<2)|0;if((G|0)!=0){c[G>>2]=c[(c[O>>2]|0)+(Q<<2)>>2]}Q=Q+1|0;}while((Q|0)<(ab|0))}Q=c[O>>2]|0;G=f+(aa*20|0)+16|0;if((Q|0)!=0){if((a[G]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[Q-4>>2]|0)}c[O>>2]=0}a[G]=1;c[O>>2]=ar;c[p>>2]=v;aq=c[n>>2]|0}else{aq=ab}}while(0);ab=(c[f+(aa*20|0)+12>>2]|0)+(aq<<2)|0;if((ab|0)!=0){c[ab>>2]=c[$>>2]}c[n>>2]=aq+1;ap=ap+1|0;}while((ap|0)<(ao|0))}}while(0);ao=b+4|0;ap=c[ao>>2]|0;do{if((ap|0)==0){c[9806]=(c[9806]|0)+1;aq=aDx(63)|0;if((aq|0)==0){as=0;break}ar=-(aq+4|0)&15;m=aq+(ar+4)|0;c[aq+ar>>2]=aq;if((m|0)==0){as=0;break}aDD(m|0,0,44);as=m}else{c[ao>>2]=0;as=ap}}while(0);c[as+32>>2]=0;ap=as+36|0;c[ap>>2]=0;ao=as+40|0;c[ao>>2]=0;g[as>>2]=y;g[as+4>>2]=x;g[as+8>>2]=A;g[as+12>>2]=r;g[as+16>>2]=z;g[as+20>>2]=C;g[as+24>>2]=B;g[as+28>>2]=F;c[ap>>2]=awt(b,u)|0;c[ao>>2]=awt(b,f+20|0)|0;c[(c[ap>>2]|0)+32>>2]=as;c[(c[ao>>2]|0)+32>>2]=as;ao=c[q>>2]|0;if((ao|0)!=0){if((a[D]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ao-4>>2]|0)}c[q>>2]=0}a[D]=1;c[q>>2]=0;c[s>>2]=0;c[w>>2]=0;w=c[t>>2]|0;if((w|0)!=0){if((a[R]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[w-4>>2]|0)}c[t>>2]=0}a[R]=1;c[t>>2]=0;c[d>>2]=0;c[E>>2]=0;l=as;i=e;return l|0}function awu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;d=i;i=i+32|0;if((b|0)<0){e=c[a+12>>2]|0}else{e=b}b=a|0;f=c[b>>2]|0;if(!((f|0)!=0&(e|0)>0)){i=d;return}g=a+16|0;h=d|0;j=e;e=f;while(1){f=e+40|0;L3141:do{if((c[f>>2]|0)==0){k=e}else{l=0;m=e;n=f;while(1){o=(c[g>>2]|0)>>>(l>>>0)&1;p=m+32|0;q=c[p>>2]|0;if(q>>>0>m>>>0){r=q+40|0;s=(c[r>>2]|0)==(m|0)|0;t=s^1;u=c[q+36+(t<<2)>>2]|0;v=q+32|0;w=c[v>>2]|0;if((w|0)==0){c[b>>2]=m}else{c[w+36+(((c[w+40>>2]|0)==(q|0))<<2)>>2]=m}c[u+32>>2]=m;c[v>>2]=m;c[p>>2]=w;w=m+36|0;c[q+36>>2]=c[w>>2];c[r>>2]=c[n>>2];c[(c[w>>2]|0)+32>>2]=q;c[(c[n>>2]|0)+32>>2]=q;c[m+36+(s<<2)>>2]=q;c[m+36+(t<<2)>>2]=u;u=q;aDC(h|0,u|0,32)|0;t=m;aDC(u|0,t|0,32)|0;aDC(t|0,h|0,32)|0;x=q}else{x=m}q=c[x+36+(o<<2)>>2]|0;o=q+40|0;if((c[o>>2]|0)==0){k=q;break L3141}l=l+1&31;m=q;n=o}}}while(0);if((aww(a,k)|0)==0){y=0}else{y=c[b>>2]|0}awv(a,y,k);c[g>>2]=(c[g>>2]|0)+1;f=j-1|0;if((f|0)==0){break}j=f;e=c[b>>2]|0}i=d;return}function awv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0.0,j=0.0,k=0.0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0;e=a|0;if((c[e>>2]|0)==0){c[e>>2]=d;c[d+32>>2]=0;return}f=c[b+40>>2]|0;if((f|0)==0){h=b}else{i=+g[d>>2]+ +g[d+16>>2];j=+g[d+4>>2]+ +g[d+20>>2];k=+g[d+8>>2]+ +g[d+24>>2];l=b;b=f;while(1){f=c[l+36>>2]|0;m=j-(+g[f+4>>2]+ +g[f+20>>2]);n=k-(+g[f+8>>2]+ +g[f+24>>2]);o=+P(+(i-(+g[f>>2]+ +g[f+16>>2])));p=o+ +P(+m);m=p+ +P(+n);n=j-(+g[b+4>>2]+ +g[b+20>>2]);p=k-(+g[b+8>>2]+ +g[b+24>>2]);o=+P(+(i-(+g[b>>2]+ +g[b+16>>2])));q=o+ +P(+n);f=c[l+36+((m>=q+ +P(+p))<<2)>>2]|0;r=c[f+40>>2]|0;if((r|0)==0){h=f;break}else{l=f;b=r}}}b=h+32|0;l=c[b>>2]|0;r=a+4|0;a=c[r>>2]|0;do{if((a|0)==0){c[9806]=(c[9806]|0)+1;f=aDx(63)|0;if((f|0)==0){s=0;break}t=-(f+4|0)&15;u=f+(t+4)|0;c[f+t>>2]=f;if((u|0)==0){s=0;break}aDD(u|0,0,44);s=u}else{c[r>>2]=0;s=a}}while(0);c[s+32>>2]=l;a=s+36|0;c[a>>2]=0;r=s+40|0;c[r>>2]=0;i=+g[d>>2];k=+g[h>>2];u=s|0;g[u>>2]=i>2];i=+g[h+16>>2];g[s+16>>2]=k>i?k:i;i=+g[d+4>>2];k=+g[h+4>>2];g[s+4>>2]=i>2];i=+g[h+20>>2];g[s+20>>2]=k>i?k:i;i=+g[d+8>>2];k=+g[h+8>>2];g[s+8>>2]=i>2];i=+g[h+24>>2];g[s+24>>2]=k>i?k:i;if((l|0)==0){c[a>>2]=h;c[b>>2]=s;c[r>>2]=d;c[d+32>>2]=s;c[e>>2]=s;return}c[l+36+(((c[(c[b>>2]|0)+40>>2]|0)==(h|0))<<2)>>2]=s;c[a>>2]=h;c[b>>2]=s;c[r>>2]=d;c[d+32>>2]=s;d=s;s=l;i=+g[u>>2];L3178:while(1){u=s|0;l=s+4|0;do{if(+g[u>>2]<=i){if(+g[l>>2]>+g[d+4>>2]){break}if(+g[s+8>>2]>+g[d+8>>2]){break}if(+g[s+16>>2]<+g[d+16>>2]){break}if(+g[s+20>>2]<+g[d+20>>2]){break}if(+g[s+24>>2]>=+g[d+24>>2]){v=2664;break L3178}}}while(0);r=c[s+36>>2]|0;b=c[s+40>>2]|0;k=+g[r>>2];j=+g[b>>2];p=k>2]=p;j=+g[r+16>>2];k=+g[b+16>>2];g[s+16>>2]=j>k?j:k;k=+g[r+4>>2];j=+g[b+4>>2];g[l>>2]=k>2];k=+g[b+20>>2];g[s+20>>2]=j>k?j:k;k=+g[r+8>>2];j=+g[b+8>>2];g[s+8>>2]=k>2];k=+g[b+24>>2];g[s+24>>2]=j>k?j:k;b=c[s+32>>2]|0;if((b|0)==0){v=2662;break}else{d=s;s=b;i=p}}if((v|0)==2662){return}else if((v|0)==2664){return}}function aww(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0;d=a|0;if((c[d>>2]|0)==(b|0)){c[d>>2]=0;e=0;return e|0}f=c[b+32>>2]|0;h=c[f+32>>2]|0;i=c[f+36+(((c[f+40>>2]|0)!=(b|0))<<2)>>2]|0;if((h|0)==0){c[d>>2]=i;c[i+32>>2]=0;b=a+4|0;j=c[b>>2]|0;if((j|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-44+40>>2]|0)}c[b>>2]=f;e=c[d>>2]|0;return e|0}c[h+36+(((c[h+40>>2]|0)==(f|0))<<2)>>2]=i;c[i+32>>2]=h;i=a+4|0;a=c[i>>2]|0;if((a|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[a-44+40>>2]|0)}c[i>>2]=f;f=h;do{h=f|0;k=+g[h>>2];i=f+4|0;l=+g[i>>2];a=f+8|0;m=+g[a>>2];b=f+16|0;n=+g[b>>2];j=f+20|0;o=+g[j>>2];p=f+24|0;q=+g[p>>2];r=c[f+36>>2]|0;s=c[f+40>>2]|0;t=+g[r>>2];u=+g[s>>2];v=t>2]=v;u=+g[r+16>>2];t=+g[s+16>>2];w=u>t?u:t;g[b>>2]=w;t=+g[r+4>>2];u=+g[s+4>>2];x=t>2]=x;u=+g[r+20>>2];t=+g[s+20>>2];y=u>t?u:t;g[j>>2]=y;t=+g[r+8>>2];u=+g[s+8>>2];z=t>2]=z;u=+g[r+24>>2];t=+g[s+24>>2];A=u>t?u:t;g[p>>2]=A;if(!(k!=v|l!=x|m!=z|n!=w)){if(!(o!=y|q!=A)){e=f;B=2680;break}}f=c[f+32>>2]|0;}while((f|0)!=0);if((B|0)==2680){return e|0}e=c[d>>2]|0;return e|0}function awx(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c[b>>2]=24080;a[b+40|0]=1;c[b+36>>2]=0;c[b+28>>2]=0;c[b+32>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=-1;c[b+16>>2]=0;c[b+20>>2]=0;a[b+80|0]=1;c[b+76>>2]=0;c[b+68>>2]=0;c[b+72>>2]=0;c[b+44>>2]=0;c[b+48>>2]=0;c[b+52>>2]=-1;c[b+56>>2]=0;c[b+60>>2]=0;a[b+153|0]=0;a[b+154|0]=1;e=(d|0)!=0;a[b+152|0]=e&1^1;g[b+100>>2]=0.0;c[b+104>>2]=0;c[b+124>>2]=0;c[b+108>>2]=1;c[b+112>>2]=0;c[b+116>>2]=10;c[b+120>>2]=1;c[b+128>>2]=0;c[b+132>>2]=0;g[b+136>>2]=0.0;if(e){f=d;h=b+96|0;c[h>>2]=f;i=b+148|0;c[i>>2]=0;j=b+140|0;c[j>>2]=0;k=b+144|0;c[k>>2]=0;l=b+84|0;m=l;aDD(m|0,0,12);return}c[9806]=(c[9806]|0)+1;d=aDx(95)|0;do{if((d|0)==0){n=0}else{e=-(d+4|0)&15;o=d+(e+4)|0;c[d+e>>2]=d;if((o|0)==0){n=0;break}e=o;ayI(e);n=e}}while(0);f=n|0;h=b+96|0;c[h>>2]=f;i=b+148|0;c[i>>2]=0;j=b+140|0;c[j>>2]=0;k=b+144|0;c[k>>2]=0;l=b+84|0;m=l;aDD(m|0,0,12);return}function awy(b){b=b|0;var d=0,e=0;c[b>>2]=24080;do{if((a[b+152|0]&1)!=0){d=b+96|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}}while(0);awp(b+44|0);awp(b+4|0);if((b|0)==0){return}aDB(b);return}function awz(b){b=b|0;var d=0,e=0;c[b>>2]=24080;do{if((a[b+152|0]&1)!=0){d=b+96|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}}while(0);awp(b+44|0);awp(b+4|0);return}function awA(a){a=a|0;return}function awB(a){a=a|0;return}function awC(d,e,f,g,h,j,k,l,m){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;m=i;i=i+48|0;l=m|0;g=m+32|0;c[9806]=(c[9806]|0)+1;n=aDx(83)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}p=o;c[o>>2]=h;b[o+4>>1]=j;b[o+6>>1]=k;k=o+16|0;j=e;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];k=o+32|0;e=f;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[o+8>>2]=0;k=o+56|0;c[k>>2]=0;f=o+52|0;c[f>>2]=0;h=l;c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];j=l+16|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];e=d+104|0;c[o+60>>2]=c[e>>2];j=d+148|0;n=(c[j>>2]|0)+1|0;c[j>>2]=n;j=o;c[o+12>>2]=n;n=d+4|0;q=n|0;r=d+8|0;s=c[r>>2]|0;do{if((s|0)==0){c[9806]=(c[9806]|0)+1;t=aDx(63)|0;if((t|0)==0){u=0;break}v=-(t+4|0)&15;w=t+(v+4)|0;c[t+v>>2]=t;if((w|0)==0){u=0;break}aDD(w|0,0,44);u=w}else{c[r>>2]=0;u=s}}while(0);c[u+32>>2]=0;c[u+36>>2]=o;c[u+40>>2]=0;s=u;aDC(s|0,h|0,32)|0;h=n|0;awv(q,c[h>>2]|0,u);q=d+16|0;c[q>>2]=(c[q>>2]|0)+1;c[o+48>>2]=u;u=d+84+(c[e>>2]<<2)|0;c[f>>2]=0;c[k>>2]=c[u>>2];k=c[u>>2]|0;if((k|0)!=0){c[k+52>>2]=p}c[u>>2]=p;if((a[d+153|0]&1)!=0){i=m;return j|0}c[g>>2]=23368;c[g+4>>2]=d;c[g+8>>2]=p;p=g|0;awD(c[h>>2]|0,l,p);awD(c[d+44>>2]|0,l,p);i=m;return j|0}function awD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;if((a|0)==0){return}e=+g[b>>2];f=+g[b+4>>2];h=+g[b+8>>2];i=+g[b+16>>2];j=+g[b+20>>2];k=+g[b+24>>2];c[9806]=(c[9806]|0)+1;b=aDx(275)|0;do{if((b|0)==0){l=0}else{m=-(b+4|0)&15;n=b+(m+4)|0;c[b+m>>2]=b;m=n;if((n|0)==0){l=0;break}c[m>>2]=a;l=m}}while(0);a=d;b=1;m=64;n=l;while(1){l=b-1|0;o=c[n+(l<<2)>>2]|0;do{if(+g[o>>2]>i){p=l;q=m;r=n}else{if(+g[o+16>>2]>2]>j){p=l;q=m;r=n;break}if(+g[o+20>>2]>2]>k){p=l;q=m;r=n;break}if(+g[o+24>>2]>2]|0)==0){cv[c[(c[a>>2]|0)+12>>2]&2047](d,o);p=l;q=m;r=n;break}t=c[o+36>>2]|0;do{if((l|0)==(m|0)){u=(m|0)==0?1:m<<1;if((m|0)>=(u|0)){v=m;w=n;break}do{if((u|0)==0){x=0}else{c[9806]=(c[9806]|0)+1;y=aDx((u<<2)+19|0)|0;if((y|0)==0){x=0;break}z=-(y+4|0)&15;c[y+z>>2]=y;x=y+(z+4)|0}}while(0);if((m|0)>0){z=0;do{y=x+(z<<2)|0;if((y|0)!=0){c[y>>2]=c[n+(z<<2)>>2]}z=z+1|0;}while((z|0)<(m|0))}if((n|0)==0){v=u;w=x;break}c[9804]=(c[9804]|0)+1;aDB(c[n-4>>2]|0);v=u;w=x}else{v=m;w=n}}while(0);z=w+(l<<2)|0;if((z|0)!=0){c[z>>2]=t}z=c[s>>2]|0;do{if((b|0)==(v|0)){y=(b|0)==0?1:b<<1;if((b|0)>=(y|0)){A=b;B=w;break}do{if((y|0)==0){C=0}else{c[9806]=(c[9806]|0)+1;D=aDx((y<<2)+19|0)|0;if((D|0)==0){C=0;break}E=-(D+4|0)&15;c[D+E>>2]=D;C=D+(E+4)|0}}while(0);if((b|0)>0){u=0;do{E=C+(u<<2)|0;if((E|0)!=0){c[E>>2]=c[w+(u<<2)>>2]}u=u+1|0;}while((u|0)<(b|0))}if((w|0)==0){A=y;B=C;break}c[9804]=(c[9804]|0)+1;aDB(c[w-4>>2]|0);A=y;B=C}else{A=v;B=w}}while(0);s=B+(b<<2)|0;if((s|0)!=0){c[s>>2]=z}p=b+1|0;q=A;r=B}}while(0);if((p|0)>0){b=p;m=q;n=r}else{break}}if((r|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[r-4>>2]|0);return}function awE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=d+60|0;if((c[f>>2]|0)==2){g=b+44|0;h=c[d+48>>2]|0;aww(g,h)|0;g=b+48|0;i=c[g>>2]|0;if((i|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[i-44+40>>2]|0)}c[g>>2]=h;h=b+56|0;c[h>>2]=(c[h>>2]|0)-1}else{h=b+4|0;g=c[d+48>>2]|0;aww(h,g)|0;h=b+8|0;i=c[h>>2]|0;if((i|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[i-44+40>>2]|0)}c[h>>2]=g;g=b+16|0;c[g>>2]=(c[g>>2]|0)-1}g=d+52|0;h=c[g>>2]|0;i=d+56|0;j=c[i>>2]|0;if((h|0)==0){c[b+84+(c[f>>2]<<2)>>2]=j}else{c[h+56>>2]=j}j=c[i>>2]|0;if((j|0)!=0){c[j+52>>2]=c[g>>2]}g=c[b+96>>2]|0;dA[c[(c[g>>2]|0)+16>>2]&511](g|0,d,e);if((d|0)==0){k=b+154|0;a[k]=1;return}c[9804]=(c[9804]|0)+1;aDB(c[d-48+44>>2]|0);k=b+154|0;a[k]=1;return}function awF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=d;d=b+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];d=e;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function awG(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0;d=i;i=i+8|0;j=d|0;c[j>>2]=22928;c[j+4>>2]=e;k=e+4|0;l=e+20|0;m=e+32|0;e=j|0;awH(c[a+4>>2]|0,b,k,l,+g[m>>2],f,h,e);awH(c[a+44>>2]|0,b,k,l,+g[m>>2],f,h,e);i=d;return}function awH(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0;l=i;i=i+32|0;m=l|0;if((a|0)==0){i=l;return}c[9806]=(c[9806]|0)+1;n=aDx(531)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}p=0;do{n=o+(p<<2)|0;if((n|0)!=0){c[n>>2]=0}p=p+1|0;}while((p|0)<128);c[o>>2]=a;a=j|0;p=j+4|0;n=j+8|0;j=m|0;q=m+4|0;r=m+8|0;s=m+12|0;t=h|0;u=h+4|0;v=h+8|0;h=m+16|0;w=m+20|0;x=m+24|0;y=m+28|0;z=b|0;A=d|0;B=e+4|0;C=b+4|0;D=d+4|0;E=e+8|0;F=b+8|0;b=d+8|0;d=k;G=1;H=126;I=128;J=128;K=o;while(1){o=G-1|0;L=c[K+(o<<2)>>2]|0;M=+g[L+4>>2]- +g[p>>2];N=+g[L+8>>2]- +g[n>>2];g[j>>2]=+g[L>>2]- +g[a>>2];g[q>>2]=M;g[r>>2]=N;g[s>>2]=0.0;N=+g[L+20>>2]- +g[u>>2];M=+g[L+24>>2]- +g[v>>2];g[h>>2]=+g[L+16>>2]- +g[t>>2];g[w>>2]=N;g[x>>2]=M;g[y>>2]=0.0;O=c[e>>2]|0;M=+g[z>>2];N=+g[A>>2];P=(+g[m+(O<<4)>>2]-M)*N;Q=N*(+g[m+(1-O<<4)>>2]-M);O=c[B>>2]|0;M=+g[C>>2];N=+g[D>>2];R=(+g[m+(O<<4)+4>>2]-M)*N;S=N*(+g[m+(1-O<<4)+4>>2]-M);do{if(P>S|R>Q){T=o;U=H;V=I;W=J;X=K}else{M=R>P?R:P;N=S>2]|0;Y=+g[F>>2];Z=+g[b>>2];_=(+g[m+(O<<4)+8>>2]-Y)*Z;$=Z*(+g[m+(1-O<<4)+8>>2]-Y);if(M>$|_>N){T=o;U=H;V=I;W=J;X=K;break}if((_>M?_:M)>=f){T=o;U=H;V=I;W=J;X=K;break}if(($>2]|0)==0){cv[c[(c[d>>2]|0)+12>>2]&2047](k,L);T=o;U=H;V=I;W=J;X=K;break}if((o|0)>(H|0)){aa=I<<1;if((I|0)<(aa|0)){do{if((J|0)<(aa|0)){do{if((aa|0)==0){ab=0}else{c[9806]=(c[9806]|0)+1;ac=aDx((I<<3|4)+15|0)|0;if((ac|0)==0){ab=0;break}ad=-(ac+4|0)&15;c[ac+ad>>2]=ac;ab=ac+(ad+4)|0}}while(0);if((I|0)>0){ad=0;do{ac=ab+(ad<<2)|0;if((ac|0)!=0){c[ac>>2]=c[K+(ad<<2)>>2]}ad=ad+1|0;}while((ad|0)<(I|0))}if((K|0)==0){ae=aa;af=ab;break}c[9804]=(c[9804]|0)+1;aDB(c[K-4>>2]|0);ae=aa;af=ab}else{ae=J;af=K}}while(0);ad=I;while(1){ac=af+(ad<<2)|0;if((ac|0)!=0){c[ac>>2]=0}ac=ad+1|0;if((ac|0)<(aa|0)){ad=ac}else{ag=ae;ah=af;break}}}else{ag=J;ah=K}ai=aa-2|0;aj=aa;ak=ag;al=ah}else{ai=H;aj=I;ak=J;al=K}c[al+(o<<2)>>2]=c[L+36>>2];c[al+(G<<2)>>2]=c[O>>2];T=G+1|0;U=ai;V=aj;W=ak;X=al}}while(0);if((T|0)==0){break}else{G=T;H=U;I=V;J=W;K=X}}if((X|0)==0){i=l;return}c[9804]=(c[9804]|0)+1;aDB(c[X-4>>2]|0);i=l;return}function awI(a){a=a|0;return}function awJ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;f=i;i=i+40|0;g=f|0;h=f+8|0;c[g>>2]=22720;c[g+4>>2]=e;e=h;j=b;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];j=h+16|0;e=d;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];e=g|0;awD(c[a+4>>2]|0,h,e);awD(c[a+44>>2]|0,h,e);i=f;return}function awK(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0.0,o=0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0,I=0.0,J=0.0,K=0,L=0.0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0;h=i;i=i+16|0;j=h|0;k=d;l=e;m=e|0;n=+g[m>>2];o=e+4|0;p=+g[o>>2];q=e+8|0;r=+g[q>>2];s=+g[e+12>>2];e=f;t=+g[f>>2];u=+g[f+4>>2];v=+g[f+8>>2];w=+g[f+12>>2];f=d+60|0;L3408:do{if((c[f>>2]|0)==2){x=b+44|0;y=d+48|0;z=c[y>>2]|0;aww(x,z)|0;x=b+48|0;A=c[x>>2]|0;if((A|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[A-44+40>>2]|0)}c[x>>2]=z;z=b+56|0;c[z>>2]=(c[z>>2]|0)-1;z=b+4|0;x=b+8|0;A=c[x>>2]|0;do{if((A|0)==0){c[9806]=(c[9806]|0)+1;B=aDx(63)|0;if((B|0)==0){C=0;break}D=-(B+4|0)&15;E=B+(D+4)|0;c[B+D>>2]=B;if((E|0)==0){C=0;break}aDD(E|0,0,44);C=E}else{c[x>>2]=0;C=A}}while(0);c[C+32>>2]=0;c[C+36>>2]=d;c[C+40>>2]=0;g[C>>2]=n;g[C+4>>2]=p;g[C+8>>2]=r;g[C+12>>2]=s;g[C+16>>2]=t;g[C+20>>2]=u;g[C+24>>2]=v;g[C+28>>2]=w;awv(z,c[z>>2]|0,C);A=b+16|0;c[A>>2]=(c[A>>2]|0)+1;c[y>>2]=C;F=1}else{A=b+128|0;c[A>>2]=(c[A>>2]|0)+1;A=c[d+48>>2]|0;x=A|0;G=+g[x>>2];do{if(G<=t){E=A+16|0;H=+g[E>>2];if(H>2];if(I>u){break}D=A+20|0;J=+g[D>>2];if(J>2];if(L>v){break}M=A+24|0;N=+g[M>>2];if(N>2];P=+g[d+20>>2];Q=+g[d+24>>2];R=+g[b+100>>2];S=(+g[d+32>>2]-O)*.5*R;T=R*(+g[d+36>>2]-P)*.5;U=R*(+g[d+40>>2]-Q)*.5;if(+g[m>>2]-O<0.0){V=-0.0-S}else{V=S}if(+g[o>>2]-P<0.0){W=-0.0-T}else{W=T}if(+g[q>>2]-Q<0.0){X=-0.0-U}else{X=U}Y=b+4|0;if(!(G>n|I>p|L>r|H0.0){Z=N;_=V+L}else{Z=V+N;_=L}if(W>0.0){$=J;aa=W+I}else{$=W+J;aa=I}if(X>0.0){ab=X+U;ac=H}else{ab=U;ac=X+H}ad=aww(Y,A)|0;L3449:do{if((ad|0)==0){ae=0}else{af=c[b+12>>2]|0;if((af|0)>-1){ag=0;ah=ad}else{ae=c[Y>>2]|0;break}while(1){if((ag|0)>=(af|0)){ae=ah;break L3449}ai=c[ah+32>>2]|0;if((ai|0)==0){ae=ah;break}else{ag=ag+1|0;ah=ai}}}}while(0);g[x>>2]=Z;g[B>>2]=$;g[K>>2]=ac;g[A+12>>2]=s;g[E>>2]=_;g[D>>2]=aa;g[M>>2]=ab;g[A+28>>2]=w;awv(Y,ae,A);ad=b+132|0;c[ad>>2]=(c[ad>>2]|0)+1;F=1;break L3408}}while(0);y=b+4|0;z=aww(y,A)|0;L3458:do{if((z|0)==0){aj=0}else{ad=c[b+12>>2]|0;if((ad|0)>-1){ak=0;al=z}else{aj=c[y>>2]|0;break}while(1){if((ak|0)>=(ad|0)){aj=al;break L3458}af=c[al+32>>2]|0;if((af|0)==0){aj=al;break}else{ak=ak+1|0;al=af}}}}while(0);g[x>>2]=n;g[A+4>>2]=p;g[A+8>>2]=r;g[A+12>>2]=s;g[A+16>>2]=t;g[A+20>>2]=u;g[A+24>>2]=v;g[A+28>>2]=w;awv(y,aj,A);z=b+132|0;c[z>>2]=(c[z>>2]|0)+1;F=1}}while(0);aj=d+52|0;al=c[aj>>2]|0;ak=d+56|0;ae=c[ak>>2]|0;if((al|0)==0){c[b+84+(c[f>>2]<<2)>>2]=ae}else{c[al+56>>2]=ae}ae=c[ak>>2]|0;if((ae|0)!=0){c[ae+52>>2]=c[aj>>2]}ae=d+16|0;c[ae>>2]=c[l>>2];c[ae+4>>2]=c[l+4>>2];c[ae+8>>2]=c[l+8>>2];c[ae+12>>2]=c[l+12>>2];l=d+32|0;c[l>>2]=c[e>>2];c[l+4>>2]=c[e+4>>2];c[l+8>>2]=c[e+8>>2];c[l+12>>2]=c[e+12>>2];e=b+104|0;c[f>>2]=c[e>>2];f=b+84+(c[e>>2]<<2)|0;c[aj>>2]=0;c[ak>>2]=c[f>>2];ak=c[f>>2]|0;if((ak|0)!=0){c[ak+52>>2]=k}c[f>>2]=k;if(!F){i=h;return}a[b+154|0]=1;if((a[b+153|0]&1)!=0){i=h;return}c[j>>2]=23368;c[j+4>>2]=b;F=b+44|0;k=d+48|0;d=j|0;awL(F,c[F>>2]|0,c[k>>2]|0,d);F=b+4|0;awL(F,c[F>>2]|0,c[k>>2]|0,d);i=h;return}function awL(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;if((d|0)==0|(e|0)==0){return}h=b+24|0;i=b+28|0;do{if((c[h>>2]|0)<128){if((c[i>>2]|0)>=128){j=i;break}c[9806]=(c[9806]|0)+1;k=aDx(1043)|0;if((k|0)==0){l=0}else{m=-(k+4|0)&15;c[k+m>>2]=k;l=k+(m+4)|0}m=c[h>>2]|0;k=b+32|0;if((m|0)>0){n=0;do{o=l+(n<<3)|0;if((o|0)!=0){p=(c[k>>2]|0)+(n<<3)|0;q=o;o=c[p+4>>2]|0;c[q>>2]=c[p>>2];c[q+4>>2]=o}n=n+1|0;}while((n|0)<(m|0))}m=c[k>>2]|0;n=b+36|0;if((m|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}c[k>>2]=0}a[n]=1;c[k>>2]=l;c[i>>2]=128;j=i}else{j=i}}while(0);c[h>>2]=128;i=b+32|0;l=c[i>>2]|0;c[l>>2]=d;c[l+4>>2]=e;e=b+36|0;b=f;l=1;d=124;while(1){n=l-1|0;m=c[i>>2]|0;o=c[m+(n<<3)>>2]|0;q=c[m+(n<<3)+4>>2]|0;if((n|0)>(d|0)){p=c[h>>2]|0;r=p<<1;do{if((p|0)<(r|0)){if((c[j>>2]|0)>=(r|0)){s=m;break}if((r|0)==0){t=0;u=p}else{c[9806]=(c[9806]|0)+1;v=aDx((p<<4|4)+15|0)|0;if((v|0)==0){w=0}else{x=-(v+4|0)&15;c[v+x>>2]=v;w=v+(x+4)|0}t=w;u=c[h>>2]|0}if((u|0)>0){x=0;do{v=t+(x<<3)|0;if((v|0)!=0){y=(c[i>>2]|0)+(x<<3)|0;z=v;v=c[y+4>>2]|0;c[z>>2]=c[y>>2];c[z+4>>2]=v}x=x+1|0;}while((x|0)<(u|0))}x=c[i>>2]|0;if((x|0)!=0){if((a[e]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[x-8+4>>2]|0)}c[i>>2]=0}a[e]=1;c[i>>2]=t;c[j>>2]=r;s=t}else{s=m}}while(0);c[h>>2]=r;A=r-4|0;B=s}else{A=d;B=m}do{if((o|0)==(q|0)){p=o+40|0;if((c[p>>2]|0)==0){C=n;break}k=o+36|0;x=B+(n<<3)|0;v=c[k>>2]|0;c[x>>2]=v;c[x+4>>2]=v;v=(c[i>>2]|0)+(l<<3)|0;x=c[p>>2]|0;c[v>>2]=x;c[v+4>>2]=x;x=(c[i>>2]|0)+(l+1<<3)|0;v=c[p>>2]|0;c[x>>2]=c[k>>2];c[x+4>>2]=v;C=l+2|0}else{if(+g[o>>2]>+g[q+16>>2]){C=n;break}if(+g[o+16>>2]<+g[q>>2]){C=n;break}if(+g[o+4>>2]>+g[q+20>>2]){C=n;break}if(+g[o+20>>2]<+g[q+4>>2]){C=n;break}if(+g[o+8>>2]>+g[q+24>>2]){C=n;break}if(+g[o+24>>2]<+g[q+8>>2]){C=n;break}v=o+40|0;x=q+40|0;k=(c[x>>2]|0)!=0;if((c[v>>2]|0)==0){if(k){p=B+(n<<3)|0;z=o;y=0;D=c[q+36>>2]|y;c[p>>2]=z;c[p+4>>2]=D;D=(c[i>>2]|0)+(l<<3)|0;p=c[x>>2]|y;c[D>>2]=z;c[D+4>>2]=p;C=l+1|0;break}else{dA[c[(c[b>>2]|0)+8>>2]&511](f,o,q);C=n;break}}else{p=B+(n<<3)|0;D=o+36|0;z=c[D>>2]|0;if(k){k=q+36|0;y=p;E=c[k>>2]|0;c[y>>2]=z;c[y+4>>2]=E;E=(c[i>>2]|0)+(l<<3)|0;y=c[k>>2]|0;c[E>>2]=c[v>>2];c[E+4>>2]=y;y=(c[i>>2]|0)+(l+1<<3)|0;E=c[x>>2]|0;c[y>>2]=c[D>>2];c[y+4>>2]=E;E=(c[i>>2]|0)+(l+2<<3)|0;y=c[x>>2]|0;c[E>>2]=c[v>>2];c[E+4>>2]=y;C=l+3|0;break}else{y=p;p=0;E=q;c[y>>2]=z|p;c[y+4>>2]=E;y=(c[i>>2]|0)+(l<<3)|0;c[y>>2]=c[v>>2]|p;c[y+4>>2]=E;C=l+1|0;break}}}}while(0);if((C|0)==0){break}else{l=C;d=A}}return}function awM(a,b){a=a|0;b=b|0;awR(a,b);awS(a,b);return}function awN(a){a=a|0;return}function awO(a){a=a|0;return c[a+96>>2]|0}function awP(a){a=a|0;return c[a+96>>2]|0}function awQ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;e=c[a+4>>2]|0;f=c[a+44>>2]|0;a=(f|0)==0;do{if((e|0)==0){if(a){h=0.0;i=0.0;j=0.0;k=0.0;l=0.0;m=0.0;n=0.0;o=0.0;break}h=+g[f>>2];i=+g[f+4>>2];j=+g[f+8>>2];k=+g[f+12>>2];l=+g[f+16>>2];m=+g[f+20>>2];n=+g[f+24>>2];o=+g[f+28>>2]}else{p=+g[e>>2];if(a){h=p;i=+g[e+4>>2];j=+g[e+8>>2];k=+g[e+12>>2];l=+g[e+16>>2];m=+g[e+20>>2];n=+g[e+24>>2];o=+g[e+28>>2];break}else{q=+g[f>>2];r=+g[e+16>>2];s=+g[f+16>>2];t=+g[e+4>>2];u=+g[f+4>>2];v=+g[e+20>>2];w=+g[f+20>>2];x=+g[e+8>>2];y=+g[f+8>>2];z=+g[e+24>>2];A=+g[f+24>>2];h=ps?r:s;m=v>w?v:w;n=z>A?z:A;o=0.0;break}}}while(0);g[b>>2]=h;g[b+4>>2]=i;g[b+8>>2]=j;g[b+12>>2]=k;g[d>>2]=l;g[d+4>>2]=m;g[d+8>>2]=n;g[d+12>>2]=o;return}function awR(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;e=i;i=i+48|0;f=e|0;h=e+32|0;j=b+4|0;k=j|0;l=b+16|0;awu(k,((aa(c[b+112>>2]|0,c[l>>2]|0)|0)/100|0)+1|0);m=b+124|0;if((c[m>>2]|0)!=0){n=((aa(c[b+108>>2]|0,c[b+56>>2]|0)|0)/100|0)+1|0;awu(b+44|0,n);o=(c[m>>2]|0)-n|0;c[m>>2]=(o|0)<0?0:o}o=b+104|0;n=((c[o>>2]|0)+1|0)%2|0;c[o>>2]=n;o=c[b+84+(n<<2)>>2]|0;if((o|0)!=0){n=b+92|0;p=f;q=f+16|0;f=b+44|0;r=b+8|0;s=b+48|0;t=f|0;u=b+56|0;v=o;while(1){o=v+56|0;w=c[o>>2]|0;x=v+60|0;y=v+52|0;z=c[y>>2]|0;if((z|0)==0){c[b+84+(c[x>>2]<<2)>>2]=w}else{c[z+56>>2]=w}z=c[o>>2]|0;if((z|0)!=0){c[z+52>>2]=c[y>>2]}c[y>>2]=0;c[o>>2]=c[n>>2];o=c[n>>2]|0;if((o|0)!=0){c[o+52>>2]=v}c[n>>2]=v;o=v+48|0;y=c[o>>2]|0;aww(k,y)|0;z=c[r>>2]|0;if((z|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[z-44+40>>2]|0)}c[r>>2]=y;c[l>>2]=(c[l>>2]|0)-1;y=v+16|0;c[p>>2]=c[y>>2];c[p+4>>2]=c[y+4>>2];c[p+8>>2]=c[y+8>>2];c[p+12>>2]=c[y+12>>2];y=v+32|0;c[q>>2]=c[y>>2];c[q+4>>2]=c[y+4>>2];c[q+8>>2]=c[y+8>>2];c[q+12>>2]=c[y+12>>2];y=c[s>>2]|0;do{if((y|0)==0){c[9806]=(c[9806]|0)+1;z=aDx(63)|0;if((z|0)==0){A=0;break}B=-(z+4|0)&15;C=z+(B+4)|0;c[z+B>>2]=z;if((C|0)==0){A=0;break}aDD(C|0,0,44);A=C}else{c[s>>2]=0;A=y}}while(0);c[A+32>>2]=0;c[A+36>>2]=v;c[A+40>>2]=0;y=A;aDC(y|0,p|0,32)|0;awv(f,c[t>>2]|0,A);c[u>>2]=(c[u>>2]|0)+1;c[o>>2]=A;c[x>>2]=2;if((w|0)==0){break}else{v=w}}c[m>>2]=c[u>>2];a[b+154|0]=1}c[h>>2]=23368;c[h+4>>2]=b;u=b+153|0;m=a[u]|0;if((m&1)==0){D=m}else{awL(k,c[j>>2]|0,c[b+44>>2]|0,h|0);D=a[u]|0}if((D&1)!=0){D=c[j>>2]|0;awL(k,D,D,h|0)}h=b+154|0;L3605:do{if((a[h]&1)!=0){D=b+96|0;k=c[D>>2]|0;j=cA[c[(c[k>>2]|0)+28>>2]&4095](k)|0;k=j+4|0;u=c[k>>2]|0;if((u|0)<=0){break}m=(aa(c[b+116>>2]|0,u)|0)/100|0;v=c[b+120>>2]|0;A=(v|0)>(m|0)?v:m;m=(u|0)<(A|0)?u:A;A=b+144|0;do{if((m|0)>0){v=j+12|0;t=m;f=0;p=u;while(1){s=((c[A>>2]|0)+f|0)%(p|0)|0;q=c[v>>2]|0;l=c[q+(s<<4)>>2]|0;r=c[q+(s<<4)+4>>2]|0;s=c[l+48>>2]|0;q=c[r+48>>2]|0;do{if(+g[s>>2]>+g[q+16>>2]){E=3013}else{if(+g[s+16>>2]<+g[q>>2]){E=3013;break}if(+g[s+4>>2]>+g[q+20>>2]){E=3013;break}if(+g[s+20>>2]<+g[q+4>>2]){E=3013;break}if(+g[s+8>>2]>+g[q+24>>2]){E=3013;break}if(+g[s+24>>2]<+g[q+8>>2]){E=3013}else{F=f;G=t;H=p}}}while(0);if((E|0)==3013){E=0;q=c[D>>2]|0;s=q|0;n=c[(c[q>>2]|0)+12>>2]|0;dE[n&127](s,l,r,d)|0;F=f-1|0;G=t-1|0;H=c[k>>2]|0}s=F+1|0;if((s|0)<(G|0)){t=G;f=s;p=H}else{break}}if((H|0)>0){I=H;J=G;break}c[A>>2]=0;break L3605}else{I=u;J=m}}while(0);c[A>>2]=((c[A>>2]|0)+J|0)%(I|0)|0}}while(0);I=b+140|0;c[I>>2]=(c[I>>2]|0)+1;c[b+120>>2]=1;a[h]=0;h=b+128|0;I=c[h>>2]|0;if((I|0)==0){g[b+136>>2]=0.0;K=c[b+132>>2]|0;L=b+132|0;M=K>>>1;c[L>>2]=M;N=I>>>1;c[h>>2]=N;i=e;return}else{J=c[b+132>>2]|0;g[b+136>>2]=+(J>>>0>>>0)/+(I>>>0>>>0);K=J;L=b+132|0;M=K>>>1;c[L>>2]=M;N=I>>>1;c[h>>2]=N;i=e;return}}function awS(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;e=b+96|0;b=c[e>>2]|0;if(!(cA[c[(c[b>>2]|0)+56>>2]&4095](b)|0)){return}b=c[e>>2]|0;f=cA[c[(c[b>>2]|0)+28>>2]&4095](b)|0;b=f+4|0;h=c[b>>2]|0;if((h|0)>1){arQ(f,0,h-1|0);i=c[b>>2]|0}else{i=h}do{if((i|0)>0){h=f+12|0;j=0;k=0;l=0;m=0;n=i;while(1){o=c[h>>2]|0;p=o+(l<<4)|0;q=p|0;r=c[q>>2]|0;s=o+(l<<4)+4|0;o=c[s>>2]|0;if((r|0)==(k|0)){if((o|0)==(j|0)){t=k;u=j;v=3037}else{w=k;v=3031}}else{w=r;v=3031}do{if((v|0)==3031){v=0;r=c[w+48>>2]|0;x=c[o+48>>2]|0;if(+g[r>>2]>+g[x+16>>2]){t=w;u=o;v=3037;break}if(+g[r+16>>2]<+g[x>>2]){t=w;u=o;v=3037;break}if(+g[r+4>>2]>+g[x+20>>2]){t=w;u=o;v=3037;break}if(+g[r+20>>2]<+g[x+4>>2]){t=w;u=o;v=3037;break}if(+g[r+8>>2]>+g[x+24>>2]){t=w;u=o;v=3037;break}if(+g[r+24>>2]<+g[x+8>>2]){t=w;u=o;v=3037}else{y=m;z=w;A=o;B=n}}}while(0);if((v|0)==3037){v=0;o=c[e>>2]|0;dA[c[(c[o>>2]|0)+32>>2]&511](o,p,d);c[q>>2]=0;c[s>>2]=0;y=m+1|0;z=t;A=u;B=c[b>>2]|0}o=l+1|0;if((o|0)<(B|0)){j=A;k=z;l=o;m=y;n=B}else{break}}if((B|0)>1){arQ(f,0,B-1|0);C=c[b>>2]|0}else{C=B}n=C-y|0;if((y|0)>=0){D=n;break}m=f+8|0;if((c[m>>2]|0)<(n|0)){if((C|0)==(y|0)){E=0;F=y}else{c[9806]=(c[9806]|0)+1;l=aDx((n<<4|4)+15|0)|0;if((l|0)==0){G=0}else{k=-(l+4|0)&15;c[l+k>>2]=l;G=l+(k+4)|0}E=G;F=c[b>>2]|0}if((F|0)>0){k=0;do{l=c[h>>2]|0;c[E+(k<<4)>>2]=c[l+(k<<4)>>2];c[E+(k<<4)+4>>2]=c[l+(k<<4)+4>>2];c[E+(k<<4)+8>>2]=c[l+(k<<4)+8>>2];c[E+(k<<4)+12>>2]=c[l+(k<<4)+12>>2];k=k+1|0;}while((k|0)<(F|0))}k=c[h>>2]|0;l=f+16|0;if((k|0)!=0){if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[k-16+12>>2]|0)}c[h>>2]=0}a[l]=1;c[h>>2]=E;c[m>>2]=n;H=C}else{H=C}while(1){l=H+1|0;aDD((c[h>>2]|0)+(H<<4)|0,0,16);if((l|0)<(n|0)){H=l}else{D=n;break}}}else{D=i}}while(0);c[b>>2]=D;return}function awT(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if((c[b+16>>2]|0)!=(-(c[b+56>>2]|0)|0)){return}d=b+44|0;e=b+4|0;f=c[e>>2]|0;if((f|0)!=0){awq(e,f)}f=b+8|0;e=c[f>>2]|0;if((e|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-44+40>>2]|0)}c[f>>2]=0;c[b+12>>2]=-1;f=b+28|0;e=b+36|0;g=c[e>>2]|0;h=b+40|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-8+4>>2]|0)}c[e>>2]=0}a[h]=1;c[e>>2]=0;c[f>>2]=0;c[b+32>>2]=0;c[b+20>>2]=0;f=c[d>>2]|0;if((f|0)!=0){awq(d,f)}f=b+48|0;d=c[f>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-44+40>>2]|0)}c[f>>2]=0;c[b+52>>2]=-1;f=b+68|0;d=b+76|0;e=c[d>>2]|0;h=b+80|0;if((e|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-8+4>>2]|0)}c[d>>2]=0}a[h]=1;c[d>>2]=0;c[f>>2]=0;c[b+72>>2]=0;c[b+60>>2]=0;a[b+153|0]=0;a[b+154|0]=1;c[b+104>>2]=0;c[b+124>>2]=0;c[b+108>>2]=1;c[b+112>>2]=0;c[b+116>>2]=10;c[b+120>>2]=1;aDD(b+84|0,0,12);aDD(b+128|0,0,24);return}function awU(a){a=a|0;if((a|0)==0){return}aDB(a);return}function awV(a,b){a=a|0;b=b|0;var d=0;d=c[a+4>>2]|0;dj[c[(c[d>>2]|0)+8>>2]&511](d,c[b+36>>2]|0)|0;return}function awW(a){a=a|0;if((a|0)==0){return}aDB(a);return}function awX(a,b){a=a|0;b=b|0;var d=0;d=c[a+4>>2]|0;dj[c[(c[d>>2]|0)+8>>2]&511](d|0,c[b+36>>2]|0)|0;return}function awY(a){a=a|0;if((a|0)==0){return}aDB(a);return}function awZ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((b|0)==(d|0)){return}e=a+4|0;a=c[(c[e>>2]|0)+96>>2]|0;cS[c[(c[a>>2]|0)+8>>2]&511](a|0,c[b+36>>2]|0,c[d+36>>2]|0)|0;d=(c[e>>2]|0)+120|0;c[d>>2]=(c[d>>2]|0)+1;return}function aw_(a,b){a=a|0;b=b|0;dA[c[(c[a>>2]|0)+8>>2]&511](a,b,c[(c[a+8>>2]|0)+48>>2]|0);return}function aw$(d,e){d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;c[d>>2]=19872;c[9806]=(c[9806]|0)+1;f=aDx(379)|0;do{if((f|0)==0){h=0}else{i=-(f+4|0)&15;j=f+(i+4)|0;c[f+i>>2]=f;if((j|0)==0){h=0;break}g[f+(i+312)>>2]=9999999747378752.0e-20;k=f+(i|336)|0;b[k>>1]=b[k>>1]&-16;h=j}}while(0);f=d+32|0;c[f>>2]=h;h=(c[e+28>>2]|0)==0;c[9806]=(c[9806]|0)+1;j=aDx(23)|0;if((j|0)==0){l=0}else{k=-(j+4|0)&15;c[j+k>>2]=j;l=j+(k+4)|0}k=(l|0)==0;if(h){if(k){m=0}else{c[l>>2]=19760;m=l}c[d+36>>2]=m}else{if(k){n=0}else{c[l>>2]=19960;n=l}c[d+36>>2]=n}c[9806]=(c[9806]|0)+1;n=aDx(43)|0;do{if((n|0)==0){o=0}else{l=-(n+4|0)&15;k=n+(l+4)|0;c[n+l>>2]=n;if((k|0)==0){o=0;break}m=c[f>>2]|0;h=c[d+36>>2]|0;a[n+(l+8)|0]=0;c[k>>2]=19384;c[n+(l+20)>>2]=0;c[n+(l+24)>>2]=3;c[n+(l|16)>>2]=m;c[n+(l+12)>>2]=h;o=k}}while(0);c[d+40>>2]=o;c[9806]=(c[9806]|0)+1;o=aDx(27)|0;do{if((o|0)==0){p=0}else{n=-(o+4|0)&15;f=o+(n+4)|0;c[o+n>>2]=o;if((f|0)==0){p=0;break}a[o+(n+8)|0]=0;c[f>>2]=19192;p=f}}while(0);c[d+44>>2]=p;c[9806]=(c[9806]|0)+1;p=aDx(27)|0;do{if((p|0)==0){q=0}else{o=-(p+4|0)&15;f=p+(o+4)|0;c[p+o>>2]=p;if((f|0)==0){q=0;break}a[p+(o+8)|0]=0;c[f>>2]=19160;q=f}}while(0);c[d+48>>2]=q;c[9806]=(c[9806]|0)+1;q=aDx(27)|0;do{if((q|0)==0){r=0}else{p=-(q+4|0)&15;f=q+(p+4)|0;c[q+p>>2]=q;if((f|0)==0){r=0;break}a[q+(p+8)|0]=0;c[f>>2]=19320;r=f}}while(0);c[d+52>>2]=r;c[9806]=(c[9806]|0)+1;r=aDx(27)|0;do{if((r|0)==0){s=0}else{q=-(r+4|0)&15;f=r+(q+4)|0;c[r+q>>2]=r;if((f|0)==0){s=0;break}a[r+(q+8)|0]=0;c[f>>2]=19288;s=f}}while(0);c[d+56>>2]=s;c[9806]=(c[9806]|0)+1;s=aDx(27)|0;do{if((s|0)==0){t=0}else{r=-(s+4|0)&15;f=s+(r+4)|0;c[s+r>>2]=s;if((f|0)==0){t=0;break}a[s+(r+8)|0]=0;c[f>>2]=19416;t=f}}while(0);c[d+60>>2]=t;c[9806]=(c[9806]|0)+1;t=aDx(27)|0;do{if((t|0)==0){u=0}else{s=-(t+4|0)&15;f=t+(s+4)|0;c[t+s>>2]=t;if((f|0)==0){u=0;break}a[t+(s+8)|0]=0;c[f>>2]=19224;u=f}}while(0);c[d+64>>2]=u;c[9806]=(c[9806]|0)+1;u=aDx(27)|0;do{if((u|0)==0){v=0}else{t=-(u+4|0)&15;f=u+(t+4)|0;c[u+t>>2]=u;if((f|0)==0){v=0;break}a[u+(t+8)|0]=0;c[f>>2]=19128;v=f}}while(0);c[d+72>>2]=v;c[9806]=(c[9806]|0)+1;v=aDx(27)|0;do{if((v|0)==0){w=0}else{u=-(v+4|0)&15;f=v+(u+4)|0;c[v+u>>2]=v;if((f|0)==0){w=0;break}a[v+(u+8)|0]=0;c[f>>2]=19128;w=f}}while(0);c[d+76>>2]=w;a[w+4|0]=1;c[9806]=(c[9806]|0)+1;w=aDx(27)|0;do{if((w|0)==0){x=0}else{v=-(w+4|0)&15;f=w+(v+4)|0;c[w+v>>2]=w;if((f|0)==0){x=0;break}a[w+(v+8)|0]=0;c[f>>2]=19352;x=f}}while(0);c[d+68>>2]=x;c[9806]=(c[9806]|0)+1;x=aDx(35)|0;do{if((x|0)==0){y=0}else{w=-(x+4|0)&15;f=x+(w+4)|0;c[x+w>>2]=x;if((f|0)==0){y=0;break}a[x+(w+8)|0]=0;c[f>>2]=19256;c[x+(w+12)>>2]=1;c[x+(w|16)>>2]=1;y=f}}while(0);c[d+84>>2]=y;c[9806]=(c[9806]|0)+1;y=aDx(35)|0;do{if((y|0)==0){z=0}else{x=-(y+4|0)&15;f=y+(x+4)|0;c[y+x>>2]=y;if((f|0)==0){z=0;break}a[y+(x+8)|0]=0;c[f>>2]=19256;c[y+(x+12)>>2]=1;c[y+(x|16)>>2]=1;z=f}}while(0);c[d+80>>2]=z;a[z+4|0]=1;z=c[e+20>>2]|0;y=(z|0)<36?36:z;z=(y|0)>80?y:80;y=(z|0)>44?z:44;z=e|0;f=d+12|0;if((c[z>>2]|0)==0){a[f]=1;c[9806]=(c[9806]|0)+1;x=aDx(39)|0;do{if((x|0)==0){A=0}else{w=-(x+4|0)&15;v=x+(w+4)|0;c[x+w>>2]=x;if((v|0)==0){A=0;break}u=c[e+24>>2]|0;aDD(v|0,0,17);c[x+(w+12)>>2]=0;c[9806]=(c[9806]|0)+1;t=aDx(u+19|0)|0;if((t|0)==0){B=0}else{s=-(t+4|0)&15;c[t+s>>2]=t;B=t+(s+4)|0}c[v>>2]=B;c[x+(w+8)>>2]=u;A=v}}while(0);c[d+8>>2]=A}else{a[f]=0;c[d+8>>2]=c[z>>2]}z=e+4|0;f=d+20|0;if((c[z>>2]|0)==0){a[f]=1;c[9806]=(c[9806]|0)+1;A=aDx(39)|0;do{if((A|0)==0){C=0}else{x=-(A+4|0)&15;B=A+(x+4)|0;c[A+x>>2]=A;if((B|0)==0){C=0;break}v=B;u=c[e+12>>2]|0;w=B;c[w>>2]=1140;B=A+(x+8)|0;c[B>>2]=u;c[9806]=(c[9806]|0)+1;s=aDx((u*1140|0)+19|0)|0;if((s|0)==0){D=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;D=s+(u+4)|0}c[A+(x+20)>>2]=D;c[A+(x|16)>>2]=D;u=c[B>>2]|0;c[A+(x+12)>>2]=u;x=u-1|0;if((x|0)==0){E=D}else{u=D;B=x;x=c[w>>2]|0;while(1){c[u>>2]=u+x;s=c[w>>2]|0;t=u+s|0;r=B-1|0;if((r|0)==0){E=t;break}else{u=t;B=r;x=s}}}c[E>>2]=0;C=v}}while(0);c[d+16>>2]=C}else{a[f]=0;c[d+16>>2]=c[z>>2]}z=e+8|0;f=d+28|0;if((c[z>>2]|0)!=0){a[f]=0;c[d+24>>2]=c[z>>2];return}a[f]=1;c[9806]=(c[9806]|0)+1;f=aDx(39)|0;do{if((f|0)==0){F=0}else{z=-(f+4|0)&15;C=f+(z+4)|0;c[f+z>>2]=f;if((C|0)==0){F=0;break}E=C;D=c[e+16>>2]|0;A=C;c[A>>2]=y;C=f+(z+8)|0;c[C>>2]=D;x=aa(D,y)|0;c[9806]=(c[9806]|0)+1;D=aDx(x+19|0)|0;if((D|0)==0){G=0}else{x=-(D+4|0)&15;c[D+x>>2]=D;G=D+(x+4)|0}c[f+(z+20)>>2]=G;c[f+(z|16)>>2]=G;x=c[C>>2]|0;c[f+(z+12)>>2]=x;z=x-1|0;if((z|0)==0){H=G}else{x=G;C=z;z=c[A>>2]|0;while(1){c[x>>2]=x+z;D=c[A>>2]|0;B=x+D|0;u=C-1|0;if((u|0)==0){H=B;break}else{x=B;C=u;z=D}}}c[H>>2]=0;F=E}}while(0);c[d+24>>2]=F;return}function aw0(a){a=a|0;axc(a);if((a|0)==0){return}aDB(a);return}function aw1(a){a=a|0;return}function aw2(a){a=a|0;return}function aw3(a){a=a|0;return}function aw4(a){a=a|0;return}function aw5(a){a=a|0;return}function aw6(a){a=a|0;return}function aw7(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=(b|0)==8;f=(d|0)==8;L3855:do{if(e&f){g=a+64|0}else{if(e&(d|0)==1){g=a+72|0;break}if((b|0)==1&f){g=a+76|0;break}if((d|b|0)==0){g=a+68|0;break}h=(b|0)<20;if(h&(d|0)==28){g=a+84|0;break}i=(d|0)<20;if(i&(b|0)==28){g=a+80|0;break}do{if(h){if(i){g=a+40|0;break L3855}if((d-21|0)>>>0>=9){break}g=a+44|0;break L3855}else{if(!i){break}if((b-21|0)>>>0>=9){break}g=a+48|0;break L3855}}while(0);if((b|0)==31){g=a+52|0;break}if((d|0)==31){g=a+56|0;break}else{g=a+60|0;break}}}while(0);return c[g>>2]|0}function aw8(a){a=a|0;return c[a+16>>2]|0}function aw9(a){a=a|0;return c[a+24>>2]|0}function axa(a){a=a|0;return c[a+8>>2]|0}function axb(a){a=a|0;return c[a+32>>2]|0}function axc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c[b>>2]=19872;do{if((a[b+12|0]&1)!=0){d=b+8|0;e=c[d>>2]|0;f=e+8|0;do{if((c[f>>2]|0)==0){g=e|0;do{if((a[e+16|0]&1)==0){h=c[g>>2]|0;if((h|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[h-4>>2]|0)}}while(0);c[g>>2]=0;c[f>>2]=0;h=c[d>>2]|0;i=h+8|0;if((c[i>>2]|0)!=0){j=h;break}k=h|0;do{if((a[h+16|0]&1)==0){l=c[k>>2]|0;if((l|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}}while(0);c[k>>2]=0;c[i>>2]=0;j=c[d>>2]|0}else{j=e}}while(0);if((j|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[j-20+16>>2]|0)}}while(0);do{if((a[b+28|0]&1)!=0){j=b+24|0;e=c[j>>2]|0;d=c[e+16>>2]|0;if((d|0)==0){m=e}else{c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0);m=c[j>>2]|0}if((m|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[m-20+16>>2]|0)}}while(0);do{if((a[b+20|0]&1)!=0){m=b+16|0;j=c[m>>2]|0;d=c[j+16>>2]|0;if((d|0)==0){n=j}else{c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0);n=c[m>>2]|0}if((n|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[n-20+16>>2]|0)}}while(0);n=b+40|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+44|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+48|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+52|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+56|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+60|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+64|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+72|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+76|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+68|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=b+84|0;m=c[n>>2]|0;ct[c[c[m>>2]>>2]&2047](m);m=c[n>>2]|0;if((m|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-8+4>>2]|0)}m=b+80|0;n=c[m>>2]|0;ct[c[c[n>>2]>>2]&2047](n);n=c[m>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}n=c[b+32>>2]|0;if((n|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-360+356>>2]|0)}n=b+36|0;b=c[n>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[n>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function axd(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axe(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;g=d|0;d=c[g>>2]|0;h=dj[c[(c[d>>2]|0)+56>>2]&511](d,28)|0;d=(h|0)==0;if((a[b+4|0]&1)==0){if(d){i=0;j=i|0;return j|0}k=h;l=c[b+8>>2]|0;m=c[b+12>>2]|0;n=h;c[n>>2]=22536;o=c[g>>2]|0;p=h+4|0;c[p>>2]=o;c[n>>2]=19920;n=h+8|0;a[n]=0;q=h+12|0;c[q>>2]=0;a[h+16|0]=0;c[h+20>>2]=l;c[h+24>>2]=m;if(!(cS[c[(c[o>>2]|0)+24>>2]&511](o,e,f)|0)){i=k;j=i|0;return j|0}o=c[p>>2]|0;c[q>>2]=cS[c[(c[o>>2]|0)+12>>2]&511](o,e,f)|0;a[n]=1;i=k;j=i|0;return j|0}else{if(d){i=0;j=i|0;return j|0}d=h;k=c[b+8>>2]|0;n=c[b+12>>2]|0;b=h;c[b>>2]=22536;o=c[g>>2]|0;g=h+4|0;c[g>>2]=o;c[b>>2]=19920;b=h+8|0;a[b]=0;q=h+12|0;c[q>>2]=0;a[h+16|0]=1;c[h+20>>2]=k;c[h+24>>2]=n;if(!(cS[c[(c[o>>2]|0)+24>>2]&511](o,f,e)|0)){i=d;j=i|0;return j|0}o=c[g>>2]|0;c[q>>2]=cS[c[(c[o>>2]|0)+12>>2]&511](o,f,e)|0;a[b]=1;i=d;j=i|0;return j|0}return 0}function axf(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;b=d|0;d=c[b>>2]|0;g=dj[c[(c[d>>2]|0)+56>>2]&511](d,16)|0;if((g|0)==0){h=0;i=h|0;return i|0}d=g;j=g;c[j>>2]=22536;k=c[b>>2]|0;b=g+4|0;c[b>>2]=k;c[j>>2]=20448;j=g+8|0;a[j]=0;l=g+12|0;c[l>>2]=0;if(!(cS[c[(c[k>>2]|0)+24>>2]&511](k,e,f)|0)){h=d;i=h|0;return i|0}k=c[b>>2]|0;c[l>>2]=cS[c[(c[k>>2]|0)+12>>2]&511](k,e,f)|0;a[j]=1;h=d;i=h|0;return i|0}function axh(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=d|0;h=c[g>>2]|0;i=dj[c[(c[h>>2]|0)+56>>2]&511](h,20)|0;if((i|0)==0){j=0;k=j|0;return k|0}h=i;l=c[d+4>>2]|0;d=a[b+4|0]&1;b=i;c[b>>2]=22536;m=c[g>>2]|0;c[i+4>>2]=m;c[b>>2]=19688;b=i+8|0;a[b]=0;g=i+12|0;c[g>>2]=l;a[i+16|0]=d;if((l|0)!=0){j=h;k=j|0;return k|0}c[g>>2]=cS[c[(c[m>>2]|0)+12>>2]&511](m,e,f)|0;a[b]=1;j=h;k=j|0;return k|0}function axj(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axk(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;b=d|0;d=c[b>>2]|0;g=dj[c[(c[d>>2]|0)+56>>2]&511](d,16)|0;if((g|0)==0){h=0;i=h|0;return i|0}d=g;c[d>>2]=22536;j=c[b>>2]|0;c[g+4>>2]=j;c[d>>2]=19832;d=g+8|0;a[d]=0;b=g+12|0;c[b>>2]=0;c[b>>2]=cS[c[(c[j>>2]|0)+12>>2]&511](j,e,f)|0;a[d]=1;h=g;i=h|0;return i|0}function axl(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;e=b|0;b=c[e>>2]|0;d=dj[c[(c[b>>2]|0)+56>>2]&511](b,8)|0;if((d|0)==0){f=0;g=f|0;return g|0}b=d;c[b>>2]=22536;c[d+4>>2]=c[e>>2];c[b>>2]=24040;f=d;g=f|0;return g|0}function axn(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axo(a){a=a|0;return}function axp(a){a=a|0;return}function axq(a){a=a|0;return}function axr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return}function axs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function axt(a){a=a|0;return}function axu(a,b){a=a|0;b=b|0;return}function axv(a){a=a|0;return}function axw(a,b,c){a=a|0;b=+b;c=c|0;return}function axx(a){a=a|0;return 16568|0}function axy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function axz(a){a=a|0;return a+16|0}function axA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;e=c[b>>2]|0;b=a+260|0;d=c[b>>2]|0;f=a+268|0;a=0;while(1){if((a|0)>=(d|0)){g=3368;break}h=c[f>>2]|0;i=h+(a<<2)|0;if((c[i>>2]|0)==(e|0)){break}else{a=a+1|0}}if((g|0)==3368){return}c[i>>2]=c[h+(d-1<<2)>>2];c[b>>2]=(c[b>>2]|0)-1;return}function axB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;b=d|0;g=c[b>>2]|0;h=dj[c[(c[g>>2]|0)+56>>2]&511](g,44)|0;if((h|0)==0){i=0;j=i|0;return j|0}g=h;k=h;c[k>>2]=22536;c[h+4>>2]=c[b>>2];c[k>>2]=20296;a[h+24|0]=1;c[h+20>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;a[h+28|0]=1;c[h+32>>2]=c[d+4>>2];a[h+36|0]=0;c[h+40>>2]=c[(c[f+192>>2]|0)+68>>2];aCa(g,e,f);i=g;j=i|0;return j|0}function axC(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axD(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;b=d|0;g=c[b>>2]|0;h=dj[c[(c[g>>2]|0)+56>>2]&511](g,44)|0;if((h|0)==0){i=0;j=i|0;return j|0}g=h;k=h;c[k>>2]=22536;c[h+4>>2]=c[b>>2];c[k>>2]=20296;a[h+24|0]=1;c[h+20>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;a[h+28|0]=0;c[h+32>>2]=c[d+4>>2];a[h+36|0]=0;c[h+40>>2]=c[(c[e+192>>2]|0)+68>>2];aCa(g,e,f);i=g;j=i|0;return j|0}function axE(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axF(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;b=d|0;d=c[b>>2]|0;g=dj[c[(c[d>>2]|0)+56>>2]&511](d,80)|0;if((g|0)==0){h=0;i=h|0;return i|0}d=g;c[d>>2]=22536;c[g+4>>2]=c[b>>2];c[d>>2]=19792;a[g+8|0]=1;d=c[b>>2]|0;c[g+12>>2]=21136;b=g+60|0;c[b>>2]=d;c[g+64>>2]=0;c[g+16>>2]=f;c[g+20>>2]=e;j=cS[c[(c[d>>2]|0)+12>>2]&511](d,f,e)|0;c[g+76>>2]=j;e=c[b>>2]|0;cv[c[(c[e>>2]|0)+20>>2]&2047](e,j);h=g;i=h|0;return i|0}function axG(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axH(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;b=d|0;d=c[b>>2]|0;g=dj[c[(c[d>>2]|0)+56>>2]&511](d,80)|0;if((g|0)==0){h=0;i=h|0;return i|0}d=g;c[d>>2]=22536;c[g+4>>2]=c[b>>2];c[d>>2]=19792;a[g+8|0]=0;d=c[b>>2]|0;c[g+12>>2]=21136;b=g+60|0;c[b>>2]=d;c[g+64>>2]=0;c[g+16>>2]=e;c[g+20>>2]=f;j=cS[c[(c[d>>2]|0)+12>>2]&511](d,e,f)|0;c[g+76>>2]=j;f=c[b>>2]|0;cv[c[(c[f>>2]|0)+20>>2]&2047](f,j);h=g;i=h|0;return i|0}function axI(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axJ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;f=a|0;h=a;i=+dh[c[(c[h>>2]|0)+44>>2]&1023](f);j=+dh[c[(c[h>>2]|0)+44>>2]&1023](f);k=+dh[c[(c[h>>2]|0)+44>>2]&1023](f);f=b+48|0;h=b+52|0;l=+g[h>>2]-j;a=b+56|0;m=+g[a>>2]-k;g[d>>2]=+g[f>>2]-i;g[d+4>>2]=l;g[d+8>>2]=m;g[d+12>>2]=0.0;m=j+ +g[h>>2];j=k+ +g[a>>2];g[e>>2]=i+ +g[f>>2];g[e+4>>2]=m;g[e+8>>2]=j;g[e+12>>2]=0.0;return}function axL(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function axM(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=25632;d=b+260|0;e=b+268|0;f=c[e>>2]|0;g=b+272|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+264>>2]=0}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+264>>2]=0}c[9804]=(c[9804]|0)+1;aDB(c[b-276+272>>2]|0);return}function axN(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=25632;d=b+260|0;e=b+268|0;f=c[e>>2]|0;g=b+272|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+264>>2]=0;return}function axO(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=c[d>>2]|0;d=b+260|0;f=c[d>>2]|0;g=b+268|0;h=0;while(1){if((h|0)>=(f|0)){break}if((c[(c[g>>2]|0)+(h<<2)>>2]|0)==(e|0)){i=3440;break}else{h=h+1|0}}do{if((i|0)==3440){if((h|0)==(f|0)){break}return}}while(0);h=b+264|0;do{if((f|0)==(c[h>>2]|0)){i=(f|0)==0?1:f<<1;if((f|0)>=(i|0)){j=f;break}if((i|0)==0){k=0;l=f}else{c[9806]=(c[9806]|0)+1;m=aDx((i<<2)+19|0)|0;if((m|0)==0){n=0}else{o=-(m+4|0)&15;c[m+o>>2]=m;n=m+(o+4)|0}k=n;l=c[d>>2]|0}if((l|0)>0){o=0;do{m=k+(o<<2)|0;if((m|0)!=0){c[m>>2]=c[(c[g>>2]|0)+(o<<2)>>2]}o=o+1|0;}while((o|0)<(l|0))}o=c[g>>2]|0;m=b+272|0;if((o|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[o-4>>2]|0)}c[g>>2]=0}a[m]=1;c[g>>2]=k;c[h>>2]=i;j=c[d>>2]|0}else{j=f}}while(0);f=(c[g>>2]|0)+(j<<2)|0;if((f|0)==0){p=j}else{c[f>>2]=e;p=c[d>>2]|0}c[d>>2]=p+1;return}function axP(a){a=a|0;axQ(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-280+276>>2]|0);return}function axQ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b|0;c[d>>2]=21080;e=b+276|0;f=c[e>>2]|0;ct[c[c[f>>2]>>2]&2047](f);f=c[e>>2]|0;if((f|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-76+72>>2]|0)}c[d>>2]=25632;d=b+260|0;f=b+268|0;e=c[f>>2]|0;g=b+272|0;if((e|0)==0){a[g]=1;c[f>>2]=0;c[d>>2]=0;h=b+264|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}c[f>>2]=0;a[g]=1;c[f>>2]=0;c[d>>2]=0;h=b+264|0;c[h>>2]=0;return}function axR(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if((e|0)==0){f=c[b+188>>2]|0}else{f=e}e=c[d>>2]|0;g=b+260|0;h=c[g>>2]|0;i=b+268|0;j=0;while(1){if((j|0)>=(h|0)){break}if((c[(c[i>>2]|0)+(j<<2)>>2]|0)==(e|0)){k=3491;break}else{j=j+1|0}}do{if((k|0)==3491){if((j|0)==(h|0)){break}return}}while(0);j=b+264|0;do{if((h|0)==(c[j>>2]|0)){k=(h|0)==0?1:h<<1;if((h|0)>=(k|0)){l=h;break}if((k|0)==0){m=0;n=h}else{c[9806]=(c[9806]|0)+1;o=aDx((k<<2)+19|0)|0;if((o|0)==0){p=0}else{q=-(o+4|0)&15;c[o+q>>2]=o;p=o+(q+4)|0}m=p;n=c[g>>2]|0}if((n|0)>0){q=0;do{o=m+(q<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[i>>2]|0)+(q<<2)>>2]}q=q+1|0;}while((q|0)<(n|0))}q=c[i>>2]|0;o=b+272|0;if((q|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-4>>2]|0)}c[i>>2]=0}a[o]=1;c[i>>2]=m;c[j>>2]=k;l=c[g>>2]|0}else{l=h}}while(0);h=(c[i>>2]|0)+(l<<2)|0;if((h|0)==0){r=l}else{c[h>>2]=e;r=c[g>>2]|0}c[g>>2]=r+1;r=c[b+276>>2]|0;cS[c[(c[r>>2]|0)+8>>2]&511](r,f,d)|0;return}function axS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[b>>2]|0;if((e|0)==0){g=c[a+188>>2]|0}else{g=e}e=a+260|0;h=c[e>>2]|0;i=a+268|0;j=0;while(1){if((j|0)>=(h|0)){k=3520;break}l=c[i>>2]|0;m=l+(j<<2)|0;if((c[m>>2]|0)==(f|0)){break}else{j=j+1|0}}if((k|0)==3520){return}c[m>>2]=c[l+(h-1<<2)>>2];c[e>>2]=(c[e>>2]|0)-1;e=c[a+276>>2]|0;dE[c[(c[e>>2]|0)+12>>2]&127](e,g,b,d)|0;return}function axT(a,b,d,e,f,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0,_=0,$=0,aa=0.0,ab=0.0,ac=0.0,ad=0,ae=0.0,af=0.0,ag=0.0,ah=0.0;j=i;i=i+328|0;k=j|0;l=j+16|0;m=j+24|0;n=j+88|0;o=j+152|0;p=j+168|0;q=j+184|0;r=j+200|0;s=j+216|0;t=j+280|0;u=j+296|0;v=j+312|0;w=m;x=d;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];x=m+16|0;w=d+16|0;c[x>>2]=c[w>>2];c[x+4>>2]=c[w+4>>2];c[x+8>>2]=c[w+8>>2];c[x+12>>2]=c[w+12>>2];w=m+32|0;x=d+32|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];x=d+48|0;w=m+48|0;y=x;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];y=n;w=e;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];w=n+16|0;y=e+16|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];y=n+32|0;w=e+32|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];w=e+48|0;y=n+48|0;z=w;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];A=+g[n+52>>2]- +g[m+52>>2];B=+g[n+56>>2]- +g[m+56>>2];g[q>>2]=+g[n+48>>2]- +g[m+48>>2];g[q+4>>2]=A;g[q+8>>2]=B;g[q+12>>2]=0.0;an6(m,n,k,l);B=+g[l>>2];A=B*+g[k+4>>2];C=B*+g[k+8>>2];g[r>>2]=+g[k>>2]*B;g[r+4>>2]=A;g[r+8>>2]=C;g[r+12>>2]=0.0;k=s+4|0;l=k;c[l>>2]=0;c[l+4>>2]=0;l=s+24|0;z=l;c[z>>2]=0;c[z+4>>2]=0;z=s+44|0;aDD(z|0,0,20);ec(m|0,t);C=+g[t>>2];A=+g[t+4>>2];B=+g[t+8>>2];D=+g[t+12>>2];E=2.0/(C*C+A*A+B*B+D*D);F=C*E;G=A*E;H=B*E;E=D*F;I=D*G;J=D*H;D=C*F;F=C*G;K=C*H;C=A*G;G=A*H;A=B*H;g[s>>2]=1.0-(C+A);g[k>>2]=F-J;g[s+8>>2]=K+I;g[s+12>>2]=0.0;g[s+16>>2]=F+J;g[s+20>>2]=1.0-(D+A);g[l>>2]=G-E;g[s+28>>2]=0.0;g[s+32>>2]=K-I;g[s+36>>2]=G+E;g[s+40>>2]=1.0-(D+C);g[z>>2]=0.0;atv(b|0,s,q,r,1.0,o,p);r=a+260|0;if((c[r>>2]|0)<=0){i=j;return}q=a+268|0;a=f;s=u|0;z=o|0;l=u+4|0;k=o+4|0;t=u+8|0;y=o+8|0;o=u+12|0;L=v|0;M=p|0;N=v+4|0;O=p+4|0;P=v+8|0;Q=p+8|0;p=v+12|0;R=x|0;x=d+52|0;S=d+56|0;d=w|0;w=e+52|0;T=e+56|0;e=0;do{U=c[(c[q>>2]|0)+(e<<2)>>2]|0;do{if(dj[c[(c[a>>2]|0)+8>>2]&511](f,c[U+188>>2]|0)|0){V=U+192|0;W=c[V>>2]|0;X=U+4|0;dI[c[(c[W>>2]|0)+8>>2]&1023](W,X,u,v);C=+g[s>>2]+ +g[z>>2];D=+g[l>>2]+ +g[k>>2];E=+g[t>>2]+ +g[y>>2];g[s>>2]=C;g[l>>2]=D;g[t>>2]=E;g[o>>2]=0.0;G=+g[L>>2]+ +g[M>>2];I=+g[N>>2]+ +g[O>>2];K=+g[P>>2]+ +g[Q>>2];g[L>>2]=G;g[N>>2]=I;g[P>>2]=K;g[p>>2]=0.0;A=(G-C)*.5;J=(I-D)*.5;F=(K-E)*.5;H=(G+C)*.5;C=(I+D)*.5;D=(K+E)*.5;E=+g[R>>2]-H;K=+g[x>>2]-C;I=+g[S>>2]-D;G=+g[d>>2]-H;H=+g[w>>2]-C;C=+g[T>>2]-D;D=-0.0-A;B=-0.0-J;Y=-0.0-F;W=EA?8:0)|(K>J?16:0)|(KF?32:0)|(IA?8:0)|(H>J?16:0)|(HF?32:0)|(C=I){aa=B;ab=I;break}aa=B;ab=ac}else{ac=(C-D*A)/Y;if(B>ac){aa=B;ab=I;break}aa=ac;ab=I}}while(0);ad=_<<1;do{if((ad&W|0)==0){if((ad&Z|0)==0){ae=aa;af=ab;break}ac=(E-D*J)/G;if(ac>=ab){ae=aa;af=ab;break}ae=aa;af=ac}else{ac=(E-D*J)/G;if(aa>ac){ae=aa;af=ab;break}ae=ac;af=ab}}while(0);ad=_<<2;do{if((ad&W|0)==0){if((ad&Z|0)==0){ag=ae;ah=af;break}ac=(K-D*F)/H;if(ac>=af){ag=ae;ah=af;break}ag=ae;ah=ac}else{ac=(K-D*F)/H;if(ae>ac){ag=ae;ah=af;break}ag=ac;ah=af}}while(0);ad=$+1|0;if((ad|0)<2){I=ah;B=ag;D=-1.0;_=_<<3;$=ad}else{break}}if(ag>ah){break}atI(b,m,n,U,c[V>>2]|0,X,f,h)}}while(0);e=e+1|0;}while((e|0)<(c[r>>2]|0));i=j;return} +function axU(b,e,f,h,j,k,l,m,n,o,p){b=b|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;p=p|0;var q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0,C=0.0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0,K=0.0,L=0,M=0.0,N=0.0,O=0,P=0,R=0.0,S=0,T=0.0,U=0,V=0.0,W=0,X=0.0,Y=0,Z=0.0,_=0,$=0.0,aa=0.0,ab=0,ac=0.0,ad=0,ae=0.0,af=0,ag=0.0,ah=0.0,ai=0,aj=0.0,ak=0,al=0.0,am=0,an=0.0,ao=0.0,ap=0,aq=0,ar=0.0,as=0.0,at=0.0,au=0,av=0,aw=0,ax=0.0,ay=0.0,az=0.0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0.0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0,bk=0.0,bl=0.0,bm=0.0,bn=0.0,bo=0.0,bp=0,bq=0,br=0.0,bs=0.0,bt=0.0,bu=0.0,bv=0.0,bw=0.0,bx=0.0,by=0.0,bz=0.0,bA=0.0,bB=0.0,bC=0.0,bD=0.0,bE=0,bF=0.0,bG=0.0,bH=0.0,bI=0,bJ=0.0,bK=0.0,bL=0.0,bM=0,bN=0.0,bO=0.0,bP=0.0,bQ=0.0,bR=0.0,bS=0.0,bT=0,bU=0;p=i;i=i+10944|0;o=p|0;e=p+16|0;b=p+32|0;q=p+160|0;r=p+544|0;s=p+560|0;t=p+576|0;u=p+704|0;v=p+1088|0;w=p+1104|0;x=p+10912|0;y=p+10928|0;z=j+48|0;A=+g[z>>2];B=k+48|0;C=+g[B>>2];D=A-C;E=j+52|0;F=+g[E>>2];G=k+52|0;H=+g[G>>2];I=F-H;J=j+56|0;K=+g[J>>2];L=k+56|0;M=+g[L>>2];N=K-M;g[y>>2]=D;g[y+4>>2]=I;g[y+8>>2]=N;g[y+12>>2]=0.0;O=t|0;c[O>>2]=f;c[t+4>>2]=h;P=k|0;R=+g[P>>2];S=j|0;T=+g[S>>2];U=k+16|0;V=+g[U>>2];W=j+16|0;X=+g[W>>2];Y=k+32|0;Z=+g[Y>>2];_=j+32|0;$=+g[_>>2];aa=R*T+V*X+Z*$;ab=j+4|0;ac=+g[ab>>2];ad=j+20|0;ae=+g[ad>>2];af=j+36|0;ag=+g[af>>2];ah=R*ac+V*ae+Z*ag;ai=j+8|0;aj=+g[ai>>2];ak=j+24|0;al=+g[ak>>2];am=j+40|0;an=+g[am>>2];ao=R*aj+V*al+Z*an;j=k+4|0;Z=+g[j>>2];ap=k+20|0;V=+g[ap>>2];aq=k+36|0;R=+g[aq>>2];ar=T*Z+X*V+$*R;as=ac*Z+ae*V+ag*R;at=aj*Z+al*V+an*R;au=k+8|0;R=+g[au>>2];av=k+24|0;V=+g[av>>2];aw=k+40|0;Z=+g[aw>>2];ax=T*R+X*V+$*Z;ay=ac*R+ae*V+ag*Z;az=aj*R+al*V+an*Z;g[t+8>>2]=aa;g[t+12>>2]=ah;g[t+16>>2]=ao;g[t+20>>2]=0.0;g[t+24>>2]=ar;g[t+28>>2]=as;g[t+32>>2]=at;g[t+36>>2]=0.0;g[t+40>>2]=ax;g[t+44>>2]=ay;g[t+48>>2]=az;g[t+52>>2]=0.0;Z=C-A;A=H-F;F=M-K;g[t+56>>2]=aa;g[t+60>>2]=ar;g[t+64>>2]=ax;g[t+68>>2]=0.0;g[t+72>>2]=ah;g[t+76>>2]=as;g[t+80>>2]=ay;g[t+84>>2]=0.0;g[t+88>>2]=ao;g[t+92>>2]=at;g[t+96>>2]=az;g[t+100>>2]=0.0;g[t+104>>2]=Z*T+A*X+F*$;g[t+108>>2]=Z*ac+A*ae+F*ag;g[t+112>>2]=Z*aj+A*al+F*an;g[t+116>>2]=0.0;k=t+120|0;c[k>>2]=116;aA=t+124|0;c[aA>>2]=0;c[u+364>>2]=0;aDD(u+128|0,0,16);c[u+376>>2]=2;c[u+368>>2]=0;g[u+144>>2]=0.0;g[v>>2]=-0.0-D;g[v+4>>2]=-0.0-I;g[v+8>>2]=-0.0-N;g[v+12>>2]=0.0;L4263:do{if((aCX(u,t,v)|0)==1){aB=w+9792|0;aC=w+9800|0;aD=w+9804|0;aE=w|0;aDD(aB|0,0,16);c[aE>>2]=9;aF=w+40|0;aG=w+9788|0;c[aG>>2]=0;aDD(aF|0,0,20);aH=0;do{aI=128-aH-1|0;aJ=w+2108+(aI*60|0)|0;c[w+2108+(aI*60|0)+48>>2]=0;c[w+2108+(aI*60|0)+52>>2]=c[aC>>2];aI=c[aC>>2]|0;if((aI|0)!=0){c[aI+48>>2]=aJ}c[aC>>2]=aJ;c[aD>>2]=(c[aD>>2]|0)+1;aH=aH+1|0;}while(aH>>>0<128);aH=c[u+372>>2]|0;do{if((c[aH+32>>2]|0)>>>0>1){if(!(aCY(u)|0)){aK=3601;break}aJ=c[aB>>2]|0;if((aJ|0)!=0){aI=w+9796|0;aL=aJ;do{aJ=aL+52|0;aM=c[aJ>>2]|0;aN=aL+48|0;if((aM|0)!=0){c[aM+48>>2]=c[aN>>2]}aM=c[aN>>2]|0;if((aM|0)!=0){c[aM+52>>2]=c[aJ>>2]}if((c[aB>>2]|0)==(aL|0)){c[aB>>2]=c[aJ>>2]}c[aI>>2]=(c[aI>>2]|0)-1;c[aN>>2]=0;c[aJ>>2]=c[aC>>2];aJ=c[aC>>2]|0;if((aJ|0)!=0){c[aJ+48>>2]=aL}c[aC>>2]=aL;c[aD>>2]=(c[aD>>2]|0)+1;aL=c[aB>>2]|0;}while((aL|0)!=0)}c[aE>>2]=0;c[aG>>2]=0;aL=aH|0;aI=c[aL>>2]|0;aJ=aH+12|0;aN=c[aJ>>2]|0;an=+g[aN+16>>2];F=+g[aI+16>>2]-an;al=+g[aN+20>>2];A=+g[aI+20>>2]-al;aj=+g[aN+24>>2];Z=+g[aI+24>>2]-aj;aN=aH+4|0;aM=c[aN>>2]|0;ag=+g[aM+16>>2]-an;ae=+g[aM+20>>2]-al;ac=+g[aM+24>>2]-aj;aO=aH+8|0;aP=c[aO>>2]|0;$=+g[aP+16>>2]-an;an=+g[aP+20>>2]-al;al=+g[aP+24>>2]-aj;if(F*ae*al+(A*ac*$+Z*ag*an-F*ac*an-A*ag*al)-Z*ae*$<0.0){c[aL>>2]=aM;c[aN>>2]=aI;aQ=aH+16|0;aR=aH+20|0;$=+g[aQ>>2];g[aQ>>2]=+g[aR>>2];g[aR>>2]=$;aS=aM;aT=aI}else{aS=aI;aT=aM}aM=aCZ(w,aS,aT,aP,1)|0;aP=aCZ(w,c[aN>>2]|0,c[aL>>2]|0,c[aJ>>2]|0,1)|0;aI=aCZ(w,c[aO>>2]|0,c[aN>>2]|0,c[aJ>>2]|0,1)|0;aN=aCZ(w,c[aL>>2]|0,c[aO>>2]|0,c[aJ>>2]|0,1)|0;aJ=w+9796|0;if((c[aJ>>2]|0)!=4){aK=3601;break}aO=c[aB>>2]|0;$=+g[aO+16>>2];aL=c[aO+52>>2]|0;if((aL|0)==0){aU=aO;aV=$}else{ae=$*$;$=+g[aO+20>>2];aR=aO;aO=aL;while(1){Z=+g[aO+16>>2];al=Z*Z;Z=+g[aO+20>>2];aL=Z>=$&al>2]|0;if((aQ|0)==0){break}else{ae=aL?al:ae;$=aL?Z:$;aR=aW;aO=aQ}}aU=aW;aV=+g[aW+16>>2]}$=+g[aU>>2];ae=+g[aU+4>>2];Z=+g[aU+8>>2];al=+g[aU+12>>2];ag=+g[aU+20>>2];aO=c[aU+24>>2]|0;aR=c[aU+28>>2]|0;aQ=c[aU+32>>2]|0;a[aM+56|0]=0;c[aM+36>>2]=aP;a[aP+56|0]=0;c[aP+36>>2]=aM;a[aM+57|0]=0;c[aM+40>>2]=aI;a[aI+56|0]=1;c[aI+36>>2]=aM;a[aM+58|0]=0;c[aM+44>>2]=aN;a[aN+56|0]=2;c[aN+36>>2]=aM;a[aP+57|0]=2;c[aP+40>>2]=aN;a[aN+58|0]=1;c[aN+44>>2]=aP;a[aP+58|0]=1;c[aP+44>>2]=aI;a[aI+57|0]=2;c[aI+40>>2]=aP;a[aI+58|0]=1;c[aI+44>>2]=aN;a[aN+57|0]=2;c[aN+40>>2]=aI;c[aE>>2]=0;aL=s|0;aX=s+4|0;aY=s+8|0;aZ=aQ;aQ=aR;aR=aO;A=ag;ag=aV;an=al;al=Z;Z=ae;ae=$;aO=0;a_=1;a$=aU;while(1){a0=c[aG>>2]|0;if(a0>>>0>=64){aK=3598;break}c[aL>>2]=0;c[aX>>2]=0;c[aY>>2]=0;c[aG>>2]=a0+1;a1=w+60+(a0<<5)|0;a[a$+59|0]=a_&255;a2=a$|0;a3=a$+4|0;a4=a$+8|0;aC_(u,+g[a2>>2],+g[a3>>2],+g[a4>>2],a1);if(+g[a2>>2]*+g[w+60+(a0<<5)+16>>2]+ +g[a3>>2]*+g[w+60+(a0<<5)+20>>2]+ +g[a4>>2]*+g[w+60+(a0<<5)+24>>2]- +g[a$+16>>2]>9999999747378752.0e-20){a5=1;a6=0}else{aK=3597;break}do{a5=a5&(aC0(w,a_,a1,c[a$+36+(a6<<2)>>2]|0,d[a$+56+a6|0]|0,s)|0);a6=a6+1|0;}while(!(a6>>>0>2|a5^1));if(!a5){aK=3596;break}if((c[aY>>2]|0)>>>0<=2){aK=3596;break}a1=c[aL>>2]|0;a0=c[aX>>2]|0;a[a1+57|0]=2;c[a1+40>>2]=a0;a[a0+58|0]=1;c[a0+44>>2]=a1;a1=a$+52|0;a0=c[a1>>2]|0;a4=a$+48|0;if((a0|0)!=0){c[a0+48>>2]=c[a4>>2]}a0=c[a4>>2]|0;if((a0|0)!=0){c[a0+52>>2]=c[a1>>2]}if((c[aB>>2]|0)==(a$|0)){c[aB>>2]=c[a1>>2]}c[aJ>>2]=(c[aJ>>2]|0)-1;c[a4>>2]=0;c[a1>>2]=c[aC>>2];a1=c[aC>>2]|0;if((a1|0)!=0){c[a1+48>>2]=a$}c[aC>>2]=a$;c[aD>>2]=(c[aD>>2]|0)+1;a1=c[aB>>2]|0;$=+g[a1+16>>2];a4=c[a1+52>>2]|0;if((a4|0)==0){a7=a1}else{ac=$*$;$=+g[a1+20>>2];a0=a1;a1=a4;while(1){F=+g[a1+16>>2];aj=F*F;F=+g[a1+20>>2];a4=F>=$&aj>2]|0;if((a2|0)==0){a7=a3;break}else{ac=a4?aj:ac;$=a4?F:$;a0=a3;a1=a2}}}$=+g[a7+20>>2];if($>2];a9=+g[a7+4>>2];ba=+g[a7+8>>2];bb=+g[a7+12>>2];bc=+g[a7+16>>2];bd=$;be=c[a7+24>>2]|0;bf=c[a7+28>>2]|0;bg=c[a7+32>>2]|0}a1=aO+1|0;if(a1>>>0<255){aZ=bg;aQ=bf;aR=be;A=bd;ag=bc;an=bb;al=ba;Z=a9;ae=a8;aO=a1;a_=a_+1|0;a$=a7}else{aK=3600;break}}if((aK|0)==3600){bh=bg;bi=bf;bj=be;bk=bc;bl=bb;bm=ba;bn=a9;bo=a8;bp=(c[aE>>2]|0)==9}else if((aK|0)==3596){c[aE>>2]=4;bh=aZ;bi=aQ;bj=aR;bk=ag;bl=an;bm=al;bn=Z;bo=ae;bp=0}else if((aK|0)==3597){c[aE>>2]=7;bh=aZ;bi=aQ;bj=aR;bk=ag;bl=an;bm=al;bn=Z;bo=ae;bp=0}else if((aK|0)==3598){c[aE>>2]=6;bh=aZ;bi=aQ;bj=aR;bk=ag;bl=an;bm=al;bn=Z;bo=ae;bp=0}A=bk*bo;$=bk*bn;ac=bk*bm;g[aF>>2]=bo;g[w+44>>2]=bn;g[w+48>>2]=bm;g[w+52>>2]=bl;g[w+56>>2]=bk;c[w+36>>2]=3;c[w+4>>2]=bj;c[w+8>>2]=bi;c[w+12>>2]=bh;a$=bi+16|0;F=+g[a$>>2]-A;a_=bi+20|0;aj=+g[a_>>2]-$;aO=bi+24|0;X=+g[aO>>2]-ac;aJ=bh+16|0;T=+g[aJ>>2]-A;aX=bh+20|0;az=+g[aX>>2]-$;aL=bh+24|0;at=+g[aL>>2]-ac;ao=aj*at-X*az;ay=X*T-F*at;at=F*az-aj*T;T=+Q(+(at*at+(ao*ao+ay*ay)));aY=w+20|0;g[aY>>2]=T;ay=+g[aJ>>2]-A;ao=+g[aX>>2]-$;at=+g[aL>>2]-ac;aL=bj+16|0;aj=+g[aL>>2]-A;aX=bj+20|0;az=+g[aX>>2]-$;aJ=bj+24|0;F=+g[aJ>>2]-ac;X=ao*F-at*az;as=at*aj-ay*F;F=ay*az-ao*aj;aj=+Q(+(F*F+(X*X+as*as)));aI=w+24|0;g[aI>>2]=aj;as=+g[aL>>2]-A;X=+g[aX>>2]-$;F=+g[aJ>>2]-ac;ao=+g[a$>>2]-A;A=+g[a_>>2]-$;$=+g[aO>>2]-ac;ac=X*$-F*A;az=F*ao-as*$;$=as*A-X*ao;ao=+Q(+($*$+(ac*ac+az*az)));az=ao+(T+aj);g[aY>>2]=T/az;g[aI>>2]=aj/az;g[w+28>>2]=ao/az;if(bp){bq=0;br=0.0;bs=0.0;bt=0.0;bu=0.0;bv=0.0;bw=0.0;bx=0.0;by=0.0;bz=0.0;break L4263}else{bA=bo;bB=bk;bC=bn;bD=bm;bE=bj}}else{aK=3601}}while(0);if((aK|0)==3601){c[aE>>2]=8;g[aF>>2]=D;aB=w+44|0;g[aB>>2]=I;aD=w+48|0;g[aD>>2]=N;aC=w+52|0;g[aC>>2]=0.0;az=+Q(+(D*D+I*I+N*N));if(az>0.0){ao=1.0/az;bF=ao*N;bG=ao*I;bH=ao*D}else{bF=0.0;bG=0.0;bH=1.0}g[aF>>2]=bH;g[aB>>2]=bG;g[aD>>2]=bF;g[aC>>2]=0.0;g[w+56>>2]=0.0;c[w+36>>2]=1;aC=c[aH>>2]|0;c[w+4>>2]=aC;g[w+20>>2]=1.0;bA=bH;bB=0.0;bC=bG;bD=bF;bE=aC}aC=w+36|0;aD=x|0;aB=x+4|0;aG=x+8|0;ao=0.0;az=0.0;aj=0.0;aI=0;aY=bE;while(1){aO=c[k>>2]|0;a_=(c[O>>2]|0)+(c[aA>>2]|0)|0;if((aO&1|0)==0){bI=aO}else{bI=c[(c[a_>>2]|0)+(aO-1)>>2]|0}dA[bI&511](x,a_,aY|0);T=+g[w+20+(aI<<2)>>2];bJ=aj+ +g[aD>>2]*T;bK=az+T*+g[aB>>2];bL=ao+T*+g[aG>>2];a_=aI+1|0;if(a_>>>0>=(c[aC>>2]|0)>>>0){break}ao=bL;az=bK;aj=bJ;aI=a_;aY=c[w+4+(a_<<2)>>2]|0}aj=+g[aF>>2];az=+g[w+56>>2];ao=+g[w+44>>2];T=+g[w+48>>2];ac=+g[S>>2];$=+g[ab>>2];X=+g[ai>>2];A=+g[z>>2];as=+g[W>>2];F=+g[ad>>2];ay=+g[ak>>2];at=+g[E>>2];ah=+g[_>>2];ax=+g[af>>2];ar=+g[am>>2];aa=+g[J>>2];K=bJ-aj*az;M=bK-az*ao;H=bL-az*T;bq=1;br=-0.0-aj;bs=-0.0-ao;bt=-0.0-T;bu=A+(K*ac+M*$+H*X);bv=at+(K*as+M*F+H*ay);bw=aa+(K*ah+M*ax+H*ar);bx=A+(bJ*ac+bK*$+bL*X);by=at+(bJ*as+bK*F+bL*ay);bz=aa+(bJ*ah+bK*ax+bL*ar)}else{bq=0;br=0.0;bs=0.0;bt=0.0;bu=0.0;bv=0.0;bw=0.0;bx=0.0;by=0.0;bz=0.0}}while(0);if(bq){g[m>>2]=bx;g[m+4>>2]=by;g[m+8>>2]=bz;g[m+12>>2]=0.0;g[n>>2]=bu;g[n+4>>2]=bv;g[n+8>>2]=bw;g[n+12>>2]=0.0;g[l>>2]=br;g[l+4>>2]=bs;g[l+8>>2]=bt;g[l+12>>2]=0.0;bM=1;i=p;return bM|0}bq=b|0;c[bq>>2]=f;f=b+4|0;c[f>>2]=h;bt=+g[P>>2];bs=+g[S>>2];br=+g[U>>2];bw=+g[W>>2];bv=+g[Y>>2];bu=+g[_>>2];bz=bt*bs+br*bw+bv*bu;by=+g[ab>>2];bx=+g[ad>>2];bL=+g[af>>2];bK=bt*by+br*bx+bv*bL;bJ=+g[ai>>2];bF=+g[ak>>2];bD=+g[am>>2];bG=bt*bJ+br*bF+bv*bD;bv=+g[j>>2];br=+g[ap>>2];bt=+g[aq>>2];bC=bs*bv+bw*br+bu*bt;bB=by*bv+bx*br+bL*bt;bH=bJ*bv+bF*br+bD*bt;bt=+g[au>>2];br=+g[av>>2];bv=+g[aw>>2];bA=bs*bt+bw*br+bu*bv;D=by*bt+bx*br+bL*bv;I=bJ*bt+bF*br+bD*bv;aw=b+8|0;g[aw>>2]=bz;av=b+12|0;g[av>>2]=bK;au=b+16|0;g[au>>2]=bG;g[b+20>>2]=0.0;aq=b+24|0;g[aq>>2]=bC;ap=b+28|0;g[ap>>2]=bB;j=b+32|0;g[j>>2]=bH;g[b+36>>2]=0.0;Y=b+40|0;g[Y>>2]=bA;U=b+44|0;g[U>>2]=D;P=b+48|0;g[P>>2]=I;g[b+52>>2]=0.0;bv=+g[B>>2]- +g[z>>2];br=+g[G>>2]- +g[E>>2];bt=+g[L>>2]- +g[J>>2];L=b+56|0;g[L>>2]=bz;G=b+60|0;g[G>>2]=bC;B=b+64|0;g[B>>2]=bA;g[b+68>>2]=0.0;h=b+72|0;g[h>>2]=bK;w=b+76|0;g[w>>2]=bB;x=b+80|0;g[x>>2]=D;g[b+84>>2]=0.0;bI=b+88|0;g[bI>>2]=bG;aA=b+92|0;g[aA>>2]=bH;O=b+96|0;g[O>>2]=I;g[b+100>>2]=0.0;k=b+104|0;g[k>>2]=bv*bs+br*bw+bt*bu;bE=b+108|0;g[bE>>2]=bv*by+br*bx+bt*bL;aK=b+112|0;g[aK>>2]=bv*bJ+br*bF+bt*bD;g[b+116>>2]=0.0;bj=b+120|0;c[bj>>2]=322;bp=b+124|0;c[bp>>2]=0;c[q+364>>2]=0;aDD(q+128|0,0,16);c[q+376>>2]=2;c[q+368>>2]=0;g[q+144>>2]=0.0;if((aCX(q,b,y)|0)!=0){bM=0;i=p;return bM|0}y=q+372|0;q=c[y>>2]|0;if((c[q+32>>2]|0)==0){bN=0.0;bO=0.0;bP=0.0;bQ=0.0;bR=0.0;bS=0.0}else{b=r|0;bh=r+4|0;bi=r+8|0;be=e|0;bf=e+4|0;bg=e+8|0;a7=e+12|0;a5=o|0;a6=o+4|0;s=o+8|0;bD=0.0;bt=0.0;bF=0.0;br=0.0;bJ=0.0;bv=0.0;u=0;aU=q;while(1){bL=+g[aU+16+(u<<2)>>2];q=c[bj>>2]|0;aW=(c[bq>>2]|0)+(c[bp>>2]|0)|0;if((q&1|0)==0){bT=q}else{bT=c[(c[aW>>2]|0)+(q-1)>>2]|0}dA[bT&511](r,aW,c[aU+(u<<2)>>2]|0);bx=bF+bL*+g[b>>2];by=bt+bL*+g[bh>>2];bu=bD+bL*+g[bi>>2];aW=c[(c[y>>2]|0)+(u<<2)>>2]|0;bw=-0.0- +g[aW>>2];bs=-0.0- +g[aW+4>>2];I=-0.0- +g[aW+8>>2];aW=c[bj>>2]|0;q=(c[f>>2]|0)+(c[bp>>2]|0)|0;if((aW&1|0)==0){bU=aW}else{bU=c[(c[q>>2]|0)+(aW-1)>>2]|0}bH=+g[aq>>2]*bw+ +g[ap>>2]*bs+ +g[j>>2]*I;bG=+g[Y>>2]*bw+ +g[U>>2]*bs+ +g[P>>2]*I;g[be>>2]=+g[aw>>2]*bw+ +g[av>>2]*bs+ +g[au>>2]*I;g[bf>>2]=bH;g[bg>>2]=bG;g[a7>>2]=0.0;dA[bU&511](o,q,e);bG=+g[a5>>2];bH=+g[a6>>2];I=+g[s>>2];bs=bv+bL*(+g[k>>2]+(+g[L>>2]*bG+ +g[G>>2]*bH+ +g[B>>2]*I));bw=bJ+bL*(+g[bE>>2]+(bG*+g[h>>2]+bH*+g[w>>2]+I*+g[x>>2]));D=br+bL*(+g[aK>>2]+(bG*+g[bI>>2]+bH*+g[aA>>2]+I*+g[O>>2]));q=u+1|0;aW=c[y>>2]|0;if(q>>>0<(c[aW+32>>2]|0)>>>0){bD=bu;bt=by;bF=bx;br=D;bJ=bw;bv=bs;u=q;aU=aW}else{bN=bu;bO=by;bP=bx;bQ=D;bR=bw;bS=bs;break}}}bv=+g[S>>2];bJ=+g[ab>>2];br=+g[ai>>2];bF=+g[z>>2];bt=+g[W>>2];bD=+g[ad>>2];bs=+g[ak>>2];bw=+g[E>>2];D=+g[_>>2];bx=+g[af>>2];by=+g[am>>2];bu=+g[J>>2];I=bP-bS;bH=bO-bR;bG=bN-bQ;bL=+Q(+(I*I+bH*bH+bG*bG));bB=1.0/(bL>9999999747378752.0e-20?bL:1.0);g[m>>2]=bF+(bP*bv+bO*bJ+bN*br);g[m+4>>2]=bw+(bP*bt+bO*bD+bN*bs);g[m+8>>2]=bu+(bP*D+bO*bx+bN*by);g[m+12>>2]=0.0;g[n>>2]=bF+(bS*bv+bR*bJ+bQ*br);g[n+4>>2]=bw+(bS*bt+bR*bD+bQ*bs);g[n+8>>2]=bu+(bS*D+bR*bx+bQ*by);g[n+12>>2]=0.0;g[l>>2]=bB*I;g[l+4>>2]=bB*bH;g[l+8>>2]=bB*bG;g[l+12>>2]=0.0;bM=0;i=p;return bM|0}function axV(a){a=a|0;return}function axW(a){a=a|0;if((a|0)==0){return}aDB(a);return}function axX(d,e,f,h,j){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0.0,L=0,M=0.0,N=0.0,O=0.0,P=0.0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0.0,a0=0.0,a1=0.0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0,bb=0,bc=0,bd=0,be=0.0,bf=0,bg=0,bh=0.0,bi=0.0,bj=0.0,bk=0,bl=0,bm=0,bn=0,bo=0.0,bp=0.0,bq=0.0,br=0.0,bs=0.0,bt=0.0,bu=0.0,bv=0.0,bw=0.0,bx=0.0,by=0.0,bz=0.0,bA=0,bB=0.0,bC=0.0,bD=0.0,bE=0.0,bF=0.0,bG=0.0,bH=0.0,bI=0.0,bJ=0.0,bK=0,bL=0,bM=0.0,bN=0.0,bO=0.0,bP=0,bQ=0,bR=0,bS=0,bT=0.0,bU=0,bV=0.0,bW=0.0,bX=0.0,bY=0.0,bZ=0.0,b_=0.0,b$=0.0,b0=0.0,b1=0.0;j=i;i=i+256|0;k=j|0;l=j+16|0;m=j+80|0;n=j+144|0;o=j+160|0;p=j+176|0;q=j+192|0;r=j+208|0;s=j+224|0;t=j+240|0;u=k;v=l;w=m;x=d+56|0;g[x>>2]=0.0;y=k|0;z=k+4|0;A=k+8|0;B=k+12|0;C=e;aDD(u|0,0,16);c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];C=l+16|0;v=e+16|0;c[C>>2]=c[v>>2];c[C+4>>2]=c[v+4>>2];c[C+8>>2]=c[v+8>>2];c[C+12>>2]=c[v+12>>2];v=l+32|0;C=e+32|0;c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];C=l+48|0;v=C;D=e+48|0;c[v>>2]=c[D>>2];c[v+4>>2]=c[D+4>>2];c[v+8>>2]=c[D+8>>2];c[v+12>>2]=c[D+12>>2];D=e+64|0;v=D;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=m+16|0;w=e+80|0;c[v>>2]=c[w>>2];c[v+4>>2]=c[w+4>>2];c[v+8>>2]=c[w+8>>2];c[v+12>>2]=c[w+12>>2];w=m+32|0;v=e+96|0;c[w>>2]=c[v>>2];c[w+4>>2]=c[v+4>>2];c[w+8>>2]=c[v+8>>2];c[w+12>>2]=c[v+12>>2];v=m+48|0;w=v;E=e+112|0;c[w>>2]=c[E>>2];c[w+4>>2]=c[E+4>>2];c[w+8>>2]=c[E+8>>2];c[w+12>>2]=c[E+12>>2];E=C|0;F=+g[E>>2];C=v|0;G=+g[C>>2];v=l+52|0;H=+g[v>>2];w=m+52|0;I=+g[w>>2];J=l+56|0;K=+g[J>>2];L=m+56|0;M=+g[L>>2];N=(F+G)*.5;O=(H+I)*.5;P=(K+M)*.5;g[E>>2]=F-N;g[v>>2]=H-O;g[J>>2]=K-P;g[C>>2]=G-N;g[w>>2]=I-O;g[L>>2]=M-P;C=d+28|0;E=d+32|0;if(((c[(c[C>>2]|0)+4>>2]|0)-17|0)>>>0<2){R=((c[(c[E>>2]|0)+4>>2]|0)-17|0)>>>0<2}else{R=0}M=+g[d+44>>2];I=+g[d+48>>2];c[9798]=(c[9798]|0)+1;S=(a[d+52|0]&1)==0;G=S?I:0.0;T=d+64|0;c[T>>2]=0;U=d+4|0;V=U|0;g[V>>2]=0.0;W=d+8|0;g[W>>2]=1.0;X=d+12|0;g[X>>2]=0.0;Y=d+16|0;g[Y>>2]=0.0;Z=d+68|0;c[Z>>2]=0;_=d+60|0;c[_>>2]=-1;I=(S?M:0.0)+G;S=d+24|0;$=c[S>>2]|0;a[$+312|0]=0;c[$>>2]=0;a[$+356|0]=1;g[$+292>>2]=999999984306749400.0;g[$+296>>2]=999999984306749400.0;g[$+300>>2]=999999984306749400.0;g[$+304>>2]=0.0;aa=$+332|0;aDD($+336|0,0,17);b[aa>>1]=b[aa>>1]&-16;aa=e|0;$=e+16|0;ab=e+32|0;ac=e+4|0;ad=e+20|0;ae=e+36|0;af=e+8|0;ag=e+24|0;ah=e+40|0;ai=n|0;aj=n+4|0;ak=n+8|0;al=n+12|0;am=D|0;D=e+80|0;an=e+96|0;ao=e+68|0;ap=e+84|0;aq=e+100|0;ar=e+72|0;as=e+88|0;at=e+104|0;au=o|0;av=o+4|0;aw=o+8|0;ax=o+12|0;ay=l|0;az=p|0;aA=l+4|0;aB=p+4|0;aC=l+8|0;aD=p+8|0;aE=l+48|0;aF=l+16|0;aG=l+20|0;aH=l+24|0;aI=l+32|0;aJ=l+36|0;aK=l+40|0;aL=m|0;aM=q|0;aN=m+4|0;aO=q+4|0;aP=m+8|0;aQ=q+8|0;aR=m+48|0;aS=m+16|0;aT=m+20|0;aU=m+24|0;aV=m+32|0;aW=m+36|0;aX=m+40|0;aY=e+128|0;aZ=U;a_=d+4|0;M=+g[V>>2];K=+g[W>>2];H=+g[X>>2];L4381:do{if(R){F=999999984306749400.0;a$=M;a0=K;a1=H;while(1){a2=-0.0-a$;a3=-0.0-a0;a4=-0.0-a1;a5=+g[ac>>2]*a2+ +g[ad>>2]*a3+ +g[ae>>2]*a4;a6=+g[af>>2]*a2+ +g[ag>>2]*a3+ +g[ah>>2]*a4;g[ai>>2]=+g[aa>>2]*a2+ +g[$>>2]*a3+ +g[ab>>2]*a4;g[aj>>2]=a5;g[ak>>2]=a6;g[al>>2]=0.0;a6=a$*+g[ao>>2]+a0*+g[ap>>2]+a1*+g[aq>>2];a5=a$*+g[ar>>2]+a0*+g[as>>2]+a1*+g[at>>2];g[au>>2]=+g[am>>2]*a$+ +g[D>>2]*a0+ +g[an>>2]*a1;g[av>>2]=a6;g[aw>>2]=a5;g[ax>>2]=0.0;avB(p,c[C>>2]|0,n);avB(q,c[E>>2]|0,o);a5=+g[az>>2];a6=+g[aB>>2];a4=+g[aD>>2];a3=+g[aE>>2]+(+g[ay>>2]*a5+ +g[aA>>2]*a6+ +g[aC>>2]*a4);a2=+g[v>>2]+(a5*+g[aF>>2]+a6*+g[aG>>2]+a4*+g[aH>>2]);a4=+g[aM>>2];a6=+g[aO>>2];a5=+g[aQ>>2];a7=+g[aR>>2]+(+g[aL>>2]*a4+ +g[aN>>2]*a6+ +g[aP>>2]*a5);a8=+g[w>>2]+(a4*+g[aS>>2]+a6*+g[aT>>2]+a5*+g[aU>>2]);a5=a3-a7;a6=a2-a8;a4=+g[V>>2]*a5+ +g[W>>2]*a6+ +g[X>>2]*0.0;if(a4>0.0){if(a4*a4>F*+g[aY>>2]){a9=F;ba=3656;break L4381}}bb=c[S>>2]|0;bc=bb|0;bd=c[bc>>2]|0;if((bd|0)>0){be=+g[bb+308>>2];bf=0;bg=0;while(1){bh=a5- +g[bb+4+(bg<<4)>>2];bi=a6- +g[bb+4+(bg<<4)+4>>2];bj=0.0- +g[bb+4+(bg<<4)+8>>2];bk=bf|bh*bh+bi*bi+bj*bj<=be;bl=bg+1|0;if((bl|0)<(bd|0)){bf=bk;bg=bl}else{bm=bk;break}}}else{bm=0}bg=bb+304|0;do{if(+g[bg>>2]==0.0){if(+g[bb+300>>2]!=0.0){bn=0;break}if(a6!=+g[bb+296>>2]){bn=0;break}bn=a5==+g[bb+292>>2]}else{bn=0}}while(0);if(bn|bm){bo=F;ba=3665;break L4381}be=F-a4;if(be<=F*9.999999974752427e-7){bp=F;bq=be;ba=3667;break L4381}g[bb+292>>2]=a5;g[bb+296>>2]=a6;g[bb+300>>2]=0.0;g[bg>>2]=0.0;a[bb+356|0]=1;g[bb+4+(bd<<4)>>2]=a5;g[bb+4+(bd<<4)+4>>2]=a6;g[bb+4+(bd<<4)+8>>2]=0.0;g[bb+4+(bd<<4)+12>>2]=0.0;bf=c[bc>>2]|0;g[bb+84+(bf<<4)>>2]=a3;g[bb+84+(bf<<4)+4>>2]=a2;g[bb+84+(bf<<4)+8>>2]=0.0;g[bb+84+(bf<<4)+12>>2]=0.0;bf=c[bc>>2]|0;g[bb+164+(bf<<4)>>2]=a7;g[bb+164+(bf<<4)+4>>2]=a8;g[bb+164+(bf<<4)+8>>2]=0.0;g[bb+164+(bf<<4)+12>>2]=0.0;c[bc>>2]=(c[bc>>2]|0)+1;bf=c[S>>2]|0;bk=aBZ(bf)|0;be=+g[bf+276>>2];bj=+g[bf+280>>2];bi=+g[bf+284>>2];bh=+g[bf+288>>2];if(!bk){br=F;ba=3669;break L4381}bs=be*be+bj*bj+bi*bi;if(bs<9.999999974752427e-7){bt=F;bu=be;bv=bj;bw=bi;bx=bh;ba=3671;break L4381}if(F-bs<=F*1.1920928955078125e-7){by=bs;ba=3673;break L4381}g[a_>>2]=be;g[W>>2]=bj;g[X>>2]=bi;g[Y>>2]=bh;bk=c[T>>2]|0;c[T>>2]=bk+1;if((bk|0)>1e3){bz=0.0;bA=0;bB=0.0;bC=0.0;bD=0.0;break L4381}if((c[c[S>>2]>>2]|0)==4){ba=3676;break}else{F=bs;a$=be;a0=bj;a1=bi}}}else{a1=999999984306749400.0;a0=M;a$=K;F=H;while(1){bi=-0.0-a0;bj=-0.0-a$;be=-0.0-F;bs=+g[ac>>2]*bi+ +g[ad>>2]*bj+ +g[ae>>2]*be;bh=+g[af>>2]*bi+ +g[ag>>2]*bj+ +g[ah>>2]*be;g[ai>>2]=+g[aa>>2]*bi+ +g[$>>2]*bj+ +g[ab>>2]*be;g[aj>>2]=bs;g[ak>>2]=bh;g[al>>2]=0.0;bh=a0*+g[ao>>2]+a$*+g[ap>>2]+F*+g[aq>>2];bs=a0*+g[ar>>2]+a$*+g[as>>2]+F*+g[at>>2];g[au>>2]=+g[am>>2]*a0+ +g[D>>2]*a$+ +g[an>>2]*F;g[av>>2]=bh;g[aw>>2]=bs;g[ax>>2]=0.0;avB(p,c[C>>2]|0,n);avB(q,c[E>>2]|0,o);bs=+g[az>>2];bh=+g[aB>>2];be=+g[aD>>2];bj=+g[aE>>2]+(+g[ay>>2]*bs+ +g[aA>>2]*bh+ +g[aC>>2]*be);bi=+g[v>>2]+(bs*+g[aF>>2]+bh*+g[aG>>2]+be*+g[aH>>2]);bE=+g[J>>2]+(bs*+g[aI>>2]+bh*+g[aJ>>2]+be*+g[aK>>2]);be=+g[aM>>2];bh=+g[aO>>2];bs=+g[aQ>>2];bF=+g[aR>>2]+(+g[aL>>2]*be+ +g[aN>>2]*bh+ +g[aP>>2]*bs);bG=+g[w>>2]+(be*+g[aS>>2]+bh*+g[aT>>2]+bs*+g[aU>>2]);bH=+g[L>>2]+(be*+g[aV>>2]+bh*+g[aW>>2]+bs*+g[aX>>2]);bs=bj-bF;bh=bi-bG;be=bE-bH;bI=+g[V>>2]*bs+ +g[W>>2]*bh+ +g[X>>2]*be;if(bI>0.0){if(bI*bI>a1*+g[aY>>2]){a9=a1;ba=3656;break L4381}}bk=c[S>>2]|0;bf=bk|0;bl=c[bf>>2]|0;if((bl|0)>0){bJ=+g[bk+308>>2];bK=0;bL=0;while(1){bM=bs- +g[bk+4+(bL<<4)>>2];bN=bh- +g[bk+4+(bL<<4)+4>>2];bO=be- +g[bk+4+(bL<<4)+8>>2];bP=bK|bM*bM+bN*bN+bO*bO<=bJ;bQ=bL+1|0;if((bQ|0)<(bl|0)){bK=bP;bL=bQ}else{bR=bP;break}}}else{bR=0}bL=bk+304|0;do{if(+g[bL>>2]==0.0){if(be!=+g[bk+300>>2]){bS=0;break}if(bh!=+g[bk+296>>2]){bS=0;break}bS=bs==+g[bk+292>>2]}else{bS=0}}while(0);if(bS|bR){bo=a1;ba=3665;break L4381}bJ=a1-bI;if(bJ<=a1*9.999999974752427e-7){bp=a1;bq=bJ;ba=3667;break L4381}g[bk+292>>2]=bs;g[bk+296>>2]=bh;g[bk+300>>2]=be;g[bL>>2]=0.0;a[bk+356|0]=1;g[bk+4+(bl<<4)>>2]=bs;g[bk+4+(bl<<4)+4>>2]=bh;g[bk+4+(bl<<4)+8>>2]=be;g[bk+4+(bl<<4)+12>>2]=0.0;bK=c[bf>>2]|0;g[bk+84+(bK<<4)>>2]=bj;g[bk+84+(bK<<4)+4>>2]=bi;g[bk+84+(bK<<4)+8>>2]=bE;g[bk+84+(bK<<4)+12>>2]=0.0;bK=c[bf>>2]|0;g[bk+164+(bK<<4)>>2]=bF;g[bk+164+(bK<<4)+4>>2]=bG;g[bk+164+(bK<<4)+8>>2]=bH;g[bk+164+(bK<<4)+12>>2]=0.0;c[bf>>2]=(c[bf>>2]|0)+1;bK=c[S>>2]|0;bc=aBZ(bK)|0;bJ=+g[bK+276>>2];a8=+g[bK+280>>2];a7=+g[bK+284>>2];a2=+g[bK+288>>2];if(!bc){br=a1;ba=3669;break L4381}a3=bJ*bJ+a8*a8+a7*a7;if(a3<9.999999974752427e-7){bt=a1;bu=bJ;bv=a8;bw=a7;bx=a2;ba=3671;break L4381}if(a1-a3<=a1*1.1920928955078125e-7){by=a3;ba=3673;break L4381}g[a_>>2]=bJ;g[W>>2]=a8;g[X>>2]=a7;g[Y>>2]=a2;bc=c[T>>2]|0;c[T>>2]=bc+1;if((bc|0)>1e3){bz=0.0;bA=0;bB=0.0;bC=0.0;bD=0.0;break L4381}if((c[c[S>>2]>>2]|0)==4){ba=3676;break}else{a1=a3;a0=bJ;a$=a8;F=a7}}}}while(0);if((ba|0)==3669){c[Z>>2]=3;bT=br;ba=3677}else if((ba|0)==3671){g[d+4>>2]=bu;g[W>>2]=bv;g[X>>2]=bw;g[Y>>2]=bx;c[Z>>2]=6;bT=bt;ba=3677}else if((ba|0)==3667){c[Z>>2]=bq>0.0?11:2;bT=bp;ba=3677}else if((ba|0)==3673){c[Z>>2]=12;bT=by;ba=3677}else if((ba|0)==3656){c[Z>>2]=10;bT=a9;ba=3677}else if((ba|0)==3676){c[Z>>2]=13;bz=0.0;bA=0;bB=0.0;bC=0.0;bD=0.0}else if((ba|0)==3665){c[Z>>2]=1;bT=bo;ba=3677}do{if((ba|0)==3677){T=c[S>>2]|0;aBZ(T)|0;bo=+g[T+260>>2];a9=+g[T+264>>2];by=+g[T+268>>2];c[u>>2]=c[aZ>>2];c[u+4>>2]=c[aZ+4>>2];c[u+8>>2]=c[aZ+8>>2];c[u+12>>2]=c[aZ+12>>2];bp=+g[V>>2];bq=+g[W>>2];bt=+g[X>>2];bx=bp*bp+bq*bq+bt*bt;if(bx<1.0e-4){c[Z>>2]=5}if(bx>1.4210854715202004e-14){bw=1.0/+Q(+bx);g[y>>2]=bw*+g[y>>2];g[z>>2]=bw*+g[z>>2];g[A>>2]=bw*+g[A>>2];bx=G/+Q(+bT);c[_>>2]=1;bz=1.0/bw-I;bA=1;bB=bx*bp+bo;bC=bx*bq+a9;bD=bx*bt+by;break}else{c[_>>2]=2;bz=0.0;bA=0;bB=bo;bC=a9;bD=by;break}}}while(0);do{if((c[d+72>>2]|0)==0){bU=0}else{if((c[d+20>>2]|0)==0){bU=0;break}if((c[Z>>2]|0)==0){bU=0;break}bU=I+bz<.01}}while(0);Z=bA^1;do{if(bU|Z){T=c[d+20>>2]|0;if((T|0)==0){ba=3700;break}c[9800]=(c[9800]|0)+1;aDD(aZ|0,0,16);if(!(cL[c[(c[T>>2]|0)+8>>2]&63](T,c[S>>2]|0,c[C>>2]|0,c[E>>2]|0,l,m,U,r,s,h,c[e+132>>2]|0)|0)){bT=+g[V>>2];by=+g[W>>2];a9=+g[X>>2];if(bT*bT+by*by+a9*a9<=0.0){ba=3700;break}bo=+g[s>>2];bt=+g[r>>2]-bo;bx=+g[s+4>>2];bq=+g[r+4>>2]-bx;bp=+g[s+8>>2];bw=+g[r+8>>2]-bp;bv=+Q(+(bt*bt+bq*bq+bw*bw))-I;if(bv>2]=c[aZ>>2];c[u+4>>2]=c[aZ+4>>2];c[u+8>>2]=c[aZ+8>>2];c[u+12>>2]=c[aZ+12>>2];bw=+g[y>>2];bq=+g[z>>2];bt=+g[A>>2];bu=1.0/+Q(+(bw*bw+bq*bq+bt*bt));g[y>>2]=bw*bu;g[z>>2]=bq*bu;g[A>>2]=bt*bu;c[_>>2]=6;bV=bv;bW=G*bT+bo;bX=G*by+bx;bY=G*a9+bp;break}c[_>>2]=5;if(bA){bV=bz;bW=bB;bX=bC;bY=bD;break}i=j;return}bp=+g[s>>2];a9=+g[r>>2];bx=bp-a9;by=+g[s+4>>2];bo=+g[r+4>>2];bT=by-bo;bv=+g[s+8>>2];bu=+g[r+8>>2];bt=bv-bu;bq=bx*bx+bT*bT+bt*bt;if(bq>1.4210854715202004e-14){bZ=bq;b_=bx;b$=bT;b0=bt;b1=0.0}else{bt=+g[d+4>>2];bT=+g[W>>2];bx=+g[X>>2];bZ=bt*bt+bT*bT+bx*bx;b_=bt;b$=bT;b0=bx;b1=+g[Y>>2]}if(bZ<=1.4210854715202004e-14){c[_>>2]=9;if(bA){bV=bz;bW=bB;bX=bC;bY=bD;break}i=j;return}bx=1.0/+Q(+bZ);bT=a9-bp;a9=bo-by;bo=bu-bv;bu=-0.0- +Q(+(bT*bT+a9*a9+bo*bo));if(bz>bu|Z){g[y>>2]=b_*bx;g[z>>2]=b$*bx;g[A>>2]=b0*bx;g[B>>2]=b1;c[_>>2]=3;bV=bu;bW=bp;bX=by;bY=bv;break}c[_>>2]=8;if(bA){bV=bz;bW=bB;bX=bC;bY=bD;break}i=j;return}else{ba=3700}}while(0);do{if((ba|0)==3700){if(bA){bV=bz;bW=bB;bX=bC;bY=bD;break}i=j;return}}while(0);do{if(bV>=0.0){if(bV*bV<+g[aY>>2]){break}i=j;return}}while(0);c[aZ>>2]=c[u>>2];c[aZ+4>>2]=c[u+4>>2];c[aZ+8>>2]=c[u+8>>2];c[aZ+12>>2]=c[u+12>>2];g[x>>2]=bV;x=c[(c[f>>2]|0)+16>>2]|0;g[t>>2]=N+bW;g[t+4>>2]=O+bX;g[t+8>>2]=P+bY;g[t+12>>2]=0.0;dw[x&127](f,k,t,bV);i=j;return}function axY(a){a=a|0;return}function axZ(a){a=a|0;return}function ax_(a){a=a|0;return 16552|0}function ax$(b,d,e,f,h,i,j,k,l,m){b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;j=+j;k=k|0;l=l|0;m=m|0;var n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0;c[b+4>>2]=24;c[b+64>>2]=d;c[b+68>>2]=e;g[b+72>>2]=i;g[b+76>>2]=j;n=+(d-1|0);g[b+80>>2]=n;o=+(e-1|0);g[b+84>>2]=o;g[b+88>>2]=h;c[b+92>>2]=f;c[b+96>>2]=l;a[b+100|0]=m&1;a[b+101|0]=0;c[b+104>>2]=k;g[b+108>>2]=1.0;g[b+112>>2]=1.0;g[b+116>>2]=1.0;g[b+120>>2]=0.0;if((k|0)==2){g[b+16>>2]=0.0;g[b+20>>2]=0.0;g[b+24>>2]=i;g[b+28>>2]=0.0;g[b+32>>2]=n;g[b+36>>2]=o;g[b+40>>2]=j;g[b+44>>2]=0.0;p=0.0;q=n;r=0.0;s=o;t=i;u=j}else if((k|0)==0){g[b+16>>2]=i;g[b+20>>2]=0.0;g[b+24>>2]=0.0;g[b+28>>2]=0.0;g[b+32>>2]=j;g[b+36>>2]=n;g[b+40>>2]=o;g[b+44>>2]=0.0;p=i;q=j;r=0.0;s=n;t=0.0;u=o}else if((k|0)==1){g[b+16>>2]=0.0;g[b+20>>2]=i;g[b+24>>2]=0.0;g[b+28>>2]=0.0;g[b+32>>2]=n;g[b+36>>2]=j;g[b+40>>2]=o;g[b+44>>2]=0.0;p=0.0;q=n;r=i;s=j;t=0.0;u=o}else{p=+g[b+16>>2];q=+g[b+32>>2];r=+g[b+20>>2];s=+g[b+36>>2];t=+g[b+24>>2];u=+g[b+40>>2]}g[b+48>>2]=(p+q)*.5;g[b+52>>2]=(r+s)*.5;g[b+56>>2]=(t+u)*.5;g[b+60>>2]=0.0;return}function ax0(a,e,f){a=a|0;e=e|0;f=f|0;var h=0,i=0,j=0.0;h=c[a+96>>2]|0;if((h|0)==0){i=(aa(c[a+64>>2]|0,f)|0)+e|0;j=+g[(c[a+92>>2]|0)+(i<<2)>>2];return+j}else if((h|0)==3){i=(aa(c[a+64>>2]|0,f)|0)+e|0;j=+(b[(c[a+92>>2]|0)+(i<<1)>>1]|0)*+g[a+88>>2];return+j}else if((h|0)==5){h=(aa(c[a+64>>2]|0,f)|0)+e|0;j=+g[a+88>>2]*+(d[(c[a+92>>2]|0)+h|0]|0);return+j}else{j=0.0;return+j}return 0.0}function ax1(a){a=a|0;return a+108|0}function ax2(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ax3(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ax4(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0,w=0.0,x=0.0,y=0.0;f=(+g[a+32>>2]- +g[a+16>>2])*+g[a+108>>2]*.5;h=(+g[a+36>>2]- +g[a+20>>2])*+g[a+112>>2]*.5;i=(+g[a+40>>2]- +g[a+24>>2])*+g[a+116>>2]*.5;j=+P(+(+g[b>>2]));k=+P(+(+g[b+4>>2]));l=+P(+(+g[b+8>>2]));m=+P(+(+g[b+16>>2]));n=+P(+(+g[b+20>>2]));o=+P(+(+g[b+24>>2]));p=+P(+(+g[b+32>>2]));q=+P(+(+g[b+36>>2]));r=+P(+(+g[b+40>>2]));s=+g[b+48>>2];t=+g[b+52>>2];u=+g[b+56>>2];b=a|0;v=a;w=+dh[c[(c[v>>2]|0)+44>>2]&1023](b);x=+dh[c[(c[v>>2]|0)+44>>2]&1023](b);y=f*j+h*k+i*l+w;w=f*m+h*n+i*o+x;x=f*p+h*q+i*r+ +dh[c[(c[v>>2]|0)+44>>2]&1023](b);g[d>>2]=s-y;g[d+4>>2]=t-w;g[d+8>>2]=u-x;g[d+12>>2]=0.0;g[e>>2]=s+y;g[e+4>>2]=t+w;g[e+8>>2]=u+x;g[e+12>>2]=0.0;return}function ax5(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;f=+c4[c[(c[a>>2]|0)+64>>2]&127](a,b,d);h=c[a+104>>2]|0;if((h|0)==1){i=+(b|0)+ +g[a+80>>2]*-.5;j=f- +g[a+52>>2];k=+(d|0)+ +g[a+84>>2]*-.5;g[e>>2]=i;g[e+4>>2]=j;g[e+8>>2]=k;g[e+12>>2]=0.0;l=i;m=j;n=k}else if((h|0)==0){k=f- +g[a+48>>2];j=+(b|0)+ +g[a+80>>2]*-.5;i=+(d|0)+ +g[a+84>>2]*-.5;g[e>>2]=k;g[e+4>>2]=j;g[e+8>>2]=i;g[e+12>>2]=0.0;l=k;m=j;n=i}else if((h|0)==2){i=+(b|0)+ +g[a+80>>2]*-.5;j=+(d|0)+ +g[a+84>>2]*-.5;k=f- +g[a+56>>2];g[e>>2]=i;g[e+4>>2]=j;g[e+8>>2]=k;g[e+12>>2]=0.0;l=i;m=j;n=k}else{l=+g[e>>2];m=+g[e+4>>2];n=+g[e+8>>2]}g[e>>2]=+g[a+108>>2]*l;g[e+4>>2]=+g[a+112>>2]*m;g[e+8>>2]=+g[a+116>>2]*n;return}function ax6(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;h=i;i=i+48|0;j=h|0;k=1.0/+g[b+108>>2];l=1.0/+g[b+112>>2];m=1.0/+g[b+116>>2];n=+g[b+48>>2];o=k*+g[e>>2]+n;p=+g[b+52>>2];q=l*+g[e+4>>2]+p;r=+g[b+56>>2];s=m*+g[e+8>>2]+r;t=k*+g[f>>2]+n;n=l*+g[f+4>>2]+p;p=m*+g[f+8>>2]+r;r=+g[b+16>>2];m=o>2];l=q>2];k=s>2];u=s>2];v=m>2];w=l>2]|0)-1|0;I=(c[b+68>>2]|0)-1|0;J=c[b+104>>2]|0;if((J|0)==2){K=(E|0)<(I|0)?E:I;L=(D|0)>0?D:0;M=(e|0)<(H|0)?e:H;N=(f|0)>0?f:0}else if((J|0)==0){K=(G|0)<(I|0)?G:I;L=(F|0)>0?F:0;M=(E|0)<(H|0)?E:H;N=(D|0)>0?D:0}else if((J|0)==1){K=(G|0)<(I|0)?G:I;L=(F|0)>0?F:0;M=(e|0)<(H|0)?e:H;N=(f|0)>0?f:0}else{K=I;L=0;M=H;N=0}if((L|0)>=(K|0)){i=h;return}H=j|0;I=b+100|0;f=b+101|0;e=j+16|0;F=j+32|0;j=d;if((N|0)<(M|0)){O=L}else{i=h;return}while(1){L=O+1|0;G=N;do{do{if((a[I]&1)==0){if((a[f]&1)!=0){if((G+O&1|0)==0){P=3775;break}}ax5(b,G,O,H);ax5(b,G,L,e);J=G+1|0;ax5(b,J,O,F);dI[c[(c[j>>2]|0)+8>>2]&1023](d,H,G,O);ax5(b,J,O,H);ax5(b,G,L,e);ax5(b,J,L,F);dI[c[(c[j>>2]|0)+8>>2]&1023](d,H,G,O)}else{P=3775}}while(0);if((P|0)==3775){P=0;ax5(b,G,O,H);J=G+1|0;ax5(b,J,O,e);ax5(b,J,L,F);dI[c[(c[j>>2]|0)+8>>2]&1023](d,H,G,O);ax5(b,G,O,H);ax5(b,J,L,e);ax5(b,G,L,F);dI[c[(c[j>>2]|0)+8>>2]&1023](d,H,G,O)}G=G+1|0;}while((G|0)<(M|0));if((L|0)<(K|0)){O=L}else{break}}i=h;return}function ax7(a,b,c){a=a|0;b=+b;c=c|0;aDD(c|0,0,16);return}function ax8(a,b){a=a|0;b=b|0;var d=0;d=a+108|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function ax9(a){a=a|0;return}function aya(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;h=i;i=i+280|0;j=h|0;k=c[b+4>>2]|0;if(+g[k+1124>>2]>2]|0;m=(c[k+1108>>2]|0)!=(l|0);n=+g[e>>2];o=+g[d>>2]*f+n;p=+g[e+4>>2];q=+g[d+4>>2]*f+p;r=+g[e+8>>2];s=+g[d+8>>2]*f+r;if(m){t=o- +g[b+120>>2];u=q- +g[b+124>>2];v=s- +g[b+128>>2];w=n- +g[b+56>>2];x=p- +g[b+60>>2];y=r- +g[b+64>>2];z=w*+g[b+8>>2]+x*+g[b+24>>2]+y*+g[b+40>>2];A=w*+g[b+12>>2]+x*+g[b+28>>2]+y*+g[b+44>>2];B=w*+g[b+16>>2]+x*+g[b+32>>2]+y*+g[b+48>>2];C=t*+g[b+72>>2]+u*+g[b+88>>2]+v*+g[b+104>>2];D=t*+g[b+76>>2]+u*+g[b+92>>2]+v*+g[b+108>>2];E=t*+g[b+80>>2]+u*+g[b+96>>2]+v*+g[b+112>>2]}else{v=o- +g[b+56>>2];u=q- +g[b+60>>2];t=s- +g[b+64>>2];y=n- +g[b+120>>2];n=p- +g[b+124>>2];p=r- +g[b+128>>2];z=y*+g[b+72>>2]+n*+g[b+88>>2]+p*+g[b+104>>2];A=y*+g[b+76>>2]+n*+g[b+92>>2]+p*+g[b+108>>2];B=y*+g[b+80>>2]+n*+g[b+96>>2]+p*+g[b+112>>2];C=v*+g[b+8>>2]+u*+g[b+24>>2]+t*+g[b+40>>2];D=v*+g[b+12>>2]+u*+g[b+28>>2]+t*+g[b+44>>2];E=v*+g[b+16>>2]+u*+g[b+32>>2]+t*+g[b+48>>2]}g[j>>2]=C;g[j+4>>2]=D;g[j+8>>2]=E;g[j+12>>2]=0.0;g[j+16>>2]=z;g[j+20>>2]=A;g[j+24>>2]=B;g[j+28>>2]=0.0;F=j+64|0;G=d;c[F>>2]=c[G>>2];c[F+4>>2]=c[G+4>>2];c[F+8>>2]=c[G+8>>2];c[F+12>>2]=c[G+12>>2];g[j+80>>2]=f;G=j+84|0;g[G>>2]=0.0;F=j+88|0;g[F>>2]=0.0;c[j+108>>2]=0;g[j+112>>2]=0.0;a[j+116|0]=0;g[j+208>>2]=0.0;g[j+240>>2]=0.0;g[j+272>>2]=0.0;aDD(j+120|0,0,28);g[j+48>>2]=o;g[j+52>>2]=q;g[j+56>>2]=s;g[j+60>>2]=0.0;d=j+32|0;H=e;c[d>>2]=c[H>>2];c[d+4>>2]=c[H+4>>2];c[d+8>>2]=c[H+8>>2];c[d+12>>2]=c[H+12>>2];s=+g[k+1120>>2];H=c[k+1116>>2]|0;if((H|0)>0){d=0;e=-1;q=s*s;while(1){s=+g[k+4+(d*276|0)>>2]-C;o=+g[k+4+(d*276|0)+4>>2]-D;f=+g[k+4+(d*276|0)+8>>2]-E;B=s*s+o*o+f*f;I=B>2]|0;q=+g[l+224>>2]*+g[e+224>>2];E=q<-10.0?-10.0:q;g[G>>2]=E>10.0?10.0:E;g[F>>2]=+g[l+228>>2]*+g[e+228>>2];if(m){c[j+92>>2]=c[b+148>>2];c[j+96>>2]=c[b+144>>2];c[j+100>>2]=c[b+156>>2];c[j+104>>2]=c[b+152>>2]}else{c[j+92>>2]=c[b+144>>2];c[j+96>>2]=c[b+148>>2];c[j+100>>2]=c[b+152>>2];c[j+104>>2]=c[b+156>>2]}if((L|0)>-1){b=k+4+(L*276|0)+144|0;m=c[b>>2]|0;e=k+4+(L*276|0)+208|0;E=+g[e>>2];l=k+4+(L*276|0)+240|0;q=+g[l>>2];F=k+4+(L*276|0)+272|0;D=+g[F>>2];G=k+4+(L*276|0)+108|0;d=c[G>>2]|0;H=k+4+(L*276|0)|0;J=j;aDC(H|0,J|0,276)|0;c[G>>2]=d;g[k+4+(L*276|0)+112>>2]=E;g[k+4+(L*276|0)+120>>2]=q;g[k+4+(L*276|0)+124>>2]=D;g[e>>2]=E;g[l>>2]=q;g[F>>2]=D;c[b>>2]=m;i=h;return}else{ay5(k,j)|0;i=h;return}}function ayb(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ayc(b,d,e,f,h,j,k,l,m,n,o){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0,aI=0.0,aJ=0.0,aK=0;o=i;i=i+4264|0;b=o|0;p=o+992|0;q=o+1984|0;r=o+2976|0;s=o+3968|0;t=o+3984|0;u=o+4e3|0;v=o+4080|0;w=o+4216|0;x=e+4|0;if(((c[x>>2]|0)-17|0)>>>0<2){y=((c[f+4>>2]|0)-17|0)>>>0<2}else{y=0}z=b|0;A=p|0;B=q|0;C=r|0;D=h|0;E=h+16|0;F=h+32|0;G=h+4|0;H=h+20|0;I=h+36|0;J=h+8|0;K=h+24|0;L=h+40|0;M=j|0;N=j+16|0;O=j+32|0;P=j+4|0;Q=j+20|0;R=j+36|0;S=j+8|0;T=j+24|0;U=j+40|0;V=0;do{ayk();W=+g[40432+(V<<4)>>2];X=+g[40436+(V<<4)>>2];Y=+g[40440+(V<<4)>>2];Z=-0.0-W;_=-0.0-X;$=-0.0-Y;aa=+g[G>>2]*Z+ +g[H>>2]*_+ +g[I>>2]*$;ab=+g[J>>2]*Z+ +g[K>>2]*_+ +g[L>>2]*$;g[q+(V<<4)>>2]=+g[D>>2]*Z+ +g[E>>2]*_+ +g[F>>2]*$;g[q+(V<<4)+4>>2]=aa;g[q+(V<<4)+8>>2]=ab;g[q+(V<<4)+12>>2]=0.0;ab=W*+g[P>>2]+X*+g[Q>>2]+Y*+g[R>>2];aa=W*+g[S>>2]+X*+g[T>>2]+Y*+g[U>>2];g[r+(V<<4)>>2]=W*+g[M>>2]+X*+g[N>>2]+Y*+g[O>>2];g[r+(V<<4)+4>>2]=ab;g[r+(V<<4)+8>>2]=aa;g[r+(V<<4)+12>>2]=0.0;V=V+1|0;}while((V|0)<42);V=cA[c[(c[e>>2]|0)+76>>2]&4095](e)|0;if((V|0)>0){ac=e;ad=s|0;ae=s+4|0;af=s+8|0;ag=s;ah=s+12|0;ai=0;aj=42;while(1){dA[c[(c[ac>>2]|0)+80>>2]&511](e,ai,s);aa=+g[ad>>2];ab=+g[ae>>2];Y=+g[af>>2];X=aa*+g[E>>2]+ab*+g[H>>2]+Y*+g[K>>2];W=aa*+g[F>>2]+ab*+g[I>>2]+Y*+g[L>>2];g[ad>>2]=+g[D>>2]*aa+ +g[G>>2]*ab+ +g[J>>2]*Y;g[ae>>2]=X;g[af>>2]=W;g[ah>>2]=0.0;ayk();ak=40432+(aj<<4)|0;c[ak>>2]=c[ag>>2];c[ak+4>>2]=c[ag+4>>2];c[ak+8>>2]=c[ag+8>>2];c[ak+12>>2]=c[ag+12>>2];W=+g[ad>>2];X=-0.0-W;Y=+g[ae>>2];ab=-0.0-Y;aa=+g[af>>2];$=-0.0-aa;_=+g[G>>2]*X+ +g[H>>2]*ab+ +g[I>>2]*$;Z=+g[J>>2]*X+ +g[K>>2]*ab+ +g[L>>2]*$;g[q+(aj<<4)>>2]=+g[D>>2]*X+ +g[E>>2]*ab+ +g[F>>2]*$;g[q+(aj<<4)+4>>2]=_;g[q+(aj<<4)+8>>2]=Z;g[q+(aj<<4)+12>>2]=0.0;Z=W*+g[P>>2]+Y*+g[Q>>2]+aa*+g[R>>2];_=W*+g[S>>2]+Y*+g[T>>2]+aa*+g[U>>2];g[r+(aj<<4)>>2]=+g[M>>2]*W+ +g[N>>2]*Y+ +g[O>>2]*aa;g[r+(aj<<4)+4>>2]=Z;g[r+(aj<<4)+8>>2]=_;g[r+(aj<<4)+12>>2]=0.0;ak=ai+1|0;if((ak|0)<(V|0)){ai=ak;aj=aj+1|0}else{break}}al=V+42|0}else{al=42}V=cA[c[(c[f>>2]|0)+76>>2]&4095](f)|0;if((V|0)>0){aj=f;ai=t|0;af=t+4|0;ae=t+8|0;ad=t;ag=t+12|0;ah=al;s=0;while(1){dA[c[(c[aj>>2]|0)+80>>2]&511](f,s,t);_=+g[ai>>2];Z=+g[af>>2];aa=+g[ae>>2];Y=_*+g[N>>2]+Z*+g[Q>>2]+aa*+g[T>>2];W=_*+g[O>>2]+Z*+g[R>>2]+aa*+g[U>>2];g[ai>>2]=+g[M>>2]*_+ +g[P>>2]*Z+ +g[S>>2]*aa;g[af>>2]=Y;g[ae>>2]=W;g[ag>>2]=0.0;ayk();ac=40432+(ah<<4)|0;c[ac>>2]=c[ad>>2];c[ac+4>>2]=c[ad+4>>2];c[ac+8>>2]=c[ad+8>>2];c[ac+12>>2]=c[ad+12>>2];W=+g[ai>>2];Y=-0.0-W;aa=+g[af>>2];Z=-0.0-aa;_=+g[ae>>2];$=-0.0-_;ab=+g[G>>2]*Y+ +g[H>>2]*Z+ +g[I>>2]*$;X=+g[J>>2]*Y+ +g[K>>2]*Z+ +g[L>>2]*$;g[q+(ah<<4)>>2]=+g[D>>2]*Y+ +g[E>>2]*Z+ +g[F>>2]*$;g[q+(ah<<4)+4>>2]=ab;g[q+(ah<<4)+8>>2]=X;g[q+(ah<<4)+12>>2]=0.0;X=W*+g[P>>2]+aa*+g[Q>>2]+_*+g[R>>2];ab=W*+g[S>>2]+aa*+g[T>>2]+_*+g[U>>2];g[r+(ah<<4)>>2]=+g[M>>2]*W+ +g[N>>2]*aa+ +g[O>>2]*_;g[r+(ah<<4)+4>>2]=X;g[r+(ah<<4)+8>>2]=ab;g[r+(ah<<4)+12>>2]=0.0;ac=s+1|0;if((ac|0)<(V|0)){ah=ah+1|0;s=ac}else{break}}am=V+al|0}else{am=al}dI[c[(c[e>>2]|0)+68>>2]&1023](e,B,z,am);dI[c[(c[f>>2]|0)+68>>2]&1023](f,C,A,am);if((am|0)>0){A=h+48|0;C=h+52|0;z=h+56|0;B=j+48|0;al=j+52|0;V=j+56|0;if(y){ab=0.0;X=0.0;_=0.0;y=0;aa=999999984306749400.0;while(1){ayk();W=+g[40432+(y<<4)>>2];$=+g[40436+(y<<4)>>2];Z=+g[40444+(y<<4)>>2];do{if(W*W+$*$+0.0>.01){Y=+g[b+(y<<4)>>2];an=+g[b+(y<<4)+4>>2];ao=+g[b+(y<<4)+8>>2];ap=+g[p+(y<<4)>>2];aq=+g[p+(y<<4)+4>>2];ar=+g[p+(y<<4)+8>>2];as=W*(+g[B>>2]+(ap*+g[M>>2]+aq*+g[P>>2]+ar*+g[S>>2])-(+g[A>>2]+(Y*+g[D>>2]+an*+g[G>>2]+ao*+g[J>>2])))+$*(+g[al>>2]+(ap*+g[N>>2]+aq*+g[Q>>2]+ar*+g[T>>2])-(+g[C>>2]+(Y*+g[E>>2]+an*+g[H>>2]+ao*+g[K>>2])))+0.0;if(as>=aa){at=aa;au=_;av=X;aw=ab;break}at=as;au=W;av=$;aw=Z}else{at=aa;au=_;av=X;aw=ab}}while(0);s=y+1|0;if((s|0)<(am|0)){ab=aw;X=av;_=au;y=s;aa=at}else{ax=aw;ay=0.0;az=av;aA=au;aB=at;break}}}else{at=0.0;au=0.0;av=0.0;aw=0.0;y=0;aa=999999984306749400.0;while(1){ayk();_=+g[40432+(y<<4)>>2];X=+g[40436+(y<<4)>>2];ab=+g[40440+(y<<4)>>2];Z=+g[40444+(y<<4)>>2];do{if(_*_+X*X+ab*ab>.01){$=+g[b+(y<<4)>>2];W=+g[b+(y<<4)+4>>2];as=+g[b+(y<<4)+8>>2];ao=+g[p+(y<<4)>>2];an=+g[p+(y<<4)+4>>2];Y=+g[p+(y<<4)+8>>2];ar=_*(+g[B>>2]+(ao*+g[M>>2]+an*+g[P>>2]+Y*+g[S>>2])-(+g[A>>2]+($*+g[D>>2]+W*+g[G>>2]+as*+g[J>>2])))+X*(+g[al>>2]+(ao*+g[N>>2]+an*+g[Q>>2]+Y*+g[T>>2])-(+g[C>>2]+($*+g[E>>2]+W*+g[H>>2]+as*+g[K>>2])))+ab*(+g[V>>2]+(ao*+g[O>>2]+an*+g[R>>2]+Y*+g[U>>2])-(+g[z>>2]+($*+g[F>>2]+W*+g[I>>2]+as*+g[L>>2])));if(ar>=aa){aC=aa;aD=aw;aE=av;aF=au;aG=at;break}aC=ar;aD=_;aE=X;aF=ab;aG=Z}else{aC=aa;aD=aw;aE=av;aF=au;aG=at}}while(0);s=y+1|0;if((s|0)<(am|0)){at=aG;au=aF;av=aE;aw=aD;y=s;aa=aC}else{ax=aG;ay=aF;az=aE;aA=aD;aB=aC;break}}}}else{ax=0.0;ay=0.0;az=0.0;aA=0.0;aB=999999984306749400.0}switch(c[x>>2]|0){case 8:case 0:case 1:case 13:case 10:case 5:case 4:{break};default:{+dh[c[(c[e>>2]|0)+44>>2]&1023](e)}}y=f+4|0;switch(c[y>>2]|0){case 8:case 0:case 1:case 13:case 10:case 5:case 4:{break};default:{+dh[c[(c[f>>2]|0)+44>>2]&1023](f)}}if(aB<0.0){aH=0;i=o;return aH|0}switch(c[x>>2]|0){case 8:{aI=+g[e+28>>2]*+g[e+12>>2];break};case 0:{aI=+g[e+44>>2];break};case 1:{aI=+g[e+44>>2];break};case 13:{aI=+g[e+44>>2];break};case 10:{aI=+g[e+44>>2];break};case 5:case 4:{aI=+g[e+44>>2];break};default:{aI=+dh[c[(c[e>>2]|0)+44>>2]&1023](e)}}am=c[y>>2]|0;switch(am|0){case 5:case 4:{aJ=+g[f+44>>2];aK=am;break};case 13:{aJ=+g[f+44>>2];aK=13;break};case 1:{aJ=+g[f+44>>2];aK=1;break};case 8:{aJ=+g[f+28>>2]*+g[f+12>>2];aK=8;break};case 0:{aJ=+g[f+44>>2];aK=0;break};case 10:{aJ=+g[f+44>>2];aK=10;break};default:{aJ=+dh[c[(c[f>>2]|0)+44>>2]&1023](f);aK=c[y>>2]|0}}aC=aB+(aI+aJ+.5);c[u>>2]=23568;y=u+4|0;g[y>>2]=0.0;am=u+8|0;g[am>>2]=1.0;L=u+12|0;g[L>>2]=0.0;I=u+16|0;g[I>>2]=0.0;c[u+20>>2]=0;c[u+24>>2]=d;c[u+28>>2]=e;c[u+32>>2]=f;c[u+36>>2]=c[x>>2];c[u+40>>2]=aK;g[u+44>>2]=+dh[c[(c[e>>2]|0)+44>>2]&1023](e);g[u+48>>2]=+dh[c[(c[f>>2]|0)+44>>2]&1023](f);a[u+52|0]=0;c[u+60>>2]=-1;c[u+72>>2]=1;c[v+132>>2]=0;aJ=+g[h+48>>2]+aA*aC;aI=+g[h+52>>2]+az*aC;aB=+g[h+56>>2]+ay*aC;f=h;e=v;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=h+16|0;e=h+32|0;h=v+16|0;c[h>>2]=c[f>>2];c[h+4>>2]=c[f+4>>2];c[h+8>>2]=c[f+8>>2];c[h+12>>2]=c[f+12>>2];f=v+32|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];g[v+48>>2]=aJ;g[v+52>>2]=aI;g[v+56>>2]=aB;g[v+60>>2]=0.0;e=v+64|0;f=j;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=v+80|0;e=j+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];e=v+96|0;f=j+32|0;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=v+112|0;e=j+48|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];g[v+128>>2]=999999984306749400.0;c[w>>2]=18488;e=w+40|0;a[e]=0;g[y>>2]=-0.0-aA;g[am>>2]=-0.0-az;g[L>>2]=-0.0-ay;g[I>>2]=0.0;axX(u,v,w|0,n,0);aB=aC- +g[w+36>>2];n=a[e]&1;if(n<<24>>24!=0){e=w+20|0;aC=+g[w+24>>2]-az*aB;aI=+g[w+28>>2]-ay*aB;g[l>>2]=+g[e>>2]-aA*aB;g[l+4>>2]=aC;g[l+8>>2]=aI;g[l+12>>2]=0.0;l=m;m=e;c[l>>2]=c[m>>2];c[l+4>>2]=c[m+4>>2];c[l+8>>2]=c[m+8>>2];c[l+12>>2]=c[m+12>>2];g[k>>2]=aA;g[k+4>>2]=az;g[k+8>>2]=ay;g[k+12>>2]=ax}aH=n<<24>>24!=0;i=o;return aH|0}function ayd(a){a=a|0;return}function aye(a){a=a|0;return}function ayf(a,b,c){a=a|0;b=b|0;c=c|0;return}function ayg(a,b,c){a=a|0;b=b|0;c=c|0;return}function ayh(a){a=a|0;return 17248|0}function ayi(a){a=a|0;return 64}function ayj(a,b,c){a=a|0;b=+b;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0;d=(+g[a+68>>2]- +g[a+52>>2])*.5*2.0;e=(+g[a+72>>2]- +g[a+56>>2])*.5*2.0;f=(+g[a+76>>2]- +g[a+60>>2])*.5*2.0;h=b/12.0;b=e*e;e=f*f;f=d*d;g[c>>2]=h*(b+e);g[c+4>>2]=h*(f+e);g[c+8>>2]=h*(f+b);g[c+12>>2]=0.0;return}function ayk(){if((a[43e3]|0)!=0){return}if((b1(43e3)|0)==0){return}g[10108]=0.0;g[10109]=-0.0;g[10110]=-1.0;g[10111]=0.0;g[10112]=.7236080169677734;g[10113]=-.5257250070571899;g[10114]=-.44721901416778564;g[10115]=0.0;g[10116]=-.2763879895210266;g[10117]=-.8506489992141724;g[10118]=-.44721901416778564;g[10119]=0.0;g[10120]=-.8944259881973267;g[10121]=-0.0;g[10122]=-.4472160041332245;g[10123]=0.0;g[10124]=-.2763879895210266;g[10125]=.8506489992141724;g[10126]=-.44721999764442444;g[10127]=0.0;g[10128]=.7236080169677734;g[10129]=.5257250070571899;g[10130]=-.44721901416778564;g[10131]=0.0;g[10132]=.2763879895210266;g[10133]=-.8506489992141724;g[10134]=.44721999764442444;g[10135]=0.0;g[10136]=-.7236080169677734;g[10137]=-.5257250070571899;g[10138]=.44721901416778564;g[10139]=0.0;g[10140]=-.7236080169677734;g[10141]=.5257250070571899;g[10142]=.44721901416778564;g[10143]=0.0;g[10144]=.2763879895210266;g[10145]=.8506489992141724;g[10146]=.44721901416778564;g[10147]=0.0;g[10148]=.8944259881973267;g[10149]=0.0;g[10150]=.4472160041332245;g[10151]=0.0;g[10152]=-0.0;g[10153]=0.0;g[10154]=1.0;g[10155]=0.0;g[10156]=.4253230094909668;g[10157]=-.3090110123157501;g[10158]=-.8506540060043335;g[10159]=0.0;g[10160]=-.16245600581169128;g[10161]=-.49999499320983887;g[10162]=-.8506540060043335;g[10163]=0.0;g[10164]=.2628690004348755;g[10165]=-.8090119957923889;g[10166]=-.525738000869751;g[10167]=0.0;g[10168]=.4253230094909668;g[10169]=.3090110123157501;g[10170]=-.8506540060043335;g[10171]=0.0;g[10172]=.8506479859352112;g[10173]=-0.0;g[10174]=-.5257359743118286;g[10175]=0.0;g[10176]=-.5257300138473511;g[10177]=-0.0;g[10178]=-.8506519794464111;g[10179]=0.0;g[10180]=-.6881899833679199;g[10181]=-.49999698996543884;g[10182]=-.5257359743118286;g[10183]=0.0;g[10184]=-.16245600581169128;g[10185]=.49999499320983887;g[10186]=-.8506540060043335;g[10187]=0.0;g[10188]=-.6881899833679199;g[10189]=.49999698996543884;g[10190]=-.5257359743118286;g[10191]=0.0;g[10192]=.2628690004348755;g[10193]=.8090119957923889;g[10194]=-.525738000869751;g[10195]=0.0;g[10196]=.9510579705238342;g[10197]=.3090130090713501;g[10198]=0.0;g[10199]=0.0;g[10200]=.9510579705238342;g[10201]=-.3090130090713501;g[10202]=0.0;g[10203]=0.0;g[10204]=.5877860188484192;g[10205]=-.80901700258255;g[10206]=0.0;g[10207]=0.0;g[10208]=0.0;g[10209]=-1.0;g[10210]=0.0;g[10211]=0.0;g[10212]=-.5877860188484192;g[10213]=-.80901700258255;g[10214]=0.0;g[10215]=0.0;g[10216]=-.9510579705238342;g[10217]=-.3090130090713501;g[10218]=-0.0;g[10219]=0.0;g[10220]=-.9510579705238342;g[10221]=.3090130090713501;g[10222]=-0.0;g[10223]=0.0;g[10224]=-.5877860188484192;g[10225]=.80901700258255;g[10226]=-0.0;g[10227]=0.0;g[10228]=-0.0;g[10229]=1.0;g[10230]=-0.0;g[10231]=0.0;g[10232]=.5877860188484192;g[10233]=.80901700258255;g[10234]=-0.0;g[10235]=0.0;g[10236]=.6881899833679199;g[10237]=-.49999698996543884;g[10238]=.5257359743118286;g[10239]=0.0;g[10240]=-.2628690004348755;g[10241]=-.8090119957923889;g[10242]=.525738000869751;g[10243]=0.0;g[10244]=-.8506479859352112;g[10245]=0.0;g[10246]=.5257359743118286;g[10247]=0.0;g[10248]=-.2628690004348755;g[10249]=.8090119957923889;g[10250]=.525738000869751;g[10251]=0.0;g[10252]=.6881899833679199;g[10253]=.49999698996543884;g[10254]=.5257359743118286;g[10255]=0.0;g[10256]=.5257300138473511;g[10257]=0.0;g[10258]=.8506519794464111;g[10259]=0.0;g[10260]=.16245600581169128;g[10261]=-.49999499320983887;g[10262]=.8506540060043335;g[10263]=0.0;g[10264]=-.4253230094909668;g[10265]=-.3090110123157501;g[10266]=.8506540060043335;g[10267]=0.0;g[10268]=-.4253230094909668;g[10269]=.3090110123157501;g[10270]=.8506540060043335;g[10271]=0.0;g[10272]=.16245600581169128;g[10273]=.49999499320983887;g[10274]=.8506540060043335;g[10275]=0.0;return}function ayl(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aym(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ayn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,i=0;h=b+4|0;i=d;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];i=b+20|0;h=e;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];g[b+36>>2]=f;a[b+40|0]=1;return}function ayo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0,z=0;e=a|0;f=a+4|0;h=a+8|0;i=a+12|0;aDD(a|0,0,16);j=+g[d>>2];k=+g[d+4>>2];l=+g[d+8>>2];m=j*j+k*k+l*l;if(m<1.4210854715202004e-14){n=1.0;o=0.0;p=0.0}else{q=1.0/+Q(+m);n=j*q;o=k*q;p=l*q}d=c[b+92>>2]|0;if((d|0)<=0){return}a=b|0;r=b+12|0;s=b+16|0;t=b+20|0;u=b;q=-999999984306749400.0;v=c[b+100>>2]|0;w=c[b+120>>2]|0;b=0;while(1){l=+g[w>>2];k=+g[v>>2]+n*+g[r>>2]*l;j=o*+g[s>>2]*l+ +g[v+4>>2];m=l*p*+g[t>>2]+ +g[v+8>>2];l=+dh[c[(c[u>>2]|0)+44>>2]&1023](a);x=k-n*l;k=j-o*l;j=m-p*l;l=p*j+(n*x+o*k);if(l>q){g[e>>2]=x;g[f>>2]=k;g[h>>2]=j;g[i>>2]=0.0;y=l}else{y=q}z=b+1|0;if((z|0)<(d|0)){q=y;v=v+16|0;w=w+4|0;b=z}else{break}}return}function ayp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0;if((e|0)<=0){return}f=a+100|0;h=a+120|0;i=a+92|0;j=a|0;k=a+12|0;l=a+16|0;m=a+20|0;n=a;a=0;do{o=c[i>>2]|0;L4705:do{if((o|0)>0){p=b+(a<<4)|0;q=b+(a<<4)+4|0;r=b+(a<<4)+8|0;s=d+(a<<4)|0;t=d+(a<<4)+4|0;u=d+(a<<4)+8|0;v=d+(a<<4)+12|0;w=-999999984306749400.0;x=c[f>>2]|0;y=c[h>>2]|0;z=1;while(1){A=+g[y>>2];B=+g[x>>2]+ +g[p>>2]*+g[k>>2]*A;C=+g[q>>2]*+g[l>>2]*A+ +g[x+4>>2];D=A*+g[r>>2]*+g[m>>2]+ +g[x+8>>2];A=+dh[c[(c[n>>2]|0)+44>>2]&1023](j);E=+g[p>>2];F=+g[q>>2];G=+g[r>>2];H=B-A*E;B=C-A*F;C=D-A*G;A=E*H+F*B+G*C;if(A>w){g[s>>2]=H;g[t>>2]=B;g[u>>2]=C;g[v>>2]=0.0;I=A}else{I=w}if((z|0)>=(o|0)){break L4705}w=I;x=x+16|0;y=y+4|0;z=z+1|0}}}while(0);a=a+1|0;}while((a|0)<(e|0));return}function ayq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,i=0,j=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+28>>2]=+g[a+28>>2];g[b+32>>2]=+g[a+32>>2];g[b+36>>2]=+g[a+36>>2];g[b+40>>2]=+g[a+40>>2];g[b+12>>2]=+g[a+12>>2];g[b+16>>2]=+g[a+16>>2];g[b+20>>2]=+g[a+20>>2];g[b+24>>2]=+g[a+24>>2];g[b+44>>2]=+g[a+44>>2];f=c[a+92>>2]|0;if((f|0)==0){c[b+52>>2]=0;c[b+56>>2]=0;return 17728}h=a+100|0;c[b+52>>2]=dj[c[(c[e>>2]|0)+28>>2]&511](d,c[h>>2]|0)|0;c[b+56>>2]=f;b=cS[c[(c[d>>2]|0)+16>>2]&511](d,20,f)|0;if((f|0)>0){e=a+120|0;a=c[b+8>>2]|0;i=0;while(1){j=c[h>>2]|0;g[a>>2]=+g[j+(i<<4)>>2];g[a+4>>2]=+g[j+(i<<4)+4>>2];g[a+8>>2]=+g[j+(i<<4)+8>>2];g[a+12>>2]=+g[j+(i<<4)+12>>2];g[a+16>>2]=+g[(c[e>>2]|0)+(i<<2)>>2];j=i+1|0;if((j|0)<(f|0)){a=a+20|0;i=j}else{break}}}co[c[(c[d>>2]|0)+20>>2]&255](d,b,16504,1497453121,c[h>>2]|0);return 17728}function ayr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=23192;d=b+112|0;e=b+120|0;f=c[e>>2]|0;g=b+124|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+116>>2]=0;d=b+92|0;e=b+100|0;g=c[e>>2]|0;f=b+104|0;if((g|0)==0){a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+96|0;c[h>>2]=0;return}if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[e>>2]=0;a[f]=1;c[e>>2]=0;c[d>>2]=0;h=b+96|0;c[h>>2]=0;return}function ays(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=23192;d=b+112|0;e=b+120|0;f=c[e>>2]|0;g=b+124|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+116>>2]=0;d=b+92|0;e=b+100|0;g=c[e>>2]|0;f=b+104|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+96>>2]=0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-128+124>>2]|0);return}function ayt(a){a=a|0;azm(a|0);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-172+168>>2]|0);return}function ayu(a){a=a|0;azm(a|0);return}function ayv(d,e,f,h,j){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;k=i;i=i+168|0;l=k|0;m=k+32|0;n=k+40|0;o=k+56|0;p=k+72|0;q=k+136|0;r=d|0;s=d+60|0;a[s]=f&1;if(f){t=+g[h>>2]+-1.0;u=+g[h+4>>2]+-1.0;v=+g[h+8>>2]+-1.0;g[d+4>>2]=t;g[d+8>>2]=u;g[d+12>>2]=v;g[d+16>>2]=0.0;w=+g[j>>2]+1.0;x=+g[j+4>>2]+1.0;y=+g[j+8>>2]+1.0;g[d+20>>2]=w;g[d+24>>2]=x;g[d+28>>2]=y;g[d+32>>2]=0.0;g[d+36>>2]=65533.0/(w-t);g[d+40>>2]=65533.0/(x-u);g[d+44>>2]=65533.0/(y-v);g[d+48>>2]=0.0;a[s]=1;c[l>>2]=19032;c[l+4>>2]=d+104;c[l+8>>2]=r;dI[c[(c[e>>2]|0)+8>>2]&1023](e,l|0,d+4|0,d+20|0);l=c[d+108>>2]|0;j=l<<1;h=k+16|0;aDD(h|0,0,16);f=d+128|0;z=c[f>>2]|0;if((z|0)<(j|0)){A=d+132|0;if((c[A>>2]|0)<(j|0)){if((j|0)==0){B=0;C=z}else{c[9806]=(c[9806]|0)+1;D=aDx((l<<5|4)+15|0)|0;if((D|0)==0){E=0}else{F=-(D+4|0)&15;c[D+F>>2]=D;E=D+(F+4)|0}B=E;C=c[f>>2]|0}E=d+136|0;if((C|0)>0){F=0;do{D=B+(F<<4)|0;G=(c[E>>2]|0)+(F<<4)|0;c[D>>2]=c[G>>2];c[D+4>>2]=c[G+4>>2];c[D+8>>2]=c[G+8>>2];c[D+12>>2]=c[G+12>>2];F=F+1|0;}while((F|0)<(C|0))}C=c[E>>2]|0;F=d+140|0;if((C|0)!=0){if((a[F]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[C-16+12>>2]|0)}c[E>>2]=0}a[F]=1;c[E>>2]=B;c[A>>2]=j;H=E}else{H=d+136|0}E=z;do{z=(c[H>>2]|0)+(E<<4)|0;c[z>>2]=c[h>>2];c[z+4>>2]=c[h+4>>2];c[z+8>>2]=c[h+8>>2];c[z+12>>2]=c[h+12>>2];E=E+1|0;}while((E|0)<(j|0))}c[f>>2]=j;I=l}else{c[m>>2]=19064;c[m+4>>2]=d+64;g[n>>2]=-999999984306749400.0;g[n+4>>2]=-999999984306749400.0;g[n+8>>2]=-999999984306749400.0;g[n+12>>2]=0.0;g[o>>2]=999999984306749400.0;g[o+4>>2]=999999984306749400.0;g[o+8>>2]=999999984306749400.0;g[o+12>>2]=0.0;dI[c[(c[e>>2]|0)+8>>2]&1023](e,m|0,n,o);o=c[d+68>>2]|0;n=p;aDD(n|0,0,64);p=o<<1;m=d+88|0;e=c[m>>2]|0;if((e|0)<(p|0)){l=d+92|0;if((c[l>>2]|0)<(p|0)){if((p|0)==0){J=0;K=e}else{c[9806]=(c[9806]|0)+1;j=aDx((o<<7|4)+15|0)|0;if((j|0)==0){L=0}else{f=-(j+4|0)&15;c[j+f>>2]=j;L=j+(f+4)|0}J=L;K=c[m>>2]|0}L=d+96|0;if((K|0)>0){f=0;do{j=J+(f<<6)|0;E=(c[L>>2]|0)+(f<<6)|0;aDC(j|0,E|0,64)|0;f=f+1|0;}while((f|0)<(K|0))}K=c[L>>2]|0;f=d+100|0;if((K|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[K-64+60>>2]|0)}c[L>>2]=0}a[f]=1;c[L>>2]=J;c[l>>2]=p;M=L}else{M=d+96|0}L=e;do{e=(c[M>>2]|0)+(L<<6)|0;aDC(e|0,n|0,64)|0;L=L+1|0;}while((L|0)<(p|0))}c[m>>2]=p;I=o}c[d+56>>2]=0;azk(r,0,I);I=d+152|0;do{if((a[s]&1)!=0){if((c[I>>2]|0)!=0){break}r=d+156|0;if((c[r>>2]|0)==0){c[9806]=(c[9806]|0)+1;o=aDx(51)|0;if((o|0)==0){N=0}else{p=-(o+4|0)&15;c[o+p>>2]=o;N=o+(p+4)|0}p=c[I>>2]|0;o=d+160|0;if((p|0)>0){m=0;do{L=N+(m<<5)|0;n=(c[o>>2]|0)+(m<<5)|0;aDC(L|0,n|0,32)|0;m=m+1|0;}while((m|0)<(p|0))}p=c[o>>2]|0;m=d+164|0;if((p|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-32+28>>2]|0)}c[o>>2]=0}a[m]=1;c[o>>2]=N;c[r>>2]=1;O=(c[I>>2]|0)+1|0;P=N}else{O=1;P=c[d+160>>2]|0}c[I>>2]=O;m=d+160|0;p=P;n=q;aDC(p|0,n|0,32)|0;n=c[m>>2]|0;m=d+136|0;p=c[m>>2]|0;b[n>>1]=b[p>>1]|0;b[n+2>>1]=b[p+2>>1]|0;b[n+4>>1]=b[p+4>>1]|0;b[n+6>>1]=b[p+6>>1]|0;b[n+8>>1]=b[p+8>>1]|0;b[n+10>>1]=b[p+10>>1]|0;c[n+12>>2]=0;p=c[(c[m>>2]|0)+12>>2]|0;c[n+16>>2]=(p|0)>-1?1:-p|0}}while(0);c[d+168>>2]=c[I>>2];I=d+108|0;q=d+116|0;P=c[q>>2]|0;O=d+120|0;if((P|0)!=0){if((a[O]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[P-16+12>>2]|0)}c[q>>2]=0}a[O]=1;c[q>>2]=0;c[I>>2]=0;c[d+112>>2]=0;I=d+68|0;q=d+76|0;O=c[q>>2]|0;P=d+80|0;if((O|0)==0){a[P]=1;c[q>>2]=0;c[I>>2]=0;Q=d+72|0;c[Q>>2]=0;i=k;return}if((a[P]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[O-64+60>>2]|0)}c[q>>2]=0;a[P]=1;c[q>>2]=0;c[I>>2]=0;Q=d+72|0;c[Q>>2]=0;i=k;return}function ayw(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0;i=d+60|0;if((a[i]&1)==0){return}j=+g[f>>2]+-1.0;k=+g[f+4>>2]+-1.0;l=+g[f+8>>2]+-1.0;g[d+4>>2]=j;g[d+8>>2]=k;g[d+12>>2]=l;g[d+16>>2]=0.0;m=+g[h>>2]+1.0;n=+g[h+4>>2]+1.0;o=+g[h+8>>2]+1.0;g[d+20>>2]=m;g[d+24>>2]=n;g[d+28>>2]=o;g[d+32>>2]=0.0;g[d+36>>2]=65533.0/(m-j);g[d+40>>2]=65533.0/(n-k);g[d+44>>2]=65533.0/(o-l);g[d+48>>2]=0.0;a[i]=1;ayA(d,e,0,c[d+56>>2]|0);e=d+152|0;if((c[e>>2]|0)<=0){return}i=d+160|0;h=d+136|0;d=0;do{f=c[i>>2]|0;p=c[f+(d<<5)+12>>2]|0;q=c[h>>2]|0;b[f+(d<<5)>>1]=b[q+(p<<4)>>1]|0;b[f+(d<<5)+2>>1]=b[q+(p<<4)+2>>1]|0;b[f+(d<<5)+4>>1]=b[q+(p<<4)+4>>1]|0;b[f+(d<<5)+6>>1]=b[q+(p<<4)+6>>1]|0;b[f+(d<<5)+8>>1]=b[q+(p<<4)+8>>1]|0;b[f+(d<<5)+10>>1]=b[q+(p<<4)+10>>1]|0;d=d+1|0;}while((d|0)<(c[e>>2]|0));return}function ayx(a){a=a|0;return 84}function ayy(a){a=a|0;return}function ayz(a){a=a|0;return}function ayA(a,d,f,j){a=a|0;d=d|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ab=0,ac=0,ad=0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0;k=i;i=i+112|0;l=k|0;m=k+8|0;n=k+16|0;o=k+24|0;p=k+32|0;q=k+40|0;r=k+48|0;s=k+56|0;t=k+64|0;c[l>>2]=0;c[m>>2]=0;c[n>>2]=2;c[o>>2]=0;c[p>>2]=0;c[q>>2]=0;c[r>>2]=0;c[s>>2]=2;u=j-1|0;if((u|0)<(f|0)){i=k;return}v=a+136|0;w=d+4|0;x=d+8|0;y=d+12|0;z=t|0;A=t+4|0;B=t+8|0;C=t+16|0;D=t+20|0;E=t+24|0;F=t+32|0;G=t+36|0;H=t+40|0;I=a+4|0;J=a+8|0;K=a+12|0;L=a+36|0;M=a+40|0;N=a+44|0;a=d;O=d;P=j;j=-1;Q=u;L4875:while(1){u=P;R=Q;while(1){S=c[v>>2]|0;T=c[S+(R<<4)+12>>2]|0;if((T|0)>-1){break}U=c[S+(u<<4)+12>>2]|0;V=u+((U|0)>-1?1:-U|0)|0;U=b[S+(u<<4)>>1]|0;W=S+(R<<4)|0;b[W>>1]=U;X=b[S+(V<<4)>>1]|0;if((U&65535)>(X&65535)){b[W>>1]=X}X=b[S+(u<<4)+6>>1]|0;W=S+(R<<4)+6|0;b[W>>1]=X;U=b[S+(V<<4)+6>>1]|0;if((X&65535)<(U&65535)){b[W>>1]=U}U=b[S+(u<<4)+2>>1]|0;W=S+(R<<4)+2|0;b[W>>1]=U;X=b[S+(V<<4)+2>>1]|0;if((U&65535)>(X&65535)){b[W>>1]=X}X=b[S+(u<<4)+8>>1]|0;W=S+(R<<4)+8|0;b[W>>1]=X;U=b[S+(V<<4)+8>>1]|0;if((X&65535)<(U&65535)){b[W>>1]=U}U=b[S+(u<<4)+4>>1]|0;W=S+(R<<4)+4|0;b[W>>1]=U;X=b[S+(V<<4)+4>>1]|0;if((U&65535)>(X&65535)){b[W>>1]=X}X=b[S+(u<<4)+10>>1]|0;W=S+(R<<4)+10|0;b[W>>1]=X;U=b[S+(V<<4)+10>>1]|0;if((X&65535)<(U&65535)){b[W>>1]=U}U=R-1|0;if((U|0)<(f|0)){Y=j;break L4875}else{u=R;R=U}}u=T>>21;U=T&2097151;if((u|0)==(j|0)){Z=j}else{if((j|0)>-1){cv[c[(c[a>>2]|0)+24>>2]&2047](d,j)}di[c[(c[O>>2]|0)+16>>2]&63](d,l,m,n,o,p,q,r,s,u);Z=u}u=c[p>>2]|0;W=u+(aa(c[q>>2]|0,U)|0)|0;U=W;u=W;W=(c[s>>2]|0)==3;X=(c[n>>2]|0)==0;V=c[l>>2]|0;_=c[o>>2]|0;$=2;while(1){if(W){ab=e[u+($<<1)>>1]|0}else{ab=c[U+($<<2)>>2]|0}ac=aa(_,ab)|0;ad=V+ac|0;if(X){ae=+g[V+(ac+4)>>2]*+g[x>>2];af=+g[V+(ac+8)>>2]*+g[y>>2];g[t+($<<4)>>2]=+g[ad>>2]*+g[w>>2];g[t+($<<4)+4>>2]=ae;g[t+($<<4)+8>>2]=af;g[t+($<<4)+12>>2]=0.0}else{af=+h[V+(ac+8)>>3]*+g[x>>2];ae=+h[V+(ac+16)>>3]*+g[y>>2];g[t+($<<4)>>2]=+h[ad>>3]*+g[w>>2];g[t+($<<4)+4>>2]=af;g[t+($<<4)+8>>2]=ae;g[t+($<<4)+12>>2]=0.0}if(($|0)>0){$=$-1|0}else{break}}ae=+g[z>>2];af=ae<999999984306749400.0?ae:999999984306749400.0;ag=+g[A>>2];ah=ag<999999984306749400.0?ag:999999984306749400.0;ai=+g[B>>2];aj=ai<999999984306749400.0?ai:999999984306749400.0;ak=ae>-999999984306749400.0?ae:-999999984306749400.0;ae=ag>-999999984306749400.0?ag:-999999984306749400.0;ag=ai>-999999984306749400.0?ai:-999999984306749400.0;ai=+g[C>>2];al=ai>2];am=af>2];an=ah>2];ah=+g[G>>2];af=+g[H>>2];ai=((ah>2])*+g[M>>2];am=((af>2])*+g[N>>2];b[S+(R<<4)>>1]=~~(((ag>2])*+g[L>>2])&-2;b[S+(R<<4)+2>>1]=~~ai&-2;b[S+(R<<4)+4>>1]=~~am&-2;am=((ak>2])*+g[M>>2];ak=((ae>2])*+g[N>>2];b[S+(R<<4)+6>>1]=~~(((aj>2])*+g[L>>2]+1.0)|1;b[S+(R<<4)+8>>1]=~~(am+1.0)|1;b[S+(R<<4)+10>>1]=~~(ak+1.0)|1;$=R-1|0;if(($|0)<(f|0)){Y=Z;break}else{P=R;j=Z;Q=$}}if((Y|0)<=-1){i=k;return}cv[c[(c[a>>2]|0)+24>>2]&2047](d,Y);i=k;return}function ayB(a,d,f,h,i,j,k,l){a=a|0;d=d|0;f=+f;h=+h;i=+i;j=+j;k=+k;l=+l;var m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;m=+g[a+4>>2];n=+g[a+8>>2];o=+g[a+12>>2];p=+g[a+36>>2];q=+g[a+40>>2];r=+g[a+44>>2];s=~~((f-m)*p)&-2;t=~~((h-n)*q)&-2;u=~~((i-o)*r)&-2;v=~~(p*(j-m)+1.0)|1;w=~~(q*(k-n)+1.0)|1;x=~~(r*(l-o)+1.0)|1;y=a+152|0;z=c[y>>2]|0;if((z|0)<=0){return}A=a+160|0;B=a+136|0;C=0;D=z;while(1){z=c[A>>2]|0;E=z+(C<<5)|0;F=z+(C<<5)+6|0;G=z+(C<<5)+10|0;H=z+(C<<5)+4|0;I=z+(C<<5)+8|0;J=z+(C<<5)+2|0;if((-((s&65535)<=(e[F>>1]|0)&(v&65535)>=(e[E>>1]|0)&(u&65535)<=(e[G>>1]|0)&(x&65535)>=(e[H>>1]|0)&(t&65535)<=(e[I>>1]|0)&(w&65535)>=(e[J>>1]|0)&1)&1|0)==0){K=D}else{L=z+(C<<5)+12|0;M=c[L>>2]|0;ayA(a,d,M,(c[z+(C<<5)+16>>2]|0)+M|0);M=c[L>>2]|0;L=c[B>>2]|0;b[E>>1]=b[L+(M<<4)>>1]|0;b[J>>1]=b[L+(M<<4)+2>>1]|0;b[H>>1]=b[L+(M<<4)+4>>1]|0;b[F>>1]=b[L+(M<<4)+6>>1]|0;b[I>>1]=b[L+(M<<4)+8>>1]|0;b[G>>1]=b[L+(M<<4)+10>>1]|0;K=c[y>>2]|0}M=C+1|0;if((M|0)<(K|0)){C=M;D=K}else{break}}return}function ayC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;azr(a|0,b,c,d)|0;return 1}function ayD(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ayE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;h=i;i=i+24|0;j=h|0;k=+g[d>>2];l=k<999999984306749400.0?k:999999984306749400.0;m=+g[d+4>>2];n=m<999999984306749400.0?m:999999984306749400.0;o=+g[d+8>>2];p=o<999999984306749400.0?o:999999984306749400.0;q=+g[d+12>>2];r=q<0.0?q:0.0;s=k>-999999984306749400.0?k:-999999984306749400.0;k=m>-999999984306749400.0?m:-999999984306749400.0;m=o>-999999984306749400.0?o:-999999984306749400.0;o=q>0.0?q:0.0;q=+g[d+16>>2];t=q>2];u=l>2];v=n>2];w=p>2];p=o>2];n=t>2];l=u>2];q=v>2]|0;b=d+4|0;x=c[b>>2]|0;y=d+8|0;do{if((x|0)==(c[y>>2]|0)){z=(x|0)==0?1:x<<1;if((x|0)>=(z|0)){A=x;break}if((z|0)==0){B=0;C=x}else{c[9806]=(c[9806]|0)+1;D=aDx((z<<6|4)+15|0)|0;if((D|0)==0){E=0}else{F=-(D+4|0)&15;c[D+F>>2]=D;E=D+(F+4)|0}B=E;C=c[b>>2]|0}F=d+12|0;if((C|0)>0){D=0;do{G=B+(D<<6)|0;H=(c[F>>2]|0)+(D<<6)|0;aDC(G|0,H|0,64)|0;D=D+1|0;}while((D|0)<(C|0))}D=c[F>>2]|0;H=d+16|0;if((D|0)!=0){if((a[H]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[D-64+60>>2]|0)}c[F>>2]=0}a[H]=1;c[F>>2]=B;c[y>>2]=z;A=c[b>>2]|0}else{A=x}}while(0);x=c[d+12>>2]|0;g[x+(A<<6)>>2]=p;g[x+(A<<6)+4>>2]=n;g[x+(A<<6)+8>>2]=l;g[x+(A<<6)+12>>2]=q;g[x+(A<<6)+16>>2]=w;g[x+(A<<6)+20>>2]=r;g[x+(A<<6)+24>>2]=s;g[x+(A<<6)+28>>2]=k;c[x+(A<<6)+32>>2]=-1;c[x+(A<<6)+36>>2]=e;c[x+(A<<6)+40>>2]=f;f=x+(A<<6)+44|0;A=j;c[f>>2]=c[A>>2];c[f+4>>2]=c[A+4>>2];c[f+8>>2]=c[A+8>>2];c[f+12>>2]=c[A+12>>2];c[f+16>>2]=c[A+16>>2];c[b>>2]=(c[b>>2]|0)+1;i=h;return}function ayF(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ayG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;c[9808]=(c[9808]|0)+1;e=(c[b+12>>2]|0)>(c[d+12>>2]|0);f=c[(e?d:b)+12>>2]|0;g=c[(e?b:d)+12>>2]|0;d=g<<16|f;b=d+~(d<<15)|0;d=(b>>10^b)*9|0;b=d>>6^d;d=b+~(b<<11)|0;b=(d>>16^d)&(c[a+12>>2]|0)-1;if((b|0)>=(c[a+36>>2]|0)){h=0;return h|0}d=c[(c[a+44>>2]|0)+(b<<2)>>2]|0;if((d|0)==-1){h=0;return h|0}b=c[a+16>>2]|0;e=a+64|0;a=d;while(1){if((c[(c[b+(a<<4)>>2]|0)+12>>2]|0)==(f|0)){if((c[(c[b+(a<<4)+4>>2]|0)+12>>2]|0)==(g|0)){break}}d=c[(c[e>>2]|0)+(a<<2)>>2]|0;if((d|0)==-1){h=0;i=4102;break}else{a=d}}if((i|0)==4102){return h|0}h=b+(a<<4)|0;return h|0}function ayH(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;i=+g[e>>2];j=i<999999984306749400.0?i:999999984306749400.0;k=+g[e+4>>2];l=k<999999984306749400.0?k:999999984306749400.0;m=+g[e+8>>2];n=m<999999984306749400.0?m:999999984306749400.0;o=i>-999999984306749400.0?i:-999999984306749400.0;i=k>-999999984306749400.0?k:-999999984306749400.0;k=m>-999999984306749400.0?m:-999999984306749400.0;m=+g[e+16>>2];p=m>2];q=j>2];r=l>2];l=k>2];j=p>2];m=q>2]|0;m=+g[e+4>>2];o=+g[e+8>>2];j=+g[e+12>>2];n=+g[e+36>>2];l=+g[e+40>>2];r=+g[e+44>>2];e=~~((t-m)*n)&-2;y=~~((v-o)*l)&-2;z=~~((x-j)*r)&-2;A=~~((s-m)*n+1.0)|1;B=~~((u-o)*l+1.0)|1;C=~~((w-j)*r+1.0)|1;D=f<<21|h;h=c[d+4>>2]|0;d=h+4|0;f=c[d>>2]|0;E=h+8|0;do{if((f|0)==(c[E>>2]|0)){F=(f|0)==0?1:f<<1;if((f|0)>=(F|0)){G=f;break}if((F|0)==0){H=0;I=f}else{c[9806]=(c[9806]|0)+1;J=aDx((F<<4|4)+15|0)|0;if((J|0)==0){K=0}else{L=-(J+4|0)&15;c[J+L>>2]=J;K=J+(L+4)|0}H=K;I=c[d>>2]|0}L=h+12|0;if((I|0)>0){J=0;do{M=H+(J<<4)|0;N=(c[L>>2]|0)+(J<<4)|0;c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];J=J+1|0;}while((J|0)<(I|0))}J=c[L>>2]|0;N=h+16|0;if((J|0)!=0){if((a[N]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[J-16+12>>2]|0)}c[L>>2]=0}a[N]=1;c[L>>2]=H;c[E>>2]=F;G=c[d>>2]|0}else{G=f}}while(0);f=c[h+12>>2]|0;b[f+(G<<4)>>1]=e;b[f+(G<<4)+2>>1]=y;b[f+(G<<4)+4>>1]=z;b[f+(G<<4)+6>>1]=A;b[f+(G<<4)+8>>1]=B;b[f+(G<<4)+10>>1]=C;c[f+(G<<4)+12>>2]=D;c[d>>2]=(c[d>>2]|0)+1;return}function ayI(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c[b>>2]=20208;d=b+20|0;a[d]=1;e=b+16|0;c[e>>2]=0;f=b+8|0;c[f>>2]=0;g=b+12|0;c[g>>2]=0;c[b+24>>2]=0;a[b+28|0]=0;a[b+48|0]=1;c[b+44>>2]=0;c[b+36>>2]=0;c[b+40>>2]=0;a[b+68|0]=1;c[b+64>>2]=0;c[b+56>>2]=0;c[b+60>>2]=0;c[b+72>>2]=0;c[9806]=(c[9806]|0)+1;h=aDx(51)|0;if((h|0)==0){i=0}else{j=-(h+4|0)&15;c[h+j>>2]=h;i=h+(j+4)|0}j=c[f>>2]|0;if((j|0)>0){f=0;do{h=c[e>>2]|0;c[i+(f<<4)>>2]=c[h+(f<<4)>>2];c[i+(f<<4)+4>>2]=c[h+(f<<4)+4>>2];c[i+(f<<4)+8>>2]=c[h+(f<<4)+8>>2];c[i+(f<<4)+12>>2]=c[h+(f<<4)+12>>2];f=f+1|0;}while((f|0)<(j|0))}j=c[e>>2]|0;if((j|0)==0){a[d]=1;c[e>>2]=i;c[g>>2]=2;ayJ(b);return}if((a[d]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-16+12>>2]|0)}c[e>>2]=0;a[d]=1;c[e>>2]=i;c[g>>2]=2;ayJ(b);return}function ayJ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=b+12|0;e=c[d>>2]|0;f=b+36|0;g=c[f>>2]|0;if((g|0)>=(e|0)){return}if((g|0)<=(e|0)){h=b+40|0;if((c[h>>2]|0)<(e|0)){if((e|0)==0){i=0;j=g}else{c[9806]=(c[9806]|0)+1;k=aDx((e<<2)+19|0)|0;if((k|0)==0){l=0}else{m=-(k+4|0)&15;c[k+m>>2]=k;l=k+(m+4)|0}i=l;j=c[f>>2]|0}l=b+44|0;if((j|0)>0){m=0;do{k=i+(m<<2)|0;if((k|0)!=0){c[k>>2]=c[(c[l>>2]|0)+(m<<2)>>2]}m=m+1|0;}while((m|0)<(j|0))}j=c[l>>2]|0;m=b+48|0;if((j|0)!=0){if((a[m]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-4>>2]|0)}c[l>>2]=0}a[m]=1;c[l>>2]=i;c[h>>2]=e;n=l}else{n=b+44|0}l=g;do{h=(c[n>>2]|0)+(l<<2)|0;if((h|0)!=0){c[h>>2]=0}l=l+1|0;}while((l|0)<(e|0))}c[f>>2]=e;f=b+56|0;l=c[f>>2]|0;if((l|0)<(e|0)){n=b+60|0;if((c[n>>2]|0)<(e|0)){if((e|0)==0){o=0;p=l}else{c[9806]=(c[9806]|0)+1;h=aDx((e<<2)+19|0)|0;if((h|0)==0){q=0}else{i=-(h+4|0)&15;c[h+i>>2]=h;q=h+(i+4)|0}o=q;p=c[f>>2]|0}q=b+64|0;if((p|0)>0){i=0;do{h=o+(i<<2)|0;if((h|0)!=0){c[h>>2]=c[(c[q>>2]|0)+(i<<2)>>2]}i=i+1|0;}while((i|0)<(p|0))}p=c[q>>2]|0;i=b+68|0;if((p|0)!=0){if((a[i]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[p-4>>2]|0)}c[q>>2]=0}a[i]=1;c[q>>2]=o;c[n>>2]=e;r=q}else{r=b+64|0}q=l;do{l=(c[r>>2]|0)+(q<<2)|0;if((l|0)!=0){c[l>>2]=0}q=q+1|0;}while((q|0)<(e|0))}c[f>>2]=e;if((e|0)>0){f=b+44|0;q=0;do{c[(c[f>>2]|0)+(q<<2)>>2]=-1;q=q+1|0;}while((q|0)<(e|0));q=b+64|0;f=0;do{c[(c[q>>2]|0)+(f<<2)>>2]=-1;f=f+1|0;}while((f|0)<(e|0))}if((g|0)<=0){return}e=b+16|0;f=b+44|0;q=b+64|0;b=0;do{r=c[e>>2]|0;l=c[(c[r+(b<<4)+4>>2]|0)+12>>2]<<16|c[(c[r+(b<<4)>>2]|0)+12>>2];r=l+~(l<<15)|0;l=(r>>10^r)*9|0;r=l>>6^l;l=r+~(r<<11)|0;r=(l>>16^l)&(c[d>>2]|0)-1;c[(c[q>>2]|0)+(b<<2)>>2]=c[(c[f>>2]|0)+(r<<2)>>2];c[(c[f>>2]|0)+(r<<2)>>2]=b;b=b+1|0;}while((b|0)<(g|0));return}function ayK(a){a=a|0;ayL(a);if((a|0)==0){return}aDB(a);return}function ayL(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=20208;d=b+56|0;e=b+64|0;f=c[e>>2]|0;g=b+68|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+60>>2]=0;d=b+36|0;e=b+44|0;g=c[e>>2]|0;f=b+48|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+40>>2]=0;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}function ayM(a,b,d){a=a|0;b=b|0;d=d|0;a=b+8|0;b=c[a>>2]|0;if((b|0)==0){return}ct[c[c[b>>2]>>2]&2047](b);cv[c[(c[d>>2]|0)+60>>2]&2047](d,c[a>>2]|0);c[a>>2]=0;return}function ayN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e|0;c[f>>2]=18592;c[f+4>>2]=b;c[f+8>>2]=a;c[f+12>>2]=d;dA[c[(c[a>>2]|0)+48>>2]&511](a,f|0,d);i=e;return}function ayO(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+8|0;f=e|0;c[f>>2]=18560;c[f+4>>2]=b;dA[c[(c[a>>2]|0)+48>>2]&511](a,f|0,d);i=e;return}function ayP(a){a=a|0;return 0}function ayQ(a){a=a|0;return}function ayR(a){a=a|0;return}function ayS(a){a=a|0;return c[a+16>>2]|0}function ayT(a){a=a|0;return c[a+16>>2]|0}function ayU(a){a=a|0;return a+4|0}function ayV(a){a=a|0;return c[a+8>>2]|0}function ayW(a,b){a=a|0;b=b|0;c[a+24>>2]=b;return}function ayX(a,b){a=a|0;b=b|0;c[a+72>>2]=b;return}function ayY(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if((c[b>>2]|0)==(d|0)){e=1;return e|0}e=(c[b+4>>2]|0)==(d|0);return e|0}function ayZ(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=b+4|0;e=c[d>>2]|0;f=b+8|0;if((e|0)!=(c[f>>2]|0)){g=e;h=g+1|0;c[d>>2]=h;i=b+12|0;j=c[i>>2]|0;k=j+(e<<4)|0;return k|0}l=(e|0)==0?1:e<<1;if((e|0)>=(l|0)){g=e;h=g+1|0;c[d>>2]=h;i=b+12|0;j=c[i>>2]|0;k=j+(e<<4)|0;return k|0}if((l|0)==0){m=0;n=e}else{c[9806]=(c[9806]|0)+1;o=aDx((l<<4|4)+15|0)|0;if((o|0)==0){p=0}else{q=-(o+4|0)&15;c[o+q>>2]=o;p=o+(q+4)|0}m=p;n=c[d>>2]|0}p=b+12|0;if((n|0)>0){q=0;do{o=c[p>>2]|0;c[m+(q<<4)>>2]=c[o+(q<<4)>>2];c[m+(q<<4)+4>>2]=c[o+(q<<4)+4>>2];c[m+(q<<4)+8>>2]=c[o+(q<<4)+8>>2];c[m+(q<<4)+12>>2]=c[o+(q<<4)+12>>2];q=q+1|0;}while((q|0)<(n|0))}n=c[p>>2]|0;q=b+16|0;if((n|0)!=0){if((a[q]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-16+12>>2]|0)}c[p>>2]=0}a[q]=1;c[p>>2]=m;c[f>>2]=l;g=c[d>>2]|0;h=g+1|0;c[d>>2]=h;i=b+12|0;j=c[i>>2]|0;k=j+(e<<4)|0;return k|0}function ay_(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;c[9790]=(c[9790]|0)+1;f=(c[b+12>>2]|0)>(c[d+12>>2]|0);g=f?d:b;h=f?b:d;d=c[g+12>>2]|0;b=c[h+12>>2]|0;f=b<<16|d;i=f+~(f<<15)|0;f=(i>>10^i)*9|0;i=f>>6^f;f=i+~(i<<11)|0;i=a+12|0;j=(f>>16^f)&(c[i>>2]|0)-1;f=a+44|0;k=c[(c[f>>2]|0)+(j<<2)>>2]|0;if((k|0)==-1){l=0;return l|0}m=a+16|0;n=c[m>>2]|0;o=a+64|0;p=k;while(1){if((c[(c[n+(p<<4)>>2]|0)+12>>2]|0)==(d|0)){if((c[(c[n+(p<<4)+4>>2]|0)+12>>2]|0)==(b|0)){break}}k=c[(c[o>>2]|0)+(p<<2)>>2]|0;if((k|0)==-1){l=0;q=4278;break}else{p=k}}if((q|0)==4278){return l|0}b=n+(p<<4)|0;if((b|0)==0){l=0;return l|0}dA[c[(c[a>>2]|0)+32>>2]&511](a,b,e);d=c[n+(p<<4)+12>>2]|0;p=(b-(c[m>>2]|0)|0)/16|0;b=(c[f>>2]|0)+(j<<2)|0;j=c[b>>2]|0;n=c[o>>2]|0;do{if((j|0)==(p|0)){r=c[n+(p<<2)>>2]|0;q=4263}else{k=j;while(1){s=n+(k<<2)|0;t=c[s>>2]|0;if((t|0)==(p|0)){break}else{k=t}}t=c[n+(p<<2)>>2]|0;if((k|0)==-1){r=t;q=4263;break}c[s>>2]=t}}while(0);if((q|0)==4263){c[b>>2]=r}r=a+8|0;b=(c[r>>2]|0)-1|0;s=c[a+72>>2]|0;if((s|0)!=0){a=c[(c[s>>2]|0)+12>>2]|0;dE[a&127](s,g,h,e)|0}if((b|0)==(p|0)){c[r>>2]=(c[r>>2]|0)-1;l=d;return l|0}e=c[m>>2]|0;h=c[(c[e+(b<<4)+4>>2]|0)+12>>2]<<16|c[(c[e+(b<<4)>>2]|0)+12>>2];e=h+~(h<<15)|0;h=(e>>10^e)*9|0;e=h>>6^h;h=e+~(e<<11)|0;e=(h>>16^h)&(c[i>>2]|0)-1;i=(c[f>>2]|0)+(e<<2)|0;h=c[i>>2]|0;g=c[o>>2]|0;do{if((h|0)==(b|0)){u=c[g+(b<<2)>>2]|0;q=4273}else{s=h;while(1){v=g+(s<<2)|0;a=c[v>>2]|0;if((a|0)==(b|0)){break}else{s=a}}k=c[g+(b<<2)>>2]|0;if((s|0)==-1){u=k;q=4273;break}c[v>>2]=k}}while(0);if((q|0)==4273){c[i>>2]=u}u=c[m>>2]|0;m=u+(p<<4)|0;i=u+(b<<4)|0;c[m>>2]=c[i>>2];c[m+4>>2]=c[i+4>>2];c[m+8>>2]=c[i+8>>2];c[m+12>>2]=c[i+12>>2];c[(c[o>>2]|0)+(p<<2)>>2]=c[(c[f>>2]|0)+(e<<2)>>2];c[(c[f>>2]|0)+(e<<2)>>2]=p;c[r>>2]=(c[r>>2]|0)-1;l=d;return l|0}function ay$(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=a+8|0;if((c[e>>2]|0)<=0){return}f=a+16|0;g=b;h=a;i=0;L5220:while(1){while(1){j=c[f>>2]|0;k=j+(i<<4)|0;if(!(dj[c[(c[g>>2]|0)+8>>2]&511](b,k)|0)){break}dE[c[(c[h>>2]|0)+12>>2]&127](a,c[k>>2]|0,c[j+(i<<4)+4>>2]|0,d)|0;c[9792]=(c[9792]|0)-1;if((i|0)>=(c[e>>2]|0)){l=4288;break L5220}}j=i+1|0;if((j|0)<(c[e>>2]|0)){i=j}else{l=4290;break}}if((l|0)==4288){return}else if((l|0)==4290){return}}function ay0(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;e=i;i=i+24|0;f=e|0;g=f+16|0;a[g]=1;h=f+12|0;c[h>>2]=0;j=f+4|0;c[j>>2]=0;k=f+8|0;c[k>>2]=0;l=b+8|0;do{if((c[l>>2]|0)>0){m=b+16|0;n=0;o=0;p=0;while(1){q=c[m>>2]|0;do{if((o|0)==(p|0)){r=(p|0)==0?1:p<<1;if((p|0)>=(r|0)){s=p;break}if((r|0)==0){t=0;u=p}else{c[9806]=(c[9806]|0)+1;v=aDx((r<<4|4)+15|0)|0;if((v|0)==0){w=0}else{x=-(v+4|0)&15;c[v+x>>2]=v;w=v+(x+4)|0}t=w;u=c[j>>2]|0}if((u|0)>0){x=0;do{v=c[h>>2]|0;c[t+(x<<4)>>2]=c[v+(x<<4)>>2];c[t+(x<<4)+4>>2]=c[v+(x<<4)+4>>2];c[t+(x<<4)+8>>2]=c[v+(x<<4)+8>>2];c[t+(x<<4)+12>>2]=c[v+(x<<4)+12>>2];x=x+1|0;}while((x|0)<(u|0))}x=c[h>>2]|0;if((x|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[x-16+12>>2]|0)}c[h>>2]=0}a[g]=1;c[h>>2]=t;c[k>>2]=r;s=c[j>>2]|0}else{s=o}}while(0);x=c[h>>2]|0;c[x+(s<<4)>>2]=c[q+(n<<4)>>2];c[x+(s<<4)+4>>2]=c[q+(n<<4)+4>>2];c[x+(s<<4)+8>>2]=c[q+(n<<4)+8>>2];c[x+(s<<4)+12>>2]=c[q+(n<<4)+12>>2];y=(c[j>>2]|0)+1|0;c[j>>2]=y;x=n+1|0;if((x|0)>=(c[l>>2]|0)){break}n=x;o=y;p=c[k>>2]|0}if((y|0)<=0){z=y;break}p=b;o=0;while(1){n=c[h>>2]|0;dE[c[(c[p>>2]|0)+12>>2]&127](b,c[n+(o<<4)>>2]|0,c[n+(o<<4)+4>>2]|0,d)|0;n=o+1|0;m=c[j>>2]|0;if((n|0)<(m|0)){o=n}else{z=m;break}}}else{z=0}}while(0);d=b+56|0;if((c[d>>2]|0)>0){y=b+64|0;k=0;do{c[(c[y>>2]|0)+(k<<2)>>2]=-1;k=k+1|0;}while((k|0)<(c[d>>2]|0));A=c[j>>2]|0}else{A=z}if((A|0)>1){arQ(f,0,A-1|0);B=c[j>>2]|0}else{B=A}if((B|0)>0){B=b;A=0;do{f=c[h>>2]|0;cS[c[(c[B>>2]|0)+8>>2]&511](b,c[f+(A<<4)>>2]|0,c[f+(A<<4)+4>>2]|0)|0;A=A+1|0;}while((A|0)<(c[j>>2]|0))}j=c[h>>2]|0;if((j|0)==0){i=e;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-16+12>>2]|0)}c[h>>2]=0;i=e;return}function ay1(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;c[9812]=(c[9812]|0)+1;f=c[a+24>>2]|0;do{if((f|0)==0){if((b[e+6>>1]&b[d+4>>1])<<16>>16==0){g=0;return g|0}if((b[d+6>>1]&b[e+4>>1])<<16>>16==0){g=0}else{break}return g|0}else{if(cS[c[(c[f>>2]|0)+8>>2]&511](f,d,e)|0){break}else{g=0}return g|0}}while(0);f=(c[d+12>>2]|0)>(c[e+12>>2]|0);h=f?e:d;i=f?d:e;e=h+12|0;d=c[e>>2]|0;f=i+12|0;j=c[f>>2]|0;k=j<<16|d;l=k+~(k<<15)|0;k=(l>>10^l)*9|0;l=k>>6^k;k=l+~(l<<11)|0;l=k>>16^k;k=a+4|0;m=a+12|0;n=c[m>>2]|0;o=l&n-1;p=a+44|0;q=c[(c[p>>2]|0)+(o<<2)>>2]|0;L5293:do{if((q|0)!=-1){r=c[a+16>>2]|0;s=a+64|0;t=q;while(1){if((c[(c[r+(t<<4)>>2]|0)+12>>2]|0)==(d|0)){if((c[(c[r+(t<<4)+4>>2]|0)+12>>2]|0)==(j|0)){break}}u=c[(c[s>>2]|0)+(t<<2)>>2]|0;if((u|0)==-1){break L5293}else{t=u}}s=r+(t<<4)|0;if((s|0)==0){break}else{g=s}return g|0}}while(0);j=c[a+8>>2]|0;d=ayZ(k)|0;k=c[a+72>>2]|0;if((k|0)!=0){q=c[(c[k>>2]|0)+8>>2]|0;cS[q&511](k,h,i)|0}if((n|0)<(c[m>>2]|0)){ayJ(a);v=(c[m>>2]|0)-1&l}else{v=o}o=d|0;if((c[e>>2]|0)<(c[f>>2]|0)){c[o>>2]=h;c[d+4>>2]=i}else{c[o>>2]=i;c[d+4>>2]=h}h=d+8|0;c[h>>2]=0;c[h+4>>2]=0;c[(c[a+64>>2]|0)+(j<<2)>>2]=c[(c[p>>2]|0)+(v<<2)>>2];c[(c[p>>2]|0)+(v<<2)>>2]=j;g=d;return g|0}function ay2(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ay3(a){a=a|0;if((a|0)==0){return}aDB(a);return}function ay4(a,b){a=a|0;b=b|0;var d=0;d=c[a+4>>2]|0;do{if((c[b>>2]|0)!=(d|0)){if((c[b+4>>2]|0)==(d|0)){break}return 0}}while(0);d=c[a+8>>2]|0;dA[c[(c[d>>2]|0)+32>>2]&511](d,b,c[a+12>>2]|0);return 0}function ay5(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0;d=a+1116|0;e=c[d>>2]|0;if((e|0)!=4){c[d>>2]=e+1;f=e;h=(f|0)<0;i=h?0:f;j=a+4+(i*276|0)|0;k=j;l=b;aDC(k|0,l|0,276)|0;return i|0}m=+g[b+80>>2];n=+g[a+84>>2];e=n>2];d=m>2];p=o>2]<(p?o:n);r=q?3:p?2:d?1:(e^1)<<31>>31;n=+g[b>>2];do{if((r|0)==0){s=0.0;t=+g[b+4>>2];u=+g[b+8>>2];v=+g[a+832>>2];w=+g[a+556>>2];x=+g[a+836>>2];y=+g[a+560>>2];z=+g[a+840>>2];A=+g[a+564>>2];B=+g[a+280>>2];C=+g[a+284>>2];D=+g[a+288>>2];E=4381}else{o=+g[a+280>>2];m=n-o;F=+g[b+4>>2];G=+g[a+284>>2];H=F-G;I=+g[b+8>>2];J=+g[a+288>>2];K=I-J;L=+g[a+832>>2];M=+g[a+556>>2];N=L-M;O=+g[a+836>>2];Q=+g[a+560>>2];R=O-Q;S=+g[a+840>>2];T=+g[a+564>>2];U=S-T;V=H*U-K*R;W=K*N-m*U;U=m*R-H*N;N=U*U+(V*V+W*W);if((r|0)!=1){s=N;t=F;u=I;v=L;w=M;x=O;y=Q;z=S;A=T;B=o;C=G;D=J;E=4381;break}X=0.0;Y=N;Z=M;_=Q;$=T;aa=F;ab=I;ac=L;ad=O;ae=S;af=+g[a+4>>2];ag=+g[a+8>>2];ah=+g[a+12>>2];ai=o;aj=G;ak=J;E=4382}}while(0);if((E|0)==4381){J=+g[a+4>>2];G=n-J;o=+g[a+8>>2];S=t-o;O=+g[a+12>>2];L=u-O;I=v-w;F=x-y;T=z-A;Q=S*T-L*F;M=L*I-G*T;T=G*F-S*I;I=T*T+(Q*Q+M*M);if((r|0)==2){al=0.0;am=I;an=s;ao=J;ap=t;aq=o;ar=u;as=O;at=w;au=y;av=A;aw=B;ax=C;ay=D;E=4383}else{X=I;Y=s;Z=w;_=y;$=A;aa=t;ab=u;ac=v;ad=x;ae=z;af=J;ag=o;ah=O;ai=B;aj=C;ak=D;E=4382}}if((E|0)==4382){D=n-af;C=aa-ag;B=ab-ah;O=ac-ai;ac=ad-aj;ad=ae-ak;ae=C*ad-B*ac;o=B*O-D*ad;ad=D*ac-C*O;O=ad*ad+(ae*ae+o*o);if(q){az=0.0;aA=O;aB=X;aC=Y}else{al=O;am=X;an=Y;ao=af;ap=aa;aq=ag;ar=ab;as=ah;at=Z;au=_;av=$;aw=ai;ax=aj;ay=ak;E=4383}}if((E|0)==4383){ak=n-ao;ao=ap-aq;aq=ar-as;as=at-aw;aw=au-ax;ax=av-ay;ay=ao*ax-aq*aw;av=aq*as-ak*ax;ax=ak*aw-ao*as;az=ax*ax+(ay*ay+av*av);aA=al;aB=am;aC=an}an=+P(+aC);aC=+P(+aB);aB=+P(+aA);E=an>-999999984306749400.0;aA=E?an:-999999984306749400.0;q=aC>aA;an=q?aC:aA;r=aB>an;f=+P(+az)>(r?aB:an)?3:r?2:q?1:(E^1)<<31>>31;h=(f|0)<0;i=h?0:f;j=a+4+(i*276|0)|0;k=j;l=b;aDC(k|0,l|0,276)|0;return i|0}function ay6(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0,Q=0;f=b+1116|0;h=c[f>>2]|0;if((h|0)<=0){return}i=d|0;j=d+4|0;k=d+8|0;l=d+48|0;m=d+16|0;n=d+20|0;o=d+24|0;p=d+52|0;q=d+32|0;r=d+36|0;s=d+40|0;t=d+56|0;d=e|0;u=e+4|0;v=e+8|0;w=e+48|0;x=e+16|0;y=e+20|0;z=e+24|0;A=e+52|0;B=e+32|0;C=e+36|0;D=e+40|0;E=e+56|0;e=h;do{e=e-1|0;F=+g[b+4+(e*276|0)>>2];G=+g[b+4+(e*276|0)+4>>2];H=+g[b+4+(e*276|0)+8>>2];I=+g[l>>2]+(+g[i>>2]*F+ +g[j>>2]*G+ +g[k>>2]*H);J=+g[p>>2]+(F*+g[m>>2]+G*+g[n>>2]+H*+g[o>>2]);K=+g[t>>2]+(F*+g[q>>2]+G*+g[r>>2]+H*+g[s>>2]);g[b+4+(e*276|0)+48>>2]=I;g[b+4+(e*276|0)+52>>2]=J;g[b+4+(e*276|0)+56>>2]=K;g[b+4+(e*276|0)+60>>2]=0.0;H=+g[b+4+(e*276|0)+16>>2];G=+g[b+4+(e*276|0)+20>>2];F=+g[b+4+(e*276|0)+24>>2];L=+g[w>>2]+(+g[d>>2]*H+ +g[u>>2]*G+ +g[v>>2]*F);M=+g[A>>2]+(H*+g[x>>2]+G*+g[y>>2]+F*+g[z>>2]);N=+g[E>>2]+(H*+g[B>>2]+G*+g[C>>2]+F*+g[D>>2]);g[b+4+(e*276|0)+32>>2]=L;g[b+4+(e*276|0)+36>>2]=M;g[b+4+(e*276|0)+40>>2]=N;g[b+4+(e*276|0)+44>>2]=0.0;g[b+4+(e*276|0)+80>>2]=(I-L)*+g[b+4+(e*276|0)+64>>2]+(J-M)*+g[b+4+(e*276|0)+68>>2]+(K-N)*+g[b+4+(e*276|0)+72>>2];h=b+4+(e*276|0)+144|0;c[h>>2]=(c[h>>2]|0)+1;}while((e|0)>0);e=c[f>>2]|0;if((e|0)<=0){return}D=b+1120|0;C=b+1124|0;B=e;E=e;while(1){e=B-1|0;z=b+4+(e*276|0)|0;N=+g[b+4+(e*276|0)+80>>2];do{if(N>+g[((c[b+4+(e*276|0)+144>>2]|0)>1?D:C)>>2]){y=E-1|0;if((y|0)==(e|0)){O=E}else{x=z;A=b+4+(y*276|0)|0;aDC(x|0,A|0,276)|0;c[b+4+(y*276|0)+108>>2]=0;g[b+4+(y*276|0)+208>>2]=0.0;g[b+4+(y*276|0)+240>>2]=0.0;g[b+4+(y*276|0)+272>>2]=0.0;g[b+4+(y*276|0)+112>>2]=0.0;a[b+4+(y*276|0)+116|0]=0;g[b+4+(y*276|0)+120>>2]=0.0;g[b+4+(y*276|0)+124>>2]=0.0;c[b+4+(y*276|0)+144>>2]=0;O=c[f>>2]|0}y=O-1|0;c[f>>2]=y;P=y}else{K=+g[b+4+(e*276|0)+32>>2]-(+g[b+4+(e*276|0)+48>>2]- +g[b+4+(e*276|0)+64>>2]*N);M=+g[b+4+(e*276|0)+36>>2]-(+g[b+4+(e*276|0)+52>>2]-N*+g[b+4+(e*276|0)+68>>2]);J=+g[b+4+(e*276|0)+40>>2]-(+g[b+4+(e*276|0)+56>>2]-N*+g[b+4+(e*276|0)+72>>2]);L=+g[D>>2];if(K*K+M*M+J*J<=L*L){P=E;break}y=E-1|0;if((y|0)==(e|0)){Q=E}else{A=z;x=b+4+(y*276|0)|0;aDC(A|0,x|0,276)|0;c[b+4+(y*276|0)+108>>2]=0;g[b+4+(y*276|0)+208>>2]=0.0;g[b+4+(y*276|0)+240>>2]=0.0;g[b+4+(y*276|0)+272>>2]=0.0;g[b+4+(y*276|0)+112>>2]=0.0;a[b+4+(y*276|0)+116|0]=0;g[b+4+(y*276|0)+120>>2]=0.0;g[b+4+(y*276|0)+124>>2]=0.0;c[b+4+(y*276|0)+144>>2]=0;Q=c[f>>2]|0}y=Q-1|0;c[f>>2]=y;P=y}}while(0);if((e|0)>0){B=e;E=P}else{break}}return}function ay7(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-56+52>>2]|0);return}function ay8(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function ay9(d){d=d|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0.0,aI=0.0,aJ=0.0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0.0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0,bo=0,bp=0,bq=0,br=0,bs=0,bt=0,bu=0,bv=0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0,bD=0,bE=0,bF=0,bG=0,bH=0,bI=0,bJ=0,bK=0,bL=0,bM=0,bN=0,bO=0,bP=0,bQ=0,bR=0,bS=0,bT=0,bU=0,bV=0,bW=0,bX=0,bY=0,bZ=0,b_=0,b$=0,b0=0,b1=0,b2=0,b3=0.0,b4=0,b5=0,b6=0,b7=0,b8=0,b9=0,ca=0,cb=0,cc=0,cd=0,ce=0,cf=0,cg=0,ch=0,ci=0,cj=0,ck=0,cl=0,cm=0,cn=0,co=0,cp=0,cq=0,cr=0,cs=0,ct=0,cu=0,cv=0,cw=0,cx=0,cy=0,cz=0,cB=0,cC=0,cD=0,cE=0,cF=0,cG=0,cH=0,cI=0,cJ=0,cK=0,cL=0,cM=0,cN=0,cO=0,cP=0,cQ=0,cR=0,cS=0,cT=0,cU=0,cV=0.0,cW=0,cX=0,cY=0,cZ=0,c_=0,c$=0,c0=0,c1=0,c2=0,c3=0,c4=0.0,c5=0.0,c6=0.0;f=i;i=i+544|0;h=f|0;j=f+8|0;k=f+16|0;l=f+32|0;m=f+56|0;n=f+72|0;o=f+88|0;p=f+104|0;q=f+232|0;r=f+248|0;s=f+264|0;t=f+280|0;u=f+296|0;v=f+312|0;x=f+376|0;y=f+392|0;z=f+448|0;A=f+464|0;B=f+512|0;C=f+528|0;D=d+52|0;E=c[D>>2]|0;if((E|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[E-80+76>>2]|0)}c[9806]=(c[9806]|0)+1;E=aDx(99)|0;do{if((E|0)==0){F=0}else{G=-(E+4|0)&15;H=E+(G+4)|0;c[E+G>>2]=E;if((H|0)==0){F=0;break}c[H>>2]=23416;a[E+(G+24)|0]=1;c[E+(G+20)>>2]=0;c[E+(G+12)>>2]=0;c[E+(G|16)>>2]=0;a[E+(G+44)|0]=1;c[E+(G+40)>>2]=0;c[E+(G|32)>>2]=0;c[E+(G+36)>>2]=0;a[E+(G|64)|0]=1;c[E+(G+60)>>2]=0;c[E+(G+52)>>2]=0;c[E+(G+56)>>2]=0;F=H}}while(0);c[D>>2]=F;F=d;E=d;H=u;u=0;G=0;I=0;while(1){if((u|0)>=(cA[c[(c[F>>2]|0)+88>>2]&4095](d)|0)){break}do{if((u|0)==(G|0)){J=(G|0)==0?1:G<<1;if((G|0)>=(J|0)){K=G;L=I;break}do{if((J|0)==0){M=0}else{c[9806]=(c[9806]|0)+1;N=aDx((J<<4|4)+15|0)|0;if((N|0)==0){M=0;break}O=-(N+4|0)&15;c[N+O>>2]=N;M=N+(O+4)|0}}while(0);if((G|0)>0){O=0;do{N=M+(O<<4)|0;if((N|0)!=0){R=N;N=I+(O<<4)|0;c[R>>2]=c[N>>2];c[R+4>>2]=c[N+4>>2];c[R+8>>2]=c[N+8>>2];c[R+12>>2]=c[N+12>>2]}O=O+1|0;}while((O|0)<(G|0))}if((I|0)==0){K=J;L=M;break}c[9804]=(c[9804]|0)+1;aDB(c[I-16+12>>2]|0);K=J;L=M}else{K=G;L=I}}while(0);O=L+(u<<4)|0;if((O|0)!=0){N=O;c[N>>2]=c[H>>2];c[N+4>>2]=c[H+4>>2];c[N+8>>2]=c[H+8>>2];c[N+12>>2]=c[H+12>>2]}dA[c[(c[E>>2]|0)+100>>2]&511](d,u,O);u=u+1|0;G=K;I=L}L=v+16|0;a[L]=1;K=v+12|0;c[K>>2]=0;G=v+4|0;c[G>>2]=0;E=v+8|0;c[E>>2]=0;H=v+36|0;a[H]=1;M=v+32|0;c[M>>2]=0;F=v+24|0;c[F>>2]=0;O=v+28|0;c[O>>2]=0;N=v+56|0;a[N]=1;R=v+52|0;c[R>>2]=0;S=v+44|0;c[S>>2]=0;T=v+48|0;c[T>>2]=0;U=I;V=q;q=r;r=s;s=t;do{if((u|0)<1){a[L]=1;c[K>>2]=0;c[G>>2]=0;c[E>>2]=0;a[H]=1;c[M>>2]=0;c[F>>2]=0;c[O>>2]=0;a[N]=1;c[R>>2]=0;c[S>>2]=0;c[T>>2]=0}else{t=p+32|0;c[t>>2]=0;W=p+36|0;c[W>>2]=0;X=p+40|0;c[X>>2]=0;Y=p+44|0;c[Y>>2]=256;Z=p+48|0;c[Z>>2]=0;_=p+52|0;c[_>>2]=0;$=p+56|0;c[$>>2]=0;aa=p+60|0;c[aa>>2]=256;ab=p+64|0;c[ab>>2]=0;c[p+68>>2]=0;c[p+72>>2]=0;c[p+76>>2]=256;ac=p+96|0;a[ac]=1;ad=p+92|0;c[ad>>2]=0;ae=p+84|0;c[ae>>2]=0;af=p+88|0;c[af>>2]=0;ag=m;ah=o;ai=(u|0)>0;aj=1.0000000150474662e+30;ak=1.0000000150474662e+30;al=1.0000000150474662e+30;am=-1.0000000150474662e+30;an=-1.0000000150474662e+30;ao=-1.0000000150474662e+30;ap=0;aq=U;while(1){ar=+g[aq>>2];as=+g[aq+4>>2];at=+g[aq+8>>2];au=ar>2]=an>2]=ao>2]=aB;ap=c[aC>>2]|0;if((aB|0)==(ap|0)){aA=((aB+1|0)>>>0)%3|0;c[aq>>2]=aA;aD=c[aC>>2]|0;aE=aA}else{aD=ap;aE=aB}ap=p+108|0;c[ap>>2]=3-aD-aE;al=ao*9788566967472434.0e-20;ao=an*9788566967472434.0e-20;an=am*9788566967472434.0e-20;aA=p|0;g[aA>>2]=al;aF=p+4|0;g[aF>>2]=ao;aG=p+8|0;g[aG>>2]=an;g[p+12>>2]=0.0;if(al>0.0){aH=1.0/al}else{aH=al}if(ao>0.0){aI=1.0/ao}else{aI=ao}if(an>0.0){aJ=1.0/an}else{aJ=an}aK=p+16|0;g[aK>>2]=(au+ax)*.5;aL=p+20|0;g[aL>>2]=(av+ay)*.5;aM=p+24|0;g[aM>>2]=(aw+az)*.5;g[p+28>>2]=0.0;aN=l+16|0;a[aN]=1;aO=l+12|0;c[aO>>2]=0;aP=l+4|0;c[aP>>2]=0;aQ=l+8|0;c[aQ>>2]=0;do{if(ai){c[9806]=(c[9806]|0)+1;aR=aDx((u<<4|4)+15|0)|0;do{if((aR|0)==0){aS=0}else{aT=-(aR+4|0)&15;c[aR+aT>>2]=aR;aU=aR+(aT+4)|0;aT=c[aP>>2]|0;if((aT|0)>0){aV=0}else{aS=aU;break}while(1){aW=aU+(aV<<4)|0;if((aW|0)!=0){aX=aW;aW=(c[aO>>2]|0)+(aV<<4)|0;c[aX>>2]=c[aW>>2];c[aX+4>>2]=c[aW+4>>2];c[aX+8>>2]=c[aW+8>>2];c[aX+12>>2]=c[aW+12>>2]}aW=aV+1|0;if((aW|0)<(aT|0)){aV=aW}else{aS=aU;break}}}}while(0);aR=c[aO>>2]|0;if((aR|0)!=0){if((a[aN]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aR-16+12>>2]|0)}c[aO>>2]=0}a[aN]=1;c[aO>>2]=aS;c[aQ>>2]=u;aR=0;J=aS;while(1){aU=J+(aR<<4)|0;if((aU|0)!=0){aT=aU;c[aT>>2]=c[ag>>2];c[aT+4>>2]=c[ag+4>>2];c[aT+8>>2]=c[ag+8>>2];c[aT+12>>2]=c[ag+12>>2]}aT=aR+1|0;if((aT|0)>=(u|0)){break}aR=aT;J=c[aO>>2]|0}c[aP>>2]=u;J=n|0;aR=n+4|0;aT=n+8|0;aU=n+12|0;aW=0;aX=U;while(1){an=+g[aX>>2];g[J>>2]=an;ao=+g[aX+4>>2];g[aR>>2]=ao;al=aI*(ao- +g[aL>>2]);ao=aJ*(+g[aX+8>>2]- +g[aM>>2]);g[J>>2]=aH*(an- +g[aK>>2]);g[aR>>2]=al;g[aT>>2]=ao;g[aU>>2]=0.0;c[(c[aO>>2]|0)+(aW<<4)>>2]=~~+g[n+(c[ap>>2]<<2)>>2];c[(c[aO>>2]|0)+(aW<<4)+4>>2]=~~+g[n+(c[aC>>2]<<2)>>2];c[(c[aO>>2]|0)+(aW<<4)+8>>2]=~~+g[n+(c[aq>>2]<<2)>>2];c[(c[aO>>2]|0)+(aW<<4)+12>>2]=aW;aY=aW+1|0;if((aY|0)>=(u|0)){break}aW=aY;aX=aX+16|0}aX=c[aP>>2]|0;if((aX|0)<=1){break}aDe(l,0,aX-1|0)}else{c[aP>>2]=u}}while(0);ag=p+32|0;c[W>>2]=c[ag>>2];c[X>>2]=0;c[Y>>2]=u;aX=c[ae>>2]|0;if((aX|0)<(u|0)){if((c[af>>2]|0)<(u|0)){if((u|0)==0){aZ=0;a_=aX}else{c[9806]=(c[9806]|0)+1;aW=aDx((u<<2)+19|0)|0;if((aW|0)==0){a$=0}else{aU=-(aW+4|0)&15;c[aW+aU>>2]=aW;a$=aW+(aU+4)|0}aZ=a$;a_=c[ae>>2]|0}if((a_|0)>0){aU=0;do{aW=aZ+(aU<<2)|0;if((aW|0)!=0){c[aW>>2]=c[(c[ad>>2]|0)+(aU<<2)>>2]}aU=aU+1|0;}while((aU|0)<(a_|0))}aU=c[ad>>2]|0;if((aU|0)!=0){if((a[ac]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aU-4>>2]|0)}c[ad>>2]=0}a[ac]=1;c[ad>>2]=aZ;c[af>>2]=u;a0=aX}else{a0=aX}do{aU=(c[ad>>2]|0)+(a0<<2)|0;if((aU|0)!=0){c[aU>>2]=0}a0=a0+1|0;}while((a0|0)<(u|0))}c[ae>>2]=u;if(ai){aX=0;do{aU=c[X>>2]|0;if((aU|0)==0){aW=c[W>>2]|0;if((aW|0)==0){c[9806]=(c[9806]|0)+1;aT=aDx(31)|0;do{if((aT|0)==0){a1=0}else{aR=-(aT+4|0)&15;J=aT+(aR+4)|0;c[aT+aR>>2]=aT;if((J|0)==0){a1=0;break}aY=c[Y>>2]|0;c[aT+(aR+8)>>2]=aY;c[aT+(aR+12)>>2]=0;c[9806]=(c[9806]|0)+1;aR=aDx((aY*112|0|4)+15|0)|0;if((aR|0)==0){a2=0}else{aY=-(aR+4|0)&15;c[aR+aY>>2]=aR;a2=aR+(aY+4)|0}c[J>>2]=a2;a1=J}}while(0);c[a1+8>>2]=c[ag>>2];c[ag>>2]=a1;a3=a1}else{c[W>>2]=c[aW+8>>2];a3=aW}aT=a3|0;J=a3+4|0;aY=c[J>>2]|0;if((aY|0)>0){aR=c[aT>>2]|0;a4=0;a5=aY;while(1){aY=a4+1|0;a6=aR+112|0;c[aR>>2]=(aY|0)<(a5|0)?a6:0;a7=c[J>>2]|0;if((aY|0)<(a7|0)){aR=a6;a4=aY;a5=a7}else{break}}}a5=c[aT>>2]|0;c[X>>2]=c[a5>>2];if((a5|0)==0){a8=0}else{a9=a5;ba=4509}}else{c[X>>2]=c[aU>>2];a9=aU;ba=4509}if((ba|0)==4509){ba=0;aDD(a9|0,0,20);c[a9+104>>2]=-1;a8=a9}c[a8+8>>2]=0;a5=a8+88|0;a4=(c[aO>>2]|0)+(aX<<4)|0;c[a5>>2]=c[a4>>2];c[a5+4>>2]=c[a4+4>>2];c[a5+8>>2]=c[a4+8>>2];c[a5+12>>2]=c[a4+12>>2];c[a8+104>>2]=-1;c[(c[ad>>2]|0)+(aX<<2)>>2]=a8;aX=aX+1|0;}while((aX|0)<(u|0))}aX=c[aO>>2]|0;if((aX|0)!=0){if((a[aN]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aX-16+12>>2]|0)}c[aO>>2]=0}a[aN]=1;c[aO>>2]=0;c[aP>>2]=0;c[aQ>>2]=0;c[_>>2]=c[Z>>2];c[$>>2]=0;c[aa>>2]=u*6|0;c[p+116>>2]=0;c[p+120>>2]=0;c[p+100>>2]=-3;aDD(ah|0,0,16);aC6(p,0,u,o);aX=p+124|0;c[aX>>2]=c[o>>2];X=c[aO>>2]|0;if((X|0)!=0){if((a[aN]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[X-16+12>>2]|0)}c[aO>>2]=0}X=c[G>>2]|0;if((X|0)<0){W=c[K>>2]|0;if((c[E>>2]|0)<0){if((W|0)!=0){if((a[L]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[W-16+12>>2]|0)}c[K>>2]=0}a[L]=1;c[K>>2]=0;c[E>>2]=0;bb=0}else{bb=W}W=X;do{X=bb+(W<<4)|0;if((X|0)!=0){ag=X;c[ag>>2]=c[V>>2];c[ag+4>>2]=c[V+4>>2];c[ag+8>>2]=c[V+8>>2];c[ag+12>>2]=c[V+12>>2]}W=W+1|0;}while((W|0)<0)}c[G>>2]=0;aDD(q|0,0,12);W=c[F>>2]|0;if((W|0)<0){aO=c[M>>2]|0;if((c[O>>2]|0)<0){if((aO|0)!=0){if((a[H]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aO-12+8>>2]|0)}c[M>>2]=0}a[H]=1;c[M>>2]=0;c[O>>2]=0;bc=0}else{bc=aO}aO=W;do{W=bc+(aO*12|0)|0;if((W|0)!=0){aN=W;c[aN>>2]=c[q>>2];c[aN+4>>2]=c[q+4>>2];c[aN+8>>2]=c[q+8>>2]}aO=aO+1|0;}while((aO|0)<0)}c[F>>2]=0;aO=c[S>>2]|0;if((aO|0)<0){aN=c[R>>2]|0;if((c[T>>2]|0)<0){if((aN|0)!=0){if((a[N]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aN-4>>2]|0)}c[R>>2]=0}a[N]=1;c[R>>2]=0;c[T>>2]=0;bd=0}else{bd=aN}aN=aO;do{aO=bd+(aN<<2)|0;if((aO|0)!=0){c[aO>>2]=0}aN=aN+1|0;}while((aN|0)<0)}c[S>>2]=0;aN=c[aX>>2]|0;aO=aN+104|0;do{if((c[aO>>2]|0)<0){c[aO>>2]=0;c[9806]=(c[9806]|0)+1;W=aDx(23)|0;do{if((W|0)==0){be=0}else{ah=-(W+4|0)&15;aa=W+(ah+4)|0;c[W+ah>>2]=W;ah=aa;if((aa|0)==0){be=0;break}c[ah>>2]=aN;be=ah}}while(0);W=k|0;aU=p+112|0;aT=k+4|0;ah=k+8|0;aa=be;$=1;_=1;aQ=0;while(1){aP=c[aa+(aQ<<2)>>2]|0;if((c[aP+100>>2]|0)>-1){g[k+(c[ap>>2]<<2)>>2]=+(c[aP+88>>2]|0);g[k+(c[aU>>2]<<2)>>2]=+(c[aP+92>>2]|0);bf=+(c[aP+96>>2]|0)}else{ao=+aDd(aP+24|0);ag=aP+72|0;al=ao/+aDd(ag);g[k+(c[ap>>2]<<2)>>2]=al;al=+aDd(aP+40|0);ao=al/+aDd(ag);g[k+(c[aU>>2]<<2)>>2]=ao;ao=+aDd(aP+56|0);bf=ao/+aDd(ag)}g[k+(c[aq>>2]<<2)>>2]=bf;ao=+g[W>>2]*+g[aA>>2]+ +g[aK>>2];al=+g[aT>>2]*+g[aF>>2]+ +g[aL>>2];an=+g[ah>>2]*+g[aG>>2]+ +g[aM>>2];ag=c[G>>2]|0;do{if((ag|0)==(c[E>>2]|0)){X=(ag|0)==0?1:ag<<1;if((ag|0)>=(X|0)){bg=ag;break}do{if((X|0)==0){bh=0}else{c[9806]=(c[9806]|0)+1;Y=aDx((X<<4|4)+15|0)|0;if((Y|0)==0){bh=0;break}ai=-(Y+4|0)&15;c[Y+ai>>2]=Y;bh=Y+(ai+4)|0}}while(0);if((ag|0)>0){ai=0;do{Y=bh+(ai<<4)|0;if((Y|0)!=0){a4=Y;Y=(c[K>>2]|0)+(ai<<4)|0;c[a4>>2]=c[Y>>2];c[a4+4>>2]=c[Y+4>>2];c[a4+8>>2]=c[Y+8>>2];c[a4+12>>2]=c[Y+12>>2]}ai=ai+1|0;}while((ai|0)<(ag|0))}ai=c[K>>2]|0;if((ai|0)!=0){if((a[L]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ai-16+12>>2]|0)}c[K>>2]=0}a[L]=1;c[K>>2]=bh;c[E>>2]=X;bg=c[G>>2]|0}else{bg=ag}}while(0);ag=c[K>>2]|0;ai=ag+(bg<<4)|0;if((ai|0)!=0){g[ai>>2]=ao;g[ag+(bg<<4)+4>>2]=al;g[ag+(bg<<4)+8>>2]=an;g[ag+(bg<<4)+12>>2]=0.0}c[G>>2]=bg+1;ag=c[aP+8>>2]|0;if((ag|0)==0){bi=_;bj=$;bk=aa}else{ai=ag;Y=-1;a4=-1;a5=_;aR=$;J=aa;while(1){aW=ai+20|0;a7=c[aW>>2]|0;if((a7|0)<0){aY=c[F>>2]|0;aDD(r|0,0,12);a6=c[O>>2]|0;do{if((aY|0)==(a6|0)){bl=(aY|0)==0?1:aY<<1;if((aY|0)>=(bl|0)){bm=aY;bn=aY;break}do{if((bl|0)==0){bo=0}else{c[9806]=(c[9806]|0)+1;bp=aDx((bl*12|0)+19|0)|0;if((bp|0)==0){bo=0;break}bq=-(bp+4|0)&15;c[bp+bq>>2]=bp;bo=bp+(bq+4)|0}}while(0);if((aY|0)>0){bq=0;do{bp=bo+(bq*12|0)|0;if((bp|0)!=0){br=bp;bp=(c[M>>2]|0)+(bq*12|0)|0;c[br>>2]=c[bp>>2];c[br+4>>2]=c[bp+4>>2];c[br+8>>2]=c[bp+8>>2]}bq=bq+1|0;}while((bq|0)<(aY|0))}bq=c[M>>2]|0;if((bq|0)!=0){if((a[H]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bq-12+8>>2]|0)}c[M>>2]=0}a[H]=1;c[M>>2]=bo;c[O>>2]=bl;bm=c[F>>2]|0;bn=bl}else{bm=aY;bn=a6}}while(0);a6=c[M>>2]|0;X=a6+(bm*12|0)|0;if((X|0)!=0){bq=X;c[bq>>2]=c[r>>2];c[bq+4>>2]=c[r+4>>2];c[bq+8>>2]=c[r+8>>2]}bq=bm+1|0;c[F>>2]=bq;aDD(s|0,0,12);do{if((bq|0)==(bn|0)){X=(bn|0)==0?1:bn<<1;if((bn|0)>=(X|0)){bs=bn;bt=a6;break}do{if((X|0)==0){bu=0}else{c[9806]=(c[9806]|0)+1;bp=aDx((X*12|0)+19|0)|0;if((bp|0)==0){bu=0;break}br=-(bp+4|0)&15;c[bp+br>>2]=bp;bu=bp+(br+4)|0}}while(0);if((bn|0)>0){bl=0;do{br=bu+(bl*12|0)|0;if((br|0)!=0){bp=br;br=(c[M>>2]|0)+(bl*12|0)|0;c[bp>>2]=c[br>>2];c[bp+4>>2]=c[br+4>>2];c[bp+8>>2]=c[br+8>>2]}bl=bl+1|0;}while((bl|0)<(bn|0));bv=c[M>>2]|0}else{bv=a6}if((bv|0)!=0){if((a[H]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bv-12+8>>2]|0)}c[M>>2]=0}a[H]=1;c[M>>2]=bu;c[O>>2]=X;bs=c[F>>2]|0;bt=bu}else{bs=bq;bt=a6}}while(0);a6=bt+(bs*12|0)|0;if((a6|0)==0){bw=bs;bx=bt}else{bq=a6;c[bq>>2]=c[s>>2];c[bq+4>>2]=c[s+4>>2];c[bq+8>>2]=c[s+8>>2];bw=c[F>>2]|0;bx=c[M>>2]|0}c[F>>2]=bw+1;bq=aY+1|0;c[aW>>2]=aY;c[(c[ai+8>>2]|0)+20>>2]=bq;c[bx+(aY*12|0)+4>>2]=1;c[bx+(bq*12|0)+4>>2]=-1;a6=c[ai+12>>2]|0;bl=a6+104|0;br=c[bl>>2]|0;if((br|0)<0){c[bl>>2]=a5;do{if((a5|0)==(aR|0)){bl=(aR|0)==0?1:aR<<1;if((aR|0)>=(bl|0)){by=aR;bz=J;break}do{if((bl|0)==0){bA=0}else{c[9806]=(c[9806]|0)+1;bp=aDx((bl<<2)+19|0)|0;if((bp|0)==0){bA=0;break}bB=-(bp+4|0)&15;c[bp+bB>>2]=bp;bA=bp+(bB+4)|0}}while(0);if((aR|0)>0){X=0;do{bB=bA+(X<<2)|0;if((bB|0)!=0){c[bB>>2]=c[J+(X<<2)>>2]}X=X+1|0;}while((X|0)<(aR|0))}if((J|0)==0){by=bl;bz=bA;break}c[9804]=(c[9804]|0)+1;aDB(c[J-4>>2]|0);by=bl;bz=bA}else{by=aR;bz=J}}while(0);X=bz+(a5<<2)|0;if((X|0)!=0){c[X>>2]=a6}bC=a5;bD=a5+1|0;bE=by;bF=bz}else{bC=br;bD=a5;bE=aR;bF=J}c[bx+(aY*12|0)+8>>2]=bC;c[bx+(bq*12|0)+8>>2]=aQ;bG=bD;bH=bE;bI=bF;bJ=c[aW>>2]|0}else{bG=a5;bH=aR;bI=J;bJ=a7}if((Y|0)>-1){c[(c[M>>2]|0)+(bJ*12|0)>>2]=Y-bJ;bK=a4;bL=c[aW>>2]|0}else{bK=bJ;bL=bJ}X=c[ai>>2]|0;if((X|0)==(ag|0)){break}else{ai=X;Y=bL;a4=bK;a5=bG;aR=bH;J=bI}}c[(c[M>>2]|0)+(bK*12|0)>>2]=bL-bK;bi=bG;bj=bH;bk=bI}bM=aQ+1|0;if((bM|0)<(bi|0)){aa=bk;$=bj;_=bi;aQ=bM}else{break}}if((bM|0)>0){aQ=0;do{_=c[(c[bk+(aQ<<2)>>2]|0)+8>>2]|0;if((_|0)!=0){$=_;do{aa=$+20|0;if((c[aa>>2]|0)>-1){ah=c[S>>2]|0;do{if((ah|0)==(c[T>>2]|0)){aT=(ah|0)==0?1:ah<<1;if((ah|0)>=(aT|0)){bN=ah;break}do{if((aT|0)==0){bO=0}else{c[9806]=(c[9806]|0)+1;W=aDx((aT<<2)+19|0)|0;if((W|0)==0){bO=0;break}aU=-(W+4|0)&15;c[W+aU>>2]=W;bO=W+(aU+4)|0}}while(0);if((ah|0)>0){bl=0;do{aU=bO+(bl<<2)|0;if((aU|0)!=0){c[aU>>2]=c[(c[R>>2]|0)+(bl<<2)>>2]}bl=bl+1|0;}while((bl|0)<(ah|0))}bl=c[R>>2]|0;if((bl|0)!=0){if((a[N]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bl-4>>2]|0)}c[R>>2]=0}a[N]=1;c[R>>2]=bO;c[T>>2]=aT;bN=c[S>>2]|0}else{bN=ah}}while(0);ah=(c[R>>2]|0)+(bN<<2)|0;if((ah|0)!=0){c[ah>>2]=c[aa>>2]}c[S>>2]=bN+1;ah=$;do{c[ah+20>>2]=-1;ah=c[(c[ah+8>>2]|0)+4>>2]|0;}while((ah|0)!=($|0))}$=c[$>>2]|0;}while(($|0)!=(_|0))}aQ=aQ+1|0;}while((aQ|0)<(bM|0))}if((bk|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[bk-4>>2]|0)}}while(0);aM=c[ad>>2]|0;if((aM|0)!=0){if((a[ac]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aM-4>>2]|0)}c[ad>>2]=0}a[ac]=1;c[ad>>2]=0;c[ae>>2]=0;c[af>>2]=0;aM=c[ab>>2]|0;if((aM|0)!=0){aG=aM;do{c[ab>>2]=c[aG+8>>2];aM=c[aG>>2]|0;if((aM|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aM-60+56>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[aG-12+8>>2]|0);aG=c[ab>>2]|0;}while((aG|0)!=0)}aG=c[Z>>2]|0;if((aG|0)!=0){ab=aG;do{c[Z>>2]=c[ab+8>>2];aG=c[ab>>2]|0;if((aG|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aG-24+20>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[ab-12+8>>2]|0);ab=c[Z>>2]|0;}while((ab|0)!=0)}ab=c[t>>2]|0;if((ab|0)==0){break}else{bP=ab}do{c[t>>2]=c[bP+8>>2];ab=c[bP>>2]|0;if((ab|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ab-4>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[bP-12+8>>2]|0);bP=c[t>>2]|0;}while((bP|0)!=0)}}while(0);bP=c[S>>2]|0;S=(bP|0)>0;if(S){c[9806]=(c[9806]|0)+1;bk=aDx((bP<<4|4)+15|0)|0;if((bk|0)==0){bQ=0}else{bM=-(bk+4|0)&15;c[bk+bM>>2]=bk;bQ=bk+(bM+4)|0}bM=x;x=0;while(1){bk=bQ+(x<<4)|0;if((bk|0)!=0){bN=bk;c[bN>>2]=c[bM>>2];c[bN+4>>2]=c[bM+4>>2];c[bN+8>>2]=c[bM+8>>2];c[bN+12>>2]=c[bM+12>>2]}bN=x+1|0;if((bN|0)<(bP|0)){x=bN}else{bR=bQ;break}}}else{bR=0}bQ=c[D>>2]|0;aDD(y|0,0,56);x=y+16|0;a[x]=1;bM=y+12|0;c[bM>>2]=0;bN=y+4|0;c[bN>>2]=0;bk=y+8|0;c[bk>>2]=0;T=y+36|0;a[T]=1;bO=y+32|0;c[bO>>2]=0;N=y+24|0;c[N>>2]=0;bi=y+28|0;c[bi>>2]=0;bj=bQ+24|0;bI=bQ+28|0;bH=c[bI>>2]|0;do{if((bH|0)>(bP|0)){bG=bQ+36|0;bK=bP;while(1){bL=c[bG>>2]|0;bJ=bL+(bK*56|0)+24|0;bF=bL+(bK*56|0)+32|0;bE=c[bF>>2]|0;bD=bL+(bK*56|0)+36|0;if((bE|0)!=0){if((a[bD]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bE-4>>2]|0)}c[bF>>2]=0}a[bD]=1;c[bF>>2]=0;c[bJ>>2]=0;c[bL+(bK*56|0)+28>>2]=0;bJ=bL+(bK*56|0)+4|0;bF=bL+(bK*56|0)+12|0;bD=c[bF>>2]|0;bE=bL+(bK*56|0)+16|0;if((bD|0)!=0){if((a[bE]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bD-4>>2]|0)}c[bF>>2]=0}a[bE]=1;c[bF>>2]=0;c[bJ>>2]=0;c[bL+(bK*56|0)+8>>2]=0;bL=bK+1|0;if((bL|0)<(bH|0)){bK=bL}else{ba=4712;break}}}else{if((bH|0)>=(bP|0)){ba=4712;break}bK=bQ+32|0;if((c[bK>>2]|0)<(bP|0)){do{if((bP|0)==0){bS=0}else{c[9806]=(c[9806]|0)+1;bG=aDx((bP*56|0|4)+15|0)|0;if((bG|0)==0){bS=0;break}bL=-(bG+4|0)&15;c[bG+bL>>2]=bG;bS=bG+(bL+4)|0}}while(0);bL=c[bI>>2]|0;bG=bQ+36|0;if((bL|0)>0){bJ=0;do{bF=bS+(bJ*56|0)|0;if((bF|0)!=0){bE=c[bG>>2]|0;azg(bF,bE+(bJ*56|0)|0);azg(bF+20|0,bE+(bJ*56|0)+20|0);bD=bF+40|0;bF=bE+(bJ*56|0)+40|0;c[bD>>2]=c[bF>>2];c[bD+4>>2]=c[bF+4>>2];c[bD+8>>2]=c[bF+8>>2];c[bD+12>>2]=c[bF+12>>2]}bJ=bJ+1|0;}while((bJ|0)<(bL|0));bT=c[bI>>2]|0}else{bT=bL}azh(bj,bT);bJ=c[bG>>2]|0;bF=bQ+40|0;if((bJ|0)!=0){if((a[bF]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bJ-4>>2]|0)}c[bG>>2]=0}a[bF]=1;c[bG>>2]=bS;c[bK>>2]=bP;bU=bG}else{bU=bQ+36|0}bF=y|0;bJ=y+20|0;bD=y+40|0;bE=bH;do{bx=(c[bU>>2]|0)+(bE*56|0)|0;if((bx|0)!=0){azg(bx,bF);azg(bx+20|0,bJ);bC=bx+40|0;c[bC>>2]=c[bD>>2];c[bC+4>>2]=c[bD+4>>2];c[bC+8>>2]=c[bD+8>>2];c[bC+12>>2]=c[bD+12>>2]}bE=bE+1|0;}while((bE|0)<(bP|0));bE=c[bO>>2]|0;c[bI>>2]=bP;if((bE|0)==0){break}if((a[T]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bE-4>>2]|0)}c[bO>>2]=0}}while(0);if((ba|0)==4712){c[bI>>2]=bP}a[T]=1;c[bO>>2]=0;c[N>>2]=0;c[bi>>2]=0;bi=c[bM>>2]|0;if((bi|0)!=0){if((a[x]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bi-4>>2]|0)}c[bM>>2]=0}a[x]=1;c[bM>>2]=0;c[bN>>2]=0;c[bk>>2]=0;bk=c[G>>2]|0;bN=c[D>>2]|0;bM=bN+8|0;x=c[bM>>2]|0;if((x|0)<(bk|0)){bi=bN+12|0;if((c[bi>>2]|0)<(bk|0)){if((bk|0)==0){bV=0;bW=x}else{c[9806]=(c[9806]|0)+1;N=aDx((bk<<4|4)+15|0)|0;if((N|0)==0){bX=0}else{bO=-(N+4|0)&15;c[N+bO>>2]=N;bX=N+(bO+4)|0}bV=bX;bW=c[bM>>2]|0}bX=bN+16|0;if((bW|0)>0){bO=0;do{N=bV+(bO<<4)|0;if((N|0)!=0){T=N;N=(c[bX>>2]|0)+(bO<<4)|0;c[T>>2]=c[N>>2];c[T+4>>2]=c[N+4>>2];c[T+8>>2]=c[N+8>>2];c[T+12>>2]=c[N+12>>2]}bO=bO+1|0;}while((bO|0)<(bW|0))}bW=c[bX>>2]|0;bO=bN+20|0;if((bW|0)!=0){if((a[bO]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bW-16+12>>2]|0)}c[bX>>2]=0}a[bO]=1;c[bX>>2]=bV;c[bi>>2]=bk;bY=bX}else{bY=bN+16|0}bN=z;z=x;do{x=(c[bY>>2]|0)+(z<<4)|0;if((x|0)!=0){bX=x;c[bX>>2]=c[bN>>2];c[bX+4>>2]=c[bN+4>>2];c[bX+8>>2]=c[bN+8>>2];c[bX+12>>2]=c[bN+12>>2]}z=z+1|0;}while((z|0)<(bk|0))}c[bM>>2]=bk;if((bk|0)>0){bM=c[K>>2]|0;z=0;do{bN=(c[(c[D>>2]|0)+16>>2]|0)+(z<<4)|0;bY=bM+(z<<4)|0;c[bN>>2]=c[bY>>2];c[bN+4>>2]=c[bY+4>>2];c[bN+8>>2]=c[bY+8>>2];c[bN+12>>2]=c[bY+12>>2];z=z+1|0;}while((z|0)<(bk|0))}if(S){S=A+4|0;bk=A+24|0;z=A+8|0;bM=A+20|0;bY=A+16|0;bN=A|0;bX=0;do{x=(c[M>>2]|0)+((c[(c[R>>2]|0)+(bX<<2)>>2]|0)*12|0)|0;bi=x;bV=0;while(1){bO=bi+4|0;bW=c[bi+((c[bO>>2]|0)*12|0)+8>>2]|0;N=c[(c[D>>2]|0)+36>>2]|0;T=N+(bX*56|0)+4|0;bI=c[T>>2]|0;bU=N+(bX*56|0)+8|0;do{if((bI|0)==(c[bU>>2]|0)){bH=(bI|0)==0?1:bI<<1;if((bI|0)>=(bH|0)){bZ=bI;break}if((bH|0)==0){b_=0;b$=bI}else{c[9806]=(c[9806]|0)+1;y=aDx((bH<<2)+19|0)|0;if((y|0)==0){b0=0}else{bQ=-(y+4|0)&15;c[y+bQ>>2]=y;b0=y+(bQ+4)|0}b_=b0;b$=c[T>>2]|0}bQ=N+(bX*56|0)+12|0;if((b$|0)>0){y=0;do{bS=b_+(y<<2)|0;if((bS|0)!=0){c[bS>>2]=c[(c[bQ>>2]|0)+(y<<2)>>2]}y=y+1|0;}while((y|0)<(b$|0))}y=c[bQ>>2]|0;bS=N+(bX*56|0)+16|0;if((y|0)!=0){if((a[bS]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-4>>2]|0)}c[bQ>>2]=0}a[bS]=1;c[bQ>>2]=b_;c[bU>>2]=bH;bZ=c[T>>2]|0}else{bZ=bI}}while(0);bI=(c[N+(bX*56|0)+12>>2]|0)+(bZ<<2)|0;if((bI|0)==0){b1=bZ}else{c[bI>>2]=bW;b1=c[T>>2]|0}c[T>>2]=b1+1;bI=c[bi+8>>2]|0;bU=c[K>>2]|0;bf=+g[bU+(bI<<4)>>2]- +g[bU+(bW<<4)>>2];aH=+g[bU+(bI<<4)+4>>2]- +g[bU+(bW<<4)+4>>2];aJ=+g[bU+(bI<<4)+8>>2]- +g[bU+(bW<<4)+8>>2];aI=1.0/+Q(+(bf*bf+aH*aH+aJ*aJ));if((bV|0)<2){g[A+(bV<<4)>>2]=bf*aI;g[A+(bV<<4)+4>>2]=aH*aI;g[A+(bV<<4)+8>>2]=aJ*aI;g[A+(bV<<4)+12>>2]=0.0;b2=bV+1|0}else{b2=bV}bU=c[bO>>2]|0;bI=bi+(((c[bi+(bU*12|0)>>2]|0)+bU|0)*12|0)|0;if((bI|0)==(x|0)){break}else{bi=bI;bV=b2}}bV=bR+(bX<<4)|0;if((b2|0)==2){aI=+g[S>>2];aJ=+g[bk>>2];aH=+g[z>>2];bf=+g[bM>>2];az=aI*aJ-aH*bf;aw=+g[bY>>2];ay=+g[bN>>2];av=aH*aw-aJ*ay;aJ=bf*ay-aI*aw;bi=bR+(bX<<4)+4|0;x=bR+(bX<<4)+8|0;g[bR+(bX<<4)+12>>2]=0.0;aw=1.0/+Q(+(az*az+av*av+aJ*aJ));aI=az*aw;g[bV>>2]=aI;g[bi>>2]=av*aw;g[x>>2]=aJ*aw;g[(c[(c[D>>2]|0)+36>>2]|0)+(bX*56|0)+40>>2]=-0.0-aI;g[(c[(c[D>>2]|0)+36>>2]|0)+(bX*56|0)+44>>2]=-0.0- +g[bi>>2];g[(c[(c[D>>2]|0)+36>>2]|0)+(bX*56|0)+48>>2]=-0.0- +g[x>>2];g[(c[(c[D>>2]|0)+36>>2]|0)+(bX*56|0)+52>>2]=1.0000000150474662e+30}else{aDD(bV|0,0,16)}x=c[D>>2]|0;bi=c[x+36>>2]|0;bI=c[bi+(bX*56|0)+4>>2]|0;if((bI|0)>0){aI=+g[bV>>2];aw=+g[bR+(bX<<4)+4>>2];aJ=+g[bR+(bX<<4)+8>>2];bV=c[bi+(bX*56|0)+12>>2]|0;bU=c[x+16>>2]|0;av=1.0000000150474662e+30;x=0;while(1){bS=c[bV+(x<<2)>>2]|0;az=+g[bU+(bS<<4)>>2]*aI+ +g[bU+(bS<<4)+4>>2]*aw+ +g[bU+(bS<<4)+8>>2]*aJ;ay=av>az?az:av;bS=x+1|0;if((bS|0)<(bI|0)){av=ay;x=bS}else{b3=ay;break}}}else{b3=1.0000000150474662e+30}g[bi+(bX*56|0)+52>>2]=b3;bX=bX+1|0;}while((bX|0)<(bP|0))}bP=c[D>>2]|0;bX=c[bP+28>>2]|0;do{if((bX|0)==0){b4=bP;b5=0}else{if(!((c[G>>2]|0)!=0&(bX|0)>0)){b4=bP;b5=bX;break}bN=d;bY=C|0;bM=C+4|0;z=C+8|0;bk=C+12|0;S=d|0;b2=B|0;A=B+4|0;K=B+8|0;b1=0;bZ=bP;while(1){b_=c[bZ+36>>2]|0;b3=+g[b_+(b1*56|0)+40>>2];av=+g[b_+(b1*56|0)+44>>2];aJ=+g[b_+(b1*56|0)+48>>2];aw=+g[b_+(b1*56|0)+52>>2];b_=c[(c[bN>>2]|0)+60>>2]|0;g[bY>>2]=-0.0-b3;g[bM>>2]=-0.0-av;g[z>>2]=-0.0-aJ;g[bk>>2]=0.0;dA[b_&511](B,S,C);L5925:do{if(b3*+g[b2>>2]+av*+g[A>>2]+aJ*+g[K>>2]>2]|0)+36>>2]|0)+(b1*56|0)+40|0;g[b_>>2]=+g[b_>>2]*-1.0;b_=(c[(c[D>>2]|0)+36>>2]|0)+(b1*56|0)+44|0;g[b_>>2]=+g[b_>>2]*-1.0;b_=(c[(c[D>>2]|0)+36>>2]|0)+(b1*56|0)+48|0;g[b_>>2]=+g[b_>>2]*-1.0;b_=(c[(c[D>>2]|0)+36>>2]|0)+(b1*56|0)+52|0;g[b_>>2]=+g[b_>>2]*-1.0;b_=c[(c[D>>2]|0)+36>>2]|0;b$=c[b_+(b1*56|0)+4>>2]|0;b0=(b$|0)/2|0;if((b$|0)<=1){break}R=b$-1|0;b$=0;M=b_;while(1){b_=c[M+(b1*56|0)+12>>2]|0;x=b_+(b$<<2)|0;bI=b_+(R-b$<<2)|0;b_=c[x>>2]|0;c[x>>2]=c[bI>>2];c[bI>>2]=b_;b_=b$+1|0;if((b_|0)>=(b0|0)){break L5925}b$=b_;M=c[(c[D>>2]|0)+36>>2]|0}}}while(0);bO=b1+1|0;bW=c[D>>2]|0;T=c[bW+28>>2]|0;if((bO|0)<(T|0)){b1=bO;bZ=bW}else{b4=bW;b5=T;break}}}}while(0);c[h>>2]=0;c[j>>2]=0;D=b4+64|0;C=b4+68|0;B=b4+72|0;bP=b4+28|0;aDD(D|0,0,16);do{if((b5|0)>0){d=b4+36|0;bX=b4+16|0;G=b4+48|0;bZ=b4+52|0;b1=b4+56|0;K=b4+60|0;A=0;b2=b5;S=0;bk=0;z=0;bM=0;bY=0;bN=0;bi=0;T=0;bW=0;bO=0;while(1){N=c[d>>2]|0;M=c[N+(A*56|0)+4>>2]|0;if((M|0)>0){b$=A&65535;b0=A|-65536;R=0;bH=N;N=S;bQ=bk;b_=z;bI=bM;x=bY;bU=bN;bV=bi;bS=T;y=bW;bT=bO;while(1){bj=R+1|0;bE=c[bH+(A*56|0)+12>>2]|0;bD=c[bE+(R<<2)>>2]&65535;bJ=c[bE+(((bj|0)==(M|0)?0:bj)<<2)>>2]&65535;bE=bD<<16>>16>16;bF=bE?bD:bJ;bG=bE?bJ:bD;bD=bG<<16>>16;bJ=x-1|0;bE=((bF&65535)<<16)+bD&bJ;L5941:do{if(bE>>>0>>0){bK=c[(c[h>>2]|0)+(bE<<2)>>2]|0;if((bK|0)==-1){b6=0;break}bL=c[j>>2]|0;bC=bK;while(1){if(bG<<16>>16==(b[N+(bC<<2)>>1]|0)){if(bF<<16>>16==(b[N+(bC<<2)+2>>1]|0)){break}}bK=c[bL+(bC<<2)>>2]|0;if((bK|0)==-1){b6=0;break L5941}else{bC=bK}}if((bC|0)==-1){b6=0;break}b6=bI+(bC<<2)|0}else{b6=0}}while(0);bE=bF<<16>>16;bL=c[bX>>2]|0;aw=+g[bL+(bE<<4)>>2]- +g[bL+(bD<<4)>>2];aJ=+g[bL+(bE<<4)+4>>2]- +g[bL+(bD<<4)+4>>2];av=+g[bL+(bE<<4)+8>>2]- +g[bL+(bD<<4)+8>>2];b3=1.0/+Q(+(aw*aw+aJ*aJ+av*av));aI=aw*b3;aw=aJ*b3;aJ=av*b3;bL=c[G>>2]|0;L5952:do{if((bL|0)>0){bE=c[b1>>2]|0;bK=0;while(1){b3=+g[bE+(bK<<4)>>2];av=+g[bE+(bK<<4)+8>>2];ay=av-aJ;do{if(+P(+(b3-aI))<=1.0e-6){if(+P(+(+g[bE+(bK<<4)+4>>2]-aw))>1.0e-6){break}if(+P(+ay)<=1.0e-6){break L5952}}}while(0);ay=aJ+av;do{if(+P(+(aI+b3))<=1.0e-6){if(+P(+(aw+ +g[bE+(bK<<4)+4>>2]))>1.0e-6){break}if(+P(+ay)<=1.0e-6){break L5952}}}while(0);aT=bK+1|0;if((aT|0)<(bL|0)){bK=aT}else{ba=4817;break}}}else{ba=4817}}while(0);if((ba|0)==4817){ba=0;do{if((bL|0)==(c[bZ>>2]|0)){bD=(bL|0)==0?1:bL<<1;if((bL|0)>=(bD|0)){b7=bL;break}if((bD|0)==0){b8=0;b9=bL}else{c[9806]=(c[9806]|0)+1;bK=aDx((bD<<4|4)+15|0)|0;if((bK|0)==0){ca=0}else{bE=-(bK+4|0)&15;c[bK+bE>>2]=bK;ca=bK+(bE+4)|0}b8=ca;b9=c[G>>2]|0}if((b9|0)>0){bE=0;do{bK=b8+(bE<<4)|0;if((bK|0)!=0){bC=bK;bK=(c[b1>>2]|0)+(bE<<4)|0;c[bC>>2]=c[bK>>2];c[bC+4>>2]=c[bK+4>>2];c[bC+8>>2]=c[bK+8>>2];c[bC+12>>2]=c[bK+12>>2]}bE=bE+1|0;}while((bE|0)<(b9|0))}bE=c[b1>>2]|0;if((bE|0)!=0){if((a[K]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bE-16+12>>2]|0)}c[b1>>2]=0}a[K]=1;c[b1>>2]=b8;c[bZ>>2]=bD;b7=c[G>>2]|0}else{b7=bL}}while(0);bL=c[b1>>2]|0;bE=bL+(b7<<4)|0;if((bE|0)==0){cb=b7}else{g[bE>>2]=aI;g[bL+(b7<<4)+4>>2]=aw;g[bL+(b7<<4)+8>>2]=aJ;g[bL+(b7<<4)+12>>2]=0.0;cb=c[G>>2]|0}c[G>>2]=cb+1}L5993:do{if((b6|0)==0){bL=(bF&65535)<<16;bE=bL+(bG<<16>>16)|0;bK=bE&bJ;L5996:do{if(bK>>>0>>0){bC=c[(c[h>>2]|0)+(bK<<2)>>2]|0;if((bC|0)==-1){break}aT=c[j>>2]|0;bx=bC;while(1){if(bG<<16>>16==(b[N+(bx<<2)>>1]|0)){if(bF<<16>>16==(b[N+(bx<<2)+2>>1]|0)){break}}bC=c[aT+(bx<<2)>>2]|0;if((bC|0)==-1){break L5996}else{bx=bC}}if((bx|0)==-1){break}aT=bI+(bx<<2)|0;w=b0;b[aT>>1]=w&65535;b[aT+2>>1]=w>>16;cc=N;cd=bQ;ce=b_;cf=bI;cg=x;ch=bU;ci=bV;cj=bS;ck=y;cl=bT;break L5993}}while(0);do{if((bS|0)==(x|0)){bD=(bS|0)==0?1:bS<<1;if((bS|0)>=(bD|0)){cm=bI;cn=bS;break}do{if((bD|0)==0){co=0}else{c[9806]=(c[9806]|0)+1;aT=aDx((bD<<2)+19|0)|0;if((aT|0)==0){co=0;break}bC=-(aT+4|0)&15;c[aT+bC>>2]=aT;co=aT+(bC+4)|0}}while(0);if((bS|0)>0){bx=0;do{bC=co+(bx<<2)|0;if((bC|0)!=0){aT=bI+(bx<<2)|0;bz=bC;w=e[aT>>1]|e[aT+2>>1]<<16;b[bz>>1]=w&65535;b[bz+2>>1]=w>>16}bx=bx+1|0;}while((bx|0)<(bS|0))}if((bI|0)==0){cm=co;cn=bD;break}c[9804]=(c[9804]|0)+1;aDB(c[bI-4>>2]|0);cm=co;cn=bD}else{cm=bI;cn=x}}while(0);bx=cm+(bS<<2)|0;if((bx|0)!=0){bz=bx;w=b0;b[bz>>1]=w&65535;b[bz+2>>1]=w>>16}bz=bS+1|0;do{if((b_|0)==(bQ|0)){bx=(b_|0)==0?1:b_<<1;if((b_|0)>=(bx|0)){cp=N;cq=b_;break}do{if((bx|0)==0){cr=0}else{c[9806]=(c[9806]|0)+1;aT=aDx((bx<<2)+19|0)|0;if((aT|0)==0){cr=0;break}bC=-(aT+4|0)&15;c[aT+bC>>2]=aT;cr=aT+(bC+4)|0}}while(0);if((b_|0)>0){bD=0;do{bC=cr+(bD<<2)|0;if((bC|0)!=0){aT=N+(bD<<2)|0;by=bC;w=e[aT>>1]|e[aT+2>>1]<<16;b[by>>1]=w&65535;b[by+2>>1]=w>>16}bD=bD+1|0;}while((bD|0)<(b_|0))}if((N|0)==0){cp=cr;cq=bx;break}c[9804]=(c[9804]|0)+1;aDB(c[N-4>>2]|0);cp=cr;cq=bx}else{cp=N;cq=bQ}}while(0);bD=cp+(b_<<2)|0;if((bD|0)!=0){by=bD;w=bL|bG&65535;b[by>>1]=w&65535;b[by+2>>1]=w>>16}by=b_+1|0;if((x|0)<(cn|0)){do{if((bU|0)<(cn|0)){if((bU|0)>(cn|0)){cs=bV}else{if((bV|0)<(cn|0)){do{if((cn|0)==0){ct=0}else{c[9806]=(c[9806]|0)+1;bD=aDx((cn<<2)+19|0)|0;if((bD|0)==0){ct=0;break}aT=-(bD+4|0)&15;c[bD+aT>>2]=bD;ct=bD+(aT+4)|0}}while(0);if((bU|0)>0){bx=0;do{aT=ct+(bx<<2)|0;if((aT|0)!=0){c[aT>>2]=c[(c[h>>2]|0)+(bx<<2)>>2]}bx=bx+1|0;}while((bx|0)<(bU|0))}bx=c[h>>2]|0;if((bx|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bx-4>>2]|0);c[h>>2]=0}c[h>>2]=ct;cu=cn;cv=ct}else{cu=bV;cv=c[h>>2]|0}bx=bU;while(1){aT=cv+(bx<<2)|0;if((aT|0)!=0){c[aT>>2]=0}aT=bx+1|0;if((aT|0)<(cn|0)){bx=aT}else{cs=cu;break}}}if((y|0)<(cn|0)){if((bT|0)<(cn|0)){do{if((cn|0)==0){cw=0}else{c[9806]=(c[9806]|0)+1;bx=aDx((cn<<2)+19|0)|0;if((bx|0)==0){cw=0;break}aT=-(bx+4|0)&15;c[bx+aT>>2]=bx;cw=bx+(aT+4)|0}}while(0);if((y|0)>0){aT=0;do{bx=cw+(aT<<2)|0;if((bx|0)!=0){c[bx>>2]=c[(c[j>>2]|0)+(aT<<2)>>2]}aT=aT+1|0;}while((aT|0)<(y|0))}aT=c[j>>2]|0;if((aT|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aT-4>>2]|0);c[j>>2]=0}c[j>>2]=cw;cx=cn;cy=cw}else{cx=bT;cy=c[j>>2]|0}aT=y;while(1){bx=cy+(aT<<2)|0;if((bx|0)!=0){c[bx>>2]=0}bx=aT+1|0;if((bx|0)<(cn|0)){aT=bx}else{cz=cx;break}}}else{cz=bT}if((cn|0)>0){aT=c[h>>2]|0;bx=0;do{c[aT+(bx<<2)>>2]=-1;bx=bx+1|0;}while((bx|0)<(cn|0));bx=c[j>>2]|0;aT=0;do{c[bx+(aT<<2)>>2]=-1;aT=aT+1|0;}while((aT|0)<(cn|0))}if((bU|0)<=0){cB=cn;cC=cs;cD=cn;cE=cz;break}aT=cn-1|0;bx=c[h>>2]|0;bD=c[j>>2]|0;bC=0;while(1){bA=bx+(((e[cp+(bC<<2)+2>>1]<<16)+(b[cp+(bC<<2)>>1]|0)&aT)<<2)|0;c[bD+(bC<<2)>>2]=c[bA>>2];c[bA>>2]=bC;bA=bC+1|0;if((bA|0)<(bU|0)){bC=bA}else{cB=cn;cC=cs;cD=cn;cE=cz;break}}}else{cB=bU;cC=bV;cD=y;cE=bT}}while(0);cF=bE&cn-1;cG=cB;cH=cC;cI=cD;cJ=cE}else{cF=bK;cG=bU;cH=bV;cI=y;cJ=bT}bL=(c[h>>2]|0)+(cF<<2)|0;c[(c[j>>2]|0)+(bS<<2)>>2]=c[bL>>2];c[bL>>2]=bS;cc=cp;cd=cq;ce=by;cf=cm;cg=cn;ch=cG;ci=cH;cj=bz;ck=cI;cl=cJ}else{b[b6+2>>1]=b$;cc=N;cd=bQ;ce=b_;cf=bI;cg=x;ch=bU;ci=bV;cj=bS;ck=y;cl=bT}}while(0);if((bj|0)>=(M|0)){break}R=bj;bH=c[d>>2]|0;N=cc;bQ=cd;b_=ce;bI=cf;x=cg;bU=ch;bV=ci;bS=cj;y=ck;bT=cl}cK=c[bP>>2]|0;cL=cc;cM=cd;cN=ce;cO=cf;cP=cg;cQ=ch;cR=ci;cS=cj;cT=ck;cU=cl}else{cK=b2;cL=S;cM=bk;cN=z;cO=bM;cP=bY;cQ=bN;cR=bi;cS=T;cT=bW;cU=bO}bT=A+1|0;if((bT|0)<(cK|0)){A=bT;b2=cK;S=cL;bk=cM;z=cN;bM=cO;bY=cP;bN=cQ;bi=cR;T=cS;bW=cT;bO=cU}else{break}}if((cK|0)<=0){cV=0.0;cW=cL;cX=cO;break}bO=cP-1|0;bW=c[h>>2]|0;T=c[j>>2]|0;bi=0;do{bN=c[d>>2]|0;bY=c[bN+(bi*56|0)+4>>2]|0;bM=bN+(bi*56|0)+24|0;z=c[bM>>2]|0;if((z|0)<(bY|0)){bk=bN+(bi*56|0)+28|0;if((c[bk>>2]|0)<(bY|0)){if((bY|0)==0){cY=0;cZ=z}else{c[9806]=(c[9806]|0)+1;S=aDx((bY<<2)+19|0)|0;if((S|0)==0){c_=0}else{b2=-(S+4|0)&15;c[S+b2>>2]=S;c_=S+(b2+4)|0}cY=c_;cZ=c[bM>>2]|0}b2=bN+(bi*56|0)+32|0;if((cZ|0)>0){S=0;do{A=cY+(S<<2)|0;if((A|0)!=0){c[A>>2]=c[(c[b2>>2]|0)+(S<<2)>>2]}S=S+1|0;}while((S|0)<(cZ|0))}S=c[b2>>2]|0;A=bN+(bi*56|0)+36|0;if((S|0)!=0){if((a[A]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[S-4>>2]|0)}c[b2>>2]=0}a[A]=1;c[b2>>2]=cY;c[bk>>2]=bY;c$=b2}else{c$=bN+(bi*56|0)+32|0}A=z;do{S=(c[c$>>2]|0)+(A<<2)|0;if((S|0)!=0){c[S>>2]=0}A=A+1|0;}while((A|0)<(bY|0))}c[bM>>2]=bY;if((bY|0)>0){A=0;while(1){z=A+1|0;bN=c[d>>2]|0;b2=c[bN+(bi*56|0)+12>>2]|0;bk=c[b2+(A<<2)>>2]&65535;S=c[b2+(((z|0)==(bY|0)?0:z)<<2)>>2]&65535;b2=bk<<16>>16>16;G=b2?bk:S;b1=b2?S:bk;bk=((G&65535)<<16)+(b1<<16>>16)&bO;L6156:do{if(bk>>>0>>0){S=c[bW+(bk<<2)>>2]|0;if((S|0)==-1){c0=0;break}else{c1=S}while(1){if(b1<<16>>16==(b[cL+(c1<<2)>>1]|0)){if(G<<16>>16==(b[cL+(c1<<2)+2>>1]|0)){break}}S=c[T+(c1<<2)>>2]|0;if((S|0)==-1){c0=0;break L6156}else{c1=S}}if((c1|0)==-1){c0=0;break}c0=cO+(c1<<2)|0}else{c0=0}}while(0);G=b[c0>>1]|0;if((G<<16>>16|0)==(bi|0)){c2=b[c0+2>>1]|0}else{c2=G}c[(c[bN+(bi*56|0)+32>>2]|0)+(A<<2)>>2]=c2<<16>>16;if((z|0)<(bY|0)){A=z}else{break}}}bi=bi+1|0;c3=c[bP>>2]|0;}while((bi|0)<(c3|0));if((c3|0)<=0){cV=0.0;cW=cL;cX=cO;break}bi=c[d>>2]|0;T=c[bX>>2]|0;aJ=0.0;bW=0;while(1){bO=c[bi+(bW*56|0)+4>>2]|0;A=bO-2|0;bY=bi+(bW*56|0)+12|0;bM=c[bY>>2]|0;G=c[bM>>2]|0;L6174:do{if((A|0)<1){c4=aJ}else{b1=T+(G<<4)|0;bk=T+(G<<4)+4|0;bj=T+(G<<4)+8|0;aw=aJ;bz=1;aI=+g[D>>2];ay=+g[C>>2];b3=+g[B>>2];by=bM;while(1){bK=bz+1|0;bE=c[by+(bz<<2)>>2]|0;S=c[by+(((bK|0)%(bO|0)|0)<<2)>>2]|0;av=+g[b1>>2];az=+g[T+(bE<<4)>>2];bf=av-az;aH=+g[bk>>2];ax=+g[T+(bE<<4)+4>>2];au=aH-ax;an=+g[bj>>2];al=+g[T+(bE<<4)+8>>2];ao=an-al;am=+g[T+(S<<4)>>2];ak=av-am;aj=+g[T+(S<<4)+4>>2];at=aH-aj;as=+g[T+(S<<4)+8>>2];ar=an-as;c5=au*ar-ao*at;c6=ao*ak-bf*ar;ar=bf*at-au*ak;ak=+Q(+(ar*ar+(c5*c5+c6*c6)))*.5;c6=aI+(av+az+am)*.3333333432674408*ak;g[D>>2]=c6;am=(aH+ax+aj)*.3333333432674408*ak+ay;g[C>>2]=am;aj=ak*(an+al+as)*.3333333432674408+b3;g[B>>2]=aj;as=aw+ak;if((bK|0)>(A|0)){c4=as;break L6174}aw=as;bz=bK;aI=c6;ay=am;b3=aj;by=c[bY>>2]|0}}}while(0);bY=bW+1|0;if((bY|0)<(c3|0)){aJ=c4;bW=bY}else{cV=c4;cW=cL;cX=cO;break}}}else{cV=0.0;cW=0;cX=0}}while(0);c4=1.0/cV;g[D>>2]=c4*+g[D>>2];g[C>>2]=c4*+g[C>>2];g[B>>2]=c4*+g[B>>2];if((cW|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[cW-4>>2]|0)}if((cX|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[cX-4>>2]|0)}cX=c[j>>2]|0;if((cX|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[cX-4>>2]|0);c[j>>2]=0}c[j>>2]=0;j=c[h>>2]|0;if((j|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-4>>2]|0);c[h>>2]=0}if((bR|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bR-16+12>>2]|0)}azi(v);if((I|0)==0){i=f;return 1}c[9804]=(c[9804]|0)+1;aDB(c[I-16+12>>2]|0);i=f;return 1}function aza(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0;e=i;i=i+16|0;f=e|0;h=a;aDD(h|0,0,16);j=+g[d>>2];k=+g[d+4>>2];l=+g[d+8>>2];m=j*j+k*k+l*l;if(m<9999999747378752.0e-20){n=1.0;o=0.0;p=0.0}else{q=1.0/+Q(+m);n=j*q;o=k*q;p=l*q}d=b;if((cA[c[(c[d>>2]|0)+88>>2]&4095](b)|0)<=0){i=e;return}a=b;r=f|0;s=f+4|0;t=f+8|0;u=f;q=-999999984306749400.0;v=0;while(1){dA[c[(c[a>>2]|0)+100>>2]&511](b,v,f);l=n*+g[r>>2]+o*+g[s>>2]+p*+g[t>>2];if(l>q){c[h>>2]=c[u>>2];c[h+4>>2]=c[u+4>>2];c[h+8>>2]=c[u+8>>2];c[h+12>>2]=c[u+12>>2];w=l}else{w=q}x=v+1|0;if((x|0)<(cA[c[(c[d>>2]|0)+88>>2]&4095](b)|0)){q=w;v=x}else{break}}i=e;return}function azb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0;f=i;i=i+16|0;h=f|0;if((e|0)>0){j=0}else{i=f;return}do{g[d+(j<<4)+12>>2]=-999999984306749400.0;j=j+1|0;}while((j|0)<(e|0));j=a;k=a;l=h|0;m=h+4|0;n=h+8|0;o=h;p=0;do{if((cA[c[(c[j>>2]|0)+88>>2]&4095](a)|0)>0){q=b+(p<<4)|0;r=b+(p<<4)+4|0;s=b+(p<<4)+8|0;t=d+(p<<4)+12|0;u=d+(p<<4)|0;v=0;do{dA[c[(c[k>>2]|0)+100>>2]&511](a,v,h);w=+g[q>>2]*+g[l>>2]+ +g[r>>2]*+g[m>>2]+ +g[s>>2]*+g[n>>2];if(w>+g[t>>2]){c[u>>2]=c[o>>2];c[u+4>>2]=c[o+4>>2];c[u+8>>2]=c[o+8>>2];c[u+12>>2]=c[o+12>>2];g[t>>2]=w}v=v+1|0;}while((v|0)<(cA[c[(c[j>>2]|0)+88>>2]&4095](a)|0))}p=p+1|0;}while((p|0)<(e|0));i=f;return}function azc(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0;e=i;i=i+96|0;f=e|0;h=e+64|0;j=e+80|0;k=a|0;l=+dh[c[(c[a>>2]|0)+44>>2]&1023](k);g[f>>2]=1.0;aDD(f+4|0,0,16);g[f+20>>2]=1.0;aDD(f+24|0,0,16);g[f+40>>2]=1.0;aDD(f+44|0,0,20);dI[c[(c[a>>2]|0)+8>>2]&1023](k,f,h,j);m=(l+(+g[j>>2]- +g[h>>2])*.5)*2.0;n=(l+(+g[j+4>>2]- +g[h+4>>2])*.5)*2.0;o=(l+(+g[j+8>>2]- +g[h+8>>2])*.5)*2.0;l=m*m;m=n*n;n=o*o;o=b*.0833333283662796;g[d>>2]=o*(m+n);g[d+4>>2]=o*(l+n);g[d+8>>2]=o*(l+m);g[d+12>>2]=0.0;i=e;return}function azd(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0;c=+P(+(+g[b>>2]));d=+P(+(+g[b+4>>2]));e=+P(+(+g[b+8>>2]));g[a+12>>2]=c;g[a+16>>2]=d;g[a+20>>2]=e;g[a+24>>2]=0.0;aze(a);return}function aze(b){b=b|0;var d=0,e=0,f=0.0;d=i;i=i+96|0;e=d|0;a[b+88|0]=1;do{if((a[42992]|0)==0){if((b1(42992)|0)==0){break}g[10084]=1.0;aDD(40340,0,16);g[10089]=1.0;aDD(40360,0,16);g[10094]=1.0;g[10095]=0.0;g[10096]=-1.0;aDD(40388,0,16);g[10101]=-1.0;aDD(40408,0,16);g[10106]=-1.0;g[10107]=0.0}}while(0);aDD(e|0,0,96);dI[c[(c[b>>2]|0)+68>>2]&1023](b|0,40336,e|0,6);f=+g[b+44>>2];g[b+72>>2]=+g[e>>2]+f;g[b+56>>2]=+g[e+48>>2]-f;g[b+76>>2]=+g[e+20>>2]+f;g[b+60>>2]=+g[e+68>>2]-f;g[b+80>>2]=+g[e+40>>2]+f;g[b+64>>2]=+g[e+88>>2]-f;i=d;return}function azf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;f=+dh[c[(c[a>>2]|0)+44>>2]&1023](a|0);h=+g[a+72>>2];i=+g[a+56>>2];j=+g[a+76>>2];k=+g[a+60>>2];l=+g[a+80>>2];m=+g[a+64>>2];n=f+(h-i)*.5;o=f+(j-k)*.5;p=f+(l-m)*.5;f=(h+i)*.5;i=(j+k)*.5;k=(l+m)*.5;m=+g[b>>2];l=+P(+m);j=+g[b+4>>2];h=+P(+j);q=+g[b+8>>2];r=+P(+q);s=+g[b+16>>2];t=+P(+s);u=+g[b+20>>2];v=+P(+u);w=+g[b+24>>2];x=+P(+w);y=+g[b+32>>2];z=+P(+y);A=+g[b+36>>2];B=+P(+A);C=+g[b+40>>2];D=+P(+C);E=f*m+i*j+k*q+ +g[b+48>>2];q=f*s+i*u+k*w+ +g[b+52>>2];w=f*y+i*A+k*C+ +g[b+56>>2];C=n*l+o*h+p*r;r=n*t+o*v+p*x;x=n*z+o*B+p*D;g[d>>2]=E-C;g[d+4>>2]=q-r;g[d+8>>2]=w-x;g[d+12>>2]=0.0;g[e>>2]=C+E;g[e+4>>2]=r+q;g[e+8>>2]=x+w;g[e+12>>2]=0.0;return}function azg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=b+16|0;a[e]=1;f=b+12|0;c[f>>2]=0;g=b+4|0;c[g>>2]=0;h=b+8|0;c[h>>2]=0;b=c[d+4>>2]|0;if((b|0)<=0){c[g>>2]=b;return}c[9806]=(c[9806]|0)+1;i=aDx((b<<2)+19|0)|0;if((i|0)==0){j=0}else{k=-(i+4|0)&15;c[i+k>>2]=i;j=i+(k+4)|0}k=c[g>>2]|0;if((k|0)>0){i=0;do{l=j+(i<<2)|0;if((l|0)!=0){c[l>>2]=c[(c[f>>2]|0)+(i<<2)>>2]}i=i+1|0;}while((i|0)<(k|0))}k=c[f>>2]|0;if((k|0)!=0){if((a[e]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[k-4>>2]|0)}c[f>>2]=0}a[e]=1;c[f>>2]=j;c[h>>2]=b;h=0;e=j;while(1){j=e+(h<<2)|0;if((j|0)==0){m=e}else{c[j>>2]=0;m=c[f>>2]|0}j=h+1|0;if((j|0)<(b|0)){h=j;e=m}else{break}}c[g>>2]=b;g=d+12|0;d=0;do{e=m+(d<<2)|0;if((e|0)!=0){c[e>>2]=c[(c[g>>2]|0)+(d<<2)>>2]}d=d+1|0;}while((d|0)<(b|0));return}function azh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;if((d|0)<=0){return}e=b+12|0;b=0;do{f=c[e>>2]|0;g=f+(b*56|0)+24|0;h=f+(b*56|0)+32|0;i=c[h>>2]|0;j=f+(b*56|0)+36|0;if((i|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[i-4>>2]|0)}c[h>>2]=0}a[j]=1;c[h>>2]=0;c[g>>2]=0;c[f+(b*56|0)+28>>2]=0;g=f+(b*56|0)+4|0;h=f+(b*56|0)+12|0;j=c[h>>2]|0;i=f+(b*56|0)+16|0;if((j|0)!=0){if((a[i]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-4>>2]|0)}c[h>>2]=0}a[i]=1;c[h>>2]=0;c[g>>2]=0;c[f+(b*56|0)+8>>2]=0;b=b+1|0;}while((b|0)<(d|0));return}function azi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;d=b+44|0;e=b+52|0;f=c[e>>2]|0;g=b+56|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+48>>2]=0;d=b+24|0;e=b+32|0;g=c[e>>2]|0;f=b+36|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-12+8>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0;d=b+4|0;e=b+12|0;f=c[e>>2]|0;g=b+16|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+8|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+8|0;c[h>>2]=0;return}function azj(d){d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=i;i=i+48|0;f=e+16|0;g=d+60|0;a[g]=1;h=d+108|0;j=c[h>>2]|0;k=j<<1;l=e|0;aDD(l|0,0,16);m=d+128|0;n=c[m>>2]|0;if((n|0)<(k|0)){o=d+132|0;if((c[o>>2]|0)<(k|0)){if((k|0)==0){p=0;q=n}else{c[9806]=(c[9806]|0)+1;r=aDx((j<<5|4)+15|0)|0;if((r|0)==0){s=0}else{t=-(r+4|0)&15;c[r+t>>2]=r;s=r+(t+4)|0}p=s;q=c[m>>2]|0}s=d+136|0;if((q|0)>0){t=0;do{r=p+(t<<4)|0;u=(c[s>>2]|0)+(t<<4)|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];t=t+1|0;}while((t|0)<(q|0))}q=c[s>>2]|0;t=d+140|0;if((q|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-16+12>>2]|0)}c[s>>2]=0}a[t]=1;c[s>>2]=p;c[o>>2]=k;v=s}else{v=d+136|0}s=n;do{n=(c[v>>2]|0)+(s<<4)|0;c[n>>2]=c[l>>2];c[n+4>>2]=c[l+4>>2];c[n+8>>2]=c[l+8>>2];c[n+12>>2]=c[l+12>>2];s=s+1|0;}while((s|0)<(k|0))}c[m>>2]=k;c[d+56>>2]=0;azk(d,0,j);j=d+152|0;do{if((a[g]&1)!=0){if((c[j>>2]|0)!=0){break}k=d+156|0;if((c[k>>2]|0)==0){c[9806]=(c[9806]|0)+1;m=aDx(51)|0;if((m|0)==0){w=0}else{s=-(m+4|0)&15;c[m+s>>2]=m;w=m+(s+4)|0}s=c[j>>2]|0;m=d+160|0;if((s|0)>0){l=0;do{v=w+(l<<5)|0;n=(c[m>>2]|0)+(l<<5)|0;aDC(v|0,n|0,32)|0;l=l+1|0;}while((l|0)<(s|0))}s=c[m>>2]|0;l=d+164|0;if((s|0)!=0){if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[s-32+28>>2]|0)}c[m>>2]=0}a[l]=1;c[m>>2]=w;c[k>>2]=1;x=(c[j>>2]|0)+1|0;y=w}else{x=1;y=c[d+160>>2]|0}c[j>>2]=x;l=d+160|0;s=y;n=f;aDC(s|0,n|0,32)|0;n=c[l>>2]|0;l=d+136|0;s=c[l>>2]|0;b[n>>1]=b[s>>1]|0;b[n+2>>1]=b[s+2>>1]|0;b[n+4>>1]=b[s+4>>1]|0;b[n+6>>1]=b[s+6>>1]|0;b[n+8>>1]=b[s+8>>1]|0;b[n+10>>1]=b[s+10>>1]|0;c[n+12>>2]=0;s=c[(c[l>>2]|0)+12>>2]|0;c[n+16>>2]=(s|0)>-1?1:-s|0}}while(0);c[d+168>>2]=c[j>>2];j=d+116|0;f=c[j>>2]|0;y=d+120|0;if((f|0)!=0){if((a[y]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[j>>2]=0}a[y]=1;c[j>>2]=0;c[h>>2]=0;c[d+112>>2]=0;h=d+68|0;j=d+76|0;y=c[j>>2]|0;f=d+80|0;if((y|0)==0){a[f]=1;c[j>>2]=0;c[h>>2]=0;z=d+72|0;c[z>>2]=0;i=e;return}if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-64+60>>2]|0)}c[j>>2]=0;a[f]=1;c[j>>2]=0;c[h>>2]=0;z=d+72|0;c[z>>2]=0;i=e;return}function azk(d,f,h){d=d|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,$=0,aa=0,ab=0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0;j=i;i=i+176|0;k=j|0;l=j+32|0;m=j+64|0;n=j+80|0;o=j+144|0;p=j+160|0;q=h-f|0;r=d+56|0;s=c[r>>2]|0;if((q|0)==1){if((a[d+60|0]&1)==0){t=(c[d+96>>2]|0)+(s<<6)|0;u=(c[d+76>>2]|0)+(f<<6)|0;aDC(t|0,u|0,64)|0}else{u=(c[d+136>>2]|0)+(s<<4)|0;t=(c[d+116>>2]|0)+(f<<4)|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2]}c[r>>2]=(c[r>>2]|0)+1;i=j;return}t=(f|0)<(h|0);if(t){u=(a[d+60|0]&1)==0;v=d+76|0;w=d+116|0;x=d+36|0;y=d+40|0;z=d+44|0;A=d+4|0;B=d+8|0;C=d+12|0;D=0.0;E=0.0;F=0.0;G=f;do{if(u){H=c[v>>2]|0;I=+g[H+(G<<6)>>2];J=+g[H+(G<<6)+4>>2];K=+g[H+(G<<6)+8>>2];L=+g[H+(G<<6)+24>>2];M=+g[H+(G<<6)+20>>2];N=+g[H+(G<<6)+16>>2]}else{H=c[w>>2]|0;O=+g[x>>2];P=+g[y>>2];Q=+g[z>>2];R=+g[A>>2];S=+g[B>>2];T=+g[C>>2];I=+((e[H+(G<<4)>>1]|0)>>>0)/O+R;J=+((e[H+(G<<4)+2>>1]|0)>>>0)/P+S;K=+((e[H+(G<<4)+4>>1]|0)>>>0)/Q+T;L=+((e[H+(G<<4)+10>>1]|0)>>>0)/Q+T;M=+((e[H+(G<<4)+8>>1]|0)>>>0)/P+S;N=+((e[H+(G<<4)+6>>1]|0)>>>0)/O+R}F=F+(N+I)*.5;E=E+(M+J)*.5;D=D+(L+K)*.5;G=G+1|0;}while((G|0)<(h|0));K=+(q|0);L=1.0/K;J=F*L;F=E*L;E=D*L;if(u){u=c[v>>2]|0;L=0.0;D=0.0;M=0.0;v=f;while(1){I=(+g[u+(v<<6)+16>>2]+ +g[u+(v<<6)>>2])*.5-J;N=(+g[u+(v<<6)+20>>2]+ +g[u+(v<<6)+4>>2])*.5-F;R=(+g[u+(v<<6)+24>>2]+ +g[u+(v<<6)+8>>2])*.5-E;O=M+I*I;I=D+N*N;N=L+R*R;G=v+1|0;if((G|0)<(h|0)){L=N;D=I;M=O;v=G}else{U=N;V=I;W=O;X=K;break}}}else{v=c[w>>2]|0;M=+g[x>>2];D=+g[y>>2];L=+g[z>>2];O=+g[A>>2];I=+g[B>>2];N=+g[C>>2];R=0.0;S=0.0;P=0.0;C=f;while(1){T=(+((e[v+(C<<4)+6>>1]|0)>>>0)/M+O+(+((e[v+(C<<4)>>1]|0)>>>0)/M+O))*.5-J;Q=(+((e[v+(C<<4)+8>>1]|0)>>>0)/D+I+(+((e[v+(C<<4)+2>>1]|0)>>>0)/D+I))*.5-F;Y=(+((e[v+(C<<4)+10>>1]|0)>>>0)/L+N+(+((e[v+(C<<4)+4>>1]|0)>>>0)/L+N))*.5-E;Z=P+T*T;T=S+Q*Q;Q=R+Y*Y;B=C+1|0;if((B|0)<(h|0)){R=Q;S=T;P=Z;C=B}else{U=Q;V=T;W=Z;X=K;break}}}}else{U=0.0;V=0.0;W=0.0;X=+(q|0)}K=1.0/(X+-1.0);X=W*K;W=V*K;V=U*K;if(X>2]|0;ac=+g[ab+(aa<<6)>>2];ad=+g[ab+(aa<<6)+4>>2];ae=+g[ab+(aa<<6)+8>>2];af=+g[ab+(aa<<6)+24>>2];ag=+g[ab+(aa<<6)+20>>2];ah=+g[ab+(aa<<6)+16>>2]}else{ab=c[y>>2]|0;K=+g[x>>2];U=+g[w>>2];P=+g[u>>2];S=+g[G>>2];R=+g[H>>2];E=+g[$>>2];ac=+((e[ab+(aa<<4)>>1]|0)>>>0)/K+S;ad=+((e[ab+(aa<<4)+2>>1]|0)>>>0)/U+R;ae=+((e[ab+(aa<<4)+4>>1]|0)>>>0)/P+E;af=+((e[ab+(aa<<4)+10>>1]|0)>>>0)/P+E;ag=+((e[ab+(aa<<4)+8>>1]|0)>>>0)/U+R;ah=+((e[ab+(aa<<4)+6>>1]|0)>>>0)/K+S}V=V+(ah+ac)*.5;X=(ag+ad)*.5+X;W=(af+ae)*.5+W;aa=aa+1|0;}while((aa|0)<(h|0));g[C>>2]=V;g[v>>2]=X;g[B>>2]=W;ai=V;aj=X;ak=W}else{ai=0.0;aj=0.0;ak=0.0}W=1.0/+(q|0);g[C>>2]=W*ai;g[v>>2]=W*aj;g[B>>2]=W*ak;ak=+g[o+(_<<2)>>2];if(t){o=d+60|0;B=d+76|0;v=p|0;C=p+4|0;aa=p+8|0;$=p+12|0;H=p+(_<<2)|0;_=m;m=n;n=d+116|0;p=d+36|0;G=d+40|0;u=d+44|0;w=d+4|0;x=d+8|0;y=d+12|0;z=f;A=f;while(1){ab=(a[o]&1)==0;if(ab){al=c[B>>2]|0;am=+g[al+(A<<6)>>2];an=+g[al+(A<<6)+4>>2];ao=+g[al+(A<<6)+8>>2];ap=+g[al+(A<<6)+24>>2];aq=+g[al+(A<<6)+20>>2];ar=+g[al+(A<<6)+16>>2]}else{al=c[n>>2]|0;W=+g[p>>2];aj=+g[G>>2];ai=+g[u>>2];X=+g[w>>2];V=+g[x>>2];ae=+g[y>>2];am=+((e[al+(A<<4)>>1]|0)>>>0)/W+X;an=+((e[al+(A<<4)+2>>1]|0)>>>0)/aj+V;ao=+((e[al+(A<<4)+4>>1]|0)>>>0)/ai+ae;ap=+((e[al+(A<<4)+10>>1]|0)>>>0)/ai+ae;aq=+((e[al+(A<<4)+8>>1]|0)>>>0)/aj+V;ar=+((e[al+(A<<4)+6>>1]|0)>>>0)/W+X}g[v>>2]=(ar+am)*.5;g[C>>2]=(aq+an)*.5;g[aa>>2]=(ap+ao)*.5;g[$>>2]=0.0;if(+g[H>>2]>ak){if(ab){ab=c[B>>2]|0;al=ab+(A<<6)|0;aDC(m|0,al|0,64)|0;as=ab+(z<<6)|0;aDC(al|0,as|0,64)|0;as=(c[B>>2]|0)+(z<<6)|0;aDC(as|0,m|0,64)|0}else{as=c[n>>2]|0;al=as+(A<<4)|0;c[_>>2]=c[al>>2];c[_+4>>2]=c[al+4>>2];c[_+8>>2]=c[al+8>>2];c[_+12>>2]=c[al+12>>2];ab=as+(z<<4)|0;c[al>>2]=c[ab>>2];c[al+4>>2]=c[ab+4>>2];c[al+8>>2]=c[ab+8>>2];c[al+12>>2]=c[ab+12>>2];ab=(c[n>>2]|0)+(z<<4)|0;c[ab>>2]=c[_>>2];c[ab+4>>2]=c[_+4>>2];c[ab+8>>2]=c[_+8>>2];c[ab+12>>2]=c[_+12>>2]}at=z+1|0}else{at=z}ab=A+1|0;if((ab|0)<(h|0)){z=at;A=ab}else{au=at;break}}}else{au=f}at=(q|0)/3|0;if((au|0)>(at+f|0)){if((au|0)<(h-1-at|0)){av=au}else{aw=41}}else{aw=41}if((aw|0)==41){av=(q>>1)+f|0}q=c[r>>2]|0;aw=d+20|0;au=d+60|0;if((a[au]&1)==0){at=(c[d+96>>2]|0)+(q<<6)|0;A=aw;c[at>>2]=c[A>>2];c[at+4>>2]=c[A+4>>2];c[at+8>>2]=c[A+8>>2];c[at+12>>2]=c[A+12>>2]}else{A=c[d+136>>2]|0;ak=(+g[d+24>>2]- +g[d+8>>2])*+g[d+40>>2];ao=(+g[d+28>>2]- +g[d+12>>2])*+g[d+44>>2];b[A+(q<<4)>>1]=~~((+g[aw>>2]- +g[d+4>>2])*+g[d+36>>2])&-2;b[A+(q<<4)+2>>1]=~~ak&-2;b[A+(q<<4)+4>>1]=~~ao&-2}A=c[r>>2]|0;aw=d+4|0;if((a[au]&1)==0){at=(c[d+96>>2]|0)+(A<<6)+16|0;z=aw;c[at>>2]=c[z>>2];c[at+4>>2]=c[z+4>>2];c[at+8>>2]=c[z+8>>2];c[at+12>>2]=c[z+12>>2]}else{z=c[d+136>>2]|0;ao=+g[aw>>2];ak=+g[d+8>>2];ap=+g[d+12>>2];an=(ak-ak)*+g[d+40>>2];ak=(ap-ap)*+g[d+44>>2];b[z+(A<<4)+6>>1]=~~((ao-ao)*+g[d+36>>2]+1.0)|1;b[z+(A<<4)+8>>1]=~~(an+1.0)|1;b[z+(A<<4)+10>>1]=~~(ak+1.0)|1}A=c[r>>2]|0;if(t){t=d+76|0;z=d+116|0;aw=d+36|0;at=d+40|0;_=d+44|0;n=d+4|0;m=d+8|0;B=d+12|0;H=d+96|0;$=d+136|0;aa=f;C=A;while(1){do{if((a[au]&1)==0){v=c[t>>2]|0;ak=+g[v+(aa<<6)>>2];an=+g[v+(aa<<6)+4>>2];ao=+g[v+(aa<<6)+8>>2];ap=+g[v+(aa<<6)+12>>2];aq=+g[v+(aa<<6)+16>>2];am=+g[v+(aa<<6)+20>>2];ar=+g[v+(aa<<6)+24>>2];X=+g[v+(aa<<6)+28>>2];v=c[H>>2]|0;y=v+(C<<6)|0;if(ak<+g[y>>2]){g[y>>2]=ak}y=v+(C<<6)+4|0;if(an<+g[y>>2]){g[y>>2]=an}y=v+(C<<6)+8|0;if(ao<+g[y>>2]){g[y>>2]=ao}y=v+(C<<6)+12|0;if(ap<+g[y>>2]){g[y>>2]=ap}y=c[H>>2]|0;v=y+(C<<6)+16|0;if(+g[v>>2]>2]=aq}v=y+(C<<6)+20|0;if(+g[v>>2]>2]=am}v=y+(C<<6)+24|0;if(+g[v>>2]>2]=ar}v=y+(C<<6)+28|0;if(+g[v>>2]>=X){break}g[v>>2]=X}else{v=c[z>>2]|0;X=+g[aw>>2];ar=+g[at>>2];am=+g[_>>2];aq=+g[n>>2];ap=+g[m>>2];ao=+g[B>>2];an=+g[n>>2];ak=+g[m>>2];W=+g[B>>2];V=+g[aw>>2];aj=+g[at>>2];ae=+g[_>>2];y=~~((+((e[v+(aa<<4)>>1]|0)>>>0)/X+aq-an)*V)&-2;x=~~((+((e[v+(aa<<4)+2>>1]|0)>>>0)/ar+ap-ak)*aj)&-2;w=~~((+((e[v+(aa<<4)+4>>1]|0)>>>0)/am+ao-W)*ae)&-2;u=~~((+((e[v+(aa<<4)+6>>1]|0)>>>0)/X+aq-an)*V+1.0)|1;G=~~((+((e[v+(aa<<4)+8>>1]|0)>>>0)/ar+ap-ak)*aj+1.0)|1;p=~~((+((e[v+(aa<<4)+10>>1]|0)>>>0)/am+ao-W)*ae+1.0)|1;v=c[$>>2]|0;o=v+(C<<4)|0;if((e[o>>1]|0)>(y&65535)){b[o>>1]=y;ax=c[$>>2]|0}else{ax=v}v=ax+(C<<4)+6|0;if((e[v>>1]|0)<(u&65535)){b[v>>1]=u;ay=c[$>>2]|0}else{ay=ax}u=ay+(C<<4)+2|0;if((e[u>>1]|0)>(x&65535)){b[u>>1]=x;az=c[$>>2]|0}else{az=ay}x=az+(C<<4)+8|0;if((e[x>>1]|0)<(G&65535)){b[x>>1]=G;aA=c[$>>2]|0}else{aA=az}G=aA+(C<<4)+4|0;if((e[G>>1]|0)>(w&65535)){b[G>>1]=w;aB=c[$>>2]|0}else{aB=aA}w=aB+(C<<4)+10|0;if((e[w>>1]|0)>=(p&65535)){break}b[w>>1]=p}}while(0);p=aa+1|0;w=c[r>>2]|0;if((p|0)<(h|0)){aa=p;C=w}else{aC=w;break}}}else{aC=A}A=aC+1|0;c[r>>2]=A;azk(d,f,av);f=c[r>>2]|0;azk(d,av,h);h=(c[r>>2]|0)-s|0;s=a[au]|0;do{if((s&1)==0){aD=s}else{if((h<<4|0)<=2048){aD=s;break}r=k;av=l;aC=c[d+136>>2]|0;C=c[aC+(A<<4)+12>>2]|0;aa=(C|0)>-1?1:-C|0;C=c[aC+(f<<4)+12>>2]|0;aB=(C|0)>-1?1:-C|0;C=aB<<4;aA=d+152|0;if((aa<<4|0)<2049){$=c[aA>>2]|0;az=d+156|0;do{if(($|0)==(c[az>>2]|0)){ay=($|0)==0?1:$<<1;if(($|0)>=(ay|0)){aE=$;break}if((ay|0)==0){aF=0;aG=$}else{c[9806]=(c[9806]|0)+1;ax=aDx((ay<<5|4)+15|0)|0;if((ax|0)==0){aH=0}else{_=-(ax+4|0)&15;c[ax+_>>2]=ax;aH=ax+(_+4)|0}aF=aH;aG=c[aA>>2]|0}_=d+160|0;if((aG|0)>0){ax=0;do{at=aF+(ax<<5)|0;aw=(c[_>>2]|0)+(ax<<5)|0;aDC(at|0,aw|0,32)|0;ax=ax+1|0;}while((ax|0)<(aG|0))}ax=c[_>>2]|0;aw=d+164|0;if((ax|0)!=0){if((a[aw]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[ax-32+28>>2]|0)}c[_>>2]=0}a[aw]=1;c[_>>2]=aF;c[az>>2]=ay;aE=c[aA>>2]|0}else{aE=$}}while(0);c[aA>>2]=aE+1;az=d+160|0;aw=(c[az>>2]|0)+($<<5)|0;aDC(aw|0,r|0,32)|0;aw=c[az>>2]|0;b[aw+($<<5)>>1]=b[aC+(A<<4)>>1]|0;b[aw+($<<5)+2>>1]=b[aC+(A<<4)+2>>1]|0;b[aw+($<<5)+4>>1]=b[aC+(A<<4)+4>>1]|0;b[aw+($<<5)+6>>1]=b[aC+(A<<4)+6>>1]|0;b[aw+($<<5)+8>>1]=b[aC+(A<<4)+8>>1]|0;b[aw+($<<5)+10>>1]=b[aC+(A<<4)+10>>1]|0;c[aw+($<<5)+12>>2]=A;c[aw+($<<5)+16>>2]=aa;aI=aA}else{aI=aA}if((C|0)<2049){aw=c[aI>>2]|0;az=d+156|0;do{if((aw|0)==(c[az>>2]|0)){ax=(aw|0)==0?1:aw<<1;if((aw|0)>=(ax|0)){aJ=aw;break}if((ax|0)==0){aK=0;aL=aw}else{c[9806]=(c[9806]|0)+1;at=aDx((ax<<5|4)+15|0)|0;if((at|0)==0){aM=0}else{B=-(at+4|0)&15;c[at+B>>2]=at;aM=at+(B+4)|0}aK=aM;aL=c[aI>>2]|0}B=d+160|0;if((aL|0)>0){at=0;do{m=aK+(at<<5)|0;n=(c[B>>2]|0)+(at<<5)|0;aDC(m|0,n|0,32)|0;at=at+1|0;}while((at|0)<(aL|0))}at=c[B>>2]|0;ay=d+164|0;if((at|0)!=0){if((a[ay]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[at-32+28>>2]|0)}c[B>>2]=0}a[ay]=1;c[B>>2]=aK;c[az>>2]=ax;aJ=c[aI>>2]|0}else{aJ=aw}}while(0);c[aI>>2]=aJ+1;az=d+160|0;C=(c[az>>2]|0)+(aw<<5)|0;aDC(C|0,av|0,32)|0;C=c[az>>2]|0;b[C+(aw<<5)>>1]=b[aC+(f<<4)>>1]|0;b[C+(aw<<5)+2>>1]=b[aC+(f<<4)+2>>1]|0;b[C+(aw<<5)+4>>1]=b[aC+(f<<4)+4>>1]|0;b[C+(aw<<5)+6>>1]=b[aC+(f<<4)+6>>1]|0;b[C+(aw<<5)+8>>1]=b[aC+(f<<4)+8>>1]|0;b[C+(aw<<5)+10>>1]=b[aC+(f<<4)+10>>1]|0;c[C+(aw<<5)+12>>2]=f;c[C+(aw<<5)+16>>2]=aB}c[d+168>>2]=c[aI>>2];aD=a[au]|0}}while(0);if((aD&1)==0){c[(c[d+96>>2]|0)+(q<<6)+32>>2]=h;i=j;return}else{c[(c[d+136>>2]|0)+(q<<4)+12>>2]=-h;i=j;return}}function azl(a){a=a|0;azm(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-172+168>>2]|0);return}function azm(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=25328;d=b+152|0;e=b+160|0;f=c[e>>2]|0;g=b+164|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+156>>2]=0;d=b+128|0;e=b+136|0;g=c[e>>2]|0;f=b+140|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-16+12>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+132>>2]=0;d=b+108|0;e=b+116|0;f=c[e>>2]|0;g=b+120|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+112>>2]=0;d=b+88|0;e=b+96|0;g=c[e>>2]|0;f=b+100|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-64+60>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+92>>2]=0;d=b+68|0;e=b+76|0;f=c[e>>2]|0;g=b+80|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+72|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-64+60>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+72|0;c[h>>2]=0;return}function azn(d,f,h,j){d=d|0;f=f|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0;k=i;i=i+16|0;l=k|0;m=k+8|0;if((a[d+60|0]&1)==0){n=d+56|0;o=c[n>>2]|0;L213:do{if((o|0)>0){p=h|0;q=h+8|0;r=h+4|0;s=j+4|0;t=f;u=j+8|0;v=j|0;w=1;x=0;y=c[d+96>>2]|0;z=o;while(1){do{if(+g[p>>2]>+g[y+16>>2]){A=0}else{if(+g[v>>2]<+g[y>>2]){A=0;break}A=1}}while(0);do{if(+g[q>>2]>+g[y+24>>2]){B=0}else{if(+g[u>>2]<+g[y+8>>2]){B=0;break}B=A}}while(0);do{if(+g[r>>2]>+g[y+20>>2]){C=192}else{if(+g[s>>2]<+g[y+4>>2]){C=192;break}D=c[y+32>>2]|0;E=(D|0)==-1;if(!(E&B)){F=B;G=E;H=D;C=195;break}dA[c[(c[t>>2]|0)+8>>2]&511](f,c[y+36>>2]|0,c[y+40>>2]|0);I=c[n>>2]|0;C=196}}while(0);if((C|0)==192){C=0;D=c[y+32>>2]|0;F=0;G=(D|0)==-1;H=D;C=195}do{if((C|0)==195){C=0;if(F|G){I=z;C=196;break}J=y+(H<<6)|0;K=H+x|0;L=z}}while(0);if((C|0)==196){C=0;J=y+64|0;K=x+1|0;L=I}if((K|0)>=(L|0)){M=w;break L213}w=w+1|0;x=K;y=J;z=L}}else{M=0}}while(0);if((c[9788]|0)>=(M|0)){i=k;return}c[9788]=M;i=k;return}M=l|0;N=+g[h>>2];O=+g[h+4>>2];P=+g[h+8>>2];Q=+g[d+4>>2];R=N>2];S=O>2];T=P>2];U=+g[d+24>>2];V=+g[d+28>>2];W=+g[d+36>>2];X=+g[d+40>>2];Y=+g[d+44>>2];h=~~(((P>1]=h;L=~~(((U>1]=L;J=~~(((V>1]=J;l=m|0;T=+g[j>>2];S=+g[j+4>>2];R=+g[j+8>>2];Z=T>1]=j;K=~~(((U>1]=K;I=~~(((V>1]=I;m=c[d+144>>2]|0;if((m|0)==2){azo(c[d+136>>2]|0,f,M,l);i=k;return}else if((m|0)==0){l=c[d+56>>2]|0;L249:do{if((l|0)>0){M=f;C=c[d+136>>2]|0;H=1;G=0;while(1){F=C+12|0;n=c[F>>2]|0;B=(n|0)>-1;A=(-((h&65535)<=(e[C+6>>1]|0)&(j&65535)>=(e[C>>1]|0)&(J&65535)<=(e[C+10>>1]|0)&(I&65535)>=(e[C+4>>1]|0)&(L&65535)<=(e[C+8>>1]|0)&(K&65535)>=(e[C+2>>1]|0)&1)&1|0)==0;if(!(A|B^1)){dA[c[(c[M>>2]|0)+8>>2]&511](f,n>>21,n&2097151)}if(B|A^1){_=G+1|0;$=C+16|0}else{A=c[F>>2]|0;_=G-A|0;$=C+(-A<<4)|0}if((_|0)>=(l|0)){aa=H;break L249}C=$;H=H+1|0;G=_}}else{aa=0}}while(0);if((c[9788]|0)>=(aa|0)){i=k;return}c[9788]=aa;i=k;return}else if((m|0)==1){m=d+152|0;aa=c[m>>2]|0;if((aa|0)<=0){i=k;return}_=d+160|0;$=d+136|0;d=f;l=0;G=aa;while(1){aa=c[_>>2]|0;if((-((h&65535)<=(e[aa+(l<<5)+6>>1]|0)&(j&65535)>=(e[aa+(l<<5)>>1]|0)&(J&65535)<=(e[aa+(l<<5)+10>>1]|0)&(I&65535)>=(e[aa+(l<<5)+4>>1]|0)&(L&65535)<=(e[aa+(l<<5)+8>>1]|0)&(K&65535)>=(e[aa+(l<<5)+2>>1]|0)&1)&1|0)==0){ab=G}else{H=c[aa+(l<<5)+12>>2]|0;C=c[aa+(l<<5)+16>>2]|0;aa=C+H|0;L274:do{if((C|0)>0){M=(c[$>>2]|0)+(H<<4)|0;A=1;F=H;while(1){B=M+12|0;n=c[B>>2]|0;o=(n|0)>-1;z=(-((h&65535)<=(e[M+6>>1]|0)&(j&65535)>=(e[M>>1]|0)&(J&65535)<=(e[M+10>>1]|0)&(I&65535)>=(e[M+4>>1]|0)&(L&65535)<=(e[M+8>>1]|0)&(K&65535)>=(e[M+2>>1]|0)&1)&1|0)==0;if(!(z|o^1)){dA[c[(c[d>>2]|0)+8>>2]&511](f,n>>21,n&2097151)}if(o|z^1){ac=F+1|0;ad=M+16|0}else{z=c[B>>2]|0;ac=F-z|0;ad=M+(-z<<4)|0}if((ac|0)>=(aa|0)){ae=A;break L274}M=ad;A=A+1|0;F=ac}}else{ae=0}}while(0);if((c[9788]|0)<(ae|0)){c[9788]=ae}ab=c[m>>2]|0}aa=l+1|0;if((aa|0)<(ab|0)){l=aa;G=ab}else{break}}i=k;return}else{i=k;return}}function azo(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=d+4|0;h=f+4|0;i=d+2|0;j=f+2|0;k=a;while(1){l=c[k+12>>2]|0;if((-((e[d>>1]|0)<=(e[k+6>>1]|0)&(e[f>>1]|0)>=(e[k>>1]|0)&(e[g>>1]|0)<=(e[k+10>>1]|0)&(e[h>>1]|0)>=(e[k+4>>1]|0)&(e[i>>1]|0)<=(e[k+8>>1]|0)&(e[j>>1]|0)>=(e[k+2>>1]|0)&1)&1|0)==0){m=219;break}if((l|0)>-1){break}azo(k+16|0,b,d,f);a=c[k+28>>2]|0;if((a|0)>-1){k=k+32|0;continue}else{k=k+(1-a<<4)|0;continue}}if((m|0)==219){return}dA[c[(c[b>>2]|0)+8>>2]&511](b,l>>21,l&2097151);return}function azp(a,b,d,e,f,h,j,k){a=a|0;b=b|0;d=d|0;e=+e;f=+f;h=+h;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0,x=0.0,y=0.0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0.0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0;l=i;i=i+32|0;m=l|0;n=c[a+96>>2]|0;o=d|0;p=+g[o>>2];q=d+4|0;r=+g[q>>2];s=d+8|0;t=+g[s>>2];d=j|0;u=+g[d>>2];v=(p>e?e:p)+u;w=j+4|0;x=+g[w>>2];y=(r>f?f:r)+x;z=j+8|0;A=+g[z>>2];B=(t>h?h:t)+A;j=k|0;C=+g[j>>2];D=(p>2];G=(r>2];J=(t>2]|0;L314:do{if((a|0)>0){S=m;T=m+16|0;U=T;V=m|0;W=m+4|0;X=m+8|0;Y=T|0;T=m+20|0;Z=m+24|0;_=m+(k<<4)|0;$=m+((k^1)<<4)|0;aa=m+(O<<4)+4|0;ab=m+((O^1)<<4)+4|0;ac=m+(P<<4)+8|0;ad=m+((P^1)<<4)+8|0;ae=b;af=0;ag=1;ah=n;e=C;f=F;h=I;p=u;K=x;r=A;ai=a;while(1){aj=ah;c[S>>2]=c[aj>>2];c[S+4>>2]=c[aj+4>>2];c[S+8>>2]=c[aj+8>>2];c[S+12>>2]=c[aj+12>>2];aj=ah+16|0;ak=aj;c[U>>2]=c[ak>>2];c[U+4>>2]=c[ak+4>>2];c[U+8>>2]=c[ak+8>>2];c[U+12>>2]=c[ak+12>>2];g[V>>2]=+g[V>>2]-e;g[W>>2]=+g[W>>2]-f;g[X>>2]=+g[X>>2]-h;g[Y>>2]=+g[Y>>2]-p;g[T>>2]=+g[T>>2]-K;g[Z>>2]=+g[Z>>2]-r;do{if(v>+g[aj>>2]){al=0}else{if(D<+g[ah>>2]){al=0;break}al=1}}while(0);do{if(B>+g[ah+24>>2]){am=0}else{if(J<+g[ah+8>>2]){am=0;break}am=al}}while(0);do{if(y>+g[ah+20>>2]){an=240}else{if(G<+g[ah+4>>2]|am^1){an=240;break}ao=+g[o>>2];ap=L*(+g[_>>2]-ao);aq=L*(+g[$>>2]-ao);ao=+g[q>>2];ar=M*(+g[aa>>2]-ao);as=M*(+g[ab>>2]-ao);if(ap>as|ar>aq){an=240;break}ao=ar>ap?ar:ap;ap=as>2];as=N*(+g[ac>>2]-aq);ar=N*(+g[ad>>2]-aq);if(ao>ar|as>ap){an=240;break}if((as>ao?as:ao)>=t){an=240;break}aj=(ar0.0;ak=c[ah+32>>2]|0;at=(ak|0)==-1;if(!(at&aj)){au=aj;av=at;aw=ak;an=243;break}dA[c[(c[ae>>2]|0)+8>>2]&511](b,c[ah+36>>2]|0,c[ah+40>>2]|0);ax=c[R>>2]|0;an=244}}while(0);if((an|0)==240){an=0;ak=c[ah+32>>2]|0;au=0;av=(ak|0)==-1;aw=ak;an=243}do{if((an|0)==243){an=0;if(au|av){ax=ai;an=244;break}ay=ah+(aw<<6)|0;az=aw+af|0;aA=ai}}while(0);if((an|0)==244){an=0;ay=ah+64|0;az=af+1|0;aA=ax}if((az|0)>=(aA|0)){aB=ag;break L314}af=az;ag=ag+1|0;ah=ay;e=+g[j>>2];f=+g[E>>2];h=+g[H>>2];p=+g[d>>2];K=+g[w>>2];r=+g[z>>2];ai=aA}}else{aB=0}}while(0);if((c[9788]|0)>=(aB|0)){i=l;return}c[9788]=aB;i=l;return}function azq(a,d,f,h,j,k,l,m,n){a=a|0;d=d|0;f=f|0;h=+h;j=+j;k=+k;l=l|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0.0,w=0.0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0.0,T=0,U=0.0,V=0,W=0.0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0;o=i;i=i+32|0;p=o|0;q=c[a+136>>2]|0;r=f|0;s=+g[r>>2];t=h-s;u=f+4|0;v=+g[u>>2];w=j-v;x=f+8|0;y=+g[x>>2];z=k-y;A=1.0/+Q(+(t*t+w*w+z*z));B=t*A;C=w*A;D=z*A;A=z*D+(t*B+w*C);if(B==0.0){E=999999984306749400.0}else{E=1.0/B}if(C==0.0){F=999999984306749400.0}else{F=1.0/C}if(D==0.0){G=999999984306749400.0}else{G=1.0/D}f=E<0.0|0;H=F<0.0|0;I=G<0.0|0;J=l|0;D=(s>h?h:s)+ +g[J>>2];K=l+4|0;C=(v>j?j:v)+ +g[K>>2];L=l+8|0;B=(y>k?k:y)+ +g[L>>2];l=m|0;w=(s>2];M=m+4|0;s=(v>2];N=m+8|0;v=(y>2];m=a+4|0;y=+g[m>>2];k=D>2];j=C>2];h=B>2];t=+g[a+24>>2];z=+g[a+28>>2];R=a+36|0;S=+g[R>>2];T=a+40|0;U=+g[T>>2];V=a+44|0;W=+g[V>>2];a=~~(((B0){aa=p|0;ab=p+4|0;ac=p+8|0;ad=p+12|0;ae=p+16|0;af=p+20|0;ag=p+24|0;ah=p+28|0;ai=p+(f<<4)|0;aj=p+((f^1)<<4)|0;f=p+(H<<4)+4|0;ak=p+((H^1)<<4)+4|0;H=d;al=p+(I<<4)+8|0;am=p+((I^1)<<4)+8|0;I=q;q=0;p=0;while(1){an=q+1|0;ao=I+6|0;ap=b[I>>1]|0;aq=I+10|0;ar=b[I+4>>1]|0;as=I+8|0;at=b[I+2>>1]|0;au=I+12|0;av=(c[au>>2]|0)>-1;do{if((-((a&65535)<=(e[ao>>1]|0)&(Z&65535)>=(ap&65535)&(Y&65535)<=(e[aq>>1]|0)&($&65535)>=(ar&65535)&(X&65535)<=(e[as>>1]|0)&(_&65535)>=(at&65535)&1)&1|0)==0){aw=1;ax=267}else{W=+g[R>>2];C=+g[T>>2];s=+g[V>>2];z=+g[m>>2];U=+((ap&65535)>>>0)/W+z;D=+g[O>>2];w=+((at&65535)>>>0)/C+D;t=+g[P>>2];S=+((ar&65535)>>>0)/s+t;g[aa>>2]=U;g[ab>>2]=w;g[ac>>2]=S;g[ad>>2]=0.0;y=+((e[ao>>1]|0)>>>0)/W+z;z=+((e[as>>1]|0)>>>0)/C+D;D=+((e[aq>>1]|0)>>>0)/s+t;g[ah>>2]=0.0;g[aa>>2]=U- +g[l>>2];g[ab>>2]=w- +g[M>>2];g[ac>>2]=S- +g[N>>2];g[ae>>2]=y- +g[J>>2];g[af>>2]=z- +g[K>>2];g[ag>>2]=D- +g[L>>2];D=+g[r>>2];z=E*(+g[ai>>2]-D);y=E*(+g[aj>>2]-D);D=+g[u>>2];S=F*(+g[f>>2]-D);w=F*(+g[ak>>2]-D);if(z>w|S>y){aw=1;ax=267;break}D=S>z?S:z;z=w>2];w=G*(+g[al>>2]-y);S=G*(+g[am>>2]-y);if(D>S|w>z){aw=1;ax=267;break}if((w>D?w:D)>=A){aw=1;ax=267;break}ay=(S>2]|0;dA[c[(c[H>>2]|0)+8>>2]&511](d,ay>>21,ay&2097151);ax=268}}while(0);do{if((ax|0)==267){ax=0;if(av|aw^1){ax=268;break}aq=c[au>>2]|0;az=p-aq|0;aA=I+(-aq<<4)|0}}while(0);if((ax|0)==268){ax=0;az=p+1|0;aA=I+16|0}if((az|0)<(n|0)){I=aA;q=an;p=az}else{aB=an;break}}}else{aB=0}if((c[9788]|0)>=(aB|0)){i=o;return}c[9788]=aB;i=o;return}function azr(d,e,f,h){d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;f=d+168|0;c[f>>2]=c[d+152>>2];c[e>>2]=25328;c[e+52>>2]=278;i=e+60|0;a[i]=0;a[e+80|0]=1;c[e+76>>2]=0;c[e+68>>2]=0;c[e+72>>2]=0;j=e+100|0;a[j]=1;k=e+96|0;c[k>>2]=0;l=e+88|0;m=l;c[m>>2]=0;n=e+92|0;c[n>>2]=0;a[e+120|0]=1;c[e+116>>2]=0;c[e+108>>2]=0;c[e+112>>2]=0;o=e+140|0;a[o]=1;p=e+136|0;c[p>>2]=0;q=e+128|0;r=q;c[r>>2]=0;s=e+132|0;c[s>>2]=0;t=e+144|0;c[t>>2]=0;u=e+164|0;a[u]=1;v=e+160|0;c[v>>2]=0;w=e+152|0;x=w;c[x>>2]=0;y=e+156|0;c[y>>2]=0;z=e+168|0;c[z>>2]=0;A=e+4|0;g[A>>2]=-3.4028234663852886e+38;B=e+8|0;g[B>>2]=-3.4028234663852886e+38;C=e+12|0;g[C>>2]=-3.4028234663852886e+38;D=e+16|0;g[D>>2]=0.0;E=e+20|0;g[E>>2]=3.4028234663852886e+38;F=e+24|0;g[F>>2]=3.4028234663852886e+38;G=e+28|0;g[G>>2]=3.4028234663852886e+38;H=e+32|0;g[H>>2]=0.0;I=d+56|0;J=c[I>>2]|0;if(h){c[e+56>>2]=cj(J|0)|0;K=d+4|0;a[A]=a[K+3|0]|0;a[e+5|0]=a[K+2|0]|0;a[e+6|0]=a[K+1|0]|0;a[e+7|0]=a[K]|0;K=d+8|0;a[B]=a[K+3|0]|0;a[e+9|0]=a[K+2|0]|0;a[e+10|0]=a[K+1|0]|0;a[e+11|0]=a[K]|0;K=d+12|0;a[C]=a[K+3|0]|0;a[e+13|0]=a[K+2|0]|0;a[e+14|0]=a[K+1|0]|0;a[e+15|0]=a[K]|0;K=d+16|0;a[D]=a[K+3|0]|0;a[e+17|0]=a[K+2|0]|0;a[e+18|0]=a[K+1|0]|0;a[e+19|0]=a[K]|0;K=d+20|0;a[E]=a[K+3|0]|0;a[e+21|0]=a[K+2|0]|0;a[e+22|0]=a[K+1|0]|0;a[e+23|0]=a[K]|0;K=d+24|0;a[F]=a[K+3|0]|0;a[e+25|0]=a[K+2|0]|0;a[e+26|0]=a[K+1|0]|0;a[e+27|0]=a[K]|0;K=d+28|0;a[G]=a[K+3|0]|0;a[e+29|0]=a[K+2|0]|0;a[e+30|0]=a[K+1|0]|0;a[e+31|0]=a[K]|0;K=d+32|0;a[H]=a[K+3|0]|0;a[e+33|0]=a[K+2|0]|0;a[e+34|0]=a[K+1|0]|0;a[e+35|0]=a[K]|0;K=d+36|0;a[e+36|0]=a[K+3|0]|0;a[e+37|0]=a[K+2|0]|0;a[e+38|0]=a[K+1|0]|0;a[e+39|0]=a[K]|0;K=d+40|0;a[e+40|0]=a[K+3|0]|0;a[e+41|0]=a[K+2|0]|0;a[e+42|0]=a[K+1|0]|0;a[e+43|0]=a[K]|0;K=d+44|0;a[e+44|0]=a[K+3|0]|0;a[e+45|0]=a[K+2|0]|0;a[e+46|0]=a[K+1|0]|0;a[e+47|0]=a[K]|0;K=d+48|0;a[e+48|0]=a[K+3|0]|0;a[e+49|0]=a[K+2|0]|0;a[e+50|0]=a[K+1|0]|0;a[e+51|0]=a[K]|0;c[t>>2]=cj(c[d+144>>2]|0)|0;L=cj(c[f>>2]|0)|0}else{c[e+56>>2]=J;J=d+4|0;c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];J=d+20|0;c[E>>2]=c[J>>2];c[E+4>>2]=c[J+4>>2];c[E+8>>2]=c[J+8>>2];c[E+12>>2]=c[J+12>>2];J=e+36|0;E=d+36|0;c[J>>2]=c[E>>2];c[J+4>>2]=c[E+4>>2];c[J+8>>2]=c[E+8>>2];c[J+12>>2]=c[E+12>>2];c[t>>2]=c[d+144>>2];L=c[f>>2]|0}c[z>>2]=L;L=d+60|0;a[i]=a[L]&1;i=e+172|0;z=c[I>>2]|0;if((a[L]&1)==0){L=i;aDD(l|0,0,13);c[k>>2]=L;c[m>>2]=z;c[n>>2]=z;n=(z|0)>0;L404:do{if(h){if(!n){break}m=d+96|0;I=0;t=L;while(1){E=c[m>>2]|0;J=t+(I<<6)|0;A=E+(I<<6)|0;a[J]=a[A+3|0]|0;a[J+1|0]=a[A+2|0]|0;a[J+2|0]=a[A+1|0]|0;a[J+3|0]=a[A]|0;A=t+(I<<6)+4|0;J=E+(I<<6)+4|0;a[A]=a[J+3|0]|0;a[A+1|0]=a[J+2|0]|0;a[A+2|0]=a[J+1|0]|0;a[A+3|0]=a[J]|0;J=t+(I<<6)+8|0;A=E+(I<<6)+8|0;a[J]=a[A+3|0]|0;a[J+1|0]=a[A+2|0]|0;a[J+2|0]=a[A+1|0]|0;a[J+3|0]=a[A]|0;A=t+(I<<6)+12|0;J=E+(I<<6)+12|0;a[A]=a[J+3|0]|0;a[A+1|0]=a[J+2|0]|0;a[A+2|0]=a[J+1|0]|0;a[A+3|0]=a[J]|0;J=c[m>>2]|0;A=c[k>>2]|0;E=A+(I<<6)+16|0;K=J+(I<<6)+16|0;a[E]=a[K+3|0]|0;a[E+1|0]=a[K+2|0]|0;a[E+2|0]=a[K+1|0]|0;a[E+3|0]=a[K]|0;K=A+(I<<6)+20|0;E=J+(I<<6)+20|0;a[K]=a[E+3|0]|0;a[K+1|0]=a[E+2|0]|0;a[K+2|0]=a[E+1|0]|0;a[K+3|0]=a[E]|0;E=A+(I<<6)+24|0;K=J+(I<<6)+24|0;a[E]=a[K+3|0]|0;a[E+1|0]=a[K+2|0]|0;a[E+2|0]=a[K+1|0]|0;a[E+3|0]=a[K]|0;K=A+(I<<6)+28|0;A=J+(I<<6)+28|0;a[K]=a[A+3|0]|0;a[K+1|0]=a[A+2|0]|0;a[K+2|0]=a[A+1|0]|0;a[K+3|0]=a[A]|0;A=cj(c[(c[m>>2]|0)+(I<<6)+32>>2]|0)|0;c[(c[k>>2]|0)+(I<<6)+32>>2]=A;A=cj(c[(c[m>>2]|0)+(I<<6)+36>>2]|0)|0;c[(c[k>>2]|0)+(I<<6)+36>>2]=A;A=cj(c[(c[m>>2]|0)+(I<<6)+40>>2]|0)|0;c[(c[k>>2]|0)+(I<<6)+40>>2]=A;A=I+1|0;if((A|0)>=(z|0)){break L404}I=A;t=c[k>>2]|0}}else{if(!n){break}t=d+96|0;I=0;m=L;while(1){A=m+(I<<6)|0;K=(c[t>>2]|0)+(I<<6)|0;c[A>>2]=c[K>>2];c[A+4>>2]=c[K+4>>2];c[A+8>>2]=c[K+8>>2];c[A+12>>2]=c[K+12>>2];K=(c[k>>2]|0)+(I<<6)+16|0;A=(c[t>>2]|0)+(I<<6)+16|0;c[K>>2]=c[A>>2];c[K+4>>2]=c[A+4>>2];c[K+8>>2]=c[A+8>>2];c[K+12>>2]=c[A+12>>2];c[(c[k>>2]|0)+(I<<6)+32>>2]=c[(c[t>>2]|0)+(I<<6)+32>>2];c[(c[k>>2]|0)+(I<<6)+36>>2]=c[(c[t>>2]|0)+(I<<6)+36>>2];c[(c[k>>2]|0)+(I<<6)+40>>2]=c[(c[t>>2]|0)+(I<<6)+40>>2];A=I+1|0;if((A|0)>=(z|0)){break L404}I=A;m=c[k>>2]|0}}}while(0);L=z<<6;n=c[k>>2]|0;if((n|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-64+60>>2]|0)}c[k>>2]=0}aDD(l|0,0,13);M=L}else{L=i;aDD(q|0,0,13);c[p>>2]=L;c[r>>2]=z;c[s>>2]=z;s=(z|0)>0;L385:do{if(h){if(!s){break}r=d+136|0;i=0;l=L;while(1){b[l+(i<<4)>>1]=bX(b[(c[r>>2]|0)+(i<<4)>>1]|0)|0;k=bX(b[(c[r>>2]|0)+(i<<4)+2>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+2>>1]=k;k=bX(b[(c[r>>2]|0)+(i<<4)+4>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+4>>1]=k;k=bX(b[(c[r>>2]|0)+(i<<4)+6>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+6>>1]=k;k=bX(b[(c[r>>2]|0)+(i<<4)+8>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+8>>1]=k;k=bX(b[(c[r>>2]|0)+(i<<4)+10>>1]|0)|0;b[(c[p>>2]|0)+(i<<4)+10>>1]=k;k=cj(c[(c[r>>2]|0)+(i<<4)+12>>2]|0)|0;c[(c[p>>2]|0)+(i<<4)+12>>2]=k;k=i+1|0;if((k|0)>=(z|0)){break L385}i=k;l=c[p>>2]|0}}else{if(!s){break}l=d+136|0;i=0;r=L;while(1){b[r+(i<<4)>>1]=b[(c[l>>2]|0)+(i<<4)>>1]|0;b[(c[p>>2]|0)+(i<<4)+2>>1]=b[(c[l>>2]|0)+(i<<4)+2>>1]|0;b[(c[p>>2]|0)+(i<<4)+4>>1]=b[(c[l>>2]|0)+(i<<4)+4>>1]|0;b[(c[p>>2]|0)+(i<<4)+6>>1]=b[(c[l>>2]|0)+(i<<4)+6>>1]|0;b[(c[p>>2]|0)+(i<<4)+8>>1]=b[(c[l>>2]|0)+(i<<4)+8>>1]|0;b[(c[p>>2]|0)+(i<<4)+10>>1]=b[(c[l>>2]|0)+(i<<4)+10>>1]|0;c[(c[p>>2]|0)+(i<<4)+12>>2]=c[(c[l>>2]|0)+(i<<4)+12>>2];k=i+1|0;if((k|0)>=(z|0)){break L385}i=k;r=c[p>>2]|0}}}while(0);L=z<<4;z=c[p>>2]|0;if((z|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[z-16+12>>2]|0)}c[p>>2]=0}aDD(q|0,0,13);M=L}L=e+(M+172)|0;M=c[f>>2]|0;q=c[v>>2]|0;if((q|0)!=0){if((a[u]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-32+28>>2]|0)}c[v>>2]=0}q=L;aDD(w|0,0,13);c[v>>2]=q;c[x>>2]=M;c[y>>2]=M;M=(c[f>>2]|0)>0;L429:do{if(h){if(!M){break}y=d+160|0;x=0;L=q;while(1){b[L+(x<<5)>>1]=bX(b[(c[y>>2]|0)+(x<<5)>>1]|0)|0;p=bX(b[(c[y>>2]|0)+(x<<5)+2>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+2>>1]=p;p=bX(b[(c[y>>2]|0)+(x<<5)+4>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+4>>1]=p;p=bX(b[(c[y>>2]|0)+(x<<5)+6>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+6>>1]=p;p=bX(b[(c[y>>2]|0)+(x<<5)+8>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+8>>1]=p;p=bX(b[(c[y>>2]|0)+(x<<5)+10>>1]|0)|0;b[(c[v>>2]|0)+(x<<5)+10>>1]=p;p=cj(c[(c[y>>2]|0)+(x<<5)+12>>2]|0)|0;c[(c[v>>2]|0)+(x<<5)+12>>2]=p;p=cj(c[(c[y>>2]|0)+(x<<5)+16>>2]|0)|0;c[(c[v>>2]|0)+(x<<5)+16>>2]=p;p=x+1|0;if((p|0)>=(c[f>>2]|0)){break L429}x=p;L=c[v>>2]|0}}else{if(!M){break}L=d+160|0;x=0;y=q;while(1){b[y+(x<<5)>>1]=b[(c[L>>2]|0)+(x<<5)>>1]|0;b[(c[v>>2]|0)+(x<<5)+2>>1]=b[(c[L>>2]|0)+(x<<5)+2>>1]|0;b[(c[v>>2]|0)+(x<<5)+4>>1]=b[(c[L>>2]|0)+(x<<5)+4>>1]|0;b[(c[v>>2]|0)+(x<<5)+6>>1]=b[(c[L>>2]|0)+(x<<5)+6>>1]|0;b[(c[v>>2]|0)+(x<<5)+8>>1]=b[(c[L>>2]|0)+(x<<5)+8>>1]|0;b[(c[v>>2]|0)+(x<<5)+10>>1]=b[(c[L>>2]|0)+(x<<5)+10>>1]|0;c[(c[v>>2]|0)+(x<<5)+12>>2]=c[(c[L>>2]|0)+(x<<5)+12>>2];c[(c[v>>2]|0)+(x<<5)+16>>2]=c[(c[L>>2]|0)+(x<<5)+16>>2];c[(c[v>>2]|0)+(x<<5)+20>>2]=0;c[(c[v>>2]|0)+(x<<5)+24>>2]=0;c[(c[v>>2]|0)+(x<<5)+28>>2]=0;p=x+1|0;if((p|0)>=(c[f>>2]|0)){break L429}x=p;y=c[v>>2]|0}}}while(0);f=c[v>>2]|0;if((f|0)==0){N=e;c[N>>2]=0;aDD(w|0,0,13);return 1}if((a[u]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}c[v>>2]=0;N=e;c[N>>2]=0;aDD(w|0,0,13);return 1}function azs(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;if((d|0)==0){g=0;return g|0}h=d;if(f){i=d+56|0;j=cj(c[i>>2]|0)|0;c[i>>2]=j;i=d+4|0;k=d+7|0;l=d+6|0;m=a[l]|0;n=d+5|0;o=a[n]|0;p=a[i]|0;q=d+8|0;r=d+11|0;s=a[r]|0;t=d+10|0;u=a[t]|0;v=d+9|0;w=a[v]|0;x=a[q]|0;y=d+12|0;z=d+15|0;A=a[z]|0;B=d+14|0;C=a[B]|0;D=d+13|0;E=a[D]|0;F=a[y]|0;G=d+16|0;H=d+19|0;I=a[H]|0;J=d+18|0;K=a[J]|0;L=d+17|0;M=a[L]|0;N=a[G]|0;a[i]=a[k]|0;a[n]=m;a[l]=o;a[k]=p;a[q]=s;a[v]=u;a[t]=w;a[r]=x;a[y]=A;a[D]=C;a[B]=E;a[z]=F;a[G]=I;a[L]=K;a[J]=M;a[H]=N;N=d+20|0;H=d+23|0;M=d+22|0;J=a[M]|0;K=d+21|0;L=a[K]|0;I=a[N]|0;G=d+24|0;F=d+27|0;z=a[F]|0;E=d+26|0;B=a[E]|0;C=d+25|0;D=a[C]|0;A=a[G]|0;y=d+28|0;x=d+31|0;r=a[x]|0;w=d+30|0;t=a[w]|0;u=d+29|0;v=a[u]|0;s=a[y]|0;q=d+32|0;p=d+35|0;k=a[p]|0;o=d+34|0;l=a[o]|0;m=d+33|0;n=a[m]|0;i=a[q]|0;a[N]=a[H]|0;a[K]=J;a[M]=L;a[H]=I;a[G]=z;a[C]=B;a[E]=D;a[F]=A;a[y]=r;a[u]=t;a[w]=v;a[x]=s;a[q]=k;a[m]=l;a[o]=n;a[p]=i;i=d+36|0;p=d+39|0;n=d+38|0;o=a[n]|0;l=d+37|0;m=a[l]|0;k=a[i]|0;q=d+40|0;s=d+43|0;x=a[s]|0;v=d+42|0;w=a[v]|0;t=d+41|0;u=a[t]|0;r=a[q]|0;y=d+44|0;A=d+47|0;F=a[A]|0;D=d+46|0;E=a[D]|0;B=d+45|0;C=a[B]|0;z=a[y]|0;G=d+48|0;I=d+51|0;H=a[I]|0;L=d+50|0;M=a[L]|0;J=d+49|0;K=a[J]|0;N=a[G]|0;a[i]=a[p]|0;a[l]=o;a[n]=m;a[p]=k;a[q]=x;a[t]=w;a[v]=u;a[s]=r;a[y]=F;a[B]=E;a[D]=C;a[A]=z;a[G]=H;a[J]=M;a[L]=K;a[I]=N;N=d+144|0;c[N>>2]=cj(c[N>>2]|0)|0;N=d+168|0;I=cj(c[N>>2]|0)|0;c[N>>2]=I;O=I;P=j}else{O=c[d+168>>2]|0;P=c[d+56>>2]|0}j=d+168|0;I=(a[d+60|0]&1)==0;if(((O<<5)+172+(P<<(I?6:4))|0)>>>0>e>>>0){g=0;return g|0}e=d+172|0;c[d>>2]=25328;c[d+52>>2]=278;a[d+80|0]=1;c[d+76>>2]=0;c[d+68>>2]=0;c[d+72>>2]=0;a[d+100|0]=1;O=d+96|0;c[O>>2]=0;N=d+88|0;K=N;c[K>>2]=0;L=d+92|0;c[L>>2]=0;a[d+120|0]=1;c[d+116>>2]=0;c[d+108>>2]=0;c[d+112>>2]=0;a[d+140|0]=1;M=d+136|0;c[M>>2]=0;J=d+128|0;H=J;c[H>>2]=0;G=d+132|0;c[G>>2]=0;z=d+164|0;a[z]=1;A=d+160|0;c[A>>2]=0;C=d+152|0;D=C;c[D>>2]=0;E=d+156|0;c[E>>2]=0;if(I){I=e;aDD(N|0,0,13);c[O>>2]=I;c[K>>2]=P;c[L>>2]=P;L467:do{if((P|0)>0&f){L=0;K=I;while(1){N=K+(L<<6)|0;B=N+3|0;F=N+2|0;y=a[F]|0;r=N+1|0;s=a[r]|0;u=a[N]|0;v=K+(L<<6)+4|0;w=a[v+3|0]|0;t=a[v+2|0]|0;x=a[v+1|0]|0;q=a[v]|0;k=K+(L<<6)+8|0;p=a[k+3|0]|0;m=a[k+2|0]|0;n=a[k+1|0]|0;o=a[k]|0;l=K+(L<<6)+12|0;i=a[l+3|0]|0;Q=a[l+2|0]|0;R=a[l+1|0]|0;S=a[l]|0;a[N]=a[B]|0;a[r]=y;a[F]=s;a[B]=u;a[v]=w;a[N+5|0]=t;a[N+6|0]=x;a[N+7|0]=q;a[k]=p;a[N+9|0]=m;a[N+10|0]=n;a[N+11|0]=o;a[l]=i;a[N+13|0]=Q;a[N+14|0]=R;a[N+15|0]=S;S=c[O>>2]|0;N=S+(L<<6)+16|0;R=a[N+2|0]|0;Q=a[N+1|0]|0;i=a[N]|0;l=S+(L<<6)+20|0;o=a[l+3|0]|0;n=a[l+2|0]|0;m=a[l+1|0]|0;p=a[l]|0;k=S+(L<<6)+24|0;q=a[k+3|0]|0;x=a[k+2|0]|0;t=a[k+1|0]|0;w=a[k]|0;v=S+(L<<6)+28|0;u=a[v+3|0]|0;B=a[v+2|0]|0;s=a[v+1|0]|0;F=a[v]|0;a[N]=a[N+3|0]|0;N=S+(L<<6)|0;a[N+17|0]=R;a[N+18|0]=Q;a[N+19|0]=i;a[l]=o;a[N+21|0]=n;a[N+22|0]=m;a[N+23|0]=p;a[k]=q;a[N+25|0]=x;a[N+26|0]=t;a[N+27|0]=w;a[v]=u;a[N+29|0]=B;a[N+30|0]=s;a[N+31|0]=F;F=(c[O>>2]|0)+(L<<6)+32|0;c[F>>2]=cj(c[F>>2]|0)|0;F=(c[O>>2]|0)+(L<<6)+36|0;c[F>>2]=cj(c[F>>2]|0)|0;F=(c[O>>2]|0)+(L<<6)+40|0;c[F>>2]=cj(c[F>>2]|0)|0;F=L+1|0;if((F|0)>=(P|0)){break L467}L=F;K=c[O>>2]|0}}}while(0);T=P<<6}else{O=e;aDD(J|0,0,13);c[M>>2]=O;c[H>>2]=P;c[G>>2]=P;L461:do{if((P|0)>0&f){G=0;H=O;while(1){J=H+(G<<4)|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+2|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+4|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+6|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+8|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+10|0;b[J>>1]=bX(b[J>>1]|0)|0;J=(c[M>>2]|0)+(G<<4)+12|0;c[J>>2]=cj(c[J>>2]|0)|0;J=G+1|0;if((J|0)>=(P|0)){break L461}G=J;H=c[M>>2]|0}}}while(0);T=P<<4}P=d+(T+172)|0;T=c[j>>2]|0;d=c[A>>2]|0;if((d|0)!=0){if((a[z]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-32+28>>2]|0)}c[A>>2]=0}d=P;aDD(C|0,0,13);c[A>>2]=d;c[D>>2]=T;c[E>>2]=T;if(!f){g=h;return g|0}if((c[j>>2]|0)>0){U=0;V=d}else{g=h;return g|0}while(1){d=V+(U<<5)|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+2|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+4|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+6|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+8|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+10|0;b[d>>1]=bX(b[d>>1]|0)|0;d=(c[A>>2]|0)+(U<<5)+12|0;c[d>>2]=cj(c[d>>2]|0)|0;d=(c[A>>2]|0)+(U<<5)+16|0;c[d>>2]=cj(c[d>>2]|0)|0;d=U+1|0;if((d|0)>=(c[j>>2]|0)){g=h;break}U=d;V=c[A>>2]|0}return g|0}function azt(d,e){d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=i;i=i+112|0;h=f+64|0;j=f+80|0;g[d+20>>2]=+g[e+16>>2];g[d+24>>2]=+g[e+20>>2];g[d+28>>2]=+g[e+24>>2];g[d+32>>2]=+g[e+28>>2];g[d+4>>2]=+g[e>>2];g[d+8>>2]=+g[e+4>>2];g[d+12>>2]=+g[e+8>>2];g[d+16>>2]=+g[e+12>>2];g[d+36>>2]=+g[e+32>>2];g[d+40>>2]=+g[e+36>>2];g[d+44>>2]=+g[e+40>>2];g[d+48>>2]=+g[e+44>>2];c[d+56>>2]=c[e+48>>2];a[d+60|0]=(c[e+52>>2]|0)!=0|0;k=c[e+56>>2]|0;l=f|0;aDD(l|0,0,64);m=d+88|0;n=c[m>>2]|0;if((n|0)<(k|0)){o=d+92|0;if((c[o>>2]|0)<(k|0)){if((k|0)==0){p=0;q=n}else{c[9806]=(c[9806]|0)+1;r=aDx((k<<6|4)+15|0)|0;if((r|0)==0){s=0}else{t=-(r+4|0)&15;c[r+t>>2]=r;s=r+(t+4)|0}p=s;q=c[m>>2]|0}s=d+96|0;if((q|0)>0){t=0;do{r=p+(t<<6)|0;u=(c[s>>2]|0)+(t<<6)|0;aDC(r|0,u|0,64)|0;t=t+1|0;}while((t|0)<(q|0))}q=c[s>>2]|0;t=d+100|0;if((q|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[q-64+60>>2]|0)}c[s>>2]=0}a[t]=1;c[s>>2]=p;c[o>>2]=k;v=s}else{v=d+96|0}s=n;do{n=(c[v>>2]|0)+(s<<6)|0;aDC(n|0,l|0,64)|0;s=s+1|0;}while((s|0)<(k|0))}c[m>>2]=k;L514:do{if((k|0)>0){m=d+96|0;s=0;l=c[e+64>>2]|0;while(1){v=c[m>>2]|0;g[v+(s<<6)+16>>2]=+g[l+16>>2];g[v+(s<<6)+20>>2]=+g[l+20>>2];g[v+(s<<6)+24>>2]=+g[l+24>>2];g[v+(s<<6)+28>>2]=+g[l+28>>2];v=c[m>>2]|0;g[v+(s<<6)>>2]=+g[l>>2];g[v+(s<<6)+4>>2]=+g[l+4>>2];g[v+(s<<6)+8>>2]=+g[l+8>>2];g[v+(s<<6)+12>>2]=+g[l+12>>2];c[(c[m>>2]|0)+(s<<6)+32>>2]=c[l+32>>2];c[(c[m>>2]|0)+(s<<6)+36>>2]=c[l+36>>2];c[(c[m>>2]|0)+(s<<6)+40>>2]=c[l+40>>2];v=s+1|0;if((v|0)>=(k|0)){break L514}s=v;l=l+48|0}}}while(0);k=c[e+60>>2]|0;l=h;aDD(l|0,0,16);h=d+128|0;s=c[h>>2]|0;if((s|0)<(k|0)){m=d+132|0;if((c[m>>2]|0)<(k|0)){if((k|0)==0){w=0;x=s}else{c[9806]=(c[9806]|0)+1;v=aDx((k<<4|4)+15|0)|0;if((v|0)==0){y=0}else{n=-(v+4|0)&15;c[v+n>>2]=v;y=v+(n+4)|0}w=y;x=c[h>>2]|0}y=d+136|0;if((x|0)>0){n=0;do{v=w+(n<<4)|0;o=(c[y>>2]|0)+(n<<4)|0;c[v>>2]=c[o>>2];c[v+4>>2]=c[o+4>>2];c[v+8>>2]=c[o+8>>2];c[v+12>>2]=c[o+12>>2];n=n+1|0;}while((n|0)<(x|0))}x=c[y>>2]|0;n=d+140|0;if((x|0)!=0){if((a[n]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[x-16+12>>2]|0)}c[y>>2]=0}a[n]=1;c[y>>2]=w;c[m>>2]=k;z=y}else{z=d+136|0}y=s;do{s=(c[z>>2]|0)+(y<<4)|0;c[s>>2]=c[l>>2];c[s+4>>2]=c[l+4>>2];c[s+8>>2]=c[l+8>>2];c[s+12>>2]=c[l+12>>2];y=y+1|0;}while((y|0)<(k|0))}c[h>>2]=k;L545:do{if((k|0)>0){h=d+136|0;y=c[e+68>>2]|0;l=0;while(1){c[(c[h>>2]|0)+(l<<4)+12>>2]=c[y+12>>2];b[(c[h>>2]|0)+(l<<4)+6>>1]=b[y+6>>1]|0;b[(c[h>>2]|0)+(l<<4)+8>>1]=b[y+8>>1]|0;b[(c[h>>2]|0)+(l<<4)+10>>1]=b[y+10>>1]|0;b[(c[h>>2]|0)+(l<<4)>>1]=b[y>>1]|0;b[(c[h>>2]|0)+(l<<4)+2>>1]=b[y+2>>1]|0;b[(c[h>>2]|0)+(l<<4)+4>>1]=b[y+4>>1]|0;z=l+1|0;if((z|0)>=(k|0)){break L545}y=y+16|0;l=z}}}while(0);c[d+144>>2]=c[e+76>>2];k=c[e+80>>2]|0;l=d+152|0;y=c[l>>2]|0;if((y|0)<(k|0)){h=d+156|0;if((c[h>>2]|0)<(k|0)){if((k|0)==0){A=0;B=y}else{c[9806]=(c[9806]|0)+1;z=aDx((k<<5|4)+15|0)|0;if((z|0)==0){C=0}else{s=-(z+4|0)&15;c[z+s>>2]=z;C=z+(s+4)|0}A=C;B=c[l>>2]|0}C=d+160|0;if((B|0)>0){s=0;do{z=A+(s<<5)|0;m=(c[C>>2]|0)+(s<<5)|0;aDC(z|0,m|0,32)|0;s=s+1|0;}while((s|0)<(B|0))}B=c[C>>2]|0;s=d+164|0;if((B|0)!=0){if((a[s]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[B-32+28>>2]|0)}c[C>>2]=0}a[s]=1;c[C>>2]=A;c[h>>2]=k;D=C}else{D=d+160|0}C=j;j=y;do{y=(c[D>>2]|0)+(j<<5)|0;aDC(y|0,C|0,32)|0;j=j+1|0;}while((j|0)<(k|0))}c[l>>2]=k;if((k|0)<=0){i=f;return}l=d+160|0;d=c[e+72>>2]|0;e=0;while(1){b[(c[l>>2]|0)+(e<<5)+6>>1]=b[d+14>>1]|0;b[(c[l>>2]|0)+(e<<5)+8>>1]=b[d+16>>1]|0;b[(c[l>>2]|0)+(e<<5)+10>>1]=b[d+18>>1]|0;b[(c[l>>2]|0)+(e<<5)>>1]=b[d+8>>1]|0;b[(c[l>>2]|0)+(e<<5)+2>>1]=b[d+10>>1]|0;b[(c[l>>2]|0)+(e<<5)+4>>1]=b[d+12>>1]|0;c[(c[l>>2]|0)+(e<<5)+12>>2]=c[d>>2];c[(c[l>>2]|0)+(e<<5)+16>>2]=c[d+4>>2];j=e+1|0;if((j|0)>=(k|0)){break}d=d+20|0;e=j}i=f;return}function azu(d,e){d=d|0;e=e|0;var f=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;f=i;i=i+112|0;j=f+64|0;k=f+80|0;g[d+20>>2]=+h[e+32>>3];g[d+24>>2]=+h[e+40>>3];g[d+28>>2]=+h[e+48>>3];g[d+32>>2]=+h[e+56>>3];g[d+4>>2]=+h[e>>3];g[d+8>>2]=+h[e+8>>3];g[d+12>>2]=+h[e+16>>3];g[d+16>>2]=+h[e+24>>3];g[d+36>>2]=+h[e+64>>3];g[d+40>>2]=+h[e+72>>3];g[d+44>>2]=+h[e+80>>3];g[d+48>>2]=+h[e+88>>3];c[d+56>>2]=c[e+96>>2];a[d+60|0]=(c[e+100>>2]|0)!=0|0;l=c[e+104>>2]|0;m=f|0;aDD(m|0,0,64);n=d+88|0;o=c[n>>2]|0;if((o|0)<(l|0)){p=d+92|0;if((c[p>>2]|0)<(l|0)){if((l|0)==0){q=0;r=o}else{c[9806]=(c[9806]|0)+1;s=aDx((l<<6|4)+15|0)|0;if((s|0)==0){t=0}else{u=-(s+4|0)&15;c[s+u>>2]=s;t=s+(u+4)|0}q=t;r=c[n>>2]|0}t=d+96|0;if((r|0)>0){u=0;do{s=q+(u<<6)|0;v=(c[t>>2]|0)+(u<<6)|0;aDC(s|0,v|0,64)|0;u=u+1|0;}while((u|0)<(r|0))}r=c[t>>2]|0;u=d+100|0;if((r|0)!=0){if((a[u]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[r-64+60>>2]|0)}c[t>>2]=0}a[u]=1;c[t>>2]=q;c[p>>2]=l;w=t}else{w=d+96|0}t=o;do{o=(c[w>>2]|0)+(t<<6)|0;aDC(o|0,m|0,64)|0;t=t+1|0;}while((t|0)<(l|0))}c[n>>2]=l;L609:do{if((l|0)>0){n=d+96|0;t=0;m=c[e+112>>2]|0;while(1){w=c[n>>2]|0;g[w+(t<<6)+16>>2]=+h[m+32>>3];g[w+(t<<6)+20>>2]=+h[m+40>>3];g[w+(t<<6)+24>>2]=+h[m+48>>3];g[w+(t<<6)+28>>2]=+h[m+56>>3];w=c[n>>2]|0;g[w+(t<<6)>>2]=+h[m>>3];g[w+(t<<6)+4>>2]=+h[m+8>>3];g[w+(t<<6)+8>>2]=+h[m+16>>3];g[w+(t<<6)+12>>2]=+h[m+24>>3];c[(c[n>>2]|0)+(t<<6)+32>>2]=c[m+64>>2];c[(c[n>>2]|0)+(t<<6)+36>>2]=c[m+68>>2];c[(c[n>>2]|0)+(t<<6)+40>>2]=c[m+72>>2];w=t+1|0;if((w|0)>=(l|0)){break L609}t=w;m=m+80|0}}}while(0);l=c[e+108>>2]|0;m=j;aDD(m|0,0,16);j=d+128|0;t=c[j>>2]|0;if((t|0)<(l|0)){n=d+132|0;if((c[n>>2]|0)<(l|0)){if((l|0)==0){x=0;y=t}else{c[9806]=(c[9806]|0)+1;w=aDx((l<<4|4)+15|0)|0;if((w|0)==0){z=0}else{o=-(w+4|0)&15;c[w+o>>2]=w;z=w+(o+4)|0}x=z;y=c[j>>2]|0}z=d+136|0;if((y|0)>0){o=0;do{w=x+(o<<4)|0;p=(c[z>>2]|0)+(o<<4)|0;c[w>>2]=c[p>>2];c[w+4>>2]=c[p+4>>2];c[w+8>>2]=c[p+8>>2];c[w+12>>2]=c[p+12>>2];o=o+1|0;}while((o|0)<(y|0))}y=c[z>>2]|0;o=d+140|0;if((y|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[y-16+12>>2]|0)}c[z>>2]=0}a[o]=1;c[z>>2]=x;c[n>>2]=l;A=z}else{A=d+136|0}z=t;do{t=(c[A>>2]|0)+(z<<4)|0;c[t>>2]=c[m>>2];c[t+4>>2]=c[m+4>>2];c[t+8>>2]=c[m+8>>2];c[t+12>>2]=c[m+12>>2];z=z+1|0;}while((z|0)<(l|0))}c[j>>2]=l;L640:do{if((l|0)>0){j=d+136|0;z=c[e+116>>2]|0;m=0;while(1){c[(c[j>>2]|0)+(m<<4)+12>>2]=c[z+12>>2];b[(c[j>>2]|0)+(m<<4)+6>>1]=b[z+6>>1]|0;b[(c[j>>2]|0)+(m<<4)+8>>1]=b[z+8>>1]|0;b[(c[j>>2]|0)+(m<<4)+10>>1]=b[z+10>>1]|0;b[(c[j>>2]|0)+(m<<4)>>1]=b[z>>1]|0;b[(c[j>>2]|0)+(m<<4)+2>>1]=b[z+2>>1]|0;b[(c[j>>2]|0)+(m<<4)+4>>1]=b[z+4>>1]|0;A=m+1|0;if((A|0)>=(l|0)){break L640}z=z+16|0;m=A}}}while(0);c[d+144>>2]=c[e+120>>2];l=c[e+124>>2]|0;m=d+152|0;z=c[m>>2]|0;if((z|0)<(l|0)){j=d+156|0;if((c[j>>2]|0)<(l|0)){if((l|0)==0){B=0;C=z}else{c[9806]=(c[9806]|0)+1;A=aDx((l<<5|4)+15|0)|0;if((A|0)==0){D=0}else{t=-(A+4|0)&15;c[A+t>>2]=A;D=A+(t+4)|0}B=D;C=c[m>>2]|0}D=d+160|0;if((C|0)>0){t=0;do{A=B+(t<<5)|0;n=(c[D>>2]|0)+(t<<5)|0;aDC(A|0,n|0,32)|0;t=t+1|0;}while((t|0)<(C|0))}C=c[D>>2]|0;t=d+164|0;if((C|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[C-32+28>>2]|0)}c[D>>2]=0}a[t]=1;c[D>>2]=B;c[j>>2]=l;E=D}else{E=d+160|0}D=k;k=z;do{z=(c[E>>2]|0)+(k<<5)|0;aDC(z|0,D|0,32)|0;k=k+1|0;}while((k|0)<(l|0))}c[m>>2]=l;if((l|0)<=0){i=f;return}m=d+160|0;d=c[e+128>>2]|0;e=0;while(1){b[(c[m>>2]|0)+(e<<5)+6>>1]=b[d+14>>1]|0;b[(c[m>>2]|0)+(e<<5)+8>>1]=b[d+16>>1]|0;b[(c[m>>2]|0)+(e<<5)+10>>1]=b[d+18>>1]|0;b[(c[m>>2]|0)+(e<<5)>>1]=b[d+8>>1]|0;b[(c[m>>2]|0)+(e<<5)+2>>1]=b[d+10>>1]|0;b[(c[m>>2]|0)+(e<<5)+4>>1]=b[d+12>>1]|0;c[(c[m>>2]|0)+(e<<5)+12>>2]=c[d>>2];c[(c[m>>2]|0)+(e<<5)+16>>2]=c[d+4>>2];k=e+1|0;if((k|0)>=(l|0)){break}d=d+20|0;e=k}i=f;return}function azv(a){a=a|0;return 17656|0}function azw(a){a=a|0;return 2}function azx(d,e,f){d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g[e+16>>2]=+g[d+20>>2];g[e+20>>2]=+g[d+24>>2];g[e+24>>2]=+g[d+28>>2];g[e+28>>2]=+g[d+32>>2];g[e>>2]=+g[d+4>>2];g[e+4>>2]=+g[d+8>>2];g[e+8>>2]=+g[d+12>>2];g[e+12>>2]=+g[d+16>>2];g[e+32>>2]=+g[d+36>>2];g[e+36>>2]=+g[d+40>>2];g[e+40>>2]=+g[d+44>>2];g[e+44>>2]=+g[d+48>>2];c[e+48>>2]=c[d+56>>2];c[e+52>>2]=a[d+60|0]&1;h=d+88|0;c[e+56>>2]=c[h>>2];do{if((c[h>>2]|0)==0){c[e+64>>2]=0}else{i=d+96|0;j=dj[c[(c[f>>2]|0)+28>>2]&511](f,c[i>>2]|0)|0;c[e+64>>2]=j;if((j|0)==0){break}j=c[h>>2]|0;k=cS[c[(c[f>>2]|0)+16>>2]&511](f,48,j)|0;if((j|0)>0){l=0;m=c[k+8>>2]|0;while(1){n=c[i>>2]|0;g[m+16>>2]=+g[n+(l<<6)+16>>2];g[m+20>>2]=+g[n+(l<<6)+20>>2];g[m+24>>2]=+g[n+(l<<6)+24>>2];g[m+28>>2]=+g[n+(l<<6)+28>>2];n=c[i>>2]|0;g[m>>2]=+g[n+(l<<6)>>2];g[m+4>>2]=+g[n+(l<<6)+4>>2];g[m+8>>2]=+g[n+(l<<6)+8>>2];g[m+12>>2]=+g[n+(l<<6)+12>>2];c[m+32>>2]=c[(c[i>>2]|0)+(l<<6)+32>>2];c[m+36>>2]=c[(c[i>>2]|0)+(l<<6)+36>>2];c[m+40>>2]=c[(c[i>>2]|0)+(l<<6)+40>>2];n=l+1|0;if((n|0)<(j|0)){l=n;m=m+48|0}else{break}}}co[c[(c[f>>2]|0)+20>>2]&255](f,k,16448,1497453121,c[i>>2]|0)}}while(0);h=d+128|0;c[e+60>>2]=c[h>>2];do{if((c[h>>2]|0)==0){c[e+68>>2]=0}else{m=d+136|0;l=dj[c[(c[f>>2]|0)+28>>2]&511](f,c[m>>2]|0)|0;c[e+68>>2]=l;if((l|0)==0){break}l=c[h>>2]|0;j=cS[c[(c[f>>2]|0)+16>>2]&511](f,16,l)|0;if((l|0)>0){n=0;o=c[j+8>>2]|0;while(1){c[o+12>>2]=c[(c[m>>2]|0)+(n<<4)+12>>2];b[o+6>>1]=b[(c[m>>2]|0)+(n<<4)+6>>1]|0;b[o+8>>1]=b[(c[m>>2]|0)+(n<<4)+8>>1]|0;b[o+10>>1]=b[(c[m>>2]|0)+(n<<4)+10>>1]|0;b[o>>1]=b[(c[m>>2]|0)+(n<<4)>>1]|0;b[o+2>>1]=b[(c[m>>2]|0)+(n<<4)+2>>1]|0;b[o+4>>1]=b[(c[m>>2]|0)+(n<<4)+4>>1]|0;p=n+1|0;if((p|0)<(l|0)){n=p;o=o+16|0}else{break}}}co[c[(c[f>>2]|0)+20>>2]&255](f,j,17672,1497453121,c[m>>2]|0)}}while(0);c[e+76>>2]=c[d+144>>2];h=d+152|0;c[e+80>>2]=c[h>>2];if((c[h>>2]|0)==0){c[e+72>>2]=0;return 16928}o=d+160|0;d=dj[c[(c[f>>2]|0)+28>>2]&511](f,c[o>>2]|0)|0;c[e+72>>2]=d;if((d|0)==0){return 16928}d=c[h>>2]|0;h=cS[c[(c[f>>2]|0)+16>>2]&511](f,20,d)|0;if((d|0)>0){e=c[h+8>>2]|0;n=0;while(1){b[e+14>>1]=b[(c[o>>2]|0)+(n<<5)+6>>1]|0;b[e+16>>1]=b[(c[o>>2]|0)+(n<<5)+8>>1]|0;b[e+18>>1]=b[(c[o>>2]|0)+(n<<5)+10>>1]|0;b[e+8>>1]=b[(c[o>>2]|0)+(n<<5)>>1]|0;b[e+10>>1]=b[(c[o>>2]|0)+(n<<5)+2>>1]|0;b[e+12>>1]=b[(c[o>>2]|0)+(n<<5)+4>>1]|0;c[e>>2]=c[(c[o>>2]|0)+(n<<5)+12>>2];c[e+4>>2]=c[(c[o>>2]|0)+(n<<5)+16>>2];l=n+1|0;if((l|0)<(d|0)){e=e+20|0;n=l}else{break}}}co[c[(c[f>>2]|0)+20>>2]&255](f,h,17224,1497453121,c[o>>2]|0);return 16928}function azy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0.0,K=0.0,L=0.0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=+g[b+16>>2];l=+g[b>>2];m=k-l;n=+g[b+20>>2];o=+g[b+4>>2];p=n-o;q=+g[b+24>>2];r=+g[b+8>>2];s=q-r;t=+g[b+32>>2];u=t-l;v=+g[b+36>>2];w=v-o;x=+g[b+40>>2];y=x-r;z=p*y-s*w;A=s*u-m*y;y=m*w-p*u;b=h|0;g[b>>2]=z;B=h+4|0;g[B>>2]=A;C=h+8|0;g[C>>2]=y;g[h+12>>2]=0.0;u=l*z+o*A+r*y;p=+g[a+4>>2];w=+g[a+8>>2];m=+g[a+12>>2];s=z*p+A*w+y*m-u;D=+g[a+20>>2];E=+g[a+24>>2];F=+g[a+28>>2];G=z*D+A*E+y*F-u;if(s*G>=0.0){i=f;return}H=c[a+36>>2]|0;if((H&1|0)!=0&s>0.0){i=f;return}u=s/(s-G);I=a+40|0;if(u>=+g[I>>2]){i=f;return}G=z*z+A*A+y*y;J=G*-9999999747378752.0e-20;K=1.0-u;L=D*u+p*K;p=E*u+w*K;w=F*u+m*K;K=l-L;l=o-p;o=r-w;r=k-L;k=n-p;n=q-w;if(y*(K*k-l*r)+(z*(l*n-o*k)+A*(o*r-K*n))>2]=G;z=A*J;g[B>>2]=z;A=y*J;g[C>>2]=A;C=c[(c[a>>2]|0)+12>>2]|0;if((H&2|0)==0&s>0.0){g[I>>2]=+cO[C&63](a,h,u,d,e);i=f;return}else{g[j>>2]=-0.0-G;g[j+4>>2]=-0.0-z;g[j+8>>2]=-0.0-A;g[j+12>>2]=0.0;g[I>>2]=+cO[C&63](a,j,u,d,e);i=f;return}}function azz(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0;h=i;i=i+672|0;j=h|0;k=h+104|0;l=h+464|0;m=h+472|0;n=h+496|0;c[j+8>>2]=0;o=j|0;g[j+12>>2]=1.0;g[j+16>>2]=1.0;g[j+20>>2]=1.0;g[j+24>>2]=0.0;p=j+52|0;c[p>>2]=0;c[o>>2]=24592;c[j+4>>2]=1;q=j+56|0;r=d;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];r=j+72|0;q=d+16|0;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];q=j+88|0;r=d+32|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];g[j+44>>2]=+g[a+204>>2];g[k+308>>2]=9999999747378752.0e-20;b[k+332>>1]=0;c[l>>2]=19960;r=c[a+4>>2]|0;c[m>>2]=20336;c[m+4>>2]=k;c[m+8>>2]=l;c[m+12>>2]=r;c[m+16>>2]=j;c[m+20>>2]=0;c[n>>2]=19544;j=n+164|0;c[n+168>>2]=0;g[j>>2]=1.0;g[n+172>>2]=+g[a+208>>2];r=a+136|0;do{if(ava(m,a+8|0,a+72|0,r,r,n)|0){l=n+132|0;k=l|0;s=+g[k>>2];q=n+136|0;t=+g[q>>2];d=n+140|0;u=+g[d>>2];v=s*s+t*t+u*u;if(v<=9999999747378752.0e-20){break}w=+g[j>>2];if(w>=+g[a+200>>2]){break}x=1.0/+Q(+v);g[k>>2]=s*x;g[q>>2]=t*x;g[d>>2]=u*x;d=c[(c[a>>2]|0)+12>>2]|0;q=n+148|0;+dH[d&63](a,l,q,w,e,f)}}while(0);c[o>>2]=21200;o=c[p>>2]|0;if((o|0)==0){i=h;return}c[9804]=(c[9804]|0)+1;aDB(c[o-80+76>>2]|0);i=h;return}function azA(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function azB(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-104+100>>2]|0);return}function azC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a|0,b,d,e);return}function azD(a,b,c){a=a|0;b=+b;c=c|0;aDD(c|0,0,16);return}function azE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0;e=+g[d>>2];f=+g[d+4>>2];h=+g[d+8>>2];i=e*+g[b+56>>2]+f*+g[b+60>>2]+h*+g[b+64>>2];j=e*+g[b+72>>2]+f*+g[b+76>>2]+h*+g[b+80>>2];k=e*+g[b+88>>2]+f*+g[b+92>>2]+h*+g[b+96>>2];if(i>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function azF(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0;if((e|0)<=0){return}f=a+56|0;h=a+60|0;i=a+64|0;j=a+72|0;k=a+76|0;l=a+80|0;m=a+88|0;n=a+92|0;o=a+96|0;p=0;do{q=+g[b+(p<<4)>>2];r=+g[b+(p<<4)+4>>2];s=+g[b+(p<<4)+8>>2];t=q*+g[f>>2]+r*+g[h>>2]+s*+g[i>>2];u=q*+g[j>>2]+r*+g[k>>2]+s*+g[l>>2];v=q*+g[m>>2]+r*+g[n>>2]+s*+g[o>>2];if(t>2]=c[y>>2];c[x+4>>2]=c[y+4>>2];c[x+8>>2]=c[y+8>>2];c[x+12>>2]=c[y+12>>2];p=p+1|0;}while((p|0)<(e|0));return}function azG(a){a=a|0;return 3}function azH(a){a=a|0;return 3}function azI(a){a=a|0;return 1}function azJ(a){a=a|0;return}function azK(a){a=a|0;return}function azL(a,b,c){a=a|0;b=+b;c=c|0;return}function azM(a){a=a|0;return 17632|0}function azN(a){a=a|0;return 76}function azO(a){a=a|0;return a+16|0}function azP(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0;d=+g[a+56>>2];e=+g[a+72>>2]-d;f=+g[a+60>>2];h=+g[a+76>>2]-f;i=+g[a+64>>2];j=+g[a+80>>2]-i;k=+g[a+88>>2]-d;d=+g[a+92>>2]-f;f=+g[a+96>>2]-i;i=h*f-j*d;l=j*k-e*f;f=e*d-h*k;a=c|0;m=c+4|0;n=c+8|0;g[c+12>>2]=0.0;k=1.0/+Q(+(f*f+(i*i+l*l)));h=k*i;g[a>>2]=h;i=k*l;g[m>>2]=i;l=f*k;g[n>>2]=l;if((b|0)==0){return}g[a>>2]=h*-1.0;g[m>>2]=i*-1.0;g[n>>2]=l*-1.0;return}function azQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=a;dA[c[(c[f>>2]|0)+100>>2]&511](a,b,d);dA[c[(c[f>>2]|0)+100>>2]&511](a,(b+1|0)%3|0,e);return}function azR(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=d;d=a+56+(b<<4)|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];return}function azS(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+116>>2]&1023](a,e,b,d);return}function azT(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;e=i;i=i+32|0;f=e|0;h=e+16|0;j=+g[a+56>>2];k=+g[a+72>>2]-j;l=+g[a+60>>2];m=+g[a+76>>2]-l;n=+g[a+64>>2];o=+g[a+80>>2]-n;p=+g[a+88>>2]-j;q=+g[a+92>>2]-l;r=+g[a+96>>2]-n;s=m*r-o*q;t=o*p-k*r;r=k*q-m*p;p=1.0/+Q(+(r*r+(s*s+t*t)));m=p*s;s=p*t;t=r*p;u=b|0;v=b+4|0;w=b+8|0;p=+g[u>>2]*m+ +g[v>>2]*s+t*+g[w>>2]-(m*j+s*l+t*n);n=-0.0-d;if(pd){x=0;i=e;return x|0}b=a;y=h|0;z=f|0;A=h+4|0;B=f+4|0;C=h+8|0;D=f+8|0;E=0;while(1){if((E|0)>=3){x=1;F=587;break}dI[c[(c[b>>2]|0)+96>>2]&1023](a,E,f,h);d=+g[z>>2];p=+g[y>>2]-d;l=+g[B>>2];j=+g[A>>2]-l;r=+g[D>>2];q=+g[C>>2]-r;k=t*j-s*q;o=m*q-t*p;q=s*p-m*j;j=1.0/+Q(+(q*q+(k*k+o*o)));p=j*k;k=j*o;o=q*j;if(+g[u>>2]*p+ +g[v>>2]*k+o*+g[w>>2]-(r*o+(d*p+l*k))>2];h=+g[a+72>>2]-f;i=+g[a+60>>2];j=+g[a+76>>2]-i;k=+g[a+64>>2];l=+g[a+80>>2]-k;m=+g[a+88>>2]-f;f=+g[a+92>>2]-i;i=+g[a+96>>2]-k;k=j*i-l*f;n=l*m-h*i;i=h*f-j*m;g[d+12>>2]=0.0;m=1.0/+Q(+(i*i+(k*k+n*n)));g[d>>2]=m*k;g[d+4>>2]=m*n;g[d+8>>2]=i*m;d=e;e=a+56|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function azV(a){a=a|0;if((a|0)==0){return}aDB(a);return}function azW(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0;f=i;i=i+56|0;h=f|0;j=f+24|0;k=f+40|0;l=a+16|0;c[h>>2]=21008;c[h+4>>2]=b;b=h+8|0;m=l;c[b>>2]=c[m>>2];c[b+4>>2]=c[m+4>>2];c[b+8>>2]=c[m+8>>2];c[b+12>>2]=c[m+12>>2];n=+g[l>>2];o=1.0/n;p=+g[a+20>>2];q=1.0/p;r=+g[a+24>>2];s=1.0/r;g[j>>2]=o*+g[(n<0.0?e:d)>>2];g[j+4>>2]=q*+g[(p<0.0?e:d)+4>>2];g[j+8>>2]=s*+g[(r<0.0?e:d)+8>>2];g[j+12>>2]=0.0;g[k>>2]=o*+g[(n>0.0?e:d)>>2];g[k+4>>2]=q*+g[(p>0.0?e:d)+4>>2];g[k+8>>2]=s*+g[(r>0.0?e:d)+8>>2];g[k+12>>2]=0.0;d=c[a+32>>2]|0;dI[c[(c[d>>2]|0)+60>>2]&1023](d,h|0,j,k);i=f;return}function azX(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0;f=i;i=i+32|0;h=f|0;j=f+16|0;k=c[a+32>>2]|0;l=+g[k+32>>2];m=+g[k+36>>2];n=+g[k+40>>2];o=+g[a+16>>2];p=+g[k+16>>2]*o;q=+g[a+20>>2];r=+g[k+20>>2]*q;s=+g[a+24>>2];t=+g[k+24>>2]*s;a=h|0;g[a>>2]=p;g[h+4>>2]=r;g[h+8>>2]=t;g[h+12>>2]=0.0;t=l*o;h=j|0;g[h>>2]=t;g[j+4>>2]=m*q;g[j+8>>2]=n*s;g[j+12>>2]=0.0;n=o<0.0?t:p;m=+g[(q<0.0?h:a)+4>>2];l=+g[(s<0.0?h:a)+8>>2];r=o>0.0?t:p;p=+g[(q>0.0?h:a)+4>>2];q=+g[(s>0.0?h:a)+8>>2];s=+dh[c[(c[k>>2]|0)+44>>2]&1023](k|0);t=(r-n)*.5+s;o=(p-m)*.5+s;u=(q-l)*.5+s;s=(n+r)*.5;r=(m+p)*.5;p=(l+q)*.5;q=+g[b>>2];l=+P(+q);m=+g[b+4>>2];n=+P(+m);v=+g[b+8>>2];w=+P(+v);x=+g[b+16>>2];y=+P(+x);z=+g[b+20>>2];A=+P(+z);B=+g[b+24>>2];C=+P(+B);D=+g[b+32>>2];E=+P(+D);F=+g[b+36>>2];G=+P(+F);H=+g[b+40>>2];I=+P(+H);J=+g[b+48>>2]+(s*q+r*m+p*v);v=+g[b+52>>2]+(s*x+r*z+p*B);B=+g[b+56>>2]+(s*D+r*F+p*H);H=t*l+o*n+u*w;w=t*y+o*A+u*C;C=t*E+o*G+u*I;g[d>>2]=J-H;g[d+4>>2]=v-w;g[d+8>>2]=B-C;g[d+12>>2]=0.0;g[e>>2]=H+J;g[e+4>>2]=w+v;g[e+8>>2]=C+B;g[e+12>>2]=0.0;i=f;return}function azY(a,b){a=a|0;b=b|0;var d=0;d=a+16|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function azZ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+32>>2]|0;cS[c[(c[e>>2]|0)+52>>2]&511](e,b,d)|0;c[b+4>>2]=22;g[b+60>>2]=+g[a+16>>2];g[b+64>>2]=+g[a+20>>2];g[b+68>>2]=+g[a+24>>2];g[b+72>>2]=+g[a+28>>2];return 16352}function az_(a){a=a|0;if((a|0)==0){return}aDB(a);return}function az$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0;f=i;i=i+48|0;h=f|0;j=+g[a+8>>2];k=+g[a+12>>2];l=+g[b+4>>2]*k;m=+g[a+16>>2];n=+g[b+8>>2]*m;g[h>>2]=+g[b>>2]*j;g[h+4>>2]=l;g[h+8>>2]=n;g[h+12>>2]=0.0;n=+g[b+20>>2]*k;l=+g[b+24>>2]*m;g[h+16>>2]=+g[b+16>>2]*j;g[h+20>>2]=n;g[h+24>>2]=l;g[h+28>>2]=0.0;l=+g[b+36>>2]*k;k=+g[b+40>>2]*m;g[h+32>>2]=+g[b+32>>2]*j;g[h+36>>2]=l;g[h+40>>2]=k;g[h+44>>2]=0.0;b=c[a+4>>2]|0;dI[c[(c[b>>2]|0)+8>>2]&1023](b,h|0,d,e);i=f;return}function az0(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c[b>>2]=23120;f=b+28|0;c[f>>2]=e;g=b+32|0;a[g]=0;c[b+36>>2]=0;if((e|0)==0){c[9806]=(c[9806]|0)+1;e=aDx(95)|0;do{if((e|0)==0){h=0}else{i=-(e+4|0)&15;j=e+(i+4)|0;c[e+i>>2]=e;if((j|0)==0){h=0;break}i=j;ayI(i);h=i}}while(0);c[f>>2]=h;a[g]=1}c[9806]=(c[9806]|0)+1;g=aDx((d*52|0)+19|0)|0;if((g|0)==0){k=0}else{h=-(g+4|0)&15;c[g+h>>2]=g;k=g+(h+4)|0}c[b+20>>2]=k;h=k;if((d|0)!=0){k=h+(d*52|0)|0;g=h;do{c[g>>2]=0;c[g+8>>2]=0;g=g+52|0;}while((g|0)!=(k|0))}k=b+16|0;c[k>>2]=h;c[b+8>>2]=d;c[b+4>>2]=0;c[b+24>>2]=0;c[b+12>>2]=-1;if((d|0)>0){l=0;m=h}else{n=h;o=d-1|0;p=n+(o*52|0)+48|0;c[p>>2]=0;return}while(1){h=l+1|0;c[m+(l*52|0)+48>>2]=h;c[(c[k>>2]|0)+(l*52|0)+12>>2]=l+2;b=c[k>>2]|0;if((h|0)<(d|0)){l=h;m=b}else{n=b;break}}o=d-1|0;p=n+(o*52|0)+48|0;c[p>>2]=0;return}function az1(b){b=b|0;var d=0,e=0;c[b>>2]=23120;d=c[b+20>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}do{if((a[b+32|0]&1)!=0){d=b+28|0;e=c[d>>2]|0;ct[c[c[e>>2]>>2]&2047](e);e=c[d>>2]|0;if((e|0)==0){break}c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}}while(0);if((b|0)==0){return}aDB(b);return}function az2(b){b=b|0;var d=0;c[b>>2]=23120;d=c[b+20>>2]|0;if((d|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[d-4>>2]|0)}if((a[b+32|0]&1)==0){return}d=b+28|0;b=c[d>>2]|0;ct[c[c[b>>2]>>2]&2047](b);b=c[d>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-4>>2]|0);return}function az3(a,b){a=a|0;b=b|0;return}function az4(a){a=a|0;return}function az5(a){a=a|0;return c[a+28>>2]|0}function az6(a){a=a|0;return c[a+28>>2]|0}function az7(a,b,c){a=a|0;b=b|0;c=c|0;g[b>>2]=-999999984306749400.0;g[b+4>>2]=-999999984306749400.0;g[b+8>>2]=-999999984306749400.0;g[b+12>>2]=0.0;g[c>>2]=999999984306749400.0;g[c+4>>2]=999999984306749400.0;g[c+8>>2]=999999984306749400.0;g[c+12>>2]=0.0;return}function az8(a,d,e,f,g,h,i,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0;j=a+4|0;f=c[j>>2]|0;if((f|0)>=(c[a+8>>2]|0)){l=0;return l|0}m=a+24|0;n=c[m>>2]|0;o=c[a+16>>2]|0;c[m>>2]=c[o+(n*52|0)+48>>2];c[j>>2]=f+1;f=a+12|0;if((n|0)>(c[f>>2]|0)){c[f>>2]=n}f=o+(n*52|0)|0;c[f>>2]=g;b[o+(n*52|0)+4>>1]=h;b[o+(n*52|0)+6>>1]=i;i=o+(n*52|0)+16|0;h=d;c[i>>2]=c[h>>2];c[i+4>>2]=c[h+4>>2];c[i+8>>2]=c[h+8>>2];c[i+12>>2]=c[h+12>>2];h=o+(n*52|0)+32|0;i=e;c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2];c[o+(n*52|0)+8>>2]=k;l=f|0;return l|0}function az9(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=(b-(c[a+16>>2]|0)|0)/52|0;f=a+12|0;if((e|0)==(c[f>>2]|0)){c[f>>2]=e-1}f=a+24|0;c[b+48>>2]=c[f>>2];c[f>>2]=e;c[b>>2]=0;e=a+4|0;c[e>>2]=(c[e>>2]|0)-1;e=c[a+28>>2]|0;dA[c[(c[e>>2]|0)+16>>2]&511](e|0,b,d);return}function aAa(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=d;d=b+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];d=e;e=b+32|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function aAb(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;f=b+16|0;a=d;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];a=b+32|0;b=e;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function aAc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;g=a+12|0;f=c[g>>2]|0;if((f|0)<0){return}d=a+16|0;a=e|0;b=e;e=0;h=f;while(1){f=(c[d>>2]|0)+(e*52|0)|0;if((c[f>>2]|0)==0){i=h}else{j=c[(c[b>>2]|0)+8>>2]|0;dj[j&511](a,f)|0;i=c[g>>2]|0}f=e+1|0;if((f|0)>(i|0)){break}else{e=f;h=i}}return}function aAd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=a+12|0;h=c[f>>2]|0;if((h|0)<0){return}i=a+16|0;a=b|0;j=b+8|0;k=b+4|0;b=d+4|0;l=e;m=d+8|0;n=d|0;d=0;o=h;while(1){h=c[i>>2]|0;p=h+(d*52|0)|0;do{if((c[p>>2]|0)==0){q=o}else{do{if(+g[a>>2]>+g[h+(d*52|0)+32>>2]){r=0}else{if(+g[n>>2]<+g[h+(d*52|0)+16>>2]){r=0;break}r=1}}while(0);do{if(+g[j>>2]>+g[h+(d*52|0)+40>>2]){s=0}else{if(+g[m>>2]<+g[h+(d*52|0)+24>>2]){s=0;break}s=r}}while(0);if(+g[k>>2]>+g[h+(d*52|0)+36>>2]){q=o;break}if(+g[b>>2]<+g[h+(d*52|0)+20>>2]|s^1){q=o;break}t=c[(c[l>>2]|0)+8>>2]|0;dj[t&511](e,p)|0;q=c[f>>2]|0}}while(0);p=d+1|0;if((p|0)>(q|0)){break}else{d=p;o=q}}return}function aAe(b,d){b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;e=i;i=i+40|0;f=e|0;h=e+8|0;j=e+24|0;if((c[b+4>>2]|0)<=-1){i=e;return}k=b+12|0;l=c[k>>2]|0;if((l|0)<0){m=-1}else{n=b+16|0;o=b+28|0;p=-1;q=0;r=l;while(1){l=c[n>>2]|0;s=l+(q*52|0)|0;t=q+1|0;L921:do{if((c[s>>2]|0)==0){u=p;v=r}else{if((t|0)>(r|0)){u=q;v=r;break}w=l+(q*52|0)+16|0;x=l+(q*52|0)+32|0;y=l+(q*52|0)+20|0;z=l+(q*52|0)+36|0;A=l+(q*52|0)+24|0;B=l+(q*52|0)+40|0;C=t;D=l;while(1){E=D+(C*52|0)|0;L926:do{if((c[E>>2]|0)!=0){do{if(+g[w>>2]>+g[D+(C*52|0)+32>>2]){F=695}else{if(+g[D+(C*52|0)+16>>2]>+g[x>>2]){F=695;break}if(+g[y>>2]>+g[D+(C*52|0)+36>>2]){F=695;break}if(+g[D+(C*52|0)+20>>2]>+g[z>>2]){F=695;break}if(+g[A>>2]>+g[D+(C*52|0)+40>>2]){F=695;break}G=c[o>>2]|0;if(+g[D+(C*52|0)+24>>2]>+g[B>>2]){H=G;break}if((cS[c[(c[G>>2]|0)+52>>2]&511](G,s,E)|0)!=0){break L926}G=c[o>>2]|0;I=G|0;J=c[(c[G>>2]|0)+8>>2]|0;cS[J&511](I,s,E)|0;break L926}}while(0);if((F|0)==695){F=0;H=c[o>>2]|0}if(cA[c[(c[H>>2]|0)+56>>2]&4095](H)|0){break}I=c[o>>2]|0;if((cS[c[(c[I>>2]|0)+52>>2]&511](I,s,E)|0)==0){break}I=c[o>>2]|0;J=I|0;G=c[(c[I>>2]|0)+12>>2]|0;dE[G&127](J,s,E,d)|0}}while(0);E=C+1|0;J=c[k>>2]|0;if((E|0)>(J|0)){u=q;v=J;break L921}C=E;D=c[n>>2]|0}}}while(0);if((t|0)>(v|0)){m=u;break}else{p=u;q=t;r=v}}}c[k>>2]=m;if((a[b+32|0]&1)==0){i=e;return}m=b+28|0;k=c[m>>2]|0;if(!(cA[c[(c[k>>2]|0)+56>>2]&4095](k)|0)){i=e;return}k=c[m>>2]|0;v=cA[c[(c[k>>2]|0)+28>>2]&4095](k)|0;k=v+4|0;r=c[k>>2]|0;if((r|0)>1){arQ(v,0,r-1|0);K=c[k>>2]|0}else{K=r}r=b+36|0;b=K-(c[r>>2]|0)|0;aDD(h|0,0,16);arP(v,b,h);c[r>>2]=0;h=c[k>>2]|0;do{if((h|0)>0){b=v+12|0;K=0;q=0;u=0;p=h;n=0;while(1){o=c[b>>2]|0;H=o+(u<<4)|0;s=H|0;l=c[s>>2]|0;D=o+(u<<4)+4|0;o=c[D>>2]|0;if((l|0)==(q|0)){if((o|0)==(K|0)){L=q;M=K;F=720}else{N=q;F=714}}else{N=l;F=714}do{if((F|0)==714){F=0;if(+g[N+16>>2]>+g[o+32>>2]){L=N;M=o;F=720;break}if(+g[o+16>>2]>+g[N+32>>2]){L=N;M=o;F=720;break}if(+g[N+20>>2]>+g[o+36>>2]){L=N;M=o;F=720;break}if(+g[o+20>>2]>+g[N+36>>2]){L=N;M=o;F=720;break}if(+g[N+24>>2]>+g[o+40>>2]){L=N;M=o;F=720;break}if(+g[o+24>>2]>+g[N+40>>2]){L=N;M=o;F=720}else{O=N;P=o;Q=p;R=n}}}while(0);if((F|0)==720){F=0;o=c[m>>2]|0;dA[c[(c[o>>2]|0)+32>>2]&511](o,H,d);c[s>>2]=0;c[D>>2]=0;o=(c[r>>2]|0)+1|0;c[r>>2]=o;c[9792]=(c[9792]|0)-1;O=L;P=M;Q=c[k>>2]|0;R=o}o=u+1|0;if((o|0)<(Q|0)){K=P;q=O;u=o;p=Q;n=R}else{break}}n=f|0;if((Q|0)<=1){S=Q;T=n;U=R;break}arQ(v,0,Q-1|0);S=c[k>>2]|0;T=n;U=c[r>>2]|0}else{S=h;T=f|0;U=0}}while(0);aDD(j|0,0,16);arP(v,S-U|0,j);c[r>>2]=0;i=e;return}function aAf(a){a=a|0;aAg(a);if((a|0)==0){return}aDB(a);return}function aAg(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=20520;d=b+48|0;e=b+56|0;f=c[e>>2]|0;g=b+60|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+52>>2]=0;d=b+28|0;e=b+36|0;g=c[e>>2]|0;f=b+40|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+32>>2]=0;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)==0){h=b+12|0;a[g]=1;c[e>>2]=0;c[d>>2]=0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-8+4>>2]|0)}c[e>>2]=0;h=b+12|0;a[g]=1;c[e>>2]=0;c[d>>2]=0;c[h>>2]=0;return}function aAh(a){a=a|0;return}function aAi(a){a=a|0;return 17608|0}function aAj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function aAk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=b+8|0;if((c[d>>2]|0)<=0){return}e=b+16|0;b=a+16|0;a=0;f=0;while(1){g=c[(c[e>>2]|0)+(a<<2)>>2]|0;if((c[g+204>>2]&3|0)==0){h=c[b>>2]|0;i=h+(f<<3)|0;j=c[i>>2]|0;if((j|0)==(f|0)){k=f}else{l=h;h=i;i=j;while(1){j=l+(i<<3)|0;c[h>>2]=c[j>>2];m=c[j>>2]|0;j=c[b>>2]|0;n=j+(m<<3)|0;o=c[n>>2]|0;if((m|0)==(o|0)){k=m;break}else{l=j;h=n;i=o}}}c[g+208>>2]=k;c[(c[b>>2]|0)+(f<<3)+4>>2]=a;c[g+212>>2]=-1;p=f+1|0}else{c[g+208>>2]=-1;c[g+212>>2]=-2;p=f}i=a+1|0;if((i|0)<(c[d>>2]|0)){a=i;f=p}else{break}}return}function aAl(a,b){a=a|0;b=+b;g[a+44>>2]=b;return}function aAm(a){a=a|0;return+(+g[a+28>>2]*+g[a+12>>2])}function aAn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=d+8|0;if((c[e>>2]|0)>0){f=d+16|0;h=0;i=0;while(1){j=c[(c[f>>2]|0)+(h<<2)>>2]|0;if((c[j+204>>2]&3|0)==0){c[j+208>>2]=i;k=i+1|0}else{k=i}c[j+212>>2]=-1;g[j+240>>2]=1.0;j=h+1|0;if((j|0)<(c[e>>2]|0)){h=j;i=k}else{l=k;break}}}else{l=0}k=b+8|0;i=c[k>>2]|0;if((i|0)<(l|0)){h=b+12|0;if((c[h>>2]|0)<(l|0)){if((l|0)==0){m=0;n=i}else{c[9806]=(c[9806]|0)+1;e=aDx((l<<3|4)+15|0)|0;if((e|0)==0){o=0}else{f=-(e+4|0)&15;c[e+f>>2]=e;o=e+(f+4)|0}m=o;n=c[k>>2]|0}o=b+16|0;if((n|0)>0){f=0;do{e=m+(f<<3)|0;if((e|0)!=0){j=(c[o>>2]|0)+(f<<3)|0;p=e;e=c[j+4>>2]|0;c[p>>2]=c[j>>2];c[p+4>>2]=e}f=f+1|0;}while((f|0)<(n|0))}n=c[o>>2]|0;f=b+20|0;if((n|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-8+4>>2]|0)}c[o>>2]=0}a[f]=1;c[o>>2]=m;c[h>>2]=l;q=o}else{q=b+16|0}o=i;do{i=(c[q>>2]|0)+(o<<3)|0;if((i|0)!=0){h=i;c[h>>2]=0;c[h+4>>2]=0}o=o+1|0;}while((o|0)<(l|0))}c[k>>2]=l;if((l|0)>0){k=b+16|0;o=0;do{c[(c[k>>2]|0)+(o<<3)>>2]=o;c[(c[k>>2]|0)+(o<<3)+4>>2]=1;o=o+1|0;}while((o|0)<(l|0))}l=c[d+76>>2]|0;d=cA[c[(c[l>>2]|0)+36>>2]&4095](l)|0;l=cA[c[(c[d>>2]|0)+36>>2]&4095](d)|0;o=cA[c[(c[d>>2]|0)+20>>2]&4095](d)|0;if((l|0)<=0){return}d=b+16|0;b=0;do{k=c[c[o+(b<<4)>>2]>>2]|0;q=c[c[o+(b<<4)+4>>2]>>2]|0;do{if((k|0)!=0){if((c[k+204>>2]&7|0)!=0|(q|0)==0){break}if((c[q+204>>2]&7|0)!=0){break}h=c[k+208>>2]|0;i=c[q+208>>2]|0;m=c[d>>2]|0;f=m+(h<<3)|0;n=c[f>>2]|0;if((n|0)==(h|0)){r=h;s=m}else{h=m;m=f;f=n;while(1){n=h+(f<<3)|0;c[m>>2]=c[n>>2];e=c[n>>2]|0;n=c[d>>2]|0;p=n+(e<<3)|0;j=c[p>>2]|0;if((e|0)==(j|0)){r=e;s=n;break}else{h=n;m=p;f=j}}}f=s+(i<<3)|0;m=c[f>>2]|0;if((m|0)==(i|0)){t=i;u=s}else{h=s;j=f;f=m;while(1){m=h+(f<<3)|0;c[j>>2]=c[m>>2];p=c[m>>2]|0;m=c[d>>2]|0;n=m+(p<<3)|0;e=c[n>>2]|0;if((p|0)==(e|0)){t=p;u=m;break}else{h=m;j=n;f=e}}}if((r|0)==(t|0)){break}c[u+(r<<3)>>2]=t;f=c[d>>2]|0;j=f+(t<<3)+4|0;c[j>>2]=(c[j>>2]|0)+(c[f+(r<<3)+4>>2]|0)}}while(0);b=b+1|0;}while((b|0)<(l|0));return}function aAo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=a+12|0;f=c[e>>2]|0;g=c[f+(((d+b|0)/2|0)<<2)>>2]|0;h=g+1108|0;i=g+1112|0;g=b;j=d;k=f;while(1){f=c[(c[h>>2]|0)+208>>2]|0;l=(f|0)>-1;if(l){m=g;while(1){n=c[k+(m<<2)>>2]|0;o=c[(c[n+1108>>2]|0)+208>>2]|0;if((o|0)>-1){p=o}else{p=c[(c[n+1112>>2]|0)+208>>2]|0}if((p|0)<(f|0)){m=m+1|0}else{q=m;r=n;break}}}else{m=c[(c[i>>2]|0)+208>>2]|0;n=g;while(1){o=c[k+(n<<2)>>2]|0;s=c[(c[o+1108>>2]|0)+208>>2]|0;if((s|0)>-1){t=s}else{t=c[(c[o+1112>>2]|0)+208>>2]|0}if((t|0)<(m|0)){n=n+1|0}else{q=n;r=o;break}}}if(l){n=j;while(1){m=c[k+(n<<2)>>2]|0;o=c[(c[m+1108>>2]|0)+208>>2]|0;if((o|0)>-1){u=o}else{u=c[(c[m+1112>>2]|0)+208>>2]|0}if((f|0)<(u|0)){n=n-1|0}else{v=n;w=m;break}}}else{n=c[(c[i>>2]|0)+208>>2]|0;f=j;while(1){l=c[k+(f<<2)>>2]|0;m=c[(c[l+1108>>2]|0)+208>>2]|0;if((m|0)>-1){x=m}else{x=c[(c[l+1112>>2]|0)+208>>2]|0}if((n|0)<(x|0)){f=f-1|0}else{v=f;w=l;break}}}if((q|0)>(v|0)){y=q;z=v}else{c[k+(q<<2)>>2]=w;c[(c[e>>2]|0)+(v<<2)>>2]=r;y=q+1|0;z=v-1|0}if((y|0)>(z|0)){break}g=y;j=z;k=c[e>>2]|0}if((z|0)>(b|0)){aAo(a,b,z)}if((y|0)>=(d|0)){return}aAo(a,y,d);return}function aAp(a,b,c){a=a|0;b=b|0;c=c|0;aDD(a|0,0,16);return}function aAq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((d|0)>0){e=0}else{return}while(1){b=e+1|0;aDD(c+(e<<4)|0,0,16);if((b|0)<(d|0)){e=b}else{break}}return}function aAr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0.0,j=0.0;dA[c[(c[b>>2]|0)+64>>2]&511](a,b,d);e=+g[d>>2];f=+g[d+4>>2];h=+g[d+8>>2];d=e*e+f*f+h*h<1.4210854715202004e-14;i=d?-1.0:h;h=d?-1.0:f;f=d?-1.0:e;e=1.0/+Q(+(i*i+(f*f+h*h)));j=+dh[c[(c[b>>2]|0)+44>>2]&1023](b);b=a|0;g[b>>2]=e*f*j+ +g[b>>2];b=a+4|0;g[b>>2]=j*e*h+ +g[b>>2];b=a+8|0;g[b>>2]=j*e*i+ +g[b>>2];return}function aAs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0.0,j=0.0,k=0.0,l=0,m=0.0;f=a;h=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);i=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);j=+dh[c[(c[f>>2]|0)+44>>2]&1023](a);a=b+48|0;f=b+52|0;k=+g[f>>2]-i;l=b+56|0;m=+g[l>>2]-j;g[d>>2]=+g[a>>2]-h;g[d+4>>2]=k;g[d+8>>2]=m;g[d+12>>2]=0.0;m=i+ +g[f>>2];i=j+ +g[l>>2];g[e>>2]=h+ +g[a>>2];g[e+4>>2]=m;g[e+8>>2]=i;g[e+12>>2]=0.0;return}function aAt(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0.0;e=a;f=b*.4000000059604645*+dh[c[(c[e>>2]|0)+44>>2]&1023](a);b=f*+dh[c[(c[e>>2]|0)+44>>2]&1023](a);g[d>>2]=b;g[d+4>>2]=b;g[d+8>>2]=b;g[d+12>>2]=0.0;return}function aAu(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-52+48>>2]|0);return}function aAv(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=19832;if((a[b+8|0]&1)==0){d=b;aDB(d);return}e=c[b+12>>2]|0;if((e|0)==0){d=b;aDB(d);return}f=c[b+4>>2]|0;cv[c[(c[f>>2]|0)+16>>2]&2047](f,e);d=b;aDB(d);return}function aAw(b){b=b|0;var d=0,e=0;c[b>>2]=19832;if((a[b+8|0]&1)==0){return}d=c[b+12>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aAx(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0;e=i;i=i+32|0;h=e|0;j=e+16|0;k=c[a+12>>2]|0;if((k|0)==0){i=e;return}a=f+4|0;c[a>>2]=k;l=c[b+192>>2]|0;m=c[d+192>>2]|0;n=+g[d+52>>2];o=+g[b+52>>2]-n;p=+g[d+56>>2];q=+g[b+56>>2]-p;r=+g[d+60>>2];s=+g[b+60>>2]-r;t=+Q(+(o*o+q*q+s*s));u=+g[m+28>>2]*+g[m+12>>2];v=+g[l+28>>2]*+g[l+12>>2]+u;if(t>v){if((c[k+1116>>2]|0)==0){i=e;return}if((c[k+1108>>2]|0)==(c[f+136>>2]|0)){ay6(k,f+8|0,f+72|0);i=e;return}else{ay6(k,f+72|0,f+8|0);i=e;return}}k=h|0;g[k>>2]=1.0;l=h+4|0;g[l>>2]=0.0;m=h+8|0;g[m>>2]=0.0;b=h+12|0;g[b>>2]=0.0;if(t>1.1920928955078125e-7){w=1.0/t;x=o*w;o=q*w;q=s*w;g[k>>2]=x;g[l>>2]=o;g[m>>2]=q;g[b>>2]=0.0;y=x;z=o;A=q}else{y=1.0;z=0.0;A=0.0}g[j>>2]=u*y+n;g[j+4>>2]=u*z+p;g[j+8>>2]=u*A+r;g[j+12>>2]=0.0;dw[c[(c[f>>2]|0)+16>>2]&127](f,h,j,t-v);j=c[a>>2]|0;if((c[j+1116>>2]|0)==0){i=e;return}if((c[j+1108>>2]|0)==(c[f+136>>2]|0)){ay6(j,f+8|0,f+72|0);i=e;return}else{ay6(j,f+72|0,f+8|0);i=e;return}}function aAy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function aAz(a){a=a|0;return}function aAA(a){a=a|0;return 17592|0}function aAB(a){a=a|0;return 52}function aAC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;g[c>>2]=-999999984306749400.0;g[c+4>>2]=-999999984306749400.0;g[c+8>>2]=-999999984306749400.0;g[c+12>>2]=0.0;g[d>>2]=999999984306749400.0;g[d+4>>2]=999999984306749400.0;g[d+8>>2]=999999984306749400.0;g[d+12>>2]=0.0;return}function aAD(a){a=a|0;return a+68|0}function aAE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+12|0;if((c[e>>2]|0)==0){return}if((a[b+8|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aAF(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=19688;if((a[b+8|0]&1)==0){d=b;aDB(d);return}e=c[b+12>>2]|0;if((e|0)==0){d=b;aDB(d);return}f=c[b+4>>2]|0;cv[c[(c[f>>2]|0)+16>>2]&2047](f,e);d=b;aDB(d);return}function aAG(b){b=b|0;var d=0,e=0;c[b>>2]=19688;if((a[b+8|0]&1)==0){return}d=c[b+12>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aAH(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;j=i;i=i+152|0;k=j|0;l=j+16|0;m=b+12|0;n=c[m>>2]|0;if((n|0)==0){i=j;return}o=b+16|0;p=(a[o]&1)!=0;q=p?e:d;r=p?d:e;e=c[q+192>>2]|0;d=c[r+192>>2]|0;p=h+4|0;c[p>>2]=n;s=+g[(c[m>>2]|0)+1120>>2];c[k>>2]=21944;c[k+4>>2]=e;c[k+8>>2]=d;g[k+12>>2]=s;c[l+132>>2]=0;g[l+128>>2]=999999984306749400.0;d=l;e=q+4|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=l+16|0;d=q+20|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=l+32|0;e=q+36|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=l+48|0;d=q+52|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=l+64|0;e=r+4|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=l+80|0;d=r+20|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];d=l+96|0;e=r+36|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=l+112|0;d=r+52|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];aB0(k,l,h|0,c[f+20>>2]|0,(a[o]&1)!=0);if((a[b+8|0]&1)==0){i=j;return}b=c[p>>2]|0;if((c[b+1116>>2]|0)==0){i=j;return}if((c[b+1108>>2]|0)==(c[h+136>>2]|0)){ay6(b,h+8|0,h+72|0);i=j;return}else{ay6(b,h+72|0,h+8|0);i=j;return}}function aAI(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+12|0;if((c[e>>2]|0)==0){return}if((a[b+8|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aAJ(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aAK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;f=i;i=i+48|0;h=f|0;j=+g[e>>2];k=+g[d>>2];l=+g[e+4>>2];m=+g[d+4>>2];n=+g[e+8>>2];o=+g[d+8>>2];p=(j-k)*.5;q=(l-m)*.5;r=(n-o)*.5;s=+Q(+(p*p+q*q+r*r));r=(j+k)*.5;k=(l+m)*.5;m=(n+o)*.5;d=a+48|0;o=+g[a+56>>2];if(+P(+o)>.7071067690849304){n=+g[a+52>>2];l=o*o+n*n;j=1.0/+Q(+l);q=j*(-0.0-o);p=n*j;t=+g[d>>2];u=l*j;v=p*(-0.0-t);w=t*q;x=0.0;y=q;z=p;A=t;B=n}else{n=+g[d>>2];t=+g[a+52>>2];p=n*n+t*t;q=1.0/+Q(+p);j=q*(-0.0-t);l=n*q;u=l*(-0.0-o);v=o*j;w=p*q;x=j;y=l;z=0.0;A=n;B=t}t=r*A+k*B+m*o- +g[a+64>>2];n=k-B*t;a=h|0;B=r-A*t;A=m-o*t;t=s*x;x=s*y;y=s*z;z=t+B;o=x+n;m=y+A;r=s*u;u=s*v;v=s*w;w=r+z;s=u+o;k=v+m;d=h|0;g[d>>2]=w;e=h+4|0;g[e>>2]=s;C=h+8|0;g[C>>2]=k;D=h+12|0;g[D>>2]=0.0;E=h+16|0;g[E>>2]=z-r;F=h+20|0;g[F>>2]=o-u;G=h+24|0;g[G>>2]=m-v;H=h+28|0;g[H>>2]=0.0;m=B-t;t=n-x;x=A-y;y=m-r;A=t-u;n=x-v;I=h+32|0;g[I>>2]=y;J=h+36|0;g[J>>2]=A;K=h+40|0;g[K>>2]=n;L=h+44|0;g[L>>2]=0.0;h=b;dI[c[(c[h>>2]|0)+8>>2]&1023](b,a,0,0);g[d>>2]=y;g[e>>2]=A;g[C>>2]=n;g[D>>2]=0.0;g[E>>2]=r+m;g[F>>2]=u+t;g[G>>2]=v+x;g[H>>2]=0.0;g[I>>2]=w;g[J>>2]=s;g[K>>2]=k;g[L>>2]=0.0;dI[c[(c[h>>2]|0)+8>>2]&1023](b,a,0,1);i=f;return}function aAL(a,b,c){a=a|0;b=+b;c=c|0;aDD(c|0,0,16);return}function aAM(a,b){a=a|0;b=b|0;var d=0;d=a+68|0;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];return}function aAN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0;e=d;f=dj[c[(c[e>>2]|0)+40>>2]&511](d,a)|0;h=dj[c[(c[e>>2]|0)+28>>2]&511](d,f)|0;c[b>>2]=h;if((h|0)!=0){cv[c[(c[d>>2]|0)+48>>2]&2047](d,f)}c[b+4>>2]=c[a+4>>2];g[b+12>>2]=+g[a+68>>2];g[b+16>>2]=+g[a+72>>2];g[b+20>>2]=+g[a+76>>2];g[b+24>>2]=+g[a+80>>2];g[b+28>>2]=+g[a+48>>2];g[b+32>>2]=+g[a+52>>2];g[b+36>>2]=+g[a+56>>2];g[b+40>>2]=+g[a+60>>2];g[b+44>>2]=+g[a+64>>2];return 16264}function aAO(a,b,f,j){a=a|0;b=b|0;f=f|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0,X=0,Y=0,Z=0,_=0;j=i;i=i+112|0;f=j|0;k=j+8|0;l=j+16|0;m=j+24|0;n=j+32|0;o=j+40|0;p=j+48|0;q=j+56|0;r=j+64|0;s=cA[c[(c[a>>2]|0)+28>>2]&4095](a)|0;t=r|0;u=+g[a+4>>2];v=+g[a+8>>2];w=+g[a+12>>2];if((s|0)<=0){i=j;return}x=a;y=a;z=r|0;A=r+4|0;B=r+8|0;C=r+12|0;D=r+16|0;E=r+20|0;F=r+24|0;G=r+28|0;H=r+32|0;I=r+36|0;J=r+40|0;K=r+44|0;r=b;L=0;do{di[c[(c[x>>2]|0)+16>>2]&63](a,f,p,m,o,k,l,q,n,L);M=c[m>>2]|0;do{if((M|0)==0){N=c[n>>2]|0;if((N|0)==2){if((c[q>>2]|0)>0){O=0}else{break}do{P=c[k>>2]|0;Q=aa(c[l>>2]|0,O)|0;R=c[f>>2]|0;S=c[o>>2]|0;T=aa(S,c[P+Q>>2]|0)|0;U=v*+g[R+(T+4)>>2];V=w*+g[R+(T+8)>>2];g[z>>2]=u*+g[R+T>>2];g[A>>2]=U;g[B>>2]=V;g[C>>2]=0.0;T=aa(S,c[P+(Q+4)>>2]|0)|0;V=v*+g[R+(T+4)>>2];U=w*+g[R+(T+8)>>2];g[D>>2]=u*+g[R+T>>2];g[E>>2]=V;g[F>>2]=U;g[G>>2]=0.0;T=aa(S,c[P+(Q+8)>>2]|0)|0;U=v*+g[R+(T+4)>>2];V=w*+g[R+(T+8)>>2];g[H>>2]=u*+g[R+T>>2];g[I>>2]=U;g[J>>2]=V;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,O);O=O+1|0;}while((O|0)<(c[q>>2]|0))}else if((N|0)==5){if((c[q>>2]|0)>0){W=0}else{break}do{T=c[k>>2]|0;R=aa(c[l>>2]|0,W)|0;Q=c[f>>2]|0;P=c[o>>2]|0;S=aa(d[T+R|0]|0,P)|0;V=v*+g[Q+(S+4)>>2];U=w*+g[Q+(S+8)>>2];g[z>>2]=u*+g[Q+S>>2];g[A>>2]=V;g[B>>2]=U;g[C>>2]=0.0;S=aa(d[T+(R+1)|0]|0,P)|0;U=v*+g[Q+(S+4)>>2];V=w*+g[Q+(S+8)>>2];g[D>>2]=u*+g[Q+S>>2];g[E>>2]=U;g[F>>2]=V;g[G>>2]=0.0;S=aa(d[T+(R+2)|0]|0,P)|0;V=v*+g[Q+(S+4)>>2];U=w*+g[Q+(S+8)>>2];g[H>>2]=u*+g[Q+S>>2];g[I>>2]=V;g[J>>2]=U;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,W);W=W+1|0;}while((W|0)<(c[q>>2]|0))}else if((N|0)==3){if((c[q>>2]|0)>0){X=0}else{break}do{S=c[k>>2]|0;Q=aa(c[l>>2]|0,X)|0;P=c[f>>2]|0;R=c[o>>2]|0;T=aa(e[S+Q>>1]|0,R)|0;U=v*+g[P+(T+4)>>2];V=w*+g[P+(T+8)>>2];g[z>>2]=u*+g[P+T>>2];g[A>>2]=U;g[B>>2]=V;g[C>>2]=0.0;T=aa(e[S+(Q+2)>>1]|0,R)|0;V=v*+g[P+(T+4)>>2];U=w*+g[P+(T+8)>>2];g[D>>2]=u*+g[P+T>>2];g[E>>2]=V;g[F>>2]=U;g[G>>2]=0.0;T=aa(e[S+(Q+4)>>1]|0,R)|0;U=v*+g[P+(T+4)>>2];V=w*+g[P+(T+8)>>2];g[H>>2]=u*+g[P+T>>2];g[I>>2]=U;g[J>>2]=V;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,X);X=X+1|0;}while((X|0)<(c[q>>2]|0))}else{break}}else if((M|0)==1){N=c[n>>2]|0;if((N|0)==5){if((c[q>>2]|0)>0){Y=0}else{break}do{T=c[k>>2]|0;P=aa(c[l>>2]|0,Y)|0;R=c[f>>2]|0;Q=c[o>>2]|0;S=aa(d[T+P|0]|0,Q)|0;V=v*+h[R+(S+8)>>3];U=w*+h[R+(S+16)>>3];g[z>>2]=u*+h[R+S>>3];g[A>>2]=V;g[B>>2]=U;g[C>>2]=0.0;S=aa(d[T+(P+1)|0]|0,Q)|0;U=v*+h[R+(S+8)>>3];V=w*+h[R+(S+16)>>3];g[D>>2]=u*+h[R+S>>3];g[E>>2]=U;g[F>>2]=V;g[G>>2]=0.0;S=aa(d[T+(P+2)|0]|0,Q)|0;V=v*+h[R+(S+8)>>3];U=w*+h[R+(S+16)>>3];g[H>>2]=u*+h[R+S>>3];g[I>>2]=V;g[J>>2]=U;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,Y);Y=Y+1|0;}while((Y|0)<(c[q>>2]|0))}else if((N|0)==3){if((c[q>>2]|0)>0){Z=0}else{break}do{S=c[k>>2]|0;R=aa(c[l>>2]|0,Z)|0;Q=c[f>>2]|0;P=c[o>>2]|0;T=aa(e[S+R>>1]|0,P)|0;U=v*+h[Q+(T+8)>>3];V=w*+h[Q+(T+16)>>3];g[z>>2]=u*+h[Q+T>>3];g[A>>2]=U;g[B>>2]=V;g[C>>2]=0.0;T=aa(e[S+(R+2)>>1]|0,P)|0;V=v*+h[Q+(T+8)>>3];U=w*+h[Q+(T+16)>>3];g[D>>2]=u*+h[Q+T>>3];g[E>>2]=V;g[F>>2]=U;g[G>>2]=0.0;T=aa(e[S+(R+4)>>1]|0,P)|0;U=v*+h[Q+(T+8)>>3];V=w*+h[Q+(T+16)>>3];g[H>>2]=u*+h[Q+T>>3];g[I>>2]=U;g[J>>2]=V;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,Z);Z=Z+1|0;}while((Z|0)<(c[q>>2]|0))}else if((N|0)==2){if((c[q>>2]|0)>0){_=0}else{break}do{T=c[k>>2]|0;Q=aa(c[l>>2]|0,_)|0;P=c[f>>2]|0;R=c[o>>2]|0;S=aa(R,c[T+Q>>2]|0)|0;V=v*+h[P+(S+8)>>3];U=w*+h[P+(S+16)>>3];g[z>>2]=u*+h[P+S>>3];g[A>>2]=V;g[B>>2]=U;g[C>>2]=0.0;S=aa(R,c[T+(Q+4)>>2]|0)|0;U=v*+h[P+(S+8)>>3];V=w*+h[P+(S+16)>>3];g[D>>2]=u*+h[P+S>>3];g[E>>2]=U;g[F>>2]=V;g[G>>2]=0.0;S=aa(R,c[T+(Q+8)>>2]|0)|0;V=v*+h[P+(S+8)>>3];U=w*+h[P+(S+16)>>3];g[H>>2]=u*+h[P+S>>3];g[I>>2]=V;g[J>>2]=U;g[K>>2]=0.0;dI[c[(c[r>>2]|0)+8>>2]&1023](b,t,L,_);_=_+1|0;}while((_|0)<(c[q>>2]|0))}else{break}}}while(0);cv[c[(c[y>>2]|0)+24>>2]&2047](a,L);L=L+1|0;}while((L|0)<(s|0));i=j;return}function aAP(a){a=a|0;return 28}function aAQ(a){a=a|0;return}function aAR(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0.0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0;d=a+4|0;c=b|0;e=+g[c>>2];f=+g[d>>2];if(e>2]=e;h=e}else{h=f}i=a+8|0;j=b+4|0;f=+g[j>>2];e=+g[i>>2];if(f>2]=f;k=f}else{k=e}l=a+12|0;m=b+8|0;e=+g[m>>2];f=+g[l>>2];if(e>2]=e;n=e}else{n=f}o=a+16|0;p=b+12|0;f=+g[p>>2];e=+g[o>>2];if(f>2]=f;q=f}else{q=e}r=a+20|0;e=+g[r>>2];f=+g[c>>2];if(e>2]=f;s=f}else{s=e}c=a+24|0;e=+g[c>>2];f=+g[j>>2];if(e>2]=f;t=f}else{t=e}j=a+28|0;e=+g[j>>2];f=+g[m>>2];if(e>2]=f;u=f}else{u=e}m=a+32|0;e=+g[m>>2];f=+g[p>>2];if(e>2]=f;v=f}else{v=e}p=b+16|0;e=+g[p>>2];if(e>2]=e;w=e}else{w=h}a=b+20|0;h=+g[a>>2];if(h>2]=h;x=h}else{x=k}y=b+24|0;k=+g[y>>2];if(k>2]=k;z=k}else{z=n}A=b+28|0;n=+g[A>>2];if(n>2]=n;B=n}else{B=q}q=+g[p>>2];if(s>2]=q;C=q}else{C=s}s=+g[a>>2];if(t>2]=s;D=s}else{D=t}t=+g[y>>2];if(u>2]=t;E=t}else{E=u}u=+g[A>>2];if(v>2]=u;F=u}else{F=v}A=b+32|0;v=+g[A>>2];if(v>2]=v}d=b+36|0;v=+g[d>>2];if(v>2]=v}i=b+40|0;v=+g[i>>2];if(v>2]=v}l=b+44|0;v=+g[l>>2];if(v>2]=v}v=+g[A>>2];if(C>2]=v}v=+g[d>>2];if(D>2]=v}v=+g[i>>2];if(E>2]=v}v=+g[l>>2];if(F>=v){return}g[m>>2]=v;return}function aAS(d,e,f){d=d|0;e=e|0;f=f|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0.0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,ab=0,ac=0,ad=0,ae=0,af=0;j=i;i=i+64|0;k=j|0;l=j+8|0;m=j+16|0;n=j+24|0;o=j+32|0;p=j+40|0;q=j+48|0;r=j+56|0;s=d;t=cA[c[(c[s>>2]|0)+28>>2]&4095](d)|0;c[e+20>>2]=t;u=e;c[u>>2]=0;if((t|0)==0){v=e+4|0;w=d+4|0;x=+g[w>>2];y=v;g[y>>2]=x;z=d+8|0;A=+g[z>>2];B=e+8|0;C=B;g[C>>2]=A;D=d+12|0;E=+g[D>>2];F=e+12|0;G=F;g[G>>2]=E;H=d+16|0;I=+g[H>>2];J=e+16|0;K=J;g[K>>2]=I;i=j;return 16416}L=f;M=cS[c[(c[L>>2]|0)+16>>2]&511](f,32,t)|0;t=M+8|0;N=c[t>>2]|0;O=f;c[u>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,N)|0;u=cA[c[(c[s>>2]|0)+28>>2]&4095](d)|0;if((u|0)>0){s=d;P=d;Q=f;R=0;S=N;while(1){di[c[(c[s>>2]|0)+16>>2]&63](d,k,q,n,p,l,m,r,o,R);c[S+24>>2]=c[r>>2];c[S+28>>2]=c[q>>2];c[S+20>>2]=0;N=S+8|0;T=S+12|0;U=S|0;V=S+4|0;aDD(S|0,0,16);W=c[o>>2]|0;do{if((W|0)==3){X=c[r>>2]|0;if((X|0)==0){break}Y=cS[c[(c[L>>2]|0)+16>>2]&511](f,8,X)|0;X=Y+8|0;Z=c[X>>2]|0;_=Z;c[T>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,Z)|0;if((c[r>>2]|0)>0){Z=0;do{$=c[l>>2]|0;ab=aa(c[m>>2]|0,Z)|0;b[_+(Z<<3)>>1]=b[$+ab>>1]|0;b[_+(Z<<3)+2>>1]=b[$+(ab+2)>>1]|0;b[_+(Z<<3)+4>>1]=b[$+(ab+4)>>1]|0;Z=Z+1|0;}while((Z|0)<(c[r>>2]|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,Y,17560,1497453121,c[X>>2]|0)}else if((W|0)==5){Z=c[r>>2]|0;if((Z|0)==0){break}_=cS[c[(c[L>>2]|0)+16>>2]&511](f,4,Z)|0;Z=_+8|0;ab=c[Z>>2]|0;$=ab;c[S+16>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,ab)|0;if((c[r>>2]|0)>0){ab=0;do{ac=c[l>>2]|0;ad=aa(c[m>>2]|0,ab)|0;a[$+(ab<<2)|0]=a[ac+ad|0]|0;a[$+(ab<<2)+1|0]=a[ac+(ad+1)|0]|0;a[$+(ab<<2)+2|0]=a[ac+(ad+2)|0]|0;ab=ab+1|0;}while((ab|0)<(c[r>>2]|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,_,17184,1497453121,c[Z>>2]|0)}else if((W|0)==2){ab=(c[r>>2]|0)*3|0;if((ab|0)==0){break}$=cS[c[(c[L>>2]|0)+16>>2]&511](f,4,ab)|0;ab=$+8|0;X=c[ab>>2]|0;Y=X;c[N>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,X)|0;if((c[r>>2]|0)>0){X=0;do{ad=c[l>>2]|0;ac=aa(c[m>>2]|0,X)|0;ae=X*3|0;c[Y+(ae<<2)>>2]=c[ad+ac>>2];c[Y+(ae+1<<2)>>2]=c[ad+(ac+4)>>2];c[Y+(ae+2<<2)>>2]=c[ad+(ac+8)>>2];X=X+1|0;}while((X|0)<(c[r>>2]|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,$,16248,1497453121,c[ab>>2]|0)}}while(0);N=c[n>>2]|0;do{if((N|0)==0){W=c[q>>2]|0;if((W|0)==0){break}T=cS[c[(c[L>>2]|0)+16>>2]&511](f,16,W)|0;W=T+8|0;X=c[W>>2]|0;Y=X;c[U>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,X)|0;if((c[q>>2]|0)>0){X=0;do{Z=c[k>>2]|0;_=aa(c[p>>2]|0,X)|0;g[Y+(X<<4)>>2]=+g[Z+_>>2];g[Y+(X<<4)+4>>2]=+g[Z+(_+4)>>2];g[Y+(X<<4)+8>>2]=+g[Z+(_+8)>>2];X=X+1|0;}while((X|0)<(c[q>>2]|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,T,16904,1497453121,c[W>>2]|0)}else if((N|0)==1){X=c[q>>2]|0;if((X|0)==0){break}Y=cS[c[(c[L>>2]|0)+16>>2]&511](f,32,X)|0;X=Y+8|0;ab=c[X>>2]|0;$=ab;c[V>>2]=dj[c[(c[O>>2]|0)+28>>2]&511](f,ab)|0;ab=c[q>>2]|0;if((ab|0)>0){_=c[k>>2]|0;Z=c[p>>2]|0;ac=0;do{ad=aa(Z,ac)|0;h[$+(ac<<5)>>3]=+h[_+ad>>3];h[$+(ac<<5)+8>>3]=+h[_+(ad+8)>>3];h[$+(ac<<5)+16>>3]=+h[_+(ad+16)>>3];ac=ac+1|0;}while((ac|0)<(ab|0))}co[c[(c[Q>>2]|0)+20>>2]&255](f,Y,16672,1497453121,c[X>>2]|0)}}while(0);cv[c[(c[P>>2]|0)+24>>2]&2047](d,R);V=R+1|0;if((V|0)<(u|0)){R=V;S=S+32|0}else{af=Q;break}}}else{af=f}co[c[(c[af>>2]|0)+20>>2]&255](f,M,16576,1497453121,c[t>>2]|0);v=e+4|0;w=d+4|0;x=+g[w>>2];y=v;g[y>>2]=x;z=d+8|0;A=+g[z>>2];B=e+8|0;C=B;g[C>>2]=A;D=d+12|0;E=+g[D>>2];F=e+12|0;G=F;g[G>>2]=E;H=d+16|0;I=+g[H>>2];J=e+16|0;K=J;g[K>>2]=I;i=j;return 16416}function aAT(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aAU(a){a=a|0;return}function aAV(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function aAW(a,b){a=a|0;b=b|0;return 0}function aAX(a,b,c){a=a|0;b=b|0;c=+c;return 0}function aAY(a){a=a|0;return 17536|0}function aAZ(a){a=a|0;return c[a+92>>2]|0}function aA_(a){a=a|0;var b=0,d=0;b=c[a+92>>2]|0;switch(b|0){case 1:{d=0;break};case 0:case 3:{d=b;break};case 2:{d=1;break};case 4:{d=6;break};default:{d=0}}return d|0}function aA$(a){a=a|0;var b=0,d=0;b=c[a+92>>2]|0;switch(b|0){case 0:case 4:{d=b;break};case 1:{d=0;break};case 3:{d=2;break};case 2:{d=0;break};default:{d=0}}return d|0}function aA0(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0.0,B=0,C=0.0,D=0,E=0,F=0.0,G=0,H=0,I=0.0,J=0,K=0.0,L=0,M=0.0,N=0,O=0.0,P=0,R=0.0,S=0,T=0.0,U=0,V=0.0,W=0,X=0.0,Y=0,Z=0.0,_=0,$=0.0,aa=0,ab=0.0,ac=0.0,ad=0,ae=0.0,af=0,ag=0.0,ah=0,ai=0.0,aj=0,ak=0.0,al=0,am=0.0,an=0,ao=0.0,ap=0,aq=0.0,ar=0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0,ax=0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0.0,aQ=0.0,aR=0.0,aS=0.0,aT=0.0,aU=0.0,aV=0.0,aW=0.0,aX=0.0,aY=0.0,aZ=0.0,a_=0.0,a$=0.0,a0=0,a1=0,a2=0.0,a3=0.0,a4=0.0,a5=0.0,a6=0.0,a7=0.0,a8=0.0,a9=0.0,ba=0.0,bb=0.0,bc=0.0,bd=0.0,be=0.0,bf=0,bg=0,bh=0,bi=0.0,bj=0.0,bk=0.0;l=i;i=i+128|0;m=l|0;n=l+16|0;o=l+32|0;p=l+48|0;q=l+64|0;r=l+80|0;s=l+96|0;t=l+112|0;u=d+4|0;v=c[u>>2]|0;a[v+312|0]=0;c[v>>2]=0;a[v+356|0]=1;g[v+292>>2]=999999984306749400.0;g[v+296>>2]=999999984306749400.0;g[v+300>>2]=999999984306749400.0;g[v+304>>2]=0.0;w=v+332|0;aDD(v+336|0,0,17);b[w>>1]=b[w>>1]&-16;w=f+48|0;v=e+48|0;x=+g[v>>2];y=f+52|0;z=e+52|0;A=+g[z>>2];B=f+56|0;f=e+56|0;C=+g[f>>2];D=j+48|0;E=h+48|0;F=+g[E>>2];G=j+52|0;H=h+52|0;I=+g[H>>2];J=j+56|0;j=h+56|0;K=+g[j>>2];L=e|0;M=+g[L>>2];N=e+4|0;O=+g[N>>2];P=e+8|0;R=+g[P>>2];S=e+16|0;T=+g[S>>2];U=e+20|0;V=+g[U>>2];W=e+24|0;X=+g[W>>2];Y=e+32|0;Z=+g[Y>>2];_=e+36|0;$=+g[_>>2];aa=e+40|0;ab=+g[aa>>2];e=h|0;ac=+g[e>>2];ad=h+4|0;ae=+g[ad>>2];af=h+8|0;ag=+g[af>>2];ah=h+16|0;ai=+g[ah>>2];aj=h+20|0;ak=+g[aj>>2];al=h+24|0;am=+g[al>>2];an=h+32|0;ao=+g[an>>2];ap=h+36|0;aq=+g[ap>>2];ar=h+40|0;as=+g[ar>>2];at=+g[w>>2]-x-(+g[D>>2]-F);au=+g[y>>2]-A-(+g[G>>2]-I);av=+g[B>>2]-C-(+g[J>>2]-K);h=d+8|0;aw=c[h>>2]|0;ax=c[(c[aw>>2]|0)+60>>2]|0;ay=-0.0-at;az=-0.0-au;aA=-0.0-av;g[n>>2]=M*ay+T*az+Z*aA;g[n+4>>2]=O*ay+V*az+$*aA;g[n+8>>2]=R*ay+X*az+ab*aA;g[n+12>>2]=0.0;dA[ax&511](m,aw,n);aA=+g[m>>2];az=+g[m+4>>2];ay=+g[m+8>>2];aB=+g[v>>2]+(+g[L>>2]*aA+ +g[N>>2]*az+ +g[P>>2]*ay);aC=+g[z>>2]+(aA*+g[S>>2]+az*+g[U>>2]+ay*+g[W>>2]);aD=+g[f>>2]+(aA*+g[Y>>2]+az*+g[_>>2]+ay*+g[aa>>2]);aa=d+12|0;d=c[aa>>2]|0;_=c[(c[d>>2]|0)+60>>2]|0;ay=at*+g[ad>>2]+au*+g[aj>>2]+av*+g[ap>>2];az=at*+g[af>>2]+au*+g[al>>2]+av*+g[ar>>2];g[p>>2]=at*+g[e>>2]+au*+g[ah>>2]+av*+g[an>>2];g[p+4>>2]=ay;g[p+8>>2]=az;g[p+12>>2]=0.0;dA[_&511](o,d,p);az=+g[o>>2];ay=+g[o+4>>2];aA=+g[o+8>>2];aE=aB-(+g[E>>2]+(+g[e>>2]*az+ +g[ad>>2]*ay+ +g[af>>2]*aA));aB=aC-(+g[H>>2]+(az*+g[ah>>2]+ay*+g[aj>>2]+aA*+g[al>>2]));aC=aD-(+g[j>>2]+(az*+g[an>>2]+ay*+g[ap>>2]+aA*+g[ar>>2]));L1484:do{if(aE*aE+aB*aB+aC*aC>9999999747378752.0e-20){ar=r|0;ap=r+4|0;an=r+8|0;al=r+12|0;aj=q|0;ah=q+4|0;af=q+8|0;ad=t|0;e=t+4|0;o=t+8|0;p=t+12|0;d=s|0;_=s+4|0;Y=s+8|0;aA=C;ay=A;az=x;aD=K;aF=I;aG=F;aH=0.0;aI=0.0;aJ=0.0;W=32;aK=0.0;aL=aE;aM=aB;aN=aC;while(1){U=W-1|0;if((W|0)==0){aO=aH;aP=aI;aQ=aJ;aR=aK;break L1484}S=c[h>>2]|0;P=c[(c[S>>2]|0)+60>>2]|0;aS=-0.0-aL;aT=-0.0-aM;aU=-0.0-aN;g[ar>>2]=M*aS+T*aT+Z*aU;g[ap>>2]=O*aS+V*aT+$*aU;g[an>>2]=R*aS+X*aT+ab*aU;g[al>>2]=0.0;dA[P&511](q,S,r);aU=+g[aj>>2];aT=+g[ah>>2];aS=+g[af>>2];aV=az+(M*aU+O*aT+R*aS);aW=ay+(T*aU+V*aT+X*aS);aX=aA+(Z*aU+$*aT+ab*aS);S=c[aa>>2]|0;P=c[(c[S>>2]|0)+60>>2]|0;g[ad>>2]=ac*aL+ai*aM+ao*aN;g[e>>2]=ae*aL+ak*aM+aq*aN;g[o>>2]=ag*aL+am*aM+as*aN;g[p>>2]=0.0;dA[P&511](s,S,t);aS=+g[d>>2];aT=+g[_>>2];aU=+g[Y>>2];aY=aG+(ac*aS+ae*aT+ag*aU);aZ=aF+(ai*aS+ak*aT+am*aU);a_=aD+(ao*aS+aq*aT+as*aU);aU=aV-aY;aT=aW-aZ;aS=aX-a_;a$=aL*aU+aM*aT+aN*aS;if(aK>1.0){a0=0;a1=1141;break}if(a$>0.0){a2=at*aL+au*aM+av*aN;if(a2>=-1.4210854715202004e-14){a0=0;a1=1140;break}a3=aK-a$/a2;a2=1.0-a3;a4=a3;a5=aL;a6=aM;a7=aN;a8=a2*+g[E>>2]+a3*+g[D>>2];a9=a2*+g[H>>2]+a3*+g[G>>2];ba=a2*+g[j>>2]+a3*+g[J>>2];bb=+g[v>>2]*a2+a3*+g[w>>2];bc=a2*+g[z>>2]+a3*+g[y>>2];bd=a2*+g[f>>2]+a3*+g[B>>2]}else{a4=aK;a5=aJ;a6=aI;a7=aH;a8=aG;a9=aF;ba=aD;bb=az;bc=ay;bd=aA}S=c[u>>2]|0;P=S|0;N=c[P>>2]|0;if((N|0)>0){a3=+g[S+308>>2];L=0;m=0;while(1){a2=aU- +g[S+4+(m<<4)>>2];a$=aT- +g[S+4+(m<<4)+4>>2];be=aS- +g[S+4+(m<<4)+8>>2];n=L|a2*a2+a$*a$+be*be<=a3;aw=m+1|0;if((aw|0)<(N|0)){L=n;m=aw}else{bf=n;break}}}else{bf=0}m=S+304|0;do{if(+g[m>>2]==0.0){if(aS!=+g[S+300>>2]){bg=0;break}if(aT!=+g[S+296>>2]){bg=0;break}bg=aU==+g[S+292>>2]}else{bg=0}}while(0);if(bg|bf){bh=S}else{g[S+292>>2]=aU;g[S+296>>2]=aT;g[S+300>>2]=aS;g[m>>2]=0.0;a[S+356|0]=1;g[S+4+(N<<4)>>2]=aU;g[S+4+(N<<4)+4>>2]=aT;g[S+4+(N<<4)+8>>2]=aS;g[S+4+(N<<4)+12>>2]=0.0;L=c[P>>2]|0;g[S+84+(L<<4)>>2]=aV;g[S+84+(L<<4)+4>>2]=aW;g[S+84+(L<<4)+8>>2]=aX;g[S+84+(L<<4)+12>>2]=0.0;L=c[P>>2]|0;g[S+164+(L<<4)>>2]=aY;g[S+164+(L<<4)+4>>2]=aZ;g[S+164+(L<<4)+8>>2]=a_;g[S+164+(L<<4)+12>>2]=0.0;c[P>>2]=(c[P>>2]|0)+1;bh=c[u>>2]|0}L=aBZ(bh)|0;a3=+g[bh+276>>2];be=+g[bh+280>>2];a$=+g[bh+284>>2];if(!L){aO=a7;aP=a6;aQ=a5;aR=a4;break L1484}if(a3*a3+be*be+a$*a$>9999999747378752.0e-20){aA=bd;ay=bc;az=bb;aD=ba;aF=a9;aG=a8;aH=a7;aI=a6;aJ=a5;W=U;aK=a4;aL=a3;aM=be;aN=a$}else{aO=a7;aP=a6;aQ=a5;aR=a4;break L1484}}if((a1|0)==1140){i=l;return a0|0}else if((a1|0)==1141){i=l;return a0|0}}else{aO=0.0;aP=0.0;aQ=0.0;aR=0.0}}while(0);g[k+164>>2]=aR;aR=aO*aO+(aP*aP+aQ*aQ);if(aR<1.4210854715202004e-14){aDD(k+132|0,0,16);bi=0.0;bj=0.0;bk=0.0}else{a4=1.0/+Q(+aR);aR=aQ*a4;aQ=aP*a4;aP=aO*a4;g[k+132>>2]=aR;g[k+136>>2]=aQ;g[k+140>>2]=aP;g[k+144>>2]=0.0;bi=aR;bj=aQ;bk=aP}if(at*bi+au*bj+av*bk>=-0.0- +g[k+172>>2]){a0=0;i=l;return a0|0}a1=c[u>>2]|0;aBZ(a1)|0;aDG(k+148|0,a1+260|0,16);a0=1;i=l;return a0|0}function aA1(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aA2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;azf(a|0,b,c,d);return}function aA3(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=c[a+92>>2]|0;if((f|0)==3){if((b|0)==0){g=d;h=a+96|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=e;g=a+112|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}else if((b|0)==1){g=d;h=a+112|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=e;g=a+128|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}else if((b|0)==2){g=d;h=a+128|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=e;g=a+96|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}else{return}}else if((f|0)==2){g=d;h=a+96|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];h=e;g=a+112|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}else if((f|0)==4){switch(b|0){case 3:{b=d;f=a+96|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+144|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 4:{b=d;f=a+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+144|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 1:{b=d;f=a+112|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+128|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 5:{b=d;f=a+128|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+144|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 0:{b=d;f=a+96|0;c[b>>2]=c[f>>2];c[b+4>>2]=c[f+4>>2];c[b+8>>2]=c[f+8>>2];c[b+12>>2]=c[f+12>>2];f=e;b=a+112|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];return};case 2:{b=d;d=a+128|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=e;e=a+96|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return};default:{return}}}else{return}}function aA4(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=d;d=a+96+(b<<4)|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];return}function aA5(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0);return}function aA6(a){a=a|0;var b=0;c[a>>2]=21200;b=c[a+52>>2]|0;if((b|0)!=0){c[9804]=(c[9804]|0)+1;aDB(c[b-80+76>>2]|0)}c[9804]=(c[9804]|0)+1;aDB(c[a-160+156>>2]|0);return}function aA7(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=20368;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0}else{if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0}c[9804]=(c[9804]|0)+1;aDB(c[b-84+80>>2]|0);return}function aA8(a,b){a=a|0;b=b|0;return}function aA9(a,b){a=a|0;b=b|0;return}function aBa(a,b){a=a|0;b=b|0;return}function aBb(a,b){a=a|0;b=b|0;return}function aBc(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0;l=c[a+32>>2]|0;c[d>>2]=c[l+(k<<5)+12>>2];c[b>>2]=c[l+(k<<5)+16>>2];c[e>>2]=c[l+(k<<5)+28>>2];c[f>>2]=c[l+(k<<5)+20>>2];c[i>>2]=c[l+(k<<5)>>2];c[g>>2]=c[l+(k<<5)+4>>2];c[h>>2]=c[l+(k<<5)+8>>2];c[j>>2]=c[l+(k<<5)+24>>2];return}function aBd(a,b,d,e,f,g,h,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0;l=c[a+32>>2]|0;c[d>>2]=c[l+(k<<5)+12>>2];c[b>>2]=c[l+(k<<5)+16>>2];c[e>>2]=c[l+(k<<5)+28>>2];c[f>>2]=c[l+(k<<5)+20>>2];c[i>>2]=c[l+(k<<5)>>2];c[g>>2]=c[l+(k<<5)+4>>2];c[h>>2]=c[l+(k<<5)+8>>2];c[j>>2]=c[l+(k<<5)+24>>2];return}function aBe(a){a=a|0;return(c[a+48>>2]|0)==1|0}function aBf(a){a=a|0;return c[a+24>>2]|0}function aBg(b){b=b|0;var d=0,e=0,f=0,g=0;c[b>>2]=20368;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+28>>2]=0;return}function aBh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+52|0;f=b;c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2];f=a+68|0;e=d;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[a+48>>2]=1;return}function aBi(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b;b=a+52|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];b=d;d=a+68|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];return}function aBj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g[b+4>>2]=1.0;g[b+8>>2]=1.0;g[b+12>>2]=1.0;g[b+16>>2]=0.0;f=b+36|0;a[f]=1;h=b+32|0;c[h>>2]=0;i=b+24|0;c[i>>2]=0;j=b+28|0;c[j>>2]=0;c[b+48>>2]=0;c[b>>2]=25248;a[b+100|0]=1;c[b+96>>2]=0;k=b+88|0;c[k>>2]=0;c[b+92>>2]=0;a[b+120|0]=1;c[b+116>>2]=0;l=b+108|0;c[l>>2]=0;c[b+112>>2]=0;a[b+140|0]=1;c[b+136>>2]=0;m=b+128|0;c[m>>2]=0;c[b+132>>2]=0;a[b+160|0]=1;c[b+156>>2]=0;n=b+148|0;c[n>>2]=0;c[b+152>>2]=0;o=b+164|0;a[o]=d&1;d=b+165|0;a[d]=e&1;g[b+168>>2]=0.0;c[9806]=(c[9806]|0)+1;b=aDx(51)|0;if((b|0)==0){p=0}else{e=-(b+4|0)&15;c[b+e>>2]=b;p=b+(e+4)|0}e=c[i>>2]|0;if((e|0)>0){b=0;do{q=p+(b<<5)|0;r=(c[h>>2]|0)+(b<<5)|0;aDC(q|0,r|0,32)|0;b=b+1|0;}while((b|0)<(e|0))}e=c[h>>2]|0;if((e|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-32+28>>2]|0)}c[h>>2]=0}a[f]=1;c[h>>2]=p;c[j>>2]=1;j=c[i>>2]|0;c[p+(j<<5)>>2]=0;c[p+(j<<5)+4>>2]=0;c[p+(j<<5)+8>>2]=12;c[p+(j<<5)+12>>2]=0;c[p+(j<<5)+16>>2]=0;c[p+(j<<5)+20>>2]=16;c[p+(j<<5)+24>>2]=2;c[p+(j<<5)+28>>2]=0;c[i>>2]=(c[i>>2]|0)+1;if((a[o]&1)==0){c[c[h>>2]>>2]=(c[n>>2]|0)/3|0;c[(c[h>>2]|0)+4>>2]=0;c[(c[h>>2]|0)+24>>2]=3;c[(c[h>>2]|0)+8>>2]=6}else{c[c[h>>2]>>2]=(c[m>>2]|0)/3|0;c[(c[h>>2]|0)+4>>2]=0;c[(c[h>>2]|0)+24>>2]=2;c[(c[h>>2]|0)+8>>2]=12}if((a[d]&1)==0){c[(c[h>>2]|0)+12>>2]=(c[l>>2]|0)/3|0;c[(c[h>>2]|0)+16>>2]=0;c[(c[h>>2]|0)+20>>2]=12;return}else{c[(c[h>>2]|0)+12>>2]=c[k>>2];c[(c[h>>2]|0)+16>>2]=0;c[(c[h>>2]|0)+20>>2]=16;return}}function aBk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;if((a[d+164|0]&1)==0){f=e&65535;g=d+148|0;h=c[g>>2]|0;i=d+152|0;do{if((h|0)==(c[i>>2]|0)){j=(h|0)==0?1:h<<1;if((h|0)>=(j|0)){k=h;break}if((j|0)==0){l=0;m=h}else{c[9806]=(c[9806]|0)+1;n=aDx((j<<1)+19|0)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}l=o;m=c[g>>2]|0}p=d+156|0;if((m|0)>0){n=0;do{q=l+(n<<1)|0;if((q|0)!=0){b[q>>1]=b[(c[p>>2]|0)+(n<<1)>>1]|0}n=n+1|0;}while((n|0)<(m|0))}n=c[p>>2]|0;q=d+160|0;if((n|0)!=0){if((a[q]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[n-4>>2]|0)}c[p>>2]=0}a[q]=1;c[p>>2]=l;c[i>>2]=j;k=c[g>>2]|0}else{k=h}}while(0);h=d+156|0;i=c[h>>2]|0;l=i+(k<<1)|0;if((l|0)==0){r=k;s=i}else{b[l>>1]=f;r=c[g>>2]|0;s=c[h>>2]|0}c[g>>2]=r+1;c[(c[d+32>>2]|0)+4>>2]=s;return}else{s=d+128|0;r=c[s>>2]|0;g=d+132|0;do{if((r|0)==(c[g>>2]|0)){h=(r|0)==0?1:r<<1;if((r|0)>=(h|0)){t=r;break}if((h|0)==0){u=0;v=r}else{c[9806]=(c[9806]|0)+1;f=aDx((h<<2)+19|0)|0;if((f|0)==0){w=0}else{l=-(f+4|0)&15;c[f+l>>2]=f;w=f+(l+4)|0}u=w;v=c[s>>2]|0}l=d+136|0;if((v|0)>0){f=0;do{i=u+(f<<2)|0;if((i|0)!=0){c[i>>2]=c[(c[l>>2]|0)+(f<<2)>>2]}f=f+1|0;}while((f|0)<(v|0))}f=c[l>>2]|0;j=d+140|0;if((f|0)!=0){if((a[j]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-4>>2]|0)}c[l>>2]=0}a[j]=1;c[l>>2]=u;c[g>>2]=h;t=c[s>>2]|0}else{t=r}}while(0);r=d+136|0;g=c[r>>2]|0;u=g+(t<<2)|0;if((u|0)==0){x=t;y=g}else{c[u>>2]=e;x=c[s>>2]|0;y=c[r>>2]|0}c[s>>2]=x+1;c[(c[d+32>>2]|0)+4>>2]=y;return}}function aBl(a,b){a=a|0;b=b|0;return}function aBm(a,b){a=a|0;b=b|0;return}function aBn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;if((a[b+165|0]&1)!=0){f=b+88|0;L1676:do{if(e){h=c[f>>2]|0;i=b+96|0;j=d|0;k=d+4|0;l=d+8|0;m=b+168|0;n=0;while(1){if((n|0)>=(h|0)){break L1676}o=c[i>>2]|0;p=+g[o+(n<<4)>>2]- +g[j>>2];q=+g[o+(n<<4)+4>>2]- +g[k>>2];r=+g[o+(n<<4)+8>>2]- +g[l>>2];if(p*p+q*q+r*r>+g[m>>2]){n=n+1|0}else{s=n;break}}return s|0}}while(0);n=b+32|0;m=(c[n>>2]|0)+12|0;c[m>>2]=(c[m>>2]|0)+1;m=c[f>>2]|0;l=b+92|0;do{if((m|0)==(c[l>>2]|0)){k=(m|0)==0?1:m<<1;if((m|0)>=(k|0)){t=m;break}if((k|0)==0){u=0;v=m}else{c[9806]=(c[9806]|0)+1;j=aDx((k<<4|4)+15|0)|0;if((j|0)==0){w=0}else{i=-(j+4|0)&15;c[j+i>>2]=j;w=j+(i+4)|0}u=w;v=c[f>>2]|0}i=b+96|0;if((v|0)>0){j=0;do{h=u+(j<<4)|0;if((h|0)!=0){o=h;h=(c[i>>2]|0)+(j<<4)|0;c[o>>2]=c[h>>2];c[o+4>>2]=c[h+4>>2];c[o+8>>2]=c[h+8>>2];c[o+12>>2]=c[h+12>>2]}j=j+1|0;}while((j|0)<(v|0))}j=c[i>>2]|0;h=b+100|0;if((j|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[j-16+12>>2]|0)}c[i>>2]=0}a[h]=1;c[i>>2]=u;c[l>>2]=k;t=c[f>>2]|0}else{t=m}}while(0);m=b+96|0;l=c[m>>2]|0;u=l+(t<<4)|0;if((u|0)==0){x=t;y=l}else{l=u;u=d;c[l>>2]=c[u>>2];c[l+4>>2]=c[u+4>>2];c[l+8>>2]=c[u+8>>2];c[l+12>>2]=c[u+12>>2];x=c[f>>2]|0;y=c[m>>2]|0}c[f>>2]=x+1;c[(c[n>>2]|0)+16>>2]=y;s=(c[f>>2]|0)-1|0;return s|0}f=b+108|0;y=c[f>>2]|0;L1711:do{if(e){n=b+116|0;x=d|0;m=d+4|0;u=d+8|0;l=b+168|0;t=0;while(1){if((t|0)>=(y|0)){z=x;break L1711}v=c[n>>2]|0;r=+g[v+(t<<2)>>2]- +g[x>>2];q=+g[v+(t+1<<2)>>2]- +g[m>>2];p=+g[v+(t+2<<2)>>2]- +g[u>>2];if(r*r+q*q+p*p>+g[l>>2]){t=t+3|0}else{break}}s=(t|0)/3|0;return s|0}else{z=d|0}}while(0);p=+g[z>>2];z=b+112|0;e=c[z>>2]|0;do{if((y|0)==(e|0)){l=(y|0)==0?1:y<<1;if((y|0)>=(l|0)){A=y;B=y;break}if((l|0)==0){C=0;D=y}else{c[9806]=(c[9806]|0)+1;u=aDx((l<<2)+19|0)|0;if((u|0)==0){E=0}else{m=-(u+4|0)&15;c[u+m>>2]=u;E=u+(m+4)|0}C=E;D=c[f>>2]|0}m=b+116|0;if((D|0)>0){u=0;do{x=C+(u<<2)|0;if((x|0)!=0){g[x>>2]=+g[(c[m>>2]|0)+(u<<2)>>2]}u=u+1|0;}while((u|0)<(D|0))}u=c[m>>2]|0;t=b+120|0;if((u|0)!=0){if((a[t]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[u-4>>2]|0)}c[m>>2]=0}a[t]=1;c[m>>2]=C;c[z>>2]=l;A=c[f>>2]|0;B=l}else{A=y;B=e}}while(0);e=b+116|0;y=(c[e>>2]|0)+(A<<2)|0;if((y|0)==0){F=A;G=B}else{g[y>>2]=p;F=c[f>>2]|0;G=c[z>>2]|0}y=F+1|0;c[f>>2]=y;p=+g[d+4>>2];do{if((y|0)==(G|0)){F=(G|0)==0?1:G<<1;if((G|0)>=(F|0)){H=G;I=G;break}if((F|0)==0){J=0;K=G}else{c[9806]=(c[9806]|0)+1;B=aDx((F<<2)+19|0)|0;if((B|0)==0){L=0}else{A=-(B+4|0)&15;c[B+A>>2]=B;L=B+(A+4)|0}J=L;K=c[f>>2]|0}if((K|0)>0){A=0;do{B=J+(A<<2)|0;if((B|0)!=0){g[B>>2]=+g[(c[e>>2]|0)+(A<<2)>>2]}A=A+1|0;}while((A|0)<(K|0))}A=c[e>>2]|0;l=b+120|0;if((A|0)!=0){if((a[l]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[A-4>>2]|0)}c[e>>2]=0}a[l]=1;c[e>>2]=J;c[z>>2]=F;H=c[f>>2]|0;I=F}else{H=y;I=G}}while(0);G=(c[e>>2]|0)+(H<<2)|0;if((G|0)==0){M=H;N=I}else{g[G>>2]=p;M=c[f>>2]|0;N=c[z>>2]|0}G=M+1|0;c[f>>2]=G;p=+g[d+8>>2];do{if((G|0)==(N|0)){d=(N|0)==0?1:N<<1;if((N|0)>=(d|0)){O=N;break}if((d|0)==0){P=0;Q=N}else{c[9806]=(c[9806]|0)+1;M=aDx((d<<2)+19|0)|0;if((M|0)==0){R=0}else{I=-(M+4|0)&15;c[M+I>>2]=M;R=M+(I+4)|0}P=R;Q=c[f>>2]|0}if((Q|0)>0){I=0;do{M=P+(I<<2)|0;if((M|0)!=0){g[M>>2]=+g[(c[e>>2]|0)+(I<<2)>>2]}I=I+1|0;}while((I|0)<(Q|0))}I=c[e>>2]|0;F=b+120|0;if((I|0)!=0){if((a[F]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[I-4>>2]|0)}c[e>>2]=0}a[F]=1;c[e>>2]=P;c[z>>2]=d;O=c[f>>2]|0}else{O=G}}while(0);G=(c[e>>2]|0)+(O<<2)|0;if((G|0)==0){S=O}else{g[G>>2]=p;S=c[f>>2]|0}c[f>>2]=S+1;S=b+32|0;b=(c[S>>2]|0)+12|0;c[b>>2]=(c[b>>2]|0)+1;c[(c[S>>2]|0)+16>>2]=c[e>>2];s=((c[f>>2]|0)/3|0)-1|0;return s|0}function aBo(a){a=a|0;aBq(a);return}function aBp(a){a=a|0;aBq(a);if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-172+168>>2]|0);return}function aBq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=b|0;c[d>>2]=25248;e=b+148|0;f=b+156|0;g=c[f>>2]|0;h=b+160|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[f>>2]=0}a[h]=1;c[f>>2]=0;c[e>>2]=0;c[b+152>>2]=0;e=b+128|0;f=b+136|0;h=c[f>>2]|0;g=b+140|0;if((h|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[h-4>>2]|0)}c[f>>2]=0}a[g]=1;c[f>>2]=0;c[e>>2]=0;c[b+132>>2]=0;e=b+108|0;f=b+116|0;g=c[f>>2]|0;h=b+120|0;if((g|0)!=0){if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[f>>2]=0}a[h]=1;c[f>>2]=0;c[e>>2]=0;c[b+112>>2]=0;e=b+88|0;f=b+96|0;h=c[f>>2]|0;g=b+100|0;if((h|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[h-16+12>>2]|0)}c[f>>2]=0}a[g]=1;c[f>>2]=0;c[e>>2]=0;c[b+92>>2]=0;c[d>>2]=20368;d=b+24|0;e=b+32|0;f=c[e>>2]|0;g=b+36|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;i=b+28|0;c[i>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-32+28>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;i=b+28|0;c[i>>2]=0;return}function aBr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+48|0;e=d|0;f=d+16|0;h=d+32|0;c[a+8>>2]=0;j=a+12|0;g[j>>2]=0.0;c[a>>2]=22768;c[a+48>>2]=b;c[a+4>>2]=21;if(cA[c[(c[b>>2]|0)+40>>2]&4095](b)|0){dA[c[(c[b>>2]|0)+48>>2]&511](b,a+16|0,a+32|0);i=d;return}else{b=e;k=f;l=h;m=e|0;n=e+4|0;o=e+8|0;p=a;aDD(b|0,0,16);g[m>>2]=1.0;dA[c[(c[p>>2]|0)+64>>2]&511](f,a,e);q=f|0;g[a+32>>2]=+g[q>>2]+ +g[j>>2];g[m>>2]=-1.0;dA[c[(c[p>>2]|0)+64>>2]&511](h,a,e);c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[a+16>>2]=+g[q>>2]- +g[j>>2];aDD(b|0,0,16);g[n>>2]=1.0;dA[c[(c[p>>2]|0)+64>>2]&511](f,a,e);q=f+4|0;g[a+36>>2]=+g[q>>2]+ +g[j>>2];g[n>>2]=-1.0;dA[c[(c[p>>2]|0)+64>>2]&511](h,a,e);c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[a+20>>2]=+g[q>>2]- +g[j>>2];aDD(b|0,0,16);g[o>>2]=1.0;dA[c[(c[p>>2]|0)+64>>2]&511](f,a,e);b=f+8|0;g[a+40>>2]=+g[b>>2]+ +g[j>>2];g[o>>2]=-1.0;dA[c[(c[p>>2]|0)+64>>2]&511](h,a,e);c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];g[a+24>>2]=+g[b>>2]- +g[j>>2];i=d;return}}function aBs(a){a=a|0;return}function aBt(a){a=a|0;return}function aBu(a){a=a|0;return 16208|0}function aBv(a){a=a|0;return}function aBw(a){a=a|0;return}function aBx(a){a=a|0;return(c[a+48>>2]|0)+4|0}function aBy(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;b=i;i=i+48|0;d=b|0;e=b+16|0;f=b+32|0;h=d|0;j=d+4|0;k=d+8|0;l=a;m=a+12|0;n=e;o=f;p=d;aDD(p|0,0,16);g[h>>2]=1.0;dA[c[(c[l>>2]|0)+64>>2]&511](e,a,d);q=e|0;g[a+32>>2]=+g[q>>2]+ +g[m>>2];g[h>>2]=-1.0;dA[c[(c[l>>2]|0)+64>>2]&511](f,a,d);c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];g[a+16>>2]=+g[q>>2]- +g[m>>2];aDD(p|0,0,16);g[j>>2]=1.0;dA[c[(c[l>>2]|0)+64>>2]&511](e,a,d);q=e+4|0;g[a+36>>2]=+g[q>>2]+ +g[m>>2];g[j>>2]=-1.0;dA[c[(c[l>>2]|0)+64>>2]&511](f,a,d);c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];g[a+20>>2]=+g[q>>2]- +g[m>>2];aDD(p|0,0,16);g[k>>2]=1.0;dA[c[(c[l>>2]|0)+64>>2]&511](e,a,d);p=e+8|0;g[a+40>>2]=+g[p>>2]+ +g[m>>2];g[k>>2]=-1.0;dA[c[(c[l>>2]|0)+64>>2]&511](f,a,d);c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];g[a+24>>2]=+g[p>>2]- +g[m>>2];i=b;return}function aBz(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aBA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0;f=a+32|0;h=a+16|0;i=a+36|0;j=a+20|0;k=a+40|0;l=a+24|0;m=(+g[f>>2]- +g[h>>2])*.5;n=(+g[i>>2]- +g[j>>2])*.5;o=(+g[k>>2]- +g[l>>2])*.5;p=a|0;q=a;r=+dh[c[(c[q>>2]|0)+44>>2]&1023](p);s=+dh[c[(c[q>>2]|0)+44>>2]&1023](p);t=m+r;r=n+s;s=o+ +dh[c[(c[q>>2]|0)+44>>2]&1023](p);o=(+g[f>>2]+ +g[h>>2])*.5;n=(+g[i>>2]+ +g[j>>2])*.5;m=(+g[k>>2]+ +g[l>>2])*.5;u=+g[b>>2];v=+P(+u);w=+g[b+4>>2];x=+P(+w);y=+g[b+8>>2];z=+P(+y);A=+g[b+16>>2];B=+P(+A);C=+g[b+20>>2];D=+P(+C);E=+g[b+24>>2];F=+P(+E);G=+g[b+32>>2];H=+P(+G);I=+g[b+36>>2];J=+P(+I);K=+g[b+40>>2];L=+P(+K);M=+g[b+48>>2]+(o*u+n*w+m*y);y=+g[b+52>>2]+(o*A+n*C+m*E);E=+g[b+56>>2]+(o*G+n*I+m*K);K=t*v+r*x+s*z;z=t*B+r*D+s*F;F=t*H+r*J+s*L;g[d>>2]=M-K;g[d+4>>2]=y-z;g[d+8>>2]=E-F;g[d+12>>2]=0.0;g[e>>2]=K+M;g[e+4>>2]=z+y;g[e+8>>2]=F+E;g[e+12>>2]=0.0;return}function aBB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=i;i=i+48|0;e=d|0;f=d+16|0;h=d+32|0;j=(c[a+48>>2]|0)+4|0;k=b;c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];k=e;j=f;b=h;l=e|0;m=e+4|0;n=e+8|0;o=a;p=a+12|0;aDD(k|0,0,16);g[l>>2]=1.0;dA[c[(c[o>>2]|0)+64>>2]&511](f,a,e);q=f|0;g[a+32>>2]=+g[q>>2]+ +g[p>>2];g[l>>2]=-1.0;dA[c[(c[o>>2]|0)+64>>2]&511](h,a,e);c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];g[a+16>>2]=+g[q>>2]- +g[p>>2];aDD(k|0,0,16);g[m>>2]=1.0;dA[c[(c[o>>2]|0)+64>>2]&511](f,a,e);q=f+4|0;g[a+36>>2]=+g[q>>2]+ +g[p>>2];g[m>>2]=-1.0;dA[c[(c[o>>2]|0)+64>>2]&511](h,a,e);c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];g[a+20>>2]=+g[q>>2]- +g[p>>2];aDD(k|0,0,16);g[n>>2]=1.0;dA[c[(c[o>>2]|0)+64>>2]&511](f,a,e);k=f+8|0;g[a+40>>2]=+g[k>>2]+ +g[p>>2];g[n>>2]=-1.0;dA[c[(c[o>>2]|0)+64>>2]&511](h,a,e);c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];g[a+24>>2]=+g[k>>2]- +g[p>>2];i=d;return}function aBC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=i;i=i+40|0;g=f|0;c[g>>2]=18456;c[g+4>>2]=b;b=g+8|0;h=d;c[b>>2]=c[h>>2];c[b+4>>2]=c[h+4>>2];c[b+8>>2]=c[h+8>>2];c[b+12>>2]=c[h+12>>2];h=g+24|0;b=e;c[h>>2]=c[b>>2];c[h+4>>2]=c[b+4>>2];c[h+8>>2]=c[b+8>>2];c[h+12>>2]=c[b+12>>2];b=c[a+48>>2]|0;dI[c[(c[b>>2]|0)+8>>2]&1023](b,g|0,d,e);i=f;return}function aBD(a,b,c){a=a|0;b=+b;c=c|0;aDD(c|0,0,16);return}function aBE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0;e=i;i=i+176|0;f=e+16|0;h=e+40|0;j=e+144|0;k=e+160|0;l=e|0;aDD(l|0,0,16);aDD(f|0,0,20);c[h>>2]=22472;aDD(h+4|0,0,16);g[h+20>>2]=1.0;m=h+24|0;n=m;c[n>>2]=c[l>>2];c[n+4>>2]=c[l+4>>2];c[n+8>>2]=c[l+8>>2];c[h+36>>2]=0;g[h+40>>2]=1.0;aDD(h+44|0,0,16);g[h+60>>2]=1.0;g[h+64>>2]=0.0;l=h+68|0;n=f+4|0;c[l>>2]=c[n>>2];c[l+4>>2]=c[n+4>>2];c[l+8>>2]=c[n+8>>2];c[l+12>>2]=c[n+12>>2];g[h+84>>2]=-999999984306749400.0;o=+g[d>>2];p=+g[d+4>>2];q=p*0.0;r=+g[d+8>>2];s=r*0.0;t=o*+g[m>>2]+p+s;p=o*+g[h+28>>2]+q+r;g[h+88>>2]=o+q+s;g[h+92>>2]=t;g[h+96>>2]=p;g[h+100>>2]=0.0;g[j>>2]=999999984306749400.0;g[j+4>>2]=999999984306749400.0;g[j+8>>2]=999999984306749400.0;g[j+12>>2]=0.0;m=c[(c[b>>2]|0)+60>>2]|0;g[k>>2]=-999999984306749400.0;g[k+4>>2]=-999999984306749400.0;g[k+8>>2]=-999999984306749400.0;g[k+12>>2]=0.0;dI[m&1023](b,h|0,k,j);j=h+4|0;h=a;c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];i=e;return}function aBF(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aBG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0,n=0.0;e=a+84|0;d=a+4|0;f=+g[a+88>>2];h=+g[a+92>>2];i=+g[a+96>>2];j=f*+g[b>>2]+h*+g[b+4>>2]+i*+g[b+8>>2];k=+g[e>>2];if(j>k){g[e>>2]=j;a=b;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];l=j}else{l=k}a=b+16|0;k=f*+g[a>>2]+h*+g[b+20>>2]+i*+g[b+24>>2];if(k>l){g[e>>2]=k;m=a;c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];n=k}else{n=l}m=b+32|0;l=f*+g[m>>2]+h*+g[b+36>>2]+i*+g[b+40>>2];if(l<=n){return}g[e>>2]=l;e=m;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];return}function aBH(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aBI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0.0,k=0,l=0.0,m=0.0,n=0;f=b|0;h=b+16|0;i=+g[f>>2];j=+g[h>>2];k=b+32|0;l=i>2];if((l+g[a+24>>2]){return}n=i>j?f:h;if(+g[(+g[n>>2]>m?n:k)>>2]<+g[a+8>>2]){return}k=b+8|0;n=b+24|0;m=+g[k>>2];j=+g[n>>2];h=b+40|0;i=m>2];if((i+g[a+32>>2]){return}f=m>j?k:n;if(+g[(+g[f>>2]>l?f:h)>>2]<+g[a+16>>2]){return}h=b+4|0;f=b+20|0;l=+g[h>>2];j=+g[f>>2];n=b+36|0;m=l>2];if((m+g[a+28>>2]){return}k=l>j?h:f;if(+g[(+g[k>>2]>i?k:n)>>2]<+g[a+12>>2]){return}n=c[a+4>>2]|0;dI[c[(c[n>>2]|0)+8>>2]&1023](n,b,d,e);return}function aBJ(a){a=a|0;if((a|0)==0){return}c[9804]=(c[9804]|0)+1;aDB(c[a-20+16>>2]|0);return}function aBK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0;e=i;i=i+16|0;f=e|0;h=c[b+12>>2]|0;dA[c[(c[h>>2]|0)+64>>2]&511](f,h,d);j=+g[b+16>>2];k=+g[f+4>>2]*j;l=+g[f+8>>2]*j;g[a>>2]=+g[f>>2]*j;g[a+4>>2]=k;g[a+8>>2]=l;g[a+12>>2]=0.0;i=e;return}function aBL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0.0,i=0,j=0.0,k=0,l=0.0;f=c[a+12>>2]|0;dI[c[(c[f>>2]|0)+68>>2]&1023](f,b,d,e);if((e|0)<=0){return}b=a+16|0;a=0;do{f=d+(a<<4)|0;h=+g[b>>2];i=d+(a<<4)+4|0;j=h*+g[i>>2];k=d+(a<<4)+8|0;l=h*+g[k>>2];g[f>>2]=+g[f>>2]*h;g[i>>2]=j;g[k>>2]=l;g[d+(a<<4)+12>>2]=0.0;a=a+1|0;}while((a|0)<(e|0));return}function aBM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0,l=0.0;e=i;i=i+16|0;f=e|0;h=c[b+12>>2]|0;dA[c[(c[h>>2]|0)+60>>2]&511](f,h,d);j=+g[b+16>>2];k=+g[f+4>>2]*j;l=+g[f+8>>2]*j;g[a>>2]=+g[f>>2]*j;g[a+4>>2]=k;g[a+8>>2]=l;g[a+12>>2]=0.0;i=e;return}function aBN(a,b,d){a=a|0;b=+b;d=d|0;var e=0,f=0,h=0,j=0.0,k=0.0;e=i;i=i+16|0;f=e|0;h=c[a+12>>2]|0;cX[c[(c[h>>2]|0)+32>>2]&255](h|0,b,f);b=+g[a+16>>2];j=b*+g[f+4>>2];k=b*+g[f+8>>2];g[d>>2]=+g[f>>2]*b;g[d+4>>2]=j;g[d+8>>2]=k;g[d+12>>2]=0.0;i=e;return}function aBO(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;dI[c[(c[a>>2]|0)+72>>2]&1023](a,b,d,e);return}function aBP(a){a=a|0;return 16184|0}function aBQ(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0,v=0.0,w=0,x=0.0,y=0,z=0.0,A=0,B=0.0,C=0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0.0,P=0.0,Q=0.0;f=i;i=i+256|0;h=f|0;j=f+96|0;k=f+192|0;l=f+208|0;m=f+224|0;n=f+240|0;g[h>>2]=1.0;aDD(h+4|0,0,16);g[h+20>>2]=1.0;aDD(h+24|0,0,16);g[h+40>>2]=1.0;g[h+44>>2]=0.0;g[h+48>>2]=-1.0;aDD(h+52|0,0,16);g[h+68>>2]=-1.0;aDD(h+72|0,0,16);g[h+88>>2]=-1.0;g[h+92>>2]=0.0;o=b|0;aDD(j|0,0,96);p=+g[o>>2];q=b+16|0;r=+g[q>>2];s=b+32|0;t=+g[s>>2];u=b+4|0;v=+g[u>>2];w=b+20|0;x=+g[w>>2];y=b+36|0;z=+g[y>>2];A=b+8|0;B=+g[A>>2];C=b+24|0;D=+g[C>>2];E=b+40|0;F=+g[E>>2];G=0;H=1.0;I=0.0;J=0.0;while(1){g[h+(G<<4)>>2]=p*H+r*I+t*J;g[h+(G<<4)+4>>2]=H*v+I*x+J*z;g[h+(G<<4)+8>>2]=H*B+I*D+J*F;g[h+(G<<4)+12>>2]=0.0;K=G+1|0;if((K|0)>=6){break}G=K;H=+g[h+(K<<4)>>2];I=+g[h+(K<<4)+4>>2];J=+g[h+(K<<4)+8>>2]}dI[c[(c[a>>2]|0)+68>>2]&1023](a,h|0,j|0,6);h=k|0;G=k+4|0;K=k+8|0;L=l|0;aDD(k|0,0,16);M=l+4|0;N=l+8|0;aDD(l|0,0,16);J=+g[o>>2];I=+g[u>>2];H=+g[A>>2];F=+g[b+48>>2];D=+g[q>>2];B=+g[w>>2];z=+g[C>>2];x=+g[b+52>>2];v=+g[s>>2];t=+g[y>>2];r=+g[E>>2];p=+g[b+56>>2];b=m|0;E=m+4|0;y=m+8|0;s=m+12|0;C=n|0;w=n+4|0;q=n+8|0;A=n+12|0;u=0;do{O=+g[j+(u<<4)>>2];P=+g[j+(u<<4)+4>>2];Q=+g[j+(u<<4)+8>>2];g[b>>2]=F+(J*O+I*P+H*Q);g[E>>2]=x+(O*D+P*B+Q*z);g[y>>2]=p+(O*v+P*t+Q*r);g[s>>2]=0.0;g[l+(u<<2)>>2]=+g[m+(u<<2)>>2];o=u+3|0;Q=+g[j+(o<<4)>>2];P=+g[j+(o<<4)+4>>2];O=+g[j+(o<<4)+8>>2];g[C>>2]=F+(J*Q+I*P+H*O);g[w>>2]=x+(Q*D+P*B+O*z);g[q>>2]=p+(Q*v+P*t+O*r);g[A>>2]=0.0;g[k+(u<<2)>>2]=+g[n+(u<<2)>>2];u=u+1|0;}while((u|0)<3);u=a;r=+dh[c[(c[u>>2]|0)+44>>2]&1023](a);t=+dh[c[(c[u>>2]|0)+44>>2]&1023](a);v=+dh[c[(c[u>>2]|0)+44>>2]&1023](a);p=+g[G>>2]-t;z=+g[K>>2]-v;g[d>>2]=+g[h>>2]-r;g[d+4>>2]=p;g[d+8>>2]=z;g[d+12>>2]=0.0;z=t+ +g[M>>2];t=v+ +g[N>>2];g[e>>2]=r+ +g[L>>2];g[e+4>>2]=z;g[e+8>>2]=t;g[e+12>>2]=0.0;i=f;return}function aBR(a,b){a=a|0;b=b|0;var d=0;d=c[a+12>>2]|0;cv[c[(c[d>>2]|0)+24>>2]&2047](d,b);return}function aBS(a){a=a|0;var b=0;b=c[a+12>>2]|0;return cA[c[(c[b>>2]|0)+28>>2]&4095](b)|0}function aBT(a,b){a=a|0;b=+b;var d=0;d=c[a+12>>2]|0;cq[c[(c[d>>2]|0)+40>>2]&1023](d,b);return}function aBU(a){a=a|0;var b=0,d=0.0;b=c[a+12>>2]|0;d=+dh[c[(c[b>>2]|0)+44>>2]&1023](b);return+(d*+g[a+16>>2])}function aBV(a){a=a|0;var b=0;b=c[a+12>>2]|0;return cA[c[(c[b>>2]|0)+76>>2]&4095](b)|0}function aBW(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[a+12>>2]|0;dA[c[(c[e>>2]|0)+80>>2]&511](e,b,d);return}function aBX(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=a+12|0;f=c[e>>2]|0;g=c[f+(((d+b|0)/2|0)<<3)>>2]|0;h=d;i=b;j=f;while(1){f=i;while(1){k=f+1|0;if((c[j+(f<<3)>>2]|0)<(g|0)){f=k}else{l=h;break}}while(1){m=j+(l<<3)|0;n=l-1|0;if((g|0)<(c[m>>2]|0)){l=n}else{break}}if((f|0)>(l|0)){o=l;p=f}else{q=j+(f<<3)|0;r=c[q>>2]|0;s=c[q+4>>2]|0;t=m;u=c[t+4>>2]|0;c[q>>2]=c[t>>2];c[q+4>>2]=u;u=(c[e>>2]|0)+(l<<3)|0;c[u>>2]=r;c[u+4>>2]=s;o=n;p=k}if((p|0)>(o|0)){break}h=o;i=p;j=c[e>>2]|0}if((o|0)>(b|0)){aBX(a,b,o)}if((p|0)>=(d|0)){return}aBX(a,p,d);return}function aBY(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a|0;f=c[e>>2]|0;do{if((f|0)>3){g=b[d>>1]|0;if((g&8)!=0){h=f;i=g;j=1488;break}g=f-1|0;c[e>>2]=g;k=a+52|0;l=a+4+(g<<4)|0;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];l=a+132|0;k=a+84+(g<<4)|0;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];c[l+12>>2]=c[k+12>>2];k=a+212|0;l=a+164+(g<<4)|0;c[k>>2]=c[l>>2];c[k+4>>2]=c[l+4>>2];c[k+8>>2]=c[l+8>>2];c[k+12>>2]=c[l+12>>2];m=g;j=1486}else{m=f;j=1486}}while(0);do{if((j|0)==1486){if((m|0)<=2){n=m;break}h=m;i=b[d>>1]|0;j=1488}}while(0);do{if((j|0)==1488){if((i&4)!=0){n=h;break}m=h-1|0;c[e>>2]=m;f=a+36|0;g=a+4+(m<<4)|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];g=a+116|0;f=a+84+(m<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];f=a+196|0;g=a+164+(m<<4)|0;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];c[f+8>>2]=c[g+8>>2];c[f+12>>2]=c[g+12>>2];n=m}}while(0);do{if((n|0)>1){h=b[d>>1]|0;if((h&2)!=0){o=n;p=h;break}h=n-1|0;c[e>>2]=h;i=a+20|0;m=a+4+(h<<4)|0;c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];m=a+100|0;i=a+84+(h<<4)|0;c[m>>2]=c[i>>2];c[m+4>>2]=c[i+4>>2];c[m+8>>2]=c[i+8>>2];c[m+12>>2]=c[i+12>>2];i=a+180|0;m=a+164+(h<<4)|0;c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];q=h;j=1493}else{q=n;j=1493}}while(0);do{if((j|0)==1493){if((q|0)>0){o=q;p=b[d>>1]|0;break}else{return}}}while(0);if((p&1)!=0){return}p=o-1|0;c[e>>2]=p;e=a+4|0;o=a+4+(p<<4)|0;c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];o=a+84|0;e=a+84+(p<<4)|0;c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];e=a+164|0;o=a+164+(p<<4)|0;c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];return}function aBZ(d){d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0,_=0,$=0,aa=0,ab=0.0,ac=0.0,ad=0.0,ae=0,af=0.0,ag=0;e=i;i=i+72|0;f=e|0;h=e+40|0;j=e+56|0;k=d+356|0;if((a[k]&1)==0){l=a[d+312|0]|0;m=l&1;n=m<<24>>24!=0;i=e;return n|0}o=d+316|0;p=d+336|0;q=d+332|0;r=q;s=p;aDD(s|0,0,17);t=b[r>>1]|0;u=t&-16;b[r>>1]=u;a[k]=0;switch(c[d>>2]|0){case 3:{aDD(h|0,0,16);aB$(h,d+4|0,d+20|0,d+36|0,o);v=+g[p>>2];h=d+340|0;w=+g[h>>2];k=d+344|0;x=+g[k>>2];y=+g[d+84>>2]*v+ +g[d+100>>2]*w+ +g[d+116>>2]*x;z=v*+g[d+88>>2]+w*+g[d+104>>2]+x*+g[d+120>>2];A=v*+g[d+92>>2]+w*+g[d+108>>2]+x*+g[d+124>>2];g[d+244>>2]=y;g[d+248>>2]=z;g[d+252>>2]=A;g[d+256>>2]=0.0;B=+g[d+164>>2]*v+ +g[d+180>>2]*w+ +g[d+196>>2]*x;C=v*+g[d+168>>2]+w*+g[d+184>>2]+x*+g[d+200>>2];D=v*+g[d+172>>2]+w*+g[d+188>>2]+x*+g[d+204>>2];g[d+260>>2]=B;g[d+264>>2]=C;g[d+268>>2]=D;g[d+272>>2]=0.0;g[d+276>>2]=y-B;g[d+280>>2]=z-C;g[d+284>>2]=A-D;g[d+288>>2]=0.0;aBY(d,q);do{if(+g[p>>2]<0.0){E=0}else{if(+g[h>>2]<0.0){E=0;break}if(+g[k>>2]<0.0){E=0;break}E=+g[d+348>>2]>=0.0|0}}while(0);a[d+312|0]=E;l=E;m=l&1;n=m<<24>>24!=0;i=e;return n|0};case 4:{E=d+4|0;k=d+20|0;h=d+36|0;F=d+52|0;G=j;aDD(G|0,0,16);H=f+16|0;b[H>>1]=0;I=o;c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];b[r>>1]=t|15;D=+g[k>>2];A=+g[E>>2];C=D-A;z=+g[d+24>>2];B=+g[d+8>>2];y=z-B;x=+g[d+28>>2];w=+g[d+12>>2];v=x-w;J=+g[h>>2];K=J-A;L=+g[d+40>>2];M=L-B;N=+g[d+44>>2];O=N-w;P=y*O-v*M;Q=v*K-C*O;R=C*M-y*K;S=+g[F>>2];T=S-A;U=+g[d+56>>2];V=U-B;W=+g[d+60>>2];X=W-w;Y=T*P+V*Q+R*X;if(Y*Y<9.99999905104687e-9){Z=-1}else{Z=Y*(Q*(0.0-B)+P*(0.0-A)+R*(0.0-w))<0.0|0}R=M*X-O*V;P=O*T-K*X;Q=K*V-M*T;Y=C*R+y*P+Q*v;if(Y*Y<9.99999905104687e-9){_=-1}else{_=Y*(P*(0.0-B)+R*(0.0-A)+Q*(0.0-w))<0.0|0}Q=V*v-X*y;R=X*C-T*v;v=T*y-V*C;C=K*Q+M*R+v*O;if(C*C<9.99999905104687e-9){$=-1}else{$=C*(R*(0.0-B)+Q*(0.0-A)+v*(0.0-w))<0.0|0}v=S-D;S=U-z;U=W-x;W=J-D;J=L-z;L=N-x;N=S*L-U*J;Q=U*W-v*L;L=v*J-S*W;W=(A-D)*N+(B-z)*Q+L*(w-x);if(W*W<9.99999905104687e-9){aa=-1}else{aa=W*(Q*(0.0-z)+N*(0.0-D)+L*(0.0-x))<0.0|0}if((_|Z|$|aa|0)<0){a[d+352|0]=1;a[d+312|0]=0;l=0;m=l&1;n=m<<24>>24!=0;i=e;return n|0}t=(Z|0)!=0;Z=(_|0)==0;_=($|0)==0;$=(aa|0)==0;if(Z&(t^1)&_&$){a[d+312|0]=1;aDD(d+276|0,0,16);l=1;m=l&1;n=m<<24>>24!=0;i=e;return n|0}do{if(t){aB$(j,E,k,h,f);x=+g[f>>2];L=+g[f+4>>2];D=+g[f+8>>2];N=x- +g[j>>2];z=L- +g[j+4>>2];Q=D- +g[j+8>>2];W=N*N+z*z+Q*Q;if(W>=3.4028234663852886e+38){ab=3.4028234663852886e+38;break}Q=+g[f+12>>2];g[o>>2]=x;g[d+320>>2]=L;g[d+324>>2]=D;g[d+328>>2]=Q;aa=b[H>>1]|0;b[r>>1]=aa&1|b[r>>1]&-16|aa&2|aa&4;Q=+g[f+24>>2];D=+g[f+28>>2];g[p>>2]=+g[f+20>>2];g[d+340>>2]=Q;g[d+344>>2]=D;g[d+348>>2]=0.0;ab=W}else{ab=3.4028234663852886e+38}}while(0);do{if(Z){ac=ab}else{aB$(j,E,h,F,f);W=+g[f>>2];D=+g[f+4>>2];Q=+g[f+8>>2];L=W- +g[j>>2];x=D- +g[j+4>>2];z=Q- +g[j+8>>2];N=L*L+x*x+z*z;if(N>=ab){ac=ab;break}z=+g[f+12>>2];g[o>>2]=W;g[d+320>>2]=D;g[d+324>>2]=Q;g[d+328>>2]=z;t=b[H>>1]|0;b[r>>1]=(t&65535)>>>1<<2&4|(t&1|b[r>>1]&-16)|(t&65535)>>>2<<3&8;z=+g[f+24>>2];Q=+g[f+28>>2];g[p>>2]=+g[f+20>>2];g[d+340>>2]=0.0;g[d+344>>2]=z;g[d+348>>2]=Q;ac=N}}while(0);do{if(_){ad=ac}else{aB$(j,E,F,k,f);ab=+g[f>>2];N=+g[f+4>>2];Q=+g[f+8>>2];z=ab- +g[j>>2];D=N- +g[j+4>>2];W=Q- +g[j+8>>2];x=z*z+D*D+W*W;if(x>=ac){ad=ac;break}W=+g[f+12>>2];g[o>>2]=ab;g[d+320>>2]=N;g[d+324>>2]=Q;g[d+328>>2]=W;Z=b[H>>1]|0;b[r>>1]=(Z&65535)>>>2<<1&2|(Z&1|b[r>>1]&-16)|(Z&65535)>>>1<<3&8;W=+g[f+28>>2];Q=+g[f+24>>2];g[p>>2]=+g[f+20>>2];g[d+340>>2]=W;g[d+344>>2]=0.0;g[d+348>>2]=Q;ad=x}}while(0);do{if(!$){aB$(j,k,F,h,f);ac=+g[f>>2];x=+g[f+4>>2];Q=+g[f+8>>2];W=ac- +g[j>>2];N=x- +g[j+4>>2];ab=Q- +g[j+8>>2];if(W*W+N*N+ab*ab>=ad){break}ab=+g[f+12>>2];g[o>>2]=ac;g[d+320>>2]=x;g[d+324>>2]=Q;g[d+328>>2]=ab;E=b[H>>1]|0;b[r>>1]=(E&65535)>>>1<<3&8|(E<<1&2|b[r>>1]&-16|E&4);ab=+g[f+20>>2];Q=+g[f+28>>2];x=+g[f+24>>2];g[p>>2]=0.0;g[d+340>>2]=ab;g[d+344>>2]=Q;g[d+348>>2]=x}}while(0);ad=+g[p>>2];f=d+340|0;x=+g[f>>2];H=d+344|0;Q=+g[H>>2];o=d+348|0;ab=+g[o>>2];ac=+g[d+84>>2]*ad+ +g[d+100>>2]*x+ +g[d+116>>2]*Q+ +g[d+132>>2]*ab;N=ad*+g[d+88>>2]+x*+g[d+104>>2]+Q*+g[d+120>>2]+ab*+g[d+136>>2];W=ad*+g[d+92>>2]+x*+g[d+108>>2]+Q*+g[d+124>>2]+ab*+g[d+140>>2];g[d+244>>2]=ac;g[d+248>>2]=N;g[d+252>>2]=W;g[d+256>>2]=0.0;D=+g[d+164>>2]*ad+ +g[d+180>>2]*x+ +g[d+196>>2]*Q+ +g[d+212>>2]*ab;z=ad*+g[d+168>>2]+x*+g[d+184>>2]+Q*+g[d+200>>2]+ab*+g[d+216>>2];L=ad*+g[d+172>>2]+x*+g[d+188>>2]+Q*+g[d+204>>2]+ab*+g[d+220>>2];g[d+260>>2]=D;g[d+264>>2]=z;g[d+268>>2]=L;g[d+272>>2]=0.0;g[d+276>>2]=ac-D;g[d+280>>2]=N-z;g[d+284>>2]=W-L;g[d+288>>2]=0.0;aBY(d,q);do{if(+g[p>>2]<0.0){ae=0}else{if(+g[f>>2]<0.0){ae=0;break}if(+g[H>>2]<0.0){ae=0;break}ae=+g[o>>2]>=0.0|0}}while(0);a[d+312|0]=ae;l=ae;m=l&1;n=m<<24>>24!=0;i=e;return n|0};case 0:{a[d+312|0]=0;l=0;m=l&1;n=m<<24>>24!=0;i=e;return n|0};case 1:{ae=d+244|0;o=ae;H=d+84|0;c[o>>2]=c[H>>2];c[o+4>>2]=c[H+4>>2];c[o+8>>2]=c[H+8>>2];c[o+12>>2]=c[H+12>>2];H=d+260|0;o=H;f=d+164|0;c[o>>2]=c[f>>2];c[o+4>>2]=c[f+4>>2];c[o+8>>2]=c[f+8>>2];c[o+12>>2]=c[f+12>>2];L=+g[d+248>>2]- +g[d+264>>2];W=+g[d+252>>2]- +g[d+268>>2];g[d+276>>2]=+g[ae>>2]- +g[H>>2];g[d+280>>2]=L;g[d+284>>2]=W;g[d+288>>2]=0.0;aDD(s|0,0,17);b[r>>1]=u;g[p>>2]=1.0;g[d+340>>2]=0.0;g[d+344>>2]=0.0;g[d+348>>2]=0.0;a[d+312|0]=1;l=1;m=l&1;n=m<<24>>24!=0;i=e;return n|0};case 2:{W=+g[d+4>>2];L=+g[d+8>>2];z=+g[d+12>>2];N=+g[d+20>>2]-W;D=+g[d+24>>2]-L;ac=+g[d+28>>2]-z;ab=(0.0-W)*N+(0.0-L)*D+(0.0-z)*ac;do{if(ab>0.0){z=N*N+D*D+ac*ac;if(ab>1]=u|3;af=ab/z;break}else{b[r>>1]=u|2;af=1.0;break}}else{b[r>>1]=u|1;af=0.0}}while(0);g[p>>2]=1.0-af;u=d+340|0;g[u>>2]=af;r=d+344|0;g[r>>2]=0.0;s=d+348|0;g[s>>2]=0.0;ab=+g[d+84>>2];ac=+g[d+88>>2];D=+g[d+92>>2];N=ab+af*(+g[d+100>>2]-ab);ab=ac+af*(+g[d+104>>2]-ac);ac=D+af*(+g[d+108>>2]-D);g[d+244>>2]=N;g[d+248>>2]=ab;g[d+252>>2]=ac;g[d+256>>2]=0.0;D=+g[d+164>>2];z=+g[d+168>>2];L=+g[d+172>>2];W=D+af*(+g[d+180>>2]-D);D=z+af*(+g[d+184>>2]-z);z=L+af*(+g[d+188>>2]-L);g[d+260>>2]=W;g[d+264>>2]=D;g[d+268>>2]=z;g[d+272>>2]=0.0;g[d+276>>2]=N-W;g[d+280>>2]=ab-D;g[d+284>>2]=ac-z;g[d+288>>2]=0.0;aBY(d,q);do{if(+g[p>>2]<0.0){ag=0}else{if(+g[u>>2]<0.0){ag=0;break}if(+g[r>>2]<0.0){ag=0;break}ag=+g[s>>2]>=0.0|0}}while(0);a[d+312|0]=ag;l=ag;m=l&1;n=m<<24>>24!=0;i=e;return n|0};default:{a[d+312|0]=0;l=0;m=l&1;n=m<<24>>24!=0;i=e;return n|0}}return 0}function aB_(a){a=a|0;return}function aB$(a,d,e,f,h){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0.0,J=0.0;i=h+16|0;j=b[i>>1]&-16;b[i>>1]=j;k=+g[e>>2];l=+g[d>>2];m=k-l;n=+g[e+4>>2];o=+g[d+4>>2];p=n-o;q=+g[e+8>>2];r=+g[d+8>>2];s=q-r;t=+g[f>>2];u=t-l;v=+g[f+4>>2];w=v-o;x=+g[f+8>>2];y=x-r;z=+g[a>>2];A=z-l;B=+g[a+4>>2];C=B-o;D=+g[a+8>>2];E=D-r;F=m*A+p*C+s*E;G=u*A+w*C+y*E;if(!(F>0.0|G>0.0)){a=h;H=d;c[a>>2]=c[H>>2];c[a+4>>2]=c[H+4>>2];c[a+8>>2]=c[H+8>>2];c[a+12>>2]=c[H+12>>2];b[i>>1]=j|1;g[h+20>>2]=1.0;g[h+24>>2]=0.0;g[h+28>>2]=0.0;g[h+32>>2]=0.0;return}E=z-k;C=B-n;A=D-q;I=m*E+p*C+s*A;J=u*E+w*C+y*A;if(!(I<0.0|J>I)){H=h;a=e;c[H>>2]=c[a>>2];c[H+4>>2]=c[a+4>>2];c[H+8>>2]=c[a+8>>2];c[H+12>>2]=c[a+12>>2];b[i>>1]=j|2;g[h+20>>2]=0.0;g[h+24>>2]=1.0;g[h+28>>2]=0.0;g[h+32>>2]=0.0;return}A=F*J-I*G;if(!(A>0.0|F<0.0|I>0.0)){C=F/(F-I);g[h>>2]=l+m*C;g[h+4>>2]=o+p*C;g[h+8>>2]=r+s*C;g[h+12>>2]=0.0;b[i>>1]=j|3;g[h+20>>2]=1.0-C;g[h+24>>2]=C;g[h+28>>2]=0.0;g[h+32>>2]=0.0;return}C=z-t;z=B-v;B=D-x;D=m*C+p*z+s*B;E=u*C+w*z+y*B;if(!(E<0.0|D>E)){a=h;H=f;c[a>>2]=c[H>>2];c[a+4>>2]=c[H+4>>2];c[a+8>>2]=c[H+8>>2];c[a+12>>2]=c[H+12>>2];b[i>>1]=j|4;g[h+20>>2]=0.0;g[h+24>>2]=0.0;g[h+28>>2]=1.0;g[h+32>>2]=0.0;return}B=D*G-F*E;if(!(B>0.0|G<0.0|E>0.0)){F=G/(G-E);g[h>>2]=l+u*F;g[h+4>>2]=o+w*F;g[h+8>>2]=r+y*F;g[h+12>>2]=0.0;b[i>>1]=j|5;g[h+20>>2]=1.0-F;g[h+24>>2]=0.0;g[h+28>>2]=F;g[h+32>>2]=0.0;return}F=I*E-D*J;do{if(F<=0.0){G=J-I;if(G<0.0){break}z=D-E;if(z<0.0){break}C=G/(G+z);g[h>>2]=k+(t-k)*C;g[h+4>>2]=n+(v-n)*C;g[h+8>>2]=q+(x-q)*C;g[h+12>>2]=0.0;b[i>>1]=j|6;g[h+20>>2]=0.0;g[h+24>>2]=1.0-C;g[h+28>>2]=C;g[h+32>>2]=0.0;return}}while(0);q=1.0/(A+(F+B));F=B*q;B=A*q;g[h>>2]=u*B+(l+m*F);g[h+4>>2]=w*B+(o+p*F);g[h+8>>2]=y*B+(s*F+r);g[h+12>>2]=0.0;b[i>>1]=j|7;g[h+20>>2]=1.0-F-B;g[h+24>>2]=F;g[h+28>>2]=B;g[h+32>>2]=0.0;return} +function aB0(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0,aq=0.0,ar=0.0,as=0.0,at=0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0;e=i;i=i+96|0;h=e|0;j=e+16|0;k=e+32|0;l=e+48|0;m=e+64|0;n=e+80|0;o=b+112|0;p=+g[b+48>>2]- +g[o>>2];q=b+116|0;r=+g[b+52>>2]- +g[q>>2];s=b+120|0;t=+g[b+56>>2]- +g[s>>2];u=b+64|0;v=b+80|0;w=b+96|0;x=b+68|0;y=b+84|0;z=b+100|0;A=b+72|0;B=b+88|0;C=b+104|0;D=p*+g[u>>2]+r*+g[v>>2]+t*+g[w>>2];E=p*+g[x>>2]+r*+g[y>>2]+t*+g[z>>2];F=p*+g[A>>2]+r*+g[B>>2]+t*+g[C>>2];b=a+8|0;G=c[b>>2]|0;H=c[a+4>>2]|0;t=+g[H+28>>2]*+g[H+12>>2];r=t+ +g[a+12>>2];p=+g[G+72>>2];I=+g[G+56>>2];J=p-I;K=+g[G+76>>2];L=+g[G+60>>2];M=K-L;N=+g[G+80>>2];O=+g[G+64>>2];P=N-O;R=+g[G+88>>2];S=R-I;T=+g[G+92>>2];U=T-L;V=+g[G+96>>2];W=V-O;X=M*W-P*U;Y=P*S-J*W;W=J*U-M*S;S=1.0/+Q(+(W*W+(X*X+Y*Y)));U=S*X;X=S*Y;Y=S*W;W=D-I;S=E-L;Z=F-O;_=W*U+X*S+Y*Z;if(_<0.0){$=_*-1.0;aa=U*-1.0;ab=X*-1.0;ac=Y*-1.0}else{$=_;aa=U;ab=X;ac=Y}if($>=r){i=e;return}Y=R-p;X=T-K;U=V-N;_=I-R;I=L-T;L=O-V;O=Z*(J*ab-M*aa)+(W*(M*ac-P*ab)+S*(P*aa-J*ac));J=(F-N)*(Y*ab-X*aa)+((D-p)*(X*ac-U*ab)+(E-K)*(U*aa-Y*ac));Y=(F-V)*(_*ab-I*aa)+((D-R)*(I*ac-L*ab)+(E-T)*(L*aa-_*ac));do{if(O>0.0&J>0.0&Y>0.0){ad=1590}else{if(!(O>0.0|J>0.0|Y>0.0)){ad=1590;break}_=r*r;if((cA[c[(c[G>>2]|0)+92>>2]&4095](G)|0)<=0){i=e;return}a=h|0;H=h+4|0;ae=h+8|0;af=j|0;ag=j+4|0;ah=j+8|0;L=0.0;T=0.0;I=0.0;ai=0;aj=0;while(1){ak=c[b>>2]|0;dI[c[(c[ak>>2]|0)+96>>2]&1023](ak,ai,h,j);R=+g[a>>2];V=D-R;U=+g[H>>2];K=E-U;X=+g[ae>>2];p=F-X;N=+g[af>>2]-R;P=+g[ag>>2]-U;S=+g[ah>>2]-X;M=V*N+K*P+p*S;do{if(M>0.0){W=N*N+P*P+S*S;if(M>2]|0;if((ak|0)<(cA[c[(c[at>>2]|0)+92>>2]&4095](at)|0)){L=as;T=ar;I=aq;ai=ak;aj=ap}else{break}}if((ap&1)!=0){au=aq;av=ar;aw=as;ax=_;break}i=e;return}}while(0);if((ad|0)==1590){au=D-aa*$;av=E-ab*$;aw=F-ac*$;ax=r*r}r=D-au;D=E-av;E=F-aw;F=r*r+D*D+E*E;if(F>=ax){i=e;return}if(F>1.1920928955078125e-7){ax=+Q(+F);F=1.0/ax;ay=t-ax;az=E*F;aA=D*F;aB=r*F}else{ay=t;az=ac;aA=ab;aB=aa}aa=-0.0-ay;if(f){ay=+g[u>>2];ab=+g[x>>2];ac=+g[A>>2];t=ay*aB+ab*aA+ac*az;F=+g[v>>2];r=+g[y>>2];D=+g[B>>2];E=aB*F+aA*r+az*D;ax=+g[w>>2];$=+g[z>>2];as=+g[C>>2];ar=aB*ax+aA*$+az*as;g[k>>2]=-0.0-t;g[k+4>>2]=-0.0-E;g[k+8>>2]=-0.0-ar;g[k+12>>2]=0.0;aq=+g[q>>2]+(au*F+av*r+aw*D)+E*aa;E=+g[s>>2]+(au*ax+av*$+aw*as)+ar*aa;g[l>>2]=+g[o>>2]+(ay*au+ab*av+ac*aw)+t*aa;g[l+4>>2]=aq;g[l+8>>2]=E;g[l+12>>2]=0.0;dw[c[(c[d>>2]|0)+16>>2]&127](d,k,l,aa);i=e;return}else{l=c[(c[d>>2]|0)+16>>2]|0;E=+g[u>>2];aq=+g[x>>2];t=+g[A>>2];ac=+g[v>>2];ab=+g[y>>2];ay=+g[B>>2];ar=+g[w>>2];as=+g[z>>2];$=+g[C>>2];g[m>>2]=E*aB+aq*aA+t*az;g[m+4>>2]=aB*ac+aA*ab+az*ay;g[m+8>>2]=aB*ar+aA*as+az*$;g[m+12>>2]=0.0;az=+g[q>>2]+(au*ac+av*ab+aw*ay);ay=+g[s>>2]+(au*ar+av*as+aw*$);g[n>>2]=+g[o>>2]+(E*au+aq*av+t*aw);g[n+4>>2]=az;g[n+8>>2]=ay;g[n+12>>2]=0.0;dw[l&127](d,m,n,aa);i=e;return}}function aB1(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aB2(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=20448;if((a[b+8|0]&1)==0){d=b;aDB(d);return}e=c[b+12>>2]|0;if((e|0)==0){d=b;aDB(d);return}f=c[b+4>>2]|0;cv[c[(c[f>>2]|0)+16>>2]&2047](f,e);d=b;aDB(d);return}function aB3(b){b=b|0;var d=0,e=0;c[b>>2]=20448;if((a[b+8|0]&1)==0){return}d=c[b+12>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aB4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function aB5(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;j=i;i=i+152|0;k=j|0;l=j+136|0;m=c[b+12>>2]|0;if((m|0)==0){i=j;return}n=c[d+192>>2]|0;o=c[e+192>>2]|0;p=h+4|0;c[p>>2]=m;c[k+132>>2]=0;g[k+128>>2]=999999984306749400.0;m=k;q=d+4|0;c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];q=k+16|0;m=d+20|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];m=k+32|0;q=d+36|0;c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];q=k+48|0;m=d+52|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];m=k+64|0;q=e+4|0;c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];q=k+80|0;m=e+20|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];m=k+96|0;q=e+36|0;c[m>>2]=c[q>>2];c[m+4>>2]=c[q+4>>2];c[m+8>>2]=c[q+8>>2];c[m+12>>2]=c[q+12>>2];q=k+112|0;m=e+52|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];c[l>>2]=24424;c[l+4>>2]=n;c[l+8>>2]=o;aB7(l,k,h|0,c[f+20>>2]|0,0);if((a[b+8|0]&1)==0){i=j;return}b=c[p>>2]|0;if((c[b+1116>>2]|0)==0){i=j;return}if((c[b+1108>>2]|0)==(c[h+136>>2]|0)){ay6(b,h+8|0,h+72|0);i=j;return}else{ay6(b,h+72|0,h+8|0);i=j;return}}function aB6(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+12|0;if((c[e>>2]|0)==0){return}if((a[b+8|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aB7(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0,H=0.0,I=0,J=0.0,K=0,L=0.0,M=0,N=0.0,O=0,R=0.0,S=0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0,af=0.0,ag=0.0,ah=0.0,ai=0,aj=0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0.0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0.0,aO=0.0,aP=0.0,aQ=0,aR=0,aS=0,aT=0.0,aU=0,aV=0,aW=0,aX=0.0,aY=0,aZ=0,a_=0,a$=0.0,a0=0,a1=0,a2=0,a3=0.0,a4=0,a5=0,a6=0,a7=0.0,a8=0,a9=0,ba=0,bb=0.0,bc=0,bd=0,be=0,bf=0.0,bg=0.0,bh=0.0,bi=0.0,bj=0,bk=0,bl=0,bm=0.0,bn=0.0,bo=0.0,bp=0.0,bq=0,br=0,bs=0,bt=0.0,bu=0.0,bv=0.0,bw=0.0,bx=0,by=0,bz=0,bA=0.0,bB=0.0,bC=0.0,bD=0.0,bE=0,bF=0,bG=0,bH=0.0,bI=0.0,bJ=0.0,bK=0.0,bL=0,bM=0,bN=0,bO=0.0,bP=0.0,bQ=0.0,bR=0.0,bS=0,bT=0,bU=0,bV=0.0,bW=0.0,bX=0.0,bY=0.0,bZ=0,b_=0,b$=0,b0=0.0,b1=0.0,b2=0.0,b3=0.0,b4=0,b5=0,b6=0,b7=0.0,b8=0.0,b9=0.0,ca=0.0,cb=0,cc=0,cd=0.0,ce=0.0,cf=0.0,cg=0.0,ch=0.0,ci=0.0,cj=0.0,ck=0.0,cl=0.0,cm=0.0,cn=0.0,co=0,cp=0,cq=0,cr=0,cs=0,ct=0,cu=0.0,cv=0,cw=0,cx=0,cy=0.0,cz=0.0,cA=0.0,cB=0,cC=0,cD=0,cE=0,cF=0,cG=0,cH=0.0,cI=0.0,cJ=0,cK=0,cL=0,cM=0,cN=0,cO=0,cP=0,cQ=0,cR=0,cS=0,cT=0.0,cU=0.0,cV=0,cW=0,cX=0,cY=0,cZ=0.0,c_=0.0,c$=0.0,c0=0.0,c1=0.0,c2=0.0,c3=0,c4=0,c5=0,c6=0,c7=0.0,c8=0.0,c9=0,da=0.0;f=i;i=i+696|0;e=f|0;h=f+32|0;j=f+64|0;k=f+128|0;l=f+144|0;m=f+160|0;n=f+176|0;o=f+192|0;p=f+208|0;q=f+240|0;r=f+248|0;s=f+312|0;t=f+408|0;u=f+440|0;v=f+456|0;w=f+472|0;x=f+488|0;y=f+504|0;z=f+536|0;A=f+552|0;B=f+568|0;C=f+584|0;D=f+600|0;E=f+648|0;F=+g[b>>2];G=D|0;g[G>>2]=F;H=+g[b+64>>2];I=E|0;g[I>>2]=H;J=+g[b+4>>2];K=D+4|0;g[K>>2]=J;L=+g[b+68>>2];M=E+4|0;g[M>>2]=L;N=+g[b+8>>2];O=D+8|0;g[O>>2]=N;R=+g[b+72>>2];S=E+8|0;g[S>>2]=R;T=+g[b+16>>2];g[D+16>>2]=T;U=+g[b+80>>2];g[E+16>>2]=U;V=+g[b+20>>2];g[D+20>>2]=V;W=+g[b+84>>2];g[E+20>>2]=W;X=+g[b+24>>2];g[D+24>>2]=X;Z=+g[b+88>>2];g[E+24>>2]=Z;_=+g[b+32>>2];g[D+32>>2]=_;$=+g[b+96>>2];g[E+32>>2]=$;aa=+g[b+36>>2];g[D+36>>2]=aa;ab=+g[b+100>>2];g[E+36>>2]=ab;ac=+g[b+40>>2];g[D+40>>2]=ac;ad=+g[b+104>>2];g[E+40>>2]=ad;ae=c[a+4>>2]|0;af=+g[ae+28>>2];ag=+g[ae+32>>2];ah=+g[ae+36>>2];ai=ae|0;aj=ae;ak=+dh[c[(c[aj>>2]|0)+44>>2]&1023](ai);al=+dh[c[(c[aj>>2]|0)+44>>2]&1023](ai);am=(ah+ +dh[c[(c[aj>>2]|0)+44>>2]&1023](ai))*2.0;ai=b+112|0;aj=c[a+8>>2]|0;ah=+g[aj+28>>2];an=+g[aj+32>>2];ao=+g[aj+36>>2];a=aj|0;ae=aj;ap=+dh[c[(c[ae>>2]|0)+44>>2]&1023](a);aq=+dh[c[(c[ae>>2]|0)+44>>2]&1023](a);ar=(ao+ +dh[c[(c[ae>>2]|0)+44>>2]&1023](a))*2.0;a=m;ae=r;aj=ai;as=ai|0;ai=b+48|0;ao=+g[ai>>2];at=+g[as>>2]-ao;au=+g[b+52>>2];av=+g[b+116>>2]-au;aw=+g[b+56>>2];ax=+g[b+120>>2]-aw;ay=at*F+av*T+ax*_;az=at*J+av*V+ax*aa;aA=at*N+av*X+ax*ac;aB=(af+ak)*2.0*.5;b=k|0;g[b>>2]=aB;ak=(ag+al)*2.0*.5;g[k+4>>2]=ak;al=am*.5;g[k+8>>2]=al;am=(ah+ap)*2.0*.5;k=l|0;g[k>>2]=am;ap=(an+aq)*2.0*.5;g[l+4>>2]=ap;aq=ar*.5;g[l+8>>2]=aq;ar=F*H+T*U+_*$;an=F*L+T*W+_*ab;ah=F*R+T*Z+_*ad;ag=H*J+U*V+$*aa;af=L*J+W*V+ab*aa;aC=R*J+Z*V+ad*aa;aD=H*N+U*X+$*ac;aE=L*N+W*X+ab*ac;aF=R*N+Z*X+ad*ac;aG=+P(+ar);aH=+P(+an);aI=+P(+ah);aJ=+P(+ag);aK=+P(+af);aL=+P(+aC);aM=+P(+aD);aN=+P(+aE);aO=+P(+aF);aP=+P(+ay)-(aq*aI+(aB+aG*am+aH*ap));if(aP>0.0){i=f;return}if(aP>-3.4028234663852886e+38){aQ=G;aR=1;aS=ay<0.0|0;aT=aP}else{aQ=0;aR=0;aS=0;aT=-3.4028234663852886e+38}aP=+P(+az)-(ak+aJ*am+aK*ap+aL*aq);if(aP>0.0){i=f;return}if(aP>aT){aU=K;aV=2;aW=az<0.0|0;aX=aP}else{aU=aQ;aV=aR;aW=aS;aX=aT}aT=+P(+aA)-(al+aM*am+aN*ap+aO*aq);if(aT>0.0){i=f;return}if(aT>aX){aY=O;aZ=3;a_=aA<0.0|0;a$=aT}else{aY=aU;aZ=aV;a_=aW;a$=aX}aX=at*H+av*U+ax*$;aT=+P(+aX)-(am+(aG*aB+aJ*ak+aM*al));if(aT>0.0){i=f;return}if(aT>a$){a0=I;a1=4;a2=aX<0.0|0;a3=aT}else{a0=aY;a1=aZ;a2=a_;a3=a$}a$=at*L+av*W+ax*ab;aT=+P(+a$)-(ap+(aH*aB+aK*ak+aN*al));if(aT>0.0){i=f;return}if(aT>a3){a4=M;a5=5;a6=a$<0.0|0;a7=aT}else{a4=a0;a5=a1;a6=a2;a7=a3}a3=at*R+av*Z+ax*ad;ax=+P(+a3)-(aq+(aI*aB+aL*ak+aO*al));if(ax>0.0){i=f;return}if(ax>a7){a8=S;a9=6;ba=a3<0.0|0;bb=ax}else{a8=a4;a9=a5;ba=a6;bb=a7}a7=aG+9999999747378752.0e-21;aG=aH+9999999747378752.0e-21;aH=aI+9999999747378752.0e-21;aI=aJ+9999999747378752.0e-21;aJ=aK+9999999747378752.0e-21;aK=aL+9999999747378752.0e-21;aL=aM+9999999747378752.0e-21;aM=aN+9999999747378752.0e-21;aN=aO+9999999747378752.0e-21;aO=aA*ag-az*aD;ax=+P(+aO)-(aL*ak+aI*al+aH*ap+aG*aq);if(ax>1.1920928955078125e-7){i=f;return}a3=-0.0-aD;av=aD*aD+0.0;at=ag*ag;aT=+Q(+(at+av));do{if(aT>1.1920928955078125e-7){a$=ax/aT;if(a$*1.0499999523162842<=bb){bc=a8;bd=a9;be=ba;bf=bb;bg=0.0;bh=0.0;bi=0.0;break}bc=0;bd=7;be=aO<0.0|0;bf=a$;bg=0.0/aT;bh=a3/aT;bi=ag/aT}else{bc=a8;bd=a9;be=ba;bf=bb;bg=0.0;bh=0.0;bi=0.0}}while(0);bb=aA*af-az*aE;aT=+P(+bb)-(aM*ak+aJ*al+aH*am+a7*aq);if(aT>1.1920928955078125e-7){i=f;return}a3=-0.0-aE;aO=aE*aE+0.0;ax=af*af;a$=+Q(+(ax+aO));do{if(a$>1.1920928955078125e-7){aX=aT/a$;if(aX*1.0499999523162842<=bf){bj=bc;bk=bd;bl=be;bm=bf;bn=bg;bo=bh;bp=bi;break}bj=0;bk=8;bl=bb<0.0|0;bm=aX;bn=0.0/a$;bo=a3/a$;bp=af/a$}else{bj=bc;bk=bd;bl=be;bm=bf;bn=bg;bo=bh;bp=bi}}while(0);bi=aA*aC-az*aF;bh=+P(+bi)-(aN*ak+aK*al+aG*am+a7*ap);if(bh>1.1920928955078125e-7){i=f;return}bg=-0.0-aF;bf=aF*aF+0.0;a$=aC*aC;a3=+Q(+(a$+bf));do{if(a3>1.1920928955078125e-7){bb=bh/a3;if(bb*1.0499999523162842<=bm){bq=bj;br=bk;bs=bl;bt=bm;bu=bn;bv=bo;bw=bp;break}bq=0;br=9;bs=bi<0.0|0;bt=bb;bu=0.0/a3;bv=bg/a3;bw=aC/a3}else{bq=bj;br=bk;bs=bl;bt=bm;bu=bn;bv=bo;bw=bp}}while(0);bp=ay*aD-aA*ar;bo=+P(+bp)-(aL*aB+a7*al+aK*ap+aJ*aq);if(bo>1.1920928955078125e-7){i=f;return}bn=-0.0-ar;bm=ar*ar;a3=+Q(+(bm+av));do{if(a3>1.1920928955078125e-7){av=bo/a3;if(av*1.0499999523162842<=bt){bx=bq;by=br;bz=bs;bA=bt;bB=bu;bC=bv;bD=bw;break}bx=0;by=10;bz=bp<0.0|0;bA=av;bB=aD/a3;bC=0.0/a3;bD=bn/a3}else{bx=bq;by=br;bz=bs;bA=bt;bB=bu;bC=bv;bD=bw}}while(0);bw=ay*aE-aA*an;bv=+P(+bw)-(aM*aB+aG*al+aK*am+aI*aq);if(bv>1.1920928955078125e-7){i=f;return}bu=-0.0-an;bt=an*an;a3=+Q(+(bt+aO));do{if(a3>1.1920928955078125e-7){aO=bv/a3;if(aO*1.0499999523162842<=bA){bE=bx;bF=by;bG=bz;bH=bA;bI=bB;bJ=bC;bK=bD;break}bE=0;bF=11;bG=bw<0.0|0;bH=aO;bI=aE/a3;bJ=0.0/a3;bK=bu/a3}else{bE=bx;bF=by;bG=bz;bH=bA;bI=bB;bJ=bC;bK=bD}}while(0);bD=ay*aF-aA*ah;aA=+P(+bD)-(aN*aB+aH*al+aJ*am+aI*ap);if(aA>1.1920928955078125e-7){i=f;return}bC=-0.0-ah;bB=ah*ah;bA=+Q(+(bB+bf));do{if(bA>1.1920928955078125e-7){bf=aA/bA;if(bf*1.0499999523162842<=bH){bL=bE;bM=bF;bN=bG;bO=bH;bP=bI;bQ=bJ;bR=bK;break}bL=0;bM=12;bN=bD<0.0|0;bO=bf;bP=aF/bA;bQ=0.0/bA;bR=bC/bA}else{bL=bE;bM=bF;bN=bG;bO=bH;bP=bI;bQ=bJ;bR=bK}}while(0);bK=az*ar-ay*ag;bJ=+P(+bK)-(aI*aB+a7*ak+aN*ap+aM*aq);if(bJ>1.1920928955078125e-7){i=f;return}a7=-0.0-ag;ag=+Q(+(bm+at+0.0));do{if(ag>1.1920928955078125e-7){at=bJ/ag;if(at*1.0499999523162842<=bO){bS=bL;bT=bM;bU=bN;bV=bO;bW=bP;bX=bQ;bY=bR;break}bS=0;bT=13;bU=bK<0.0|0;bV=at;bW=a7/ag;bX=ar/ag;bY=0.0/ag}else{bS=bL;bT=bM;bU=bN;bV=bO;bW=bP;bX=bQ;bY=bR}}while(0);bR=az*an-ay*af;bQ=+P(+bR)-(aJ*aB+aG*ak+aN*am+aL*aq);if(bQ>1.1920928955078125e-7){i=f;return}aN=-0.0-af;af=+Q(+(bt+ax+0.0));do{if(af>1.1920928955078125e-7){ax=bQ/af;if(ax*1.0499999523162842<=bV){bZ=bS;b_=bT;b$=bU;b0=bV;b1=bW;b2=bX;b3=bY;break}bZ=0;b_=14;b$=bR<0.0|0;b0=ax;b1=aN/af;b2=an/af;b3=0.0/af}else{bZ=bS;b_=bT;b$=bU;b0=bV;b1=bW;b2=bX;b3=bY}}while(0);bY=az*ah-ay*aC;ay=+P(+bY)-(aK*aB+aH*ak+aM*am+aL*ap);if(ay>1.1920928955078125e-7){i=f;return}aL=-0.0-aC;aC=+Q(+(bB+a$+0.0));do{if(aC>1.1920928955078125e-7){a$=ay/aC;if(a$*1.0499999523162842<=b0){b4=1725;break}b5=15;b6=bY<0.0|0;b7=a$;b8=aL/aC;b9=ah/aC;ca=0.0/aC;b4=1728}else{b4=1725}}while(0);do{if((b4|0)==1725){if((b_|0)==0){i=f;return}if((bZ|0)==0){b5=b_;b6=b$;b7=b0;b8=b1;b9=b2;ca=b3;b4=1728;break}cb=b_;cc=b$;cd=b0;ce=+g[bZ+32>>2];cf=+g[bZ+16>>2];cg=+g[bZ>>2]}}while(0);if((b4|0)==1728){cb=b5;cc=b6;cd=b7;ce=b8*_+b9*aa+ca*ac;cf=b8*T+b9*V+ca*X;cg=b8*F+b9*J+ca*N}if((cc|0)==0){ch=ce;ci=cf;cj=cg}else{ch=-0.0-ce;ci=-0.0-cf;cj=-0.0-cg}if((cb|0)>6){cg=(cj*F+ci*T+ch*_>0.0?1.0:-1.0)*aB;aB=(cj*J+ci*V+ch*aa>0.0?1.0:-1.0)*ak;ak=(cj*N+ci*X+ch*ac>0.0?1.0:-1.0)*al;c[a>>2]=c[aj>>2];c[a+4>>2]=c[aj+4>>2];c[a+8>>2]=c[aj+8>>2];al=(cj*H+ci*U+ch*$>0.0?-1.0:1.0)*am;aj=m|0;a=m+4|0;cc=m+8|0;am=(cj*L+ci*W+ch*ab>0.0?-1.0:1.0)*ap;ap=+g[a>>2]+al*U+am*W;W=+g[cc>>2]+al*$+am*ab;ab=(cj*R+ci*Z+ch*ad>0.0?-1.0:1.0)*aq;aq=+g[aj>>2]+al*H+am*L+ab*R;g[aj>>2]=aq;R=ap+ab*Z;g[a>>2]=R;Z=W+ab*ad;g[cc>>2]=Z;b6=cb-7|0;b5=(b6|0)/3|0;ad=+g[D+(b5<<2)>>2];ab=+g[D+(b5+4<<2)>>2];W=+g[D+(b5+8<<2)>>2];b5=(b6|0)%3|0;ap=+g[E+(b5<<2)>>2];L=+g[E+(b5+4<<2)>>2];am=+g[E+(b5+8<<2)>>2];H=aq-(ao+cg*F+aB*J+ak*N);N=R-(au+cg*T+aB*V+ak*X);X=Z-(aw+cg*_+aB*aa+ak*ac);ac=ad*ap+ab*L+W*am;ak=1.0-ac*ac;if(ak>9999999747378752.0e-20){ck=((H*ad+N*ab+X*W)*ac-(H*ap+N*L+X*am))*(1.0/ak)}else{ck=0.0}g[aj>>2]=aq+ck*ap;g[a>>2]=R+ck*L;g[cc>>2]=Z+ck*am;cc=c[(c[d>>2]|0)+16>>2]|0;g[n>>2]=-0.0-cj;g[n+4>>2]=-0.0-ci;g[n+8>>2]=-0.0-ch;g[n+12>>2]=0.0;dw[cc&127](d,n,m,cd);i=f;return}m=(cb|0)<4;if(m){cl=cj;cm=ci;cn=ch;co=G;cp=I;cq=ai;cr=as;cs=b;ct=k;cu=+g[I>>2]}else{cl=-0.0-cj;cm=-0.0-ci;cn=-0.0-ch;co=I;cp=G;cq=as;cr=ai;cs=k;ct=b;cu=F}F=cl*cu+cm*+g[cp+16>>2]+cn*+g[cp+32>>2];g[o>>2]=F;cu=cl*+g[cp+4>>2]+cm*+g[cp+20>>2]+cn*+g[cp+36>>2];g[o+4>>2]=cu;cd=cl*+g[cp+8>>2]+cm*+g[cp+24>>2]+cn*+g[cp+40>>2];g[o+8>>2]=cd;am=+P(+F);F=+P(+cu);cu=+P(+cd);if(F>am){b=F>cu;cv=0;cw=b?1:2;cx=b}else{b=am>cu;cv=b&1;cw=b?0:2;cx=b}b=cx?2:1;cu=+g[ct+(cw<<2)>>2];am=+g[cr>>2]- +g[cq>>2];F=cu*+g[cp+(cw<<2)>>2];if(+g[o+(cw<<2)>>2]<0.0){cy=+g[cr+8>>2]- +g[cq+8>>2]+cu*+g[cp+((cw|8)<<2)>>2];cz=+g[cr+4>>2]- +g[cq+4>>2]+cu*+g[cp+((cw|4)<<2)>>2];cA=am+F}else{cy=+g[cr+8>>2]- +g[cq+8>>2]-cu*+g[cp+((cw|8)<<2)>>2];cz=+g[cr+4>>2]- +g[cq+4>>2]-cu*+g[cp+((cw|4)<<2)>>2];cA=am-F}cw=(m?-1:-4)+cb|0;if((cw|0)==1){cB=2;cC=0}else if((cw|0)==0){cB=2;cC=1}else{cB=1;cC=0}F=+g[co+(cC<<2)>>2];am=+g[co+((cC|4)<<2)>>2];cu=+g[co+((cC|8)<<2)>>2];cd=cA*F+cz*am+cy*cu;ck=+g[co+(cB<<2)>>2];Z=+g[co+((cB|4)<<2)>>2];L=+g[co+((cB|8)<<2)>>2];R=cA*ck+cz*Z+cy*L;co=cp+(cv<<2)|0;ap=+g[co>>2];cb=cp+((cv|4)<<2)|0;aq=+g[cb>>2];cr=cp+((cv|8)<<2)|0;ak=+g[cr>>2];X=F*ap+am*aq+cu*ak;o=cp+(b<<2)|0;N=+g[o>>2];cx=cp+((b|4)<<2)|0;H=+g[cx>>2];k=cp+((b|8)<<2)|0;ac=+g[k>>2];W=F*N+am*H+cu*ac;cu=ck*ap+Z*aq+L*ak;ak=ck*N+Z*H+L*ac;ac=+g[ct+(cv<<2)>>2];L=X*ac;H=cu*ac;ac=+g[ct+(b<<2)>>2];Z=W*ac;N=ak*ac;ac=cd-L;b=p|0;g[b>>2]=ac-Z;ck=R-H;g[p+4>>2]=ck-N;g[p+8>>2]=ac+Z;g[p+12>>2]=ck+N;ck=cd+L;g[p+16>>2]=ck+Z;L=R+H;g[p+20>>2]=L+N;g[p+24>>2]=ck-Z;g[p+28>>2]=L-N;g[q>>2]=+g[cs+(cC<<2)>>2];g[q+4>>2]=+g[cs+(cB<<2)>>2];cB=r|0;cC=j|0;j=b;b=cB;p=0;ct=4;L2327:while(1){cv=q+(p<<2)|0;cp=1-p|0;do{if((ct|0)>0){ai=0;as=j;G=b;I=ct;while(1){n=as+(p<<2)|0;N=+g[n>>2];L=+g[cv>>2];if(N*-1.0>2]=+g[as>>2];g[G+4>>2]=+g[as+4>>2];cc=ai+1|0;if((cc&8|0)!=0){cD=cc;cE=b;break L2327}cF=G+8|0;cG=cc;cH=+g[n>>2];cI=+g[cv>>2]}else{cF=G;cG=ai;cH=N;cI=L}n=as+8|0;cc=(I|0)>1?n:j;L=+g[cc+(p<<2)>>2];if(cH*-1.0>2];g[cF+(cp<<2)>>2]=N+(cI*-1.0-cH)*((+g[cc+(cp<<2)>>2]-N)/(L-cH));g[cF+(p<<2)>>2]=+g[cv>>2]*-1.0;cc=cG+1|0;if((cc&8|0)==0){cJ=cF+8|0;cK=cc}else{cD=cc;cE=b;break L2327}}else{cJ=cF;cK=cG}cc=I-1|0;if((cc|0)>0){ai=cK;as=n;G=cJ;I=cc}else{break}}I=(b|0)==(cB|0)?cC:cB;if((cK|0)>0){cL=0;cM=b;cN=I;cO=cK}else{cP=0;cQ=I;break}while(1){G=cM+(p<<2)|0;L=+g[G>>2];N=+g[cv>>2];if(L>2]=+g[cM>>2];g[cN+4>>2]=+g[cM+4>>2];as=cL+1|0;if((as&8|0)!=0){cD=as;cE=I;break L2327}cR=cN+8|0;cS=as;cT=+g[G>>2];cU=+g[cv>>2]}else{cR=cN;cS=cL;cT=L;cU=N}G=cM+8|0;as=(cO|0)>1?G:b;N=+g[as+(p<<2)>>2];if(cT>2];g[cR+(cp<<2)>>2]=L+(cU-cT)*((+g[as+(cp<<2)>>2]-L)/(N-cT));g[cR+(p<<2)>>2]=+g[cv>>2];as=cS+1|0;if((as&8|0)==0){cV=cR+8|0;cW=as}else{cD=as;cE=I;break L2327}}else{cV=cR;cW=cS}as=cO-1|0;if((as|0)>0){cL=cW;cM=G;cN=cV;cO=as}else{cP=cW;cQ=I;break}}}else{cP=0;cQ=(b|0)==(cB|0)?cC:cB}}while(0);cv=p+1|0;if((cv|0)<2){j=cQ;b=(cQ|0)==(cB|0)?cC:cB;p=cv;ct=cP}else{cD=cP;cE=cQ;break}}if((cE|0)!=(cB|0)){cQ=cE;cE=cD<<3;aDC(ae|0,cQ|0,cE)|0}if((cD|0)<1){i=f;return}cT=1.0/(X*ak-cu*W);cU=X*cT;X=W*cT;W=ak*cT;ak=-0.0-cu*cT;cT=+g[cs+(cw<<2)>>2];cu=+g[co>>2];cH=+g[o>>2];cI=+g[cb>>2];N=+g[cx>>2];L=+g[cr>>2];Z=+g[k>>2];k=0;cr=0;while(1){cx=k<<1;ck=+g[r+(cx<<2)>>2];H=ck-cd;ac=+g[r+((cx|1)<<2)>>2];aq=ac-R;ap=W*H-X*aq;am=H*ak+cU*aq;cx=cr*3|0;aq=cA+ap*cu+am*cH;g[s+(cx<<2)>>2]=aq;H=cz+ap*cI+am*N;g[s+(cx+1<<2)>>2]=H;F=cy+ap*L+am*Z;g[s+(cx+2<<2)>>2]=F;am=cT-(cl*aq+cm*H+cn*F);g[t+(cr<<2)>>2]=am;if(am<0.0){cX=cr}else{cx=cr<<1;g[r+(cx<<2)>>2]=ck;g[r+((cx|1)<<2)>>2]=ac;cX=cr+1|0}cx=k+1|0;if((cx|0)<(cD|0)){k=cx;cr=cX}else{break}}if((cX|0)<1){i=f;return}cr=(cX|0)<4?cX:4;k=(cr|0)<1?1:cr;if((cX|0)<=(k|0)){cr=(cX|0)>0;if(m){if(!cr){i=f;return}cD=d;cx=v|0;cb=v+4|0;o=v+8|0;co=v+12|0;cw=u|0;cs=cq+4|0;cE=u+4|0;cQ=cq+8|0;ae=u+8|0;cn=-0.0-cj;cm=-0.0-ci;cl=-0.0-ch;cP=0;do{ct=cP*3|0;g[cw>>2]=+g[s+(ct<<2)>>2]+ +g[cq>>2];g[cE>>2]=+g[s+(ct+1<<2)>>2]+ +g[cs>>2];g[ae>>2]=+g[s+(ct+2<<2)>>2]+ +g[cQ>>2];ct=c[(c[cD>>2]|0)+16>>2]|0;g[cx>>2]=cn;g[cb>>2]=cm;g[o>>2]=cl;g[co>>2]=0.0;dw[ct&127](d,v,u,-0.0- +g[t+(cP<<2)>>2]);cP=cP+1|0;}while((cP|0)<(cX|0));i=f;return}else{if(!cr){i=f;return}cr=d;cP=x|0;u=x+4|0;v=x+8|0;co=x+12|0;o=w|0;cb=cq+4|0;cx=w+4|0;cD=cq+8|0;cQ=w+8|0;cl=-0.0-cj;cm=-0.0-ci;cn=-0.0-ch;ae=0;do{cs=ae*3|0;cT=+g[t+(ae<<2)>>2];g[o>>2]=+g[s+(cs<<2)>>2]+ +g[cq>>2]-cj*cT;g[cx>>2]=+g[s+(cs+1<<2)>>2]+ +g[cb>>2]-ci*cT;g[cQ>>2]=+g[s+(cs+2<<2)>>2]+ +g[cD>>2]-ch*cT;cs=c[(c[cr>>2]|0)+16>>2]|0;g[cP>>2]=cl;g[u>>2]=cm;g[v>>2]=cn;g[co>>2]=0.0;dw[cs&127](d,x,w,-0.0-cT);ae=ae+1|0;}while((ae|0)<(cX|0));i=f;return}}if((cX|0)>1){ae=1;w=0;cn=+g[t>>2];while(1){cm=+g[t+(ae<<2)>>2];x=cm>cn;co=x?ae:w;v=ae+1|0;if((v|0)<(cX|0)){ae=v;w=co;cn=x?cm:cn}else{cY=co;break}}}else{cY=0}w=y|0;if((cX|0)==1){cZ=+g[cB>>2];c_=+g[r+4>>2];b4=1791}else if((cX|0)==2){cZ=(+g[cB>>2]+ +g[r+8>>2])*.5;c_=(+g[r+4>>2]+ +g[r+12>>2])*.5;b4=1791}else{ae=cX-1|0;if((ae|0)>0){co=0;cn=0.0;cm=0.0;cl=0.0;while(1){x=co<<1;cT=+g[r+(x<<2)>>2];Z=+g[r+(x+3<<2)>>2];L=+g[r+(x+2<<2)>>2];cy=+g[r+((x|1)<<2)>>2];N=cT*Z-L*cy;cI=cn+N;cz=cm+(cT+L)*N;L=cl+(Z+cy)*N;x=co+1|0;if((x|0)<(ae|0)){co=x;cn=cI;cm=cz;cl=L}else{c$=cI;c0=cz;c1=L;break}}}else{c$=0.0;c0=0.0;c1=0.0}co=cX<<1;cl=+g[r+(co-2<<2)>>2];cm=+g[r+4>>2];cn=+g[cB>>2];L=+g[r+(co-1<<2)>>2];cz=cl*cm-cn*L;cI=c$+cz;if(+P(+cI)>1.1920928955078125e-7){c2=1.0/(cI*3.0)}else{c2=999999984306749400.0}if((cX|0)>0){cZ=c2*(c0+cz*(cl+cn));c_=c2*(c1+cz*(L+cm));b4=1791}else{c3=0}}if((b4|0)==1791){b4=0;while(1){co=b4<<1;g[e+(b4<<2)>>2]=+Y(+(+g[r+((co|1)<<2)>>2]-c_),+(+g[r+(co<<2)>>2]-cZ));co=b4+1|0;if((co|0)<(cX|0)){b4=co}else{c4=0;break}}while(1){c[h+(c4<<2)>>2]=1;b4=c4+1|0;if((b4|0)<(cX|0)){c4=b4}else{c3=1;break}}}c4=h+(cY<<2)|0;c[c4>>2]=0;c[w>>2]=cY;w=y+4|0;L2408:do{if((k|0)>1){cZ=6.2831854820251465/+(k|0);b4=e+(cY<<2)|0;if(c3){c5=1;c6=w}else{r=2;co=w;while(1){c[co>>2]=cY;c[c4>>2]=0;if((r|0)>=(k|0)){break L2408}r=r+1|0;co=co+4|0}}while(1){c_=+(c5|0)*cZ+ +g[b4>>2];if(c_>3.1415927410125732){c7=c_-6.2831854820251465}else{c7=c_}c[c6>>2]=cY;co=0;c_=1.0e9;r=cY;while(1){do{if((c[h+(co<<2)>>2]|0)==0){c8=c_;c9=r}else{cm=+P(+(+g[e+(co<<2)>>2]-c7));if(cm>3.1415927410125732){da=6.2831854820251465-cm}else{da=cm}if(da>=c_){c8=c_;c9=r;break}c[c6>>2]=co;c8=da;c9=co}}while(0);cB=co+1|0;if((cB|0)<(cX|0)){co=cB;c_=c8;r=c9}else{break}}c[h+(c9<<2)>>2]=0;r=c5+1|0;if((r|0)>=(k|0)){break L2408}c5=r;c6=c6+4|0}}}while(0);if((k|0)<=0){i=f;return}c6=d;c5=A|0;c9=A+4|0;h=A+8|0;cX=A+12|0;e=B|0;cY=B+4|0;c4=B+8|0;w=B+12|0;c3=z|0;b4=z+4|0;r=z+8|0;co=C|0;cB=C+4|0;ae=C+8|0;x=C+12|0;v=cq+4|0;u=cq+8|0;c8=-0.0-ch;da=-0.0-ci;c7=-0.0-cj;if(m){m=0;do{cP=c[y+(m<<2)>>2]|0;cr=cP*3|0;g[c3>>2]=+g[s+(cr<<2)>>2]+ +g[cq>>2];g[b4>>2]=+g[s+(cr+1<<2)>>2]+ +g[v>>2];g[r>>2]=+g[s+(cr+2<<2)>>2]+ +g[u>>2];cr=c[(c[c6>>2]|0)+16>>2]|0;g[c5>>2]=c7;g[c9>>2]=da;g[h>>2]=c8;g[cX>>2]=0.0;dw[cr&127](d,A,z,-0.0- +g[t+(cP<<2)>>2]);m=m+1|0;}while((m|0)<(k|0));i=f;return}else{m=0;do{z=c[y+(m<<2)>>2]|0;A=z*3|0;cZ=+g[s+(A<<2)>>2]+ +g[cq>>2];g[c3>>2]=cZ;c_=+g[s+(A+1<<2)>>2]+ +g[v>>2];g[b4>>2]=c_;cm=+g[s+(A+2<<2)>>2]+ +g[u>>2];g[r>>2]=cm;A=c[(c[c6>>2]|0)+16>>2]|0;g[e>>2]=c7;g[cY>>2]=da;g[c4>>2]=c8;g[w>>2]=0.0;L=+g[t+(z<<2)>>2];g[co>>2]=cZ-cj*L;g[cB>>2]=c_-L*ci;g[ae>>2]=cm-L*ch;g[x>>2]=0.0;dw[A&127](d,B,C,-0.0-L);m=m+1|0;}while((m|0)<(k|0));i=f;return}}function aB8(a){a=a|0;return}function aB9(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCa(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=(a[b+28|0]&1)!=0;g=f?e:d;h=f?d:e;e=g+192|0;d=c[e>>2]|0;f=c[d+16>>2]|0;i=b+12|0;j=c[i>>2]|0;if((j|0)<(f|0)){k=b+16|0;if((c[k>>2]|0)<(f|0)){if((f|0)==0){l=0;m=j}else{c[9806]=(c[9806]|0)+1;n=aDx((f<<2)+19|0)|0;if((n|0)==0){o=0}else{p=-(n+4|0)&15;c[n+p>>2]=n;o=n+(p+4)|0}l=o;m=c[i>>2]|0}o=b+20|0;if((m|0)>0){p=0;do{n=l+(p<<2)|0;if((n|0)!=0){c[n>>2]=c[(c[o>>2]|0)+(p<<2)>>2]}p=p+1|0;}while((p|0)<(m|0))}m=c[o>>2]|0;p=b+24|0;if((m|0)!=0){if((a[p]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[m-4>>2]|0)}c[o>>2]=0}a[p]=1;c[o>>2]=l;c[k>>2]=f;q=o}else{q=b+20|0}o=j;do{j=(c[q>>2]|0)+(o<<2)|0;if((j|0)!=0){c[j>>2]=0}o=o+1|0;}while((o|0)<(f|0))}c[i>>2]=f;if((f|0)<=0){return}i=d+64|0;o=d+24|0;d=b+4|0;q=b+32|0;j=b+20|0;b=0;do{if((c[i>>2]|0)==0){k=c[e>>2]|0;c[e>>2]=c[(c[o>>2]|0)+(b*80|0)+64>>2];l=c[d>>2]|0;p=dE[c[(c[l>>2]|0)+8>>2]&127](l,g,h,c[q>>2]|0)|0;c[(c[j>>2]|0)+(b<<2)>>2]=p;c[e>>2]=k}else{c[(c[j>>2]|0)+(b<<2)>>2]=0}b=b+1|0;}while((b|0)<(f|0));return}function aCb(a){a=a|0;aCc(a);if((a|0)==0){return}aDB(a);return}function aCc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;c[b>>2]=20296;d=b+12|0;e=c[d>>2]|0;f=b+20|0;if((e|0)>0){g=b+4|0;h=0;do{i=c[(c[f>>2]|0)+(h<<2)>>2]|0;if((i|0)!=0){ct[c[c[i>>2]>>2]&2047](i);i=c[g>>2]|0;cv[c[(c[i>>2]|0)+60>>2]&2047](i,c[(c[f>>2]|0)+(h<<2)>>2]|0)}h=h+1|0;}while((h|0)<(e|0))}e=c[f>>2]|0;h=b+24|0;if((e|0)==0){a[h]=1;c[f>>2]=0;c[d>>2]=0;j=b+16|0;c[j>>2]=0;return}if((a[h]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[e-4>>2]|0)}c[f>>2]=0;a[h]=1;c[f>>2]=0;c[d>>2]=0;j=b+16|0;c[j>>2]=0;return}function aCd(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0;j=i;i=i+312|0;k=j|0;l=j+32|0;m=j+56|0;n=j+72|0;o=j+88|0;p=j+152|0;q=j+184|0;r=j+248|0;s=j+264|0;t=j+280|0;u=j+296|0;v=(a[b+28|0]&1)!=0;w=v?e:d;x=v?d:e;v=c[w+192>>2]|0;y=b+12|0;if((c[v+68>>2]|0)!=(c[b+40>>2]|0)){z=c[y>>2]|0;if((z|0)>0){A=b+20|0;B=b+4|0;C=0;do{D=c[(c[A>>2]|0)+(C<<2)>>2]|0;if((D|0)!=0){ct[c[c[D>>2]>>2]&2047](D);D=c[B>>2]|0;cv[c[(c[D>>2]|0)+60>>2]&2047](D,c[(c[A>>2]|0)+(C<<2)>>2]|0)}C=C+1|0;}while((C|0)<(z|0))}aCa(b,d,e)}e=c[v+64>>2]|0;d=b+4|0;z=c[d>>2]|0;C=b+20|0;A=c[C>>2]|0;B=c[b+32>>2]|0;c[k>>2]=21800;c[k+4>>2]=w;c[k+8>>2]=x;c[k+12>>2]=z;c[k+16>>2]=f;c[k+20>>2]=h;c[k+24>>2]=A;c[k+28>>2]=B;B=l+16|0;a[B]=1;f=l+12|0;c[f>>2]=0;z=l+4|0;c[z>>2]=0;b=l+8|0;c[b>>2]=0;D=c[y>>2]|0;do{if((D|0)>0){E=h+4|0;F=h+136|0;G=h+8|0;H=h+72|0;I=0;J=D;K=A;while(1){L=c[K+(I<<2)>>2]|0;if((L|0)==0){M=J}else{cv[c[(c[L>>2]|0)+16>>2]&2047](L,l);L=c[z>>2]|0;if((L|0)>0){N=0;O=L;while(1){P=c[(c[f>>2]|0)+(N<<2)>>2]|0;Q=P+1116|0;if((c[Q>>2]|0)==0){R=O}else{c[E>>2]=P;do{if((c[Q>>2]|0)!=0){if((c[P+1108>>2]|0)==(c[F>>2]|0)){ay6(P,G,H);break}else{ay6(P,H,G);break}}}while(0);c[E>>2]=0;R=c[z>>2]|0}P=N+1|0;if((P|0)<(R|0)){N=P;O=R}else{S=R;break}}}else{S=L}if((S|0)<0){if((c[b>>2]|0)<0){O=c[f>>2]|0;if((S|0)>0){N=0;do{if((N|0)!=0){c[N<<2>>2]=c[O+(N<<2)>>2]}N=N+1|0;}while((N|0)<(S|0))}if((O|0)!=0){if((a[B]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[O-4>>2]|0)}c[f>>2]=0}a[B]=1;c[f>>2]=0;c[b>>2]=0;T=S}else{T=S}do{N=(c[f>>2]|0)+(T<<2)|0;if((N|0)!=0){c[N>>2]=0}T=T+1|0;}while((T|0)<0)}c[z>>2]=0;M=c[y>>2]|0}O=I+1|0;if((O|0)>=(M|0)){break}I=O;J=M;K=c[C>>2]|0}K=c[f>>2]|0;if((K|0)==0){break}if((a[B]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[K-4>>2]|0)}c[f>>2]=0}}while(0);a[B]=1;c[f>>2]=0;c[z>>2]=0;c[b>>2]=0;if((e|0)==0){b=c[y>>2]|0;if((b|0)<=0){i=j;return}z=v+24|0;f=0;do{aCf(k,c[(c[z>>2]|0)+(f*80|0)+64>>2]|0,f);f=f+1|0;}while((f|0)<(b|0))}else{U=+g[w+4>>2];V=+g[w+20>>2];W=+g[w+36>>2];X=+g[w+8>>2];Y=+g[w+24>>2];Z=+g[w+40>>2];_=+g[w+12>>2];$=+g[w+28>>2];aa=+g[w+44>>2];ab=-0.0- +g[w+52>>2];ac=-0.0- +g[w+56>>2];ad=-0.0- +g[w+60>>2];ae=+g[x+4>>2];af=+g[x+20>>2];ag=+g[x+36>>2];ah=+g[x+8>>2];ai=+g[x+24>>2];aj=+g[x+40>>2];ak=+g[x+12>>2];al=+g[x+28>>2];am=+g[x+44>>2];an=+g[x+52>>2];ao=+g[x+56>>2];ap=+g[x+60>>2];g[o>>2]=U*ae+V*af+W*ag;g[o+4>>2]=U*ah+V*ai+W*aj;g[o+8>>2]=U*ak+V*al+W*am;g[o+12>>2]=0.0;g[o+16>>2]=X*ae+Y*af+Z*ag;g[o+20>>2]=X*ah+Y*ai+Z*aj;g[o+24>>2]=X*ak+Y*al+Z*am;g[o+28>>2]=0.0;g[o+32>>2]=_*ae+$*af+aa*ag;g[o+36>>2]=_*ah+$*ai+aa*aj;g[o+40>>2]=_*ak+$*al+aa*am;g[o+44>>2]=0.0;g[o+48>>2]=U*ab+V*ac+W*ad+(U*an+V*ao+W*ap);g[o+52>>2]=X*ab+Y*ac+Z*ad+(X*an+Y*ao+Z*ap);g[o+56>>2]=_*ab+$*ac+aa*ad+(_*an+$*ao+aa*ap);g[o+60>>2]=0.0;b=c[x+192>>2]|0;dI[c[(c[b>>2]|0)+8>>2]&1023](b,o,m,n);o=p;b=m;c[o>>2]=c[b>>2];c[o+4>>2]=c[b+4>>2];c[o+8>>2]=c[b+8>>2];c[o+12>>2]=c[b+12>>2];b=p+16|0;o=n;c[b>>2]=c[o>>2];c[b+4>>2]=c[o+4>>2];c[b+8>>2]=c[o+8>>2];c[b+12>>2]=c[o+12>>2];awD(c[e>>2]|0,p,k|0)}k=c[y>>2]|0;if((k|0)<=0){i=j;return}y=v+24|0;v=w+4|0;p=w+8|0;e=w+12|0;o=w+20|0;b=w+24|0;n=w+28|0;m=w+36|0;f=w+40|0;z=w+44|0;B=w+52|0;M=w+56|0;T=w+60|0;w=q|0;S=q+4|0;R=q+8|0;l=q+12|0;A=q+16|0;D=q+20|0;h=q+24|0;K=q+28|0;J=q+32|0;I=q+36|0;E=q+40|0;G=q+44|0;H=q+48|0;F=q+52|0;O=q+56|0;N=q+60|0;L=x+192|0;P=x+4|0;x=r|0;Q=u|0;aq=r+8|0;ar=u+8|0;as=r+4|0;at=u+4|0;au=s+4|0;av=t+4|0;aw=s+8|0;ax=t+8|0;ay=s|0;az=t|0;aA=0;do{do{if((c[(c[C>>2]|0)+(aA<<2)>>2]|0)!=0){aB=c[y>>2]|0;aC=c[aB+(aA*80|0)+64>>2]|0;ap=+g[v>>2];aa=+g[p>>2];ao=+g[e>>2];$=+g[o>>2];an=+g[b>>2];_=+g[n>>2];ad=+g[m>>2];ac=+g[f>>2];ab=+g[z>>2];Z=+g[aB+(aA*80|0)>>2];Y=+g[aB+(aA*80|0)+16>>2];X=+g[aB+(aA*80|0)+32>>2];W=+g[aB+(aA*80|0)+4>>2];V=+g[aB+(aA*80|0)+20>>2];U=+g[aB+(aA*80|0)+36>>2];am=+g[aB+(aA*80|0)+8>>2];al=+g[aB+(aA*80|0)+24>>2];ak=+g[aB+(aA*80|0)+40>>2];aj=+g[aB+(aA*80|0)+48>>2];ai=+g[aB+(aA*80|0)+52>>2];ah=+g[aB+(aA*80|0)+56>>2];ag=+g[B>>2]+(ap*aj+aa*ai+ao*ah);af=+g[M>>2]+($*aj+an*ai+_*ah);ae=+g[T>>2]+(ad*aj+ac*ai+ab*ah);g[w>>2]=ap*Z+aa*Y+ao*X;g[S>>2]=ap*W+aa*V+ao*U;g[R>>2]=ap*am+aa*al+ao*ak;g[l>>2]=0.0;g[A>>2]=$*Z+an*Y+_*X;g[D>>2]=$*W+an*V+_*U;g[h>>2]=$*am+an*al+_*ak;g[K>>2]=0.0;g[J>>2]=ad*Z+ac*Y+ab*X;g[I>>2]=ad*W+ac*V+ab*U;g[E>>2]=ad*am+ac*al+ab*ak;g[G>>2]=0.0;g[H>>2]=ag;g[F>>2]=af;g[O>>2]=ae;g[N>>2]=0.0;dI[c[(c[aC>>2]|0)+8>>2]&1023](aC,q,r,s);aC=c[L>>2]|0;dI[c[(c[aC>>2]|0)+8>>2]&1023](aC,P,t,u);do{if(+g[x>>2]>+g[Q>>2]){aD=0}else{if(+g[ay>>2]<+g[az>>2]){aD=0;break}aD=1}}while(0);do{if(+g[aq>>2]>+g[ar>>2]){aE=0}else{if(+g[aw>>2]<+g[ax>>2]){aE=0;break}aE=aD}}while(0);if(+g[as>>2]<=+g[at>>2]){if(!(+g[au>>2]<+g[av>>2]|aE^1)){break}}aC=c[(c[C>>2]|0)+(aA<<2)>>2]|0;ct[c[c[aC>>2]>>2]&2047](aC);aC=c[d>>2]|0;cv[c[(c[aC>>2]|0)+60>>2]&2047](aC,c[(c[C>>2]|0)+(aA<<2)>>2]|0);c[(c[C>>2]|0)+(aA<<2)>>2]=0}}while(0);aA=aA+1|0;}while((aA|0)<(k|0));i=j;return}function aCe(a){a=a|0;return}function aCf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0,Y=0,Z=0,_=0;e=i;i=i+224|0;f=e+64|0;h=e+128|0;j=e+144|0;k=e+160|0;l=e+176|0;m=e+192|0;n=e+208|0;o=a+4|0;p=c[o>>2]|0;q=c[p+192>>2]|0;r=+g[p+4>>2];s=+g[p+8>>2];t=+g[p+12>>2];u=+g[p+16>>2];v=+g[p+20>>2];w=+g[p+24>>2];x=+g[p+28>>2];y=+g[p+32>>2];z=+g[p+36>>2];A=+g[p+40>>2];B=+g[p+44>>2];C=+g[p+48>>2];D=+g[p+52>>2];E=+g[p+56>>2];F=+g[p+60>>2];G=+g[p+64>>2];H=p+68|0;I=e|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=p+84|0;J=e+16|0;c[J>>2]=c[H>>2];c[J+4>>2]=c[H+4>>2];c[J+8>>2]=c[H+8>>2];c[J+12>>2]=c[H+12>>2];H=p+100|0;K=e+32|0;c[K>>2]=c[H>>2];c[K+4>>2]=c[H+4>>2];c[K+8>>2]=c[H+8>>2];c[K+12>>2]=c[H+12>>2];H=p+116|0;p=e+48|0;c[p>>2]=c[H>>2];c[p+4>>2]=c[H+4>>2];c[p+8>>2]=c[H+8>>2];c[p+12>>2]=c[H+12>>2];H=c[q+24>>2]|0;L=+g[H+(d*80|0)>>2];M=+g[H+(d*80|0)+16>>2];N=+g[H+(d*80|0)+32>>2];O=+g[H+(d*80|0)+4>>2];P=+g[H+(d*80|0)+20>>2];Q=+g[H+(d*80|0)+36>>2];R=+g[H+(d*80|0)+8>>2];S=+g[H+(d*80|0)+24>>2];T=+g[H+(d*80|0)+40>>2];U=+g[H+(d*80|0)+48>>2];V=+g[H+(d*80|0)+52>>2];W=+g[H+(d*80|0)+56>>2];g[f>>2]=r*L+s*M+t*N;g[f+4>>2]=r*O+s*P+t*Q;g[f+8>>2]=r*R+s*S+t*T;g[f+12>>2]=0.0;g[f+16>>2]=v*L+w*M+x*N;g[f+20>>2]=v*O+w*P+x*Q;g[f+24>>2]=v*R+w*S+x*T;g[f+28>>2]=0.0;g[f+32>>2]=z*L+A*M+B*N;g[f+36>>2]=z*O+A*P+B*Q;g[f+40>>2]=z*R+A*S+B*T;g[f+44>>2]=0.0;g[f+48>>2]=D+(r*U+s*V+t*W);g[f+52>>2]=E+(v*U+w*V+x*W);g[f+56>>2]=F+(z*U+A*V+B*W);g[f+60>>2]=0.0;dI[c[(c[b>>2]|0)+8>>2]&1023](b,f,h,j);H=a+8|0;q=c[H>>2]|0;X=c[q+192>>2]|0;dI[c[(c[X>>2]|0)+8>>2]&1023](X,q+4|0,k,l);do{if(+g[h>>2]>+g[l>>2]){Y=0}else{if(+g[j>>2]<+g[k>>2]){Y=0;break}Y=1}}while(0);do{if(+g[h+8>>2]>+g[l+8>>2]){Z=0}else{if(+g[j+8>>2]<+g[k+8>>2]){Z=0;break}Z=Y}}while(0);if(+g[h+4>>2]>+g[l+4>>2]){i=e;return}if(+g[j+4>>2]<+g[k+4>>2]|Z^1){i=e;return}Z=c[o>>2]|0;Y=Z+4|0;q=f;c[Y>>2]=c[q>>2];c[Y+4>>2]=c[q+4>>2];c[Y+8>>2]=c[q+8>>2];c[Y+12>>2]=c[q+12>>2];Y=Z+20|0;X=f+16|0;c[Y>>2]=c[X>>2];c[Y+4>>2]=c[X+4>>2];c[Y+8>>2]=c[X+8>>2];c[Y+12>>2]=c[X+12>>2];Y=Z+36|0;_=f+32|0;c[Y>>2]=c[_>>2];c[Y+4>>2]=c[_+4>>2];c[Y+8>>2]=c[_+8>>2];c[Y+12>>2]=c[_+12>>2];Y=Z+52|0;Z=f+48|0;c[Y>>2]=c[Z>>2];c[Y+4>>2]=c[Z+4>>2];c[Y+8>>2]=c[Z+8>>2];c[Y+12>>2]=c[Z+12>>2];Y=c[o>>2]|0;f=Y+68|0;c[f>>2]=c[q>>2];c[f+4>>2]=c[q+4>>2];c[f+8>>2]=c[q+8>>2];c[f+12>>2]=c[q+12>>2];q=Y+84|0;c[q>>2]=c[X>>2];c[q+4>>2]=c[X+4>>2];c[q+8>>2]=c[X+8>>2];c[q+12>>2]=c[X+12>>2];X=Y+100|0;c[X>>2]=c[_>>2];c[X+4>>2]=c[_+4>>2];c[X+8>>2]=c[_+8>>2];c[X+12>>2]=c[_+12>>2];_=Y+116|0;c[_>>2]=c[Z>>2];c[_+4>>2]=c[Z+4>>2];c[_+8>>2]=c[Z+8>>2];c[_+12>>2]=c[Z+12>>2];Z=(c[o>>2]|0)+192|0;_=c[Z>>2]|0;c[Z>>2]=b;b=a+24|0;if((c[(c[b>>2]|0)+(d<<2)>>2]|0)==0){Z=c[a+12>>2]|0;Y=dE[c[(c[Z>>2]|0)+8>>2]&127](Z,c[o>>2]|0,c[H>>2]|0,c[a+28>>2]|0)|0;c[(c[b>>2]|0)+(d<<2)>>2]=Y}Y=a+20|0;Z=c[Y>>2]|0;X=c[Z>>2]|0;if((c[Z+136>>2]|0)==(c[o>>2]|0)){dA[c[X+8>>2]&511](Z,-1,d)}else{dA[c[X+12>>2]&511](Z,-1,d)}Z=c[(c[b>>2]|0)+(d<<2)>>2]|0;d=a+16|0;co[c[(c[Z>>2]|0)+8>>2]&255](Z,c[o>>2]|0,c[H>>2]|0,c[d>>2]|0,c[Y>>2]|0);Y=c[(c[d>>2]|0)+20>>2]|0;do{if((Y|0)!=0){if(((cA[c[(c[Y>>2]|0)+48>>2]&4095](Y)|0)&2|0)==0){break}H=c[(c[d>>2]|0)+20>>2]|0;Z=c[(c[H>>2]|0)+52>>2]|0;g[m>>2]=1.0;g[m+4>>2]=1.0;g[m+8>>2]=1.0;g[m+12>>2]=0.0;dI[Z&1023](H,h,j,m);H=c[(c[d>>2]|0)+20>>2]|0;Z=c[(c[H>>2]|0)+52>>2]|0;g[n>>2]=1.0;g[n+4>>2]=1.0;g[n+8>>2]=1.0;g[n+12>>2]=0.0;dI[Z&1023](H,k,l,n)}}while(0);c[(c[o>>2]|0)+192>>2]=_;_=c[o>>2]|0;g[_+4>>2]=r;g[_+8>>2]=s;g[_+12>>2]=t;g[_+16>>2]=u;g[_+20>>2]=v;g[_+24>>2]=w;g[_+28>>2]=x;g[_+32>>2]=y;g[_+36>>2]=z;g[_+40>>2]=A;g[_+44>>2]=B;g[_+48>>2]=C;g[_+52>>2]=D;g[_+56>>2]=E;g[_+60>>2]=F;g[_+64>>2]=G;_=c[o>>2]|0;o=_+68|0;c[o>>2]=c[I>>2];c[o+4>>2]=c[I+4>>2];c[o+8>>2]=c[I+8>>2];c[o+12>>2]=c[I+12>>2];I=_+84|0;c[I>>2]=c[J>>2];c[I+4>>2]=c[J+4>>2];c[I+8>>2]=c[J+8>>2];c[I+12>>2]=c[J+12>>2];J=_+100|0;c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];K=_+116|0;c[K>>2]=c[p>>2];c[K+4>>2]=c[p+4>>2];c[K+8>>2]=c[p+8>>2];c[K+12>>2]=c[p+12>>2];i=e;return}function aCg(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0,W=0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0;i=(a[b+28|0]&1)!=0;j=i?e:d;k=i?d:e;e=j+192|0;d=c[b+12>>2]|0;if((d|0)<=0){l=1.0;return+l}i=c[e>>2]|0;m=i+24|0;n=j+4|0;o=j+8|0;p=j+12|0;q=j+16|0;r=j+20|0;s=j+24|0;t=j+28|0;u=j+32|0;v=j+36|0;w=j+40|0;x=j+44|0;y=j+48|0;z=j+52|0;A=j+56|0;B=j+60|0;C=j+64|0;D=b+20|0;E=+g[n>>2];F=+g[o>>2];G=+g[p>>2];H=+g[q>>2];I=+g[r>>2];J=+g[s>>2];K=+g[t>>2];L=+g[u>>2];M=+g[v>>2];N=+g[w>>2];O=+g[x>>2];P=+g[y>>2];Q=+g[z>>2];R=+g[A>>2];S=+g[B>>2];T=+g[C>>2];b=0;U=1.0;while(1){V=c[m>>2]|0;W=c[V+(b*80|0)+64>>2]|0;X=+g[V+(b*80|0)>>2];Y=+g[V+(b*80|0)+16>>2];Z=+g[V+(b*80|0)+32>>2];_=+g[V+(b*80|0)+4>>2];$=+g[V+(b*80|0)+20>>2];aa=+g[V+(b*80|0)+36>>2];ab=+g[V+(b*80|0)+8>>2];ac=+g[V+(b*80|0)+24>>2];ad=+g[V+(b*80|0)+40>>2];ae=+g[V+(b*80|0)+48>>2];af=+g[V+(b*80|0)+52>>2];ag=+g[V+(b*80|0)+56>>2];g[n>>2]=E*X+F*Y+G*Z;g[o>>2]=E*_+F*$+G*aa;g[p>>2]=E*ab+F*ac+G*ad;g[q>>2]=0.0;g[r>>2]=I*X+J*Y+K*Z;g[s>>2]=I*_+J*$+K*aa;g[t>>2]=I*ab+J*ac+K*ad;g[u>>2]=0.0;g[v>>2]=M*X+N*Y+O*Z;g[w>>2]=M*_+N*$+O*aa;g[x>>2]=M*ab+N*ac+O*ad;g[y>>2]=0.0;g[z>>2]=Q+(E*ae+F*af+G*ag);g[A>>2]=R+(I*ae+J*af+K*ag);g[B>>2]=S+(M*ae+N*af+O*ag);g[C>>2]=0.0;c[e>>2]=W;W=c[(c[D>>2]|0)+(b<<2)>>2]|0;ag=+db[c[(c[W>>2]|0)+12>>2]&127](W,j,k,f,h);af=ag>2]=i;g[n>>2]=E;g[o>>2]=F;g[p>>2]=G;g[q>>2]=H;g[r>>2]=I;g[s>>2]=J;g[t>>2]=K;g[u>>2]=L;g[v>>2]=M;g[w>>2]=N;g[x>>2]=O;g[y>>2]=P;g[z>>2]=Q;g[A>>2]=R;g[B>>2]=S;g[C>>2]=T;W=b+1|0;if((W|0)<(d|0)){b=W;U=af}else{l=af;break}}return+l}function aCh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=a+12|0;e=c[d>>2]|0;if((e|0)<=0){return}f=a+20|0;a=0;g=e;while(1){e=c[(c[f>>2]|0)+(a<<2)>>2]|0;if((e|0)==0){h=g}else{cv[c[(c[e>>2]|0)+16>>2]&2047](e,b);h=c[d>>2]|0}e=a+1|0;if((e|0)<(h|0)){a=e;g=h}else{break}}return}function aCi(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0;d=i;i=i+48|0;e=d|0;f=d+16|0;h=d+32|0;j=c[b+36>>2]|0;k=a+4|0;l=c[(c[(c[(c[k>>2]|0)+192>>2]|0)+24>>2]|0)+(j*80|0)+64>>2]|0;m=a+16|0;n=c[(c[m>>2]|0)+20>>2]|0;if((n|0)==0){aCf(a,l,j);i=d;return}if(((cA[c[(c[n>>2]|0)+48>>2]&4095](n)|0)&2|0)==0){aCf(a,l,j);i=d;return}n=c[k>>2]|0;o=+g[n+4>>2];p=+g[n+8>>2];q=+g[n+12>>2];r=+g[n+20>>2];s=+g[n+24>>2];t=+g[n+28>>2];u=+g[n+36>>2];v=+g[n+40>>2];w=+g[n+44>>2];x=+g[n+52>>2];y=+g[n+56>>2];z=+g[n+60>>2];A=+g[b+16>>2];B=+g[b>>2];C=+g[b+20>>2];D=+g[b+4>>2];E=+g[b+24>>2];F=+g[b+8>>2];G=(A-B)*.5+0.0;H=(C-D)*.5+0.0;I=(E-F)*.5+0.0;J=(A+B)*.5;B=(C+D)*.5;D=(E+F)*.5;F=+P(+o);E=+P(+p);C=+P(+q);A=+P(+r);K=+P(+s);L=+P(+t);M=+P(+u);N=+P(+v);O=x+(o*J+p*B+q*D);q=y+(r*J+s*B+t*D);t=z+(u*J+v*B+w*D);D=G*F+H*E+I*C;C=G*A+H*K+I*L;L=G*M+H*N+I*+P(+w);g[e>>2]=O-D;g[e+4>>2]=q-C;g[e+8>>2]=t-L;g[e+12>>2]=0.0;g[f>>2]=D+O;g[f+4>>2]=q+C;g[f+8>>2]=t+L;g[f+12>>2]=0.0;b=c[(c[m>>2]|0)+20>>2]|0;m=c[(c[b>>2]|0)+52>>2]|0;g[h>>2]=1.0;g[h+4>>2]=0.0;g[h+8>>2]=0.0;g[h+12>>2]=0.0;dI[m&1023](b,e,f,h);aCf(a,l,j);i=d;return}function aCk(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=19792;c[a+12>>2]=21136;b=a+60|0;d=c[b>>2]|0;e=a+76|0;cv[c[(c[d>>2]|0)+20>>2]&2047](d,c[e>>2]|0);d=c[b>>2]|0;cv[c[(c[d>>2]|0)+16>>2]&2047](d,c[e>>2]|0);if((a|0)==0){return}aDB(a);return}function aCl(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=19792;c[a+12>>2]=21136;b=a+60|0;d=c[b>>2]|0;e=a+76|0;cv[c[(c[d>>2]|0)+20>>2]&2047](d,c[e>>2]|0);d=c[b>>2]|0;cv[c[(c[d>>2]|0)+16>>2]&2047](d,c[e>>2]|0);return}function aCm(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+76|0;if((c[e>>2]|0)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aCn(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=21136;b=a+48|0;d=c[b>>2]|0;e=a+64|0;cv[c[(c[d>>2]|0)+20>>2]&2047](d,c[e>>2]|0);d=c[b>>2]|0;cv[c[(c[d>>2]|0)+16>>2]&2047](d,c[e>>2]|0);if((a|0)==0){return}aDB(a);return}function aCo(a){a=a|0;var b=0,d=0,e=0;c[a>>2]=21136;b=a+48|0;d=c[b>>2]|0;e=a+64|0;cv[c[(c[d>>2]|0)+20>>2]&2047](d,c[e>>2]|0);d=c[b>>2]|0;cv[c[(c[d>>2]|0)+16>>2]&2047](d,c[e>>2]|0);return}function aCp(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=i;i=i+104|0;h=f|0;j=c[a+48>>2]|0;k=a+8|0;l=a+4|0;if((c[(c[(c[l>>2]|0)+192>>2]|0)+4>>2]|0)>=20){i=f;return}m=c[k>>2]|0;c[h+8>>2]=0;n=h|0;g[h+12>>2]=1.0;g[h+16>>2]=1.0;g[h+20>>2]=1.0;g[h+24>>2]=0.0;o=h+52|0;c[o>>2]=0;c[n>>2]=24592;c[h+4>>2]=1;p=h+56|0;q=b;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];q=h+72|0;p=b+16|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];p=h+88|0;q=b+32|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];g[h+44>>2]=+g[a+56>>2];q=m+192|0;m=c[q>>2]|0;c[q>>2]=h;h=dE[c[(c[j>>2]|0)+8>>2]&127](j,c[l>>2]|0,c[k>>2]|0,c[a+64>>2]|0)|0;p=a+44|0;b=c[p>>2]|0;r=c[b>>2]|0;if((c[b+136>>2]|0)==(c[k>>2]|0)){dA[c[r+8>>2]&511](b,d,e)}else{dA[c[r+12>>2]&511](b,d,e)}co[c[(c[h>>2]|0)+8>>2]&255](h,c[l>>2]|0,c[k>>2]|0,c[a+52>>2]|0,c[p>>2]|0);ct[c[c[h>>2]>>2]&2047](h);cv[c[(c[j>>2]|0)+60>>2]&2047](j,h);c[q>>2]=m;c[n>>2]=21200;n=c[o>>2]|0;if((n|0)==0){i=f;return}c[9804]=(c[9804]|0)+1;aDB(c[n-80+76>>2]|0);i=f;return}function aCq(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0;j=i;i=i+64|0;k=j|0;l=(a[b+8|0]&1)!=0;m=l?e:d;n=l?d:e;e=c[n+192>>2]|0;if(((c[e+4>>2]|0)-21|0)>>>0>=9){i=j;return}d=e;if((c[(c[m+192>>2]|0)+4>>2]|0)>=20){i=j;return}o=+dh[c[(c[e>>2]|0)+44>>2]&1023](d);l=b+76|0;p=h+4|0;c[p>>2]=c[l>>2];c[b+64>>2]=f;g[b+68>>2]=o;c[b+56>>2]=h;f=c[b+20>>2]|0;q=+g[f+4>>2];r=+g[f+20>>2];s=+g[f+36>>2];t=+g[f+8>>2];u=+g[f+24>>2];v=+g[f+40>>2];w=+g[f+12>>2];x=+g[f+28>>2];y=+g[f+44>>2];z=-0.0- +g[f+52>>2];A=-0.0- +g[f+56>>2];B=-0.0- +g[f+60>>2];f=c[b+16>>2]|0;C=+g[f+4>>2];D=+g[f+20>>2];E=+g[f+36>>2];F=+g[f+8>>2];G=+g[f+24>>2];H=+g[f+40>>2];I=+g[f+12>>2];J=+g[f+28>>2];K=+g[f+44>>2];L=+g[f+52>>2];M=+g[f+56>>2];N=+g[f+60>>2];g[k>>2]=q*C+r*D+s*E;g[k+4>>2]=q*F+r*G+s*H;g[k+8>>2]=q*I+r*J+s*K;g[k+12>>2]=0.0;g[k+16>>2]=t*C+u*D+v*E;g[k+20>>2]=t*F+u*G+v*H;g[k+24>>2]=t*I+u*J+v*K;g[k+28>>2]=0.0;g[k+32>>2]=w*C+x*D+y*E;g[k+36>>2]=w*F+x*G+y*H;g[k+40>>2]=w*I+x*J+y*K;g[k+44>>2]=0.0;g[k+48>>2]=q*z+r*A+s*B+(q*L+r*M+s*N);g[k+52>>2]=t*z+u*A+v*B+(t*L+u*M+v*N);g[k+56>>2]=w*z+x*A+y*B+(w*L+x*M+y*N);g[k+60>>2]=0.0;O=c[f+192>>2]|0;f=b+24|0;P=b+40|0;dI[c[(c[O>>2]|0)+8>>2]&1023](O,k,f,P);k=P|0;g[k>>2]=+g[k>>2]+o;k=b+44|0;g[k>>2]=+g[k>>2]+o;k=b+48|0;g[k>>2]=+g[k>>2]+o;k=f|0;g[k>>2]=+g[k>>2]-o;k=b+28|0;g[k>>2]=+g[k>>2]-o;k=b+32|0;g[k>>2]=+g[k>>2]-o;k=c[l>>2]|0;c[k+1108>>2]=m;c[k+1112>>2]=n;dI[c[(c[e>>2]|0)+60>>2]&1023](d,b+12|0,f,P);P=c[p>>2]|0;if((c[P+1116>>2]|0)==0){i=j;return}if((c[P+1108>>2]|0)==(c[h+136>>2]|0)){ay6(P,h+8|0,h+72|0);i=j;return}else{ay6(P,h+72|0,h+8|0);i=j;return}}function aCr(a){a=a|0;return}function aCs(a){a=a|0;return}function aCt(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0.0,U=0.0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0,ab=0,ac=0,ad=0.0,ae=0.0,af=0.0;h=i;i=i+240|0;f=h|0;j=h+16|0;k=h+32|0;l=(a[b+8|0]&1)!=0;b=l?e:d;m=l?d:e;n=+g[b+116>>2];o=+g[b+52>>2];p=n-o;q=+g[b+120>>2];r=+g[b+56>>2];s=q-r;t=+g[b+124>>2];u=+g[b+60>>2];v=t-u;w=+g[b+248>>2];if(p*p+s*s+v*v>2];v=+g[m+20>>2];s=+g[m+36>>2];p=+g[m+8>>2];y=+g[m+24>>2];z=+g[m+40>>2];A=+g[m+12>>2];B=+g[m+28>>2];C=+g[m+44>>2];D=-0.0- +g[m+52>>2];E=-0.0- +g[m+56>>2];F=-0.0- +g[m+60>>2];G=w*D+v*E+s*F;H=p*D+y*E+z*F;I=A*D+B*E+C*F;F=+g[b+4>>2];E=+g[b+20>>2];D=+g[b+36>>2];J=+g[b+8>>2];K=+g[b+24>>2];L=+g[b+40>>2];M=+g[b+12>>2];N=+g[b+28>>2];O=+g[b+44>>2];P=G+(w*o+v*r+s*u);Q=H+(p*o+y*r+z*u);R=I+(A*o+B*r+C*u);u=+g[b+68>>2];r=+g[b+84>>2];o=+g[b+100>>2];S=+g[b+72>>2];T=+g[b+88>>2];U=+g[b+104>>2];V=+g[b+76>>2];W=+g[b+92>>2];X=+g[b+108>>2];Y=G+(w*n+v*q+s*t);G=H+(p*n+y*q+z*t);H=I+(A*n+B*q+C*t);e=c[m+192>>2]|0;if(((c[e+4>>2]|0)-21|0)>>>0>=9){x=1.0;i=h;return+x}m=f|0;g[m>>2]=P;d=f+4|0;g[d>>2]=Q;l=f+8|0;g[l>>2]=R;g[f+12>>2]=0.0;if(Y>2]=Y;Z=Y}else{Z=P}if(G>2]=G;_=G}else{_=Q}if(H>2]=H;$=H}else{$=R}aa=j|0;g[aa>>2]=P;ab=j+4|0;g[ab>>2]=Q;ac=j+8|0;g[ac>>2]=R;g[j+12>>2]=0.0;if(P>2]=Y;ad=Y}else{ad=P}if(Q>2]=G;ae=G}else{ae=Q}if(R>2]=H;af=H}else{af=R}t=+g[b+244>>2];g[m>>2]=Z-t;g[d>>2]=_-t;g[l>>2]=$-t;g[aa>>2]=t+ad;g[ab>>2]=t+ae;g[ac>>2]=t+af;c[k>>2]=18528;g[k+4>>2]=w*F+v*E+s*D;g[k+8>>2]=w*J+v*K+s*L;g[k+12>>2]=w*M+v*N+s*O;g[k+16>>2]=0.0;g[k+20>>2]=p*F+y*E+z*D;g[k+24>>2]=p*J+y*K+z*L;g[k+28>>2]=p*M+y*N+z*O;g[k+32>>2]=0.0;g[k+36>>2]=A*F+B*E+C*D;g[k+40>>2]=A*J+B*K+C*L;g[k+44>>2]=A*M+B*N+C*O;g[k+48>>2]=0.0;g[k+52>>2]=P;g[k+56>>2]=Q;g[k+60>>2]=R;g[k+64>>2]=0.0;g[k+68>>2]=w*u+v*r+s*o;g[k+72>>2]=w*S+v*T+s*U;g[k+76>>2]=w*V+v*W+s*X;g[k+80>>2]=0.0;g[k+84>>2]=p*u+y*r+z*o;g[k+88>>2]=p*S+y*T+z*U;g[k+92>>2]=p*V+y*W+z*X;g[k+96>>2]=0.0;g[k+100>>2]=A*u+B*r+C*o;g[k+104>>2]=A*S+B*T+C*U;g[k+108>>2]=A*V+B*W+C*X;g[k+112>>2]=0.0;g[k+116>>2]=Y;g[k+120>>2]=G;g[k+124>>2]=H;g[k+128>>2]=0.0;g[k+196>>2]=t;ac=k+200|0;ab=b+240|0;g[ac>>2]=+g[ab>>2];if((e|0)==0){x=1.0;i=h;return+x}dI[c[(c[e>>2]|0)+60>>2]&1023](e,k|0,f,j);t=+g[ac>>2];if(t>=+g[ab>>2]){x=1.0;i=h;return+x}g[ab>>2]=t;x=t;i=h;return+x}function aCu(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCv(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0;f=i;i=i+776|0;e=f|0;h=f+64|0;j=f+240|0;k=f+296|0;l=f+400|0;m=f+760|0;g[e>>2]=1.0;aDD(e+4|0,0,16);g[e+20>>2]=1.0;aDD(e+24|0,0,16);g[e+40>>2]=1.0;aDD(e+44|0,0,20);c[h>>2]=19544;n=h+164|0;c[h+168>>2]=0;g[h+172>>2]=0.0;o=a+200|0;g[n>>2]=+g[o>>2];p=+g[a+196>>2];c[j+8>>2]=0;g[j+12>>2]=1.0;g[j+16>>2]=1.0;g[j+20>>2]=1.0;g[j+24>>2]=0.0;c[j>>2]=25528;c[j+4>>2]=8;g[j+28>>2]=p;g[j+44>>2]=p;c[k+8>>2]=0;q=k|0;g[k+12>>2]=1.0;g[k+16>>2]=1.0;g[k+20>>2]=1.0;g[k+24>>2]=0.0;g[k+44>>2]=.03999999910593033;r=k+52|0;c[r>>2]=0;c[q>>2]=24592;c[k+4>>2]=1;s=k+56|0;t=d;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];t=k+72|0;s=d+16|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];s=k+88|0;t=d+32|0;c[s>>2]=c[t>>2];c[s+4>>2]=c[t+4>>2];c[s+8>>2]=c[t+8>>2];c[s+12>>2]=c[t+12>>2];g[l+308>>2]=9999999747378752.0e-20;b[l+332>>1]=0;c[m>>2]=21768;c[m+4>>2]=l;c[m+8>>2]=j;c[m+12>>2]=k;do{if(aA0(m,a+4|0,a+68|0,e,e,h)|0){p=+g[n>>2];if(+g[o>>2]<=p){break}g[o>>2]=p}}while(0);c[q>>2]=21200;q=c[r>>2]|0;if((q|0)==0){i=f;return}c[9804]=(c[9804]|0)+1;aDB(c[q-80+76>>2]|0);i=f;return}function aCw(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCx(b){b=b|0;var d=0,e=0,f=0;c[b>>2]=21656;if((a[b+16|0]&1)==0){d=b;aDB(d);return}e=c[b+20>>2]|0;if((e|0)==0){d=b;aDB(d);return}f=c[b+4>>2]|0;cv[c[(c[f>>2]|0)+16>>2]&2047](f,e);d=b;aDB(d);return}function aCy(b){b=b|0;var d=0,e=0;c[b>>2]=21656;if((a[b+16|0]&1)==0){return}d=c[b+20>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aCz(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,R=0,U=0,V=0.0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0.0,ao=0.0,ap=0.0,aq=0.0,ar=0.0,as=0.0,at=0.0,au=0.0,av=0.0,aw=0.0,ax=0.0,ay=0.0,az=0.0,aA=0.0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0.0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0.0,bo=0.0,bp=0.0,bq=0.0,br=0,bs=0,bt=0,bu=0,bv=0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0.0,bD=0,bE=0.0,bF=0,bG=0,bH=0,bI=0,bJ=0,bK=0,bL=0,bM=0,bN=0.0,bO=0.0,bP=0.0,bQ=0,bR=0,bS=0,bT=0,bU=0,bV=0,bW=0;j=i;i=i+840|0;k=j|0;l=j+24|0;m=j+40|0;n=j+48|0;o=j+64|0;p=j+72|0;q=j+88|0;r=j+96|0;s=j+112|0;t=j+128|0;u=j+264|0;v=j+344|0;w=j+352|0;x=j+368|0;y=j+384|0;z=j+408|0;A=j+424|0;B=j+440|0;C=j+456|0;D=j+472|0;E=b+20|0;F=c[E>>2]|0;if((F|0)==0){G=c[b+4>>2]|0;H=cS[c[(c[G>>2]|0)+12>>2]&511](G,d,e)|0;c[E>>2]=H;a[b+16|0]=1;I=H}else{I=F}F=h+4|0;c[F>>2]=I;I=c[d+192>>2]|0;H=I;G=c[e+192>>2]|0;J=G;K=I+4|0;L=G+4|0;do{if((c[K>>2]|0)==10){if((c[L>>2]|0)!=10){M=L;break}N=I;O=G;R=I;U=c[(c[I>>2]|0)+28>>2]|0;cA[U&4095](R)|0;R=G;U=c[(c[G>>2]|0)+28>>2]|0;cA[U&4095](R)|0;V=+g[(c[E>>2]|0)+1120>>2];R=c[I+52>>2]|0;W=+g[N+28+(R<<2)>>2];X=+g[N+28+(((R+2|0)%3|0)<<2)>>2];N=c[G+52>>2]|0;Y=+g[O+28+(N<<2)>>2];Z=+g[O+28+(((N+2|0)%3|0)<<2)>>2];_=+g[d+4+(R<<2)>>2];$=+g[d+20+(R<<2)>>2];aa=+g[d+36+(R<<2)>>2];ab=+g[e+4+(N<<2)>>2];ac=+g[e+20+(N<<2)>>2];ad=+g[e+36+(N<<2)>>2];ae=+g[e+52>>2];af=+g[e+56>>2];ag=+g[e+60>>2];ah=ae- +g[d+52>>2];ai=af- +g[d+56>>2];aj=ag- +g[d+60>>2];ak=_*ab+$*ac+aa*ad;al=_*ah+$*ai+aa*aj;am=ab*ah+ac*ai+ad*aj;an=1.0-ak*ak;do{if(an==0.0){ao=0.0}else{ap=(al-ak*am)/an;aq=-0.0-W;if(ap1.4210854715202004e-14){au=-0.0-1.0/aq;av=ak*au;aw=an*au;ax=ap*au;g[r>>2]=av;g[r+4>>2]=aw;g[r+8>>2]=ax;g[r+12>>2]=0.0;ay=av;az=aw;aA=ax}else{if(+P(+aa)>.7071067690849304){ax=1.0/+Q(+($*$+aa*aa));g[r>>2]=0.0;aw=ax*(-0.0-aa);g[r+4>>2]=aw;av=$*ax;g[r+8>>2]=av;ay=0.0;az=aw;aA=av;break}else{av=1.0/+Q(+(_*_+$*$));aw=av*(-0.0-$);g[r>>2]=aw;ax=_*av;g[r+4>>2]=ax;g[r+8>>2]=0.0;ay=aw;az=ax;aA=0.0;break}}}while(0);g[s>>2]=Z*ay+(Y+ae);g[s+4>>2]=Z*az+(W+af);g[s+8>>2]=Z*aA+(al+ag);g[s+12>>2]=0.0}if(ar>2]|0)+16>>2]&127](h,r,s,ar)}N=c[F>>2]|0;if((c[N+1116>>2]|0)==0){i=j;return}if((c[N+1108>>2]|0)==(c[h+136>>2]|0)){ay6(N,h+8|0,h+72|0);i=j;return}else{ay6(N,h+72|0,h+8|0);i=j;return}}else{M=L}}while(0);L=t+128|0;g[L>>2]=999999984306749400.0;s=t+132|0;c[s>>2]=0;r=c[b+8>>2]|0;N=c[b+12>>2]|0;c[u>>2]=23568;R=u+4|0;g[R>>2]=0.0;O=u+8|0;g[O>>2]=1.0;U=u+12|0;g[U>>2]=0.0;g[u+16>>2]=0.0;c[u+20>>2]=N;c[u+24>>2]=r;r=u+28|0;c[r>>2]=H;N=u+32|0;c[N>>2]=J;c[u+36>>2]=c[K>>2];c[u+40>>2]=c[M>>2];aB=I;g[u+44>>2]=+dh[c[(c[aB>>2]|0)+44>>2]&1023](H);aC=G;g[u+48>>2]=+dh[c[(c[aC>>2]|0)+44>>2]&1023](J);a[u+52|0]=0;c[u+60>>2]=-1;c[u+72>>2]=1;c[r>>2]=H;c[N>>2]=J;aA=+dh[c[(c[aB>>2]|0)+44>>2]&1023](H);az=+dh[c[(c[aC>>2]|0)+44>>2]&1023](J);ay=aA+az+ +g[(c[E>>2]|0)+1120>>2];g[L>>2]=ay*ay;c[s>>2]=c[f+40>>2];s=d+4|0;L=t;J=s;c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];aC=t+16|0;H=d+20|0;c[aC>>2]=c[H>>2];c[aC+4>>2]=c[H+4>>2];c[aC+8>>2]=c[H+8>>2];c[aC+12>>2]=c[H+12>>2];aB=t+32|0;N=d+36|0;c[aB>>2]=c[N>>2];c[aB+4>>2]=c[N+4>>2];c[aB+8>>2]=c[N+8>>2];c[aB+12>>2]=c[N+12>>2];r=t+48|0;aD=d+52|0;c[r>>2]=c[aD>>2];c[r+4>>2]=c[aD+4>>2];c[r+8>>2]=c[aD+8>>2];c[r+12>>2]=c[aD+12>>2];aE=e+4|0;aF=t+64|0;aG=aE;c[aF>>2]=c[aG>>2];c[aF+4>>2]=c[aG+4>>2];c[aF+8>>2]=c[aG+8>>2];c[aF+12>>2]=c[aG+12>>2];aH=t+80|0;aI=e+20|0;c[aH>>2]=c[aI>>2];c[aH+4>>2]=c[aI+4>>2];c[aH+8>>2]=c[aI+8>>2];c[aH+12>>2]=c[aI+12>>2];aJ=t+96|0;aK=e+36|0;c[aJ>>2]=c[aK>>2];c[aJ+4>>2]=c[aK+4>>2];c[aJ+8>>2]=c[aK+8>>2];c[aJ+12>>2]=c[aK+12>>2];aL=t+112|0;aM=e+52|0;c[aL>>2]=c[aM>>2];c[aL+4>>2]=c[aM+4>>2];c[aL+8>>2]=c[aM+8>>2];c[aL+12>>2]=c[aM+12>>2];do{if((c[K>>2]|0)<7){if((c[M>>2]|0)>=7){break}c[v>>2]=18688;aN=I+52|0;if((c[aN>>2]|0)==0){break}aO=G+52|0;if((c[aO>>2]|0)==0){if((c[M>>2]|0)!=1){break}axX(u,t,v|0,c[f+20>>2]|0,0);ay=+g[R>>2];az=+g[O>>2];aA=+g[U>>2];as=1.0/+Q(+(ay*ay+az*az+aA*aA));g[x>>2]=ay*as;g[x+4>>2]=az*as;g[x+8>>2]=aA*as;g[x+12>>2]=0.0;aP=y+16|0;a[aP]=1;aQ=y+12|0;c[aQ>>2]=0;aR=y+4|0;c[aR>>2]=0;aS=y+8|0;c[aS>>2]=0;aT=G+56|0;aU=aE|0;as=+g[aT>>2];aV=e+8|0;aA=+g[aT+4>>2];aW=e+12|0;az=+g[aT+8>>2];aX=e+52|0;ay=+g[aX>>2]+(+g[aU>>2]*as+ +g[aV>>2]*aA+ +g[aW>>2]*az);aY=e+20|0;aZ=e+24|0;a_=e+28|0;a$=e+56|0;at=+g[a$>>2]+(as*+g[aY>>2]+aA*+g[aZ>>2]+az*+g[a_>>2]);a0=e+36|0;a1=e+40|0;a2=e+44|0;a3=e+60|0;ao=+g[a3>>2]+(as*+g[a0>>2]+aA*+g[a1>>2]+az*+g[a2>>2]);c[9806]=(c[9806]|0)+1;a4=aDx(35)|0;do{if((a4|0)==0){a[aP]=1;c[aQ>>2]=0;c[aS>>2]=1;a5=0}else{a6=-(a4+4|0)&15;c[a4+a6>>2]=a4;a7=a4+(a6+4)|0;a[aP]=1;c[aQ>>2]=a7;c[aS>>2]=1;if((a7|0)==0){a5=a7;break}g[a7>>2]=ay;g[a7+4>>2]=at;g[a7+8>>2]=ao;g[a7+12>>2]=0.0;a5=a7}}while(0);c[aR>>2]=1;ao=+g[aT+16>>2];at=+g[aT+20>>2];ay=+g[aT+24>>2];ar=+g[aX>>2]+(+g[aU>>2]*ao+ +g[aV>>2]*at+ +g[aW>>2]*ay);V=+g[a$>>2]+(ao*+g[aY>>2]+at*+g[aZ>>2]+ay*+g[a_>>2]);ag=+g[a3>>2]+(ao*+g[a0>>2]+at*+g[a1>>2]+ay*+g[a2>>2]);c[9806]=(c[9806]|0)+1;a4=aDx(51)|0;if((a4|0)==0){a8=0}else{a7=-(a4+4|0)&15;c[a4+a7>>2]=a4;a8=a4+(a7+4)|0}a7=0;while(1){a4=a8+(a7<<4)|0;if((a4|0)!=0){a6=a4;a4=(c[aQ>>2]|0)+(a7<<4)|0;c[a6>>2]=c[a4>>2];c[a6+4>>2]=c[a4+4>>2];c[a6+8>>2]=c[a4+8>>2];c[a6+12>>2]=c[a4+12>>2]}if((a7|0)<0){a7=a7+1|0}else{break}}a7=c[aQ>>2]|0;if((a7|0)!=0){if((a[aP]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[a7-16+12>>2]|0)}c[aQ>>2]=0}a[aP]=1;c[aQ>>2]=a8;c[aS>>2]=2;a7=c[aR>>2]|0;a4=a8+(a7<<4)|0;if((a4|0)==0){a9=a7;ba=2}else{g[a4>>2]=ar;g[a8+(a7<<4)+4>>2]=V;g[a8+(a7<<4)+8>>2]=ag;g[a8+(a7<<4)+12>>2]=0.0;a9=c[aR>>2]|0;ba=c[aS>>2]|0}a7=a9+1|0;c[aR>>2]=a7;ay=+g[aT+32>>2];at=+g[aT+36>>2];ao=+g[aT+40>>2];al=+g[aX>>2]+(+g[aU>>2]*ay+ +g[aV>>2]*at+ +g[aW>>2]*ao);Z=+g[a$>>2]+(ay*+g[aY>>2]+at*+g[aZ>>2]+ao*+g[a_>>2]);af=+g[a3>>2]+(ay*+g[a0>>2]+at*+g[a1>>2]+ao*+g[a2>>2]);do{if((a7|0)==(ba|0)){a4=(ba|0)==0?1:ba<<1;if((ba|0)>=(a4|0)){bb=ba;break}do{if((a4|0)==0){bc=0}else{c[9806]=(c[9806]|0)+1;a6=aDx((a4<<4|4)+15|0)|0;if((a6|0)==0){bc=0;break}bd=-(a6+4|0)&15;c[a6+bd>>2]=a6;bc=a6+(bd+4)|0}}while(0);if((ba|0)>0){bd=0;do{a6=bc+(bd<<4)|0;if((a6|0)!=0){be=a6;a6=(c[aQ>>2]|0)+(bd<<4)|0;c[be>>2]=c[a6>>2];c[be+4>>2]=c[a6+4>>2];c[be+8>>2]=c[a6+8>>2];c[be+12>>2]=c[a6+12>>2]}bd=bd+1|0;}while((bd|0)<(ba|0))}bd=c[aQ>>2]|0;if((bd|0)!=0){if((a[aP]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bd-16+12>>2]|0)}c[aQ>>2]=0}a[aP]=1;c[aQ>>2]=bc;c[aS>>2]=a4;bb=c[aR>>2]|0}else{bb=a7}}while(0);a7=c[aQ>>2]|0;a2=a7+(bb<<4)|0;if((a2|0)!=0){g[a2>>2]=al;g[a7+(bb<<4)+4>>2]=Z;g[a7+(bb<<4)+8>>2]=af;g[a7+(bb<<4)+12>>2]=0.0}c[aR>>2]=bb+1;ag=+g[(c[E>>2]|0)+1120>>2];aC3(x,c[aN>>2]|0,s,y,+g[u+56>>2]-ag,ag,h|0);do{if((a[b+16|0]&1)!=0){a7=c[F>>2]|0;if((c[a7+1116>>2]|0)==0){break}if((c[a7+1108>>2]|0)==(c[h+136>>2]|0)){ay6(a7,h+8|0,h+72|0);break}else{ay6(a7,h+72|0,h+8|0);break}}}while(0);a7=c[aQ>>2]|0;if((a7|0)!=0){if((a[aP]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[a7-16+12>>2]|0)}c[aQ>>2]=0}a[aP]=1;c[aQ>>2]=0;c[aR>>2]=0;c[aS>>2]=0;i=j;return}axX(u,t,v|0,c[f+20>>2]|0,0);af=+g[(c[E>>2]|0)+1120>>2];L2933:do{if((a[f+24|0]&1)==0){Z=+g[R>>2];al=+g[O>>2];ag=+g[U>>2];V=1.0/+Q(+(Z*Z+al*al+ag*ag));g[w>>2]=Z*V;g[w+4>>2]=al*V;g[w+8>>2]=ag*V;g[w+12>>2]=0.0;bf=+g[u+56>>2];bg=2238}else{a7=c[aN>>2]|0;a2=c[aO>>2]|0;a1=l;a0=n;a3=p;c[10740]=(c[10740]|0)+1;a_=c[a7+28>>2]|0;if((a_|0)>0){aZ=a7+36|0;aY=s|0;a$=d+8|0;aW=d+12|0;aV=d+20|0;aU=d+24|0;aX=d+28|0;aT=d+36|0;bd=d+40|0;a6=d+44|0;be=l|0;bh=l+4|0;bi=l+8|0;bj=l+12|0;bk=w;V=3.4028234663852886e+38;bl=0;while(1){bm=c[aZ>>2]|0;ag=+g[bm+(bl*56|0)+40>>2];al=+g[bm+(bl*56|0)+44>>2];Z=+g[bm+(bl*56|0)+48>>2];ar=ag*+g[aV>>2]+al*+g[aU>>2]+Z*+g[aX>>2];ao=ag*+g[aT>>2]+al*+g[bd>>2]+Z*+g[a6>>2];g[be>>2]=ag*+g[aY>>2]+al*+g[a$>>2]+Z*+g[aW>>2];g[bh>>2]=ar;g[bi>>2]=ao;g[bj>>2]=0.0;if(!(aC2(a7,a2,s,aE,l,m)|0)){break L2933}ao=+g[m>>2];if(ao>2]=c[a1>>2];c[bk+4>>2]=c[a1+4>>2];c[bk+8>>2]=c[a1+8>>2];c[bk+12>>2]=c[a1+12>>2];bn=ao}else{bn=V}bm=bl+1|0;if((bm|0)<(a_|0)){V=bn;bl=bm}else{bo=bn;break}}}else{bo=3.4028234663852886e+38}bl=c[a2+28>>2]|0;if((bl|0)>0){a_=a2+36|0;a1=aE|0;bk=e+8|0;bj=e+12|0;bi=e+20|0;bh=e+24|0;aW=e+28|0;a$=e+36|0;aY=e+40|0;be=e+44|0;a6=n|0;bd=n+4|0;aT=n+8|0;aX=n+12|0;aU=w;V=bo;aV=0;while(1){aZ=c[a_>>2]|0;ao=+g[aZ+(aV*56|0)+40>>2];ar=+g[aZ+(aV*56|0)+44>>2];Z=+g[aZ+(aV*56|0)+48>>2];al=ao*+g[bi>>2]+ar*+g[bh>>2]+Z*+g[aW>>2];ag=ao*+g[a$>>2]+ar*+g[aY>>2]+Z*+g[be>>2];g[a6>>2]=ao*+g[a1>>2]+ar*+g[bk>>2]+Z*+g[bj>>2];g[bd>>2]=al;g[aT>>2]=ag;g[aX>>2]=0.0;if(!(aC2(a7,a2,s,aE,n,o)|0)){break L2933}ag=+g[o>>2];if(ag>2]=c[a0>>2];c[aU+4>>2]=c[a0+4>>2];c[aU+8>>2]=c[a0+8>>2];c[aU+12>>2]=c[a0+12>>2];bp=ag}else{bp=V}aZ=aV+1|0;if((aZ|0)<(bl|0)){V=bp;aV=aZ}else{bq=bp;break}}}else{bq=bo}aV=a7+48|0;bl=c[aV>>2]|0;if((bl|0)>0){a0=a7+56|0;aU=s|0;aX=d+8|0;aT=d+12|0;bd=d+20|0;bj=d+24|0;bk=d+28|0;a1=d+36|0;a6=d+40|0;be=d+44|0;aY=a2+48|0;a$=a2+56|0;aW=aE|0;bh=e+8|0;bi=e+12|0;a_=e+20|0;aZ=e+24|0;a4=e+28|0;bm=e+36|0;br=e+40|0;bs=e+44|0;bt=p|0;bu=p+4|0;bv=p+8|0;bw=p+12|0;bx=w;V=bq;by=0;bz=c[aY>>2]|0;bA=bl;while(1){bl=c[a0>>2]|0;ag=+g[bl+(by<<4)>>2];al=+g[bl+(by<<4)+4>>2];Z=+g[bl+(by<<4)+8>>2];ar=ag*+g[aU>>2]+al*+g[aX>>2]+Z*+g[aT>>2];ao=ag*+g[bd>>2]+al*+g[bj>>2]+Z*+g[bk>>2];at=ag*+g[a1>>2]+al*+g[a6>>2]+Z*+g[be>>2];if((bz|0)>0){Z=V;bl=0;while(1){bB=c[a$>>2]|0;al=+g[bB+(bl<<4)>>2];ag=+g[bB+(bl<<4)+4>>2];ay=+g[bB+(bl<<4)+8>>2];W=al*+g[aW>>2]+ag*+g[bh>>2]+ay*+g[bi>>2];ae=al*+g[a_>>2]+ag*+g[aZ>>2]+ay*+g[a4>>2];Y=al*+g[bm>>2]+ag*+g[br>>2]+ay*+g[bs>>2];ay=ao*Y-at*ae;ag=at*W-ar*Y;Y=ar*ae-ao*W;g[bt>>2]=ay;g[bu>>2]=ag;g[bv>>2]=Y;g[bw>>2]=0.0;do{if(+P(+ay)>1.0e-6){bg=2222}else{if(+P(+ag)>1.0e-6){bg=2222;break}if(+P(+Y)>1.0e-6){bg=2222}else{bC=Z}}}while(0);do{if((bg|0)==2222){bg=0;W=1.0/+Q(+(ay*ay+ag*ag+Y*Y));g[bt>>2]=ay*W;g[bu>>2]=ag*W;g[bv>>2]=Y*W;if(!(aC2(a7,a2,s,aE,p,q)|0)){break L2933}W=+g[q>>2];if(W>=Z){bC=Z;break}c[bx>>2]=c[a3>>2];c[bx+4>>2]=c[a3+4>>2];c[bx+8>>2]=c[a3+8>>2];c[bx+12>>2]=c[a3+12>>2];bC=W}}while(0);bB=bl+1|0;bD=c[aY>>2]|0;if((bB|0)<(bD|0)){Z=bC;bl=bB}else{break}}bE=bC;bF=bD;bG=c[aV>>2]|0}else{bE=V;bF=bz;bG=bA}bl=by+1|0;if((bl|0)<(bG|0)){V=bE;by=bl;bz=bF;bA=bG}else{break}}}bA=w|0;V=+g[bA>>2];bz=w+4|0;Z=+g[bz>>2];by=w+8|0;ao=+g[by>>2];if((+g[e+52>>2]- +g[d+52>>2])*V+(+g[e+56>>2]- +g[d+56>>2])*Z+(+g[e+60>>2]- +g[d+60>>2])*ao<=0.0){bf=0.0;bg=2238;break}g[bA>>2]=-0.0-V;g[bz>>2]=-0.0-Z;g[by>>2]=-0.0-ao;g[w+12>>2]=0.0;bf=0.0;bg=2238}}while(0);do{if((bg|0)==2238){aS=c[aN>>2]|0;aR=c[aO>>2]|0;ao=bf-af;aQ=h|0;aP=c[aR+28>>2]|0;if((aP|0)<=0){break}by=c[aR+36>>2]|0;bz=aE|0;Z=+g[bz>>2];bA=e+8|0;V=+g[bA>>2];aV=e+12|0;ar=+g[aV>>2];aY=e+20|0;at=+g[aY>>2];a3=e+24|0;Y=+g[a3>>2];bx=e+28|0;ag=+g[bx>>2];a2=e+36|0;ay=+g[a2>>2];a7=e+40|0;W=+g[a7>>2];bv=e+44|0;ae=+g[bv>>2];al=+g[w>>2];az=+g[w+4>>2];aA=+g[w+8>>2];bu=0;as=-3.4028234663852886e+38;bt=-1;while(1){_=+g[by+(bu*56|0)+40>>2];$=+g[by+(bu*56|0)+44>>2];aa=+g[by+(bu*56|0)+48>>2];ap=(_*Z+$*V+aa*ar)*al+(_*at+$*Y+aa*ag)*az+(_*ay+$*W+aa*ae)*aA;bw=ap>as;bH=bw?bu:bt;bs=bu+1|0;if((bs|0)<(aP|0)){bu=bs;as=bw?ap:as;bt=bH}else{break}}if((bH|0)<0){break}bt=k+16|0;a[bt]=1;bu=k+12|0;c[bu>>2]=0;aP=k+4|0;c[aP>>2]=0;bw=k+8|0;c[bw>>2]=0;bs=c[by+(bH*56|0)+4>>2]|0;L2983:do{if((bs|0)>0){br=by+(bH*56|0)+12|0;bm=aR+16|0;a4=e+52|0;aZ=e+56|0;a_=e+60|0;bi=0;bh=0;aW=0;as=Z;aA=V;az=ar;al=at;ap=Y;aa=ag;$=ay;_=W;an=ae;a$=0;while(1){be=c[(c[br>>2]|0)+(bi<<2)>>2]|0;a6=c[bm>>2]|0;ak=+g[a6+(be<<4)>>2];aq=+g[a6+(be<<4)+4>>2];am=+g[a6+(be<<4)+8>>2];X=+g[a4>>2]+(as*ak+aA*aq+az*am);aj=+g[aZ>>2]+(ak*al+aq*ap+am*aa);ai=+g[a_>>2]+(ak*$+aq*_+am*an);do{if((bh|0)==(aW|0)){be=(aW|0)==0?1:aW<<1;if((aW|0)>=(be|0)){bI=aW;bJ=a$;break}do{if((be|0)==0){bK=0}else{c[9806]=(c[9806]|0)+1;a6=aDx((be<<4|4)+15|0)|0;if((a6|0)==0){bK=0;break}a1=-(a6+4|0)&15;c[a6+a1>>2]=a6;bK=a6+(a1+4)|0}}while(0);if((aW|0)>0){a1=0;do{a6=bK+(a1<<4)|0;if((a6|0)!=0){bk=a6;a6=(c[bu>>2]|0)+(a1<<4)|0;c[bk>>2]=c[a6>>2];c[bk+4>>2]=c[a6+4>>2];c[bk+8>>2]=c[a6+8>>2];c[bk+12>>2]=c[a6+12>>2]}a1=a1+1|0;}while((a1|0)<(aW|0));bL=c[bu>>2]|0}else{bL=a$}if((bL|0)!=0){if((a[bt]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bL-16+12>>2]|0)}c[bu>>2]=0}a[bt]=1;c[bu>>2]=bK;c[bw>>2]=be;bI=c[aP>>2]|0;bJ=bK}else{bI=bh;bJ=a$}}while(0);a1=bJ+(bI<<4)|0;if((a1|0)==0){bM=bI}else{g[a1>>2]=X;g[bJ+(bI<<4)+4>>2]=aj;g[bJ+(bI<<4)+8>>2]=ai;g[bJ+(bI<<4)+12>>2]=0.0;bM=c[aP>>2]|0}a1=bM+1|0;c[aP>>2]=a1;a6=bi+1|0;if((a6|0)>=(bs|0)){break L2983}bi=a6;bh=a1;aW=c[bw>>2]|0;as=+g[bz>>2];aA=+g[bA>>2];az=+g[aV>>2];al=+g[aY>>2];ap=+g[a3>>2];aa=+g[bx>>2];$=+g[a2>>2];_=+g[a7>>2];an=+g[bv>>2];a$=bJ}}}while(0);aC3(w,aS,s,k,ao,af,aQ);bv=c[bu>>2]|0;if((bv|0)!=0){if((a[bt]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[bv-16+12>>2]|0)}c[bu>>2]=0}a[bt]=1;c[bu>>2]=0;c[aP>>2]=0;c[bw>>2]=0}}while(0);if((a[b+16|0]&1)==0){i=j;return}aO=c[F>>2]|0;if((c[aO+1116>>2]|0)==0){i=j;return}if((c[aO+1108>>2]|0)==(c[h+136>>2]|0)){ay6(aO,h+8|0,h+72|0);i=j;return}else{ay6(aO,h+72|0,h+8|0);i=j;return}}}while(0);k=f+20|0;axX(u,t,h|0,c[k>>2]|0,0);f=b+28|0;L3035:do{if((c[f>>2]|0)!=0){if((c[(c[F>>2]|0)+1116>>2]|0)>=(c[b+32>>2]|0)){break}bf=+g[R>>2];bE=+g[O>>2];bC=+g[U>>2];bq=1.0/+Q(+(bf*bf+bE*bE+bC*bC));bo=bf*bq;bf=bE*bq;bE=bC*bq;if(+P(+bE)>.7071067690849304){bq=1.0/+Q(+(bE*bE+bf*bf));bN=0.0;bO=bq*(-0.0-bE);bP=bf*bq}else{bq=1.0/+Q(+(bo*bo+bf*bf));bN=bq*(-0.0-bf);bO=bo*bq;bP=0.0}bq=+dh[c[(c[I>>2]|0)+16>>2]&1023](I);bC=+dh[c[(c[G>>2]|0)+16>>2]&1023](G);w=bq>2]=c[L>>2];c[bJ+4>>2]=c[L+4>>2];c[bJ+8>>2]=c[L+8>>2];c[bJ+12>>2]=c[L+12>>2];bM=A;c[bM>>2]=c[aC>>2];c[bM+4>>2]=c[aC+4>>2];c[bM+8>>2]=c[aC+8>>2];c[bM+12>>2]=c[aC+12>>2];bM=B;c[bM>>2]=c[aB>>2];c[bM+4>>2]=c[aB+4>>2];c[bM+8>>2]=c[aB+8>>2];c[bM+12>>2]=c[aB+12>>2];bM=C;c[bM>>2]=c[r>>2];c[bM+4>>2]=c[r+4>>2];c[bM+8>>2]=c[r+8>>2];c[bM+12>>2]=c[r+12>>2]}else{c[bJ>>2]=c[aF>>2];c[bJ+4>>2]=c[aF+4>>2];c[bJ+8>>2]=c[aF+8>>2];c[bJ+12>>2]=c[aF+12>>2];bM=A;c[bM>>2]=c[aH>>2];c[bM+4>>2]=c[aH+4>>2];c[bM+8>>2]=c[aH+8>>2];c[bM+12>>2]=c[aH+12>>2];bM=B;c[bM>>2]=c[aJ>>2];c[bM+4>>2]=c[aJ+4>>2];c[bM+8>>2]=c[aJ+8>>2];c[bM+12>>2]=c[aJ+12>>2];bM=C;c[bM>>2]=c[aL>>2];c[bM+4>>2]=c[aL+4>>2];c[bM+8>>2]=c[aL+8>>2];c[bM+12>>2]=c[aL+12>>2]}bM=c[f>>2]|0;if((bM|0)<=0){break}bC=bP*bP+(bO*bO+bN*bN);bq=bp>.39269909262657166?.19634954631328583:bp*.5;bp=bE*bE+(bo*bo+bf*bf);bI=s|0;bK=d+20|0;bL=d+36|0;bH=d+8|0;bg=d+24|0;bG=d+40|0;bF=d+12|0;bD=d+28|0;q=d+44|0;p=t|0;o=t+4|0;n=t+8|0;m=t+12|0;l=t+16|0;E=t+20|0;v=t+24|0;y=t+28|0;x=t+32|0;bb=t+36|0;bc=t+40|0;ba=t+44|0;a9=D|0;a8=D+144|0;a5=D+160|0;M=D+164|0;K=D+180|0;aO=D+196|0;aN=D+212|0;bv=D+228|0;a7=D+244|0;a2=D+260|0;bx=D+276|0;a3=D+292|0;aY=D+308|0;aV=A;bA=D+324|0;bz=B;bs=D+340|0;aR=C;by=D+356|0;a$=w&1;aW=D+360|0;bh=D|0;bi=aE|0;a_=e+20|0;aZ=e+36|0;a4=e+8|0;bm=e+24|0;br=e+40|0;a1=e+12|0;a6=e+28|0;bk=e+44|0;bj=t+64|0;bd=t+68|0;aT=t+72|0;aX=t+76|0;aU=t+80|0;a0=t+84|0;bl=t+88|0;bB=t+92|0;bQ=t+96|0;bR=t+100|0;bS=t+104|0;bT=t+108|0;if(bC<=1.1920928955078125e-7){if(w){bU=0;while(1){bU=bU+1|0;if((bU|0)>=(bM|0)){break L3035}}}else{bU=0;while(1){bU=bU+1|0;if((bU|0)>=(bM|0)){break L3035}}}}bn=+Q(+bC);af=+T(+bq)/bn;bn=bN*af;ae=bO*af;W=bP*af;af=+S(+bq);ay=+Q(+bp);if(w){bU=0;bV=bM;do{ag=+(bU|0)*(6.2831854820251465/+(bV|0))*.5;Y=+T(+ag)/ay;at=bo*Y;ar=bf*Y;V=bE*Y;Y=+S(+ag);ag=-0.0-at;Z=-0.0-ar;an=-0.0-V;_=W*Z+(bn*Y+af*ag)-ae*an;$=bn*an+(ae*Y+af*Z)-W*ag;aa=ae*ag+(W*Y+af*an)-bn*Z;ap=af*Y-bn*ag-ae*Z-W*an;an=V*$+(at*ap+Y*_)-ar*aa;Z=at*aa+(Y*$+ar*ap)-V*_;ag=ar*_+(V*ap+Y*aa)-at*$;al=Y*ap-at*_-ar*$-V*aa;aa=2.0/(al*al+(ag*ag+(an*an+Z*Z)));V=an*aa;$=Z*aa;ar=ag*aa;aa=al*V;_=al*$;at=al*ar;al=an*V;V=an*$;ap=an*ar;an=Z*$;$=Z*ar;Z=ag*ar;ar=1.0-(an+Z);ag=V-at;Y=ap+_;az=V+at;at=1.0-(al+Z);Z=$-aa;V=ap-_;_=$+aa;aa=1.0-(al+an);an=+g[bI>>2];al=+g[bK>>2];$=+g[bL>>2];ap=+g[bH>>2];aA=+g[bg>>2];as=+g[bG>>2];am=+g[bF>>2];aq=+g[bD>>2];ak=+g[q>>2];g[p>>2]=$*Y+(al*ag+an*ar);g[o>>2]=ar*ap+ag*aA+Y*as;g[n>>2]=ar*am+ag*aq+Y*ak;g[m>>2]=0.0;g[l>>2]=$*Z+(an*az+al*at);g[E>>2]=az*ap+at*aA+Z*as;g[v>>2]=az*am+at*aq+Z*ak;g[y>>2]=0.0;g[x>>2]=an*V+al*_+$*aa;g[bb>>2]=V*ap+_*aA+aa*as;g[bc>>2]=V*am+_*aq+aa*ak;g[ba>>2]=0.0;c[aF>>2]=c[aG>>2];c[aF+4>>2]=c[aG+4>>2];c[aF+8>>2]=c[aG+8>>2];c[aF+12>>2]=c[aG+12>>2];c[aH>>2]=c[aI>>2];c[aH+4>>2]=c[aI+4>>2];c[aH+8>>2]=c[aI+8>>2];c[aH+12>>2]=c[aI+12>>2];c[aJ>>2]=c[aK>>2];c[aJ+4>>2]=c[aK+4>>2];c[aJ+8>>2]=c[aK+8>>2];c[aJ+12>>2]=c[aK+12>>2];c[aL>>2]=c[aM>>2];c[aL+4>>2]=c[aM+4>>2];c[aL+8>>2]=c[aM+8>>2];c[aL+12>>2]=c[aM+12>>2];bW=c[k>>2]|0;aDD(a8|0,-1|0,16);c[a9>>2]=21040;c[a5>>2]=h;c[M>>2]=c[L>>2];c[M+4>>2]=c[L+4>>2];c[M+8>>2]=c[L+8>>2];c[M+12>>2]=c[L+12>>2];c[K>>2]=c[aC>>2];c[K+4>>2]=c[aC+4>>2];c[K+8>>2]=c[aC+8>>2];c[K+12>>2]=c[aC+12>>2];c[aO>>2]=c[aB>>2];c[aO+4>>2]=c[aB+4>>2];c[aO+8>>2]=c[aB+8>>2];c[aO+12>>2]=c[aB+12>>2];c[aN>>2]=c[r>>2];c[aN+4>>2]=c[r+4>>2];c[aN+8>>2]=c[r+8>>2];c[aN+12>>2]=c[r+12>>2];c[bv>>2]=c[aF>>2];c[bv+4>>2]=c[aF+4>>2];c[bv+8>>2]=c[aF+8>>2];c[bv+12>>2]=c[aF+12>>2];c[a7>>2]=c[aH>>2];c[a7+4>>2]=c[aH+4>>2];c[a7+8>>2]=c[aH+8>>2];c[a7+12>>2]=c[aH+12>>2];c[a2>>2]=c[aJ>>2];c[a2+4>>2]=c[aJ+4>>2];c[a2+8>>2]=c[aJ+8>>2];c[a2+12>>2]=c[aJ+12>>2];c[bx>>2]=c[aL>>2];c[bx+4>>2]=c[aL+4>>2];c[bx+8>>2]=c[aL+8>>2];c[bx+12>>2]=c[aL+12>>2];c[a3>>2]=c[bJ>>2];c[a3+4>>2]=c[bJ+4>>2];c[a3+8>>2]=c[bJ+8>>2];c[a3+12>>2]=c[bJ+12>>2];c[aY>>2]=c[aV>>2];c[aY+4>>2]=c[aV+4>>2];c[aY+8>>2]=c[aV+8>>2];c[aY+12>>2]=c[aV+12>>2];c[bA>>2]=c[bz>>2];c[bA+4>>2]=c[bz+4>>2];c[bA+8>>2]=c[bz+8>>2];c[bA+12>>2]=c[bz+12>>2];c[bs>>2]=c[aR>>2];c[bs+4>>2]=c[aR+4>>2];c[bs+8>>2]=c[aR+8>>2];c[bs+12>>2]=c[aR+12>>2];a[by]=a$;c[aW>>2]=bW;axX(u,t,bh,bW,0);bV=c[f>>2]|0;bU=bU+1|0;}while((bU|0)<(bV|0))}else{bV=0;bU=bM;do{bp=+(bV|0)*(6.2831854820251465/+(bU|0))*.5;bq=+T(+bp)/ay;bC=bo*bq;ak=bf*bq;aa=bE*bq;bq=+S(+bp);c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];c[aC>>2]=c[H>>2];c[aC+4>>2]=c[H+4>>2];c[aC+8>>2]=c[H+8>>2];c[aC+12>>2]=c[H+12>>2];c[aB>>2]=c[N>>2];c[aB+4>>2]=c[N+4>>2];c[aB+8>>2]=c[N+8>>2];c[aB+12>>2]=c[N+12>>2];c[r>>2]=c[aD>>2];c[r+4>>2]=c[aD+4>>2];c[r+8>>2]=c[aD+8>>2];c[r+12>>2]=c[aD+12>>2];bp=-0.0-bC;aq=-0.0-ak;_=-0.0-aa;am=W*aq+(bn*bq+af*bp)-ae*_;V=bn*_+(ae*bq+af*aq)-W*bp;as=ae*bp+(W*bq+af*_)-bn*aq;aA=af*bq-bn*bp-ae*aq-W*_;_=aa*V+(bC*aA+bq*am)-ak*as;aq=bC*as+(bq*V+ak*aA)-aa*am;bp=ak*am+(aa*aA+bq*as)-bC*V;ap=bq*aA-bC*am-ak*V-aa*as;as=2.0/(ap*ap+(bp*bp+(_*_+aq*aq)));aa=_*as;V=aq*as;ak=bp*as;as=ap*aa;am=ap*V;bC=ap*ak;ap=_*aa;aa=_*V;aA=_*ak;_=aq*V;V=aq*ak;aq=bp*ak;ak=1.0-(_+aq);bp=aa-bC;bq=aA+am;$=aa+bC;bC=1.0-(ap+aq);aq=V-as;aa=aA-am;am=V+as;as=1.0-(ap+_);_=+g[bi>>2];ap=+g[a_>>2];V=+g[aZ>>2];aA=+g[a4>>2];al=+g[bm>>2];an=+g[br>>2];Z=+g[a1>>2];at=+g[a6>>2];az=+g[bk>>2];g[bj>>2]=V*bq+(ap*bp+_*ak);g[bd>>2]=ak*aA+bp*al+bq*an;g[aT>>2]=ak*Z+bp*at+bq*az;g[aX>>2]=0.0;g[aU>>2]=V*aq+(_*$+ap*bC);g[a0>>2]=$*aA+bC*al+aq*an;g[bl>>2]=$*Z+bC*at+aq*az;g[bB>>2]=0.0;g[bQ>>2]=_*aa+ap*am+V*as;g[bR>>2]=aa*aA+am*al+as*an;g[bS>>2]=aa*Z+am*at+as*az;g[bT>>2]=0.0;ba=c[k>>2]|0;aDD(a8|0,-1|0,16);c[a9>>2]=21040;c[a5>>2]=h;c[M>>2]=c[L>>2];c[M+4>>2]=c[L+4>>2];c[M+8>>2]=c[L+8>>2];c[M+12>>2]=c[L+12>>2];c[K>>2]=c[aC>>2];c[K+4>>2]=c[aC+4>>2];c[K+8>>2]=c[aC+8>>2];c[K+12>>2]=c[aC+12>>2];c[aO>>2]=c[aB>>2];c[aO+4>>2]=c[aB+4>>2];c[aO+8>>2]=c[aB+8>>2];c[aO+12>>2]=c[aB+12>>2];c[aN>>2]=c[r>>2];c[aN+4>>2]=c[r+4>>2];c[aN+8>>2]=c[r+8>>2];c[aN+12>>2]=c[r+12>>2];c[bv>>2]=c[aF>>2];c[bv+4>>2]=c[aF+4>>2];c[bv+8>>2]=c[aF+8>>2];c[bv+12>>2]=c[aF+12>>2];c[a7>>2]=c[aH>>2];c[a7+4>>2]=c[aH+4>>2];c[a7+8>>2]=c[aH+8>>2];c[a7+12>>2]=c[aH+12>>2];c[a2>>2]=c[aJ>>2];c[a2+4>>2]=c[aJ+4>>2];c[a2+8>>2]=c[aJ+8>>2];c[a2+12>>2]=c[aJ+12>>2];c[bx>>2]=c[aL>>2];c[bx+4>>2]=c[aL+4>>2];c[bx+8>>2]=c[aL+8>>2];c[bx+12>>2]=c[aL+12>>2];c[a3>>2]=c[bJ>>2];c[a3+4>>2]=c[bJ+4>>2];c[a3+8>>2]=c[bJ+8>>2];c[a3+12>>2]=c[bJ+12>>2];c[aY>>2]=c[aV>>2];c[aY+4>>2]=c[aV+4>>2];c[aY+8>>2]=c[aV+8>>2];c[aY+12>>2]=c[aV+12>>2];c[bA>>2]=c[bz>>2];c[bA+4>>2]=c[bz+4>>2];c[bA+8>>2]=c[bz+8>>2];c[bA+12>>2]=c[bz+12>>2];c[bs>>2]=c[aR>>2];c[bs+4>>2]=c[aR+4>>2];c[bs+8>>2]=c[aR+8>>2];c[bs+12>>2]=c[aR+12>>2];a[by]=a$;c[aW>>2]=ba;axX(u,t,bh,ba,0);bU=c[f>>2]|0;bV=bV+1|0;}while((bV|0)<(bU|0))}}}while(0);if((a[b+16|0]&1)==0){i=j;return}b=c[F>>2]|0;if((c[b+1116>>2]|0)==0){i=j;return}if((c[b+1108>>2]|0)==(c[h+136>>2]|0)){ay6(b,h+8|0,h+72|0);i=j;return}else{ay6(b,h+72|0,h+8|0);i=j;return}}function aCA(a){a=a|0;return}function aCB(a){a=a|0;return}function aCC(a,b,c){a=a|0;b=b|0;c=c|0;return}function aCD(a,b,c){a=a|0;b=b|0;c=c|0;return}function aCE(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return}function aCF(a,d,e,f,h){a=a|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0;h=i;i=i+1216|0;f=h|0;a=h+56|0;j=h+232|0;k=h+592|0;l=h+608|0;m=h+664|0;n=h+840|0;o=h+1200|0;p=d+68|0;q=d+4|0;r=+g[d+116>>2]- +g[d+52>>2];s=+g[d+120>>2]- +g[d+56>>2];t=+g[d+124>>2]- +g[d+60>>2];u=e+68|0;v=e+4|0;w=+g[e+116>>2]- +g[e+52>>2];x=+g[e+120>>2]- +g[e+56>>2];y=+g[e+124>>2]- +g[e+60>>2];z=+g[d+248>>2];do{if(r*r+s*s+t*t>2];if(w*w+x*x+y*y>2]|0;y=+g[e+244>>2];c[f+8>>2]=0;g[f+12>>2]=1.0;g[f+16>>2]=1.0;g[f+20>>2]=1.0;g[f+24>>2]=0.0;c[f>>2]=25528;c[f+4>>2]=8;g[f+28>>2]=y;g[f+44>>2]=y;c[a>>2]=19544;D=a+164|0;g[D>>2]=999999984306749400.0;c[a+168>>2]=0;g[a+172>>2]=0.0;g[j+308>>2]=9999999747378752.0e-20;b[j+332>>1]=0;c[k>>2]=24816;c[k+4>>2]=j;c[k+8>>2]=C;c[k+12>>2]=f;do{if(aCV(k,q,p,v,u,a)|0){f=d+240|0;y=+g[D>>2];if(+g[f>>2]>y){g[f>>2]=y}f=e+240|0;if(+g[f>>2]>y){g[f>>2]=y}if(y>=1.0){E=1.0;break}E=y}else{E=1.0}}while(0);D=c[e+192>>2]|0;y=+g[d+244>>2];c[l+8>>2]=0;g[l+12>>2]=1.0;g[l+16>>2]=1.0;g[l+20>>2]=1.0;g[l+24>>2]=0.0;c[l>>2]=25528;c[l+4>>2]=8;g[l+28>>2]=y;g[l+44>>2]=y;c[m>>2]=19544;a=m+164|0;g[a>>2]=999999984306749400.0;c[m+168>>2]=0;g[m+172>>2]=0.0;g[n+308>>2]=9999999747378752.0e-20;b[n+332>>1]=0;c[o>>2]=24816;c[o+4>>2]=n;c[o+8>>2]=l;c[o+12>>2]=D;if(!(aCV(o,q,p,v,u,m)|0)){B=E;i=h;return+B}m=d+240|0;y=+g[a>>2];if(+g[m>>2]>y){g[m>>2]=y}m=e+240|0;if(+g[m>>2]>y){g[m>>2]=y}if(E<=y){B=E;i=h;return+B}B=y;i=h;return+B}function aCG(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+20|0;if((c[e>>2]|0)==0){return}if((a[b+16|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aCH(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;f=d|0;e=c[f>>2]|0;g=dj[c[(c[e>>2]|0)+56>>2]&511](e,36)|0;if((g|0)==0){h=0;i=h|0;return i|0}e=c[d+4>>2]|0;d=c[b+12>>2]|0;j=c[b+8>>2]|0;k=c[b+16>>2]|0;l=c[b+20>>2]|0;b=g;c[b>>2]=22536;c[g+4>>2]=c[f>>2];c[b>>2]=21656;c[g+8>>2]=d;c[g+12>>2]=j;a[g+16|0]=0;c[g+20>>2]=e;a[g+24|0]=0;c[g+28>>2]=k;c[g+32>>2]=l;h=g;i=h|0;return i|0}function aCI(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCJ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=+f;var h=0,j=0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0,Q=0,R=0,S=0,T=0,U=0;h=i;i=i+16|0;j=h|0;k=+g[d>>2];l=+g[d+4>>2];m=+g[d+8>>2];n=+g[e>>2];o=k*f+n;p=+g[e+4>>2];q=l*f+p;r=+g[e+8>>2];s=m*f+r;e=b+292|0;if((a[b+356|0]&1)==0){f=+g[b+228>>2];t=+g[b+244>>2];u=+g[b+260>>2];v=+g[b+232>>2];w=+g[b+248>>2];x=+g[b+264>>2];y=+g[b+236>>2];z=+g[b+252>>2];A=+g[b+268>>2];B=-0.0- +g[b+276>>2];C=-0.0- +g[b+280>>2];D=-0.0- +g[b+284>>2];E=f*B+t*C+u*D;F=v*B+w*C+x*D;G=y*B+z*C+A*D;D=+g[e>>2];C=+g[b+296>>2];B=+g[b+300>>2];H=+g[b+308>>2];I=+g[b+312>>2];J=+g[b+316>>2];K=+g[b+324>>2];L=+g[b+328>>2];M=+g[b+332>>2];N=r*(u*D+x*C+A*B)+(n*(f*D+v*C+y*B)+p*(t*D+w*C+z*B))+(B*G+(D*E+C*F)+ +g[b+340>>2]);C=r*(u*H+x*I+A*J)+(n*(f*H+v*I+y*J)+p*(t*H+w*I+z*J))+(E*H+F*I+G*J+ +g[b+344>>2]);J=E*K+F*L+G*M+ +g[b+348>>2]+(r*(u*K+x*L+A*M)+(n*(f*K+v*L+y*M)+p*(t*K+w*L+z*M)));g[j>>2]=N;g[j+4>>2]=C;g[j+8>>2]=J;g[j+12>>2]=0.0;O=(o-N)*k+(q-C)*l+(s-J)*m;P=b+160|0;Q=c[P>>2]|0;R=Q;S=c[R>>2]|0;T=S+16|0;U=c[T>>2]|0;dw[U&127](Q,d,j,O);i=h;return}else{J=+g[b+164>>2];C=+g[b+180>>2];N=+g[b+196>>2];M=+g[b+168>>2];z=+g[b+184>>2];L=+g[b+200>>2];w=+g[b+172>>2];K=+g[b+188>>2];t=+g[b+204>>2];y=-0.0- +g[b+212>>2];v=-0.0- +g[b+216>>2];f=-0.0- +g[b+220>>2];A=J*y+C*v+N*f;x=M*y+z*v+L*f;u=w*y+K*v+t*f;f=+g[e>>2];v=+g[b+296>>2];y=+g[b+300>>2];G=+g[b+308>>2];F=+g[b+312>>2];E=+g[b+316>>2];I=+g[b+324>>2];H=+g[b+328>>2];D=+g[b+332>>2];B=s*(N*f+L*v+t*y)+(o*(J*f+M*v+w*y)+q*(C*f+z*v+K*y))+(y*u+(f*A+v*x)+ +g[b+340>>2]);v=s*(N*G+L*F+t*E)+(o*(J*G+M*F+w*E)+q*(C*G+z*F+K*E))+(A*G+x*F+u*E+ +g[b+344>>2]);E=A*I+x*H+u*D+ +g[b+348>>2]+(s*(N*I+L*H+t*D)+(o*(J*I+M*H+w*D)+q*(C*I+z*H+K*D)));D=k*(B-n)+l*(v-p)+m*(E-r);g[j>>2]=B+k*D;g[j+4>>2]=v+l*D;g[j+8>>2]=E+m*D;g[j+12>>2]=0.0;O=D;P=b+160|0;Q=c[P>>2]|0;R=Q;S=c[R>>2]|0;T=S+16|0;U=c[T>>2]|0;dw[U&127](Q,d,j,O);i=h;return}}function aCK(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCL(b){b=b|0;var d=0,e=0;c[b>>2]=19920;do{if((a[b+8|0]&1)!=0){d=c[b+12>>2]|0;if((d|0)!=0){e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d)}if((b|0)!=0){break}return}}while(0);aDB(b);return}function aCM(b){b=b|0;var d=0,e=0;c[b>>2]=19920;if((a[b+8|0]&1)==0){return}d=c[b+12>>2]|0;if((d|0)==0){return}e=c[b+4>>2]|0;cv[c[(c[e>>2]|0)+16>>2]&2047](e,d);return}function aCN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+1.0}function aCO(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,Q=0.0,R=0.0,S=0.0,T=0,U=0.0,V=0,W=0.0,X=0,Y=0.0,Z=0.0,_=0.0,$=0.0,aa=0.0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0,al=0.0,am=0.0,an=0,ao=0;j=i;i=i+64|0;k=j|0;l=j+16|0;m=j+32|0;n=j+48|0;o=(a[b+16|0]&1)!=0;p=o?f:e;q=o?e:f;f=c[p+192>>2]|0;e=c[q+192>>2]|0;r=+g[p+4>>2];s=+g[p+8>>2];t=+g[p+12>>2];u=+g[p+20>>2];v=+g[p+24>>2];w=+g[p+28>>2];x=+g[p+36>>2];y=+g[p+40>>2];z=+g[p+44>>2];A=+g[p+52>>2];B=+g[p+56>>2];C=+g[p+60>>2];p=q+4|0;o=q+20|0;D=q+36|0;E=q+8|0;F=q+24|0;G=q+40|0;H=q+12|0;I=q+28|0;J=q+44|0;K=+g[p>>2];L=+g[o>>2];M=+g[D>>2];N=+g[E>>2];O=+g[F>>2];P=+g[G>>2];Q=+g[H>>2];R=+g[I>>2];S=+g[J>>2];T=q+52|0;U=-0.0- +g[T>>2];V=q+56|0;W=-0.0- +g[V>>2];X=q+60|0;Y=-0.0- +g[X>>2];Z=+g[d>>2];_=+g[d+4>>2];$=+g[d+8>>2];aa=+g[d+12>>2];ab=2.0/(Z*Z+_*_+$*$+aa*aa);ac=Z*ab;ad=_*ab;ae=$*ab;ab=aa*ac;af=aa*ad;ag=aa*ae;aa=Z*ac;ac=Z*ad;ah=Z*ae;Z=_*ad;ad=_*ae;_=$*ae;ae=1.0-(Z+_);$=ac-ag;ai=ah+af;aj=ac+ag;ag=1.0-(aa+_);_=ad-ab;ac=ah-af;af=ad+ab;ab=1.0-(aa+Z);Z=t*ac+(s*aj+r*ae);aa=t*af+(r*$+s*ag);ad=r*ai+s*_+t*ab;ah=w*ac+(v*aj+u*ae);ak=w*af+(u*$+v*ag);al=u*ai+v*_+w*ab;am=z*ac+(y*aj+x*ae);ae=z*af+(x*$+y*ag);ag=x*ai+y*_+z*ab;d=c[(c[f>>2]|0)+60>>2]|0;q=e+48|0;ab=-0.0- +g[q>>2];an=e+52|0;_=-0.0- +g[an>>2];ao=e+56|0;ai=-0.0- +g[ao>>2];g[l>>2]=(S*am+(Q*Z+R*ah))*ai+((M*am+(K*Z+L*ah))*ab+(P*am+(N*Z+O*ah))*_);g[l+4>>2]=(S*ae+(Q*aa+R*ak))*ai+((M*ae+(K*aa+L*ak))*ab+(P*ae+(N*aa+O*ak))*_);g[l+8>>2]=(S*ag+(Q*ad+R*al))*ai+((M*ag+(K*ad+L*al))*ab+(P*ag+(N*ad+O*al))*_);g[l+12>>2]=0.0;dA[d&511](k,f,l);_=+g[k>>2];al=+g[k+4>>2];ad=+g[k+8>>2];ag=A*K+B*L+C*M+(K*U+L*W+M*Y)+((r*K+u*L+x*M)*_+(s*K+v*L+y*M)*al+(t*K+w*L+z*M)*ad);M=A*N+B*O+C*P+(N*U+O*W+P*Y)+((r*N+u*O+x*P)*_+(s*N+v*O+y*P)*al+(t*N+w*O+z*P)*ad);P=A*Q+B*R+C*S+(Q*U+R*W+S*Y)+((r*Q+u*R+x*S)*_+(s*Q+v*R+y*S)*al+(t*Q+w*R+z*S)*ad);ad=+g[q>>2];S=+g[an>>2];z=+g[ao>>2];R=z*P+(ad*ag+S*M)- +g[e+64>>2];w=ag-ad*R;ad=M-S*R;S=P-z*R;z=+g[p>>2];P=+g[E>>2];M=+g[H>>2];ag=+g[T>>2];Q=+g[o>>2];t=+g[F>>2];al=+g[I>>2];y=+g[V>>2];v=+g[D>>2];s=+g[G>>2];_=+g[J>>2];x=+g[X>>2];X=c[b+12>>2]|0;b=R<+g[X+1120>>2];c[h+4>>2]=X;if(!b){i=j;return}u=+g[q>>2];r=+g[an>>2];Y=+g[ao>>2];W=u*+g[o>>2]+r*+g[F>>2]+Y*+g[I>>2];U=u*+g[D>>2]+r*+g[G>>2]+Y*+g[J>>2];g[m>>2]=+g[p>>2]*u+ +g[E>>2]*r+ +g[H>>2]*Y;g[m+4>>2]=W;g[m+8>>2]=U;g[m+12>>2]=0.0;g[n>>2]=ag+(M*S+(z*w+P*ad));g[n+4>>2]=y+(w*Q+ad*t+S*al);g[n+8>>2]=x+(w*v+ad*s+S*_);g[n+12>>2]=0.0;dw[c[(c[h>>2]|0)+16>>2]&127](h,m,n,R);i=j;return}function aCP(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,R=0.0,U=0.0;f=i;i=i+32|0;j=f|0;k=f+16|0;l=b+12|0;if((c[l>>2]|0)==0){i=f;return}m=(a[b+16|0]&1)!=0;n=c[(m?e:d)+192>>2]|0;o=c[(m?d:e)+192>>2]|0;g[j>>2]=0.0;g[j+4>>2]=0.0;g[j+8>>2]=0.0;g[j+12>>2]=1.0;aCO(b,j,d,e,h);j=h+4|0;do{if((c[(c[j>>2]|0)+1116>>2]|0)<(c[b+24>>2]|0)){m=o+48|0;p=o+56|0;q=+g[p>>2];if(+P(+q)>.7071067690849304){r=+g[o+52>>2];s=1.0/+Q(+(q*q+r*r));t=0.0;u=s*(-0.0-q);v=r*s}else{s=+g[m>>2];r=+g[o+52>>2];q=1.0/+Q(+(s*s+r*r));t=q*(-0.0-r);u=s*q;v=0.0}q=.019999999552965164/+dh[c[(c[n>>2]|0)+16>>2]&1023](n);s=+Q(+(v*v+(u*u+t*t)));r=q>.39269909262657166?.19634954631328583:q*.5;q=+T(+r)/s;s=t*q;w=u*q;x=v*q;q=+S(+r);y=b+20|0;z=c[y>>2]|0;if((z|0)<=0){break}A=o+52|0;B=k|0;C=k+4|0;D=k+8|0;E=k+12|0;F=0;G=z;do{r=+g[m>>2];H=+g[A>>2];I=+g[p>>2];J=+Q(+(r*r+H*H+I*I));K=+(F|0)*(6.2831854820251465/+(G|0))*.5;L=+T(+K)/J;J=r*L;r=H*L;H=I*L;L=+S(+K);K=-0.0-J;I=-0.0-r;M=-0.0-H;N=x*I+(s*L+q*K)-w*M;O=s*M+(w*L+q*I)-x*K;R=w*K+(x*L+q*M)-s*I;U=q*L-s*K-w*I-x*M;g[B>>2]=H*O+(J*U+L*N)-r*R;g[C>>2]=J*R+(L*O+r*U)-H*N;g[D>>2]=r*N+(H*U+L*R)-J*O;g[E>>2]=L*U-J*N-r*O-H*R;aCO(b,k,d,e,h);F=F+1|0;G=c[y>>2]|0;}while((F|0)<(G|0))}}while(0);if((a[b+8|0]&1)==0){i=f;return}if((c[(c[l>>2]|0)+1116>>2]|0)==0){i=f;return}l=c[j>>2]|0;if((c[l+1116>>2]|0)==0){i=f;return}if((c[l+1108>>2]|0)==(c[h+136>>2]|0)){ay6(l,h+8|0,h+72|0);i=f;return}else{ay6(l,h+72|0,h+8|0);i=f;return}}function aCQ(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=b+12|0;if((c[e>>2]|0)==0){return}if((a[b+8|0]&1)==0){return}b=d+4|0;f=c[b>>2]|0;g=d+8|0;do{if((f|0)==(c[g>>2]|0)){h=(f|0)==0?1:f<<1;if((f|0)>=(h|0)){i=f;break}if((h|0)==0){j=0;k=f}else{c[9806]=(c[9806]|0)+1;l=aDx((h<<2)+19|0)|0;if((l|0)==0){m=0}else{n=-(l+4|0)&15;c[l+n>>2]=l;m=l+(n+4)|0}j=m;k=c[b>>2]|0}n=d+12|0;if((k|0)>0){l=0;do{o=j+(l<<2)|0;if((o|0)!=0){c[o>>2]=c[(c[n>>2]|0)+(l<<2)>>2]}l=l+1|0;}while((l|0)<(k|0))}l=c[n>>2]|0;o=d+16|0;if((l|0)!=0){if((a[o]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[l-4>>2]|0)}c[n>>2]=0}a[o]=1;c[n>>2]=j;c[g>>2]=h;i=c[b>>2]|0}else{i=f}}while(0);f=(c[d+12>>2]|0)+(i<<2)|0;if((f|0)==0){p=i}else{c[f>>2]=c[e>>2];p=c[b>>2]|0}c[b>>2]=p+1;return}function aCR(a){a=a|0;aCU(a);if((a|0)==0){return}aDB(a);return}function aCS(a){a=a|0;return}function aCT(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;g[e>>2]=3.4028234663852886e+38;g[f>>2]=-3.4028234663852886e+38;h=c[a+8>>2]|0;if((h|0)>0){i=a+16|0;a=b|0;j=b+4|0;k=b+8|0;l=b+48|0;m=b+16|0;n=b+20|0;o=b+24|0;p=b+52|0;q=b+32|0;r=b+36|0;s=b+40|0;t=b+56|0;b=d|0;u=d+4|0;v=d+8|0;d=0;w=-3.4028234663852886e+38;while(1){x=c[i>>2]|0;y=+g[x+(d<<4)>>2];z=+g[x+(d<<4)+4>>2];A=+g[x+(d<<4)+8>>2];B=(+g[l>>2]+(+g[a>>2]*y+ +g[j>>2]*z+ +g[k>>2]*A))*+g[b>>2]+(+g[p>>2]+(y*+g[m>>2]+z*+g[n>>2]+A*+g[o>>2]))*+g[u>>2]+(+g[t>>2]+(y*+g[q>>2]+z*+g[r>>2]+A*+g[s>>2]))*+g[v>>2];if(B<+g[e>>2]){g[e>>2]=B;C=+g[f>>2]}else{C=w}if(B>C){g[f>>2]=B;D=B}else{D=C}x=d+1|0;if((x|0)<(h|0)){d=x;w=D}else{E=D;break}}}else{E=-3.4028234663852886e+38}D=+g[e>>2];if(D<=E){return}g[e>>2]=E;g[f>>2]=D;return}function aCU(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;c[b>>2]=23416;d=b+48|0;e=b+56|0;f=c[e>>2]|0;g=b+60|0;if((f|0)!=0){if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0}a[g]=1;c[e>>2]=0;c[d>>2]=0;c[b+52>>2]=0;d=b+28|0;azh(b+24|0,c[d>>2]|0);e=b+36|0;g=c[e>>2]|0;f=b+40|0;if((g|0)!=0){if((a[f]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[g-4>>2]|0)}c[e>>2]=0}a[f]=1;c[e>>2]=0;c[d>>2]=0;c[b+32>>2]=0;d=b+8|0;e=b+16|0;f=c[e>>2]|0;g=b+20|0;if((f|0)==0){a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}if((a[g]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[f-16+12>>2]|0)}c[e>>2]=0;a[g]=1;c[e>>2]=0;c[d>>2]=0;h=b+12|0;c[h>>2]=0;return}function aCV(d,e,f,h,j,k){d=d|0;e=e|0;f=f|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0,G=0,H=0,I=0,J=0,K=0.0,L=0.0,M=0.0,N=0.0,O=0,P=0.0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0.0,Z=0.0,_=0,$=0.0,aa=0,ab=0.0,ac=0.0,ad=0.0,ae=0.0,af=0.0,ag=0.0,ah=0.0,ai=0.0,aj=0.0,ak=0.0;l=i;i=i+280|0;m=l+16|0;n=l+64|0;o=l+144|0;p=d+4|0;q=c[p>>2]|0;a[q+312|0]=0;c[q>>2]=0;a[q+356|0]=1;g[q+292>>2]=999999984306749400.0;g[q+296>>2]=999999984306749400.0;g[q+300>>2]=999999984306749400.0;g[q+304>>2]=0.0;r=q+332|0;aDD(q+336|0,0,17);b[r>>1]=b[r>>1]&-16;r=e+48|0;q=f+48|0;s=r|0;t=f+52|0;u=e+52|0;v=f+56|0;f=e+56|0;w=h+48|0;x=j+48|0;y=w|0;z=j+52|0;A=h+52|0;B=j+56|0;j=h+56|0;C=+g[q>>2]- +g[s>>2]-(+g[x>>2]- +g[y>>2]);D=+g[t>>2]- +g[u>>2]-(+g[z>>2]- +g[A>>2]);E=+g[v>>2]- +g[f>>2]-(+g[B>>2]- +g[j>>2]);c[m>>2]=23960;F=m+36|0;g[F>>2]=999999984306749400.0;G=m+40|0;a[G]=0;H=c[d+8>>2]|0;I=c[d+12>>2]|0;d=c[p>>2]|0;c[n>>2]=23568;g[n+4>>2]=0.0;g[n+8>>2]=1.0;g[n+12>>2]=0.0;g[n+16>>2]=0.0;c[n+20>>2]=0;c[n+24>>2]=d;c[n+28>>2]=H;c[n+32>>2]=I;c[n+36>>2]=c[H+4>>2];c[n+40>>2]=c[I+4>>2];g[n+44>>2]=+dh[c[(c[H>>2]|0)+44>>2]&1023](H);g[n+48>>2]=+dh[c[(c[I>>2]|0)+44>>2]&1023](I);a[n+52|0]=0;c[n+60>>2]=-1;c[n+72>>2]=1;g[o+128>>2]=999999984306749400.0;c[o+132>>2]=0;I=o;H=e;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=o+16|0;I=e+16|0;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];I=o+32|0;H=e+32|0;c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];H=o+48|0;I=H;e=r;c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2];e=o+64|0;I=h;c[e>>2]=c[I>>2];c[e+4>>2]=c[I+4>>2];c[e+8>>2]=c[I+8>>2];c[e+12>>2]=c[I+12>>2];I=o+80|0;e=h+16|0;c[I>>2]=c[e>>2];c[I+4>>2]=c[e+4>>2];c[I+8>>2]=c[e+8>>2];c[I+12>>2]=c[e+12>>2];e=o+96|0;I=h+32|0;c[e>>2]=c[I>>2];c[e+4>>2]=c[I+4>>2];c[e+8>>2]=c[I+8>>2];c[e+12>>2]=c[I+12>>2];I=o+112|0;e=I;h=w;c[e>>2]=c[h>>2];c[e+4>>2]=c[h+4>>2];c[e+8>>2]=c[h+8>>2];c[e+12>>2]=c[h+12>>2];h=m|0;axX(n,o,h,0,0);e=(a[G]&1)==0;w=m+20|0;r=l|0;c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];if(e){J=0;i=l;return J|0}K=+g[F>>2];e=m+4|0;L=+g[e>>2];d=m+8|0;M=+g[d>>2];p=m+12|0;N=+g[p>>2];O=m+16|0;P=+g[O>>2];do{if(K>.0010000000474974513){m=k;Q=H|0;R=o+52|0;S=o+56|0;T=I|0;U=o+116|0;V=o+120|0;W=N;X=M;Y=L;Z=0.0;_=1;$=K;while(1){if((_|0)>32){J=0;aa=2583;break}ab=Z-$/(E*W+(D*X+C*Y));if(!(ab>=0.0&ab<=1.0&ab>Z)){J=0;aa=2588;break}cq[c[c[m>>2]>>2]&1023](k,ab);ac=1.0-ab;g[Q>>2]=ac*+g[s>>2]+ab*+g[q>>2];g[R>>2]=ac*+g[u>>2]+ab*+g[t>>2];g[S>>2]=ac*+g[f>>2]+ab*+g[v>>2];g[T>>2]=ac*+g[y>>2]+ab*+g[x>>2];g[U>>2]=ac*+g[A>>2]+ab*+g[z>>2];g[V>>2]=ac*+g[j>>2]+ab*+g[B>>2];axX(n,o,h,0,0);if((a[G]&1)==0){J=0;aa=2582;break}ac=+g[F>>2];if(ac<0.0){aa=2575;break}c[r>>2]=c[w>>2];c[r+4>>2]=c[w+4>>2];c[r+8>>2]=c[w+8>>2];c[r+12>>2]=c[w+12>>2];ad=+g[e>>2];ae=+g[d>>2];af=+g[p>>2];if(ac>.0010000000474974513){W=af;X=ae;Y=ad;Z=ab;_=_+1|0;$=ac}else{aa=2577;break}}if((aa|0)==2583){i=l;return J|0}else if((aa|0)==2582){i=l;return J|0}else if((aa|0)==2588){i=l;return J|0}else if((aa|0)==2577){ag=+g[O>>2];ah=af;ai=ae;aj=ad;ak=ab;break}else if((aa|0)==2575){g[k+164>>2]=ab;$=+g[d>>2];Z=+g[p>>2];Y=+g[O>>2];g[k+132>>2]=+g[e>>2];g[k+136>>2]=$;g[k+140>>2]=Z;g[k+144>>2]=Y;_=k+148|0;c[_>>2]=c[w>>2];c[_+4>>2]=c[w+4>>2];c[_+8>>2]=c[w+8>>2];c[_+12>>2]=c[w+12>>2];J=1;i=l;return J|0}}else{ag=P;ah=N;ai=M;aj=L;ak=0.0}}while(0);if(E*ah+(D*ai+C*aj)>=-0.0- +g[k+172>>2]){J=0;i=l;return J|0}g[k+164>>2]=ak;g[k+132>>2]=aj;g[k+136>>2]=ai;g[k+140>>2]=ah;g[k+144>>2]=ag;w=k+148|0;c[w>>2]=c[r>>2];c[w+4>>2]=c[r+4>>2];c[w+8>>2]=c[r+8>>2];c[w+12>>2]=c[r+12>>2];J=1;i=l;return J|0}function aCW(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aCX(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0.0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0.0,av=0,aw=0.0,ax=0.0,ay=0,az=0.0,aA=0.0,aB=0.0,aC=0.0,aD=0.0,aE=0.0,aF=0.0,aG=0,aH=0.0,aI=0.0,aJ=0.0,aK=0.0,aL=0.0,aM=0.0,aN=0,aO=0.0,aP=0.0,aQ=0.0,aR=0,aS=0.0,aT=0;e=i;i=i+176|0;f=e|0;h=e+16|0;j=e+64|0;k=e+80|0;l=e+88|0;m=e+152|0;n=e+168|0;c[a+348>>2]=a+220;c[a+352>>2]=a+252;c[a+356>>2]=a+284;o=a+316|0;c[a+360>>2]=o;p=a+364|0;c[p>>2]=4;q=a+368|0;c[q>>2]=0;r=a+376|0;c[r>>2]=0;s=b;t=a;u=c[s+4>>2]|0;c[t>>2]=c[s>>2];c[t+4>>2]=u;u=a+8|0;t=b+8|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=a+24|0;u=b+24|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];u=a+40|0;t=b+40|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=a+56|0;u=b+56|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];u=a+72|0;t=b+72|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=a+88|0;u=b+88|0;c[t>>2]=c[u>>2];c[t+4>>2]=c[u+4>>2];c[t+8>>2]=c[u+8>>2];c[t+12>>2]=c[u+12>>2];u=a+104|0;t=b+104|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];t=b+120|0;b=c[t+4>>2]|0;u=a+120|0;c[u>>2]=c[t>>2];c[u+4>>2]=b;b=a+144|0;g[b>>2]=0.0;u=a+180|0;c[u>>2]=0;t=a+128|0;s=t;v=d;c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];v=t|0;w=+g[v>>2];t=a+132|0;x=+g[t>>2];d=a+136|0;y=+g[d>>2];z=w*w+x*x+y*y;if(z>0.0){A=-0.0-y;B=-0.0-x;C=-0.0-w}else{A=0.0;B=0.0;C=1.0}D=a+164|0;g[D>>2]=0.0;c[p>>2]=3;E=a+148|0;c[E>>2]=o;c[u>>2]=1;aC_(a,C,B,A,o);g[D>>2]=1.0;D=(c[E>>2]|0)+16|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];s=l+48|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];s=l+32|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];s=l+16|0;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];s=l;c[s>>2]=c[D>>2];c[s+4>>2]=c[D+4>>2];c[s+8>>2]=c[D+8>>2];c[s+12>>2]=c[D+12>>2];D=m|0;s=a+128|0;E=j;o=f|0;u=f+4|0;F=f+8|0;G=f+12|0;H=h|0;I=h+4|0;J=h+8|0;K=h+12|0;L=h+16|0;M=h+20|0;N=h+24|0;O=h+28|0;P=h+32|0;R=h+36|0;S=h+40|0;T=h+44|0;U=j|0;V=j+4|0;W=j+8|0;j=m+12|0;X=m+4|0;Y=m+8|0;Z=1;A=z;_=1;z=0.0;L3333:while(1){$=c[q>>2]|0;aa=1-$|0;ab=a+148+($*36|0)|0;B=+g[v>>2];C=+g[t>>2];w=+g[d>>2];x=+Q(+(B*B+C*C+w*w));if(x<9999999747378752.0e-20){ac=2598;break}ad=a+148+($*36|0)+32|0;g[a+148+($*36|0)+16+(c[ad>>2]<<2)>>2]=0.0;ae=(c[p>>2]|0)-1|0;c[p>>2]=ae;c[a+148+($*36|0)+(c[ad>>2]<<2)>>2]=c[a+348+(ae<<2)>>2];ae=c[ad>>2]|0;c[ad>>2]=ae+1;aC_(a,-0.0-B,-0.0-C,-0.0-w,c[a+148+($*36|0)+(ae<<2)>>2]|0);ae=c[ad>>2]|0;af=c[a+148+($*36|0)+(ae-1<<2)>>2]|0;ag=af+16|0;ah=ag|0;ai=af+20|0;aj=af+24|0;af=0;while(1){if(af>>>0>=4){break}w=+g[ah>>2]- +g[l+(af<<4)>>2];C=+g[ai>>2]- +g[l+(af<<4)+4>>2];B=+g[aj>>2]- +g[l+(af<<4)+8>>2];if(w*w+C*C+B*B<9999999747378752.0e-20){ac=2602;break L3333}else{af=af+1|0}}af=l+(_<<4)|0;ak=ag;c[af>>2]=c[ak>>2];c[af+4>>2]=c[ak+4>>2];c[af+8>>2]=c[ak+8>>2];c[af+12>>2]=c[ak+12>>2];B=(+g[v>>2]*+g[ah>>2]+ +g[t>>2]*+g[ai>>2]+ +g[d>>2]*+g[aj>>2])/x;C=B>z?B:z;if(x-C-x*9999999747378752.0e-20<=0.0){ac=2604;break}c[n>>2]=0;do{if((ae|0)==2){al=+aC$((c[ab>>2]|0)+16|0,(c[a+148+($*36|0)+4>>2]|0)+16|0,D,n)}else if((ae|0)==3){al=+aC1((c[ab>>2]|0)+16|0,(c[a+148+($*36|0)+4>>2]|0)+16|0,(c[a+148+($*36|0)+8>>2]|0)+16|0,D,n)}else if((ae|0)==4){ak=c[ab>>2]|0;af=ak+16|0;am=c[a+148+($*36|0)+4>>2]|0;an=am+16|0;ao=c[a+148+($*36|0)+8>>2]|0;ap=ao+16|0;aq=c[a+148+($*36|0)+12>>2]|0;ar=aq+16|0;c[o>>2]=af;c[u>>2]=an;c[F>>2]=ap;c[G>>2]=ar;as=af|0;B=+g[as>>2];af=ar|0;w=+g[af>>2];y=B-w;at=ak+20|0;au=+g[at>>2];av=aq+20|0;aw=+g[av>>2];ax=au-aw;ay=ak+24|0;az=+g[ay>>2];ak=aq+24|0;aA=+g[ak>>2];aB=az-aA;g[H>>2]=y;g[I>>2]=ax;g[J>>2]=aB;g[K>>2]=0.0;aq=an|0;aC=+g[aq>>2];aD=aC-w;an=am+20|0;aE=+g[an>>2];aF=aE-aw;aG=am+24|0;aH=+g[aG>>2];aI=aH-aA;g[L>>2]=aD;g[M>>2]=aF;g[N>>2]=aI;g[O>>2]=0.0;am=ap|0;aJ=+g[am>>2];aK=aJ-w;ap=ao+20|0;aL=+g[ap>>2];aM=aL-aw;aN=ao+24|0;aO=+g[aN>>2];aP=aO-aA;g[P>>2]=aK;g[R>>2]=aM;g[S>>2]=aP;g[T>>2]=0.0;aQ=ax*aI*aK+aB*aD*aM-aM*aI*y-ax*aD*aP+aP*y*aF-aK*aB*aF;aF=aC-aJ;aJ=aE-aL;aL=aH-aO;aO=B-aC;aC=au-aE;aE=az-aH;if(aQ*(az*(aF*aC-aJ*aO)+(B*(aJ*aE-aL*aC)+au*(aL*aO-aF*aE)))>0.0|aQ==0.0){al=-1.0;break}aDD(E|0,0,12);c[k>>2]=0;ao=0;aE=-1.0;aF=ax;ax=aB;aB=y;y=w;w=aw;aw=aA;while(1){aR=c[18320+(ao<<2)>>2]|0;aA=+g[h+(aR<<4)+8>>2];aO=+g[h+(aR<<4)+4>>2];aL=+g[h+(aR<<4)>>2];do{if(aQ*((aF*aA-ax*aO)*y+w*(ax*aL-aA*aB)+(aO*aB-aF*aL)*aw)>0.0){au=+aC1(c[f+(ao<<2)>>2]|0,c[f+(aR<<2)>>2]|0,ar,U,k);if(!(aE<0.0|au>2]|0;c[n>>2]=((aT&2|0)==0?0:1<>2]=+g[U>>2];g[m+(aR<<2)>>2]=+g[V>>2];g[m+(c[18320+(aR<<2)>>2]<<2)>>2]=0.0;g[j>>2]=+g[W>>2];aS=au}else{aS=aE}}while(0);aR=ao+1|0;if(aR>>>0>=3){break}ao=aR;aE=aS;aF=+g[h+(aR<<4)+4>>2];ax=+g[h+(aR<<4)+8>>2];aB=+g[h+(aR<<4)>>2];y=+g[af>>2];w=+g[av>>2];aw=+g[ak>>2]}if(aS>=0.0){al=aS;break}c[n>>2]=15;aw=+g[ap>>2];w=+g[aG>>2];y=+g[af>>2];aB=+g[aN>>2];ax=+g[aq>>2];aF=+g[av>>2];aE=+g[am>>2];aL=+g[ak>>2];aO=+g[an>>2];aA=(aw*w*y+aB*ax*aF-aF*w*aE-aw*ax*aL+aL*aE*aO-y*aB*aO)/aQ;g[D>>2]=aA;au=+g[at>>2];aC=+g[ay>>2];aJ=+g[as>>2];B=(au*aB*y+aC*aE*aF-aF*aB*aJ-au*aE*aL+aL*aJ*aw-y*aC*aw)/aQ;g[X>>2]=B;aw=(aO*aC*y+w*aJ*aF-aF*aC*ax-aO*aJ*aL+aL*ax*au-y*w*au)/aQ;g[Y>>2]=aw;g[j>>2]=1.0-(aw+(aA+B));al=0.0}else{al=A}}while(0);if(al<0.0){ac=2625;break}ab=a+148+(aa*36|0)+32|0;c[ab>>2]=0;aDD(s|0,0,16);c[q>>2]=aa;ae=c[ad>>2]|0;aj=c[n>>2]|0;if((ae|0)!=0){ai=0;do{ah=a+148+($*36|0)+(ai<<2)|0;ag=c[ah>>2]|0;if((aj&1<>2]|0;c[p>>2]=ao+1;c[a+348+(ao<<2)>>2]=ag}else{c[a+148+(aa*36|0)+(c[ab>>2]<<2)>>2]=ag;x=+g[m+(ai<<2)>>2];ag=c[ab>>2]|0;c[ab>>2]=ag+1;g[a+148+(aa*36|0)+16+(ag<<2)>>2]=x;ag=c[ah>>2]|0;B=x*+g[ag+20>>2];aA=x*+g[ag+24>>2];g[v>>2]=+g[ag+16>>2]*x+ +g[v>>2];g[t>>2]=B+ +g[t>>2];g[d>>2]=aA+ +g[d>>2]}ai=ai+1|0;}while(ai>>>0>>0)}if((aj|0)==15){c[r>>2]=1}if(Z>>>0>=128){ac=2627;break}if((c[r>>2]|0)!=0){break}Z=Z+1|0;A=al;_=_+1&3;z=C}if((ac|0)==2602){_=c[q>>2]|0;Z=a+148+(_*36|0)+32|0;m=(c[Z>>2]|0)-1|0;c[Z>>2]=m;Z=c[a+148+(_*36|0)+(m<<2)>>2]|0;m=c[p>>2]|0;c[p>>2]=m+1;c[a+348+(m<<2)>>2]=Z}else if((ac|0)==2604){Z=c[q>>2]|0;m=a+148+(Z*36|0)+32|0;_=(c[m>>2]|0)-1|0;c[m>>2]=_;m=c[a+148+(Z*36|0)+(_<<2)>>2]|0;_=c[p>>2]|0;c[p>>2]=_+1;c[a+348+(_<<2)>>2]=m}else if((ac|0)==2627){c[r>>2]=2}else if((ac|0)==2625){m=c[q>>2]|0;_=a+148+(m*36|0)+32|0;Z=(c[_>>2]|0)-1|0;c[_>>2]=Z;_=c[a+148+(m*36|0)+(Z<<2)>>2]|0;Z=c[p>>2]|0;c[p>>2]=Z+1;c[a+348+(Z<<2)>>2]=_}else if((ac|0)==2598){c[r>>2]=1}c[a+372>>2]=a+148+((c[q>>2]|0)*36|0);q=c[r>>2]|0;if((q|0)==0){z=+g[v>>2];al=+g[t>>2];A=+g[d>>2];g[b>>2]=+Q(+(z*z+al*al+A*A));i=e;return q|0}else if((q|0)==1){g[b>>2]=0.0;i=e;return q|0}else{i=e;return q|0}return 0}function aCY(a){a=a|0;var b=0,d=0,e=0,f=0,h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0.0,F=0.0,G=0,H=0;b=i;i=i+32|0;d=b|0;e=b+16|0;f=a+372|0;h=c[f>>2]|0;j=h+32|0;k=c[j>>2]|0;L3384:do{if((k|0)==2){l=c[h+4>>2]|0;m=c[h>>2]|0;n=+g[l+16>>2]- +g[m+16>>2];o=+g[l+20>>2]- +g[m+20>>2];p=+g[l+24>>2]- +g[m+24>>2];m=e|0;l=e+4|0;q=e+8|0;r=a+364|0;s=e;t=0;while(1){aDD(s|0,0,16);g[e+(t<<2)>>2]=1.0;u=+g[q>>2];v=+g[l>>2];w=o*u-p*v;x=+g[m>>2];y=p*x-n*u;u=n*v-o*x;if(w*w+y*y+u*u>0.0){z=c[f>>2]|0;A=z+32|0;g[z+16+(c[A>>2]<<2)>>2]=0.0;B=(c[r>>2]|0)-1|0;c[r>>2]=B;c[z+(c[A>>2]<<2)>>2]=c[a+348+(B<<2)>>2];B=c[A>>2]|0;c[A>>2]=B+1;aC_(a,w,y,u,c[z+(B<<2)>>2]|0);if(aCY(a)|0){C=1;D=2663;break}B=c[f>>2]|0;z=B+32|0;A=(c[z>>2]|0)-1|0;c[z>>2]=A;z=c[B+(A<<2)>>2]|0;A=c[r>>2]|0;c[r>>2]=A+1;c[a+348+(A<<2)>>2]=z;z=c[f>>2]|0;A=z+32|0;g[z+16+(c[A>>2]<<2)>>2]=0.0;B=(c[r>>2]|0)-1|0;c[r>>2]=B;c[z+(c[A>>2]<<2)>>2]=c[a+348+(B<<2)>>2];B=c[A>>2]|0;c[A>>2]=B+1;aC_(a,-0.0-w,-0.0-y,-0.0-u,c[z+(B<<2)>>2]|0);if(aCY(a)|0){C=1;D=2660;break}B=c[f>>2]|0;z=B+32|0;A=(c[z>>2]|0)-1|0;c[z>>2]=A;z=c[B+(A<<2)>>2]|0;A=c[r>>2]|0;c[r>>2]=A+1;c[a+348+(A<<2)>>2]=z}t=t+1|0;if(t>>>0>=3){break L3384}}if((D|0)==2660){i=b;return C|0}else if((D|0)==2663){i=b;return C|0}}else if((k|0)==3){t=c[h+4>>2]|0;r=c[h>>2]|0;o=+g[r+16>>2];n=+g[t+16>>2]-o;p=+g[r+20>>2];u=+g[t+20>>2]-p;y=+g[r+24>>2];w=+g[t+24>>2]-y;t=c[h+8>>2]|0;x=+g[t+16>>2]-o;o=+g[t+20>>2]-p;p=+g[t+24>>2]-y;y=u*p-w*o;v=w*x-n*p;p=n*o-u*x;if(y*y+v*v+p*p<=0.0){break}g[h+28>>2]=0.0;t=a+364|0;r=(c[t>>2]|0)-1|0;c[t>>2]=r;c[h+(c[j>>2]<<2)>>2]=c[a+348+(r<<2)>>2];r=c[j>>2]|0;c[j>>2]=r+1;aC_(a,y,v,p,c[h+(r<<2)>>2]|0);if(aCY(a)|0){C=1;i=b;return C|0}r=c[f>>2]|0;m=r+32|0;l=(c[m>>2]|0)-1|0;c[m>>2]=l;m=c[r+(l<<2)>>2]|0;l=c[t>>2]|0;c[t>>2]=l+1;c[a+348+(l<<2)>>2]=m;m=c[f>>2]|0;l=m+32|0;g[m+16+(c[l>>2]<<2)>>2]=0.0;r=(c[t>>2]|0)-1|0;c[t>>2]=r;c[m+(c[l>>2]<<2)>>2]=c[a+348+(r<<2)>>2];r=c[l>>2]|0;c[l>>2]=r+1;aC_(a,-0.0-y,-0.0-v,-0.0-p,c[m+(r<<2)>>2]|0);if(aCY(a)|0){C=1;i=b;return C|0}else{r=c[f>>2]|0;m=r+32|0;l=(c[m>>2]|0)-1|0;c[m>>2]=l;m=c[r+(l<<2)>>2]|0;l=c[t>>2]|0;c[t>>2]=l+1;c[a+348+(l<<2)>>2]=m;break}}else if((k|0)==4){m=c[h>>2]|0;l=c[h+12>>2]|0;p=+g[l+16>>2];v=+g[m+16>>2]-p;y=+g[l+20>>2];x=+g[m+20>>2]-y;u=+g[l+24>>2];o=+g[m+24>>2]-u;m=c[h+4>>2]|0;n=+g[m+16>>2]-p;w=+g[m+20>>2]-y;E=+g[m+24>>2]-u;m=c[h+8>>2]|0;F=+g[m+16>>2]-p;p=+g[m+20>>2]-y;y=+g[m+24>>2]-u;if(v*w*y+(x*E*F+o*n*p-v*E*p-x*n*y)-o*w*F==0.0){break}else{C=1}i=b;return C|0}else if((k|0)==1){m=d|0;l=d+4|0;t=d+8|0;r=a+364|0;q=d;s=0;z=h;A=1;while(1){aDD(q|0,0,16);g[d+(s<<2)>>2]=1.0;B=z+32|0;g[z+16+(A<<2)>>2]=0.0;G=(c[r>>2]|0)-1|0;c[r>>2]=G;c[z+(c[B>>2]<<2)>>2]=c[a+348+(G<<2)>>2];G=c[B>>2]|0;c[B>>2]=G+1;F=+g[m>>2];w=+g[l>>2];o=+g[t>>2];aC_(a,F,w,o,c[z+(G<<2)>>2]|0);if(aCY(a)|0){C=1;D=2656;break}G=c[f>>2]|0;B=G+32|0;H=(c[B>>2]|0)-1|0;c[B>>2]=H;B=c[G+(H<<2)>>2]|0;H=c[r>>2]|0;c[r>>2]=H+1;c[a+348+(H<<2)>>2]=B;B=c[f>>2]|0;H=B+32|0;g[B+16+(c[H>>2]<<2)>>2]=0.0;G=(c[r>>2]|0)-1|0;c[r>>2]=G;c[B+(c[H>>2]<<2)>>2]=c[a+348+(G<<2)>>2];G=c[H>>2]|0;c[H>>2]=G+1;aC_(a,-0.0-F,-0.0-w,-0.0-o,c[B+(G<<2)>>2]|0);if(aCY(a)|0){C=1;D=2658;break}G=c[f>>2]|0;B=G+32|0;H=(c[B>>2]|0)-1|0;c[B>>2]=H;B=c[G+(H<<2)>>2]|0;H=c[r>>2]|0;c[r>>2]=H+1;c[a+348+(H<<2)>>2]=B;B=s+1|0;if(B>>>0>=3){break L3384}H=c[f>>2]|0;s=B;z=H;A=c[H+32>>2]|0}if((D|0)==2656){i=b;return C|0}else if((D|0)==2658){i=b;return C|0}}}while(0);C=0;i=b;return C|0}function aCZ(b,d,e,f,h){b=b|0;d=d|0;e=e|0;f=f|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0.0,x=0.0,y=0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0,M=0.0,N=0.0,O=0.0,P=0.0,R=0.0,S=0.0;i=b+9800|0;j=c[i>>2]|0;if((j|0)==0){c[b>>2]=5;k=0;return k|0}l=j+52|0;m=c[l>>2]|0;n=j+48|0;if((m|0)!=0){c[m+48>>2]=c[n>>2]}m=c[n>>2]|0;if((m|0)!=0){c[m+52>>2]=c[l>>2]}if((c[i>>2]|0)==(j|0)){c[i>>2]=c[l>>2]}m=b+9804|0;c[m>>2]=(c[m>>2]|0)-1;c[n>>2]=0;o=b+9792|0;c[l>>2]=c[o>>2];p=c[o>>2]|0;if((p|0)!=0){c[p+48>>2]=j}c[o>>2]=j;p=b+9796|0;c[p>>2]=(c[p>>2]|0)+1;a[j+59|0]=0;c[j+24>>2]=d;c[j+28>>2]=e;c[j+32>>2]=f;q=e+16|0;r=d+16|0;s=+g[r>>2];t=+g[q>>2]-s;u=e+20|0;v=d+20|0;w=+g[v>>2];x=+g[u>>2]-w;y=e+24|0;e=d+24|0;z=+g[e>>2];A=+g[y>>2]-z;d=f+16|0;B=+g[d>>2]-s;C=f+20|0;s=+g[C>>2]-w;D=f+24|0;w=+g[D>>2]-z;z=x*w-A*s;E=A*B-t*w;w=t*s-x*B;f=j|0;g[f>>2]=z;F=j+4|0;g[F>>2]=E;G=j+8|0;g[G>>2]=w;g[j+12>>2]=0.0;B=+Q(+(z*z+E*E+w*w));H=B>9999999747378752.0e-20;x=+g[r>>2];s=+g[q>>2];t=x-s;A=+g[v>>2];I=+g[u>>2];J=A-I;K=+g[e>>2];L=+g[y>>2];M=K-L;N=K*(z*J-E*t)+(x*(E*M-w*J)+A*(w*t-z*M));M=+g[d>>2];t=s-M;J=+g[C>>2];O=I-J;P=+g[D>>2];R=L-P;S=L*(z*O-E*t)+(s*(E*R-w*O)+I*(w*t-z*R));R=M-x;x=J-A;A=P-K;K=P*(z*x-E*R)+(M*(E*A-w*x)+J*(w*R-z*A));A=N>2]=S<-.009999999776482582?S:0.0;do{if(H){S=(+g[r>>2]*z+ +g[v>>2]*E+ +g[e>>2]*w)/B;g[j+16>>2]=S;K=1.0/B;g[f>>2]=K*z;g[F>>2]=K*E;g[G>>2]=K*w;if(S<-9999999747378752.0e-21&(h^1)){c[b>>2]=3;break}else{k=j;return k|0}}else{c[b>>2]=2}}while(0);b=c[l>>2]|0;if((b|0)!=0){c[b+48>>2]=c[n>>2]}b=c[n>>2]|0;if((b|0)!=0){c[b+52>>2]=c[l>>2]}if((c[o>>2]|0)==(j|0)){c[o>>2]=c[l>>2]}c[p>>2]=(c[p>>2]|0)-1;c[n>>2]=0;c[l>>2]=c[i>>2];l=c[i>>2]|0;if((l|0)!=0){c[l+48>>2]=j}c[i>>2]=j;c[m>>2]=(c[m>>2]|0)+1;k=0;return k|0}function aC_(a,b,d,e,f){a=a|0;b=+b;d=+d;e=+e;f=f|0;var h=0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;h=i;i=i+48|0;j=h|0;k=h+16|0;l=h+32|0;m=1.0/+Q(+(b*b+d*d+e*e));n=f|0;g[n>>2]=m*b;o=f+4|0;g[o>>2]=m*d;p=f+8|0;g[p>>2]=m*e;g[f+12>>2]=0.0;q=a+120|0;r=(c[a>>2]|0)+(c[q+4>>2]|0)|0;s=c[q>>2]|0;if((s&1|0)==0){t=s}else{t=c[(c[r>>2]|0)+(s-1)>>2]|0}dA[t&511](l,r,f|0);e=-0.0- +g[n>>2];m=-0.0- +g[o>>2];d=-0.0- +g[p>>2];p=(c[a+4>>2]|0)+(c[q+4>>2]|0)|0;o=c[q>>2]|0;if((o&1|0)==0){u=o}else{u=c[(c[p>>2]|0)+(o-1)>>2]|0}b=+g[a+24>>2]*e+ +g[a+28>>2]*m+ +g[a+32>>2]*d;v=+g[a+40>>2]*e+ +g[a+44>>2]*m+ +g[a+48>>2]*d;g[k>>2]=+g[a+8>>2]*e+ +g[a+12>>2]*m+ +g[a+16>>2]*d;g[k+4>>2]=b;g[k+8>>2]=v;g[k+12>>2]=0.0;dA[u&511](j,p,k);v=+g[j>>2];b=+g[j+4>>2];d=+g[j+8>>2];m=+g[l+4>>2]-(+g[a+108>>2]+(v*+g[a+72>>2]+b*+g[a+76>>2]+d*+g[a+80>>2]));e=+g[l+8>>2]-(+g[a+112>>2]+(v*+g[a+88>>2]+b*+g[a+92>>2]+d*+g[a+96>>2]));g[f+16>>2]=+g[l>>2]-(+g[a+104>>2]+(+g[a+56>>2]*v+ +g[a+60>>2]*b+ +g[a+64>>2]*d));g[f+20>>2]=m;g[f+24>>2]=e;g[f+28>>2]=0.0;i=h;return}function aC$(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0.0,j=0.0,k=0,l=0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0;f=b|0;h=a|0;i=+g[h>>2];j=+g[f>>2]-i;k=b+4|0;l=a+4|0;m=+g[l>>2];n=+g[k>>2]-m;o=b+8|0;b=a+8|0;p=+g[b>>2];q=+g[o>>2]-p;r=j*j+n*n+q*q;if(r<=0.0){s=-1.0;return+s}t=(-0.0-(i*j+m*n+p*q))/r;if(t>=1.0){g[d>>2]=0.0;g[d+4>>2]=1.0;c[e>>2]=2;r=+g[f>>2];p=+g[k>>2];m=+g[o>>2];s=r*r+p*p+m*m;return+s}if(t>0.0){g[d+4>>2]=t;g[d>>2]=1.0-t;c[e>>2]=3;m=j*t+ +g[h>>2];j=n*t+ +g[l>>2];n=q*t+ +g[b>>2];s=m*m+j*j+n*n;return+s}else{g[d>>2]=1.0;g[d+4>>2]=0.0;c[e>>2]=1;n=+g[h>>2];j=+g[l>>2];m=+g[b>>2];s=n*n+j*j+m*m;return+s}return 0.0}function aC0(b,e,f,h,i,j){b=b|0;e=e|0;f=f|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0;k=h+59|0;if((d[k]|0|0)==(e|0)){l=0;return l|0}m=c[18320+(i<<2)>>2]|0;if(+g[h>>2]*+g[f+16>>2]+ +g[h+4>>2]*+g[f+20>>2]+ +g[h+8>>2]*+g[f+24>>2]- +g[h+16>>2]<-9999999747378752.0e-21){n=aCZ(b,c[h+24+(m<<2)>>2]|0,c[h+24+(i<<2)>>2]|0,f,0)|0;if((n|0)==0){l=0;return l|0}a[n+56|0]=i&255;c[n+36>>2]=h;a[h+56+i|0]=0;c[h+36+(i<<2)>>2]=n;o=j|0;p=c[o>>2]|0;if((p|0)==0){c[j+4>>2]=n}else{a[p+57|0]=2;c[p+40>>2]=n;a[n+58|0]=1;c[n+44>>2]=p}c[o>>2]=n;n=j+8|0;c[n>>2]=(c[n>>2]|0)+1;l=1;return l|0}n=c[18336+(i<<2)>>2]|0;a[k]=e&255;if(!(aC0(b,e,f,c[h+36+(m<<2)>>2]|0,d[h+56+m|0]|0,j)|0)){l=0;return l|0}if(!(aC0(b,e,f,c[h+36+(n<<2)>>2]|0,d[h+56+n|0]|0,j)|0)){l=0;return l|0}j=h+52|0;n=c[j>>2]|0;f=h+48|0;if((n|0)!=0){c[n+48>>2]=c[f>>2]}n=c[f>>2]|0;if((n|0)!=0){c[n+52>>2]=c[j>>2]}n=b+9792|0;if((c[n>>2]|0)==(h|0)){c[n>>2]=c[j>>2]}n=b+9796|0;c[n>>2]=(c[n>>2]|0)-1;c[f>>2]=0;f=b+9800|0;c[j>>2]=c[f>>2];j=c[f>>2]|0;if((j|0)!=0){c[j+48>>2]=h}c[f>>2]=h;h=b+9804|0;c[h>>2]=(c[h>>2]|0)+1;l=1;return l|0}function aC1(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0,y=0.0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0,F=0.0,G=0,H=0.0,I=0.0,J=0.0,K=0.0,L=0.0,M=0,N=0.0,O=0,P=0.0,R=0.0,S=0;h=i;i=i+80|0;j=h|0;k=h+16|0;l=h+64|0;m=h+72|0;c[j>>2]=a;c[j+4>>2]=b;c[j+8>>2]=d;n=a|0;o=+g[n>>2];p=b|0;q=+g[p>>2];r=o-q;s=a+4|0;t=+g[s>>2];u=b+4|0;v=+g[u>>2];w=t-v;x=a+8|0;y=+g[x>>2];z=b+8|0;A=+g[z>>2];B=y-A;g[k>>2]=r;g[k+4>>2]=w;g[k+8>>2]=B;g[k+12>>2]=0.0;b=d|0;C=+g[b>>2];D=q-C;E=d+4|0;q=+g[E>>2];F=v-q;G=d+8|0;v=+g[G>>2];H=A-v;g[k+16>>2]=D;g[k+20>>2]=F;g[k+24>>2]=H;g[k+28>>2]=0.0;A=C-o;C=q-t;q=v-y;g[k+32>>2]=A;g[k+36>>2]=C;g[k+40>>2]=q;g[k+44>>2]=0.0;v=w*H-B*F;I=B*D-H*r;J=F*r-w*D;K=J*J+(v*v+I*I);if(K<=0.0){L=-1.0;i=h;return+L}c[l>>2]=0;c[l+4>>2]=0;c[m>>2]=0;d=l;M=l+4|0;l=0;N=-1.0;O=a;P=w;w=B;B=r;r=o;o=t;t=y;while(1){do{if(r*(J*P-I*w)+o*(v*w-J*B)+(I*B-v*P)*t>0.0){a=c[18320+(l<<2)>>2]|0;y=+aC$(O,c[j+(a<<2)>>2]|0,d,m);if(!(N<0.0|y>2]|0;c[f>>2]=((S&1|0)==0?0:1<>2]=+g[d>>2];g[e+(a<<2)>>2]=+g[M>>2];g[e+(c[18320+(a<<2)>>2]<<2)>>2]=0.0;R=y}else{R=N}}while(0);a=l+1|0;if(a>>>0>=3){break}S=c[j+(a<<2)>>2]|0;l=a;N=R;O=S;P=+g[k+(a<<4)+4>>2];w=+g[k+(a<<4)+8>>2];B=+g[k+(a<<4)>>2];r=+g[S>>2];o=+g[S+4>>2];t=+g[S+8>>2]}if(R>=0.0){L=R;i=h;return+L}R=v*+g[n>>2]+I*+g[s>>2]+J*+g[x>>2];t=+Q(+K);o=R/K;K=v*o;v=I*o;I=J*o;c[f>>2]=7;o=+g[p>>2]-K;J=+g[u>>2]-v;R=+g[z>>2]-I;r=F*R-J*H;B=o*H-R*D;R=J*D-o*F;F=+Q(+(R*R+(r*r+B*B)))/t;g[e>>2]=F;B=+g[b>>2]-K;r=+g[E>>2]-v;R=+g[G>>2]-I;o=C*R-r*q;D=B*q-R*A;R=r*A-B*C;C=+Q(+(R*R+(o*o+D*D)))/t;g[e+4>>2]=C;g[e+8>>2]=1.0-(C+F);L=I*I+(K*K+v*v);i=h;return+L}function aC2(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var h=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0;h=i;i=i+32|0;j=h|0;k=h+8|0;l=h+16|0;m=h+24|0;aCT(a,c,e,j,k);aCT(b,d,e,l,m);n=+g[k>>2];o=+g[l>>2];if(n>2];r=+g[j>>2];if(q>2]=s>2]=0;c[m+4>>2]=0;r=m+8|0;c[r>>2]=0;s=c[f+4>>2]|0;if((s|0)>0){c[9806]=(c[9806]|0)+1;t=aDx((s<<4|4)+15|0)|0;if((t|0)==0){u=0}else{v=-(t+4|0)&15;c[t+v>>2]=t;u=t+(v+4)|0}a[p]=1;c[q>>2]=u;c[r>>2]=s;w=u}else{w=0}u=c[d+28>>2]|0;do{if((u|0)>0){s=d+36|0;r=c[s>>2]|0;v=e|0;x=+g[v>>2];t=e+4|0;y=+g[t>>2];z=e+8|0;A=+g[z>>2];B=e+16|0;C=+g[B>>2];D=e+20|0;E=+g[D>>2];F=e+24|0;G=+g[F>>2];H=e+32|0;I=+g[H>>2];J=e+36|0;K=+g[J>>2];L=e+40|0;M=+g[L>>2];N=+g[b>>2];O=+g[b+4>>2];P=+g[b+8>>2];Q=0;R=3.4028234663852886e+38;S=-1;while(1){T=+g[r+(Q*56|0)+40>>2];U=+g[r+(Q*56|0)+44>>2];V=+g[r+(Q*56|0)+48>>2];W=(T*x+U*y+V*A)*N+(T*C+U*E+V*G)*O+(T*I+U*K+V*M)*P;X=W>2]|0;if((S|0)>0){Q=r+(Y*56|0)+32|0;X=e+48|0;Z=e+52|0;$=e+56|0;aa=n;ab=f;ac=m;ad=0;ae=r;R=x;P=y;O=A;N=C;W=E;V=G;U=I;T=K;af=M;while(1){ag=c[(c[Q>>2]|0)+(ad<<2)>>2]|0;ah=+g[ae+(ag*56|0)+40>>2];ai=+g[ae+(ag*56|0)+44>>2];aj=+g[ae+(ag*56|0)+48>>2];ak=ah*R+ai*P+aj*O;al=ah*N+ai*W+aj*V;am=ah*U+ai*T+aj*af;aj=+g[ae+(ag*56|0)+52>>2]-(ak*+g[X>>2]+al*+g[Z>>2]+am*+g[$>>2]);ag=ab+4|0;an=c[ag>>2]|0;if((an|0)<2){ao=an}else{ap=an-1|0;aq=ab+12|0;ar=c[aq>>2]|0;ai=+g[ar+(ap<<4)>>2];ah=+g[ar+(ap<<4)+4>>2];as=+g[ar+(ap<<4)+8>>2];ap=ac+4|0;at=ac+8|0;au=ac+12|0;av=ac+16|0;aw=as;ax=ah;ay=ai;az=ai*ak+ah*al+as*am+aj;aA=0;aB=ar;while(1){as=+g[aB+(aA<<4)>>2];ah=+g[aB+(aA<<4)+4>>2];ai=+g[aB+(aA<<4)+8>>2];aC=+g[aB+(aA<<4)+12>>2];aD=as*ak+ah*al+ai*am+aj;ar=aD<0.0;do{if(az<0.0){if(ar){aE=c[ap>>2]|0;do{if((aE|0)==(c[at>>2]|0)){aF=(aE|0)==0?1:aE<<1;if((aE|0)>=(aF|0)){aG=aE;break}if((aF|0)==0){aH=0;aI=aE}else{c[9806]=(c[9806]|0)+1;aJ=aDx((aF<<4|4)+15|0)|0;if((aJ|0)==0){aK=0}else{aL=-(aJ+4|0)&15;c[aJ+aL>>2]=aJ;aK=aJ+(aL+4)|0}aH=aK;aI=c[ap>>2]|0}if((aI|0)>0){aL=0;do{aJ=aH+(aL<<4)|0;if((aJ|0)!=0){aM=aJ;aJ=(c[au>>2]|0)+(aL<<4)|0;c[aM>>2]=c[aJ>>2];c[aM+4>>2]=c[aJ+4>>2];c[aM+8>>2]=c[aJ+8>>2];c[aM+12>>2]=c[aJ+12>>2]}aL=aL+1|0;}while((aL|0)<(aI|0))}aL=c[au>>2]|0;if((aL|0)!=0){if((a[av]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aL-16+12>>2]|0)}c[au>>2]=0}a[av]=1;c[au>>2]=aH;c[at>>2]=aF;aG=c[ap>>2]|0}else{aG=aE}}while(0);aE=c[au>>2]|0;aL=aE+(aG<<4)|0;if((aL|0)==0){aN=aG}else{g[aL>>2]=as;g[aE+(aG<<4)+4>>2]=ah;g[aE+(aG<<4)+8>>2]=ai;g[aE+(aG<<4)+12>>2]=aC;aN=c[ap>>2]|0}c[ap>>2]=aN+1;break}else{aO=az/(az-aD);aP=ay+(as-ay)*aO;aQ=ax+(ah-ax)*aO;aR=aw+(ai-aw)*aO;aE=c[ap>>2]|0;do{if((aE|0)==(c[at>>2]|0)){aL=(aE|0)==0?1:aE<<1;if((aE|0)>=(aL|0)){aS=aE;break}if((aL|0)==0){aT=0;aU=aE}else{c[9806]=(c[9806]|0)+1;aJ=aDx((aL<<4|4)+15|0)|0;if((aJ|0)==0){aV=0}else{aM=-(aJ+4|0)&15;c[aJ+aM>>2]=aJ;aV=aJ+(aM+4)|0}aT=aV;aU=c[ap>>2]|0}if((aU|0)>0){aM=0;do{aJ=aT+(aM<<4)|0;if((aJ|0)!=0){aW=aJ;aJ=(c[au>>2]|0)+(aM<<4)|0;c[aW>>2]=c[aJ>>2];c[aW+4>>2]=c[aJ+4>>2];c[aW+8>>2]=c[aJ+8>>2];c[aW+12>>2]=c[aJ+12>>2]}aM=aM+1|0;}while((aM|0)<(aU|0))}aM=c[au>>2]|0;if((aM|0)!=0){if((a[av]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aM-16+12>>2]|0)}c[au>>2]=0}a[av]=1;c[au>>2]=aT;c[at>>2]=aL;aS=c[ap>>2]|0}else{aS=aE}}while(0);aE=c[au>>2]|0;aM=aE+(aS<<4)|0;if((aM|0)==0){aX=aS}else{g[aM>>2]=aP;g[aE+(aS<<4)+4>>2]=aQ;g[aE+(aS<<4)+8>>2]=aR;g[aE+(aS<<4)+12>>2]=0.0;aX=c[ap>>2]|0}c[ap>>2]=aX+1;break}}else{if(!ar){break}aO=az/(az-aD);aY=ay+(as-ay)*aO;aZ=ax+(ah-ax)*aO;a_=aw+(ai-aw)*aO;aE=c[ap>>2]|0;aM=c[at>>2]|0;do{if((aE|0)==(aM|0)){aF=(aE|0)==0?1:aE<<1;if((aE|0)>=(aF|0)){a$=aE;a0=aE;break}if((aF|0)==0){a1=0;a2=aE}else{c[9806]=(c[9806]|0)+1;aJ=aDx((aF<<4|4)+15|0)|0;if((aJ|0)==0){a3=0}else{aW=-(aJ+4|0)&15;c[aJ+aW>>2]=aJ;a3=aJ+(aW+4)|0}a1=a3;a2=c[ap>>2]|0}if((a2|0)>0){aW=0;do{aJ=a1+(aW<<4)|0;if((aJ|0)!=0){a4=aJ;aJ=(c[au>>2]|0)+(aW<<4)|0;c[a4>>2]=c[aJ>>2];c[a4+4>>2]=c[aJ+4>>2];c[a4+8>>2]=c[aJ+8>>2];c[a4+12>>2]=c[aJ+12>>2]}aW=aW+1|0;}while((aW|0)<(a2|0))}aW=c[au>>2]|0;if((aW|0)!=0){if((a[av]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aW-16+12>>2]|0)}c[au>>2]=0}a[av]=1;c[au>>2]=a1;c[at>>2]=aF;a$=c[ap>>2]|0;a0=aF}else{a$=aE;a0=aM}}while(0);aM=c[au>>2]|0;aE=aM+(a$<<4)|0;if((aE|0)==0){a5=a$;a6=a0}else{g[aE>>2]=aY;g[aM+(a$<<4)+4>>2]=aZ;g[aM+(a$<<4)+8>>2]=a_;g[aM+(a$<<4)+12>>2]=0.0;a5=c[ap>>2]|0;a6=c[at>>2]|0}aM=a5+1|0;c[ap>>2]=aM;do{if((aM|0)==(a6|0)){aE=(a6|0)==0?1:a6<<1;if((a6|0)>=(aE|0)){a7=a6;break}if((aE|0)==0){a8=0;a9=a6}else{c[9806]=(c[9806]|0)+1;aW=aDx((aE<<4|4)+15|0)|0;if((aW|0)==0){ba=0}else{aL=-(aW+4|0)&15;c[aW+aL>>2]=aW;ba=aW+(aL+4)|0}a8=ba;a9=c[ap>>2]|0}if((a9|0)>0){aL=0;do{aW=a8+(aL<<4)|0;if((aW|0)!=0){aJ=aW;aW=(c[au>>2]|0)+(aL<<4)|0;c[aJ>>2]=c[aW>>2];c[aJ+4>>2]=c[aW+4>>2];c[aJ+8>>2]=c[aW+8>>2];c[aJ+12>>2]=c[aW+12>>2]}aL=aL+1|0;}while((aL|0)<(a9|0))}aL=c[au>>2]|0;if((aL|0)!=0){if((a[av]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aL-16+12>>2]|0)}c[au>>2]=0}a[av]=1;c[au>>2]=a8;c[at>>2]=aE;a7=c[ap>>2]|0}else{a7=aM}}while(0);aM=c[au>>2]|0;aL=aM+(a7<<4)|0;if((aL|0)==0){bb=a7}else{g[aL>>2]=as;g[aM+(a7<<4)+4>>2]=ah;g[aM+(a7<<4)+8>>2]=ai;g[aM+(a7<<4)+12>>2]=aC;bb=c[ap>>2]|0}c[ap>>2]=bb+1}}while(0);ar=aA+1|0;if((ar|0)>=(an|0)){break}aw=ai;ax=ah;ay=as;az=aD;aA=ar;aB=c[aq>>2]|0}ao=c[ag>>2]|0}if((ao|0)<0){aq=ab+8|0;aB=ab+12|0;if((c[aq>>2]|0)<0){aA=c[aB>>2]|0;an=ab+16|0;if((aA|0)!=0){if((a[an]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[aA-16+12>>2]|0)}c[aB>>2]=0}a[an]=1;c[aB>>2]=0;c[aq>>2]=0;bc=ao}else{bc=ao}do{aq=(c[aB>>2]|0)+(bc<<4)|0;if((aq|0)!=0){an=aq;c[an>>2]=c[aa>>2];c[an+4>>2]=c[aa+4>>2];c[an+8>>2]=c[aa+8>>2];c[an+12>>2]=c[aa+12>>2]}bc=bc+1|0;}while((bc|0)<0)}c[ag>>2]=0;aB=ad+1|0;if((aB|0)>=(S|0)){break}an=ab;ab=ac;ad=aB;ae=c[s>>2]|0;R=+g[v>>2];P=+g[t>>2];O=+g[z>>2];N=+g[B>>2];W=+g[D>>2];V=+g[F>>2];U=+g[H>>2];T=+g[J>>2];af=+g[L>>2];ac=an}bd=ac;be=X;bf=Z;bg=$;bh=+g[v>>2];bi=+g[t>>2];bj=+g[z>>2];bk=+g[B>>2];bl=+g[D>>2];bm=+g[F>>2];bn=+g[H>>2];bo=+g[J>>2];bp=+g[L>>2]}else{bd=f;be=e+48|0;bf=e+52|0;bg=e+56|0;bh=x;bi=y;bj=A;bk=C;bl=E;bm=G;bn=I;bo=K;bp=M}af=+g[r+(Y*56|0)+40>>2];T=+g[r+(Y*56|0)+44>>2];U=+g[r+(Y*56|0)+48>>2];V=af*bh+T*bi+U*bj;W=af*bk+T*bl+U*bm;N=af*bn+T*bo+U*bp;U=+g[r+(Y*56|0)+52>>2]-(V*+g[be>>2]+W*+g[bf>>2]+N*+g[bg>>2]);s=bd+4|0;ae=c[s>>2]|0;if((ae|0)>0){ad=bd+12|0;ab=o;S=k;aa=0;Q=ae;while(1){ae=c[ad>>2]|0;an=ae+(aa<<4)|0;T=U+(V*+g[an>>2]+W*+g[ae+(aa<<4)+4>>2]+N*+g[ae+(aa<<4)+8>>2]);if(T>j|T>2]=c[ae>>2];c[ab+4>>2]=c[ae+4>>2];c[ab+8>>2]=c[ae+8>>2];c[ab+12>>2]=c[ae+12>>2];dw[c[(c[S>>2]|0)+16>>2]&127](k,b,o,T);bq=c[s>>2]|0}ae=aa+1|0;if((ae|0)<(bq|0)){aa=ae;Q=bq}else{break}}}_=c[q>>2]|0}else{_=w}}while(0);if((_|0)==0){i=l;return}if((a[p]&1)!=0){c[9804]=(c[9804]|0)+1;aDB(c[_-16+12>>2]|0)}c[q>>2]=0;i=l;return}function aC4(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;h=c[g+16>>2]|0;if((h|0)!=(f|0)){i=f-h|0;return i|0}if((f|0)==0){i=0;return i|0}h=g+8|0;j=c[h+4>>2]|0;k=a|0;a=b&0;l=c[h>>2]|0;h=j&0;m=(D=(+(l>>>0)+ +(h|0)*4294967296.0)*(+(k>>>0)+ +(a|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);n=j;j=0;o=(D=(+(n>>>0)+ +(j|0)*4294967296.0)*(+(k>>>0)+ +(a|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);p=b;b=0;q=(D=(+(l>>>0)+ +(h|0)*4294967296.0)*(+(p>>>0)+ +(b|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);r=~~((+(n>>>0)+ +(j|0)*4294967296.0)*(+(p>>>0)+ +(b|0)*4294967296.0))>>>0;s=(D=(+(n>>>0)+ +(j|0)*4294967296.0)*(+(p>>>0)+ +(b|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=~~((+(n>>>0)+ +(j|0)*4294967296.0)*(+(k>>>0)+ +(a|0)*4294967296.0))>>>0|0;j=o&0;n=~~((+(l>>>0)+ +(h|0)*4294967296.0)*(+(p>>>0)+ +(b|0)*4294967296.0))>>>0|0;b=q&0;p=(D=+(t>>>0)+ +(j|0)*4294967296.0+(+(n>>>0)+ +(b|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);u=o;o=0;v=~~(+(u>>>0)+ +(o|0)*4294967296.0+(+(r>>>0)+ +(s|0)*4294967296.0))>>>0;w=(D=+(u>>>0)+ +(o|0)*4294967296.0+(+(r>>>0)+ +(s|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);s=q;q=0;r=~~(+(v>>>0)+ +(w|0)*4294967296.0+(+(s>>>0)+ +(q|0)*4294967296.0))>>>0;o=(D=+(v>>>0)+ +(w|0)*4294967296.0+(+(s>>>0)+ +(q|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);q=p;p=0;s=aDF(~~((+(l>>>0)+ +(h|0)*4294967296.0)*(+(k>>>0)+ +(a|0)*4294967296.0))>>>0|0,m|0,0,~~(+(t>>>0)+ +(j|0)*4294967296.0+(+(n>>>0)+ +(b|0)*4294967296.0))>>>0|0)|0;b=s;s=E;n=F&1;j=0;t=~~(+(r>>>0)+ +(o|0)*4294967296.0+(+(n>>>0)+ +(j|0)*4294967296.0))>>>0;m=(D=+(r>>>0)+ +(o|0)*4294967296.0+(+(n>>>0)+ +(j|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);j=~~(+(t>>>0)+ +(m|0)*4294967296.0+(+(q>>>0)+ +(p|0)*4294967296.0))>>>0;n=(D=+(t>>>0)+ +(m|0)*4294967296.0+(+(q>>>0)+ +(p|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);p=g|0;g=c[p+4>>2]|0;q=d|0;d=e&0;m=c[p>>2]|0;p=g&0;t=(D=(+(m>>>0)+ +(p|0)*4294967296.0)*(+(q>>>0)+ +(d|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);o=g;g=0;r=(D=(+(o>>>0)+ +(g|0)*4294967296.0)*(+(q>>>0)+ +(d|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a=e;e=0;k=(D=(+(m>>>0)+ +(p|0)*4294967296.0)*(+(a>>>0)+ +(e|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);h=~~((+(o>>>0)+ +(g|0)*4294967296.0)*(+(a>>>0)+ +(e|0)*4294967296.0))>>>0;l=(D=(+(o>>>0)+ +(g|0)*4294967296.0)*(+(a>>>0)+ +(e|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);w=~~((+(o>>>0)+ +(g|0)*4294967296.0)*(+(q>>>0)+ +(d|0)*4294967296.0))>>>0|0;g=r&0;o=~~((+(m>>>0)+ +(p|0)*4294967296.0)*(+(a>>>0)+ +(e|0)*4294967296.0))>>>0|0;e=k&0;a=(D=+(w>>>0)+ +(g|0)*4294967296.0+(+(o>>>0)+ +(e|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);v=r;r=0;u=~~(+(v>>>0)+ +(r|0)*4294967296.0+(+(h>>>0)+ +(l|0)*4294967296.0))>>>0;x=(D=+(v>>>0)+ +(r|0)*4294967296.0+(+(h>>>0)+ +(l|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);l=k;k=0;h=~~(+(u>>>0)+ +(x|0)*4294967296.0+(+(l>>>0)+ +(k|0)*4294967296.0))>>>0;r=(D=+(u>>>0)+ +(x|0)*4294967296.0+(+(l>>>0)+ +(k|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);k=a;a=0;l=aDF(~~((+(m>>>0)+ +(p|0)*4294967296.0)*(+(q>>>0)+ +(d|0)*4294967296.0))>>>0|0,t|0,0,~~(+(w>>>0)+ +(g|0)*4294967296.0+(+(o>>>0)+ +(e|0)*4294967296.0))>>>0|0)|0;e=l;l=E;o=F&1;g=0;w=~~(+(h>>>0)+ +(r|0)*4294967296.0+(+(o>>>0)+ +(g|0)*4294967296.0))>>>0;t=(D=+(h>>>0)+ +(r|0)*4294967296.0+(+(o>>>0)+ +(g|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);g=~~(+(w>>>0)+ +(t|0)*4294967296.0+(+(k>>>0)+ +(a|0)*4294967296.0))>>>0;o=(D=+(w>>>0)+ +(t|0)*4294967296.0+(+(k>>>0)+ +(a|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);do{if(n>>>0>>0|n>>>0==o>>>0&j>>>0>>0){y=-1}else{if(n>>>0>o>>>0|n>>>0==o>>>0&j>>>0>g>>>0){y=1;break}if(s>>>0>>0|s>>>0==l>>>0&b>>>0>>0){y=-1;break}y=(s>>>0>l>>>0|s>>>0==l>>>0&b>>>0>e>>>0)&1}}while(0);i=aa(y,f)|0;return i|0}function aC5(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=a+8|0;d=c[b>>2]|0;do{if((d|0)==0){e=a+4|0;f=c[e>>2]|0;if((f|0)==0){c[9806]=(c[9806]|0)+1;g=aDx(31)|0;do{if((g|0)==0){h=0}else{i=-(g+4|0)&15;j=g+(i+4)|0;c[g+i>>2]=g;if((j|0)==0){h=0;break}k=c[a+12>>2]|0;c[g+(i+8)>>2]=k;c[g+(i+12)>>2]=0;c[9806]=(c[9806]|0)+1;i=aDx((k*24|0|4)+15|0)|0;if((i|0)==0){l=0}else{k=-(i+4|0)&15;c[i+k>>2]=i;l=i+(k+4)|0}c[j>>2]=l;h=j}}while(0);g=a|0;c[h+8>>2]=c[g>>2];c[g>>2]=h;m=h}else{c[e>>2]=c[f+8>>2];m=f}g=m|0;j=m+4|0;k=c[j>>2]|0;if((k|0)>0){i=c[g>>2]|0;n=0;o=k;while(1){k=n+1|0;p=i+24|0;c[i>>2]=(k|0)<(o|0)?p:0;q=c[j>>2]|0;if((k|0)<(q|0)){i=p;n=k;o=q}else{break}}}o=c[g>>2]|0;c[b>>2]=c[o>>2];if((o|0)==0){r=0}else{s=o;break}return r|0}else{c[b>>2]=c[d>>2];s=d}}while(0);aDD(s|0,0,24);r=s;return r|0}function aC6(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ab=0,ac=0,ad=0,ae=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0,bk=0,bl=0,bm=0,bn=0,bo=0,bp=0,bq=0,br=0,bs=0,bt=0,bu=0,bv=0,bw=0,bx=0,by=0,bz=0,bA=0,bB=0,bC=0,bD=0,bE=0,bF=0,bG=0,bH=0,bI=0,bJ=0,bK=0,bL=0,bM=0,bN=0,bO=0,bP=0,bQ=0,bR=0,bS=0,bT=0,bU=0,bV=0,bW=0,bX=0,bY=0,bZ=0,b_=0,b$=0;f=i;i=i+160|0;g=f|0;h=f+8|0;j=f+16|0;k=f+32|0;l=f+56|0;m=f+80|0;n=f+104|0;o=f+128|0;p=f+136|0;q=f+144|0;r=d-b|0;L3751:do{if((r|0)==0){aDD(e|0,0,16);i=f;return}else if((r|0)==1){s=c[(c[a+92>>2]|0)+(b<<2)>>2]|0}else if((r|0)==2){t=c[(c[a+92>>2]|0)+(b<<2)>>2]|0;u=t+112|0;v=c[t+88>>2]|0;w=c[t+200>>2]|0;x=(v|0)==(w|0);y=c[t+92>>2]|0;z=c[t+204>>2]|0;A=(y|0)==(z|0);do{if(x){if(A){if((c[t+96>>2]|0)==(c[t+208>>2]|0)){s=t;break L3751}else{B=y}}else{B=z}if((y|0)!=(B|0)){C=B;E=0;F=2918;break}G=(c[t+96>>2]|0)>(c[t+208>>2]|0);H=G?u:t;c[H>>2]=H;c[H+4>>2]=H;c[e>>2]=H;c[e+4>>2]=H;c[e+8>>2]=H;c[e+12>>2]=H;I=H;J=G?t:u}else{C=z;E=A;F=2918}}while(0);do{if((F|0)==2918){A=y-C|0;c[t>>2]=u;c[t+4>>2]=u;c[u>>2]=t;c[t+116>>2]=t;z=(v-w|0)<0;do{if(z){F=2920}else{if(x&(A|0)<0){F=2920;break}c[e>>2]=u;c[e+4>>2]=t}}while(0);if((F|0)==2920){c[e>>2]=t;c[e+4>>2]=u}G=e+8|0;if((A|0)<0|E&z){c[G>>2]=t;c[e+12>>2]=u;I=t;J=u;break}else{c[G>>2]=u;c[e+12>>2]=t;I=t;J=u;break}}}while(0);u=a+48|0;t=aC5(u)|0;x=aC5(u)|0;u=t+8|0;c[u>>2]=x;c[x+8>>2]=t;w=a+100|0;c[t+20>>2]=c[w>>2];c[x+20>>2]=c[w>>2];c[t+12>>2]=J;c[x+12>>2]=I;c[t+16>>2]=0;c[x+16>>2]=0;x=a+116|0;w=(c[x>>2]|0)+1|0;c[x>>2]=w;x=a+120|0;if((w|0)>(c[x>>2]|0)){c[x>>2]=w}c[t>>2]=t;c[t+4>>2]=t;c[I+8>>2]=t;t=c[u>>2]|0;c[t>>2]=t;c[t+4>>2]=t;c[J+8>>2]=t;i=f;return}else{t=((r|0)/2|0)+b|0;u=c[a+92>>2]|0;w=c[u+(t-1<<2)>>2]|0;x=c[w+88>>2]|0;v=c[w+92>>2]|0;y=c[w+96>>2]|0;w=t;while(1){if((w|0)>=(d|0)){break}G=c[u+(w<<2)>>2]|0;if((c[G+88>>2]|0)!=(x|0)){break}if((c[G+92>>2]|0)!=(v|0)){break}if((c[G+96>>2]|0)==(y|0)){w=w+1|0}else{break}}aC6(a,b,t,e);y=q;aDD(y|0,0,16);aC6(a,w,d,q);v=m;x=n;u=q+4|0;G=c[u>>2]|0;if((G|0)==0){i=f;return}H=e+4|0;if((c[H>>2]|0)==0){K=e;c[K>>2]=c[y>>2];c[K+4>>2]=c[y+4>>2];c[K+8>>2]=c[y+8>>2];c[K+12>>2]=c[y+12>>2];i=f;return}y=a+100|0;c[y>>2]=(c[y>>2]|0)-1;K=e+12|0;L=c[K>>2]|0;M=c[q+8>>2]|0;N=c[L+88>>2]|0;L3766:do{if((N|0)==(c[M+88>>2]|0)){if((c[L+92>>2]|0)!=(c[M+92>>2]|0)){Q=G;F=2954;break}R=c[M+4>>2]|0;if((R|0)==(M|0)){S=c[M+8>>2]|0;if((S|0)==0){T=M;U=N}else{V=c[S+12>>2]|0;T=V;U=c[V+88>>2]|0}W=U+1|0;X=c[T+96>>2]|0;Y=T;Z=L;break}V=c[M>>2]|0;c[R>>2]=V;c[V+4>>2]=R;S=q|0;L3775:do{if((M|0)==(c[S>>2]|0)){_=c[V+88>>2]|0;ab=c[R+88>>2]|0;do{if((_|0)>=(ab|0)){if((_|0)==(ab|0)){if((c[V+92>>2]|0)<(c[R+92>>2]|0)){break}}c[S>>2]=R;break L3775}}while(0);c[S>>2]=V}}while(0);S=c[u>>2]|0;if((M|0)!=(S|0)){Q=S;F=2954;break}S=c[V+88>>2]|0;z=c[R+88>>2]|0;do{if((S|0)<=(z|0)){if((S|0)==(z|0)){if((c[V+92>>2]|0)>(c[R+92>>2]|0)){break}}c[u>>2]=R;Q=R;F=2954;break L3766}}while(0);c[u>>2]=V;Q=V;F=2954}else{Q=G;F=2954}}while(0);if((F|0)==2954){G=e|0;M=q|0;L=c[M>>2]|0;N=0;w=1;t=0;R=0;z=Q;S=H;L3793:while(1){A=N;ab=z;_=c[S>>2]|0;while(1){ac=c[_+88>>2]|0;ad=aa((c[ab+88>>2]|0)-ac|0,w)|0;L3797:do{if((ad|0)>0){ae=(A|0)!=0;ag=_;ah=ab;ai=ad;aj=c[ab+92>>2]|0;while(1){ak=ah+88|0;al=ag+88|0;am=c[ag+92>>2]|0;an=aj-am|0;ao=c[(ae?ag|0:ag+4|0)>>2]|0;L3855:do{if((ao|0)==(ag|0)){ap=ai;aq=ag;ar=al;as=an}else{at=ak|0;au=ai;av=ag;aw=al;ax=am;ay=an;az=ao;while(1){aA=c[az+88>>2]|0;aB=aa(aA-(c[aw>>2]|0)|0,w)|0;aC=c[az+92>>2]|0;aD=aC-ax|0;if((aD|0)>=1){ap=au;aq=av;ar=aw;as=ay;break L3855}if((aB|0)!=0){if((aB|0)>=0){ap=au;aq=av;ar=aw;as=ay;break L3855}aE=aa(aD,au)|0;if((aE|0)>(aa(aB,ay)|0)){ap=au;aq=av;ar=aw;as=ay;break L3855}}aB=aa((c[at>>2]|0)-aA|0,w)|0;aA=az+88|0;aE=aj-aC|0;aD=c[(ae?az|0:az+4|0)>>2]|0;if((aD|0)==(az|0)){ap=aB;aq=az;ar=aA;as=aE;break}else{au=aB;av=az;aw=aA;ax=aC;ay=aE;az=aD}}}}while(0);ao=c[(ae?ah|0:ah+4|0)>>2]|0;if((ao|0)==(ah|0)){aF=aq;aG=ah;break L3797}an=c[ao+88>>2]|0;am=aa(an-(c[ak>>2]|0)|0,w)|0;al=c[ao+92>>2]|0;az=al-aj|0;ay=aa(an-(c[ar>>2]|0)|0,w)|0;if(!((ay|0)>0&(az|0)<0)){aF=aq;aG=ah;break L3797}if((am|0)==0){ag=aq;ah=ao;ai=ay;aj=al;continue}if((am|0)>=0){aF=aq;aG=ah;break L3797}an=aa(az,ap)|0;if((an|0)<(aa(am,as)|0)){ag=aq;ah=ao;ai=ay;aj=al}else{aF=aq;aG=ah;break}}}else{if((ad|0)>=0){ah=c[_+92>>2]|0;aj=(A|0)!=0;L3801:do{if(aj){ai=_;ag=ah;while(1){ae=c[ai>>2]|0;if((ae|0)==(_|0)){aH=ai;break L3801}if((c[ae+88>>2]|0)!=(ac|0)){aH=ai;break L3801}al=c[ae+92>>2]|0;if((al|0)>(ag|0)){aH=ai;break}else{ai=ae;ag=al}}}else{ag=_;ai=ah;while(1){ak=c[ag+4>>2]|0;if((ak|0)==(_|0)){aH=ag;break L3801}if((c[ak+88>>2]|0)!=(ac|0)){aH=ag;break L3801}al=c[ak+92>>2]|0;if((al|0)>(ai|0)){aH=ag;break}else{ag=ak;ai=al}}}}while(0);ah=c[ab+92>>2]|0;if(aj){ai=ab;ag=ah;while(1){al=c[ai+4>>2]|0;if((al|0)==(ab|0)){aF=aH;aG=ai;break L3797}if((c[al+88>>2]|0)!=(ac|0)){aF=aH;aG=ai;break L3797}ak=c[al+92>>2]|0;if((ak|0)<(ag|0)){aF=aH;aG=ai;break L3797}else{ai=al;ag=ak}}}else{ag=ab;ai=ah;while(1){aj=c[ag>>2]|0;if((aj|0)==(ab|0)){aF=aH;aG=ag;break L3797}if((c[aj+88>>2]|0)!=(ac|0)){aF=aH;aG=ag;break L3797}ak=c[aj+92>>2]|0;if((ak|0)<(ai|0)){aF=aH;aG=ag;break L3797}else{ag=aj;ai=ak}}}}ai=c[ab+92>>2]|0;ag=c[_+92>>2]|0;if((A|0)==0){ah=_;ak=ab;aj=ad;al=ai;ae=ag;while(1){ay=c[ak>>2]|0;ao=(ay|0)==(ak|0);am=ak+88|0;an=ay+88|0;az=ay+92|0;ax=ah;aw=aj;av=ae;L3839:while(1){aI=ax+88|0;au=al-av|0;do{if(!ao){aJ=c[an>>2]|0;at=aa(aJ-(c[am>>2]|0)|0,w)|0;aK=c[az>>2]|0;aD=aK-al|0;if((aD|0)<=-1){break}if((at|0)==0){break L3839}if((at|0)>=0){break}aE=aa(aD,aw)|0;if((aE|0)<=(aa(at,au)|0)){break L3839}}}while(0);at=c[ax>>2]|0;if((at|0)==(ax|0)){aF=ax;aG=ak;break L3797}aE=c[at+88>>2]|0;aD=aa(aE-(c[aI>>2]|0)|0,w)|0;aC=c[at+92>>2]|0;aA=aC-av|0;aB=aa((c[am>>2]|0)-aE|0,w)|0;if(!((aB|0)<0&(aA|0)>0)){aF=ax;aG=ak;break L3797}if((aD|0)==0){ax=at;aw=aB;av=aC;continue}if((aD|0)>=0){aF=ax;aG=ak;break L3797}aE=aa(aA,aw)|0;if((aE|0)<(aa(aD,au)|0)){ax=at;aw=aB;av=aC}else{aF=ax;aG=ak;break L3797}}ah=ax;ak=ay;aj=aa(aJ-(c[aI>>2]|0)|0,w)|0;al=aK;ae=av}}else{ae=_;al=ab;aj=ad;ak=ai;ah=ag;while(1){aw=c[al+4>>2]|0;am=(aw|0)==(al|0);az=al+88|0;an=aw+88|0;ao=aw+92|0;aC=ae;aB=aj;at=ah;L3824:while(1){aL=aC+88|0;aD=ak-at|0;do{if(!am){aM=c[an>>2]|0;aE=aa(aM-(c[az>>2]|0)|0,w)|0;aN=c[ao>>2]|0;aA=aN-ak|0;if((aA|0)<=-1){break}if((aE|0)==0){break L3824}if((aE|0)>=0){break}aO=aa(aA,aB)|0;if((aO|0)<=(aa(aE,aD)|0)){break L3824}}}while(0);au=c[aC+4>>2]|0;if((au|0)==(aC|0)){aF=aC;aG=al;break L3797}aE=c[au+88>>2]|0;aO=aa(aE-(c[aL>>2]|0)|0,w)|0;aA=c[au+92>>2]|0;aP=aA-at|0;aQ=aa((c[az>>2]|0)-aE|0,w)|0;if(!((aQ|0)<0&(aP|0)>0)){aF=aC;aG=al;break L3797}if((aO|0)==0){aC=au;aB=aQ;at=aA;continue}if((aO|0)>=0){aF=aC;aG=al;break L3797}aE=aa(aP,aB)|0;if((aE|0)<(aa(aO,aD)|0)){aC=au;aB=aQ;at=aA}else{aF=aC;aG=al;break L3797}}ae=aC;al=aw;aj=aa(aM-(c[aL>>2]|0)|0,w)|0;ak=aN;ah=at}}}}while(0);if((A|0)==0){N=1;w=-1;t=aG;R=aF;z=L;S=G;continue L3793}ad=A+1|0;if((ad|0)<2){A=ad;ab=aG;_=aF}else{break L3793}}}c[aF+4>>2]=aG;c[aG>>2]=aF;c[R>>2]=t;c[t+4>>2]=R;S=c[M>>2]|0;if((c[S+88>>2]|0)<(c[(c[G>>2]|0)+88>>2]|0)){c[G>>2]=S}S=c[u>>2]|0;if((c[S+88>>2]|0)>=(c[(c[H>>2]|0)+88>>2]|0)){c[H>>2]=S}c[K>>2]=c[q+12>>2];S=c[t+88>>2]|0;L=c[R+88>>2]|0;z=S-L|0;w=c[t+92>>2]|0;N=c[R+92>>2]|0;_=w-N|0;ab=c[t+96>>2]|0;A=c[R+96>>2]|0;V=ab-A|0;ad=_;ac=(_|0)<0?-1:0;_=-z|0;ah=_;ak=(_|0)<0?-1:0;_=V;aj=(V|0)<0?-1:0;V=0;al=0;ae=~~(+(V>>>0)+ +(al|0)*4294967296.0-(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0;ag=(D=+(V>>>0)+ +(al|0)*4294967296.0-(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);al=~~((+(_>>>0)+ +(aj|0)*4294967296.0)*(+(ae>>>0)+ +(ag|0)*4294967296.0))>>>0;V=(D=(+(_>>>0)+ +(aj|0)*4294967296.0)*(+(ae>>>0)+ +(ag|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ag=~~((+(_>>>0)+ +(aj|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;ae=(D=(+(_>>>0)+ +(aj|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=z;_=(z|0)<0?-1:0;z=~~((+(aj>>>0)+ +(_|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0;ai=(D=(+(aj>>>0)+ +(_|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);_=~~((+(ad>>>0)+ +(ac|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;aj=(D=(+(ad>>>0)+ +(ac|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aB=~~(+(z>>>0)+ +(ai|0)*4294967296.0-(+(_>>>0)+ +(aj|0)*4294967296.0))>>>0;az=(D=+(z>>>0)+ +(ai|0)*4294967296.0-(+(_>>>0)+ +(aj|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=c[R+8>>2]|0;c[g>>2]=0;if((aj|0)==0){aR=0}else{_=0;ai=0;z=~~(+(_>>>0)+ +(ai|0)*4294967296.0-(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;ao=(D=+(_>>>0)+ +(ai|0)*4294967296.0-(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ai=aj;_=0;while(1){an=c[ai+12>>2]|0;am=c[an+88>>2]|0;av=am-L|0;ay=c[an+92>>2]|0;ax=ay-N|0;aA=c[an+96>>2]|0;an=av;aQ=(av|0)<0?-1:0;av=ax;au=(ax|0)<0?-1:0;ax=(D=(+(av>>>0)+ +(au|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);do{if((~~((+(av>>>0)+ +(au|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0|0)==(~~((+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(z>>>0)+ +(ao|0)*4294967296.0))>>>0|0)&(ax|0)==((D=(+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(z>>>0)+ +(ao|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0)|0)){aO=aA-A|0;aE=aO;aP=(aO|0)<0?-1:0;aO=~~((+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(al>>>0)+ +(V|0)*4294967296.0))>>>0;aS=(D=(+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(al>>>0)+ +(V|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aT=~~((+(av>>>0)+ +(au|0)*4294967296.0)*(+(ag>>>0)+ +(ae|0)*4294967296.0))>>>0;aU=(D=(+(av>>>0)+ +(au|0)*4294967296.0)*(+(ag>>>0)+ +(ae|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aV=~~(+(aT>>>0)+ +(aU|0)*4294967296.0+(+(aO>>>0)+ +(aS|0)*4294967296.0))>>>0;aW=(D=+(aT>>>0)+ +(aU|0)*4294967296.0+(+(aO>>>0)+ +(aS|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aS=~~((+(aE>>>0)+ +(aP|0)*4294967296.0)*(+(aB>>>0)+ +(az|0)*4294967296.0))>>>0;aO=(D=(+(aE>>>0)+ +(aP|0)*4294967296.0)*(+(aB>>>0)+ +(az|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aP=(D=+(aV>>>0)+ +(aW|0)*4294967296.0+(+(aS>>>0)+ +(aO|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aE=0;if(!((aP|0)>(aE|0)|(aP|0)==(aE|0)&~~(+(aV>>>0)+ +(aW|0)*4294967296.0+(+(aS>>>0)+ +(aO|0)*4294967296.0))>>>0>>>0>0>>>0)){aX=_;break}if((_|0)!=0){aO=(c[_+4>>2]|0)==(ai|0);if((c[_>>2]|0)==(ai|0)){if(!aO){aX=_;break}aS=c[_+12>>2]|0;aW=c[(c[ai+8>>2]|0)+12>>2]|0;aV=c[aW+88>>2]|0;aE=(c[aS+88>>2]|0)-aV|0;aP=c[aW+92>>2]|0;aU=c[aW+96>>2]|0;aW=(c[aS+96>>2]|0)-aU|0;aT=aA-aU|0;aU=aa(aT,(c[aS+92>>2]|0)-aP|0)|0;aS=aU-(aa(aW,ay-aP|0)|0)|0;aP=aS;aU=(aS|0)<0?-1:0;aS=aa(aW,am-aV|0)|0;aV=aS-(aa(aT,aE)|0)|0;aE=aV;aT=(aV|0)<0?-1:0;aV=~~((+(aP>>>0)+ +(aU|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;aS=(D=(+(aP>>>0)+ +(aU|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aU=~~((+(aE>>>0)+ +(aT|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0;aP=(D=(+(aE>>>0)+ +(aT|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aT=(D=+(aV>>>0)+ +(aS|0)*4294967296.0+(+(aU>>>0)+ +(aP|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aE=0;aY=(aT|0)>(aE|0)|(aT|0)==(aE|0)&~~(+(aV>>>0)+ +(aS|0)*4294967296.0+(+(aU>>>0)+ +(aP|0)*4294967296.0))>>>0>>>0>0>>>0?2:1}else{aY=aO&1}if((aY|0)!=1){aX=_;break}}c[g>>2]=ai;aX=ai}else{aX=_}}while(0);am=c[ai>>2]|0;if((am|0)==(aj|0)){aR=aX;break}else{ai=am;_=aX}}}_=c[t+8>>2]|0;c[h>>2]=0;if((_|0)==0){aZ=0}else{ai=0;aj=0;A=~~(+(ai>>>0)+ +(aj|0)*4294967296.0-(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;ao=(D=+(ai>>>0)+ +(aj|0)*4294967296.0-(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=_;ai=0;while(1){z=c[aj+12>>2]|0;N=c[z+88>>2]|0;L=N-S|0;K=c[z+92>>2]|0;H=K-w|0;u=c[z+96>>2]|0;z=L;G=(L|0)<0?-1:0;L=H;M=(H|0)<0?-1:0;H=(D=(+(L>>>0)+ +(M|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L3899:do{if((~~((+(L>>>0)+ +(M|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0|0)==(~~((+(z>>>0)+ +(G|0)*4294967296.0)*(+(A>>>0)+ +(ao|0)*4294967296.0))>>>0|0)&(H|0)==((D=(+(z>>>0)+ +(G|0)*4294967296.0)*(+(A>>>0)+ +(ao|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0)|0)){am=u-ab|0;ay=am;aA=(am|0)<0?-1:0;am=~~((+(z>>>0)+ +(G|0)*4294967296.0)*(+(al>>>0)+ +(V|0)*4294967296.0))>>>0;au=(D=(+(z>>>0)+ +(G|0)*4294967296.0)*(+(al>>>0)+ +(V|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);av=~~((+(L>>>0)+ +(M|0)*4294967296.0)*(+(ag>>>0)+ +(ae|0)*4294967296.0))>>>0;aQ=(D=(+(L>>>0)+ +(M|0)*4294967296.0)*(+(ag>>>0)+ +(ae|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=~~(+(av>>>0)+ +(aQ|0)*4294967296.0+(+(am>>>0)+ +(au|0)*4294967296.0))>>>0;ax=(D=+(av>>>0)+ +(aQ|0)*4294967296.0+(+(am>>>0)+ +(au|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);au=~~((+(ay>>>0)+ +(aA|0)*4294967296.0)*(+(aB>>>0)+ +(az|0)*4294967296.0))>>>0;am=(D=(+(ay>>>0)+ +(aA|0)*4294967296.0)*(+(aB>>>0)+ +(az|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aA=(D=+(an>>>0)+ +(ax|0)*4294967296.0+(+(au>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ay=0;if(!((aA|0)>(ay|0)|(aA|0)==(ay|0)&~~(+(an>>>0)+ +(ax|0)*4294967296.0+(+(au>>>0)+ +(am|0)*4294967296.0))>>>0>>>0>0>>>0)){a_=ai;break}do{if((ai|0)!=0){if((c[ai>>2]|0)!=(aj|0)){a_=ai;break L3899}if((c[ai+4>>2]|0)!=(aj|0)){break}am=c[ai+12>>2]|0;au=c[(c[aj+8>>2]|0)+12>>2]|0;ax=c[au+88>>2]|0;an=(c[am+88>>2]|0)-ax|0;ay=c[au+92>>2]|0;aA=c[au+96>>2]|0;au=(c[am+96>>2]|0)-aA|0;aQ=u-aA|0;aA=aa(aQ,(c[am+92>>2]|0)-ay|0)|0;am=aA-(aa(au,K-ay|0)|0)|0;ay=am;aA=(am|0)<0?-1:0;am=aa(au,N-ax|0)|0;ax=am-(aa(aQ,an)|0)|0;an=ax;aQ=(ax|0)<0?-1:0;ax=~~((+(ay>>>0)+ +(aA|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0))>>>0;am=(D=(+(ay>>>0)+ +(aA|0)*4294967296.0)*(+(ad>>>0)+ +(ac|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aA=~~((+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0))>>>0;ay=(D=(+(an>>>0)+ +(aQ|0)*4294967296.0)*(+(ah>>>0)+ +(ak|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aQ=(D=+(ax>>>0)+ +(am|0)*4294967296.0+(+(aA>>>0)+ +(ay|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=0;if(!((aQ|0)>(an|0)|(aQ|0)==(an|0)&~~(+(ax>>>0)+ +(am|0)*4294967296.0+(+(aA>>>0)+ +(ay|0)*4294967296.0))>>>0>>>0>0>>>0)){a_=ai;break L3899}}}while(0);c[h>>2]=aj;a_=aj}else{a_=ai}}while(0);N=c[aj>>2]|0;if((N|0)==(_|0)){aZ=a_;break}else{aj=N;ai=a_}}}do{if((aR|0)==0&(aZ|0)==0){a$=t;a0=R}else{aC8(a,R,t,g,h);ai=c[g>>2]|0;if((ai|0)==0){a1=R}else{a1=c[ai+12>>2]|0}ai=c[h>>2]|0;if((ai|0)==0){a$=t;a0=a1;break}a$=c[ai+12>>2]|0;a0=a1}}while(0);W=c[a$+88>>2]|0;X=(c[a$+96>>2]|0)+1|0;Y=a$;Z=a0}t=c[Y+92>>2]|0;R=j|0;ai=j+4|0;aj=j+8|0;_=j+12|0;ak=k|0;ah=k+8|0;ac=k+16|0;ad=l|0;az=l+8|0;aB=l+16|0;ae=m+16|0;ag=m+8|0;V=n+16|0;al=n+8|0;ab=a+48|0;ao=a+116|0;A=a+120|0;w=a+56|0;S=m|0;N=0;K=0;u=0;M=0;L=1;G=0;z=0;H=0;ay=0;aA=W;am=t;ax=X;an=Y;aQ=Z;au=t;while(1){t=aQ+88|0;av=(c[an+88>>2]|0)-(c[t>>2]|0)|0;aO=aQ+92|0;aP=au-(c[aO>>2]|0)|0;aU=aQ+96|0;aS=(c[an+96>>2]|0)-(c[aU>>2]|0)|0;c[R>>2]=av;c[ai>>2]=aP;c[aj>>2]=aS;c[_>>2]=-1;aV=aA-(c[t>>2]|0)|0;t=am-(c[aO>>2]|0)|0;aO=ax-(c[aU>>2]|0)|0;aU=aa(aS,t)|0;aE=aU-(aa(aP,aO)|0)|0;aU=aE;aT=(aE|0)<0?-1:0;aE=aa(av,aO)|0;aO=aE-(aa(aS,aV)|0)|0;aE=aO;aW=(aO|0)<0?-1:0;aO=aa(aP,aV)|0;aV=aO-(aa(av,t)|0)|0;t=aV;aO=(aV|0)<0?-1:0;c[ak>>2]=aU;c[ak+4>>2]=aT;c[ah>>2]=aE;c[ah+4>>2]=aW;c[ac>>2]=t;c[ac+4>>2]=aO;aV=aP;a2=(aP|0)<0?-1:0;aP=~~((+(t>>>0)+ +(aO|0)*4294967296.0)*(+(aV>>>0)+ +(a2|0)*4294967296.0))>>>0;a3=(D=(+(t>>>0)+ +(aO|0)*4294967296.0)*(+(aV>>>0)+ +(a2|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a4=aS;a5=(aS|0)<0?-1:0;aS=~~((+(a4>>>0)+ +(a5|0)*4294967296.0)*(+(aE>>>0)+ +(aW|0)*4294967296.0))>>>0;a6=(D=(+(a4>>>0)+ +(a5|0)*4294967296.0)*(+(aE>>>0)+ +(aW|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a7=(D=+(aP>>>0)+ +(a3|0)*4294967296.0-(+(aS>>>0)+ +(a6|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a8=~~((+(aU>>>0)+ +(aT|0)*4294967296.0)*(+(a4>>>0)+ +(a5|0)*4294967296.0))>>>0;a9=(D=(+(aU>>>0)+ +(aT|0)*4294967296.0)*(+(a4>>>0)+ +(a5|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a5=av;a4=(av|0)<0?-1:0;av=~~((+(a5>>>0)+ +(a4|0)*4294967296.0)*(+(t>>>0)+ +(aO|0)*4294967296.0))>>>0;ba=(D=(+(a5>>>0)+ +(a4|0)*4294967296.0)*(+(t>>>0)+ +(aO|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aO=(D=+(a8>>>0)+ +(a9|0)*4294967296.0-(+(av>>>0)+ +(ba|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=~~((+(a5>>>0)+ +(a4|0)*4294967296.0)*(+(aE>>>0)+ +(aW|0)*4294967296.0))>>>0;bb=(D=(+(a5>>>0)+ +(a4|0)*4294967296.0)*(+(aE>>>0)+ +(aW|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aW=~~((+(aU>>>0)+ +(aT|0)*4294967296.0)*(+(aV>>>0)+ +(a2|0)*4294967296.0))>>>0;aE=(D=(+(aU>>>0)+ +(aT|0)*4294967296.0)*(+(aV>>>0)+ +(a2|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);a2=(D=+(t>>>0)+ +(bb|0)*4294967296.0-(+(aW>>>0)+ +(aE|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[ad>>2]=~~(+(aP>>>0)+ +(a3|0)*4294967296.0-(+(aS>>>0)+ +(a6|0)*4294967296.0))>>>0;c[ad+4>>2]=a7;c[az>>2]=~~(+(a8>>>0)+ +(a9|0)*4294967296.0-(+(av>>>0)+ +(ba|0)*4294967296.0))>>>0;c[az+4>>2]=aO;c[aB>>2]=~~(+(t>>>0)+ +(bb|0)*4294967296.0-(+(aW>>>0)+ +(aE|0)*4294967296.0))>>>0;c[aB+4>>2]=a2;aDD(v|0,0,20);a2=aC7(a,0,aQ,j,k,l,m)|0;aDD(x|0,0,20);aE=aC7(a,1,an,j,k,l,n)|0;aW=(a2|0)!=0;bb=aW^1;t=(aE|0)==0;if(t&bb){F=3047;break}if(t|bb){bc=aW?-1:1}else{bc=aC4(c[S>>2]|0,c[S+4>>2]|0,c[ag>>2]|0,c[ag+4>>2]|0,c[ae>>2]|0,n)|0}do{if(L){F=3059}else{if((bc|0)>-1){if((c[V>>2]|0)>=0){F=3059;break}if((c[al>>2]|0)==0&(c[al+4>>2]|0)==0){bd=u;be=M;bf=H;bg=ay;F=3066;break}else{F=3059;break}}if((c[ae>>2]|0)>=0){F=3059;break}if(!((c[ag>>2]|0)==0&(c[ag+4>>2]|0)==0)){F=3059;break}c[o>>2]=a2;c[p>>2]=aE;bh=ax;bi=am;bj=aA;bk=ay;bl=H;bm=z;bn=G;bo=a2;bp=M;bq=u;br=an;F=3088}}while(0);if((F|0)==3059){F=0;aW=aC5(ab)|0;bb=aC5(ab)|0;t=aW+8|0;c[t>>2]=bb;c[bb+8>>2]=aW;c[aW+20>>2]=c[y>>2];c[bb+20>>2]=c[y>>2];c[aW+12>>2]=an;c[bb+12>>2]=aQ;c[aW+16>>2]=0;c[bb+16>>2]=0;bb=(c[ao>>2]|0)+1|0;c[ao>>2]=bb;if((bb|0)>(c[A>>2]|0)){c[A>>2]=bb}if((M|0)==0){bs=aW}else{c[M+4>>2]=aW;bs=u}c[aW>>2]=M;bb=c[t>>2]|0;if((ay|0)==0){bt=bb}else{c[ay>>2]=bb;bt=H}c[bb+4>>2]=ay;bd=bs;be=aW;bf=bt;bg=bb;F=3066}do{if((F|0)==3066){F=0;c[o>>2]=a2;c[p>>2]=aE;if((bc|0)==0){aC8(a,aQ,an,o,p);bu=c[p>>2]|0}else{if((bc|0)>-1){bu=aE}else{bh=ax;bi=am;bj=aA;bk=bg;bl=bf;bm=z;bn=G;bo=a2;bp=be;bq=bd;br=an;F=3088;break}}if((bu|0)==0){bv=G;bw=z;bx=bf;by=bg;bz=aA;bA=am;bB=ax;bC=an}else{bb=(G|0)!=0;do{if(bb){aW=c[G>>2]|0;if((aW|0)==(aE|0)){break}else{bD=aW}while(1){aW=bD|0;t=c[aW>>2]|0;aO=c[bD+8>>2]|0;if((t|0)==(bD|0)){c[(c[aO+12>>2]|0)+8>>2]=0}else{ba=bD+4|0;c[t+4>>2]=c[ba>>2];c[c[ba>>2]>>2]=t;c[(c[aO+12>>2]|0)+8>>2]=t}ba=aO|0;av=c[ba>>2]|0;if((av|0)==(aO|0)){c[(c[bD+12>>2]|0)+8>>2]=0}else{a9=aO+4|0;c[av+4>>2]=c[a9>>2];c[c[a9>>2]>>2]=av;c[(c[bD+12>>2]|0)+8>>2]=av}aDD(bD|0,0,20);c[aW>>2]=c[w>>2];c[w>>2]=bD;aDD(aO|0,0,20);c[ba>>2]=c[w>>2];c[w>>2]=aO;c[ao>>2]=(c[ao>>2]|0)-1;if((t|0)==(aE|0)){break}else{bD=t}}}}while(0);if((bg|0)==0){bE=bb?z:aE;bF=bf;bG=bu}else{if(bb){c[G>>2]=bf;c[bf+4>>2]=G;bH=z;bI=aE+4|0}else{t=aE+4|0;aO=c[t>>2]|0;c[aO>>2]=bf;c[bf+4>>2]=aO;bH=bf;bI=t}c[bg>>2]=aE;c[bI>>2]=bg;bE=bH;bF=0;bG=c[p>>2]|0}bv=c[bG+8>>2]|0;bw=bE;bx=bF;by=0;bz=c[an+88>>2]|0;bA=c[an+92>>2]|0;bB=c[an+96>>2]|0;bC=c[bG+12>>2]|0}if((bc|0)>=1){bJ=N;bK=K;bL=bd;bM=be;bN=bz;bO=bA;bP=bB;bQ=by;bR=bx;bS=bw;bT=bv;bU=bC;bV=aQ;break}bh=bB;bi=bA;bj=bz;bk=by;bl=bx;bm=bw;bn=bv;bo=c[o>>2]|0;bp=be;bq=bd;br=bC;F=3088}}while(0);do{if((F|0)==3088){F=0;if((bo|0)==0){bJ=N;bK=K;bL=bq;bM=bp;bN=bj;bO=bi;bP=bh;bQ=bk;bR=bl;bS=bm;bT=bn;bU=br;bV=aQ;break}aE=(N|0)!=0;do{if(aE){t=c[N+4>>2]|0;if((t|0)==(a2|0)){break}else{bW=t}while(1){t=bW+4|0;aO=c[t>>2]|0;ba=bW|0;aW=c[ba>>2]|0;av=c[bW+8>>2]|0;if((aW|0)==(bW|0)){c[(c[av+12>>2]|0)+8>>2]=0}else{c[aW+4>>2]=aO;c[c[t>>2]>>2]=aW;c[(c[av+12>>2]|0)+8>>2]=aW}aW=av|0;t=c[aW>>2]|0;if((t|0)==(av|0)){c[(c[bW+12>>2]|0)+8>>2]=0}else{a9=av+4|0;c[t+4>>2]=c[a9>>2];c[c[a9>>2]>>2]=t;c[(c[bW+12>>2]|0)+8>>2]=t}aDD(bW|0,0,20);c[ba>>2]=c[w>>2];c[w>>2]=bW;aDD(av|0,0,20);c[aW>>2]=c[w>>2];c[w>>2]=av;c[ao>>2]=(c[ao>>2]|0)-1;if((aO|0)==(a2|0)){break}else{bW=aO}}}}while(0);if((bp|0)==0){bX=aE?K:a2;bY=bq;bZ=bo}else{if(aE){c[bq>>2]=N;c[N+4>>2]=bq;b_=K;b$=a2|0}else{bb=a2|0;aO=c[bb>>2]|0;c[bq>>2]=aO;c[aO+4>>2]=bq;b_=bq;b$=bb}c[b$>>2]=bp;c[bp+4>>2]=a2;bX=b_;bY=0;bZ=c[o>>2]|0}bJ=c[bZ+8>>2]|0;bK=bX;bL=bY;bM=0;bN=c[aQ+88>>2]|0;bO=c[aQ+92>>2]|0;bP=c[aQ+96>>2]|0;bQ=bk;bR=bl;bS=bm;bT=bn;bU=br;bV=c[bZ+12>>2]|0}}while(0);if((bV|0)==(Z|0)&(bU|0)==(Y|0)){break}N=bJ;K=bK;u=bL;M=bM;L=0;G=bT;z=bS;H=bR;ay=bQ;aA=bN;am=bO;ax=bP;an=bU;aQ=bV;au=c[bU+92>>2]|0}if((F|0)==3047){au=aC5(ab)|0;ax=aC5(ab)|0;am=au+8|0;c[am>>2]=ax;c[ax+8>>2]=au;c[au+20>>2]=c[y>>2];c[ax+20>>2]=c[y>>2];c[au+12>>2]=an;c[ax+12>>2]=aQ;c[au+16>>2]=0;c[ax+16>>2]=0;ax=(c[ao>>2]|0)+1|0;c[ao>>2]=ax;if((ax|0)>(c[A>>2]|0)){c[A>>2]=ax}c[au>>2]=au;c[au+4>>2]=au;c[aQ+8>>2]=au;au=c[am>>2]|0;c[au>>2]=au;c[au+4>>2]=au;c[an+8>>2]=au;i=f;return}do{if((bJ|0)==0){c[bL>>2]=bM;c[bM+4>>2]=bL;c[Z+8>>2]=bM}else{au=bJ+4|0;am=c[au>>2]|0;if((am|0)!=(bK|0)){ax=am;while(1){am=ax+4|0;aA=c[am>>2]|0;ay=ax|0;H=c[ay>>2]|0;z=c[ax+8>>2]|0;if((H|0)==(ax|0)){c[(c[z+12>>2]|0)+8>>2]=0}else{c[H+4>>2]=aA;c[c[am>>2]>>2]=H;c[(c[z+12>>2]|0)+8>>2]=H}H=z|0;am=c[H>>2]|0;if((am|0)==(z|0)){c[(c[ax+12>>2]|0)+8>>2]=0}else{G=z+4|0;c[am+4>>2]=c[G>>2];c[c[G>>2]>>2]=am;c[(c[ax+12>>2]|0)+8>>2]=am}aDD(ax|0,0,20);c[ay>>2]=c[w>>2];c[w>>2]=ax;aDD(z|0,0,20);c[H>>2]=c[w>>2];c[w>>2]=z;c[ao>>2]=(c[ao>>2]|0)-1;if((aA|0)==(bK|0)){break}else{ax=aA}}}if((bM|0)==0){break}c[bL>>2]=bJ;c[au>>2]=bL;c[bK>>2]=bM;c[bM+4>>2]=bK}}while(0);if((bT|0)==0){c[bQ>>2]=bR;c[bR+4>>2]=bQ;c[Y+8>>2]=bQ;i=f;return}an=bT|0;aQ=c[an>>2]|0;if((aQ|0)!=(bS|0)){A=aQ;while(1){aQ=A|0;y=c[aQ>>2]|0;ab=c[A+8>>2]|0;if((y|0)==(A|0)){c[(c[ab+12>>2]|0)+8>>2]=0}else{ax=A+4|0;c[y+4>>2]=c[ax>>2];c[c[ax>>2]>>2]=y;c[(c[ab+12>>2]|0)+8>>2]=y}ax=ab|0;aA=c[ax>>2]|0;if((aA|0)==(ab|0)){c[(c[A+12>>2]|0)+8>>2]=0}else{z=ab+4|0;c[aA+4>>2]=c[z>>2];c[c[z>>2]>>2]=aA;c[(c[A+12>>2]|0)+8>>2]=aA}aDD(A|0,0,20);c[aQ>>2]=c[w>>2];c[w>>2]=A;aDD(ab|0,0,20);c[ax>>2]=c[w>>2];c[w>>2]=ab;c[ao>>2]=(c[ao>>2]|0)-1;if((y|0)==(bS|0)){break}else{A=y}}}if((bQ|0)==0){i=f;return}c[an>>2]=bR;c[bR+4>>2]=bT;c[bQ>>2]=bS;c[bS+4>>2]=bQ;i=f;return}}while(0);c[s+8>>2]=0;c[s>>2]=s;c[s+4>>2]=s;c[e>>2]=s;c[e+4>>2]=s;c[e+8>>2]=s;c[e+12>>2]=s;i=f;return}function aC7(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ab=0,ac=0,ad=0,ae=0,ag=0,ah=0,ai=0;i=d+8|0;j=c[i>>2]|0;if((j|0)==0){k=0;return k|0}l=a+100|0;a=d+88|0;m=d+92|0;n=d+96|0;d=g|0;o=g+8|0;p=g+16|0;g=f|0;q=f+8|0;r=f+16|0;f=h|0;s=h+8|0;t=h+16|0;u=e+8|0;v=e+4|0;w=e|0;e=0;x=j;while(1){do{if((c[x+20>>2]|0)>(c[l>>2]|0)){j=c[x+12>>2]|0;y=c[j+88>>2]|0;z=y-(c[a>>2]|0)|0;A=c[j+92>>2]|0;B=A-(c[m>>2]|0)|0;C=c[j+96>>2]|0;j=C-(c[n>>2]|0)|0;E=z;F=(z|0)<0?-1:0;G=c[d>>2]|0;H=c[d+4>>2]|0;I=~~((+(E>>>0)+ +(F|0)*4294967296.0)*(+(G>>>0)+ +(H|0)*4294967296.0))>>>0;J=(D=(+(E>>>0)+ +(F|0)*4294967296.0)*(+(G>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=B;G=(B|0)<0?-1:0;K=c[o>>2]|0;L=c[o+4>>2]|0;M=~~((+(H>>>0)+ +(G|0)*4294967296.0)*(+(K>>>0)+ +(L|0)*4294967296.0))>>>0;N=(D=(+(H>>>0)+ +(G|0)*4294967296.0)*(+(K>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=~~(+(M>>>0)+ +(N|0)*4294967296.0+(+(I>>>0)+ +(J|0)*4294967296.0))>>>0;K=(D=+(M>>>0)+ +(N|0)*4294967296.0+(+(I>>>0)+ +(J|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);J=j;I=(j|0)<0?-1:0;N=c[p>>2]|0;M=c[p+4>>2]|0;Q=~~((+(J>>>0)+ +(I|0)*4294967296.0)*(+(N>>>0)+ +(M|0)*4294967296.0))>>>0;R=(D=(+(J>>>0)+ +(I|0)*4294967296.0)*(+(N>>>0)+ +(M|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);M=~~(+(L>>>0)+ +(K|0)*4294967296.0+(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;N=(D=+(L>>>0)+ +(K|0)*4294967296.0+(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);R=c[g>>2]|0;Q=c[g+4>>2]|0;K=~~((+(R>>>0)+ +(Q|0)*4294967296.0)*(+(E>>>0)+ +(F|0)*4294967296.0))>>>0;L=(D=(+(R>>>0)+ +(Q|0)*4294967296.0)*(+(E>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);F=c[q>>2]|0;E=c[q+4>>2]|0;Q=~~((+(F>>>0)+ +(E|0)*4294967296.0)*(+(H>>>0)+ +(G|0)*4294967296.0))>>>0;R=(D=(+(F>>>0)+ +(E|0)*4294967296.0)*(+(H>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=~~(+(Q>>>0)+ +(R|0)*4294967296.0+(+(K>>>0)+ +(L|0)*4294967296.0))>>>0;H=(D=+(Q>>>0)+ +(R|0)*4294967296.0+(+(K>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=c[r>>2]|0;K=c[r+4>>2]|0;R=~~((+(L>>>0)+ +(K|0)*4294967296.0)*(+(J>>>0)+ +(I|0)*4294967296.0))>>>0;Q=(D=(+(L>>>0)+ +(K|0)*4294967296.0)*(+(J>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);I=~~(+(G>>>0)+ +(H|0)*4294967296.0+(+(R>>>0)+ +(Q|0)*4294967296.0))>>>0;J=(D=+(G>>>0)+ +(H|0)*4294967296.0+(+(R>>>0)+ +(Q|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Q=0;if((N|0)>(Q|0)|(N|0)==(Q|0)&M>>>0>0>>>0){S=N;T=M;U=1}else{Q=0;R=(N|0)<(Q|0)|(N|0)==(Q|0)&M>>>0<0>>>0;Q=0;H=0;S=R?(D=+(Q>>>0)+ +(H|0)*4294967296.0-(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;T=R?~~(+(Q>>>0)+ +(H|0)*4294967296.0-(+(M>>>0)+ +(N|0)*4294967296.0))>>>0:0;U=R?-1:0}R=0;if((J|0)>(R|0)|(J|0)==(R|0)&I>>>0>0>>>0){V=J;W=I;X=U}else{R=0;if((J|0)<(R|0)|(J|0)==(R|0)&I>>>0<0>>>0){R=0;N=0;Y=(I|0)==0&(J|0)==0;Z=(D=+(R>>>0)+ +(N|0)*4294967296.0-(+(I>>>0)+ +(J|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);_=~~(+(R>>>0)+ +(N|0)*4294967296.0-(+(I>>>0)+ +(J|0)*4294967296.0))>>>0;ab=-U|0}else{Y=1;Z=0;_=0;ab=U}if((ab|0)==0&Y){ac=e;break}else{V=Z;W=_;X=ab}}if((e|0)==0){c[f>>2]=T;c[f+4>>2]=S;c[s>>2]=W;c[s+4>>2]=V;c[t>>2]=X;ac=x;break}J=aC4(T,S,W,V,X,h)|0;if((J|0)<0){c[f>>2]=T;c[f+4>>2]=S;c[s>>2]=W;c[s+4>>2]=V;c[t>>2]=X;ac=x;break}if((J|0)!=0){ac=e;break}J=(c[e+4>>2]|0)==(x|0);do{if((c[e>>2]|0)==(x|0)){if(!J){ad=2;break}I=c[u>>2]|0;N=aa(I,B)|0;R=c[v>>2]|0;M=N-(aa(R,j)|0)|0;N=M;H=(M|0)<0?-1:0;M=c[w>>2]|0;Q=aa(M,j)|0;G=Q-(aa(z,I)|0)|0;I=G;Q=(G|0)<0?-1:0;G=aa(z,R)|0;R=G-(aa(M,B)|0)|0;M=R;G=(R|0)<0?-1:0;R=c[e+12>>2]|0;K=c[(c[x+8>>2]|0)+12>>2]|0;L=c[K+88>>2]|0;E=(c[R+88>>2]|0)-L|0;F=c[K+92>>2]|0;ae=(c[R+92>>2]|0)-F|0;ag=c[K+96>>2]|0;K=(c[R+96>>2]|0)-ag|0;R=y-L|0;L=A-F|0;F=C-ag|0;ag=aa(F,ae)|0;ah=ag-(aa(L,K)|0)|0;ag=ah;ai=(ah|0)<0?-1:0;ah=aa(R,K)|0;K=ah-(aa(F,E)|0)|0;F=K;ah=(K|0)<0?-1:0;K=aa(L,E)|0;E=K-(aa(R,ae)|0)|0;ae=E;R=(E|0)<0?-1:0;E=~~((+(ag>>>0)+ +(ai|0)*4294967296.0)*(+(N>>>0)+ +(H|0)*4294967296.0))>>>0;K=(D=(+(ag>>>0)+ +(ai|0)*4294967296.0)*(+(N>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=~~((+(F>>>0)+ +(ah|0)*4294967296.0)*(+(I>>>0)+ +(Q|0)*4294967296.0))>>>0;N=(D=(+(F>>>0)+ +(ah|0)*4294967296.0)*(+(I>>>0)+ +(Q|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Q=~~((+(ae>>>0)+ +(R|0)*4294967296.0)*(+(M>>>0)+ +(G|0)*4294967296.0))>>>0;I=(D=(+(ae>>>0)+ +(R|0)*4294967296.0)*(+(M>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=~~(+(E>>>0)+ +(K|0)*4294967296.0+(+(Q>>>0)+ +(I|0)*4294967296.0))>>>0;M=(D=+(E>>>0)+ +(K|0)*4294967296.0+(+(Q>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);I=(D=+(G>>>0)+ +(M|0)*4294967296.0+(+(H>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Q=0;ad=(I|0)>(Q|0)|(I|0)==(Q|0)&~~(+(G>>>0)+ +(M|0)*4294967296.0+(+(H>>>0)+ +(N|0)*4294967296.0))>>>0>>>0>0>>>0?2:1}else{ad=J&1}}while(0);ac=(ad|0)==2^b?e:x}else{ac=e}}while(0);J=c[x>>2]|0;if((J|0)==(c[i>>2]|0)){k=ac;break}else{e=ac;x=J}}return k|0}function aC8(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,ab=0,ac=0,ad=0,ae=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0,aH=0,aI=0,aJ=0,aK=0,aL=0,aM=0,aN=0,aO=0,aP=0,aQ=0,aR=0,aS=0,aT=0,aU=0,aV=0,aW=0,aX=0,aY=0,aZ=0,a_=0,a$=0,a0=0,a1=0,a2=0,a3=0,a4=0,a5=0,a6=0,a7=0,a8=0,a9=0,ba=0,bb=0,bc=0,bd=0,be=0,bf=0,bg=0,bh=0,bi=0,bj=0;g=i;i=i+96|0;h=g|0;j=g+24|0;k=g+48|0;l=g+72|0;m=c[e>>2]|0;n=c[f>>2]|0;o=(m|0)!=0;if(o){p=c[m+12>>2]|0}else{p=b}q=c[p+88>>2]|0;r=c[p+92>>2]|0;s=c[p+96>>2]|0;if((n|0)==0){t=d}else{t=c[n+12>>2]|0}p=c[t+88>>2]|0;u=c[t+92>>2]|0;v=c[t+96>>2]|0;t=c[b+88>>2]|0;w=(c[d+88>>2]|0)-t|0;x=c[b+92>>2]|0;y=(c[d+92>>2]|0)-x|0;z=c[b+96>>2]|0;b=(c[d+96>>2]|0)-z|0;d=c[(o?m:n)+12>>2]|0;o=(c[d+88>>2]|0)-t|0;A=(c[d+92>>2]|0)-x|0;B=(c[d+96>>2]|0)-z|0;d=aa(A,b)|0;C=d-(aa(B,y)|0)|0;d=C;E=(C|0)<0?-1:0;C=aa(B,w)|0;B=C-(aa(o,b)|0)|0;C=B;F=(B|0)<0?-1:0;B=aa(o,y)|0;o=B-(aa(A,w)|0)|0;A=o;B=(o|0)<0?-1:0;o=t;G=(t|0)<0?-1:0;t=~~((+(d>>>0)+ +(E|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0))>>>0;H=(D=(+(d>>>0)+ +(E|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=x;o=(x|0)<0?-1:0;x=~~((+(C>>>0)+ +(F|0)*4294967296.0)*(+(G>>>0)+ +(o|0)*4294967296.0))>>>0;I=(D=(+(C>>>0)+ +(F|0)*4294967296.0)*(+(G>>>0)+ +(o|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);o=z;G=(z|0)<0?-1:0;z=~~((+(A>>>0)+ +(B|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0))>>>0;J=(D=(+(A>>>0)+ +(B|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=~~(+(t>>>0)+ +(H|0)*4294967296.0+(+(z>>>0)+ +(J|0)*4294967296.0))>>>0;o=(D=+(t>>>0)+ +(H|0)*4294967296.0+(+(z>>>0)+ +(J|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);J=~~(+(G>>>0)+ +(o|0)*4294967296.0+(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;z=(D=+(G>>>0)+ +(o|0)*4294967296.0+(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);I=y;x=(y|0)<0?-1:0;o=~~((+(A>>>0)+ +(B|0)*4294967296.0)*(+(I>>>0)+ +(x|0)*4294967296.0))>>>0;G=(D=(+(A>>>0)+ +(B|0)*4294967296.0)*(+(I>>>0)+ +(x|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=b;t=(b|0)<0?-1:0;K=~~((+(C>>>0)+ +(F|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;L=(D=(+(C>>>0)+ +(F|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);M=~~(+(o>>>0)+ +(G|0)*4294967296.0-(+(K>>>0)+ +(L|0)*4294967296.0))>>>0;N=(D=+(o>>>0)+ +(G|0)*4294967296.0-(+(K>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=~~((+(d>>>0)+ +(E|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;K=(D=(+(d>>>0)+ +(E|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=w;H=(w|0)<0?-1:0;G=~~((+(A>>>0)+ +(B|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0))>>>0;o=(D=(+(A>>>0)+ +(B|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Q=~~(+(L>>>0)+ +(K|0)*4294967296.0-(+(G>>>0)+ +(o|0)*4294967296.0))>>>0;R=(D=+(L>>>0)+ +(K|0)*4294967296.0-(+(G>>>0)+ +(o|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);o=~~((+(C>>>0)+ +(F|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0))>>>0;G=(D=(+(C>>>0)+ +(F|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=~~((+(d>>>0)+ +(E|0)*4294967296.0)*(+(I>>>0)+ +(x|0)*4294967296.0))>>>0;t=(D=(+(d>>>0)+ +(E|0)*4294967296.0)*(+(I>>>0)+ +(x|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);x=~~(+(o>>>0)+ +(G|0)*4294967296.0-(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;I=(D=+(o>>>0)+ +(G|0)*4294967296.0-(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=q;H=(q|0)<0?-1:0;G=~~((+(M>>>0)+ +(N|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0))>>>0;o=(D=(+(M>>>0)+ +(N|0)*4294967296.0)*(+(t>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=r;t=(r|0)<0?-1:0;K=~~((+(Q>>>0)+ +(R|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;L=(D=(+(Q>>>0)+ +(R|0)*4294967296.0)*(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=~~(+(K>>>0)+ +(L|0)*4294967296.0+(+(G>>>0)+ +(o|0)*4294967296.0))>>>0;H=(D=+(K>>>0)+ +(L|0)*4294967296.0+(+(G>>>0)+ +(o|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);o=s;G=(s|0)<0?-1:0;L=~~((+(x>>>0)+ +(I|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0))>>>0;K=(D=(+(x>>>0)+ +(I|0)*4294967296.0)*(+(o>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);G=~~(+(t>>>0)+ +(H|0)*4294967296.0+(+(L>>>0)+ +(K|0)*4294967296.0))>>>0;o=(D=+(t>>>0)+ +(H|0)*4294967296.0+(+(L>>>0)+ +(K|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);do{if((m|0)==0){S=o;T=G;U=q;V=r;W=s;X=n}else{if((c[m+12>>2]|0)==0){S=o;T=G;U=q;V=r;W=s;X=n;break}K=a+100|0;L=s;H=r;t=q;Y=o;Z=G;_=m;while(1){ab=c[(c[_+8>>2]|0)+4>>2]|0;ac=ab+12|0;ad=c[ac>>2]|0;ae=c[ad+88>>2]|0;ag=ae;ah=(ae|0)<0?-1:0;ae=~~((+(ag>>>0)+ +(ah|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0))>>>0;ai=(D=(+(ag>>>0)+ +(ah|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=c[ad+92>>2]|0;ak=aj;al=(aj|0)<0?-1:0;aj=~~((+(ak>>>0)+ +(al|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0))>>>0;am=(D=(+(ak>>>0)+ +(al|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=~~(+(aj>>>0)+ +(am|0)*4294967296.0+(+(ae>>>0)+ +(ai|0)*4294967296.0))>>>0;ao=(D=+(aj>>>0)+ +(am|0)*4294967296.0+(+(ae>>>0)+ +(ai|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ai=c[ad+96>>2]|0;ad=ai;ae=(ai|0)<0?-1:0;ai=~~((+(ad>>>0)+ +(ae|0)*4294967296.0)*(+(A>>>0)+ +(B|0)*4294967296.0))>>>0;am=(D=(+(ad>>>0)+ +(ae|0)*4294967296.0)*(+(A>>>0)+ +(B|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=(D=+(an>>>0)+ +(ao|0)*4294967296.0+(+(ai>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);if((aj|0)<(z|0)|(aj|0)==(z|0)&~~(+(an>>>0)+ +(ao|0)*4294967296.0+(+(ai>>>0)+ +(am|0)*4294967296.0))>>>0>>>0>>0){ap=L;aq=H;ar=t;as=Y;at=Z;break}if((c[ab+20>>2]|0)==(c[K>>2]|0)){ap=L;aq=H;ar=t;as=Y;at=Z;break}am=~~((+(ag>>>0)+ +(ah|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;ai=(D=(+(ag>>>0)+ +(ah|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ah=~~((+(ak>>>0)+ +(al|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;ag=(D=(+(ak>>>0)+ +(al|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);al=~~(+(ah>>>0)+ +(ag|0)*4294967296.0+(+(am>>>0)+ +(ai|0)*4294967296.0))>>>0;ak=(D=+(ah>>>0)+ +(ag|0)*4294967296.0+(+(am>>>0)+ +(ai|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ai=~~((+(ad>>>0)+ +(ae|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;am=(D=(+(ad>>>0)+ +(ae|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ae=~~(+(al>>>0)+ +(ak|0)*4294967296.0+(+(ai>>>0)+ +(am|0)*4294967296.0))>>>0;ad=(D=+(al>>>0)+ +(ak|0)*4294967296.0+(+(ai>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);if(!((ad|0)>(Y|0)|(ad|0)==(Y|0)&ae>>>0>Z>>>0)){ap=L;aq=H;ar=t;as=Y;at=Z;break}c[e>>2]=ab;am=c[ac>>2]|0;ac=c[am+88>>2]|0;ai=c[am+92>>2]|0;ak=c[am+96>>2]|0;if((am|0)==0){ap=ak;aq=ai;ar=ac;as=ad;at=ae;break}else{L=ak;H=ai;t=ac;Y=ad;Z=ae;_=ab}}S=as;T=at;U=ar;V=aq;W=ap;X=c[f>>2]|0}}while(0);ap=p;aq=(p|0)<0?-1:0;ar=~~((+(M>>>0)+ +(N|0)*4294967296.0)*(+(ap>>>0)+ +(aq|0)*4294967296.0))>>>0;at=(D=(+(M>>>0)+ +(N|0)*4294967296.0)*(+(ap>>>0)+ +(aq|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aq=u;ap=(u|0)<0?-1:0;as=~~((+(Q>>>0)+ +(R|0)*4294967296.0)*(+(aq>>>0)+ +(ap|0)*4294967296.0))>>>0;G=(D=(+(Q>>>0)+ +(R|0)*4294967296.0)*(+(aq>>>0)+ +(ap|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ap=~~(+(as>>>0)+ +(G|0)*4294967296.0+(+(ar>>>0)+ +(at|0)*4294967296.0))>>>0;aq=(D=+(as>>>0)+ +(G|0)*4294967296.0+(+(ar>>>0)+ +(at|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);at=v;ar=(v|0)<0?-1:0;G=~~((+(x>>>0)+ +(I|0)*4294967296.0)*(+(at>>>0)+ +(ar|0)*4294967296.0))>>>0;as=(D=(+(x>>>0)+ +(I|0)*4294967296.0)*(+(at>>>0)+ +(ar|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ar=~~(+(ap>>>0)+ +(aq|0)*4294967296.0+(+(G>>>0)+ +(as|0)*4294967296.0))>>>0;at=(D=+(ap>>>0)+ +(aq|0)*4294967296.0+(+(G>>>0)+ +(as|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L4119:do{if((X|0)==0){au=at;av=ar;aw=p;ax=u;ay=v;az=0}else{if((c[X+12>>2]|0)==0){au=at;av=ar;aw=p;ax=u;ay=v;az=X;break}as=a+100|0;G=v;aq=u;ap=p;o=at;q=ar;r=X;while(1){s=c[c[r+8>>2]>>2]|0;_=s+12|0;Z=c[_>>2]|0;Y=c[Z+88>>2]|0;t=Y;H=(Y|0)<0?-1:0;Y=~~((+(t>>>0)+ +(H|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0))>>>0;L=(D=(+(t>>>0)+ +(H|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);K=c[Z+92>>2]|0;ab=K;ae=(K|0)<0?-1:0;K=~~((+(ab>>>0)+ +(ae|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0))>>>0;ad=(D=(+(ab>>>0)+ +(ae|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ac=~~(+(K>>>0)+ +(ad|0)*4294967296.0+(+(Y>>>0)+ +(L|0)*4294967296.0))>>>0;ai=(D=+(K>>>0)+ +(ad|0)*4294967296.0+(+(Y>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=c[Z+96>>2]|0;Z=L;Y=(L|0)<0?-1:0;L=~~((+(Z>>>0)+ +(Y|0)*4294967296.0)*(+(A>>>0)+ +(B|0)*4294967296.0))>>>0;ad=(D=(+(Z>>>0)+ +(Y|0)*4294967296.0)*(+(A>>>0)+ +(B|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);K=(D=+(ac>>>0)+ +(ai|0)*4294967296.0+(+(L>>>0)+ +(ad|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);if((K|0)<(z|0)|(K|0)==(z|0)&~~(+(ac>>>0)+ +(ai|0)*4294967296.0+(+(L>>>0)+ +(ad|0)*4294967296.0))>>>0>>>0>>0){au=o;av=q;aw=ap;ax=aq;ay=G;az=r;break L4119}if((c[s+20>>2]|0)==(c[as>>2]|0)){au=o;av=q;aw=ap;ax=aq;ay=G;az=r;break L4119}ad=~~((+(t>>>0)+ +(H|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;L=(D=(+(t>>>0)+ +(H|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=~~((+(ab>>>0)+ +(ae|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;t=(D=(+(ab>>>0)+ +(ae|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ae=~~(+(H>>>0)+ +(t|0)*4294967296.0+(+(ad>>>0)+ +(L|0)*4294967296.0))>>>0;ab=(D=+(H>>>0)+ +(t|0)*4294967296.0+(+(ad>>>0)+ +(L|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);L=~~((+(Z>>>0)+ +(Y|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;ad=(D=(+(Z>>>0)+ +(Y|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Y=~~(+(ae>>>0)+ +(ab|0)*4294967296.0+(+(L>>>0)+ +(ad|0)*4294967296.0))>>>0;Z=(D=+(ae>>>0)+ +(ab|0)*4294967296.0+(+(L>>>0)+ +(ad|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);if(!((Z|0)>(o|0)|(Z|0)==(o|0)&Y>>>0>q>>>0)){au=o;av=q;aw=ap;ax=aq;ay=G;az=r;break L4119}c[f>>2]=s;ad=c[_>>2]|0;_=c[ad+88>>2]|0;L=c[ad+92>>2]|0;ab=c[ad+96>>2]|0;if((ad|0)==0){au=Z;av=Y;aw=_;ax=L;ay=ab;az=s;break}else{G=ab;aq=L;ap=_;o=Z;q=Y;r=s}}}}while(0);J=~~(+(av>>>0)+ +(au|0)*4294967296.0-(+(T>>>0)+ +(S|0)*4294967296.0))>>>0;z=(D=+(av>>>0)+ +(au|0)*4294967296.0-(+(T>>>0)+ +(S|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);S=0;if((z|0)>(S|0)|(z|0)==(S|0)&J>>>0>0>>>0){S=a+100|0;T=0;au=0;av=~~(+(T>>>0)+ +(au|0)*4294967296.0-(+(A>>>0)+ +(B|0)*4294967296.0))>>>0;X=(D=+(T>>>0)+ +(au|0)*4294967296.0-(+(A>>>0)+ +(B|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);au=j+16|0;T=j|0;ar=j+8|0;at=h+16|0;p=h|0;u=h+8|0;v=z;r=J;q=aw;o=ax;ap=ay;aq=U;G=V;as=W;L4130:while(1){s=v;Y=r;Z=q;_=o;L=ap;L4132:while(1){ab=aa(Z-aq|0,w)|0;ad=aa(_-G|0,y)|0;ae=ad+(aa(L-as|0,b)|0)+ab|0;ab=ae;ad=(ae|0)<0?-1:0;aA=c[e>>2]|0;do{if((aA|0)!=0){if((c[aA+12>>2]|0)==0){break}aB=c[(c[aA>>2]|0)+8>>2]|0;if((c[aB+20>>2]|0)<=(c[S>>2]|0)){break}t=c[aB+12>>2]|0;aC=c[t+88>>2]|0;H=aC-aq|0;aD=c[t+92>>2]|0;ai=aD-G|0;aE=c[t+96>>2]|0;t=aE-as|0;ac=H;K=(H|0)<0?-1:0;ak=~~((+(ac>>>0)+ +(K|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;am=(D=(+(ac>>>0)+ +(K|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);K=ai;ac=(ai|0)<0?-1:0;al=~~((+(K>>>0)+ +(ac|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;ag=(D=(+(K>>>0)+ +(ac|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ac=~~(+(al>>>0)+ +(ag|0)*4294967296.0+(+(ak>>>0)+ +(am|0)*4294967296.0))>>>0;K=(D=+(al>>>0)+ +(ag|0)*4294967296.0+(+(ak>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);am=t;ak=(t|0)<0?-1:0;ag=~~((+(am>>>0)+ +(ak|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;al=(D=(+(am>>>0)+ +(ak|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ak=~~(+(ac>>>0)+ +(K|0)*4294967296.0+(+(ag>>>0)+ +(al|0)*4294967296.0))>>>0;am=(D=+(ac>>>0)+ +(K|0)*4294967296.0+(+(ag>>>0)+ +(al|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);al=aa(H,w)|0;H=(aa(ai,y)|0)+al|0;al=H+(aa(t,b)|0)|0;t=al;H=(al|0)<0?-1:0;if((ak|0)==0&(am|0)==0){if((al|0)<0){break L4132}else{break}}ai=0;if(!((am|0)<(ai|0)|(am|0)==(ai|0)&ak>>>0<0>>>0)){break}if((al|0)>0){aF=1;aG=H;aH=t}else{ai=(al|0)<0;al=0;ag=0;aF=ai?-1:0;aG=ai?(D=+(al>>>0)+ +(ag|0)*4294967296.0-(+(t>>>0)+ +(H|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;aH=ai?~~(+(al>>>0)+ +(ag|0)*4294967296.0-(+(t>>>0)+ +(H|0)*4294967296.0))>>>0:0}H=0;if((am|0)>(H|0)|(am|0)==(H|0)&ak>>>0>0>>>0){aI=am;aJ=ak;aK=aF}else{H=0;t=0;aI=(D=+(H>>>0)+ +(t|0)*4294967296.0-(+(ak>>>0)+ +(am|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aJ=~~(+(H>>>0)+ +(t|0)*4294967296.0-(+(ak>>>0)+ +(am|0)*4294967296.0))>>>0;aK=-aF|0}do{if((ae|0)>0){c[at>>2]=1;c[p>>2]=ab;c[p+4>>2]=ad;aL=1}else{if((ae|0)<0){c[at>>2]=-1;am=0;ak=0;t=(D=+(am>>>0)+ +(ak|0)*4294967296.0-(+(ab>>>0)+ +(ad|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[p>>2]=~~(+(am>>>0)+ +(ak|0)*4294967296.0-(+(ab>>>0)+ +(ad|0)*4294967296.0))>>>0;c[p+4>>2]=t;aL=-1;break}else{c[at>>2]=0;c[p>>2]=0;c[p+4>>2]=0;aL=0;break}}}while(0);t=0;do{if((s|0)>(t|0)|(s|0)==(t|0)&Y>>>0>0>>>0){c[u>>2]=Y;c[u+4>>2]=s}else{ak=0;if((s|0)<(ak|0)|(s|0)==(ak|0)&Y>>>0<0>>>0){c[at>>2]=-aL;ak=0;am=0;H=(D=+(ak>>>0)+ +(am|0)*4294967296.0-(+(Y>>>0)+ +(s|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[u>>2]=~~(+(ak>>>0)+ +(am|0)*4294967296.0-(+(Y>>>0)+ +(s|0)*4294967296.0))>>>0;c[u+4>>2]=H;break}else{c[u>>2]=0;c[u+4>>2]=0;break}}}while(0);if((aC4(aH,aG,aJ,aI,aK,h)|0)>-1){break L4132}}}while(0);t=c[f>>2]|0;if((t|0)==0){aM=3282;break L4130}if((c[t+12>>2]|0)==0){aM=3283;break L4130}H=c[c[t+8>>2]>>2]|0;if((c[H+20>>2]|0)<=(c[S>>2]|0)){aM=3284;break L4130}t=H+12|0;am=c[t>>2]|0;ak=c[am+88>>2]|0;ag=ak-Z|0;al=c[am+92>>2]|0;ai=al-_|0;K=c[am+96>>2]|0;am=K-L|0;ac=ag;ah=(ag|0)<0?-1:0;ao=~~((+(ac>>>0)+ +(ah|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0))>>>0;an=(D=(+(ac>>>0)+ +(ah|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=ai;aN=(ai|0)<0?-1:0;aO=~~((+(aj>>>0)+ +(aN|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0))>>>0;aP=(D=(+(aj>>>0)+ +(aN|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aQ=(D=+(aO>>>0)+ +(aP|0)*4294967296.0+(+(ao>>>0)+ +(an|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aR=am;aS=(am|0)<0?-1:0;if(!((~~(+(aO>>>0)+ +(aP|0)*4294967296.0+(+(ao>>>0)+ +(an|0)*4294967296.0))>>>0|0)==(~~((+(aR>>>0)+ +(aS|0)*4294967296.0)*(+(av>>>0)+ +(X|0)*4294967296.0))>>>0|0)&(aQ|0)==((D=(+(aR>>>0)+ +(aS|0)*4294967296.0)*(+(av>>>0)+ +(X|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0)|0))){aM=3285;break L4130}aQ=~~((+(ac>>>0)+ +(ah|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;an=(D=(+(ac>>>0)+ +(ah|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ah=~~((+(aj>>>0)+ +(aN|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;ac=(D=(+(aj>>>0)+ +(aN|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aN=~~(+(ah>>>0)+ +(ac|0)*4294967296.0+(+(aQ>>>0)+ +(an|0)*4294967296.0))>>>0;aj=(D=+(ah>>>0)+ +(ac|0)*4294967296.0+(+(aQ>>>0)+ +(an|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=~~((+(aR>>>0)+ +(aS|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aQ=(D=(+(aR>>>0)+ +(aS|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aS=~~(+(aN>>>0)+ +(aj|0)*4294967296.0+(+(an>>>0)+ +(aQ|0)*4294967296.0))>>>0;aR=(D=+(aN>>>0)+ +(aj|0)*4294967296.0+(+(an>>>0)+ +(aQ|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aQ=aa(ag,w)|0;ag=(aa(ai,y)|0)+aQ|0;aQ=ag+(aa(am,b)|0)|0;am=aQ;ag=(aQ|0)<0?-1:0;ai=ak-aq|0;ak=al-G|0;al=K-as|0;K=ai;an=(ai|0)<0?-1:0;ai=~~((+(K>>>0)+ +(an|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;aj=(D=(+(K>>>0)+ +(an|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);an=ak;K=(ak|0)<0?-1:0;ak=~~((+(an>>>0)+ +(K|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;aN=(D=(+(an>>>0)+ +(K|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);K=~~(+(ak>>>0)+ +(aN|0)*4294967296.0+(+(ai>>>0)+ +(aj|0)*4294967296.0))>>>0;an=(D=+(ak>>>0)+ +(aN|0)*4294967296.0+(+(ai>>>0)+ +(aj|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=al;ai=(al|0)<0?-1:0;al=~~((+(aj>>>0)+ +(ai|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aN=(D=(+(aj>>>0)+ +(ai|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ai=~~(+(K>>>0)+ +(an|0)*4294967296.0+(+(al>>>0)+ +(aN|0)*4294967296.0))>>>0;aj=(D=+(K>>>0)+ +(an|0)*4294967296.0+(+(al>>>0)+ +(aN|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aN=0;if(!((aj|0)>(aN|0)|(aj|0)==(aN|0)&ai>>>0>0>>>0)){aM=3286;break L4130}if((aS|0)==0&(aR|0)==0){if((aQ|0)>=0){aM=3287;break L4130}}else{aN=0;if(!((aR|0)<(aN|0)|(aR|0)==(aN|0)&aS>>>0<0>>>0)){aM=3297;break L4130}if((aQ|0)>0){aT=ag;aU=am;aV=1}else{aN=(aQ|0)<0;aQ=0;al=0;aT=aN?(D=+(aQ>>>0)+ +(al|0)*4294967296.0-(+(am>>>0)+ +(ag|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;aU=aN?~~(+(aQ>>>0)+ +(al|0)*4294967296.0-(+(am>>>0)+ +(ag|0)*4294967296.0))>>>0:0;aV=aN?-1:0}aN=0;if((aR|0)>(aN|0)|(aR|0)==(aN|0)&aS>>>0>0>>>0){aW=aR;aX=aS;aY=aV}else{aN=0;ag=0;aW=(D=+(aN>>>0)+ +(ag|0)*4294967296.0-(+(aS>>>0)+ +(aR|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aX=~~(+(aN>>>0)+ +(ag|0)*4294967296.0-(+(aS>>>0)+ +(aR|0)*4294967296.0))>>>0;aY=-aV|0}do{if((ae|0)>0){c[au>>2]=1;c[T>>2]=ab;c[T+4>>2]=ad;aZ=1}else{if((ae|0)<0){c[au>>2]=-1;aR=0;aS=0;ag=(D=+(aR>>>0)+ +(aS|0)*4294967296.0-(+(ab>>>0)+ +(ad|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[T>>2]=~~(+(aR>>>0)+ +(aS|0)*4294967296.0-(+(ab>>>0)+ +(ad|0)*4294967296.0))>>>0;c[T+4>>2]=ag;aZ=-1;break}else{c[au>>2]=0;c[T>>2]=0;c[T+4>>2]=0;aZ=0;break}}}while(0);ad=0;do{if((s|0)>(ad|0)|(s|0)==(ad|0)&Y>>>0>0>>>0){c[ar>>2]=Y;c[ar+4>>2]=s}else{ab=0;if((s|0)<(ab|0)|(s|0)==(ab|0)&Y>>>0<0>>>0){c[au>>2]=-aZ;ab=0;ae=0;ag=(D=+(ab>>>0)+ +(ae|0)*4294967296.0-(+(Y>>>0)+ +(s|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[ar>>2]=~~(+(ab>>>0)+ +(ae|0)*4294967296.0-(+(Y>>>0)+ +(s|0)*4294967296.0))>>>0;c[ar+4>>2]=ag;break}else{c[ar>>2]=0;c[ar+4>>2]=0;break}}}while(0);if((aC4(aU,aT,aX,aW,aY,j)|0)<=0){aM=3288;break L4130}}c[f>>2]=H;ad=c[t>>2]|0;s=aj;Y=ai;Z=c[ad+88>>2]|0;_=c[ad+92>>2]|0;L=c[ad+96>>2]|0}Y=Z-aC|0;s=_-aD|0;ad=L-aE|0;ag=Y;ae=(Y|0)<0?-1:0;Y=~~((+(ag>>>0)+ +(ae|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;ab=(D=(+(ag>>>0)+ +(ae|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ae=s;ag=(s|0)<0?-1:0;s=~~((+(ae>>>0)+ +(ag|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;aS=(D=(+(ae>>>0)+ +(ag|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ag=~~(+(s>>>0)+ +(aS|0)*4294967296.0+(+(Y>>>0)+ +(ab|0)*4294967296.0))>>>0;ae=(D=+(s>>>0)+ +(aS|0)*4294967296.0+(+(Y>>>0)+ +(ab|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ab=ad;Y=(ad|0)<0?-1:0;ad=~~((+(ab>>>0)+ +(Y|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aS=(D=(+(ab>>>0)+ +(Y|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);Y=(D=+(ag>>>0)+ +(ae|0)*4294967296.0+(+(ad>>>0)+ +(aS|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[e>>2]=(aA|0)==(m|0)?0:aB;v=Y;r=~~(+(ag>>>0)+ +(ae|0)*4294967296.0+(+(ad>>>0)+ +(aS|0)*4294967296.0))>>>0;q=Z;o=_;ap=L;aq=aC;G=aD;as=aE}if((aM|0)==3282){i=g;return}else if((aM|0)==3283){i=g;return}else if((aM|0)==3284){i=g;return}else if((aM|0)==3285){i=g;return}else if((aM|0)==3286){i=g;return}else if((aM|0)==3287){i=g;return}else if((aM|0)==3288){i=g;return}else if((aM|0)==3297){i=g;return}}aE=0;if(!((z|0)<(aE|0)|(z|0)==(aE|0)&J>>>0<0>>>0)){i=g;return}aE=a+100|0;a=0;as=0;aD=~~(+(a>>>0)+ +(as|0)*4294967296.0-(+(A>>>0)+ +(B|0)*4294967296.0))>>>0;G=(D=+(a>>>0)+ +(as|0)*4294967296.0-(+(A>>>0)+ +(B|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);B=l+16|0;A=l|0;as=l+8|0;a=k+16|0;aC=k|0;aq=k+8|0;ap=z;z=J;J=aw;aw=ax;ax=ay;ay=U;U=V;V=W;W=az;while(1){az=aa(J-ay|0,w)|0;o=aa(aw-U|0,y)|0;q=o+(aa(ax-V|0,b)|0)+az|0;az=q;o=(q|0)<0?-1:0;L4209:do{if((W|0)==0){a_=ax;a$=aw;a0=J;a1=ap;a2=z;a3=q;a4=o;a5=az}else{r=ax;v=aw;aB=J;m=ap;aA=z;j=q;aY=o;aW=az;aX=W;while(1){if((c[aX+12>>2]|0)==0){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}aT=c[(c[aX+4>>2]|0)+8>>2]|0;if((c[aT+20>>2]|0)<=(c[aE>>2]|0)){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}aU=c[aT+12>>2]|0;ar=c[aU+88>>2]|0;aZ=ar-aB|0;au=c[aU+92>>2]|0;T=au-v|0;aV=c[aU+96>>2]|0;aU=aV-r|0;X=aZ;av=(aZ|0)<0?-1:0;S=~~((+(X>>>0)+ +(av|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;h=(D=(+(X>>>0)+ +(av|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);av=T;X=(T|0)<0?-1:0;aK=~~((+(av>>>0)+ +(X|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;aI=(D=(+(av>>>0)+ +(X|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);X=~~(+(aK>>>0)+ +(aI|0)*4294967296.0+(+(S>>>0)+ +(h|0)*4294967296.0))>>>0;av=(D=+(aK>>>0)+ +(aI|0)*4294967296.0+(+(S>>>0)+ +(h|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);h=aU;S=(aU|0)<0?-1:0;aI=~~((+(h>>>0)+ +(S|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aK=(D=(+(h>>>0)+ +(S|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);S=~~(+(X>>>0)+ +(av|0)*4294967296.0+(+(aI>>>0)+ +(aK|0)*4294967296.0))>>>0;h=(D=+(X>>>0)+ +(av|0)*4294967296.0+(+(aI>>>0)+ +(aK|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aK=aa(aZ,w)|0;aZ=(aa(T,y)|0)+aK|0;aK=aZ+(aa(aU,b)|0)|0;aU=aK;aZ=(aK|0)<0?-1:0;if((S|0)==0&(h|0)==0){if((aK|0)<=0){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}}else{T=0;if(!((h|0)<(T|0)|(h|0)==(T|0)&S>>>0<0>>>0)){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}if((aK|0)>0){a6=aZ;a7=aU;a8=1}else{T=(aK|0)<0;aK=0;aI=0;a6=T?(D=+(aK>>>0)+ +(aI|0)*4294967296.0-(+(aU>>>0)+ +(aZ|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;a7=T?~~(+(aK>>>0)+ +(aI|0)*4294967296.0-(+(aU>>>0)+ +(aZ|0)*4294967296.0))>>>0:0;a8=T?-1:0}T=0;if((h|0)>(T|0)|(h|0)==(T|0)&S>>>0>0>>>0){a9=h;ba=S;bb=a8}else{T=0;aZ=0;a9=(D=+(T>>>0)+ +(aZ|0)*4294967296.0-(+(S>>>0)+ +(h|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);ba=~~(+(T>>>0)+ +(aZ|0)*4294967296.0-(+(S>>>0)+ +(h|0)*4294967296.0))>>>0;bb=-a8|0}do{if((j|0)>0){c[a>>2]=1;c[aC>>2]=aW;c[aC+4>>2]=aY;bc=1}else{if((j|0)<0){c[a>>2]=-1;h=0;S=0;aZ=(D=+(h>>>0)+ +(S|0)*4294967296.0-(+(aW>>>0)+ +(aY|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[aC>>2]=~~(+(h>>>0)+ +(S|0)*4294967296.0-(+(aW>>>0)+ +(aY|0)*4294967296.0))>>>0;c[aC+4>>2]=aZ;bc=-1;break}else{c[a>>2]=0;c[aC>>2]=0;c[aC+4>>2]=0;bc=0;break}}}while(0);aZ=0;do{if((m|0)>(aZ|0)|(m|0)==(aZ|0)&aA>>>0>0>>>0){c[aq>>2]=aA;c[aq+4>>2]=m}else{S=0;if((m|0)<(S|0)|(m|0)==(S|0)&aA>>>0<0>>>0){c[a>>2]=-bc;S=0;h=0;T=(D=+(S>>>0)+ +(h|0)*4294967296.0-(+(aA>>>0)+ +(m|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[aq>>2]=~~(+(S>>>0)+ +(h|0)*4294967296.0-(+(aA>>>0)+ +(m|0)*4294967296.0))>>>0;c[aq+4>>2]=T;break}else{c[aq>>2]=0;c[aq+4>>2]=0;break}}}while(0);if((aC4(a7,a6,ba,a9,bb,k)|0)>=1){a_=r;a$=v;a0=aB;a1=m;a2=aA;a3=j;a4=aY;a5=aW;break L4209}}aZ=ar-ay|0;T=au-U|0;h=aV-V|0;S=aZ;aU=(aZ|0)<0?-1:0;aI=~~((+(S>>>0)+ +(aU|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;aK=(D=(+(S>>>0)+ +(aU|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aU=T;S=(T|0)<0?-1:0;av=~~((+(aU>>>0)+ +(S|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;X=(D=(+(aU>>>0)+ +(S|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);S=~~(+(av>>>0)+ +(X|0)*4294967296.0+(+(aI>>>0)+ +(aK|0)*4294967296.0))>>>0;aU=(D=+(av>>>0)+ +(X|0)*4294967296.0+(+(aI>>>0)+ +(aK|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aK=h;aI=(h|0)<0?-1:0;X=~~((+(aK>>>0)+ +(aI|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;av=(D=(+(aK>>>0)+ +(aI|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aI=~~(+(S>>>0)+ +(aU|0)*4294967296.0+(+(X>>>0)+ +(av|0)*4294967296.0))>>>0;aK=(D=+(S>>>0)+ +(aU|0)*4294967296.0+(+(X>>>0)+ +(av|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);av=(aX|0)==(n|0)?0:aT;c[f>>2]=av;X=aa(aZ,w)|0;aZ=aa(T,y)|0;T=aZ+(aa(h,b)|0)+X|0;X=T;h=(T|0)<0?-1:0;if((av|0)==0){a_=aV;a$=au;a0=ar;a1=aK;a2=aI;a3=T;a4=h;a5=X;break}else{r=aV;v=au;aB=ar;m=aK;aA=aI;j=T;aY=h;aW=X;aX=av}}}}while(0);az=c[e>>2]|0;if((az|0)==0){aM=3289;break}if((c[az+12>>2]|0)==0){aM=3290;break}o=c[(c[az+8>>2]|0)+4>>2]|0;if((c[o+20>>2]|0)<=(c[aE>>2]|0)){aM=3291;break}az=o+12|0;q=c[az>>2]|0;L=c[q+88>>2]|0;_=L-ay|0;Z=c[q+92>>2]|0;aX=Z-U|0;aW=c[q+96>>2]|0;q=aW-V|0;aY=_;j=(_|0)<0?-1:0;aA=~~((+(aY>>>0)+ +(j|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0))>>>0;m=(D=(+(aY>>>0)+ +(j|0)*4294967296.0)*(+(d>>>0)+ +(E|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aB=aX;v=(aX|0)<0?-1:0;r=~~((+(aB>>>0)+ +(v|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0))>>>0;ai=(D=(+(aB>>>0)+ +(v|0)*4294967296.0)*(+(C>>>0)+ +(F|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=(D=+(r>>>0)+ +(ai|0)*4294967296.0+(+(aA>>>0)+ +(m|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);t=q;H=(q|0)<0?-1:0;if(!((~~(+(r>>>0)+ +(ai|0)*4294967296.0+(+(aA>>>0)+ +(m|0)*4294967296.0))>>>0|0)==(~~((+(t>>>0)+ +(H|0)*4294967296.0)*(+(aD>>>0)+ +(G|0)*4294967296.0))>>>0|0)&(aj|0)==((D=(+(t>>>0)+ +(H|0)*4294967296.0)*(+(aD>>>0)+ +(G|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0)|0))){aM=3292;break}aj=~~((+(aY>>>0)+ +(j|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;m=(D=(+(aY>>>0)+ +(j|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);j=~~((+(aB>>>0)+ +(v|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;aY=(D=(+(aB>>>0)+ +(v|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);v=~~(+(j>>>0)+ +(aY|0)*4294967296.0+(+(aj>>>0)+ +(m|0)*4294967296.0))>>>0;aB=(D=+(j>>>0)+ +(aY|0)*4294967296.0+(+(aj>>>0)+ +(m|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);m=~~((+(t>>>0)+ +(H|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;aj=(D=(+(t>>>0)+ +(H|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);H=~~(+(v>>>0)+ +(aB|0)*4294967296.0+(+(m>>>0)+ +(aj|0)*4294967296.0))>>>0;t=(D=+(v>>>0)+ +(aB|0)*4294967296.0+(+(m>>>0)+ +(aj|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aj=aa(_,w)|0;_=(aa(aX,y)|0)+aj|0;aj=_+(aa(q,b)|0)|0;q=aj;_=(aj|0)<0?-1:0;aX=a0-L|0;L=a$-Z|0;Z=a_-aW|0;aW=aX;m=(aX|0)<0?-1:0;aX=~~((+(aW>>>0)+ +(m|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0))>>>0;aB=(D=(+(aW>>>0)+ +(m|0)*4294967296.0)*(+(M>>>0)+ +(N|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);m=L;aW=(L|0)<0?-1:0;L=~~((+(m>>>0)+ +(aW|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0))>>>0;v=(D=(+(m>>>0)+ +(aW|0)*4294967296.0)*(+(Q>>>0)+ +(R|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aW=~~(+(L>>>0)+ +(v|0)*4294967296.0+(+(aX>>>0)+ +(aB|0)*4294967296.0))>>>0;m=(D=+(L>>>0)+ +(v|0)*4294967296.0+(+(aX>>>0)+ +(aB|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aB=Z;aX=(Z|0)<0?-1:0;Z=~~((+(aB>>>0)+ +(aX|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0))>>>0;v=(D=(+(aB>>>0)+ +(aX|0)*4294967296.0)*(+(x>>>0)+ +(I|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);aX=~~(+(aW>>>0)+ +(m|0)*4294967296.0+(+(Z>>>0)+ +(v|0)*4294967296.0))>>>0;aB=(D=+(aW>>>0)+ +(m|0)*4294967296.0+(+(Z>>>0)+ +(v|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);v=0;if(!((aB|0)<(v|0)|(aB|0)==(v|0)&aX>>>0<0>>>0)){aM=3293;break}if((H|0)==0&(t|0)==0){if((aj|0)<=0){aM=3294;break}}else{v=0;if(!((t|0)<(v|0)|(t|0)==(v|0)&H>>>0<0>>>0)){aM=3295;break}if((aj|0)>0){bd=_;be=q;bf=1}else{v=(aj|0)<0;aj=0;Z=0;bd=v?(D=+(aj>>>0)+ +(Z|0)*4294967296.0-(+(q>>>0)+ +(_|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0):0;be=v?~~(+(aj>>>0)+ +(Z|0)*4294967296.0-(+(q>>>0)+ +(_|0)*4294967296.0))>>>0:0;bf=v?-1:0}v=0;if((t|0)>(v|0)|(t|0)==(v|0)&H>>>0>0>>>0){bg=t;bh=H;bi=bf}else{v=0;_=0;bg=(D=+(v>>>0)+ +(_|0)*4294967296.0-(+(H>>>0)+ +(t|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);bh=~~(+(v>>>0)+ +(_|0)*4294967296.0-(+(H>>>0)+ +(t|0)*4294967296.0))>>>0;bi=-bf|0}do{if((a3|0)>0){c[B>>2]=1;c[A>>2]=a5;c[A+4>>2]=a4;bj=1}else{if((a3|0)<0){c[B>>2]=-1;t=0;H=0;_=(D=+(t>>>0)+ +(H|0)*4294967296.0-(+(a5>>>0)+ +(a4|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[A>>2]=~~(+(t>>>0)+ +(H|0)*4294967296.0-(+(a5>>>0)+ +(a4|0)*4294967296.0))>>>0;c[A+4>>2]=_;bj=-1;break}else{c[B>>2]=0;c[A>>2]=0;c[A+4>>2]=0;bj=0;break}}}while(0);_=0;do{if((a1|0)>(_|0)|(a1|0)==(_|0)&a2>>>0>0>>>0){c[as>>2]=a2;c[as+4>>2]=a1}else{H=0;if((a1|0)<(H|0)|(a1|0)==(H|0)&a2>>>0<0>>>0){c[B>>2]=-bj;H=0;t=0;v=(D=+(H>>>0)+ +(t|0)*4294967296.0-(+(a2>>>0)+ +(a1|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);c[as>>2]=~~(+(H>>>0)+ +(t|0)*4294967296.0-(+(a2>>>0)+ +(a1|0)*4294967296.0))>>>0;c[as+4>>2]=v;break}else{c[as>>2]=0;c[as+4>>2]=0;break}}}while(0);if((aC4(be,bd,bh,bg,bi,l)|0)>=0){aM=3281;break}}c[e>>2]=o;_=c[az>>2]|0;ap=aB;z=aX;J=a0;aw=a$;ax=a_;ay=c[_+88>>2]|0;U=c[_+92>>2]|0;V=c[_+96>>2]|0;W=c[f>>2]|0}if((aM|0)==3281){i=g;return}else if((aM|0)==3289){i=g;return}else if((aM|0)==3290){i=g;return}else if((aM|0)==3291){i=g;return}else if((aM|0)==3292){i=g;return}else if((aM|0)==3293){i=g;return}else if((aM|0)==3294){i=g;return}else if((aM|0)==3295){i=g;return}}function aC9(a){a=a|0;return}function aDa(a){a=a|0;return}function aDb(a){a=a|0;return}function aDc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;if((c[d+8>>2]|0)!=(b|0)){return}b=d+16|0;g=c[b>>2]|0;if((g|0)==0){c[b>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;return}if((g|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;c[d+24>>2]=2;a[d+54|0]=1;return}e=d+24|0;if((c[e>>2]|0)!=2){return}c[e>>2]=f;return}function aDd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;b=i;i=i+16|0;d=b|0;e=a+8|0;f=c[e>>2]|0;g=c[e+4>>2]|0;e=-1;if((g|0)>(e|0)|(g|0)==(e|0)&f>>>0>-1>>>0){e=a|0;h=(+(f>>>0)+ +(g>>>0)*4294967296.0)*18446744073709552000.0+(+((c[e>>2]|0)>>>0)+ +((c[e+4>>2]|0)>>>0)*4294967296.0);i=b;return+h}else{e=a|0;a=c[e>>2]|0;j=c[e+4>>2]|0;e=0;k=0;l=(D=+(e>>>0)+ +(k|0)*4294967296.0-(+(a>>>0)+ +(j|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);m=~f;f=~g;g=(a|0)==0&(j|0)==0&1;n=0;o=(D=+(g>>>0)+ +(n|0)*4294967296.0+(+(m>>>0)+ +(f|0)*4294967296.0),+P(D)>=1.0?D>0.0?(af(+O(D/4294967296.0),4294967295.0)|0)>>>0:~~+$((D- +(~~D>>>0))/4294967296.0)>>>0:0);p=d|0;c[p>>2]=~~(+(e>>>0)+ +(k|0)*4294967296.0-(+(a>>>0)+ +(j|0)*4294967296.0))>>>0;c[p+4>>2]=l;l=d+8|0;c[l>>2]=~~(+(g>>>0)+ +(n|0)*4294967296.0+(+(m>>>0)+ +(f|0)*4294967296.0))>>>0;c[l+4>>2]=o;h=-0.0- +aDd(d);i=b;return+h}return 0.0}function aDe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;e=i;i=i+16|0;f=(d+b|0)/2|0;g=a+12|0;h=c[g>>2]|0;j=c[h+(f<<4)>>2]|0;k=c[h+(f<<4)+4>>2]|0;l=c[h+(f<<4)+8>>2]|0;f=e|0;m=d;n=b;o=h;while(1){h=n;L4307:while(1){p=c[o+(h<<4)+4>>2]|0;do{if((p|0)>=(k|0)){if((p|0)!=(k|0)){q=3327;break L4307}r=c[o+(h<<4)>>2]|0;if((r|0)<(j|0)){break}if((r|0)!=(j|0)){q=3327;break L4307}r=h+1|0;if((c[o+(h<<4)+8>>2]|0)<(l|0)){h=r;continue L4307}else{s=r;break L4307}}}while(0);h=h+1|0}if((q|0)==3327){q=0;s=h+1|0}p=m;L4318:while(1){r=c[o+(p<<4)+4>>2]|0;do{if((k|0)>=(r|0)){if((k|0)!=(r|0)){q=3335;break L4318}t=c[o+(p<<4)>>2]|0;if((j|0)<(t|0)){break}if((j|0)!=(t|0)){q=3335;break L4318}t=p-1|0;if((l|0)<(c[o+(p<<4)+8>>2]|0)){p=t;continue L4318}else{u=t;break L4318}}}while(0);p=p-1|0}if((q|0)==3335){q=0;u=p-1|0}if((h|0)>(p|0)){v=p;w=h}else{r=o+(h<<4)|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];t=o+(p<<4)|0;c[r>>2]=c[t>>2];c[r+4>>2]=c[t+4>>2];c[r+8>>2]=c[t+8>>2];c[r+12>>2]=c[t+12>>2];t=(c[g>>2]|0)+(p<<4)|0;c[t>>2]=c[f>>2];c[t+4>>2]=c[f+4>>2];c[t+8>>2]=c[f+8>>2];c[t+12>>2]=c[f+12>>2];v=u;w=s}if((w|0)>(v|0)){break}m=v;n=w;o=c[g>>2]|0}if((v|0)>(b|0)){aDe(a,b,v)}if((w|0)>=(d|0)){i=e;return}aDe(a,w,d);i=e;return}function aDf(a){a=a|0;var b=0;b=c[a>>2]|0;if((b|0)==0){return}aDB(b);return}function aDg(a){a=a|0;var b=0;b=a;do{c[b+4>>2]=0;g[b+8>>2]=0.0;a=c[b+24>>2]|0;if((a|0)!=0){aDg(a)}b=c[b+28>>2]|0;}while((b|0)!=0);return}function aDh(a){a=a|0;var b=0;b=c[a+24>>2]|0;if((b|0)!=0){aDh(b);aDB(b)}b=c[a+28>>2]|0;if((b|0)==0){return}a=c[b+24>>2]|0;if((a|0)!=0){aDh(a);aDB(a)}a=c[b+28>>2]|0;if((a|0)!=0){aDh(a);aDB(a)}aDB(b);return}function aDi(){var a=0,b=0,d=0,e=0,f=0,g=0;a=i;i=i+16|0;b=a|0;d=a+8|0;b3(c[10742]|0,0)|0;aDg(42912);c[10729]=(c[10729]|0)+1;e=c[10732]|0;c[10732]=e+1;if((e|0)!=0){c[10736]=0;f=b;g=b3(b|0,0)|0;i=a;return}b3(d|0,0)|0;e=c[10742]|0;c[10731]=(c[d+4>>2]|0)-(c[e+4>>2]|0)+(((c[d>>2]|0)-(c[e>>2]|0)|0)*1e6|0);c[10736]=0;f=b;g=b3(b|0,0)|0;i=a;return}function aDj(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aDk(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aDl(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aDm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=i;i=i+112|0;f=e|0;g=e+56|0;if((a|0)==(b|0)){h=1;i=e;return h|0}if((b|0)==0){h=0;i=e;return h|0}j=b;k=c[b>>2]|0;b=j+(c[k-8>>2]|0)|0;l=c[k-4>>2]|0;k=l;c[f>>2]=34680;c[f+4>>2]=j;c[f+8>>2]=34696;c[f+12>>2]=-1;j=f+16|0;m=f+20|0;n=f+24|0;o=f+28|0;p=f+32|0;q=f+40|0;aDD(j|0,0,39);do{if((l|0)==34680){c[f+48>>2]=1;c_[c[(c[8670]|0)+20>>2]&127](k,f,b,b,1,0);r=(c[n>>2]|0)==1?b:0}else{co[c[(c[l>>2]|0)+24>>2]&255](k,f,b,1,0);s=c[f+36>>2]|0;if((s|0)==0){if((c[q>>2]|0)!=1){r=0;break}if((c[o>>2]|0)!=1){r=0;break}r=(c[p>>2]|0)==1?c[m>>2]|0:0;break}else if((s|0)!=1){r=0;break}if((c[n>>2]|0)!=1){if((c[q>>2]|0)!=0){r=0;break}if((c[o>>2]|0)!=1){r=0;break}if((c[p>>2]|0)!=1){r=0;break}}r=c[j>>2]|0}}while(0);j=r;if((r|0)==0){h=0;i=e;return h|0}aDD(g|0,0,56);c[g>>2]=j;c[g+8>>2]=a;c[g+12>>2]=-1;c[g+48>>2]=1;dI[c[(c[r>>2]|0)+28>>2]&1023](j,g,c[d>>2]|0,1);if((c[g+24>>2]|0)!=1){h=0;i=e;return h|0}c[d>>2]=c[g+16>>2];h=1;i=e;return h|0}function aDn(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;if((b|0)!=(c[d+8>>2]|0)){g=c[b+8>>2]|0;dI[c[(c[g>>2]|0)+28>>2]&1023](g,d,e,f);return}g=d+16|0;b=c[g>>2]|0;if((b|0)==0){c[g>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;return}if((b|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;c[d+24>>2]=2;a[d+54|0]=1;return}e=d+24|0;if((c[e>>2]|0)!=2){return}c[e>>2]=f;return}function aDo(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0;b=i;i=i+8|0;d=b|0;e=c[9152]|0;if((c[e>>2]|0)==(a|0)){f=e}else{g=e+24|0;h=g;while(1){j=c[h>>2]|0;if((j|0)==0){k=3437;break}if((c[j>>2]|0)==(a|0)){l=j;break}else{h=j+28|0}}do{if((k|0)==3437){while(1){k=0;m=aDx(32)|0;if((m|0)!=0){k=3447;break}h=(C=c[10744]|0,c[10744]=C+0,C);if((h|0)==0){break}dC[h&63]();k=3437}if((k|0)==3447){h=m;c[m>>2]=a;aDD(m+4|0,0,16);c[m+20>>2]=e;c[m+24>>2]=0;j=m+28|0;c[j>>2]=0;aDg(h);c[j>>2]=c[g>>2];c[g>>2]=h;l=h;break}h=cd(4)|0;c[h>>2]=19096;bF(h|0,34368,676)}}while(0);c[9152]=l;f=l}l=f+4|0;c[l>>2]=(c[l>>2]|0)+1;l=f+16|0;g=c[l>>2]|0;c[l>>2]=g+1;if((g|0)!=0){i=b;return}b3(d|0,0)|0;g=c[10742]|0;c[f+12>>2]=(c[d+4>>2]|0)-(c[g+4>>2]|0)+(((c[d>>2]|0)-(c[g>>2]|0)|0)*1e6|0);i=b;return}function aDp(){var a=0,b=0,d=0;while(1){a=aDx(8)|0;if((a|0)!=0){b=3465;break}d=(C=c[10744]|0,c[10744]=C+0,C);if((d|0)==0){break}dC[d&63]()}if((b|0)==3465){c[10742]=a;b=a;b3(b|0,0)|0;bG(496,42968,o|0)|0;c[10728]=16072;aDD(42916,0,28);aDg(42912);bG(650,42912,o|0)|0;return}b=cd(4)|0;c[b>>2]=19096;bF(b|0,34368,676)}function aDq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if((c[d+8>>2]|0)==(b|0)){if((c[d+4>>2]|0)!=(e|0)){return}g=d+28|0;if((c[g>>2]|0)==1){return}c[g>>2]=f;return}if((c[d>>2]|0)!=(b|0)){return}do{if((c[d+16>>2]|0)!=(e|0)){b=d+20|0;if((c[b>>2]|0)==(e|0)){break}c[d+32>>2]=f;c[b>>2]=e;b=d+40|0;c[b>>2]=(c[b>>2]|0)+1;do{if((c[d+36>>2]|0)==1){if((c[d+24>>2]|0)!=2){break}a[d+54|0]=1}}while(0);c[d+44>>2]=4;return}}while(0);if((f|0)!=1){return}c[d+32>>2]=1;return}function aDr(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)==(c[d+8>>2]|0)){g=d+16|0;h=c[g>>2]|0;if((h|0)==0){c[g>>2]=e;c[d+24>>2]=f;c[d+36>>2]=1;return}if((h|0)!=(e|0)){h=d+36|0;c[h>>2]=(c[h>>2]|0)+1;c[d+24>>2]=2;a[d+54|0]=1;return}h=d+24|0;if((c[h>>2]|0)!=2){return}c[h>>2]=f;return}h=c[b+12>>2]|0;g=b+16+(h<<3)|0;i=c[b+20>>2]|0;j=i>>8;if((i&1|0)==0){k=j}else{k=c[(c[e>>2]|0)+j>>2]|0}j=c[b+16>>2]|0;dI[c[(c[j>>2]|0)+28>>2]&1023](j,d,e+k|0,(i&2|0)!=0?f:2);if((h|0)<=1){return}h=d+54|0;i=e;k=b+24|0;while(1){b=c[k+4>>2]|0;j=b>>8;if((b&1|0)==0){l=j}else{l=c[(c[i>>2]|0)+j>>2]|0}j=c[k>>2]|0;dI[c[(c[j>>2]|0)+28>>2]&1023](j,d,e+l|0,(b&2|0)!=0?f:2);if((a[h]&1)!=0){m=3509;break}b=k+8|0;if(b>>>0>>0){k=b}else{m=3507;break}}if((m|0)==3509){return}else if((m|0)==3507){return}}function aDs(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;h=b|0;if((h|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){return}i=d+28|0;if((c[i>>2]|0)==1){return}c[i>>2]=f;return}if((h|0)==(c[d>>2]|0)){do{if((c[d+16>>2]|0)!=(e|0)){h=d+20|0;if((c[h>>2]|0)==(e|0)){break}c[d+32>>2]=f;i=d+44|0;if((c[i>>2]|0)==4){return}j=c[b+12>>2]|0;k=b+16+(j<<3)|0;L4542:do{if((j|0)>0){l=d+52|0;m=d+53|0;n=d+54|0;o=b+8|0;p=d+24|0;q=e;r=0;s=b+16|0;t=0;L4544:while(1){a[l]=0;a[m]=0;u=c[s+4>>2]|0;v=u>>8;if((u&1|0)==0){w=v}else{w=c[(c[q>>2]|0)+v>>2]|0}v=c[s>>2]|0;c_[c[(c[v>>2]|0)+20>>2]&127](v,d,e,e+w|0,2-(u>>>1&1)|0,g);if((a[n]&1)!=0){x=t;y=r;break}do{if((a[m]&1)==0){z=t;A=r}else{if((a[l]&1)==0){if((c[o>>2]&1|0)==0){x=1;y=r;break L4544}else{z=1;A=r;break}}if((c[p>>2]|0)==1){B=3536;break L4542}if((c[o>>2]&2|0)==0){B=3536;break L4542}else{z=1;A=1}}}while(0);u=s+8|0;if(u>>>0>>0){r=A;s=u;t=z}else{x=z;y=A;break}}if(y){C=x;B=3535}else{D=x;B=3532}}else{D=0;B=3532}}while(0);do{if((B|0)==3532){c[h>>2]=e;k=d+40|0;c[k>>2]=(c[k>>2]|0)+1;if((c[d+36>>2]|0)!=1){C=D;B=3535;break}if((c[d+24>>2]|0)!=2){C=D;B=3535;break}a[d+54|0]=1;if(D){B=3536}else{B=3537}}}while(0);if((B|0)==3535){if(C){B=3536}else{B=3537}}if((B|0)==3537){c[i>>2]=4;return}else if((B|0)==3536){c[i>>2]=3;return}}}while(0);if((f|0)!=1){return}c[d+32>>2]=1;return}C=c[b+12>>2]|0;D=b+16+(C<<3)|0;x=c[b+20>>2]|0;y=x>>8;if((x&1|0)==0){E=y}else{E=c[(c[e>>2]|0)+y>>2]|0}y=c[b+16>>2]|0;co[c[(c[y>>2]|0)+24>>2]&255](y,d,e+E|0,(x&2|0)!=0?f:2,g);x=b+24|0;if((C|0)<=1){return}C=c[b+8>>2]|0;do{if((C&2|0)==0){b=d+36|0;if((c[b>>2]|0)==1){break}if((C&1|0)==0){E=d+54|0;y=e;A=x;while(1){if((a[E]&1)!=0){B=3574;break}if((c[b>>2]|0)==1){B=3568;break}z=c[A+4>>2]|0;w=z>>8;if((z&1|0)==0){F=w}else{F=c[(c[y>>2]|0)+w>>2]|0}w=c[A>>2]|0;co[c[(c[w>>2]|0)+24>>2]&255](w,d,e+F|0,(z&2|0)!=0?f:2,g);z=A+8|0;if(z>>>0>>0){A=z}else{B=3577;break}}if((B|0)==3568){return}else if((B|0)==3577){return}else if((B|0)==3574){return}}A=d+24|0;y=d+54|0;E=e;i=x;while(1){if((a[y]&1)!=0){B=3563;break}if((c[b>>2]|0)==1){if((c[A>>2]|0)==1){B=3566;break}}z=c[i+4>>2]|0;w=z>>8;if((z&1|0)==0){G=w}else{G=c[(c[E>>2]|0)+w>>2]|0}w=c[i>>2]|0;co[c[(c[w>>2]|0)+24>>2]&255](w,d,e+G|0,(z&2|0)!=0?f:2,g);z=i+8|0;if(z>>>0>>0){i=z}else{B=3567;break}}if((B|0)==3563){return}else if((B|0)==3566){return}else if((B|0)==3567){return}}}while(0);G=d+54|0;F=e;C=x;while(1){if((a[G]&1)!=0){B=3572;break}x=c[C+4>>2]|0;i=x>>8;if((x&1|0)==0){H=i}else{H=c[(c[F>>2]|0)+i>>2]|0}i=c[C>>2]|0;co[c[(c[i>>2]|0)+24>>2]&255](i,d,e+H|0,(x&2|0)!=0?f:2,g);x=C+8|0;if(x>>>0>>0){C=x}else{B=3565;break}}if((B|0)==3565){return}else if((B|0)==3572){return}}function aDt(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=b|0;if((h|0)==(c[d+8>>2]|0)){if((c[d+4>>2]|0)!=(e|0)){return}i=d+28|0;if((c[i>>2]|0)==1){return}c[i>>2]=f;return}if((h|0)!=(c[d>>2]|0)){h=c[b+8>>2]|0;co[c[(c[h>>2]|0)+24>>2]&255](h,d,e,f,g);return}do{if((c[d+16>>2]|0)!=(e|0)){h=d+20|0;if((c[h>>2]|0)==(e|0)){break}c[d+32>>2]=f;i=d+44|0;if((c[i>>2]|0)==4){return}j=d+52|0;a[j]=0;k=d+53|0;a[k]=0;l=c[b+8>>2]|0;c_[c[(c[l>>2]|0)+20>>2]&127](l,d,e,e,1,g);if((a[k]&1)==0){m=0;n=3592}else{if((a[j]&1)==0){m=1;n=3592}}L4644:do{if((n|0)==3592){c[h>>2]=e;j=d+40|0;c[j>>2]=(c[j>>2]|0)+1;do{if((c[d+36>>2]|0)==1){if((c[d+24>>2]|0)!=2){n=3595;break}a[d+54|0]=1;if(m){break L4644}}else{n=3595}}while(0);if((n|0)==3595){if(m){break}}c[i>>2]=4;return}}while(0);c[i>>2]=3;return}}while(0);if((f|0)!=1){return}c[d+32>>2]=1;return}function aDu(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;if((b|0)!=(c[d+8>>2]|0)){i=d+52|0;j=a[i]&1;k=d+53|0;l=a[k]&1;m=c[b+12>>2]|0;n=b+16+(m<<3)|0;a[i]=0;a[k]=0;o=c[b+20>>2]|0;p=o>>8;if((o&1|0)==0){q=p}else{q=c[(c[f>>2]|0)+p>>2]|0}p=c[b+16>>2]|0;c_[c[(c[p>>2]|0)+20>>2]&127](p,d,e,f+q|0,(o&2|0)!=0?g:2,h);L4666:do{if((m|0)>1){o=d+24|0;q=b+8|0;p=d+54|0;r=f;s=b+24|0;do{if((a[p]&1)!=0){break L4666}do{if((a[i]&1)==0){if((a[k]&1)==0){break}if((c[q>>2]&1|0)==0){break L4666}}else{if((c[o>>2]|0)==1){break L4666}if((c[q>>2]&2|0)==0){break L4666}}}while(0);a[i]=0;a[k]=0;t=c[s+4>>2]|0;u=t>>8;if((t&1|0)==0){v=u}else{v=c[(c[r>>2]|0)+u>>2]|0}u=c[s>>2]|0;c_[c[(c[u>>2]|0)+20>>2]&127](u,d,e,f+v|0,(t&2|0)!=0?g:2,h);s=s+8|0;}while(s>>>0>>0)}}while(0);a[i]=j;a[k]=l;return}a[d+53|0]=1;if((c[d+4>>2]|0)!=(f|0)){return}a[d+52|0]=1;f=d+16|0;l=c[f>>2]|0;if((l|0)==0){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((c[d+48>>2]|0)==1&(g|0)==1)){return}a[d+54|0]=1;return}if((l|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54|0]=1;return}e=d+24|0;l=c[e>>2]|0;if((l|0)==2){c[e>>2]=g;w=g}else{w=l}if(!((c[d+48>>2]|0)==1&(w|0)==1)){return}a[d+54|0]=1;return}function aDv(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;if((c[d+8>>2]|0)!=(b|0)){return}a[d+53|0]=1;if((c[d+4>>2]|0)!=(f|0)){return}a[d+52|0]=1;f=d+16|0;b=c[f>>2]|0;if((b|0)==0){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((c[d+48>>2]|0)==1&(g|0)==1)){return}a[d+54|0]=1;return}if((b|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54|0]=1;return}e=d+24|0;b=c[e>>2]|0;if((b|0)==2){c[e>>2]=g;i=g}else{i=b}if(!((c[d+48>>2]|0)==1&(i|0)==1)){return}a[d+54|0]=1;return}function aDw(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;if((b|0)!=(c[d+8>>2]|0)){i=c[b+8>>2]|0;c_[c[(c[i>>2]|0)+20>>2]&127](i,d,e,f,g,h);return}a[d+53|0]=1;if((c[d+4>>2]|0)!=(f|0)){return}a[d+52|0]=1;f=d+16|0;h=c[f>>2]|0;if((h|0)==0){c[f>>2]=e;c[d+24>>2]=g;c[d+36>>2]=1;if(!((c[d+48>>2]|0)==1&(g|0)==1)){return}a[d+54|0]=1;return}if((h|0)!=(e|0)){e=d+36|0;c[e>>2]=(c[e>>2]|0)+1;a[d+54|0]=1;return}e=d+24|0;h=c[e>>2]|0;if((h|0)==2){c[e>>2]=g;j=g}else{j=h}if(!((c[d+48>>2]|0)==1&(j|0)==1)){return}a[d+54|0]=1;return}function aDx(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ab=0,ac=0,ad=0,ae=0,af=0,ag=0,ah=0,ai=0,aj=0,ak=0,al=0,am=0,an=0,ao=0,ap=0,aq=0,ar=0,as=0,at=0,au=0,av=0,aw=0,ax=0,ay=0,az=0,aA=0,aB=0,aC=0,aD=0,aE=0,aF=0,aG=0;do{if(a>>>0<245){if(a>>>0<11){b=16}else{b=a+11&-8}d=b>>>3;e=c[9814]|0;f=e>>>(d>>>0);if((f&3|0)!=0){g=(f&1^1)+d|0;h=g<<1;i=39296+(h<<2)|0;j=39296+(h+2<<2)|0;h=c[j>>2]|0;k=h+8|0;l=c[k>>2]|0;do{if((i|0)==(l|0)){c[9814]=e&~(1<>>0<(c[9818]|0)>>>0){bH();return 0}m=l+12|0;if((c[m>>2]|0)==(h|0)){c[m>>2]=i;c[j>>2]=l;break}else{bH();return 0}}}while(0);l=g<<3;c[h+4>>2]=l|3;j=h+(l|4)|0;c[j>>2]=c[j>>2]|1;n=k;return n|0}if(b>>>0<=(c[9816]|0)>>>0){o=b;break}if((f|0)!=0){j=2<>>12&16;i=j>>>(l>>>0);j=i>>>5&8;m=i>>>(j>>>0);i=m>>>2&4;p=m>>>(i>>>0);m=p>>>1&2;q=p>>>(m>>>0);p=q>>>1&1;r=(j|l|i|m|p)+(q>>>(p>>>0))|0;p=r<<1;q=39296+(p<<2)|0;m=39296+(p+2<<2)|0;p=c[m>>2]|0;i=p+8|0;l=c[i>>2]|0;do{if((q|0)==(l|0)){c[9814]=e&~(1<>>0<(c[9818]|0)>>>0){bH();return 0}j=l+12|0;if((c[j>>2]|0)==(p|0)){c[j>>2]=q;c[m>>2]=l;break}else{bH();return 0}}}while(0);l=r<<3;m=l-b|0;c[p+4>>2]=b|3;q=p;e=q+b|0;c[q+(b|4)>>2]=m|1;c[q+l>>2]=m;l=c[9816]|0;if((l|0)!=0){q=c[9819]|0;d=l>>>3;l=d<<1;f=39296+(l<<2)|0;k=c[9814]|0;h=1<>2]|0;if(g>>>0>=(c[9818]|0)>>>0){s=g;t=d;break}bH();return 0}}while(0);c[t>>2]=q;c[s+12>>2]=q;c[q+8>>2]=s;c[q+12>>2]=f}c[9816]=m;c[9819]=e;n=i;return n|0}l=c[9815]|0;if((l|0)==0){o=b;break}h=(l&-l)-1|0;l=h>>>12&16;k=h>>>(l>>>0);h=k>>>5&8;p=k>>>(h>>>0);k=p>>>2&4;r=p>>>(k>>>0);p=r>>>1&2;d=r>>>(p>>>0);r=d>>>1&1;g=c[39560+((h|l|k|p|r)+(d>>>(r>>>0))<<2)>>2]|0;r=g;d=g;p=(c[g+4>>2]&-8)-b|0;while(1){g=c[r+16>>2]|0;if((g|0)==0){k=c[r+20>>2]|0;if((k|0)==0){break}else{u=k}}else{u=g}g=(c[u+4>>2]&-8)-b|0;k=g>>>0

>>0;r=u;d=k?u:d;p=k?g:p}r=d;i=c[9818]|0;if(r>>>0>>0){bH();return 0}e=r+b|0;m=e;if(r>>>0>=e>>>0){bH();return 0}e=c[d+24>>2]|0;f=c[d+12>>2]|0;do{if((f|0)==(d|0)){q=d+20|0;g=c[q>>2]|0;if((g|0)==0){k=d+16|0;l=c[k>>2]|0;if((l|0)==0){v=0;break}else{w=l;x=k}}else{w=g;x=q}while(1){q=w+20|0;g=c[q>>2]|0;if((g|0)!=0){w=g;x=q;continue}q=w+16|0;g=c[q>>2]|0;if((g|0)==0){break}else{w=g;x=q}}if(x>>>0>>0){bH();return 0}else{c[x>>2]=0;v=w;break}}else{q=c[d+8>>2]|0;if(q>>>0>>0){bH();return 0}g=q+12|0;if((c[g>>2]|0)!=(d|0)){bH();return 0}k=f+8|0;if((c[k>>2]|0)==(d|0)){c[g>>2]=f;c[k>>2]=q;v=f;break}else{bH();return 0}}}while(0);L4833:do{if((e|0)!=0){f=d+28|0;i=39560+(c[f>>2]<<2)|0;do{if((d|0)==(c[i>>2]|0)){c[i>>2]=v;if((v|0)!=0){break}c[9815]=c[9815]&~(1<>2]);break L4833}else{if(e>>>0<(c[9818]|0)>>>0){bH();return 0}q=e+16|0;if((c[q>>2]|0)==(d|0)){c[q>>2]=v}else{c[e+20>>2]=v}if((v|0)==0){break L4833}}}while(0);if(v>>>0<(c[9818]|0)>>>0){bH();return 0}c[v+24>>2]=e;f=c[d+16>>2]|0;do{if((f|0)!=0){if(f>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[v+16>>2]=f;c[f+24>>2]=v;break}}}while(0);f=c[d+20>>2]|0;if((f|0)==0){break}if(f>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[v+20>>2]=f;c[f+24>>2]=v;break}}}while(0);if(p>>>0<16){e=p+b|0;c[d+4>>2]=e|3;f=r+(e+4)|0;c[f>>2]=c[f>>2]|1}else{c[d+4>>2]=b|3;c[r+(b|4)>>2]=p|1;c[r+(p+b)>>2]=p;f=c[9816]|0;if((f|0)!=0){e=c[9819]|0;i=f>>>3;f=i<<1;q=39296+(f<<2)|0;k=c[9814]|0;g=1<>2]|0;if(l>>>0>=(c[9818]|0)>>>0){y=l;z=i;break}bH();return 0}}while(0);c[z>>2]=e;c[y+12>>2]=e;c[e+8>>2]=y;c[e+12>>2]=q}c[9816]=p;c[9819]=m}f=d+8|0;if((f|0)==0){o=b;break}else{n=f}return n|0}else{if(a>>>0>4294967231){o=-1;break}f=a+11|0;g=f&-8;k=c[9815]|0;if((k|0)==0){o=g;break}r=-g|0;i=f>>>8;do{if((i|0)==0){A=0}else{if(g>>>0>16777215){A=31;break}f=(i+1048320|0)>>>16&8;l=i<>>16&4;j=l<>>16&2;B=14-(h|f|l)+(j<>>15)|0;A=g>>>((B+7|0)>>>0)&1|B<<1}}while(0);i=c[39560+(A<<2)>>2]|0;L4881:do{if((i|0)==0){C=0;D=r;E=0}else{if((A|0)==31){F=0}else{F=25-(A>>>1)|0}d=0;m=r;p=i;q=g<>2]&-8;l=B-g|0;if(l>>>0>>0){if((B|0)==(g|0)){C=p;D=l;E=p;break L4881}else{G=p;H=l}}else{G=d;H=m}l=c[p+20>>2]|0;B=c[p+16+(q>>>31<<2)>>2]|0;j=(l|0)==0|(l|0)==(B|0)?e:l;if((B|0)==0){C=G;D=H;E=j;break}else{d=G;m=H;p=B;q=q<<1;e=j}}}}while(0);if((E|0)==0&(C|0)==0){i=2<>>12&16;e=i>>>(r>>>0);i=e>>>5&8;q=e>>>(i>>>0);e=q>>>2&4;p=q>>>(e>>>0);q=p>>>1&2;m=p>>>(q>>>0);p=m>>>1&1;I=c[39560+((i|r|e|q|p)+(m>>>(p>>>0))<<2)>>2]|0}else{I=E}if((I|0)==0){J=D;K=C}else{p=I;m=D;q=C;while(1){e=(c[p+4>>2]&-8)-g|0;r=e>>>0>>0;i=r?e:m;e=r?p:q;r=c[p+16>>2]|0;if((r|0)!=0){p=r;m=i;q=e;continue}r=c[p+20>>2]|0;if((r|0)==0){J=i;K=e;break}else{p=r;m=i;q=e}}}if((K|0)==0){o=g;break}if(J>>>0>=((c[9816]|0)-g|0)>>>0){o=g;break}q=K;m=c[9818]|0;if(q>>>0>>0){bH();return 0}p=q+g|0;k=p;if(q>>>0>=p>>>0){bH();return 0}e=c[K+24>>2]|0;i=c[K+12>>2]|0;do{if((i|0)==(K|0)){r=K+20|0;d=c[r>>2]|0;if((d|0)==0){j=K+16|0;B=c[j>>2]|0;if((B|0)==0){L=0;break}else{M=B;N=j}}else{M=d;N=r}while(1){r=M+20|0;d=c[r>>2]|0;if((d|0)!=0){M=d;N=r;continue}r=M+16|0;d=c[r>>2]|0;if((d|0)==0){break}else{M=d;N=r}}if(N>>>0>>0){bH();return 0}else{c[N>>2]=0;L=M;break}}else{r=c[K+8>>2]|0;if(r>>>0>>0){bH();return 0}d=r+12|0;if((c[d>>2]|0)!=(K|0)){bH();return 0}j=i+8|0;if((c[j>>2]|0)==(K|0)){c[d>>2]=i;c[j>>2]=r;L=i;break}else{bH();return 0}}}while(0);L4931:do{if((e|0)!=0){i=K+28|0;m=39560+(c[i>>2]<<2)|0;do{if((K|0)==(c[m>>2]|0)){c[m>>2]=L;if((L|0)!=0){break}c[9815]=c[9815]&~(1<>2]);break L4931}else{if(e>>>0<(c[9818]|0)>>>0){bH();return 0}r=e+16|0;if((c[r>>2]|0)==(K|0)){c[r>>2]=L}else{c[e+20>>2]=L}if((L|0)==0){break L4931}}}while(0);if(L>>>0<(c[9818]|0)>>>0){bH();return 0}c[L+24>>2]=e;i=c[K+16>>2]|0;do{if((i|0)!=0){if(i>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[L+16>>2]=i;c[i+24>>2]=L;break}}}while(0);i=c[K+20>>2]|0;if((i|0)==0){break}if(i>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[L+20>>2]=i;c[i+24>>2]=L;break}}}while(0);do{if(J>>>0<16){e=J+g|0;c[K+4>>2]=e|3;i=q+(e+4)|0;c[i>>2]=c[i>>2]|1}else{c[K+4>>2]=g|3;c[q+(g|4)>>2]=J|1;c[q+(J+g)>>2]=J;i=J>>>3;if(J>>>0<256){e=i<<1;m=39296+(e<<2)|0;r=c[9814]|0;j=1<>2]|0;if(d>>>0>=(c[9818]|0)>>>0){O=d;P=i;break}bH();return 0}}while(0);c[P>>2]=k;c[O+12>>2]=k;c[q+(g+8)>>2]=O;c[q+(g+12)>>2]=m;break}e=p;j=J>>>8;do{if((j|0)==0){Q=0}else{if(J>>>0>16777215){Q=31;break}r=(j+1048320|0)>>>16&8;i=j<>>16&4;B=i<>>16&2;l=14-(d|r|i)+(B<>>15)|0;Q=J>>>((l+7|0)>>>0)&1|l<<1}}while(0);j=39560+(Q<<2)|0;c[q+(g+28)>>2]=Q;c[q+(g+20)>>2]=0;c[q+(g+16)>>2]=0;m=c[9815]|0;l=1<>2]=e;c[q+(g+24)>>2]=j;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}if((Q|0)==31){R=0}else{R=25-(Q>>>1)|0}l=J<>2]|0;while(1){if((c[m+4>>2]&-8|0)==(J|0)){break}S=m+16+(l>>>31<<2)|0;j=c[S>>2]|0;if((j|0)==0){T=3831;break}else{l=l<<1;m=j}}if((T|0)==3831){if(S>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[S>>2]=e;c[q+(g+24)>>2]=m;c[q+(g+12)>>2]=e;c[q+(g+8)>>2]=e;break}}l=m+8|0;j=c[l>>2]|0;i=c[9818]|0;if(m>>>0>>0){bH();return 0}if(j>>>0>>0){bH();return 0}else{c[j+12>>2]=e;c[l>>2]=e;c[q+(g+8)>>2]=j;c[q+(g+12)>>2]=m;c[q+(g+24)>>2]=0;break}}}while(0);q=K+8|0;if((q|0)==0){o=g;break}else{n=q}return n|0}}while(0);K=c[9816]|0;if(o>>>0<=K>>>0){S=K-o|0;J=c[9819]|0;if(S>>>0>15){R=J;c[9819]=R+o;c[9816]=S;c[R+(o+4)>>2]=S|1;c[R+K>>2]=S;c[J+4>>2]=o|3}else{c[9816]=0;c[9819]=0;c[J+4>>2]=K|3;S=J+(K+4)|0;c[S>>2]=c[S>>2]|1}n=J+8|0;return n|0}J=c[9817]|0;if(o>>>0>>0){S=J-o|0;c[9817]=S;J=c[9820]|0;K=J;c[9820]=K+o;c[K+(o+4)>>2]=S|1;c[J+4>>2]=o|3;n=J+8|0;return n|0}do{if((c[9782]|0)==0){J=bE(8)|0;if((J-1&J|0)==0){c[9784]=J;c[9783]=J;c[9785]=-1;c[9786]=-1;c[9787]=0;c[9925]=0;c[9782]=(b_(0)|0)&-16^1431655768;break}else{bH();return 0}}}while(0);J=o+48|0;S=c[9784]|0;K=o+47|0;R=S+K|0;Q=-S|0;S=R&Q;if(S>>>0<=o>>>0){n=0;return n|0}O=c[9924]|0;do{if((O|0)!=0){P=c[9922]|0;L=P+S|0;if(L>>>0<=P>>>0|L>>>0>O>>>0){n=0}else{break}return n|0}}while(0);L5023:do{if((c[9925]&4|0)==0){O=c[9820]|0;L5025:do{if((O|0)==0){T=3861}else{L=O;P=39704;while(1){U=P|0;M=c[U>>2]|0;if(M>>>0<=L>>>0){V=P+4|0;if((M+(c[V>>2]|0)|0)>>>0>L>>>0){break}}M=c[P+8>>2]|0;if((M|0)==0){T=3861;break L5025}else{P=M}}if((P|0)==0){T=3861;break}L=R-(c[9817]|0)&Q;if(L>>>0>=2147483647){W=0;break}m=cb(L|0)|0;e=(m|0)==((c[U>>2]|0)+(c[V>>2]|0)|0);X=e?m:-1;Y=e?L:0;Z=m;_=L;T=3870}}while(0);do{if((T|0)==3861){O=cb(0)|0;if((O|0)==-1){W=0;break}g=O;L=c[9783]|0;m=L-1|0;if((m&g|0)==0){$=S}else{$=S-g+(m+g&-L)|0}L=c[9922]|0;g=L+$|0;if(!($>>>0>o>>>0&$>>>0<2147483647)){W=0;break}m=c[9924]|0;if((m|0)!=0){if(g>>>0<=L>>>0|g>>>0>m>>>0){W=0;break}}m=cb($|0)|0;g=(m|0)==(O|0);X=g?O:-1;Y=g?$:0;Z=m;_=$;T=3870}}while(0);L5045:do{if((T|0)==3870){m=-_|0;if((X|0)!=-1){aa=Y;ab=X;T=3881;break L5023}do{if((Z|0)!=-1&_>>>0<2147483647&_>>>0>>0){g=c[9784]|0;O=K-_+g&-g;if(O>>>0>=2147483647){ac=_;break}if((cb(O|0)|0)==-1){cb(m|0)|0;W=Y;break L5045}else{ac=O+_|0;break}}else{ac=_}}while(0);if((Z|0)==-1){W=Y}else{aa=ac;ab=Z;T=3881;break L5023}}}while(0);c[9925]=c[9925]|4;ad=W;T=3878}else{ad=0;T=3878}}while(0);do{if((T|0)==3878){if(S>>>0>=2147483647){break}W=cb(S|0)|0;Z=cb(0)|0;if(!((Z|0)!=-1&(W|0)!=-1&W>>>0>>0)){break}ac=Z-W|0;Z=ac>>>0>(o+40|0)>>>0;Y=Z?W:-1;if((Y|0)!=-1){aa=Z?ac:ad;ab=Y;T=3881}}}while(0);do{if((T|0)==3881){ad=(c[9922]|0)+aa|0;c[9922]=ad;if(ad>>>0>(c[9923]|0)>>>0){c[9923]=ad}ad=c[9820]|0;L5065:do{if((ad|0)==0){S=c[9818]|0;if((S|0)==0|ab>>>0>>0){c[9818]=ab}c[9926]=ab;c[9927]=aa;c[9929]=0;c[9823]=c[9782];c[9822]=-1;S=0;do{Y=S<<1;ac=39296+(Y<<2)|0;c[39296+(Y+3<<2)>>2]=ac;c[39296+(Y+2<<2)>>2]=ac;S=S+1|0;}while(S>>>0<32);S=ab+8|0;if((S&7|0)==0){ae=0}else{ae=-S&7}S=aa-40-ae|0;c[9820]=ab+ae;c[9817]=S;c[ab+(ae+4)>>2]=S|1;c[ab+(aa-36)>>2]=40;c[9821]=c[9786]}else{S=39704;while(1){af=c[S>>2]|0;ag=S+4|0;ah=c[ag>>2]|0;if((ab|0)==(af+ah|0)){T=3893;break}ac=c[S+8>>2]|0;if((ac|0)==0){break}else{S=ac}}do{if((T|0)==3893){if((c[S+12>>2]&8|0)!=0){break}ac=ad;if(!(ac>>>0>=af>>>0&ac>>>0>>0)){break}c[ag>>2]=ah+aa;ac=c[9820]|0;Y=(c[9817]|0)+aa|0;Z=ac;W=ac+8|0;if((W&7|0)==0){ai=0}else{ai=-W&7}W=Y-ai|0;c[9820]=Z+ai;c[9817]=W;c[Z+(ai+4)>>2]=W|1;c[Z+(Y+4)>>2]=40;c[9821]=c[9786];break L5065}}while(0);if(ab>>>0<(c[9818]|0)>>>0){c[9818]=ab}S=ab+aa|0;Y=39704;while(1){aj=Y|0;if((c[aj>>2]|0)==(S|0)){T=3903;break}Z=c[Y+8>>2]|0;if((Z|0)==0){break}else{Y=Z}}do{if((T|0)==3903){if((c[Y+12>>2]&8|0)!=0){break}c[aj>>2]=ab;S=Y+4|0;c[S>>2]=(c[S>>2]|0)+aa;S=ab+8|0;if((S&7|0)==0){ak=0}else{ak=-S&7}S=ab+(aa+8)|0;if((S&7|0)==0){al=0}else{al=-S&7}S=ab+(al+aa)|0;Z=S;W=ak+o|0;ac=ab+W|0;_=ac;K=S-(ab+ak)-o|0;c[ab+(ak+4)>>2]=o|3;do{if((Z|0)==(c[9820]|0)){J=(c[9817]|0)+K|0;c[9817]=J;c[9820]=_;c[ab+(W+4)>>2]=J|1}else{if((Z|0)==(c[9819]|0)){J=(c[9816]|0)+K|0;c[9816]=J;c[9819]=_;c[ab+(W+4)>>2]=J|1;c[ab+(J+W)>>2]=J;break}J=aa+4|0;X=c[ab+(J+al)>>2]|0;if((X&3|0)==1){$=X&-8;V=X>>>3;L5110:do{if(X>>>0<256){U=c[ab+((al|8)+aa)>>2]|0;Q=c[ab+(aa+12+al)>>2]|0;R=39296+(V<<1<<2)|0;do{if((U|0)!=(R|0)){if(U>>>0<(c[9818]|0)>>>0){bH();return 0}if((c[U+12>>2]|0)==(Z|0)){break}bH();return 0}}while(0);if((Q|0)==(U|0)){c[9814]=c[9814]&~(1<>>0<(c[9818]|0)>>>0){bH();return 0}m=Q+8|0;if((c[m>>2]|0)==(Z|0)){am=m;break}bH();return 0}}while(0);c[U+12>>2]=Q;c[am>>2]=U}else{R=S;m=c[ab+((al|24)+aa)>>2]|0;P=c[ab+(aa+12+al)>>2]|0;do{if((P|0)==(R|0)){O=al|16;g=ab+(J+O)|0;L=c[g>>2]|0;if((L|0)==0){e=ab+(O+aa)|0;O=c[e>>2]|0;if((O|0)==0){an=0;break}else{ao=O;ap=e}}else{ao=L;ap=g}while(1){g=ao+20|0;L=c[g>>2]|0;if((L|0)!=0){ao=L;ap=g;continue}g=ao+16|0;L=c[g>>2]|0;if((L|0)==0){break}else{ao=L;ap=g}}if(ap>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[ap>>2]=0;an=ao;break}}else{g=c[ab+((al|8)+aa)>>2]|0;if(g>>>0<(c[9818]|0)>>>0){bH();return 0}L=g+12|0;if((c[L>>2]|0)!=(R|0)){bH();return 0}e=P+8|0;if((c[e>>2]|0)==(R|0)){c[L>>2]=P;c[e>>2]=g;an=P;break}else{bH();return 0}}}while(0);if((m|0)==0){break}P=ab+(aa+28+al)|0;U=39560+(c[P>>2]<<2)|0;do{if((R|0)==(c[U>>2]|0)){c[U>>2]=an;if((an|0)!=0){break}c[9815]=c[9815]&~(1<>2]);break L5110}else{if(m>>>0<(c[9818]|0)>>>0){bH();return 0}Q=m+16|0;if((c[Q>>2]|0)==(R|0)){c[Q>>2]=an}else{c[m+20>>2]=an}if((an|0)==0){break L5110}}}while(0);if(an>>>0<(c[9818]|0)>>>0){bH();return 0}c[an+24>>2]=m;R=al|16;P=c[ab+(R+aa)>>2]|0;do{if((P|0)!=0){if(P>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[an+16>>2]=P;c[P+24>>2]=an;break}}}while(0);P=c[ab+(J+R)>>2]|0;if((P|0)==0){break}if(P>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[an+20>>2]=P;c[P+24>>2]=an;break}}}while(0);aq=ab+(($|al)+aa)|0;ar=$+K|0}else{aq=Z;ar=K}J=aq+4|0;c[J>>2]=c[J>>2]&-2;c[ab+(W+4)>>2]=ar|1;c[ab+(ar+W)>>2]=ar;J=ar>>>3;if(ar>>>0<256){V=J<<1;X=39296+(V<<2)|0;P=c[9814]|0;m=1<>2]|0;if(U>>>0>=(c[9818]|0)>>>0){as=U;at=J;break}bH();return 0}}while(0);c[at>>2]=_;c[as+12>>2]=_;c[ab+(W+8)>>2]=as;c[ab+(W+12)>>2]=X;break}V=ac;m=ar>>>8;do{if((m|0)==0){au=0}else{if(ar>>>0>16777215){au=31;break}P=(m+1048320|0)>>>16&8;$=m<>>16&4;U=$<>>16&2;Q=14-(J|P|$)+(U<<$>>>15)|0;au=ar>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=39560+(au<<2)|0;c[ab+(W+28)>>2]=au;c[ab+(W+20)>>2]=0;c[ab+(W+16)>>2]=0;X=c[9815]|0;Q=1<>2]=V;c[ab+(W+24)>>2]=m;c[ab+(W+12)>>2]=V;c[ab+(W+8)>>2]=V;break}if((au|0)==31){av=0}else{av=25-(au>>>1)|0}Q=ar<>2]|0;while(1){if((c[X+4>>2]&-8|0)==(ar|0)){break}aw=X+16+(Q>>>31<<2)|0;m=c[aw>>2]|0;if((m|0)==0){T=3976;break}else{Q=Q<<1;X=m}}if((T|0)==3976){if(aw>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[aw>>2]=V;c[ab+(W+24)>>2]=X;c[ab+(W+12)>>2]=V;c[ab+(W+8)>>2]=V;break}}Q=X+8|0;m=c[Q>>2]|0;$=c[9818]|0;if(X>>>0<$>>>0){bH();return 0}if(m>>>0<$>>>0){bH();return 0}else{c[m+12>>2]=V;c[Q>>2]=V;c[ab+(W+8)>>2]=m;c[ab+(W+12)>>2]=X;c[ab+(W+24)>>2]=0;break}}}while(0);n=ab+(ak|8)|0;return n|0}}while(0);Y=ad;W=39704;while(1){ax=c[W>>2]|0;if(ax>>>0<=Y>>>0){ay=c[W+4>>2]|0;az=ax+ay|0;if(az>>>0>Y>>>0){break}}W=c[W+8>>2]|0}W=ax+(ay-39)|0;if((W&7|0)==0){aA=0}else{aA=-W&7}W=ax+(ay-47+aA)|0;ac=W>>>0<(ad+16|0)>>>0?Y:W;W=ac+8|0;_=ab+8|0;if((_&7|0)==0){aB=0}else{aB=-_&7}_=aa-40-aB|0;c[9820]=ab+aB;c[9817]=_;c[ab+(aB+4)>>2]=_|1;c[ab+(aa-36)>>2]=40;c[9821]=c[9786];c[ac+4>>2]=27;c[W>>2]=c[9926];c[W+4>>2]=c[39708>>2];c[W+8>>2]=c[39712>>2];c[W+12>>2]=c[39716>>2];c[9926]=ab;c[9927]=aa;c[9929]=0;c[9928]=W;W=ac+28|0;c[W>>2]=7;if((ac+32|0)>>>0>>0){_=W;while(1){W=_+4|0;c[W>>2]=7;if((_+8|0)>>>0>>0){_=W}else{break}}}if((ac|0)==(Y|0)){break}_=ac-ad|0;W=Y+(_+4)|0;c[W>>2]=c[W>>2]&-2;c[ad+4>>2]=_|1;c[Y+_>>2]=_;W=_>>>3;if(_>>>0<256){K=W<<1;Z=39296+(K<<2)|0;S=c[9814]|0;m=1<>2]|0;if(Q>>>0>=(c[9818]|0)>>>0){aC=Q;aD=W;break}bH();return 0}}while(0);c[aD>>2]=ad;c[aC+12>>2]=ad;c[ad+8>>2]=aC;c[ad+12>>2]=Z;break}K=ad;m=_>>>8;do{if((m|0)==0){aE=0}else{if(_>>>0>16777215){aE=31;break}S=(m+1048320|0)>>>16&8;Y=m<>>16&4;W=Y<>>16&2;Q=14-(ac|S|Y)+(W<>>15)|0;aE=_>>>((Q+7|0)>>>0)&1|Q<<1}}while(0);m=39560+(aE<<2)|0;c[ad+28>>2]=aE;c[ad+20>>2]=0;c[ad+16>>2]=0;Z=c[9815]|0;Q=1<>2]=K;c[ad+24>>2]=m;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}if((aE|0)==31){aF=0}else{aF=25-(aE>>>1)|0}Q=_<>2]|0;while(1){if((c[Z+4>>2]&-8|0)==(_|0)){break}aG=Z+16+(Q>>>31<<2)|0;m=c[aG>>2]|0;if((m|0)==0){T=4011;break}else{Q=Q<<1;Z=m}}if((T|0)==4011){if(aG>>>0<(c[9818]|0)>>>0){bH();return 0}else{c[aG>>2]=K;c[ad+24>>2]=Z;c[ad+12>>2]=ad;c[ad+8>>2]=ad;break}}Q=Z+8|0;_=c[Q>>2]|0;m=c[9818]|0;if(Z>>>0>>0){bH();return 0}if(_>>>0>>0){bH();return 0}else{c[_+12>>2]=K;c[Q>>2]=K;c[ad+8>>2]=_;c[ad+12>>2]=Z;c[ad+24>>2]=0;break}}}while(0);ad=c[9817]|0;if(ad>>>0<=o>>>0){break}_=ad-o|0;c[9817]=_;ad=c[9820]|0;Q=ad;c[9820]=Q+o;c[Q+(o+4)>>2]=_|1;c[ad+4>>2]=o|3;n=ad+8|0;return n|0}}while(0);c[(ce()|0)>>2]=12;n=0;return n|0}function aDy(a){a=a|0;return}function aDz(a){a=a|0;return 17040|0}function aDA(a){a=a|0;if((a|0)==0){return}aDB(a);return}function aDB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;if((a|0)==0){return}b=a-8|0;d=b;e=c[9818]|0;if(b>>>0>>0){bH()}f=c[a-4>>2]|0;g=f&3;if((g|0)==1){bH()}h=f&-8;i=a+(h-8)|0;j=i;L5289:do{if((f&1|0)==0){k=c[b>>2]|0;if((g|0)==0){return}l=-8-k|0;m=a+l|0;n=m;o=k+h|0;if(m>>>0>>0){bH()}if((n|0)==(c[9819]|0)){p=a+(h-4)|0;if((c[p>>2]&3|0)!=3){q=n;r=o;break}c[9816]=o;c[p>>2]=c[p>>2]&-2;c[a+(l+4)>>2]=o|1;c[i>>2]=o;return}p=k>>>3;if(k>>>0<256){k=c[a+(l+8)>>2]|0;s=c[a+(l+12)>>2]|0;t=39296+(p<<1<<2)|0;do{if((k|0)!=(t|0)){if(k>>>0>>0){bH()}if((c[k+12>>2]|0)==(n|0)){break}bH()}}while(0);if((s|0)==(k|0)){c[9814]=c[9814]&~(1<>>0>>0){bH()}v=s+8|0;if((c[v>>2]|0)==(n|0)){u=v;break}bH()}}while(0);c[k+12>>2]=s;c[u>>2]=k;q=n;r=o;break}t=m;p=c[a+(l+24)>>2]|0;v=c[a+(l+12)>>2]|0;do{if((v|0)==(t|0)){w=a+(l+20)|0;x=c[w>>2]|0;if((x|0)==0){y=a+(l+16)|0;z=c[y>>2]|0;if((z|0)==0){A=0;break}else{B=z;C=y}}else{B=x;C=w}while(1){w=B+20|0;x=c[w>>2]|0;if((x|0)!=0){B=x;C=w;continue}w=B+16|0;x=c[w>>2]|0;if((x|0)==0){break}else{B=x;C=w}}if(C>>>0>>0){bH()}else{c[C>>2]=0;A=B;break}}else{w=c[a+(l+8)>>2]|0;if(w>>>0>>0){bH()}x=w+12|0;if((c[x>>2]|0)!=(t|0)){bH()}y=v+8|0;if((c[y>>2]|0)==(t|0)){c[x>>2]=v;c[y>>2]=w;A=v;break}else{bH()}}}while(0);if((p|0)==0){q=n;r=o;break}v=a+(l+28)|0;m=39560+(c[v>>2]<<2)|0;do{if((t|0)==(c[m>>2]|0)){c[m>>2]=A;if((A|0)!=0){break}c[9815]=c[9815]&~(1<>2]);q=n;r=o;break L5289}else{if(p>>>0<(c[9818]|0)>>>0){bH()}k=p+16|0;if((c[k>>2]|0)==(t|0)){c[k>>2]=A}else{c[p+20>>2]=A}if((A|0)==0){q=n;r=o;break L5289}}}while(0);if(A>>>0<(c[9818]|0)>>>0){bH()}c[A+24>>2]=p;t=c[a+(l+16)>>2]|0;do{if((t|0)!=0){if(t>>>0<(c[9818]|0)>>>0){bH()}else{c[A+16>>2]=t;c[t+24>>2]=A;break}}}while(0);t=c[a+(l+20)>>2]|0;if((t|0)==0){q=n;r=o;break}if(t>>>0<(c[9818]|0)>>>0){bH()}else{c[A+20>>2]=t;c[t+24>>2]=A;q=n;r=o;break}}else{q=d;r=h}}while(0);d=q;if(d>>>0>=i>>>0){bH()}A=a+(h-4)|0;e=c[A>>2]|0;if((e&1|0)==0){bH()}do{if((e&2|0)==0){if((j|0)==(c[9820]|0)){B=(c[9817]|0)+r|0;c[9817]=B;c[9820]=q;c[q+4>>2]=B|1;if((q|0)!=(c[9819]|0)){return}c[9819]=0;c[9816]=0;return}if((j|0)==(c[9819]|0)){B=(c[9816]|0)+r|0;c[9816]=B;c[9819]=q;c[q+4>>2]=B|1;c[d+B>>2]=B;return}B=(e&-8)+r|0;C=e>>>3;L5392:do{if(e>>>0<256){u=c[a+h>>2]|0;g=c[a+(h|4)>>2]|0;b=39296+(C<<1<<2)|0;do{if((u|0)!=(b|0)){if(u>>>0<(c[9818]|0)>>>0){bH()}if((c[u+12>>2]|0)==(j|0)){break}bH()}}while(0);if((g|0)==(u|0)){c[9814]=c[9814]&~(1<>>0<(c[9818]|0)>>>0){bH()}f=g+8|0;if((c[f>>2]|0)==(j|0)){D=f;break}bH()}}while(0);c[u+12>>2]=g;c[D>>2]=u}else{b=i;f=c[a+(h+16)>>2]|0;t=c[a+(h|4)>>2]|0;do{if((t|0)==(b|0)){p=a+(h+12)|0;v=c[p>>2]|0;if((v|0)==0){m=a+(h+8)|0;k=c[m>>2]|0;if((k|0)==0){E=0;break}else{F=k;G=m}}else{F=v;G=p}while(1){p=F+20|0;v=c[p>>2]|0;if((v|0)!=0){F=v;G=p;continue}p=F+16|0;v=c[p>>2]|0;if((v|0)==0){break}else{F=v;G=p}}if(G>>>0<(c[9818]|0)>>>0){bH()}else{c[G>>2]=0;E=F;break}}else{p=c[a+h>>2]|0;if(p>>>0<(c[9818]|0)>>>0){bH()}v=p+12|0;if((c[v>>2]|0)!=(b|0)){bH()}m=t+8|0;if((c[m>>2]|0)==(b|0)){c[v>>2]=t;c[m>>2]=p;E=t;break}else{bH()}}}while(0);if((f|0)==0){break}t=a+(h+20)|0;u=39560+(c[t>>2]<<2)|0;do{if((b|0)==(c[u>>2]|0)){c[u>>2]=E;if((E|0)!=0){break}c[9815]=c[9815]&~(1<>2]);break L5392}else{if(f>>>0<(c[9818]|0)>>>0){bH()}g=f+16|0;if((c[g>>2]|0)==(b|0)){c[g>>2]=E}else{c[f+20>>2]=E}if((E|0)==0){break L5392}}}while(0);if(E>>>0<(c[9818]|0)>>>0){bH()}c[E+24>>2]=f;b=c[a+(h+8)>>2]|0;do{if((b|0)!=0){if(b>>>0<(c[9818]|0)>>>0){bH()}else{c[E+16>>2]=b;c[b+24>>2]=E;break}}}while(0);b=c[a+(h+12)>>2]|0;if((b|0)==0){break}if(b>>>0<(c[9818]|0)>>>0){bH()}else{c[E+20>>2]=b;c[b+24>>2]=E;break}}}while(0);c[q+4>>2]=B|1;c[d+B>>2]=B;if((q|0)!=(c[9819]|0)){H=B;break}c[9816]=B;return}else{c[A>>2]=e&-2;c[q+4>>2]=r|1;c[d+r>>2]=r;H=r}}while(0);r=H>>>3;if(H>>>0<256){d=r<<1;e=39296+(d<<2)|0;A=c[9814]|0;E=1<>2]|0;if(h>>>0>=(c[9818]|0)>>>0){I=h;J=r;break}bH()}}while(0);c[J>>2]=q;c[I+12>>2]=q;c[q+8>>2]=I;c[q+12>>2]=e;return}e=q;I=H>>>8;do{if((I|0)==0){K=0}else{if(H>>>0>16777215){K=31;break}J=(I+1048320|0)>>>16&8;d=I<>>16&4;A=d<>>16&2;r=14-(E|J|d)+(A<>>15)|0;K=H>>>((r+7|0)>>>0)&1|r<<1}}while(0);I=39560+(K<<2)|0;c[q+28>>2]=K;c[q+20>>2]=0;c[q+16>>2]=0;r=c[9815]|0;d=1<>2]=e;c[q+24>>2]=I;c[q+12>>2]=q;c[q+8>>2]=q}else{if((K|0)==31){L=0}else{L=25-(K>>>1)|0}A=H<>2]|0;while(1){if((c[J+4>>2]&-8|0)==(H|0)){break}M=J+16+(A>>>31<<2)|0;E=c[M>>2]|0;if((E|0)==0){N=4195;break}else{A=A<<1;J=E}}if((N|0)==4195){if(M>>>0<(c[9818]|0)>>>0){bH()}else{c[M>>2]=e;c[q+24>>2]=J;c[q+12>>2]=q;c[q+8>>2]=q;break}}A=J+8|0;B=c[A>>2]|0;E=c[9818]|0;if(J>>>0>>0){bH()}if(B>>>0>>0){bH()}else{c[B+12>>2]=e;c[A>>2]=e;c[q+8>>2]=B;c[q+12>>2]=J;c[q+24>>2]=0;break}}}while(0);q=(c[9822]|0)-1|0;c[9822]=q;if((q|0)==0){O=39712}else{return}while(1){q=c[O>>2]|0;if((q|0)==0){break}else{O=q+8|0}}c[9822]=-1;return}function aDC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b|0;if((b&3)==(d&3)){while(b&3){if((e|0)==0)return f|0;a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b]=a[d]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function aDD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=b+e|0;if((e|0)>=20){d=d&255;e=b&3;g=d|d<<8|d<<16|d<<24;h=f&~3;if(e){e=b+4-e|0;while((b|0)<(e|0)){a[b]=d;b=b+1|0}}while((b|0)<(h|0)){c[b>>2]=g;b=b+4|0}}while((b|0)<(f|0)){a[b]=d;b=b+1|0}}function aDE(b){b=b|0;var c=0;c=b;while(a[c]|0){c=c+1|0}return c-b|0}function aDF(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;c=b+d>>>0;d=c>>>0>>0|0;if(e>>>0>>0){c=c+1>>>0;d=d|!c}return(E=c,F=d,e|0)|0}function aDG(b,c,d){b=b|0;c=c|0;d=d|0;if((c|0)<(b|0)&(b|0)<(c+d|0)){c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b]=a[c]|0}}else{aDC(b,c,d)|0}} +function aDH(){bW()}function aDI(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;co[a&255](b|0,c|0,d|0,e|0,f|0)}function aDJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(0,a|0,b|0,c|0,d|0,e|0)}function aDK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(1,a|0,b|0,c|0,d|0,e|0)}function aDL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(2,a|0,b|0,c|0,d|0,e|0)}function aDM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(3,a|0,b|0,c|0,d|0,e|0)}function aDN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(4,a|0,b|0,c|0,d|0,e|0)}function aDO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(5,a|0,b|0,c|0,d|0,e|0)}function aDP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(6,a|0,b|0,c|0,d|0,e|0)}function aDQ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(7,a|0,b|0,c|0,d|0,e|0)}function aDR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(8,a|0,b|0,c|0,d|0,e|0)}function aDS(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(9,a|0,b|0,c|0,d|0,e|0)}function aDT(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(10,a|0,b|0,c|0,d|0,e|0)}function aDU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(11,a|0,b|0,c|0,d|0,e|0)}function aDV(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(12,a|0,b|0,c|0,d|0,e|0)}function aDW(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(13,a|0,b|0,c|0,d|0,e|0)}function aDX(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(14,a|0,b|0,c|0,d|0,e|0)}function aDY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(15,a|0,b|0,c|0,d|0,e|0)}function aDZ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(16,a|0,b|0,c|0,d|0,e|0)}function aD_(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(17,a|0,b|0,c|0,d|0,e|0)}function aD$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(18,a|0,b|0,c|0,d|0,e|0)}function aD0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ag(19,a|0,b|0,c|0,d|0,e|0)}function aD1(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;return cp[a&63](b|0,c|0,d|0,e|0,f|0,+g)|0}function aD2(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(0,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD3(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(1,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD4(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(2,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD5(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(3,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD6(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(4,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD7(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(5,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD8(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(6,a|0,b|0,c|0,d|0,e|0,+f)|0}function aD9(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(7,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEa(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(8,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(9,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(10,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(11,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(12,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(13,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(14,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(15,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(16,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(17,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(18,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEl(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return ag(19,a|0,b|0,c|0,d|0,e|0,+f)|0}function aEm(a,b,c){a=a|0;b=b|0;c=+c;cq[a&1023](b|0,+c)}function aEn(a,b){a=a|0;b=+b;ag(0,a|0,+b)}function aEo(a,b){a=a|0;b=+b;ag(1,a|0,+b)}function aEp(a,b){a=a|0;b=+b;ag(2,a|0,+b)}function aEq(a,b){a=a|0;b=+b;ag(3,a|0,+b)}function aEr(a,b){a=a|0;b=+b;ag(4,a|0,+b)}function aEs(a,b){a=a|0;b=+b;ag(5,a|0,+b)}function aEt(a,b){a=a|0;b=+b;ag(6,a|0,+b)}function aEu(a,b){a=a|0;b=+b;ag(7,a|0,+b)}function aEv(a,b){a=a|0;b=+b;ag(8,a|0,+b)}function aEw(a,b){a=a|0;b=+b;ag(9,a|0,+b)}function aEx(a,b){a=a|0;b=+b;ag(10,a|0,+b)}function aEy(a,b){a=a|0;b=+b;ag(11,a|0,+b)}function aEz(a,b){a=a|0;b=+b;ag(12,a|0,+b)}function aEA(a,b){a=a|0;b=+b;ag(13,a|0,+b)}function aEB(a,b){a=a|0;b=+b;ag(14,a|0,+b)}function aEC(a,b){a=a|0;b=+b;ag(15,a|0,+b)}function aED(a,b){a=a|0;b=+b;ag(16,a|0,+b)}function aEE(a,b){a=a|0;b=+b;ag(17,a|0,+b)}function aEF(a,b){a=a|0;b=+b;ag(18,a|0,+b)}function aEG(a,b){a=a|0;b=+b;ag(19,a|0,+b)}function aEH(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;cr[a&63](b|0,c|0,+d,e|0,f|0)}function aEI(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(0,a|0,b|0,+c,d|0,e|0)}function aEJ(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(1,a|0,b|0,+c,d|0,e|0)}function aEK(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(2,a|0,b|0,+c,d|0,e|0)}function aEL(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(3,a|0,b|0,+c,d|0,e|0)}function aEM(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(4,a|0,b|0,+c,d|0,e|0)}function aEN(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(5,a|0,b|0,+c,d|0,e|0)}function aEO(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(6,a|0,b|0,+c,d|0,e|0)}function aEP(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(7,a|0,b|0,+c,d|0,e|0)}function aEQ(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(8,a|0,b|0,+c,d|0,e|0)}function aER(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(9,a|0,b|0,+c,d|0,e|0)}function aES(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(10,a|0,b|0,+c,d|0,e|0)}function aET(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(11,a|0,b|0,+c,d|0,e|0)}function aEU(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(12,a|0,b|0,+c,d|0,e|0)}function aEV(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(13,a|0,b|0,+c,d|0,e|0)}function aEW(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(14,a|0,b|0,+c,d|0,e|0)}function aEX(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(15,a|0,b|0,+c,d|0,e|0)}function aEY(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(16,a|0,b|0,+c,d|0,e|0)}function aEZ(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(17,a|0,b|0,+c,d|0,e|0)}function aE_(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(18,a|0,b|0,+c,d|0,e|0)}function aE$(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ag(19,a|0,b|0,+c,d|0,e|0)}function aE0(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=+j;k=k|0;l=+l;cs[a&63](b|0,c|0,d|0,e|0,+f,+g,+h,+i,+j,k|0,+l)}function aE1(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(0,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE2(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(1,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(2,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE4(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(3,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE5(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(4,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE6(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(5,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE7(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(6,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE8(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(7,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aE9(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(8,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(9,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFb(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(10,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFc(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(11,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFd(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(12,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFe(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(13,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFf(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(14,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFg(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(15,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFh(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(16,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFi(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(17,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFj(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(18,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFk(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ag(19,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0,+k)}function aFl(a,b){a=a|0;b=b|0;ct[a&2047](b|0)}function aFm(a){a=a|0;ag(0,a|0)}function aFn(a){a=a|0;ag(1,a|0)}function aFo(a){a=a|0;ag(2,a|0)}function aFp(a){a=a|0;ag(3,a|0)}function aFq(a){a=a|0;ag(4,a|0)}function aFr(a){a=a|0;ag(5,a|0)}function aFs(a){a=a|0;ag(6,a|0)}function aFt(a){a=a|0;ag(7,a|0)}function aFu(a){a=a|0;ag(8,a|0)}function aFv(a){a=a|0;ag(9,a|0)}function aFw(a){a=a|0;ag(10,a|0)}function aFx(a){a=a|0;ag(11,a|0)}function aFy(a){a=a|0;ag(12,a|0)}function aFz(a){a=a|0;ag(13,a|0)}function aFA(a){a=a|0;ag(14,a|0)}function aFB(a){a=a|0;ag(15,a|0)}function aFC(a){a=a|0;ag(16,a|0)}function aFD(a){a=a|0;ag(17,a|0)}function aFE(a){a=a|0;ag(18,a|0)}function aFF(a){a=a|0;ag(19,a|0)}function aFG(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=h|0;i=i|0;return cu[a&63](b|0,c|0,d|0,e|0,+f,+g,h|0,i|0)|0}function aFH(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(0,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFI(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(1,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFJ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(2,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFK(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(3,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFL(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(4,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFM(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(5,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFN(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(6,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFO(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(7,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(8,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFQ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(9,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFR(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(10,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFS(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(11,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFT(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(12,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFU(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(13,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFV(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(14,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFW(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(15,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFX(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(16,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFY(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(17,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aFZ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(18,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aF_(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;return ag(19,a|0,b|0,c|0,d|0,+e,+f,g|0,h|0)|0}function aF$(a,b,c){a=a|0;b=b|0;c=c|0;cv[a&2047](b|0,c|0)}function aF0(a,b){a=a|0;b=b|0;ag(0,a|0,b|0)}function aF1(a,b){a=a|0;b=b|0;ag(1,a|0,b|0)}function aF2(a,b){a=a|0;b=b|0;ag(2,a|0,b|0)}function aF3(a,b){a=a|0;b=b|0;ag(3,a|0,b|0)}function aF4(a,b){a=a|0;b=b|0;ag(4,a|0,b|0)}function aF5(a,b){a=a|0;b=b|0;ag(5,a|0,b|0)}function aF6(a,b){a=a|0;b=b|0;ag(6,a|0,b|0)}function aF7(a,b){a=a|0;b=b|0;ag(7,a|0,b|0)}function aF8(a,b){a=a|0;b=b|0;ag(8,a|0,b|0)}function aF9(a,b){a=a|0;b=b|0;ag(9,a|0,b|0)}function aGa(a,b){a=a|0;b=b|0;ag(10,a|0,b|0)}function aGb(a,b){a=a|0;b=b|0;ag(11,a|0,b|0)}function aGc(a,b){a=a|0;b=b|0;ag(12,a|0,b|0)}function aGd(a,b){a=a|0;b=b|0;ag(13,a|0,b|0)}function aGe(a,b){a=a|0;b=b|0;ag(14,a|0,b|0)}function aGf(a,b){a=a|0;b=b|0;ag(15,a|0,b|0)}function aGg(a,b){a=a|0;b=b|0;ag(16,a|0,b|0)}function aGh(a,b){a=a|0;b=b|0;ag(17,a|0,b|0)}function aGi(a,b){a=a|0;b=b|0;ag(18,a|0,b|0)}function aGj(a,b){a=a|0;b=b|0;ag(19,a|0,b|0)}function aGk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;cw[a&63](b|0,c|0,d|0,+e,f|0,g|0)}function aGl(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(0,a|0,b|0,c|0,+d,e|0,f|0)}function aGm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(1,a|0,b|0,c|0,+d,e|0,f|0)}function aGn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(2,a|0,b|0,c|0,+d,e|0,f|0)}function aGo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(3,a|0,b|0,c|0,+d,e|0,f|0)}function aGp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(4,a|0,b|0,c|0,+d,e|0,f|0)}function aGq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(5,a|0,b|0,c|0,+d,e|0,f|0)}function aGr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(6,a|0,b|0,c|0,+d,e|0,f|0)}function aGs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(7,a|0,b|0,c|0,+d,e|0,f|0)}function aGt(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(8,a|0,b|0,c|0,+d,e|0,f|0)}function aGu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(9,a|0,b|0,c|0,+d,e|0,f|0)}function aGv(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(10,a|0,b|0,c|0,+d,e|0,f|0)}function aGw(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(11,a|0,b|0,c|0,+d,e|0,f|0)}function aGx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(12,a|0,b|0,c|0,+d,e|0,f|0)}function aGy(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(13,a|0,b|0,c|0,+d,e|0,f|0)}function aGz(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(14,a|0,b|0,c|0,+d,e|0,f|0)}function aGA(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(15,a|0,b|0,c|0,+d,e|0,f|0)}function aGB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(16,a|0,b|0,c|0,+d,e|0,f|0)}function aGC(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(17,a|0,b|0,c|0,+d,e|0,f|0)}function aGD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(18,a|0,b|0,c|0,+d,e|0,f|0)}function aGE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ag(19,a|0,b|0,c|0,+d,e|0,f|0)}function aGF(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;return cx[a&63](+b,+c,+d,+e,+f,+g,+h,+i,+j)|0}function aGG(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(0,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGH(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(1,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGI(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(2,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGJ(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(3,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGK(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(4,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGL(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(5,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGM(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(6,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGN(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(7,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGO(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(8,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGP(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(9,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGQ(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(10,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGR(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(11,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGS(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(12,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGT(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(13,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGU(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(14,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGV(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(15,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGW(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(16,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGX(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(17,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGY(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(18,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aGZ(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;return ag(19,+a,+b,+c,+d,+e,+f,+g,+h,+i)|0}function aG_(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;cy[a&127](b|0,c|0,d|0,e|0,+f)}function aG$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(0,a|0,b|0,c|0,d|0,+e)}function aG0(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(1,a|0,b|0,c|0,d|0,+e)}function aG1(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(2,a|0,b|0,c|0,d|0,+e)}function aG2(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(3,a|0,b|0,c|0,d|0,+e)}function aG3(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(4,a|0,b|0,c|0,d|0,+e)}function aG4(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(5,a|0,b|0,c|0,d|0,+e)}function aG5(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(6,a|0,b|0,c|0,d|0,+e)}function aG6(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(7,a|0,b|0,c|0,d|0,+e)}function aG7(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(8,a|0,b|0,c|0,d|0,+e)}function aG8(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(9,a|0,b|0,c|0,d|0,+e)}function aG9(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(10,a|0,b|0,c|0,d|0,+e)}function aHa(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(11,a|0,b|0,c|0,d|0,+e)}function aHb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(12,a|0,b|0,c|0,d|0,+e)}function aHc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(13,a|0,b|0,c|0,d|0,+e)}function aHd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(14,a|0,b|0,c|0,d|0,+e)}function aHe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(15,a|0,b|0,c|0,d|0,+e)}function aHf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(16,a|0,b|0,c|0,d|0,+e)}function aHg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(17,a|0,b|0,c|0,d|0,+e)}function aHh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(18,a|0,b|0,c|0,d|0,+e)}function aHi(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ag(19,a|0,b|0,c|0,d|0,+e)}function aHj(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=j|0;k=k|0;cz[a&63](b|0,c|0,d|0,e|0,+f,+g,+h,+i,j|0,k|0)}function aHk(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(0,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHl(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(1,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHm(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(2,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(3,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHo(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(4,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHp(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(5,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHq(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(6,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHr(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(7,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHs(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(8,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHt(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(9,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHu(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(10,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHv(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(11,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHw(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(12,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHx(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(13,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHy(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(14,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHz(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(15,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHA(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(16,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHB(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(17,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHC(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(18,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHD(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ag(19,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0)}function aHE(a,b){a=a|0;b=b|0;return cA[a&4095](b|0)|0}function aHF(a){a=a|0;return ag(0,a|0)|0}function aHG(a){a=a|0;return ag(1,a|0)|0}function aHH(a){a=a|0;return ag(2,a|0)|0}function aHI(a){a=a|0;return ag(3,a|0)|0}function aHJ(a){a=a|0;return ag(4,a|0)|0}function aHK(a){a=a|0;return ag(5,a|0)|0}function aHL(a){a=a|0;return ag(6,a|0)|0}function aHM(a){a=a|0;return ag(7,a|0)|0}function aHN(a){a=a|0;return ag(8,a|0)|0}function aHO(a){a=a|0;return ag(9,a|0)|0}function aHP(a){a=a|0;return ag(10,a|0)|0}function aHQ(a){a=a|0;return ag(11,a|0)|0}function aHR(a){a=a|0;return ag(12,a|0)|0}function aHS(a){a=a|0;return ag(13,a|0)|0}function aHT(a){a=a|0;return ag(14,a|0)|0}function aHU(a){a=a|0;return ag(15,a|0)|0}function aHV(a){a=a|0;return ag(16,a|0)|0}function aHW(a){a=a|0;return ag(17,a|0)|0}function aHX(a){a=a|0;return ag(18,a|0)|0}function aHY(a){a=a|0;return ag(19,a|0)|0}function aHZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=i|0;j=+j;return cB[a&63](b|0,c|0,d|0,e|0,f|0,g|0,+h,i|0,+j)|0}function aH_(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH$(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH0(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH1(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH2(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH3(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH4(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH5(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH6(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH7(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH8(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aH9(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIa(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIb(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aId(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIe(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIf(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIg(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIh(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,+g,h|0,+i)|0}function aIi(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=f|0;cC[a&63](b|0,+c,+d,+e,f|0)}function aIj(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(0,a|0,+b,+c,+d,e|0)}function aIk(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(1,a|0,+b,+c,+d,e|0)}function aIl(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(2,a|0,+b,+c,+d,e|0)}function aIm(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(3,a|0,+b,+c,+d,e|0)}function aIn(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(4,a|0,+b,+c,+d,e|0)}function aIo(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(5,a|0,+b,+c,+d,e|0)}function aIp(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(6,a|0,+b,+c,+d,e|0)}function aIq(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(7,a|0,+b,+c,+d,e|0)}function aIr(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(8,a|0,+b,+c,+d,e|0)}function aIs(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(9,a|0,+b,+c,+d,e|0)}function aIt(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(10,a|0,+b,+c,+d,e|0)}function aIu(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(11,a|0,+b,+c,+d,e|0)}function aIv(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(12,a|0,+b,+c,+d,e|0)}function aIw(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(13,a|0,+b,+c,+d,e|0)}function aIx(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(14,a|0,+b,+c,+d,e|0)}function aIy(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(15,a|0,+b,+c,+d,e|0)}function aIz(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(16,a|0,+b,+c,+d,e|0)}function aIA(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(17,a|0,+b,+c,+d,e|0)}function aIB(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(18,a|0,+b,+c,+d,e|0)}function aIC(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ag(19,a|0,+b,+c,+d,e|0)}function aID(a,b,c,d,e){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;return cD[a&63](+b,c|0,d|0,e|0)|0}function aIE(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(0,+a,b|0,c|0,d|0)|0}function aIF(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(1,+a,b|0,c|0,d|0)|0}function aIG(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(2,+a,b|0,c|0,d|0)|0}function aIH(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(3,+a,b|0,c|0,d|0)|0}function aII(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(4,+a,b|0,c|0,d|0)|0}function aIJ(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(5,+a,b|0,c|0,d|0)|0}function aIK(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(6,+a,b|0,c|0,d|0)|0}function aIL(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(7,+a,b|0,c|0,d|0)|0}function aIM(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(8,+a,b|0,c|0,d|0)|0}function aIN(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(9,+a,b|0,c|0,d|0)|0}function aIO(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(10,+a,b|0,c|0,d|0)|0}function aIP(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(11,+a,b|0,c|0,d|0)|0}function aIQ(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(12,+a,b|0,c|0,d|0)|0}function aIR(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(13,+a,b|0,c|0,d|0)|0}function aIS(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(14,+a,b|0,c|0,d|0)|0}function aIT(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(15,+a,b|0,c|0,d|0)|0}function aIU(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(16,+a,b|0,c|0,d|0)|0}function aIV(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(17,+a,b|0,c|0,d|0)|0}function aIW(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(18,+a,b|0,c|0,d|0)|0}function aIX(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;return ag(19,+a,b|0,c|0,d|0)|0}function aIY(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;cE[a&127](b|0,c|0,+d,e|0)}function aIZ(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(0,a|0,b|0,+c,d|0)}function aI_(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(1,a|0,b|0,+c,d|0)}function aI$(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(2,a|0,b|0,+c,d|0)}function aI0(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(3,a|0,b|0,+c,d|0)}function aI1(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(4,a|0,b|0,+c,d|0)}function aI2(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(5,a|0,b|0,+c,d|0)}function aI3(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(6,a|0,b|0,+c,d|0)}function aI4(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(7,a|0,b|0,+c,d|0)}function aI5(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(8,a|0,b|0,+c,d|0)}function aI6(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(9,a|0,b|0,+c,d|0)}function aI7(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(10,a|0,b|0,+c,d|0)}function aI8(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(11,a|0,b|0,+c,d|0)}function aI9(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(12,a|0,b|0,+c,d|0)}function aJa(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(13,a|0,b|0,+c,d|0)}function aJb(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(14,a|0,b|0,+c,d|0)}function aJc(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(15,a|0,b|0,+c,d|0)}function aJd(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(16,a|0,b|0,+c,d|0)}function aJe(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(17,a|0,b|0,+c,d|0)}function aJf(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(18,a|0,b|0,+c,d|0)}function aJg(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ag(19,a|0,b|0,+c,d|0)}function aJh(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;cF[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aJi(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJj(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJk(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJl(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJm(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJn(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJo(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJp(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJq(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJr(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJs(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJt(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJu(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJv(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJw(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJx(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJy(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJz(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJA(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJB(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aJC(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;i=+i;cG[a&63](b|0,c|0,d|0,e|0,f|0,g|0,+h,+i)}function aJD(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJE(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJF(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJG(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJH(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJI(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJJ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJK(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJL(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJM(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJN(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJO(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJQ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJR(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJS(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJT(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJU(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJV(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJW(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,+g,+h)}function aJX(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;h=h|0;return cH[a&63](b|0,c|0,d|0,+e,f|0,g|0,h|0)|0}function aJY(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(0,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJZ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(1,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ_(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(2,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ$(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(3,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ0(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(4,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ1(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(5,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ2(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(6,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ3(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(7,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ4(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(8,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ5(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(9,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ6(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(10,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ7(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(11,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ8(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(12,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aJ9(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(13,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(14,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKb(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(15,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(16,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(17,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKe(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(18,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;return ag(19,a|0,b|0,c|0,+d,e|0,f|0,g|0)|0}function aKg(a,b,c,d,e,f,g,h,i,j,k,l,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;n=n|0;return cI[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0,n|0)|0}function aKh(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKi(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKj(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKk(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKl(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKm(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKn(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKo(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKp(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKq(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKr(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKs(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKt(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKu(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKv(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKw(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKx(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKy(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKz(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKA(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aKB(a,b,c,d,e,f){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;cJ[a&63](b|0,+c,+d,+e,+f)}function aKC(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(0,a|0,+b,+c,+d,+e)}function aKD(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(1,a|0,+b,+c,+d,+e)}function aKE(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(2,a|0,+b,+c,+d,+e)}function aKF(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(3,a|0,+b,+c,+d,+e)}function aKG(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(4,a|0,+b,+c,+d,+e)}function aKH(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(5,a|0,+b,+c,+d,+e)}function aKI(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(6,a|0,+b,+c,+d,+e)}function aKJ(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(7,a|0,+b,+c,+d,+e)}function aKK(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(8,a|0,+b,+c,+d,+e)}function aKL(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(9,a|0,+b,+c,+d,+e)}function aKM(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(10,a|0,+b,+c,+d,+e)}function aKN(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(11,a|0,+b,+c,+d,+e)}function aKO(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(12,a|0,+b,+c,+d,+e)}function aKP(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(13,a|0,+b,+c,+d,+e)}function aKQ(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(14,a|0,+b,+c,+d,+e)}function aKR(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(15,a|0,+b,+c,+d,+e)}function aKS(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(16,a|0,+b,+c,+d,+e)}function aKT(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(17,a|0,+b,+c,+d,+e)}function aKU(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(18,a|0,+b,+c,+d,+e)}function aKV(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ag(19,a|0,+b,+c,+d,+e)}function aKW(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;g=g|0;cK[a&63](b|0,+c,+d,e|0,f|0,g|0)}function aKX(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(0,a|0,+b,+c,d|0,e|0,f|0)}function aKY(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(1,a|0,+b,+c,d|0,e|0,f|0)}function aKZ(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(2,a|0,+b,+c,d|0,e|0,f|0)}function aK_(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(3,a|0,+b,+c,d|0,e|0,f|0)}function aK$(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(4,a|0,+b,+c,d|0,e|0,f|0)}function aK0(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(5,a|0,+b,+c,d|0,e|0,f|0)}function aK1(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(6,a|0,+b,+c,d|0,e|0,f|0)}function aK2(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(7,a|0,+b,+c,d|0,e|0,f|0)}function aK3(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(8,a|0,+b,+c,d|0,e|0,f|0)}function aK4(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(9,a|0,+b,+c,d|0,e|0,f|0)}function aK5(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(10,a|0,+b,+c,d|0,e|0,f|0)}function aK6(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(11,a|0,+b,+c,d|0,e|0,f|0)}function aK7(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(12,a|0,+b,+c,d|0,e|0,f|0)}function aK8(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(13,a|0,+b,+c,d|0,e|0,f|0)}function aK9(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(14,a|0,+b,+c,d|0,e|0,f|0)}function aLa(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(15,a|0,+b,+c,d|0,e|0,f|0)}function aLb(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(16,a|0,+b,+c,d|0,e|0,f|0)}function aLc(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(17,a|0,+b,+c,d|0,e|0,f|0)}function aLd(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(18,a|0,+b,+c,d|0,e|0,f|0)}function aLe(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ag(19,a|0,+b,+c,d|0,e|0,f|0)}function aLf(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return cL[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aLg(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLh(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLi(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLj(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLk(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLl(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLm(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLn(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLo(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLp(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLq(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLr(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLs(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLt(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLu(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLv(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLw(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLx(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLy(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLz(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)|0}function aLA(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=d|0;e=+e;f=f|0;g=g|0;return+cM[a&63](b|0,+c,d|0,+e,f|0,g|0)}function aLB(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(0,a|0,+b,c|0,+d,e|0,f|0)}function aLC(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(1,a|0,+b,c|0,+d,e|0,f|0)}function aLD(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(2,a|0,+b,c|0,+d,e|0,f|0)}function aLE(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(3,a|0,+b,c|0,+d,e|0,f|0)}function aLF(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(4,a|0,+b,c|0,+d,e|0,f|0)}function aLG(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(5,a|0,+b,c|0,+d,e|0,f|0)}function aLH(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(6,a|0,+b,c|0,+d,e|0,f|0)}function aLI(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(7,a|0,+b,c|0,+d,e|0,f|0)}function aLJ(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(8,a|0,+b,c|0,+d,e|0,f|0)}function aLK(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(9,a|0,+b,c|0,+d,e|0,f|0)}function aLL(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(10,a|0,+b,c|0,+d,e|0,f|0)}function aLM(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(11,a|0,+b,c|0,+d,e|0,f|0)}function aLN(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(12,a|0,+b,c|0,+d,e|0,f|0)}function aLO(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(13,a|0,+b,c|0,+d,e|0,f|0)}function aLP(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(14,a|0,+b,c|0,+d,e|0,f|0)}function aLQ(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(15,a|0,+b,c|0,+d,e|0,f|0)}function aLR(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(16,a|0,+b,c|0,+d,e|0,f|0)}function aLS(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(17,a|0,+b,c|0,+d,e|0,f|0)}function aLT(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(18,a|0,+b,c|0,+d,e|0,f|0)}function aLU(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;return+ag(19,a|0,+b,c|0,+d,e|0,f|0)}function aLV(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return+cN[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)}function aLW(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aLX(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aLY(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aLZ(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL_(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL$(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL0(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL1(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL2(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL4(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL5(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL6(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL7(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL8(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aL9(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMa(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMb(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMc(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMd(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aMe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+cO[a&63](b|0,c|0,+d,e|0,f|0)}function aMf(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(0,a|0,b|0,+c,d|0,e|0)}function aMg(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(1,a|0,b|0,+c,d|0,e|0)}function aMh(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(2,a|0,b|0,+c,d|0,e|0)}function aMi(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(3,a|0,b|0,+c,d|0,e|0)}function aMj(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(4,a|0,b|0,+c,d|0,e|0)}function aMk(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(5,a|0,b|0,+c,d|0,e|0)}function aMl(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(6,a|0,b|0,+c,d|0,e|0)}function aMm(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(7,a|0,b|0,+c,d|0,e|0)}function aMn(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(8,a|0,b|0,+c,d|0,e|0)}function aMo(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(9,a|0,b|0,+c,d|0,e|0)}function aMp(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(10,a|0,b|0,+c,d|0,e|0)}function aMq(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(11,a|0,b|0,+c,d|0,e|0)}function aMr(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(12,a|0,b|0,+c,d|0,e|0)}function aMs(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(13,a|0,b|0,+c,d|0,e|0)}function aMt(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(14,a|0,b|0,+c,d|0,e|0)}function aMu(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(15,a|0,b|0,+c,d|0,e|0)}function aMv(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(16,a|0,b|0,+c,d|0,e|0)}function aMw(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(17,a|0,b|0,+c,d|0,e|0)}function aMx(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(18,a|0,b|0,+c,d|0,e|0)}function aMy(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;return+ag(19,a|0,b|0,+c,d|0,e|0)}function aMz(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;return cP[a&63](+b,+c,+d)|0}function aMA(a,b,c){a=+a;b=+b;c=+c;return ag(0,+a,+b,+c)|0}function aMB(a,b,c){a=+a;b=+b;c=+c;return ag(1,+a,+b,+c)|0}function aMC(a,b,c){a=+a;b=+b;c=+c;return ag(2,+a,+b,+c)|0}function aMD(a,b,c){a=+a;b=+b;c=+c;return ag(3,+a,+b,+c)|0}function aME(a,b,c){a=+a;b=+b;c=+c;return ag(4,+a,+b,+c)|0}function aMF(a,b,c){a=+a;b=+b;c=+c;return ag(5,+a,+b,+c)|0}function aMG(a,b,c){a=+a;b=+b;c=+c;return ag(6,+a,+b,+c)|0}function aMH(a,b,c){a=+a;b=+b;c=+c;return ag(7,+a,+b,+c)|0}function aMI(a,b,c){a=+a;b=+b;c=+c;return ag(8,+a,+b,+c)|0}function aMJ(a,b,c){a=+a;b=+b;c=+c;return ag(9,+a,+b,+c)|0}function aMK(a,b,c){a=+a;b=+b;c=+c;return ag(10,+a,+b,+c)|0}function aML(a,b,c){a=+a;b=+b;c=+c;return ag(11,+a,+b,+c)|0}function aMM(a,b,c){a=+a;b=+b;c=+c;return ag(12,+a,+b,+c)|0}function aMN(a,b,c){a=+a;b=+b;c=+c;return ag(13,+a,+b,+c)|0}function aMO(a,b,c){a=+a;b=+b;c=+c;return ag(14,+a,+b,+c)|0}function aMP(a,b,c){a=+a;b=+b;c=+c;return ag(15,+a,+b,+c)|0}function aMQ(a,b,c){a=+a;b=+b;c=+c;return ag(16,+a,+b,+c)|0}function aMR(a,b,c){a=+a;b=+b;c=+c;return ag(17,+a,+b,+c)|0}function aMS(a,b,c){a=+a;b=+b;c=+c;return ag(18,+a,+b,+c)|0}function aMT(a,b,c){a=+a;b=+b;c=+c;return ag(19,+a,+b,+c)|0}function aMU(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;cQ[a&63](b|0,c|0,+d,+e)}function aMV(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(0,a|0,b|0,+c,+d)}function aMW(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(1,a|0,b|0,+c,+d)}function aMX(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(2,a|0,b|0,+c,+d)}function aMY(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(3,a|0,b|0,+c,+d)}function aMZ(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(4,a|0,b|0,+c,+d)}function aM_(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(5,a|0,b|0,+c,+d)}function aM$(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(6,a|0,b|0,+c,+d)}function aM0(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(7,a|0,b|0,+c,+d)}function aM1(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(8,a|0,b|0,+c,+d)}function aM2(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(9,a|0,b|0,+c,+d)}function aM3(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(10,a|0,b|0,+c,+d)}function aM4(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(11,a|0,b|0,+c,+d)}function aM5(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(12,a|0,b|0,+c,+d)}function aM6(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(13,a|0,b|0,+c,+d)}function aM7(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(14,a|0,b|0,+c,+d)}function aM8(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(15,a|0,b|0,+c,+d)}function aM9(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(16,a|0,b|0,+c,+d)}function aNa(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(17,a|0,b|0,+c,+d)}function aNb(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(18,a|0,b|0,+c,+d)}function aNc(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ag(19,a|0,b|0,+c,+d)}function aNd(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;return cR[a&63](b|0,+c,d|0)|0}function aNe(a,b,c){a=a|0;b=+b;c=c|0;return ag(0,a|0,+b,c|0)|0}function aNf(a,b,c){a=a|0;b=+b;c=c|0;return ag(1,a|0,+b,c|0)|0}function aNg(a,b,c){a=a|0;b=+b;c=c|0;return ag(2,a|0,+b,c|0)|0}function aNh(a,b,c){a=a|0;b=+b;c=c|0;return ag(3,a|0,+b,c|0)|0}function aNi(a,b,c){a=a|0;b=+b;c=c|0;return ag(4,a|0,+b,c|0)|0}function aNj(a,b,c){a=a|0;b=+b;c=c|0;return ag(5,a|0,+b,c|0)|0}function aNk(a,b,c){a=a|0;b=+b;c=c|0;return ag(6,a|0,+b,c|0)|0}function aNl(a,b,c){a=a|0;b=+b;c=c|0;return ag(7,a|0,+b,c|0)|0}function aNm(a,b,c){a=a|0;b=+b;c=c|0;return ag(8,a|0,+b,c|0)|0}function aNn(a,b,c){a=a|0;b=+b;c=c|0;return ag(9,a|0,+b,c|0)|0}function aNo(a,b,c){a=a|0;b=+b;c=c|0;return ag(10,a|0,+b,c|0)|0}function aNp(a,b,c){a=a|0;b=+b;c=c|0;return ag(11,a|0,+b,c|0)|0}function aNq(a,b,c){a=a|0;b=+b;c=c|0;return ag(12,a|0,+b,c|0)|0}function aNr(a,b,c){a=a|0;b=+b;c=c|0;return ag(13,a|0,+b,c|0)|0}function aNs(a,b,c){a=a|0;b=+b;c=c|0;return ag(14,a|0,+b,c|0)|0}function aNt(a,b,c){a=a|0;b=+b;c=c|0;return ag(15,a|0,+b,c|0)|0}function aNu(a,b,c){a=a|0;b=+b;c=c|0;return ag(16,a|0,+b,c|0)|0}function aNv(a,b,c){a=a|0;b=+b;c=c|0;return ag(17,a|0,+b,c|0)|0}function aNw(a,b,c){a=a|0;b=+b;c=c|0;return ag(18,a|0,+b,c|0)|0}function aNx(a,b,c){a=a|0;b=+b;c=c|0;return ag(19,a|0,+b,c|0)|0}function aNy(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return cS[a&511](b|0,c|0,d|0)|0}function aNz(a,b,c){a=a|0;b=b|0;c=c|0;return ag(0,a|0,b|0,c|0)|0}function aNA(a,b,c){a=a|0;b=b|0;c=c|0;return ag(1,a|0,b|0,c|0)|0}function aNB(a,b,c){a=a|0;b=b|0;c=c|0;return ag(2,a|0,b|0,c|0)|0}function aNC(a,b,c){a=a|0;b=b|0;c=c|0;return ag(3,a|0,b|0,c|0)|0}function aND(a,b,c){a=a|0;b=b|0;c=c|0;return ag(4,a|0,b|0,c|0)|0}function aNE(a,b,c){a=a|0;b=b|0;c=c|0;return ag(5,a|0,b|0,c|0)|0}function aNF(a,b,c){a=a|0;b=b|0;c=c|0;return ag(6,a|0,b|0,c|0)|0}function aNG(a,b,c){a=a|0;b=b|0;c=c|0;return ag(7,a|0,b|0,c|0)|0}function aNH(a,b,c){a=a|0;b=b|0;c=c|0;return ag(8,a|0,b|0,c|0)|0}function aNI(a,b,c){a=a|0;b=b|0;c=c|0;return ag(9,a|0,b|0,c|0)|0}function aNJ(a,b,c){a=a|0;b=b|0;c=c|0;return ag(10,a|0,b|0,c|0)|0}function aNK(a,b,c){a=a|0;b=b|0;c=c|0;return ag(11,a|0,b|0,c|0)|0}function aNL(a,b,c){a=a|0;b=b|0;c=c|0;return ag(12,a|0,b|0,c|0)|0}function aNM(a,b,c){a=a|0;b=b|0;c=c|0;return ag(13,a|0,b|0,c|0)|0}function aNN(a,b,c){a=a|0;b=b|0;c=c|0;return ag(14,a|0,b|0,c|0)|0}function aNO(a,b,c){a=a|0;b=b|0;c=c|0;return ag(15,a|0,b|0,c|0)|0}function aNP(a,b,c){a=a|0;b=b|0;c=c|0;return ag(16,a|0,b|0,c|0)|0}function aNQ(a,b,c){a=a|0;b=b|0;c=c|0;return ag(17,a|0,b|0,c|0)|0}function aNR(a,b,c){a=a|0;b=b|0;c=c|0;return ag(18,a|0,b|0,c|0)|0}function aNS(a,b,c){a=a|0;b=b|0;c=c|0;return ag(19,a|0,b|0,c|0)|0}function aNT(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=+j;k=k|0;cT[a&63](b|0,c|0,d|0,e|0,+f,+g,+h,+i,+j,k|0)}function aNU(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(0,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNV(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(1,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNW(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(2,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(3,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(4,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aNZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(5,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(6,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(7,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN0(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(8,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN1(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(9,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN2(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(10,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN3(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(11,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(12,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN5(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(13,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN6(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(14,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN7(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(15,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN8(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(16,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aN9(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(17,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aOa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(18,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aOb(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ag(19,a|0,b|0,c|0,d|0,+e,+f,+g,+h,+i,j|0)}function aOc(a,b,c){a=a|0;b=b|0;c=+c;return+cU[a&127](b|0,+c)}function aOd(a,b){a=a|0;b=+b;return+ag(0,a|0,+b)}function aOe(a,b){a=a|0;b=+b;return+ag(1,a|0,+b)}function aOf(a,b){a=a|0;b=+b;return+ag(2,a|0,+b)}function aOg(a,b){a=a|0;b=+b;return+ag(3,a|0,+b)}function aOh(a,b){a=a|0;b=+b;return+ag(4,a|0,+b)}function aOi(a,b){a=a|0;b=+b;return+ag(5,a|0,+b)}function aOj(a,b){a=a|0;b=+b;return+ag(6,a|0,+b)}function aOk(a,b){a=a|0;b=+b;return+ag(7,a|0,+b)}function aOl(a,b){a=a|0;b=+b;return+ag(8,a|0,+b)}function aOm(a,b){a=a|0;b=+b;return+ag(9,a|0,+b)}function aOn(a,b){a=a|0;b=+b;return+ag(10,a|0,+b)}function aOo(a,b){a=a|0;b=+b;return+ag(11,a|0,+b)}function aOp(a,b){a=a|0;b=+b;return+ag(12,a|0,+b)}function aOq(a,b){a=a|0;b=+b;return+ag(13,a|0,+b)}function aOr(a,b){a=a|0;b=+b;return+ag(14,a|0,+b)}function aOs(a,b){a=a|0;b=+b;return+ag(15,a|0,+b)}function aOt(a,b){a=a|0;b=+b;return+ag(16,a|0,+b)}function aOu(a,b){a=a|0;b=+b;return+ag(17,a|0,+b)}function aOv(a,b){a=a|0;b=+b;return+ag(18,a|0,+b)}function aOw(a,b){a=a|0;b=+b;return+ag(19,a|0,+b)}function aOx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;return cV[a&63](b|0,c|0,d|0,+e,+f)|0}function aOy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(0,a|0,b|0,c|0,+d,+e)|0}function aOz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(1,a|0,b|0,c|0,+d,+e)|0}function aOA(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(2,a|0,b|0,c|0,+d,+e)|0}function aOB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(3,a|0,b|0,c|0,+d,+e)|0}function aOC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(4,a|0,b|0,c|0,+d,+e)|0}function aOD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(5,a|0,b|0,c|0,+d,+e)|0}function aOE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(6,a|0,b|0,c|0,+d,+e)|0}function aOF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(7,a|0,b|0,c|0,+d,+e)|0}function aOG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(8,a|0,b|0,c|0,+d,+e)|0}function aOH(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(9,a|0,b|0,c|0,+d,+e)|0}function aOI(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(10,a|0,b|0,c|0,+d,+e)|0}function aOJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(11,a|0,b|0,c|0,+d,+e)|0}function aOK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(12,a|0,b|0,c|0,+d,+e)|0}function aOL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(13,a|0,b|0,c|0,+d,+e)|0}function aOM(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(14,a|0,b|0,c|0,+d,+e)|0}function aON(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(15,a|0,b|0,c|0,+d,+e)|0}function aOO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(16,a|0,b|0,c|0,+d,+e)|0}function aOP(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(17,a|0,b|0,c|0,+d,+e)|0}function aOQ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(18,a|0,b|0,c|0,+d,+e)|0}function aOR(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return ag(19,a|0,b|0,c|0,+d,+e)|0}function aOS(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;cW[a&63](b|0,+c,+d)}function aOT(a,b,c){a=a|0;b=+b;c=+c;ag(0,a|0,+b,+c)}function aOU(a,b,c){a=a|0;b=+b;c=+c;ag(1,a|0,+b,+c)}function aOV(a,b,c){a=a|0;b=+b;c=+c;ag(2,a|0,+b,+c)}function aOW(a,b,c){a=a|0;b=+b;c=+c;ag(3,a|0,+b,+c)}function aOX(a,b,c){a=a|0;b=+b;c=+c;ag(4,a|0,+b,+c)}function aOY(a,b,c){a=a|0;b=+b;c=+c;ag(5,a|0,+b,+c)}function aOZ(a,b,c){a=a|0;b=+b;c=+c;ag(6,a|0,+b,+c)}function aO_(a,b,c){a=a|0;b=+b;c=+c;ag(7,a|0,+b,+c)}function aO$(a,b,c){a=a|0;b=+b;c=+c;ag(8,a|0,+b,+c)}function aO0(a,b,c){a=a|0;b=+b;c=+c;ag(9,a|0,+b,+c)}function aO1(a,b,c){a=a|0;b=+b;c=+c;ag(10,a|0,+b,+c)}function aO2(a,b,c){a=a|0;b=+b;c=+c;ag(11,a|0,+b,+c)}function aO3(a,b,c){a=a|0;b=+b;c=+c;ag(12,a|0,+b,+c)}function aO4(a,b,c){a=a|0;b=+b;c=+c;ag(13,a|0,+b,+c)}function aO5(a,b,c){a=a|0;b=+b;c=+c;ag(14,a|0,+b,+c)}function aO6(a,b,c){a=a|0;b=+b;c=+c;ag(15,a|0,+b,+c)}function aO7(a,b,c){a=a|0;b=+b;c=+c;ag(16,a|0,+b,+c)}function aO8(a,b,c){a=a|0;b=+b;c=+c;ag(17,a|0,+b,+c)}function aO9(a,b,c){a=a|0;b=+b;c=+c;ag(18,a|0,+b,+c)}function aPa(a,b,c){a=a|0;b=+b;c=+c;ag(19,a|0,+b,+c)}function aPb(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;cX[a&255](b|0,+c,d|0)}function aPc(a,b,c){a=a|0;b=+b;c=c|0;ag(0,a|0,+b,c|0)}function aPd(a,b,c){a=a|0;b=+b;c=c|0;ag(1,a|0,+b,c|0)}function aPe(a,b,c){a=a|0;b=+b;c=c|0;ag(2,a|0,+b,c|0)}function aPf(a,b,c){a=a|0;b=+b;c=c|0;ag(3,a|0,+b,c|0)}function aPg(a,b,c){a=a|0;b=+b;c=c|0;ag(4,a|0,+b,c|0)}function aPh(a,b,c){a=a|0;b=+b;c=c|0;ag(5,a|0,+b,c|0)}function aPi(a,b,c){a=a|0;b=+b;c=c|0;ag(6,a|0,+b,c|0)}function aPj(a,b,c){a=a|0;b=+b;c=c|0;ag(7,a|0,+b,c|0)}function aPk(a,b,c){a=a|0;b=+b;c=c|0;ag(8,a|0,+b,c|0)}function aPl(a,b,c){a=a|0;b=+b;c=c|0;ag(9,a|0,+b,c|0)}function aPm(a,b,c){a=a|0;b=+b;c=c|0;ag(10,a|0,+b,c|0)}function aPn(a,b,c){a=a|0;b=+b;c=c|0;ag(11,a|0,+b,c|0)}function aPo(a,b,c){a=a|0;b=+b;c=c|0;ag(12,a|0,+b,c|0)}function aPp(a,b,c){a=a|0;b=+b;c=c|0;ag(13,a|0,+b,c|0)}function aPq(a,b,c){a=a|0;b=+b;c=c|0;ag(14,a|0,+b,c|0)}function aPr(a,b,c){a=a|0;b=+b;c=c|0;ag(15,a|0,+b,c|0)}function aPs(a,b,c){a=a|0;b=+b;c=c|0;ag(16,a|0,+b,c|0)}function aPt(a,b,c){a=a|0;b=+b;c=c|0;ag(17,a|0,+b,c|0)}function aPu(a,b,c){a=a|0;b=+b;c=c|0;ag(18,a|0,+b,c|0)}function aPv(a,b,c){a=a|0;b=+b;c=c|0;ag(19,a|0,+b,c|0)}function aPw(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;cY[a&63](b|0,c|0,d|0,e|0,f|0,+g)}function aPx(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(0,a|0,b|0,c|0,d|0,e|0,+f)}function aPy(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(1,a|0,b|0,c|0,d|0,e|0,+f)}function aPz(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(2,a|0,b|0,c|0,d|0,e|0,+f)}function aPA(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(3,a|0,b|0,c|0,d|0,e|0,+f)}function aPB(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(4,a|0,b|0,c|0,d|0,e|0,+f)}function aPC(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(5,a|0,b|0,c|0,d|0,e|0,+f)}function aPD(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(6,a|0,b|0,c|0,d|0,e|0,+f)}function aPE(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(7,a|0,b|0,c|0,d|0,e|0,+f)}function aPF(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(8,a|0,b|0,c|0,d|0,e|0,+f)}function aPG(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(9,a|0,b|0,c|0,d|0,e|0,+f)}function aPH(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(10,a|0,b|0,c|0,d|0,e|0,+f)}function aPI(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(11,a|0,b|0,c|0,d|0,e|0,+f)}function aPJ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(12,a|0,b|0,c|0,d|0,e|0,+f)}function aPK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(13,a|0,b|0,c|0,d|0,e|0,+f)}function aPL(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(14,a|0,b|0,c|0,d|0,e|0,+f)}function aPM(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(15,a|0,b|0,c|0,d|0,e|0,+f)}function aPN(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(16,a|0,b|0,c|0,d|0,e|0,+f)}function aPO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(17,a|0,b|0,c|0,d|0,e|0,+f)}function aPP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(18,a|0,b|0,c|0,d|0,e|0,+f)}function aPQ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ag(19,a|0,b|0,c|0,d|0,e|0,+f)}function aPR(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=+d;e=+e;cZ[a&127](b|0,+c,+d,+e)}function aPS(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(0,a|0,+b,+c,+d)}function aPT(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(1,a|0,+b,+c,+d)}function aPU(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(2,a|0,+b,+c,+d)}function aPV(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(3,a|0,+b,+c,+d)}function aPW(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(4,a|0,+b,+c,+d)}function aPX(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(5,a|0,+b,+c,+d)}function aPY(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(6,a|0,+b,+c,+d)}function aPZ(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(7,a|0,+b,+c,+d)}function aP_(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(8,a|0,+b,+c,+d)}function aP$(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(9,a|0,+b,+c,+d)}function aP0(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(10,a|0,+b,+c,+d)}function aP1(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(11,a|0,+b,+c,+d)}function aP2(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(12,a|0,+b,+c,+d)}function aP3(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(13,a|0,+b,+c,+d)}function aP4(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(14,a|0,+b,+c,+d)}function aP5(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(15,a|0,+b,+c,+d)}function aP6(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(16,a|0,+b,+c,+d)}function aP7(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(17,a|0,+b,+c,+d)}function aP8(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(18,a|0,+b,+c,+d)}function aP9(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ag(19,a|0,+b,+c,+d)}function aQa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;c_[a&127](b|0,c|0,d|0,e|0,f|0,g|0)}function aQb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(0,a|0,b|0,c|0,d|0,e|0,f|0)}function aQc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(1,a|0,b|0,c|0,d|0,e|0,f|0)}function aQd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(2,a|0,b|0,c|0,d|0,e|0,f|0)}function aQe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(3,a|0,b|0,c|0,d|0,e|0,f|0)}function aQf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(4,a|0,b|0,c|0,d|0,e|0,f|0)}function aQg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(5,a|0,b|0,c|0,d|0,e|0,f|0)}function aQh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(6,a|0,b|0,c|0,d|0,e|0,f|0)}function aQi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(7,a|0,b|0,c|0,d|0,e|0,f|0)}function aQj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(8,a|0,b|0,c|0,d|0,e|0,f|0)}function aQk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(9,a|0,b|0,c|0,d|0,e|0,f|0)}function aQl(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(10,a|0,b|0,c|0,d|0,e|0,f|0)}function aQm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(11,a|0,b|0,c|0,d|0,e|0,f|0)}function aQn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(12,a|0,b|0,c|0,d|0,e|0,f|0)}function aQo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(13,a|0,b|0,c|0,d|0,e|0,f|0)}function aQp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(14,a|0,b|0,c|0,d|0,e|0,f|0)}function aQq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(15,a|0,b|0,c|0,d|0,e|0,f|0)}function aQr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(16,a|0,b|0,c|0,d|0,e|0,f|0)}function aQs(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(17,a|0,b|0,c|0,d|0,e|0,f|0)}function aQt(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(18,a|0,b|0,c|0,d|0,e|0,f|0)}function aQu(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ag(19,a|0,b|0,c|0,d|0,e|0,f|0)}function aQv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;return+c$[a&63](b|0,c|0,+d,+e)}function aQw(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(0,a|0,b|0,+c,+d)}function aQx(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(1,a|0,b|0,+c,+d)}function aQy(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(2,a|0,b|0,+c,+d)}function aQz(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(3,a|0,b|0,+c,+d)}function aQA(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(4,a|0,b|0,+c,+d)}function aQB(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(5,a|0,b|0,+c,+d)}function aQC(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(6,a|0,b|0,+c,+d)}function aQD(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(7,a|0,b|0,+c,+d)}function aQE(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(8,a|0,b|0,+c,+d)}function aQF(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(9,a|0,b|0,+c,+d)}function aQG(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(10,a|0,b|0,+c,+d)}function aQH(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(11,a|0,b|0,+c,+d)}function aQI(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(12,a|0,b|0,+c,+d)}function aQJ(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(13,a|0,b|0,+c,+d)}function aQK(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(14,a|0,b|0,+c,+d)}function aQL(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(15,a|0,b|0,+c,+d)}function aQM(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(16,a|0,b|0,+c,+d)}function aQN(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(17,a|0,b|0,+c,+d)}function aQO(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(18,a|0,b|0,+c,+d)}function aQP(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return+ag(19,a|0,b|0,+c,+d)}function aQQ(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return c0[a&127](b|0,c|0,+d)|0}function aQR(a,b,c){a=a|0;b=b|0;c=+c;return ag(0,a|0,b|0,+c)|0}function aQS(a,b,c){a=a|0;b=b|0;c=+c;return ag(1,a|0,b|0,+c)|0}function aQT(a,b,c){a=a|0;b=b|0;c=+c;return ag(2,a|0,b|0,+c)|0}function aQU(a,b,c){a=a|0;b=b|0;c=+c;return ag(3,a|0,b|0,+c)|0}function aQV(a,b,c){a=a|0;b=b|0;c=+c;return ag(4,a|0,b|0,+c)|0}function aQW(a,b,c){a=a|0;b=b|0;c=+c;return ag(5,a|0,b|0,+c)|0}function aQX(a,b,c){a=a|0;b=b|0;c=+c;return ag(6,a|0,b|0,+c)|0}function aQY(a,b,c){a=a|0;b=b|0;c=+c;return ag(7,a|0,b|0,+c)|0}function aQZ(a,b,c){a=a|0;b=b|0;c=+c;return ag(8,a|0,b|0,+c)|0}function aQ_(a,b,c){a=a|0;b=b|0;c=+c;return ag(9,a|0,b|0,+c)|0}function aQ$(a,b,c){a=a|0;b=b|0;c=+c;return ag(10,a|0,b|0,+c)|0}function aQ0(a,b,c){a=a|0;b=b|0;c=+c;return ag(11,a|0,b|0,+c)|0}function aQ1(a,b,c){a=a|0;b=b|0;c=+c;return ag(12,a|0,b|0,+c)|0}function aQ2(a,b,c){a=a|0;b=b|0;c=+c;return ag(13,a|0,b|0,+c)|0}function aQ3(a,b,c){a=a|0;b=b|0;c=+c;return ag(14,a|0,b|0,+c)|0}function aQ4(a,b,c){a=a|0;b=b|0;c=+c;return ag(15,a|0,b|0,+c)|0}function aQ5(a,b,c){a=a|0;b=b|0;c=+c;return ag(16,a|0,b|0,+c)|0}function aQ6(a,b,c){a=a|0;b=b|0;c=+c;return ag(17,a|0,b|0,+c)|0}function aQ7(a,b,c){a=a|0;b=b|0;c=+c;return ag(18,a|0,b|0,+c)|0}function aQ8(a,b,c){a=a|0;b=b|0;c=+c;return ag(19,a|0,b|0,+c)|0}function aQ9(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return c1[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function aRa(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRb(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRe(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRf(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRg(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRh(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRi(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRj(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRl(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRm(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRo(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRp(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRs(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRt(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0)|0}function aRu(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;c2[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aRv(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRw(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRx(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRy(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRz(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRA(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRB(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRC(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRD(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRE(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRF(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRG(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRH(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRI(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRJ(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRK(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRL(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRM(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRN(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRO(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aRP(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;c3[a&63](b|0,+c,+d,+e,+f,+g,+h)}function aRQ(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(0,a|0,+b,+c,+d,+e,+f,+g)}function aRR(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(1,a|0,+b,+c,+d,+e,+f,+g)}function aRS(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(2,a|0,+b,+c,+d,+e,+f,+g)}function aRT(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(3,a|0,+b,+c,+d,+e,+f,+g)}function aRU(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(4,a|0,+b,+c,+d,+e,+f,+g)}function aRV(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(5,a|0,+b,+c,+d,+e,+f,+g)}function aRW(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(6,a|0,+b,+c,+d,+e,+f,+g)}function aRX(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(7,a|0,+b,+c,+d,+e,+f,+g)}function aRY(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(8,a|0,+b,+c,+d,+e,+f,+g)}function aRZ(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(9,a|0,+b,+c,+d,+e,+f,+g)}function aR_(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(10,a|0,+b,+c,+d,+e,+f,+g)}function aR$(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(11,a|0,+b,+c,+d,+e,+f,+g)}function aR0(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(12,a|0,+b,+c,+d,+e,+f,+g)}function aR1(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(13,a|0,+b,+c,+d,+e,+f,+g)}function aR2(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(14,a|0,+b,+c,+d,+e,+f,+g)}function aR3(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(15,a|0,+b,+c,+d,+e,+f,+g)}function aR4(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(16,a|0,+b,+c,+d,+e,+f,+g)}function aR5(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(17,a|0,+b,+c,+d,+e,+f,+g)}function aR6(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(18,a|0,+b,+c,+d,+e,+f,+g)}function aR7(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ag(19,a|0,+b,+c,+d,+e,+f,+g)}function aR8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return+c4[a&127](b|0,c|0,d|0)}function aR9(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(0,a|0,b|0,c|0)}function aSa(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(1,a|0,b|0,c|0)}function aSb(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(2,a|0,b|0,c|0)}function aSc(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(3,a|0,b|0,c|0)}function aSd(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(4,a|0,b|0,c|0)}function aSe(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(5,a|0,b|0,c|0)}function aSf(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(6,a|0,b|0,c|0)}function aSg(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(7,a|0,b|0,c|0)}function aSh(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(8,a|0,b|0,c|0)}function aSi(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(9,a|0,b|0,c|0)}function aSj(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(10,a|0,b|0,c|0)}function aSk(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(11,a|0,b|0,c|0)}function aSl(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(12,a|0,b|0,c|0)}function aSm(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(13,a|0,b|0,c|0)}function aSn(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(14,a|0,b|0,c|0)}function aSo(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(15,a|0,b|0,c|0)}function aSp(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(16,a|0,b|0,c|0)}function aSq(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(17,a|0,b|0,c|0)}function aSr(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(18,a|0,b|0,c|0)}function aSs(a,b,c){a=a|0;b=b|0;c=c|0;return+ag(19,a|0,b|0,c|0)}function aSt(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return c5[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function aSu(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSv(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSw(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSx(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSy(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSz(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSA(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSB(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSC(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSD(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSE(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSF(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSG(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSH(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSI(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSJ(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSK(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSL(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSM(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSN(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function aSO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return+c6[a&63](b|0,c|0,+d)}function aSP(a,b,c){a=a|0;b=b|0;c=+c;return+ag(0,a|0,b|0,+c)}function aSQ(a,b,c){a=a|0;b=b|0;c=+c;return+ag(1,a|0,b|0,+c)}function aSR(a,b,c){a=a|0;b=b|0;c=+c;return+ag(2,a|0,b|0,+c)}function aSS(a,b,c){a=a|0;b=b|0;c=+c;return+ag(3,a|0,b|0,+c)}function aST(a,b,c){a=a|0;b=b|0;c=+c;return+ag(4,a|0,b|0,+c)}function aSU(a,b,c){a=a|0;b=b|0;c=+c;return+ag(5,a|0,b|0,+c)}function aSV(a,b,c){a=a|0;b=b|0;c=+c;return+ag(6,a|0,b|0,+c)}function aSW(a,b,c){a=a|0;b=b|0;c=+c;return+ag(7,a|0,b|0,+c)}function aSX(a,b,c){a=a|0;b=b|0;c=+c;return+ag(8,a|0,b|0,+c)}function aSY(a,b,c){a=a|0;b=b|0;c=+c;return+ag(9,a|0,b|0,+c)}function aSZ(a,b,c){a=a|0;b=b|0;c=+c;return+ag(10,a|0,b|0,+c)}function aS_(a,b,c){a=a|0;b=b|0;c=+c;return+ag(11,a|0,b|0,+c)}function aS$(a,b,c){a=a|0;b=b|0;c=+c;return+ag(12,a|0,b|0,+c)}function aS0(a,b,c){a=a|0;b=b|0;c=+c;return+ag(13,a|0,b|0,+c)}function aS1(a,b,c){a=a|0;b=b|0;c=+c;return+ag(14,a|0,b|0,+c)}function aS2(a,b,c){a=a|0;b=b|0;c=+c;return+ag(15,a|0,b|0,+c)}function aS3(a,b,c){a=a|0;b=b|0;c=+c;return+ag(16,a|0,b|0,+c)}function aS4(a,b,c){a=a|0;b=b|0;c=+c;return+ag(17,a|0,b|0,+c)}function aS5(a,b,c){a=a|0;b=b|0;c=+c;return+ag(18,a|0,b|0,+c)}function aS6(a,b,c){a=a|0;b=b|0;c=+c;return+ag(19,a|0,b|0,+c)}function aS7(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+c7[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aS8(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aS9(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTa(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTb(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTc(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTd(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTe(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTf(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTg(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTh(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTi(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTj(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTk(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTl(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTm(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTn(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTo(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTp(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTq(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTr(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTs(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;return c8[a&63](+b,c|0,d|0)|0}function aTt(a,b,c){a=+a;b=b|0;c=c|0;return ag(0,+a,b|0,c|0)|0}function aTu(a,b,c){a=+a;b=b|0;c=c|0;return ag(1,+a,b|0,c|0)|0}function aTv(a,b,c){a=+a;b=b|0;c=c|0;return ag(2,+a,b|0,c|0)|0}function aTw(a,b,c){a=+a;b=b|0;c=c|0;return ag(3,+a,b|0,c|0)|0}function aTx(a,b,c){a=+a;b=b|0;c=c|0;return ag(4,+a,b|0,c|0)|0}function aTy(a,b,c){a=+a;b=b|0;c=c|0;return ag(5,+a,b|0,c|0)|0}function aTz(a,b,c){a=+a;b=b|0;c=c|0;return ag(6,+a,b|0,c|0)|0}function aTA(a,b,c){a=+a;b=b|0;c=c|0;return ag(7,+a,b|0,c|0)|0}function aTB(a,b,c){a=+a;b=b|0;c=c|0;return ag(8,+a,b|0,c|0)|0}function aTC(a,b,c){a=+a;b=b|0;c=c|0;return ag(9,+a,b|0,c|0)|0}function aTD(a,b,c){a=+a;b=b|0;c=c|0;return ag(10,+a,b|0,c|0)|0}function aTE(a,b,c){a=+a;b=b|0;c=c|0;return ag(11,+a,b|0,c|0)|0}function aTF(a,b,c){a=+a;b=b|0;c=c|0;return ag(12,+a,b|0,c|0)|0}function aTG(a,b,c){a=+a;b=b|0;c=c|0;return ag(13,+a,b|0,c|0)|0}function aTH(a,b,c){a=+a;b=b|0;c=c|0;return ag(14,+a,b|0,c|0)|0}function aTI(a,b,c){a=+a;b=b|0;c=c|0;return ag(15,+a,b|0,c|0)|0}function aTJ(a,b,c){a=+a;b=b|0;c=c|0;return ag(16,+a,b|0,c|0)|0}function aTK(a,b,c){a=+a;b=b|0;c=c|0;return ag(17,+a,b|0,c|0)|0}function aTL(a,b,c){a=+a;b=b|0;c=c|0;return ag(18,+a,b|0,c|0)|0}function aTM(a,b,c){a=+a;b=b|0;c=c|0;return ag(19,+a,b|0,c|0)|0}function aTN(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=+c;d=+d;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return+c9[a&63](b|0,+c,+d,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aTO(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(0,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTP(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(1,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTQ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(2,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTR(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(3,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTS(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(4,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTT(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(5,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTU(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(6,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTV(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(7,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTW(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(8,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(9,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(10,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aTZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(11,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(12,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(13,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT0(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(14,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT1(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(15,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT2(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(16,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT3(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(17,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT4(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(18,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT5(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return+ag(19,a|0,+b,+c,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aT6(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;return da[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)|0}function aT7(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aT8(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aT9(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUa(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUb(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUc(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUd(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUe(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUf(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUg(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUh(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUi(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUj(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUk(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUl(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUm(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUn(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUo(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUp(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUq(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0)|0}function aUr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return+db[a&127](b|0,c|0,d|0,e|0,f|0)}function aUs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(0,a|0,b|0,c|0,d|0,e|0)}function aUt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(1,a|0,b|0,c|0,d|0,e|0)}function aUu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(2,a|0,b|0,c|0,d|0,e|0)}function aUv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(3,a|0,b|0,c|0,d|0,e|0)}function aUw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(4,a|0,b|0,c|0,d|0,e|0)}function aUx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(5,a|0,b|0,c|0,d|0,e|0)}function aUy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(6,a|0,b|0,c|0,d|0,e|0)}function aUz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(7,a|0,b|0,c|0,d|0,e|0)}function aUA(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(8,a|0,b|0,c|0,d|0,e|0)}function aUB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(9,a|0,b|0,c|0,d|0,e|0)}function aUC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(10,a|0,b|0,c|0,d|0,e|0)}function aUD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(11,a|0,b|0,c|0,d|0,e|0)}function aUE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(12,a|0,b|0,c|0,d|0,e|0)}function aUF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(13,a|0,b|0,c|0,d|0,e|0)}function aUG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(14,a|0,b|0,c|0,d|0,e|0)}function aUH(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(15,a|0,b|0,c|0,d|0,e|0)}function aUI(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(16,a|0,b|0,c|0,d|0,e|0)}function aUJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(17,a|0,b|0,c|0,d|0,e|0)}function aUK(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(18,a|0,b|0,c|0,d|0,e|0)}function aUL(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return+ag(19,a|0,b|0,c|0,d|0,e|0)}function aUM(a,b,c){a=a|0;b=b|0;c=+c;return dc[a&127](b|0,+c)|0}function aUN(a,b){a=a|0;b=+b;return ag(0,a|0,+b)|0}function aUO(a,b){a=a|0;b=+b;return ag(1,a|0,+b)|0}function aUP(a,b){a=a|0;b=+b;return ag(2,a|0,+b)|0}function aUQ(a,b){a=a|0;b=+b;return ag(3,a|0,+b)|0}function aUR(a,b){a=a|0;b=+b;return ag(4,a|0,+b)|0}function aUS(a,b){a=a|0;b=+b;return ag(5,a|0,+b)|0}function aUT(a,b){a=a|0;b=+b;return ag(6,a|0,+b)|0}function aUU(a,b){a=a|0;b=+b;return ag(7,a|0,+b)|0}function aUV(a,b){a=a|0;b=+b;return ag(8,a|0,+b)|0}function aUW(a,b){a=a|0;b=+b;return ag(9,a|0,+b)|0}function aUX(a,b){a=a|0;b=+b;return ag(10,a|0,+b)|0}function aUY(a,b){a=a|0;b=+b;return ag(11,a|0,+b)|0}function aUZ(a,b){a=a|0;b=+b;return ag(12,a|0,+b)|0}function aU_(a,b){a=a|0;b=+b;return ag(13,a|0,+b)|0}function aU$(a,b){a=a|0;b=+b;return ag(14,a|0,+b)|0}function aU0(a,b){a=a|0;b=+b;return ag(15,a|0,+b)|0}function aU1(a,b){a=a|0;b=+b;return ag(16,a|0,+b)|0}function aU2(a,b){a=a|0;b=+b;return ag(17,a|0,+b)|0}function aU3(a,b){a=a|0;b=+b;return ag(18,a|0,+b)|0}function aU4(a,b){a=a|0;b=+b;return ag(19,a|0,+b)|0}function aU5(a,b){a=a|0;b=+b;return dd[a&63](+b)|0}function aU6(a){a=+a;return ag(0,+a)|0}function aU7(a){a=+a;return ag(1,+a)|0}function aU8(a){a=+a;return ag(2,+a)|0}function aU9(a){a=+a;return ag(3,+a)|0}function aVa(a){a=+a;return ag(4,+a)|0}function aVb(a){a=+a;return ag(5,+a)|0}function aVc(a){a=+a;return ag(6,+a)|0}function aVd(a){a=+a;return ag(7,+a)|0}function aVe(a){a=+a;return ag(8,+a)|0}function aVf(a){a=+a;return ag(9,+a)|0}function aVg(a){a=+a;return ag(10,+a)|0}function aVh(a){a=+a;return ag(11,+a)|0}function aVi(a){a=+a;return ag(12,+a)|0}function aVj(a){a=+a;return ag(13,+a)|0}function aVk(a){a=+a;return ag(14,+a)|0}function aVl(a){a=+a;return ag(15,+a)|0}function aVm(a){a=+a;return ag(16,+a)|0}function aVn(a){a=+a;return ag(17,+a)|0}function aVo(a){a=+a;return ag(18,+a)|0}function aVp(a){a=+a;return ag(19,+a)|0}function aVq(a,b,c,d,e,f,g){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=+g;de[a&63](b|0,+c,+d,+e,+f,+g)}function aVr(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(0,a|0,+b,+c,+d,+e,+f)}function aVs(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(1,a|0,+b,+c,+d,+e,+f)}function aVt(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(2,a|0,+b,+c,+d,+e,+f)}function aVu(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(3,a|0,+b,+c,+d,+e,+f)}function aVv(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(4,a|0,+b,+c,+d,+e,+f)}function aVw(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(5,a|0,+b,+c,+d,+e,+f)}function aVx(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(6,a|0,+b,+c,+d,+e,+f)}function aVy(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(7,a|0,+b,+c,+d,+e,+f)}function aVz(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(8,a|0,+b,+c,+d,+e,+f)}function aVA(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(9,a|0,+b,+c,+d,+e,+f)}function aVB(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(10,a|0,+b,+c,+d,+e,+f)}function aVC(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(11,a|0,+b,+c,+d,+e,+f)}function aVD(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(12,a|0,+b,+c,+d,+e,+f)}function aVE(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(13,a|0,+b,+c,+d,+e,+f)}function aVF(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(14,a|0,+b,+c,+d,+e,+f)}function aVG(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(15,a|0,+b,+c,+d,+e,+f)}function aVH(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(16,a|0,+b,+c,+d,+e,+f)}function aVI(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(17,a|0,+b,+c,+d,+e,+f)}function aVJ(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(18,a|0,+b,+c,+d,+e,+f)}function aVK(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ag(19,a|0,+b,+c,+d,+e,+f)}function aVL(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=+j;df[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,+j)}function aVM(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVN(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVO(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVP(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVQ(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVR(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVS(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVT(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVU(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVV(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVW(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVX(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVY(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aVZ(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV_(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV$(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV0(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV1(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV2(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV3(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aV4(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;dg[a&63](b|0,+c,d|0,e|0)}function aV5(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(0,a|0,+b,c|0,d|0)}function aV6(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(1,a|0,+b,c|0,d|0)}function aV7(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(2,a|0,+b,c|0,d|0)}function aV8(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(3,a|0,+b,c|0,d|0)}function aV9(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(4,a|0,+b,c|0,d|0)}function aWa(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(5,a|0,+b,c|0,d|0)}function aWb(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(6,a|0,+b,c|0,d|0)}function aWc(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(7,a|0,+b,c|0,d|0)}function aWd(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(8,a|0,+b,c|0,d|0)}function aWe(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(9,a|0,+b,c|0,d|0)}function aWf(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(10,a|0,+b,c|0,d|0)}function aWg(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(11,a|0,+b,c|0,d|0)}function aWh(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(12,a|0,+b,c|0,d|0)}function aWi(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(13,a|0,+b,c|0,d|0)}function aWj(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(14,a|0,+b,c|0,d|0)}function aWk(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(15,a|0,+b,c|0,d|0)}function aWl(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(16,a|0,+b,c|0,d|0)}function aWm(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(17,a|0,+b,c|0,d|0)}function aWn(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(18,a|0,+b,c|0,d|0)}function aWo(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ag(19,a|0,+b,c|0,d|0)}function aWp(a,b){a=a|0;b=b|0;return+dh[a&1023](b|0)}function aWq(a){a=a|0;return+ag(0,a|0)}function aWr(a){a=a|0;return+ag(1,a|0)}function aWs(a){a=a|0;return+ag(2,a|0)}function aWt(a){a=a|0;return+ag(3,a|0)}function aWu(a){a=a|0;return+ag(4,a|0)}function aWv(a){a=a|0;return+ag(5,a|0)}function aWw(a){a=a|0;return+ag(6,a|0)}function aWx(a){a=a|0;return+ag(7,a|0)}function aWy(a){a=a|0;return+ag(8,a|0)}function aWz(a){a=a|0;return+ag(9,a|0)}function aWA(a){a=a|0;return+ag(10,a|0)}function aWB(a){a=a|0;return+ag(11,a|0)}function aWC(a){a=a|0;return+ag(12,a|0)}function aWD(a){a=a|0;return+ag(13,a|0)}function aWE(a){a=a|0;return+ag(14,a|0)}function aWF(a){a=a|0;return+ag(15,a|0)}function aWG(a){a=a|0;return+ag(16,a|0)}function aWH(a){a=a|0;return+ag(17,a|0)}function aWI(a){a=a|0;return+ag(18,a|0)}function aWJ(a){a=a|0;return+ag(19,a|0)}function aWK(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;di[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0)}function aWL(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWM(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWN(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWO(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWP(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWQ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWR(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWS(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWT(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWU(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWV(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWW(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aWZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW0(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW1(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW2(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function aW3(a,b,c){a=a|0;b=b|0;c=c|0;return dj[a&511](b|0,c|0)|0}function aW4(a,b){a=a|0;b=b|0;return ag(0,a|0,b|0)|0}function aW5(a,b){a=a|0;b=b|0;return ag(1,a|0,b|0)|0}function aW6(a,b){a=a|0;b=b|0;return ag(2,a|0,b|0)|0}function aW7(a,b){a=a|0;b=b|0;return ag(3,a|0,b|0)|0}function aW8(a,b){a=a|0;b=b|0;return ag(4,a|0,b|0)|0}function aW9(a,b){a=a|0;b=b|0;return ag(5,a|0,b|0)|0}function aXa(a,b){a=a|0;b=b|0;return ag(6,a|0,b|0)|0}function aXb(a,b){a=a|0;b=b|0;return ag(7,a|0,b|0)|0}function aXc(a,b){a=a|0;b=b|0;return ag(8,a|0,b|0)|0}function aXd(a,b){a=a|0;b=b|0;return ag(9,a|0,b|0)|0}function aXe(a,b){a=a|0;b=b|0;return ag(10,a|0,b|0)|0}function aXf(a,b){a=a|0;b=b|0;return ag(11,a|0,b|0)|0}function aXg(a,b){a=a|0;b=b|0;return ag(12,a|0,b|0)|0}function aXh(a,b){a=a|0;b=b|0;return ag(13,a|0,b|0)|0}function aXi(a,b){a=a|0;b=b|0;return ag(14,a|0,b|0)|0}function aXj(a,b){a=a|0;b=b|0;return ag(15,a|0,b|0)|0}function aXk(a,b){a=a|0;b=b|0;return ag(16,a|0,b|0)|0}function aXl(a,b){a=a|0;b=b|0;return ag(17,a|0,b|0)|0}function aXm(a,b){a=a|0;b=b|0;return ag(18,a|0,b|0)|0}function aXn(a,b){a=a|0;b=b|0;return ag(19,a|0,b|0)|0}function aXo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return dk[a&63](b|0,c|0,d|0,e|0,f|0)|0}function aXp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(0,a|0,b|0,c|0,d|0,e|0)|0}function aXq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(1,a|0,b|0,c|0,d|0,e|0)|0}function aXr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(2,a|0,b|0,c|0,d|0,e|0)|0}function aXs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(3,a|0,b|0,c|0,d|0,e|0)|0}function aXt(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(4,a|0,b|0,c|0,d|0,e|0)|0}function aXu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(5,a|0,b|0,c|0,d|0,e|0)|0}function aXv(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(6,a|0,b|0,c|0,d|0,e|0)|0}function aXw(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(7,a|0,b|0,c|0,d|0,e|0)|0}function aXx(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(8,a|0,b|0,c|0,d|0,e|0)|0}function aXy(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(9,a|0,b|0,c|0,d|0,e|0)|0}function aXz(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(10,a|0,b|0,c|0,d|0,e|0)|0}function aXA(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(11,a|0,b|0,c|0,d|0,e|0)|0}function aXB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(12,a|0,b|0,c|0,d|0,e|0)|0}function aXC(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(13,a|0,b|0,c|0,d|0,e|0)|0}function aXD(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(14,a|0,b|0,c|0,d|0,e|0)|0}function aXE(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(15,a|0,b|0,c|0,d|0,e|0)|0}function aXF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(16,a|0,b|0,c|0,d|0,e|0)|0}function aXG(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(17,a|0,b|0,c|0,d|0,e|0)|0}function aXH(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(18,a|0,b|0,c|0,d|0,e|0)|0}function aXI(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ag(19,a|0,b|0,c|0,d|0,e|0)|0}function aXJ(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return dl[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function aXK(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXL(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXM(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXN(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXP(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXQ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXR(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXS(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXT(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXU(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXV(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXW(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXX(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXY(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aXZ(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX_(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX$(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX0(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX1(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0)|0}function aX2(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;dm[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,+i)}function aX3(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX4(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX5(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX6(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX7(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX8(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aX9(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYd(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYe(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYg(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYh(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYi(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYk(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYl(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYm(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,+h)}function aYn(a,b,c){a=a|0;b=b|0;c=c|0;return+dn[a&127](b|0,c|0)}function aYo(a,b){a=a|0;b=b|0;return+ag(0,a|0,b|0)}function aYp(a,b){a=a|0;b=b|0;return+ag(1,a|0,b|0)}function aYq(a,b){a=a|0;b=b|0;return+ag(2,a|0,b|0)}function aYr(a,b){a=a|0;b=b|0;return+ag(3,a|0,b|0)}function aYs(a,b){a=a|0;b=b|0;return+ag(4,a|0,b|0)}function aYt(a,b){a=a|0;b=b|0;return+ag(5,a|0,b|0)}function aYu(a,b){a=a|0;b=b|0;return+ag(6,a|0,b|0)}function aYv(a,b){a=a|0;b=b|0;return+ag(7,a|0,b|0)}function aYw(a,b){a=a|0;b=b|0;return+ag(8,a|0,b|0)}function aYx(a,b){a=a|0;b=b|0;return+ag(9,a|0,b|0)}function aYy(a,b){a=a|0;b=b|0;return+ag(10,a|0,b|0)}function aYz(a,b){a=a|0;b=b|0;return+ag(11,a|0,b|0)}function aYA(a,b){a=a|0;b=b|0;return+ag(12,a|0,b|0)}function aYB(a,b){a=a|0;b=b|0;return+ag(13,a|0,b|0)}function aYC(a,b){a=a|0;b=b|0;return+ag(14,a|0,b|0)}function aYD(a,b){a=a|0;b=b|0;return+ag(15,a|0,b|0)}function aYE(a,b){a=a|0;b=b|0;return+ag(16,a|0,b|0)}function aYF(a,b){a=a|0;b=b|0;return+ag(17,a|0,b|0)}function aYG(a,b){a=a|0;b=b|0;return+ag(18,a|0,b|0)}function aYH(a,b){a=a|0;b=b|0;return+ag(19,a|0,b|0)}function aYI(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;k=+k;dp[a&63](b|0,+c,+d,+e,+f,+g,+h,+i,+j,+k)}function aYJ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(0,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYK(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(1,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYL(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(2,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYM(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(3,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYN(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(4,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYO(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(5,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYP(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(6,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYQ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(7,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYR(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(8,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYS(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(9,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYT(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(10,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYU(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(11,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYV(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(12,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYW(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(13,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYX(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(14,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYY(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(15,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aYZ(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(16,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aY_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(17,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aY$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(18,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aY0(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ag(19,a|0,+b,+c,+d,+e,+f,+g,+h,+i,+j)}function aY1(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return+dq[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)}function aY2(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY3(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY4(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY5(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY6(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY7(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY8(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aY9(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZa(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZb(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZc(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZd(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZe(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZg(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZh(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZi(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZk(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZl(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return+ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function aZm(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=+e;return dr[a&63](b|0,+c,d|0,+e)|0}function aZn(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(0,a|0,+b,c|0,+d)|0}function aZo(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(1,a|0,+b,c|0,+d)|0}function aZp(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(2,a|0,+b,c|0,+d)|0}function aZq(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(3,a|0,+b,c|0,+d)|0}function aZr(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(4,a|0,+b,c|0,+d)|0}function aZs(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(5,a|0,+b,c|0,+d)|0}function aZt(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(6,a|0,+b,c|0,+d)|0}function aZu(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(7,a|0,+b,c|0,+d)|0}function aZv(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(8,a|0,+b,c|0,+d)|0}function aZw(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(9,a|0,+b,c|0,+d)|0}function aZx(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(10,a|0,+b,c|0,+d)|0}function aZy(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(11,a|0,+b,c|0,+d)|0}function aZz(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(12,a|0,+b,c|0,+d)|0}function aZA(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(13,a|0,+b,c|0,+d)|0}function aZB(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(14,a|0,+b,c|0,+d)|0}function aZC(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(15,a|0,+b,c|0,+d)|0}function aZD(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(16,a|0,+b,c|0,+d)|0}function aZE(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(17,a|0,+b,c|0,+d)|0}function aZF(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(18,a|0,+b,c|0,+d)|0}function aZG(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;return ag(19,a|0,+b,c|0,+d)|0}function aZH(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;return ds[a&63](+b,+c,+d,+e)|0}function aZI(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(0,+a,+b,+c,+d)|0}function aZJ(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(1,+a,+b,+c,+d)|0}function aZK(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(2,+a,+b,+c,+d)|0}function aZL(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(3,+a,+b,+c,+d)|0}function aZM(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(4,+a,+b,+c,+d)|0}function aZN(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(5,+a,+b,+c,+d)|0}function aZO(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(6,+a,+b,+c,+d)|0}function aZP(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(7,+a,+b,+c,+d)|0}function aZQ(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(8,+a,+b,+c,+d)|0}function aZR(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(9,+a,+b,+c,+d)|0}function aZS(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(10,+a,+b,+c,+d)|0}function aZT(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(11,+a,+b,+c,+d)|0}function aZU(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(12,+a,+b,+c,+d)|0}function aZV(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(13,+a,+b,+c,+d)|0}function aZW(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(14,+a,+b,+c,+d)|0}function aZX(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(15,+a,+b,+c,+d)|0}function aZY(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(16,+a,+b,+c,+d)|0}function aZZ(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(17,+a,+b,+c,+d)|0}function aZ_(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(18,+a,+b,+c,+d)|0}function aZ$(a,b,c,d){a=+a;b=+b;c=+c;d=+d;return ag(19,+a,+b,+c,+d)|0}function aZ0(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=+g;h=+h;i=+i;j=j|0;k=k|0;l=+l;dt[a&63](b|0,c|0,d|0,e|0,+f,+g,+h,+i,j|0,k|0,+l)}function aZ1(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(0,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ2(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(1,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ3(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(2,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ4(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(3,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ5(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(4,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ6(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(5,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ7(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(6,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ8(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(7,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function aZ9(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(8,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_a(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(9,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_b(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(10,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_c(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(11,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_d(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(12,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_e(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(13,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_f(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(14,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_g(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(15,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_h(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(16,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_i(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(17,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_j(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(18,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_k(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ag(19,a|0,b|0,c|0,d|0,+e,+f,+g,+h,i|0,j|0,+k)}function a_l(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;return du[a&63](b|0,c|0,d|0,e|0,+f)|0}function a_m(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(0,a|0,b|0,c|0,d|0,+e)|0}function a_n(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(1,a|0,b|0,c|0,d|0,+e)|0}function a_o(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(2,a|0,b|0,c|0,d|0,+e)|0}function a_p(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(3,a|0,b|0,c|0,d|0,+e)|0}function a_q(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(4,a|0,b|0,c|0,d|0,+e)|0}function a_r(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(5,a|0,b|0,c|0,d|0,+e)|0}function a_s(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(6,a|0,b|0,c|0,d|0,+e)|0}function a_t(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(7,a|0,b|0,c|0,d|0,+e)|0}function a_u(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(8,a|0,b|0,c|0,d|0,+e)|0}function a_v(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(9,a|0,b|0,c|0,d|0,+e)|0}function a_w(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(10,a|0,b|0,c|0,d|0,+e)|0}function a_x(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(11,a|0,b|0,c|0,d|0,+e)|0}function a_y(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(12,a|0,b|0,c|0,d|0,+e)|0}function a_z(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(13,a|0,b|0,c|0,d|0,+e)|0}function a_A(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(14,a|0,b|0,c|0,d|0,+e)|0}function a_B(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(15,a|0,b|0,c|0,d|0,+e)|0}function a_C(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(16,a|0,b|0,c|0,d|0,+e)|0}function a_D(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(17,a|0,b|0,c|0,d|0,+e)|0}function a_E(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(18,a|0,b|0,c|0,d|0,+e)|0}function a_F(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return ag(19,a|0,b|0,c|0,d|0,+e)|0}function a_G(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;return dv[a&63](b|0,+c,+d)|0}function a_H(a,b,c){a=a|0;b=+b;c=+c;return ag(0,a|0,+b,+c)|0}function a_I(a,b,c){a=a|0;b=+b;c=+c;return ag(1,a|0,+b,+c)|0}function a_J(a,b,c){a=a|0;b=+b;c=+c;return ag(2,a|0,+b,+c)|0}function a_K(a,b,c){a=a|0;b=+b;c=+c;return ag(3,a|0,+b,+c)|0}function a_L(a,b,c){a=a|0;b=+b;c=+c;return ag(4,a|0,+b,+c)|0}function a_M(a,b,c){a=a|0;b=+b;c=+c;return ag(5,a|0,+b,+c)|0}function a_N(a,b,c){a=a|0;b=+b;c=+c;return ag(6,a|0,+b,+c)|0}function a_O(a,b,c){a=a|0;b=+b;c=+c;return ag(7,a|0,+b,+c)|0}function a_P(a,b,c){a=a|0;b=+b;c=+c;return ag(8,a|0,+b,+c)|0}function a_Q(a,b,c){a=a|0;b=+b;c=+c;return ag(9,a|0,+b,+c)|0}function a_R(a,b,c){a=a|0;b=+b;c=+c;return ag(10,a|0,+b,+c)|0}function a_S(a,b,c){a=a|0;b=+b;c=+c;return ag(11,a|0,+b,+c)|0}function a_T(a,b,c){a=a|0;b=+b;c=+c;return ag(12,a|0,+b,+c)|0}function a_U(a,b,c){a=a|0;b=+b;c=+c;return ag(13,a|0,+b,+c)|0}function a_V(a,b,c){a=a|0;b=+b;c=+c;return ag(14,a|0,+b,+c)|0}function a_W(a,b,c){a=a|0;b=+b;c=+c;return ag(15,a|0,+b,+c)|0}function a_X(a,b,c){a=a|0;b=+b;c=+c;return ag(16,a|0,+b,+c)|0}function a_Y(a,b,c){a=a|0;b=+b;c=+c;return ag(17,a|0,+b,+c)|0}function a_Z(a,b,c){a=a|0;b=+b;c=+c;return ag(18,a|0,+b,+c)|0}function a__(a,b,c){a=a|0;b=+b;c=+c;return ag(19,a|0,+b,+c)|0}function a_$(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;dw[a&127](b|0,c|0,d|0,+e)}function a_0(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(0,a|0,b|0,c|0,+d)}function a_1(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(1,a|0,b|0,c|0,+d)}function a_2(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(2,a|0,b|0,c|0,+d)}function a_3(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(3,a|0,b|0,c|0,+d)}function a_4(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(4,a|0,b|0,c|0,+d)}function a_5(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(5,a|0,b|0,c|0,+d)}function a_6(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(6,a|0,b|0,c|0,+d)}function a_7(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(7,a|0,b|0,c|0,+d)}function a_8(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(8,a|0,b|0,c|0,+d)}function a_9(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(9,a|0,b|0,c|0,+d)}function a$a(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(10,a|0,b|0,c|0,+d)}function a$b(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(11,a|0,b|0,c|0,+d)}function a$c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(12,a|0,b|0,c|0,+d)}function a$d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(13,a|0,b|0,c|0,+d)}function a$e(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(14,a|0,b|0,c|0,+d)}function a$f(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(15,a|0,b|0,c|0,+d)}function a$g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(16,a|0,b|0,c|0,+d)}function a$h(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(17,a|0,b|0,c|0,+d)}function a$i(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(18,a|0,b|0,c|0,+d)}function a$j(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ag(19,a|0,b|0,c|0,+d)}function a$k(a){a=a|0;return dx[a&255]()|0}function a$l(){return ag(0)|0}function a$m(){return ag(1)|0}function a$n(){return ag(2)|0}function a$o(){return ag(3)|0}function a$p(){return ag(4)|0}function a$q(){return ag(5)|0}function a$r(){return ag(6)|0}function a$s(){return ag(7)|0}function a$t(){return ag(8)|0}function a$u(){return ag(9)|0}function a$v(){return ag(10)|0}function a$w(){return ag(11)|0}function a$x(){return ag(12)|0}function a$y(){return ag(13)|0}function a$z(){return ag(14)|0}function a$A(){return ag(15)|0}function a$B(){return ag(16)|0}function a$C(){return ag(17)|0}function a$D(){return ag(18)|0}function a$E(){return ag(19)|0}function a$F(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;g=g|0;h=h|0;dy[a&127](b|0,c|0,d|0,e|0,+f,g|0,h|0)}function a$G(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(0,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$H(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(1,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$I(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(2,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$J(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(3,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$K(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(4,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$L(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(5,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$M(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(6,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$N(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(7,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$O(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(8,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$P(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(9,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$Q(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(10,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$R(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(11,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$S(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(12,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$T(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(13,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$U(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(14,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$V(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(15,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$W(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(16,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$X(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(17,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$Y(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(18,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$Z(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ag(19,a|0,b|0,c|0,d|0,+e,f|0,g|0)}function a$_(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=h|0;i=i|0;j=j|0;return dz[a&63](b|0,c|0,d|0,+e,+f,+g,h|0,i|0,j|0)|0}function a$$(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(0,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$0(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(1,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$1(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(2,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$2(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(3,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$3(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(4,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$4(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(5,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$5(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(6,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$6(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(7,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$7(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(8,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$8(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(9,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a$9(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(10,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0a(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(11,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0b(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(12,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0c(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(13,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0d(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(14,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0e(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(15,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0f(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(16,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0g(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(17,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0h(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(18,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0i(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;return ag(19,a|0,b|0,c|0,+d,+e,+f,g|0,h|0,i|0)|0}function a0j(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;dA[a&511](b|0,c|0,d|0)}function a0k(a,b,c){a=a|0;b=b|0;c=c|0;ag(0,a|0,b|0,c|0)}function a0l(a,b,c){a=a|0;b=b|0;c=c|0;ag(1,a|0,b|0,c|0)}function a0m(a,b,c){a=a|0;b=b|0;c=c|0;ag(2,a|0,b|0,c|0)}function a0n(a,b,c){a=a|0;b=b|0;c=c|0;ag(3,a|0,b|0,c|0)}function a0o(a,b,c){a=a|0;b=b|0;c=c|0;ag(4,a|0,b|0,c|0)}function a0p(a,b,c){a=a|0;b=b|0;c=c|0;ag(5,a|0,b|0,c|0)}function a0q(a,b,c){a=a|0;b=b|0;c=c|0;ag(6,a|0,b|0,c|0)}function a0r(a,b,c){a=a|0;b=b|0;c=c|0;ag(7,a|0,b|0,c|0)}function a0s(a,b,c){a=a|0;b=b|0;c=c|0;ag(8,a|0,b|0,c|0)}function a0t(a,b,c){a=a|0;b=b|0;c=c|0;ag(9,a|0,b|0,c|0)}function a0u(a,b,c){a=a|0;b=b|0;c=c|0;ag(10,a|0,b|0,c|0)}function a0v(a,b,c){a=a|0;b=b|0;c=c|0;ag(11,a|0,b|0,c|0)}function a0w(a,b,c){a=a|0;b=b|0;c=c|0;ag(12,a|0,b|0,c|0)}function a0x(a,b,c){a=a|0;b=b|0;c=c|0;ag(13,a|0,b|0,c|0)}function a0y(a,b,c){a=a|0;b=b|0;c=c|0;ag(14,a|0,b|0,c|0)}function a0z(a,b,c){a=a|0;b=b|0;c=c|0;ag(15,a|0,b|0,c|0)}function a0A(a,b,c){a=a|0;b=b|0;c=c|0;ag(16,a|0,b|0,c|0)}function a0B(a,b,c){a=a|0;b=b|0;c=c|0;ag(17,a|0,b|0,c|0)}function a0C(a,b,c){a=a|0;b=b|0;c=c|0;ag(18,a|0,b|0,c|0)}function a0D(a,b,c){a=a|0;b=b|0;c=c|0;ag(19,a|0,b|0,c|0)}function a0E(a,b,c){a=a|0;b=+b;c=+c;return dB[a&63](+b,+c)|0}function a0F(a,b){a=+a;b=+b;return ag(0,+a,+b)|0}function a0G(a,b){a=+a;b=+b;return ag(1,+a,+b)|0}function a0H(a,b){a=+a;b=+b;return ag(2,+a,+b)|0}function a0I(a,b){a=+a;b=+b;return ag(3,+a,+b)|0}function a0J(a,b){a=+a;b=+b;return ag(4,+a,+b)|0}function a0K(a,b){a=+a;b=+b;return ag(5,+a,+b)|0}function a0L(a,b){a=+a;b=+b;return ag(6,+a,+b)|0}function a0M(a,b){a=+a;b=+b;return ag(7,+a,+b)|0}function a0N(a,b){a=+a;b=+b;return ag(8,+a,+b)|0}function a0O(a,b){a=+a;b=+b;return ag(9,+a,+b)|0}function a0P(a,b){a=+a;b=+b;return ag(10,+a,+b)|0}function a0Q(a,b){a=+a;b=+b;return ag(11,+a,+b)|0}function a0R(a,b){a=+a;b=+b;return ag(12,+a,+b)|0}function a0S(a,b){a=+a;b=+b;return ag(13,+a,+b)|0}function a0T(a,b){a=+a;b=+b;return ag(14,+a,+b)|0}function a0U(a,b){a=+a;b=+b;return ag(15,+a,+b)|0}function a0V(a,b){a=+a;b=+b;return ag(16,+a,+b)|0}function a0W(a,b){a=+a;b=+b;return ag(17,+a,+b)|0}function a0X(a,b){a=+a;b=+b;return ag(18,+a,+b)|0}function a0Y(a,b){a=+a;b=+b;return ag(19,+a,+b)|0}function a0Z(a){a=a|0;dC[a&63]()}function a0_(){ag(0)}function a0$(){ag(1)}function a00(){ag(2)}function a01(){ag(3)}function a02(){ag(4)}function a03(){ag(5)}function a04(){ag(6)}function a05(){ag(7)}function a06(){ag(8)}function a07(){ag(9)}function a08(){ag(10)}function a09(){ag(11)}function a1a(){ag(12)}function a1b(){ag(13)}function a1c(){ag(14)}function a1d(){ag(15)}function a1e(){ag(16)}function a1f(){ag(17)}function a1g(){ag(18)}function a1h(){ag(19)}function a1i(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;return dD[a&63](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0)|0}function a1j(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(0,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1k(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(1,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1l(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(2,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1m(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(3,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1n(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(4,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1o(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(5,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1p(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(6,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1q(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(7,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1r(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(8,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1s(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(9,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1t(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(10,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1u(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(11,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1v(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(12,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1w(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(13,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1x(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(14,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1y(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(15,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1z(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(16,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1A(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(17,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1B(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(18,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1C(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;return ag(19,a|0,b|0,c|0,d|0,e|0,f|0,g|0,h|0)|0}function a1D(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return dE[a&127](b|0,c|0,d|0,e|0)|0}function a1E(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(0,a|0,b|0,c|0,d|0)|0}function a1F(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(1,a|0,b|0,c|0,d|0)|0}function a1G(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(2,a|0,b|0,c|0,d|0)|0}function a1H(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(3,a|0,b|0,c|0,d|0)|0}function a1I(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(4,a|0,b|0,c|0,d|0)|0}function a1J(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(5,a|0,b|0,c|0,d|0)|0}function a1K(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(6,a|0,b|0,c|0,d|0)|0}function a1L(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(7,a|0,b|0,c|0,d|0)|0}function a1M(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(8,a|0,b|0,c|0,d|0)|0}function a1N(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(9,a|0,b|0,c|0,d|0)|0}function a1O(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(10,a|0,b|0,c|0,d|0)|0}function a1P(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(11,a|0,b|0,c|0,d|0)|0}function a1Q(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(12,a|0,b|0,c|0,d|0)|0}function a1R(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(13,a|0,b|0,c|0,d|0)|0}function a1S(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(14,a|0,b|0,c|0,d|0)|0}function a1T(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(15,a|0,b|0,c|0,d|0)|0}function a1U(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(16,a|0,b|0,c|0,d|0)|0}function a1V(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(17,a|0,b|0,c|0,d|0)|0}function a1W(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(18,a|0,b|0,c|0,d|0)|0}function a1X(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ag(19,a|0,b|0,c|0,d|0)|0}function a1Y(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;dF[a&255](b|0,c|0,+d)}function a1Z(a,b,c){a=a|0;b=b|0;c=+c;ag(0,a|0,b|0,+c)}function a1_(a,b,c){a=a|0;b=b|0;c=+c;ag(1,a|0,b|0,+c)}function a1$(a,b,c){a=a|0;b=b|0;c=+c;ag(2,a|0,b|0,+c)}function a10(a,b,c){a=a|0;b=b|0;c=+c;ag(3,a|0,b|0,+c)}function a11(a,b,c){a=a|0;b=b|0;c=+c;ag(4,a|0,b|0,+c)}function a12(a,b,c){a=a|0;b=b|0;c=+c;ag(5,a|0,b|0,+c)}function a13(a,b,c){a=a|0;b=b|0;c=+c;ag(6,a|0,b|0,+c)}function a14(a,b,c){a=a|0;b=b|0;c=+c;ag(7,a|0,b|0,+c)}function a15(a,b,c){a=a|0;b=b|0;c=+c;ag(8,a|0,b|0,+c)}function a16(a,b,c){a=a|0;b=b|0;c=+c;ag(9,a|0,b|0,+c)}function a17(a,b,c){a=a|0;b=b|0;c=+c;ag(10,a|0,b|0,+c)}function a18(a,b,c){a=a|0;b=b|0;c=+c;ag(11,a|0,b|0,+c)}function a19(a,b,c){a=a|0;b=b|0;c=+c;ag(12,a|0,b|0,+c)}function a2a(a,b,c){a=a|0;b=b|0;c=+c;ag(13,a|0,b|0,+c)}function a2b(a,b,c){a=a|0;b=b|0;c=+c;ag(14,a|0,b|0,+c)}function a2c(a,b,c){a=a|0;b=b|0;c=+c;ag(15,a|0,b|0,+c)}function a2d(a,b,c){a=a|0;b=b|0;c=+c;ag(16,a|0,b|0,+c)}function a2e(a,b,c){a=a|0;b=b|0;c=+c;ag(17,a|0,b|0,+c)}function a2f(a,b,c){a=a|0;b=b|0;c=+c;ag(18,a|0,b|0,+c)}function a2g(a,b,c){a=a|0;b=b|0;c=+c;ag(19,a|0,b|0,+c)}function a2h(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;return dG[a&63](b|0,c|0,d|0,+e)|0}function a2i(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(0,a|0,b|0,c|0,+d)|0}function a2j(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(1,a|0,b|0,c|0,+d)|0}function a2k(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(2,a|0,b|0,c|0,+d)|0}function a2l(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(3,a|0,b|0,c|0,+d)|0}function a2m(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(4,a|0,b|0,c|0,+d)|0}function a2n(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(5,a|0,b|0,c|0,+d)|0}function a2o(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(6,a|0,b|0,c|0,+d)|0}function a2p(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(7,a|0,b|0,c|0,+d)|0}function a2q(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(8,a|0,b|0,c|0,+d)|0}function a2r(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(9,a|0,b|0,c|0,+d)|0}function a2s(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(10,a|0,b|0,c|0,+d)|0}function a2t(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(11,a|0,b|0,c|0,+d)|0}function a2u(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(12,a|0,b|0,c|0,+d)|0}function a2v(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(13,a|0,b|0,c|0,+d)|0}function a2w(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(14,a|0,b|0,c|0,+d)|0}function a2x(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(15,a|0,b|0,c|0,+d)|0}function a2y(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(16,a|0,b|0,c|0,+d)|0}function a2z(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(17,a|0,b|0,c|0,+d)|0}function a2A(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(18,a|0,b|0,c|0,+d)|0}function a2B(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return ag(19,a|0,b|0,c|0,+d)|0}function a2C(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;return+dH[a&63](b|0,c|0,d|0,+e,f|0,g|0)}function a2D(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(0,a|0,b|0,c|0,+d,e|0,f|0)}function a2E(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(1,a|0,b|0,c|0,+d,e|0,f|0)}function a2F(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(2,a|0,b|0,c|0,+d,e|0,f|0)}function a2G(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(3,a|0,b|0,c|0,+d,e|0,f|0)}function a2H(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(4,a|0,b|0,c|0,+d,e|0,f|0)}function a2I(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(5,a|0,b|0,c|0,+d,e|0,f|0)}function a2J(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(6,a|0,b|0,c|0,+d,e|0,f|0)}function a2K(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(7,a|0,b|0,c|0,+d,e|0,f|0)}function a2L(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(8,a|0,b|0,c|0,+d,e|0,f|0)}function a2M(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(9,a|0,b|0,c|0,+d,e|0,f|0)}function a2N(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(10,a|0,b|0,c|0,+d,e|0,f|0)}function a2O(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(11,a|0,b|0,c|0,+d,e|0,f|0)}function a2P(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(12,a|0,b|0,c|0,+d,e|0,f|0)}function a2Q(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(13,a|0,b|0,c|0,+d,e|0,f|0)}function a2R(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(14,a|0,b|0,c|0,+d,e|0,f|0)}function a2S(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(15,a|0,b|0,c|0,+d,e|0,f|0)}function a2T(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(16,a|0,b|0,c|0,+d,e|0,f|0)}function a2U(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(17,a|0,b|0,c|0,+d,e|0,f|0)}function a2V(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(18,a|0,b|0,c|0,+d,e|0,f|0)}function a2W(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;return+ag(19,a|0,b|0,c|0,+d,e|0,f|0)}function a2X(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;dI[a&1023](b|0,c|0,d|0,e|0)}function a2Y(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(0,a|0,b|0,c|0,d|0)}function a2Z(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(1,a|0,b|0,c|0,d|0)}function a2_(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(2,a|0,b|0,c|0,d|0)}function a2$(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(3,a|0,b|0,c|0,d|0)}function a20(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(4,a|0,b|0,c|0,d|0)}function a21(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(5,a|0,b|0,c|0,d|0)}function a22(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(6,a|0,b|0,c|0,d|0)}function a23(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(7,a|0,b|0,c|0,d|0)}function a24(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(8,a|0,b|0,c|0,d|0)}function a25(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(9,a|0,b|0,c|0,d|0)}function a26(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(10,a|0,b|0,c|0,d|0)}function a27(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(11,a|0,b|0,c|0,d|0)}function a28(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(12,a|0,b|0,c|0,d|0)}function a29(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(13,a|0,b|0,c|0,d|0)}function a3a(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(14,a|0,b|0,c|0,d|0)}function a3b(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(15,a|0,b|0,c|0,d|0)}function a3c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(16,a|0,b|0,c|0,d|0)}function a3d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(17,a|0,b|0,c|0,d|0)}function a3e(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(18,a|0,b|0,c|0,d|0)}function a3f(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ag(19,a|0,b|0,c|0,d|0)}function a3g(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ab(0)}function a3h(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ab(1);return 0}function a3i(a,b){a=a|0;b=+b;ab(2)}function a3j(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ab(3)}function a3k(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;k=+k;ab(4)}function a3l(a){a=a|0;ab(5)}function a3m(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;h=h|0;ab(6);return 0}function a3n(a,b){a=a|0;b=b|0;ab(7)}function a3o(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ab(8)}function a3p(a,b,c,d,e,f,g,h,i){a=+a;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;ab(9);return 0}function a3q(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ab(10)}function a3r(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;ab(11)}function a3s(a){a=a|0;ab(12);return 0}function a3t(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=h|0;i=+i;ab(13);return 0}function a3u(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=e|0;ab(14)}function a3v(a,b,c,d){a=+a;b=b|0;c=c|0;d=d|0;ab(15);return 0}function a3w(a,b,c,d){a=a|0;b=b|0;c=+c;d=d|0;ab(16)}function a3x(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ab(17)}function a3y(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;ab(18)}function a3z(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;g=g|0;ab(19);return 0}function a3A(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;ab(20);return 0}function a3B(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;ab(21)}function a3C(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;ab(22)}function a3D(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;ab(23);return 0}function a3E(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=+d;e=e|0;f=f|0;ab(24);return 0.0}function a3F(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;ab(25);return 0.0}function a3G(a,b,c,d,e){a=a|0;b=b|0;c=+c;d=d|0;e=e|0;ab(26);return 0.0}function a3H(a,b,c){a=+a;b=+b;c=+c;ab(27);return 0}function a3I(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ab(28)}function a3J(a,b,c){a=a|0;b=+b;c=c|0;ab(29);return 0}function a3K(a,b,c){a=a|0;b=b|0;c=c|0;ab(30);return 0}function a3L(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=+i;j=j|0;ab(31)}function a3M(a,b){a=a|0;b=+b;ab(32);return 0.0}function a3N(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=+e;ab(33);return 0}function a3O(a,b,c){a=a|0;b=+b;c=+c;ab(34)}function a3P(a,b,c){a=a|0;b=+b;c=c|0;ab(35)}function a3Q(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=+f;ab(36)}function a3R(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;ab(37)}function a3S(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ab(38)}function a3T(a,b,c,d){a=a|0;b=b|0;c=+c;d=+d;ab(39);return 0.0}function a3U(a,b,c){a=a|0;b=b|0;c=+c;ab(40);return 0}function a3V(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;ab(41);return 0}function a3W(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ab(42)}function a3X(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;ab(43)}function a3Y(a,b,c){a=a|0;b=b|0;c=c|0;ab(44);return 0.0}function a3Z(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ab(45);return 0}function a3_(a,b,c){a=a|0;b=b|0;c=+c;ab(46);return 0.0}function a3$(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ab(47);return 0.0}function a30(a,b,c){a=+a;b=b|0;c=c|0;ab(48);return 0}function a31(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ab(49);return 0.0}function a32(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;ab(50);return 0}function a33(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ab(51);return 0.0}function a34(a,b){a=a|0;b=+b;ab(52);return 0}function a35(a){a=+a;ab(53);return 0}function a36(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;ab(54)}function a37(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=+i;ab(55)}function a38(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;ab(56)}function a39(a){a=a|0;ab(57);return 0.0}function a4a(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;ab(58)}function a4b(a,b){a=a|0;b=b|0;ab(59);return 0}function a4c(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ab(60);return 0}function a4d(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ab(61);return 0}function a4e(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=+h;ab(62)}function a4f(a,b){a=a|0;b=b|0;ab(63);return 0.0}function a4g(a,b,c,d,e,f,g,h,i,j){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;h=+h;i=+i;j=+j;ab(64)}function a4h(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ab(65);return 0.0}function a4i(a,b,c,d){a=a|0;b=+b;c=c|0;d=+d;ab(66);return 0}function a4j(a,b,c,d){a=+a;b=+b;c=+c;d=+d;ab(67);return 0}function a4k(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=+g;h=+h;i=i|0;j=j|0;k=+k;ab(68)}function a4l(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;ab(69);return 0}function a4m(a,b,c){a=a|0;b=+b;c=+c;ab(70);return 0}function a4n(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ab(71)}function a4o(){ab(72);return 0}function a4p(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=f|0;g=g|0;ab(73)}function a4q(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=+f;g=g|0;h=h|0;i=i|0;ab(74);return 0}function a4r(a,b,c){a=a|0;b=b|0;c=c|0;ab(75)}function a4s(a,b){a=+a;b=+b;ab(76);return 0}function a4t(){ab(77)}function a4u(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ab(78);return 0}function a4v(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ab(79);return 0}function a4w(a,b,c){a=a|0;b=b|0;c=+c;ab(80)}function a4x(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;ab(81);return 0}function a4y(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;f=f|0;ab(82);return 0.0}function a4z(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ab(83)} +// EMSCRIPTEN_END_FUNCS +var co=[a3g,a3g,aDJ,a3g,aDK,a3g,aDL,a3g,aDM,a3g,aDN,a3g,aDO,a3g,aDP,a3g,aDQ,a3g,aDR,a3g,aDS,a3g,aDT,a3g,aDU,a3g,aDV,a3g,aDW,a3g,aDX,a3g,aDY,a3g,aDZ,a3g,aD_,a3g,aD$,a3g,aD0,a3g,ti,a3g,Ox,a3g,um,a3g,vb,a3g,we,a3g,SP,a3g,alH,a3g,aAx,a3g,rz,a3g,alK,a3g,alF,a3g,aAb,a3g,CW,a3g,al_,a3g,akv,a3g,arc,a3g,kj,a3g,axX,a3g,tr,a3g,aB5,a3g,rw,a3g,aB7,a3g,tB,a3g,aru,a3g,aAH,a3g,BN,a3g,i0,a3g,aDq,a3g,tz,a3g,aCz,a3g,wG,a3g,aDt,a3g,u6,a3g,u8,a3g,aB0,a3g,aDs,a3g,i2,a3g,ZU,a3g,aCq,a3g,jJ,a3g,RE,a3g,awK,a3g,H1,a3g,aCP,a3g,aCd,a3g,kg,a3g,UU,a3g,ma,a3g,axr,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g,a3g];var cp=[a3h,a3h,aD2,a3h,aD3,a3h,aD4,a3h,aD5,a3h,aD6,a3h,aD7,a3h,aD8,a3h,aD9,a3h,aEa,a3h,aEb,a3h,aEc,a3h,aEd,a3h,aEe,a3h,aEf,a3h,aEg,a3h,aEh,a3h,aEi,a3h,aEj,a3h,aEk,a3h,aEl,a3h,R_,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h,a3h];var cq=[a3i,a3i,aEn,a3i,aEo,a3i,aEp,a3i,aEq,a3i,aEr,a3i,aEs,a3i,aEt,a3i,aEu,a3i,aEv,a3i,aEw,a3i,aEx,a3i,aEy,a3i,aEz,a3i,aEA,a3i,aEB,a3i,aEC,a3i,aED,a3i,aEE,a3i,aEF,a3i,aEG,a3i,yK,a3i,XY,a3i,$t,a3i,vR,a3i,Qr,a3i,ab_,a3i,vS,a3i,aeo,a3i,JQ,a3i,$o,a3i,pK,a3i,T3,a3i,eW,a3i,xl,a3i,DV,a3i,akU,a3i,Bs,a3i,rh,a3i,sC,a3i,k1,a3i,yI,a3i,XS,a3i,G3,a3i,y7,a3i,aoH,a3i,LO,a3i,Zr,a3i,$C,a3i,pI,a3i,T6,a3i,xB,a3i,zc,a3i,DN,a3i,aAl,a3i,aBT,a3i,e_,a3i,yJ,a3i,g7,a3i,D5,a3i,om,a3i,_r,a3i,yQ,a3i,$U,a3i,mp,a3i,$I,a3i,fF,a3i,L_,a3i,_2,a3i,akb,a3i,D2,a3i,aaN,a3i,yP,a3i,Z3,a3i,Yq,a3i,ye,a3i,Jm,a3i,_3,a3i,IO,a3i,Cc,a3i,S5,a3i,Gg,a3i,_K,a3i,wU,a3i,Hd,a3i,jq,a3i,anp,a3i,Ef,a3i,Em,a3i,Kc,a3i,mm,a3i,tU,a3i,Ik,a3i,qb,a3i,Rb,a3i,XP,a3i,g$,a3i,adZ,a3i,D3,a3i,KE,a3i,eU,a3i,aaR,a3i,VX,a3i,qS,a3i,hG,a3i,nA,a3i,ahL,a3i,agn,a3i,y_,a3i,D0,a3i,Vb,a3i,w4,a3i,El,a3i,DM,a3i,hC,a3i,an9,a3i,FT,a3i,Hr,a3i,qj,a3i,FV,a3i,lL,a3i,FU,a3i,amf,a3i,_u,a3i,_R,a3i,Eo,a3i,L5,a3i,G_,a3i,Yf,a3i,L3,a3i,_4,a3i,_p,a3i,aiU,a3i,aos,a3i,$A,a3i,akV,a3i,_W,a3i,Yk,a3i,IP,a3i,ajL,a3i,$s,a3i,asf,a3i,_f,a3i,qG,a3i,Ea,a3i,Av,a3i,Px,a3i,$b,a3i,ho,a3i,pb,a3i,aiS,a3i,Ed,a3i,WT,a3i,q6,a3i,zh,a3i,L4,a3i,T1,a3i,wW,a3i,aip,a3i,aoe,a3i,aiq,a3i,ain,a3i,ahh,a3i,akS,a3i,S6,a3i,WN,a3i,Wo,a3i,apR,a3i,aio,a3i,oU,a3i,Jg,a3i,apS,a3i,abN,a3i,ac5,a3i,asp,a3i,nT,a3i,rr,a3i,_D,a3i,aaF,a3i,sD,a3i,zZ,a3i,ajK,a3i,Yb,a3i,ajk,a3i,DJ,a3i,aoa,a3i,_Q,a3i,alx,a3i,Ep,a3i,Bw,a3i,$Z,a3i,pU,a3i,nw,a3i,$g,a3i,Ys,a3i,Z7,a3i,Yg,a3i,y1,a3i,y5,a3i,mq,a3i,G$,a3i,gv,a3i,_S,a3i,akY,a3i,akL,a3i,aac,a3i,$v,a3i,Uf,a3i,nB,a3i,XU,a3i,jx,a3i,Dc,a3i,Kb,a3i,_n,a3i,aup,a3i,$B,a3i,_6,a3i,U7,a3i,po,a3i,px,a3i,auN,a3i,Eg,a3i,aaK,a3i,aaJ,a3i,AI,a3i,aen,a3i,asT,a3i,y6,a3i,$p,a3i,D$,a3i,ww,a3i,M2,a3i,aeh,a3i,JL,a3i,ak3,a3i,hh,a3i,eV,a3i,xq,a3i,_g,a3i,Z$,a3i,yd,a3i,Hf,a3i,aoQ,a3i,s$,a3i,aai,a3i,$i,a3i,ak_,a3i,zd,a3i,QO,a3i,$3,a3i,ZF,a3i,xU,a3i,XR,a3i,It,a3i,xo,a3i,yM,a3i,aj7,a3i,Lk,a3i,iM,a3i,Ta,a3i,ya,a3i,Uy,a3i,_k,a3i,rb,a3i,Ce,a3i,R1,a3i,Ei,a3i,acU,a3i,Hy,a3i,aad,a3i,G9,a3i,aam,a3i,awh,a3i,NE,a3i,aaO,a3i,g1,a3i,ab0,a3i,aiX,a3i,GZ,a3i,aod,a3i,aoN,a3i,abV,a3i,DB,a3i,Up,a3i,WS,a3i,IK,a3i,Zn,a3i,aav,a3i,YE,a3i,Wy,a3i,Ft,a3i,_C,a3i,LF,a3i,akZ,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i,a3i];var cr=[a3j,a3j,aEI,a3j,aEJ,a3j,aEK,a3j,aEL,a3j,aEM,a3j,aEN,a3j,aEO,a3j,aEP,a3j,aEQ,a3j,aER,a3j,aES,a3j,aET,a3j,aEU,a3j,aEV,a3j,aEW,a3j,aEX,a3j,aEY,a3j,aEZ,a3j,aE_,a3j,aE$,a3j,adK,a3j,to,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j,a3j];var cs=[a3k,a3k,aE1,a3k,aE2,a3k,aE3,a3k,aE4,a3k,aE5,a3k,aE6,a3k,aE7,a3k,aE8,a3k,aE9,a3k,aFa,a3k,aFb,a3k,aFc,a3k,aFd,a3k,aFe,a3k,aFf,a3k,aFg,a3k,aFh,a3k,aFi,a3k,aFj,a3k,aFk,a3k,tu,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k,a3k];var ct=[a3l,a3l,aFm,a3l,aFn,a3l,aFo,a3l,aFp,a3l,aFq,a3l,aFr,a3l,aFs,a3l,aFt,a3l,aFu,a3l,aFv,a3l,aFw,a3l,aFx,a3l,aFy,a3l,aFz,a3l,aFA,a3l,aFB,a3l,aFC,a3l,aFD,a3l,aFE,a3l,aFF,a3l,C2,a3l,Qs,a3l,Ig,a3l,apt,a3l,qQ,a3l,m4,a3l,auf,a3l,xM,a3l,auh,a3l,ank,a3l,aAh,a3l,ayd,a3l,ayF,a3l,azm,a3l,HZ,a3l,aAv,a3l,pz,a3l,awa,a3l,awz,a3l,m_,a3l,aDa,a3l,atR,a3l,lZ,a3l,xi,a3l,uH,a3l,Ka,a3l,aoF,a3l,atH,a3l,hV,a3l,BX,a3l,aAU,a3l,ayz,a3l,axt,a3l,wd,a3l,aqp,a3l,asn,a3l,atA,a3l,azB,a3l,atS,a3l,avN,a3l,auF,a3l,atL,a3l,any,a3l,ZV,a3l,amk,a3l,ao8,a3l,aok,a3l,aAG,a3l,auw,a3l,rs,a3l,an8,a3l,aDl,a3l,asZ,a3l,aB1,a3l,wm,a3l,nN,a3l,wF,a3l,auB,a3l,anU,a3l,aut,a3l,rW,a3l,Ic,a3l,EK,a3l,aht,a3l,Ip,a3l,axq,a3l,aCw,a3l,am9,a3l,axJ,a3l,aso,a3l,atX,a3l,at4,a3l,axh,a3l,adL,a3l,aqe,a3l,m3,a3l,Fx,a3l,ape,a3l,apL,a3l,aeZ,a3l,wa,a3l,av7,a3l,axl,a3l,axV,a3l,aBH,a3l,ayK,a3l,SM,a3l,tF,a3l,CS,a3l,aCK,a3l,adB,a3l,i6,a3l,aAg,a3l,asM,a3l,Tu,a3l,hU,a3l,ZC,a3l,CR,a3l,ST,a3l,aq8,a3l,arS,a3l,o1,a3l,nK,a3l,aCs,a3l,atz,a3l,Gd,a3l,BP,a3l,vZ,a3l,aAF,a3l,adT,a3l,axE,a3l,RU,a3l,ax9,a3l,ZE,a3l,au0,a3l,mJ,a3l,r4,a3l,jz,a3l,aBz,a3l,are,a3l,ax3,a3l,lW,a3l,apz,a3l,HX,a3l,asK,a3l,v9,a3l,gt,a3l,aA6,a3l,as8,a3l,aw0,a3l,F9,a3l,YI,a3l,apm,a3l,fI,a3l,jK,a3l,X0,a3l,B6,a3l,nE,a3l,$L,a3l,X5,a3l,ayr,a3l,SA,a3l,axd,a3l,ast,a3l,zG,a3l,acr,a3l,awn,a3l,awc,a3l,Ou,a3l,anA,a3l,l7,a3l,aui,a3l,aoj,a3l,ahf,a3l,auD,a3l,GR,a3l,alQ,a3l,atJ,a3l,aAJ,a3l,asc,a3l,axP,a3l,axo,a3l,W5,a3l,NQ,a3l,axI,a3l,azA,a3l,axW,a3l,aAQ,a3l,Dg,a3l,wA,a3l,ayD,a3l,aDk,a3l,Wt,a3l,aoV,a3l,j4,a3l,Mq,a3l,ajH,a3l,SO,a3l,atV,a3l,z0,a3l,aq9,a3l,au4,a3l,ald,a3l,SF,a3l,uu,a3l,PQ,a3l,Ju,a3l,oV,a3l,abc,a3l,adU,a3l,axG,a3l,atD,a3l,axM,a3l,avU,a3l,qi,a3l,I3,a3l,aq$,a3l,awU,a3l,aqH,a3l,aDj,a3l,am3,a3l,Jb,a3l,m1,a3l,g3,a3l,aye,a3l,avM,a3l,YK,a3l,azl,a3l,auG,a3l,aq5,a3l,fk,a3l,aqd,a3l,h5,a3l,vd,a3l,NV,a3l,apT,a3l,aAz,a3l,aeT,a3l,iK,a3l,jL,a3l,asX,a3l,ay2,a3l,ajn,a3l,aDb,a3l,NU,a3l,arW,a3l,aqf,a3l,aDf,a3l,k4,a3l,avV,a3l,aog,a3l,afb,a3l,arT,a3l,aBF,a3l,ays,a3l,aC9,a3l,aAf,a3l,anB,a3l,anK,a3l,apc,a3l,ML,a3l,axQ,a3l,LC,a3l,_V,a3l,atY,a3l,auP,a3l,aw5,a3l,VY,a3l,arV,a3l,axv,a3l,auL,a3l,axp,a3l,kp,a3l,apM,a3l,ayu,a3l,HS,a3l,as_,a3l,awA,a3l,arr,a3l,ao1,a3l,OZ,a3l,azJ,a3l,E9,a3l,agg,a3l,aA7,a3l,YN,a3l,aoi,a3l,UH,a3l,asV,a3l,Ca,a3l,aBs,a3l,aBo,a3l,H6,a3l,aw4,a3l,aCx,a3l,aqO,a3l,fn,a3l,az_,a3l,ayQ,a3l,OV,a3l,abI,a3l,aCc,a3l,aoW,a3l,au1,a3l,aCi,a3l,awW,a3l,mc,a3l,awf,a3l,vl,a3l,alS,a3l,as$,a3l,axc,a3l,aCW,a3l,aun,a3l,aoc,a3l,kH,a3l,apA,a3l,ayL,a3l,tI,a3l,Bc,a3l,adx,a3l,aqW,a3l,auo,a3l,az2,a3l,aDh,a3l,auz,a3l,aua,a3l,apJ,a3l,Le,a3l,aDA,a3l,I8,a3l,aml,a3l,ann,a3l,k3,a3l,aqn,a3l,au$,a3l,vV,a3l,aDy,a3l,asd,a3l,amG,a3l,adJ,a3l,anC,a3l,m0,a3l,aw6,a3l,rH,a3l,asE,a3l,asD,a3l,avD,a3l,aCI,a3l,YM,a3l,anE,a3l,OF,a3l,awl,a3l,aym,a3l,vf,a3l,SB,a3l,anI,a3l,JF,a3l,ayy,a3l,pM,a3l,ai0,a3l,avb,a3l,afg,a3l,axY,a3l,CV,a3l,au7,a3l,aqt,a3l,aCo,a3l,abi,a3l,amX,a3l,arf,a3l,aoG,a3l,Ie,a3l,auj,a3l,l9,a3l,as7,a3l,AL,a3l,aB9,a3l,am0,a3l,aAu,a3l,azK,a3l,gA,a3l,axj,a3l,atm,a3l,aCR,a3l,axC,a3l,atQ,a3l,ZJ,a3l,U_,a3l,Xh,a3l,aB3,a3l,aBt,a3l,acN,a3l,atM,a3l,rN,a3l,akQ,a3l,Xy,a3l,awy,a3l,atb,a3l,anv,a3l,aCu,a3l,aqY,a3l,anS,a3l,app,a3l,axf,a3l,apH,a3l,N5,a3l,arX,a3l,tH,a3l,awN,a3l,ay8,a3l,axN,a3l,avt,a3l,Mn,a3l,aBp,a3l,jr,a3l,jj,a3l,azV,a3l,anF,a3l,at2,a3l,anl,a3l,Ke,a3l,am5,a3l,at6,a3l,aCS,a3l,apN,a3l,PB,a3l,atZ,a3l,OR,a3l,aBJ,a3l,Uc,a3l,aA1,a3l,awI,a3l,as9,a3l,axn,a3l,Xc,a3l,aCl,a3l,N2,a3l,an0,a3l,atF,a3l,aCA,a3l,ayl,a3l,EA,a3l,arY,a3l,au_,a3l,$J,a3l,ayt,a3l,pP,a3l,atK,a3l,YQ,a3l,au8,a3l,QR,a3l,Fr,a3l,anh,a3l,apZ,a3l,aBv,a3l,aCL,a3l,avc,a3l,aB8,a3l,lM,a3l,avu,a3l,awB,a3l,apg,a3l,xK,a3l,asu,a3l,m5,a3l,apk,a3l,asQ,a3l,aB2,a3l,YJ,a3l,ez,a3l,yz,a3l,awY,a3l,aB_,a3l,aqq,a3l,ao6,a3l,asB,a3l,aAw,a3l,at8,a3l,aCr,a3l,arq,a3l,atk,a3l,axZ,a3l,auc,a3l,ay7,a3l,$M,a3l,Xz,a3l,Ow,a3l,an7,a3l,aAT,a3l,aCe,a3l,$e,a3l,aqP,a3l,aA5,a3l,atc,a3l,aw2,a3l,kB,a3l,avY,a3l,aCU,a3l,ax2,a3l,av_,a3l,amN,a3l,aCk,a3l,aCy,a3l,aCb,a3l,NR,a3l,aof,a3l,aoS,a3l,iQ,a3l,aCn,a3l,Pv,a3l,aw1,a3l,avW,a3l,aCB,a3l,akA,a3l,QM,a3l,ahO,a3l,az1,a3l,ay3,a3l,aBg,a3l,aw3,a3l,RF,a3l,az4,a3l,aBw,a3l,ayb,a3l,aCM,a3l,ayR,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l,a3l];var cu=[a3m,a3m,aFH,a3m,aFI,a3m,aFJ,a3m,aFK,a3m,aFL,a3m,aFM,a3m,aFN,a3m,aFO,a3m,aFP,a3m,aFQ,a3m,aFR,a3m,aFS,a3m,aFT,a3m,aFU,a3m,aFV,a3m,aFW,a3m,aFX,a3m,aFY,a3m,aFZ,a3m,aF_,a3m,J1,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m,a3m];var cv=[a3n,a3n,aF0,a3n,aF1,a3n,aF2,a3n,aF3,a3n,aF4,a3n,aF5,a3n,aF6,a3n,aF7,a3n,aF8,a3n,aF9,a3n,aGa,a3n,aGb,a3n,aGc,a3n,aGd,a3n,aGe,a3n,aGf,a3n,aGg,a3n,aGh,a3n,aGi,a3n,aGj,a3n,Ah,a3n,az3,a3n,aeD,a3n,J_,a3n,Hm,a3n,WW,a3n,x7,a3n,w7,a3n,z4,a3n,Oq,a3n,kl,a3n,KM,a3n,Rn,a3n,af6,a3n,Rz,a3n,Jr,a3n,acl,a3n,aiQ,a3n,acR,a3n,J9,a3n,AT,a3n,d1,a3n,lX,a3n,aoA,a3n,arK,a3n,acq,a3n,XK,a3n,t$,a3n,aCG,a3n,ut,a3n,pO,a3n,N_,a3n,XI,a3n,asz,a3n,Kh,a3n,gq,a3n,eX,a3n,sw,a3n,OO,a3n,gU,a3n,h_,a3n,auI,a3n,Od,a3n,zk,a3n,J2,a3n,D1,a3n,ad8,a3n,UX,a3n,UZ,a3n,In,a3n,OG,a3n,CK,a3n,S_,a3n,Sw,a3n,aiT,a3n,nl,a3n,xH,a3n,u4,a3n,zq,a3n,X6,a3n,ajd,a3n,Gw,a3n,wV,a3n,aho,a3n,qw,a3n,kb,a3n,w9,a3n,NI,a3n,tj,a3n,I4,a3n,HB,a3n,fG,a3n,sk,a3n,awX,a3n,P$,a3n,ay0,a3n,aeS,a3n,fU,a3n,aov,a3n,tw,a3n,pJ,a3n,aj9,a3n,wB,a3n,Mo,a3n,Ki,a3n,MJ,a3n,De,a3n,acn,a3n,Rs,a3n,$1,a3n,Sf,a3n,Bh,a3n,RB,a3n,Ol,a3n,Lc,a3n,hI,a3n,G1,a3n,aoq,a3n,iE,a3n,oa,a3n,agV,a3n,wg,a3n,awM,a3n,Ru,a3n,Oa,a3n,IA,a3n,ate,a3n,vw,a3n,_7,a3n,ri,a3n,Gp,a3n,aAI,a3n,WE,a3n,Fh,a3n,OT,a3n,ahS,a3n,xX,a3n,EJ,a3n,WG,a3n,mY,a3n,xQ,a3n,tE,a3n,Hc,a3n,ER,a3n,ui,a3n,YP,a3n,lH,a3n,EI,a3n,akx,a3n,C9,a3n,Xj,a3n,i4,a3n,Oz,a3n,$W,a3n,If,a3n,zg,a3n,asy,a3n,Cd,a3n,Zz,a3n,ary,a3n,mX,a3n,he,a3n,all,a3n,asw,a3n,Di,a3n,amK,a3n,K_,a3n,amB,a3n,pf,a3n,gS,a3n,fz,a3n,ai_,a3n,aal,a3n,_w,a3n,Cb,a3n,DC,a3n,qo,a3n,qr,a3n,Rq,a3n,D_,a3n,uk,a3n,eN,a3n,tC,a3n,lS,a3n,afJ,a3n,st,a3n,xS,a3n,eb,a3n,Km,a3n,x_,a3n,Ov,a3n,Iu,a3n,pS,a3n,afQ,a3n,aaZ,a3n,Tv,a3n,K6,a3n,TK,a3n,xf,a3n,t2,a3n,aqS,a3n,jn,a3n,Vf,a3n,aaY,a3n,atx,a3n,w1,a3n,gX,a3n,Xa,a3n,uS,a3n,aku,a3n,md,a3n,q8,a3n,qs,a3n,aw_,a3n,RK,a3n,qK,a3n,CE,a3n,qO,a3n,auS,a3n,AU,a3n,NN,a3n,us,a3n,aor,a3n,amr,a3n,alo,a3n,i5,a3n,ab8,a3n,Jz,a3n,sv,a3n,e1,a3n,d4,a3n,oq,a3n,ob,a3n,vB,a3n,$9,a3n,uv,a3n,mz,a3n,w$,a3n,adF,a3n,avv,a3n,UE,a3n,RV,a3n,e$,a3n,wx,a3n,U9,a3n,Ws,a3n,qm,a3n,RJ,a3n,E2,a3n,Nk,a3n,R9,a3n,Hh,a3n,KG,a3n,q3,a3n,ab6,a3n,aau,a3n,amV,a3n,abs,a3n,adk,a3n,alf,a3n,gm,a3n,aoD,a3n,Ub,a3n,HG,a3n,Bv,a3n,Nt,a3n,UN,a3n,BZ,a3n,Se,a3n,iF,a3n,V2,a3n,ajJ,a3n,Ue,a3n,l5,a3n,KK,a3n,JT,a3n,LV,a3n,rF,a3n,oQ,a3n,T2,a3n,Xs,a3n,Xu,a3n,Iy,a3n,SY,a3n,aoB,a3n,Dh,a3n,afa,a3n,jk,a3n,aqL,a3n,ap8,a3n,NZ,a3n,vm,a3n,IX,a3n,al8,a3n,yU,a3n,k9,a3n,Wc,a3n,so,a3n,alT,a3n,aaA,a3n,h3,a3n,pq,a3n,GF,a3n,h4,a3n,Su,a3n,Sm,a3n,Bq,a3n,pH,a3n,awg,a3n,Xq,a3n,lU,a3n,EE,a3n,o2,a3n,aoC,a3n,QI,a3n,Sv,a3n,PF,a3n,XQ,a3n,BY,a3n,eI,a3n,abD,a3n,o0,a3n,adS,a3n,V0,a3n,pu,a3n,akz,a3n,ac4,a3n,akH,a3n,aeb,a3n,v_,a3n,hX,a3n,sx,a3n,aB6,a3n,nY,a3n,akf,a3n,Cr,a3n,BE,a3n,EL,a3n,adR,a3n,I7,a3n,Vs,a3n,JR,a3n,mU,a3n,n7,a3n,aqF,a3n,ae9,a3n,ajl,a3n,W8,a3n,Du,a3n,s6,a3n,aAk,a3n,aqJ,a3n,Jj,a3n,aey,a3n,YC,a3n,Xn,a3n,rT,a3n,ak4,a3n,aqK,a3n,M9,a3n,H8,a3n,Qc,a3n,AP,a3n,wl,a3n,C3,a3n,u9,a3n,GL,a3n,ajx,a3n,Ts,a3n,J6,a3n,apr,a3n,si,a3n,k2,a3n,B8,a3n,arL,a3n,e2,a3n,_a,a3n,W3,a3n,jX,a3n,ayW,a3n,eF,a3n,q2,a3n,qF,a3n,ajr,a3n,_I,a3n,al9,a3n,aeu,a3n,KF,a3n,uV,a3n,uX,a3n,yc,a3n,ZP,a3n,aeJ,a3n,xZ,a3n,nn,a3n,Z9,a3n,aux,a3n,ao2,a3n,St,a3n,sA,a3n,jm,a3n,auY,a3n,I9,a3n,mS,a3n,g4,a3n,aAM,a3n,IM,a3n,T9,a3n,qE,a3n,pQ,a3n,aot,a3n,_m,a3n,Tj,a3n,mL,a3n,XJ,a3n,yg,a3n,Ye,a3n,UW,a3n,ZO,a3n,Cg,a3n,BU,a3n,Qn,a3n,FJ,a3n,Cm,a3n,my,a3n,aa9,a3n,TJ,a3n,aay,a3n,aoy,a3n,MP,a3n,lP,a3n,anM,a3n,B2,a3n,rn,a3n,aBm,a3n,X$,a3n,sp,a3n,t5,a3n,pj,a3n,ari,a3n,Xb,a3n,Fi,a3n,FB,a3n,T$,a3n,adV,a3n,FP,a3n,aa8,a3n,IC,a3n,afl,a3n,qH,a3n,S$,a3n,adf,a3n,sr,a3n,aou,a3n,YW,a3n,aeR,a3n,t9,a3n,api,a3n,aro,a3n,ac0,a3n,V1,a3n,aeH,a3n,Er,a3n,atT,a3n,_J,a3n,acE,a3n,VT,a3n,sV,a3n,azt,a3n,SD,a3n,mV,a3n,aer,a3n,wC,a3n,Dd,a3n,Rw,a3n,BL,a3n,ale,a3n,A9,a3n,aea,a3n,v$,a3n,h0,a3n,CU,a3n,kA,a3n,pt,a3n,vW,a3n,aBa,a3n,Yi,a3n,kK,a3n,Nx,a3n,Rm,a3n,Nz,a3n,l8,a3n,vT,a3n,ap9,a3n,af7,a3n,XL,a3n,YG,a3n,jH,a3n,I6,a3n,atr,a3n,mi,a3n,E1,a3n,aqU,a3n,rU,a3n,aoP,a3n,NK,a3n,hx,a3n,abf,a3n,ajG,a3n,ajA,a3n,apC,a3n,auq,a3n,abh,a3n,aon,a3n,alb,a3n,FI,a3n,ei,a3n,ac1,a3n,axL,a3n,AC,a3n,aqQ,a3n,uz,a3n,abY,a3n,H2,a3n,asS,a3n,d0,a3n,ZS,a3n,$4,a3n,h6,a3n,atj,a3n,Jq,a3n,alI,a3n,qN,a3n,ls,a3n,apW,a3n,B3,a3n,wc,a3n,avT,a3n,Tx,a3n,Q6,a3n,WL,a3n,HV,a3n,oY,a3n,aaD,a3n,anQ,a3n,gJ,a3n,ajW,a3n,aaU,a3n,v1,a3n,wM,a3n,YO,a3n,SV,a3n,aef,a3n,e4,a3n,akP,a3n,p_,a3n,j$,a3n,aA8,a3n,yX,a3n,abp,a3n,Xm,a3n,gN,a3n,l2,a3n,B4,a3n,afm,a3n,hE,a3n,Db,a3n,tZ,a3n,aa2,a3n,IT,a3n,CY,a3n,gR,a3n,ae$,a3n,amA,a3n,wL,a3n,Go,a3n,lT,a3n,g2,a3n,JG,a3n,fM,a3n,Pq,a3n,o3,a3n,BJ,a3n,IH,a3n,Nc,a3n,ao3,a3n,nJ,a3n,abl,a3n,aj1,a3n,wb,a3n,M8,a3n,_v,a3n,vs,a3n,aoz,a3n,ZZ,a3n,ro,a3n,v7,a3n,tY,a3n,aAe,a3n,abm,a3n,zT,a3n,Bp,a3n,afh,a3n,adH,a3n,vE,a3n,abC,a3n,alY,a3n,uf,a3n,aBb,a3n,eH,a3n,SX,a3n,lA,a3n,N7,a3n,CT,a3n,lR,a3n,arl,a3n,gY,a3n,adj,a3n,WQ,a3n,z_,a3n,N$,a3n,as0,a3n,adu,a3n,vu,a3n,B$,a3n,ajB,a3n,axu,a3n,W4,a3n,uD,a3n,aeB,a3n,Tw,a3n,wt,a3n,ZN,a3n,ac2,a3n,ac8,a3n,aqC,a3n,No,a3n,abU,a3n,awV,a3n,A5,a3n,nL,a3n,wn,a3n,rf,a3n,sm,a3n,ah1,a3n,oC,a3n,NP,a3n,rI,a3n,Hw,a3n,Qv,a3n,aBR,a3n,ajI,a3n,wP,a3n,aqu,a3n,Mk,a3n,abj,a3n,Cj,a3n,mj,a3n,Hs,a3n,hr,a3n,kc,a3n,an3,a3n,atE,a3n,A6,a3n,FK,a3n,p7,a3n,ny,a3n,nX,a3n,Jl,a3n,vX,a3n,afP,a3n,hP,a3n,B_,a3n,wy,a3n,Y3,a3n,Pi,a3n,UO,a3n,Ib,a3n,xx,a3n,Bx,a3n,lu,a3n,RT,a3n,rq,a3n,aBB,a3n,azd,a3n,vL,a3n,vg,a3n,qP,a3n,sG,a3n,Pr,a3n,apq,a3n,Zq,a3n,pL,a3n,aCh,a3n,n5,a3n,ayX,a3n,nd,a3n,XC,a3n,x5,a3n,hg,a3n,ahM,a3n,aa_,a3n,gl,a3n,xW,a3n,aqD,a3n,hY,a3n,sq,a3n,VF,a3n,aek,a3n,acF,a3n,Mp,a3n,abu,a3n,awT,a3n,hb,a3n,Tr,a3n,hK,a3n,Ud,a3n,qe,a3n,aCj,a3n,SZ,a3n,Nj,a3n,AX,a3n,WZ,a3n,OE,a3n,abb,a3n,als,a3n,nH,a3n,acp,a3n,VG,a3n,ae2,a3n,mv,a3n,MD,a3n,Us,a3n,Ng,a3n,qI,a3n,l$,a3n,jT,a3n,uc,a3n,Wk,a3n,afe,a3n,Ia,a3n,FS,a3n,Os,a3n,UP,a3n,anL,a3n,aqM,a3n,JP,a3n,gM,a3n,OS,a3n,ase,a3n,$Q,a3n,aco,a3n,Cz,a3n,aoO,a3n,adA,a3n,kY,a3n,g9,a3n,vK,a3n,an2,a3n,v4,a3n,$k,a3n,aeP,a3n,KC,a3n,C1,a3n,zC,a3n,azu,a3n,UK,a3n,eP,a3n,aqI,a3n,Y2,a3n,EH,a3n,HF,a3n,Vd,a3n,Hk,a3n,SI,a3n,PR,a3n,QV,a3n,ahj,a3n,Id,a3n,adG,a3n,arG,a3n,aA9,a3n,aqv,a3n,Gm,a3n,adz,a3n,ax8,a3n,N0,a3n,OM,a3n,GY,a3n,OP,a3n,Lz,a3n,Cw,a3n,t0,a3n,$G,a3n,pd,a3n,AJ,a3n,s1,a3n,ts,a3n,ni,a3n,np,a3n,adE,a3n,mM,a3n,azY,a3n,QH,a3n,SN,a3n,agk,a3n,N3,a3n,ak0,a3n,GA,a3n,aha,a3n,aqE,a3n,anO,a3n,aqx,a3n,aeA,a3n,le,a3n,nu,a3n,apI,a3n,wR,a3n,ub,a3n,Nn,a3n,L7,a3n,on,a3n,UL,a3n,gW,a3n,Ff,a3n,avp,a3n,abg,a3n,Bk,a3n,U1,a3n,Oi,a3n,x0,a3n,LS,a3n,aoo,a3n,aAE,a3n,aBl,a3n,WB,a3n,ab$,a3n,m2,a3n,WH,a3n,tx,a3n,aCm,a3n,akd,a3n,Bl,a3n,Nh,a3n,abk,a3n,Tt,a3n,avz,a3n,ou,a3n,Xv,a3n,Bb,a3n,ahX,a3n,ajz,a3n,ZY,a3n,Ri,a3n,nc,a3n,ew,a3n,aat,a3n,afC,a3n,ahE,a3n,Io,a3n,YH,a3n,n8,a3n,amZ,a3n,aCQ,a3n,qJ,a3n,aiy,a3n,iU,a3n,pG,a3n,B7,a3n,ae3,a3n,ajw,a3n,wv,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n,a3n];var cw=[a3o,a3o,aGl,a3o,aGm,a3o,aGn,a3o,aGo,a3o,aGp,a3o,aGq,a3o,aGr,a3o,aGs,a3o,aGt,a3o,aGu,a3o,aGv,a3o,aGw,a3o,aGx,a3o,aGy,a3o,aGz,a3o,aGA,a3o,aGB,a3o,aGC,a3o,aGD,a3o,aGE,a3o,te,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o,a3o];var cx=[a3p,a3p,aGG,a3p,aGH,a3p,aGI,a3p,aGJ,a3p,aGK,a3p,aGL,a3p,aGM,a3p,aGN,a3p,aGO,a3p,aGP,a3p,aGQ,a3p,aGR,a3p,aGS,a3p,aGT,a3p,aGU,a3p,aGV,a3p,aGW,a3p,aGX,a3p,aGY,a3p,aGZ,a3p,eg,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p,a3p];var cy=[a3q,a3q,aG$,a3q,aG0,a3q,aG1,a3q,aG2,a3q,aG3,a3q,aG4,a3q,aG5,a3q,aG6,a3q,aG7,a3q,aG8,a3q,aG9,a3q,aHa,a3q,aHb,a3q,aHc,a3q,aHd,a3q,aHe,a3q,aHf,a3q,aHg,a3q,aHh,a3q,aHi,a3q,ahs,a3q,iN,a3q,rX,a3q,acs,a3q,yA,a3q,_U,a3q,abd,a3q,FF,a3q,xF,a3q,n4,a3q,Jh,a3q,Xi,a3q,ae_,a3q,amm,a3q,gw,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q,a3q];var cz=[a3r,a3r,aHk,a3r,aHl,a3r,aHm,a3r,aHn,a3r,aHo,a3r,aHp,a3r,aHq,a3r,aHr,a3r,aHs,a3r,aHt,a3r,aHu,a3r,aHv,a3r,aHw,a3r,aHx,a3r,aHy,a3r,aHz,a3r,aHA,a3r,aHB,a3r,aHC,a3r,aHD,a3r,tf,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r,a3r];var cA=[a3s,a3s,aHF,a3s,aHG,a3s,aHH,a3s,aHI,a3s,aHJ,a3s,aHK,a3s,aHL,a3s,aHM,a3s,aHN,a3s,aHO,a3s,aHP,a3s,aHQ,a3s,aHR,a3s,aHS,a3s,aHT,a3s,aHU,a3s,aHV,a3s,aHW,a3s,aHX,a3s,aHY,a3s,M7,a3s,afS,a3s,aj0,a3s,JZ,a3s,PK,a3s,WD,a3s,ad0,a3s,lj,a3s,g6,a3s,ayx,a3s,FO,a3s,aa$,a3s,j7,a3s,e5,a3s,f8,a3s,Dq,a3s,x6,a3s,kR,a3s,IU,a3s,lr,a3s,Mf,a3s,wZ,a3s,ic,a3s,aiA,a3s,ai$,a3s,kG,a3s,Uu,a3s,q1,a3s,fY,a3s,oc,a3s,CO,a3s,rl,a3s,e6,a3s,aaL,a3s,Qa,a3s,qc,a3s,RA,a3s,Fb,a3s,af5,a3s,BG,a3s,Zw,a3s,sl,a3s,x2,a3s,mW,a3s,IR,a3s,Zh,a3s,jP,a3s,amx,a3s,hf,a3s,hl,a3s,sK,a3s,sQ,a3s,aj2,a3s,sI,a3s,PY,a3s,ahx,a3s,zp,a3s,Qi,a3s,vA,a3s,U5,a3s,Do,a3s,jC,a3s,PZ,a3s,_9,a3s,avk,a3s,hs,a3s,zv,a3s,hi,a3s,HE,a3s,Wd,a3s,PT,a3s,Vh,a3s,ss,a3s,KJ,a3s,alU,a3s,Fu,a3s,qZ,a3s,l1,a3s,ai7,a3s,arO,a3s,pZ,a3s,afs,a3s,Z8,a3s,lb,a3s,uh,a3s,Ad,a3s,af3,a3s,Hx,a3s,add,a3s,kL,a3s,fT,a3s,hM,a3s,nx,a3s,GJ,a3s,ht,a3s,S8,a3s,C5,a3s,ahi,a3s,Aj,a3s,Sk,a3s,sf,a3s,arE,a3s,Bz,a3s,W$,a3s,Or,a3s,oj,a3s,Ze,a3s,rG,a3s,Rl,a3s,I1,a3s,amW,a3s,K2,a3s,lc,a3s,CG,a3s,pg,a3s,T5,a3s,f_,a3s,aeI,a3s,x1,a3s,afE,a3s,ud,a3s,mI,a3s,aly,a3s,wX,a3s,HH,a3s,Tp,a3s,KD,a3s,qq,a3s,agE,a3s,agu,a3s,CQ,a3s,Uo,a3s,sc,a3s,mA,a3s,akt,a3s,afn,a3s,FX,a3s,gO,a3s,I$,a3s,fc,a3s,aBV,a3s,kT,a3s,TG,a3s,MY,a3s,mC,a3s,Qb,a3s,MA,a3s,vh,a3s,aia,a3s,akn,a3s,uQ,a3s,Cu,a3s,Me,a3s,afW,a3s,mG,a3s,agO,a3s,qU,a3s,mx,a3s,M5,a3s,pc,a3s,VB,a3s,ot,a3s,T4,a3s,wQ,a3s,amF,a3s,KI,a3s,zz,a3s,tN,a3s,io,a3s,rV,a3s,Hi,a3s,ug,a3s,BD,a3s,Aq,a3s,aeL,a3s,PW,a3s,n0,a3s,t_,a3s,auM,a3s,eK,a3s,vG,a3s,wS,a3s,kS,a3s,ajZ,a3s,Lt,a3s,Sc,a3s,zy,a3s,LQ,a3s,ala,a3s,aiG,a3s,Ni,a3s,v3,a3s,hT,a3s,Es,a3s,ib,a3s,HK,a3s,hn,a3s,Tf,a3s,abB,a3s,vJ,a3s,n2,a3s,afD,a3s,PP,a3s,r7,a3s,Gc,a3s,aj6,a3s,aeK,a3s,Uk,a3s,JY,a3s,f$,a3s,afv,a3s,Ab,a3s,w6,a3s,HN,a3s,zO,a3s,f0,a3s,pl,a3s,hw,a3s,KU,a3s,CB,a3s,aqB,a3s,avF,a3s,Al,a3s,OC,a3s,Et,a3s,Pa,a3s,GT,a3s,So,a3s,wY,a3s,MW,a3s,nV,a3s,aiH,a3s,yL,a3s,DU,a3s,VE,a3s,aiK,a3s,lo,a3s,afu,a3s,Bg,a3s,aem,a3s,aeF,a3s,_y,a3s,ep,a3s,Df,a3s,oM,a3s,awP,a3s,af2,a3s,tL,a3s,ako,a3s,N9,a3s,zs,a3s,QF,a3s,ag0,a3s,Kn,a3s,lY,a3s,J$,a3s,Ti,a3s,TS,a3s,JJ,a3s,abQ,a3s,IV,a3s,Ai,a3s,oF,a3s,uC,a3s,ft,a3s,TY,a3s,r3,a3s,aiN,a3s,fe,a3s,sh,a3s,Si,a3s,tP,a3s,adl,a3s,L6,a3s,yH,a3s,Va,a3s,sj,a3s,Ht,a3s,Y8,a3s,n1,a3s,IZ,a3s,op,a3s,aqy,a3s,adq,a3s,j5,a3s,DI,a3s,oh,a3s,ue,a3s,II,a3s,azv,a3s,ne,a3s,adw,a3s,$F,a3s,akl,a3s,Nw,a3s,ka,a3s,os,a3s,adh,a3s,EN,a3s,L8,a3s,arg,a3s,QB,a3s,aj$,a3s,Z1,a3s,g8,a3s,aki,a3s,agy,a3s,Qm,a3s,e3,a3s,ow,a3s,oA,a3s,IY,a3s,XM,a3s,jY,a3s,sJ,a3s,Nv,a3s,Lw,a3s,qn,a3s,ES,a3s,ad3,a3s,oi,a3s,XA,a3s,WF,a3s,p0,a3s,Um,a3s,p1,a3s,sb,a3s,adn,a3s,yi,a3s,xA,a3s,abW,a3s,alA,a3s,KA,a3s,E7,a3s,Pg,a3s,Ay,a3s,fw,a3s,e9,a3s,I0,a3s,vr,a3s,DS,a3s,WR,a3s,aoJ,a3s,afX,a3s,_e,a3s,ua,a3s,zu,a3s,akF,a3s,afo,a3s,nU,a3s,yk,a3s,tJ,a3s,_c,a3s,aix,a3s,p8,a3s,Ql,a3s,mO,a3s,Tn,a3s,aa0,a3s,aja,a3s,aqX,a3s,t4,a3s,Mz,a3s,gQ,a3s,gD,a3s,r2,a3s,Zf,a3s,VC,a3s,vt,a3s,KH,a3s,$_,a3s,$0,a3s,OQ,a3s,tT,a3s,kX,a3s,hk,a3s,$H,a3s,rp,a3s,Pn,a3s,gh,a3s,am7,a3s,MZ,a3s,lD,a3s,$V,a3s,Na,a3s,zM,a3s,p$,a3s,amw,a3s,is,a3s,aah,a3s,Vj,a3s,x3,a3s,Ez,a3s,Li,a3s,qf,a3s,vH,a3s,sn,a3s,lm,a3s,WI,a3s,alB,a3s,H$,a3s,P8,a3s,aft,a3s,ag4,a3s,Qj,a3s,asm,a3s,Yy,a3s,I2,a3s,q0,a3s,uK,a3s,aeN,a3s,aj_,a3s,f3,a3s,ahW,a3s,tR,a3s,Sj,a3s,ok,a3s,i_,a3s,lF,a3s,M6,a3s,ab9,a3s,jO,a3s,Hq,a3s,Hj,a3s,oo,a3s,ad_,a3s,ku,a3s,mt,a3s,jp,a3s,CP,a3s,aeG,a3s,i3,a3s,oB,a3s,pv,a3s,Ae,a3s,aw9,a3s,acd,a3s,alC,a3s,amq,a3s,U0,a3s,Ro,a3s,ph,a3s,NH,a3s,w_,a3s,Pc,a3s,as5,a3s,vN,a3s,SW,a3s,ams,a3s,h8,a3s,asG,a3s,R6,a3s,sy,a3s,RC,a3s,fd,a3s,VK,a3s,an4,a3s,Ss,a3s,rc,a3s,hL,a3s,Vo,a3s,U$,a3s,fv,a3s,ack,a3s,acm,a3s,_1,a3s,qL,a3s,ad4,a3s,R7,a3s,af1,a3s,xu,a3s,By,a3s,r5,a3s,adb,a3s,iz,a3s,afB,a3s,akj,a3s,akp,a3s,g5,a3s,Nf,a3s,ge,a3s,BK,a3s,EY,a3s,apB,a3s,gF,a3s,Y5,a3s,YL,a3s,azw,a3s,ajO,a3s,eY,a3s,hF,a3s,ach,a3s,Vp,a3s,avE,a3s,TD,a3s,amo,a3s,s0,a3s,lx,a3s,PV,a3s,vq,a3s,amy,a3s,aqG,a3s,uW,a3s,kU,a3s,pA,a3s,agS,a3s,B5,a3s,tW,a3s,o6,a3s,hy,a3s,tQ,a3s,xp,a3s,F4,a3s,jd,a3s,HU,a3s,n_,a3s,mw,a3s,azG,a3s,GU,a3s,iq,a3s,Vc,a3s,FR,a3s,Yn,a3s,qx,a3s,acB,a3s,$r,a3s,aba,a3s,_d,a3s,alw,a3s,J0,a3s,ar2,a3s,A1,a3s,ed,a3s,Oj,a3s,vD,a3s,ly,a3s,eM,a3s,aaE,a3s,gd,a3s,TQ,a3s,Cp,a3s,ayh,a3s,P3,a3s,qY,a3s,zQ,a3s,_G,a3s,atp,a3s,Aa,a3s,EZ,a3s,Wj,a3s,$h,a3s,auK,a3s,oP,a3s,sz,a3s,zL,a3s,O4,a3s,VR,a3s,aBP,a3s,Ak,a3s,afp,a3s,aoI,a3s,jD,a3s,PX,a3s,TT,a3s,VH,a3s,Wh,a3s,pm,a3s,ul,a3s,akR,a3s,sd,a3s,t3,a3s,Aw,a3s,Rv,a3s,eL,a3s,aBx,a3s,iB,a3s,R8,a3s,zj,a3s,Dr,a3s,Ux,a3s,vz,a3s,nF,a3s,Ph,a3s,Pb,a3s,ng,a3s,w2,a3s,ace,a3s,CD,a3s,aA_,a3s,h2,a3s,akg,a3s,M4,a3s,L9,a3s,Ug,a3s,jS,a3s,ac$,a3s,lG,a3s,Iz,a3s,fQ,a3s,Ej,a3s,Q3,a3s,An,a3s,Jn,a3s,Pf,a3s,Nb,a3s,PU,a3s,O7,a3s,Zj,a3s,auZ,a3s,gG,a3s,eQ,a3s,SE,a3s,zr,a3s,HL,a3s,xz,a3s,alu,a3s,Td,a3s,IL,a3s,ajY,a3s,tS,a3s,pw,a3s,Y6,a3s,kV,a3s,hp,a3s,K$,a3s,hd,a3s,Cy,a3s,al3,a3s,gK,a3s,afw,a3s,MU,a3s,gC,a3s,oe,a3s,Ny,a3s,j_,a3s,agX,a3s,d_,a3s,ajM,a3s,$S,a3s,vQ,a3s,fZ,a3s,hc,a3s,f9,a3s,Cx,a3s,Pd,a3s,oD,a3s,Br,a3s,JB,a3s,aiZ,a3s,ahA,a3s,U2,a3s,YA,a3s,akk,a3s,arN,a3s,q7,a3s,p3,a3s,aiF,a3s,WU,a3s,Ar,a3s,qh,a3s,Nl,a3s,En,a3s,Uv,a3s,adc,a3s,amz,a3s,qv,a3s,wz,a3s,kf,a3s,Tb,a3s,amD,a3s,U6,a3s,fb,a3s,Mj,a3s,wu,a3s,zE,a3s,GM,a3s,QA,a3s,W_,a3s,_T,a3s,Xt,a3s,gI,a3s,Bj,a3s,tX,a3s,agM,a3s,_8,a3s,kd,a3s,Ry,a3s,W6,a3s,fR,a3s,wj,a3s,rg,a3s,aej,a3s,w0,a3s,oy,a3s,Qh,a3s,sF,a3s,kh,a3s,ag7,a3s,av8,a3s,abP,a3s,ayS,a3s,LM,a3s,adi,a3s,Rp,a3s,nC,a3s,fh,a3s,Am,a3s,ON,a3s,VL,a3s,XE,a3s,Kw,a3s,ac_,a3s,oG,a3s,FW,a3s,avj,a3s,t6,a3s,On,a3s,ahB,a3s,Qg,a3s,t1,a3s,Ap,a3s,r8,a3s,Pe,a3s,Ci,a3s,ab4,a3s,CL,a3s,avI,a3s,aeV,a3s,VD,a3s,X8,a3s,GN,a3s,f1,a3s,P5,a3s,Yu,a3s,ff,a3s,agU,a3s,Ex,a3s,Ns,a3s,ga,a3s,aiD,a3s,aep,a3s,To,a3s,U4,a3s,FQ,a3s,zt,a3s,Vu,a3s,acb,a3s,aBu,a3s,GE,a3s,xg,a3s,nm,a3s,R$,a3s,Yt,a3s,Qe,a3s,y0,a3s,an1,a3s,li,a3s,mh,a3s,ml,a3s,OI,a3s,aBf,a3s,p5,a3s,HY,a3s,ayT,a3s,kQ,a3s,fg,a3s,al5,a3s,P_,a3s,Dn,a3s,aAD,a3s,DH,a3s,vI,a3s,RR,a3s,azI,a3s,C$,a3s,aar,a3s,Wi,a3s,JE,a3s,rd,a3s,Zy,a3s,qA,a3s,TH,a3s,aao,a3s,aez,a3s,Zc,a3s,Vq,a3s,adp,a3s,agK,a3s,ai6,a3s,gP,a3s,ar_,a3s,Uw,a3s,HD,a3s,nk,a3s,aaG,a3s,Ym,a3s,et,a3s,agJ,a3s,t7,a3s,Ey,a3s,aBS,a3s,Ma,a3s,CM,a3s,im,a3s,IJ,a3s,W0,a3s,ad9,a3s,Yx,a3s,fs,a3s,BF,a3s,nv,a3s,VS,a3s,ajT,a3s,tM,a3s,lg,a3s,ar1,a3s,Fc,a3s,xV,a3s,eO,a3s,gZ,a3s,arJ,a3s,py,a3s,axx,a3s,Y7,a3s,sB,a3s,aed,a3s,ef,a3s,afF,a3s,Zg,a3s,yl,a3s,ajP,a3s,XD,a3s,aaV,a3s,ET,a3s,j1,a3s,Ul,a3s,e0,a3s,od,a3s,abS,a3s,CN,a3s,U8,a3s,Sd,a3s,Kr,a3s,Z_,a3s,lh,a3s,DG,a3s,aex,a3s,qp,a3s,JW,a3s,uN,a3s,akm,a3s,Fa,a3s,ax_,a3s,acg,a3s,ar$,a3s,ln,a3s,az6,a3s,asH,a3s,afx,a3s,Tl,a3s,JU,a3s,ql,a3s,TX,a3s,Sl,a3s,xs,a3s,ys,a3s,Hn,a3s,$T,a3s,ad5,a3s,J5,a3s,Tq,a3s,arh,a3s,aAi,a3s,vv,a3s,agI,a3s,Ne,a3s,agz,a3s,Mg,a3s,agR,a3s,P2,a3s,o9,a3s,anV,a3s,Bd,a3s,Yl,a3s,aaI,a3s,ak6,a3s,Sr,a3s,HC,a3s,Mw,a3s,x4,a3s,Da,a3s,Vr,a3s,Pk,a3s,aaz,a3s,arM,a3s,iA,a3s,Zb,a3s,Vz,a3s,xY,a3s,MX,a3s,mD,a3s,Lx,a3s,zw,a3s,KS,a3s,o_,a3s,uO,a3s,lk,a3s,M_,a3s,V5,a3s,aif,a3s,S1,a3s,asY,a3s,ir,a3s,ar3,a3s,TW,a3s,ks,a3s,hJ,a3s,_o,a3s,ayV,a3s,az5,a3s,F8,a3s,fV,a3s,NG,a3s,ayP,a3s,ayU,a3s,p4,a3s,ake,a3s,Uq,a3s,amp,a3s,sa,a3s,agp,a3s,WX,a3s,DF,a3s,ac9,a3s,Kz,a3s,arj,a3s,vU,a3s,aiV,a3s,ij,a3s,Zi,a3s,ado,a3s,re,a3s,ad1,a3s,Bm,a3s,agx,a3s,no,a3s,Qd,a3s,Za,a3s,WJ,a3s,Wz,a3s,ag_,a3s,avg,a3s,CJ,a3s,acf,a3s,pp,a3s,abX,a3s,nz,a3s,q5,a3s,ik,a3s,og,a3s,hD,a3s,al2,a3s,ig,a3s,Rk,a3s,Rr,a3s,GH,a3s,P4,a3s,apu,a3s,D4,a3s,VA,a3s,P7,a3s,aiI,a3s,Zo,a3s,Sg,a3s,Ls,a3s,Ve,a3s,$R,a3s,Ho,a3s,Ew,a3s,Po,a3s,as6,a3s,acT,a3s,ab2,a3s,pR,a3s,gV,a3s,lp,a3s,hH,a3s,aec,a3s,ll,a3s,aiY,a3s,$7,a3s,XO,a3s,axb,a3s,ox,a3s,Mc,a3s,Oo,a3s,ii,a3s,zB,a3s,aaj,a3s,aAB,a3s,azO,a3s,Oh,a3s,MV,a3s,Ok,a3s,LP,a3s,Vx,a3s,arZ,a3s,Vi,a3s,aka,a3s,iv,a3s,aeM,a3s,Vm,a3s,Nd,a3s,P9,a3s,Rt,a3s,Ev,a3s,KN,a3s,ie,a3s,avL,a3s,Wa,a3s,afL,a3s,Kt,a3s,vM,a3s,aaQ,a3s,q4,a3s,pW,a3s,aa1,a3s,gH,a3s,p2,a3s,JV,a3s,akh,a3s,azN,a3s,Md,a3s,F6,a3s,agW,a3s,HM,a3s,Q0,a3s,HA,a3s,aaW,a3s,aag,a3s,Mh,a3s,lq,a3s,M0,a3s,Ky,a3s,BH,a3s,aci,a3s,Nq,a3s,Ua,a3s,ay9,a3s,ag8,a3s,KV,a3s,akc,a3s,agL,a3s,Nm,a3s,wp,a3s,ag6,a3s,azH,a3s,KP,a3s,Om,a3s,azM,a3s,axz,a3s,acx,a3s,abR,a3s,agd,a3s,pn,a3s,kM,a3s,$$,a3s,H0,a3s,aes,a3s,Mv,a3s,M$,a3s,asF,a3s,ajQ,a3s,Vk,a3s,ag5,a3s,fj,a3s,Rx,a3s,pi,a3s,$X,a3s,afy,a3s,ade,a3s,yW,a3s,Bi,a3s,Qk,a3s,Qf,a3s,al6,a3s,IB,a3s,afz,a3s,At,a3s,BR,a3s,oE,a3s,Bo,a3s,BC,a3s,ark,a3s,acC,a3s,GB,a3s,alr,a3s,EQ,a3s,ag3,a3s,Y0,a3s,acZ,a3s,ap1,a3s,ajF,a3s,Tm,a3s,aBe,a3s,ar0,a3s,Eb,a3s,xC,a3s,tk,a3s,F_,a3s,aev,a3s,q9,a3s,KT,a3s,aeE,a3s,KL,a3s,sR,a3s,Bn,a3s,LN,a3s,il,a3s,Z0,a3s,sg,a3s,K3,a3s,Cv,a3s,GV,a3s,pk,a3s,aeC,a3s,Fd,a3s,ad2,a3s,mT,a3s,su,a3s,eT,a3s,jB,a3s,UT,a3s,mu,a3s,PS,a3s,Hg,a3s,auJ,a3s,$E,a3s,Vw,a3s,tO,a3s,gL,a3s,A$,a3s,ke,a3s,AS,a3s,T7,a3s,akD,a3s,agF,a3s,Hu,a3s,Sb,a3s,aiJ,a3s,G0,a3s,Z4,a3s,Y4,a3s,t8,a3s,gf,a3s,VJ,a3s,mE,a3s,YF,a3s,kW,a3s,ab7,a3s,ato,a3s,abO,a3s,Kx,a3s,PO,a3s,aiM,a3s,vC,a3s,F3,a3s,adr,a3s,ag2,a3s,abt,a3s,aas,a3s,aiz,a3s,N4,a3s,aaH,a3s,axa,a3s,ayi,a3s,KZ,a3s,Y1,a3s,Z6,a3s,agT,a3s,nZ,a3s,zx,a3s,Q4,a3s,Sh,a3s,jA,a3s,TV,a3s,ax1,a3s,Lm,a3s,aAA,a3s,Ko,a3s,ol,a3s,Op,a3s,agQ,a3s,jW,a3s,mF,a3s,Ks,a3s,HJ,a3s,avd,a3s,JK,a3s,Uj,a3s,Yv,a3s,avO,a3s,aAP,a3s,as4,a3s,ze,a3s,YD,a3s,XB,a3s,Kp,a3s,O9,a3s,Hl,a3s,afA,a3s,se,a3s,aoK,a3s,aA$,a3s,kt,a3s,sP,a3s,vp,a3s,hv,a3s,Vg,a3s,ajU,a3s,acY,a3s,aaP,a3s,ad7,a3s,awb,a3s,JX,a3s,p6,a3s,ac3,a3s,qd,a3s,agP,a3s,aiL,a3s,Yh,a3s,WP,a3s,agD,a3s,fX,a3s,lt,a3s,Fm,a3s,M1,a3s,x8,a3s,KQ,a3s,amv,a3s,zA,a3s,gE,a3s,kO,a3s,Ag,a3s,uY,a3s,_x,a3s,avh,a3s,ak7,a3s,alD,a3s,Py,a3s,afO,a3s,E_,a3s,F$,a3s,ac7,a3s,aaX,a3s,afr,a3s,j9,a3s,awO,a3s,T8,a3s,CA,a3s,Sq,a3s,ak1,a3s,apf,a3s,Au,a3s,akG,a3s,r1,a3s,jo,a3s,ak2,a3s,Ix,a3s,aAZ,a3s,RL,a3s,Zd,a3s,O6,a3s,asW,a3s,Ku,a3s,Ao,a3s,Nr,a3s,uI,a3s,aak,a3s,sE,a3s,xw,a3s,Kv,a3s,JA,a3s,aaf,a3s,yb,a3s,Mi,a3s,BI,a3s,gT,a3s,P6,a3s,ag1,a3s,aAY,a3s,TU,a3s,aDz,a3s,fS,a3s,aca,a3s,Fe,a3s,Vv,a3s,zm,a3s,XH,a3s,Ax,a3s,xv,a3s,aaq,a3s,ip,a3s,ad$,a3s,TC,a3s,ajR,a3s,KO,a3s,fi,a3s,asl,a3s,P1,a3s,apd,a3s,abT,a3s,oO,a3s,VP,a3s,Np,a3s,$2,a3s,r_,a3s,aiW,a3s,Vt,a3s,Fk,a3s,iZ,a3s,BA,a3s,V6,a3s,aic,a3s,it,a3s,hj,a3s,Zp,a3s,QE,a3s,q_,a3s,ai9,a3s,BB,a3s,pX,a3s,E8,a3s,qt,a3s,acy,a3s,JH,a3s,Vl,a3s,lf,a3s,aj8,a3s,aby,a3s,Q$,a3s,S9,a3s,ahy,a3s,mk,a3s,Jo,a3s,of,a3s,aw8,a3s,acj,a3s,Vy,a3s,r9,a3s,alz,a3s,Zt,a3s,afV,a3s,q$,a3s,Y9,a3s,as2,a3s,yh,a3s,Sp,a3s,RI,a3s,NC,a3s,ada,a3s,KR,a3s,aj4,a3s,ld,a3s,ak8,a3s,YB,a3s,vF,a3s,awd,a3s,Hv,a3s,hu,a3s,CC,a3s,av9,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s,a3s];var cB=[a3t,a3t,aH_,a3t,aH$,a3t,aH0,a3t,aH1,a3t,aH2,a3t,aH3,a3t,aH4,a3t,aH5,a3t,aH6,a3t,aH7,a3t,aH8,a3t,aH9,a3t,aIa,a3t,aIb,a3t,aIc,a3t,aId,a3t,aIe,a3t,aIf,a3t,aIg,a3t,aIh,a3t,S0,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t,a3t];var cC=[a3u,a3u,aIj,a3u,aIk,a3u,aIl,a3u,aIm,a3u,aIn,a3u,aIo,a3u,aIp,a3u,aIq,a3u,aIr,a3u,aIs,a3u,aIt,a3u,aIu,a3u,aIv,a3u,aIw,a3u,aIx,a3u,aIy,a3u,aIz,a3u,aIA,a3u,aIB,a3u,aIC,a3u,eD,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u,a3u];var cD=[a3v,a3v,aIE,a3v,aIF,a3v,aIG,a3v,aIH,a3v,aII,a3v,aIJ,a3v,aIK,a3v,aIL,a3v,aIM,a3v,aIN,a3v,aIO,a3v,aIP,a3v,aIQ,a3v,aIR,a3v,aIS,a3v,aIT,a3v,aIU,a3v,aIV,a3v,aIW,a3v,aIX,a3v,pC,a3v,YY,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v,a3v];var cE=[a3w,a3w,aIZ,a3w,aI_,a3w,aI$,a3w,aI0,a3w,aI1,a3w,aI2,a3w,aI3,a3w,aI4,a3w,aI5,a3w,aI6,a3w,aI7,a3w,aI8,a3w,aI9,a3w,aJa,a3w,aJb,a3w,aJc,a3w,aJd,a3w,aJe,a3w,aJf,a3w,aJg,a3w,aqZ,a3w,_0,a3w,Wv,a3w,yp,a3w,abG,a3w,Ii,a3w,eu,a3w,aa5,a3w,rQ,a3w,anW,a3w,ao9,a3w,apv,a3w,apE,a3w,m7,a3w,adN,a3w,wI,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w,a3w];var cF=[a3x,a3x,aJi,a3x,aJj,a3x,aJk,a3x,aJl,a3x,aJm,a3x,aJn,a3x,aJo,a3x,aJp,a3x,aJq,a3x,aJr,a3x,aJs,a3x,aJt,a3x,aJu,a3x,aJv,a3x,aJw,a3x,aJx,a3x,aJy,a3x,aJz,a3x,aJA,a3x,aJB,a3x,A7,a3x,Be,a3x,abn,a3x,afc,a3x,abz,a3x,afM,a3x,a3x,a3x,a3x,a3x,a3x,a3x,a3x,a3x,a3x,a3x];var cG=[a3y,a3y,aJD,a3y,aJE,a3y,aJF,a3y,aJG,a3y,aJH,a3y,aJI,a3y,aJJ,a3y,aJK,a3y,aJL,a3y,aJM,a3y,aJN,a3y,aJO,a3y,aJP,a3y,aJQ,a3y,aJR,a3y,aJS,a3y,aJT,a3y,aJU,a3y,aJV,a3y,aJW,a3y,_X,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y,a3y];var cH=[a3z,a3z,aJY,a3z,aJZ,a3z,aJ_,a3z,aJ$,a3z,aJ0,a3z,aJ1,a3z,aJ2,a3z,aJ3,a3z,aJ4,a3z,aJ5,a3z,aJ6,a3z,aJ7,a3z,aJ8,a3z,aJ9,a3z,aKa,a3z,aKb,a3z,aKc,a3z,aKd,a3z,aKe,a3z,aKf,a3z,PM,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z,a3z];var cI=[a3A,a3A,aKh,a3A,aKi,a3A,aKj,a3A,aKk,a3A,aKl,a3A,aKm,a3A,aKn,a3A,aKo,a3A,aKp,a3A,aKq,a3A,aKr,a3A,aKs,a3A,aKt,a3A,aKu,a3A,aKv,a3A,aKw,a3A,aKx,a3A,aKy,a3A,aKz,a3A,aKA,a3A,Je,a3A,aeX,a3A,nQ,a3A,Xf,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A,a3A];var cJ=[a3B,a3B,aKC,a3B,aKD,a3B,aKE,a3B,aKF,a3B,aKG,a3B,aKH,a3B,aKI,a3B,aKJ,a3B,aKK,a3B,aKL,a3B,aKM,a3B,aKN,a3B,aKO,a3B,aKP,a3B,aKQ,a3B,aKR,a3B,aKS,a3B,aKT,a3B,aKU,a3B,aKV,a3B,LU,a3B,ju,a3B,xc,a3B,yx,a3B,FN,a3B,ah5,a3B,a3B,a3B,a3B,a3B,a3B,a3B,a3B,a3B,a3B,a3B];var cK=[a3C,a3C,aKX,a3C,aKY,a3C,aKZ,a3C,aK_,a3C,aK$,a3C,aK0,a3C,aK1,a3C,aK2,a3C,aK3,a3C,aK4,a3C,aK5,a3C,aK6,a3C,aK7,a3C,aK8,a3C,aK9,a3C,aLa,a3C,aLb,a3C,aLc,a3C,aLd,a3C,aLe,a3C,tp,a3C,td,a3C,tl,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C,a3C];var cL=[a3D,a3D,aLg,a3D,aLh,a3D,aLi,a3D,aLj,a3D,aLk,a3D,aLl,a3D,aLm,a3D,aLn,a3D,aLo,a3D,aLp,a3D,aLq,a3D,aLr,a3D,aLs,a3D,aLt,a3D,aLu,a3D,aLv,a3D,aLw,a3D,aLx,a3D,aLy,a3D,aLz,a3D,axU,a3D,ayc,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D,a3D];var cM=[a3E,a3E,aLB,a3E,aLC,a3E,aLD,a3E,aLE,a3E,aLF,a3E,aLG,a3E,aLH,a3E,aLI,a3E,aLJ,a3E,aLK,a3E,aLL,a3E,aLM,a3E,aLN,a3E,aLO,a3E,aLP,a3E,aLQ,a3E,aLR,a3E,aLS,a3E,aLT,a3E,aLU,a3E,yN,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E,a3E];var cN=[a3F,a3F,aLW,a3F,aLX,a3F,aLY,a3F,aLZ,a3F,aL_,a3F,aL$,a3F,aL0,a3F,aL1,a3F,aL2,a3F,aL3,a3F,aL4,a3F,aL5,a3F,aL6,a3F,aL7,a3F,aL8,a3F,aL9,a3F,aMa,a3F,aMb,a3F,aMc,a3F,aMd,a3F,NY,a3F,Jw,a3F,aqs,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F,a3F];var cO=[a3G,a3G,aMf,a3G,aMg,a3G,aMh,a3G,aMi,a3G,aMj,a3G,aMk,a3G,aMl,a3G,aMm,a3G,aMn,a3G,aMo,a3G,aMp,a3G,aMq,a3G,aMr,a3G,aMs,a3G,aMt,a3G,aMu,a3G,aMv,a3G,aMw,a3G,aMx,a3G,aMy,a3G,auA,a3G,auC,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G,a3G];var cP=[a3H,a3H,aMA,a3H,aMB,a3H,aMC,a3H,aMD,a3H,aME,a3H,aMF,a3H,aMG,a3H,aMH,a3H,aMI,a3H,aMJ,a3H,aMK,a3H,aML,a3H,aMM,a3H,aMN,a3H,aMO,a3H,aMP,a3H,aMQ,a3H,aMR,a3H,aMS,a3H,aMT,a3H,ail,a3H,GX,a3H,MS,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H,a3H];var cQ=[a3I,a3I,aMV,a3I,aMW,a3I,aMX,a3I,aMY,a3I,aMZ,a3I,aM_,a3I,aM$,a3I,aM0,a3I,aM1,a3I,aM2,a3I,aM3,a3I,aM4,a3I,aM5,a3I,aM6,a3I,aM7,a3I,aM8,a3I,aM9,a3I,aNa,a3I,aNb,a3I,aNc,a3I,Xg,a3I,nR,a3I,xD,a3I,aeY,a3I,Jf,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I,a3I];var cR=[a3J,a3J,aNe,a3J,aNf,a3J,aNg,a3J,aNh,a3J,aNi,a3J,aNj,a3J,aNk,a3J,aNl,a3J,aNm,a3J,aNn,a3J,aNo,a3J,aNp,a3J,aNq,a3J,aNr,a3J,aNs,a3J,aNt,a3J,aNu,a3J,aNv,a3J,aNw,a3J,aNx,a3J,mQ,a3J,C7,a3J,wr,a3J,OK,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J,a3J];var cS=[a3K,a3K,aNz,a3K,aNA,a3K,aNB,a3K,aNC,a3K,aND,a3K,aNE,a3K,aNF,a3K,aNG,a3K,aNH,a3K,aNI,a3K,aNJ,a3K,aNK,a3K,aNL,a3K,aNM,a3K,aNN,a3K,aNO,a3K,aNP,a3K,aNQ,a3K,aNR,a3K,aNS,a3K,Xo,a3K,alc,a3K,Dm,a3K,al1,a3K,ahw,a3K,uM,a3K,am1,a3K,ahd,a3K,oL,a3K,rt,a3K,atg,a3K,jU,a3K,ZR,a3K,uB,a3K,Pj,a3K,abH,a3K,an5,a3K,aeQ,a3K,ani,a3K,rO,a3K,yr,a3K,Kk,a3K,aln,a3K,afi,a3K,atw,a3K,$N,a3K,uw,a3K,Sx,a3K,V7,a3K,xh,a3K,Lr,a3K,Ij,a3K,rB,a3K,gj,a3K,lC,a3K,PJ,a3K,uE,a3K,arI,a3K,asg,a3K,kF,a3K,kv,a3K,ay1,a3K,RS,a3K,amT,a3K,KY,a3K,nI,a3K,W9,a3K,Ba,a3K,aq0,a3K,Mu,a3K,UY,a3K,V3,a3K,ajy,a3K,asx,a3K,RO,a3K,avs,a3K,sY,a3K,arA,a3K,apK,a3K,S3,a3K,uR,a3K,z9,a3K,Qz,a3K,fr,a3K,O0,a3K,alN,a3K,aDm,a3K,aga,a3K,ai5,a3K,yC,a3K,YX,a3K,abr,a3K,asU,a3K,amE,a3K,gr,a3K,akC,a3K,Wg,a3K,hZ,a3K,aq3,a3K,AW,a3K,azx,a3K,E5,a3K,aAS,a3K,ap7,a3K,azZ,a3K,RP,a3K,TB,a3K,_Z,a3K,jE,a3K,atd,a3K,qB,a3K,aAN,a3K,ayq,a3K,apG,a3K,VO,a3K,RM,a3K,ayG,a3K,Fo,a3K,amO,a3K,auT,a3K,apl,a3K,atq,a3K,awi,a3K,H5,a3K,as1,a3K,aph,a3K,zK,a3K,acw,a3K,YT,a3K,aw7,a3K,iI,a3K,Q_,a3K,aa3,a3K,uy,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K,a3K];var cT=[a3L,a3L,aNU,a3L,aNV,a3L,aNW,a3L,aNX,a3L,aNY,a3L,aNZ,a3L,aN_,a3L,aN$,a3L,aN0,a3L,aN1,a3L,aN2,a3L,aN3,a3L,aN4,a3L,aN5,a3L,aN6,a3L,aN7,a3L,aN8,a3L,aN9,a3L,aOa,a3L,aOb,a3L,tt,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L,a3L];var cU=[a3M,a3M,aOd,a3M,aOe,a3M,aOf,a3M,aOg,a3M,aOh,a3M,aOi,a3M,aOj,a3M,aOk,a3M,aOl,a3M,aOm,a3M,aOn,a3M,aOo,a3M,aOp,a3M,aOq,a3M,aOr,a3M,aOs,a3M,aOt,a3M,aOu,a3M,aOv,a3M,aOw,a3M,iH,a3M,oS,a3M,Wm,a3M,Q8,a3M,amc,a3M,MG,a3M,K9,a3M,akJ,a3M,att,a3M,ahH,a3M,ahc,a3M,Dx,a3M,TM,a3M,acI,a3M,sX,a3M,af9,a3M,Qp,a3M,zW,a3M,ZB,a3M,VV,a3M,AF,a3M,LB,a3M,gp,a3M,ajg,a3M,lJ,a3M,QK,a3M,E4,a3M,k_,a3M,fC,a3M,Pt,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M,a3M];var cV=[a3N,a3N,aOy,a3N,aOz,a3N,aOA,a3N,aOB,a3N,aOC,a3N,aOD,a3N,aOE,a3N,aOF,a3N,aOG,a3N,aOH,a3N,aOI,a3N,aOJ,a3N,aOK,a3N,aOL,a3N,aOM,a3N,aON,a3N,aOO,a3N,aOP,a3N,aOQ,a3N,aOR,a3N,ky,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N,a3N];var cW=[a3O,a3O,aOT,a3O,aOU,a3O,aOV,a3O,aOW,a3O,aOX,a3O,aOY,a3O,aOZ,a3O,aO_,a3O,aO$,a3O,aO0,a3O,aO1,a3O,aO2,a3O,aO3,a3O,aO4,a3O,aO5,a3O,aO6,a3O,aO7,a3O,aO8,a3O,aO9,a3O,aPa,a3O,nb,a3O,js,a3O,n3,a3O,yv,a3O,qu,a3O,qk,a3O,a3O,a3O,a3O,a3O,a3O,a3O,a3O,a3O,a3O,a3O];var cX=[a3P,a3P,aPc,a3P,aPd,a3P,aPe,a3P,aPf,a3P,aPg,a3P,aPh,a3P,aPi,a3P,aPj,a3P,aPk,a3P,aPl,a3P,aPm,a3P,aPn,a3P,aPo,a3P,aPp,a3P,aPq,a3P,aPr,a3P,aPs,a3P,aPt,a3P,aPu,a3P,aPv,a3P,VN,a3P,h7,a3P,ayj,a3P,JN,a3P,asJ,a3P,pE,a3P,azD,a3P,asb,a3P,Kj,a3P,YR,a3P,agt,a3P,zI,a3P,al$,a3P,f2,a3P,z7,a3P,av1,a3P,fo,a3P,au6,a3P,oK,a3P,JO,a3P,ax7,a3P,lB,a3P,Ms,a3P,Lp,a3P,axw,a3P,EM,a3P,azc,a3P,PI,a3P,ahu,a3P,auR,a3P,aBN,a3P,kE,a3P,azL,a3P,Tz,a3P,ai3,a3P,aAL,a3P,afR,a3P,O_,a3P,JC,a3P,aBD,a3P,Qx,a3P,o$,a3P,acu,a3P,rZ,a3P,QY,a3P,akB,a3P,Dk,a3P,aAt,a3P,Wf,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P,a3P];var cY=[a3Q,a3Q,aPx,a3Q,aPy,a3Q,aPz,a3Q,aPA,a3Q,aPB,a3Q,aPC,a3Q,aPD,a3Q,aPE,a3Q,aPF,a3Q,aPG,a3Q,aPH,a3Q,aPI,a3Q,aPJ,a3Q,aPK,a3Q,aPL,a3Q,aPM,a3Q,aPN,a3Q,aPO,a3Q,aPP,a3Q,aPQ,a3Q,wf,a3Q,SQ,a3Q,UV,a3Q,tb,a3Q,CX,a3Q,akw,a3Q,mb,a3Q,Oy,a3Q,a3Q,a3Q,a3Q,a3Q,a3Q,a3Q];var cZ=[a3R,a3R,aPS,a3R,aPT,a3R,aPU,a3R,aPV,a3R,aPW,a3R,aPX,a3R,aPY,a3R,aPZ,a3R,aP_,a3R,aP$,a3R,aP0,a3R,aP1,a3R,aP2,a3R,aP3,a3R,aP4,a3R,aP5,a3R,aP6,a3R,aP7,a3R,aP8,a3R,aP9,a3R,eE,a3R,ah4,a3R,LT,a3R,eB,a3R,ex,a3R,jt,a3R,fm,a3R,xb,a3R,GD,a3R,yw,a3R,aii,a3R,ah8,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R,a3R];var c_=[a3S,a3S,aQb,a3S,aQc,a3S,aQd,a3S,aQe,a3S,aQf,a3S,aQg,a3S,aQh,a3S,aQi,a3S,aQj,a3S,aQk,a3S,aQl,a3S,aQm,a3S,aQn,a3S,aQo,a3S,aQp,a3S,aQq,a3S,aQr,a3S,aQs,a3S,aQt,a3S,aQu,a3S,yq,a3S,xG,a3S,i1,a3S,ZH,a3S,kk,a3S,aDv,a3S,arm,a3S,aoX,a3S,rL,a3S,alG,a3S,SS,a3S,arw,a3S,xL,a3S,wk,a3S,aDu,a3S,u7,a3S,C0,a3S,mK,a3S,awG,a3S,aDw,a3S,OD,a3S,am$,a3S,tA,a3S,xR,a3S,aAc,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S,a3S];var c$=[a3T,a3T,aQw,a3T,aQx,a3T,aQy,a3T,aQz,a3T,aQA,a3T,aQB,a3T,aQC,a3T,aQD,a3T,aQE,a3T,aQF,a3T,aQG,a3T,aQH,a3T,aQI,a3T,aQJ,a3T,aQK,a3T,aQL,a3T,aQM,a3T,aQN,a3T,aQO,a3T,aQP,a3T,R5,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T,a3T];var c0=[a3U,a3U,aQR,a3U,aQS,a3U,aQT,a3U,aQU,a3U,aQV,a3U,aQW,a3U,aQX,a3U,aQY,a3U,aQZ,a3U,aQ_,a3U,aQ$,a3U,aQ0,a3U,aQ1,a3U,aQ2,a3U,aQ3,a3U,aQ4,a3U,aQ5,a3U,aQ6,a3U,aQ7,a3U,aQ8,a3U,afU,a3U,ia,a3U,hO,a3U,azT,a3U,r0,a3U,GP,a3U,F1,a3U,aAX,a3U,avK,a3U,Ga,a3U,aib,a3U,S4,a3U,EP,a3U,agw,a3U,HR,a3U,ar8,a3U,avf,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U,a3U];var c1=[a3V,a3V,aRa,a3V,aRb,a3V,aRc,a3V,aRd,a3V,aRe,a3V,aRf,a3V,aRg,a3V,aRh,a3V,aRi,a3V,aRj,a3V,aRk,a3V,aRl,a3V,aRm,a3V,aRn,a3V,aRo,a3V,aRp,a3V,aRq,a3V,aRr,a3V,aRs,a3V,aRt,a3V,yF,a3V,ur,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V,a3V];var c2=[a3W,a3W,aRv,a3W,aRw,a3W,aRx,a3W,aRy,a3W,aRz,a3W,aRA,a3W,aRB,a3W,aRC,a3W,aRD,a3W,aRE,a3W,aRF,a3W,aRG,a3W,aRH,a3W,aRI,a3W,aRJ,a3W,aRK,a3W,aRL,a3W,aRM,a3W,aRN,a3W,aRO,a3W,Ji,a3W,Ww,a3W,m8,a3W,adO,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W,a3W];var c3=[a3X,a3X,aRQ,a3X,aRR,a3X,aRS,a3X,aRT,a3X,aRU,a3X,aRV,a3X,aRW,a3X,aRX,a3X,aRY,a3X,aRZ,a3X,aR_,a3X,aR$,a3X,aR0,a3X,aR1,a3X,aR2,a3X,aR3,a3X,aR4,a3X,aR5,a3X,aR6,a3X,aR7,a3X,xe,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X,a3X];var c4=[a3Y,a3Y,aR9,a3Y,aSa,a3Y,aSb,a3Y,aSc,a3Y,aSd,a3Y,aSe,a3Y,aSf,a3Y,aSg,a3Y,aSh,a3Y,aSi,a3Y,aSj,a3Y,aSk,a3Y,aSl,a3Y,aSm,a3Y,aSn,a3Y,aSo,a3Y,aSp,a3Y,aSq,a3Y,aSr,a3Y,aSs,a3Y,aa7,a3Y,Im,a3Y,rS,a3Y,ax0,a3Y,apw,a3Y,oH,a3Y,yu,a3Y,anw,a3Y,aq_,a3Y,adQ,a3Y,anX,a3Y,H7,a3Y,apF,a3Y,adD,a3Y,Kg,a3Y,aue,a3Y,Gu,a3Y,BW,a3Y,wK,a3Y,FH,a3Y,xO,a3Y,anG,a3Y,aoU,a3Y,na,a3Y,anJ,a3Y,ZX,a3Y,Ln,a3Y,auv,a3Y,apa,a3Y,W2,a3Y,abK,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y,a3Y];var c5=[a3Z,a3Z,aSu,a3Z,aSv,a3Z,aSw,a3Z,aSx,a3Z,aSy,a3Z,aSz,a3Z,aSA,a3Z,aSB,a3Z,aSC,a3Z,aSD,a3Z,aSE,a3Z,aSF,a3Z,aSG,a3Z,aSH,a3Z,aSI,a3Z,aSJ,a3Z,aSK,a3Z,aSL,a3Z,aSM,a3Z,aSN,a3Z,i9,a3Z,alR,a3Z,ars,a3Z,ko,a3Z,ve,a3Z,tG,a3Z,ara,a3Z,az8,a3Z,awC,a3Z,a3Z,a3Z,a3Z,a3Z];var c6=[a3_,a3_,aSP,a3_,aSQ,a3_,aSR,a3_,aSS,a3_,aST,a3_,aSU,a3_,aSV,a3_,aSW,a3_,aSX,a3_,aSY,a3_,aSZ,a3_,aS_,a3_,aS$,a3_,aS0,a3_,aS1,a3_,aS2,a3_,aS3,a3_,aS4,a3_,aS5,a3_,aS6,a3_,R4,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_,a3_];var c7=[a3$,a3$,aS8,a3$,aS9,a3$,aTa,a3$,aTb,a3$,aTc,a3$,aTd,a3$,aTe,a3$,aTf,a3$,aTg,a3$,aTh,a3$,aTi,a3$,aTj,a3$,aTk,a3$,aTl,a3$,aTm,a3$,aTn,a3$,aTo,a3$,aTp,a3$,aTq,a3$,aTr,a3$,aqo,a3$,aqi,a3$,aqk,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$,a3$];var c8=[a30,a30,aTt,a30,aTu,a30,aTv,a30,aTw,a30,aTx,a30,aTy,a30,aTz,a30,aTA,a30,aTB,a30,aTC,a30,aTD,a30,aTE,a30,aTF,a30,aTG,a30,aTH,a30,aTI,a30,aTJ,a30,aTK,a30,aTL,a30,aTM,a30,pB,a30,Ya,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30,a30];var c9=[a31,a31,aTO,a31,aTP,a31,aTQ,a31,aTR,a31,aTS,a31,aTT,a31,aTU,a31,aTV,a31,aTW,a31,aTX,a31,aTY,a31,aTZ,a31,aT_,a31,aT$,a31,aT0,a31,aT1,a31,aT2,a31,aT3,a31,aT4,a31,aT5,a31,Th,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31,a31];var da=[a32,a32,aT7,a32,aT8,a32,aT9,a32,aUa,a32,aUb,a32,aUc,a32,aUd,a32,aUe,a32,aUf,a32,aUg,a32,aUh,a32,aUi,a32,aUj,a32,aUk,a32,aUl,a32,aUm,a32,aUn,a32,aUo,a32,aUp,a32,aUq,a32,nP,a32,Xe,a32,Jd,a32,aeW,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32,a32];var db=[a33,a33,aUs,a33,aUt,a33,aUu,a33,aUv,a33,aUw,a33,aUx,a33,aUy,a33,aUz,a33,aUA,a33,aUB,a33,aUC,a33,aUD,a33,aUE,a33,aUF,a33,aUG,a33,aUH,a33,aUI,a33,aUJ,a33,aUK,a33,aUL,a33,alZ,a33,aCN,a33,axs,a33,jI,a33,aCt,a33,aCF,a33,ZT,a33,aB4,a33,R2,a33,aCg,a33,aAj,a33,eh,a33,aAy,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33,a33];var dc=[a34,a34,aUN,a34,aUO,a34,aUP,a34,aUQ,a34,aUR,a34,aUS,a34,aUT,a34,aUU,a34,aUV,a34,aUW,a34,aUX,a34,aUY,a34,aUZ,a34,aU_,a34,aU$,a34,aU0,a34,aU1,a34,aU2,a34,aU3,a34,aU4,a34,ah3,a34,mP,a34,aik,a34,OJ,a34,C6,a34,wq,a34,Mm,a34,Wx,a34,GG,a34,Gz,a34,aim,a34,yY,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34,a34];var dd=[a35,a35,aU6,a35,aU7,a35,aU8,a35,aU9,a35,aVa,a35,aVb,a35,aVc,a35,aVd,a35,aVe,a35,aVf,a35,aVg,a35,aVh,a35,aVi,a35,aVj,a35,aVk,a35,aVl,a35,aVm,a35,aVn,a35,aVo,a35,aVp,a35,amg,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35,a35];var de=[a36,a36,aVr,a36,aVs,a36,aVt,a36,aVu,a36,aVv,a36,aVw,a36,aVx,a36,aVy,a36,aVz,a36,aVA,a36,aVB,a36,aVC,a36,aVD,a36,aVE,a36,aVF,a36,aVG,a36,aVH,a36,aVI,a36,aVJ,a36,aVK,a36,jv,a36,xd,a36,yy,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36,a36];var df=[a37,a37,aVM,a37,aVN,a37,aVO,a37,aVP,a37,aVQ,a37,aVR,a37,aVS,a37,aVT,a37,aVU,a37,aVV,a37,aVW,a37,aVX,a37,aVY,a37,aVZ,a37,aV_,a37,aV$,a37,aV0,a37,aV1,a37,aV2,a37,aV3,a37,tc,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37,a37];var dg=[a38,a38,aV5,a38,aV6,a38,aV7,a38,aV8,a38,aV9,a38,aWa,a38,aWb,a38,aWc,a38,aWd,a38,aWe,a38,aWf,a38,aWg,a38,aWh,a38,aWi,a38,aWj,a38,aWk,a38,aWl,a38,aWm,a38,aWn,a38,aWo,a38,tv,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38,a38];var dh=[a39,a39,aWq,a39,aWr,a39,aWs,a39,aWt,a39,aWu,a39,aWv,a39,aWw,a39,aWx,a39,aWy,a39,aWz,a39,aWA,a39,aWB,a39,aWC,a39,aWD,a39,aWE,a39,aWF,a39,aWG,a39,aWH,a39,aWI,a39,aWJ,a39,e7,a39,aiR,a39,fH,a39,Tg,a39,hm,a39,G6,a39,afq,a39,gz,a39,Yd,a39,hB,a39,G7,a39,zD,a39,FA,a39,ac6,a39,y3,a39,aaB,a39,R0,a39,FZ,a39,aiC,a39,je,a39,Yw,a39,zn,a39,aaC,a39,p9,a39,aae,a39,agb,a39,LZ,a39,ai1,a39,z3,a39,LY,a39,LX,a39,KW,a39,hq,a39,CH,a39,Qu,a39,yn,a39,ahY,a39,Eq,a39,ahZ,a39,rk,a39,L$,a39,aaa,a39,aj3,a39,aap,a39,$j,a39,L0,a39,ov,a39,Eh,a39,ra,a39,$c,a39,aab,a39,w3,a39,xy,a39,xm,a39,Tc,a39,alt,a39,jc,a39,xr,a39,pa,a39,or,a39,fL,a39,UD,a39,ajq,a39,$m,a39,Gi,a39,ag$,a39,r6,a39,sH,a39,acM,a39,y8,a39,_z,a39,_h,a39,xE,a39,iT,a39,Ee,a39,HO,a39,j3,a39,aax,a39,k8,a39,_s,a39,xt,a39,_A,a39,eZ,a39,oT,a39,Yc,a39,Wn,a39,XW,a39,DK,a39,G2,a39,Uh,a39,pV,a39,qy,a39,_i,a39,amd,a39,w5,a39,G8,a39,Zk,a39,Mb,a39,w8,a39,_b,a39,agN,a39,DT,a39,vO,a39,zf,a39,ahk,a39,vP,a39,y9,a39,eR,a39,x$,a39,ait,a39,ab1,a39,DD,a39,yS,a39,yG,a39,y2,a39,K0,a39,acJ,a39,zF,a39,V$,a39,ajm,a39,JM,a39,aji,a39,QU,a39,ajX,a39,Iw,a39,D9,a39,aaT,a39,DR,a39,jh,a39,DL,a39,WM,a39,ha,a39,Gh,a39,Bu,a39,KB,a39,hz,a39,y4,a39,ah0,a39,Zl,a39,hA,a39,CI,a39,awo,a39,lO,a39,za,a39,Vn,a39,Kq,a39,x9,a39,$u,a39,L1,a39,WV,a39,z$,a39,eS,a39,iP,a39,IS,a39,ahJ,a39,R3,a39,CF,a39,yf,a39,T0,a39,Pu,a39,yR,a39,$n,a39,aiP,a39,zb,a39,j8,a39,yZ,a39,TZ,a39,aaw,a39,$w,a39,LD,a39,M3,a39,Gk,a39,f5,a39,$q,a39,Ot,a39,Gj,a39,MO,a39,adg,a39,ps,a39,Ld,a39,Yo,a39,o5,a39,acQ,a39,yO,a39,xn,a39,aeg,a39,DQ,a39,oz,a39,HT,a39,Yz,a39,zl,a39,Hp,a39,_N,a39,Gq,a39,nt,a39,ahe,a39,akO,a39,XT,a39,mn,a39,pY,a39,g0,a39,Bt,a39,$a,a39,nD,a39,PA,a39,D8,a39,aj5,a39,rm,a39,ai2,a39,Rh,a39,ED,a39,tV,a39,He,a39,WC,a39,G5,a39,Ec,a39,k0,a39,ahn,a39,n$,a39,ak5,a39,rj,a39,Yr,a39,Gr,a39,qg,a39,$d,a39,T_,a39,zi,a39,_F,a39,zo,a39,WA,a39,ad6,a39,agZ,a39,IE,a39,ahR,a39,xT,a39,jy,a39,s2,a39,Hb,a39,Hz,a39,Wr,a39,D6,a39,y$,a39,DY,a39,L2,a39,Z2,a39,$f,a39,nr,a39,abZ,a39,Yp,a39,aAm,a39,Gs,a39,mr,a39,akT,a39,e8,a39,_L,a39,eJ,a39,zX,a39,FL,a39,acz,a39,DX,a39,_M,a39,Rd,a39,ab5,a39,aiE,a39,ar4,a39,qz,a39,_5,a39,_H,a39,AG,a39,LH,a39,Dz,a39,asq,a39,Ha,a39,P0,a39,$D,a39,mo,a39,jw,a39,Un,a39,en,a39,alv,a39,xN,a39,$z,a39,aiB,a39,XX,a39,Ek,a39,_O,a39,sZ,a39,Z5,a39,$8,a39,Fq,a39,ih,a39,aan,a39,DO,a39,U3,a39,fD,a39,ZM,a39,_l,a39,agf,a39,Mx,a39,I_,a39,akX,a39,aiv,a39,FY,a39,Fj,a39,QQ,a39,lK,a39,oX,a39,Ut,a39,XN,a39,nj,a39,Fl,a39,As,a39,g_,a39,XV,a39,UA,a39,JS,a39,DW,a39,ah_,a39,Ur,a39,S7,a39,auO,a39,qT,a39,iu,a39,$y,a39,wT,a39,ZD,a39,TN,a39,aeq,a39,Qq,a39,fa,a39,agY,a39,DZ,a39,$l,a39,ahN,a39,ajS,a39,IG,a39,atu,a39,akr,a39,acc,a39,LL,a39,LR,a39,ab3,a39,aBU,a39,agj,a39,AK,a39,$6,a39,Yj,a39,sL,a39,D7,a39,amJ,a39,yj,a39,Fw,a39,akW,a39,aaS,a39,_t,a39,_B,a39,La,a39,aiu,a39,_q,a39,ads,a39,awk,a39,Eu,a39,VW,a39,aiO,a39,iJ,a39,_P,a39,$x,a39,jg,a39,gs,a39,awm,a39,ak$,a39,MH,a39,ais,a39,MK,a39,_E,a39,Tk,a39,s5,a39,QL,a39,akK,a39,mH,a39,Zm,a39,fW,a39,Lh,a39,_j,a39,AO,a39,Af,a39,ajV,a39,$Y,a39,PE,a39,Q9,a39,$5,a39,jf,a39,akq,a39,GI,a39,ji,a39,aaM,a39,air,a39,ami,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39,a39];var di=[a4a,a4a,aWL,a4a,aWM,a4a,aWN,a4a,aWO,a4a,aWP,a4a,aWQ,a4a,aWR,a4a,aWS,a4a,aWT,a4a,aWU,a4a,aWV,a4a,aWW,a4a,aWX,a4a,aWY,a4a,aWZ,a4a,aW_,a4a,aW$,a4a,aW0,a4a,aW1,a4a,aW2,a4a,A8,a4a,Bf,a4a,afN,a4a,aBc,a4a,abo,a4a,aqj,a4a,abA,a4a,afd,a4a,aBd,a4a,a4a,a4a,a4a,a4a];var dj=[a4b,a4b,aW4,a4b,aW5,a4b,aW6,a4b,aW7,a4b,aW8,a4b,aW9,a4b,aXa,a4b,aXb,a4b,aXc,a4b,aXd,a4b,aXe,a4b,aXf,a4b,aXg,a4b,aXh,a4b,aXi,a4b,aXj,a4b,aXk,a4b,aXl,a4b,aXm,a4b,aXn,a4b,Ly,a4b,f4,a4b,adC,a4b,fp,a4b,RG,a4b,aoT,a4b,al7,a4b,Xx,a4b,Q1,a4b,ix,a4b,j0,a4b,UR,a4b,jV,a4b,gk,a4b,X_,a4b,h9,a4b,ay4,a4b,Q5,a4b,Ds,a4b,uL,a4b,LW,a4b,agH,a4b,RH,a4b,qM,a4b,zJ,a4b,WO,a4b,OH,a4b,ag9,a4b,GS,a4b,uU,a4b,TI,a4b,pF,a4b,Dl,a4b,d9,a4b,IF,a4b,I5,a4b,Sn,a4b,Dt,a4b,am_,a4b,aqA,a4b,MC,a4b,f6,a4b,iO,a4b,BT,a4b,QP,a4b,LG,a4b,ahG,a4b,fx,a4b,O$,a4b,h1,a4b,Qy,a4b,go,a4b,Jp,a4b,Sa,a4b,Fv,a4b,at7,a4b,af$,a4b,vo,a4b,rK,a4b,qa,a4b,aub,a4b,Zs,a4b,gi,a4b,mN,a4b,oJ,a4b,qC,a4b,H3,a4b,adW,a4b,wO,a4b,W7,a4b,BV,a4b,ap2,a4b,MB,a4b,ZI,a4b,ajf,a4b,ek,a4b,Uz,a4b,wo,a4b,ah2,a4b,ahv,a4b,ms,a4b,zS,a4b,Kf,a4b,Pz,a4b,ID,a4b,agv,a4b,ajc,a4b,ns,a4b,Nu,a4b,C4,a4b,A2,a4b,fl,a4b,z8,a4b,K8,a4b,Cq,a4b,TR,a4b,Ui,a4b,kJ,a4b,iD,a4b,anr,a4b,sU,a4b,AA,a4b,sT,a4b,Ir,a4b,F2,a4b,Jt,a4b,TA,a4b,AB,a4b,mg,a4b,MF,a4b,nq,a4b,age,a4b,alM,a4b,alq,a4b,ai4,a4b,ej,a4b,eA,a4b,QC,a4b,at9,a4b,ahD,a4b,X9,a4b,r$,a4b,acW,a4b,agB,a4b,QG,a4b,XZ,a4b,sN,a4b,ati,a4b,YZ,a4b,Gy,a4b,atn,a4b,Gx,a4b,kz,a4b,gy,a4b,Rc,a4b,d8,a4b,ajN,a4b,Lu,a4b,O8,a4b,Lo,a4b,aei,a4b,Dw,a4b,fB,a4b,nG,a4b,kP,a4b,aee,a4b,TE,a4b,uA,a4b,E0,a4b,d7,a4b,auu,a4b,aul,a4b,H_,a4b,BS,a4b,jZ,a4b,Te,a4b,Pp,a4b,uG,a4b,H9,a4b,EW,a4b,zR,a4b,aeO,a4b,Pl,a4b,aqz,a4b,Lq,a4b,Y_,a4b,afY,a4b,iw,a4b,Xr,a4b,Mt,a4b,K5,a4b,eG,a4b,K4,a4b,KX,a4b,d2,a4b,ahC,a4b,NT,a4b,al0,a4b,ah$,a4b,X3,a4b,afT,a4b,anD,a4b,acv,a4b,Kl,a4b,aum,a4b,JD,a4b,AE,a4b,HW,a4b,X2,a4b,kN,a4b,Mr,a4b,atl,a4b,j2,a4b,fy,a4b,acL,a4b,WK,a4b,Fn,a4b,anq,a4b,ahV,a4b,as3,a4b,acH,a4b,amC,a4b,amb,a4b,ah7,a4b,acD,a4b,ae5,a4b,Gv,a4b,EV,a4b,EO,a4b,ayY,a4b,O3,a4b,aAW,a4b,VM,a4b,aoL,a4b,BO,a4b,GQ,a4b,YS,a4b,QZ,a4b,aoM,a4b,amh,a4b,ajD,a4b,ajb,a4b,aud,a4b,jG,a4b,zV,a4b,el,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b,a4b];var dk=[a4c,a4c,aXp,a4c,aXq,a4c,aXr,a4c,aXs,a4c,aXt,a4c,aXu,a4c,aXv,a4c,aXw,a4c,aXx,a4c,aXy,a4c,aXz,a4c,aXA,a4c,aXB,a4c,aXC,a4c,aXD,a4c,aXE,a4c,aXF,a4c,aXG,a4c,aXH,a4c,aXI,a4c,Xp,a4c,u_,a4c,adY,a4c,ae7,a4c,$O,a4c,alP,a4c,Jy,a4c,n9,a4c,RZ,a4c,YV,a4c,NO,a4c];var dl=[a4d,a4d,aXK,a4d,aXL,a4d,aXM,a4d,aXN,a4d,aXO,a4d,aXP,a4d,aXQ,a4d,aXR,a4d,aXS,a4d,aXT,a4d,aXU,a4d,aXV,a4d,aXW,a4d,aXX,a4d,aXY,a4d,aXZ,a4d,aX_,a4d,aX$,a4d,aX0,a4d,aX1,a4d,yE,a4d,ava,a4d,aA0,a4d,aCV,a4d,afk,a4d,ae8,a4d,a4d,a4d,a4d,a4d,a4d,a4d,a4d,a4d,a4d,a4d];var dm=[a4e,a4e,aX3,a4e,aX4,a4e,aX5,a4e,aX6,a4e,aX7,a4e,aX8,a4e,aX9,a4e,aYa,a4e,aYb,a4e,aYc,a4e,aYd,a4e,aYe,a4e,aYf,a4e,aYg,a4e,aYh,a4e,aYi,a4e,aYj,a4e,aYk,a4e,aYl,a4e,aYm,a4e,wD,a4e,SU,a4e,Dj,a4e,OU,a4e,mZ,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e,a4e];var dn=[a4f,a4f,aYo,a4f,aYp,a4f,aYq,a4f,aYr,a4f,aYs,a4f,aYt,a4f,aYu,a4f,aYv,a4f,aYw,a4f,aYx,a4f,aYy,a4f,aYz,a4f,aYA,a4f,aYB,a4f,aYC,a4f,aYD,a4f,aYE,a4f,aYF,a4f,aYG,a4f,aYH,a4f,JI,a4f,FM,a4f,Il,a4f,adP,a4f,rR,a4f,nW,a4f,d6,a4f,VI,a4f,Gl,a4f,GC,a4f,yt,a4f,aa6,a4f,HQ,a4f,d3,a4f,d5,a4f,adm,a4f,aet,a4f,J4,a4f,F5,a4f,aid,a4f,GO,a4f,pr,a4f,IW,a4f,m9,a4f,HI,a4f,aiw,a4f,W1,a4f,O5,a4f,mB,a4f,ZW,a4f,WY,a4f,F0,a4f,wJ,a4f,G4,a4f,abJ,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f,a4f];var dp=[a4g,a4g,aYJ,a4g,aYK,a4g,aYL,a4g,aYM,a4g,aYN,a4g,aYO,a4g,aYP,a4g,aYQ,a4g,aYR,a4g,aYS,a4g,aYT,a4g,aYU,a4g,aYV,a4g,aYW,a4g,aYX,a4g,aYY,a4g,aYZ,a4g,aY_,a4g,aY$,a4g,aY0,a4g,eo,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g,a4g];var dq=[a4h,a4h,aY2,a4h,aY3,a4h,aY4,a4h,aY5,a4h,aY6,a4h,aY7,a4h,aY8,a4h,aY9,a4h,aZa,a4h,aZb,a4h,aZc,a4h,aZd,a4h,aZe,a4h,aZf,a4h,aZg,a4h,aZh,a4h,aZi,a4h,aZj,a4h,aZk,a4h,aZl,a4h,jF,a4h,ano,a4h,NS,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h,a4h];var dr=[a4i,a4i,aZn,a4i,aZo,a4i,aZp,a4i,aZq,a4i,aZr,a4i,aZs,a4i,aZt,a4i,aZu,a4i,aZv,a4i,aZw,a4i,aZx,a4i,aZy,a4i,aZz,a4i,aZA,a4i,aZB,a4i,aZC,a4i,aZD,a4i,aZE,a4i,aZF,a4i,aZG,a4i,mR,a4i,OL,a4i,C8,a4i,aqr,a4i,ws,a4i,aol,a4i,a4i,a4i,a4i,a4i,a4i,a4i,a4i,a4i,a4i,a4i];var ds=[a4j,a4j,aZI,a4j,aZJ,a4j,aZK,a4j,aZL,a4j,aZM,a4j,aZN,a4j,aZO,a4j,aZP,a4j,aZQ,a4j,aZR,a4j,aZS,a4j,aZT,a4j,aZU,a4j,aZV,a4j,aZW,a4j,aZX,a4j,aZY,a4j,aZZ,a4j,aZ_,a4j,aZ$,a4j,ajE,a4j,MT,a4j,Gf,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j,a4j];var dt=[a4k,a4k,aZ1,a4k,aZ2,a4k,aZ3,a4k,aZ4,a4k,aZ5,a4k,aZ6,a4k,aZ7,a4k,aZ8,a4k,aZ9,a4k,a_a,a4k,a_b,a4k,a_c,a4k,a_d,a4k,a_e,a4k,a_f,a4k,a_g,a4k,a_h,a4k,a_i,a4k,a_j,a4k,a_k,a4k,tg,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k,a4k];var du=[a4l,a4l,a_m,a4l,a_n,a4l,a_o,a4l,a_p,a4l,a_q,a4l,a_r,a4l,a_s,a4l,a_t,a4l,a_u,a4l,a_v,a4l,a_w,a4l,a_x,a4l,a_y,a4l,a_z,a4l,a_A,a4l,a_B,a4l,a_C,a4l,a_D,a4l,a_E,a4l,a_F,a4l,alm,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l,a4l];var dv=[a4m,a4m,a_H,a4m,a_I,a4m,a_J,a4m,a_K,a4m,a_L,a4m,a_M,a4m,a_N,a4m,a_O,a4m,a_P,a4m,a_Q,a4m,a_R,a4m,a_S,a4m,a_T,a4m,a_U,a4m,a_V,a4m,a_W,a4m,a_X,a4m,a_Y,a4m,a_Z,a4m,a__,a4m,xJ,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m,a4m];var dw=[a4n,a4n,a_0,a4n,a_1,a4n,a_2,a4n,a_3,a4n,a_4,a4n,a_5,a4n,a_6,a4n,a_7,a4n,a_8,a4n,a_9,a4n,a$a,a4n,a$b,a4n,a$c,a4n,a$d,a4n,a$e,a4n,a$f,a4n,a$g,a4n,a$h,a4n,a$i,a4n,a$j,a4n,pT,a4n,xI,a4n,abe,a4n,aCE,a4n,aya,a4n,aCJ,a4n,OW,a4n,amn,a4n,ym,a4n,avn,a4n,Jk,a4n,iY,a4n,anT,a4n,__,a4n,Gt,a4n,FG,a4n,act,a4n,rY,a4n,n6,a4n,ayn,a4n,ae0,a4n,ags,a4n,pN,a4n,amu,a4n,Xk,a4n,at5,a4n,NJ,a4n,qW,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n,a4n];var dx=[a4o,a4o,a$l,a4o,a$m,a4o,a$n,a4o,a$o,a4o,a$p,a4o,a$q,a4o,a$r,a4o,a$s,a4o,a$t,a4o,a$u,a4o,a$v,a4o,a$w,a4o,a$x,a4o,a$y,a4o,a$z,a4o,a$A,a4o,a$B,a4o,a$C,a4o,a$D,a4o,a$E,a4o,nf,a4o,o4,a4o,qR,a4o,tK,a4o,hW,a4o,gg,a4o,aij,a4o,yV,a4o,RW,a4o,ae6,a4o,fP,a4o,Iq,a4o,aky,a4o,kx,a4o,Co,a4o,GW,a4o,X7,a4o,Og,a4o,XF,a4o,kI,a4o,MR,a4o,vn,a4o,ady,a4o,er,a4o,jR,a4o,ee,a4o,nh,a4o,abL,a4o,S2,a4o,am8,a4o,UM,a4o,BQ,a4o,h$,a4o,RX,a4o,A0,a4o,amY,a4o,TP,a4o,uq,a4o,Y$,a4o,MQ,a4o,aig,a4o,Of,a4o,E6,a4o,rM,a4o,amj,a4o,jN,a4o,XG,a4o,afj,a4o,O2,a4o,$P,a4o,Ge,a4o,jM,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o,a4o];var dy=[a4p,a4p,a$G,a4p,a$H,a4p,a$I,a4p,a$J,a4p,a$K,a4p,a$L,a4p,a$M,a4p,a$N,a4p,a$O,a4p,a$P,a4p,a$Q,a4p,a$R,a4p,a$S,a4p,a$T,a4p,a$U,a4p,a$V,a4p,a$W,a4p,a$X,a4p,a$Y,a4p,a$Z,a4p,amM,a4p,NF,a4p,PH,a4p,ahr,a4p,UG,a4p,QX,a4p,Wp,a4p,la,a4p,akM,a4p,oW,a4p,z6,a4p,VZ,a4p,fO,a4p,Qt,a4p,Ll,a4p,ahU,a4p,FE,a4p,EG,a4p,ajt,a4p,lN,a4p,s9,a4p,ZK,a4p,AR,a4p,iX,a4p,ago,a4p,acV,a4p,Rf,a4p,LJ,a4p,hS,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p,a4p];var dz=[a4q,a4q,a$$,a4q,a$0,a4q,a$1,a4q,a$2,a4q,a$3,a4q,a$4,a4q,a$5,a4q,a$6,a4q,a$7,a4q,a$8,a4q,a$9,a4q,a0a,a4q,a0b,a4q,a0c,a4q,a0d,a4q,a0e,a4q,a0f,a4q,a0g,a4q,a0h,a4q,a0i,a4q,PN,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q,a4q];var dA=[a4r,a4r,a0k,a4r,a0l,a4r,a0m,a4r,a0n,a4r,a0o,a4r,a0p,a4r,a0q,a4r,a0r,a4r,a0s,a4r,a0t,a4r,a0u,a4r,a0v,a4r,a0w,a4r,a0x,a4r,a0y,a4r,a0z,a4r,a0A,a4r,a0B,a4r,a0C,a4r,a0D,a4r,av3,a4r,v8,a4r,avS,a4r,kr,a4r,DA,a4r,uo,a4r,ayg,a4r,o7,a4r,gu,a4r,ar5,a4r,abx,a4r,AH,a4r,aBE,a4r,alj,a4r,We,a4r,nM,a4r,art,a4r,ame,a4r,acK,a4r,awj,a4r,MI,a4r,oI,a4r,Ob,a4r,vx,a4r,nO,a4r,j6,a4r,abv,a4r,aA4,a4r,aBh,a4r,uJ,a4r,Ra,a4r,Lb,a4r,sM,a4r,Xl,a4r,afK,a4r,avx,a4r,A3,a4r,avC,a4r,UI,a4r,DP,a4r,me,a4r,avH,a4r,agA,a4r,J3,a4r,anj,a4r,Xw,a4r,u2,a4r,Fs,a4r,vk,a4r,s_,a4r,fE,a4r,H4,a4r,afI,a4r,qD,a4r,aBW,a4r,jl,a4r,agc,a4r,ata,a4r,up,a4r,Js,a4r,an$,a4r,Ja,a4r,wh,a4r,V9,a4r,arD,a4r,Cs,a4r,xj,a4r,ayf,a4r,SJ,a4r,ajC,a4r,awZ,a4r,ayo,a4r,at$,a4r,NW,a4r,afZ,a4r,k5,a4r,ae1,a4r,X4,a4r,J7,a4r,asA,a4r,Zv,a4r,aql,a4r,ZQ,a4r,ay$,a4r,ahK,a4r,abq,a4r,ash,a4r,aeU,a4r,az9,a4r,arC,a4r,jb,a4r,A_,a4r,kq,a4r,arH,a4r,Jx,a4r,aqw,a4r,NA,a4r,pD,a4r,auk,a4r,apj,a4r,kw,a4r,id,a4r,ayM,a4r,avr,a4r,Cn,a4r,ahg,a4r,avq,a4r,afG,a4r,axO,a4r,Jc,a4r,kD,a4r,au2,a4r,zY,a4r,xP,a4r,axR,a4r,aAr,a4r,kC,a4r,az7,a4r,arz,a4r,aBi,a4r,asO,a4r,_Y,a4r,asC,a4r,l3,a4r,agq,a4r,at_,a4r,asj,a4r,avm,a4r,av2,a4r,aza,a4r,awE,a4r,ats,a4r,k$,a4r,arb,a4r,CZ,a4r,aBK,a4r,auX,a4r,auV,a4r,Pw,a4r,asI,a4r,avB,a4r,aAp,a4r,aff,a4r,gb,a4r,OY,a4r,OA,a4r,asL,a4r,EU,a4r,vj,a4r,ayO,a4r,SL,a4r,ajj,a4r,TO,a4r,iL,a4r,LE,a4r,azE,a4r,ja,a4r,l6,a4r,aCD,a4r,Ck,a4r,NM,a4r,azP,a4r,avQ,a4r,lv,a4r,aAn,a4r,v5,a4r,ayN,a4r,aCC,a4r,asN,a4r,Xd,a4r,aBM,a4r,AZ,a4r,$K,a4r,o8,a4r,arF,a4r,ZG,a4r,awQ,a4r,UQ,a4r,au3,a4r,alW,a4r,ar7,a4r,V8,a4r,af_,a4r,amt,a4r,V4,a4r,am4,a4r,ta,a4r,ael,a4r,AV,a4r,ae4,a4r,OX,a4r,QN,a4r,av4,a4r,arp,a4r,Sz,a4r,NL,a4r,alX,a4r,Oe,a4r,aur,a4r,yT,a4r,adI,a4r,ar9,a4r,aox,a4r,IN,a4r,azR,a4r,aju,a4r,agr,a4r,qV,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r,a4r];var dB=[a4s,a4s,a0F,a4s,a0G,a4s,a0H,a4s,a0I,a4s,a0J,a4s,a0K,a4s,a0L,a4s,a0M,a4s,a0N,a4s,a0O,a4s,a0P,a4s,a0Q,a4s,a0R,a4s,a0S,a4s,a0T,a4s,a0U,a4s,a0V,a4s,a0W,a4s,a0X,a4s,a0Y,a4s,ahI,a4s,adX,a4s,Az,a4s,ajh,a4s,fq,a4s,Dp,a4s,zP,a4s,a4s,a4s,a4s,a4s,a4s,a4s,a4s,a4s];var dC=[a4t,a4t,a0_,a4t,a0$,a4t,a00,a4t,a01,a4t,a02,a4t,a03,a4t,a04,a4t,a05,a4t,a06,a4t,a07,a4t,a08,a4t,a09,a4t,a1a,a4t,a1b,a4t,a1c,a4t,a1d,a4t,a1e,a4t,a1f,a4t,a1g,a4t,a1h,a4t,aDH,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t,a4t];var dD=[a4u,a4u,a1j,a4u,a1k,a4u,a1l,a4u,a1m,a4u,a1n,a4u,a1o,a4u,a1p,a4u,a1q,a4u,a1r,a4u,a1s,a4u,a1t,a4u,a1u,a4u,a1v,a4u,a1w,a4u,a1x,a4u,a1y,a4u,a1z,a4u,a1A,a4u,a1B,a4u,a1C,a4u,alg,a4u,u$,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u,a4u];var dE=[a4v,a4v,a1E,a4v,a1F,a4v,a1G,a4v,a1H,a4v,a1I,a4v,a1J,a4v,a1K,a4v,a1L,a4v,a1M,a4v,a1N,a4v,a1O,a4v,a1P,a4v,a1Q,a4v,a1R,a4v,a1S,a4v,a1T,a4v,a1U,a4v,a1V,a4v,a1W,a4v,a1X,a4v,anm,a4v,uZ,a4v,arB,a4v,atf,a4v,ru,a4v,yD,a4v,apX,a4v,DE,a4v,m$,a4v,ux,a4v,rJ,a4v,axe,a4v,xk,a4v,am2,a4v,axm,a4v,azr,a4v,ans,a4v,RN,a4v,jQ,a4v,RY,a4v,Wb,a4v,alO,a4v,wN,a4v,axH,a4v,axg,a4v,YU,a4v,ay_,a4v,axB,a4v,SC,a4v,axi,a4v,axD,a4v,O1,a4v,axF,a4v,Fp,a4v,amP,a4v,zH,a4v,ayC,a4v,axk,a4v,Sy,a4v,acX,a4v,aCH,a4v,a4v,a4v,a4v,a4v];var dF=[a4w,a4w,a1Z,a4w,a1_,a4w,a1$,a4w,a10,a4w,a11,a4w,a12,a4w,a13,a4w,a14,a4w,a15,a4w,a16,a4w,a17,a4w,a18,a4w,a19,a4w,a2a,a4w,a2b,a4w,a2c,a4w,a2d,a4w,a2e,a4w,a2f,a4w,a2g,a4w,apY,a4w,ahm,a4w,LK,a4w,yo,a4w,z2,a4w,aew,a4w,AN,a4w,QT,a4w,_$,a4w,auy,a4w,xa,a4w,abF,a4w,Qw,a4w,Ih,a4w,akN,a4w,Lg,a4w,adt,a4w,lQ,a4w,adv,a4w,oZ,a4w,Iv,a4w,EC,a4w,HP,a4w,hN,a4w,rP,a4w,UC,a4w,Rg,a4w,Wu,a4w,k7,a4w,Fz,a4w,acP,a4w,ahQ,a4w,adM,a4w,wH,a4w,fK,a4w,Kd,a4w,amI,a4w,GK,a4w,iS,a4w,aa4,a4w,IQ,a4w,MN,a4w,tm,a4w,yB,a4w,PD,a4w,aih,a4w,V_,a4w,m6,a4w,Wq,a4w,ZL,a4w,agi,a4w,ajp,a4w,s4,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w,a4w];var dG=[a4x,a4x,a2i,a4x,a2j,a4x,a2k,a4x,a2l,a4x,a2m,a4x,a2n,a4x,a2o,a4x,a2p,a4x,a2q,a4x,a2r,a4x,a2s,a4x,a2t,a4x,a2u,a4x,a2v,a4x,a2w,a4x,a2x,a4x,a2y,a4x,a2z,a4x,a2A,a4x,a2B,a4x,abM,a4x,Is,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x,a4x];var dH=[a4y,a4y,a2D,a4y,a2E,a4y,a2F,a4y,a2G,a4y,a2H,a4y,a2I,a4y,a2J,a4y,a2K,a4y,a2L,a4y,a2M,a4y,a2N,a4y,a2O,a4y,a2P,a4y,a2Q,a4y,a2R,a4y,a2S,a4y,a2T,a4y,a2U,a4y,a2V,a4y,a2W,a4y,aug,a4y,aus,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y,a4y];var dI=[a4z,a4z,a2Y,a4z,a2Z,a4z,a2_,a4z,a2$,a4z,a20,a4z,a21,a4z,a22,a4z,a23,a4z,a24,a4z,a25,a4z,a26,a4z,a27,a4z,a28,a4z,a29,a4z,a3a,a4z,a3b,a4z,a3c,a4z,a3d,a4z,a3e,a4z,a3f,a4z,ahp,a4z,th,a4z,EF,a4z,uT,a4z,MM,a4z,FD,a4z,ai8,a4z,ND,a4z,avR,a4z,Qo,a4z,i8,a4z,N1,a4z,aAs,a4z,awJ,a4z,aA2,a4z,fA,a4z,fJ,a4z,gc,a4z,OB,a4z,aBG,a4z,N8,a4z,oN,a4z,v0,a4z,iR,a4z,uF,a4z,TL,a4z,rE,a4z,s7,a4z,azQ,a4z,avl,a4z,Oc,a4z,tn,a4z,aAO,a4z,vy,a4z,uj,a4z,l0,a4z,iG,a4z,C_,a4z,ajv,a4z,J8,a4z,azy,a4z,amQ,a4z,UB,a4z,sS,a4z,ki,a4z,PG,a4z,PC,a4z,rx,a4z,UJ,a4z,EX,a4z,hQ,a4z,Lv,a4z,vi,a4z,tD,a4z,af0,a4z,Wl,a4z,K7,a4z,aAC,a4z,Ml,a4z,awe,a4z,azS,a4z,aA3,a4z,agl,a4z,azC,a4z,Dy,a4z,z5,a4z,RQ,a4z,My,a4z,fN,a4z,E$,a4z,aBA,a4z,Ps,a4z,iC,a4z,agC,a4z,K1,a4z,amR,a4z,Lj,a4z,i7,a4z,iV,a4z,gn,a4z,AM,a4z,sW,a4z,oR,a4z,TF,a4z,zU,a4z,AD,a4z,wi,a4z,QJ,a4z,at1,a4z,PL,a4z,QS,a4z,aDn,a4z,aDr,a4z,azW,a4z,ard,a4z,Fg,a4z,arx,a4z,l_,a4z,Q7,a4z,Ct,a4z,SH,a4z,asP,a4z,Zx,a4z,LI,a4z,ask,a4z,Dv,a4z,az$,a4z,k6,a4z,alE,a4z,va,a4z,acG,a4z,E3,a4z,B9,a4z,alp,a4z,Zu,a4z,iW,a4z,azF,a4z,acO,a4z,US,a4z,VU,a4z,auQ,a4z,tq,a4z,ajs,a4z,ahT,a4z,ajo,a4z,azU,a4z,QD,a4z,Pm,a4z,kZ,a4z,FC,a4z,al4,a4z,NB,a4z,i$,a4z,axA,a4z,mf,a4z,lE,a4z,Gn,a4z,ahz,a4z,BM,a4z,zN,a4z,SR,a4z,A4,a4z,avJ,a4z,avX,a4z,ali,a4z,kn,a4z,aAK,a4z,hR,a4z,iy,a4z,auW,a4z,Fy,a4z,av5,a4z,s3,a4z,abE,a4z,aAd,a4z,Re,a4z,akE,a4z,Jv,a4z,EB,a4z,Lf,a4z,agm,a4z,u5,a4z,aAq,a4z,aAR,a4z,v2,a4z,ahl,a4z,aBI,a4z,avw,a4z,aBL,a4z,l4,a4z,avy,a4z,apU,a4z,awF,a4z,amS,a4z,ar6,a4z,aCp,a4z,asa,a4z,Ac,a4z,avi,a4z,km,a4z,ty,a4z,av$,a4z,lz,a4z,ax4,a4z,u1,a4z,SG,a4z,VQ,a4z,rv,a4z,UF,a4z,au5,a4z,azz,a4z,atN,a4z,un,a4z,aje,a4z,Cf,a4z,alJ,a4z,at0,a4z,aop,a4z,z1,a4z,avZ,a4z,ayE,a4z,azb,a4z,aBC,a4z,arn,a4z,atB,a4z,f7,a4z,aBO,a4z,asR,a4z,azf,a4z,fu,a4z,vY,a4z,Cl,a4z,asv,a4z,N6,a4z,sO,a4z,lw,a4z,RD,a4z,ayH,a4z,ZA,a4z,amU,a4z,rA,a4z,avG,a4z,rC,a4z,Rj,a4z,acA,a4z,LA,a4z,asi,a4z,lI,a4z,agh,a4z,s8,a4z,amL,a4z,av6,a4z,aqm,a4z,aAa,a4z,QW,a4z,aAV,a4z,agG,a4z,af4,a4z,ahb,a4z,alV,a4z,axy,a4z,av0,a4z,aqN,a4z,aBQ,a4z,aks,a4z,azX,a4z,v6,a4z,Ch,a4z,lV,a4z,Ty,a4z,SK,a4z,aDc,a4z,ath,a4z,gB,a4z,AQ,a4z,ave,a4z,atP,a4z,ayp,a4z,ahF,a4z,akI,a4z,ry,a4z,afH,a4z,at3,a4z,acS,a4z,wE,a4z,ama,a4z,aCv,a4z,axK,a4z,aow,a4z,Q2,a4z,amH,a4z,abw,a4z,NX,a4z,axS,a4z,ax6,a4z,ME,a4z,ahP,a4z,af8,a4z,arv,a4z,ahq,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z,a4z];return{_emscripten_bind_btConeShapeX__setConeUpIndex_p1:Ah,_emscripten_bind_btDbvtProxy__get_stage_p0:M7,_emscripten_bind_btContinuousDynamicsWorld____destroy___p0:C2,_emscripten_bind_btBoxShape__getNumPlanes_p0:afS,_emscripten_bind_btHeightfieldTerrainShape____destroy___p0:Qs,_emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1:f4,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3:ahp,_emscripten_bind_btGhostObject__upcast_p1:aj0,_emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1:yK,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0:JZ,_emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0:PK,_emscripten_bind_btGeneric6DofConstraint__isEnabled_p0:WD,_emscripten_bind_btBroadphaseProxy__isPolyhedral_p1:ad0,_emscripten_bind_btHinge2Constraint__buildJacobian_p0:Ig,_emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0:lj,_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9:A8,_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8:A7,_emscripten_bind_btIDebugDraw__drawLine_p3:th,_emscripten_bind_btCollisionObject__mergesSimulationIslands_p0:g6,_emscripten_bind_btIDebugDraw__drawLine_p4:ti,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1:J_,_emscripten_bind_btConeShape__getAabbSlow_p3:EF,_emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2:v8,_emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8:wD,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1:Hm,_emscripten_bind_btRigidBody____destroy___p0:qQ,_emscripten_bind_btSimpleBroadphase__destroyProxy_p2:kr,_emscripten_bind_btBroadphaseInterface__createProxy_p8:i9,_emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1:x7,_emscripten_bind_btContactSolverInfo____destroy___p0:m4,_emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1:w7,_emscripten_bind_btCapsuleShape__getRadius_p0:e7,_emscripten_bind_btConeShapeZ__serializeSingleShape_p1:z4,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1:XY,_emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0:aiR,_emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0:fH,_emscripten_bind_btVector4__fuzzyZero_p0:FO,_emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2:DA,_emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0:aa$,_emscripten_bind_btSphereShape__calculateTemporalAabb_p6:amM,_emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2:uo,_emscripten_bind_btIDebugDraw__drawCapsule_p5:tp,_emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1:kl,_emscripten_bind_btPersistentManifold__get_m_index1a_p0:j7,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1:adC,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4:ahs,_emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1:fp,_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3:Xo,_emscripten_bind_btAxisSweep3__unQuantize_p3:uT,_emscripten_bind_btCapsuleShape__getUpAxis_p0:e5,_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5:Xp,_emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2:VN,_emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1:RG,_emscripten_bind_btConeShape__calculateSerializeBufferSize_p0:Dq,_emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:MM,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1:$t,_emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2:h7,_emscripten_bind_btHingeConstraint__getBFrame_p0:x6,_emscripten_bind_btHingeConstraint__buildJacobian_p0:xM,_emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1:W8,_emscripten_bind_btCompoundShape__isNonMoving_p0:kR,_emscripten_bind_btUniformScalingShape__setUserPointer_p1:KM,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1:Rn,_emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0:IU,_emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0:Tg,_emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1:af6,_emscripten_bind_btConeTwistConstraint__setDamping_p1:vR,_emscripten_bind_btHeightfieldTerrainShape__setMargin_p1:Qr,_emscripten_bind_btDynamicsWorld__getDispatcher_p0:lr,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1:Rz,_emscripten_bind_btCylinderShape__isNonMoving_p0:Mf,_emscripten_bind_btCollisionObject__getRestitution_p0:hm,_emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0:wZ,_emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1:Jr,_emscripten_bind_btPoint2PointConstraint__getInfo2_p1:acl,_emscripten_bind_btConeTwistConstraint__setFixThresh_p1:xq,_emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0:ic,_emscripten_bind_btGhostObject__setCompanionId_p1:aiQ,_emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0:aiA,_emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4:um,_emscripten_bind_btQuaternion__normalized_p0:ai$,_emscripten_bind_btCompoundShape__getLocalScaling_p0:kG,_emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1:acR,_emscripten_bind_btPairCachingGhostObject__getCompanionId_p0:Uu,_emscripten_bind_btTypedConstraint__getRigidBodyA_p0:q1,_emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0:pc,_emscripten_bind_btConvexHullShape__isInfinite_p0:fY,_emscripten_bind_btRaycastVehicle__debugDraw_p1:J9,_emscripten_bind_btEmptyShape__isCompound_p0:oc,_emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1:al7,_emscripten_bind_btTriangleMesh__addIndex_p1:AT,_emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5:yN,_emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3:ai8,_emscripten_bind_btConeShape__isNonMoving_p0:CO,_emscripten_bind_btTypedConstraint__getUserConstraintType_p0:rl,_emscripten_bind_btMatrix3x3__deSerializeDouble_p1:d1,_emscripten_bind_btVector3__y_p0:G6,_emscripten_bind_btDynamicsWorld__removeVehicle_p1:lX,_emscripten_bind_btCylinderShape__getAabbSlow_p3:ND,_emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0:aaL,_emscripten_bind_btBoxShape__getMarginNV_p0:afq,_emscripten_bind_btRigidBody__getCenterOfMassTransform_p0:qc,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0:RA,_emscripten_bind_btBU_Simplex1to4__isCompound_p0:Fb,_emscripten_bind_btPoint2PointConstraint__getInfo1_p1:acq,_emscripten_bind_btTransform__deSerialize_p1:XK,_emscripten_bind_btBoxShape__btBoxShape_p1:af5,_emscripten_bind_btHeightfieldTerrainShape__getAabb_p3:Qo,_emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1:t$,_emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0:Zw,_emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1:Xx,_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1:ut,_emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0:sl,_emscripten_bind_btRaycastVehicle__getSteeringValue_p1:JI,_emscripten_bind_btRigidBody__internalSetExtensionPointer_p1:pO,_emscripten_bind_btHingeConstraint__needsFeedback_p0:x2,_emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1:Q1,_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1:ix,_emscripten_bind_btHingeConstraint__getFrameOffsetA_p0:xz,_emscripten_bind_btSimpleDynamicsWorld__addAction_p1:N_,_emscripten_bind_btTransform__getOpenGLMatrix_p1:XI,_emscripten_bind_btRigidBody__internalApplyPushImpulse_p3:pT,_emscripten_bind_btPersistentManifold__getCacheEntry_p1:j0,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1:Kh,_emscripten_bind_btRigidBody__applyForce_p2:o7,_emscripten_bind_btConvexHullShape__addPoint_p1:gq,_emscripten_bind_btIDebugDraw__drawTriangle_p5:tb,_emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2:gu,_emscripten_bind_btDynamicsWorld__getPairCache_p0:mW,_emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7:_X,_emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0:IR,_emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0:Zh,_emscripten_bind_btBroadphaseInterface__aabbTest_p3:i8,_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1:jP,_emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0:amx,_emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0:gz,_emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0:hf,_emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2:Qw,_emscripten_bind_btRaycastVehicle__setBrake_p2:JN,_emscripten_bind_btCollisionObject__getBroadphaseHandle_p0:hl,_emscripten_bind_btCylinderShape__calculateTemporalAabb_p6:NF,_emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0:hB,_emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1:OO,_emscripten_bind_btIndexedMesh__set_m_vertexBase_p1:gU,_emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0:sK,_emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0:sQ,_emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1:h_,_emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1:UR,_emscripten_bind_btVector3__x_p0:G7,_emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1:Od,_emscripten_bind_btSimpleBroadphase__aabbOverlap_p2:jV,_emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1:vS,_emscripten_bind_btGhostObject__getRootCollisionShape_p0:aj2,_emscripten_bind_btSerializer__finishSerialization_p0:HZ,_emscripten_bind_btConeShapeZ__setUserPointer_p1:zk,_emscripten_bind_btRaycastVehicle__updateWheelTransform_p1:J2,_emscripten_bind_btDbvtBroadphase__get_m_gid_p0:sI,_emscripten_bind_btHeightfieldTerrainShape__isConcave_p0:PY,_emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1:D1,_emscripten_bind_btTriangleInfoMap__serialize_p2:alc,_emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1:aeo,_emscripten_bind_btCapsuleShapeX__getLocalScaling_p0:ahx,_emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2:abx,_emscripten_bind_btVector4__distance2_p1:FM,_emscripten_bind_btSliderConstraint__setParam_p2:_$,_emscripten_bind_btSliderConstraint__setParam_p3:_0,_emscripten_bind_btConeShapeX__getMarginNV_p0:zD,_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1:ad8,_emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0:FA,_emscripten_bind_btConvexShape__isNonMoving_p0:Qi,_emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0:U5,_emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1:gk,_emscripten_bind_btQuaternion__setValue_p3:ah4,_emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1:UX,_emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0:Do,_emscripten_bind_btHinge2Constraint__getInfo1_p1:In,_emscripten_bind_btConeShape__serialize_p2:Dm,_emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1:OG,_emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0:jC,_emscripten_bind_btCapsuleShape__getAabb_p3:fA,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1:JQ,_emscripten_bind_btTransform__op_mul_p1:X_,_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1:h9,_emscripten_bind_btRigidBody__removeConstraintRef_p1:pu,_emscripten_bind_btRigidBody__predictIntegratedTransform_p2:pE,_emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0:_9,_emscripten_bind_btConeShape__setConeUpIndex_p1:CK,_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11:nP,_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12:nQ,_emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1:S_,_emscripten_bind_btCollisionObject__getCompanionId_p0:hs,_emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1:$o,_emscripten_bind_btConeShapeZ__isConvex2d_p0:zv,_emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4:alZ,_emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1:Sw,_emscripten_bind_btCollisionObject__getCollisionFlags_p0:hi,_emscripten_bind_btHinge2Constraint__getUid_p0:HE,_emscripten_bind_btRigidBody__internalWritebackVelocity_p0:pz,_emscripten_bind_btRigidBody__internalWritebackVelocity_p1:pK,_emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3:gc,_emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0:Wd,_emscripten_bind_btAxisSweep3__updateHandle_p4:vb,_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5:wf,_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4:we,_emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0:PT,_emscripten_bind_btTypedConstraint__setupSolverConstraint_p4:rX,_emscripten_bind_btStaticPlaneShape__isPolyhedral_p0:Vh,_emscripten_bind_btGhostObject__internalSetExtensionPointer_p1:aiT,_emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0:ss,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0:KJ,_emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1:Q5,_emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0:Wt,_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0:alU,_emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0:Fu,_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0:qZ,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1:ak4,_emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0:ai7,_emscripten_bind_btCollisionWorld__convexSweepTest_p5:SQ,_emscripten_bind_btCollisionWorld__convexSweepTest_p4:SP,_emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0:pZ,_emscripten_bind_btContactConstraint__getParam_p2:aa7,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0:ac6,_emscripten_bind_btDefaultVehicleRaycaster____destroy___p0:m_,_emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3:OB,_emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1:T3,_emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5:yq,_emscripten_bind_btCapsuleShapeX__serialize_p2:ahw,_emscripten_bind_btSliderConstraint__getSolveAngLimit_p0:Z8,_emscripten_bind_btUniversalConstraint__setUserConstraintId_p1:nl,_emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2:AH,_emscripten_bind_btCompoundShape__getShapeType_p0:lb,_emscripten_bind_btBoxShape__isInside_p2:afU,_emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5:xG,_emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0:Ad,_emscripten_bind_bt32BitAxisSweep3__removeHandle_p2:alj,_emscripten_bind_btBoxShape__getName_p0:af3,_emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0:lZ,_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0:Hx,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0:add,_emscripten_bind_btCompoundShape__isCompound_p0:kL,_emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1:Ds,_emscripten_bind_btConvexHullShape__getUnscaledPoints_p0:fT,_emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0:hM,_emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0:y3,_emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1:eW,_emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0:nx,_emscripten_bind_btSimpleDynamicsWorld__rayTest_p3:N8,_emscripten_bind_btVector4__furthestAxis_p0:GJ,_emscripten_bind_btEmptyShape__processAllTriangles_p3:oN,_emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1:xH,_emscripten_bind_btCollisionObject__isActive_p0:ht,_emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1:u4,_emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0:S8,_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9:Bf,_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8:Be,_emscripten_bind_btConeTwistConstraint____destroy___p0:xi,_emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0:C5,_emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0:ahi,_emscripten_bind_btConeShapeZ__setConeUpIndex_p1:zq,_emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4:acs,_emscripten_bind_btConeTwistConstraint__updateRHS_p1:xl,_emscripten_bind_btCollisionDispatcher____destroy___p0:uH,_emscripten_bind_btTransform__setOrigin_p1:X6,_emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0:Sk,_emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0:sf,_emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1:ajd,_emscripten_bind_btRaycastVehicle____destroy___p0:Ka,_emscripten_bind_btWheelInfo__set_m_engineForce_p1:DV,_emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0:aaB,_emscripten_bind_btVector3__setMax_p1:Gw,_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0:Bz,_emscripten_bind_btConeTwistConstraint__enableFeedback_p1:wV,_emscripten_bind_btJacobianEntry__getDiagonal_p0:R0,_emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1:aho,_emscripten_bind_btEmptyShape__calculateTemporalAabb_p6:oW,_emscripten_bind_btAxisSweep3__btAxisSweep3_p5:u_,_emscripten_bind_btAxisSweep3__btAxisSweep3_p4:uZ,_emscripten_bind_btAxisSweep3__btAxisSweep3_p3:uM,_emscripten_bind_btAxisSweep3__btAxisSweep3_p2:uL,_emscripten_bind_btRigidBody__internalGetAngularVelocity_p1:qw,_emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3:v0,_emscripten_bind_btPersistentManifold__set_m_companionIdB_p1:kb,_emscripten_bind_btConeTwistConstraint__setAngularOnly_p1:w9,_emscripten_bind_btVector4__length2_p0:FZ,_emscripten_bind_btStorageResult__set_m_closestPointInB_p1:NI,_emscripten_bind_btIDebugDraw__reportErrorWarning_p1:tj,_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1:I4,_emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1:akU,_emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0:W$,_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1:HB,_emscripten_bind_btMultiSphereShape__isCompound_p0:Or,_emscripten_bind_btRigidBody__setCenterOfMassTransform_p1:o3,_emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1:sk,_emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1:P$,_emscripten_bind_btUniversalConstraint__setFrames_p2:nM,_emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1:Bs,_emscripten_bind_btGhostPairCallback__addOverlappingPair_p2:am1,_emscripten_bind_btUniversalConstraint__getInfo1_p1:nc,_emscripten_bind_btEmptyShape__isSoftBody_p0:oj,_emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0:Ze,_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0:rG,_emscripten_bind_btConvexShape__getShapeType_p0:Rl,_emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0:aiC,_emscripten_bind_btHinge2Constraint__getAxis2_p0:I1,_emscripten_bind_btTypedConstraint__setDbgDrawSize_p1:rh,_emscripten_bind_btIndexedMesh____destroy___p0:hV,_emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2:ahd,_emscripten_bind_btAngularLimit__getBiasFactor_p0:je,_emscripten_bind_btConvexHullShape__setUserPointer_p1:fU,_emscripten_bind_btDefaultMotionState____destroy___p0:BX,_emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:iR,_emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3:uF,_emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0:$q,_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0:amW,_emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0:K2,_emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1:tw,_emscripten_bind_CProfileNode__Get_Total_Time_p0:Yw,_emscripten_bind_btRigidBody__proceedToTransform_p1:pJ,_emscripten_bind_btHinge2Constraint__getParam_p2:Im,_emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1:oS,_emscripten_bind_btCompoundShape__isConcave_p0:lc,_emscripten_bind_btHinge2Constraint__getParam_p1:Il,_emscripten_bind_btConeShape__isPolyhedral_p0:CG,_emscripten_bind_btGhostObject__setCollisionFlags_p1:aj9,_emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1:wB,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1:Mo,_emscripten_bind_btConeShapeZ__getRadius_p0:zn,_emscripten_bind_btConvexInternalShape__getAabb_p3:TL,_emscripten_bind_btRigidBody__getIslandTag_p0:pg,_emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0:T5,_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1:adP,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1:Ki,_emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1:sC,_emscripten_bind_btCompoundShape__setMargin_p1:k1,_emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1:yI,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1:XS,_emscripten_bind_btConvexHullShape__getUserPointer_p0:f_,_emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0:aaC,_emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0:p9,_emscripten_bind_btDynamicsWorld__removeCharacter_p1:mM,_emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0:aeI,_emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0:aae,_emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0:x1,_emscripten_bind_btVector3__setW_p1:G3,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0:afE,_emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0:ud,_emscripten_bind_btDynamicsWorld__getGravity_p0:mI,_emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1:FB,_emscripten_bind_btBoxShape__getMargin_p0:agb,_emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1:MJ,_emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1:De,_emscripten_bind_btPoint2PointConstraint__set_m_setting_p1:acn,_emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0:wd,_emscripten_bind_btSphereShape__isConvex_p0:aly,_emscripten_bind_btConeTwistConstraint__needsFeedback_p0:wX,_emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0:HH,_emscripten_bind_btRigidBody__internalApplyImpulse_p3:pN,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1:Rs,_emscripten_bind_btContactConstraint__setEnabled_p1:$1,_emscripten_bind_btConvexInternalShape__getUserPointer_p0:Tp,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2:ahm,_emscripten_bind_btQuadWord__getZ_p0:LZ,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0:KD,_emscripten_bind_btRigidBody__isStaticObject_p0:qq,_emscripten_bind_bt32BitAxisSweep3__setAabb_p4:alH,_emscripten_bind_btOptimizedBvh__refit_p3:rE,_emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1:aer,_emscripten_bind_btTypedConstraint__getParam_p2:rS,_emscripten_bind_btTypedConstraint__getParam_p1:rR,_emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3:s7,_emscripten_bind_btQuaternion__getAngle_p0:ai1,_emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2:ame,_emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1:y7,_emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1:Bh,_emscripten_bind_btEmptyShape__serialize_p2:oL,_emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6:PH,_emscripten_bind_btBroadphaseInterface__rayTest_p5:i1,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1:RB,_emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1:Ol,_emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1:Lc,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0:agE,_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5:UV,_emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2:acK,_emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0:ai9,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0:agu,_emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0:T_,_emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0:T8,_emscripten_bind_btCollisionObject__setBroadphaseHandle_p1:hI,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1:H9,_emscripten_bind_btConeShape__isSoftBody_p0:CQ,_emscripten_bind_btConvexTriangleMeshShape__isInside_p2:ia,_emscripten_bind_btVector3__deSerializeFloat_p1:G1,_emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0:z3,_emscripten_bind_btPairCachingGhostObject__getUserPointer_p0:Uo,_emscripten_bind_btOptimizedBvh__serialize_p3:ru,_emscripten_bind_btOptimizedBvh__serialize_p2:rt,_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1:agH,_emscripten_bind_btUniformScalingShape__getBoundingSphere_p2:LK,_emscripten_bind_btQuadWord__getY_p0:LY,_emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2:MI,_emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0:sc,_emscripten_bind_btUniversalConstraint__getAngle_p1:nW,_emscripten_bind_btSliderConstraint__buildJacobian_p0:ZV,_emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0:mA,_emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1:RH,_emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0:akt,_emscripten_bind_btBoxShape__isPolyhedral_p0:afn,_emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1:iE,_emscripten_bind_btVector4__maxAxis_p0:FX,_emscripten_bind_btRigidBody__checkCollideWith_p1:qM,_emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1:oa,_emscripten_bind_btHinge2Constraint__getAxis1_p0:I$,_emscripten_bind_btCapsuleShapeX__setUserPointer_p1:agV,_emscripten_bind_btQuadWord__getX_p0:LX,_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1:wg,_emscripten_bind_btCapsuleShape__isInfinite_p0:fc,_emscripten_bind_btCompoundShape__getNumChildShapes_p0:kT,_emscripten_bind_btOptimizedBvh__buildInternal_p0:rs,_emscripten_bind_btUniversalConstraint__setAxis_p2:oI,_emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1:VI,_emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1:zJ,_emscripten_bind_btManifoldPoint__btManifoldPoint_p4:abM,_emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0:TG,_emscripten_bind_btDbvtBroadphase__set_m_cid_p1:sq,_emscripten_bind_btDbvtProxy__isSoftBody_p1:MY,_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11:Xe,_emscripten_bind_btPersistentManifold__set_m_objectType_p1:jX,_emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0:mC,_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1:Oa,_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2:Ob,_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3:Oc,_emscripten_bind_btHinge2Constraint__enableFeedback_p1:IA,_emscripten_bind_btIDebugDraw__drawAabb_p3:tn,_emscripten_bind_btGeneric6DofConstraint__isLimited_p1:WO,_emscripten_bind_btGeneric6DofConstraint__setLimit_p3:Xg,_emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1:OH,_emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1:v7,_emscripten_bind_btContactConstraint__getDbgDrawSize_p0:$Y,_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1:vw,_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3:vy,_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2:vx,_emscripten_bind_btSliderConstraint__setUserConstraintId_p1:_7,_emscripten_bind_btDiscreteDynamicsWorld____destroy___p0:wm,_emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0:Qb,_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1:ag9,_emscripten_bind_btCylinderShape__getName_p0:MA,_emscripten_bind_btTypedConstraint__setUserConstraintType_p1:ri,_emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0:KW,_emscripten_bind_btVector3__op_set_p1:GS,_emscripten_bind_btVector3__deSerializeDouble_p1:Gp,_emscripten_bind_btAxisSweep3__getHandle_p1:uU,_emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1:TI,_emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0:hq,_emscripten_bind_btRigidBody__checkCollideWithOverride_p1:pF,_emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0:vh,_emscripten_bind_btUniversalConstraint__calculateTransforms_p2:nO,_emscripten_bind_btUniversalConstraint__calculateTransforms_p0:nN,_emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2:jU,_emscripten_bind_btConeTwistConstraint__buildJacobian_p0:wF,_emscripten_bind_btRigidBody__addConstraintRef_p1:pH,_emscripten_bind_btConeShape__localGetSupportingVertex_p1:Dl,_emscripten_bind_btConeShape__getRadius_p0:CH,_emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3:uj,_emscripten_bind_btDynamicsWorld__rayTest_p3:l0,_emscripten_bind_btQuaternion__normalize_p0:aia,_emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0:Qu,_emscripten_bind_btMatrix3x3__transposeTimes_p1:d9,_emscripten_bind_btConcaveShape__isSoftBody_p0:akn,_emscripten_bind_btConvexTriangleMeshShape__getAabb_p3:iG,_emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3:C_,_emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2:ZR,_emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0:uQ,_emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6:Qt,_emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0:Cu,_emscripten_bind_btCollisionDispatcher__needsCollision_p2:uB,_emscripten_bind_btVector4__serialize_p1:Fh,_emscripten_bind_btHingeConstraint__btHingeConstraint_p4:yD,_emscripten_bind_btHingeConstraint__btHingeConstraint_p7:yF,_emscripten_bind_btHingeConstraint__btHingeConstraint_p6:yE,_emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1:OT,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0:ahk,_emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1:ahS,_emscripten_bind_btBoxShape__getLocalScaling_p0:afW,_emscripten_bind_btUniversalConstraint__getRigidBodyA_p0:mG,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0:agO,_emscripten_bind_btPersistentManifold__setBodies_p2:j6,_emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0:qU,_emscripten_bind_btUniversalConstraint__getUid_p0:mx,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1:$C,_emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1:_n,_emscripten_bind_btCollisionShape__isConcave_p0:VB,_emscripten_bind_btHingeConstraint__setEnabled_p1:xX,_emscripten_bind_btSliderConstraint__setupSolverConstraint_p4:_U,_emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2:abv,_emscripten_bind_btRigidBody__integrateVelocities_p1:pI,_emscripten_bind_btRigidBody__internalGetInvMass_p0:ot,_emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1:T6,_emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1:EJ,_emscripten_bind_btTypedConstraint____destroy___p0:rW,_emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1:IF,_emscripten_bind_btHingeConstraint__getLowerLimit_p0:yn,_emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1:WG,_emscripten_bind_btQuaternion__getX_p0:ahY,_emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0:T4,_emscripten_bind_btConeTwistConstraint__isEnabled_p0:wQ,_strlen:aDE,_emscripten_bind_btWheelInfo__get_m_deltaRotation_p0:Eq,_emscripten_bind_btQuaternion__getY_p0:ahZ,_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3:ajv,_emscripten_bind_btDynamicsWorld__setConstraintSolver_p1:mY,_emscripten_bind_btUniformScalingShape__getUserPointer_p0:KS,_emscripten_bind_btHashString__get_m_hash_p0:amF,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0:KI,_emscripten_bind_btHingeConstraint__getInfo1_p1:xQ,_emscripten_bind_btConeShapeZ__isConcave_p0:zz,_emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1:SY,_emscripten_bind_btDbvtBroadphase__collide_p1:tE,_emscripten_bind_btTriangleInfo__set_m_flags_p1:Hc,_emscripten_bind_btBU_Simplex1to4__addVertex_p1:ER,_emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1:tN,_emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0:io,_emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0:rV,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0:Hi,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0:Ic,_emscripten_bind_btCollisionDispatcher__getNearCallback_p0:ug,_emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0:rk,_emscripten_bind_btWheelInfo____destroy___p0:EK,_emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0:BD,_emscripten_bind_btUniformScalingShape__serializeSingleShape_p1:Mk,_emscripten_bind_btConeShapeX__getConeUpIndex_p0:Aq,_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0:aeL,_emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0:PW,_emscripten_bind_btUniversalConstraint__getAxis1_p0:n0,_emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0:t_,_emscripten_bind_btDispatcherInfo__get_m_stepCount_p0:eK,_emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3:uJ,_emscripten_bind_btQuadWord__w_p0:L$,_emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0:vG,_emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1:ui,_emscripten_bind_btConeTwistConstraint__getConstraintType_p0:wS,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1:YP,_emscripten_bind_btCompoundShape__getChildList_p0:kS,_emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1:lH,_emscripten_bind_btGhostObject__isActive_p0:ajZ,_emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0:aaa,_emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1:EI,_emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3:Pj,_emscripten_bind_btGhostObject__getContactProcessingThreshold_p0:aj3,_emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1:xB,_emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3:J8,_emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0:Lt,_emscripten_bind_btGhostObject__setAnisotropicFriction_p1:akx,_emscripten_bind_btManifoldPoint__getDistance_p0:aap,_emscripten_bind_btHashInt__getHash_p0:Sc,_emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6:UG,_emscripten_bind_CProfileSample____destroy___p0:aht,_emscripten_bind_btHinge2Constraint__calcAnchorPos_p0:Ip,_emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1:C9,_emscripten_bind_btPoint2PointConstraint__serialize_p2:abH,_emscripten_bind_btUniversalConstraint__getParam_p2:na,_emscripten_bind_btConeShapeZ__getConeUpIndex_p0:zy,_emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0:$j,_emscripten_bind_btConstraintSetting__btConstraintSetting_p0:nf,_emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1:Xj,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0:LQ,_emscripten_bind_btGeneric6DofConstraint__setParam_p3:Wv,_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0:VJ,_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0:ala,_emscripten_bind_btCapsuleShapeZ__isInfinite_p0:aiG,_emscripten_bind_btDbvtProxy__get_m_uniqueId_p0:Ni,_emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0:v3,_emscripten_bind_btBroadphaseInterface__resetPool_p1:i4,_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11:Jd,_emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1:zc,_emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0:hT,_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12:Je,_emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0:Es,_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1:Oz,_emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0:ib,_emscripten_bind_btContactConstraint__setUserConstraintId_p1:$W,_emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1:Sn,_emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1:DN,_emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0:HK,_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1:If,_emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1:Dt,_emscripten_bind_btQuadWord__setValue_p4:LU,_emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1:zg,_emscripten_bind_btQuadWord__y_p0:L0,_emscripten_bind_btQuadWord__setValue_p3:LT,_emscripten_bind_btRigidBody__getInvMass_p0:ov,_emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1:Cd,_emscripten_bind_btCollisionObject__getUserPointer_p0:hn,_emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0:Tf,_emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1:Zz,_emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0:abB,_emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0:vJ,_emscripten_bind_btWheelInfo__get_m_rotation_p0:Eh,_emscripten_bind_btQuantizedBvh__unQuantize_p1:am_,_emscripten_bind_btUniversalConstraint__getAxis2_p0:n2,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0:afD,_emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0:PP,_emscripten_bind_btTypedConstraint__getDbgDrawSize_p0:ra,_emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0:$c,_emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0:r7,_emscripten_bind_btQuantizedBvh__quantize_p3:amQ,_emscripten_bind_btDynamicsWorld__removeCollisionObject_p1:mX,_emscripten_bind_btVector4__closestAxis4_p0:Gc,_emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1:Wm,_emscripten_bind_btGhostObject__getAnisotropicFriction_p0:aj6,_emscripten_bind_btCollisionObject__forceActivationState_p1:he,_emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1:MC,_emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0:aeK,_emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1:all,_emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2:Ra,_emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:UB,_emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0:vp,_emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0:aab,_emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0:w3,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0:JY,_emscripten_bind_btConvexHullShape__isNonMoving_p0:f$,_emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1:Di,_emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0:afv,_emscripten_bind_btConvexHullShape__isInside_p2:hO,_emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5:ZH,_emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0:Ab,_emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1:e_,_emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0:w6,_emscripten_bind_btSphereShape__serializeSingleShape_p1:amK,_emscripten_bind_btCylinderShapeX__serializeSingleShape_p1:K_,_emscripten_bind_btHinge2Constraint__getRigidBodyA_p0:HN,_emscripten_bind_btCollisionObject__setRestitution_p1:hG,_emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2:Lb,_emscripten_bind_btHashString__set_m_string_p1:amB,_emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0:zO,_emscripten_bind_btConvexHullShape__isSoftBody_p0:f0,_emscripten_bind_btRigidBody__getLinearVelocity_p0:pl,_emscripten_bind_btRigidBody__applyTorque_p1:pf,_emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1:yJ,_emscripten_bind_btConvexShape__getContactBreakingThreshold_p1:Q8,_emscripten_bind_btIndexedMesh__set_m_vertexType_p1:gS,_emscripten_bind_btCollisionObject__hasContactResponse_p0:hw,_emscripten_bind_btPolyhedralConvexShape__getEdge_p3:sS,_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9:afN,_emscripten_bind_btCapsuleShape__setLocalScaling_p1:fz,_emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2:aeQ,_emscripten_bind_btPolyhedralConvexShape__getVertex_p2:sM,_emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0:xy,_emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0:qR,_emscripten_bind_btGhostObject__setUserPointer_p1:ai_,_emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0:CB,_emscripten_bind_btGeneric6DofConstraint__setFrames_p2:Xl,_emscripten_bind_btUniversalConstraint__setUpperLimit_p2:nb,_emscripten_bind_btConvexHullShape__getScaledPoint_p1:f6,_emscripten_bind_btConeShapeX__getUserPointer_p0:Al,_emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1:g7,_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1:iO,_emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1:aal,_emscripten_bind_btSliderConstraint__set_m_objectType_p1:_w,_emscripten_bind_btSimpleDynamicsWorld__getGravity_p0:OC,_emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0:Et,_emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1:Cb,_emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0:xm,_emscripten_bind_btConeShapeZ__getBoundingSphere_p2:z2,_emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4:DE,_emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0:adL,_emscripten_bind_btConeShape__setImplicitShapeDimensions_p1:DC,_emscripten_bind_btBroadphaseRayCallback__process_p1:BT,_emscripten_bind_btSimpleBroadphase__rayTest_p5:kk,_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1:QP,_emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1:LG,_emscripten_bind_btRigidBody__applyTorqueImpulse_p1:qo,_emscripten_bind_btMultiSphereShape__isInfinite_p0:Pa,_emscripten_bind_btContactConstraint__setupSolverConstraint_p4:abd,_emscripten_bind_btVector3__closestAxis_p0:GT,_emscripten_bind_btSimpleBroadphase__rayTest_p3:ki,_emscripten_bind_btMultiSphereShape__getAabbSlow_p3:PG,_emscripten_bind_btRigidBody__applyCentralImpulse_p1:qr,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1:Rq,_emscripten_bind_btWheelInfo__set_m_frictionSlip_p1:D5,_emscripten_bind_btRigidBody__updateDeactivation_p1:om,_emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0:So,_emscripten_bind_btConeTwistConstraint__getObjectType_p0:wY,_emscripten_bind_btDbvtProxy__isConvex_p1:MW,_emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:PC,_emscripten_bind_btCapsuleShapeZ__getUserPointer_p0:aiH,_emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0:yL,_emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0:DU,_emscripten_bind_btGeneric6DofConstraint__getUid_p0:VE,_emscripten_bind_btWheelInfo__set_m_clientInfo_p1:D_,_emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1:uk,_emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5:adY,_emscripten_bind_btCapsuleShapeZ__isSoftBody_p0:aiK,_emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0:Tc,_emscripten_bind_btQuaternion__op_mul_p1:ah3,_emscripten_bind_btSphereShape__getMarginNV_p0:alt,_emscripten_bind_btBoxShape__isNonMoving_p0:afu,_emscripten_bind_btUniversalConstraint__setLimit_p3:nR,_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0:aem,_emscripten_bind_btAngularLimit__getError_p0:jc,_emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2:Kj,_emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1:eN,_emscripten_bind_btTypedConstraint__serialize_p2:rO,_emscripten_bind_btDbvtBroadphase__resetPool_p1:tC,_emscripten_bind_btSliderConstraint__getFrameOffsetB_p0:_y,_emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3:rx,_emscripten_bind_btMatrix3x3__inverse_p0:ep,_emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2:ahI,_emscripten_bind_btRigidBody__getFriction_p0:pa,_emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1:_r,_emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0:Df,_emscripten_bind_btDynamicsWorld__addAction_p1:lS,_emscripten_bind_CProfileSample__CProfileSample_p1:ahW,_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8:abn,_emscripten_bind_btRigidBody__getHitFraction_p0:or,_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2:afK,_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1:afJ,_emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1:fx,_emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0:fL,_emscripten_bind_btDbvtBroadphase__set_m_gid_p1:st,_emscripten_bind_btEmptyShape__getLocalScaling_p0:oM,_emscripten_bind_btHingeConstraint__serialize_p2:yr,_emscripten_bind_btBoxShape__getNumEdges_p0:af2,_emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1:yQ,_emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1:$U,_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1:tL,_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0:tK,_emscripten_bind_btConcaveShape__isConcave_p0:ako,_emscripten_bind_btHingeConstraint__getInfo2_p1:xS,_emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0:N9,_emscripten_bind_btMatrix3x3__getRotation_p1:eb,_emscripten_bind_btConeShapeZ__isInfinite_p0:zs,_emscripten_bind_btConvexInternalAabbCachingShape__getName_p0:QF,_emscripten_bind_btCylinderShapeX__setUserPointer_p1:Km,_emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6:QX,_emscripten_bind_btCapsuleShapeX__isConvex_p0:ag0,_emscripten_bind_btCylinderShapeX__getUpAxis_p0:Kn,_emscripten_bind_btDynamicsWorld__getDebugDrawer_p0:lY,_emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1:O$,_emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1:x_,_emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1:Ov,_emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0:UD,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0:J$,_emscripten_bind_btConvexInternalShape__isCompound_p0:Ti,_emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2:YR,_emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1:Iu,_emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2:aew,_emscripten_bind_btRaycastVehicle__getUserConstraintType_p0:JJ,_emscripten_bind_btTriangleMesh__setPremadeAabb_p2:A3,_emscripten_bind_btCollisionObject__checkCollideWith_p1:h1,_emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0:aeZ,_emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0:ajq,_emscripten_bind_btConstraintSetting__set_m_tau_p1:mp,_emscripten_bind_btHinge2Constraint__needsFeedback_p0:IV,_emscripten_bind_btRigidBody__setCompanionId_p1:pS,_emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0:wa,_emscripten_bind_btOptimizedBvh__build_p4:rz,_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1:Qy,_emscripten_bind_btConeShapeX__isConvex_p0:Ai,_emscripten_bind_btRigidBody__getTotalTorque_p0:oF,_emscripten_bind_btCollisionDispatcher__getNumManifolds_p0:uC,_emscripten_bind_btHingeConstraint__setParam_p3:yp,_emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0:ft,_emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1:afQ,_emscripten_bind_btSliderConstraint__setLowerAngLimit_p1:$I,_emscripten_bind_btHashPtr__getHash_p0:TY,_emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0:r3,_emscripten_bind_btIndexedMesh__btIndexedMesh_p0:hW,_emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1:go,_emscripten_bind_btCapsuleShapeZ__getShapeType_p0:aiN,_emscripten_bind_btPoint2PointConstraint__setEnabled_p1:aaZ,_emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1:Tv,_emscripten_bind_btCapsuleShape__isNonMoving_p0:fe,_emscripten_bind_btIDebugDraw__drawSphere_p3:tv,_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2:agt,_emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0:Si,_emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1:Jp,_emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4:FF,_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0:adl,_emscripten_bind_btCylinderShape__isCompound_p0:L6,_emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0:$m,_emscripten_bind_btCylinderShapeX__setLocalScaling_p1:K6,_emscripten_bind_btConvexInternalShape__setLocalScaling_p1:TK,_emscripten_bind_btHingeConstraint__getAFrame_p0:yH,_emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0:Va,_emscripten_bind_btRigidBody__btRigidBody_p4:pC,_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2:UI,_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3:UJ,_emscripten_bind_bt32BitAxisSweep3__updateHandle_p4:alK,_emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0:sj,_emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1:t2,_emscripten_bind_btWheelInfo__set_m_deltaRotation_p1:D3,_emscripten_bind_bt32BitAxisSweep3__addHandle_p7:alg,_emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3:EX,_emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3:Kk,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0:Ht,_emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0:Y8,_emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0:n1,_emscripten_bind_btTypedConstraint__buildJacobian_p0:rN,_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1:jn,_emscripten_bind_btStaticPlaneShape__setUserPointer_p1:Vf,_emscripten_bind_btVector4__y_p0:Gi,_emscripten_bind_btHinge2Constraint__getUserConstraintType_p0:IZ,_emscripten_bind_btCapsuleShape__setMargin_p1:fF,_emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0:op,_emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1:aaY,_emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0:adq,_emscripten_bind_btConeShapeZ__calculateLocalInertia_p2:zI,_emscripten_bind_btConvexHullShape__getAabbSlow_p3:hQ,_emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1:w1,_emscripten_bind_btIndexedMesh__set_m_vertexStride_p1:gX,_emscripten_bind_btCollisionWorld__updateAabbs_p0:SM,_emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1:Xa,_emscripten_bind_btDbvtBroadphase__printStats_p0:tF,_emscripten_bind_btPersistentManifold__getBody0_p0:j5,_emscripten_bind_btConeShape__getShapeType_p0:DI,_emscripten_bind_btEmptyShape__isNonMoving_p0:oh,_emscripten_bind_btQuadWord__setW_p1:L_,_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0:ue,_emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0:II,_emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1:uS,_emscripten_bind_btAxisSweep3__aabbTest_p3:vi,_emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1:ne,_emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1:_2,_emscripten_bind_btGhostObject__serializeSingleObject_p1:aku,_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0:adw,_emscripten_bind_btGhostObject__setRestitution_p1:akb,_emscripten_bind_btContactConstraint__getRigidBodyA_p0:$F,_emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0:CS,_emscripten_bind_btConcaveShape__isNonMoving_p0:akl,_emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0:Nw,_emscripten_bind_btCapsuleShapeX__getMarginNV_p0:ag$,_emscripten_bind_btPersistentManifold__get_m_companionIdA_p0:ka,_emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1:D2,_emscripten_bind_btWheelInfo__updateWheel_p2:DP,_emscripten_bind_btDynamicsWorld__addConstraint_p2:me,_emscripten_bind_btDynamicsWorld__addConstraint_p1:md,_emscripten_bind_btRigidBody__getTurnVelocity_p0:os,_emscripten_bind_btTypedConstraint__setUserConstraintId_p1:q8,_emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0:EN,_emscripten_bind_btCylinderShape__getUpAxis_p0:L8,_emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1:aaN,_emscripten_bind_btDbvtBroadphase__getAabb_p3:tD,_emscripten_bind_btSphereShape__getContactBreakingThreshold_p1:amc,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0:adB,_emscripten_bind_btBroadphaseInterface__printStats_p0:i6,_emscripten_bind_btHashInt__setUid1_p1:R9,_emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0:QB,_emscripten_bind_btRigidBody__setCollisionFlags_p1:qs,_emscripten_bind_btGhostObject__hasContactResponse_p0:aj$,_emscripten_bind_btDefaultVehicleRaycaster__castRay_p3:m$,_emscripten_bind_btSliderConstraint__getUseFrameOffset_p0:Z1,_emscripten_bind_btCollisionObject__getIslandTag_p0:g8,_emscripten_bind_btCollisionShape__calculateTemporalAabb_p6:Wp,_emscripten_bind_btTranslationalLimitMotor____destroy___p0:Tu,_emscripten_bind_btConcaveShape__isConvex_p0:aki,_emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1:yP,_emscripten_bind_btIDebugDraw__drawCone_p5:td,_emscripten_bind_btSphereShape__isNonMoving_p0:alB,_emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1:RK,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0:agy,_emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1:MG,_emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1:qK,_emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0:PX,_emscripten_bind_btBoxShape__getAabbNonVirtual_p3:af0,_emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5:rL,_emscripten_bind_btCollisionShape__getAabb_p3:Wl,_emscripten_bind_btCapsuleShape____destroy___p0:fI,_emscripten_bind_btDynamicsWorld__removeRigidBody_p1:l5,_emscripten_bind_btHashInt__equals_p1:Sa,_emscripten_bind_btCapsuleShape__isCompound_p0:e3,_emscripten_bind_btTransform__setIdentity_p0:X0,_emscripten_bind_btRigidBody__getCollisionFlags_p0:ow,_emscripten_bind_btRigidBody__getRootCollisionShape_p0:oA,_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1:Fv,_emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1:K9,_emscripten_bind_btRigidBody__setLinearVelocity_p1:qO,_emscripten_bind_btTransform__getBasis_p0:XM,_emscripten_bind_btMatrix3x3__setEulerZYX_p3:ex,_emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0:sJ,_emscripten_bind_btTriangleMesh__preallocateVertices_p1:AU,_emscripten_bind_btManifoldPoint__set_m_index0_p1:aaA,_emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0:Nv,_emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0:Lw,_emscripten_bind_btDbvtProxy__set_m_aabbMin_p1:NN,_emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0:qn,_emscripten_bind_btVector3__distance2_p1:GC,_emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0:acM,_emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0:ES,_emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1:Z3,_emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0:ZC,_emscripten_bind_btConeShapeX__getBoundingSphere_p2:AN,_emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2:aln,_emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0:CR,_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1:us,_emscripten_bind_btAngularLimit__set_p5:jv,_emscripten_bind_btAngularLimit__set_p4:ju,_emscripten_bind_btAngularLimit__set_p3:jt,_emscripten_bind_btAngularLimit__set_p2:js,_emscripten_bind_btBroadphaseProxy__isConvex2d_p1:ad3,_emscripten_bind_btQuantizedBvh__setTraversalMode_p1:amr,_emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0:y8,_emscripten_bind_btCollisionWorld____destroy___p0:ST,_emscripten_bind_btTriangleIndexVertexArray__serialize_p2:afi,_emscripten_bind_btEmptyShape__isConvex2d_p0:oi,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0:JS,_emscripten_bind_btCompoundShape__calculateTemporalAabb_p6:la,_emscripten_bind_btClock__getTimeMilliseconds_p0:XA,_emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0:WF,_emscripten_bind_btRigidBody__getBroadphaseProxy_p0:p0,_emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1:alo,_emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0:Um,_emscripten_bind_btRigidBody__clearForces_p0:o1,_emscripten_bind_btRigidBody__getCollisionShape_p0:p1,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1:Yq,_emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0:sb,_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0:adn,_emscripten_bind_btSliderConstraint__getDampingDirAng_p0:_z,_emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1:i5,_emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2:QT,_emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7:jF,_emscripten_bind_btUniversalConstraint____destroy___p0:nK,_emscripten_bind_btCylinderShapeZ__setUserPointer_p1:ab8,_emscripten_bind_btHingeConstraint__getUserConstraintId_p0:yi,_emscripten_bind_btHingeConstraint__getFrameOffsetB_p0:xA,_emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1:ye,_emscripten_bind_btPoint2PointConstraint__needsFeedback_p0:abW,_emscripten_bind_btUniformScalingShape__getAabbSlow_p3:Ml,_emscripten_bind_btSphereShape__getUserPointer_p0:alA,_emscripten_bind_btRaycastVehicle__updateSuspension_p1:Jm,_emscripten_bind_btCylinderShapeX__getShapeType_p0:KA,_emscripten_bind_btSliderConstraint__getUpperAngLimit_p0:_h,_emscripten_bind_btManifoldResult__addContactPoint_p3:OW,_emscripten_bind_bt32BitAxisSweep3__rayTest_p5:alG,_emscripten_bind_bt32BitAxisSweep3__rayTest_p4:alF,_emscripten_bind_btHingeConstraint__getLimitSign_p0:xE,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2:agA,_emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0:iT,_emscripten_bind_btWheelInfo__btWheelInfo_p1:E7,_emscripten_bind_btMultiSphereShape__isConcave_p0:Pg,_emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0:Ee,_emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0:Ay,_emscripten_bind_btCapsuleShape__getName_p0:fw,_emscripten_bind_btCapsuleShape__getLocalScalingNV_p0:e9,_emscripten_bind_btMatrix3x3__getEulerYPR_p3:fm,_emscripten_bind_btRaycastVehicle__setUserConstraintId_p1:Jz,_emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0:I0,_emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0:vr,_emscripten_bind_btWheelInfo__get_m_worldTransform_p0:DS,_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0:WR,_emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0:HO,_emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0:j3,_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0:aax,_emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0:afX,_emscripten_bind_btCompoundShape__getAngularMotionDisc_p0:k8,_emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1:sv,_emscripten_bind_btRaycastVehicle__updateWheelTransform_p2:J3,_emscripten_bind_btSliderConstraint__setUpperLinLimit_p1:_3,_emscripten_bind_btCollisionWorld__rayTestSingle_p6:SS,_emscripten_bind_btSliderConstraint__get_m_objectType_p0:_e,_emscripten_bind_btMatrix3x3__serializeFloat_p1:d4,_emscripten_bind_btSliderConstraint__getLowerAngLimit_p0:_s,_emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0:ua,_emscripten_bind_btConeShapeZ__isNonMoving_p0:zu,_emscripten_bind_btSliderConstraint__btSliderConstraint_p3:$N,_emscripten_bind_btConeTwistConstraint__getTwistSpan_p0:xt,_emscripten_bind_btRigidBody__set_m_frictionSolverType_p1:oq,_emscripten_bind_btConvexHullShape__calculateLocalInertia_p2:f2,_emscripten_bind_btCollisionDispatcher__findAlgorithm_p2:uw,_emscripten_bind_btCollisionDispatcher__findAlgorithm_p3:ux,_emscripten_bind_btEmptyShape__setUserPointer_p1:ob,_emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0:akF,_emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1:akJ,_emscripten_bind_btDynamicsWorld__stepSimulation_p3:mR,_emscripten_bind_btDynamicsWorld__stepSimulation_p2:mQ,_emscripten_bind_btDynamicsWorld__stepSimulation_p1:mP,_emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1:vB,_emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0:_A,_emscripten_bind_btOptimizedBvh__serializeInPlace_p3:rJ,_emscripten_bind_btBoxShape__getLocalScalingNV_p0:afo,_emscripten_bind_btContactConstraint__setUserConstraintPtr_p1:$9,_emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0:nU,_emscripten_bind_btHingeConstraint__getUserConstraintType_p0:yk,_emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0:tJ,_emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1:af$,_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9:PN,_emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0:_c,_emscripten_bind_btIDebugDraw__drawArc_p10:tg,_emscripten_bind_btEmptyShape__getMargin_p0:oT,_emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1:uv,_emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1:IO,_emscripten_bind_btCapsuleShapeZ__isCompound_p0:aix,_emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1:Cc,_emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1:S5,_emscripten_bind_btUniversalConstraint__setEnabled_p1:mz,_emscripten_bind_btBoxShape__getAabbSlow_p3:agl,_emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2:Sx,_emscripten_bind_btVector4__setW_p1:Gg,_emscripten_bind_btVector4__setZero_p0:Gd,_emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0:p8,_emscripten_bind_btConeShape__getAabbNonVirtual_p3:Dy,_emscripten_bind_btBroadphasePair____destroy___p0:BP,_emscripten_bind_btConeShapeZ__getAabbSlow_p3:z5,_emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0:Ql,_emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3:RQ,_emscripten_bind_btConvexInternalShape__isConvex_p0:Tn,_emscripten_bind_btConeTwistConstraint__enableMotor_p1:w$,_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2:vo,_emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0:vZ,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1:adF,_emscripten_bind_btCylinderShape__getAabbNonVirtual_p3:My,_emscripten_bind_btHingeConstraint__getParam_p1:yt,_emscripten_bind_btHingeConstraint__getParam_p2:yu,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0:Yc,_emscripten_bind_btConeShapeZ__getLocalScalingNV_p0:zp,_emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0:aa0,_emscripten_bind_btConeTwistConstraint__serialize_p2:xh,_emscripten_bind_btSliderConstraint__setDbgDrawSize_p1:_K,_emscripten_bind_btOptimizedBvh__unQuantize_p1:rK,_emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0:adT,_emscripten_bind_btCapsuleShapeZ__getName_p0:aja,_emscripten_bind_btCapsuleShape__getAabbSlow_p3:fN,_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0:t4,_emscripten_bind_btAxisSweep3__removeHandle_p2:u2,_emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0:Mz,_emscripten_bind_btCollisionShape__getMargin_p0:Wn,_emscripten_bind_btIndexedMesh__get_m_numTriangles_p0:gQ,_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1:wU,_emscripten_bind_btRigidBody__getConstraintRef_p1:qa,_emscripten_bind_btConvexInternalShape__serializeSingleShape_p1:UE,_emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2:Fs,_emscripten_bind_btConvexHullShape__isCompound_p0:gD,_emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0:r2,_emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1:Hd,_emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1:RV,_emscripten_bind_btUniformScalingShape__serialize_p2:Lr,_emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1:e$,_emscripten_bind_btJacobianEntry____destroy___p0:RU,_emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1:wx,_emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0:Zf,_emscripten_bind_btCollisionShape__getShapeType_p0:VC,_emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0:vt,_emscripten_bind_btBU_Simplex1to4__getEdge_p3:E$,_emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1:U9,_emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0:KH,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0:XW,_emscripten_bind_btQuaternion__setValue_p4:ah5,_emscripten_bind_btCollisionShape__serializeSingleShape_p1:Ws,_emscripten_bind_btRigidBody__set_m_contactSolverType_p1:qm,_emscripten_bind_btContactConstraint__needsFeedback_p0:$_,_emscripten_bind_btAngularLimit__fit_p1:jq,_emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0:OQ,_emscripten_bind_btDispatcher__clearManifold_p1:RJ,_emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1:E2,_emscripten_bind_btDbvtProxy__set_leaf_p1:Nk,_emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1:tT,_emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0:DK,_emscripten_bind_btCompoundShape__getName_p0:kX,_emscripten_bind_btCollisionObject__getCollisionShape_p0:hk,_emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0:Wi,_emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0:ZE,_emscripten_bind_btDynamicsWorld__debugDrawWorld_p0:mJ,_emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1:Ef,_emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0:$H,_emscripten_bind_btWheelInfo__set_m_rotation_p1:Em,_emscripten_bind_btDbvtBroadphase__benchmark_p1:r4,_emscripten_bind_btHinge2Constraint__serialize_p2:Ij,_emscripten_bind_btDefaultCollisionConfiguration____destroy___p0:jz,_emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0:rp,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1:KG,_emscripten_bind_btConeTwistConstraint__setLimit_p6:xe,_emscripten_bind_btTypedConstraint__enableFeedback_p1:q3,_emscripten_bind_btConeTwistConstraint__setLimit_p4:xc,_emscripten_bind_btConeTwistConstraint__setLimit_p5:xd,_emscripten_bind_btConeTwistConstraint__setLimit_p2:xa,_emscripten_bind_btConeTwistConstraint__setLimit_p3:xb,_emscripten_bind_btMultiSphereShape__getAabb_p3:Ps,_emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0:Pn,_emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1:ab6,_emscripten_bind_btAxisSweep3__destroyProxy_p2:vk,_emscripten_bind_btManifoldPoint__set_m_partId1_p1:aau,_emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3:rB,_emscripten_bind_btConvexHullShape__btConvexHullShape_p3:gj,_emscripten_bind_btConvexHullShape__btConvexHullShape_p2:gi,_emscripten_bind_btConvexHullShape__btConvexHullShape_p1:gh,_emscripten_bind_btConvexHullShape__btConvexHullShape_p0:gg,_emscripten_bind_btHashString__btHashString_p1:am7,_emscripten_bind_btVector3__length2_p0:G2,_emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2:s_,_emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0:lD,_emscripten_bind_btPairCachingGhostObject__getHitFraction_p0:Uh,_emscripten_bind_btGhostObject__getOverlappingObject_p1:ajN,_emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7:Ji,_emscripten_bind_btDbvtProxy__get_leaf_p0:Na,_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5:CX,_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4:CW,_emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0:zM,_emscripten_bind_btRigidBody__getWorldTransform_p0:p$,_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0:amw,_emscripten_bind_btQuantizedBvh__deSerializeDouble_p1:amV,_emscripten_bind_btRigidBody__getCcdMotionThreshold_p0:pV,_emscripten_bind_btStridingMeshInterface__preallocateVertices_p1:abs,_emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0:is,_emscripten_bind_btSerializer__registerNameForPointer_p2:H4,_emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0:aah,_emscripten_bind_btStaticPlaneShape__isConvex_p0:Vj,_emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1:adk,_emscripten_bind_btConeShapeX__calculateLocalInertia_p2:z7,_emscripten_bind_btHingeConstraint__getObjectType_p0:x3,_emscripten_bind_btBU_Simplex1to4__getUserPointer_p0:Ez,_emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1:Li,_emscripten_bind_btRigidBody__getRestitution_p0:qy,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1:alf,_emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2:afI,_emscripten_bind_btHingeConstraint__getConstraintType_p0:xY,_emscripten_bind_btRigidBody__getFlags_p0:qf,_emscripten_bind_btConvexHullShape__setLocalScaling_p1:gm,_emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0:vH,_emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0:sn,_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0:lm,_emscripten_bind_btDynamicsWorld__clearForces_p0:lW,_emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2:adX,_emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0:WI,_emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1:mm,_emscripten_bind_btRigidBody__computeImpulseDenominator_p2:oH,_emscripten_bind_btDbvtBroadphase__set_m_prediction_p1:tU,_emscripten_bind_btSerializer__getBufferPointer_p0:H$,_emscripten_bind_btSerializer__startSerialization_p0:HX,_emscripten_bind_btPolyhedralConvexShape__getAabb_p3:sW,_emscripten_bind_btPairCachingGhostObject__forceActivationState_p1:Ub,_emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0:P8,_emscripten_bind_btConvexTriangleMeshShape__getEdge_p3:iC,_emscripten_bind_btBoxShape__getUserPointer_p0:aft,_emscripten_bind_btHinge2Constraint__setEnabled_p1:HG,_emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0:lF,_emscripten_bind_btRigidBody__getAabb_p2:qD,_emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1:oJ,_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1:Bv,_emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4:xF,_emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1:Nt,_emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1:yM,_emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1:qC,_emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0:v9,_emscripten_bind_btConvexHullShape__recalcLocalAabb_p0:gt,_emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0:_i,_emscripten_bind_btPoint2PointConstraint__setParam_p2:abF,_emscripten_bind_btPoint2PointConstraint__setParam_p3:abG,_emscripten_bind_btSerializer__findPointer_p1:H3,_emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0:Ha,_emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1:UN,_emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:fJ,_emscripten_bind_btRigidBody__setDeactivationTime_p1:qb,_emscripten_bind_btConeTwistConstraint__getFixThresh_p0:w5,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2:adW,_emscripten_bind_btConeShape__setUserPointer_p1:CE,_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2:wO,_emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1:BZ,_emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1:Se,_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4:xk,_emscripten_bind_btTypedConstraint__getRigidBodyB_p0:q0,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3:agC,_emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0:uK,_emscripten_bind_btGhostObject__getInternalType_p0:aj_,_emscripten_bind_btConvexHullShape__getNumPlanes_p0:f3,_emscripten_bind_btDynamicsWorld__getConstraint_p1:mN,_emscripten_bind_btConvexShape__setMargin_p1:Rb,_emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1:tR,_emscripten_bind_btGeneric6DofConstraint__getAxis_p1:W7,_emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1:iF,_emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1:V2,_emscripten_bind_btVector4____destroy___p0:F9,_emscripten_bind_btVector3__z_p0:G8,_emscripten_bind_btGhostObject__setIslandTag_p1:ajJ,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0:YI,_emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3:am2,_emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0:Sj,_emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2:lC,_emscripten_bind_btSliderConstraint__getAngDepth_p0:Zk,_emscripten_bind_btCylinderShape__getMarginNV_p0:Mb,_emscripten_bind_btEmptyShape__isConcave_p0:ok,_emscripten_bind_btTypedObject____destroy___p0:hU,_emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0:w8,_emscripten_bind_btPairCachingGhostObject__setIslandTag_p1:Ue,_emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1:g$,_emscripten_bind_btPolyhedralConvexShape__isInside_p2:r0,_emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0:r6,_emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0:i_,_emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0:jK,_emscripten_bind_btDbvtProxy__get_m_clientObject_p0:M6,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1:KK,_emscripten_bind_btCylinderShapeZ__getUpAxis_p0:ab9,_emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1:adZ,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0:Hq,_emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1:BV,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1:JT,_emscripten_bind_btSliderConstraint__getLinearPos_p0:_b,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0:Hj,_emscripten_bind_btQuadWord__setMax_p1:LV,_emscripten_bind_btRigidBody__wantsSleeping_p0:oo,_emscripten_bind_btOptimizedBvh__deSerializeDouble_p1:rF,_emscripten_bind_btEmptyShape__setLocalScaling_p1:oQ,_emscripten_bind_btBroadphaseProxy__isInfinite_p1:ad_,_emscripten_bind_btCollisionAlgorithm__processCollision_p4:al_,_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0:ku,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0:agN,_emscripten_bind_btBU_Simplex1to4__getNumVertices_p0:EQ,_emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3:K1,_emscripten_bind_btWheelInfo__get_m_frictionSlip_p0:DT,_emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0:B6,_emscripten_bind_btStackAlloc__beginBlock_p0:mt,_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0:jp,_emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3:amR,_emscripten_bind_btConeShape__isConvex2d_p0:CP,_emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0:aeG,_emscripten_bind_btHeightfieldTerrainShape__serialize_p2:PJ,_emscripten_bind_btCollisionDispatcher__getNewManifold_p2:uE,_emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0:vO,_emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2:iS,_emscripten_bind_btUniversalConstraint__calcAnchorPos_p0:nE,_emscripten_bind_btTransform__deSerializeDouble_p1:Xu,_emscripten_bind_btCylinderShapeX__getAabbSlow_p3:Lj,_emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0:i3,_emscripten_bind_btQuaternion__btQuaternion_p4:ajE,_emscripten_bind_btQuaternion__btQuaternion_p3:ail,_emscripten_bind_btQuaternion__btQuaternion_p2:aik,_emscripten_bind_btQuaternion__btQuaternion_p0:aij,_emscripten_bind_btHinge2Constraint__setUserConstraintId_p1:Iy,_emscripten_bind_btUniversalConstraint__needsFeedback_p0:nV,_emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1:Dh,_emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0:$L,_emscripten_bind_btBroadphaseInterface__getAabb_p3:i7,_emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1:afa,_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2:jl,_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1:jk,_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0:jj,_emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2:agc,_emscripten_bind_btRigidBody__getGravity_p0:oB,_emscripten_bind_btRigidBody__getAngularFactor_p0:pv,_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1:Ae,_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0:yV,_emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0:zf,_emscripten_bind_btSimpleDynamicsWorld__setGravity_p1:NZ,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1:KE,_emscripten_bind_btSphereShape__isConvex2d_p0:alC,_emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3:iV,_emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0:vP,_emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1:MB,_emscripten_bind_btConvexHullShape__getAabb_p3:gn,_emscripten_bind_btVector3__lerp_p2:GP,_emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1:vm,_emscripten_bind_btPairCachingGhostObject__upcast_p1:U0,_emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1:eU,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0:Ro,_emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1:IX,_emscripten_bind_btHingeConstraint__setAxis_p1:yU,_emscripten_bind_btCompoundShape__serializeSingleShape_p1:k9,_emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1:Wc,_emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:AM,_emscripten_bind_btRigidBody__internalGetAngularFactor_p0:ph,_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1:ZI,_emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0:NH,_emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0:w_,_emscripten_bind_btManifoldPoint__set_m_distance1_p1:aaR,_emscripten_bind_btVector3__setValue_p3:GD,_emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1:WW,_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1:ajf,_emscripten_bind_btMatrix3x3__op_add_p1:ek,_emscripten_bind_btStaticPlaneShape__setMargin_p1:VX,_emscripten_bind_btTransform____destroy___p0:X5,_emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0:vN,_emscripten_bind_btRotationalLimitMotor__get_m_damping_p0:y9,_emscripten_bind_btCollisionWorld__getPairCache_p0:SW,_emscripten_bind_btHashInt____destroy___p0:SA,_emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0:ams,_emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1:alT,_emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0:h8,_emscripten_bind_btRigidBody__setHitFraction_p1:qS,_emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0:R6,_emscripten_bind_btVector4__dot_p1:Gl,_emscripten_bind_btDbvtBroadphase__destroyProxy_p2:up,_emscripten_bind_btCollisionObject__serializeSingleObject_p1:h3,_emscripten_bind_btDispatcherInfo__get_m_timeStep_p0:eR,_emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0:sy,_emscripten_bind_btTriangleMesh__btTriangleMesh_p0:A0,_emscripten_bind_btJacobianEntry__get_m_bJ_p0:RC,_emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0:RW,_emscripten_bind_btRotationalLimitMotor____destroy___p0:zG,_emscripten_bind_btGhostObject__convexSweepTest_p4:akv,_emscripten_bind_btGhostObject__convexSweepTest_p5:akw,_emscripten_bind_btPoint2PointConstraint____destroy___p0:acr,_emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0:x$,_emscripten_bind_btCapsuleShape__getUserPointer_p0:fd,_emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1:pq,_emscripten_bind_btConcaveShape__calculateTemporalAabb_p6:akM,_emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1:Uz,_emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1:nA,_emscripten_bind_btEmptyShape__getAabb_p3:oR,_emscripten_bind_btAxisSweep3__addHandle_p7:u$,_emscripten_bind_btHinge2Constraint__setParam_p2:Ih,_emscripten_bind_btHinge2Constraint__setParam_p3:Ii,_emscripten_bind_btCapsuleShapeX__setMargin_p1:ahL,_emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3:TF,_emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1:wo,_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5:ae7,_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0:ae6,_emscripten_bind_btCollisionObject__setAnisotropicFriction_p1:h4,_emscripten_bind_btQuaternion__y_p0:ait,_emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0:Ou,_emscripten_bind_btDynamicsWorld__updateAabbs_p0:l7,_emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0:Ss,_emscripten_bind_btContactConstraint__getParam_p1:aa6,_emscripten_bind_btJacobianEntry__set_m_bJ_p1:Su,_emscripten_bind_btTypedConstraint__needsFeedback_p0:rc,_emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0:hL,_emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1:Sm,_emscripten_bind_btBoxShape__setMargin_p1:agn,_emscripten_bind_btConeShapeZ__getAabb_p3:zU,_emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1:y_,_emscripten_bind_btBroadphasePair__set_m_algorithm_p1:Bq,_emscripten_bind_btVector3__distance_p1:HQ,_emscripten_bind_btConeShapeX__getAabb_p3:AD,_emscripten_bind_btStaticPlaneShape__isConvex2d_p0:Vo,_emscripten_bind_btHashPtr__btHashPtr_p1:U$,_emscripten_bind_btQuaternion__op_add_p1:ah2,_emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3:wi,_emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0:iZ,_emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0:ab1,_emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0:fv,_emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0:ack,_emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0:acm,_emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0:qL,_emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1:ahv,_emscripten_bind_btBroadphaseProxy__isSoftBody_p1:ad4,_emscripten_bind_btConeShape__getMarginNonVirtual_p0:DD,_emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0:yS,_emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3:QJ,_emscripten_bind_btGhostObject__getWorldTransform_p0:ajU,_emscripten_bind_btHingeConstraint__getAppliedImpulse_p0:yG,_emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1:Xq,_emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4:Is,_emscripten_bind_btUniversalConstraint__setLowerLimit_p2:n3,_emscripten_bind_btTransform__deSerializeFloat_p1:Xv,_emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0:y2,_emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3:ym,_emscripten_bind_btHinge2Constraint__setAxis_p2:Js,_emscripten_bind_btConeTwistConstraint__getAFrame_p0:xu,_emscripten_bind_btCylinderShapeX__getRadius_p0:K0,_emscripten_bind_btStackAlloc__allocate_p1:ms,_emscripten_bind_btDynamicsWorld__addRigidBody_p1:lU,_emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0:By,_emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0:r5,_emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1:zS,_emscripten_bind_btConeShape__serializeSingleShape_p1:EE,_emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0:iz,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1:Kf,_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1:OJ,_emscripten_bind_btBoxShape__isConvex2d_p0:afB,_emscripten_bind_btMatrix3x3__setEulerYPR_p3:eE,_emscripten_bind_btRigidBody__setCollisionShape_p1:o2,_emscripten_bind_btCollisionWorld__objectQuerySingle_p8:SU,_emscripten_bind_btConcaveShape__isInfinite_p0:akj,_emscripten_bind_btHinge2Constraint__setFrames_p2:Ja,_emscripten_bind_btHingeConstraint__setLimit_p3:yw,_emscripten_bind_btHingeConstraint__setLimit_p2:yv,_emscripten_bind_btMatrix3x3__tdoty_p1:d6,_emscripten_bind_btConcaveShape__getShapeType_p0:akp,_emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0:g5,_emscripten_bind_btHingeConstraint__setLimit_p5:yy,_emscripten_bind_btCylinderShapeZ__getMargin_p0:acJ,_emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1:QI,_emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0:ahf,_emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1:Sv,_emscripten_bind_btCapsuleShape__calculateLocalInertia_p2:fo,_emscripten_bind_btMultiSphereShape__serializeSingleShape_p1:PF,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1:XQ,_emscripten_bind_btPairCachingGhostObject__setRestitution_p1:Vb,_emscripten_bind_btDefaultMotionState__getWorldTransform_p1:BY,_emscripten_bind_btDbvtProxy__get_m_aabbMax_p0:Nf,_emscripten_bind_btVector3____destroy___p0:GR,_emscripten_bind_btConeShapeX__getRadius_p0:zF,_emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0:V$,_emscripten_bind_bt32BitAxisSweep3__printStats_p0:alQ,_emscripten_bind_btMatrix3x3__tdotz_p1:d3,_emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0:ajm,_emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0:xK,_emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0:BK,_emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0:EY,_emscripten_bind_btDispatcherInfo__set_m_stepCount_p1:eI,_emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1:abD,_emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0:JM,_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2:wh,_emscripten_bind_btConvexHullShape__getShapeType_p0:gF,_emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2:V9,_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1:adS,_emscripten_bind_btHingeConstraint__setupSolverConstraint_p4:yA,_emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1:V0,_emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0:Y5,_emscripten_bind_CProfileNode__Return_p0:YL,_emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4:n4,_emscripten_bind_btGhostObject__setWorldTransform_p1:akz,_emscripten_bind_btStaticPlaneShape__isSoftBody_p0:Vp,_emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0:fP,_emscripten_bind_bt32BitAxisSweep3__createProxy_p8:alR,_emscripten_bind_btVector4__getSkewSymmetricMatrix_p3:Fg,_emscripten_bind_btCapsuleShapeZ__getMargin_p0:aji,_emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0:W5,_emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0:QU,_emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1:Pz,_emscripten_bind_btGhostObject__isStaticObject_p0:ajO,_emscripten_bind_btHinge2Constraint__isLimited_p1:ID,_emscripten_bind_btRaycastVehicle__addWheel_p7:J1,_emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0:eY,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1:ahc,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1:ac4,_emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1:w4,_emscripten_bind_btConcaveShape__setLocalScaling_p1:akH,_emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1:aeb,_emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1:v_,_emscripten_bind_btGhostObject__getCcdMotionThreshold_p0:ajX,_emscripten_bind_btDbvtProxy____destroy___p0:NQ,_emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0:f5,_emscripten_bind_btDynamicsWorld__debugDrawObject_p3:l_,_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0:ach,_emscripten_bind_btMatrix3x3__tdotx_p1:d5,_emscripten_bind_btTriangleInfo__btTriangleInfo_p0:Iq,_emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0:D9,_emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1:sx,_emscripten_bind_btConvexShape__getAabb_p3:Q7,_emscripten_bind_btConeShapeX__btConeShapeX_p2:Az,_emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1:El,_emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0:TD,_emscripten_bind_btCompoundShape__serialize_p2:kF,_emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1:nY,_emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1:DM,_emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0:amo,_emscripten_bind_btConcaveShape__setUserPointer_p1:akf,_emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0:s0,_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3:Ct,_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2:Cs,_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1:Cr,_emscripten_bind_btConeTwistConstraint__setFrames_p2:xj,_emscripten_bind_btManifoldPoint__getAppliedImpulse_p0:aaT,_emscripten_bind_btUniformScalingShape__isConvex2d_p0:KU,_emscripten_bind_btDefaultMotionState__set_m_userPointer_p1:BE,_emscripten_bind_btWheelInfo__set_m_worldTransform_p1:EL,_emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0:lx,_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1:adR,_emscripten_bind_btSimpleBroadphase__rayTest_p4:kj,_emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0:DR,_emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0:PV,_emscripten_bind_btCollisionObject__setDeactivationTime_p1:hC,_emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1:I7,_emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0:vq,_emscripten_bind_btCollisionShape__setUserPointer_p1:Vs,_emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0:amy,_emscripten_bind_btVector4__setX_p1:FT,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3:ahq,_emscripten_bind_btAngularLimit__getHalfRange_p0:jh,_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1:agv,_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0:uW,_emscripten_bind_btCompoundShape__isSoftBody_p0:kU,_emscripten_bind_btPolyhedralConvexShape__isConcave_p0:sh,_emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0:DL,_emscripten_bind_btRigidBody__btRigidBody_p3:pB,_emscripten_bind_btRigidBody__btRigidBody_p1:pA,_emscripten_bind_btConcaveShape__getBoundingSphere_p2:akN,_emscripten_bind_btGhostObject__btGhostObject_p0:aky,_emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0:Dg,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1:JR,_emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0:WM,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0:agS,_emscripten_bind_btRigidBody__isInWorld_p0:pp,_emscripten_bind_btDynamicsWorld__updateSingleAabb_p1:mU,_emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0:wA,_emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0:B5,_emscripten_bind_btDbvtBroadphase__get_m_paircache_p0:tW,_emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1:n7,_emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1:ae9,_emscripten_bind_btTriangleMesh__hasPremadeAabb_p0:Bg,_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1:ajc,_emscripten_bind_btCollisionObject__getRootCollisionShape_p0:hy,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1:Hr,_emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1:tQ,_emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0:xp,_emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0:ha,_emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1:ajl,_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2:kv,_emscripten_bind_btRigidBody__setFriction_p1:qj,_emscripten_bind_btCylinderShapeX__getAabb_p3:K7,_emscripten_bind_btVector4__closestAxis_p0:F4,_emscripten_bind_btConeShape__setLocalScaling_p1:Du,_emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1:s6,_emscripten_bind_btVector4__w_p0:Gh,_emscripten_bind_btJacobianEntry__set_m_aJ_p1:St,_emscripten_bind_btVector4__setZ_p1:FV,_emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3:Zx,_emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1:lL,_emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1:ns,_emscripten_bind_btVector3__furthestAxis_p0:HU,_emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:LI,_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0:Bu,_emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1:Jj,_emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1:Nu,_emscripten_bind_btUniversalConstraint__getUserConstraintType_p0:n_,_emscripten_bind_btUniversalConstraint__getRigidBodyB_p0:mw,_emscripten_bind_btEmptyShape__calculateLocalInertia_p2:oK,_emscripten_bind_btPairCachingGhostObject__setUserPointer_p1:T9,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1:Hh,_emscripten_bind_btPersistentManifold__clearManifold_p0:j4,_emscripten_bind_btVector3__safeNormalize_p0:GU,_emscripten_bind_btConvexTriangleMeshShape__isCompound_p0:iq,_emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0:Vc,_emscripten_bind_btVector4__isZero_p0:FR,_emscripten_bind_btVector4__setY_p1:FU,_emscripten_bind_btVector4__lerp_p2:F1,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0:KB,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0:Yn,_emscripten_bind_btDispatcher__needsCollision_p2:RS,_emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0:hz,_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1:aey,_emscripten_bind_btCylinderShapeX__getBoundingSphere_p2:Lg,_emscripten_bind_btRigidBody__getNumConstraintRefs_p0:qx,_emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0:acB,_emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0:y4,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1:YC,_emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0:$r,_emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1:Xn,_emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0:aba,_emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0:_d,_emscripten_bind_btTypedConstraint__getInfo1_p1:rT,_emscripten_bind_btQuaternion__getW_p0:ah0,_emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3:ajs,_emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2:adt,_emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2:NW,_emscripten_bind_btSphereShape__setMargin_p1:amf,_emscripten_bind_btQuadWord____destroy___p0:Mq,_emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1:_u,_emscripten_bind_btSphereShape__getLocalScalingNV_p0:alw,_emscripten_bind_btConeShape__getAabb_p3:Dv,_emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0:Zl,_emscripten_bind_btBoxShape__getVertex_p2:afZ,_emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1:_R,_emscripten_bind_btCylinderShapeX__isCompound_p0:J0,_emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1:C4,_emscripten_bind_btGhostObject__activate_p0:ajH,_emscripten_bind_btCollisionWorld__debugDrawWorld_p0:SO,_emscripten_bind_btDbvtProxy__set_m_clientObject_p1:M9,_emscripten_bind_btSphereShape__getShapeType_p0:amq,_emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1:Eo,_emscripten_bind_btCollisionObject__getHitFraction_p0:hA,_emscripten_bind_btCompoundShape__updateChildTransform_p3:k6,_emscripten_bind_btCompoundShape__updateChildTransform_p2:k5,_emscripten_bind_btQuadWord__setZ_p1:L5,_emscripten_bind_btTriangleMesh__btTriangleMesh_p2:A2,_emscripten_bind_btTriangleMesh__btTriangleMesh_p1:A1,_emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2:ajh,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1:H8,_emscripten_bind_btMatrix3x3__timesTranspose_p1:fl,_emscripten_bind_btMatrix3x3__absolute_p0:ed,_emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0:Oj,_emscripten_bind_btConeShapeX__localGetSupportingVertex_p1:z8,_emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1:K8,_emscripten_bind_btRaycastVehicle__setSteeringValue_p2:JO,_emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2:ae1,_emscripten_bind_btConeShape__getHeight_p0:CI,_emscripten_bind_btBU_Simplex1to4__getPlane_p3:FD,_emscripten_bind_btVector3__setY_p1:G_,_emscripten_bind_bt32BitAxisSweep3__rayTest_p3:alE,_emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:QS,_emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0:vD,_emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0:lO,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1:Yf,_emscripten_bind_btConvexShape__setUserPointer_p1:Qc,_emscripten_bind_btConeShapeZ____destroy___p0:z0,_emscripten_bind_btConeShapeX__serializeSingleShape_p1:AP,_emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0:ly,_emscripten_bind_btQuadWord__setX_p1:L3,_emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0:eM,_emscripten_bind_btPersistentManifold__btPersistentManifold_p0:kx,_emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1:wl,_emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0:gd,_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1:TQ,_emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1:C3,_emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0:za,_emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0:Vn,_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2:Cq,_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1:Cp,_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0:Co,_emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0:P3,_emscripten_bind_btAxisSweep3__resetPool_p1:u9,_emscripten_bind_btOptimizedBvh__isQuantized_p0:qY,_emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4:Jh,_emscripten_bind_btVector4__setMax_p1:FJ,_emscripten_bind_btConeShapeZ__getName_p0:zQ,_emscripten_bind_btActionInterface__debugDraw_p1:GL,_emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0:_G,_emscripten_bind_btTransform__mult_p2:X4,_emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1:_p,_emscripten_bind_btGhostObject__setContactProcessingThreshold_p1:aiU,_emscripten_bind_btVector3__btVector3_p0:GW,_emscripten_bind_btConeShapeX__getLocalScaling_p0:Aa,_emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2:lQ,_emscripten_bind_btBU_Simplex1to4__getNumEdges_p0:EZ,_emscripten_bind_btCollisionShape__getName_p0:Wj,_emscripten_bind_btSliderConstraint__getUserConstraintType_p0:$h,_emscripten_bind_btCylinderShapeZ__getAabb_p3:acG,_emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0:ald,_emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0:hF,_emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0:SF,_emscripten_bind_btCylinderShapeX__getMarginNV_p0:Kq,_emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1:ajx,_emscripten_bind_btEmptyShape__getName_p0:oP,_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2:J7,_emscripten_bind_btHingeConstraint__getDbgDrawSize_p0:x9,_emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1:Ts,_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1:J6,_emscripten_bind_btDbvtBroadphase__get_m_pid_p0:sz,_emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1:adm,_emscripten_bind_btRigidBody__getPushVelocity_p0:qh,_emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0:VR,_emscripten_bind_btConeShapeX__isConcave_p0:Ak,_emscripten_bind_btBoxShape__isCompound_p0:afp,_emscripten_bind_btDbvtBroadphase__set_m_pid_p1:si,_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2:jE,_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0:jD,_emscripten_bind_btHashPtr__equals_p1:TR,_emscripten_bind_btSimpleBroadphaseProxy____destroy___p0:uu,_emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1:k2,_emscripten_bind_btConvexInternalShape__isConvex2d_p0:TT,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0:$u,_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0:VH,_emscripten_bind_btConeShape__getContactBreakingThreshold_p1:Dx,_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1:B8,_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0:PQ,_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3:B9,_emscripten_bind_btDbvtProxy__isNonMoving_p1:MX,_emscripten_bind_btCollisionShape__getLocalScaling_p0:Wh,_emscripten_bind_btQuadWord__x_p0:L1,_emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0:ul,_emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0:WV,_emscripten_bind_btConstraintSolver__reset_p0:Ju,_emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3:amT,_emscripten_bind_btBvhTriangleMeshShape__refitTree_p2:Zv,_emscripten_bind_btCylinderShapeX__serialize_p2:KY,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1:$A,_emscripten_bind_bt32BitAxisSweep3__unQuantize_p3:alp,_emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0:sd,_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0:t3,_emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1:akV,_emscripten_bind_btEmptyShape____destroy___p0:oV,_emscripten_bind_btContactConstraint____destroy___p0:abc,_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1:C6,_emscripten_bind_btTriangleMesh__getUse32bitIndices_p0:Aw,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0:Rv,_emscripten_bind_btDispatcherInfo__set_m_useEpa_p1:e2,_emscripten_bind_btJacobianEntry__btJacobianEntry_p6:R_,_emscripten_bind_btDispatcherInfo__get_m_useEpa_p0:eL,_emscripten_bind_btConvexTriangleMeshShape__getName_p0:iB,_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2:adv,_emscripten_bind_btSliderConstraint__enableFeedback_p1:_a,_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0:adU,_emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0:z$,_emscripten_bind_btGeneric6DofConstraint__getInfo1_p1:W3,_emscripten_bind_btJacobianEntry__btJacobianEntry_p4:RY,_emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0:R8,_emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0:eS,_emscripten_bind_btConeShapeZ__isCompound_p0:zj,_emscripten_bind_btConeShape__getName_p0:Dr,_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3:C8,_emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0:Ux,_emscripten_bind_btMatrix3x3__deSerialize_p1:eF,_emscripten_bind_btJacobianEntry__btJacobianEntry_p9:S0,_emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0:vz,_emscripten_bind_btTransform__setFromOpenGLMatrix_p1:Xs,_emscripten_bind_btRigidBody__updateInertiaTensor_p0:qi,_emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0:nF,_emscripten_bind_btEmptyShape__getBoundingSphere_p2:oZ,_emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0:IS,_emscripten_bind_btTypedConstraint__set_m_objectType_p1:q2,_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2:Iv,_emscripten_bind_btJacobianEntry__getNonDiagonal_p3:R5,_emscripten_bind_btJacobianEntry__getNonDiagonal_p2:R4,_emscripten_bind_btMultiSphereShape__getShapeType_p0:Ph,_emscripten_bind_btMultiSphereShape__getUserPointer_p0:Pb,_emscripten_bind_btRigidBody__setAnisotropicFriction_p1:qF,_emscripten_bind_btStackAlloc__btStackAlloc_p1:ng,_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0:I3,_emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1:ajr,_emscripten_bind_btConeTwistConstraint__getUid_p0:w2,_emscripten_bind_btCylinderShapeZ__isInfinite_p0:ace,_emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3:Zu,_emscripten_bind_btSliderConstraint__setEnabled_p1:_I,_emscripten_bind_btSphereShape__setLocalScaling_p1:al9,_emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1:aeu,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1:KF,_emscripten_bind_btPersistentManifold__get_m_objectType_p0:j_,_emscripten_bind_btCapsuleShapeX__getMargin_p0:ahJ,_emscripten_bind_btSliderConstraint__setUpperAngLimit_p1:_W,_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1:uV,_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1:uX,_emscripten_bind_btBU_Simplex1to4__reset_p0:E9,_emscripten_bind_btHingeConstraint__setUserConstraintType_p1:yc,_emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1:Ui,_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1:ZP,_emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2:lB,_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2:ZQ,_emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1:TM,_emscripten_bind_btConcaveShape__isCompound_p0:akg,_emscripten_bind_btTriangleIndexVertexArray__getScaling_p0:aeN,_emscripten_bind_btJacobianEntry__get_m_Adiag_p0:R3,_emscripten_bind_btGhostPairCallback____destroy___p0:am3,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1:Yk,_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1:aeJ,_emscripten_bind_btHingeConstraint__enableFeedback_p1:xZ,_emscripten_bind_btUniversalConstraint__serialize_p2:nI,_emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:acO,_emscripten_bind_btStorageResult__get_m_closestPointInB_p0:M4,_emscripten_bind_btCylinderShape__isPolyhedral_p0:L9,_emscripten_bind_btConeShape__getMarginNV_p0:CF,_emscripten_bind_btConeShape__getBoundingSphere_p2:EC,_emscripten_bind_btHinge2Constraint__calculateTransforms_p0:Jb,_emscripten_bind_btGeneric6DofConstraint__serialize_p2:W9,_emscripten_bind_btStackAlloc____destroy___p0:m1,_emscripten_bind_btUniversalConstraint__enableFeedback_p1:nn,_emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0:Ug,_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2:kJ,_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1:jS,_emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1:Z9,_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1:iD,_emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1:aet,_emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0:yf,_emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0:ac$,_emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0:lG,_emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0:T0,_emscripten_bind_btDbvtBroadphase____destroy___p0:tI,_emscripten_bind_btTriangleMesh__serialize_p2:Ba,_emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1:sA,_emscripten_bind_btHinge2Constraint__getConstraintType_p0:Iz,_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1:jm,_emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2:zY,_emscripten_bind_btMultiSphereShape__getMargin_p0:Pu,_emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1:I9,_emscripten_bind_btSliderConstraint__btSliderConstraint_p5:$O,_emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0:yR,_emscripten_bind_btDynamicsWorld__addCharacter_p1:mS,_emscripten_bind_btCollisionObject__activate_p0:g3,_emscripten_bind_btCollisionObject__activate_p1:g4,_emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0:$n,_emscripten_bind_btMatrix3x3__diagonalize_p3:eu,_emscripten_bind_btCapsuleShape__getShapeType_p0:fQ,_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7:PM,_emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0:Ej,_emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0:Q3,_emscripten_bind_btConeShapeX__isConvex2d_p0:An,_emscripten_bind_btRaycastVehicle__getRigidBody_p0:Jn,_emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0:Pf,_emscripten_bind_btDbvtProxy__get_m_aabbMin_p0:Nb,_emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0:PU,_emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0:zb,_emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0:O7,_emscripten_bind_btSliderConstraint__getRigidBodyA_p0:Zj,_emscripten_bind_btStaticPlaneShape__getAabb_p3:VU,_emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1:IP,_emscripten_bind_CProfileNode____destroy___p0:YK,_emscripten_bind_btConvexHullShape__getNumPoints_p0:gG,_emscripten_bind_btConeShape__isCompound_p0:CD,_emscripten_bind_btMatrix3x3__getColumn_p1:d7,_emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0:j8,_emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0:eQ,_emscripten_bind_btIDebugDraw__drawBox_p4:tr,_emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2:ahK,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1:$s,_emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1:Cm,_emscripten_bind_btIDebugDraw__drawBox_p3:tq,_emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2:abq,_emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0:yZ,_emscripten_bind_btConstraintSolver__solveGroup_p10:Jw,_emscripten_bind_btHinge2Constraint__setUserConstraintType_p1:IM,_emscripten_bind_btMatrix3x3____destroy___p0:fk,_emscripten_bind_btCollisionWorld__getDebugDrawer_p0:SE,_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3:N1,_emscripten_bind_btConeShapeZ__isConvex_p0:zr,_emscripten_bind_btPairCachingGhostObject__getFriction_p0:TZ,_emscripten_bind_btRigidBody__serializeSingleObject_p1:qE,_emscripten_bind_btOptimizedBvh__updateBvhNodes_p4:rw,_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0:aaw,_emscripten_bind_btSphereShape__isPolyhedral_p0:alu,_emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0:Og,_emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4:jI,_emscripten_bind_btRigidBody__saveKinematicState_p1:qG,_emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1:_m,_emscripten_bind_btCollisionObject____destroy___p0:h5,_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8:afc,_emscripten_bind_btWheelInfo__set_m_steering_p1:Ea,_emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0:IL,_emscripten_bind_btConvexInternalShape__setUserPointer_p1:Tj,_emscripten_bind_btGhostObject__getCompanionId_p0:ajY,_emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1:tS,_emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0:NV,_emscripten_bind_btTransform__getIdentity_p0:XF,_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1:sU,_emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1:Av,_emscripten_bind_btBvhTriangleMeshShape__isCompound_p0:Y6,_emscripten_bind_btCompoundShape__btCompoundShape_p1:kV,_emscripten_bind_btCompoundShape__btCompoundShape_p0:kI,_emscripten_bind_btPairCachingGhostObject__setHitFraction_p1:Uf,_emscripten_bind_btCollisionObject__getWorldTransform_p0:hp,_emscripten_bind_btContactConstraint__setParam_p3:aa5,_emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0:K$,_emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0:Cy,_emscripten_bind_btCylinderShape__calculateLocalInertia_p2:Ms,_emscripten_bind_btTransform__serialize_p1:XJ,_emscripten_bind_btStorageResult__get_m_distance_p0:M3,_emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0:Z5,_emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0:al3,_emscripten_bind_btIndexedMesh__get_m_numVertices_p0:gK,_emscripten_bind_btMultiSphereShape__setMargin_p1:Px,_emscripten_bind_btBoxShape__isSoftBody_p0:afw,_emscripten_bind_btDbvtProxy__isCompound_p1:MU,_emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0:gC,_emscripten_bind_btEmptyShape__isConvex_p0:oe,_emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1:AA,_emscripten_bind_btHingeConstraint__setAngularOnly_p1:yg,_emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9:Th,_emscripten_bind_btCapsuleShapeX__getAabbSlow_p3:ahT,_emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0:Ny,_emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3:Wb,_emscripten_bind_btCapsuleShapeX__isPolyhedral_p0:agX,_emscripten_bind_btVector4__z_p0:Gk,_emscripten_bind_btRigidBody__getUserPointer_p0:pn,_emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1:$b,_emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0:ajM,_emscripten_bind_btDbvtBroadphase__set_m_paircache_p1:sm,_emscripten_bind_btHinge2Constraint__setDamping_p2:HP,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1:Ye,_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0:aeT,_emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0:iK,_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2:aeU,_emscripten_bind_btConvexHullShape__getBoundingSphere_p2:hN,_emscripten_bind_btContactConstraint__getUserConstraintId_p0:$S,_emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3:Jk,_emscripten_bind_btConeTwistConstraint__get_m_objectType_p0:vQ,_emscripten_bind_btMultiSphereShape__getMarginNV_p0:Ot,_emscripten_bind_btRaycastVehicle__rayCast_p1:J4,_emscripten_bind_btConvexHullShape__isConcave_p0:fZ,_emscripten_bind_btCollisionObject__getAnisotropicFriction_p0:hc,_emscripten_bind_btSimpleBroadphase____destroy___p0:jL,_emscripten_bind_btCapsuleShape__btCapsuleShape_p2:fq,_emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1:UW,_emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1:ZO,_emscripten_bind_btConvexHullShape__getLocalScaling_p0:f9,_emscripten_bind_btVector4__x_p0:Gj,_emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0:Cx,_emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1:Cg,_emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1:BU,_emscripten_bind_btMultiSphereShape__isConvex2d_p0:Pd,_emscripten_bind_btCylinderShape__getAngularMotionDisc_p0:MO,_emscripten_bind_btRigidBody__isActive_p0:oD,_emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0:Br,_emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1:Qn,_emscripten_bind_btRaycastVehicle__getRightAxis_p0:JB,_emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2:Lp,_emscripten_bind_btDispatcherInfo__set_m_timeStep_p1:eV,_emscripten_bind_btGhostObject__getNumOverlappingObjects_p0:aiZ,_emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0:ahA,_emscripten_bind_btUniversalConstraint__set_m_objectType_p1:my,_emscripten_bind_btContactConstraint__getInfo2_p1:aa9,_emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0:adg,_emscripten_bind_btPairCachingGhostObject__getIslandTag_p0:T7,_emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6:VZ,_emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0:U2,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0:YA,_emscripten_bind_btRigidBody__setContactProcessingThreshold_p1:pb,_emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1:TJ,_emscripten_bind_btRigidBody__getAngularDamping_p0:ps,_emscripten_bind_btConcaveShape__getUserPointer_p0:akk,_emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3:iY,_memset:aDD,_emscripten_bind_btHinge2Constraint__getAngle_p1:IW,_emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0:Ld,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0:Yo,_emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0:DZ,_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1:sT,_emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6:fO,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2:Ir,_emscripten_bind_btTypedConstraint__isEnabled_p0:q7,_emscripten_bind_btVector4__cross_p1:F2,_emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0:p3,_emscripten_bind_btCapsuleShapeZ__isConvex_p0:aiF,_emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0:NU,_emscripten_bind_btPairCachingGhostObject__serialize_p2:UY,_emscripten_bind_btCylinderShapeX__isInfinite_p0:Ks,_emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0:o5,_emscripten_bind_btGhostObject__setFriction_p1:aiS,_emscripten_bind_btCylinderShape__serializeSingleShape_p1:MP,_emscripten_bind_btWheelInfo__set_m_skidInfo_p1:Ed,_emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1:Jt,_emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1:lP,_emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0:WU,_emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1:mB,_emscripten_bind_btBroadphaseInterface__destroyProxy_p2:jb,_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2:adQ,_emscripten_bind_btConeShapeX__getShapeType_p0:Ar,_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2:C7,_emscripten_bind_btTriangleMesh__getPremadeAabb_p2:A_,_emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1:WT,_emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0:acQ,_emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0:Nl,_emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2:EM,_emscripten_bind_btTypedConstraint__setParam_p2:rP,_emscripten_bind_btTypedConstraint__setParam_p3:rQ,_emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1:B2,_emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1:rn,_emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0:En,_emscripten_bind_btCompoundShape____destroy___p0:k4,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0:adc,_emscripten_bind_btHashString__get_m_string_p0:amz,_emscripten_bind_btQuadWord__btQuadWord_p0:MR,_emscripten_bind_btTransform__setRotation_p1:X$,_emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1:sp,_emscripten_bind_btRigidBody__get_m_frictionSolverType_p0:qv,_emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3:__,_emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0:wz,_emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1:t5,_emscripten_bind_btBroadphaseProxy____destroy___p0:afb,_emscripten_bind_btDbvtProxy__isInfinite_p1:MZ,_emscripten_bind_btCompoundShape__getUpdateRevision_p0:kf,_emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0:Tb,_emscripten_bind_btVector3__deSerialize_p1:GF,_emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1:TA,_emscripten_bind_btHashString__getHash_p0:amD,_emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2:V3,_emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0:U6,_emscripten_bind_btCapsuleShape__isConvex_p0:fb,_emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0:Mj,_emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0:wu,_emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2:kq,_emscripten_bind_btRigidBody__forceActivationState_p1:pj,_emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1:AB,_emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2:mg,_emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0:yO,_emscripten_bind_btConeShapeX__isPolyhedral_p0:zE,_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1:adV,_emscripten_bind_btVector3__absolute_p0:GM,_emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1:q6,_emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0:xn,_emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3:QD,_emscripten_bind_btHingeConstraint__setLimit_p4:yx,_emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1:Xb,_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0:QA,_emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3:Pm,_emscripten_bind_btVector4__deSerializeDouble_p1:Fi,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2:H7,_emscripten_bind_btDefaultMotionState__get_m_userPointer_p0:BC,_emscripten_bind_btSliderConstraint__getAncorInB_p0:_T,_emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2:fE,_emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0:aeg,_emscripten_bind_btTransform__getOrigin_p0:Xt,_emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0:DQ,_emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1:K4,_emscripten_bind_btTypedObject__get_m_objectType_p0:gI,_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0:vn,_emscripten_bind_btCompoundShape__getAabb_p3:kZ,_emscripten_bind_btBroadphasePair__get_m_pProxy1_p0:Bj,_emscripten_bind_btRigidBody__getDeactivationTime_p0:oz,_emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0:h2,_emscripten_bind_btVector3__length_p0:HT,_emscripten_bind_btConstraintSolver__prepareSolve_p2:Jx,_emscripten_bind_btVector4__deSerialize_p1:FP,_emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4:ZT,_emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0:tX,_emscripten_bind_btContactConstraint__getInfo1_p1:aa8,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0:agM,_emscripten_bind_btSliderConstraint__getConstraintType_p0:_8,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0:Yz,_emscripten_bind_btCompoundShape__getDynamicAabbTree_p0:kd,_emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1:zh,_emscripten_bind_btConvexInternalShape__getBoundingSphere_p2:UC,_emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1:MF,_emscripten_bind_btIDebugDraw__drawCylinder_p5:tl,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0:Ry,_emscripten_bind_btQuadWord__op_comp_p1:LW,_emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0:W6,_emscripten_bind_btCylinderShape____destroy___p0:ML,_emscripten_bind_btConvexHullShape__isConvex_p0:fR,_emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0:wj,_emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5:xL,_emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1:IC,_emscripten_bind_btTypedConstraint__getUid_p0:rg,_emscripten_bind_btTriangleIndexVertexArray__setScaling_p1:afl,_emscripten_bind_btRigidBody__setWorldTransform_p1:qH,_emscripten_bind_btGhostObject__serialize_p2:ajy,_emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1:age,_emscripten_bind_btQuadWord__setY_p1:L4,_emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0:aej,_emscripten_bind_btUniformScalingShape____destroy___p0:LC,_emscripten_bind_btPairCachingGhostObject__setFriction_p1:T1,_emscripten_bind_btConeTwistConstraint__getBFrame_p0:w0,_emscripten_bind_btRigidBody__getCenterOfMassPosition_p0:oy,_emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6:wk,_emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1:S$,_emscripten_bind_btConvexShape__getBoundingSphere_p2:Rg,_emscripten_bind_btConvexShape__getUserPointer_p0:Qh,_emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0:sF,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1:adf,_emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0:BG,_emscripten_bind_btIDebugDraw__drawTriangle_p8:tc,_emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0:kh,_emscripten_bind_btConeShapeZ__getMarginNV_p0:zl,_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2:alM,_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5:alP,_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4:alO,_emscripten_bind_btCapsuleShapeX__isConcave_p0:ag7,_emscripten_bind_btEmptyShape__btEmptyShape_p0:o4,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0:Hp,_emscripten_bind_btPoint2PointConstraint__getPivotInA_p0:abP,_emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1:sr,_emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0:_N,_emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0:vA,_emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3:FC,_emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1:afY,_emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0:iP,_emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1:wW,_emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0:adi,_emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1:acI,_emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1:sX,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0:Rp,_emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1:YW,_emscripten_bind_btUniversalConstraint__getAngle1_p0:nt,_emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1:aeR,_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1:t9,_emscripten_bind_btQuaternion__setY_p1:aip,_emscripten_bind_btAngularLimit__isLimit_p0:jd,_emscripten_bind_btSphereShape__getAabbNonVirtual_p3:al4,_emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0:fh,_emscripten_bind_btStaticPlaneShape____destroy___p0:VY,_emscripten_bind_btBoxShape__getContactBreakingThreshold_p1:af9,_emscripten_bind_btConeShapeX__isNonMoving_p0:Am,_emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0:P9,_emscripten_bind_btIDebugDraw__drawSpherePatch_p10:tu,_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2:NA,_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3:NB,_emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1:ac0,_emscripten_bind_btUniformScalingShape__getMargin_p0:LD,_emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0:ON,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0:ahe,_emscripten_bind_btConcaveShape__getAngularMotionDisc_p0:akO,_emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0:VL,_emscripten_bind_btTransform__inverse_p0:XE,_emscripten_bind_btCylinderShapeX__isConvex2d_p0:Kw,_emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1:V1,_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1:aeH,_emscripten_bind_btBroadphaseInterface__rayTest_p4:i0,_emscripten_bind_btBroadphaseInterface__rayTest_p3:i$,_emscripten_bind_btQuaternion__setZ_p1:aiq,_emscripten_bind_btBU_Simplex1to4__setUserPointer_p1:Er,_emscripten_bind_btQuaternion__setW_p1:ain,_emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8:Dj,_emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0:oG,_emscripten_bind_btRigidBody__applyImpulse_p2:pD,_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1:ai4,_emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1:pt,_emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1:_J,_emscripten_bind_btTriangleCallback__processTriangle_p3:wE,_emscripten_bind_btDynamicsWorld__contactPairTest_p3:mf,_emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1:WE,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2:adD,_emscripten_bind_btStaticPlaneShape__setLocalScaling_p1:VT,_emscripten_bind_btDynamicsWorld__removeAction_p1:mL,_emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1:ahh,_emscripten_bind_btQuaternion__setX_p1:aio,_emscripten_bind_btManifoldResult__getPersistentManifold_p0:On,_emscripten_bind_btDispatcher__needsResponse_p2:RO,_emscripten_bind_btCapsuleShapeX__getName_p0:ahB,_emscripten_bind_btConvexShape__isInfinite_p0:Qg,_emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0:t1,_emscripten_bind_btSimpleBroadphase__printStats_p0:kp,_emscripten_bind_btCollisionWorld__serialize_p1:SD,_emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1:Qp,_emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0:Ap,_emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1:zW,_emscripten_bind_btPolyhedralConvexShape__isConvex_p0:r8,_emscripten_bind_btGeneric6DofConstraint__setParam_p2:Wu,_emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3:xI,_emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1:Ly,_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12:aeX,_emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1:wC,_emscripten_bind_btBU_Simplex1to4____destroy___p0:Fx,_emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1:Dd,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1:Rw,_emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1:S6,_emscripten_bind_btMultiSphereShape__isSoftBody_p0:Pe,_emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0:Ci,_emscripten_bind_btCompoundShape__getBoundingSphere_p2:k7,_emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0:ab4,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0:XT,_emscripten_bind_btConstraintSetting__get_m_damping_p0:mn,_emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1:WN,_emscripten_bind_btMatrix3x3__getRow_p1:ej,_emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0:ady,_emscripten_bind_btConeShape__isConvex_p0:CL,_emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0:aeV,_emscripten_bind_btVector4__distance_p1:F5,_emscripten_bind_btMatrix3x3__op_set_p1:eA,_emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0:pY,_emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3:lE,_emscripten_bind_btCollisionObject__getDeactivationTime_p0:g0,_emscripten_bind_btCollisionShape__setMargin_p1:Wo,_emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0:Bt,_emscripten_bind_btSphereShape__btSphereShape_p1:amg,_emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1:BL,_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1:QC,_emscripten_bind_btUniformScalingShape__isNonMoving_p0:KT,_emscripten_bind_btPersistentManifold__refreshContactPoints_p2:kw,_emscripten_bind_btVector3__setZero_p0:HS,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1:ale,_emscripten_bind_btPolyhedralConvexShape__serialize_p2:sY,_emscripten_bind_btTriangleMesh__preallocateIndices_p1:A9,_emscripten_bind_btConvexTriangleMeshShape__getVertex_p2:id,_emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1:aea,_emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0:$a,_emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3:ahz,_emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1:ahD,_emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1:v$,_emscripten_bind_btCollisionObject__setCollisionShape_p1:h0,_emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1:CU,_emscripten_bind_btCylinderShape__getUserPointer_p0:Me,_emscripten_bind_btTransform__btTransform_p1:X8,_emscripten_bind_btTransform__btTransform_p0:X7,_emscripten_bind_btTransform__btTransform_p2:X9,_emscripten_bind_btVector3__normalize_p0:GN,_emscripten_bind_btConvexHullShape__getPoints_p0:f1,_emscripten_bind_btDiscreteDynamicsWorld__serialize_p1:vW,_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0:adh,_emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0:P5,_emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0:nD,_emscripten_bind_CProfileNode__Get_Total_Calls_p0:Yu,_emscripten_bind_btVector3__btVector3_p3:GX,_emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3:zN,_emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0:PA,_emscripten_bind_btCollisionWorld__contactPairTest_p3:SR,_emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1:e1,_emscripten_bind_btManifoldResult__refreshContactPoints_p0:OZ,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4:YY,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3:Ya,_emscripten_bind_btCapsuleShapeX__isCompound_p0:agU,_emscripten_bind_btOverlappingPairCache__findPair_p2:V7,_emscripten_bind_btBU_Simplex1to4__isInfinite_p0:Ex,_emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0:D8,_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0:VK,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1:Yi,_emscripten_bind_btGhostObject__getHitFraction_p0:aj5,_emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10:NY,_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1:agB,_emscripten_bind_btCompoundShape__setUserPointer_p1:kK,_emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0:Ns,_emscripten_bind_btBoxShape____destroy___p0:agg,_emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0:ga,_emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3:A4,_emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3:Lv,_emscripten_bind_btTypedConstraint__getAppliedImpulse_p0:rm,_emscripten_bind_CProfileNode__Call_p0:YN,_emscripten_bind_btQuaternion__length_p0:ai2,_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1:QG,_emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0:aiD,_emscripten_bind_btPairCachingGhostObject__rayTest_p3:US,_emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0:aep,_emscripten_bind_btConvexInternalShape__isInfinite_p0:To,_emscripten_bind_btEmptyShape__setMargin_p1:oU,_emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0:U4,_emscripten_bind_btHinge2Constraint__setLowerLimit_p1:Jg,_emscripten_bind_btContinuousDynamicsWorld__clearForces_p0:Ca,_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1:Nz,_emscripten_bind_btConvexShape__getAngularMotionDisc_p0:Rh,_emscripten_bind_btVector4__minAxis_p0:FQ,_emscripten_bind_btConeShapeZ__getUserPointer_p0:zt,_emscripten_bind_btCollisionShape__isPolyhedral_p0:Vu,_emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0:acb,_emscripten_bind_btCylinderShape__serialize_p2:Mu,_emscripten_bind_btDynamicsWorld__setDebugDrawer_p1:l8,_emscripten_bind_btDiscreteDynamicsWorld__addAction_p1:vT,_emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0:xg,_emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1:so,_emscripten_bind_btUniversalConstraint__getConstraintType_p0:nm,_emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2:PI,_emscripten_bind_btBoxShape__setLocalScaling_p1:af7,_emscripten_bind_btTransform__serializeFloat_p1:XL,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1:YG,_emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0:R$,_emscripten_bind_CProfileNode__Get_Parent_p0:Yt,_emscripten_bind_btConvexShape__isCompound_p0:Qe,_emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0:He,_emscripten_bind_btTriangleInfo____destroy___p0:H6,_emscripten_bind_btSliderConstraint__getUserConstraintId_p0:_1,_emscripten_bind_btContinuousDynamicsWorld__contactTest_p2:Cn,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0:adb,_emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0:y0,_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0:li,_emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1:I6,_emscripten_bind_btDynamicsWorld__getBroadphase_p0:mh,_emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2:ahu,_emscripten_bind_btDynamicsWorld__getDispatchInfo_p0:ml,_emscripten_bind_btConvexHullShape__getNumEdges_p0:ge,_emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0:OI,_emscripten_bind_btRigidBody__upcast_p1:p5,_emscripten_bind_btDispatcherInfo____destroy___p0:fn,_emscripten_bind_btSerializer__getSerializationFlags_p0:HY,_emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0:WC,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2:ahg,_emscripten_bind_btTransform__inverseTimes_p1:XZ,_emscripten_bind_btPoint2PointConstraint__updateRHS_p1:abN,_emscripten_bind_btVector3__w_p0:G5,_emscripten_bind_bt32BitAxisSweep3__quantize_p3:ali,_emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1:mi,_emscripten_bind_btCompoundShape__getUserPointer_p0:kQ,_emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1:E1,_emscripten_bind_btCapsuleShape__isSoftBody_p0:fg,_emscripten_bind_btWheelInfo__get_m_brake_p0:Ec,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2:Kg,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1:ac5,_emscripten_bind_btTypedConstraint__getInfo2_p1:rU,_emscripten_bind_btSimpleBroadphase__createProxy_p8:ko,_emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0:P_,_emscripten_bind_btCompoundShape__getMargin_p0:k0,_emscripten_bind_btConeShape__getLocalScaling_p0:Dn,_emscripten_bind_btPairCachingGhostObject__isActive_p0:Uv,_emscripten_bind_btConeShape__isConcave_p0:DH,_emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1:NK,_emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0:aeq,_emscripten_bind_btCollisionObject__setActivationState_p1:hx,_emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0:vI,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0:ahn,_emscripten_bind_btConvexHullShape__getPlane_p3:hR,_emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4:Xi,_emscripten_bind_btManifoldResult____destroy___p0:OV,_emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5:Jy,_emscripten_bind_btPoint2PointConstraint__buildJacobian_p0:abI,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0:ak5,_emscripten_bind_btContinuousDynamicsWorld__getGravity_p0:C$,_emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0:aar,_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1:sN,_emscripten_bind_btHinge2Constraint__set_m_objectType_p1:HF,_emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0:rj,_emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2:afG,_emscripten_bind_btHingeConstraint__setUseFrameOffset_p1:x0,_emscripten_bind_btGhostObject__forceActivationState_p1:ajG,_emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0:JE,_emscripten_bind_btTypedConstraint__getObjectType_p0:rd,_emscripten_bind_CProfileNode__Get_Sub_Node_p1:YZ,_emscripten_bind_btQuaternion__angle_p1:aid,_emscripten_bind_btGhostObject__setCollisionShape_p1:ajA,_emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0:As,_emscripten_bind_btBvhTriangleMeshShape__getName_p0:Zy,_emscripten_bind_btRigidBody__internalGetTurnVelocity_p0:qA,_emscripten_bind_btVector3__op_comp_p1:Gy,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0:Yr,_emscripten_bind_btVector3__getY_p0:Gr,_emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1:abh,_emscripten_bind_btConvexInternalShape__getName_p0:TH,_emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3:iy,_emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0:qg,_emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0:aao,_emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0:$d,_emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:Fy,_emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0:aez,_emscripten_bind_btBvhTriangleMeshShape__isConcave_p0:Zc,_emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0:hd,_emscripten_bind_btUniversalConstraint__updateRHS_p1:nT,_emscripten_bind_btRigidBody__applyDamping_p1:rr,_emscripten_bind_btConvexInternalShape__isNonMoving_p0:Tq,_emscripten_bind_btStaticPlaneShape__isConcave_p0:Vq,_emscripten_bind_btVector4__deSerializeFloat_p1:FI,_emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6:Ll,_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0:adp,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0:agK,_emscripten_bind_btHinge2Constraint__calculateTransforms_p2:Jc,_emscripten_bind_btCollisionWorld__btCollisionWorld_p3:S3,_emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4:wG,_emscripten_bind_btCapsuleShapeZ____destroy___p0:ajn,_emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0:ai6,_emscripten_bind_btDynamicsWorld____destroy___p0:mc,_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4:jQ,_emscripten_bind_btNodeOverlapCallback__processNode_p2:kD,_emscripten_bind_btConvexShape__getLocalScaling_p0:Q$,_emscripten_bind_btPairCachingGhostObject__getInternalType_p0:Uw,_emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0:abt,_emscripten_bind_btHinge2Constraint__getRigidBodyB_p0:HD,_emscripten_bind_btMatrix3x3__deSerializeFloat_p1:ei,_emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1:ac1,_emscripten_bind_btConeShapeX__setLocalScaling_p1:AC,_emscripten_bind_btUniversalConstraint__isEnabled_p0:nk,_emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1:ZB,_emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0:aaG,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0:Ym,_emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:s3,_emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1:_D,_emscripten_bind_btAxisSweep3__testAabbOverlap_p2:uR,_emscripten_bind_btCapsuleShapeX__isConvex2d_p0:ag4,_emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0:vl,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0:agJ,_emscripten_bind_bt32BitAxisSweep3____destroy___p0:alS,_emscripten_bind_btVector3__triple_p2:Gu,_emscripten_bind_ConcreteContactResultCallback__needsCollision_p1:NT,_emscripten_bind_btSimpleBroadphaseProxy__getUid_p0:t7,_emscripten_bind_btConeShapeX__serialize_p2:z9,_emscripten_bind_btCollisionDispatcher__releaseManifold_p1:uz,_emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0:zi,_emscripten_bind_btBU_Simplex1to4__isNonMoving_p0:Ey,_emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0:nC,_emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3:abE,_emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2:Fz,_emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1:ahH,_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0:jR,_emscripten_bind_btVector3__angle_p1:GO,_emscripten_bind_btCylinderShape__getLocalScalingNV_p0:Ma,_emscripten_bind_btConeShape__isInfinite_p0:CM,_emscripten_bind_btIndexedMesh__get_m_vertexStride_p0:gP,_emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0:im,_emscripten_bind_btHinge2Constraint__getAnchor2_p0:IJ,_emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1:aeD,_emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2:Qz,_emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1:aaF,_emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0:W0,_emscripten_bind_btCompoundShape__calculateLocalInertia_p2:kE,_emscripten_bind_btSliderConstraint__getDbgDrawSize_p0:_F,_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2:wr,_emscripten_bind_btRigidBody__setMotionState_p1:o0,_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1:wq,_emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0:ad9,_emscripten_bind_CProfileNode__Get_Sibling_p0:Yx,_emscripten_bind_btHingeConstraint__enableAngularMotor_p3:xD,_emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0:BF,_emscripten_bind_btStaticPlaneShape__getName_p0:VS,_emscripten_bind_btGhostObject__getUserPointer_p0:ajT,_emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1:abY,_emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1:tM,_emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0:lg,_emscripten_bind_btConeShape__getAngularMotionDisc_p0:ED,_emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7:Ww,_emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:Re,_emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0:Fc,_emscripten_bind_btHingeConstraint__isEnabled_p0:xV,_emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0:WA,_emscripten_bind_btSerializer__serializeName_p1:H2,_emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0:eO,_emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0:kH,_emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1:sD,_emscripten_bind_btConcaveShape__processAllTriangles_p3:akE,_emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0:ad6,_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1:abf,_emscripten_bind_btRigidBody__isKinematicObject_p0:py,_emscripten_bind_btCapsuleShapeX__getHalfHeight_p0:agZ,_emscripten_bind_btVector4__rotate_p2:Ga,_emscripten_bind_btMatrix3x3__serialize_p1:d0,_emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0:Y7,_emscripten_bind_btDbvtBroadphase__get_m_cid_p0:sB,_emscripten_bind_btContactConstraint__getUid_p0:$2,_emscripten_bind_btVector3__setInterpolate3_p3:Gt,_emscripten_bind_btConstraintSolver__allSolved_p3:Jv,_emscripten_bind_btMatrix3x3__btMatrix3x3_p9:eg,_emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0:aed,_emscripten_bind_btTriangleMesh____destroy___p0:Bc,_emscripten_bind_btMatrix3x3__btMatrix3x3_p1:ef,_emscripten_bind_btMatrix3x3__btMatrix3x3_p0:ee,_emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0:afF,_emscripten_bind_btBvhSubtreeInfo____destroy___p0:adx,_emscripten_bind_btVector3__op_add_p1:Gx,_emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1:ZS,_emscripten_bind_btHinge2Constraint__getAngle2_p0:IE,_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9:abo,_emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0:Zg,_emscripten_bind_btContactConstraint__setUserConstraintType_p1:$4,_emscripten_bind_btHingeConstraint__getAngularOnly_p0:yl,_emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0:ahR,_emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0:ET,_emscripten_bind_btGhostObject__getCollisionShape_p0:ajP,_emscripten_bind_btCollisionObject__setWorldTransform_p1:h6,_emscripten_bind_btConeShapeZ__setMargin_p1:zZ,_emscripten_bind_btCapsuleShape__serialize_p2:fr,_emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0:nh,_emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1:pr,_emscripten_bind_btTransform__getRotation_p0:XD,_emscripten_bind_btStridingMeshInterface__getScaling_p0:aaV,_emscripten_bind_btGhostObject__setHitFraction_p1:ajK,_emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:EB,_emscripten_bind_btPersistentManifold__addManifoldPoint_p1:kz,_emscripten_bind_btSphereShape__getMargin_p0:amd,_emscripten_bind_btEmptyShape__serializeSingleShape_p1:oY,_emscripten_bind_btQuaternion__slerp_p2:aib,_emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1:Jq,_emscripten_bind_btPersistentManifold__getObjectType_p0:j1,_emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:Lf,_emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1:gy,_emscripten_bind_bt32BitAxisSweep3__resetPool_p1:alI,_emscripten_bind_btHingeConstraint__testLimit_p2:xP,_emscripten_bind_btRigidBody__setLinearFactor_p1:qN,_emscripten_bind_btDynamicsWorld__setBroadphase_p1:ls,_emscripten_bind_btPairCachingGhostObject__getActivationState_p0:Ul,_emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2:Tz,_emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0:e0,_emscripten_bind_btEmptyShape__isPolyhedral_p0:od,_emscripten_bind_btPoint2PointConstraint__isEnabled_p0:abS,_emscripten_bind_btConeShape__getUserPointer_p0:CN,_emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1:Rc,_emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2:BW,_emscripten_bind_btMatrix3x3__scaled_p1:d8,_emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1:Db,_emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0:U8,_emscripten_bind_btCylinderShapeX____destroy___p0:Le,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1:Yb,_emscripten_bind_btContactConstraint__isEnabled_p0:$V,_emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0:Sd,_emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1:Lu,_emscripten_bind_btCylinderShapeX__isConvex_p0:Kr,_emscripten_bind_btIDebugDraw__drawArc_p9:tf,_emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1:wc,_emscripten_bind_btSliderConstraint__getAncorInA_p0:Z_,_emscripten_bind_btHingeConstraint__getUpperLimit_p0:xT,_emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0:lh,_emscripten_bind_btConvexShape__setLocalScaling_p1:Q6,_emscripten_bind_btConeShape__getConeUpIndex_p0:DG,_emscripten_bind_btHinge2Constraint____destroy___p0:I8,_emscripten_bind_btCapsuleShapeZ__setMargin_p1:ajk,_emscripten_bind_btAngularLimit__getLow_p0:jy,_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0:aex,_emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1:DJ,_emscripten_bind_btMultiSphereShape__getSpherePosition_p1:O8,_emscripten_bind_btRigidBody__internalGetPushVelocity_p0:qp,_emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0:s2,_emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1:uN,_emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1:VV,_emscripten_bind_btConcaveShape__isConvex2d_p0:akm,_emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0:Fa,_emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1:WL,_emscripten_bind_btConvexShape__isConvex2d_p0:Qj,_emscripten_bind_btSerializer__setSerializationFlags_p1:HV,_emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1:aeO,_emscripten_bind_btCylinderShapeZ__isNonMoving_p0:acg,_emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0:ln,_emscripten_bind_btPersistentManifold__replaceContactPoint_p2:kC,_emscripten_bind_btManifoldPoint__get_m_index1_p0:aaj,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0:agP,_emscripten_bind_btBoxShape__getPlane_p3:agm,_emscripten_bind_btAxisSweep3__rayTest_p3:u5,_emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0:Ie,_emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0:afx,_emscripten_bind_btAxisSweep3__rayTest_p4:u6,_emscripten_bind_btAxisSweep3__rayTest_p5:u7,_emscripten_bind_btConvexInternalShape__isPolyhedral_p0:Tl,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0:JU,_emscripten_bind_btRigidBody__getInternalType_p0:ql,_emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2:ai3,_emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0:P7,_emscripten_bind_btTypedObject__set_m_objectType_p1:gJ,_emscripten_bind_btConvexInternalShape__getShapeType_p0:TX,_emscripten_bind_btCollisionWorld__getBroadphase_p0:Sl,_emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0:xs,_emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0:Hb,_emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1:ajW,_emscripten_bind_btManifoldPoint__set_m_lifeTime_p1:aaU,_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0:Hz,_emscripten_bind_btCollisionShape__getAngularMotionDisc_p0:Wr,_emscripten_bind_btCompoundShape__recalculateLocalAabb_p0:k3,_emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0:ys,_emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1:v1,_emscripten_bind_btWheelInfo__get_m_skidInfo_p0:D6,_emscripten_bind_btConeTwistConstraint__getInfo2_p1:wM,_emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1:AF,_emscripten_bind_btManifoldPoint__btManifoldPoint_p0:abL,_emscripten_bind_btBoxShape__serialize_p2:aga,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0:Hn,_emscripten_bind_btContactConstraint__get_m_objectType_p0:$T,_emscripten_bind_btBroadphaseProxy__isConcave_p1:ad5,_emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1:Lo,_emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3:v2,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1:YO,_emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1:_Q,_emscripten_bind_btWheelInfo__get_m_rollInfluence_p0:DY,_emscripten_bind_btRaycastVehicle__getForwardVector_p0:J5,_emscripten_bind_btCollisionWorld__updateSingleAabb_p1:SV,_emscripten_bind_btAxisSweep3__setAabb_p4:u8,_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1:aef,_emscripten_bind_btCapsuleShape__setUserPointer_p1:e4,_emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1:nL,_emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1:aei,_emscripten_bind_btConcaveShape__serializeSingleShape_p1:akP,_emscripten_bind_btConvexHullShape__getNumVertices_p0:f8,_emscripten_bind_btRigidBody__translate_p1:p_,_emscripten_bind_btRigidBody__getActivationState_p0:oE,_emscripten_bind_btPersistentManifold__set_m_index1a_p1:j$,_emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1:Dw,_emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0:vv,_emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1:fB,_emscripten_bind_btAxisSweep3__createProxy_p8:ve,_emscripten_bind_btUniversalConstraint__getAxis_p1:nG,_emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0:Z2,_emscripten_bind_btSliderConstraint__calculateTransforms_p2:_Y,_emscripten_bind_btDbvtProxy__getUid_p0:Ne,_emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0:S2,_emscripten_bind_btCompoundShape__getChildTransform_p1:kP,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0:agz,_emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0:Mg,_emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1:yX,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0:agR,_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0:P2,_emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0:vV,_emscripten_bind_btStridingMeshInterface__preallocateIndices_p1:abp,_emscripten_bind_btRigidBody__mergesSimulationIslands_p0:o9,_emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1:sG,_emscripten_bind_btTriangleMesh__getNumSubParts_p0:Bd,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0:Yl,_emscripten_bind_btTriangleMesh__getUse4componentVertices_p0:At,_emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0:aaI,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0:ak6,_emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1:Xm,_emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0:Sr,_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0:HC,_emscripten_bind_btSphereShape__setUnscaledRadius_p1:alx,_emscripten_bind_btVector4__setInterpolate3_p3:FG,_emscripten_bind_btIndexedMesh__set_m_numTriangles_p1:gN,_emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0:Mw,_emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0:x4,_emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1:TE,_emscripten_bind_btSphereShape____destroy___p0:amG,_emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0:Da,_emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0:adJ,_emscripten_bind_btSliderConstraint__getLowerLinLimit_p0:$f,_emscripten_bind_btCapsuleShapeZ__serialize_p2:ai5,_emscripten_bind_btDynamicsWorld__addCollisionObject_p1:l2,_emscripten_bind_btDynamicsWorld__addCollisionObject_p2:l3,_emscripten_bind_btDynamicsWorld__addCollisionObject_p3:l4,_emscripten_bind_btStaticPlaneShape__getShapeType_p0:Vr,_emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1:uA,_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2:agq,_emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0:Pk,_emscripten_bind_btManifoldPoint__getLifeTime_p0:aaz,_emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5:n9,_emscripten_bind_btTransform__op_set_p1:X2,_emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1:Ep,_emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0:iA,_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1:E0,_emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0:Zb,_emscripten_bind_btCollisionShape__isConvex2d_p0:Vz,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1:Id,_emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0:Fw,_emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0:mD,_emscripten_bind_btJacobianEntry__getRelativeVelocity_p4:R2,_emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0:akX,_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1:Bw,_emscripten_bind_btUniformScalingShape__getName_p0:Lx,_emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2:Mm,_emscripten_bind_btContinuousDynamicsWorld__addAction_p1:B4,_emscripten_bind_btBoxShape__setUserPointer_p1:afm,_emscripten_bind_btCollisionObject__setCollisionFlags_p1:hE,_emscripten_bind_btConeShapeZ__isSoftBody_p0:zw,_emscripten_bind_btConstraintSetting____destroy___p0:m0,_emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0:am8,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1:XP,_emscripten_bind_btOptimizedBvh____destroy___p0:rH,_emscripten_bind_btRigidBody__getOrientation_p0:o_,_emscripten_bind_btUniversalConstraint__getAngle2_p0:nr,_emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6:OD,_emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1:$Z,_emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1:tZ,_emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0:abZ,_emscripten_bind_btAxisSweep3__getNumHandles_p0:uO,_emscripten_bind_btRigidBody__setCcdMotionThreshold_p1:pU,_emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1:nw,_emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0:lk,_emscripten_bind_btDbvtProxy__isConcave_p1:M_,_emscripten_bind_btVector4__triple_p2:FH,_emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2:acP,_emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0:V5,_emscripten_bind_btQuaternion__getAxis_p0:aif,_emscripten_bind_btVector3__getZ_p0:Gs,_emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1:EH,_emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1:aa2,_emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1:IT,_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1:CY,_emscripten_bind_btIndexedMesh__set_m_numVertices_p1:gR,_emscripten_bind_btHashInt__btHashInt_p1:S1,_emscripten_bind_btConstraintSetting__get_m_tau_p0:mr,_emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1:Zn,_emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0:akT,_emscripten_bind_btCapsuleShape__getHalfHeight_p0:e8,_emscripten_bind_btSliderConstraint__getLinDepth_p0:_L,_emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1:ae$,_emscripten_bind_btHashString__set_m_hash_p1:amA,_emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0:eJ,_emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1:le,_emscripten_bind_btConeTwistConstraint__getInfo1_p1:wL,_emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4:ae_,_emscripten_bind_btConeShapeZ__getMargin_p0:zX,_emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0:ir,_emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1:jH,_emscripten_bind_btSerializer__getUniquePointer_p1:H_,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1:Ys,_emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1:LB,_emscripten_bind_btConvexInternalShape__isConcave_p0:TW,_emscripten_bind_btVector4__getW_p0:FL,_emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0:ks,_emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1:gp,_emscripten_bind_btVector3__serialize_p1:Go,_emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3:amS,_emscripten_bind_btCollisionObject__isKinematicObject_p0:hJ,_emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1:Z7,_emscripten_bind_btSliderConstraint__getUid_p0:_o,_emscripten_bind_btDynamicsWorld__serialize_p1:lT,_emscripten_bind_btConeShapeZ__serialize_p2:zK,_emscripten_bind_btRaycastVehicle__getUpAxis_p0:JK,_emscripten_bind_btCylinderShapeZ__getRadius_p0:acz,_emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1:g2,_emscripten_bind_btConvexHullShape__getLocalScalingNV_p0:fV,_emscripten_bind_btCylinderShape__btCylinderShape_p1:NG,_emscripten_bind_btSimpleDynamicsWorld____destroy___p0:OF,_emscripten_bind_btIDebugDraw__drawPlane_p4:to,_emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1:UZ,_emscripten_bind_btRaycastVehicle__setUserConstraintType_p1:JG,_memcpy:aDC,_emscripten_bind_btCapsuleShape__serializeSingleShape_p1:fM,_emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0:UM,_emscripten_bind_btWheelInfo__get_m_steering_p0:DX,_emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1:Pq,_emscripten_bind_btRigidBody__hasContactResponse_p0:p4,_emscripten_bind_btGhostObject__isKinematicObject_p0:ake,_emscripten_bind_btBroadphasePair__btBroadphasePair_p2:BS,_emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0:Uq,_emscripten_bind_btPersistentManifold__getBody1_p0:jY,_emscripten_bind_btUniversalConstraint__getAnchor2_p0:nv,_emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6:ahU,_emscripten_bind_btSphereShape__isConcave_p0:amp,_emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0:sa,_emscripten_bind_btRigidBody__getBroadphaseHandle_p0:pm,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1:Yg,_emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1:y1,_emscripten_bind_btAxisSweep3____destroy___p0:vf,_emscripten_bind_btSliderConstraint__getDampingLimLin_p0:_M,_emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1:QO,_emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1:BJ,_emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1:IH,_emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0:WX,_emscripten_bind_btBvhTriangleMeshShape__serialize_p2:YX,_emscripten_bind_btConeShape__getImplicitShapeDimensions_p0:DF,_emscripten_bind_btDbvtProxy__set_m_uniqueId_p1:Nc,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0:ac9,_emscripten_bind_btCylinderShapeX__isConcave_p0:Kz,_emscripten_bind_btConeShapeX__getAabbNonVirtual_p3:Ac,_emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4:iN,_emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0:vU,_emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0:SB,_emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1:nJ,_emscripten_bind_btCapsuleShape__isPolyhedral_p0:e6,_emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0:aiV,_emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1:fC,_emscripten_bind_btConvexTriangleMeshShape__isConvex_p0:ij,_emscripten_bind_btConvexShape__getMarginNonVirtual_p0:Rd,_emscripten_bind_btRotationalLimitMotor__set_m_damping_p1:y5,_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0:BA,_emscripten_bind_btSimpleBroadphase__getAabb_p3:km,_emscripten_bind_btSliderConstraint__getRigidBodyB_p0:Zi,_emscripten_bind_btPersistentManifold__validContactDistance_p1:jZ,_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0:ado,_emscripten_bind_btManifoldPoint__set_m_localPointB_p1:abl,_emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0:re,_emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0:ab5,_emscripten_bind_btBroadphaseProxy__isConvex_p1:ad1,_emscripten_bind_btGhostObject__setActivationState_p1:aj1,_emscripten_bind_btCapsuleShapeZ__getMarginNV_p0:aiE,_emscripten_bind_btTranslationalLimitMotor__isLimited_p1:Te,_emscripten_bind_btDbvtBroadphase__rayTest_p3:ty,_emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1:wb,_emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0:Bm,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0:agx,_emscripten_bind_btDbvtProxy__set_stage_p1:M8,_emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1:_v,_emscripten_bind_btConvexShape__isPolyhedral_p0:Qd,_emscripten_bind_btStridingMeshInterface__serialize_p2:abr,_emscripten_bind_btBvhTriangleMeshShape__isConvex_p0:Za,_emscripten_bind_btCollisionObject__btCollisionObject_p0:h$,_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9:abA,_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8:abz,_emscripten_bind_btGeneric6DofConstraint__getObjectType_p0:WJ,_emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0:Wz,_emscripten_bind_btRaycastVehicle__resetSuspension_p0:JF,_emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0:ag_,_emscripten_bind_btConeShapeX__isInfinite_p0:Aj,_emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0:Of,_emscripten_bind_btConeShape__getLocalScalingNV_p0:CJ,_emscripten_bind_btRigidBody__applyGravity_p0:pM,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1:adE,_emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1:Pp,_emscripten_bind_btCylinderShapeZ__getUserPointer_p0:acf,_emscripten_bind_btRigidBody__getContactProcessingThreshold_p0:qz,_emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0:_5,_emscripten_bind_btConstraintSetting__set_m_damping_p1:mq,_emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0:abX,_emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0:nz,_emscripten_bind_btTypedConstraint__get_m_objectType_p0:q5,_emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3:lz,_emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0:ik,_emscripten_bind_btSliderConstraint__getInfo2_p1:ZZ,_emscripten_bind_btEmptyShape__getUserPointer_p0:og,_emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0:_H,_emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0:hD,_emscripten_bind_btTriangleMesh__addTriangle_p4:BN,_emscripten_bind_btConeShapeX__getMargin_p0:AG,_emscripten_bind_btSphereShape__getLocalScaling_p0:al2,_emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6:FE,_emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0:ig,_emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1:ro,_emscripten_bind_btConeShapeZ__getLocalScaling_p0:zL,_emscripten_bind_btCompoundShape__addChildShape_p2:k$,_emscripten_bind_btVector3__setZ_p1:G$,_emscripten_bind_btConeTwistConstraint__getParam_p1:wJ,_emscripten_bind_btConeTwistConstraint__getParam_p2:wK,_emscripten_bind_btAxisSweep3__quantize_p3:u1,_emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1:tY,_emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3:act,_emscripten_bind_btConvexShape__isConcave_p0:Rk,_emscripten_bind_btConvexHullShape__setMargin_p1:gv,_emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0:Qa,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0:Rr,_emscripten_bind_btCapsuleShape__getMarginNV_p0:fa,_emscripten_bind_btCollisionWorld__debugDrawObject_p3:SG,_emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0:n$,_emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0:P4,_emscripten_bind_btQuaternion____destroy___p0:ai0,_emscripten_bind_btManifoldPoint__set_m_localPointA_p1:abm,_emscripten_bind_btSliderConstraint__setDampingLimAng_p1:_S,_emscripten_bind_btTriangleMesh__addTriangle_p3:BM,_emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1:akY,_emscripten_bind_btConeShapeZ__setLocalScaling_p1:zT,_emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7:m8,_emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1:Bp,_emscripten_bind_btUniversalConstraint__getParam_p1:m9,_emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0:LH,_emscripten_bind_btConeShape__getMargin_p0:Dz,_emscripten_bind_btMatrix3x3__getEulerZYX_p3:eB,_emscripten_bind_btWheelInfo__get_m_clientInfo_p0:D4,_emscripten_bind_btMatrix3x3__getEulerZYX_p4:eD,_emscripten_bind_btTriangleIndexVertexArray____destroy___p0:afg,_emscripten_bind_btHashString__portableStringCompare_p2:amE,_emscripten_bind_btCollisionShape__isSoftBody_p0:VA,_emscripten_bind_btCapsuleShapeZ__isNonMoving_p0:aiI,_emscripten_bind_btSliderConstraint__isEnabled_p0:Zo,_emscripten_bind_btConcaveShape__setMargin_p1:akL,_emscripten_bind_btCollisionWorld__getDispatcher_p0:Sg,_emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0:akR,_emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1:uG,_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0:P0,_emscripten_bind_btUniformScalingShape__getLocalScaling_p0:Ls,_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9:afd,_emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0:Ve,_emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0:CV,_emscripten_bind_btContactConstraint__getContactManifold_p0:$R,_emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1:afh,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0:Ho,_emscripten_bind_btBU_Simplex1to4__isConvex_p0:Ew,_emscripten_bind_btMultiSphereShape__getName_p0:Po,_emscripten_bind_btStaticPlaneShape__processAllTriangles_p3:VQ,_emscripten_bind_btBU_Simplex1to4__getIndex_p1:EW,_emscripten_bind_CProfileNode__Get_Child_p0:Yy,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1:adH,_emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1:acT,_emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6:C0,_emscripten_bind_btConvexHullShape__serialize_p2:gr,_emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8:OU,_emscripten_bind_btManifoldPoint____destroy___p0:abi,_emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1:zR,_emscripten_bind_btQuantizedBvh____destroy___p0:amX,_emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0:ab2,_emscripten_bind_btRigidBody__getMotionState_p0:pR,_emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1:vE,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0:$D,_emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0:gV,_emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0:lp,_emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0:hH,_emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1:abC,_emscripten_bind_btAxisSweep3__getAabb_p3:va,_emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0:aec,_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2:CZ,_emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1:alY,_emscripten_bind_btCollisionDispatcher__setNearCallback_p1:uf,_emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1:Pl,_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4:YU,_emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3:rY,_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4:Ox,_emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1:aac,_emscripten_bind_btGhostObject__getIslandTag_p0:aiY,_emscripten_bind_btCollisionWorld__removeCollisionObject_p1:SX,_emscripten_bind_btCompoundShape__removeChildShape_p1:lA,_emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1:Lq,_emscripten_bind_btContactConstraint__getUserConstraintType_p0:$7,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0:XO,_emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0:mo,_emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2:Wx,_emscripten_bind_btAngularLimit__getHigh_p0:jw,_emscripten_bind_btPairCachingGhostObject__getRestitution_p0:Un,_emscripten_bind_btMatrix3x3__determinant_p0:en,_emscripten_bind_btRigidBody__getTotalForce_p0:ox,_emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1:N7,_emscripten_bind_btCylinderShape__isConvex_p0:Mc,_emscripten_bind_CProfileNode__CProfileNode_p2:Y_,_emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1:_4,_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1:uc,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1:$v,_emscripten_bind_btManifoldResult__getBody0Internal_p0:Oo,_emscripten_bind_btConeShapeX__isCompound_p0:zB,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0:Yp,_emscripten_bind_btHingeConstraint__btHingeConstraint_p3:yC,_emscripten_bind_btBoxShape__calculateLocalInertia_p2:afR,_emscripten_bind_btSphereShape__getRadius_p0:alv,_emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0:QR,_emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1:nB,_emscripten_bind_btHingeConstraint__getHingeAngle_p0:xN,_emscripten_bind_btHingeConstraint__getHingeAngle_p2:xO,_emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1:sV,_emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0:xr,_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2:OA,_emscripten_bind_btOptimizedBvh__quantize_p3:rv,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1:XU,_emscripten_bind_btAngularLimit__test_p1:jx,_emscripten_bind_btContactConstraint__solveConstraintObsolete_p3:abe,_emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0:Oh,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0:$z,_emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1:CT,_emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3:n6,_emscripten_bind_btDynamicsWorld__setGravity_p1:lR,_emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1:HI,_emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0:Ok,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0:LP,_emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2:Pw,_emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1:gY,_emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1:Zr,_emscripten_bind_btCollisionShape__getUserPointer_p0:Vx,_emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1:zd,_emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1:adj,_emscripten_bind_btUniversalConstraint__setParam_p3:m7,_emscripten_bind_btUniversalConstraint__setParam_p2:m6,_emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1:WQ,_emscripten_bind_btManifoldResult__setPersistentManifold_p1:Oq,_emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1:Dc,_emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0:Vi,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0:XX,_emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0:l9,_emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0:aka,_emscripten_bind_btJacobianEntry__btJacobianEntry_p0:RX,_emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0:Ek,_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2:iw,_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1:iv,_emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1:z_,_emscripten_bind_btSliderConstraint__getAppliedImpulse_p0:_O,_emscripten_bind_btSimpleDynamicsWorld__serialize_p1:N$,_emscripten_bind_btConvexInternalShape__getAabbSlow_p3:UF,_emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1:adu,_emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1:ajg,_emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1:vu,_emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0:aeM,_emscripten_bind_btClock__op_set_p1:Xr,_emscripten_bind_btStaticPlaneShape__isNonMoving_p0:Vm,_emscripten_bind_btPolyhedralConvexShape__getMargin_p0:sZ,_emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0:Nd,_emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2:aff,_emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3:ae0,_emscripten_bind_btConvexHullShape__getVertex_p2:gb,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0:Rt,_emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1:B$,_emscripten_bind_btHashString____destroy___p0:am0,_emscripten_bind_btBU_Simplex1to4__isConvex2d_p0:Ev,_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1:ajB,_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2:ajC,_emscripten_bind_btRaycastVehicle__updateFriction_p1:Kb,_emscripten_bind_btUniformScalingShape__isPolyhedral_p0:KN,_emscripten_bind_btTypedObject__btTypedObject_p1:ie,_emscripten_bind_btDbvtBroadphase__aabbTest_p3:un,_emscripten_bind_btCylinderShape__localGetSupportingVertex_p1:Mt,_emscripten_bind_btCollisionShape__isConvex_p0:Vv,_emscripten_bind_btGeneric6DofConstraint__getInfo2_p1:W4,_emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1:ho,_emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2:ahQ,_emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0:Wa,_emscripten_bind_btJacobianEntry__btJacobianEntry_p5:RZ,_emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0:afL,_emscripten_bind_btCapsuleShapeZ__getAabb_p3:aje,_emscripten_bind_btCylinderShapeX__getUserPointer_p0:Kt,_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3:alN,_emscripten_bind_btContactConstraint__getAppliedImpulse_p0:$8,_emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1:K5,_memmove:aDG,_emscripten_bind_btCollisionDispatcher__clearManifold_p1:uD,_emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2:OY,_emscripten_bind_btIndexedMesh__get_m_vertexType_p0:gO,_emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0:vM,_emscripten_bind_btManifoldPoint__get_m_localPointA_p0:aaQ,_emscripten_bind_btMatrix3x3__op_get_p1:eG,_emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3:Cf,_emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2:O_,_emscripten_bind_btTypedConstraint__getUserConstraintId_p0:q4,_emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0:amY,_emscripten_bind_btBU_Simplex1to4__getMargin_p0:Fq,_emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0:ih,_emscripten_bind_CProfileNode__CleanupMemory_p0:YM,_emscripten_bind_btRigidBody__getLinearFactor_p0:pW,_emscripten_bind_btQuadWord__btQuadWord_p3:MS,_emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0:aa1,_emscripten_bind_btBU_Simplex1to4__isInside_p2:EP,_emscripten_bind_btConvexHullShape____destroy___p0:gA,_emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1:Tw,_emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0:aan,_emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0:DO,_emscripten_bind_btConcaveShape__serialize_p2:akC,_emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1:wt,_emscripten_bind_btTypedObject__getObjectType_p0:gH,_emscripten_bind_btRigidBody__get_m_contactSolverType_p0:p2,_emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1:ac2,_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1:$B,_emscripten_bind_btCollisionShape__serialize_p2:Wg,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0:JV,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1:ac8,_emscripten_bind_btConcaveShape__isPolyhedral_p0:akh,_emscripten_bind_btConeShape__calculateTemporalAabb_p6:EG,_emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1:hX,_emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0:U3,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0:Ke,_emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1:$g,_emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1:_6,_emscripten_bind_btBU_Simplex1to4__getVertex_p2:EU,_emscripten_bind_btCylinderShape__isInfinite_p0:Md,_emscripten_bind_bt32BitAxisSweep3__getAabb_p3:alJ,_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3:adN,_emscripten_bind_btCollisionObject__serialize_p2:hZ,_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6:ahr,_emscripten_bind_btVector4__safeNormalize_p0:F6,_emscripten_bind_btCapsuleShapeX__getUpAxis_p0:agW,_emscripten_bind_btTriangleMesh__findOrAddVertex_p2:AW,_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2:adM,_emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3:PL,_emscripten_bind_btHinge2Constraint__get_m_objectType_p0:HM,_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3:ags,_emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0:Q0,_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0:HA,_emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0:aaW,_emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1:U7,_emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1:aeB,_emscripten_bind_btBvhTriangleMeshShape____destroy___p0:ZJ,_emscripten_bind_btManifoldPoint__get_m_partId1_p0:aag,_emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0:gZ,_emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1:po,_emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1:acD,_emscripten_bind_btCylinderShape__isConvex2d_p0:Mh,_emscripten_bind_btDynamicsWorld__getSolverInfo_p0:lq,_emscripten_bind_btPairCachingGhostObject____destroy___p0:U_,_emscripten_bind_btGeneric6DofConstraint____destroy___p0:Xh,_emscripten_bind_btCylinderShape__isConcave_p0:M0,_emscripten_bind_btRigidBody__setRestitution_p1:px,_emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1:acE,_emscripten_bind_btConvexTriangleMeshShape__getPlane_p3:iW,_emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:z1,_emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0:Ky,_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1:No,_emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0:BH,_emscripten_bind_btPoint2PointConstraint__enableFeedback_p1:abU,_emscripten_bind_btCylinderShapeZ__isConvex2d_p0:aci,_emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:ahl,_emscripten_bind_btVector3__getX_p0:Gq,_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0:Nq,_emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0:Ua,_emscripten_bind_btStridingMeshInterface__setScaling_p1:abu,_emscripten_bind_btCapsuleShapeX__getShapeType_p0:ag8,_emscripten_bind_btUniformScalingShape__isSoftBody_p0:KV,_emscripten_bind_btDynamicsWorld__addVehicle_p1:mV,_emscripten_bind_btGhostObject__hasAnisotropicFriction_p0:akc,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0:agL,_emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2:vj,_emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0:Nm,_emscripten_bind_btCylinderShapeZ____destroy___p0:acN,_emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0:wp,_emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0:ag6,_emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0:ZM,_emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6:ajt,_emscripten_bind_btUniformScalingShape__getChildShape_p0:KP,_emscripten_bind_btTriangleMesh__setScaling_p1:A5,_emscripten_bind_btWheelInfo__set_m_rollInfluence_p1:Eg,_emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0:Om,_emscripten_bind_btVector4__setValue_p4:FN,_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2:acW,_emscripten_bind_btBU_Simplex1to4__serialize_p2:E5,_emscripten_bind_btCylinderShapeZ__getLocalScaling_p0:acx,_emscripten_bind_btPoint2PointConstraint__get_m_setting_p0:abR,_emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0:agd,_emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1:aee,_emscripten_bind_btCompoundShape__isPolyhedral_p0:kM,_emscripten_bind_btContactConstraint__getObjectType_p0:$$,_emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1:wn,_emscripten_bind_btSerializer__getCurrentBufferSize_p0:H0,_emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0:aes,_emscripten_bind_btTypedConstraint__setEnabled_p1:rf,_emscripten_bind_btCylinderShape__getLocalScaling_p0:Mv,_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1:aaK,_emscripten_bind_btDbvtProxy__isConvex2d_p1:M$,_emscripten_bind_btTriangleInfoMap____destroy___p0:akQ,_emscripten_bind_btRigidBody__getAngularVelocity_p0:pk,_emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0:_l,_emscripten_bind_btGhostObject__getActivationState_p0:ajQ,_emscripten_bind_btStaticPlaneShape__isInfinite_p0:Vk,_emscripten_bind_btCapsuleShapeX__isSoftBody_p0:ag5,_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1:aaJ,_emscripten_bind_btQuaternion__dot_p1:aiw,_emscripten_bind_btBoxShape__getMarginNonVirtual_p0:agf,_emscripten_bind_btDynamicsWorld__rayTestSingle_p6:mK,_emscripten_bind_btMatrix3x3__transpose_p0:fj,_emscripten_bind_btCollisionWorld__contactTest_p2:SL,_emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2:ajj,_emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1:sw,_emscripten_bind_btVector3__fuzzyZero_p0:GE,_emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2:TO,_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0:Rx,_emscripten_bind_btQuaternion__setMax_p1:ah1,_emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1:vs,_emscripten_bind_btContactConstraint__getConstraintType_p0:$X,_emscripten_bind_btCylinderShape__getRadius_p0:Mx,_emscripten_bind_btConeShapeX__setMargin_p1:AI,_emscripten_bind_btRigidBody__setFlags_p1:oC,_emscripten_bind_btDbvtProxy__set_m_aabbMax_p1:NP,_emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2:iL,_emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0:I_,_emscripten_bind_btClock__reset_p0:Xy,_emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2:LE,_emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1:Jl,_emscripten_bind_btOptimizedBvh__deSerializeFloat_p1:rI,_emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2:ja,_emscripten_bind_btBoxShape__getConvexPolyhedron_p0:afy,_emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1:ahC,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0:ade,_emscripten_bind_btDynamicsWorld__contactTest_p2:l6,_emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0:yW,_emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1:aen,_emscripten_bind_btBroadphasePair__get_m_pProxy0_p0:Bi,_emscripten_bind_btRaycastVehicle__applyEngineForce_p2:JC,_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1:Hw,_emscripten_bind_btBroadphaseInterface__setAabb_p4:i2,_emscripten_bind_btConvexShape__isSoftBody_p0:Qk,_emscripten_bind_btUniformScalingShape__setLocalScaling_p1:Lz,_emscripten_bind_btConvexShape__isConvex_p0:Qf,_emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1:Qv,_emscripten_bind_btBroadphaseProxy__getUid_p0:aeF,_emscripten_bind_btMultiSphereShape__isPolyhedral_p0:O4,_emscripten_bind_btSphereShape__getName_p0:al6,_emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4:ZU,_emscripten_bind_btHinge2Constraint__getAnchor_p0:IB,_emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6:lN,_emscripten_bind_btGhostObject__activate_p1:ajI,_emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0:Lh,_emscripten_bind_btQuaternion__z_p0:aiv,_emscripten_bind_btBoxShape__getShapeType_p0:afz,_emscripten_bind_btVector4__getY_p0:FY,_emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3:aeY,_emscripten_bind_btVector4__getX_p0:Fj,_emscripten_bind_btBroadphasePair__btBroadphasePair_p1:BR,_emscripten_bind_btBroadphasePair__btBroadphasePair_p0:BQ,_emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0:agp,_emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1:wP,_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0:QQ,_emscripten_bind_btBroadphasePair__get_m_algorithm_p0:Bo,__GLOBAL__I_a:aDp,_emscripten_bind_btConvexHullShape__getEdge_p3:f7,_emscripten_bind_btCompoundShape__getChildShape_p1:kN,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2:agw,_emscripten_bind_btEmptyShape__getAngularMotionDisc_p0:oX,_emscripten_bind_btCylinderShapeZ__getName_p0:acC,_emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1:y6,_emscripten_bind_btVector3__isZero_p0:GB,_emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0:Ut,_emscripten_bind_btConeShape__btConeShape_p2:Dp,_emscripten_bind_btVector3__minAxis_p0:GH,_emscripten_bind_btIndexedMesh__get_m_vertexBase_p0:gL,_emscripten_bind_btSliderConstraint__setDampingLimLin_p1:$p,_emscripten_bind_btSphereShape__isCompound_p0:alr,_emscripten_bind_btContinuousDynamicsWorld__setGravity_p1:B3,_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0:adr,_emscripten_bind_btHinge2Constraint__getAxis_p1:I5,_emscripten_bind_btCollisionWorld__setBroadphase_p1:Sf,_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1:Hy,_emscripten_bind_btCapsuleShapeX__isNonMoving_p0:ag3,_emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0:ll,_emscripten_bind_btRaycastVehicle__updateAction_p2:Kd,_emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1:abj,_emscripten_bind_btWheelInfo__set_m_brake_p1:D$,_emscripten_bind_btSphereShape__localGetSupportingVertex_p1:al0,_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1:r$,_emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0:Y0,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0:XN,_emscripten_bind_btCylinderShapeZ__getShapeType_p0:acZ,_emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0:ajF,_emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0:Tm,_emscripten_bind_btConeShapeX____destroy___p0:AL,_emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0:nj,_emscripten_bind_btHashPtr____destroy___p0:UH,_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1:Cj,_emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1:mj,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1:Hs,_emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0:Eb,_emscripten_bind_btQuaternion__op_sub_p1:ah$,_emscripten_bind_btHingeConstraint__get_m_objectType_p0:xC,_emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1:ww,_emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1:hr,_emscripten_bind_btIDebugDraw__getDebugMode_p0:tk,_emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2:xJ,_emscripten_bind_btVector4__absolute_p0:F_,_emscripten_bind_btStorageResult__setShapeIdentifiersA_p2:NM,_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0:aev,_emscripten_bind_btStorageResult__set_m_distance_p1:M2,_emscripten_bind_btPersistentManifold__set_m_companionIdA_p1:kc,_emscripten_bind_btTypedConstraint__getConstraintType_p0:q9,_emscripten_bind_btConvexShape__calculateLocalInertia_p2:QY,_emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1:A6,_emscripten_bind_btVector4__getZ_p0:Fl,_emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3:fu,_emscripten_bind_btVector4__serializeDouble_p1:FK,_emscripten_bind_btRigidBody__setActivationState_p1:p7,_emscripten_bind_btTransform__invXform_p1:X3,_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0:aeE,_emscripten_bind_btUniversalConstraint__setUserConstraintType_p1:ny,_emscripten_bind_btCollisionObject__getFriction_p0:g_,_emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1:nX,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0:XV,_emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0:N5,_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0:TP,_malloc:aDx,_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0:KL,_emscripten_bind_btDispatcher__getNewManifold_p2:RP,_emscripten_bind_btPolyhedralConvexShape__getName_p0:sR,_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3:vY,_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1:vX,_emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0:UA,_emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1:afP,_emscripten_bind_btRigidBody__setSleepingThresholds_p2:qu,_emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0:Bn,_emscripten_bind_btMultiSphereShape__getSphereRadius_p1:O5,_emscripten_bind_btConvexHullShape__serializeSingleShape_p1:hP,_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3:Cl,_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2:Ck,_emscripten_bind_btWheelInfo__get_m_engineForce_p0:DW,_emscripten_bind_btUniformScalingShape__getShapeType_p0:LN,_emscripten_bind_btDefaultMotionState__setWorldTransform_p1:B_,_emscripten_bind_btQuaternion__getZ_p0:ah_,_emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3:N6,_emscripten_bind_btBoxShape__serializeSingleShape_p1:agk,_emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1:wy,_emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3:sO,_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3:lw,_emscripten_bind_btConvexInternalShape__serialize_p2:TB,_emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0:il,_emscripten_bind_btSliderConstraint__getSolveLinLimit_p0:Z0,_emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1:Y3,_emscripten_bind_btVector3__rotate_p2:HR,_emscripten_bind_btPolyhedralConvexShape__getShapeType_p0:sg,_emscripten_bind_btContactConstraint__setParam_p2:aa4,_emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1:Pi,_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2:lv,_emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1:lJ,_emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1:UO,_emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4:jJ,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1:Ib,_emscripten_bind_btHingeConstraint__set_m_objectType_p1:xx,_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1:lu,_emscripten_bind_btCylinderShapeX__getName_p0:K3,_emscripten_bind_btDispatcher__releaseManifold_p1:RT,_emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1:rq,_emscripten_bind_btDbvtBroadphase__optimize_p0:tH,_emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1:aeh,_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3:RD,_emscripten_bind_btRaycastVehicle__setPitchControl_p1:JL,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1:ak3,_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4:RE,_emscripten_bind_btCollisionObject__setUserPointer_p1:hb,_emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0:Ur,_emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0:S7,_emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2:rZ,_emscripten_bind_btConeTwistConstraint__setEnabled_p1:vL,_emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1:vg,_emscripten_bind_btCylinderShapeZ__setMargin_p1:acU,_emscripten_bind_btVector3__normalized_p0:GV,_emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3:SC,_emscripten_bind_btRigidBody__getLinearDamping_p0:qT,_emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1:qP,_emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0:aeC,_emscripten_bind_btBU_Simplex1to4__getShapeType_p0:Fd,_emscripten_bind_btCollisionObject__setHitFraction_p1:hh,_emscripten_bind_btSliderConstraint__serialize_p2:_Z,_emscripten_bind_btAngularLimit__getCorrection_p0:iu,_emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7:NS,_emscripten_bind_btBroadphaseProxy__isNonMoving_p1:ad2,_emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1:fy,_emscripten_bind_btCylinderShape__getBoundingSphere_p2:MN,_emscripten_bind_btDynamicsWorld__getWorldType_p0:mT,_emscripten_bind_btVector3__op_div_p1:GG,_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3:ws,_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2:v5,_emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1:Nx,_emscripten_bind_btBvhTriangleMeshShape__getAabb_p3:ZA,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0:$y,_emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0:su,_emscripten_bind_btMultiSphereShape__setLocalScaling_p1:Pr,_emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1:QK,_emscripten_bind_btSliderConstraint__setUseFrameOffset_p1:Zq,_emscripten_bind_btHingeConstraint__setDbgDrawSize_p1:ya,_emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0:eT,_emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0:jB,_emscripten_bind_btIDebugDraw__drawTransform_p2:tm,_emscripten_bind_btConeTwistConstraint__getTwistAngle_p0:wT,_emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1:fG,_emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0:UT,_emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1:pL,_emscripten_bind_btStackAlloc__getAvailableMemory_p0:mu,_emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0:W_,_emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2:Qx,_emscripten_bind_btBvhTriangleMeshShape__getMargin_p0:ZD,_emscripten_bind_btHeightfieldTerrainShape__isConvex_p0:PS,_emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3:amU,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0:Mn,_emscripten_bind_btTriangleInfo__get_m_flags_p0:Hg,_emscripten_bind_btConcaveShape__getName_p0:akG,_emscripten_bind_btContactConstraint__getRigidBodyB_p0:$E,_emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1:n5,_emscripten_bind_btOptimizedBvh__refitPartial_p3:rA,_emscripten_bind_btConcaveShape__getAabb_p3:akI,_emscripten_bind_btCollisionShape__isInfinite_p0:Vw,_emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1:acv,_emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1:tO,_emscripten_bind_btConvexInternalShape__getMargin_p0:TN,_emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0:A$,_emscripten_bind_btCompoundShape__isConvex_p0:ke,_emscripten_bind_btSliderConstraint__setDampingDirLin_p1:_g,_emscripten_bind_btCapsuleShape__getMargin_p0:fD,_emscripten_bind_btAngularLimit____destroy___p0:jr,_emscripten_bind_btUniversalConstraint__getInfo2_p1:nd,_emscripten_bind_btMatrix3x3__getIdentity_p0:er,_free:aDB,_emscripten_bind_btConeShapeX__getName_p0:AS,_emscripten_bind_btTransform__setBasis_p1:XC,_emscripten_bind_btCapsuleShape__isConcave_p0:fi,_emscripten_bind_btHingeConstraint__enableMotor_p1:x5,_emscripten_bind_btCollisionObject__setIslandTag_p1:hg,_emscripten_bind_btSliderConstraint__setDampingDirAng_p1:Z$,_emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1:ahM,_emscripten_bind_btGhostObject__setCcdMotionThreshold_p1:aiX,_emscripten_bind_btConcaveShape__getLocalScaling_p0:akD,_emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1:yd,_emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1:Hf,_emscripten_bind_btQuaternion__setEulerZYX_p3:aii,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0:agF,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0:Hu,_emscripten_bind_btHashInt__getUid1_p0:Sb,_emscripten_bind_btCapsuleShapeZ__isConvex2d_p0:aiJ,_emscripten_bind_btVector3__maxAxis_p0:G0,_emscripten_bind_btSliderConstraint__needsFeedback_p0:Z4,_emscripten_bind_btIDebugDraw__drawSpherePatch_p9:tt,_emscripten_bind_btVector3__op_mul_p1:Gz,_emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1:gl,_emscripten_bind_btRigidBody__setMassProps_p2:o$,_emscripten_bind_btHeightfieldTerrainShape__getMargin_p0:Qq,_emscripten_bind_btHingeConstraint__setUserConstraintId_p1:xW,_emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1:hY,_emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1:VF,_emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0:Y4,_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0:t8,_emscripten_bind_btConvexHullShape__getName_p0:gf,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2:Kl,_emscripten_bind_btPoint2PointConstraint__getPivotInB_p0:abQ,_emscripten_bind_btBU_Simplex1to4__setMargin_p1:Ft,_emscripten_bind_btRaycastVehicle__getWheelInfo_p1:JD,_emscripten_bind_btRigidBody__setAngularVelocity_p1:pG,_emscripten_bind_btRigidBody__serialize_p2:qB,_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1:aek,_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0:YF,_emscripten_bind_btPolyhedralConvexShape__setMargin_p1:s$,_emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6:s9,_emscripten_bind_btCapsuleShapeX__getRadius_p0:agY,_emscripten_bind_btQuaternion__op_div_p1:aim,_emscripten_bind_btCylinderShapeZ__setLocalScaling_p1:acF,_emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0:kW,_emscripten_bind_btHingeConstraint__setMotorTarget_p2:yB,_emscripten_bind_btConeShapeX__getAabbSlow_p3:AQ,_emscripten_bind_btMultiSphereShape____destroy___p0:PB,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1:Mp,_emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3:rC,_emscripten_bind_btConvexShape__getAabbSlow_p3:Rj,_emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3:acA,_emscripten_bind_btCylinderShapeZ__isCompound_p0:ab7,_emscripten_bind_btPoint2PointConstraint__getObjectType_p0:abO,_emscripten_bind_btCylinderShapeX__isSoftBody_p0:Kx,_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0:aaE,_emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0:$l,_emscripten_bind_btUniformScalingShape__getAabb_p3:LA,_emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0:OR,_emscripten_bind_btHeightfieldTerrainShape__isCompound_p0:PO,_emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1:iH,_emscripten_bind_btCapsuleShapeZ__isConcave_p0:aiM,_emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3:lI,_emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0:vC,_emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:agh,_emscripten_bind_btConeShapeX__getMarginNonVirtual_p0:AK,_emscripten_bind_btConeShapeZ__btConeShapeZ_p2:zP,_emscripten_bind_btVector4__maxAxis4_p0:FW,_emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1:Tr,_emscripten_bind_btVector4__absolute4_p0:F3,_emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1:hK,_emscripten_bind_btSerializer__findNameForPointer_p1:HW,_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0:uq,_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7:ur,_emscripten_bind_btPairCachingGhostObject__activate_p1:Ud,_emscripten_bind_btPairCachingGhostObject__activate_p0:Uc,_emscripten_bind_btMatrix3x3__op_sub_p1:d2,_emscripten_bind_btGhostObject__getRestitution_p0:ajS,_emscripten_bind_btHinge2Constraint__getAngle1_p0:IG,_emscripten_bind_btSphereShape__serialize_p2:al1,_emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0:uh,_emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2:acu,_emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2:We,_emscripten_bind_btRigidBody__setBroadphaseHandle_p1:qe,_emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1:aai,_emscripten_bind_btCapsuleShapeX__getUserPointer_p0:ag2,_emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0:akr,_emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1:tP,_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0:Xc,_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2:Xd,_emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1:SZ,_emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1:aay,_emscripten_bind_btPersistentManifold__btPersistentManifold_p5:ky,_emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1:Nj,_emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0:aas,_emscripten_bind_btCylinderShapeZ__getMarginNV_p0:acc,_emscripten_bind_btTriangleMesh__addIndexedMesh_p1:AX,_emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1:WZ,_emscripten_bind_btTriangleMesh__addIndexedMesh_p2:AZ,_emscripten_bind_btSliderConstraint__setFrames_p2:$K,_emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0:LL,_emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0:eZ,_emscripten_bind_btSimpleDynamicsWorld__removeAction_p1:OE,_emscripten_bind_btContactConstraint__setContactManifold_p1:abb,_emscripten_bind_btSphereShape__setUserPointer_p1:als,_emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1:nH,_emscripten_bind_btCapsuleShapeZ__getUpAxis_p0:aiz,_emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0:N4,_emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1:E4,_emscripten_bind_btPolyhedralConvexShape__getPlane_p3:s8,_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0:aaH,_emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0:M5,_emscripten_bind_btSimpleDynamicsWorld__clearForces_p0:N2,_emscripten_bind_btPoint2PointConstraint__setPivotB_p1:acp,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0:LR,_emscripten_bind_btSerializer__finalizeChunk_p4:H1,_emscripten_bind_btGeneric6DofConstraint__setEnabled_p1:VG,_emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1:$i,_emscripten_bind_btCylinderShapeX__getLocalScaling_p0:KZ,_emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1:ae2,_emscripten_bind_btStackAlloc__endBlock_p1:mv,_emscripten_bind_btCylinderShape__setLocalScaling_p1:MD,_emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1:Us,_emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1:ak_,_emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1:k_,_emscripten_bind_btMatrix3x3__adjoint_p0:et,_emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0:ab3,_emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0:Y1,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0:Y$,_emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1:Ng,_emscripten_bind_btVector4__normalized_p0:F8,_emscripten_bind_btSliderConstraint__getObjectType_p0:Z6,_emscripten_bind_btRigidBody__setGravity_p1:qI,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0:agT,_emscripten_bind_btDynamicsWorld__removeConstraint_p1:l$,_emscripten_bind_btPersistentManifold__clearUserCache_p1:jT,_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5:YV,_emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6:ZK,_emscripten_bind_btDbvtProxy__btDbvtProxy_p5:NO,_emscripten_bind_btCollisionShape__setLocalScaling_p1:Wk,_emscripten_bind_btUniversalConstraint__getObjectType_p0:nZ,_emscripten_bind_btSphereShape__getAabbSlow_p3:amL,_emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0:zx,_emscripten_bind_btConvexShape__getName_p0:Q4,_emscripten_bind_btRotationalLimitMotor__testLimitValue_p1:yY,_emscripten_bind_btCollisionWorld__getDispatchInfo_p0:Sh,_emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0:jA,_emscripten_bind_btBoxShape__getAngularMotionDisc_p0:agj,_emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0:TV,_emscripten_bind_btDispatcher__getInternalManifoldPool_p0:RR,_emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0:$6,_emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0:Uk,_emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0:gE,_emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0:Lm,_emscripten_bind_btHinge2Constraint__getUserConstraintId_p0:HL,_emscripten_bind_btQuaternion__setRotation_p2:aih,_emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2:o8,_emscripten_bind_btCylinderShapeX__isPolyhedral_p0:Ko,_emscripten_bind_btEmptyShape__getShapeType_p0:ol,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0:Yj,_emscripten_bind_btManifoldResult__getBody1Internal_p0:Op,_emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1:aa_,_emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0:sL,_emscripten_bind_btQuadWord__op_set_p1:Mr,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0:agQ,_emscripten_bind_btPersistentManifold__getNumContacts_p0:jW,_emscripten_bind_btUniversalConstraint__get_m_objectType_p0:mF,_emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0:y$,_emscripten_bind_btGeneric6DofConstraint__setAxis_p2:Xw,_emscripten_bind_btWheelInfo__getSuspensionRestLength_p0:D7,_emscripten_bind_btSphereShape__getAngularMotionDisc_p0:amJ,_emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0:yj,_emscripten_bind_btHashPtr__getPointer_p0:TS,_emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0:HJ,_emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1:T2,_emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3:QW,_emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2:ZG,_emscripten_bind_btConeShape____destroy___p0:EA,_emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1:al8,_emscripten_bind_btConeTwistConstraint__setMotorTarget_p1:xf,_emscripten_bind_btConvexShape__serialize_p2:Q_,_emscripten_bind_btContactConstraint__setDbgDrawSize_p1:$3,_emscripten_bind_btQuaternion__setEuler_p3:ah8,_emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0:akW,_emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1:afe,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3:agG,_emscripten_bind_btPairCachingGhostObject__isStaticObject_p0:Uj,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1:Ia,_emscripten_bind_btBoxShape__getEdge_p3:af4,_emscripten_bind_btVector4__serializeFloat_p1:FS,_emscripten_bind_btMultiSphereShape__setUserPointer_p1:Os,_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3:ahb,_emscripten_bind_CProfileNode__Get_Name_p0:Yv,_emscripten_bind_bt32BitAxisSweep3__aabbTest_p3:alV,_emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2:V_,_emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0:tV,_emscripten_bind_btSliderConstraint____destroy___p0:$J,_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2:UQ,_emscripten_bind_btUniversalConstraint__getAnchor_p0:no,_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1:UP,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1:JP,_emscripten_bind_btRotationalLimitMotor__isLimited_p0:ze,_emscripten_bind_btBvhTriangleMeshShape__setMargin_p1:ZF,_emscripten_bind_btHingeConstraint__updateRHS_p1:xU,_emscripten_bind_btIndexedMesh__set_m_indexType_p1:gM,_emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1:OS,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0:YD,_emscripten_bind_btManifoldPoint__get_m_distance1_p0:aaS,_emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0:_t,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1:XR,_emscripten_bind_btClock__getTimeMicroseconds_p0:XB,_emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:ajo,_llvm_uadd_with_overflow_i64:aDF,_emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0:_B,_emscripten_bind_btCylinderShapeX__getMargin_p0:La,_emscripten_bind_btContactConstraint__enableFeedback_p1:$Q,_emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0:Kp,_emscripten_bind_btPoint2PointConstraint__setPivotA_p1:aco,_emscripten_bind_btConeTwistConstraint__setParam_p3:wI,_emscripten_bind_btConeShapeX__calculateTemporalAabb_p6:AR,_emscripten_bind_btHinge2Constraint__updateRHS_p1:It,_emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0:$P,_emscripten_bind_btMultiSphereShape__isConvex_p0:O9,_emscripten_bind_btRigidBody__setDamping_p2:qk,_emscripten_bind_btQuaternion__x_p0:aiu,_emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6:z6,_emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1:Cz,_emscripten_bind_btPersistentManifold__getContactPoint_p1:j2,_emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0:ahN,_emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1:acL,_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1:Zs,_emscripten_bind_btMotionState__getWorldTransform_p1:adA,_emscripten_bind_btRigidBody__activate_p0:pP,_emscripten_bind_btRigidBody__activate_p1:pQ,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0:MQ,_emscripten_bind_btCompoundShape__setLocalScaling_p1:kY,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0:Hl,_emscripten_bind_btCollisionObject__setCompanionId_p1:g9,_emscripten_bind_btConeTwistConstraint__set_m_objectType_p1:vK,_emscripten_bind_btDynamicsWorld__getNumConstraints_p0:l1,_emscripten_bind_btGhostObject__rayTest_p3:aks,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0:YQ,_emscripten_bind_btBoxShape__isConcave_p0:afA,_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1:v4,_emscripten_bind_btPolyhedralConvexShape__isCompound_p0:se,_emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4:O1,_emscripten_bind_btSliderConstraint__setUserConstraintType_p1:$k,_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1:xo,_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3:v6,_emscripten_bind_btCollisionConfiguration__getStackAllocator_p0:kt,_emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6:iX,_emscripten_bind_btStaticPlaneShape__serialize_p2:VO,_emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1:aeP,_emscripten_bind_btContinuousDynamicsWorld__rayTest_p3:Ch,_emscripten_bind_btSliderConstraint__getParam_p1:ZW,_emscripten_bind_btSliderConstraint__getParam_p2:ZX,_emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0:sP,_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11:aeW,_emscripten_bind_btGeneric6DofConstraint__getAngle_p1:WY,_emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1:WK,_emscripten_bind_btCollisionObject__getActivationState_p0:hv,_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1:KC,_emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2:Ln,_emscripten_bind_btStaticPlaneShape__isCompound_p0:Vg,_emscripten_bind_btBoxShape__isInfinite_p0:afs,_emscripten_bind_btContinuousDynamicsWorld__removeAction_p1:C1,_emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0:Fr,_emscripten_bind_btSliderConstraint__getUpperLinLimit_p0:_q,_emscripten_bind_btConeShapeX__setUserPointer_p1:zC,_emscripten_bind_btJacobianEntry__get_m_aJ_p0:R7,_emscripten_bind_btDynamicsWorld__addRigidBody_p3:lV,_emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0:PZ,_emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1:UK,_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3:OL,_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2:OK,_emscripten_bind_btBoxShape__calculateTemporalAabb_p6:ago,_emscripten_bind_btCylinderShapeZ__isConcave_p0:acY,_emscripten_bind_btSimpleBroadphase__setAabb_p4:kg,_emscripten_bind_btManifoldPoint__get_m_localPointB_p0:aaP,_emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2:alW,_emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1:eP,_emscripten_bind_btGhostObject__setDeactivationTime_p1:aj7,_emscripten_bind_btQuaternion__getIdentity_p0:aig,_emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0:ad7,_emscripten_bind_btCylinderShapeX__setMargin_p1:Lk,_emscripten_bind_btCollisionShape__getBoundingSphere_p2:Wq,_emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1:Y2,_emscripten_bind_btDbvtBroadphase__get_m_prediction_p0:sH,_emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0:ads,_emscripten_bind_btDispatcher__findAlgorithm_p3:RN,_emscripten_bind_btDispatcher__findAlgorithm_p2:RM,_emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1:Vd,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1:Hk,_emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3:Ty,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1:Rm,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0:JX,_emscripten_bind_btRigidBody__getCompanionId_p0:p6,_emscripten_bind_btCollisionWorld__rayTest_p3:SH,_emscripten_bind_btConvexTriangleMeshShape__setMargin_p1:iM,_emscripten_bind_btCollisionWorld__addCollisionObject_p1:SI,_emscripten_bind_btCollisionWorld__addCollisionObject_p3:SK,_emscripten_bind_btCollisionWorld__addCollisionObject_p2:SJ,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0:ac3,_emscripten_bind_btCapsuleShapeZ__getRadius_p0:aiB,_emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0:pw,_emscripten_bind_btRigidBody__hasAnisotropicFriction_p0:qd,_emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2:V8,_emscripten_bind_btConcaveShape__calculateLocalInertia_p2:akB,_emscripten_bind_btBoxShape__getPlaneEquation_p2:af_,_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7:adO,_emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0:aiL,_emscripten_bind_btBU_Simplex1to4__getMarginNV_p0:Eu,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0:Yh,_emscripten_bind_btStaticPlaneShape__getMargin_p0:VW,_emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1:Ta,_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1:PR,_emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1:QV,_emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1:ahj,_emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0:lM,_emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0:WP,_emscripten_bind_btGhostObject__getFriction_p0:aiO,_emscripten_bind_btConvexInternalShape__setMargin_p1:Uy,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1:adG,_emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6:acV,_emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0:VD,_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0:agD,_emscripten_bind_btConvexTriangleMeshShape__getMargin_p0:iJ,_emscripten_bind_btSimpleBroadphase__aabbTest_p3:kn,_emscripten_bind_btHinge2Constraint__setUpperLimit_p1:Ik,_emscripten_bind_btConvexHullShape__isConvex2d_p0:fX,_emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0:lt,_emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0:Iw,_emscripten_bind_btVector4__angle_p1:F0,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4:Fp,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3:Fo,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2:Fn,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1:Fm,_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0:E6,_emscripten_bind_btVector3__setMin_p1:Gm,_emscripten_bind_btSliderConstraint__setLowerLinLimit_p1:_k,_emscripten_bind_btCylinderShape__getShapeType_p0:M1,_emscripten_bind_btMotionState__setWorldTransform_p1:adz,_emscripten_bind_btHingeConstraint__getUid_p0:x8,_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4:UU,_emscripten_bind_btUniformScalingShape__isConvex_p0:KQ,_emscripten_bind_btQuantizedBvh__setQuantizationValues_p2:amt,_emscripten_bind_btQuantizedBvh__setQuantizationValues_p3:amu,_emscripten_bind_btQuantizedBvh__serialize_p3:amP,_emscripten_bind_btQuantizedBvh__serialize_p2:amO,_emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:gB,_emscripten_bind_btHeightfieldTerrainShape__getName_p0:Qm,_emscripten_bind_btQuadWord__btQuadWord_p4:MT,_emscripten_bind_btQuantizedBvh__isQuantized_p0:amv,_emscripten_bind_btQuaternion__nearest_p1:ahV,_emscripten_bind_btConeShapeZ__getShapeType_p0:zA,_emscripten_bind_btHinge2Constraint__setLimit_p3:Jf,_emscripten_bind_btUniversalConstraint__getUserConstraintId_p0:mE,_emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0:rM,_emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1:ajL,_emscripten_bind_btSliderConstraint__getDampingLimAng_p0:_P,_emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1:rb,_emscripten_bind_btCompoundShape__isInfinite_p0:kO,_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1:N0,_emscripten_bind_btConeShapeX__getLocalScalingNV_p0:Ag,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0:$w,_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0:uY,_emscripten_bind_btSliderConstraint__getFrameOffsetA_p0:_x,_emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1:OM,_emscripten_bind_btVector3__serializeFloat_p1:GY,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0:ak7,_emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1:OP,_emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3:Xk,_emscripten_bind_btAxisSweep3__printStats_p0:vd,_emscripten_bind_btSphereShape__isSoftBody_p0:alD,_emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1:eX,_emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1:Cw,_emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1:Ce,_emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1:acH,_emscripten_bind_btVector3__dot_p1:G4,_emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1:t0,_emscripten_bind_btHashString__equals_p1:amC,_emscripten_bind_btUniversalConstraint__buildJacobian_p0:m5,_emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1:amb,_emscripten_bind_btContactConstraint__set_m_objectType_p1:$G,_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0:$x,_emscripten_bind_btAngularLimit__getSoftness_p0:jg,_emscripten_bind_btRigidBody__applyCentralForce_p1:pd,_emscripten_bind_btQuaternion__farthest_p1:ah7,_emscripten_bind_btPersistentManifold__removeContactPoint_p1:kA,_emscripten_bind_btJacobianEntry__set_m_Adiag_p1:R1,_emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1:AJ,_emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1:Ei,_emscripten_bind_btConvexHullShape__getMargin_p0:gs,_emscripten_bind_btMultiSphereShape__getLocalScaling_p0:Py,_emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0:afO,_emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1:s1,_emscripten_bind_btIDebugDraw__setDebugMode_p1:ts,_emscripten_bind_btPairCachingGhostObject__setCompanionId_p1:T$,_emscripten_bind_btVector4__normalize_p0:F$,_emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1:ni,_emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1:np,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0:ac7,_emscripten_bind_btPoint2PointConstraint__getUid_p0:aaX,_emscripten_bind_btSliderConstraint__testAngLimits_p0:_V,_emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2:V4,_emscripten_bind_btBoxShape__isConvex_p0:afr,_emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5:am$,_emscripten_bind_btPersistentManifold__get_m_companionIdB_p0:j9,_emscripten_bind_btUniformScalingShape__isConcave_p0:LM,_emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0:CA,_emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0:Sq,_emscripten_bind_bt32BitAxisSweep3__getHandle_p1:alq,_emscripten_bind_CProfileNode__Reset_p0:YJ,_emscripten_bind_btSphereShape__calculateLocalInertia_p2:al$,_emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0:ac_,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0:ak1,_emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0:ak$,_emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0:t6,_emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2:am4,_emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1:akS,_emscripten_bind_btBoxShape__localGetSupportingVertex_p1:afT,_emscripten_bind_btCylinderShape__getMargin_p0:MH,_emscripten_bind_btQuaternion__w_p0:ais,_emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0:amj,_emscripten_bind_btIDebugDraw__draw3dText_p2:ta,_emscripten_bind_btMatrix3x3__setIdentity_p0:ez,_emscripten_bind_btHingeConstraint____destroy___p0:yz,_emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1:QH,_emscripten_bind_btCollisionWorld__setDebugDrawer_p1:SN,_emscripten_bind_btTriangleMesh__getScaling_p0:Au,_emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1:aad,_emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0:lo,_emscripten_bind_btCapsuleShape__isConvex2d_p0:ff,_emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0:r1,_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1:Bx,_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0:jo,_emscripten_bind_btCylinderShape__getMarginNonVirtual_p0:MK,_emscripten_bind_btCompoundShape__isConvex2d_p0:ld,_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0:ak2,_emscripten_bind_btHinge2Constraint__isEnabled_p0:Ix,_emscripten_bind_btSliderConstraint__getDampingDirLin_p0:_E,_emscripten_bind_btDispatcher__getInternalManifoldPointer_p0:RL,_emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0:Zd,_emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1:N3,_emscripten_bind_btMultiSphereShape__getSphereCount_p0:O6,_emscripten_bind_btDbvtBroadphase__rayTest_p5:tA,_emscripten_bind_btDbvtBroadphase__rayTest_p4:tz,_emscripten_bind_btHinge2Constraint__setStiffness_p2:IQ,_emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2:ael,_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1:ak0,_emscripten_bind_btCylinderShapeX__isNonMoving_p0:Ku,_emscripten_bind_btConvexInternalShape__getMarginNV_p0:Tk,_emscripten_bind_btConeShapeX__isSoftBody_p0:Ao,_emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0:Nr,_emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0:s5,_emscripten_bind_btHingeConstraint__getInfo2Internal_p5:xR,_emscripten_bind_btVector3__serializeDouble_p1:GA,_emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1:G9,_emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0:uI,_emscripten_bind_btVehicleRaycaster__castRay_p3:zH,_emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3:ry,_emscripten_bind_btManifoldPoint__get_m_index0_p0:aak,_emscripten_bind_btTriangleInfoMap__deSerialize_p1:alb,_emscripten_bind_btDynamicsWorld__convexSweepTest_p4:ma,_emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1:aha,_emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0:sE,_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1:Ru,_emscripten_bind_btHingeConstraint__getRigidBodyA_p0:xw,_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12:Xf,_emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1:ae5,_emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0:Kv,_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1:jO,_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0:jN,_emscripten_bind_btCapsuleShape__getLocalScaling_p0:fs,_emscripten_bind_btRaycastVehicle__getNumWheels_p0:JA,_emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6:LJ,_emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0:QL,_emscripten_bind_btConcaveShape__getMargin_p0:akK,_emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1:aeA,_emscripten_bind_btBU_Simplex1to4__getAabb_p3:E3,_emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1:aeS,_emscripten_bind_btManifoldPoint__get_m_partId0_p0:aaf,_emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1:aam,_emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1:nu,_emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2:S4,_emscripten_bind_btCylinderShapeZ__getAabbSlow_p3:acS,_emscripten_bind_btHingeConstraint__getUseFrameOffset_p0:yb,_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0:JW,_emscripten_bind_btDynamicsWorld__convexSweepTest_p5:mb,_emscripten_bind_btCylinderShape__isSoftBody_p0:Mi,_emscripten_bind_btCylinderShape__setMargin_p1:NE,_emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0:mH,_emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0:BI,_emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2:AV,_emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1:KX,_emscripten_bind_btVector3__op_sub_p1:Gv,_emscripten_bind_btIndexedMesh__get_m_indexType_p0:gT,_emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2:ZL,_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1:EV,_emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1:wR,_emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0:P6,_emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2:ae4,_emscripten_bind_btCapsuleShapeX__isInfinite_p0:ag1,_emscripten_bind_btCylinderShapeZ__isConvex_p0:acd,_emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1:ub,_emscripten_bind_btSliderConstraint__getAngularPos_p0:Zm,_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8:afM,_emscripten_bind_btConvexInternalShape__isSoftBody_p0:TU,_emscripten_bind_btMultiSphereShape__getBoundingSphere_p2:PD,_emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1:aaO,_emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2:OX,_emscripten_bind_btConvexHullShape__isPolyhedral_p0:fS,_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1:EO,_emscripten_bind_btSphereShape__getAabb_p3:ama,_emscripten_bind_btCollisionObject__setFriction_p1:g1,_emscripten_bind_btConvexHullShape__getMarginNV_p0:fW,_emscripten_bind_btCylinderShapeZ__isPolyhedral_p0:aca,_emscripten_bind_btBU_Simplex1to4__isConcave_p0:Fe,_emscripten_bind_btConvexShape__calculateTemporalAabb_p6:Rf,_emscripten_bind_btIDebugDraw__drawContactPoint_p5:te,_emscripten_bind_btConeShapeZ__isPolyhedral_p0:zm,_emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1:D0,_emscripten_bind_btContactConstraint__getUserConstraintPtr_p0:$0,_emscripten_bind_btContactConstraint__buildJacobian_p0:$M,_emscripten_bind_btRaycastVehicle__updateVehicle_p1:Kc,_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1:Nn,_emscripten_bind_btClock____destroy___p0:Xz,_emscripten_bind_btClock__btClock_p1:XH,_emscripten_bind_btClock__btClock_p0:XG,_emscripten_bind_btTriangleMesh__getNumTriangles_p0:Ax,_emscripten_bind_btHingeConstraint__getRigidBodyB_p0:xv,_emscripten_bind_btCylinderShape__setUserPointer_p1:L7,_emscripten_bind_btManifoldPoint__get_m_lifeTime_p0:aaq,_emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0:ip,_emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2:QN,_emscripten_bind_btBroadphaseProxy__isCompound_p1:ad$,_emscripten_bind_btConvexInternalShape__getLocalScaling_p0:TC,_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6:afk,_emscripten_bind_btRigidBody__setUserPointer_p1:on,_emscripten_bind_btGhostObject__getBroadphaseHandle_p0:ajR,_emscripten_bind_btUniformScalingShape__isCompound_p0:KO,_emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0:Ow,_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0:afj,_emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1:UL,_emscripten_bind_btQuadWord__z_p0:L2,_emscripten_bind_btSerializer__allocate_p2:H5,_emscripten_bind_btConvexShape__getAabbNonVirtual_p3:Q2,_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5:Oy,_emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:amH,_emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3:abw,_emscripten_bind_btGhostObject__getDeactivationTime_p0:aiP,_emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1:ab0,_emscripten_bind_btManifoldResult__btManifoldResult_p2:O3,_emscripten_bind_btManifoldResult__btManifoldResult_p0:O2,_emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0:_j,_emscripten_bind_btDbvtProxy__isPolyhedral_p1:MV,_emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1:gW,_emscripten_bind_btVector4__setMin_p1:Ff,_emscripten_bind_btManifoldPoint__set_m_index1_p1:aaD,_emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1:ab_,_emscripten_bind_btPoint2PointConstraint__getConstraintType_p0:abT,_emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0:oO,_emscripten_bind_btStaticPlaneShape__getLocalScaling_p0:VP,_emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1:abg,_emscripten_bind_btOverlapCallback__processOverlap_p1:VM,_emscripten_bind_btConeShape__calculateLocalInertia_p2:Dk,_emscripten_bind_btStackAlloc__destroy_p0:m3,_emscripten_bind_btConeShapeX__getAngularMotionDisc_p0:AO,_emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2:Sz,_emscripten_bind_btBroadphasePair__set_m_pProxy0_p1:Bk,_emscripten_bind_btPairCachingGhostObject__setActivationState_p1:U1,_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0:Np,_emscripten_bind_btSliderConstraint__testLinLimits_p0:$e,_emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1:ZN,_emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1:_f,_emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0:Td,_emscripten_bind_btConeShapeX__getHeight_p0:Af,_emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0:ajV,_emscripten_bind_btMatrix3x3__cofac_p4:eh,_emscripten_bind_btDbvtBroadphase__setAabb_p4:tB,_emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1:Oi,_emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0:r_,_emscripten_bind_btGhostObject__mergesSimulationIslands_p0:aiW,_emscripten_bind_btConeTwistConstraint__setParam_p2:wH,_emscripten_bind_btPersistentManifold____destroy___p0:kB,_emscripten_bind_btBoxShape__getBoundingSphere_p2:agi,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0:Yd,_emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0:pi,_emscripten_bind_btCollisionShape__isCompound_p0:Vt,_emscripten_bind_btVector4__minAxis4_p0:Fk,_emscripten_bind_btBroadphasePair__set_m_pProxy1_p1:Bl,_emscripten_bind_btQuadWord__setMin_p1:LS,_emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1:eH,_emscripten_bind_btDbvtBroadphase__createProxy_p8:tG,_emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2:ajp,_emscripten_bind_btDynamicsWorld__getConstraintSolver_p0:mO,_emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3:NX,_emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0:V6,_emscripten_bind_btQuaternion__inverse_p0:aic,_emscripten_bind_btRigidBody__internalGetExtensionPointer_p0:o6,_emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1:Tx,_emscripten_bind_btDynamicsWorld__objectQuerySingle_p8:mZ,_emscripten_bind_btCollisionObject__isStaticObject_p0:hj,_emscripten_bind_btCapsuleShape__getBoundingSphere_p2:fK,_emscripten_bind_btStorageResult__setShapeIdentifiersB_p2:NL,_emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2:alX,_emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0:P1,_emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0:lK,_emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0:Zp,_emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2:s4,_emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0:I2,_emscripten_bind_btGeneric6DofConstraint__getParam_p2:W2,_emscripten_bind_btVector3__setX_p1:GZ,_emscripten_bind_btSphereShape__getBoundingSphere_p2:amI,_emscripten_bind_btGeneric6DofConstraint__getParam_p1:W1,_emscripten_bind_btActionInterface__updateAction_p2:GK,_emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0:QE,_emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0:PE,_emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1:WB,_emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0:q_,_emscripten_bind_btQuantizedBvh__buildInternal_p0:amN,_emscripten_bind_btConvexShape__getMargin_p0:Q9,_emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1:ab$,_emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1:abV,_emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0:BB,_emscripten_bind_btConeShape__setMargin_p1:DB,_emscripten_bind_btStackAlloc__create_p1:m2,_emscripten_bind_btRigidBody__getAnisotropicFriction_p0:pX,_emscripten_bind_btBU_Simplex1to4__isSoftBody_p0:E8,_emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4:wN,_emscripten_bind_btCollisionShape__calculateLocalInertia_p2:Wf,_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6:ae8,_emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0:Cv,_emscripten_bind_btQuaternion__length2_p0:air,_emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0:qt,_emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1:Up,_emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4:gw,_emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0:acy,_emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1:WH,_emscripten_bind_btRaycastVehicle__getForwardAxis_p0:JH,_emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0:$5,_emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1:tx,_emscripten_bind_btStaticPlaneShape__getUserPointer_p0:Vl,_emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0:lf,_emscripten_bind_btSimpleDynamicsWorld__contactTest_p2:Oe,_emscripten_bind_btGhostObject__internalGetExtensionPointer_p0:aj8,_emscripten_bind_btStridingMeshInterface__getNumSubParts_p0:aby,_emscripten_bind_btVector3__getSkewSymmetricMatrix_p3:Gn,_emscripten_bind_btGhostObject__setBroadphaseHandle_p1:akd,_emscripten_bind_ConcreteContactResultCallback____destroy___p0:NR,_emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0:S9,_emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0:ahy,_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0:agI,_emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1:Nh,_emscripten_bind_btHingeConstraint__setFrames_p2:yT,_emscripten_bind_btBroadphaseAabbCallback__process_p1:BO,_emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1:Pt,_emscripten_bind_btCylinderShape__getAabb_p3:ME,_emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2:adI,_emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0:mk,_emscripten_bind_btRaycastVehicle__getUserConstraintId_p0:Jo,_emscripten_bind_btEmptyShape__isInfinite_p0:of,_emscripten_bind_btAngularLimit__getSign_p0:jf,_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1:abk,_emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1:WS,_emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3:Sy,_emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1:Tt,_emscripten_bind_btVector3__cross_p1:GQ,_emscripten_bind_btCylinderShapeZ__serialize_p2:acw,_emscripten_bind_btCylinderShapeZ__isSoftBody_p0:acj,_emscripten_bind_btMultiSphereShape__serialize_p2:O0,_emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0:akq,_emscripten_bind_btVector4__length_p0:GI,_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3:YT,_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2:YS,_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1:LO,_emscripten_bind_btCollisionShape__isNonMoving_p0:Vy,_emscripten_bind_btConvexShape__localGetSupportingVertex_p1:QZ,_emscripten_bind_btConvexTriangleMeshShape____destroy___p0:iQ,_emscripten_bind_btRigidBody__setIslandTag_p1:ou,_emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0:af1,_emscripten_bind_btPolyhedralConvexShape__isInfinite_p0:r9,_emscripten_bind_btTriangleMesh__unLockVertexBase_p1:Bb,_emscripten_bind_btQuaternion__setMin_p1:ahX,_emscripten_bind_btConeShapeZ__getHeight_p0:zo,_emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1:ajz,_emscripten_bind_btAngularLimit__getRelaxationFactor_p0:ji,_emscripten_bind_btSphereShape__isInfinite_p0:alz,_emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0:aaM,_emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0:Zt,_emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0:Pv,_emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1:IK,_emscripten_bind_btBoxShape__getNumVertices_p0:afV,_emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0:q$,_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0:Y9,_emscripten_bind_btBU_Simplex1to4__getName_p0:E_,_emscripten_bind_btStorageResult__addContactPoint_p3:NJ,_emscripten_bind_btHingeConstraint__getSolveLimit_p0:yh,_emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0:Sp,_emscripten_bind_btConvexTriangleMeshShape__serialize_p2:iI,_emscripten_bind_btDispatcher__getNumManifolds_p0:RI,_emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0:al5,_emscripten_bind_btSliderConstraint__getInfo1_p1:ZY,_emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0:NC,_emscripten_bind_btGhostObject____destroy___p0:akA,_emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0:QM,_emscripten_bind_btConvexShape__serializeSingleShape_p1:Ri,_emscripten_bind_btCapsuleShapeX____destroy___p0:ahO,_emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3:ahP,_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0:ada,_emscripten_bind_btUniformScalingShape__isInfinite_p0:KR,_emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6:hS,_emscripten_bind_btBoxShape__getAabb_p3:af8,_emscripten_bind_btHingeConstraint__setParam_p2:yo,_emscripten_bind_btUniversalConstraint__isLimited_p1:nq,_emscripten_bind_btCapsuleShapeX__getAabb_p3:ahF,_emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1:amh,_emscripten_bind_btHinge2Constraint__getObjectType_p0:IY,_emscripten_bind_btManifoldPoint__setDistance_p1:aav,_emscripten_bind_btGhostObject__checkCollideWith_p1:ajD,_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1:ajb,_emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3:afH,_emscripten_bind_btMatrix3x3__setRotation_p1:ew,_emscripten_bind_btVector4__btVector4_p0:Ge,_emscripten_bind_btManifoldPoint__set_m_partId0_p1:aat,_emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1:afC,_emscripten_bind_btVector4__btVector4_p4:Gf,_emscripten_bind_btGhostObject__getCollisionFlags_p0:aj4,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1:YE,_emscripten_bind_btGeneric6DofConstraint__updateRHS_p1:Wy,_emscripten_bind_btContactConstraint__serialize_p2:aa3,_emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4:adK,_emscripten_bind_btMultiSphereShape__isNonMoving_p0:Pc,_emscripten_bind_btHinge2Constraint__enableSpring_p2:IN,_emscripten_bind_btCapsuleShapeX__setLocalScaling_p1:ahE,_emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0:ak8,_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0:YB,_emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0:RF,_emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0:vF,_emscripten_bind_btHinge2Constraint__getInfo2_p1:Io,_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4:acX,_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1:YH,_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0:Hv,_emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1:n8,_emscripten_bind_btQuantizedBvh__deSerializeFloat_p1:amZ,_emscripten_bind_btConvexTriangleMeshShape__isConcave_p0:it,_emscripten_bind_btRigidBody__setAngularFactor_p1:qJ,_emscripten_bind_btAngularLimit__btAngularLimit_p0:jM,_emscripten_bind_btCapsuleShapeZ__setUserPointer_p1:aiy,_emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1:iU,_emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1:jG,_emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5:alm,_emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1:_C,_emscripten_bind_btContinuousDynamicsWorld__serialize_p1:B7,_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2:aju,_emscripten_bind_btSphereShape__getMarginNonVirtual_p0:ami,_emscripten_bind_btCollisionDispatcher__needsResponse_p2:uy,_emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1:ahG,_emscripten_bind_btPoint2PointConstraint__getParam_p2:abK,_emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1:zV,_emscripten_bind_btCollisionObject__getInternalType_p0:hu,_emscripten_bind_btPoint2PointConstraint__getParam_p1:abJ,_emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0:CC,_emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1:AE,_emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1:ae3,_emscripten_bind_btUniformScalingShape__setMargin_p1:LF,_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2:agr,_emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0:ii,_emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1:ajw,_emscripten_bind_btOptimizedBvh__setQuantizationValues_p2:qV,_emscripten_bind_btOptimizedBvh__setQuantizationValues_p3:qW,_emscripten_bind_btMatrix3x3__setValue_p9:eo,_emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1:akZ,_emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1:wv,_emscripten_bind_btMatrix3x3__op_mul_p1:el,runPostSets:dZ,stackAlloc:dJ,stackSave:dK,stackRestore:dL,setThrew:dM,setTempRet0:dP,setTempRet1:dQ,setTempRet2:dR,setTempRet3:dS,setTempRet4:dT,setTempRet5:dU,setTempRet6:dV,setTempRet7:dW,setTempRet8:dX,setTempRet9:dY,dynCall_viiiii:aDI,dynCall_iiiiiif:aD1,dynCall_vif:aEm,dynCall_viifii:aEH,dynCall_viiiifffffif:aE0,dynCall_vi:aFl,dynCall_iiiiiffii:aFG,dynCall_vii:aF$,dynCall_viiifii:aGk,dynCall_ifffffffff:aGF,dynCall_viiiif:aG_,dynCall_viiiiffffii:aHj,dynCall_ii:aHE,dynCall_iiiiiiifif:aHZ,dynCall_vifffi:aIi,dynCall_ifiii:aID,dynCall_viifi:aIY,dynCall_viiiiiiiii:aJh,dynCall_viiiiiiff:aJC,dynCall_iiiifiii:aJX,dynCall_iiiiiiiiiiiiii:aKg,dynCall_viffff:aKB,dynCall_viffiii:aKW,dynCall_iiiiiiiiiiii:aLf,dynCall_fififii:aLA,dynCall_fiiiiiiiiiii:aLV,dynCall_fiifii:aMe,dynCall_ifff:aMz,dynCall_viiff:aMU,dynCall_iifi:aNd,dynCall_iiii:aNy,dynCall_viiiifffffi:aNT,dynCall_fif:aOc,dynCall_iiiiff:aOx,dynCall_viff:aOS,dynCall_vifi:aPb,dynCall_viiiiif:aPw,dynCall_vifff:aPR,dynCall_viiiiii:aQa,dynCall_fiiff:aQv,dynCall_iiif:aQQ,dynCall_iiiiiiii:aQ9,dynCall_viiiiiiii:aRu,dynCall_viffffff:aRP,dynCall_fiii:aR8,dynCall_iiiiiiiiii:aSt,dynCall_fiif:aSO,dynCall_fiiiiiiiiii:aS7,dynCall_ifii:aTs,dynCall_fiffiiiiiii:aTN,dynCall_iiiiiiiiiiiii:aT6,dynCall_fiiiii:aUr,dynCall_iif:aUM,dynCall_if:aU5,dynCall_vifffff:aVq,dynCall_viiiiiiiif:aVL,dynCall_vifii:aV4,dynCall_fi:aWp,dynCall_viiiiiiiiii:aWK,dynCall_iii:aW3,dynCall_iiiiii:aXo,dynCall_iiiiiii:aXJ,dynCall_viiiiiiif:aX2,dynCall_fii:aYn,dynCall_vifffffffff:aYI,dynCall_fiiiiiiii:aY1,dynCall_iifif:aZm,dynCall_iffff:aZH,dynCall_viiiiffffiif:aZ0,dynCall_iiiiif:a_l,dynCall_iiff:a_G,dynCall_viiif:a_$,dynCall_i:a$k,dynCall_viiiifii:a$F,dynCall_iiiifffiii:a$_,dynCall_viii:a0j,dynCall_iff:a0E,dynCall_v:a0Z,dynCall_iiiiiiiii:a1i,dynCall_iiiii:a1D,dynCall_viif:a1Y,dynCall_iiiif:a2h,dynCall_fiiifii:a2C,dynCall_viiii:a2X}}) +// EMSCRIPTEN_END_ASM +({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "jsCall": jsCall, "invoke_viiiii": invoke_viiiii, "invoke_iiiiiif": invoke_iiiiiif, "invoke_vif": invoke_vif, "invoke_viifii": invoke_viifii, "invoke_viiiifffffif": invoke_viiiifffffif, "invoke_vi": invoke_vi, "invoke_iiiiiffii": invoke_iiiiiffii, "invoke_vii": invoke_vii, "invoke_viiifii": invoke_viiifii, "invoke_ifffffffff": invoke_ifffffffff, "invoke_viiiif": invoke_viiiif, "invoke_viiiiffffii": invoke_viiiiffffii, "invoke_ii": invoke_ii, "invoke_iiiiiiifif": invoke_iiiiiiifif, "invoke_vifffi": invoke_vifffi, "invoke_ifiii": invoke_ifiii, "invoke_viifi": invoke_viifi, "invoke_viiiiiiiii": invoke_viiiiiiiii, "invoke_viiiiiiff": invoke_viiiiiiff, "invoke_iiiifiii": invoke_iiiifiii, "invoke_iiiiiiiiiiiiii": invoke_iiiiiiiiiiiiii, "invoke_viffff": invoke_viffff, "invoke_viffiii": invoke_viffiii, "invoke_iiiiiiiiiiii": invoke_iiiiiiiiiiii, "invoke_fififii": invoke_fififii, "invoke_fiiiiiiiiiii": invoke_fiiiiiiiiiii, "invoke_fiifii": invoke_fiifii, "invoke_ifff": invoke_ifff, "invoke_viiff": invoke_viiff, "invoke_iifi": invoke_iifi, "invoke_iiii": invoke_iiii, "invoke_viiiifffffi": invoke_viiiifffffi, "invoke_fif": invoke_fif, "invoke_iiiiff": invoke_iiiiff, "invoke_viff": invoke_viff, "invoke_vifi": invoke_vifi, "invoke_viiiiif": invoke_viiiiif, "invoke_vifff": invoke_vifff, "invoke_viiiiii": invoke_viiiiii, "invoke_fiiff": invoke_fiiff, "invoke_iiif": invoke_iiif, "invoke_iiiiiiii": invoke_iiiiiiii, "invoke_viiiiiiii": invoke_viiiiiiii, "invoke_viffffff": invoke_viffffff, "invoke_fiii": invoke_fiii, "invoke_iiiiiiiiii": invoke_iiiiiiiiii, "invoke_fiif": invoke_fiif, "invoke_fiiiiiiiiii": invoke_fiiiiiiiiii, "invoke_ifii": invoke_ifii, "invoke_fiffiiiiiii": invoke_fiffiiiiiii, "invoke_iiiiiiiiiiiii": invoke_iiiiiiiiiiiii, "invoke_fiiiii": invoke_fiiiii, "invoke_iif": invoke_iif, "invoke_if": invoke_if, "invoke_vifffff": invoke_vifffff, "invoke_viiiiiiiif": invoke_viiiiiiiif, "invoke_vifii": invoke_vifii, "invoke_fi": invoke_fi, "invoke_viiiiiiiiii": invoke_viiiiiiiiii, "invoke_iii": invoke_iii, "invoke_iiiiii": invoke_iiiiii, "invoke_iiiiiii": invoke_iiiiiii, "invoke_viiiiiiif": invoke_viiiiiiif, "invoke_fii": invoke_fii, "invoke_vifffffffff": invoke_vifffffffff, "invoke_fiiiiiiii": invoke_fiiiiiiii, "invoke_iifif": invoke_iifif, "invoke_iffff": invoke_iffff, "invoke_viiiiffffiif": invoke_viiiiffffiif, "invoke_iiiiif": invoke_iiiiif, "invoke_iiff": invoke_iiff, "invoke_viiif": invoke_viiif, "invoke_i": invoke_i, "invoke_viiiifii": invoke_viiiifii, "invoke_iiiifffiii": invoke_iiiifffiii, "invoke_viii": invoke_viii, "invoke_iff": invoke_iff, "invoke_v": invoke_v, "invoke_iiiiiiiii": invoke_iiiiiiiii, "invoke_iiiii": invoke_iiiii, "invoke_viif": invoke_viif, "invoke_iiiif": invoke_iiiif, "invoke_fiiifii": invoke_fiiifii, "invoke_viiii": invoke_viiii, "_llvm_lifetime_end": _llvm_lifetime_end, "_cosf": _cosf, "_fabsf": _fabsf, "_sysconf": _sysconf, "___cxa_throw": ___cxa_throw, "_atexit": _atexit, "_abort": _abort, "_fprintf": _fprintf, "_llvm_eh_exception": _llvm_eh_exception, "_printf": _printf, "_acosf": _acosf, "_fflush": _fflush, "_sqrtf": _sqrtf, "_write": _write, "___setErrNo": ___setErrNo, "_fwrite": _fwrite, "_send": _send, "_llvm_pow_f32": _llvm_pow_f32, "_llvm_umul_with_overflow_i32": _llvm_umul_with_overflow_i32, "_exit": _exit, "_atan2f": _atan2f, "___cxa_pure_virtual": ___cxa_pure_virtual, "_llvm_bswap_i16": _llvm_bswap_i16, "__formatString": __formatString, "__reallyNegative": __reallyNegative, "_time": _time, "_asinf": _asinf, "___cxa_does_inherit": ___cxa_does_inherit, "___cxa_guard_acquire": ___cxa_guard_acquire, "__ZSt9terminatev": __ZSt9terminatev, "_gettimeofday": _gettimeofday, "___cxa_find_matching_catch": ___cxa_find_matching_catch, "_sinf": _sinf, "__ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback": __ZN20btAxisSweep3InternalItE26processAllOverlappingPairsEP17btOverlapCallback, "___assert_func": ___assert_func, "__ZSt18uncaught_exceptionv": __ZSt18uncaught_exceptionv, "_pwrite": _pwrite, "___cxa_call_unexpected": ___cxa_call_unexpected, "_sbrk": _sbrk, "___cxa_guard_abort": ___cxa_guard_abort, "___cxa_allocate_exception": ___cxa_allocate_exception, "___errno_location": ___errno_location, "___gxx_personality_v0": ___gxx_personality_v0, "__ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback": __ZN20btAxisSweep3InternalIjE26processAllOverlappingPairsEP17btOverlapCallback, "_llvm_lifetime_start": _llvm_lifetime_start, "___cxa_is_number_type": ___cxa_is_number_type, "_llvm_bswap_i32": _llvm_bswap_i32, "_fmod": _fmod, "___cxa_guard_release": ___cxa_guard_release, "__exit": __exit, "___resumeException": ___resumeException, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "NaN": NaN, "Infinity": Infinity, "__ZTVN10__cxxabiv117__class_type_infoE": __ZTVN10__cxxabiv117__class_type_infoE, "__ZTVN10__cxxabiv120__si_class_type_infoE": __ZTVN10__cxxabiv120__si_class_type_infoE, "___dso_handle": ___dso_handle }, buffer); +var _emscripten_bind_btConeShapeX__setConeUpIndex_p1 = Module["_emscripten_bind_btConeShapeX__setConeUpIndex_p1"] = asm["_emscripten_bind_btConeShapeX__setConeUpIndex_p1"]; +var _emscripten_bind_btDbvtProxy__get_stage_p0 = Module["_emscripten_bind_btDbvtProxy__get_stage_p0"] = asm["_emscripten_bind_btDbvtProxy__get_stage_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld____destroy___p0 = Module["_emscripten_bind_btContinuousDynamicsWorld____destroy___p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld____destroy___p0"]; +var _emscripten_bind_btBoxShape__getNumPlanes_p0 = Module["_emscripten_bind_btBoxShape__getNumPlanes_p0"] = asm["_emscripten_bind_btBoxShape__getNumPlanes_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape____destroy___p0 = Module["_emscripten_bind_btHeightfieldTerrainShape____destroy___p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape____destroy___p0"]; +var _emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3"]; +var _emscripten_bind_btGhostObject__upcast_p1 = Module["_emscripten_bind_btGhostObject__upcast_p1"] = asm["_emscripten_bind_btGhostObject__upcast_p1"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__isEnabled_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__isEnabled_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__isEnabled_p0"]; +var _emscripten_bind_btBroadphaseProxy__isPolyhedral_p1 = Module["_emscripten_bind_btBroadphaseProxy__isPolyhedral_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isPolyhedral_p1"]; +var _emscripten_bind_btHinge2Constraint__buildJacobian_p0 = Module["_emscripten_bind_btHinge2Constraint__buildJacobian_p0"] = asm["_emscripten_bind_btHinge2Constraint__buildJacobian_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0"]; +var _emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9 = Module["_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9"] = asm["_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9"]; +var _emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8 = Module["_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8"] = asm["_emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8"]; +var _emscripten_bind_btIDebugDraw__drawLine_p3 = Module["_emscripten_bind_btIDebugDraw__drawLine_p3"] = asm["_emscripten_bind_btIDebugDraw__drawLine_p3"]; +var _emscripten_bind_btCollisionObject__mergesSimulationIslands_p0 = Module["_emscripten_bind_btCollisionObject__mergesSimulationIslands_p0"] = asm["_emscripten_bind_btCollisionObject__mergesSimulationIslands_p0"]; +var _emscripten_bind_btIDebugDraw__drawLine_p4 = Module["_emscripten_bind_btIDebugDraw__drawLine_p4"] = asm["_emscripten_bind_btIDebugDraw__drawLine_p4"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1"]; +var _emscripten_bind_btConeShape__getAabbSlow_p3 = Module["_emscripten_bind_btConeShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConeShape__getAabbSlow_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2"]; +var _emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1"]; +var _emscripten_bind_btRigidBody____destroy___p0 = Module["_emscripten_bind_btRigidBody____destroy___p0"] = asm["_emscripten_bind_btRigidBody____destroy___p0"]; +var _emscripten_bind_btSimpleBroadphase__destroyProxy_p2 = Module["_emscripten_bind_btSimpleBroadphase__destroyProxy_p2"] = asm["_emscripten_bind_btSimpleBroadphase__destroyProxy_p2"]; +var _emscripten_bind_btBroadphaseInterface__createProxy_p8 = Module["_emscripten_bind_btBroadphaseInterface__createProxy_p8"] = asm["_emscripten_bind_btBroadphaseInterface__createProxy_p8"]; +var _emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1"]; +var _emscripten_bind_btContactSolverInfo____destroy___p0 = Module["_emscripten_bind_btContactSolverInfo____destroy___p0"] = asm["_emscripten_bind_btContactSolverInfo____destroy___p0"]; +var _emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1"]; +var _emscripten_bind_btCapsuleShape__getRadius_p0 = Module["_emscripten_bind_btCapsuleShape__getRadius_p0"] = asm["_emscripten_bind_btCapsuleShape__getRadius_p0"]; +var _emscripten_bind_btConeShapeZ__serializeSingleShape_p1 = Module["_emscripten_bind_btConeShapeZ__serializeSingleShape_p1"] = asm["_emscripten_bind_btConeShapeZ__serializeSingleShape_p1"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1"]; +var _emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0 = Module["_emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0"] = asm["_emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0"]; +var _emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btVector4__fuzzyZero_p0 = Module["_emscripten_bind_btVector4__fuzzyZero_p0"] = asm["_emscripten_bind_btVector4__fuzzyZero_p0"]; +var _emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0"]; +var _emscripten_bind_btSphereShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btSphereShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btSphereShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2 = Module["_emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2"] = asm["_emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2"]; +var _emscripten_bind_btIDebugDraw__drawCapsule_p5 = Module["_emscripten_bind_btIDebugDraw__drawCapsule_p5"] = asm["_emscripten_bind_btIDebugDraw__drawCapsule_p5"]; +var _emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1 = Module["_emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1"]; +var _emscripten_bind_btPersistentManifold__get_m_index1a_p0 = Module["_emscripten_bind_btPersistentManifold__get_m_index1a_p0"] = asm["_emscripten_bind_btPersistentManifold__get_m_index1a_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4"]; +var _emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3 = Module["_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3"] = asm["_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3"]; +var _emscripten_bind_btAxisSweep3__unQuantize_p3 = Module["_emscripten_bind_btAxisSweep3__unQuantize_p3"] = asm["_emscripten_bind_btAxisSweep3__unQuantize_p3"]; +var _emscripten_bind_btCapsuleShape__getUpAxis_p0 = Module["_emscripten_bind_btCapsuleShape__getUpAxis_p0"] = asm["_emscripten_bind_btCapsuleShape__getUpAxis_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5 = Module["_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5"] = asm["_emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5"]; +var _emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1 = Module["_emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1"] = asm["_emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1"]; +var _emscripten_bind_btConeShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConeShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConeShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btHingeConstraint__getBFrame_p0 = Module["_emscripten_bind_btHingeConstraint__getBFrame_p0"] = asm["_emscripten_bind_btHingeConstraint__getBFrame_p0"]; +var _emscripten_bind_btHingeConstraint__buildJacobian_p0 = Module["_emscripten_bind_btHingeConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btHingeConstraint__buildJacobian_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1"]; +var _emscripten_bind_btCompoundShape__isNonMoving_p0 = Module["_emscripten_bind_btCompoundShape__isNonMoving_p0"] = asm["_emscripten_bind_btCompoundShape__isNonMoving_p0"]; +var _emscripten_bind_btUniformScalingShape__setUserPointer_p1 = Module["_emscripten_bind_btUniformScalingShape__setUserPointer_p1"] = asm["_emscripten_bind_btUniformScalingShape__setUserPointer_p1"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1"]; +var _emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0 = Module["_emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0"]; +var _emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btConeTwistConstraint__setDamping_p1 = Module["_emscripten_bind_btConeTwistConstraint__setDamping_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setDamping_p1"]; +var _emscripten_bind_btHeightfieldTerrainShape__setMargin_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__setMargin_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setMargin_p1"]; +var _emscripten_bind_btDynamicsWorld__getDispatcher_p0 = Module["_emscripten_bind_btDynamicsWorld__getDispatcher_p0"] = asm["_emscripten_bind_btDynamicsWorld__getDispatcher_p0"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1"]; +var _emscripten_bind_btCylinderShape__isNonMoving_p0 = Module["_emscripten_bind_btCylinderShape__isNonMoving_p0"] = asm["_emscripten_bind_btCylinderShape__isNonMoving_p0"]; +var _emscripten_bind_btCollisionObject__getRestitution_p0 = Module["_emscripten_bind_btCollisionObject__getRestitution_p0"] = asm["_emscripten_bind_btCollisionObject__getRestitution_p0"]; +var _emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0 = Module["_emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0"]; +var _emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1"]; +var _emscripten_bind_btPoint2PointConstraint__getInfo2_p1 = Module["_emscripten_bind_btPoint2PointConstraint__getInfo2_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__getInfo2_p1"]; +var _emscripten_bind_btConeTwistConstraint__setFixThresh_p1 = Module["_emscripten_bind_btConeTwistConstraint__setFixThresh_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setFixThresh_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0"]; +var _emscripten_bind_btGhostObject__setCompanionId_p1 = Module["_emscripten_bind_btGhostObject__setCompanionId_p1"] = asm["_emscripten_bind_btGhostObject__setCompanionId_p1"]; +var _emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0"]; +var _emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4 = Module["_emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4"] = asm["_emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4"]; +var _emscripten_bind_btQuaternion__normalized_p0 = Module["_emscripten_bind_btQuaternion__normalized_p0"] = asm["_emscripten_bind_btQuaternion__normalized_p0"]; +var _emscripten_bind_btCompoundShape__getLocalScaling_p0 = Module["_emscripten_bind_btCompoundShape__getLocalScaling_p0"] = asm["_emscripten_bind_btCompoundShape__getLocalScaling_p0"]; +var _emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1 = Module["_emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1"] = asm["_emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1"]; +var _emscripten_bind_btPairCachingGhostObject__getCompanionId_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCompanionId_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCompanionId_p0"]; +var _emscripten_bind_btTypedConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btTypedConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btTypedConstraint__getRigidBodyA_p0"]; +var _emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0"]; +var _emscripten_bind_btConvexHullShape__isInfinite_p0 = Module["_emscripten_bind_btConvexHullShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexHullShape__isInfinite_p0"]; +var _emscripten_bind_btRaycastVehicle__debugDraw_p1 = Module["_emscripten_bind_btRaycastVehicle__debugDraw_p1"] = asm["_emscripten_bind_btRaycastVehicle__debugDraw_p1"]; +var _emscripten_bind_btEmptyShape__isCompound_p0 = Module["_emscripten_bind_btEmptyShape__isCompound_p0"] = asm["_emscripten_bind_btEmptyShape__isCompound_p0"]; +var _emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btTriangleMesh__addIndex_p1 = Module["_emscripten_bind_btTriangleMesh__addIndex_p1"] = asm["_emscripten_bind_btTriangleMesh__addIndex_p1"]; +var _emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5 = Module["_emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5"] = asm["_emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5"]; +var _emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3"]; +var _emscripten_bind_btConeShape__isNonMoving_p0 = Module["_emscripten_bind_btConeShape__isNonMoving_p0"] = asm["_emscripten_bind_btConeShape__isNonMoving_p0"]; +var _emscripten_bind_btTypedConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btTypedConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btTypedConstraint__getUserConstraintType_p0"]; +var _emscripten_bind_btMatrix3x3__deSerializeDouble_p1 = Module["_emscripten_bind_btMatrix3x3__deSerializeDouble_p1"] = asm["_emscripten_bind_btMatrix3x3__deSerializeDouble_p1"]; +var _emscripten_bind_btVector3__y_p0 = Module["_emscripten_bind_btVector3__y_p0"] = asm["_emscripten_bind_btVector3__y_p0"]; +var _emscripten_bind_btDynamicsWorld__removeVehicle_p1 = Module["_emscripten_bind_btDynamicsWorld__removeVehicle_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeVehicle_p1"]; +var _emscripten_bind_btCylinderShape__getAabbSlow_p3 = Module["_emscripten_bind_btCylinderShape__getAabbSlow_p3"] = asm["_emscripten_bind_btCylinderShape__getAabbSlow_p3"]; +var _emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0"]; +var _emscripten_bind_btBoxShape__getMarginNV_p0 = Module["_emscripten_bind_btBoxShape__getMarginNV_p0"] = asm["_emscripten_bind_btBoxShape__getMarginNV_p0"]; +var _emscripten_bind_btRigidBody__getCenterOfMassTransform_p0 = Module["_emscripten_bind_btRigidBody__getCenterOfMassTransform_p0"] = asm["_emscripten_bind_btRigidBody__getCenterOfMassTransform_p0"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0"]; +var _emscripten_bind_btBU_Simplex1to4__isCompound_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isCompound_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isCompound_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getInfo1_p1 = Module["_emscripten_bind_btPoint2PointConstraint__getInfo1_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__getInfo1_p1"]; +var _emscripten_bind_btTransform__deSerialize_p1 = Module["_emscripten_bind_btTransform__deSerialize_p1"] = asm["_emscripten_bind_btTransform__deSerialize_p1"]; +var _emscripten_bind_btBoxShape__btBoxShape_p1 = Module["_emscripten_bind_btBoxShape__btBoxShape_p1"] = asm["_emscripten_bind_btBoxShape__btBoxShape_p1"]; +var _emscripten_bind_btHeightfieldTerrainShape__getAabb_p3 = Module["_emscripten_bind_btHeightfieldTerrainShape__getAabb_p3"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getAabb_p3"]; +var _emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1"]; +var _emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0"]; +var _emscripten_bind_btRaycastVehicle__getSteeringValue_p1 = Module["_emscripten_bind_btRaycastVehicle__getSteeringValue_p1"] = asm["_emscripten_bind_btRaycastVehicle__getSteeringValue_p1"]; +var _emscripten_bind_btRigidBody__internalSetExtensionPointer_p1 = Module["_emscripten_bind_btRigidBody__internalSetExtensionPointer_p1"] = asm["_emscripten_bind_btRigidBody__internalSetExtensionPointer_p1"]; +var _emscripten_bind_btHingeConstraint__needsFeedback_p0 = Module["_emscripten_bind_btHingeConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btHingeConstraint__needsFeedback_p0"]; +var _emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btHingeConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btHingeConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btHingeConstraint__getFrameOffsetA_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__addAction_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addAction_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addAction_p1"]; +var _emscripten_bind_btTransform__getOpenGLMatrix_p1 = Module["_emscripten_bind_btTransform__getOpenGLMatrix_p1"] = asm["_emscripten_bind_btTransform__getOpenGLMatrix_p1"]; +var _emscripten_bind_btRigidBody__internalApplyPushImpulse_p3 = Module["_emscripten_bind_btRigidBody__internalApplyPushImpulse_p3"] = asm["_emscripten_bind_btRigidBody__internalApplyPushImpulse_p3"]; +var _emscripten_bind_btPersistentManifold__getCacheEntry_p1 = Module["_emscripten_bind_btPersistentManifold__getCacheEntry_p1"] = asm["_emscripten_bind_btPersistentManifold__getCacheEntry_p1"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1"]; +var _emscripten_bind_btRigidBody__applyForce_p2 = Module["_emscripten_bind_btRigidBody__applyForce_p2"] = asm["_emscripten_bind_btRigidBody__applyForce_p2"]; +var _emscripten_bind_btConvexHullShape__addPoint_p1 = Module["_emscripten_bind_btConvexHullShape__addPoint_p1"] = asm["_emscripten_bind_btConvexHullShape__addPoint_p1"]; +var _emscripten_bind_btIDebugDraw__drawTriangle_p5 = Module["_emscripten_bind_btIDebugDraw__drawTriangle_p5"] = asm["_emscripten_bind_btIDebugDraw__drawTriangle_p5"]; +var _emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btDynamicsWorld__getPairCache_p0 = Module["_emscripten_bind_btDynamicsWorld__getPairCache_p0"] = asm["_emscripten_bind_btDynamicsWorld__getPairCache_p0"]; +var _emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7"]; +var _emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0"]; +var _emscripten_bind_btBroadphaseInterface__aabbTest_p3 = Module["_emscripten_bind_btBroadphaseInterface__aabbTest_p3"] = asm["_emscripten_bind_btBroadphaseInterface__aabbTest_p3"]; +var _emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1"]; +var _emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0 = Module["_emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0"] = asm["_emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0"]; +var _emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0 = Module["_emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0"] = asm["_emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2 = Module["_emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2"]; +var _emscripten_bind_btRaycastVehicle__setBrake_p2 = Module["_emscripten_bind_btRaycastVehicle__setBrake_p2"] = asm["_emscripten_bind_btRaycastVehicle__setBrake_p2"]; +var _emscripten_bind_btCollisionObject__getBroadphaseHandle_p0 = Module["_emscripten_bind_btCollisionObject__getBroadphaseHandle_p0"] = asm["_emscripten_bind_btCollisionObject__getBroadphaseHandle_p0"]; +var _emscripten_bind_btCylinderShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCylinderShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCylinderShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0 = Module["_emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0"] = asm["_emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1"]; +var _emscripten_bind_btIndexedMesh__set_m_vertexBase_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_vertexBase_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_vertexBase_p1"]; +var _emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0"]; +var _emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1 = Module["_emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1"] = asm["_emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1"]; +var _emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1 = Module["_emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1"]; +var _emscripten_bind_btVector3__x_p0 = Module["_emscripten_bind_btVector3__x_p0"] = asm["_emscripten_bind_btVector3__x_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1"]; +var _emscripten_bind_btSimpleBroadphase__aabbOverlap_p2 = Module["_emscripten_bind_btSimpleBroadphase__aabbOverlap_p2"] = asm["_emscripten_bind_btSimpleBroadphase__aabbOverlap_p2"]; +var _emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_btGhostObject__getRootCollisionShape_p0 = Module["_emscripten_bind_btGhostObject__getRootCollisionShape_p0"] = asm["_emscripten_bind_btGhostObject__getRootCollisionShape_p0"]; +var _emscripten_bind_btSerializer__finishSerialization_p0 = Module["_emscripten_bind_btSerializer__finishSerialization_p0"] = asm["_emscripten_bind_btSerializer__finishSerialization_p0"]; +var _emscripten_bind_btConeShapeZ__setUserPointer_p1 = Module["_emscripten_bind_btConeShapeZ__setUserPointer_p1"] = asm["_emscripten_bind_btConeShapeZ__setUserPointer_p1"]; +var _emscripten_bind_btRaycastVehicle__updateWheelTransform_p1 = Module["_emscripten_bind_btRaycastVehicle__updateWheelTransform_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateWheelTransform_p1"]; +var _emscripten_bind_btDbvtBroadphase__get_m_gid_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_gid_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_gid_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__isConcave_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isConcave_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isConcave_p0"]; +var _emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1 = Module["_emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1"]; +var _emscripten_bind_btTriangleInfoMap__serialize_p2 = Module["_emscripten_bind_btTriangleInfoMap__serialize_p2"] = asm["_emscripten_bind_btTriangleInfoMap__serialize_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_btCapsuleShapeX__getLocalScaling_p0 = Module["_emscripten_bind_btCapsuleShapeX__getLocalScaling_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getLocalScaling_p0"]; +var _emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2 = Module["_emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2"] = asm["_emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2"]; +var _emscripten_bind_btVector4__distance2_p1 = Module["_emscripten_bind_btVector4__distance2_p1"] = asm["_emscripten_bind_btVector4__distance2_p1"]; +var _emscripten_bind_btSliderConstraint__setParam_p2 = Module["_emscripten_bind_btSliderConstraint__setParam_p2"] = asm["_emscripten_bind_btSliderConstraint__setParam_p2"]; +var _emscripten_bind_btSliderConstraint__setParam_p3 = Module["_emscripten_bind_btSliderConstraint__setParam_p3"] = asm["_emscripten_bind_btSliderConstraint__setParam_p3"]; +var _emscripten_bind_btConeShapeX__getMarginNV_p0 = Module["_emscripten_bind_btConeShapeX__getMarginNV_p0"] = asm["_emscripten_bind_btConeShapeX__getMarginNV_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1"]; +var _emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0"]; +var _emscripten_bind_btConvexShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexShape__isNonMoving_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0"]; +var _emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btQuaternion__setValue_p3 = Module["_emscripten_bind_btQuaternion__setValue_p3"] = asm["_emscripten_bind_btQuaternion__setValue_p3"]; +var _emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1"]; +var _emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btHinge2Constraint__getInfo1_p1 = Module["_emscripten_bind_btHinge2Constraint__getInfo1_p1"] = asm["_emscripten_bind_btHinge2Constraint__getInfo1_p1"]; +var _emscripten_bind_btConeShape__serialize_p2 = Module["_emscripten_bind_btConeShape__serialize_p2"] = asm["_emscripten_bind_btConeShape__serialize_p2"]; +var _emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1"]; +var _emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0"]; +var _emscripten_bind_btCapsuleShape__getAabb_p3 = Module["_emscripten_bind_btCapsuleShape__getAabb_p3"] = asm["_emscripten_bind_btCapsuleShape__getAabb_p3"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1"]; +var _emscripten_bind_btTransform__op_mul_p1 = Module["_emscripten_bind_btTransform__op_mul_p1"] = asm["_emscripten_bind_btTransform__op_mul_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btRigidBody__removeConstraintRef_p1 = Module["_emscripten_bind_btRigidBody__removeConstraintRef_p1"] = asm["_emscripten_bind_btRigidBody__removeConstraintRef_p1"]; +var _emscripten_bind_btRigidBody__predictIntegratedTransform_p2 = Module["_emscripten_bind_btRigidBody__predictIntegratedTransform_p2"] = asm["_emscripten_bind_btRigidBody__predictIntegratedTransform_p2"]; +var _emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0 = Module["_emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0"] = asm["_emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0"]; +var _emscripten_bind_btConeShape__setConeUpIndex_p1 = Module["_emscripten_bind_btConeShape__setConeUpIndex_p1"] = asm["_emscripten_bind_btConeShape__setConeUpIndex_p1"]; +var _emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11 = Module["_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11"] = asm["_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11"]; +var _emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12 = Module["_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12"] = asm["_emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1"]; +var _emscripten_bind_btCollisionObject__getCompanionId_p0 = Module["_emscripten_bind_btCollisionObject__getCompanionId_p0"] = asm["_emscripten_bind_btCollisionObject__getCompanionId_p0"]; +var _emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1"]; +var _emscripten_bind_btConeShapeZ__isConvex2d_p0 = Module["_emscripten_bind_btConeShapeZ__isConvex2d_p0"] = asm["_emscripten_bind_btConeShapeZ__isConvex2d_p0"]; +var _emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4 = Module["_emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4"] = asm["_emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4"]; +var _emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1"]; +var _emscripten_bind_btCollisionObject__getCollisionFlags_p0 = Module["_emscripten_bind_btCollisionObject__getCollisionFlags_p0"] = asm["_emscripten_bind_btCollisionObject__getCollisionFlags_p0"]; +var _emscripten_bind_btHinge2Constraint__getUid_p0 = Module["_emscripten_bind_btHinge2Constraint__getUid_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUid_p0"]; +var _emscripten_bind_btRigidBody__internalWritebackVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalWritebackVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalWritebackVelocity_p0"]; +var _emscripten_bind_btRigidBody__internalWritebackVelocity_p1 = Module["_emscripten_bind_btRigidBody__internalWritebackVelocity_p1"] = asm["_emscripten_bind_btRigidBody__internalWritebackVelocity_p1"]; +var _emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0 = Module["_emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0"] = asm["_emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0"]; +var _emscripten_bind_btAxisSweep3__updateHandle_p4 = Module["_emscripten_bind_btAxisSweep3__updateHandle_p4"] = asm["_emscripten_bind_btAxisSweep3__updateHandle_p4"]; +var _emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5 = Module["_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5"]; +var _emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4 = Module["_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4"]; +var _emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0"]; +var _emscripten_bind_btTypedConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btTypedConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btTypedConstraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btStaticPlaneShape__isPolyhedral_p0 = Module["_emscripten_bind_btStaticPlaneShape__isPolyhedral_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isPolyhedral_p0"]; +var _emscripten_bind_btGhostObject__internalSetExtensionPointer_p1 = Module["_emscripten_bind_btGhostObject__internalSetExtensionPointer_p1"] = asm["_emscripten_bind_btGhostObject__internalSetExtensionPointer_p1"]; +var _emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0 = Module["_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0"] = asm["_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0"]; +var _emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0"]; +var _emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1"]; +var _emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btCollisionWorld__convexSweepTest_p5 = Module["_emscripten_bind_btCollisionWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btCollisionWorld__convexSweepTest_p5"]; +var _emscripten_bind_btCollisionWorld__convexSweepTest_p4 = Module["_emscripten_bind_btCollisionWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btCollisionWorld__convexSweepTest_p4"]; +var _emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0 = Module["_emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0"] = asm["_emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0"]; +var _emscripten_bind_btContactConstraint__getParam_p2 = Module["_emscripten_bind_btContactConstraint__getParam_p2"] = asm["_emscripten_bind_btContactConstraint__getParam_p2"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0"]; +var _emscripten_bind_btDefaultVehicleRaycaster____destroy___p0 = Module["_emscripten_bind_btDefaultVehicleRaycaster____destroy___p0"] = asm["_emscripten_bind_btDefaultVehicleRaycaster____destroy___p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3"]; +var _emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1"]; +var _emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5 = Module["_emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5"] = asm["_emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5"]; +var _emscripten_bind_btCapsuleShapeX__serialize_p2 = Module["_emscripten_bind_btCapsuleShapeX__serialize_p2"] = asm["_emscripten_bind_btCapsuleShapeX__serialize_p2"]; +var _emscripten_bind_btSliderConstraint__getSolveAngLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getSolveAngLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getSolveAngLimit_p0"]; +var _emscripten_bind_btUniversalConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btUniversalConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btUniversalConstraint__setUserConstraintId_p1"]; +var _emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btCompoundShape__getShapeType_p0 = Module["_emscripten_bind_btCompoundShape__getShapeType_p0"] = asm["_emscripten_bind_btCompoundShape__getShapeType_p0"]; +var _emscripten_bind_btBoxShape__isInside_p2 = Module["_emscripten_bind_btBoxShape__isInside_p2"] = asm["_emscripten_bind_btBoxShape__isInside_p2"]; +var _emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5 = Module["_emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5"] = asm["_emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5"]; +var _emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__removeHandle_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__removeHandle_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__removeHandle_p2"]; +var _emscripten_bind_btBoxShape__getName_p0 = Module["_emscripten_bind_btBoxShape__getName_p0"] = asm["_emscripten_bind_btBoxShape__getName_p0"]; +var _emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0"]; +var _emscripten_bind_btCompoundShape__isCompound_p0 = Module["_emscripten_bind_btCompoundShape__isCompound_p0"] = asm["_emscripten_bind_btCompoundShape__isCompound_p0"]; +var _emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btConvexHullShape__getUnscaledPoints_p0 = Module["_emscripten_bind_btConvexHullShape__getUnscaledPoints_p0"] = asm["_emscripten_bind_btConvexHullShape__getUnscaledPoints_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0"]; +var _emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1"]; +var _emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__rayTest_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__rayTest_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__rayTest_p3"]; +var _emscripten_bind_btVector4__furthestAxis_p0 = Module["_emscripten_bind_btVector4__furthestAxis_p0"] = asm["_emscripten_bind_btVector4__furthestAxis_p0"]; +var _emscripten_bind_btEmptyShape__processAllTriangles_p3 = Module["_emscripten_bind_btEmptyShape__processAllTriangles_p3"] = asm["_emscripten_bind_btEmptyShape__processAllTriangles_p3"]; +var _emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1 = Module["_emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1"]; +var _emscripten_bind_btCollisionObject__isActive_p0 = Module["_emscripten_bind_btCollisionObject__isActive_p0"] = asm["_emscripten_bind_btCollisionObject__isActive_p0"]; +var _emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1 = Module["_emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1"] = asm["_emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0"]; +var _emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9 = Module["_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9"] = asm["_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9"]; +var _emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8 = Module["_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8"] = asm["_emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8"]; +var _emscripten_bind_btConeTwistConstraint____destroy___p0 = Module["_emscripten_bind_btConeTwistConstraint____destroy___p0"] = asm["_emscripten_bind_btConeTwistConstraint____destroy___p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0"]; +var _emscripten_bind_btConeShapeZ__setConeUpIndex_p1 = Module["_emscripten_bind_btConeShapeZ__setConeUpIndex_p1"] = asm["_emscripten_bind_btConeShapeZ__setConeUpIndex_p1"]; +var _emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btConeTwistConstraint__updateRHS_p1 = Module["_emscripten_bind_btConeTwistConstraint__updateRHS_p1"] = asm["_emscripten_bind_btConeTwistConstraint__updateRHS_p1"]; +var _emscripten_bind_btCollisionDispatcher____destroy___p0 = Module["_emscripten_bind_btCollisionDispatcher____destroy___p0"] = asm["_emscripten_bind_btCollisionDispatcher____destroy___p0"]; +var _emscripten_bind_btTransform__setOrigin_p1 = Module["_emscripten_bind_btTransform__setOrigin_p1"] = asm["_emscripten_bind_btTransform__setOrigin_p1"]; +var _emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0"]; +var _emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1 = Module["_emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1"]; +var _emscripten_bind_btRaycastVehicle____destroy___p0 = Module["_emscripten_bind_btRaycastVehicle____destroy___p0"] = asm["_emscripten_bind_btRaycastVehicle____destroy___p0"]; +var _emscripten_bind_btWheelInfo__set_m_engineForce_p1 = Module["_emscripten_bind_btWheelInfo__set_m_engineForce_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_engineForce_p1"]; +var _emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0"]; +var _emscripten_bind_btVector3__setMax_p1 = Module["_emscripten_bind_btVector3__setMax_p1"] = asm["_emscripten_bind_btVector3__setMax_p1"]; +var _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btConeTwistConstraint__enableFeedback_p1 = Module["_emscripten_bind_btConeTwistConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btConeTwistConstraint__enableFeedback_p1"]; +var _emscripten_bind_btJacobianEntry__getDiagonal_p0 = Module["_emscripten_bind_btJacobianEntry__getDiagonal_p0"] = asm["_emscripten_bind_btJacobianEntry__getDiagonal_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1"]; +var _emscripten_bind_btEmptyShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btEmptyShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btEmptyShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btAxisSweep3__btAxisSweep3_p5 = Module["_emscripten_bind_btAxisSweep3__btAxisSweep3_p5"] = asm["_emscripten_bind_btAxisSweep3__btAxisSweep3_p5"]; +var _emscripten_bind_btAxisSweep3__btAxisSweep3_p4 = Module["_emscripten_bind_btAxisSweep3__btAxisSweep3_p4"] = asm["_emscripten_bind_btAxisSweep3__btAxisSweep3_p4"]; +var _emscripten_bind_btAxisSweep3__btAxisSweep3_p3 = Module["_emscripten_bind_btAxisSweep3__btAxisSweep3_p3"] = asm["_emscripten_bind_btAxisSweep3__btAxisSweep3_p3"]; +var _emscripten_bind_btAxisSweep3__btAxisSweep3_p2 = Module["_emscripten_bind_btAxisSweep3__btAxisSweep3_p2"] = asm["_emscripten_bind_btAxisSweep3__btAxisSweep3_p2"]; +var _emscripten_bind_btRigidBody__internalGetAngularVelocity_p1 = Module["_emscripten_bind_btRigidBody__internalGetAngularVelocity_p1"] = asm["_emscripten_bind_btRigidBody__internalGetAngularVelocity_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3"]; +var _emscripten_bind_btPersistentManifold__set_m_companionIdB_p1 = Module["_emscripten_bind_btPersistentManifold__set_m_companionIdB_p1"] = asm["_emscripten_bind_btPersistentManifold__set_m_companionIdB_p1"]; +var _emscripten_bind_btConeTwistConstraint__setAngularOnly_p1 = Module["_emscripten_bind_btConeTwistConstraint__setAngularOnly_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setAngularOnly_p1"]; +var _emscripten_bind_btVector4__length2_p0 = Module["_emscripten_bind_btVector4__length2_p0"] = asm["_emscripten_bind_btVector4__length2_p0"]; +var _emscripten_bind_btStorageResult__set_m_closestPointInB_p1 = Module["_emscripten_bind_btStorageResult__set_m_closestPointInB_p1"] = asm["_emscripten_bind_btStorageResult__set_m_closestPointInB_p1"]; +var _emscripten_bind_btIDebugDraw__reportErrorWarning_p1 = Module["_emscripten_bind_btIDebugDraw__reportErrorWarning_p1"] = asm["_emscripten_bind_btIDebugDraw__reportErrorWarning_p1"]; +var _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1 = Module["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1"] = asm["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1"]; +var _emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1"]; +var _emscripten_bind_btMultiSphereShape__isCompound_p0 = Module["_emscripten_bind_btMultiSphereShape__isCompound_p0"] = asm["_emscripten_bind_btMultiSphereShape__isCompound_p0"]; +var _emscripten_bind_btRigidBody__setCenterOfMassTransform_p1 = Module["_emscripten_bind_btRigidBody__setCenterOfMassTransform_p1"] = asm["_emscripten_bind_btRigidBody__setCenterOfMassTransform_p1"]; +var _emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1"]; +var _emscripten_bind_btUniversalConstraint__setFrames_p2 = Module["_emscripten_bind_btUniversalConstraint__setFrames_p2"] = asm["_emscripten_bind_btUniversalConstraint__setFrames_p2"]; +var _emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1 = Module["_emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1"] = asm["_emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1"]; +var _emscripten_bind_btGhostPairCallback__addOverlappingPair_p2 = Module["_emscripten_bind_btGhostPairCallback__addOverlappingPair_p2"] = asm["_emscripten_bind_btGhostPairCallback__addOverlappingPair_p2"]; +var _emscripten_bind_btUniversalConstraint__getInfo1_p1 = Module["_emscripten_bind_btUniversalConstraint__getInfo1_p1"] = asm["_emscripten_bind_btUniversalConstraint__getInfo1_p1"]; +var _emscripten_bind_btEmptyShape__isSoftBody_p0 = Module["_emscripten_bind_btEmptyShape__isSoftBody_p0"] = asm["_emscripten_bind_btEmptyShape__isSoftBody_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0"]; +var _emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0 = Module["_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0"] = asm["_emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0"]; +var _emscripten_bind_btConvexShape__getShapeType_p0 = Module["_emscripten_bind_btConvexShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexShape__getShapeType_p0"]; +var _emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0"]; +var _emscripten_bind_btHinge2Constraint__getAxis2_p0 = Module["_emscripten_bind_btHinge2Constraint__getAxis2_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAxis2_p0"]; +var _emscripten_bind_btTypedConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btTypedConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btTypedConstraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btIndexedMesh____destroy___p0 = Module["_emscripten_bind_btIndexedMesh____destroy___p0"] = asm["_emscripten_bind_btIndexedMesh____destroy___p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2"]; +var _emscripten_bind_btAngularLimit__getBiasFactor_p0 = Module["_emscripten_bind_btAngularLimit__getBiasFactor_p0"] = asm["_emscripten_bind_btAngularLimit__getBiasFactor_p0"]; +var _emscripten_bind_btConvexHullShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexHullShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexHullShape__setUserPointer_p1"]; +var _emscripten_bind_btDefaultMotionState____destroy___p0 = Module["_emscripten_bind_btDefaultMotionState____destroy___p0"] = asm["_emscripten_bind_btDefaultMotionState____destroy___p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3 = Module["_emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3"] = asm["_emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3"]; +var _emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0"]; +var _emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0 = Module["_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0"] = asm["_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0"]; +var _emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1 = Module["_emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1"] = asm["_emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1"]; +var _emscripten_bind_CProfileNode__Get_Total_Time_p0 = Module["_emscripten_bind_CProfileNode__Get_Total_Time_p0"] = asm["_emscripten_bind_CProfileNode__Get_Total_Time_p0"]; +var _emscripten_bind_btRigidBody__proceedToTransform_p1 = Module["_emscripten_bind_btRigidBody__proceedToTransform_p1"] = asm["_emscripten_bind_btRigidBody__proceedToTransform_p1"]; +var _emscripten_bind_btHinge2Constraint__getParam_p2 = Module["_emscripten_bind_btHinge2Constraint__getParam_p2"] = asm["_emscripten_bind_btHinge2Constraint__getParam_p2"]; +var _emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btCompoundShape__isConcave_p0 = Module["_emscripten_bind_btCompoundShape__isConcave_p0"] = asm["_emscripten_bind_btCompoundShape__isConcave_p0"]; +var _emscripten_bind_btHinge2Constraint__getParam_p1 = Module["_emscripten_bind_btHinge2Constraint__getParam_p1"] = asm["_emscripten_bind_btHinge2Constraint__getParam_p1"]; +var _emscripten_bind_btConeShape__isPolyhedral_p0 = Module["_emscripten_bind_btConeShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConeShape__isPolyhedral_p0"]; +var _emscripten_bind_btGhostObject__setCollisionFlags_p1 = Module["_emscripten_bind_btGhostObject__setCollisionFlags_p1"] = asm["_emscripten_bind_btGhostObject__setCollisionFlags_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1"]; +var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1"]; +var _emscripten_bind_btConeShapeZ__getRadius_p0 = Module["_emscripten_bind_btConeShapeZ__getRadius_p0"] = asm["_emscripten_bind_btConeShapeZ__getRadius_p0"]; +var _emscripten_bind_btConvexInternalShape__getAabb_p3 = Module["_emscripten_bind_btConvexInternalShape__getAabb_p3"] = asm["_emscripten_bind_btConvexInternalShape__getAabb_p3"]; +var _emscripten_bind_btRigidBody__getIslandTag_p0 = Module["_emscripten_bind_btRigidBody__getIslandTag_p0"] = asm["_emscripten_bind_btRigidBody__getIslandTag_p0"]; +var _emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0 = Module["_emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1"]; +var _emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1"]; +var _emscripten_bind_btCompoundShape__setMargin_p1 = Module["_emscripten_bind_btCompoundShape__setMargin_p1"] = asm["_emscripten_bind_btCompoundShape__setMargin_p1"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1"]; +var _emscripten_bind_btConvexHullShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexHullShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexHullShape__getUserPointer_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0"]; +var _emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0 = Module["_emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0"] = asm["_emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0"]; +var _emscripten_bind_btDynamicsWorld__removeCharacter_p1 = Module["_emscripten_bind_btDynamicsWorld__removeCharacter_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeCharacter_p1"]; +var _emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0"]; +var _emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0 = Module["_emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0"] = asm["_emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0"]; +var _emscripten_bind_btVector3__setW_p1 = Module["_emscripten_bind_btVector3__setW_p1"] = asm["_emscripten_bind_btVector3__setW_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0"]; +var _emscripten_bind_btDynamicsWorld__getGravity_p0 = Module["_emscripten_bind_btDynamicsWorld__getGravity_p0"] = asm["_emscripten_bind_btDynamicsWorld__getGravity_p0"]; +var _emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1 = Module["_emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1"]; +var _emscripten_bind_btBoxShape__getMargin_p0 = Module["_emscripten_bind_btBoxShape__getMargin_p0"] = asm["_emscripten_bind_btBoxShape__getMargin_p0"]; +var _emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1"]; +var _emscripten_bind_btPoint2PointConstraint__set_m_setting_p1 = Module["_emscripten_bind_btPoint2PointConstraint__set_m_setting_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__set_m_setting_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0"]; +var _emscripten_bind_btSphereShape__isConvex_p0 = Module["_emscripten_bind_btSphereShape__isConvex_p0"] = asm["_emscripten_bind_btSphereShape__isConvex_p0"]; +var _emscripten_bind_btConeTwistConstraint__needsFeedback_p0 = Module["_emscripten_bind_btConeTwistConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btConeTwistConstraint__needsFeedback_p0"]; +var _emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0"]; +var _emscripten_bind_btRigidBody__internalApplyImpulse_p3 = Module["_emscripten_bind_btRigidBody__internalApplyImpulse_p3"] = asm["_emscripten_bind_btRigidBody__internalApplyImpulse_p3"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1"]; +var _emscripten_bind_btContactConstraint__setEnabled_p1 = Module["_emscripten_bind_btContactConstraint__setEnabled_p1"] = asm["_emscripten_bind_btContactConstraint__setEnabled_p1"]; +var _emscripten_bind_btConvexInternalShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexInternalShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexInternalShape__getUserPointer_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2"]; +var _emscripten_bind_btQuadWord__getZ_p0 = Module["_emscripten_bind_btQuadWord__getZ_p0"] = asm["_emscripten_bind_btQuadWord__getZ_p0"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0"]; +var _emscripten_bind_btRigidBody__isStaticObject_p0 = Module["_emscripten_bind_btRigidBody__isStaticObject_p0"] = asm["_emscripten_bind_btRigidBody__isStaticObject_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__setAabb_p4 = Module["_emscripten_bind_bt32BitAxisSweep3__setAabb_p4"] = asm["_emscripten_bind_bt32BitAxisSweep3__setAabb_p4"]; +var _emscripten_bind_btOptimizedBvh__refit_p3 = Module["_emscripten_bind_btOptimizedBvh__refit_p3"] = asm["_emscripten_bind_btOptimizedBvh__refit_p3"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1"]; +var _emscripten_bind_btTypedConstraint__getParam_p2 = Module["_emscripten_bind_btTypedConstraint__getParam_p2"] = asm["_emscripten_bind_btTypedConstraint__getParam_p2"]; +var _emscripten_bind_btTypedConstraint__getParam_p1 = Module["_emscripten_bind_btTypedConstraint__getParam_p1"] = asm["_emscripten_bind_btTypedConstraint__getParam_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3"]; +var _emscripten_bind_btQuaternion__getAngle_p0 = Module["_emscripten_bind_btQuaternion__getAngle_p0"] = asm["_emscripten_bind_btQuaternion__getAngle_p0"]; +var _emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1"]; +var _emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1"]; +var _emscripten_bind_btEmptyShape__serialize_p2 = Module["_emscripten_bind_btEmptyShape__serialize_p2"] = asm["_emscripten_bind_btEmptyShape__serialize_p2"]; +var _emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btBroadphaseInterface__rayTest_p5 = Module["_emscripten_bind_btBroadphaseInterface__rayTest_p5"] = asm["_emscripten_bind_btBroadphaseInterface__rayTest_p5"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1"]; +var _emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0"]; +var _emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5 = Module["_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5"] = asm["_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5"]; +var _emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0"]; +var _emscripten_bind_btCollisionObject__setBroadphaseHandle_p1 = Module["_emscripten_bind_btCollisionObject__setBroadphaseHandle_p1"] = asm["_emscripten_bind_btCollisionObject__setBroadphaseHandle_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1"]; +var _emscripten_bind_btConeShape__isSoftBody_p0 = Module["_emscripten_bind_btConeShape__isSoftBody_p0"] = asm["_emscripten_bind_btConeShape__isSoftBody_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__isInside_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__isInside_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isInside_p2"]; +var _emscripten_bind_btVector3__deSerializeFloat_p1 = Module["_emscripten_bind_btVector3__deSerializeFloat_p1"] = asm["_emscripten_bind_btVector3__deSerializeFloat_p1"]; +var _emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getUserPointer_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getUserPointer_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getUserPointer_p0"]; +var _emscripten_bind_btOptimizedBvh__serialize_p3 = Module["_emscripten_bind_btOptimizedBvh__serialize_p3"] = asm["_emscripten_bind_btOptimizedBvh__serialize_p3"]; +var _emscripten_bind_btOptimizedBvh__serialize_p2 = Module["_emscripten_bind_btOptimizedBvh__serialize_p2"] = asm["_emscripten_bind_btOptimizedBvh__serialize_p2"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btUniformScalingShape__getBoundingSphere_p2 = Module["_emscripten_bind_btUniformScalingShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btUniformScalingShape__getBoundingSphere_p2"]; +var _emscripten_bind_btQuadWord__getY_p0 = Module["_emscripten_bind_btQuadWord__getY_p0"] = asm["_emscripten_bind_btQuadWord__getY_p0"]; +var _emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0"]; +var _emscripten_bind_btUniversalConstraint__getAngle_p1 = Module["_emscripten_bind_btUniversalConstraint__getAngle_p1"] = asm["_emscripten_bind_btUniversalConstraint__getAngle_p1"]; +var _emscripten_bind_btSliderConstraint__buildJacobian_p0 = Module["_emscripten_bind_btSliderConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btSliderConstraint__buildJacobian_p0"]; +var _emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0"]; +var _emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1 = Module["_emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1"] = asm["_emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1"]; +var _emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btBoxShape__isPolyhedral_p0 = Module["_emscripten_bind_btBoxShape__isPolyhedral_p0"] = asm["_emscripten_bind_btBoxShape__isPolyhedral_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btVector4__maxAxis_p0 = Module["_emscripten_bind_btVector4__maxAxis_p0"] = asm["_emscripten_bind_btVector4__maxAxis_p0"]; +var _emscripten_bind_btRigidBody__checkCollideWith_p1 = Module["_emscripten_bind_btRigidBody__checkCollideWith_p1"] = asm["_emscripten_bind_btRigidBody__checkCollideWith_p1"]; +var _emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btHinge2Constraint__getAxis1_p0 = Module["_emscripten_bind_btHinge2Constraint__getAxis1_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAxis1_p0"]; +var _emscripten_bind_btCapsuleShapeX__setUserPointer_p1 = Module["_emscripten_bind_btCapsuleShapeX__setUserPointer_p1"] = asm["_emscripten_bind_btCapsuleShapeX__setUserPointer_p1"]; +var _emscripten_bind_btQuadWord__getX_p0 = Module["_emscripten_bind_btQuadWord__getX_p0"] = asm["_emscripten_bind_btQuadWord__getX_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1"]; +var _emscripten_bind_btCapsuleShape__isInfinite_p0 = Module["_emscripten_bind_btCapsuleShape__isInfinite_p0"] = asm["_emscripten_bind_btCapsuleShape__isInfinite_p0"]; +var _emscripten_bind_btCompoundShape__getNumChildShapes_p0 = Module["_emscripten_bind_btCompoundShape__getNumChildShapes_p0"] = asm["_emscripten_bind_btCompoundShape__getNumChildShapes_p0"]; +var _emscripten_bind_btOptimizedBvh__buildInternal_p0 = Module["_emscripten_bind_btOptimizedBvh__buildInternal_p0"] = asm["_emscripten_bind_btOptimizedBvh__buildInternal_p0"]; +var _emscripten_bind_btUniversalConstraint__setAxis_p2 = Module["_emscripten_bind_btUniversalConstraint__setAxis_p2"] = asm["_emscripten_bind_btUniversalConstraint__setAxis_p2"]; +var _emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1"]; +var _emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1"]; +var _emscripten_bind_btManifoldPoint__btManifoldPoint_p4 = Module["_emscripten_bind_btManifoldPoint__btManifoldPoint_p4"] = asm["_emscripten_bind_btManifoldPoint__btManifoldPoint_p4"]; +var _emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btDbvtBroadphase__set_m_cid_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_cid_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_cid_p1"]; +var _emscripten_bind_btDbvtProxy__isSoftBody_p1 = Module["_emscripten_bind_btDbvtProxy__isSoftBody_p1"] = asm["_emscripten_bind_btDbvtProxy__isSoftBody_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11 = Module["_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11"] = asm["_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11"]; +var _emscripten_bind_btPersistentManifold__set_m_objectType_p1 = Module["_emscripten_bind_btPersistentManifold__set_m_objectType_p1"] = asm["_emscripten_bind_btPersistentManifold__set_m_objectType_p1"]; +var _emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2"]; +var _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3"]; +var _emscripten_bind_btHinge2Constraint__enableFeedback_p1 = Module["_emscripten_bind_btHinge2Constraint__enableFeedback_p1"] = asm["_emscripten_bind_btHinge2Constraint__enableFeedback_p1"]; +var _emscripten_bind_btIDebugDraw__drawAabb_p3 = Module["_emscripten_bind_btIDebugDraw__drawAabb_p3"] = asm["_emscripten_bind_btIDebugDraw__drawAabb_p3"]; +var _emscripten_bind_btGeneric6DofConstraint__isLimited_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__isLimited_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__isLimited_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__setLimit_p3 = Module["_emscripten_bind_btGeneric6DofConstraint__setLimit_p3"] = asm["_emscripten_bind_btGeneric6DofConstraint__setLimit_p3"]; +var _emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1"]; +var _emscripten_bind_btContactConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btContactConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btContactConstraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2"]; +var _emscripten_bind_btSliderConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btSliderConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btSliderConstraint__setUserConstraintId_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld____destroy___p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld____destroy___p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld____destroy___p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btCylinderShape__getName_p0 = Module["_emscripten_bind_btCylinderShape__getName_p0"] = asm["_emscripten_bind_btCylinderShape__getName_p0"]; +var _emscripten_bind_btTypedConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btTypedConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btTypedConstraint__setUserConstraintType_p1"]; +var _emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0 = Module["_emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0"] = asm["_emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0"]; +var _emscripten_bind_btVector3__op_set_p1 = Module["_emscripten_bind_btVector3__op_set_p1"] = asm["_emscripten_bind_btVector3__op_set_p1"]; +var _emscripten_bind_btVector3__deSerializeDouble_p1 = Module["_emscripten_bind_btVector3__deSerializeDouble_p1"] = asm["_emscripten_bind_btVector3__deSerializeDouble_p1"]; +var _emscripten_bind_btAxisSweep3__getHandle_p1 = Module["_emscripten_bind_btAxisSweep3__getHandle_p1"] = asm["_emscripten_bind_btAxisSweep3__getHandle_p1"]; +var _emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0 = Module["_emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0"] = asm["_emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0"]; +var _emscripten_bind_btRigidBody__checkCollideWithOverride_p1 = Module["_emscripten_bind_btRigidBody__checkCollideWithOverride_p1"] = asm["_emscripten_bind_btRigidBody__checkCollideWithOverride_p1"]; +var _emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0 = Module["_emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0"]; +var _emscripten_bind_btUniversalConstraint__calculateTransforms_p2 = Module["_emscripten_bind_btUniversalConstraint__calculateTransforms_p2"] = asm["_emscripten_bind_btUniversalConstraint__calculateTransforms_p2"]; +var _emscripten_bind_btUniversalConstraint__calculateTransforms_p0 = Module["_emscripten_bind_btUniversalConstraint__calculateTransforms_p0"] = asm["_emscripten_bind_btUniversalConstraint__calculateTransforms_p0"]; +var _emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2 = Module["_emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2"] = asm["_emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2"]; +var _emscripten_bind_btConeTwistConstraint__buildJacobian_p0 = Module["_emscripten_bind_btConeTwistConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btConeTwistConstraint__buildJacobian_p0"]; +var _emscripten_bind_btRigidBody__addConstraintRef_p1 = Module["_emscripten_bind_btRigidBody__addConstraintRef_p1"] = asm["_emscripten_bind_btRigidBody__addConstraintRef_p1"]; +var _emscripten_bind_btConeShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConeShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConeShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btConeShape__getRadius_p0 = Module["_emscripten_bind_btConeShape__getRadius_p0"] = asm["_emscripten_bind_btConeShape__getRadius_p0"]; +var _emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3 = Module["_emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3"] = asm["_emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3"]; +var _emscripten_bind_btDynamicsWorld__rayTest_p3 = Module["_emscripten_bind_btDynamicsWorld__rayTest_p3"] = asm["_emscripten_bind_btDynamicsWorld__rayTest_p3"]; +var _emscripten_bind_btQuaternion__normalize_p0 = Module["_emscripten_bind_btQuaternion__normalize_p0"] = asm["_emscripten_bind_btQuaternion__normalize_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btMatrix3x3__transposeTimes_p1 = Module["_emscripten_bind_btMatrix3x3__transposeTimes_p1"] = asm["_emscripten_bind_btMatrix3x3__transposeTimes_p1"]; +var _emscripten_bind_btConcaveShape__isSoftBody_p0 = Module["_emscripten_bind_btConcaveShape__isSoftBody_p0"] = asm["_emscripten_bind_btConcaveShape__isSoftBody_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getAabb_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getAabb_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getAabb_p3"]; +var _emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3"]; +var _emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2 = Module["_emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2"] = asm["_emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2"]; +var _emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0 = Module["_emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0"] = asm["_emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0"]; +var _emscripten_bind_btCollisionDispatcher__needsCollision_p2 = Module["_emscripten_bind_btCollisionDispatcher__needsCollision_p2"] = asm["_emscripten_bind_btCollisionDispatcher__needsCollision_p2"]; +var _emscripten_bind_btVector4__serialize_p1 = Module["_emscripten_bind_btVector4__serialize_p1"] = asm["_emscripten_bind_btVector4__serialize_p1"]; +var _emscripten_bind_btHingeConstraint__btHingeConstraint_p4 = Module["_emscripten_bind_btHingeConstraint__btHingeConstraint_p4"] = asm["_emscripten_bind_btHingeConstraint__btHingeConstraint_p4"]; +var _emscripten_bind_btHingeConstraint__btHingeConstraint_p7 = Module["_emscripten_bind_btHingeConstraint__btHingeConstraint_p7"] = asm["_emscripten_bind_btHingeConstraint__btHingeConstraint_p7"]; +var _emscripten_bind_btHingeConstraint__btHingeConstraint_p6 = Module["_emscripten_bind_btHingeConstraint__btHingeConstraint_p6"] = asm["_emscripten_bind_btHingeConstraint__btHingeConstraint_p6"]; +var _emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1 = Module["_emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1"] = asm["_emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1"]; +var _emscripten_bind_btBoxShape__getLocalScaling_p0 = Module["_emscripten_bind_btBoxShape__getLocalScaling_p0"] = asm["_emscripten_bind_btBoxShape__getLocalScaling_p0"]; +var _emscripten_bind_btUniversalConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btUniversalConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btUniversalConstraint__getRigidBodyA_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0"]; +var _emscripten_bind_btPersistentManifold__setBodies_p2 = Module["_emscripten_bind_btPersistentManifold__setBodies_p2"] = asm["_emscripten_bind_btPersistentManifold__setBodies_p2"]; +var _emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0 = Module["_emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0"] = asm["_emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0"]; +var _emscripten_bind_btUniversalConstraint__getUid_p0 = Module["_emscripten_bind_btUniversalConstraint__getUid_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUid_p0"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1"]; +var _emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1"]; +var _emscripten_bind_btCollisionShape__isConcave_p0 = Module["_emscripten_bind_btCollisionShape__isConcave_p0"] = asm["_emscripten_bind_btCollisionShape__isConcave_p0"]; +var _emscripten_bind_btHingeConstraint__setEnabled_p1 = Module["_emscripten_bind_btHingeConstraint__setEnabled_p1"] = asm["_emscripten_bind_btHingeConstraint__setEnabled_p1"]; +var _emscripten_bind_btSliderConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btSliderConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btSliderConstraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2 = Module["_emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2"] = asm["_emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2"]; +var _emscripten_bind_btRigidBody__integrateVelocities_p1 = Module["_emscripten_bind_btRigidBody__integrateVelocities_p1"] = asm["_emscripten_bind_btRigidBody__integrateVelocities_p1"]; +var _emscripten_bind_btRigidBody__internalGetInvMass_p0 = Module["_emscripten_bind_btRigidBody__internalGetInvMass_p0"] = asm["_emscripten_bind_btRigidBody__internalGetInvMass_p0"]; +var _emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1"]; +var _emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1"]; +var _emscripten_bind_btTypedConstraint____destroy___p0 = Module["_emscripten_bind_btTypedConstraint____destroy___p0"] = asm["_emscripten_bind_btTypedConstraint____destroy___p0"]; +var _emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1 = Module["_emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1"] = asm["_emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1"]; +var _emscripten_bind_btHingeConstraint__getLowerLimit_p0 = Module["_emscripten_bind_btHingeConstraint__getLowerLimit_p0"] = asm["_emscripten_bind_btHingeConstraint__getLowerLimit_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1"]; +var _emscripten_bind_btQuaternion__getX_p0 = Module["_emscripten_bind_btQuaternion__getX_p0"] = asm["_emscripten_bind_btQuaternion__getX_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0"]; +var _emscripten_bind_btConeTwistConstraint__isEnabled_p0 = Module["_emscripten_bind_btConeTwistConstraint__isEnabled_p0"] = asm["_emscripten_bind_btConeTwistConstraint__isEnabled_p0"]; +var _strlen = Module["_strlen"] = asm["_strlen"]; +var _emscripten_bind_btWheelInfo__get_m_deltaRotation_p0 = Module["_emscripten_bind_btWheelInfo__get_m_deltaRotation_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_deltaRotation_p0"]; +var _emscripten_bind_btQuaternion__getY_p0 = Module["_emscripten_bind_btQuaternion__getY_p0"] = asm["_emscripten_bind_btQuaternion__getY_p0"]; +var _emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3 = Module["_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3"] = asm["_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3"]; +var _emscripten_bind_btDynamicsWorld__setConstraintSolver_p1 = Module["_emscripten_bind_btDynamicsWorld__setConstraintSolver_p1"] = asm["_emscripten_bind_btDynamicsWorld__setConstraintSolver_p1"]; +var _emscripten_bind_btUniformScalingShape__getUserPointer_p0 = Module["_emscripten_bind_btUniformScalingShape__getUserPointer_p0"] = asm["_emscripten_bind_btUniformScalingShape__getUserPointer_p0"]; +var _emscripten_bind_btHashString__get_m_hash_p0 = Module["_emscripten_bind_btHashString__get_m_hash_p0"] = asm["_emscripten_bind_btHashString__get_m_hash_p0"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btHingeConstraint__getInfo1_p1 = Module["_emscripten_bind_btHingeConstraint__getInfo1_p1"] = asm["_emscripten_bind_btHingeConstraint__getInfo1_p1"]; +var _emscripten_bind_btConeShapeZ__isConcave_p0 = Module["_emscripten_bind_btConeShapeZ__isConcave_p0"] = asm["_emscripten_bind_btConeShapeZ__isConcave_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1"]; +var _emscripten_bind_btDbvtBroadphase__collide_p1 = Module["_emscripten_bind_btDbvtBroadphase__collide_p1"] = asm["_emscripten_bind_btDbvtBroadphase__collide_p1"]; +var _emscripten_bind_btTriangleInfo__set_m_flags_p1 = Module["_emscripten_bind_btTriangleInfo__set_m_flags_p1"] = asm["_emscripten_bind_btTriangleInfo__set_m_flags_p1"]; +var _emscripten_bind_btBU_Simplex1to4__addVertex_p1 = Module["_emscripten_bind_btBU_Simplex1to4__addVertex_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__addVertex_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0"]; +var _emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0"]; +var _emscripten_bind_btCollisionDispatcher__getNearCallback_p0 = Module["_emscripten_bind_btCollisionDispatcher__getNearCallback_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getNearCallback_p0"]; +var _emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btWheelInfo____destroy___p0 = Module["_emscripten_bind_btWheelInfo____destroy___p0"] = asm["_emscripten_bind_btWheelInfo____destroy___p0"]; +var _emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0 = Module["_emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0"] = asm["_emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0"]; +var _emscripten_bind_btUniformScalingShape__serializeSingleShape_p1 = Module["_emscripten_bind_btUniformScalingShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btUniformScalingShape__serializeSingleShape_p1"]; +var _emscripten_bind_btConeShapeX__getConeUpIndex_p0 = Module["_emscripten_bind_btConeShapeX__getConeUpIndex_p0"] = asm["_emscripten_bind_btConeShapeX__getConeUpIndex_p0"]; +var _emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0"]; +var _emscripten_bind_btUniversalConstraint__getAxis1_p0 = Module["_emscripten_bind_btUniversalConstraint__getAxis1_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAxis1_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0"]; +var _emscripten_bind_btDispatcherInfo__get_m_stepCount_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_stepCount_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_stepCount_p0"]; +var _emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3 = Module["_emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3"] = asm["_emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3"]; +var _emscripten_bind_btQuadWord__w_p0 = Module["_emscripten_bind_btQuadWord__w_p0"] = asm["_emscripten_bind_btQuadWord__w_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0"]; +var _emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1 = Module["_emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1"] = asm["_emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1"]; +var _emscripten_bind_btConeTwistConstraint__getConstraintType_p0 = Module["_emscripten_bind_btConeTwistConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getConstraintType_p0"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1"]; +var _emscripten_bind_btCompoundShape__getChildList_p0 = Module["_emscripten_bind_btCompoundShape__getChildList_p0"] = asm["_emscripten_bind_btCompoundShape__getChildList_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1"]; +var _emscripten_bind_btGhostObject__isActive_p0 = Module["_emscripten_bind_btGhostObject__isActive_p0"] = asm["_emscripten_bind_btGhostObject__isActive_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0"]; +var _emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1"]; +var _emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3 = Module["_emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3"] = asm["_emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3"]; +var _emscripten_bind_btGhostObject__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btGhostObject__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btGhostObject__getContactProcessingThreshold_p0"]; +var _emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1 = Module["_emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1"] = asm["_emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1"]; +var _emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3 = Module["_emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3"] = asm["_emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3"]; +var _emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btGhostObject__setAnisotropicFriction_p1 = Module["_emscripten_bind_btGhostObject__setAnisotropicFriction_p1"] = asm["_emscripten_bind_btGhostObject__setAnisotropicFriction_p1"]; +var _emscripten_bind_btManifoldPoint__getDistance_p0 = Module["_emscripten_bind_btManifoldPoint__getDistance_p0"] = asm["_emscripten_bind_btManifoldPoint__getDistance_p0"]; +var _emscripten_bind_btHashInt__getHash_p0 = Module["_emscripten_bind_btHashInt__getHash_p0"] = asm["_emscripten_bind_btHashInt__getHash_p0"]; +var _emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_CProfileSample____destroy___p0 = Module["_emscripten_bind_CProfileSample____destroy___p0"] = asm["_emscripten_bind_CProfileSample____destroy___p0"]; +var _emscripten_bind_btHinge2Constraint__calcAnchorPos_p0 = Module["_emscripten_bind_btHinge2Constraint__calcAnchorPos_p0"] = asm["_emscripten_bind_btHinge2Constraint__calcAnchorPos_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1"]; +var _emscripten_bind_btPoint2PointConstraint__serialize_p2 = Module["_emscripten_bind_btPoint2PointConstraint__serialize_p2"] = asm["_emscripten_bind_btPoint2PointConstraint__serialize_p2"]; +var _emscripten_bind_btUniversalConstraint__getParam_p2 = Module["_emscripten_bind_btUniversalConstraint__getParam_p2"] = asm["_emscripten_bind_btUniversalConstraint__getParam_p2"]; +var _emscripten_bind_btConeShapeZ__getConeUpIndex_p0 = Module["_emscripten_bind_btConeShapeZ__getConeUpIndex_p0"] = asm["_emscripten_bind_btConeShapeZ__getConeUpIndex_p0"]; +var _emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0"]; +var _emscripten_bind_btConstraintSetting__btConstraintSetting_p0 = Module["_emscripten_bind_btConstraintSetting__btConstraintSetting_p0"] = asm["_emscripten_bind_btConstraintSetting__btConstraintSetting_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1"]; +var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setParam_p3 = Module["_emscripten_bind_btGeneric6DofConstraint__setParam_p3"] = asm["_emscripten_bind_btGeneric6DofConstraint__setParam_p3"]; +var _emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0 = Module["_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0"] = asm["_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0"]; +var _emscripten_bind_btCapsuleShapeZ__isInfinite_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isInfinite_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isInfinite_p0"]; +var _emscripten_bind_btDbvtProxy__get_m_uniqueId_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_uniqueId_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_uniqueId_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0"]; +var _emscripten_bind_btBroadphaseInterface__resetPool_p1 = Module["_emscripten_bind_btBroadphaseInterface__resetPool_p1"] = asm["_emscripten_bind_btBroadphaseInterface__resetPool_p1"]; +var _emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11 = Module["_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11"] = asm["_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1"]; +var _emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0"]; +var _emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12 = Module["_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12"] = asm["_emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12"]; +var _emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0"]; +var _emscripten_bind_btContactConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btContactConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btContactConstraint__setUserConstraintId_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1"]; +var _emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1"]; +var _emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1"]; +var _emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btQuadWord__setValue_p4 = Module["_emscripten_bind_btQuadWord__setValue_p4"] = asm["_emscripten_bind_btQuadWord__setValue_p4"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1"]; +var _emscripten_bind_btQuadWord__y_p0 = Module["_emscripten_bind_btQuadWord__y_p0"] = asm["_emscripten_bind_btQuadWord__y_p0"]; +var _emscripten_bind_btQuadWord__setValue_p3 = Module["_emscripten_bind_btQuadWord__setValue_p3"] = asm["_emscripten_bind_btQuadWord__setValue_p3"]; +var _emscripten_bind_btRigidBody__getInvMass_p0 = Module["_emscripten_bind_btRigidBody__getInvMass_p0"] = asm["_emscripten_bind_btRigidBody__getInvMass_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1"]; +var _emscripten_bind_btCollisionObject__getUserPointer_p0 = Module["_emscripten_bind_btCollisionObject__getUserPointer_p0"] = asm["_emscripten_bind_btCollisionObject__getUserPointer_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1"]; +var _emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0 = Module["_emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0"] = asm["_emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0"]; +var _emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0 = Module["_emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0"] = asm["_emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0"]; +var _emscripten_bind_btWheelInfo__get_m_rotation_p0 = Module["_emscripten_bind_btWheelInfo__get_m_rotation_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_rotation_p0"]; +var _emscripten_bind_btQuantizedBvh__unQuantize_p1 = Module["_emscripten_bind_btQuantizedBvh__unQuantize_p1"] = asm["_emscripten_bind_btQuantizedBvh__unQuantize_p1"]; +var _emscripten_bind_btUniversalConstraint__getAxis2_p0 = Module["_emscripten_bind_btUniversalConstraint__getAxis2_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAxis2_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0"]; +var _emscripten_bind_btTypedConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btTypedConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btTypedConstraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0"]; +var _emscripten_bind_btQuantizedBvh__quantize_p3 = Module["_emscripten_bind_btQuantizedBvh__quantize_p3"] = asm["_emscripten_bind_btQuantizedBvh__quantize_p3"]; +var _emscripten_bind_btDynamicsWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btDynamicsWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeCollisionObject_p1"]; +var _emscripten_bind_btVector4__closestAxis4_p0 = Module["_emscripten_bind_btVector4__closestAxis4_p0"] = asm["_emscripten_bind_btVector4__closestAxis4_p0"]; +var _emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btGhostObject__getAnisotropicFriction_p0 = Module["_emscripten_bind_btGhostObject__getAnisotropicFriction_p0"] = asm["_emscripten_bind_btGhostObject__getAnisotropicFriction_p0"]; +var _emscripten_bind_btCollisionObject__forceActivationState_p1 = Module["_emscripten_bind_btCollisionObject__forceActivationState_p1"] = asm["_emscripten_bind_btCollisionObject__forceActivationState_p1"]; +var _emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1"]; +var _emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0"]; +var _emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btConvexHullShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexHullShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexHullShape__isNonMoving_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1"]; +var _emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0 = Module["_emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0"] = asm["_emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0"]; +var _emscripten_bind_btConvexHullShape__isInside_p2 = Module["_emscripten_bind_btConvexHullShape__isInside_p2"] = asm["_emscripten_bind_btConvexHullShape__isInside_p2"]; +var _emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5 = Module["_emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5"] = asm["_emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5"]; +var _emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1"]; +var _emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0 = Module["_emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0"]; +var _emscripten_bind_btSphereShape__serializeSingleShape_p1 = Module["_emscripten_bind_btSphereShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btSphereShape__serializeSingleShape_p1"]; +var _emscripten_bind_btCylinderShapeX__serializeSingleShape_p1 = Module["_emscripten_bind_btCylinderShapeX__serializeSingleShape_p1"] = asm["_emscripten_bind_btCylinderShapeX__serializeSingleShape_p1"]; +var _emscripten_bind_btHinge2Constraint__getRigidBodyA_p0 = Module["_emscripten_bind_btHinge2Constraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btHinge2Constraint__getRigidBodyA_p0"]; +var _emscripten_bind_btCollisionObject__setRestitution_p1 = Module["_emscripten_bind_btCollisionObject__setRestitution_p1"] = asm["_emscripten_bind_btCollisionObject__setRestitution_p1"]; +var _emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btHashString__set_m_string_p1 = Module["_emscripten_bind_btHashString__set_m_string_p1"] = asm["_emscripten_bind_btHashString__set_m_string_p1"]; +var _emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btConvexHullShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexHullShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexHullShape__isSoftBody_p0"]; +var _emscripten_bind_btRigidBody__getLinearVelocity_p0 = Module["_emscripten_bind_btRigidBody__getLinearVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getLinearVelocity_p0"]; +var _emscripten_bind_btRigidBody__applyTorque_p1 = Module["_emscripten_bind_btRigidBody__applyTorque_p1"] = asm["_emscripten_bind_btRigidBody__applyTorque_p1"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1"]; +var _emscripten_bind_btConvexShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btIndexedMesh__set_m_vertexType_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_vertexType_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_vertexType_p1"]; +var _emscripten_bind_btCollisionObject__hasContactResponse_p0 = Module["_emscripten_bind_btCollisionObject__hasContactResponse_p0"] = asm["_emscripten_bind_btCollisionObject__hasContactResponse_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getEdge_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getEdge_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getEdge_p3"]; +var _emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9 = Module["_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9"]; +var _emscripten_bind_btCapsuleShape__setLocalScaling_p1 = Module["_emscripten_bind_btCapsuleShape__setLocalScaling_p1"] = asm["_emscripten_bind_btCapsuleShape__setLocalScaling_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2"]; +var _emscripten_bind_btPolyhedralConvexShape__getVertex_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__getVertex_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__getVertex_p2"]; +var _emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0 = Module["_emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0"] = asm["_emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0"]; +var _emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0 = Module["_emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0"] = asm["_emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0"]; +var _emscripten_bind_btGhostObject__setUserPointer_p1 = Module["_emscripten_bind_btGhostObject__setUserPointer_p1"] = asm["_emscripten_bind_btGhostObject__setUserPointer_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setFrames_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__setFrames_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__setFrames_p2"]; +var _emscripten_bind_btUniversalConstraint__setUpperLimit_p2 = Module["_emscripten_bind_btUniversalConstraint__setUpperLimit_p2"] = asm["_emscripten_bind_btUniversalConstraint__setUpperLimit_p2"]; +var _emscripten_bind_btConvexHullShape__getScaledPoint_p1 = Module["_emscripten_bind_btConvexHullShape__getScaledPoint_p1"] = asm["_emscripten_bind_btConvexHullShape__getScaledPoint_p1"]; +var _emscripten_bind_btConeShapeX__getUserPointer_p0 = Module["_emscripten_bind_btConeShapeX__getUserPointer_p0"] = asm["_emscripten_bind_btConeShapeX__getUserPointer_p0"]; +var _emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1 = Module["_emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1"] = asm["_emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1"]; +var _emscripten_bind_btSliderConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btSliderConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btSliderConstraint__set_m_objectType_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__getGravity_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getGravity_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getGravity_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1"]; +var _emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0"]; +var _emscripten_bind_btConeShapeZ__getBoundingSphere_p2 = Module["_emscripten_bind_btConeShapeZ__getBoundingSphere_p2"] = asm["_emscripten_bind_btConeShapeZ__getBoundingSphere_p2"]; +var _emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4 = Module["_emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4"] = asm["_emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0"]; +var _emscripten_bind_btConeShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConeShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConeShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btBroadphaseRayCallback__process_p1 = Module["_emscripten_bind_btBroadphaseRayCallback__process_p1"] = asm["_emscripten_bind_btBroadphaseRayCallback__process_p1"]; +var _emscripten_bind_btSimpleBroadphase__rayTest_p5 = Module["_emscripten_bind_btSimpleBroadphase__rayTest_p5"] = asm["_emscripten_bind_btSimpleBroadphase__rayTest_p5"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btRigidBody__applyTorqueImpulse_p1 = Module["_emscripten_bind_btRigidBody__applyTorqueImpulse_p1"] = asm["_emscripten_bind_btRigidBody__applyTorqueImpulse_p1"]; +var _emscripten_bind_btMultiSphereShape__isInfinite_p0 = Module["_emscripten_bind_btMultiSphereShape__isInfinite_p0"] = asm["_emscripten_bind_btMultiSphereShape__isInfinite_p0"]; +var _emscripten_bind_btContactConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btContactConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btContactConstraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btVector3__closestAxis_p0 = Module["_emscripten_bind_btVector3__closestAxis_p0"] = asm["_emscripten_bind_btVector3__closestAxis_p0"]; +var _emscripten_bind_btSimpleBroadphase__rayTest_p3 = Module["_emscripten_bind_btSimpleBroadphase__rayTest_p3"] = asm["_emscripten_bind_btSimpleBroadphase__rayTest_p3"]; +var _emscripten_bind_btMultiSphereShape__getAabbSlow_p3 = Module["_emscripten_bind_btMultiSphereShape__getAabbSlow_p3"] = asm["_emscripten_bind_btMultiSphereShape__getAabbSlow_p3"]; +var _emscripten_bind_btRigidBody__applyCentralImpulse_p1 = Module["_emscripten_bind_btRigidBody__applyCentralImpulse_p1"] = asm["_emscripten_bind_btRigidBody__applyCentralImpulse_p1"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1"]; +var _emscripten_bind_btWheelInfo__set_m_frictionSlip_p1 = Module["_emscripten_bind_btWheelInfo__set_m_frictionSlip_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_frictionSlip_p1"]; +var _emscripten_bind_btRigidBody__updateDeactivation_p1 = Module["_emscripten_bind_btRigidBody__updateDeactivation_p1"] = asm["_emscripten_bind_btRigidBody__updateDeactivation_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0"]; +var _emscripten_bind_btConeTwistConstraint__getObjectType_p0 = Module["_emscripten_bind_btConeTwistConstraint__getObjectType_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getObjectType_p0"]; +var _emscripten_bind_btDbvtProxy__isConvex_p1 = Module["_emscripten_bind_btDbvtProxy__isConvex_p1"] = asm["_emscripten_bind_btDbvtProxy__isConvex_p1"]; +var _emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btCapsuleShapeZ__getUserPointer_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getUserPointer_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getUserPointer_p0"]; +var _emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0 = Module["_emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0"]; +var _emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0 = Module["_emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getUid_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUid_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUid_p0"]; +var _emscripten_bind_btWheelInfo__set_m_clientInfo_p1 = Module["_emscripten_bind_btWheelInfo__set_m_clientInfo_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_clientInfo_p1"]; +var _emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1 = Module["_emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1"] = asm["_emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5"]; +var _emscripten_bind_btCapsuleShapeZ__isSoftBody_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isSoftBody_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isSoftBody_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0"]; +var _emscripten_bind_btQuaternion__op_mul_p1 = Module["_emscripten_bind_btQuaternion__op_mul_p1"] = asm["_emscripten_bind_btQuaternion__op_mul_p1"]; +var _emscripten_bind_btSphereShape__getMarginNV_p0 = Module["_emscripten_bind_btSphereShape__getMarginNV_p0"] = asm["_emscripten_bind_btSphereShape__getMarginNV_p0"]; +var _emscripten_bind_btBoxShape__isNonMoving_p0 = Module["_emscripten_bind_btBoxShape__isNonMoving_p0"] = asm["_emscripten_bind_btBoxShape__isNonMoving_p0"]; +var _emscripten_bind_btUniversalConstraint__setLimit_p3 = Module["_emscripten_bind_btUniversalConstraint__setLimit_p3"] = asm["_emscripten_bind_btUniversalConstraint__setLimit_p3"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0"]; +var _emscripten_bind_btAngularLimit__getError_p0 = Module["_emscripten_bind_btAngularLimit__getError_p0"] = asm["_emscripten_bind_btAngularLimit__getError_p0"]; +var _emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2 = Module["_emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2"]; +var _emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1"]; +var _emscripten_bind_btTypedConstraint__serialize_p2 = Module["_emscripten_bind_btTypedConstraint__serialize_p2"] = asm["_emscripten_bind_btTypedConstraint__serialize_p2"]; +var _emscripten_bind_btDbvtBroadphase__resetPool_p1 = Module["_emscripten_bind_btDbvtBroadphase__resetPool_p1"] = asm["_emscripten_bind_btDbvtBroadphase__resetPool_p1"]; +var _emscripten_bind_btSliderConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btSliderConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btSliderConstraint__getFrameOffsetB_p0"]; +var _emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3 = Module["_emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3"] = asm["_emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3"]; +var _emscripten_bind_btMatrix3x3__inverse_p0 = Module["_emscripten_bind_btMatrix3x3__inverse_p0"] = asm["_emscripten_bind_btMatrix3x3__inverse_p0"]; +var _emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2 = Module["_emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2"] = asm["_emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2"]; +var _emscripten_bind_btRigidBody__getFriction_p0 = Module["_emscripten_bind_btRigidBody__getFriction_p0"] = asm["_emscripten_bind_btRigidBody__getFriction_p0"]; +var _emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1 = Module["_emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1"] = asm["_emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0"]; +var _emscripten_bind_btDynamicsWorld__addAction_p1 = Module["_emscripten_bind_btDynamicsWorld__addAction_p1"] = asm["_emscripten_bind_btDynamicsWorld__addAction_p1"]; +var _emscripten_bind_CProfileSample__CProfileSample_p1 = Module["_emscripten_bind_CProfileSample__CProfileSample_p1"] = asm["_emscripten_bind_CProfileSample__CProfileSample_p1"]; +var _emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8 = Module["_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8"] = asm["_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8"]; +var _emscripten_bind_btRigidBody__getHitFraction_p0 = Module["_emscripten_bind_btRigidBody__getHitFraction_p0"] = asm["_emscripten_bind_btRigidBody__getHitFraction_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2"]; +var _emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1"]; +var _emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btDbvtBroadphase__set_m_gid_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_gid_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_gid_p1"]; +var _emscripten_bind_btEmptyShape__getLocalScaling_p0 = Module["_emscripten_bind_btEmptyShape__getLocalScaling_p0"] = asm["_emscripten_bind_btEmptyShape__getLocalScaling_p0"]; +var _emscripten_bind_btHingeConstraint__serialize_p2 = Module["_emscripten_bind_btHingeConstraint__serialize_p2"] = asm["_emscripten_bind_btHingeConstraint__serialize_p2"]; +var _emscripten_bind_btBoxShape__getNumEdges_p0 = Module["_emscripten_bind_btBoxShape__getNumEdges_p0"] = asm["_emscripten_bind_btBoxShape__getNumEdges_p0"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1"]; +var _emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1 = Module["_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1"] = asm["_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1"]; +var _emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0 = Module["_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0"] = asm["_emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0"]; +var _emscripten_bind_btConcaveShape__isConcave_p0 = Module["_emscripten_bind_btConcaveShape__isConcave_p0"] = asm["_emscripten_bind_btConcaveShape__isConcave_p0"]; +var _emscripten_bind_btHingeConstraint__getInfo2_p1 = Module["_emscripten_bind_btHingeConstraint__getInfo2_p1"] = asm["_emscripten_bind_btHingeConstraint__getInfo2_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0"]; +var _emscripten_bind_btMatrix3x3__getRotation_p1 = Module["_emscripten_bind_btMatrix3x3__getRotation_p1"] = asm["_emscripten_bind_btMatrix3x3__getRotation_p1"]; +var _emscripten_bind_btConeShapeZ__isInfinite_p0 = Module["_emscripten_bind_btConeShapeZ__isInfinite_p0"] = asm["_emscripten_bind_btConeShapeZ__isInfinite_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getName_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getName_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getName_p0"]; +var _emscripten_bind_btCylinderShapeX__setUserPointer_p1 = Module["_emscripten_bind_btCylinderShapeX__setUserPointer_p1"] = asm["_emscripten_bind_btCylinderShapeX__setUserPointer_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btCapsuleShapeX__isConvex_p0 = Module["_emscripten_bind_btCapsuleShapeX__isConvex_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isConvex_p0"]; +var _emscripten_bind_btCylinderShapeX__getUpAxis_p0 = Module["_emscripten_bind_btCylinderShapeX__getUpAxis_p0"] = asm["_emscripten_bind_btCylinderShapeX__getUpAxis_p0"]; +var _emscripten_bind_btDynamicsWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btDynamicsWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btDynamicsWorld__getDebugDrawer_p0"]; +var _emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1"]; +var _emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0"]; +var _emscripten_bind_btConvexInternalShape__isCompound_p0 = Module["_emscripten_bind_btConvexInternalShape__isCompound_p0"] = asm["_emscripten_bind_btConvexInternalShape__isCompound_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2"]; +var _emscripten_bind_btRaycastVehicle__getUserConstraintType_p0 = Module["_emscripten_bind_btRaycastVehicle__getUserConstraintType_p0"] = asm["_emscripten_bind_btRaycastVehicle__getUserConstraintType_p0"]; +var _emscripten_bind_btTriangleMesh__setPremadeAabb_p2 = Module["_emscripten_bind_btTriangleMesh__setPremadeAabb_p2"] = asm["_emscripten_bind_btTriangleMesh__setPremadeAabb_p2"]; +var _emscripten_bind_btCollisionObject__checkCollideWith_p1 = Module["_emscripten_bind_btCollisionObject__checkCollideWith_p1"] = asm["_emscripten_bind_btCollisionObject__checkCollideWith_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0"]; +var _emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0"]; +var _emscripten_bind_btConstraintSetting__set_m_tau_p1 = Module["_emscripten_bind_btConstraintSetting__set_m_tau_p1"] = asm["_emscripten_bind_btConstraintSetting__set_m_tau_p1"]; +var _emscripten_bind_btHinge2Constraint__needsFeedback_p0 = Module["_emscripten_bind_btHinge2Constraint__needsFeedback_p0"] = asm["_emscripten_bind_btHinge2Constraint__needsFeedback_p0"]; +var _emscripten_bind_btRigidBody__setCompanionId_p1 = Module["_emscripten_bind_btRigidBody__setCompanionId_p1"] = asm["_emscripten_bind_btRigidBody__setCompanionId_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0"]; +var _emscripten_bind_btOptimizedBvh__build_p4 = Module["_emscripten_bind_btOptimizedBvh__build_p4"] = asm["_emscripten_bind_btOptimizedBvh__build_p4"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btConeShapeX__isConvex_p0 = Module["_emscripten_bind_btConeShapeX__isConvex_p0"] = asm["_emscripten_bind_btConeShapeX__isConvex_p0"]; +var _emscripten_bind_btRigidBody__getTotalTorque_p0 = Module["_emscripten_bind_btRigidBody__getTotalTorque_p0"] = asm["_emscripten_bind_btRigidBody__getTotalTorque_p0"]; +var _emscripten_bind_btCollisionDispatcher__getNumManifolds_p0 = Module["_emscripten_bind_btCollisionDispatcher__getNumManifolds_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getNumManifolds_p0"]; +var _emscripten_bind_btHingeConstraint__setParam_p3 = Module["_emscripten_bind_btHingeConstraint__setParam_p3"] = asm["_emscripten_bind_btHingeConstraint__setParam_p3"]; +var _emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1"]; +var _emscripten_bind_btSliderConstraint__setLowerAngLimit_p1 = Module["_emscripten_bind_btSliderConstraint__setLowerAngLimit_p1"] = asm["_emscripten_bind_btSliderConstraint__setLowerAngLimit_p1"]; +var _emscripten_bind_btHashPtr__getHash_p0 = Module["_emscripten_bind_btHashPtr__getHash_p0"] = asm["_emscripten_bind_btHashPtr__getHash_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btIndexedMesh__btIndexedMesh_p0 = Module["_emscripten_bind_btIndexedMesh__btIndexedMesh_p0"] = asm["_emscripten_bind_btIndexedMesh__btIndexedMesh_p0"]; +var _emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btCapsuleShapeZ__getShapeType_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getShapeType_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getShapeType_p0"]; +var _emscripten_bind_btPoint2PointConstraint__setEnabled_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setEnabled_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setEnabled_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1"]; +var _emscripten_bind_btCapsuleShape__isNonMoving_p0 = Module["_emscripten_bind_btCapsuleShape__isNonMoving_p0"] = asm["_emscripten_bind_btCapsuleShape__isNonMoving_p0"]; +var _emscripten_bind_btIDebugDraw__drawSphere_p3 = Module["_emscripten_bind_btIDebugDraw__drawSphere_p3"] = asm["_emscripten_bind_btIDebugDraw__drawSphere_p3"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0"]; +var _emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1 = Module["_emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1"] = asm["_emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1"]; +var _emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4 = Module["_emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4"] = asm["_emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0"]; +var _emscripten_bind_btCylinderShape__isCompound_p0 = Module["_emscripten_bind_btCylinderShape__isCompound_p0"] = asm["_emscripten_bind_btCylinderShape__isCompound_p0"]; +var _emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btCylinderShapeX__setLocalScaling_p1 = Module["_emscripten_bind_btCylinderShapeX__setLocalScaling_p1"] = asm["_emscripten_bind_btCylinderShapeX__setLocalScaling_p1"]; +var _emscripten_bind_btConvexInternalShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexInternalShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexInternalShape__setLocalScaling_p1"]; +var _emscripten_bind_btHingeConstraint__getAFrame_p0 = Module["_emscripten_bind_btHingeConstraint__getAFrame_p0"] = asm["_emscripten_bind_btHingeConstraint__getAFrame_p0"]; +var _emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0 = Module["_emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0"]; +var _emscripten_bind_btRigidBody__btRigidBody_p4 = Module["_emscripten_bind_btRigidBody__btRigidBody_p4"] = asm["_emscripten_bind_btRigidBody__btRigidBody_p4"]; +var _emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2 = Module["_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2"] = asm["_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2"]; +var _emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3 = Module["_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3"] = asm["_emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3"]; +var _emscripten_bind_bt32BitAxisSweep3__updateHandle_p4 = Module["_emscripten_bind_bt32BitAxisSweep3__updateHandle_p4"] = asm["_emscripten_bind_bt32BitAxisSweep3__updateHandle_p4"]; +var _emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1"]; +var _emscripten_bind_btWheelInfo__set_m_deltaRotation_p1 = Module["_emscripten_bind_btWheelInfo__set_m_deltaRotation_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_deltaRotation_p1"]; +var _emscripten_bind_bt32BitAxisSweep3__addHandle_p7 = Module["_emscripten_bind_bt32BitAxisSweep3__addHandle_p7"] = asm["_emscripten_bind_bt32BitAxisSweep3__addHandle_p7"]; +var _emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3"]; +var _emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3 = Module["_emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3"] = asm["_emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0"]; +var _emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btTypedConstraint__buildJacobian_p0 = Module["_emscripten_bind_btTypedConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btTypedConstraint__buildJacobian_p0"]; +var _emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btStaticPlaneShape__setUserPointer_p1 = Module["_emscripten_bind_btStaticPlaneShape__setUserPointer_p1"] = asm["_emscripten_bind_btStaticPlaneShape__setUserPointer_p1"]; +var _emscripten_bind_btVector4__y_p0 = Module["_emscripten_bind_btVector4__y_p0"] = asm["_emscripten_bind_btVector4__y_p0"]; +var _emscripten_bind_btHinge2Constraint__getUserConstraintType_p0 = Module["_emscripten_bind_btHinge2Constraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUserConstraintType_p0"]; +var _emscripten_bind_btCapsuleShape__setMargin_p1 = Module["_emscripten_bind_btCapsuleShape__setMargin_p1"] = asm["_emscripten_bind_btCapsuleShape__setMargin_p1"]; +var _emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0 = Module["_emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0"]; +var _emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0"]; +var _emscripten_bind_btConeShapeZ__calculateLocalInertia_p2 = Module["_emscripten_bind_btConeShapeZ__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConeShapeZ__calculateLocalInertia_p2"]; +var _emscripten_bind_btConvexHullShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexHullShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexHullShape__getAabbSlow_p3"]; +var _emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1"]; +var _emscripten_bind_btIndexedMesh__set_m_vertexStride_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_vertexStride_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_vertexStride_p1"]; +var _emscripten_bind_btCollisionWorld__updateAabbs_p0 = Module["_emscripten_bind_btCollisionWorld__updateAabbs_p0"] = asm["_emscripten_bind_btCollisionWorld__updateAabbs_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1"]; +var _emscripten_bind_btDbvtBroadphase__printStats_p0 = Module["_emscripten_bind_btDbvtBroadphase__printStats_p0"] = asm["_emscripten_bind_btDbvtBroadphase__printStats_p0"]; +var _emscripten_bind_btPersistentManifold__getBody0_p0 = Module["_emscripten_bind_btPersistentManifold__getBody0_p0"] = asm["_emscripten_bind_btPersistentManifold__getBody0_p0"]; +var _emscripten_bind_btConeShape__getShapeType_p0 = Module["_emscripten_bind_btConeShape__getShapeType_p0"] = asm["_emscripten_bind_btConeShape__getShapeType_p0"]; +var _emscripten_bind_btEmptyShape__isNonMoving_p0 = Module["_emscripten_bind_btEmptyShape__isNonMoving_p0"] = asm["_emscripten_bind_btEmptyShape__isNonMoving_p0"]; +var _emscripten_bind_btQuadWord__setW_p1 = Module["_emscripten_bind_btQuadWord__setW_p1"] = asm["_emscripten_bind_btQuadWord__setW_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0"]; +var _emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1 = Module["_emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1"] = asm["_emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1"]; +var _emscripten_bind_btAxisSweep3__aabbTest_p3 = Module["_emscripten_bind_btAxisSweep3__aabbTest_p3"] = asm["_emscripten_bind_btAxisSweep3__aabbTest_p3"]; +var _emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1 = Module["_emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1"] = asm["_emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1"]; +var _emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1"]; +var _emscripten_bind_btGhostObject__serializeSingleObject_p1 = Module["_emscripten_bind_btGhostObject__serializeSingleObject_p1"] = asm["_emscripten_bind_btGhostObject__serializeSingleObject_p1"]; +var _emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0 = Module["_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0"]; +var _emscripten_bind_btGhostObject__setRestitution_p1 = Module["_emscripten_bind_btGhostObject__setRestitution_p1"] = asm["_emscripten_bind_btGhostObject__setRestitution_p1"]; +var _emscripten_bind_btContactConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btContactConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btContactConstraint__getRigidBodyA_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0"]; +var _emscripten_bind_btConcaveShape__isNonMoving_p0 = Module["_emscripten_bind_btConcaveShape__isNonMoving_p0"] = asm["_emscripten_bind_btConcaveShape__isNonMoving_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0"]; +var _emscripten_bind_btCapsuleShapeX__getMarginNV_p0 = Module["_emscripten_bind_btCapsuleShapeX__getMarginNV_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getMarginNV_p0"]; +var _emscripten_bind_btPersistentManifold__get_m_companionIdA_p0 = Module["_emscripten_bind_btPersistentManifold__get_m_companionIdA_p0"] = asm["_emscripten_bind_btPersistentManifold__get_m_companionIdA_p0"]; +var _emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1"]; +var _emscripten_bind_btWheelInfo__updateWheel_p2 = Module["_emscripten_bind_btWheelInfo__updateWheel_p2"] = asm["_emscripten_bind_btWheelInfo__updateWheel_p2"]; +var _emscripten_bind_btDynamicsWorld__addConstraint_p2 = Module["_emscripten_bind_btDynamicsWorld__addConstraint_p2"] = asm["_emscripten_bind_btDynamicsWorld__addConstraint_p2"]; +var _emscripten_bind_btDynamicsWorld__addConstraint_p1 = Module["_emscripten_bind_btDynamicsWorld__addConstraint_p1"] = asm["_emscripten_bind_btDynamicsWorld__addConstraint_p1"]; +var _emscripten_bind_btRigidBody__getTurnVelocity_p0 = Module["_emscripten_bind_btRigidBody__getTurnVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getTurnVelocity_p0"]; +var _emscripten_bind_btTypedConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btTypedConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btTypedConstraint__setUserConstraintId_p1"]; +var _emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0"]; +var _emscripten_bind_btCylinderShape__getUpAxis_p0 = Module["_emscripten_bind_btCylinderShape__getUpAxis_p0"] = asm["_emscripten_bind_btCylinderShape__getUpAxis_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1"]; +var _emscripten_bind_btDbvtBroadphase__getAabb_p3 = Module["_emscripten_bind_btDbvtBroadphase__getAabb_p3"] = asm["_emscripten_bind_btDbvtBroadphase__getAabb_p3"]; +var _emscripten_bind_btSphereShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btSphereShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btSphereShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0"]; +var _emscripten_bind_btBroadphaseInterface__printStats_p0 = Module["_emscripten_bind_btBroadphaseInterface__printStats_p0"] = asm["_emscripten_bind_btBroadphaseInterface__printStats_p0"]; +var _emscripten_bind_btHashInt__setUid1_p1 = Module["_emscripten_bind_btHashInt__setUid1_p1"] = asm["_emscripten_bind_btHashInt__setUid1_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btRigidBody__setCollisionFlags_p1 = Module["_emscripten_bind_btRigidBody__setCollisionFlags_p1"] = asm["_emscripten_bind_btRigidBody__setCollisionFlags_p1"]; +var _emscripten_bind_btGhostObject__hasContactResponse_p0 = Module["_emscripten_bind_btGhostObject__hasContactResponse_p0"] = asm["_emscripten_bind_btGhostObject__hasContactResponse_p0"]; +var _emscripten_bind_btDefaultVehicleRaycaster__castRay_p3 = Module["_emscripten_bind_btDefaultVehicleRaycaster__castRay_p3"] = asm["_emscripten_bind_btDefaultVehicleRaycaster__castRay_p3"]; +var _emscripten_bind_btSliderConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btSliderConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btSliderConstraint__getUseFrameOffset_p0"]; +var _emscripten_bind_btCollisionObject__getIslandTag_p0 = Module["_emscripten_bind_btCollisionObject__getIslandTag_p0"] = asm["_emscripten_bind_btCollisionObject__getIslandTag_p0"]; +var _emscripten_bind_btCollisionShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCollisionShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCollisionShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btTranslationalLimitMotor____destroy___p0 = Module["_emscripten_bind_btTranslationalLimitMotor____destroy___p0"] = asm["_emscripten_bind_btTranslationalLimitMotor____destroy___p0"]; +var _emscripten_bind_btConcaveShape__isConvex_p0 = Module["_emscripten_bind_btConcaveShape__isConvex_p0"] = asm["_emscripten_bind_btConcaveShape__isConvex_p0"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1"]; +var _emscripten_bind_btIDebugDraw__drawCone_p5 = Module["_emscripten_bind_btIDebugDraw__drawCone_p5"] = asm["_emscripten_bind_btIDebugDraw__drawCone_p5"]; +var _emscripten_bind_btSphereShape__isNonMoving_p0 = Module["_emscripten_bind_btSphereShape__isNonMoving_p0"] = asm["_emscripten_bind_btSphereShape__isNonMoving_p0"]; +var _emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1 = Module["_emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1"] = asm["_emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0"]; +var _emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1 = Module["_emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1"] = asm["_emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1"]; +var _emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0"]; +var _emscripten_bind_btBoxShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btBoxShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btBoxShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5 = Module["_emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5"] = asm["_emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5"]; +var _emscripten_bind_btCollisionShape__getAabb_p3 = Module["_emscripten_bind_btCollisionShape__getAabb_p3"] = asm["_emscripten_bind_btCollisionShape__getAabb_p3"]; +var _emscripten_bind_btCapsuleShape____destroy___p0 = Module["_emscripten_bind_btCapsuleShape____destroy___p0"] = asm["_emscripten_bind_btCapsuleShape____destroy___p0"]; +var _emscripten_bind_btDynamicsWorld__removeRigidBody_p1 = Module["_emscripten_bind_btDynamicsWorld__removeRigidBody_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeRigidBody_p1"]; +var _emscripten_bind_btHashInt__equals_p1 = Module["_emscripten_bind_btHashInt__equals_p1"] = asm["_emscripten_bind_btHashInt__equals_p1"]; +var _emscripten_bind_btCapsuleShape__isCompound_p0 = Module["_emscripten_bind_btCapsuleShape__isCompound_p0"] = asm["_emscripten_bind_btCapsuleShape__isCompound_p0"]; +var _emscripten_bind_btTransform__setIdentity_p0 = Module["_emscripten_bind_btTransform__setIdentity_p0"] = asm["_emscripten_bind_btTransform__setIdentity_p0"]; +var _emscripten_bind_btRigidBody__getCollisionFlags_p0 = Module["_emscripten_bind_btRigidBody__getCollisionFlags_p0"] = asm["_emscripten_bind_btRigidBody__getCollisionFlags_p0"]; +var _emscripten_bind_btRigidBody__getRootCollisionShape_p0 = Module["_emscripten_bind_btRigidBody__getRootCollisionShape_p0"] = asm["_emscripten_bind_btRigidBody__getRootCollisionShape_p0"]; +var _emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btRigidBody__setLinearVelocity_p1 = Module["_emscripten_bind_btRigidBody__setLinearVelocity_p1"] = asm["_emscripten_bind_btRigidBody__setLinearVelocity_p1"]; +var _emscripten_bind_btTransform__getBasis_p0 = Module["_emscripten_bind_btTransform__getBasis_p0"] = asm["_emscripten_bind_btTransform__getBasis_p0"]; +var _emscripten_bind_btMatrix3x3__setEulerZYX_p3 = Module["_emscripten_bind_btMatrix3x3__setEulerZYX_p3"] = asm["_emscripten_bind_btMatrix3x3__setEulerZYX_p3"]; +var _emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0"]; +var _emscripten_bind_btTriangleMesh__preallocateVertices_p1 = Module["_emscripten_bind_btTriangleMesh__preallocateVertices_p1"] = asm["_emscripten_bind_btTriangleMesh__preallocateVertices_p1"]; +var _emscripten_bind_btManifoldPoint__set_m_index0_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_index0_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_index0_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0"]; +var _emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btDbvtProxy__set_m_aabbMin_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_aabbMin_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_aabbMin_p1"]; +var _emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0 = Module["_emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0"] = asm["_emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0"]; +var _emscripten_bind_btVector3__distance2_p1 = Module["_emscripten_bind_btVector3__distance2_p1"] = asm["_emscripten_bind_btVector3__distance2_p1"]; +var _emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0"]; +var _emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0"]; +var _emscripten_bind_btConeShapeX__getBoundingSphere_p2 = Module["_emscripten_bind_btConeShapeX__getBoundingSphere_p2"] = asm["_emscripten_bind_btConeShapeX__getBoundingSphere_p2"]; +var _emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2"]; +var _emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1"]; +var _emscripten_bind_btAngularLimit__set_p5 = Module["_emscripten_bind_btAngularLimit__set_p5"] = asm["_emscripten_bind_btAngularLimit__set_p5"]; +var _emscripten_bind_btAngularLimit__set_p4 = Module["_emscripten_bind_btAngularLimit__set_p4"] = asm["_emscripten_bind_btAngularLimit__set_p4"]; +var _emscripten_bind_btAngularLimit__set_p3 = Module["_emscripten_bind_btAngularLimit__set_p3"] = asm["_emscripten_bind_btAngularLimit__set_p3"]; +var _emscripten_bind_btAngularLimit__set_p2 = Module["_emscripten_bind_btAngularLimit__set_p2"] = asm["_emscripten_bind_btAngularLimit__set_p2"]; +var _emscripten_bind_btBroadphaseProxy__isConvex2d_p1 = Module["_emscripten_bind_btBroadphaseProxy__isConvex2d_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isConvex2d_p1"]; +var _emscripten_bind_btQuantizedBvh__setTraversalMode_p1 = Module["_emscripten_bind_btQuantizedBvh__setTraversalMode_p1"] = asm["_emscripten_bind_btQuantizedBvh__setTraversalMode_p1"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0"]; +var _emscripten_bind_btCollisionWorld____destroy___p0 = Module["_emscripten_bind_btCollisionWorld____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld____destroy___p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__serialize_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__serialize_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__serialize_p2"]; +var _emscripten_bind_btEmptyShape__isConvex2d_p0 = Module["_emscripten_bind_btEmptyShape__isConvex2d_p0"] = asm["_emscripten_bind_btEmptyShape__isConvex2d_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0"]; +var _emscripten_bind_btCompoundShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCompoundShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCompoundShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btClock__getTimeMilliseconds_p0 = Module["_emscripten_bind_btClock__getTimeMilliseconds_p0"] = asm["_emscripten_bind_btClock__getTimeMilliseconds_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0"]; +var _emscripten_bind_btRigidBody__getBroadphaseProxy_p0 = Module["_emscripten_bind_btRigidBody__getBroadphaseProxy_p0"] = asm["_emscripten_bind_btRigidBody__getBroadphaseProxy_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1"]; +var _emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0"]; +var _emscripten_bind_btRigidBody__clearForces_p0 = Module["_emscripten_bind_btRigidBody__clearForces_p0"] = asm["_emscripten_bind_btRigidBody__clearForces_p0"]; +var _emscripten_bind_btRigidBody__getCollisionShape_p0 = Module["_emscripten_bind_btRigidBody__getCollisionShape_p0"] = asm["_emscripten_bind_btRigidBody__getCollisionShape_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0"]; +var _emscripten_bind_btSliderConstraint__getDampingDirAng_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingDirAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingDirAng_p0"]; +var _emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1 = Module["_emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2"]; +var _emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7"]; +var _emscripten_bind_btUniversalConstraint____destroy___p0 = Module["_emscripten_bind_btUniversalConstraint____destroy___p0"] = asm["_emscripten_bind_btUniversalConstraint____destroy___p0"]; +var _emscripten_bind_btCylinderShapeZ__setUserPointer_p1 = Module["_emscripten_bind_btCylinderShapeZ__setUserPointer_p1"] = asm["_emscripten_bind_btCylinderShapeZ__setUserPointer_p1"]; +var _emscripten_bind_btHingeConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btHingeConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btHingeConstraint__getUserConstraintId_p0"]; +var _emscripten_bind_btHingeConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btHingeConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btHingeConstraint__getFrameOffsetB_p0"]; +var _emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_btPoint2PointConstraint__needsFeedback_p0 = Module["_emscripten_bind_btPoint2PointConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__needsFeedback_p0"]; +var _emscripten_bind_btUniformScalingShape__getAabbSlow_p3 = Module["_emscripten_bind_btUniformScalingShape__getAabbSlow_p3"] = asm["_emscripten_bind_btUniformScalingShape__getAabbSlow_p3"]; +var _emscripten_bind_btSphereShape__getUserPointer_p0 = Module["_emscripten_bind_btSphereShape__getUserPointer_p0"] = asm["_emscripten_bind_btSphereShape__getUserPointer_p0"]; +var _emscripten_bind_btRaycastVehicle__updateSuspension_p1 = Module["_emscripten_bind_btRaycastVehicle__updateSuspension_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateSuspension_p1"]; +var _emscripten_bind_btCylinderShapeX__getShapeType_p0 = Module["_emscripten_bind_btCylinderShapeX__getShapeType_p0"] = asm["_emscripten_bind_btCylinderShapeX__getShapeType_p0"]; +var _emscripten_bind_btSliderConstraint__getUpperAngLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getUpperAngLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getUpperAngLimit_p0"]; +var _emscripten_bind_btManifoldResult__addContactPoint_p3 = Module["_emscripten_bind_btManifoldResult__addContactPoint_p3"] = asm["_emscripten_bind_btManifoldResult__addContactPoint_p3"]; +var _emscripten_bind_bt32BitAxisSweep3__rayTest_p5 = Module["_emscripten_bind_bt32BitAxisSweep3__rayTest_p5"] = asm["_emscripten_bind_bt32BitAxisSweep3__rayTest_p5"]; +var _emscripten_bind_bt32BitAxisSweep3__rayTest_p4 = Module["_emscripten_bind_bt32BitAxisSweep3__rayTest_p4"] = asm["_emscripten_bind_bt32BitAxisSweep3__rayTest_p4"]; +var _emscripten_bind_btHingeConstraint__getLimitSign_p0 = Module["_emscripten_bind_btHingeConstraint__getLimitSign_p0"] = asm["_emscripten_bind_btHingeConstraint__getLimitSign_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2"]; +var _emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btWheelInfo__btWheelInfo_p1 = Module["_emscripten_bind_btWheelInfo__btWheelInfo_p1"] = asm["_emscripten_bind_btWheelInfo__btWheelInfo_p1"]; +var _emscripten_bind_btMultiSphereShape__isConcave_p0 = Module["_emscripten_bind_btMultiSphereShape__isConcave_p0"] = asm["_emscripten_bind_btMultiSphereShape__isConcave_p0"]; +var _emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0"]; +var _emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0 = Module["_emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0"] = asm["_emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0"]; +var _emscripten_bind_btCapsuleShape__getName_p0 = Module["_emscripten_bind_btCapsuleShape__getName_p0"] = asm["_emscripten_bind_btCapsuleShape__getName_p0"]; +var _emscripten_bind_btCapsuleShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btCapsuleShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCapsuleShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btMatrix3x3__getEulerYPR_p3 = Module["_emscripten_bind_btMatrix3x3__getEulerYPR_p3"] = asm["_emscripten_bind_btMatrix3x3__getEulerYPR_p3"]; +var _emscripten_bind_btRaycastVehicle__setUserConstraintId_p1 = Module["_emscripten_bind_btRaycastVehicle__setUserConstraintId_p1"] = asm["_emscripten_bind_btRaycastVehicle__setUserConstraintId_p1"]; +var _emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0"]; +var _emscripten_bind_btWheelInfo__get_m_worldTransform_p0 = Module["_emscripten_bind_btWheelInfo__get_m_worldTransform_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_worldTransform_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0"]; +var _emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0 = Module["_emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0"] = asm["_emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0"]; +var _emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btCompoundShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCompoundShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCompoundShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1"]; +var _emscripten_bind_btRaycastVehicle__updateWheelTransform_p2 = Module["_emscripten_bind_btRaycastVehicle__updateWheelTransform_p2"] = asm["_emscripten_bind_btRaycastVehicle__updateWheelTransform_p2"]; +var _emscripten_bind_btSliderConstraint__setUpperLinLimit_p1 = Module["_emscripten_bind_btSliderConstraint__setUpperLinLimit_p1"] = asm["_emscripten_bind_btSliderConstraint__setUpperLinLimit_p1"]; +var _emscripten_bind_btCollisionWorld__rayTestSingle_p6 = Module["_emscripten_bind_btCollisionWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btCollisionWorld__rayTestSingle_p6"]; +var _emscripten_bind_btSliderConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btSliderConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btSliderConstraint__get_m_objectType_p0"]; +var _emscripten_bind_btMatrix3x3__serializeFloat_p1 = Module["_emscripten_bind_btMatrix3x3__serializeFloat_p1"] = asm["_emscripten_bind_btMatrix3x3__serializeFloat_p1"]; +var _emscripten_bind_btSliderConstraint__getLowerAngLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getLowerAngLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getLowerAngLimit_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0"]; +var _emscripten_bind_btConeShapeZ__isNonMoving_p0 = Module["_emscripten_bind_btConeShapeZ__isNonMoving_p0"] = asm["_emscripten_bind_btConeShapeZ__isNonMoving_p0"]; +var _emscripten_bind_btSliderConstraint__btSliderConstraint_p3 = Module["_emscripten_bind_btSliderConstraint__btSliderConstraint_p3"] = asm["_emscripten_bind_btSliderConstraint__btSliderConstraint_p3"]; +var _emscripten_bind_btConeTwistConstraint__getTwistSpan_p0 = Module["_emscripten_bind_btConeTwistConstraint__getTwistSpan_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getTwistSpan_p0"]; +var _emscripten_bind_btRigidBody__set_m_frictionSolverType_p1 = Module["_emscripten_bind_btRigidBody__set_m_frictionSolverType_p1"] = asm["_emscripten_bind_btRigidBody__set_m_frictionSolverType_p1"]; +var _emscripten_bind_btConvexHullShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexHullShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexHullShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btCollisionDispatcher__findAlgorithm_p2 = Module["_emscripten_bind_btCollisionDispatcher__findAlgorithm_p2"] = asm["_emscripten_bind_btCollisionDispatcher__findAlgorithm_p2"]; +var _emscripten_bind_btCollisionDispatcher__findAlgorithm_p3 = Module["_emscripten_bind_btCollisionDispatcher__findAlgorithm_p3"] = asm["_emscripten_bind_btCollisionDispatcher__findAlgorithm_p3"]; +var _emscripten_bind_btEmptyShape__setUserPointer_p1 = Module["_emscripten_bind_btEmptyShape__setUserPointer_p1"] = asm["_emscripten_bind_btEmptyShape__setUserPointer_p1"]; +var _emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btDynamicsWorld__stepSimulation_p3 = Module["_emscripten_bind_btDynamicsWorld__stepSimulation_p3"] = asm["_emscripten_bind_btDynamicsWorld__stepSimulation_p3"]; +var _emscripten_bind_btDynamicsWorld__stepSimulation_p2 = Module["_emscripten_bind_btDynamicsWorld__stepSimulation_p2"] = asm["_emscripten_bind_btDynamicsWorld__stepSimulation_p2"]; +var _emscripten_bind_btDynamicsWorld__stepSimulation_p1 = Module["_emscripten_bind_btDynamicsWorld__stepSimulation_p1"] = asm["_emscripten_bind_btDynamicsWorld__stepSimulation_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1"]; +var _emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0"]; +var _emscripten_bind_btOptimizedBvh__serializeInPlace_p3 = Module["_emscripten_bind_btOptimizedBvh__serializeInPlace_p3"] = asm["_emscripten_bind_btOptimizedBvh__serializeInPlace_p3"]; +var _emscripten_bind_btBoxShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btBoxShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btBoxShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btContactConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btContactConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btContactConstraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0 = Module["_emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0"]; +var _emscripten_bind_btHingeConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btHingeConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btHingeConstraint__getUserConstraintType_p0"]; +var _emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0 = Module["_emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0"]; +var _emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9 = Module["_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9"] = asm["_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9"]; +var _emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0"]; +var _emscripten_bind_btIDebugDraw__drawArc_p10 = Module["_emscripten_bind_btIDebugDraw__drawArc_p10"] = asm["_emscripten_bind_btIDebugDraw__drawArc_p10"]; +var _emscripten_bind_btEmptyShape__getMargin_p0 = Module["_emscripten_bind_btEmptyShape__getMargin_p0"] = asm["_emscripten_bind_btEmptyShape__getMargin_p0"]; +var _emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1 = Module["_emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1"] = asm["_emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1"]; +var _emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btCapsuleShapeZ__isCompound_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isCompound_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isCompound_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1"]; +var _emscripten_bind_btUniversalConstraint__setEnabled_p1 = Module["_emscripten_bind_btUniversalConstraint__setEnabled_p1"] = asm["_emscripten_bind_btUniversalConstraint__setEnabled_p1"]; +var _emscripten_bind_btBoxShape__getAabbSlow_p3 = Module["_emscripten_bind_btBoxShape__getAabbSlow_p3"] = asm["_emscripten_bind_btBoxShape__getAabbSlow_p3"]; +var _emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2 = Module["_emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2"] = asm["_emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2"]; +var _emscripten_bind_btVector4__setW_p1 = Module["_emscripten_bind_btVector4__setW_p1"] = asm["_emscripten_bind_btVector4__setW_p1"]; +var _emscripten_bind_btVector4__setZero_p0 = Module["_emscripten_bind_btVector4__setZero_p0"] = asm["_emscripten_bind_btVector4__setZero_p0"]; +var _emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0 = Module["_emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0"]; +var _emscripten_bind_btConeShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConeShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConeShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btBroadphasePair____destroy___p0 = Module["_emscripten_bind_btBroadphasePair____destroy___p0"] = asm["_emscripten_bind_btBroadphasePair____destroy___p0"]; +var _emscripten_bind_btConeShapeZ__getAabbSlow_p3 = Module["_emscripten_bind_btConeShapeZ__getAabbSlow_p3"] = asm["_emscripten_bind_btConeShapeZ__getAabbSlow_p3"]; +var _emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3 = Module["_emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3"] = asm["_emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3"]; +var _emscripten_bind_btConvexInternalShape__isConvex_p0 = Module["_emscripten_bind_btConvexInternalShape__isConvex_p0"] = asm["_emscripten_bind_btConvexInternalShape__isConvex_p0"]; +var _emscripten_bind_btConeTwistConstraint__enableMotor_p1 = Module["_emscripten_bind_btConeTwistConstraint__enableMotor_p1"] = asm["_emscripten_bind_btConeTwistConstraint__enableMotor_p1"]; +var _emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2"]; +var _emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1"]; +var _emscripten_bind_btCylinderShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCylinderShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCylinderShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btHingeConstraint__getParam_p1 = Module["_emscripten_bind_btHingeConstraint__getParam_p1"] = asm["_emscripten_bind_btHingeConstraint__getParam_p1"]; +var _emscripten_bind_btHingeConstraint__getParam_p2 = Module["_emscripten_bind_btHingeConstraint__getParam_p2"] = asm["_emscripten_bind_btHingeConstraint__getParam_p2"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0"]; +var _emscripten_bind_btConeShapeZ__getLocalScalingNV_p0 = Module["_emscripten_bind_btConeShapeZ__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConeShapeZ__getLocalScalingNV_p0"]; +var _emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0"]; +var _emscripten_bind_btConeTwistConstraint__serialize_p2 = Module["_emscripten_bind_btConeTwistConstraint__serialize_p2"] = asm["_emscripten_bind_btConeTwistConstraint__serialize_p2"]; +var _emscripten_bind_btSliderConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btSliderConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btSliderConstraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btOptimizedBvh__unQuantize_p1 = Module["_emscripten_bind_btOptimizedBvh__unQuantize_p1"] = asm["_emscripten_bind_btOptimizedBvh__unQuantize_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0"]; +var _emscripten_bind_btCapsuleShapeZ__getName_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getName_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getName_p0"]; +var _emscripten_bind_btCapsuleShape__getAabbSlow_p3 = Module["_emscripten_bind_btCapsuleShape__getAabbSlow_p3"] = asm["_emscripten_bind_btCapsuleShape__getAabbSlow_p3"]; +var _emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btAxisSweep3__removeHandle_p2 = Module["_emscripten_bind_btAxisSweep3__removeHandle_p2"] = asm["_emscripten_bind_btAxisSweep3__removeHandle_p2"]; +var _emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCollisionShape__getMargin_p0 = Module["_emscripten_bind_btCollisionShape__getMargin_p0"] = asm["_emscripten_bind_btCollisionShape__getMargin_p0"]; +var _emscripten_bind_btIndexedMesh__get_m_numTriangles_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_numTriangles_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_numTriangles_p0"]; +var _emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1 = Module["_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1"]; +var _emscripten_bind_btRigidBody__getConstraintRef_p1 = Module["_emscripten_bind_btRigidBody__getConstraintRef_p1"] = asm["_emscripten_bind_btRigidBody__getConstraintRef_p1"]; +var _emscripten_bind_btConvexInternalShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexInternalShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexInternalShape__serializeSingleShape_p1"]; +var _emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btConvexHullShape__isCompound_p0 = Module["_emscripten_bind_btConvexHullShape__isCompound_p0"] = asm["_emscripten_bind_btConvexHullShape__isCompound_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0"]; +var _emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1 = Module["_emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1"] = asm["_emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1"]; +var _emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1"]; +var _emscripten_bind_btUniformScalingShape__serialize_p2 = Module["_emscripten_bind_btUniformScalingShape__serialize_p2"] = asm["_emscripten_bind_btUniformScalingShape__serialize_p2"]; +var _emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1"]; +var _emscripten_bind_btJacobianEntry____destroy___p0 = Module["_emscripten_bind_btJacobianEntry____destroy___p0"] = asm["_emscripten_bind_btJacobianEntry____destroy___p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0"]; +var _emscripten_bind_btCollisionShape__getShapeType_p0 = Module["_emscripten_bind_btCollisionShape__getShapeType_p0"] = asm["_emscripten_bind_btCollisionShape__getShapeType_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getEdge_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getEdge_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getEdge_p3"]; +var _emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0"]; +var _emscripten_bind_btQuaternion__setValue_p4 = Module["_emscripten_bind_btQuaternion__setValue_p4"] = asm["_emscripten_bind_btQuaternion__setValue_p4"]; +var _emscripten_bind_btCollisionShape__serializeSingleShape_p1 = Module["_emscripten_bind_btCollisionShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btCollisionShape__serializeSingleShape_p1"]; +var _emscripten_bind_btRigidBody__set_m_contactSolverType_p1 = Module["_emscripten_bind_btRigidBody__set_m_contactSolverType_p1"] = asm["_emscripten_bind_btRigidBody__set_m_contactSolverType_p1"]; +var _emscripten_bind_btContactConstraint__needsFeedback_p0 = Module["_emscripten_bind_btContactConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btContactConstraint__needsFeedback_p0"]; +var _emscripten_bind_btAngularLimit__fit_p1 = Module["_emscripten_bind_btAngularLimit__fit_p1"] = asm["_emscripten_bind_btAngularLimit__fit_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0"]; +var _emscripten_bind_btDispatcher__clearManifold_p1 = Module["_emscripten_bind_btDispatcher__clearManifold_p1"] = asm["_emscripten_bind_btDispatcher__clearManifold_p1"]; +var _emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1 = Module["_emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1"]; +var _emscripten_bind_btDbvtProxy__set_leaf_p1 = Module["_emscripten_bind_btDbvtProxy__set_leaf_p1"] = asm["_emscripten_bind_btDbvtProxy__set_leaf_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1"]; +var _emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0"]; +var _emscripten_bind_btCompoundShape__getName_p0 = Module["_emscripten_bind_btCompoundShape__getName_p0"] = asm["_emscripten_bind_btCompoundShape__getName_p0"]; +var _emscripten_bind_btCollisionObject__getCollisionShape_p0 = Module["_emscripten_bind_btCollisionObject__getCollisionShape_p0"] = asm["_emscripten_bind_btCollisionObject__getCollisionShape_p0"]; +var _emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0"]; +var _emscripten_bind_btDynamicsWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btDynamicsWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btDynamicsWorld__debugDrawWorld_p0"]; +var _emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1 = Module["_emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1"]; +var _emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btWheelInfo__set_m_rotation_p1 = Module["_emscripten_bind_btWheelInfo__set_m_rotation_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_rotation_p1"]; +var _emscripten_bind_btDbvtBroadphase__benchmark_p1 = Module["_emscripten_bind_btDbvtBroadphase__benchmark_p1"] = asm["_emscripten_bind_btDbvtBroadphase__benchmark_p1"]; +var _emscripten_bind_btHinge2Constraint__serialize_p2 = Module["_emscripten_bind_btHinge2Constraint__serialize_p2"] = asm["_emscripten_bind_btHinge2Constraint__serialize_p2"]; +var _emscripten_bind_btDefaultCollisionConfiguration____destroy___p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration____destroy___p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration____destroy___p0"]; +var _emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1"]; +var _emscripten_bind_btConeTwistConstraint__setLimit_p6 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p6"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p6"]; +var _emscripten_bind_btTypedConstraint__enableFeedback_p1 = Module["_emscripten_bind_btTypedConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btTypedConstraint__enableFeedback_p1"]; +var _emscripten_bind_btConeTwistConstraint__setLimit_p4 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p4"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p4"]; +var _emscripten_bind_btConeTwistConstraint__setLimit_p5 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p5"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p5"]; +var _emscripten_bind_btConeTwistConstraint__setLimit_p2 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p2"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p2"]; +var _emscripten_bind_btConeTwistConstraint__setLimit_p3 = Module["_emscripten_bind_btConeTwistConstraint__setLimit_p3"] = asm["_emscripten_bind_btConeTwistConstraint__setLimit_p3"]; +var _emscripten_bind_btMultiSphereShape__getAabb_p3 = Module["_emscripten_bind_btMultiSphereShape__getAabb_p3"] = asm["_emscripten_bind_btMultiSphereShape__getAabb_p3"]; +var _emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btAxisSweep3__destroyProxy_p2 = Module["_emscripten_bind_btAxisSweep3__destroyProxy_p2"] = asm["_emscripten_bind_btAxisSweep3__destroyProxy_p2"]; +var _emscripten_bind_btManifoldPoint__set_m_partId1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_partId1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_partId1_p1"]; +var _emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3 = Module["_emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3"] = asm["_emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3"]; +var _emscripten_bind_btConvexHullShape__btConvexHullShape_p3 = Module["_emscripten_bind_btConvexHullShape__btConvexHullShape_p3"] = asm["_emscripten_bind_btConvexHullShape__btConvexHullShape_p3"]; +var _emscripten_bind_btConvexHullShape__btConvexHullShape_p2 = Module["_emscripten_bind_btConvexHullShape__btConvexHullShape_p2"] = asm["_emscripten_bind_btConvexHullShape__btConvexHullShape_p2"]; +var _emscripten_bind_btConvexHullShape__btConvexHullShape_p1 = Module["_emscripten_bind_btConvexHullShape__btConvexHullShape_p1"] = asm["_emscripten_bind_btConvexHullShape__btConvexHullShape_p1"]; +var _emscripten_bind_btConvexHullShape__btConvexHullShape_p0 = Module["_emscripten_bind_btConvexHullShape__btConvexHullShape_p0"] = asm["_emscripten_bind_btConvexHullShape__btConvexHullShape_p0"]; +var _emscripten_bind_btHashString__btHashString_p1 = Module["_emscripten_bind_btHashString__btHashString_p1"] = asm["_emscripten_bind_btHashString__btHashString_p1"]; +var _emscripten_bind_btVector3__length2_p0 = Module["_emscripten_bind_btVector3__length2_p0"] = asm["_emscripten_bind_btVector3__length2_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getHitFraction_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getHitFraction_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getHitFraction_p0"]; +var _emscripten_bind_btGhostObject__getOverlappingObject_p1 = Module["_emscripten_bind_btGhostObject__getOverlappingObject_p1"] = asm["_emscripten_bind_btGhostObject__getOverlappingObject_p1"]; +var _emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7"]; +var _emscripten_bind_btDbvtProxy__get_leaf_p0 = Module["_emscripten_bind_btDbvtProxy__get_leaf_p0"] = asm["_emscripten_bind_btDbvtProxy__get_leaf_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5 = Module["_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5"]; +var _emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4 = Module["_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4"]; +var _emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btRigidBody__getWorldTransform_p0 = Module["_emscripten_bind_btRigidBody__getWorldTransform_p0"] = asm["_emscripten_bind_btRigidBody__getWorldTransform_p0"]; +var _emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btQuantizedBvh__deSerializeDouble_p1 = Module["_emscripten_bind_btQuantizedBvh__deSerializeDouble_p1"] = asm["_emscripten_bind_btQuantizedBvh__deSerializeDouble_p1"]; +var _emscripten_bind_btRigidBody__getCcdMotionThreshold_p0 = Module["_emscripten_bind_btRigidBody__getCcdMotionThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getCcdMotionThreshold_p0"]; +var _emscripten_bind_btStridingMeshInterface__preallocateVertices_p1 = Module["_emscripten_bind_btStridingMeshInterface__preallocateVertices_p1"] = asm["_emscripten_bind_btStridingMeshInterface__preallocateVertices_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0"]; +var _emscripten_bind_btSerializer__registerNameForPointer_p2 = Module["_emscripten_bind_btSerializer__registerNameForPointer_p2"] = asm["_emscripten_bind_btSerializer__registerNameForPointer_p2"]; +var _emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0"]; +var _emscripten_bind_btStaticPlaneShape__isConvex_p0 = Module["_emscripten_bind_btStaticPlaneShape__isConvex_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isConvex_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1"]; +var _emscripten_bind_btConeShapeX__calculateLocalInertia_p2 = Module["_emscripten_bind_btConeShapeX__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConeShapeX__calculateLocalInertia_p2"]; +var _emscripten_bind_btHingeConstraint__getObjectType_p0 = Module["_emscripten_bind_btHingeConstraint__getObjectType_p0"] = asm["_emscripten_bind_btHingeConstraint__getObjectType_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getUserPointer_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getUserPointer_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getUserPointer_p0"]; +var _emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1 = Module["_emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1"] = asm["_emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1"]; +var _emscripten_bind_btRigidBody__getRestitution_p0 = Module["_emscripten_bind_btRigidBody__getRestitution_p0"] = asm["_emscripten_bind_btRigidBody__getRestitution_p0"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1"]; +var _emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2"]; +var _emscripten_bind_btHingeConstraint__getConstraintType_p0 = Module["_emscripten_bind_btHingeConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btHingeConstraint__getConstraintType_p0"]; +var _emscripten_bind_btRigidBody__getFlags_p0 = Module["_emscripten_bind_btRigidBody__getFlags_p0"] = asm["_emscripten_bind_btRigidBody__getFlags_p0"]; +var _emscripten_bind_btConvexHullShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexHullShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexHullShape__setLocalScaling_p1"]; +var _emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0"]; +var _emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0"]; +var _emscripten_bind_btDynamicsWorld__clearForces_p0 = Module["_emscripten_bind_btDynamicsWorld__clearForces_p0"] = asm["_emscripten_bind_btDynamicsWorld__clearForces_p0"]; +var _emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2"]; +var _emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0"]; +var _emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1 = Module["_emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1"] = asm["_emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1"]; +var _emscripten_bind_btRigidBody__computeImpulseDenominator_p2 = Module["_emscripten_bind_btRigidBody__computeImpulseDenominator_p2"] = asm["_emscripten_bind_btRigidBody__computeImpulseDenominator_p2"]; +var _emscripten_bind_btDbvtBroadphase__set_m_prediction_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_prediction_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_prediction_p1"]; +var _emscripten_bind_btSerializer__getBufferPointer_p0 = Module["_emscripten_bind_btSerializer__getBufferPointer_p0"] = asm["_emscripten_bind_btSerializer__getBufferPointer_p0"]; +var _emscripten_bind_btSerializer__startSerialization_p0 = Module["_emscripten_bind_btSerializer__startSerialization_p0"] = asm["_emscripten_bind_btSerializer__startSerialization_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getAabb_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getAabb_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getAabb_p3"]; +var _emscripten_bind_btPairCachingGhostObject__forceActivationState_p1 = Module["_emscripten_bind_btPairCachingGhostObject__forceActivationState_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__forceActivationState_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getEdge_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getEdge_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getEdge_p3"]; +var _emscripten_bind_btBoxShape__getUserPointer_p0 = Module["_emscripten_bind_btBoxShape__getUserPointer_p0"] = asm["_emscripten_bind_btBoxShape__getUserPointer_p0"]; +var _emscripten_bind_btHinge2Constraint__setEnabled_p1 = Module["_emscripten_bind_btHinge2Constraint__setEnabled_p1"] = asm["_emscripten_bind_btHinge2Constraint__setEnabled_p1"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btRigidBody__getAabb_p2 = Module["_emscripten_bind_btRigidBody__getAabb_p2"] = asm["_emscripten_bind_btRigidBody__getAabb_p2"]; +var _emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1 = Module["_emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1"] = asm["_emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1"]; +var _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1"]; +var _emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1 = Module["_emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1"] = asm["_emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0"]; +var _emscripten_bind_btConvexHullShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btConvexHullShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btConvexHullShape__recalcLocalAabb_p0"]; +var _emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0"]; +var _emscripten_bind_btPoint2PointConstraint__setParam_p2 = Module["_emscripten_bind_btPoint2PointConstraint__setParam_p2"] = asm["_emscripten_bind_btPoint2PointConstraint__setParam_p2"]; +var _emscripten_bind_btPoint2PointConstraint__setParam_p3 = Module["_emscripten_bind_btPoint2PointConstraint__setParam_p3"] = asm["_emscripten_bind_btPoint2PointConstraint__setParam_p3"]; +var _emscripten_bind_btSerializer__findPointer_p1 = Module["_emscripten_bind_btSerializer__findPointer_p1"] = asm["_emscripten_bind_btSerializer__findPointer_p1"]; +var _emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0 = Module["_emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0"] = asm["_emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0"]; +var _emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1"]; +var _emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btRigidBody__setDeactivationTime_p1 = Module["_emscripten_bind_btRigidBody__setDeactivationTime_p1"] = asm["_emscripten_bind_btRigidBody__setDeactivationTime_p1"]; +var _emscripten_bind_btConeTwistConstraint__getFixThresh_p0 = Module["_emscripten_bind_btConeTwistConstraint__getFixThresh_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getFixThresh_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2"]; +var _emscripten_bind_btConeShape__setUserPointer_p1 = Module["_emscripten_bind_btConeShape__setUserPointer_p1"] = asm["_emscripten_bind_btConeShape__setUserPointer_p1"]; +var _emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2 = Module["_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2"] = asm["_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2"]; +var _emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1 = Module["_emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1"] = asm["_emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1"]; +var _emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1"]; +var _emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4 = Module["_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4"] = asm["_emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4"]; +var _emscripten_bind_btTypedConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btTypedConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btTypedConstraint__getRigidBodyB_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0 = Module["_emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0"]; +var _emscripten_bind_btGhostObject__getInternalType_p0 = Module["_emscripten_bind_btGhostObject__getInternalType_p0"] = asm["_emscripten_bind_btGhostObject__getInternalType_p0"]; +var _emscripten_bind_btConvexHullShape__getNumPlanes_p0 = Module["_emscripten_bind_btConvexHullShape__getNumPlanes_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumPlanes_p0"]; +var _emscripten_bind_btDynamicsWorld__getConstraint_p1 = Module["_emscripten_bind_btDynamicsWorld__getConstraint_p1"] = asm["_emscripten_bind_btDynamicsWorld__getConstraint_p1"]; +var _emscripten_bind_btConvexShape__setMargin_p1 = Module["_emscripten_bind_btConvexShape__setMargin_p1"] = asm["_emscripten_bind_btConvexShape__setMargin_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__getAxis_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getAxis_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAxis_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1"]; +var _emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1 = Module["_emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1"] = asm["_emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1"]; +var _emscripten_bind_btVector4____destroy___p0 = Module["_emscripten_bind_btVector4____destroy___p0"] = asm["_emscripten_bind_btVector4____destroy___p0"]; +var _emscripten_bind_btVector3__z_p0 = Module["_emscripten_bind_btVector3__z_p0"] = asm["_emscripten_bind_btVector3__z_p0"]; +var _emscripten_bind_btGhostObject__setIslandTag_p1 = Module["_emscripten_bind_btGhostObject__setIslandTag_p1"] = asm["_emscripten_bind_btGhostObject__setIslandTag_p1"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0"]; +var _emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3 = Module["_emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3"] = asm["_emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3"]; +var _emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2"]; +var _emscripten_bind_btSliderConstraint__getAngDepth_p0 = Module["_emscripten_bind_btSliderConstraint__getAngDepth_p0"] = asm["_emscripten_bind_btSliderConstraint__getAngDepth_p0"]; +var _emscripten_bind_btCylinderShape__getMarginNV_p0 = Module["_emscripten_bind_btCylinderShape__getMarginNV_p0"] = asm["_emscripten_bind_btCylinderShape__getMarginNV_p0"]; +var _emscripten_bind_btEmptyShape__isConcave_p0 = Module["_emscripten_bind_btEmptyShape__isConcave_p0"] = asm["_emscripten_bind_btEmptyShape__isConcave_p0"]; +var _emscripten_bind_btTypedObject____destroy___p0 = Module["_emscripten_bind_btTypedObject____destroy___p0"] = asm["_emscripten_bind_btTypedObject____destroy___p0"]; +var _emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btPairCachingGhostObject__setIslandTag_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setIslandTag_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setIslandTag_p1"]; +var _emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1 = Module["_emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1"] = asm["_emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__isInside_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__isInside_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__isInside_p2"]; +var _emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0"]; +var _emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0"]; +var _emscripten_bind_btDbvtProxy__get_m_clientObject_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_clientObject_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_clientObject_p0"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1"]; +var _emscripten_bind_btCylinderShapeZ__getUpAxis_p0 = Module["_emscripten_bind_btCylinderShapeZ__getUpAxis_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getUpAxis_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0"]; +var _emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1"]; +var _emscripten_bind_btSliderConstraint__getLinearPos_p0 = Module["_emscripten_bind_btSliderConstraint__getLinearPos_p0"] = asm["_emscripten_bind_btSliderConstraint__getLinearPos_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0"]; +var _emscripten_bind_btQuadWord__setMax_p1 = Module["_emscripten_bind_btQuadWord__setMax_p1"] = asm["_emscripten_bind_btQuadWord__setMax_p1"]; +var _emscripten_bind_btRigidBody__wantsSleeping_p0 = Module["_emscripten_bind_btRigidBody__wantsSleeping_p0"] = asm["_emscripten_bind_btRigidBody__wantsSleeping_p0"]; +var _emscripten_bind_btOptimizedBvh__deSerializeDouble_p1 = Module["_emscripten_bind_btOptimizedBvh__deSerializeDouble_p1"] = asm["_emscripten_bind_btOptimizedBvh__deSerializeDouble_p1"]; +var _emscripten_bind_btEmptyShape__setLocalScaling_p1 = Module["_emscripten_bind_btEmptyShape__setLocalScaling_p1"] = asm["_emscripten_bind_btEmptyShape__setLocalScaling_p1"]; +var _emscripten_bind_btBroadphaseProxy__isInfinite_p1 = Module["_emscripten_bind_btBroadphaseProxy__isInfinite_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isInfinite_p1"]; +var _emscripten_bind_btCollisionAlgorithm__processCollision_p4 = Module["_emscripten_bind_btCollisionAlgorithm__processCollision_p4"] = asm["_emscripten_bind_btCollisionAlgorithm__processCollision_p4"]; +var _emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0 = Module["_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0"] = asm["_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getNumVertices_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getNumVertices_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getNumVertices_p0"]; +var _emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3"]; +var _emscripten_bind_btWheelInfo__get_m_frictionSlip_p0 = Module["_emscripten_bind_btWheelInfo__get_m_frictionSlip_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_frictionSlip_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0"]; +var _emscripten_bind_btStackAlloc__beginBlock_p0 = Module["_emscripten_bind_btStackAlloc__beginBlock_p0"] = asm["_emscripten_bind_btStackAlloc__beginBlock_p0"]; +var _emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3 = Module["_emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3"] = asm["_emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3"]; +var _emscripten_bind_btConeShape__isConvex2d_p0 = Module["_emscripten_bind_btConeShape__isConvex2d_p0"] = asm["_emscripten_bind_btConeShape__isConvex2d_p0"]; +var _emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__serialize_p2 = Module["_emscripten_bind_btHeightfieldTerrainShape__serialize_p2"] = asm["_emscripten_bind_btHeightfieldTerrainShape__serialize_p2"]; +var _emscripten_bind_btCollisionDispatcher__getNewManifold_p2 = Module["_emscripten_bind_btCollisionDispatcher__getNewManifold_p2"] = asm["_emscripten_bind_btCollisionDispatcher__getNewManifold_p2"]; +var _emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0 = Module["_emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2"]; +var _emscripten_bind_btUniversalConstraint__calcAnchorPos_p0 = Module["_emscripten_bind_btUniversalConstraint__calcAnchorPos_p0"] = asm["_emscripten_bind_btUniversalConstraint__calcAnchorPos_p0"]; +var _emscripten_bind_btTransform__deSerializeDouble_p1 = Module["_emscripten_bind_btTransform__deSerializeDouble_p1"] = asm["_emscripten_bind_btTransform__deSerializeDouble_p1"]; +var _emscripten_bind_btCylinderShapeX__getAabbSlow_p3 = Module["_emscripten_bind_btCylinderShapeX__getAabbSlow_p3"] = asm["_emscripten_bind_btCylinderShapeX__getAabbSlow_p3"]; +var _emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0 = Module["_emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0"]; +var _emscripten_bind_btQuaternion__btQuaternion_p4 = Module["_emscripten_bind_btQuaternion__btQuaternion_p4"] = asm["_emscripten_bind_btQuaternion__btQuaternion_p4"]; +var _emscripten_bind_btQuaternion__btQuaternion_p3 = Module["_emscripten_bind_btQuaternion__btQuaternion_p3"] = asm["_emscripten_bind_btQuaternion__btQuaternion_p3"]; +var _emscripten_bind_btQuaternion__btQuaternion_p2 = Module["_emscripten_bind_btQuaternion__btQuaternion_p2"] = asm["_emscripten_bind_btQuaternion__btQuaternion_p2"]; +var _emscripten_bind_btQuaternion__btQuaternion_p0 = Module["_emscripten_bind_btQuaternion__btQuaternion_p0"] = asm["_emscripten_bind_btQuaternion__btQuaternion_p0"]; +var _emscripten_bind_btHinge2Constraint__setUserConstraintId_p1 = Module["_emscripten_bind_btHinge2Constraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUserConstraintId_p1"]; +var _emscripten_bind_btUniversalConstraint__needsFeedback_p0 = Module["_emscripten_bind_btUniversalConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btUniversalConstraint__needsFeedback_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0"]; +var _emscripten_bind_btBroadphaseInterface__getAabb_p3 = Module["_emscripten_bind_btBroadphaseInterface__getAabb_p3"] = asm["_emscripten_bind_btBroadphaseInterface__getAabb_p3"]; +var _emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1"]; +var _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2 = Module["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2"]; +var _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1 = Module["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1"]; +var _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0"]; +var _emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btRigidBody__getGravity_p0 = Module["_emscripten_bind_btRigidBody__getGravity_p0"] = asm["_emscripten_bind_btRigidBody__getGravity_p0"]; +var _emscripten_bind_btRigidBody__getAngularFactor_p0 = Module["_emscripten_bind_btRigidBody__getAngularFactor_p0"] = asm["_emscripten_bind_btRigidBody__getAngularFactor_p0"]; +var _emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1 = Module["_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1"]; +var _emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0 = Module["_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__setGravity_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setGravity_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setGravity_p1"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1"]; +var _emscripten_bind_btSphereShape__isConvex2d_p0 = Module["_emscripten_bind_btSphereShape__isConvex2d_p0"] = asm["_emscripten_bind_btSphereShape__isConvex2d_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3"]; +var _emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0 = Module["_emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0"]; +var _emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btConvexHullShape__getAabb_p3 = Module["_emscripten_bind_btConvexHullShape__getAabb_p3"] = asm["_emscripten_bind_btConvexHullShape__getAabb_p3"]; +var _emscripten_bind_btVector3__lerp_p2 = Module["_emscripten_bind_btVector3__lerp_p2"] = asm["_emscripten_bind_btVector3__lerp_p2"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1"]; +var _emscripten_bind_btPairCachingGhostObject__upcast_p1 = Module["_emscripten_bind_btPairCachingGhostObject__upcast_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__upcast_p1"]; +var _emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0"]; +var _emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1"]; +var _emscripten_bind_btHingeConstraint__setAxis_p1 = Module["_emscripten_bind_btHingeConstraint__setAxis_p1"] = asm["_emscripten_bind_btHingeConstraint__setAxis_p1"]; +var _emscripten_bind_btCompoundShape__serializeSingleShape_p1 = Module["_emscripten_bind_btCompoundShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btCompoundShape__serializeSingleShape_p1"]; +var _emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1 = Module["_emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1"] = asm["_emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1"]; +var _emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btRigidBody__internalGetAngularFactor_p0 = Module["_emscripten_bind_btRigidBody__internalGetAngularFactor_p0"] = asm["_emscripten_bind_btRigidBody__internalGetAngularFactor_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0 = Module["_emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0"] = asm["_emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0"]; +var _emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_distance1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_distance1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_distance1_p1"]; +var _emscripten_bind_btVector3__setValue_p3 = Module["_emscripten_bind_btVector3__setValue_p3"] = asm["_emscripten_bind_btVector3__setValue_p3"]; +var _emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1"]; +var _emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btMatrix3x3__op_add_p1 = Module["_emscripten_bind_btMatrix3x3__op_add_p1"] = asm["_emscripten_bind_btMatrix3x3__op_add_p1"]; +var _emscripten_bind_btStaticPlaneShape__setMargin_p1 = Module["_emscripten_bind_btStaticPlaneShape__setMargin_p1"] = asm["_emscripten_bind_btStaticPlaneShape__setMargin_p1"]; +var _emscripten_bind_btTransform____destroy___p0 = Module["_emscripten_bind_btTransform____destroy___p0"] = asm["_emscripten_bind_btTransform____destroy___p0"]; +var _emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0 = Module["_emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_damping_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_damping_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_damping_p0"]; +var _emscripten_bind_btCollisionWorld__getPairCache_p0 = Module["_emscripten_bind_btCollisionWorld__getPairCache_p0"] = asm["_emscripten_bind_btCollisionWorld__getPairCache_p0"]; +var _emscripten_bind_btHashInt____destroy___p0 = Module["_emscripten_bind_btHashInt____destroy___p0"] = asm["_emscripten_bind_btHashInt____destroy___p0"]; +var _emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0 = Module["_emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0"] = asm["_emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0"]; +var _emscripten_bind_btRigidBody__setHitFraction_p1 = Module["_emscripten_bind_btRigidBody__setHitFraction_p1"] = asm["_emscripten_bind_btRigidBody__setHitFraction_p1"]; +var _emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0"]; +var _emscripten_bind_btVector4__dot_p1 = Module["_emscripten_bind_btVector4__dot_p1"] = asm["_emscripten_bind_btVector4__dot_p1"]; +var _emscripten_bind_btDbvtBroadphase__destroyProxy_p2 = Module["_emscripten_bind_btDbvtBroadphase__destroyProxy_p2"] = asm["_emscripten_bind_btDbvtBroadphase__destroyProxy_p2"]; +var _emscripten_bind_btCollisionObject__serializeSingleObject_p1 = Module["_emscripten_bind_btCollisionObject__serializeSingleObject_p1"] = asm["_emscripten_bind_btCollisionObject__serializeSingleObject_p1"]; +var _emscripten_bind_btDispatcherInfo__get_m_timeStep_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_timeStep_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_timeStep_p0"]; +var _emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0"]; +var _emscripten_bind_btTriangleMesh__btTriangleMesh_p0 = Module["_emscripten_bind_btTriangleMesh__btTriangleMesh_p0"] = asm["_emscripten_bind_btTriangleMesh__btTriangleMesh_p0"]; +var _emscripten_bind_btJacobianEntry__get_m_bJ_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_bJ_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_bJ_p0"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0"]; +var _emscripten_bind_btRotationalLimitMotor____destroy___p0 = Module["_emscripten_bind_btRotationalLimitMotor____destroy___p0"] = asm["_emscripten_bind_btRotationalLimitMotor____destroy___p0"]; +var _emscripten_bind_btGhostObject__convexSweepTest_p4 = Module["_emscripten_bind_btGhostObject__convexSweepTest_p4"] = asm["_emscripten_bind_btGhostObject__convexSweepTest_p4"]; +var _emscripten_bind_btGhostObject__convexSweepTest_p5 = Module["_emscripten_bind_btGhostObject__convexSweepTest_p5"] = asm["_emscripten_bind_btGhostObject__convexSweepTest_p5"]; +var _emscripten_bind_btPoint2PointConstraint____destroy___p0 = Module["_emscripten_bind_btPoint2PointConstraint____destroy___p0"] = asm["_emscripten_bind_btPoint2PointConstraint____destroy___p0"]; +var _emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0 = Module["_emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0"] = asm["_emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0"]; +var _emscripten_bind_btCapsuleShape__getUserPointer_p0 = Module["_emscripten_bind_btCapsuleShape__getUserPointer_p0"] = asm["_emscripten_bind_btCapsuleShape__getUserPointer_p0"]; +var _emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1 = Module["_emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1"] = asm["_emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1"]; +var _emscripten_bind_btConcaveShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConcaveShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConcaveShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btEmptyShape__getAabb_p3 = Module["_emscripten_bind_btEmptyShape__getAabb_p3"] = asm["_emscripten_bind_btEmptyShape__getAabb_p3"]; +var _emscripten_bind_btAxisSweep3__addHandle_p7 = Module["_emscripten_bind_btAxisSweep3__addHandle_p7"] = asm["_emscripten_bind_btAxisSweep3__addHandle_p7"]; +var _emscripten_bind_btHinge2Constraint__setParam_p2 = Module["_emscripten_bind_btHinge2Constraint__setParam_p2"] = asm["_emscripten_bind_btHinge2Constraint__setParam_p2"]; +var _emscripten_bind_btHinge2Constraint__setParam_p3 = Module["_emscripten_bind_btHinge2Constraint__setParam_p3"] = asm["_emscripten_bind_btHinge2Constraint__setParam_p3"]; +var _emscripten_bind_btCapsuleShapeX__setMargin_p1 = Module["_emscripten_bind_btCapsuleShapeX__setMargin_p1"] = asm["_emscripten_bind_btCapsuleShapeX__setMargin_p1"]; +var _emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1"]; +var _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5 = Module["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5"] = asm["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5"]; +var _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0 = Module["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0"] = asm["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0"]; +var _emscripten_bind_btCollisionObject__setAnisotropicFriction_p1 = Module["_emscripten_bind_btCollisionObject__setAnisotropicFriction_p1"] = asm["_emscripten_bind_btCollisionObject__setAnisotropicFriction_p1"]; +var _emscripten_bind_btQuaternion__y_p0 = Module["_emscripten_bind_btQuaternion__y_p0"] = asm["_emscripten_bind_btQuaternion__y_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0"]; +var _emscripten_bind_btDynamicsWorld__updateAabbs_p0 = Module["_emscripten_bind_btDynamicsWorld__updateAabbs_p0"] = asm["_emscripten_bind_btDynamicsWorld__updateAabbs_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0"]; +var _emscripten_bind_btContactConstraint__getParam_p1 = Module["_emscripten_bind_btContactConstraint__getParam_p1"] = asm["_emscripten_bind_btContactConstraint__getParam_p1"]; +var _emscripten_bind_btJacobianEntry__set_m_bJ_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_bJ_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_bJ_p1"]; +var _emscripten_bind_btTypedConstraint__needsFeedback_p0 = Module["_emscripten_bind_btTypedConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btTypedConstraint__needsFeedback_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0"]; +var _emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1"]; +var _emscripten_bind_btBoxShape__setMargin_p1 = Module["_emscripten_bind_btBoxShape__setMargin_p1"] = asm["_emscripten_bind_btBoxShape__setMargin_p1"]; +var _emscripten_bind_btConeShapeZ__getAabb_p3 = Module["_emscripten_bind_btConeShapeZ__getAabb_p3"] = asm["_emscripten_bind_btConeShapeZ__getAabb_p3"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1"]; +var _emscripten_bind_btBroadphasePair__set_m_algorithm_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_algorithm_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_algorithm_p1"]; +var _emscripten_bind_btVector3__distance_p1 = Module["_emscripten_bind_btVector3__distance_p1"] = asm["_emscripten_bind_btVector3__distance_p1"]; +var _emscripten_bind_btConeShapeX__getAabb_p3 = Module["_emscripten_bind_btConeShapeX__getAabb_p3"] = asm["_emscripten_bind_btConeShapeX__getAabb_p3"]; +var _emscripten_bind_btStaticPlaneShape__isConvex2d_p0 = Module["_emscripten_bind_btStaticPlaneShape__isConvex2d_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isConvex2d_p0"]; +var _emscripten_bind_btHashPtr__btHashPtr_p1 = Module["_emscripten_bind_btHashPtr__btHashPtr_p1"] = asm["_emscripten_bind_btHashPtr__btHashPtr_p1"]; +var _emscripten_bind_btQuaternion__op_add_p1 = Module["_emscripten_bind_btQuaternion__op_add_p1"] = asm["_emscripten_bind_btQuaternion__op_add_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3"]; +var _emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1"]; +var _emscripten_bind_btBroadphaseProxy__isSoftBody_p1 = Module["_emscripten_bind_btBroadphaseProxy__isSoftBody_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isSoftBody_p1"]; +var _emscripten_bind_btConeShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConeShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConeShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3"]; +var _emscripten_bind_btGhostObject__getWorldTransform_p0 = Module["_emscripten_bind_btGhostObject__getWorldTransform_p0"] = asm["_emscripten_bind_btGhostObject__getWorldTransform_p0"]; +var _emscripten_bind_btHingeConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btHingeConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btHingeConstraint__getAppliedImpulse_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4"]; +var _emscripten_bind_btUniversalConstraint__setLowerLimit_p2 = Module["_emscripten_bind_btUniversalConstraint__setLowerLimit_p2"] = asm["_emscripten_bind_btUniversalConstraint__setLowerLimit_p2"]; +var _emscripten_bind_btTransform__deSerializeFloat_p1 = Module["_emscripten_bind_btTransform__deSerializeFloat_p1"] = asm["_emscripten_bind_btTransform__deSerializeFloat_p1"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0"]; +var _emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btHinge2Constraint__setAxis_p2 = Module["_emscripten_bind_btHinge2Constraint__setAxis_p2"] = asm["_emscripten_bind_btHinge2Constraint__setAxis_p2"]; +var _emscripten_bind_btConeTwistConstraint__getAFrame_p0 = Module["_emscripten_bind_btConeTwistConstraint__getAFrame_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getAFrame_p0"]; +var _emscripten_bind_btCylinderShapeX__getRadius_p0 = Module["_emscripten_bind_btCylinderShapeX__getRadius_p0"] = asm["_emscripten_bind_btCylinderShapeX__getRadius_p0"]; +var _emscripten_bind_btStackAlloc__allocate_p1 = Module["_emscripten_bind_btStackAlloc__allocate_p1"] = asm["_emscripten_bind_btStackAlloc__allocate_p1"]; +var _emscripten_bind_btDynamicsWorld__addRigidBody_p1 = Module["_emscripten_bind_btDynamicsWorld__addRigidBody_p1"] = asm["_emscripten_bind_btDynamicsWorld__addRigidBody_p1"]; +var _emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btConeShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConeShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConeShape__serializeSingleShape_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1"]; +var _emscripten_bind_btBoxShape__isConvex2d_p0 = Module["_emscripten_bind_btBoxShape__isConvex2d_p0"] = asm["_emscripten_bind_btBoxShape__isConvex2d_p0"]; +var _emscripten_bind_btMatrix3x3__setEulerYPR_p3 = Module["_emscripten_bind_btMatrix3x3__setEulerYPR_p3"] = asm["_emscripten_bind_btMatrix3x3__setEulerYPR_p3"]; +var _emscripten_bind_btRigidBody__setCollisionShape_p1 = Module["_emscripten_bind_btRigidBody__setCollisionShape_p1"] = asm["_emscripten_bind_btRigidBody__setCollisionShape_p1"]; +var _emscripten_bind_btCollisionWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btCollisionWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btCollisionWorld__objectQuerySingle_p8"]; +var _emscripten_bind_btConcaveShape__isInfinite_p0 = Module["_emscripten_bind_btConcaveShape__isInfinite_p0"] = asm["_emscripten_bind_btConcaveShape__isInfinite_p0"]; +var _emscripten_bind_btHinge2Constraint__setFrames_p2 = Module["_emscripten_bind_btHinge2Constraint__setFrames_p2"] = asm["_emscripten_bind_btHinge2Constraint__setFrames_p2"]; +var _emscripten_bind_btHingeConstraint__setLimit_p3 = Module["_emscripten_bind_btHingeConstraint__setLimit_p3"] = asm["_emscripten_bind_btHingeConstraint__setLimit_p3"]; +var _emscripten_bind_btHingeConstraint__setLimit_p2 = Module["_emscripten_bind_btHingeConstraint__setLimit_p2"] = asm["_emscripten_bind_btHingeConstraint__setLimit_p2"]; +var _emscripten_bind_btMatrix3x3__tdoty_p1 = Module["_emscripten_bind_btMatrix3x3__tdoty_p1"] = asm["_emscripten_bind_btMatrix3x3__tdoty_p1"]; +var _emscripten_bind_btConcaveShape__getShapeType_p0 = Module["_emscripten_bind_btConcaveShape__getShapeType_p0"] = asm["_emscripten_bind_btConcaveShape__getShapeType_p0"]; +var _emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0 = Module["_emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0"] = asm["_emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0"]; +var _emscripten_bind_btHingeConstraint__setLimit_p5 = Module["_emscripten_bind_btHingeConstraint__setLimit_p5"] = asm["_emscripten_bind_btHingeConstraint__setLimit_p5"]; +var _emscripten_bind_btCylinderShapeZ__getMargin_p0 = Module["_emscripten_bind_btCylinderShapeZ__getMargin_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getMargin_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0"]; +var _emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1"]; +var _emscripten_bind_btCapsuleShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btCapsuleShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCapsuleShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btMultiSphereShape__serializeSingleShape_p1 = Module["_emscripten_bind_btMultiSphereShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btMultiSphereShape__serializeSingleShape_p1"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1"]; +var _emscripten_bind_btPairCachingGhostObject__setRestitution_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setRestitution_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setRestitution_p1"]; +var _emscripten_bind_btDefaultMotionState__getWorldTransform_p1 = Module["_emscripten_bind_btDefaultMotionState__getWorldTransform_p1"] = asm["_emscripten_bind_btDefaultMotionState__getWorldTransform_p1"]; +var _emscripten_bind_btDbvtProxy__get_m_aabbMax_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_aabbMax_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_aabbMax_p0"]; +var _emscripten_bind_btVector3____destroy___p0 = Module["_emscripten_bind_btVector3____destroy___p0"] = asm["_emscripten_bind_btVector3____destroy___p0"]; +var _emscripten_bind_btConeShapeX__getRadius_p0 = Module["_emscripten_bind_btConeShapeX__getRadius_p0"] = asm["_emscripten_bind_btConeShapeX__getRadius_p0"]; +var _emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__printStats_p0 = Module["_emscripten_bind_bt32BitAxisSweep3__printStats_p0"] = asm["_emscripten_bind_bt32BitAxisSweep3__printStats_p0"]; +var _emscripten_bind_btMatrix3x3__tdotz_p1 = Module["_emscripten_bind_btMatrix3x3__tdotz_p1"] = asm["_emscripten_bind_btMatrix3x3__tdotz_p1"]; +var _emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0"]; +var _emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0 = Module["_emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0"] = asm["_emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0"]; +var _emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btDispatcherInfo__set_m_stepCount_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_stepCount_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_stepCount_p1"]; +var _emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1 = Module["_emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1"] = asm["_emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1"]; +var _emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0 = Module["_emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0"] = asm["_emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2"]; +var _emscripten_bind_btConvexHullShape__getShapeType_p0 = Module["_emscripten_bind_btConvexHullShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexHullShape__getShapeType_p0"]; +var _emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2 = Module["_emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2"] = asm["_emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1"]; +var _emscripten_bind_btHingeConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btHingeConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btHingeConstraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1 = Module["_emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0"]; +var _emscripten_bind_CProfileNode__Return_p0 = Module["_emscripten_bind_CProfileNode__Return_p0"] = asm["_emscripten_bind_CProfileNode__Return_p0"]; +var _emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btGhostObject__setWorldTransform_p1 = Module["_emscripten_bind_btGhostObject__setWorldTransform_p1"] = asm["_emscripten_bind_btGhostObject__setWorldTransform_p1"]; +var _emscripten_bind_btStaticPlaneShape__isSoftBody_p0 = Module["_emscripten_bind_btStaticPlaneShape__isSoftBody_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isSoftBody_p0"]; +var _emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0 = Module["_emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0"] = asm["_emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__createProxy_p8 = Module["_emscripten_bind_bt32BitAxisSweep3__createProxy_p8"] = asm["_emscripten_bind_bt32BitAxisSweep3__createProxy_p8"]; +var _emscripten_bind_btVector4__getSkewSymmetricMatrix_p3 = Module["_emscripten_bind_btVector4__getSkewSymmetricMatrix_p3"] = asm["_emscripten_bind_btVector4__getSkewSymmetricMatrix_p3"]; +var _emscripten_bind_btCapsuleShapeZ__getMargin_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getMargin_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getMargin_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btGhostObject__isStaticObject_p0 = Module["_emscripten_bind_btGhostObject__isStaticObject_p0"] = asm["_emscripten_bind_btGhostObject__isStaticObject_p0"]; +var _emscripten_bind_btHinge2Constraint__isLimited_p1 = Module["_emscripten_bind_btHinge2Constraint__isLimited_p1"] = asm["_emscripten_bind_btHinge2Constraint__isLimited_p1"]; +var _emscripten_bind_btRaycastVehicle__addWheel_p7 = Module["_emscripten_bind_btRaycastVehicle__addWheel_p7"] = asm["_emscripten_bind_btRaycastVehicle__addWheel_p7"]; +var _emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btConcaveShape__setLocalScaling_p1 = Module["_emscripten_bind_btConcaveShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConcaveShape__setLocalScaling_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1"]; +var _emscripten_bind_btGhostObject__getCcdMotionThreshold_p0 = Module["_emscripten_bind_btGhostObject__getCcdMotionThreshold_p0"] = asm["_emscripten_bind_btGhostObject__getCcdMotionThreshold_p0"]; +var _emscripten_bind_btDbvtProxy____destroy___p0 = Module["_emscripten_bind_btDbvtProxy____destroy___p0"] = asm["_emscripten_bind_btDbvtProxy____destroy___p0"]; +var _emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btDynamicsWorld__debugDrawObject_p3 = Module["_emscripten_bind_btDynamicsWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btDynamicsWorld__debugDrawObject_p3"]; +var _emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0 = Module["_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0"]; +var _emscripten_bind_btMatrix3x3__tdotx_p1 = Module["_emscripten_bind_btMatrix3x3__tdotx_p1"] = asm["_emscripten_bind_btMatrix3x3__tdotx_p1"]; +var _emscripten_bind_btTriangleInfo__btTriangleInfo_p0 = Module["_emscripten_bind_btTriangleInfo__btTriangleInfo_p0"] = asm["_emscripten_bind_btTriangleInfo__btTriangleInfo_p0"]; +var _emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0 = Module["_emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0"]; +var _emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1"]; +var _emscripten_bind_btConvexShape__getAabb_p3 = Module["_emscripten_bind_btConvexShape__getAabb_p3"] = asm["_emscripten_bind_btConvexShape__getAabb_p3"]; +var _emscripten_bind_btConeShapeX__btConeShapeX_p2 = Module["_emscripten_bind_btConeShapeX__btConeShapeX_p2"] = asm["_emscripten_bind_btConeShapeX__btConeShapeX_p2"]; +var _emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1 = Module["_emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1"]; +var _emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btCompoundShape__serialize_p2 = Module["_emscripten_bind_btCompoundShape__serialize_p2"] = asm["_emscripten_bind_btCompoundShape__serialize_p2"]; +var _emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1"]; +var _emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1 = Module["_emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1"]; +var _emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btConcaveShape__setUserPointer_p1 = Module["_emscripten_bind_btConcaveShape__setUserPointer_p1"] = asm["_emscripten_bind_btConcaveShape__setUserPointer_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3"]; +var _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2"]; +var _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1"]; +var _emscripten_bind_btConeTwistConstraint__setFrames_p2 = Module["_emscripten_bind_btConeTwistConstraint__setFrames_p2"] = asm["_emscripten_bind_btConeTwistConstraint__setFrames_p2"]; +var _emscripten_bind_btManifoldPoint__getAppliedImpulse_p0 = Module["_emscripten_bind_btManifoldPoint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btManifoldPoint__getAppliedImpulse_p0"]; +var _emscripten_bind_btUniformScalingShape__isConvex2d_p0 = Module["_emscripten_bind_btUniformScalingShape__isConvex2d_p0"] = asm["_emscripten_bind_btUniformScalingShape__isConvex2d_p0"]; +var _emscripten_bind_btDefaultMotionState__set_m_userPointer_p1 = Module["_emscripten_bind_btDefaultMotionState__set_m_userPointer_p1"] = asm["_emscripten_bind_btDefaultMotionState__set_m_userPointer_p1"]; +var _emscripten_bind_btWheelInfo__set_m_worldTransform_p1 = Module["_emscripten_bind_btWheelInfo__set_m_worldTransform_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_worldTransform_p1"]; +var _emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1"]; +var _emscripten_bind_btSimpleBroadphase__rayTest_p4 = Module["_emscripten_bind_btSimpleBroadphase__rayTest_p4"] = asm["_emscripten_bind_btSimpleBroadphase__rayTest_p4"]; +var _emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0 = Module["_emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0"]; +var _emscripten_bind_btCollisionObject__setDeactivationTime_p1 = Module["_emscripten_bind_btCollisionObject__setDeactivationTime_p1"] = asm["_emscripten_bind_btCollisionObject__setDeactivationTime_p1"]; +var _emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0"]; +var _emscripten_bind_btCollisionShape__setUserPointer_p1 = Module["_emscripten_bind_btCollisionShape__setUserPointer_p1"] = asm["_emscripten_bind_btCollisionShape__setUserPointer_p1"]; +var _emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0 = Module["_emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0"] = asm["_emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0"]; +var _emscripten_bind_btVector4__setX_p1 = Module["_emscripten_bind_btVector4__setX_p1"] = asm["_emscripten_bind_btVector4__setX_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3"]; +var _emscripten_bind_btAngularLimit__getHalfRange_p0 = Module["_emscripten_bind_btAngularLimit__getHalfRange_p0"] = asm["_emscripten_bind_btAngularLimit__getHalfRange_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0"]; +var _emscripten_bind_btCompoundShape__isSoftBody_p0 = Module["_emscripten_bind_btCompoundShape__isSoftBody_p0"] = asm["_emscripten_bind_btCompoundShape__isSoftBody_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__isConcave_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isConcave_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isConcave_p0"]; +var _emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0 = Module["_emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0"]; +var _emscripten_bind_btRigidBody__btRigidBody_p3 = Module["_emscripten_bind_btRigidBody__btRigidBody_p3"] = asm["_emscripten_bind_btRigidBody__btRigidBody_p3"]; +var _emscripten_bind_btRigidBody__btRigidBody_p1 = Module["_emscripten_bind_btRigidBody__btRigidBody_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBody_p1"]; +var _emscripten_bind_btConcaveShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConcaveShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConcaveShape__getBoundingSphere_p2"]; +var _emscripten_bind_btGhostObject__btGhostObject_p0 = Module["_emscripten_bind_btGhostObject__btGhostObject_p0"] = asm["_emscripten_bind_btGhostObject__btGhostObject_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0"]; +var _emscripten_bind_btRigidBody__isInWorld_p0 = Module["_emscripten_bind_btRigidBody__isInWorld_p0"] = asm["_emscripten_bind_btRigidBody__isInWorld_p0"]; +var _emscripten_bind_btDynamicsWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btDynamicsWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btDynamicsWorld__updateSingleAabb_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0"]; +var _emscripten_bind_btDbvtBroadphase__get_m_paircache_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_paircache_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_paircache_p0"]; +var _emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1"]; +var _emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1"]; +var _emscripten_bind_btTriangleMesh__hasPremadeAabb_p0 = Module["_emscripten_bind_btTriangleMesh__hasPremadeAabb_p0"] = asm["_emscripten_bind_btTriangleMesh__hasPremadeAabb_p0"]; +var _emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btCollisionObject__getRootCollisionShape_p0 = Module["_emscripten_bind_btCollisionObject__getRootCollisionShape_p0"] = asm["_emscripten_bind_btCollisionObject__getRootCollisionShape_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1"]; +var _emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0"]; +var _emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0 = Module["_emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0"] = asm["_emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0"]; +var _emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2 = Module["_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2"] = asm["_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2"]; +var _emscripten_bind_btRigidBody__setFriction_p1 = Module["_emscripten_bind_btRigidBody__setFriction_p1"] = asm["_emscripten_bind_btRigidBody__setFriction_p1"]; +var _emscripten_bind_btCylinderShapeX__getAabb_p3 = Module["_emscripten_bind_btCylinderShapeX__getAabb_p3"] = asm["_emscripten_bind_btCylinderShapeX__getAabb_p3"]; +var _emscripten_bind_btVector4__closestAxis_p0 = Module["_emscripten_bind_btVector4__closestAxis_p0"] = asm["_emscripten_bind_btVector4__closestAxis_p0"]; +var _emscripten_bind_btConeShape__setLocalScaling_p1 = Module["_emscripten_bind_btConeShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConeShape__setLocalScaling_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1"]; +var _emscripten_bind_btVector4__w_p0 = Module["_emscripten_bind_btVector4__w_p0"] = asm["_emscripten_bind_btVector4__w_p0"]; +var _emscripten_bind_btJacobianEntry__set_m_aJ_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_aJ_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_aJ_p1"]; +var _emscripten_bind_btVector4__setZ_p1 = Module["_emscripten_bind_btVector4__setZ_p1"] = asm["_emscripten_bind_btVector4__setZ_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3 = Module["_emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3"] = asm["_emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1"]; +var _emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1 = Module["_emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1"] = asm["_emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1"]; +var _emscripten_bind_btVector3__furthestAxis_p0 = Module["_emscripten_bind_btVector3__furthestAxis_p0"] = asm["_emscripten_bind_btVector3__furthestAxis_p0"]; +var _emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0"]; +var _emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1"]; +var _emscripten_bind_btUniversalConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btUniversalConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUserConstraintType_p0"]; +var _emscripten_bind_btUniversalConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btUniversalConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btUniversalConstraint__getRigidBodyB_p0"]; +var _emscripten_bind_btEmptyShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btEmptyShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btEmptyShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btPairCachingGhostObject__setUserPointer_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setUserPointer_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setUserPointer_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btPersistentManifold__clearManifold_p0 = Module["_emscripten_bind_btPersistentManifold__clearManifold_p0"] = asm["_emscripten_bind_btPersistentManifold__clearManifold_p0"]; +var _emscripten_bind_btVector3__safeNormalize_p0 = Module["_emscripten_bind_btVector3__safeNormalize_p0"] = asm["_emscripten_bind_btVector3__safeNormalize_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__isCompound_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isCompound_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isCompound_p0"]; +var _emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0 = Module["_emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0"]; +var _emscripten_bind_btVector4__isZero_p0 = Module["_emscripten_bind_btVector4__isZero_p0"] = asm["_emscripten_bind_btVector4__isZero_p0"]; +var _emscripten_bind_btVector4__setY_p1 = Module["_emscripten_bind_btVector4__setY_p1"] = asm["_emscripten_bind_btVector4__setY_p1"]; +var _emscripten_bind_btVector4__lerp_p2 = Module["_emscripten_bind_btVector4__lerp_p2"] = asm["_emscripten_bind_btVector4__lerp_p2"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0"]; +var _emscripten_bind_btDispatcher__needsCollision_p2 = Module["_emscripten_bind_btDispatcher__needsCollision_p2"] = asm["_emscripten_bind_btDispatcher__needsCollision_p2"]; +var _emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btCylinderShapeX__getBoundingSphere_p2 = Module["_emscripten_bind_btCylinderShapeX__getBoundingSphere_p2"] = asm["_emscripten_bind_btCylinderShapeX__getBoundingSphere_p2"]; +var _emscripten_bind_btRigidBody__getNumConstraintRefs_p0 = Module["_emscripten_bind_btRigidBody__getNumConstraintRefs_p0"] = asm["_emscripten_bind_btRigidBody__getNumConstraintRefs_p0"]; +var _emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1"]; +var _emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0 = Module["_emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0"] = asm["_emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1"]; +var _emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0"]; +var _emscripten_bind_btTypedConstraint__getInfo1_p1 = Module["_emscripten_bind_btTypedConstraint__getInfo1_p1"] = asm["_emscripten_bind_btTypedConstraint__getInfo1_p1"]; +var _emscripten_bind_btQuaternion__getW_p0 = Module["_emscripten_bind_btQuaternion__getW_p0"] = asm["_emscripten_bind_btQuaternion__getW_p0"]; +var _emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3 = Module["_emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3"] = asm["_emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2"]; +var _emscripten_bind_btSphereShape__setMargin_p1 = Module["_emscripten_bind_btSphereShape__setMargin_p1"] = asm["_emscripten_bind_btSphereShape__setMargin_p1"]; +var _emscripten_bind_btQuadWord____destroy___p0 = Module["_emscripten_bind_btQuadWord____destroy___p0"] = asm["_emscripten_bind_btQuadWord____destroy___p0"]; +var _emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1"]; +var _emscripten_bind_btSphereShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btSphereShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btSphereShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btConeShape__getAabb_p3 = Module["_emscripten_bind_btConeShape__getAabb_p3"] = asm["_emscripten_bind_btConeShape__getAabb_p3"]; +var _emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0 = Module["_emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0"] = asm["_emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0"]; +var _emscripten_bind_btBoxShape__getVertex_p2 = Module["_emscripten_bind_btBoxShape__getVertex_p2"] = asm["_emscripten_bind_btBoxShape__getVertex_p2"]; +var _emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1"]; +var _emscripten_bind_btCylinderShapeX__isCompound_p0 = Module["_emscripten_bind_btCylinderShapeX__isCompound_p0"] = asm["_emscripten_bind_btCylinderShapeX__isCompound_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1"]; +var _emscripten_bind_btGhostObject__activate_p0 = Module["_emscripten_bind_btGhostObject__activate_p0"] = asm["_emscripten_bind_btGhostObject__activate_p0"]; +var _emscripten_bind_btCollisionWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btCollisionWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__debugDrawWorld_p0"]; +var _emscripten_bind_btDbvtProxy__set_m_clientObject_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_clientObject_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_clientObject_p1"]; +var _emscripten_bind_btSphereShape__getShapeType_p0 = Module["_emscripten_bind_btSphereShape__getShapeType_p0"] = asm["_emscripten_bind_btSphereShape__getShapeType_p0"]; +var _emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1"]; +var _emscripten_bind_btCollisionObject__getHitFraction_p0 = Module["_emscripten_bind_btCollisionObject__getHitFraction_p0"] = asm["_emscripten_bind_btCollisionObject__getHitFraction_p0"]; +var _emscripten_bind_btCompoundShape__updateChildTransform_p3 = Module["_emscripten_bind_btCompoundShape__updateChildTransform_p3"] = asm["_emscripten_bind_btCompoundShape__updateChildTransform_p3"]; +var _emscripten_bind_btCompoundShape__updateChildTransform_p2 = Module["_emscripten_bind_btCompoundShape__updateChildTransform_p2"] = asm["_emscripten_bind_btCompoundShape__updateChildTransform_p2"]; +var _emscripten_bind_btQuadWord__setZ_p1 = Module["_emscripten_bind_btQuadWord__setZ_p1"] = asm["_emscripten_bind_btQuadWord__setZ_p1"]; +var _emscripten_bind_btTriangleMesh__btTriangleMesh_p2 = Module["_emscripten_bind_btTriangleMesh__btTriangleMesh_p2"] = asm["_emscripten_bind_btTriangleMesh__btTriangleMesh_p2"]; +var _emscripten_bind_btTriangleMesh__btTriangleMesh_p1 = Module["_emscripten_bind_btTriangleMesh__btTriangleMesh_p1"] = asm["_emscripten_bind_btTriangleMesh__btTriangleMesh_p1"]; +var _emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2 = Module["_emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1"]; +var _emscripten_bind_btMatrix3x3__timesTranspose_p1 = Module["_emscripten_bind_btMatrix3x3__timesTranspose_p1"] = asm["_emscripten_bind_btMatrix3x3__timesTranspose_p1"]; +var _emscripten_bind_btMatrix3x3__absolute_p0 = Module["_emscripten_bind_btMatrix3x3__absolute_p0"] = asm["_emscripten_bind_btMatrix3x3__absolute_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0"]; +var _emscripten_bind_btConeShapeX__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConeShapeX__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConeShapeX__localGetSupportingVertex_p1"]; +var _emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btRaycastVehicle__setSteeringValue_p2 = Module["_emscripten_bind_btRaycastVehicle__setSteeringValue_p2"] = asm["_emscripten_bind_btRaycastVehicle__setSteeringValue_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2"]; +var _emscripten_bind_btConeShape__getHeight_p0 = Module["_emscripten_bind_btConeShape__getHeight_p0"] = asm["_emscripten_bind_btConeShape__getHeight_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getPlane_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getPlane_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getPlane_p3"]; +var _emscripten_bind_btVector3__setY_p1 = Module["_emscripten_bind_btVector3__setY_p1"] = asm["_emscripten_bind_btVector3__setY_p1"]; +var _emscripten_bind_bt32BitAxisSweep3__rayTest_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__rayTest_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__rayTest_p3"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1"]; +var _emscripten_bind_btConvexShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexShape__setUserPointer_p1"]; +var _emscripten_bind_btConeShapeZ____destroy___p0 = Module["_emscripten_bind_btConeShapeZ____destroy___p0"] = asm["_emscripten_bind_btConeShapeZ____destroy___p0"]; +var _emscripten_bind_btConeShapeX__serializeSingleShape_p1 = Module["_emscripten_bind_btConeShapeX__serializeSingleShape_p1"] = asm["_emscripten_bind_btConeShapeX__serializeSingleShape_p1"]; +var _emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0"]; +var _emscripten_bind_btQuadWord__setX_p1 = Module["_emscripten_bind_btQuadWord__setX_p1"] = asm["_emscripten_bind_btQuadWord__setX_p1"]; +var _emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0"]; +var _emscripten_bind_btPersistentManifold__btPersistentManifold_p0 = Module["_emscripten_bind_btPersistentManifold__btPersistentManifold_p0"] = asm["_emscripten_bind_btPersistentManifold__btPersistentManifold_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1"]; +var _emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0"]; +var _emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0 = Module["_emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0"]; +var _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2 = Module["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2"] = asm["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2"]; +var _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1 = Module["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1"] = asm["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1"]; +var _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0 = Module["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0"] = asm["_emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0"]; +var _emscripten_bind_btAxisSweep3__resetPool_p1 = Module["_emscripten_bind_btAxisSweep3__resetPool_p1"] = asm["_emscripten_bind_btAxisSweep3__resetPool_p1"]; +var _emscripten_bind_btOptimizedBvh__isQuantized_p0 = Module["_emscripten_bind_btOptimizedBvh__isQuantized_p0"] = asm["_emscripten_bind_btOptimizedBvh__isQuantized_p0"]; +var _emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btVector4__setMax_p1 = Module["_emscripten_bind_btVector4__setMax_p1"] = asm["_emscripten_bind_btVector4__setMax_p1"]; +var _emscripten_bind_btConeShapeZ__getName_p0 = Module["_emscripten_bind_btConeShapeZ__getName_p0"] = asm["_emscripten_bind_btConeShapeZ__getName_p0"]; +var _emscripten_bind_btActionInterface__debugDraw_p1 = Module["_emscripten_bind_btActionInterface__debugDraw_p1"] = asm["_emscripten_bind_btActionInterface__debugDraw_p1"]; +var _emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btTransform__mult_p2 = Module["_emscripten_bind_btTransform__mult_p2"] = asm["_emscripten_bind_btTransform__mult_p2"]; +var _emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1 = Module["_emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1"] = asm["_emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1"]; +var _emscripten_bind_btGhostObject__setContactProcessingThreshold_p1 = Module["_emscripten_bind_btGhostObject__setContactProcessingThreshold_p1"] = asm["_emscripten_bind_btGhostObject__setContactProcessingThreshold_p1"]; +var _emscripten_bind_btVector3__btVector3_p0 = Module["_emscripten_bind_btVector3__btVector3_p0"] = asm["_emscripten_bind_btVector3__btVector3_p0"]; +var _emscripten_bind_btConeShapeX__getLocalScaling_p0 = Module["_emscripten_bind_btConeShapeX__getLocalScaling_p0"] = asm["_emscripten_bind_btConeShapeX__getLocalScaling_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2"]; +var _emscripten_bind_btBU_Simplex1to4__getNumEdges_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getNumEdges_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getNumEdges_p0"]; +var _emscripten_bind_btCollisionShape__getName_p0 = Module["_emscripten_bind_btCollisionShape__getName_p0"] = asm["_emscripten_bind_btCollisionShape__getName_p0"]; +var _emscripten_bind_btSliderConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btSliderConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btSliderConstraint__getUserConstraintType_p0"]; +var _emscripten_bind_btCylinderShapeZ__getAabb_p3 = Module["_emscripten_bind_btCylinderShapeZ__getAabb_p3"] = asm["_emscripten_bind_btCylinderShapeZ__getAabb_p3"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0"]; +var _emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0 = Module["_emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0"] = asm["_emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0"]; +var _emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0"]; +var _emscripten_bind_btCylinderShapeX__getMarginNV_p0 = Module["_emscripten_bind_btCylinderShapeX__getMarginNV_p0"] = asm["_emscripten_bind_btCylinderShapeX__getMarginNV_p0"]; +var _emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1 = Module["_emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1"] = asm["_emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1"]; +var _emscripten_bind_btEmptyShape__getName_p0 = Module["_emscripten_bind_btEmptyShape__getName_p0"] = asm["_emscripten_bind_btEmptyShape__getName_p0"]; +var _emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2 = Module["_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2"] = asm["_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2"]; +var _emscripten_bind_btHingeConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btHingeConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btHingeConstraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1"]; +var _emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1 = Module["_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1"]; +var _emscripten_bind_btDbvtBroadphase__get_m_pid_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_pid_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_pid_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1"]; +var _emscripten_bind_btRigidBody__getPushVelocity_p0 = Module["_emscripten_bind_btRigidBody__getPushVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getPushVelocity_p0"]; +var _emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btConeShapeX__isConcave_p0 = Module["_emscripten_bind_btConeShapeX__isConcave_p0"] = asm["_emscripten_bind_btConeShapeX__isConcave_p0"]; +var _emscripten_bind_btBoxShape__isCompound_p0 = Module["_emscripten_bind_btBoxShape__isCompound_p0"] = asm["_emscripten_bind_btBoxShape__isCompound_p0"]; +var _emscripten_bind_btDbvtBroadphase__set_m_pid_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_pid_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_pid_p1"]; +var _emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2"]; +var _emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0"]; +var _emscripten_bind_btHashPtr__equals_p1 = Module["_emscripten_bind_btHashPtr__equals_p1"] = asm["_emscripten_bind_btHashPtr__equals_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy____destroy___p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy____destroy___p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy____destroy___p0"]; +var _emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1 = Module["_emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1"] = asm["_emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1"]; +var _emscripten_bind_btConvexInternalShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexInternalShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexInternalShape__isConvex2d_p0"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0"]; +var _emscripten_bind_btConeShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConeShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConeShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1"]; +var _emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3"]; +var _emscripten_bind_btDbvtProxy__isNonMoving_p1 = Module["_emscripten_bind_btDbvtProxy__isNonMoving_p1"] = asm["_emscripten_bind_btDbvtProxy__isNonMoving_p1"]; +var _emscripten_bind_btCollisionShape__getLocalScaling_p0 = Module["_emscripten_bind_btCollisionShape__getLocalScaling_p0"] = asm["_emscripten_bind_btCollisionShape__getLocalScaling_p0"]; +var _emscripten_bind_btQuadWord__x_p0 = Module["_emscripten_bind_btQuadWord__x_p0"] = asm["_emscripten_bind_btQuadWord__x_p0"]; +var _emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0 = Module["_emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0"]; +var _emscripten_bind_btConstraintSolver__reset_p0 = Module["_emscripten_bind_btConstraintSolver__reset_p0"] = asm["_emscripten_bind_btConstraintSolver__reset_p0"]; +var _emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3 = Module["_emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3"] = asm["_emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3"]; +var _emscripten_bind_btBvhTriangleMeshShape__refitTree_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__refitTree_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__refitTree_p2"]; +var _emscripten_bind_btCylinderShapeX__serialize_p2 = Module["_emscripten_bind_btCylinderShapeX__serialize_p2"] = asm["_emscripten_bind_btCylinderShapeX__serialize_p2"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1"]; +var _emscripten_bind_bt32BitAxisSweep3__unQuantize_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__unQuantize_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__unQuantize_p3"]; +var _emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0"]; +var _emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1"]; +var _emscripten_bind_btEmptyShape____destroy___p0 = Module["_emscripten_bind_btEmptyShape____destroy___p0"] = asm["_emscripten_bind_btEmptyShape____destroy___p0"]; +var _emscripten_bind_btContactConstraint____destroy___p0 = Module["_emscripten_bind_btContactConstraint____destroy___p0"] = asm["_emscripten_bind_btContactConstraint____destroy___p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1"]; +var _emscripten_bind_btTriangleMesh__getUse32bitIndices_p0 = Module["_emscripten_bind_btTriangleMesh__getUse32bitIndices_p0"] = asm["_emscripten_bind_btTriangleMesh__getUse32bitIndices_p0"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0"]; +var _emscripten_bind_btDispatcherInfo__set_m_useEpa_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_useEpa_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_useEpa_p1"]; +var _emscripten_bind_btJacobianEntry__btJacobianEntry_p6 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p6"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p6"]; +var _emscripten_bind_btDispatcherInfo__get_m_useEpa_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_useEpa_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_useEpa_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getName_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getName_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getName_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2"]; +var _emscripten_bind_btSliderConstraint__enableFeedback_p1 = Module["_emscripten_bind_btSliderConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btSliderConstraint__enableFeedback_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0"]; +var _emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getInfo1_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getInfo1_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getInfo1_p1"]; +var _emscripten_bind_btJacobianEntry__btJacobianEntry_p4 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p4"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p4"]; +var _emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0"]; +var _emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0"]; +var _emscripten_bind_btConeShapeZ__isCompound_p0 = Module["_emscripten_bind_btConeShapeZ__isCompound_p0"] = asm["_emscripten_bind_btConeShapeZ__isCompound_p0"]; +var _emscripten_bind_btConeShape__getName_p0 = Module["_emscripten_bind_btConeShape__getName_p0"] = asm["_emscripten_bind_btConeShape__getName_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3"]; +var _emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0 = Module["_emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0"]; +var _emscripten_bind_btMatrix3x3__deSerialize_p1 = Module["_emscripten_bind_btMatrix3x3__deSerialize_p1"] = asm["_emscripten_bind_btMatrix3x3__deSerialize_p1"]; +var _emscripten_bind_btJacobianEntry__btJacobianEntry_p9 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p9"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p9"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0"]; +var _emscripten_bind_btTransform__setFromOpenGLMatrix_p1 = Module["_emscripten_bind_btTransform__setFromOpenGLMatrix_p1"] = asm["_emscripten_bind_btTransform__setFromOpenGLMatrix_p1"]; +var _emscripten_bind_btRigidBody__updateInertiaTensor_p0 = Module["_emscripten_bind_btRigidBody__updateInertiaTensor_p0"] = asm["_emscripten_bind_btRigidBody__updateInertiaTensor_p0"]; +var _emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btEmptyShape__getBoundingSphere_p2 = Module["_emscripten_bind_btEmptyShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btEmptyShape__getBoundingSphere_p2"]; +var _emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0"]; +var _emscripten_bind_btTypedConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btTypedConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btTypedConstraint__set_m_objectType_p1"]; +var _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2 = Module["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2"] = asm["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2"]; +var _emscripten_bind_btJacobianEntry__getNonDiagonal_p3 = Module["_emscripten_bind_btJacobianEntry__getNonDiagonal_p3"] = asm["_emscripten_bind_btJacobianEntry__getNonDiagonal_p3"]; +var _emscripten_bind_btJacobianEntry__getNonDiagonal_p2 = Module["_emscripten_bind_btJacobianEntry__getNonDiagonal_p2"] = asm["_emscripten_bind_btJacobianEntry__getNonDiagonal_p2"]; +var _emscripten_bind_btMultiSphereShape__getShapeType_p0 = Module["_emscripten_bind_btMultiSphereShape__getShapeType_p0"] = asm["_emscripten_bind_btMultiSphereShape__getShapeType_p0"]; +var _emscripten_bind_btMultiSphereShape__getUserPointer_p0 = Module["_emscripten_bind_btMultiSphereShape__getUserPointer_p0"] = asm["_emscripten_bind_btMultiSphereShape__getUserPointer_p0"]; +var _emscripten_bind_btRigidBody__setAnisotropicFriction_p1 = Module["_emscripten_bind_btRigidBody__setAnisotropicFriction_p1"] = asm["_emscripten_bind_btRigidBody__setAnisotropicFriction_p1"]; +var _emscripten_bind_btStackAlloc__btStackAlloc_p1 = Module["_emscripten_bind_btStackAlloc__btStackAlloc_p1"] = asm["_emscripten_bind_btStackAlloc__btStackAlloc_p1"]; +var _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0 = Module["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0"] = asm["_emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0"]; +var _emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1 = Module["_emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1"]; +var _emscripten_bind_btConeTwistConstraint__getUid_p0 = Module["_emscripten_bind_btConeTwistConstraint__getUid_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getUid_p0"]; +var _emscripten_bind_btCylinderShapeZ__isInfinite_p0 = Module["_emscripten_bind_btCylinderShapeZ__isInfinite_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isInfinite_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3 = Module["_emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3"] = asm["_emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3"]; +var _emscripten_bind_btSliderConstraint__setEnabled_p1 = Module["_emscripten_bind_btSliderConstraint__setEnabled_p1"] = asm["_emscripten_bind_btSliderConstraint__setEnabled_p1"]; +var _emscripten_bind_btSphereShape__setLocalScaling_p1 = Module["_emscripten_bind_btSphereShape__setLocalScaling_p1"] = asm["_emscripten_bind_btSphereShape__setLocalScaling_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btPersistentManifold__get_m_objectType_p0 = Module["_emscripten_bind_btPersistentManifold__get_m_objectType_p0"] = asm["_emscripten_bind_btPersistentManifold__get_m_objectType_p0"]; +var _emscripten_bind_btCapsuleShapeX__getMargin_p0 = Module["_emscripten_bind_btCapsuleShapeX__getMargin_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getMargin_p0"]; +var _emscripten_bind_btSliderConstraint__setUpperAngLimit_p1 = Module["_emscripten_bind_btSliderConstraint__setUpperAngLimit_p1"] = asm["_emscripten_bind_btSliderConstraint__setUpperAngLimit_p1"]; +var _emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1"]; +var _emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1"]; +var _emscripten_bind_btBU_Simplex1to4__reset_p0 = Module["_emscripten_bind_btBU_Simplex1to4__reset_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__reset_p0"]; +var _emscripten_bind_btHingeConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btHingeConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btHingeConstraint__setUserConstraintType_p1"]; +var _emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1 = Module["_emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2"]; +var _emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btConcaveShape__isCompound_p0 = Module["_emscripten_bind_btConcaveShape__isCompound_p0"] = asm["_emscripten_bind_btConcaveShape__isCompound_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__getScaling_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__getScaling_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getScaling_p0"]; +var _emscripten_bind_btJacobianEntry__get_m_Adiag_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_Adiag_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_Adiag_p0"]; +var _emscripten_bind_btGhostPairCallback____destroy___p0 = Module["_emscripten_bind_btGhostPairCallback____destroy___p0"] = asm["_emscripten_bind_btGhostPairCallback____destroy___p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1"]; +var _emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btHingeConstraint__enableFeedback_p1 = Module["_emscripten_bind_btHingeConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btHingeConstraint__enableFeedback_p1"]; +var _emscripten_bind_btUniversalConstraint__serialize_p2 = Module["_emscripten_bind_btUniversalConstraint__serialize_p2"] = asm["_emscripten_bind_btUniversalConstraint__serialize_p2"]; +var _emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btStorageResult__get_m_closestPointInB_p0 = Module["_emscripten_bind_btStorageResult__get_m_closestPointInB_p0"] = asm["_emscripten_bind_btStorageResult__get_m_closestPointInB_p0"]; +var _emscripten_bind_btCylinderShape__isPolyhedral_p0 = Module["_emscripten_bind_btCylinderShape__isPolyhedral_p0"] = asm["_emscripten_bind_btCylinderShape__isPolyhedral_p0"]; +var _emscripten_bind_btConeShape__getMarginNV_p0 = Module["_emscripten_bind_btConeShape__getMarginNV_p0"] = asm["_emscripten_bind_btConeShape__getMarginNV_p0"]; +var _emscripten_bind_btConeShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConeShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConeShape__getBoundingSphere_p2"]; +var _emscripten_bind_btHinge2Constraint__calculateTransforms_p0 = Module["_emscripten_bind_btHinge2Constraint__calculateTransforms_p0"] = asm["_emscripten_bind_btHinge2Constraint__calculateTransforms_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__serialize_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__serialize_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__serialize_p2"]; +var _emscripten_bind_btStackAlloc____destroy___p0 = Module["_emscripten_bind_btStackAlloc____destroy___p0"] = asm["_emscripten_bind_btStackAlloc____destroy___p0"]; +var _emscripten_bind_btUniversalConstraint__enableFeedback_p1 = Module["_emscripten_bind_btUniversalConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btUniversalConstraint__enableFeedback_p1"]; +var _emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0"]; +var _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2 = Module["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2"] = asm["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2"]; +var _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1 = Module["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1"] = asm["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1"]; +var _emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1 = Module["_emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1"] = asm["_emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1"]; +var _emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0 = Module["_emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0"] = asm["_emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0"]; +var _emscripten_bind_btDbvtBroadphase____destroy___p0 = Module["_emscripten_bind_btDbvtBroadphase____destroy___p0"] = asm["_emscripten_bind_btDbvtBroadphase____destroy___p0"]; +var _emscripten_bind_btTriangleMesh__serialize_p2 = Module["_emscripten_bind_btTriangleMesh__serialize_p2"] = asm["_emscripten_bind_btTriangleMesh__serialize_p2"]; +var _emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1"]; +var _emscripten_bind_btHinge2Constraint__getConstraintType_p0 = Module["_emscripten_bind_btHinge2Constraint__getConstraintType_p0"] = asm["_emscripten_bind_btHinge2Constraint__getConstraintType_p0"]; +var _emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btMultiSphereShape__getMargin_p0 = Module["_emscripten_bind_btMultiSphereShape__getMargin_p0"] = asm["_emscripten_bind_btMultiSphereShape__getMargin_p0"]; +var _emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1"]; +var _emscripten_bind_btSliderConstraint__btSliderConstraint_p5 = Module["_emscripten_bind_btSliderConstraint__btSliderConstraint_p5"] = asm["_emscripten_bind_btSliderConstraint__btSliderConstraint_p5"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0"]; +var _emscripten_bind_btDynamicsWorld__addCharacter_p1 = Module["_emscripten_bind_btDynamicsWorld__addCharacter_p1"] = asm["_emscripten_bind_btDynamicsWorld__addCharacter_p1"]; +var _emscripten_bind_btCollisionObject__activate_p0 = Module["_emscripten_bind_btCollisionObject__activate_p0"] = asm["_emscripten_bind_btCollisionObject__activate_p0"]; +var _emscripten_bind_btCollisionObject__activate_p1 = Module["_emscripten_bind_btCollisionObject__activate_p1"] = asm["_emscripten_bind_btCollisionObject__activate_p1"]; +var _emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0"]; +var _emscripten_bind_btMatrix3x3__diagonalize_p3 = Module["_emscripten_bind_btMatrix3x3__diagonalize_p3"] = asm["_emscripten_bind_btMatrix3x3__diagonalize_p3"]; +var _emscripten_bind_btCapsuleShape__getShapeType_p0 = Module["_emscripten_bind_btCapsuleShape__getShapeType_p0"] = asm["_emscripten_bind_btCapsuleShape__getShapeType_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7 = Module["_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7"] = asm["_emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7"]; +var _emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0"]; +var _emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btConeShapeX__isConvex2d_p0 = Module["_emscripten_bind_btConeShapeX__isConvex2d_p0"] = asm["_emscripten_bind_btConeShapeX__isConvex2d_p0"]; +var _emscripten_bind_btRaycastVehicle__getRigidBody_p0 = Module["_emscripten_bind_btRaycastVehicle__getRigidBody_p0"] = asm["_emscripten_bind_btRaycastVehicle__getRigidBody_p0"]; +var _emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btDbvtProxy__get_m_aabbMin_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_aabbMin_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_aabbMin_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0"]; +var _emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btSliderConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btSliderConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btSliderConstraint__getRigidBodyA_p0"]; +var _emscripten_bind_btStaticPlaneShape__getAabb_p3 = Module["_emscripten_bind_btStaticPlaneShape__getAabb_p3"] = asm["_emscripten_bind_btStaticPlaneShape__getAabb_p3"]; +var _emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_CProfileNode____destroy___p0 = Module["_emscripten_bind_CProfileNode____destroy___p0"] = asm["_emscripten_bind_CProfileNode____destroy___p0"]; +var _emscripten_bind_btConvexHullShape__getNumPoints_p0 = Module["_emscripten_bind_btConvexHullShape__getNumPoints_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumPoints_p0"]; +var _emscripten_bind_btConeShape__isCompound_p0 = Module["_emscripten_bind_btConeShape__isCompound_p0"] = asm["_emscripten_bind_btConeShape__isCompound_p0"]; +var _emscripten_bind_btMatrix3x3__getColumn_p1 = Module["_emscripten_bind_btMatrix3x3__getColumn_p1"] = asm["_emscripten_bind_btMatrix3x3__getColumn_p1"]; +var _emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0"]; +var _emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0"]; +var _emscripten_bind_btIDebugDraw__drawBox_p4 = Module["_emscripten_bind_btIDebugDraw__drawBox_p4"] = asm["_emscripten_bind_btIDebugDraw__drawBox_p4"]; +var _emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1"]; +var _emscripten_bind_btIDebugDraw__drawBox_p3 = Module["_emscripten_bind_btIDebugDraw__drawBox_p3"] = asm["_emscripten_bind_btIDebugDraw__drawBox_p3"]; +var _emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2 = Module["_emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2"] = asm["_emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0"]; +var _emscripten_bind_btConstraintSolver__solveGroup_p10 = Module["_emscripten_bind_btConstraintSolver__solveGroup_p10"] = asm["_emscripten_bind_btConstraintSolver__solveGroup_p10"]; +var _emscripten_bind_btHinge2Constraint__setUserConstraintType_p1 = Module["_emscripten_bind_btHinge2Constraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUserConstraintType_p1"]; +var _emscripten_bind_btMatrix3x3____destroy___p0 = Module["_emscripten_bind_btMatrix3x3____destroy___p0"] = asm["_emscripten_bind_btMatrix3x3____destroy___p0"]; +var _emscripten_bind_btCollisionWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btCollisionWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btCollisionWorld__getDebugDrawer_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3"]; +var _emscripten_bind_btConeShapeZ__isConvex_p0 = Module["_emscripten_bind_btConeShapeZ__isConvex_p0"] = asm["_emscripten_bind_btConeShapeZ__isConvex_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getFriction_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getFriction_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getFriction_p0"]; +var _emscripten_bind_btRigidBody__serializeSingleObject_p1 = Module["_emscripten_bind_btRigidBody__serializeSingleObject_p1"] = asm["_emscripten_bind_btRigidBody__serializeSingleObject_p1"]; +var _emscripten_bind_btOptimizedBvh__updateBvhNodes_p4 = Module["_emscripten_bind_btOptimizedBvh__updateBvhNodes_p4"] = asm["_emscripten_bind_btOptimizedBvh__updateBvhNodes_p4"]; +var _emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0"]; +var _emscripten_bind_btSphereShape__isPolyhedral_p0 = Module["_emscripten_bind_btSphereShape__isPolyhedral_p0"] = asm["_emscripten_bind_btSphereShape__isPolyhedral_p0"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0"]; +var _emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4"]; +var _emscripten_bind_btRigidBody__saveKinematicState_p1 = Module["_emscripten_bind_btRigidBody__saveKinematicState_p1"] = asm["_emscripten_bind_btRigidBody__saveKinematicState_p1"]; +var _emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1"]; +var _emscripten_bind_btCollisionObject____destroy___p0 = Module["_emscripten_bind_btCollisionObject____destroy___p0"] = asm["_emscripten_bind_btCollisionObject____destroy___p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8 = Module["_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8"]; +var _emscripten_bind_btWheelInfo__set_m_steering_p1 = Module["_emscripten_bind_btWheelInfo__set_m_steering_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_steering_p1"]; +var _emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0"]; +var _emscripten_bind_btConvexInternalShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexInternalShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexInternalShape__setUserPointer_p1"]; +var _emscripten_bind_btGhostObject__getCompanionId_p0 = Module["_emscripten_bind_btGhostObject__getCompanionId_p0"] = asm["_emscripten_bind_btGhostObject__getCompanionId_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0"]; +var _emscripten_bind_btTransform__getIdentity_p0 = Module["_emscripten_bind_btTransform__getIdentity_p0"] = asm["_emscripten_bind_btTransform__getIdentity_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1 = Module["_emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1"] = asm["_emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__isCompound_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isCompound_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isCompound_p0"]; +var _emscripten_bind_btCompoundShape__btCompoundShape_p1 = Module["_emscripten_bind_btCompoundShape__btCompoundShape_p1"] = asm["_emscripten_bind_btCompoundShape__btCompoundShape_p1"]; +var _emscripten_bind_btCompoundShape__btCompoundShape_p0 = Module["_emscripten_bind_btCompoundShape__btCompoundShape_p0"] = asm["_emscripten_bind_btCompoundShape__btCompoundShape_p0"]; +var _emscripten_bind_btPairCachingGhostObject__setHitFraction_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setHitFraction_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setHitFraction_p1"]; +var _emscripten_bind_btCollisionObject__getWorldTransform_p0 = Module["_emscripten_bind_btCollisionObject__getWorldTransform_p0"] = asm["_emscripten_bind_btCollisionObject__getWorldTransform_p0"]; +var _emscripten_bind_btContactConstraint__setParam_p3 = Module["_emscripten_bind_btContactConstraint__setParam_p3"] = asm["_emscripten_bind_btContactConstraint__setParam_p3"]; +var _emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0"]; +var _emscripten_bind_btCylinderShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btCylinderShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCylinderShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btTransform__serialize_p1 = Module["_emscripten_bind_btTransform__serialize_p1"] = asm["_emscripten_bind_btTransform__serialize_p1"]; +var _emscripten_bind_btStorageResult__get_m_distance_p0 = Module["_emscripten_bind_btStorageResult__get_m_distance_p0"] = asm["_emscripten_bind_btStorageResult__get_m_distance_p0"]; +var _emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0 = Module["_emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0"] = asm["_emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0"]; +var _emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btIndexedMesh__get_m_numVertices_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_numVertices_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_numVertices_p0"]; +var _emscripten_bind_btMultiSphereShape__setMargin_p1 = Module["_emscripten_bind_btMultiSphereShape__setMargin_p1"] = asm["_emscripten_bind_btMultiSphereShape__setMargin_p1"]; +var _emscripten_bind_btBoxShape__isSoftBody_p0 = Module["_emscripten_bind_btBoxShape__isSoftBody_p0"] = asm["_emscripten_bind_btBoxShape__isSoftBody_p0"]; +var _emscripten_bind_btDbvtProxy__isCompound_p1 = Module["_emscripten_bind_btDbvtProxy__isCompound_p1"] = asm["_emscripten_bind_btDbvtProxy__isCompound_p1"]; +var _emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btEmptyShape__isConvex_p0 = Module["_emscripten_bind_btEmptyShape__isConvex_p0"] = asm["_emscripten_bind_btEmptyShape__isConvex_p0"]; +var _emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btHingeConstraint__setAngularOnly_p1 = Module["_emscripten_bind_btHingeConstraint__setAngularOnly_p1"] = asm["_emscripten_bind_btHingeConstraint__setAngularOnly_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9 = Module["_emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9"] = asm["_emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9"]; +var _emscripten_bind_btCapsuleShapeX__getAabbSlow_p3 = Module["_emscripten_bind_btCapsuleShapeX__getAabbSlow_p3"] = asm["_emscripten_bind_btCapsuleShapeX__getAabbSlow_p3"]; +var _emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0"]; +var _emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3 = Module["_emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3"] = asm["_emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3"]; +var _emscripten_bind_btCapsuleShapeX__isPolyhedral_p0 = Module["_emscripten_bind_btCapsuleShapeX__isPolyhedral_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isPolyhedral_p0"]; +var _emscripten_bind_btVector4__z_p0 = Module["_emscripten_bind_btVector4__z_p0"] = asm["_emscripten_bind_btVector4__z_p0"]; +var _emscripten_bind_btRigidBody__getUserPointer_p0 = Module["_emscripten_bind_btRigidBody__getUserPointer_p0"] = asm["_emscripten_bind_btRigidBody__getUserPointer_p0"]; +var _emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0 = Module["_emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0"] = asm["_emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0"]; +var _emscripten_bind_btDbvtBroadphase__set_m_paircache_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_paircache_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_paircache_p1"]; +var _emscripten_bind_btHinge2Constraint__setDamping_p2 = Module["_emscripten_bind_btHinge2Constraint__setDamping_p2"] = asm["_emscripten_bind_btHinge2Constraint__setDamping_p2"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2"]; +var _emscripten_bind_btConvexHullShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexHullShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexHullShape__getBoundingSphere_p2"]; +var _emscripten_bind_btContactConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btContactConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btContactConstraint__getUserConstraintId_p0"]; +var _emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btConeTwistConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btConeTwistConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btConeTwistConstraint__get_m_objectType_p0"]; +var _emscripten_bind_btMultiSphereShape__getMarginNV_p0 = Module["_emscripten_bind_btMultiSphereShape__getMarginNV_p0"] = asm["_emscripten_bind_btMultiSphereShape__getMarginNV_p0"]; +var _emscripten_bind_btRaycastVehicle__rayCast_p1 = Module["_emscripten_bind_btRaycastVehicle__rayCast_p1"] = asm["_emscripten_bind_btRaycastVehicle__rayCast_p1"]; +var _emscripten_bind_btConvexHullShape__isConcave_p0 = Module["_emscripten_bind_btConvexHullShape__isConcave_p0"] = asm["_emscripten_bind_btConvexHullShape__isConcave_p0"]; +var _emscripten_bind_btCollisionObject__getAnisotropicFriction_p0 = Module["_emscripten_bind_btCollisionObject__getAnisotropicFriction_p0"] = asm["_emscripten_bind_btCollisionObject__getAnisotropicFriction_p0"]; +var _emscripten_bind_btSimpleBroadphase____destroy___p0 = Module["_emscripten_bind_btSimpleBroadphase____destroy___p0"] = asm["_emscripten_bind_btSimpleBroadphase____destroy___p0"]; +var _emscripten_bind_btCapsuleShape__btCapsuleShape_p2 = Module["_emscripten_bind_btCapsuleShape__btCapsuleShape_p2"] = asm["_emscripten_bind_btCapsuleShape__btCapsuleShape_p2"]; +var _emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1"]; +var _emscripten_bind_btConvexHullShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexHullShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexHullShape__getLocalScaling_p0"]; +var _emscripten_bind_btVector4__x_p0 = Module["_emscripten_bind_btVector4__x_p0"] = asm["_emscripten_bind_btVector4__x_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1"]; +var _emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1 = Module["_emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1"] = asm["_emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1"]; +var _emscripten_bind_btMultiSphereShape__isConvex2d_p0 = Module["_emscripten_bind_btMultiSphereShape__isConvex2d_p0"] = asm["_emscripten_bind_btMultiSphereShape__isConvex2d_p0"]; +var _emscripten_bind_btCylinderShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCylinderShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCylinderShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btRigidBody__isActive_p0 = Module["_emscripten_bind_btRigidBody__isActive_p0"] = asm["_emscripten_bind_btRigidBody__isActive_p0"]; +var _emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0 = Module["_emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0"] = asm["_emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1"]; +var _emscripten_bind_btRaycastVehicle__getRightAxis_p0 = Module["_emscripten_bind_btRaycastVehicle__getRightAxis_p0"] = asm["_emscripten_bind_btRaycastVehicle__getRightAxis_p0"]; +var _emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btDispatcherInfo__set_m_timeStep_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_timeStep_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_timeStep_p1"]; +var _emscripten_bind_btGhostObject__getNumOverlappingObjects_p0 = Module["_emscripten_bind_btGhostObject__getNumOverlappingObjects_p0"] = asm["_emscripten_bind_btGhostObject__getNumOverlappingObjects_p0"]; +var _emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btUniversalConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btUniversalConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btUniversalConstraint__set_m_objectType_p1"]; +var _emscripten_bind_btContactConstraint__getInfo2_p1 = Module["_emscripten_bind_btContactConstraint__getInfo2_p1"] = asm["_emscripten_bind_btContactConstraint__getInfo2_p1"]; +var _emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getIslandTag_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getIslandTag_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getIslandTag_p0"]; +var _emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0"]; +var _emscripten_bind_btRigidBody__setContactProcessingThreshold_p1 = Module["_emscripten_bind_btRigidBody__setContactProcessingThreshold_p1"] = asm["_emscripten_bind_btRigidBody__setContactProcessingThreshold_p1"]; +var _emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btRigidBody__getAngularDamping_p0 = Module["_emscripten_bind_btRigidBody__getAngularDamping_p0"] = asm["_emscripten_bind_btRigidBody__getAngularDamping_p0"]; +var _emscripten_bind_btConcaveShape__getUserPointer_p0 = Module["_emscripten_bind_btConcaveShape__getUserPointer_p0"] = asm["_emscripten_bind_btConcaveShape__getUserPointer_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3"]; +var _memset = Module["_memset"] = asm["_memset"]; +var _emscripten_bind_btHinge2Constraint__getAngle_p1 = Module["_emscripten_bind_btHinge2Constraint__getAngle_p1"] = asm["_emscripten_bind_btHinge2Constraint__getAngle_p1"]; +var _emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0"]; +var _emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0 = Module["_emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2"]; +var _emscripten_bind_btTypedConstraint__isEnabled_p0 = Module["_emscripten_bind_btTypedConstraint__isEnabled_p0"] = asm["_emscripten_bind_btTypedConstraint__isEnabled_p0"]; +var _emscripten_bind_btVector4__cross_p1 = Module["_emscripten_bind_btVector4__cross_p1"] = asm["_emscripten_bind_btVector4__cross_p1"]; +var _emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0"]; +var _emscripten_bind_btCapsuleShapeZ__isConvex_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isConvex_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isConvex_p0"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0"]; +var _emscripten_bind_btPairCachingGhostObject__serialize_p2 = Module["_emscripten_bind_btPairCachingGhostObject__serialize_p2"] = asm["_emscripten_bind_btPairCachingGhostObject__serialize_p2"]; +var _emscripten_bind_btCylinderShapeX__isInfinite_p0 = Module["_emscripten_bind_btCylinderShapeX__isInfinite_p0"] = asm["_emscripten_bind_btCylinderShapeX__isInfinite_p0"]; +var _emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0 = Module["_emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0"]; +var _emscripten_bind_btGhostObject__setFriction_p1 = Module["_emscripten_bind_btGhostObject__setFriction_p1"] = asm["_emscripten_bind_btGhostObject__setFriction_p1"]; +var _emscripten_bind_btCylinderShape__serializeSingleShape_p1 = Module["_emscripten_bind_btCylinderShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btCylinderShape__serializeSingleShape_p1"]; +var _emscripten_bind_btWheelInfo__set_m_skidInfo_p1 = Module["_emscripten_bind_btWheelInfo__set_m_skidInfo_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_skidInfo_p1"]; +var _emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1 = Module["_emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1"] = asm["_emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0"]; +var _emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1 = Module["_emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1"] = asm["_emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1"]; +var _emscripten_bind_btBroadphaseInterface__destroyProxy_p2 = Module["_emscripten_bind_btBroadphaseInterface__destroyProxy_p2"] = asm["_emscripten_bind_btBroadphaseInterface__destroyProxy_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2"]; +var _emscripten_bind_btConeShapeX__getShapeType_p0 = Module["_emscripten_bind_btConeShapeX__getShapeType_p0"] = asm["_emscripten_bind_btConeShapeX__getShapeType_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2"]; +var _emscripten_bind_btTriangleMesh__getPremadeAabb_p2 = Module["_emscripten_bind_btTriangleMesh__getPremadeAabb_p2"] = asm["_emscripten_bind_btTriangleMesh__getPremadeAabb_p2"]; +var _emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0"]; +var _emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0"]; +var _emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2 = Module["_emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2"]; +var _emscripten_bind_btTypedConstraint__setParam_p2 = Module["_emscripten_bind_btTypedConstraint__setParam_p2"] = asm["_emscripten_bind_btTypedConstraint__setParam_p2"]; +var _emscripten_bind_btTypedConstraint__setParam_p3 = Module["_emscripten_bind_btTypedConstraint__setParam_p3"] = asm["_emscripten_bind_btTypedConstraint__setParam_p3"]; +var _emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1 = Module["_emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1"] = asm["_emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1"]; +var _emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0"]; +var _emscripten_bind_btCompoundShape____destroy___p0 = Module["_emscripten_bind_btCompoundShape____destroy___p0"] = asm["_emscripten_bind_btCompoundShape____destroy___p0"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0"]; +var _emscripten_bind_btHashString__get_m_string_p0 = Module["_emscripten_bind_btHashString__get_m_string_p0"] = asm["_emscripten_bind_btHashString__get_m_string_p0"]; +var _emscripten_bind_btQuadWord__btQuadWord_p0 = Module["_emscripten_bind_btQuadWord__btQuadWord_p0"] = asm["_emscripten_bind_btQuadWord__btQuadWord_p0"]; +var _emscripten_bind_btTransform__setRotation_p1 = Module["_emscripten_bind_btTransform__setRotation_p1"] = asm["_emscripten_bind_btTransform__setRotation_p1"]; +var _emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1"]; +var _emscripten_bind_btRigidBody__get_m_frictionSolverType_p0 = Module["_emscripten_bind_btRigidBody__get_m_frictionSolverType_p0"] = asm["_emscripten_bind_btRigidBody__get_m_frictionSolverType_p0"]; +var _emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1"]; +var _emscripten_bind_btBroadphaseProxy____destroy___p0 = Module["_emscripten_bind_btBroadphaseProxy____destroy___p0"] = asm["_emscripten_bind_btBroadphaseProxy____destroy___p0"]; +var _emscripten_bind_btDbvtProxy__isInfinite_p1 = Module["_emscripten_bind_btDbvtProxy__isInfinite_p1"] = asm["_emscripten_bind_btDbvtProxy__isInfinite_p1"]; +var _emscripten_bind_btCompoundShape__getUpdateRevision_p0 = Module["_emscripten_bind_btCompoundShape__getUpdateRevision_p0"] = asm["_emscripten_bind_btCompoundShape__getUpdateRevision_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0"]; +var _emscripten_bind_btVector3__deSerialize_p1 = Module["_emscripten_bind_btVector3__deSerialize_p1"] = asm["_emscripten_bind_btVector3__deSerialize_p1"]; +var _emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btHashString__getHash_p0 = Module["_emscripten_bind_btHashString__getHash_p0"] = asm["_emscripten_bind_btHashString__getHash_p0"]; +var _emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2 = Module["_emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2"] = asm["_emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2"]; +var _emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0"]; +var _emscripten_bind_btCapsuleShape__isConvex_p0 = Module["_emscripten_bind_btCapsuleShape__isConvex_p0"] = asm["_emscripten_bind_btCapsuleShape__isConvex_p0"]; +var _emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0"]; +var _emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2 = Module["_emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2"] = asm["_emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2"]; +var _emscripten_bind_btRigidBody__forceActivationState_p1 = Module["_emscripten_bind_btRigidBody__forceActivationState_p1"] = asm["_emscripten_bind_btRigidBody__forceActivationState_p1"]; +var _emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0"]; +var _emscripten_bind_btConeShapeX__isPolyhedral_p0 = Module["_emscripten_bind_btConeShapeX__isPolyhedral_p0"] = asm["_emscripten_bind_btConeShapeX__isPolyhedral_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1"]; +var _emscripten_bind_btVector3__absolute_p0 = Module["_emscripten_bind_btVector3__absolute_p0"] = asm["_emscripten_bind_btVector3__absolute_p0"]; +var _emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0 = Module["_emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btHingeConstraint__setLimit_p4 = Module["_emscripten_bind_btHingeConstraint__setLimit_p4"] = asm["_emscripten_bind_btHingeConstraint__setLimit_p4"]; +var _emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0"]; +var _emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btVector4__deSerializeDouble_p1 = Module["_emscripten_bind_btVector4__deSerializeDouble_p1"] = asm["_emscripten_bind_btVector4__deSerializeDouble_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2"]; +var _emscripten_bind_btDefaultMotionState__get_m_userPointer_p0 = Module["_emscripten_bind_btDefaultMotionState__get_m_userPointer_p0"] = asm["_emscripten_bind_btDefaultMotionState__get_m_userPointer_p0"]; +var _emscripten_bind_btSliderConstraint__getAncorInB_p0 = Module["_emscripten_bind_btSliderConstraint__getAncorInB_p0"] = asm["_emscripten_bind_btSliderConstraint__getAncorInB_p0"]; +var _emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btTransform__getOrigin_p0 = Module["_emscripten_bind_btTransform__getOrigin_p0"] = asm["_emscripten_bind_btTransform__getOrigin_p0"]; +var _emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0"]; +var _emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btTypedObject__get_m_objectType_p0 = Module["_emscripten_bind_btTypedObject__get_m_objectType_p0"] = asm["_emscripten_bind_btTypedObject__get_m_objectType_p0"]; +var _emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0"]; +var _emscripten_bind_btCompoundShape__getAabb_p3 = Module["_emscripten_bind_btCompoundShape__getAabb_p3"] = asm["_emscripten_bind_btCompoundShape__getAabb_p3"]; +var _emscripten_bind_btBroadphasePair__get_m_pProxy1_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_pProxy1_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_pProxy1_p0"]; +var _emscripten_bind_btRigidBody__getDeactivationTime_p0 = Module["_emscripten_bind_btRigidBody__getDeactivationTime_p0"] = asm["_emscripten_bind_btRigidBody__getDeactivationTime_p0"]; +var _emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btVector3__length_p0 = Module["_emscripten_bind_btVector3__length_p0"] = asm["_emscripten_bind_btVector3__length_p0"]; +var _emscripten_bind_btConstraintSolver__prepareSolve_p2 = Module["_emscripten_bind_btConstraintSolver__prepareSolve_p2"] = asm["_emscripten_bind_btConstraintSolver__prepareSolve_p2"]; +var _emscripten_bind_btVector4__deSerialize_p1 = Module["_emscripten_bind_btVector4__deSerialize_p1"] = asm["_emscripten_bind_btVector4__deSerialize_p1"]; +var _emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4 = Module["_emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4"] = asm["_emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4"]; +var _emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0"]; +var _emscripten_bind_btContactConstraint__getInfo1_p1 = Module["_emscripten_bind_btContactConstraint__getInfo1_p1"] = asm["_emscripten_bind_btContactConstraint__getInfo1_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0"]; +var _emscripten_bind_btSliderConstraint__getConstraintType_p0 = Module["_emscripten_bind_btSliderConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btSliderConstraint__getConstraintType_p0"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0"]; +var _emscripten_bind_btCompoundShape__getDynamicAabbTree_p0 = Module["_emscripten_bind_btCompoundShape__getDynamicAabbTree_p0"] = asm["_emscripten_bind_btCompoundShape__getDynamicAabbTree_p0"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1"]; +var _emscripten_bind_btConvexInternalShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexInternalShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexInternalShape__getBoundingSphere_p2"]; +var _emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btIDebugDraw__drawCylinder_p5 = Module["_emscripten_bind_btIDebugDraw__drawCylinder_p5"] = asm["_emscripten_bind_btIDebugDraw__drawCylinder_p5"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0"]; +var _emscripten_bind_btQuadWord__op_comp_p1 = Module["_emscripten_bind_btQuadWord__op_comp_p1"] = asm["_emscripten_bind_btQuadWord__op_comp_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCylinderShape____destroy___p0 = Module["_emscripten_bind_btCylinderShape____destroy___p0"] = asm["_emscripten_bind_btCylinderShape____destroy___p0"]; +var _emscripten_bind_btConvexHullShape__isConvex_p0 = Module["_emscripten_bind_btConvexHullShape__isConvex_p0"] = asm["_emscripten_bind_btConvexHullShape__isConvex_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0"]; +var _emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5 = Module["_emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5"] = asm["_emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5"]; +var _emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1"]; +var _emscripten_bind_btTypedConstraint__getUid_p0 = Module["_emscripten_bind_btTypedConstraint__getUid_p0"] = asm["_emscripten_bind_btTypedConstraint__getUid_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__setScaling_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__setScaling_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__setScaling_p1"]; +var _emscripten_bind_btRigidBody__setWorldTransform_p1 = Module["_emscripten_bind_btRigidBody__setWorldTransform_p1"] = asm["_emscripten_bind_btRigidBody__setWorldTransform_p1"]; +var _emscripten_bind_btGhostObject__serialize_p2 = Module["_emscripten_bind_btGhostObject__serialize_p2"] = asm["_emscripten_bind_btGhostObject__serialize_p2"]; +var _emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btQuadWord__setY_p1 = Module["_emscripten_bind_btQuadWord__setY_p1"] = asm["_emscripten_bind_btQuadWord__setY_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0"]; +var _emscripten_bind_btUniformScalingShape____destroy___p0 = Module["_emscripten_bind_btUniformScalingShape____destroy___p0"] = asm["_emscripten_bind_btUniformScalingShape____destroy___p0"]; +var _emscripten_bind_btPairCachingGhostObject__setFriction_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setFriction_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setFriction_p1"]; +var _emscripten_bind_btConeTwistConstraint__getBFrame_p0 = Module["_emscripten_bind_btConeTwistConstraint__getBFrame_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getBFrame_p0"]; +var _emscripten_bind_btRigidBody__getCenterOfMassPosition_p0 = Module["_emscripten_bind_btRigidBody__getCenterOfMassPosition_p0"] = asm["_emscripten_bind_btRigidBody__getCenterOfMassPosition_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6 = Module["_emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1"]; +var _emscripten_bind_btConvexShape__getBoundingSphere_p2 = Module["_emscripten_bind_btConvexShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btConvexShape__getBoundingSphere_p2"]; +var _emscripten_bind_btConvexShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexShape__getUserPointer_p0"]; +var _emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0"]; +var _emscripten_bind_btIDebugDraw__drawTriangle_p8 = Module["_emscripten_bind_btIDebugDraw__drawTriangle_p8"] = asm["_emscripten_bind_btIDebugDraw__drawTriangle_p8"]; +var _emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0 = Module["_emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0"] = asm["_emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0"]; +var _emscripten_bind_btConeShapeZ__getMarginNV_p0 = Module["_emscripten_bind_btConeShapeZ__getMarginNV_p0"] = asm["_emscripten_bind_btConeShapeZ__getMarginNV_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2"]; +var _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5 = Module["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5"] = asm["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5"]; +var _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4 = Module["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4"] = asm["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4"]; +var _emscripten_bind_btCapsuleShapeX__isConcave_p0 = Module["_emscripten_bind_btCapsuleShapeX__isConcave_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isConcave_p0"]; +var _emscripten_bind_btEmptyShape__btEmptyShape_p0 = Module["_emscripten_bind_btEmptyShape__btEmptyShape_p0"] = asm["_emscripten_bind_btEmptyShape__btEmptyShape_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getPivotInA_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getPivotInA_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getPivotInA_p0"]; +var _emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1"]; +var _emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3"]; +var _emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0"]; +var _emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1"]; +var _emscripten_bind_btUniversalConstraint__getAngle1_p0 = Module["_emscripten_bind_btUniversalConstraint__getAngle1_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAngle1_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btQuaternion__setY_p1 = Module["_emscripten_bind_btQuaternion__setY_p1"] = asm["_emscripten_bind_btQuaternion__setY_p1"]; +var _emscripten_bind_btAngularLimit__isLimit_p0 = Module["_emscripten_bind_btAngularLimit__isLimit_p0"] = asm["_emscripten_bind_btAngularLimit__isLimit_p0"]; +var _emscripten_bind_btSphereShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btSphereShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btSphereShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btStaticPlaneShape____destroy___p0 = Module["_emscripten_bind_btStaticPlaneShape____destroy___p0"] = asm["_emscripten_bind_btStaticPlaneShape____destroy___p0"]; +var _emscripten_bind_btBoxShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btBoxShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btBoxShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btConeShapeX__isNonMoving_p0 = Module["_emscripten_bind_btConeShapeX__isNonMoving_p0"] = asm["_emscripten_bind_btConeShapeX__isNonMoving_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btIDebugDraw__drawSpherePatch_p10 = Module["_emscripten_bind_btIDebugDraw__drawSpherePatch_p10"] = asm["_emscripten_bind_btIDebugDraw__drawSpherePatch_p10"]; +var _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2"]; +var _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3"]; +var _emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1 = Module["_emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1"] = asm["_emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1"]; +var _emscripten_bind_btUniformScalingShape__getMargin_p0 = Module["_emscripten_bind_btUniformScalingShape__getMargin_p0"] = asm["_emscripten_bind_btUniformScalingShape__getMargin_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0"]; +var _emscripten_bind_btConcaveShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConcaveShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConcaveShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0"]; +var _emscripten_bind_btTransform__inverse_p0 = Module["_emscripten_bind_btTransform__inverse_p0"] = asm["_emscripten_bind_btTransform__inverse_p0"]; +var _emscripten_bind_btCylinderShapeX__isConvex2d_p0 = Module["_emscripten_bind_btCylinderShapeX__isConvex2d_p0"] = asm["_emscripten_bind_btCylinderShapeX__isConvex2d_p0"]; +var _emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1 = Module["_emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1"] = asm["_emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1"]; +var _emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btBroadphaseInterface__rayTest_p4 = Module["_emscripten_bind_btBroadphaseInterface__rayTest_p4"] = asm["_emscripten_bind_btBroadphaseInterface__rayTest_p4"]; +var _emscripten_bind_btBroadphaseInterface__rayTest_p3 = Module["_emscripten_bind_btBroadphaseInterface__rayTest_p3"] = asm["_emscripten_bind_btBroadphaseInterface__rayTest_p3"]; +var _emscripten_bind_btQuaternion__setZ_p1 = Module["_emscripten_bind_btQuaternion__setZ_p1"] = asm["_emscripten_bind_btQuaternion__setZ_p1"]; +var _emscripten_bind_btBU_Simplex1to4__setUserPointer_p1 = Module["_emscripten_bind_btBU_Simplex1to4__setUserPointer_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__setUserPointer_p1"]; +var _emscripten_bind_btQuaternion__setW_p1 = Module["_emscripten_bind_btQuaternion__setW_p1"] = asm["_emscripten_bind_btQuaternion__setW_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8"]; +var _emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0 = Module["_emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0"] = asm["_emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0"]; +var _emscripten_bind_btRigidBody__applyImpulse_p2 = Module["_emscripten_bind_btRigidBody__applyImpulse_p2"] = asm["_emscripten_bind_btRigidBody__applyImpulse_p2"]; +var _emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1"]; +var _emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1 = Module["_emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1"] = asm["_emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1"]; +var _emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1 = Module["_emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1"] = asm["_emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1"]; +var _emscripten_bind_btTriangleCallback__processTriangle_p3 = Module["_emscripten_bind_btTriangleCallback__processTriangle_p3"] = asm["_emscripten_bind_btTriangleCallback__processTriangle_p3"]; +var _emscripten_bind_btDynamicsWorld__contactPairTest_p3 = Module["_emscripten_bind_btDynamicsWorld__contactPairTest_p3"] = asm["_emscripten_bind_btDynamicsWorld__contactPairTest_p3"]; +var _emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2"]; +var _emscripten_bind_btStaticPlaneShape__setLocalScaling_p1 = Module["_emscripten_bind_btStaticPlaneShape__setLocalScaling_p1"] = asm["_emscripten_bind_btStaticPlaneShape__setLocalScaling_p1"]; +var _emscripten_bind_btDynamicsWorld__removeAction_p1 = Module["_emscripten_bind_btDynamicsWorld__removeAction_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeAction_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1"]; +var _emscripten_bind_btQuaternion__setX_p1 = Module["_emscripten_bind_btQuaternion__setX_p1"] = asm["_emscripten_bind_btQuaternion__setX_p1"]; +var _emscripten_bind_btManifoldResult__getPersistentManifold_p0 = Module["_emscripten_bind_btManifoldResult__getPersistentManifold_p0"] = asm["_emscripten_bind_btManifoldResult__getPersistentManifold_p0"]; +var _emscripten_bind_btDispatcher__needsResponse_p2 = Module["_emscripten_bind_btDispatcher__needsResponse_p2"] = asm["_emscripten_bind_btDispatcher__needsResponse_p2"]; +var _emscripten_bind_btCapsuleShapeX__getName_p0 = Module["_emscripten_bind_btCapsuleShapeX__getName_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getName_p0"]; +var _emscripten_bind_btConvexShape__isInfinite_p0 = Module["_emscripten_bind_btConvexShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexShape__isInfinite_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0"]; +var _emscripten_bind_btSimpleBroadphase__printStats_p0 = Module["_emscripten_bind_btSimpleBroadphase__printStats_p0"] = asm["_emscripten_bind_btSimpleBroadphase__printStats_p0"]; +var _emscripten_bind_btCollisionWorld__serialize_p1 = Module["_emscripten_bind_btCollisionWorld__serialize_p1"] = asm["_emscripten_bind_btCollisionWorld__serialize_p1"]; +var _emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__isConvex_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isConvex_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isConvex_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setParam_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__setParam_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__setParam_p2"]; +var _emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1"]; +var _emscripten_bind_btBU_Simplex1to4____destroy___p0 = Module["_emscripten_bind_btBU_Simplex1to4____destroy___p0"] = asm["_emscripten_bind_btBU_Simplex1to4____destroy___p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1"]; +var _emscripten_bind_btMultiSphereShape__isSoftBody_p0 = Module["_emscripten_bind_btMultiSphereShape__isSoftBody_p0"] = asm["_emscripten_bind_btMultiSphereShape__isSoftBody_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0"]; +var _emscripten_bind_btCompoundShape__getBoundingSphere_p2 = Module["_emscripten_bind_btCompoundShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btCompoundShape__getBoundingSphere_p2"]; +var _emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0"]; +var _emscripten_bind_btConstraintSetting__get_m_damping_p0 = Module["_emscripten_bind_btConstraintSetting__get_m_damping_p0"] = asm["_emscripten_bind_btConstraintSetting__get_m_damping_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btMatrix3x3__getRow_p1 = Module["_emscripten_bind_btMatrix3x3__getRow_p1"] = asm["_emscripten_bind_btMatrix3x3__getRow_p1"]; +var _emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0 = Module["_emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0"] = asm["_emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0"]; +var _emscripten_bind_btConeShape__isConvex_p0 = Module["_emscripten_bind_btConeShape__isConvex_p0"] = asm["_emscripten_bind_btConeShape__isConvex_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btVector4__distance_p1 = Module["_emscripten_bind_btVector4__distance_p1"] = asm["_emscripten_bind_btVector4__distance_p1"]; +var _emscripten_bind_btMatrix3x3__op_set_p1 = Module["_emscripten_bind_btMatrix3x3__op_set_p1"] = asm["_emscripten_bind_btMatrix3x3__op_set_p1"]; +var _emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0 = Module["_emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3"]; +var _emscripten_bind_btCollisionObject__getDeactivationTime_p0 = Module["_emscripten_bind_btCollisionObject__getDeactivationTime_p0"] = asm["_emscripten_bind_btCollisionObject__getDeactivationTime_p0"]; +var _emscripten_bind_btCollisionShape__setMargin_p1 = Module["_emscripten_bind_btCollisionShape__setMargin_p1"] = asm["_emscripten_bind_btCollisionShape__setMargin_p1"]; +var _emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0 = Module["_emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0"] = asm["_emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0"]; +var _emscripten_bind_btSphereShape__btSphereShape_p1 = Module["_emscripten_bind_btSphereShape__btSphereShape_p1"] = asm["_emscripten_bind_btSphereShape__btSphereShape_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btUniformScalingShape__isNonMoving_p0 = Module["_emscripten_bind_btUniformScalingShape__isNonMoving_p0"] = asm["_emscripten_bind_btUniformScalingShape__isNonMoving_p0"]; +var _emscripten_bind_btPersistentManifold__refreshContactPoints_p2 = Module["_emscripten_bind_btPersistentManifold__refreshContactPoints_p2"] = asm["_emscripten_bind_btPersistentManifold__refreshContactPoints_p2"]; +var _emscripten_bind_btVector3__setZero_p0 = Module["_emscripten_bind_btVector3__setZero_p0"] = asm["_emscripten_bind_btVector3__setZero_p0"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__serialize_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__serialize_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__serialize_p2"]; +var _emscripten_bind_btTriangleMesh__preallocateIndices_p1 = Module["_emscripten_bind_btTriangleMesh__preallocateIndices_p1"] = asm["_emscripten_bind_btTriangleMesh__preallocateIndices_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__getVertex_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__getVertex_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getVertex_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1"]; +var _emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0"]; +var _emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3"]; +var _emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1"]; +var _emscripten_bind_btCollisionObject__setCollisionShape_p1 = Module["_emscripten_bind_btCollisionObject__setCollisionShape_p1"] = asm["_emscripten_bind_btCollisionObject__setCollisionShape_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1"]; +var _emscripten_bind_btCylinderShape__getUserPointer_p0 = Module["_emscripten_bind_btCylinderShape__getUserPointer_p0"] = asm["_emscripten_bind_btCylinderShape__getUserPointer_p0"]; +var _emscripten_bind_btTransform__btTransform_p1 = Module["_emscripten_bind_btTransform__btTransform_p1"] = asm["_emscripten_bind_btTransform__btTransform_p1"]; +var _emscripten_bind_btTransform__btTransform_p0 = Module["_emscripten_bind_btTransform__btTransform_p0"] = asm["_emscripten_bind_btTransform__btTransform_p0"]; +var _emscripten_bind_btTransform__btTransform_p2 = Module["_emscripten_bind_btTransform__btTransform_p2"] = asm["_emscripten_bind_btTransform__btTransform_p2"]; +var _emscripten_bind_btVector3__normalize_p0 = Module["_emscripten_bind_btVector3__normalize_p0"] = asm["_emscripten_bind_btVector3__normalize_p0"]; +var _emscripten_bind_btConvexHullShape__getPoints_p0 = Module["_emscripten_bind_btConvexHullShape__getPoints_p0"] = asm["_emscripten_bind_btConvexHullShape__getPoints_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__serialize_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__serialize_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__serialize_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0"]; +var _emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0"]; +var _emscripten_bind_CProfileNode__Get_Total_Calls_p0 = Module["_emscripten_bind_CProfileNode__Get_Total_Calls_p0"] = asm["_emscripten_bind_CProfileNode__Get_Total_Calls_p0"]; +var _emscripten_bind_btVector3__btVector3_p3 = Module["_emscripten_bind_btVector3__btVector3_p3"] = asm["_emscripten_bind_btVector3__btVector3_p3"]; +var _emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3"]; +var _emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btCollisionWorld__contactPairTest_p3 = Module["_emscripten_bind_btCollisionWorld__contactPairTest_p3"] = asm["_emscripten_bind_btCollisionWorld__contactPairTest_p3"]; +var _emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1"]; +var _emscripten_bind_btManifoldResult__refreshContactPoints_p0 = Module["_emscripten_bind_btManifoldResult__refreshContactPoints_p0"] = asm["_emscripten_bind_btManifoldResult__refreshContactPoints_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3"]; +var _emscripten_bind_btCapsuleShapeX__isCompound_p0 = Module["_emscripten_bind_btCapsuleShapeX__isCompound_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isCompound_p0"]; +var _emscripten_bind_btOverlappingPairCache__findPair_p2 = Module["_emscripten_bind_btOverlappingPairCache__findPair_p2"] = asm["_emscripten_bind_btOverlappingPairCache__findPair_p2"]; +var _emscripten_bind_btBU_Simplex1to4__isInfinite_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isInfinite_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isInfinite_p0"]; +var _emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0 = Module["_emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1"]; +var _emscripten_bind_btGhostObject__getHitFraction_p0 = Module["_emscripten_bind_btGhostObject__getHitFraction_p0"] = asm["_emscripten_bind_btGhostObject__getHitFraction_p0"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btCompoundShape__setUserPointer_p1 = Module["_emscripten_bind_btCompoundShape__setUserPointer_p1"] = asm["_emscripten_bind_btCompoundShape__setUserPointer_p1"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0"]; +var _emscripten_bind_btBoxShape____destroy___p0 = Module["_emscripten_bind_btBoxShape____destroy___p0"] = asm["_emscripten_bind_btBoxShape____destroy___p0"]; +var _emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3 = Module["_emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3"] = asm["_emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3"]; +var _emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btTypedConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btTypedConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btTypedConstraint__getAppliedImpulse_p0"]; +var _emscripten_bind_CProfileNode__Call_p0 = Module["_emscripten_bind_CProfileNode__Call_p0"] = asm["_emscripten_bind_CProfileNode__Call_p0"]; +var _emscripten_bind_btQuaternion__length_p0 = Module["_emscripten_bind_btQuaternion__length_p0"] = asm["_emscripten_bind_btQuaternion__length_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0"]; +var _emscripten_bind_btPairCachingGhostObject__rayTest_p3 = Module["_emscripten_bind_btPairCachingGhostObject__rayTest_p3"] = asm["_emscripten_bind_btPairCachingGhostObject__rayTest_p3"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0"]; +var _emscripten_bind_btConvexInternalShape__isInfinite_p0 = Module["_emscripten_bind_btConvexInternalShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexInternalShape__isInfinite_p0"]; +var _emscripten_bind_btEmptyShape__setMargin_p1 = Module["_emscripten_bind_btEmptyShape__setMargin_p1"] = asm["_emscripten_bind_btEmptyShape__setMargin_p1"]; +var _emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0"]; +var _emscripten_bind_btHinge2Constraint__setLowerLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setLowerLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setLowerLimit_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__clearForces_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__clearForces_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__clearForces_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1"]; +var _emscripten_bind_btConvexShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConvexShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConvexShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btVector4__minAxis_p0 = Module["_emscripten_bind_btVector4__minAxis_p0"] = asm["_emscripten_bind_btVector4__minAxis_p0"]; +var _emscripten_bind_btConeShapeZ__getUserPointer_p0 = Module["_emscripten_bind_btConeShapeZ__getUserPointer_p0"] = asm["_emscripten_bind_btConeShapeZ__getUserPointer_p0"]; +var _emscripten_bind_btCollisionShape__isPolyhedral_p0 = Module["_emscripten_bind_btCollisionShape__isPolyhedral_p0"] = asm["_emscripten_bind_btCollisionShape__isPolyhedral_p0"]; +var _emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0 = Module["_emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0"]; +var _emscripten_bind_btCylinderShape__serialize_p2 = Module["_emscripten_bind_btCylinderShape__serialize_p2"] = asm["_emscripten_bind_btCylinderShape__serialize_p2"]; +var _emscripten_bind_btDynamicsWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btDynamicsWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btDynamicsWorld__setDebugDrawer_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addAction_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addAction_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addAction_p1"]; +var _emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1"]; +var _emscripten_bind_btUniversalConstraint__getConstraintType_p0 = Module["_emscripten_bind_btUniversalConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btUniversalConstraint__getConstraintType_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btBoxShape__setLocalScaling_p1 = Module["_emscripten_bind_btBoxShape__setLocalScaling_p1"] = asm["_emscripten_bind_btBoxShape__setLocalScaling_p1"]; +var _emscripten_bind_btTransform__serializeFloat_p1 = Module["_emscripten_bind_btTransform__serializeFloat_p1"] = asm["_emscripten_bind_btTransform__serializeFloat_p1"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1"]; +var _emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0"]; +var _emscripten_bind_CProfileNode__Get_Parent_p0 = Module["_emscripten_bind_CProfileNode__Get_Parent_p0"] = asm["_emscripten_bind_CProfileNode__Get_Parent_p0"]; +var _emscripten_bind_btConvexShape__isCompound_p0 = Module["_emscripten_bind_btConvexShape__isCompound_p0"] = asm["_emscripten_bind_btConvexShape__isCompound_p0"]; +var _emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0 = Module["_emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0"] = asm["_emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0"]; +var _emscripten_bind_btTriangleInfo____destroy___p0 = Module["_emscripten_bind_btTriangleInfo____destroy___p0"] = asm["_emscripten_bind_btTriangleInfo____destroy___p0"]; +var _emscripten_bind_btSliderConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btSliderConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btSliderConstraint__getUserConstraintId_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__contactTest_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__contactTest_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__contactTest_p2"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0"]; +var _emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1"]; +var _emscripten_bind_btDynamicsWorld__getBroadphase_p0 = Module["_emscripten_bind_btDynamicsWorld__getBroadphase_p0"] = asm["_emscripten_bind_btDynamicsWorld__getBroadphase_p0"]; +var _emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2 = Module["_emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2"]; +var _emscripten_bind_btDynamicsWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btDynamicsWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btDynamicsWorld__getDispatchInfo_p0"]; +var _emscripten_bind_btConvexHullShape__getNumEdges_p0 = Module["_emscripten_bind_btConvexHullShape__getNumEdges_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumEdges_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0"]; +var _emscripten_bind_btRigidBody__upcast_p1 = Module["_emscripten_bind_btRigidBody__upcast_p1"] = asm["_emscripten_bind_btRigidBody__upcast_p1"]; +var _emscripten_bind_btDispatcherInfo____destroy___p0 = Module["_emscripten_bind_btDispatcherInfo____destroy___p0"] = asm["_emscripten_bind_btDispatcherInfo____destroy___p0"]; +var _emscripten_bind_btSerializer__getSerializationFlags_p0 = Module["_emscripten_bind_btSerializer__getSerializationFlags_p0"] = asm["_emscripten_bind_btSerializer__getSerializationFlags_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btTransform__inverseTimes_p1 = Module["_emscripten_bind_btTransform__inverseTimes_p1"] = asm["_emscripten_bind_btTransform__inverseTimes_p1"]; +var _emscripten_bind_btPoint2PointConstraint__updateRHS_p1 = Module["_emscripten_bind_btPoint2PointConstraint__updateRHS_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__updateRHS_p1"]; +var _emscripten_bind_btVector3__w_p0 = Module["_emscripten_bind_btVector3__w_p0"] = asm["_emscripten_bind_btVector3__w_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__quantize_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__quantize_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__quantize_p3"]; +var _emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1"]; +var _emscripten_bind_btCompoundShape__getUserPointer_p0 = Module["_emscripten_bind_btCompoundShape__getUserPointer_p0"] = asm["_emscripten_bind_btCompoundShape__getUserPointer_p0"]; +var _emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btCapsuleShape__isSoftBody_p0 = Module["_emscripten_bind_btCapsuleShape__isSoftBody_p0"] = asm["_emscripten_bind_btCapsuleShape__isSoftBody_p0"]; +var _emscripten_bind_btWheelInfo__get_m_brake_p0 = Module["_emscripten_bind_btWheelInfo__get_m_brake_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_brake_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1"]; +var _emscripten_bind_btTypedConstraint__getInfo2_p1 = Module["_emscripten_bind_btTypedConstraint__getInfo2_p1"] = asm["_emscripten_bind_btTypedConstraint__getInfo2_p1"]; +var _emscripten_bind_btSimpleBroadphase__createProxy_p8 = Module["_emscripten_bind_btSimpleBroadphase__createProxy_p8"] = asm["_emscripten_bind_btSimpleBroadphase__createProxy_p8"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0"]; +var _emscripten_bind_btCompoundShape__getMargin_p0 = Module["_emscripten_bind_btCompoundShape__getMargin_p0"] = asm["_emscripten_bind_btCompoundShape__getMargin_p0"]; +var _emscripten_bind_btConeShape__getLocalScaling_p0 = Module["_emscripten_bind_btConeShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConeShape__getLocalScaling_p0"]; +var _emscripten_bind_btPairCachingGhostObject__isActive_p0 = Module["_emscripten_bind_btPairCachingGhostObject__isActive_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__isActive_p0"]; +var _emscripten_bind_btConeShape__isConcave_p0 = Module["_emscripten_bind_btConeShape__isConcave_p0"] = asm["_emscripten_bind_btConeShape__isConcave_p0"]; +var _emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1 = Module["_emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1"] = asm["_emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0"]; +var _emscripten_bind_btCollisionObject__setActivationState_p1 = Module["_emscripten_bind_btCollisionObject__setActivationState_p1"] = asm["_emscripten_bind_btCollisionObject__setActivationState_p1"]; +var _emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btConvexHullShape__getPlane_p3 = Module["_emscripten_bind_btConvexHullShape__getPlane_p3"] = asm["_emscripten_bind_btConvexHullShape__getPlane_p3"]; +var _emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btManifoldResult____destroy___p0 = Module["_emscripten_bind_btManifoldResult____destroy___p0"] = asm["_emscripten_bind_btManifoldResult____destroy___p0"]; +var _emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5 = Module["_emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5"] = asm["_emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5"]; +var _emscripten_bind_btPoint2PointConstraint__buildJacobian_p0 = Module["_emscripten_bind_btPoint2PointConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__buildJacobian_p0"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getGravity_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getGravity_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getGravity_p0"]; +var _emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0 = Module["_emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0"] = asm["_emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btHinge2Constraint__set_m_objectType_p1 = Module["_emscripten_bind_btHinge2Constraint__set_m_objectType_p1"] = asm["_emscripten_bind_btHinge2Constraint__set_m_objectType_p1"]; +var _emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2"]; +var _emscripten_bind_btHingeConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btHingeConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btHingeConstraint__setUseFrameOffset_p1"]; +var _emscripten_bind_btGhostObject__forceActivationState_p1 = Module["_emscripten_bind_btGhostObject__forceActivationState_p1"] = asm["_emscripten_bind_btGhostObject__forceActivationState_p1"]; +var _emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0 = Module["_emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0"] = asm["_emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0"]; +var _emscripten_bind_btTypedConstraint__getObjectType_p0 = Module["_emscripten_bind_btTypedConstraint__getObjectType_p0"] = asm["_emscripten_bind_btTypedConstraint__getObjectType_p0"]; +var _emscripten_bind_CProfileNode__Get_Sub_Node_p1 = Module["_emscripten_bind_CProfileNode__Get_Sub_Node_p1"] = asm["_emscripten_bind_CProfileNode__Get_Sub_Node_p1"]; +var _emscripten_bind_btQuaternion__angle_p1 = Module["_emscripten_bind_btQuaternion__angle_p1"] = asm["_emscripten_bind_btQuaternion__angle_p1"]; +var _emscripten_bind_btGhostObject__setCollisionShape_p1 = Module["_emscripten_bind_btGhostObject__setCollisionShape_p1"] = asm["_emscripten_bind_btGhostObject__setCollisionShape_p1"]; +var _emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0 = Module["_emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0"] = asm["_emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__getName_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getName_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getName_p0"]; +var _emscripten_bind_btRigidBody__internalGetTurnVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalGetTurnVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalGetTurnVelocity_p0"]; +var _emscripten_bind_btVector3__op_comp_p1 = Module["_emscripten_bind_btVector3__op_comp_p1"] = asm["_emscripten_bind_btVector3__op_comp_p1"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0"]; +var _emscripten_bind_btVector3__getY_p0 = Module["_emscripten_bind_btVector3__getY_p0"] = asm["_emscripten_bind_btVector3__getY_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1"]; +var _emscripten_bind_btConvexInternalShape__getName_p0 = Module["_emscripten_bind_btConvexInternalShape__getName_p0"] = asm["_emscripten_bind_btConvexInternalShape__getName_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0 = Module["_emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0"]; +var _emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0 = Module["_emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0"] = asm["_emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0"]; +var _emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__isConcave_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isConcave_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isConcave_p0"]; +var _emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0 = Module["_emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0"] = asm["_emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0"]; +var _emscripten_bind_btUniversalConstraint__updateRHS_p1 = Module["_emscripten_bind_btUniversalConstraint__updateRHS_p1"] = asm["_emscripten_bind_btUniversalConstraint__updateRHS_p1"]; +var _emscripten_bind_btRigidBody__applyDamping_p1 = Module["_emscripten_bind_btRigidBody__applyDamping_p1"] = asm["_emscripten_bind_btRigidBody__applyDamping_p1"]; +var _emscripten_bind_btConvexInternalShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexInternalShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexInternalShape__isNonMoving_p0"]; +var _emscripten_bind_btStaticPlaneShape__isConcave_p0 = Module["_emscripten_bind_btStaticPlaneShape__isConcave_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isConcave_p0"]; +var _emscripten_bind_btVector4__deSerializeFloat_p1 = Module["_emscripten_bind_btVector4__deSerializeFloat_p1"] = asm["_emscripten_bind_btVector4__deSerializeFloat_p1"]; +var _emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0"]; +var _emscripten_bind_btHinge2Constraint__calculateTransforms_p2 = Module["_emscripten_bind_btHinge2Constraint__calculateTransforms_p2"] = asm["_emscripten_bind_btHinge2Constraint__calculateTransforms_p2"]; +var _emscripten_bind_btCollisionWorld__btCollisionWorld_p3 = Module["_emscripten_bind_btCollisionWorld__btCollisionWorld_p3"] = asm["_emscripten_bind_btCollisionWorld__btCollisionWorld_p3"]; +var _emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4 = Module["_emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4"] = asm["_emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4"]; +var _emscripten_bind_btCapsuleShapeZ____destroy___p0 = Module["_emscripten_bind_btCapsuleShapeZ____destroy___p0"] = asm["_emscripten_bind_btCapsuleShapeZ____destroy___p0"]; +var _emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0"]; +var _emscripten_bind_btDynamicsWorld____destroy___p0 = Module["_emscripten_bind_btDynamicsWorld____destroy___p0"] = asm["_emscripten_bind_btDynamicsWorld____destroy___p0"]; +var _emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4"]; +var _emscripten_bind_btNodeOverlapCallback__processNode_p2 = Module["_emscripten_bind_btNodeOverlapCallback__processNode_p2"] = asm["_emscripten_bind_btNodeOverlapCallback__processNode_p2"]; +var _emscripten_bind_btConvexShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexShape__getLocalScaling_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getInternalType_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getInternalType_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getInternalType_p0"]; +var _emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btHinge2Constraint__getRigidBodyB_p0 = Module["_emscripten_bind_btHinge2Constraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btHinge2Constraint__getRigidBodyB_p0"]; +var _emscripten_bind_btMatrix3x3__deSerializeFloat_p1 = Module["_emscripten_bind_btMatrix3x3__deSerializeFloat_p1"] = asm["_emscripten_bind_btMatrix3x3__deSerializeFloat_p1"]; +var _emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1 = Module["_emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1"] = asm["_emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1"]; +var _emscripten_bind_btConeShapeX__setLocalScaling_p1 = Module["_emscripten_bind_btConeShapeX__setLocalScaling_p1"] = asm["_emscripten_bind_btConeShapeX__setLocalScaling_p1"]; +var _emscripten_bind_btUniversalConstraint__isEnabled_p0 = Module["_emscripten_bind_btUniversalConstraint__isEnabled_p0"] = asm["_emscripten_bind_btUniversalConstraint__isEnabled_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1"]; +var _emscripten_bind_btAxisSweep3__testAabbOverlap_p2 = Module["_emscripten_bind_btAxisSweep3__testAabbOverlap_p2"] = asm["_emscripten_bind_btAxisSweep3__testAabbOverlap_p2"]; +var _emscripten_bind_btCapsuleShapeX__isConvex2d_p0 = Module["_emscripten_bind_btCapsuleShapeX__isConvex2d_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isConvex2d_p0"]; +var _emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0"]; +var _emscripten_bind_bt32BitAxisSweep3____destroy___p0 = Module["_emscripten_bind_bt32BitAxisSweep3____destroy___p0"] = asm["_emscripten_bind_bt32BitAxisSweep3____destroy___p0"]; +var _emscripten_bind_btVector3__triple_p2 = Module["_emscripten_bind_btVector3__triple_p2"] = asm["_emscripten_bind_btVector3__triple_p2"]; +var _emscripten_bind_ConcreteContactResultCallback__needsCollision_p1 = Module["_emscripten_bind_ConcreteContactResultCallback__needsCollision_p1"] = asm["_emscripten_bind_ConcreteContactResultCallback__needsCollision_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__getUid_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__getUid_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__getUid_p0"]; +var _emscripten_bind_btConeShapeX__serialize_p2 = Module["_emscripten_bind_btConeShapeX__serialize_p2"] = asm["_emscripten_bind_btConeShapeX__serialize_p2"]; +var _emscripten_bind_btCollisionDispatcher__releaseManifold_p1 = Module["_emscripten_bind_btCollisionDispatcher__releaseManifold_p1"] = asm["_emscripten_bind_btCollisionDispatcher__releaseManifold_p1"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0"]; +var _emscripten_bind_btBU_Simplex1to4__isNonMoving_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isNonMoving_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isNonMoving_p0"]; +var _emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3 = Module["_emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3"] = asm["_emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3"]; +var _emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2 = Module["_emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2"]; +var _emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0 = Module["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0"] = asm["_emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0"]; +var _emscripten_bind_btVector3__angle_p1 = Module["_emscripten_bind_btVector3__angle_p1"] = asm["_emscripten_bind_btVector3__angle_p1"]; +var _emscripten_bind_btCylinderShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btCylinderShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCylinderShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btConeShape__isInfinite_p0 = Module["_emscripten_bind_btConeShape__isInfinite_p0"] = asm["_emscripten_bind_btConeShape__isInfinite_p0"]; +var _emscripten_bind_btIndexedMesh__get_m_vertexStride_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_vertexStride_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_vertexStride_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0"]; +var _emscripten_bind_btHinge2Constraint__getAnchor2_p0 = Module["_emscripten_bind_btHinge2Constraint__getAnchor2_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAnchor2_p0"]; +var _emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2"]; +var _emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btCompoundShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btCompoundShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCompoundShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btSliderConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btSliderConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btSliderConstraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2"]; +var _emscripten_bind_btRigidBody__setMotionState_p1 = Module["_emscripten_bind_btRigidBody__setMotionState_p1"] = asm["_emscripten_bind_btRigidBody__setMotionState_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0"]; +var _emscripten_bind_CProfileNode__Get_Sibling_p0 = Module["_emscripten_bind_CProfileNode__Get_Sibling_p0"] = asm["_emscripten_bind_CProfileNode__Get_Sibling_p0"]; +var _emscripten_bind_btHingeConstraint__enableAngularMotor_p3 = Module["_emscripten_bind_btHingeConstraint__enableAngularMotor_p3"] = asm["_emscripten_bind_btHingeConstraint__enableAngularMotor_p3"]; +var _emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0 = Module["_emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0"] = asm["_emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0"]; +var _emscripten_bind_btStaticPlaneShape__getName_p0 = Module["_emscripten_bind_btStaticPlaneShape__getName_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getName_p0"]; +var _emscripten_bind_btGhostObject__getUserPointer_p0 = Module["_emscripten_bind_btGhostObject__getUserPointer_p0"] = asm["_emscripten_bind_btGhostObject__getUserPointer_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0"]; +var _emscripten_bind_btConeShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConeShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConeShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7"]; +var _emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0"]; +var _emscripten_bind_btHingeConstraint__isEnabled_p0 = Module["_emscripten_bind_btHingeConstraint__isEnabled_p0"] = asm["_emscripten_bind_btHingeConstraint__isEnabled_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btSerializer__serializeName_p1 = Module["_emscripten_bind_btSerializer__serializeName_p1"] = asm["_emscripten_bind_btSerializer__serializeName_p1"]; +var _emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0"]; +var _emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0 = Module["_emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0"] = asm["_emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0"]; +var _emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1 = Module["_emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1"] = asm["_emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1"]; +var _emscripten_bind_btConcaveShape__processAllTriangles_p3 = Module["_emscripten_bind_btConcaveShape__processAllTriangles_p3"] = asm["_emscripten_bind_btConcaveShape__processAllTriangles_p3"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1"]; +var _emscripten_bind_btRigidBody__isKinematicObject_p0 = Module["_emscripten_bind_btRigidBody__isKinematicObject_p0"] = asm["_emscripten_bind_btRigidBody__isKinematicObject_p0"]; +var _emscripten_bind_btCapsuleShapeX__getHalfHeight_p0 = Module["_emscripten_bind_btCapsuleShapeX__getHalfHeight_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getHalfHeight_p0"]; +var _emscripten_bind_btVector4__rotate_p2 = Module["_emscripten_bind_btVector4__rotate_p2"] = asm["_emscripten_bind_btVector4__rotate_p2"]; +var _emscripten_bind_btMatrix3x3__serialize_p1 = Module["_emscripten_bind_btMatrix3x3__serialize_p1"] = asm["_emscripten_bind_btMatrix3x3__serialize_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0"]; +var _emscripten_bind_btDbvtBroadphase__get_m_cid_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_cid_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_cid_p0"]; +var _emscripten_bind_btContactConstraint__getUid_p0 = Module["_emscripten_bind_btContactConstraint__getUid_p0"] = asm["_emscripten_bind_btContactConstraint__getUid_p0"]; +var _emscripten_bind_btVector3__setInterpolate3_p3 = Module["_emscripten_bind_btVector3__setInterpolate3_p3"] = asm["_emscripten_bind_btVector3__setInterpolate3_p3"]; +var _emscripten_bind_btConstraintSolver__allSolved_p3 = Module["_emscripten_bind_btConstraintSolver__allSolved_p3"] = asm["_emscripten_bind_btConstraintSolver__allSolved_p3"]; +var _emscripten_bind_btMatrix3x3__btMatrix3x3_p9 = Module["_emscripten_bind_btMatrix3x3__btMatrix3x3_p9"] = asm["_emscripten_bind_btMatrix3x3__btMatrix3x3_p9"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0"]; +var _emscripten_bind_btTriangleMesh____destroy___p0 = Module["_emscripten_bind_btTriangleMesh____destroy___p0"] = asm["_emscripten_bind_btTriangleMesh____destroy___p0"]; +var _emscripten_bind_btMatrix3x3__btMatrix3x3_p1 = Module["_emscripten_bind_btMatrix3x3__btMatrix3x3_p1"] = asm["_emscripten_bind_btMatrix3x3__btMatrix3x3_p1"]; +var _emscripten_bind_btMatrix3x3__btMatrix3x3_p0 = Module["_emscripten_bind_btMatrix3x3__btMatrix3x3_p0"] = asm["_emscripten_bind_btMatrix3x3__btMatrix3x3_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btBvhSubtreeInfo____destroy___p0 = Module["_emscripten_bind_btBvhSubtreeInfo____destroy___p0"] = asm["_emscripten_bind_btBvhSubtreeInfo____destroy___p0"]; +var _emscripten_bind_btVector3__op_add_p1 = Module["_emscripten_bind_btVector3__op_add_p1"] = asm["_emscripten_bind_btVector3__op_add_p1"]; +var _emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1 = Module["_emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1"] = asm["_emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1"]; +var _emscripten_bind_btHinge2Constraint__getAngle2_p0 = Module["_emscripten_bind_btHinge2Constraint__getAngle2_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAngle2_p0"]; +var _emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9 = Module["_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9"] = asm["_emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9"]; +var _emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0"]; +var _emscripten_bind_btContactConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btContactConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btContactConstraint__setUserConstraintType_p1"]; +var _emscripten_bind_btHingeConstraint__getAngularOnly_p0 = Module["_emscripten_bind_btHingeConstraint__getAngularOnly_p0"] = asm["_emscripten_bind_btHingeConstraint__getAngularOnly_p0"]; +var _emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btGhostObject__getCollisionShape_p0 = Module["_emscripten_bind_btGhostObject__getCollisionShape_p0"] = asm["_emscripten_bind_btGhostObject__getCollisionShape_p0"]; +var _emscripten_bind_btCollisionObject__setWorldTransform_p1 = Module["_emscripten_bind_btCollisionObject__setWorldTransform_p1"] = asm["_emscripten_bind_btCollisionObject__setWorldTransform_p1"]; +var _emscripten_bind_btConeShapeZ__setMargin_p1 = Module["_emscripten_bind_btConeShapeZ__setMargin_p1"] = asm["_emscripten_bind_btConeShapeZ__setMargin_p1"]; +var _emscripten_bind_btCapsuleShape__serialize_p2 = Module["_emscripten_bind_btCapsuleShape__serialize_p2"] = asm["_emscripten_bind_btCapsuleShape__serialize_p2"]; +var _emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0 = Module["_emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0"] = asm["_emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0"]; +var _emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1 = Module["_emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1"] = asm["_emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1"]; +var _emscripten_bind_btTransform__getRotation_p0 = Module["_emscripten_bind_btTransform__getRotation_p0"] = asm["_emscripten_bind_btTransform__getRotation_p0"]; +var _emscripten_bind_btStridingMeshInterface__getScaling_p0 = Module["_emscripten_bind_btStridingMeshInterface__getScaling_p0"] = asm["_emscripten_bind_btStridingMeshInterface__getScaling_p0"]; +var _emscripten_bind_btGhostObject__setHitFraction_p1 = Module["_emscripten_bind_btGhostObject__setHitFraction_p1"] = asm["_emscripten_bind_btGhostObject__setHitFraction_p1"]; +var _emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btPersistentManifold__addManifoldPoint_p1 = Module["_emscripten_bind_btPersistentManifold__addManifoldPoint_p1"] = asm["_emscripten_bind_btPersistentManifold__addManifoldPoint_p1"]; +var _emscripten_bind_btSphereShape__getMargin_p0 = Module["_emscripten_bind_btSphereShape__getMargin_p0"] = asm["_emscripten_bind_btSphereShape__getMargin_p0"]; +var _emscripten_bind_btEmptyShape__serializeSingleShape_p1 = Module["_emscripten_bind_btEmptyShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btEmptyShape__serializeSingleShape_p1"]; +var _emscripten_bind_btQuaternion__slerp_p2 = Module["_emscripten_bind_btQuaternion__slerp_p2"] = asm["_emscripten_bind_btQuaternion__slerp_p2"]; +var _emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1"]; +var _emscripten_bind_btPersistentManifold__getObjectType_p0 = Module["_emscripten_bind_btPersistentManifold__getObjectType_p0"] = asm["_emscripten_bind_btPersistentManifold__getObjectType_p0"]; +var _emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_bt32BitAxisSweep3__resetPool_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__resetPool_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__resetPool_p1"]; +var _emscripten_bind_btHingeConstraint__testLimit_p2 = Module["_emscripten_bind_btHingeConstraint__testLimit_p2"] = asm["_emscripten_bind_btHingeConstraint__testLimit_p2"]; +var _emscripten_bind_btRigidBody__setLinearFactor_p1 = Module["_emscripten_bind_btRigidBody__setLinearFactor_p1"] = asm["_emscripten_bind_btRigidBody__setLinearFactor_p1"]; +var _emscripten_bind_btDynamicsWorld__setBroadphase_p1 = Module["_emscripten_bind_btDynamicsWorld__setBroadphase_p1"] = asm["_emscripten_bind_btDynamicsWorld__setBroadphase_p1"]; +var _emscripten_bind_btPairCachingGhostObject__getActivationState_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getActivationState_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getActivationState_p0"]; +var _emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0"]; +var _emscripten_bind_btEmptyShape__isPolyhedral_p0 = Module["_emscripten_bind_btEmptyShape__isPolyhedral_p0"] = asm["_emscripten_bind_btEmptyShape__isPolyhedral_p0"]; +var _emscripten_bind_btPoint2PointConstraint__isEnabled_p0 = Module["_emscripten_bind_btPoint2PointConstraint__isEnabled_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__isEnabled_p0"]; +var _emscripten_bind_btConeShape__getUserPointer_p0 = Module["_emscripten_bind_btConeShape__getUserPointer_p0"] = asm["_emscripten_bind_btConeShape__getUserPointer_p0"]; +var _emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2"]; +var _emscripten_bind_btMatrix3x3__scaled_p1 = Module["_emscripten_bind_btMatrix3x3__scaled_p1"] = asm["_emscripten_bind_btMatrix3x3__scaled_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1"]; +var _emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0 = Module["_emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0"]; +var _emscripten_bind_btCylinderShapeX____destroy___p0 = Module["_emscripten_bind_btCylinderShapeX____destroy___p0"] = asm["_emscripten_bind_btCylinderShapeX____destroy___p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1"]; +var _emscripten_bind_btContactConstraint__isEnabled_p0 = Module["_emscripten_bind_btContactConstraint__isEnabled_p0"] = asm["_emscripten_bind_btContactConstraint__isEnabled_p0"]; +var _emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0"]; +var _emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btCylinderShapeX__isConvex_p0 = Module["_emscripten_bind_btCylinderShapeX__isConvex_p0"] = asm["_emscripten_bind_btCylinderShapeX__isConvex_p0"]; +var _emscripten_bind_btIDebugDraw__drawArc_p9 = Module["_emscripten_bind_btIDebugDraw__drawArc_p9"] = asm["_emscripten_bind_btIDebugDraw__drawArc_p9"]; +var _emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1"]; +var _emscripten_bind_btSliderConstraint__getAncorInA_p0 = Module["_emscripten_bind_btSliderConstraint__getAncorInA_p0"] = asm["_emscripten_bind_btSliderConstraint__getAncorInA_p0"]; +var _emscripten_bind_btHingeConstraint__getUpperLimit_p0 = Module["_emscripten_bind_btHingeConstraint__getUpperLimit_p0"] = asm["_emscripten_bind_btHingeConstraint__getUpperLimit_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0"]; +var _emscripten_bind_btConvexShape__setLocalScaling_p1 = Module["_emscripten_bind_btConvexShape__setLocalScaling_p1"] = asm["_emscripten_bind_btConvexShape__setLocalScaling_p1"]; +var _emscripten_bind_btConeShape__getConeUpIndex_p0 = Module["_emscripten_bind_btConeShape__getConeUpIndex_p0"] = asm["_emscripten_bind_btConeShape__getConeUpIndex_p0"]; +var _emscripten_bind_btHinge2Constraint____destroy___p0 = Module["_emscripten_bind_btHinge2Constraint____destroy___p0"] = asm["_emscripten_bind_btHinge2Constraint____destroy___p0"]; +var _emscripten_bind_btCapsuleShapeZ__setMargin_p1 = Module["_emscripten_bind_btCapsuleShapeZ__setMargin_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__setMargin_p1"]; +var _emscripten_bind_btAngularLimit__getLow_p0 = Module["_emscripten_bind_btAngularLimit__getLow_p0"] = asm["_emscripten_bind_btAngularLimit__getLow_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1 = Module["_emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1"]; +var _emscripten_bind_btMultiSphereShape__getSpherePosition_p1 = Module["_emscripten_bind_btMultiSphereShape__getSpherePosition_p1"] = asm["_emscripten_bind_btMultiSphereShape__getSpherePosition_p1"]; +var _emscripten_bind_btRigidBody__internalGetPushVelocity_p0 = Module["_emscripten_bind_btRigidBody__internalGetPushVelocity_p0"] = asm["_emscripten_bind_btRigidBody__internalGetPushVelocity_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1 = Module["_emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1"] = asm["_emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1"]; +var _emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btConcaveShape__isConvex2d_p0 = Module["_emscripten_bind_btConcaveShape__isConvex2d_p0"] = asm["_emscripten_bind_btConcaveShape__isConvex2d_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1"]; +var _emscripten_bind_btConvexShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexShape__isConvex2d_p0"]; +var _emscripten_bind_btSerializer__setSerializationFlags_p1 = Module["_emscripten_bind_btSerializer__setSerializationFlags_p1"] = asm["_emscripten_bind_btSerializer__setSerializationFlags_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1"]; +var _emscripten_bind_btCylinderShapeZ__isNonMoving_p0 = Module["_emscripten_bind_btCylinderShapeZ__isNonMoving_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isNonMoving_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0"]; +var _emscripten_bind_btPersistentManifold__replaceContactPoint_p2 = Module["_emscripten_bind_btPersistentManifold__replaceContactPoint_p2"] = asm["_emscripten_bind_btPersistentManifold__replaceContactPoint_p2"]; +var _emscripten_bind_btManifoldPoint__get_m_index1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_index1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_index1_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btBoxShape__getPlane_p3 = Module["_emscripten_bind_btBoxShape__getPlane_p3"] = asm["_emscripten_bind_btBoxShape__getPlane_p3"]; +var _emscripten_bind_btAxisSweep3__rayTest_p3 = Module["_emscripten_bind_btAxisSweep3__rayTest_p3"] = asm["_emscripten_bind_btAxisSweep3__rayTest_p3"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0"]; +var _emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btAxisSweep3__rayTest_p4 = Module["_emscripten_bind_btAxisSweep3__rayTest_p4"] = asm["_emscripten_bind_btAxisSweep3__rayTest_p4"]; +var _emscripten_bind_btAxisSweep3__rayTest_p5 = Module["_emscripten_bind_btAxisSweep3__rayTest_p5"] = asm["_emscripten_bind_btAxisSweep3__rayTest_p5"]; +var _emscripten_bind_btConvexInternalShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexInternalShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexInternalShape__isPolyhedral_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btRigidBody__getInternalType_p0 = Module["_emscripten_bind_btRigidBody__getInternalType_p0"] = asm["_emscripten_bind_btRigidBody__getInternalType_p0"]; +var _emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2 = Module["_emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0"]; +var _emscripten_bind_btTypedObject__set_m_objectType_p1 = Module["_emscripten_bind_btTypedObject__set_m_objectType_p1"] = asm["_emscripten_bind_btTypedObject__set_m_objectType_p1"]; +var _emscripten_bind_btConvexInternalShape__getShapeType_p0 = Module["_emscripten_bind_btConvexInternalShape__getShapeType_p0"] = asm["_emscripten_bind_btConvexInternalShape__getShapeType_p0"]; +var _emscripten_bind_btCollisionWorld__getBroadphase_p0 = Module["_emscripten_bind_btCollisionWorld__getBroadphase_p0"] = asm["_emscripten_bind_btCollisionWorld__getBroadphase_p0"]; +var _emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0"]; +var _emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0 = Module["_emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0"] = asm["_emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0"]; +var _emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1 = Module["_emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1"] = asm["_emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1"]; +var _emscripten_bind_btManifoldPoint__set_m_lifeTime_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_lifeTime_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_lifeTime_p1"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0"]; +var _emscripten_bind_btCollisionShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCollisionShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCollisionShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btCompoundShape__recalculateLocalAabb_p0 = Module["_emscripten_bind_btCompoundShape__recalculateLocalAabb_p0"] = asm["_emscripten_bind_btCompoundShape__recalculateLocalAabb_p0"]; +var _emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1"]; +var _emscripten_bind_btWheelInfo__get_m_skidInfo_p0 = Module["_emscripten_bind_btWheelInfo__get_m_skidInfo_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_skidInfo_p0"]; +var _emscripten_bind_btConeTwistConstraint__getInfo2_p1 = Module["_emscripten_bind_btConeTwistConstraint__getInfo2_p1"] = asm["_emscripten_bind_btConeTwistConstraint__getInfo2_p1"]; +var _emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btManifoldPoint__btManifoldPoint_p0 = Module["_emscripten_bind_btManifoldPoint__btManifoldPoint_p0"] = asm["_emscripten_bind_btManifoldPoint__btManifoldPoint_p0"]; +var _emscripten_bind_btBoxShape__serialize_p2 = Module["_emscripten_bind_btBoxShape__serialize_p2"] = asm["_emscripten_bind_btBoxShape__serialize_p2"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0"]; +var _emscripten_bind_btContactConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btContactConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btContactConstraint__get_m_objectType_p0"]; +var _emscripten_bind_btBroadphaseProxy__isConcave_p1 = Module["_emscripten_bind_btBroadphaseProxy__isConcave_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isConcave_p1"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1"]; +var _emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1"]; +var _emscripten_bind_btWheelInfo__get_m_rollInfluence_p0 = Module["_emscripten_bind_btWheelInfo__get_m_rollInfluence_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_rollInfluence_p0"]; +var _emscripten_bind_btRaycastVehicle__getForwardVector_p0 = Module["_emscripten_bind_btRaycastVehicle__getForwardVector_p0"] = asm["_emscripten_bind_btRaycastVehicle__getForwardVector_p0"]; +var _emscripten_bind_btCollisionWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btCollisionWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btCollisionWorld__updateSingleAabb_p1"]; +var _emscripten_bind_btAxisSweep3__setAabb_p4 = Module["_emscripten_bind_btAxisSweep3__setAabb_p4"] = asm["_emscripten_bind_btAxisSweep3__setAabb_p4"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1"]; +var _emscripten_bind_btCapsuleShape__setUserPointer_p1 = Module["_emscripten_bind_btCapsuleShape__setUserPointer_p1"] = asm["_emscripten_bind_btCapsuleShape__setUserPointer_p1"]; +var _emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1"]; +var _emscripten_bind_btConcaveShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConcaveShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConcaveShape__serializeSingleShape_p1"]; +var _emscripten_bind_btConvexHullShape__getNumVertices_p0 = Module["_emscripten_bind_btConvexHullShape__getNumVertices_p0"] = asm["_emscripten_bind_btConvexHullShape__getNumVertices_p0"]; +var _emscripten_bind_btRigidBody__translate_p1 = Module["_emscripten_bind_btRigidBody__translate_p1"] = asm["_emscripten_bind_btRigidBody__translate_p1"]; +var _emscripten_bind_btRigidBody__getActivationState_p0 = Module["_emscripten_bind_btRigidBody__getActivationState_p0"] = asm["_emscripten_bind_btRigidBody__getActivationState_p0"]; +var _emscripten_bind_btPersistentManifold__set_m_index1a_p1 = Module["_emscripten_bind_btPersistentManifold__set_m_index1a_p1"] = asm["_emscripten_bind_btPersistentManifold__set_m_index1a_p1"]; +var _emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0"]; +var _emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btAxisSweep3__createProxy_p8 = Module["_emscripten_bind_btAxisSweep3__createProxy_p8"] = asm["_emscripten_bind_btAxisSweep3__createProxy_p8"]; +var _emscripten_bind_btUniversalConstraint__getAxis_p1 = Module["_emscripten_bind_btUniversalConstraint__getAxis_p1"] = asm["_emscripten_bind_btUniversalConstraint__getAxis_p1"]; +var _emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0 = Module["_emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0"] = asm["_emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0"]; +var _emscripten_bind_btSliderConstraint__calculateTransforms_p2 = Module["_emscripten_bind_btSliderConstraint__calculateTransforms_p2"] = asm["_emscripten_bind_btSliderConstraint__calculateTransforms_p2"]; +var _emscripten_bind_btDbvtProxy__getUid_p0 = Module["_emscripten_bind_btDbvtProxy__getUid_p0"] = asm["_emscripten_bind_btDbvtProxy__getUid_p0"]; +var _emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0"]; +var _emscripten_bind_btCompoundShape__getChildTransform_p1 = Module["_emscripten_bind_btCompoundShape__getChildTransform_p1"] = asm["_emscripten_bind_btCompoundShape__getChildTransform_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0 = Module["_emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0"] = asm["_emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0"]; +var _emscripten_bind_btStridingMeshInterface__preallocateIndices_p1 = Module["_emscripten_bind_btStridingMeshInterface__preallocateIndices_p1"] = asm["_emscripten_bind_btStridingMeshInterface__preallocateIndices_p1"]; +var _emscripten_bind_btRigidBody__mergesSimulationIslands_p0 = Module["_emscripten_bind_btRigidBody__mergesSimulationIslands_p0"] = asm["_emscripten_bind_btRigidBody__mergesSimulationIslands_p0"]; +var _emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1"]; +var _emscripten_bind_btTriangleMesh__getNumSubParts_p0 = Module["_emscripten_bind_btTriangleMesh__getNumSubParts_p0"] = asm["_emscripten_bind_btTriangleMesh__getNumSubParts_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0"]; +var _emscripten_bind_btTriangleMesh__getUse4componentVertices_p0 = Module["_emscripten_bind_btTriangleMesh__getUse4componentVertices_p0"] = asm["_emscripten_bind_btTriangleMesh__getUse4componentVertices_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0"]; +var _emscripten_bind_btSphereShape__setUnscaledRadius_p1 = Module["_emscripten_bind_btSphereShape__setUnscaledRadius_p1"] = asm["_emscripten_bind_btSphereShape__setUnscaledRadius_p1"]; +var _emscripten_bind_btVector4__setInterpolate3_p3 = Module["_emscripten_bind_btVector4__setInterpolate3_p3"] = asm["_emscripten_bind_btVector4__setInterpolate3_p3"]; +var _emscripten_bind_btIndexedMesh__set_m_numTriangles_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_numTriangles_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_numTriangles_p1"]; +var _emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btSphereShape____destroy___p0 = Module["_emscripten_bind_btSphereShape____destroy___p0"] = asm["_emscripten_bind_btSphereShape____destroy___p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0"]; +var _emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0"]; +var _emscripten_bind_btSliderConstraint__getLowerLinLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getLowerLinLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getLowerLinLimit_p0"]; +var _emscripten_bind_btCapsuleShapeZ__serialize_p2 = Module["_emscripten_bind_btCapsuleShapeZ__serialize_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__serialize_p2"]; +var _emscripten_bind_btDynamicsWorld__addCollisionObject_p1 = Module["_emscripten_bind_btDynamicsWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btDynamicsWorld__addCollisionObject_p1"]; +var _emscripten_bind_btDynamicsWorld__addCollisionObject_p2 = Module["_emscripten_bind_btDynamicsWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btDynamicsWorld__addCollisionObject_p2"]; +var _emscripten_bind_btDynamicsWorld__addCollisionObject_p3 = Module["_emscripten_bind_btDynamicsWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btDynamicsWorld__addCollisionObject_p3"]; +var _emscripten_bind_btStaticPlaneShape__getShapeType_p0 = Module["_emscripten_bind_btStaticPlaneShape__getShapeType_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getShapeType_p0"]; +var _emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1 = Module["_emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1"] = asm["_emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2"]; +var _emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btManifoldPoint__getLifeTime_p0 = Module["_emscripten_bind_btManifoldPoint__getLifeTime_p0"] = asm["_emscripten_bind_btManifoldPoint__getLifeTime_p0"]; +var _emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5 = Module["_emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5"] = asm["_emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5"]; +var _emscripten_bind_btTransform__op_set_p1 = Module["_emscripten_bind_btTransform__op_set_p1"] = asm["_emscripten_bind_btTransform__op_set_p1"]; +var _emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1 = Module["_emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0"]; +var _emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0"]; +var _emscripten_bind_btCollisionShape__isConvex2d_p0 = Module["_emscripten_bind_btCollisionShape__isConvex2d_p0"] = asm["_emscripten_bind_btCollisionShape__isConvex2d_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1"]; +var _emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0"]; +var _emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0"]; +var _emscripten_bind_btJacobianEntry__getRelativeVelocity_p4 = Module["_emscripten_bind_btJacobianEntry__getRelativeVelocity_p4"] = asm["_emscripten_bind_btJacobianEntry__getRelativeVelocity_p4"]; +var _emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0"]; +var _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1"]; +var _emscripten_bind_btUniformScalingShape__getName_p0 = Module["_emscripten_bind_btUniformScalingShape__getName_p0"] = asm["_emscripten_bind_btUniformScalingShape__getName_p0"]; +var _emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2 = Module["_emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2"] = asm["_emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2"]; +var _emscripten_bind_btContinuousDynamicsWorld__addAction_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addAction_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addAction_p1"]; +var _emscripten_bind_btBoxShape__setUserPointer_p1 = Module["_emscripten_bind_btBoxShape__setUserPointer_p1"] = asm["_emscripten_bind_btBoxShape__setUserPointer_p1"]; +var _emscripten_bind_btCollisionObject__setCollisionFlags_p1 = Module["_emscripten_bind_btCollisionObject__setCollisionFlags_p1"] = asm["_emscripten_bind_btCollisionObject__setCollisionFlags_p1"]; +var _emscripten_bind_btConeShapeZ__isSoftBody_p0 = Module["_emscripten_bind_btConeShapeZ__isSoftBody_p0"] = asm["_emscripten_bind_btConeShapeZ__isSoftBody_p0"]; +var _emscripten_bind_btConstraintSetting____destroy___p0 = Module["_emscripten_bind_btConstraintSetting____destroy___p0"] = asm["_emscripten_bind_btConstraintSetting____destroy___p0"]; +var _emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0 = Module["_emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0"] = asm["_emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1"]; +var _emscripten_bind_btOptimizedBvh____destroy___p0 = Module["_emscripten_bind_btOptimizedBvh____destroy___p0"] = asm["_emscripten_bind_btOptimizedBvh____destroy___p0"]; +var _emscripten_bind_btRigidBody__getOrientation_p0 = Module["_emscripten_bind_btRigidBody__getOrientation_p0"] = asm["_emscripten_bind_btRigidBody__getOrientation_p0"]; +var _emscripten_bind_btUniversalConstraint__getAngle2_p0 = Module["_emscripten_bind_btUniversalConstraint__getAngle2_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAngle2_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6 = Module["_emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6"]; +var _emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1"]; +var _emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btAxisSweep3__getNumHandles_p0 = Module["_emscripten_bind_btAxisSweep3__getNumHandles_p0"] = asm["_emscripten_bind_btAxisSweep3__getNumHandles_p0"]; +var _emscripten_bind_btRigidBody__setCcdMotionThreshold_p1 = Module["_emscripten_bind_btRigidBody__setCcdMotionThreshold_p1"] = asm["_emscripten_bind_btRigidBody__setCcdMotionThreshold_p1"]; +var _emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0"]; +var _emscripten_bind_btDbvtProxy__isConcave_p1 = Module["_emscripten_bind_btDbvtProxy__isConcave_p1"] = asm["_emscripten_bind_btDbvtProxy__isConcave_p1"]; +var _emscripten_bind_btVector4__triple_p2 = Module["_emscripten_bind_btVector4__triple_p2"] = asm["_emscripten_bind_btVector4__triple_p2"]; +var _emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2 = Module["_emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2"] = asm["_emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2"]; +var _emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0 = Module["_emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0"] = asm["_emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0"]; +var _emscripten_bind_btQuaternion__getAxis_p0 = Module["_emscripten_bind_btQuaternion__getAxis_p0"] = asm["_emscripten_bind_btQuaternion__getAxis_p0"]; +var _emscripten_bind_btVector3__getZ_p0 = Module["_emscripten_bind_btVector3__getZ_p0"] = asm["_emscripten_bind_btVector3__getZ_p0"]; +var _emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1 = Module["_emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1"]; +var _emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1"]; +var _emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1"]; +var _emscripten_bind_btIndexedMesh__set_m_numVertices_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_numVertices_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_numVertices_p1"]; +var _emscripten_bind_btHashInt__btHashInt_p1 = Module["_emscripten_bind_btHashInt__btHashInt_p1"] = asm["_emscripten_bind_btHashInt__btHashInt_p1"]; +var _emscripten_bind_btConstraintSetting__get_m_tau_p0 = Module["_emscripten_bind_btConstraintSetting__get_m_tau_p0"] = asm["_emscripten_bind_btConstraintSetting__get_m_tau_p0"]; +var _emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1"]; +var _emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0"]; +var _emscripten_bind_btCapsuleShape__getHalfHeight_p0 = Module["_emscripten_bind_btCapsuleShape__getHalfHeight_p0"] = asm["_emscripten_bind_btCapsuleShape__getHalfHeight_p0"]; +var _emscripten_bind_btSliderConstraint__getLinDepth_p0 = Module["_emscripten_bind_btSliderConstraint__getLinDepth_p0"] = asm["_emscripten_bind_btSliderConstraint__getLinDepth_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1"]; +var _emscripten_bind_btHashString__set_m_hash_p1 = Module["_emscripten_bind_btHashString__set_m_hash_p1"] = asm["_emscripten_bind_btHashString__set_m_hash_p1"]; +var _emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1"]; +var _emscripten_bind_btConeTwistConstraint__getInfo1_p1 = Module["_emscripten_bind_btConeTwistConstraint__getInfo1_p1"] = asm["_emscripten_bind_btConeTwistConstraint__getInfo1_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4"]; +var _emscripten_bind_btConeShapeZ__getMargin_p0 = Module["_emscripten_bind_btConeShapeZ__getMargin_p0"] = asm["_emscripten_bind_btConeShapeZ__getMargin_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0"]; +var _emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1"]; +var _emscripten_bind_btSerializer__getUniquePointer_p1 = Module["_emscripten_bind_btSerializer__getUniquePointer_p1"] = asm["_emscripten_bind_btSerializer__getUniquePointer_p1"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1"]; +var _emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btConvexInternalShape__isConcave_p0 = Module["_emscripten_bind_btConvexInternalShape__isConcave_p0"] = asm["_emscripten_bind_btConvexInternalShape__isConcave_p0"]; +var _emscripten_bind_btVector4__getW_p0 = Module["_emscripten_bind_btVector4__getW_p0"] = asm["_emscripten_bind_btVector4__getW_p0"]; +var _emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0 = Module["_emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0"] = asm["_emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0"]; +var _emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btVector3__serialize_p1 = Module["_emscripten_bind_btVector3__serialize_p1"] = asm["_emscripten_bind_btVector3__serialize_p1"]; +var _emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3 = Module["_emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3"] = asm["_emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3"]; +var _emscripten_bind_btCollisionObject__isKinematicObject_p0 = Module["_emscripten_bind_btCollisionObject__isKinematicObject_p0"] = asm["_emscripten_bind_btCollisionObject__isKinematicObject_p0"]; +var _emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1"]; +var _emscripten_bind_btSliderConstraint__getUid_p0 = Module["_emscripten_bind_btSliderConstraint__getUid_p0"] = asm["_emscripten_bind_btSliderConstraint__getUid_p0"]; +var _emscripten_bind_btDynamicsWorld__serialize_p1 = Module["_emscripten_bind_btDynamicsWorld__serialize_p1"] = asm["_emscripten_bind_btDynamicsWorld__serialize_p1"]; +var _emscripten_bind_btConeShapeZ__serialize_p2 = Module["_emscripten_bind_btConeShapeZ__serialize_p2"] = asm["_emscripten_bind_btConeShapeZ__serialize_p2"]; +var _emscripten_bind_btRaycastVehicle__getUpAxis_p0 = Module["_emscripten_bind_btRaycastVehicle__getUpAxis_p0"] = asm["_emscripten_bind_btRaycastVehicle__getUpAxis_p0"]; +var _emscripten_bind_btCylinderShapeZ__getRadius_p0 = Module["_emscripten_bind_btCylinderShapeZ__getRadius_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getRadius_p0"]; +var _emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1 = Module["_emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1"] = asm["_emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1"]; +var _emscripten_bind_btConvexHullShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConvexHullShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConvexHullShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btCylinderShape__btCylinderShape_p1 = Module["_emscripten_bind_btCylinderShape__btCylinderShape_p1"] = asm["_emscripten_bind_btCylinderShape__btCylinderShape_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld____destroy___p0 = Module["_emscripten_bind_btSimpleDynamicsWorld____destroy___p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld____destroy___p0"]; +var _emscripten_bind_btIDebugDraw__drawPlane_p4 = Module["_emscripten_bind_btIDebugDraw__drawPlane_p4"] = asm["_emscripten_bind_btIDebugDraw__drawPlane_p4"]; +var _emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1 = Module["_emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1"]; +var _emscripten_bind_btRaycastVehicle__setUserConstraintType_p1 = Module["_emscripten_bind_btRaycastVehicle__setUserConstraintType_p1"] = asm["_emscripten_bind_btRaycastVehicle__setUserConstraintType_p1"]; +var _memcpy = Module["_memcpy"] = asm["_memcpy"]; +var _emscripten_bind_btCapsuleShape__serializeSingleShape_p1 = Module["_emscripten_bind_btCapsuleShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btCapsuleShape__serializeSingleShape_p1"]; +var _emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0 = Module["_emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0"]; +var _emscripten_bind_btWheelInfo__get_m_steering_p0 = Module["_emscripten_bind_btWheelInfo__get_m_steering_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_steering_p0"]; +var _emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btRigidBody__hasContactResponse_p0 = Module["_emscripten_bind_btRigidBody__hasContactResponse_p0"] = asm["_emscripten_bind_btRigidBody__hasContactResponse_p0"]; +var _emscripten_bind_btGhostObject__isKinematicObject_p0 = Module["_emscripten_bind_btGhostObject__isKinematicObject_p0"] = asm["_emscripten_bind_btGhostObject__isKinematicObject_p0"]; +var _emscripten_bind_btBroadphasePair__btBroadphasePair_p2 = Module["_emscripten_bind_btBroadphasePair__btBroadphasePair_p2"] = asm["_emscripten_bind_btBroadphasePair__btBroadphasePair_p2"]; +var _emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0"]; +var _emscripten_bind_btPersistentManifold__getBody1_p0 = Module["_emscripten_bind_btPersistentManifold__getBody1_p0"] = asm["_emscripten_bind_btPersistentManifold__getBody1_p0"]; +var _emscripten_bind_btUniversalConstraint__getAnchor2_p0 = Module["_emscripten_bind_btUniversalConstraint__getAnchor2_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAnchor2_p0"]; +var _emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6"]; +var _emscripten_bind_btSphereShape__isConcave_p0 = Module["_emscripten_bind_btSphereShape__isConcave_p0"] = asm["_emscripten_bind_btSphereShape__isConcave_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0"]; +var _emscripten_bind_btRigidBody__getBroadphaseHandle_p0 = Module["_emscripten_bind_btRigidBody__getBroadphaseHandle_p0"] = asm["_emscripten_bind_btRigidBody__getBroadphaseHandle_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1"]; +var _emscripten_bind_btAxisSweep3____destroy___p0 = Module["_emscripten_bind_btAxisSweep3____destroy___p0"] = asm["_emscripten_bind_btAxisSweep3____destroy___p0"]; +var _emscripten_bind_btSliderConstraint__getDampingLimLin_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingLimLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingLimLin_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1"]; +var _emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__serialize_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__serialize_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__serialize_p2"]; +var _emscripten_bind_btConeShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConeShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConeShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btDbvtProxy__set_m_uniqueId_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_uniqueId_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_uniqueId_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0"]; +var _emscripten_bind_btCylinderShapeX__isConcave_p0 = Module["_emscripten_bind_btCylinderShapeX__isConcave_p0"] = asm["_emscripten_bind_btCylinderShapeX__isConcave_p0"]; +var _emscripten_bind_btConeShapeX__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConeShapeX__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConeShapeX__getAabbNonVirtual_p3"]; +var _emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4 = Module["_emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0"]; +var _emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0"]; +var _emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1"]; +var _emscripten_bind_btCapsuleShape__isPolyhedral_p0 = Module["_emscripten_bind_btCapsuleShape__isPolyhedral_p0"] = asm["_emscripten_bind_btCapsuleShape__isPolyhedral_p0"]; +var _emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0 = Module["_emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0"] = asm["_emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0"]; +var _emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__isConvex_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isConvex_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isConvex_p0"]; +var _emscripten_bind_btConvexShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_damping_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_damping_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_damping_p1"]; +var _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btSimpleBroadphase__getAabb_p3 = Module["_emscripten_bind_btSimpleBroadphase__getAabb_p3"] = asm["_emscripten_bind_btSimpleBroadphase__getAabb_p3"]; +var _emscripten_bind_btSliderConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btSliderConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btSliderConstraint__getRigidBodyB_p0"]; +var _emscripten_bind_btPersistentManifold__validContactDistance_p1 = Module["_emscripten_bind_btPersistentManifold__validContactDistance_p1"] = asm["_emscripten_bind_btPersistentManifold__validContactDistance_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_localPointB_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_localPointB_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_localPointB_p1"]; +var _emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0"]; +var _emscripten_bind_btBroadphaseProxy__isConvex_p1 = Module["_emscripten_bind_btBroadphaseProxy__isConvex_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isConvex_p1"]; +var _emscripten_bind_btGhostObject__setActivationState_p1 = Module["_emscripten_bind_btGhostObject__setActivationState_p1"] = asm["_emscripten_bind_btGhostObject__setActivationState_p1"]; +var _emscripten_bind_btCapsuleShapeZ__getMarginNV_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getMarginNV_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getMarginNV_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__isLimited_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__isLimited_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__isLimited_p1"]; +var _emscripten_bind_btDbvtBroadphase__rayTest_p3 = Module["_emscripten_bind_btDbvtBroadphase__rayTest_p3"] = asm["_emscripten_bind_btDbvtBroadphase__rayTest_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1"]; +var _emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0"]; +var _emscripten_bind_btDbvtProxy__set_stage_p1 = Module["_emscripten_bind_btDbvtProxy__set_stage_p1"] = asm["_emscripten_bind_btDbvtProxy__set_stage_p1"]; +var _emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btConvexShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexShape__isPolyhedral_p0"]; +var _emscripten_bind_btStridingMeshInterface__serialize_p2 = Module["_emscripten_bind_btStridingMeshInterface__serialize_p2"] = asm["_emscripten_bind_btStridingMeshInterface__serialize_p2"]; +var _emscripten_bind_btBvhTriangleMeshShape__isConvex_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__isConvex_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__isConvex_p0"]; +var _emscripten_bind_btCollisionObject__btCollisionObject_p0 = Module["_emscripten_bind_btCollisionObject__btCollisionObject_p0"] = asm["_emscripten_bind_btCollisionObject__btCollisionObject_p0"]; +var _emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9 = Module["_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9"] = asm["_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9"]; +var _emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8 = Module["_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8"] = asm["_emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8"]; +var _emscripten_bind_btGeneric6DofConstraint__getObjectType_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getObjectType_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getObjectType_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0"]; +var _emscripten_bind_btRaycastVehicle__resetSuspension_p0 = Module["_emscripten_bind_btRaycastVehicle__resetSuspension_p0"] = asm["_emscripten_bind_btRaycastVehicle__resetSuspension_p0"]; +var _emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0 = Module["_emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0"]; +var _emscripten_bind_btConeShapeX__isInfinite_p0 = Module["_emscripten_bind_btConeShapeX__isInfinite_p0"] = asm["_emscripten_bind_btConeShapeX__isInfinite_p0"]; +var _emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0 = Module["_emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0"] = asm["_emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0"]; +var _emscripten_bind_btConeShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConeShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConeShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btRigidBody__applyGravity_p0 = Module["_emscripten_bind_btRigidBody__applyGravity_p0"] = asm["_emscripten_bind_btRigidBody__applyGravity_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1"]; +var _emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btCylinderShapeZ__getUserPointer_p0 = Module["_emscripten_bind_btCylinderShapeZ__getUserPointer_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getUserPointer_p0"]; +var _emscripten_bind_btRigidBody__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btRigidBody__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btRigidBody__getContactProcessingThreshold_p0"]; +var _emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0"]; +var _emscripten_bind_btConstraintSetting__set_m_damping_p1 = Module["_emscripten_bind_btConstraintSetting__set_m_damping_p1"] = asm["_emscripten_bind_btConstraintSetting__set_m_damping_p1"]; +var _emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0"]; +var _emscripten_bind_btTypedConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btTypedConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btTypedConstraint__get_m_objectType_p0"]; +var _emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3 = Module["_emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3"] = asm["_emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3"]; +var _emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0"]; +var _emscripten_bind_btSliderConstraint__getInfo2_p1 = Module["_emscripten_bind_btSliderConstraint__getInfo2_p1"] = asm["_emscripten_bind_btSliderConstraint__getInfo2_p1"]; +var _emscripten_bind_btEmptyShape__getUserPointer_p0 = Module["_emscripten_bind_btEmptyShape__getUserPointer_p0"] = asm["_emscripten_bind_btEmptyShape__getUserPointer_p0"]; +var _emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0"]; +var _emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0 = Module["_emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0"] = asm["_emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0"]; +var _emscripten_bind_btTriangleMesh__addTriangle_p4 = Module["_emscripten_bind_btTriangleMesh__addTriangle_p4"] = asm["_emscripten_bind_btTriangleMesh__addTriangle_p4"]; +var _emscripten_bind_btConeShapeX__getMargin_p0 = Module["_emscripten_bind_btConeShapeX__getMargin_p0"] = asm["_emscripten_bind_btConeShapeX__getMargin_p0"]; +var _emscripten_bind_btSphereShape__getLocalScaling_p0 = Module["_emscripten_bind_btSphereShape__getLocalScaling_p0"] = asm["_emscripten_bind_btSphereShape__getLocalScaling_p0"]; +var _emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6 = Module["_emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6"]; +var _emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1"]; +var _emscripten_bind_btConeShapeZ__getLocalScaling_p0 = Module["_emscripten_bind_btConeShapeZ__getLocalScaling_p0"] = asm["_emscripten_bind_btConeShapeZ__getLocalScaling_p0"]; +var _emscripten_bind_btCompoundShape__addChildShape_p2 = Module["_emscripten_bind_btCompoundShape__addChildShape_p2"] = asm["_emscripten_bind_btCompoundShape__addChildShape_p2"]; +var _emscripten_bind_btVector3__setZ_p1 = Module["_emscripten_bind_btVector3__setZ_p1"] = asm["_emscripten_bind_btVector3__setZ_p1"]; +var _emscripten_bind_btConeTwistConstraint__getParam_p1 = Module["_emscripten_bind_btConeTwistConstraint__getParam_p1"] = asm["_emscripten_bind_btConeTwistConstraint__getParam_p1"]; +var _emscripten_bind_btConeTwistConstraint__getParam_p2 = Module["_emscripten_bind_btConeTwistConstraint__getParam_p2"] = asm["_emscripten_bind_btConeTwistConstraint__getParam_p2"]; +var _emscripten_bind_btAxisSweep3__quantize_p3 = Module["_emscripten_bind_btAxisSweep3__quantize_p3"] = asm["_emscripten_bind_btAxisSweep3__quantize_p3"]; +var _emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1"]; +var _emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btConvexShape__isConcave_p0 = Module["_emscripten_bind_btConvexShape__isConcave_p0"] = asm["_emscripten_bind_btConvexShape__isConcave_p0"]; +var _emscripten_bind_btConvexHullShape__setMargin_p1 = Module["_emscripten_bind_btConvexHullShape__setMargin_p1"] = asm["_emscripten_bind_btConvexHullShape__setMargin_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0"]; +var _emscripten_bind_btCapsuleShape__getMarginNV_p0 = Module["_emscripten_bind_btCapsuleShape__getMarginNV_p0"] = asm["_emscripten_bind_btCapsuleShape__getMarginNV_p0"]; +var _emscripten_bind_btCollisionWorld__debugDrawObject_p3 = Module["_emscripten_bind_btCollisionWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btCollisionWorld__debugDrawObject_p3"]; +var _emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0"]; +var _emscripten_bind_btQuaternion____destroy___p0 = Module["_emscripten_bind_btQuaternion____destroy___p0"] = asm["_emscripten_bind_btQuaternion____destroy___p0"]; +var _emscripten_bind_btManifoldPoint__set_m_localPointA_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_localPointA_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_localPointA_p1"]; +var _emscripten_bind_btSliderConstraint__setDampingLimAng_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingLimAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingLimAng_p1"]; +var _emscripten_bind_btTriangleMesh__addTriangle_p3 = Module["_emscripten_bind_btTriangleMesh__addTriangle_p3"] = asm["_emscripten_bind_btTriangleMesh__addTriangle_p3"]; +var _emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1"]; +var _emscripten_bind_btConeShapeZ__setLocalScaling_p1 = Module["_emscripten_bind_btConeShapeZ__setLocalScaling_p1"] = asm["_emscripten_bind_btConeShapeZ__setLocalScaling_p1"]; +var _emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7"]; +var _emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1"]; +var _emscripten_bind_btUniversalConstraint__getParam_p1 = Module["_emscripten_bind_btUniversalConstraint__getParam_p1"] = asm["_emscripten_bind_btUniversalConstraint__getParam_p1"]; +var _emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btConeShape__getMargin_p0 = Module["_emscripten_bind_btConeShape__getMargin_p0"] = asm["_emscripten_bind_btConeShape__getMargin_p0"]; +var _emscripten_bind_btMatrix3x3__getEulerZYX_p3 = Module["_emscripten_bind_btMatrix3x3__getEulerZYX_p3"] = asm["_emscripten_bind_btMatrix3x3__getEulerZYX_p3"]; +var _emscripten_bind_btWheelInfo__get_m_clientInfo_p0 = Module["_emscripten_bind_btWheelInfo__get_m_clientInfo_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_clientInfo_p0"]; +var _emscripten_bind_btMatrix3x3__getEulerZYX_p4 = Module["_emscripten_bind_btMatrix3x3__getEulerZYX_p4"] = asm["_emscripten_bind_btMatrix3x3__getEulerZYX_p4"]; +var _emscripten_bind_btTriangleIndexVertexArray____destroy___p0 = Module["_emscripten_bind_btTriangleIndexVertexArray____destroy___p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray____destroy___p0"]; +var _emscripten_bind_btHashString__portableStringCompare_p2 = Module["_emscripten_bind_btHashString__portableStringCompare_p2"] = asm["_emscripten_bind_btHashString__portableStringCompare_p2"]; +var _emscripten_bind_btCollisionShape__isSoftBody_p0 = Module["_emscripten_bind_btCollisionShape__isSoftBody_p0"] = asm["_emscripten_bind_btCollisionShape__isSoftBody_p0"]; +var _emscripten_bind_btCapsuleShapeZ__isNonMoving_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isNonMoving_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isNonMoving_p0"]; +var _emscripten_bind_btSliderConstraint__isEnabled_p0 = Module["_emscripten_bind_btSliderConstraint__isEnabled_p0"] = asm["_emscripten_bind_btSliderConstraint__isEnabled_p0"]; +var _emscripten_bind_btConcaveShape__setMargin_p1 = Module["_emscripten_bind_btConcaveShape__setMargin_p1"] = asm["_emscripten_bind_btConcaveShape__setMargin_p1"]; +var _emscripten_bind_btCollisionWorld__getDispatcher_p0 = Module["_emscripten_bind_btCollisionWorld__getDispatcher_p0"] = asm["_emscripten_bind_btCollisionWorld__getDispatcher_p0"]; +var _emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1 = Module["_emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1"] = asm["_emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0"]; +var _emscripten_bind_btUniformScalingShape__getLocalScaling_p0 = Module["_emscripten_bind_btUniformScalingShape__getLocalScaling_p0"] = asm["_emscripten_bind_btUniformScalingShape__getLocalScaling_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9 = Module["_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9"]; +var _emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0 = Module["_emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0"]; +var _emscripten_bind_btContactConstraint__getContactManifold_p0 = Module["_emscripten_bind_btContactConstraint__getContactManifold_p0"] = asm["_emscripten_bind_btContactConstraint__getContactManifold_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btBU_Simplex1to4__isConvex_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isConvex_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isConvex_p0"]; +var _emscripten_bind_btMultiSphereShape__getName_p0 = Module["_emscripten_bind_btMultiSphereShape__getName_p0"] = asm["_emscripten_bind_btMultiSphereShape__getName_p0"]; +var _emscripten_bind_btStaticPlaneShape__processAllTriangles_p3 = Module["_emscripten_bind_btStaticPlaneShape__processAllTriangles_p3"] = asm["_emscripten_bind_btStaticPlaneShape__processAllTriangles_p3"]; +var _emscripten_bind_btBU_Simplex1to4__getIndex_p1 = Module["_emscripten_bind_btBU_Simplex1to4__getIndex_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__getIndex_p1"]; +var _emscripten_bind_CProfileNode__Get_Child_p0 = Module["_emscripten_bind_CProfileNode__Get_Child_p0"] = asm["_emscripten_bind_CProfileNode__Get_Child_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1"]; +var _emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1 = Module["_emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1"] = asm["_emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6 = Module["_emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6"]; +var _emscripten_bind_btConvexHullShape__serialize_p2 = Module["_emscripten_bind_btConvexHullShape__serialize_p2"] = asm["_emscripten_bind_btConvexHullShape__serialize_p2"]; +var _emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8"]; +var _emscripten_bind_btManifoldPoint____destroy___p0 = Module["_emscripten_bind_btManifoldPoint____destroy___p0"] = asm["_emscripten_bind_btManifoldPoint____destroy___p0"]; +var _emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btQuantizedBvh____destroy___p0 = Module["_emscripten_bind_btQuantizedBvh____destroy___p0"] = asm["_emscripten_bind_btQuantizedBvh____destroy___p0"]; +var _emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0 = Module["_emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0"]; +var _emscripten_bind_btRigidBody__getMotionState_p0 = Module["_emscripten_bind_btRigidBody__getMotionState_p0"] = asm["_emscripten_bind_btRigidBody__getMotionState_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0"]; +var _emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0"]; +var _emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0 = Module["_emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0"] = asm["_emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0"]; +var _emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1 = Module["_emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1"] = asm["_emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1"]; +var _emscripten_bind_btAxisSweep3__getAabb_p3 = Module["_emscripten_bind_btAxisSweep3__getAabb_p3"] = asm["_emscripten_bind_btAxisSweep3__getAabb_p3"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2"]; +var _emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1 = Module["_emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1"] = asm["_emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1"]; +var _emscripten_bind_btCollisionDispatcher__setNearCallback_p1 = Module["_emscripten_bind_btCollisionDispatcher__setNearCallback_p1"] = asm["_emscripten_bind_btCollisionDispatcher__setNearCallback_p1"]; +var _emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4 = Module["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4"] = asm["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4"]; +var _emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4 = Module["_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4"]; +var _emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1"]; +var _emscripten_bind_btGhostObject__getIslandTag_p0 = Module["_emscripten_bind_btGhostObject__getIslandTag_p0"] = asm["_emscripten_bind_btGhostObject__getIslandTag_p0"]; +var _emscripten_bind_btCollisionWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__removeCollisionObject_p1"]; +var _emscripten_bind_btCompoundShape__removeChildShape_p1 = Module["_emscripten_bind_btCompoundShape__removeChildShape_p1"] = asm["_emscripten_bind_btCompoundShape__removeChildShape_p1"]; +var _emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btContactConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btContactConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btContactConstraint__getUserConstraintType_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0"]; +var _emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0 = Module["_emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0"] = asm["_emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0"]; +var _emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2 = Module["_emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2"] = asm["_emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2"]; +var _emscripten_bind_btAngularLimit__getHigh_p0 = Module["_emscripten_bind_btAngularLimit__getHigh_p0"] = asm["_emscripten_bind_btAngularLimit__getHigh_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getRestitution_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getRestitution_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getRestitution_p0"]; +var _emscripten_bind_btMatrix3x3__determinant_p0 = Module["_emscripten_bind_btMatrix3x3__determinant_p0"] = asm["_emscripten_bind_btMatrix3x3__determinant_p0"]; +var _emscripten_bind_btRigidBody__getTotalForce_p0 = Module["_emscripten_bind_btRigidBody__getTotalForce_p0"] = asm["_emscripten_bind_btRigidBody__getTotalForce_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1"]; +var _emscripten_bind_btCylinderShape__isConvex_p0 = Module["_emscripten_bind_btCylinderShape__isConvex_p0"] = asm["_emscripten_bind_btCylinderShape__isConvex_p0"]; +var _emscripten_bind_CProfileNode__CProfileNode_p2 = Module["_emscripten_bind_CProfileNode__CProfileNode_p2"] = asm["_emscripten_bind_CProfileNode__CProfileNode_p2"]; +var _emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1 = Module["_emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1"] = asm["_emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1"]; +var _emscripten_bind_btManifoldResult__getBody0Internal_p0 = Module["_emscripten_bind_btManifoldResult__getBody0Internal_p0"] = asm["_emscripten_bind_btManifoldResult__getBody0Internal_p0"]; +var _emscripten_bind_btConeShapeX__isCompound_p0 = Module["_emscripten_bind_btConeShapeX__isCompound_p0"] = asm["_emscripten_bind_btConeShapeX__isCompound_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0"]; +var _emscripten_bind_btHingeConstraint__btHingeConstraint_p3 = Module["_emscripten_bind_btHingeConstraint__btHingeConstraint_p3"] = asm["_emscripten_bind_btHingeConstraint__btHingeConstraint_p3"]; +var _emscripten_bind_btBoxShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btBoxShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btBoxShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btSphereShape__getRadius_p0 = Module["_emscripten_bind_btSphereShape__getRadius_p0"] = asm["_emscripten_bind_btSphereShape__getRadius_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0"]; +var _emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_btHingeConstraint__getHingeAngle_p0 = Module["_emscripten_bind_btHingeConstraint__getHingeAngle_p0"] = asm["_emscripten_bind_btHingeConstraint__getHingeAngle_p0"]; +var _emscripten_bind_btHingeConstraint__getHingeAngle_p2 = Module["_emscripten_bind_btHingeConstraint__getHingeAngle_p2"] = asm["_emscripten_bind_btHingeConstraint__getHingeAngle_p2"]; +var _emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1"]; +var _emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2"]; +var _emscripten_bind_btOptimizedBvh__quantize_p3 = Module["_emscripten_bind_btOptimizedBvh__quantize_p3"] = asm["_emscripten_bind_btOptimizedBvh__quantize_p3"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1"]; +var _emscripten_bind_btAngularLimit__test_p1 = Module["_emscripten_bind_btAngularLimit__test_p1"] = asm["_emscripten_bind_btAngularLimit__test_p1"]; +var _emscripten_bind_btContactConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btContactConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btContactConstraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1"]; +var _emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btDynamicsWorld__setGravity_p1 = Module["_emscripten_bind_btDynamicsWorld__setGravity_p1"] = asm["_emscripten_bind_btDynamicsWorld__setGravity_p1"]; +var _emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1 = Module["_emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1"] = asm["_emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0"]; +var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0"]; +var _emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1"]; +var _emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1"]; +var _emscripten_bind_btCollisionShape__getUserPointer_p0 = Module["_emscripten_bind_btCollisionShape__getUserPointer_p0"] = asm["_emscripten_bind_btCollisionShape__getUserPointer_p0"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1"]; +var _emscripten_bind_btUniversalConstraint__setParam_p3 = Module["_emscripten_bind_btUniversalConstraint__setParam_p3"] = asm["_emscripten_bind_btUniversalConstraint__setParam_p3"]; +var _emscripten_bind_btUniversalConstraint__setParam_p2 = Module["_emscripten_bind_btUniversalConstraint__setParam_p2"] = asm["_emscripten_bind_btUniversalConstraint__setParam_p2"]; +var _emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1"]; +var _emscripten_bind_btManifoldResult__setPersistentManifold_p1 = Module["_emscripten_bind_btManifoldResult__setPersistentManifold_p1"] = asm["_emscripten_bind_btManifoldResult__setPersistentManifold_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1"]; +var _emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0 = Module["_emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0"]; +var _emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0 = Module["_emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0"] = asm["_emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0"]; +var _emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0 = Module["_emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0"] = asm["_emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0"]; +var _emscripten_bind_btJacobianEntry__btJacobianEntry_p0 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p0"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p0"]; +var _emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0 = Module["_emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2"]; +var _emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1"]; +var _emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btSliderConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btSliderConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btSliderConstraint__getAppliedImpulse_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__serialize_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__serialize_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__serialize_p1"]; +var _emscripten_bind_btConvexInternalShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexInternalShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexInternalShape__getAabbSlow_p3"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1"]; +var _emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1"]; +var _emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0"]; +var _emscripten_bind_btClock__op_set_p1 = Module["_emscripten_bind_btClock__op_set_p1"] = asm["_emscripten_bind_btClock__op_set_p1"]; +var _emscripten_bind_btStaticPlaneShape__isNonMoving_p0 = Module["_emscripten_bind_btStaticPlaneShape__isNonMoving_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isNonMoving_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getMargin_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getMargin_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getMargin_p0"]; +var _emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2 = Module["_emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2"] = asm["_emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btConvexHullShape__getVertex_p2 = Module["_emscripten_bind_btConvexHullShape__getVertex_p2"] = asm["_emscripten_bind_btConvexHullShape__getVertex_p2"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0"]; +var _emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1 = Module["_emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1"] = asm["_emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1"]; +var _emscripten_bind_btHashString____destroy___p0 = Module["_emscripten_bind_btHashString____destroy___p0"] = asm["_emscripten_bind_btHashString____destroy___p0"]; +var _emscripten_bind_btBU_Simplex1to4__isConvex2d_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isConvex2d_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isConvex2d_p0"]; +var _emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1 = Module["_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1"] = asm["_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1"]; +var _emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2 = Module["_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2"] = asm["_emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2"]; +var _emscripten_bind_btRaycastVehicle__updateFriction_p1 = Module["_emscripten_bind_btRaycastVehicle__updateFriction_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateFriction_p1"]; +var _emscripten_bind_btUniformScalingShape__isPolyhedral_p0 = Module["_emscripten_bind_btUniformScalingShape__isPolyhedral_p0"] = asm["_emscripten_bind_btUniformScalingShape__isPolyhedral_p0"]; +var _emscripten_bind_btTypedObject__btTypedObject_p1 = Module["_emscripten_bind_btTypedObject__btTypedObject_p1"] = asm["_emscripten_bind_btTypedObject__btTypedObject_p1"]; +var _emscripten_bind_btDbvtBroadphase__aabbTest_p3 = Module["_emscripten_bind_btDbvtBroadphase__aabbTest_p3"] = asm["_emscripten_bind_btDbvtBroadphase__aabbTest_p3"]; +var _emscripten_bind_btCylinderShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCylinderShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCylinderShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btCollisionShape__isConvex_p0 = Module["_emscripten_bind_btCollisionShape__isConvex_p0"] = asm["_emscripten_bind_btCollisionShape__isConvex_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getInfo2_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getInfo2_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getInfo2_p1"]; +var _emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1 = Module["_emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1"] = asm["_emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1"]; +var _emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2 = Module["_emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2"] = asm["_emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2"]; +var _emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0 = Module["_emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0"] = asm["_emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0"]; +var _emscripten_bind_btJacobianEntry__btJacobianEntry_p5 = Module["_emscripten_bind_btJacobianEntry__btJacobianEntry_p5"] = asm["_emscripten_bind_btJacobianEntry__btJacobianEntry_p5"]; +var _emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0"]; +var _emscripten_bind_btCapsuleShapeZ__getAabb_p3 = Module["_emscripten_bind_btCapsuleShapeZ__getAabb_p3"] = asm["_emscripten_bind_btCapsuleShapeZ__getAabb_p3"]; +var _emscripten_bind_btCylinderShapeX__getUserPointer_p0 = Module["_emscripten_bind_btCylinderShapeX__getUserPointer_p0"] = asm["_emscripten_bind_btCylinderShapeX__getUserPointer_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3"]; +var _emscripten_bind_btContactConstraint__getAppliedImpulse_p0 = Module["_emscripten_bind_btContactConstraint__getAppliedImpulse_p0"] = asm["_emscripten_bind_btContactConstraint__getAppliedImpulse_p0"]; +var _emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1"]; +var _memmove = Module["_memmove"] = asm["_memmove"]; +var _emscripten_bind_btCollisionDispatcher__clearManifold_p1 = Module["_emscripten_bind_btCollisionDispatcher__clearManifold_p1"] = asm["_emscripten_bind_btCollisionDispatcher__clearManifold_p1"]; +var _emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2 = Module["_emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2"] = asm["_emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2"]; +var _emscripten_bind_btIndexedMesh__get_m_vertexType_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_vertexType_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_vertexType_p0"]; +var _emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_localPointA_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_localPointA_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_localPointA_p0"]; +var _emscripten_bind_btMatrix3x3__op_get_p1 = Module["_emscripten_bind_btMatrix3x3__op_get_p1"] = asm["_emscripten_bind_btMatrix3x3__op_get_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3"]; +var _emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btTypedConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btTypedConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btTypedConstraint__getUserConstraintId_p0"]; +var _emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0 = Module["_emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0"] = asm["_emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getMargin_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getMargin_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getMargin_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0"]; +var _emscripten_bind_CProfileNode__CleanupMemory_p0 = Module["_emscripten_bind_CProfileNode__CleanupMemory_p0"] = asm["_emscripten_bind_CProfileNode__CleanupMemory_p0"]; +var _emscripten_bind_btRigidBody__getLinearFactor_p0 = Module["_emscripten_bind_btRigidBody__getLinearFactor_p0"] = asm["_emscripten_bind_btRigidBody__getLinearFactor_p0"]; +var _emscripten_bind_btQuadWord__btQuadWord_p3 = Module["_emscripten_bind_btQuadWord__btQuadWord_p3"] = asm["_emscripten_bind_btQuadWord__btQuadWord_p3"]; +var _emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0"]; +var _emscripten_bind_btBU_Simplex1to4__isInside_p2 = Module["_emscripten_bind_btBU_Simplex1to4__isInside_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__isInside_p2"]; +var _emscripten_bind_btConvexHullShape____destroy___p0 = Module["_emscripten_bind_btConvexHullShape____destroy___p0"] = asm["_emscripten_bind_btConvexHullShape____destroy___p0"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1"]; +var _emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0"]; +var _emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0 = Module["_emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0"]; +var _emscripten_bind_btConcaveShape__serialize_p2 = Module["_emscripten_bind_btConcaveShape__serialize_p2"] = asm["_emscripten_bind_btConcaveShape__serialize_p2"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1"]; +var _emscripten_bind_btTypedObject__getObjectType_p0 = Module["_emscripten_bind_btTypedObject__getObjectType_p0"] = asm["_emscripten_bind_btTypedObject__getObjectType_p0"]; +var _emscripten_bind_btRigidBody__get_m_contactSolverType_p0 = Module["_emscripten_bind_btRigidBody__get_m_contactSolverType_p0"] = asm["_emscripten_bind_btRigidBody__get_m_contactSolverType_p0"]; +var _emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1 = Module["_emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1"] = asm["_emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1"]; +var _emscripten_bind_btCollisionShape__serialize_p2 = Module["_emscripten_bind_btCollisionShape__serialize_p2"] = asm["_emscripten_bind_btCollisionShape__serialize_p2"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1"]; +var _emscripten_bind_btConcaveShape__isPolyhedral_p0 = Module["_emscripten_bind_btConcaveShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConcaveShape__isPolyhedral_p0"]; +var _emscripten_bind_btConeShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConeShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConeShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1 = Module["_emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1"] = asm["_emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1"]; +var _emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0"]; +var _emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1"]; +var _emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1 = Module["_emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1"] = asm["_emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1"]; +var _emscripten_bind_btBU_Simplex1to4__getVertex_p2 = Module["_emscripten_bind_btBU_Simplex1to4__getVertex_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__getVertex_p2"]; +var _emscripten_bind_btCylinderShape__isInfinite_p0 = Module["_emscripten_bind_btCylinderShape__isInfinite_p0"] = asm["_emscripten_bind_btCylinderShape__isInfinite_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__getAabb_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__getAabb_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__getAabb_p3"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3"]; +var _emscripten_bind_btCollisionObject__serialize_p2 = Module["_emscripten_bind_btCollisionObject__serialize_p2"] = asm["_emscripten_bind_btCollisionObject__serialize_p2"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btVector4__safeNormalize_p0 = Module["_emscripten_bind_btVector4__safeNormalize_p0"] = asm["_emscripten_bind_btVector4__safeNormalize_p0"]; +var _emscripten_bind_btCapsuleShapeX__getUpAxis_p0 = Module["_emscripten_bind_btCapsuleShapeX__getUpAxis_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getUpAxis_p0"]; +var _emscripten_bind_btTriangleMesh__findOrAddVertex_p2 = Module["_emscripten_bind_btTriangleMesh__findOrAddVertex_p2"] = asm["_emscripten_bind_btTriangleMesh__findOrAddVertex_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2"]; +var _emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3 = Module["_emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3"] = asm["_emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3"]; +var _emscripten_bind_btHinge2Constraint__get_m_objectType_p0 = Module["_emscripten_bind_btHinge2Constraint__get_m_objectType_p0"] = asm["_emscripten_bind_btHinge2Constraint__get_m_objectType_p0"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3"]; +var _emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0"]; +var _emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1"]; +var _emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape____destroy___p0 = Module["_emscripten_bind_btBvhTriangleMeshShape____destroy___p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape____destroy___p0"]; +var _emscripten_bind_btManifoldPoint__get_m_partId1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_partId1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_partId1_p0"]; +var _emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0"]; +var _emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1 = Module["_emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1"] = asm["_emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1"]; +var _emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btCylinderShape__isConvex2d_p0 = Module["_emscripten_bind_btCylinderShape__isConvex2d_p0"] = asm["_emscripten_bind_btCylinderShape__isConvex2d_p0"]; +var _emscripten_bind_btDynamicsWorld__getSolverInfo_p0 = Module["_emscripten_bind_btDynamicsWorld__getSolverInfo_p0"] = asm["_emscripten_bind_btDynamicsWorld__getSolverInfo_p0"]; +var _emscripten_bind_btPairCachingGhostObject____destroy___p0 = Module["_emscripten_bind_btPairCachingGhostObject____destroy___p0"] = asm["_emscripten_bind_btPairCachingGhostObject____destroy___p0"]; +var _emscripten_bind_btGeneric6DofConstraint____destroy___p0 = Module["_emscripten_bind_btGeneric6DofConstraint____destroy___p0"] = asm["_emscripten_bind_btGeneric6DofConstraint____destroy___p0"]; +var _emscripten_bind_btCylinderShape__isConcave_p0 = Module["_emscripten_bind_btCylinderShape__isConcave_p0"] = asm["_emscripten_bind_btCylinderShape__isConcave_p0"]; +var _emscripten_bind_btRigidBody__setRestitution_p1 = Module["_emscripten_bind_btRigidBody__setRestitution_p1"] = asm["_emscripten_bind_btRigidBody__setRestitution_p1"]; +var _emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__getPlane_p3 = Module["_emscripten_bind_btConvexTriangleMeshShape__getPlane_p3"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getPlane_p3"]; +var _emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0"]; +var _emscripten_bind_btPoint2PointConstraint__enableFeedback_p1 = Module["_emscripten_bind_btPoint2PointConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__enableFeedback_p1"]; +var _emscripten_bind_btCylinderShapeZ__isConvex2d_p0 = Module["_emscripten_bind_btCylinderShapeZ__isConvex2d_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isConvex2d_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btVector3__getX_p0 = Module["_emscripten_bind_btVector3__getX_p0"] = asm["_emscripten_bind_btVector3__getX_p0"]; +var _emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0"]; +var _emscripten_bind_btStridingMeshInterface__setScaling_p1 = Module["_emscripten_bind_btStridingMeshInterface__setScaling_p1"] = asm["_emscripten_bind_btStridingMeshInterface__setScaling_p1"]; +var _emscripten_bind_btCapsuleShapeX__getShapeType_p0 = Module["_emscripten_bind_btCapsuleShapeX__getShapeType_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getShapeType_p0"]; +var _emscripten_bind_btUniformScalingShape__isSoftBody_p0 = Module["_emscripten_bind_btUniformScalingShape__isSoftBody_p0"] = asm["_emscripten_bind_btUniformScalingShape__isSoftBody_p0"]; +var _emscripten_bind_btDynamicsWorld__addVehicle_p1 = Module["_emscripten_bind_btDynamicsWorld__addVehicle_p1"] = asm["_emscripten_bind_btDynamicsWorld__addVehicle_p1"]; +var _emscripten_bind_btGhostObject__hasAnisotropicFriction_p0 = Module["_emscripten_bind_btGhostObject__hasAnisotropicFriction_p0"] = asm["_emscripten_bind_btGhostObject__hasAnisotropicFriction_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0"]; +var _emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2 = Module["_emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2"] = asm["_emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2"]; +var _emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btCylinderShapeZ____destroy___p0 = Module["_emscripten_bind_btCylinderShapeZ____destroy___p0"] = asm["_emscripten_bind_btCylinderShapeZ____destroy___p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0"]; +var _emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6"]; +var _emscripten_bind_btUniformScalingShape__getChildShape_p0 = Module["_emscripten_bind_btUniformScalingShape__getChildShape_p0"] = asm["_emscripten_bind_btUniformScalingShape__getChildShape_p0"]; +var _emscripten_bind_btTriangleMesh__setScaling_p1 = Module["_emscripten_bind_btTriangleMesh__setScaling_p1"] = asm["_emscripten_bind_btTriangleMesh__setScaling_p1"]; +var _emscripten_bind_btWheelInfo__set_m_rollInfluence_p1 = Module["_emscripten_bind_btWheelInfo__set_m_rollInfluence_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_rollInfluence_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0"]; +var _emscripten_bind_btVector4__setValue_p4 = Module["_emscripten_bind_btVector4__setValue_p4"] = asm["_emscripten_bind_btVector4__setValue_p4"]; +var _emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2 = Module["_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2"] = asm["_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2"]; +var _emscripten_bind_btBU_Simplex1to4__serialize_p2 = Module["_emscripten_bind_btBU_Simplex1to4__serialize_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__serialize_p2"]; +var _emscripten_bind_btCylinderShapeZ__getLocalScaling_p0 = Module["_emscripten_bind_btCylinderShapeZ__getLocalScaling_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getLocalScaling_p0"]; +var _emscripten_bind_btPoint2PointConstraint__get_m_setting_p0 = Module["_emscripten_bind_btPoint2PointConstraint__get_m_setting_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__get_m_setting_p0"]; +var _emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0 = Module["_emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0"] = asm["_emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1"]; +var _emscripten_bind_btCompoundShape__isPolyhedral_p0 = Module["_emscripten_bind_btCompoundShape__isPolyhedral_p0"] = asm["_emscripten_bind_btCompoundShape__isPolyhedral_p0"]; +var _emscripten_bind_btContactConstraint__getObjectType_p0 = Module["_emscripten_bind_btContactConstraint__getObjectType_p0"] = asm["_emscripten_bind_btContactConstraint__getObjectType_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1"]; +var _emscripten_bind_btSerializer__getCurrentBufferSize_p0 = Module["_emscripten_bind_btSerializer__getCurrentBufferSize_p0"] = asm["_emscripten_bind_btSerializer__getCurrentBufferSize_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0"]; +var _emscripten_bind_btTypedConstraint__setEnabled_p1 = Module["_emscripten_bind_btTypedConstraint__setEnabled_p1"] = asm["_emscripten_bind_btTypedConstraint__setEnabled_p1"]; +var _emscripten_bind_btCylinderShape__getLocalScaling_p0 = Module["_emscripten_bind_btCylinderShape__getLocalScaling_p0"] = asm["_emscripten_bind_btCylinderShape__getLocalScaling_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1"]; +var _emscripten_bind_btDbvtProxy__isConvex2d_p1 = Module["_emscripten_bind_btDbvtProxy__isConvex2d_p1"] = asm["_emscripten_bind_btDbvtProxy__isConvex2d_p1"]; +var _emscripten_bind_btTriangleInfoMap____destroy___p0 = Module["_emscripten_bind_btTriangleInfoMap____destroy___p0"] = asm["_emscripten_bind_btTriangleInfoMap____destroy___p0"]; +var _emscripten_bind_btRigidBody__getAngularVelocity_p0 = Module["_emscripten_bind_btRigidBody__getAngularVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getAngularVelocity_p0"]; +var _emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0 = Module["_emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0"]; +var _emscripten_bind_btGhostObject__getActivationState_p0 = Module["_emscripten_bind_btGhostObject__getActivationState_p0"] = asm["_emscripten_bind_btGhostObject__getActivationState_p0"]; +var _emscripten_bind_btStaticPlaneShape__isInfinite_p0 = Module["_emscripten_bind_btStaticPlaneShape__isInfinite_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isInfinite_p0"]; +var _emscripten_bind_btCapsuleShapeX__isSoftBody_p0 = Module["_emscripten_bind_btCapsuleShapeX__isSoftBody_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isSoftBody_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1"]; +var _emscripten_bind_btQuaternion__dot_p1 = Module["_emscripten_bind_btQuaternion__dot_p1"] = asm["_emscripten_bind_btQuaternion__dot_p1"]; +var _emscripten_bind_btBoxShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btBoxShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btBoxShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btDynamicsWorld__rayTestSingle_p6 = Module["_emscripten_bind_btDynamicsWorld__rayTestSingle_p6"] = asm["_emscripten_bind_btDynamicsWorld__rayTestSingle_p6"]; +var _emscripten_bind_btMatrix3x3__transpose_p0 = Module["_emscripten_bind_btMatrix3x3__transpose_p0"] = asm["_emscripten_bind_btMatrix3x3__transpose_p0"]; +var _emscripten_bind_btCollisionWorld__contactTest_p2 = Module["_emscripten_bind_btCollisionWorld__contactTest_p2"] = asm["_emscripten_bind_btCollisionWorld__contactTest_p2"]; +var _emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1 = Module["_emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1"] = asm["_emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1"]; +var _emscripten_bind_btVector3__fuzzyZero_p0 = Module["_emscripten_bind_btVector3__fuzzyZero_p0"] = asm["_emscripten_bind_btVector3__fuzzyZero_p0"]; +var _emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0"]; +var _emscripten_bind_btQuaternion__setMax_p1 = Module["_emscripten_bind_btQuaternion__setMax_p1"] = asm["_emscripten_bind_btQuaternion__setMax_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1"]; +var _emscripten_bind_btContactConstraint__getConstraintType_p0 = Module["_emscripten_bind_btContactConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btContactConstraint__getConstraintType_p0"]; +var _emscripten_bind_btCylinderShape__getRadius_p0 = Module["_emscripten_bind_btCylinderShape__getRadius_p0"] = asm["_emscripten_bind_btCylinderShape__getRadius_p0"]; +var _emscripten_bind_btConeShapeX__setMargin_p1 = Module["_emscripten_bind_btConeShapeX__setMargin_p1"] = asm["_emscripten_bind_btConeShapeX__setMargin_p1"]; +var _emscripten_bind_btRigidBody__setFlags_p1 = Module["_emscripten_bind_btRigidBody__setFlags_p1"] = asm["_emscripten_bind_btRigidBody__setFlags_p1"]; +var _emscripten_bind_btDbvtProxy__set_m_aabbMax_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_aabbMax_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_aabbMax_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0 = Module["_emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0"] = asm["_emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0"]; +var _emscripten_bind_btClock__reset_p0 = Module["_emscripten_bind_btClock__reset_p0"] = asm["_emscripten_bind_btClock__reset_p0"]; +var _emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btOptimizedBvh__deSerializeFloat_p1 = Module["_emscripten_bind_btOptimizedBvh__deSerializeFloat_p1"] = asm["_emscripten_bind_btOptimizedBvh__deSerializeFloat_p1"]; +var _emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2 = Module["_emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2"] = asm["_emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2"]; +var _emscripten_bind_btBoxShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btBoxShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btBoxShape__getConvexPolyhedron_p0"]; +var _emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btDynamicsWorld__contactTest_p2 = Module["_emscripten_bind_btDynamicsWorld__contactTest_p2"] = asm["_emscripten_bind_btDynamicsWorld__contactTest_p2"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btBroadphasePair__get_m_pProxy0_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_pProxy0_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_pProxy0_p0"]; +var _emscripten_bind_btRaycastVehicle__applyEngineForce_p2 = Module["_emscripten_bind_btRaycastVehicle__applyEngineForce_p2"] = asm["_emscripten_bind_btRaycastVehicle__applyEngineForce_p2"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1"]; +var _emscripten_bind_btBroadphaseInterface__setAabb_p4 = Module["_emscripten_bind_btBroadphaseInterface__setAabb_p4"] = asm["_emscripten_bind_btBroadphaseInterface__setAabb_p4"]; +var _emscripten_bind_btConvexShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexShape__isSoftBody_p0"]; +var _emscripten_bind_btUniformScalingShape__setLocalScaling_p1 = Module["_emscripten_bind_btUniformScalingShape__setLocalScaling_p1"] = asm["_emscripten_bind_btUniformScalingShape__setLocalScaling_p1"]; +var _emscripten_bind_btConvexShape__isConvex_p0 = Module["_emscripten_bind_btConvexShape__isConvex_p0"] = asm["_emscripten_bind_btConvexShape__isConvex_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1"]; +var _emscripten_bind_btBroadphaseProxy__getUid_p0 = Module["_emscripten_bind_btBroadphaseProxy__getUid_p0"] = asm["_emscripten_bind_btBroadphaseProxy__getUid_p0"]; +var _emscripten_bind_btMultiSphereShape__isPolyhedral_p0 = Module["_emscripten_bind_btMultiSphereShape__isPolyhedral_p0"] = asm["_emscripten_bind_btMultiSphereShape__isPolyhedral_p0"]; +var _emscripten_bind_btSphereShape__getName_p0 = Module["_emscripten_bind_btSphereShape__getName_p0"] = asm["_emscripten_bind_btSphereShape__getName_p0"]; +var _emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4 = Module["_emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4"] = asm["_emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4"]; +var _emscripten_bind_btHinge2Constraint__getAnchor_p0 = Module["_emscripten_bind_btHinge2Constraint__getAnchor_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAnchor_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btGhostObject__activate_p1 = Module["_emscripten_bind_btGhostObject__activate_p1"] = asm["_emscripten_bind_btGhostObject__activate_p1"]; +var _emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0 = Module["_emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0"]; +var _emscripten_bind_btQuaternion__z_p0 = Module["_emscripten_bind_btQuaternion__z_p0"] = asm["_emscripten_bind_btQuaternion__z_p0"]; +var _emscripten_bind_btBoxShape__getShapeType_p0 = Module["_emscripten_bind_btBoxShape__getShapeType_p0"] = asm["_emscripten_bind_btBoxShape__getShapeType_p0"]; +var _emscripten_bind_btVector4__getY_p0 = Module["_emscripten_bind_btVector4__getY_p0"] = asm["_emscripten_bind_btVector4__getY_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3"]; +var _emscripten_bind_btVector4__getX_p0 = Module["_emscripten_bind_btVector4__getX_p0"] = asm["_emscripten_bind_btVector4__getX_p0"]; +var _emscripten_bind_btBroadphasePair__btBroadphasePair_p1 = Module["_emscripten_bind_btBroadphasePair__btBroadphasePair_p1"] = asm["_emscripten_bind_btBroadphasePair__btBroadphasePair_p1"]; +var _emscripten_bind_btBroadphasePair__btBroadphasePair_p0 = Module["_emscripten_bind_btBroadphasePair__btBroadphasePair_p0"] = asm["_emscripten_bind_btBroadphasePair__btBroadphasePair_p0"]; +var _emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0 = Module["_emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0"] = asm["_emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0"]; +var _emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1 = Module["_emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btBroadphasePair__get_m_algorithm_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_algorithm_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_algorithm_p0"]; +var __GLOBAL__I_a = Module["__GLOBAL__I_a"] = asm["__GLOBAL__I_a"]; +var _emscripten_bind_btConvexHullShape__getEdge_p3 = Module["_emscripten_bind_btConvexHullShape__getEdge_p3"] = asm["_emscripten_bind_btConvexHullShape__getEdge_p3"]; +var _emscripten_bind_btCompoundShape__getChildShape_p1 = Module["_emscripten_bind_btCompoundShape__getChildShape_p1"] = asm["_emscripten_bind_btCompoundShape__getChildShape_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2"]; +var _emscripten_bind_btEmptyShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btEmptyShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btEmptyShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btCylinderShapeZ__getName_p0 = Module["_emscripten_bind_btCylinderShapeZ__getName_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getName_p0"]; +var _emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1 = Module["_emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1"]; +var _emscripten_bind_btVector3__isZero_p0 = Module["_emscripten_bind_btVector3__isZero_p0"] = asm["_emscripten_bind_btVector3__isZero_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0"]; +var _emscripten_bind_btConeShape__btConeShape_p2 = Module["_emscripten_bind_btConeShape__btConeShape_p2"] = asm["_emscripten_bind_btConeShape__btConeShape_p2"]; +var _emscripten_bind_btVector3__minAxis_p0 = Module["_emscripten_bind_btVector3__minAxis_p0"] = asm["_emscripten_bind_btVector3__minAxis_p0"]; +var _emscripten_bind_btIndexedMesh__get_m_vertexBase_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_vertexBase_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_vertexBase_p0"]; +var _emscripten_bind_btSliderConstraint__setDampingLimLin_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingLimLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingLimLin_p1"]; +var _emscripten_bind_btSphereShape__isCompound_p0 = Module["_emscripten_bind_btSphereShape__isCompound_p0"] = asm["_emscripten_bind_btSphereShape__isCompound_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__setGravity_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setGravity_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setGravity_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0"]; +var _emscripten_bind_btHinge2Constraint__getAxis_p1 = Module["_emscripten_bind_btHinge2Constraint__getAxis_p1"] = asm["_emscripten_bind_btHinge2Constraint__getAxis_p1"]; +var _emscripten_bind_btCollisionWorld__setBroadphase_p1 = Module["_emscripten_bind_btCollisionWorld__setBroadphase_p1"] = asm["_emscripten_bind_btCollisionWorld__setBroadphase_p1"]; +var _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1"]; +var _emscripten_bind_btCapsuleShapeX__isNonMoving_p0 = Module["_emscripten_bind_btCapsuleShapeX__isNonMoving_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isNonMoving_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0"]; +var _emscripten_bind_btRaycastVehicle__updateAction_p2 = Module["_emscripten_bind_btRaycastVehicle__updateAction_p2"] = asm["_emscripten_bind_btRaycastVehicle__updateAction_p2"]; +var _emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1"]; +var _emscripten_bind_btWheelInfo__set_m_brake_p1 = Module["_emscripten_bind_btWheelInfo__set_m_brake_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_brake_p1"]; +var _emscripten_bind_btSphereShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btSphereShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btSphereShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0"]; +var _emscripten_bind_btCylinderShapeZ__getShapeType_p0 = Module["_emscripten_bind_btCylinderShapeZ__getShapeType_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getShapeType_p0"]; +var _emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0 = Module["_emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0"] = asm["_emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0"]; +var _emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0 = Module["_emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0"]; +var _emscripten_bind_btConeShapeX____destroy___p0 = Module["_emscripten_bind_btConeShapeX____destroy___p0"] = asm["_emscripten_bind_btConeShapeX____destroy___p0"]; +var _emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btHashPtr____destroy___p0 = Module["_emscripten_bind_btHashPtr____destroy___p0"] = asm["_emscripten_bind_btHashPtr____destroy___p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1"]; +var _emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1 = Module["_emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1"] = asm["_emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0 = Module["_emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0"]; +var _emscripten_bind_btQuaternion__op_sub_p1 = Module["_emscripten_bind_btQuaternion__op_sub_p1"] = asm["_emscripten_bind_btQuaternion__op_sub_p1"]; +var _emscripten_bind_btHingeConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btHingeConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btHingeConstraint__get_m_objectType_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1"]; +var _emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1 = Module["_emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1"] = asm["_emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1"]; +var _emscripten_bind_btIDebugDraw__getDebugMode_p0 = Module["_emscripten_bind_btIDebugDraw__getDebugMode_p0"] = asm["_emscripten_bind_btIDebugDraw__getDebugMode_p0"]; +var _emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2 = Module["_emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2"] = asm["_emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2"]; +var _emscripten_bind_btVector4__absolute_p0 = Module["_emscripten_bind_btVector4__absolute_p0"] = asm["_emscripten_bind_btVector4__absolute_p0"]; +var _emscripten_bind_btStorageResult__setShapeIdentifiersA_p2 = Module["_emscripten_bind_btStorageResult__setShapeIdentifiersA_p2"] = asm["_emscripten_bind_btStorageResult__setShapeIdentifiersA_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0"]; +var _emscripten_bind_btStorageResult__set_m_distance_p1 = Module["_emscripten_bind_btStorageResult__set_m_distance_p1"] = asm["_emscripten_bind_btStorageResult__set_m_distance_p1"]; +var _emscripten_bind_btPersistentManifold__set_m_companionIdA_p1 = Module["_emscripten_bind_btPersistentManifold__set_m_companionIdA_p1"] = asm["_emscripten_bind_btPersistentManifold__set_m_companionIdA_p1"]; +var _emscripten_bind_btTypedConstraint__getConstraintType_p0 = Module["_emscripten_bind_btTypedConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btTypedConstraint__getConstraintType_p0"]; +var _emscripten_bind_btConvexShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1 = Module["_emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1"] = asm["_emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1"]; +var _emscripten_bind_btVector4__getZ_p0 = Module["_emscripten_bind_btVector4__getZ_p0"] = asm["_emscripten_bind_btVector4__getZ_p0"]; +var _emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btVector4__serializeDouble_p1 = Module["_emscripten_bind_btVector4__serializeDouble_p1"] = asm["_emscripten_bind_btVector4__serializeDouble_p1"]; +var _emscripten_bind_btRigidBody__setActivationState_p1 = Module["_emscripten_bind_btRigidBody__setActivationState_p1"] = asm["_emscripten_bind_btRigidBody__setActivationState_p1"]; +var _emscripten_bind_btTransform__invXform_p1 = Module["_emscripten_bind_btTransform__invXform_p1"] = asm["_emscripten_bind_btTransform__invXform_p1"]; +var _emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btUniversalConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btUniversalConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btUniversalConstraint__setUserConstraintType_p1"]; +var _emscripten_bind_btCollisionObject__getFriction_p0 = Module["_emscripten_bind_btCollisionObject__getFriction_p0"] = asm["_emscripten_bind_btCollisionObject__getFriction_p0"]; +var _emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1 = Module["_emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1"] = asm["_emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0"]; +var _malloc = Module["_malloc"] = asm["_malloc"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0"]; +var _emscripten_bind_btDispatcher__getNewManifold_p2 = Module["_emscripten_bind_btDispatcher__getNewManifold_p2"] = asm["_emscripten_bind_btDispatcher__getNewManifold_p2"]; +var _emscripten_bind_btPolyhedralConvexShape__getName_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getName_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getName_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1"]; +var _emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1"]; +var _emscripten_bind_btRigidBody__setSleepingThresholds_p2 = Module["_emscripten_bind_btRigidBody__setSleepingThresholds_p2"] = asm["_emscripten_bind_btRigidBody__setSleepingThresholds_p2"]; +var _emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0 = Module["_emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0"] = asm["_emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0"]; +var _emscripten_bind_btMultiSphereShape__getSphereRadius_p1 = Module["_emscripten_bind_btMultiSphereShape__getSphereRadius_p1"] = asm["_emscripten_bind_btMultiSphereShape__getSphereRadius_p1"]; +var _emscripten_bind_btConvexHullShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexHullShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexHullShape__serializeSingleShape_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3"]; +var _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2 = Module["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2"]; +var _emscripten_bind_btWheelInfo__get_m_engineForce_p0 = Module["_emscripten_bind_btWheelInfo__get_m_engineForce_p0"] = asm["_emscripten_bind_btWheelInfo__get_m_engineForce_p0"]; +var _emscripten_bind_btUniformScalingShape__getShapeType_p0 = Module["_emscripten_bind_btUniformScalingShape__getShapeType_p0"] = asm["_emscripten_bind_btUniformScalingShape__getShapeType_p0"]; +var _emscripten_bind_btDefaultMotionState__setWorldTransform_p1 = Module["_emscripten_bind_btDefaultMotionState__setWorldTransform_p1"] = asm["_emscripten_bind_btDefaultMotionState__setWorldTransform_p1"]; +var _emscripten_bind_btQuaternion__getZ_p0 = Module["_emscripten_bind_btQuaternion__getZ_p0"] = asm["_emscripten_bind_btQuaternion__getZ_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3"]; +var _emscripten_bind_btBoxShape__serializeSingleShape_p1 = Module["_emscripten_bind_btBoxShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btBoxShape__serializeSingleShape_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3 = Module["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3"] = asm["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3"]; +var _emscripten_bind_btConvexInternalShape__serialize_p2 = Module["_emscripten_bind_btConvexInternalShape__serialize_p2"] = asm["_emscripten_bind_btConvexInternalShape__serialize_p2"]; +var _emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0"]; +var _emscripten_bind_btSliderConstraint__getSolveLinLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getSolveLinLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getSolveLinLimit_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1"]; +var _emscripten_bind_btVector3__rotate_p2 = Module["_emscripten_bind_btVector3__rotate_p2"] = asm["_emscripten_bind_btVector3__rotate_p2"]; +var _emscripten_bind_btPolyhedralConvexShape__getShapeType_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getShapeType_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getShapeType_p0"]; +var _emscripten_bind_btContactConstraint__setParam_p2 = Module["_emscripten_bind_btContactConstraint__setParam_p2"] = asm["_emscripten_bind_btContactConstraint__setParam_p2"]; +var _emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1"]; +var _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2 = Module["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2"] = asm["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1"]; +var _emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4 = Module["_emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4"] = asm["_emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1"]; +var _emscripten_bind_btHingeConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btHingeConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btHingeConstraint__set_m_objectType_p1"]; +var _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1 = Module["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1"] = asm["_emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1"]; +var _emscripten_bind_btCylinderShapeX__getName_p0 = Module["_emscripten_bind_btCylinderShapeX__getName_p0"] = asm["_emscripten_bind_btCylinderShapeX__getName_p0"]; +var _emscripten_bind_btDispatcher__releaseManifold_p1 = Module["_emscripten_bind_btDispatcher__releaseManifold_p1"] = asm["_emscripten_bind_btDispatcher__releaseManifold_p1"]; +var _emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1 = Module["_emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1"] = asm["_emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1"]; +var _emscripten_bind_btDbvtBroadphase__optimize_p0 = Module["_emscripten_bind_btDbvtBroadphase__optimize_p0"] = asm["_emscripten_bind_btDbvtBroadphase__optimize_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3"]; +var _emscripten_bind_btRaycastVehicle__setPitchControl_p1 = Module["_emscripten_bind_btRaycastVehicle__setPitchControl_p1"] = asm["_emscripten_bind_btRaycastVehicle__setPitchControl_p1"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4"]; +var _emscripten_bind_btCollisionObject__setUserPointer_p1 = Module["_emscripten_bind_btCollisionObject__setUserPointer_p1"] = asm["_emscripten_bind_btCollisionObject__setUserPointer_p1"]; +var _emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btConeTwistConstraint__setEnabled_p1 = Module["_emscripten_bind_btConeTwistConstraint__setEnabled_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setEnabled_p1"]; +var _emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1 = Module["_emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1"]; +var _emscripten_bind_btCylinderShapeZ__setMargin_p1 = Module["_emscripten_bind_btCylinderShapeZ__setMargin_p1"] = asm["_emscripten_bind_btCylinderShapeZ__setMargin_p1"]; +var _emscripten_bind_btVector3__normalized_p0 = Module["_emscripten_bind_btVector3__normalized_p0"] = asm["_emscripten_bind_btVector3__normalized_p0"]; +var _emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3 = Module["_emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3"] = asm["_emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3"]; +var _emscripten_bind_btRigidBody__getLinearDamping_p0 = Module["_emscripten_bind_btRigidBody__getLinearDamping_p0"] = asm["_emscripten_bind_btRigidBody__getLinearDamping_p0"]; +var _emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1 = Module["_emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1"] = asm["_emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1"]; +var _emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0 = Module["_emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0"] = asm["_emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getShapeType_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getShapeType_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getShapeType_p0"]; +var _emscripten_bind_btCollisionObject__setHitFraction_p1 = Module["_emscripten_bind_btCollisionObject__setHitFraction_p1"] = asm["_emscripten_bind_btCollisionObject__setHitFraction_p1"]; +var _emscripten_bind_btSliderConstraint__serialize_p2 = Module["_emscripten_bind_btSliderConstraint__serialize_p2"] = asm["_emscripten_bind_btSliderConstraint__serialize_p2"]; +var _emscripten_bind_btAngularLimit__getCorrection_p0 = Module["_emscripten_bind_btAngularLimit__getCorrection_p0"] = asm["_emscripten_bind_btAngularLimit__getCorrection_p0"]; +var _emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7 = Module["_emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7"] = asm["_emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7"]; +var _emscripten_bind_btBroadphaseProxy__isNonMoving_p1 = Module["_emscripten_bind_btBroadphaseProxy__isNonMoving_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isNonMoving_p1"]; +var _emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btCylinderShape__getBoundingSphere_p2 = Module["_emscripten_bind_btCylinderShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btCylinderShape__getBoundingSphere_p2"]; +var _emscripten_bind_btDynamicsWorld__getWorldType_p0 = Module["_emscripten_bind_btDynamicsWorld__getWorldType_p0"] = asm["_emscripten_bind_btDynamicsWorld__getWorldType_p0"]; +var _emscripten_bind_btVector3__op_div_p1 = Module["_emscripten_bind_btVector3__op_div_p1"] = asm["_emscripten_bind_btVector3__op_div_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2"]; +var _emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__getAabb_p3 = Module["_emscripten_bind_btBvhTriangleMeshShape__getAabb_p3"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getAabb_p3"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0"]; +var _emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0"]; +var _emscripten_bind_btMultiSphereShape__setLocalScaling_p1 = Module["_emscripten_bind_btMultiSphereShape__setLocalScaling_p1"] = asm["_emscripten_bind_btMultiSphereShape__setLocalScaling_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btSliderConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btSliderConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btSliderConstraint__setUseFrameOffset_p1"]; +var _emscripten_bind_btHingeConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btHingeConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btHingeConstraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0"]; +var _emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0"]; +var _emscripten_bind_btIDebugDraw__drawTransform_p2 = Module["_emscripten_bind_btIDebugDraw__drawTransform_p2"] = asm["_emscripten_bind_btIDebugDraw__drawTransform_p2"]; +var _emscripten_bind_btConeTwistConstraint__getTwistAngle_p0 = Module["_emscripten_bind_btConeTwistConstraint__getTwistAngle_p0"] = asm["_emscripten_bind_btConeTwistConstraint__getTwistAngle_p0"]; +var _emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1 = Module["_emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1"] = asm["_emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1"]; +var _emscripten_bind_btStackAlloc__getAvailableMemory_p0 = Module["_emscripten_bind_btStackAlloc__getAvailableMemory_p0"] = asm["_emscripten_bind_btStackAlloc__getAvailableMemory_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btBvhTriangleMeshShape__getMargin_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getMargin_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getMargin_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__isConvex_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isConvex_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isConvex_p0"]; +var _emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3 = Module["_emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3"] = asm["_emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3"]; +var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0"]; +var _emscripten_bind_btTriangleInfo__get_m_flags_p0 = Module["_emscripten_bind_btTriangleInfo__get_m_flags_p0"] = asm["_emscripten_bind_btTriangleInfo__get_m_flags_p0"]; +var _emscripten_bind_btConcaveShape__getName_p0 = Module["_emscripten_bind_btConcaveShape__getName_p0"] = asm["_emscripten_bind_btConcaveShape__getName_p0"]; +var _emscripten_bind_btContactConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btContactConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btContactConstraint__getRigidBodyB_p0"]; +var _emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1"]; +var _emscripten_bind_btOptimizedBvh__refitPartial_p3 = Module["_emscripten_bind_btOptimizedBvh__refitPartial_p3"] = asm["_emscripten_bind_btOptimizedBvh__refitPartial_p3"]; +var _emscripten_bind_btConcaveShape__getAabb_p3 = Module["_emscripten_bind_btConcaveShape__getAabb_p3"] = asm["_emscripten_bind_btConcaveShape__getAabb_p3"]; +var _emscripten_bind_btCollisionShape__isInfinite_p0 = Module["_emscripten_bind_btCollisionShape__isInfinite_p0"] = asm["_emscripten_bind_btCollisionShape__isInfinite_p0"]; +var _emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1"]; +var _emscripten_bind_btConvexInternalShape__getMargin_p0 = Module["_emscripten_bind_btConvexInternalShape__getMargin_p0"] = asm["_emscripten_bind_btConvexInternalShape__getMargin_p0"]; +var _emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btCompoundShape__isConvex_p0 = Module["_emscripten_bind_btCompoundShape__isConvex_p0"] = asm["_emscripten_bind_btCompoundShape__isConvex_p0"]; +var _emscripten_bind_btSliderConstraint__setDampingDirLin_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingDirLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingDirLin_p1"]; +var _emscripten_bind_btCapsuleShape__getMargin_p0 = Module["_emscripten_bind_btCapsuleShape__getMargin_p0"] = asm["_emscripten_bind_btCapsuleShape__getMargin_p0"]; +var _emscripten_bind_btAngularLimit____destroy___p0 = Module["_emscripten_bind_btAngularLimit____destroy___p0"] = asm["_emscripten_bind_btAngularLimit____destroy___p0"]; +var _emscripten_bind_btUniversalConstraint__getInfo2_p1 = Module["_emscripten_bind_btUniversalConstraint__getInfo2_p1"] = asm["_emscripten_bind_btUniversalConstraint__getInfo2_p1"]; +var _emscripten_bind_btMatrix3x3__getIdentity_p0 = Module["_emscripten_bind_btMatrix3x3__getIdentity_p0"] = asm["_emscripten_bind_btMatrix3x3__getIdentity_p0"]; +var _free = Module["_free"] = asm["_free"]; +var _emscripten_bind_btConeShapeX__getName_p0 = Module["_emscripten_bind_btConeShapeX__getName_p0"] = asm["_emscripten_bind_btConeShapeX__getName_p0"]; +var _emscripten_bind_btTransform__setBasis_p1 = Module["_emscripten_bind_btTransform__setBasis_p1"] = asm["_emscripten_bind_btTransform__setBasis_p1"]; +var _emscripten_bind_btCapsuleShape__isConcave_p0 = Module["_emscripten_bind_btCapsuleShape__isConcave_p0"] = asm["_emscripten_bind_btCapsuleShape__isConcave_p0"]; +var _emscripten_bind_btHingeConstraint__enableMotor_p1 = Module["_emscripten_bind_btHingeConstraint__enableMotor_p1"] = asm["_emscripten_bind_btHingeConstraint__enableMotor_p1"]; +var _emscripten_bind_btCollisionObject__setIslandTag_p1 = Module["_emscripten_bind_btCollisionObject__setIslandTag_p1"] = asm["_emscripten_bind_btCollisionObject__setIslandTag_p1"]; +var _emscripten_bind_btSliderConstraint__setDampingDirAng_p1 = Module["_emscripten_bind_btSliderConstraint__setDampingDirAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setDampingDirAng_p1"]; +var _emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btGhostObject__setCcdMotionThreshold_p1 = Module["_emscripten_bind_btGhostObject__setCcdMotionThreshold_p1"] = asm["_emscripten_bind_btGhostObject__setCcdMotionThreshold_p1"]; +var _emscripten_bind_btConcaveShape__getLocalScaling_p0 = Module["_emscripten_bind_btConcaveShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConcaveShape__getLocalScaling_p0"]; +var _emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1 = Module["_emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1"] = asm["_emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1"]; +var _emscripten_bind_btQuaternion__setEulerZYX_p3 = Module["_emscripten_bind_btQuaternion__setEulerZYX_p3"] = asm["_emscripten_bind_btQuaternion__setEulerZYX_p3"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0"]; +var _emscripten_bind_btHashInt__getUid1_p0 = Module["_emscripten_bind_btHashInt__getUid1_p0"] = asm["_emscripten_bind_btHashInt__getUid1_p0"]; +var _emscripten_bind_btCapsuleShapeZ__isConvex2d_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isConvex2d_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isConvex2d_p0"]; +var _emscripten_bind_btVector3__maxAxis_p0 = Module["_emscripten_bind_btVector3__maxAxis_p0"] = asm["_emscripten_bind_btVector3__maxAxis_p0"]; +var _emscripten_bind_btSliderConstraint__needsFeedback_p0 = Module["_emscripten_bind_btSliderConstraint__needsFeedback_p0"] = asm["_emscripten_bind_btSliderConstraint__needsFeedback_p0"]; +var _emscripten_bind_btIDebugDraw__drawSpherePatch_p9 = Module["_emscripten_bind_btIDebugDraw__drawSpherePatch_p9"] = asm["_emscripten_bind_btIDebugDraw__drawSpherePatch_p9"]; +var _emscripten_bind_btVector3__op_mul_p1 = Module["_emscripten_bind_btVector3__op_mul_p1"] = asm["_emscripten_bind_btVector3__op_mul_p1"]; +var _emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btRigidBody__setMassProps_p2 = Module["_emscripten_bind_btRigidBody__setMassProps_p2"] = asm["_emscripten_bind_btRigidBody__setMassProps_p2"]; +var _emscripten_bind_btHeightfieldTerrainShape__getMargin_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getMargin_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getMargin_p0"]; +var _emscripten_bind_btHingeConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btHingeConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btHingeConstraint__setUserConstraintId_p1"]; +var _emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1 = Module["_emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1"] = asm["_emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0"]; +var _emscripten_bind_btConvexHullShape__getName_p0 = Module["_emscripten_bind_btConvexHullShape__getName_p0"] = asm["_emscripten_bind_btConvexHullShape__getName_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2"]; +var _emscripten_bind_btPoint2PointConstraint__getPivotInB_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getPivotInB_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getPivotInB_p0"]; +var _emscripten_bind_btBU_Simplex1to4__setMargin_p1 = Module["_emscripten_bind_btBU_Simplex1to4__setMargin_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__setMargin_p1"]; +var _emscripten_bind_btRaycastVehicle__getWheelInfo_p1 = Module["_emscripten_bind_btRaycastVehicle__getWheelInfo_p1"] = asm["_emscripten_bind_btRaycastVehicle__getWheelInfo_p1"]; +var _emscripten_bind_btRigidBody__setAngularVelocity_p1 = Module["_emscripten_bind_btRigidBody__setAngularVelocity_p1"] = asm["_emscripten_bind_btRigidBody__setAngularVelocity_p1"]; +var _emscripten_bind_btRigidBody__serialize_p2 = Module["_emscripten_bind_btRigidBody__serialize_p2"] = asm["_emscripten_bind_btRigidBody__serialize_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__setMargin_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__setMargin_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__setMargin_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btCapsuleShapeX__getRadius_p0 = Module["_emscripten_bind_btCapsuleShapeX__getRadius_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getRadius_p0"]; +var _emscripten_bind_btQuaternion__op_div_p1 = Module["_emscripten_bind_btQuaternion__op_div_p1"] = asm["_emscripten_bind_btQuaternion__op_div_p1"]; +var _emscripten_bind_btCylinderShapeZ__setLocalScaling_p1 = Module["_emscripten_bind_btCylinderShapeZ__setLocalScaling_p1"] = asm["_emscripten_bind_btCylinderShapeZ__setLocalScaling_p1"]; +var _emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btHingeConstraint__setMotorTarget_p2 = Module["_emscripten_bind_btHingeConstraint__setMotorTarget_p2"] = asm["_emscripten_bind_btHingeConstraint__setMotorTarget_p2"]; +var _emscripten_bind_btConeShapeX__getAabbSlow_p3 = Module["_emscripten_bind_btConeShapeX__getAabbSlow_p3"] = asm["_emscripten_bind_btConeShapeX__getAabbSlow_p3"]; +var _emscripten_bind_btMultiSphereShape____destroy___p0 = Module["_emscripten_bind_btMultiSphereShape____destroy___p0"] = asm["_emscripten_bind_btMultiSphereShape____destroy___p0"]; +var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1"]; +var _emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3 = Module["_emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3"] = asm["_emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3"]; +var _emscripten_bind_btConvexShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexShape__getAabbSlow_p3"]; +var _emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3 = Module["_emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3"]; +var _emscripten_bind_btCylinderShapeZ__isCompound_p0 = Module["_emscripten_bind_btCylinderShapeZ__isCompound_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isCompound_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getObjectType_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getObjectType_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getObjectType_p0"]; +var _emscripten_bind_btCylinderShapeX__isSoftBody_p0 = Module["_emscripten_bind_btCylinderShapeX__isSoftBody_p0"] = asm["_emscripten_bind_btCylinderShapeX__isSoftBody_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0"]; +var _emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0"]; +var _emscripten_bind_btUniformScalingShape__getAabb_p3 = Module["_emscripten_bind_btUniformScalingShape__getAabb_p3"] = asm["_emscripten_bind_btUniformScalingShape__getAabb_p3"]; +var _emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0"]; +var _emscripten_bind_btHeightfieldTerrainShape__isCompound_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__isCompound_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__isCompound_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btCapsuleShapeZ__isConcave_p0 = Module["_emscripten_bind_btCapsuleShapeZ__isConcave_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__isConcave_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0"]; +var _emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btConeShapeX__getMarginNonVirtual_p0 = Module["_emscripten_bind_btConeShapeX__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btConeShapeX__getMarginNonVirtual_p0"]; +var _emscripten_bind_btConeShapeZ__btConeShapeZ_p2 = Module["_emscripten_bind_btConeShapeZ__btConeShapeZ_p2"] = asm["_emscripten_bind_btConeShapeZ__btConeShapeZ_p2"]; +var _emscripten_bind_btVector4__maxAxis4_p0 = Module["_emscripten_bind_btVector4__maxAxis4_p0"] = asm["_emscripten_bind_btVector4__maxAxis4_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1"]; +var _emscripten_bind_btVector4__absolute4_p0 = Module["_emscripten_bind_btVector4__absolute4_p0"] = asm["_emscripten_bind_btVector4__absolute4_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1"]; +var _emscripten_bind_btSerializer__findNameForPointer_p1 = Module["_emscripten_bind_btSerializer__findNameForPointer_p1"] = asm["_emscripten_bind_btSerializer__findNameForPointer_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7 = Module["_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7"]; +var _emscripten_bind_btPairCachingGhostObject__activate_p1 = Module["_emscripten_bind_btPairCachingGhostObject__activate_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__activate_p1"]; +var _emscripten_bind_btPairCachingGhostObject__activate_p0 = Module["_emscripten_bind_btPairCachingGhostObject__activate_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__activate_p0"]; +var _emscripten_bind_btMatrix3x3__op_sub_p1 = Module["_emscripten_bind_btMatrix3x3__op_sub_p1"] = asm["_emscripten_bind_btMatrix3x3__op_sub_p1"]; +var _emscripten_bind_btGhostObject__getRestitution_p0 = Module["_emscripten_bind_btGhostObject__getRestitution_p0"] = asm["_emscripten_bind_btGhostObject__getRestitution_p0"]; +var _emscripten_bind_btHinge2Constraint__getAngle1_p0 = Module["_emscripten_bind_btHinge2Constraint__getAngle1_p0"] = asm["_emscripten_bind_btHinge2Constraint__getAngle1_p0"]; +var _emscripten_bind_btSphereShape__serialize_p2 = Module["_emscripten_bind_btSphereShape__serialize_p2"] = asm["_emscripten_bind_btSphereShape__serialize_p2"]; +var _emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0 = Module["_emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0"]; +var _emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2 = Module["_emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2"]; +var _emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2 = Module["_emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2"] = asm["_emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2"]; +var _emscripten_bind_btRigidBody__setBroadphaseHandle_p1 = Module["_emscripten_bind_btRigidBody__setBroadphaseHandle_p1"] = asm["_emscripten_bind_btRigidBody__setBroadphaseHandle_p1"]; +var _emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1"]; +var _emscripten_bind_btCapsuleShapeX__getUserPointer_p0 = Module["_emscripten_bind_btCapsuleShapeX__getUserPointer_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getUserPointer_p0"]; +var _emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1"]; +var _emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1"]; +var _emscripten_bind_btPersistentManifold__btPersistentManifold_p5 = Module["_emscripten_bind_btPersistentManifold__btPersistentManifold_p5"] = asm["_emscripten_bind_btPersistentManifold__btPersistentManifold_p5"]; +var _emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0 = Module["_emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0"] = asm["_emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0"]; +var _emscripten_bind_btCylinderShapeZ__getMarginNV_p0 = Module["_emscripten_bind_btCylinderShapeZ__getMarginNV_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getMarginNV_p0"]; +var _emscripten_bind_btTriangleMesh__addIndexedMesh_p1 = Module["_emscripten_bind_btTriangleMesh__addIndexedMesh_p1"] = asm["_emscripten_bind_btTriangleMesh__addIndexedMesh_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1"]; +var _emscripten_bind_btTriangleMesh__addIndexedMesh_p2 = Module["_emscripten_bind_btTriangleMesh__addIndexedMesh_p2"] = asm["_emscripten_bind_btTriangleMesh__addIndexedMesh_p2"]; +var _emscripten_bind_btSliderConstraint__setFrames_p2 = Module["_emscripten_bind_btSliderConstraint__setFrames_p2"] = asm["_emscripten_bind_btSliderConstraint__setFrames_p2"]; +var _emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0 = Module["_emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0"] = asm["_emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__removeAction_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeAction_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeAction_p1"]; +var _emscripten_bind_btContactConstraint__setContactManifold_p1 = Module["_emscripten_bind_btContactConstraint__setContactManifold_p1"] = asm["_emscripten_bind_btContactConstraint__setContactManifold_p1"]; +var _emscripten_bind_btSphereShape__setUserPointer_p1 = Module["_emscripten_bind_btSphereShape__setUserPointer_p1"] = asm["_emscripten_bind_btSphereShape__setUserPointer_p1"]; +var _emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1"]; +var _emscripten_bind_btCapsuleShapeZ__getUpAxis_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getUpAxis_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getUpAxis_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__getPlane_p3 = Module["_emscripten_bind_btPolyhedralConvexShape__getPlane_p3"] = asm["_emscripten_bind_btPolyhedralConvexShape__getPlane_p3"]; +var _emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0"]; +var _emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0 = Module["_emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0"] = asm["_emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__clearForces_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__clearForces_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__clearForces_p0"]; +var _emscripten_bind_btPoint2PointConstraint__setPivotB_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setPivotB_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setPivotB_p1"]; +var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0"]; +var _emscripten_bind_btSerializer__finalizeChunk_p4 = Module["_emscripten_bind_btSerializer__finalizeChunk_p4"] = asm["_emscripten_bind_btSerializer__finalizeChunk_p4"]; +var _emscripten_bind_btGeneric6DofConstraint__setEnabled_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setEnabled_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setEnabled_p1"]; +var _emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1 = Module["_emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1"] = asm["_emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1"]; +var _emscripten_bind_btCylinderShapeX__getLocalScaling_p0 = Module["_emscripten_bind_btCylinderShapeX__getLocalScaling_p0"] = asm["_emscripten_bind_btCylinderShapeX__getLocalScaling_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1"]; +var _emscripten_bind_btStackAlloc__endBlock_p1 = Module["_emscripten_bind_btStackAlloc__endBlock_p1"] = asm["_emscripten_bind_btStackAlloc__endBlock_p1"]; +var _emscripten_bind_btCylinderShape__setLocalScaling_p1 = Module["_emscripten_bind_btCylinderShape__setLocalScaling_p1"] = asm["_emscripten_bind_btCylinderShape__setLocalScaling_p1"]; +var _emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1 = Module["_emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1"]; +var _emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1"]; +var _emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btMatrix3x3__adjoint_p0 = Module["_emscripten_bind_btMatrix3x3__adjoint_p0"] = asm["_emscripten_bind_btMatrix3x3__adjoint_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0"]; +var _emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1"]; +var _emscripten_bind_btVector4__normalized_p0 = Module["_emscripten_bind_btVector4__normalized_p0"] = asm["_emscripten_bind_btVector4__normalized_p0"]; +var _emscripten_bind_btSliderConstraint__getObjectType_p0 = Module["_emscripten_bind_btSliderConstraint__getObjectType_p0"] = asm["_emscripten_bind_btSliderConstraint__getObjectType_p0"]; +var _emscripten_bind_btRigidBody__setGravity_p1 = Module["_emscripten_bind_btRigidBody__setGravity_p1"] = asm["_emscripten_bind_btRigidBody__setGravity_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0"]; +var _emscripten_bind_btDynamicsWorld__removeConstraint_p1 = Module["_emscripten_bind_btDynamicsWorld__removeConstraint_p1"] = asm["_emscripten_bind_btDynamicsWorld__removeConstraint_p1"]; +var _emscripten_bind_btPersistentManifold__clearUserCache_p1 = Module["_emscripten_bind_btPersistentManifold__clearUserCache_p1"] = asm["_emscripten_bind_btPersistentManifold__clearUserCache_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5 = Module["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5"] = asm["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5"]; +var _emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btDbvtProxy__btDbvtProxy_p5 = Module["_emscripten_bind_btDbvtProxy__btDbvtProxy_p5"] = asm["_emscripten_bind_btDbvtProxy__btDbvtProxy_p5"]; +var _emscripten_bind_btCollisionShape__setLocalScaling_p1 = Module["_emscripten_bind_btCollisionShape__setLocalScaling_p1"] = asm["_emscripten_bind_btCollisionShape__setLocalScaling_p1"]; +var _emscripten_bind_btUniversalConstraint__getObjectType_p0 = Module["_emscripten_bind_btUniversalConstraint__getObjectType_p0"] = asm["_emscripten_bind_btUniversalConstraint__getObjectType_p0"]; +var _emscripten_bind_btSphereShape__getAabbSlow_p3 = Module["_emscripten_bind_btSphereShape__getAabbSlow_p3"] = asm["_emscripten_bind_btSphereShape__getAabbSlow_p3"]; +var _emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btConvexShape__getName_p0 = Module["_emscripten_bind_btConvexShape__getName_p0"] = asm["_emscripten_bind_btConvexShape__getName_p0"]; +var _emscripten_bind_btRotationalLimitMotor__testLimitValue_p1 = Module["_emscripten_bind_btRotationalLimitMotor__testLimitValue_p1"] = asm["_emscripten_bind_btRotationalLimitMotor__testLimitValue_p1"]; +var _emscripten_bind_btCollisionWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btCollisionWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btCollisionWorld__getDispatchInfo_p0"]; +var _emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0"]; +var _emscripten_bind_btBoxShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btBoxShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btBoxShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btDispatcher__getInternalManifoldPool_p0 = Module["_emscripten_bind_btDispatcher__getInternalManifoldPool_p0"] = asm["_emscripten_bind_btDispatcher__getInternalManifoldPool_p0"]; +var _emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0 = Module["_emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0"]; +var _emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0 = Module["_emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0"] = asm["_emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0"]; +var _emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0 = Module["_emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0"] = asm["_emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0"]; +var _emscripten_bind_btHinge2Constraint__getUserConstraintId_p0 = Module["_emscripten_bind_btHinge2Constraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btHinge2Constraint__getUserConstraintId_p0"]; +var _emscripten_bind_btQuaternion__setRotation_p2 = Module["_emscripten_bind_btQuaternion__setRotation_p2"] = asm["_emscripten_bind_btQuaternion__setRotation_p2"]; +var _emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2 = Module["_emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2"] = asm["_emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2"]; +var _emscripten_bind_btCylinderShapeX__isPolyhedral_p0 = Module["_emscripten_bind_btCylinderShapeX__isPolyhedral_p0"] = asm["_emscripten_bind_btCylinderShapeX__isPolyhedral_p0"]; +var _emscripten_bind_btEmptyShape__getShapeType_p0 = Module["_emscripten_bind_btEmptyShape__getShapeType_p0"] = asm["_emscripten_bind_btEmptyShape__getShapeType_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0"]; +var _emscripten_bind_btManifoldResult__getBody1Internal_p0 = Module["_emscripten_bind_btManifoldResult__getBody1Internal_p0"] = asm["_emscripten_bind_btManifoldResult__getBody1Internal_p0"]; +var _emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1"]; +var _emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0"]; +var _emscripten_bind_btQuadWord__op_set_p1 = Module["_emscripten_bind_btQuadWord__op_set_p1"] = asm["_emscripten_bind_btQuadWord__op_set_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0"]; +var _emscripten_bind_btPersistentManifold__getNumContacts_p0 = Module["_emscripten_bind_btPersistentManifold__getNumContacts_p0"] = asm["_emscripten_bind_btPersistentManifold__getNumContacts_p0"]; +var _emscripten_bind_btUniversalConstraint__get_m_objectType_p0 = Module["_emscripten_bind_btUniversalConstraint__get_m_objectType_p0"] = asm["_emscripten_bind_btUniversalConstraint__get_m_objectType_p0"]; +var _emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0 = Module["_emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setAxis_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__setAxis_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__setAxis_p2"]; +var _emscripten_bind_btWheelInfo__getSuspensionRestLength_p0 = Module["_emscripten_bind_btWheelInfo__getSuspensionRestLength_p0"] = asm["_emscripten_bind_btWheelInfo__getSuspensionRestLength_p0"]; +var _emscripten_bind_btSphereShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btSphereShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btSphereShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btHashPtr__getPointer_p0 = Module["_emscripten_bind_btHashPtr__getPointer_p0"] = asm["_emscripten_bind_btHashPtr__getPointer_p0"]; +var _emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0 = Module["_emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0"] = asm["_emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0"]; +var _emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1 = Module["_emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3"]; +var _emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2"]; +var _emscripten_bind_btConeShape____destroy___p0 = Module["_emscripten_bind_btConeShape____destroy___p0"] = asm["_emscripten_bind_btConeShape____destroy___p0"]; +var _emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btConeTwistConstraint__setMotorTarget_p1 = Module["_emscripten_bind_btConeTwistConstraint__setMotorTarget_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setMotorTarget_p1"]; +var _emscripten_bind_btConvexShape__serialize_p2 = Module["_emscripten_bind_btConvexShape__serialize_p2"] = asm["_emscripten_bind_btConvexShape__serialize_p2"]; +var _emscripten_bind_btContactConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btContactConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btContactConstraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btQuaternion__setEuler_p3 = Module["_emscripten_bind_btQuaternion__setEuler_p3"] = asm["_emscripten_bind_btQuaternion__setEuler_p3"]; +var _emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1 = Module["_emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1"] = asm["_emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3"]; +var _emscripten_bind_btPairCachingGhostObject__isStaticObject_p0 = Module["_emscripten_bind_btPairCachingGhostObject__isStaticObject_p0"] = asm["_emscripten_bind_btPairCachingGhostObject__isStaticObject_p0"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1"]; +var _emscripten_bind_btBoxShape__getEdge_p3 = Module["_emscripten_bind_btBoxShape__getEdge_p3"] = asm["_emscripten_bind_btBoxShape__getEdge_p3"]; +var _emscripten_bind_btVector4__serializeFloat_p1 = Module["_emscripten_bind_btVector4__serializeFloat_p1"] = asm["_emscripten_bind_btVector4__serializeFloat_p1"]; +var _emscripten_bind_btMultiSphereShape__setUserPointer_p1 = Module["_emscripten_bind_btMultiSphereShape__setUserPointer_p1"] = asm["_emscripten_bind_btMultiSphereShape__setUserPointer_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3"]; +var _emscripten_bind_CProfileNode__Get_Name_p0 = Module["_emscripten_bind_CProfileNode__Get_Name_p0"] = asm["_emscripten_bind_CProfileNode__Get_Name_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__aabbTest_p3 = Module["_emscripten_bind_bt32BitAxisSweep3__aabbTest_p3"] = asm["_emscripten_bind_bt32BitAxisSweep3__aabbTest_p3"]; +var _emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2 = Module["_emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2"]; +var _emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0 = Module["_emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0"] = asm["_emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0"]; +var _emscripten_bind_btSliderConstraint____destroy___p0 = Module["_emscripten_bind_btSliderConstraint____destroy___p0"] = asm["_emscripten_bind_btSliderConstraint____destroy___p0"]; +var _emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2 = Module["_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2"] = asm["_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2"]; +var _emscripten_bind_btUniversalConstraint__getAnchor_p0 = Module["_emscripten_bind_btUniversalConstraint__getAnchor_p0"] = asm["_emscripten_bind_btUniversalConstraint__getAnchor_p0"]; +var _emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1 = Module["_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btRotationalLimitMotor__isLimited_p0 = Module["_emscripten_bind_btRotationalLimitMotor__isLimited_p0"] = asm["_emscripten_bind_btRotationalLimitMotor__isLimited_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__setMargin_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setMargin_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setMargin_p1"]; +var _emscripten_bind_btHingeConstraint__updateRHS_p1 = Module["_emscripten_bind_btHingeConstraint__updateRHS_p1"] = asm["_emscripten_bind_btHingeConstraint__updateRHS_p1"]; +var _emscripten_bind_btIndexedMesh__set_m_indexType_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_indexType_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_indexType_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_distance1_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_distance1_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_distance1_p0"]; +var _emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1"]; +var _emscripten_bind_btClock__getTimeMicroseconds_p0 = Module["_emscripten_bind_btClock__getTimeMicroseconds_p0"] = asm["_emscripten_bind_btClock__getTimeMicroseconds_p0"]; +var _emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _llvm_uadd_with_overflow_i64 = Module["_llvm_uadd_with_overflow_i64"] = asm["_llvm_uadd_with_overflow_i64"]; +var _emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0"]; +var _emscripten_bind_btCylinderShapeX__getMargin_p0 = Module["_emscripten_bind_btCylinderShapeX__getMargin_p0"] = asm["_emscripten_bind_btCylinderShapeX__getMargin_p0"]; +var _emscripten_bind_btContactConstraint__enableFeedback_p1 = Module["_emscripten_bind_btContactConstraint__enableFeedback_p1"] = asm["_emscripten_bind_btContactConstraint__enableFeedback_p1"]; +var _emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0 = Module["_emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0"] = asm["_emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0"]; +var _emscripten_bind_btPoint2PointConstraint__setPivotA_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setPivotA_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setPivotA_p1"]; +var _emscripten_bind_btConeTwistConstraint__setParam_p3 = Module["_emscripten_bind_btConeTwistConstraint__setParam_p3"] = asm["_emscripten_bind_btConeTwistConstraint__setParam_p3"]; +var _emscripten_bind_btConeShapeX__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConeShapeX__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConeShapeX__calculateTemporalAabb_p6"]; +var _emscripten_bind_btHinge2Constraint__updateRHS_p1 = Module["_emscripten_bind_btHinge2Constraint__updateRHS_p1"] = asm["_emscripten_bind_btHinge2Constraint__updateRHS_p1"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0"]; +var _emscripten_bind_btMultiSphereShape__isConvex_p0 = Module["_emscripten_bind_btMultiSphereShape__isConvex_p0"] = asm["_emscripten_bind_btMultiSphereShape__isConvex_p0"]; +var _emscripten_bind_btRigidBody__setDamping_p2 = Module["_emscripten_bind_btRigidBody__setDamping_p2"] = asm["_emscripten_bind_btRigidBody__setDamping_p2"]; +var _emscripten_bind_btQuaternion__x_p0 = Module["_emscripten_bind_btQuaternion__x_p0"] = asm["_emscripten_bind_btQuaternion__x_p0"]; +var _emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6"]; +var _emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1"]; +var _emscripten_bind_btPersistentManifold__getContactPoint_p1 = Module["_emscripten_bind_btPersistentManifold__getContactPoint_p1"] = asm["_emscripten_bind_btPersistentManifold__getContactPoint_p1"]; +var _emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0"]; +var _emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btMotionState__getWorldTransform_p1 = Module["_emscripten_bind_btMotionState__getWorldTransform_p1"] = asm["_emscripten_bind_btMotionState__getWorldTransform_p1"]; +var _emscripten_bind_btRigidBody__activate_p0 = Module["_emscripten_bind_btRigidBody__activate_p0"] = asm["_emscripten_bind_btRigidBody__activate_p0"]; +var _emscripten_bind_btRigidBody__activate_p1 = Module["_emscripten_bind_btRigidBody__activate_p1"] = asm["_emscripten_bind_btRigidBody__activate_p1"]; +var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0"]; +var _emscripten_bind_btCompoundShape__setLocalScaling_p1 = Module["_emscripten_bind_btCompoundShape__setLocalScaling_p1"] = asm["_emscripten_bind_btCompoundShape__setLocalScaling_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0"]; +var _emscripten_bind_btCollisionObject__setCompanionId_p1 = Module["_emscripten_bind_btCollisionObject__setCompanionId_p1"] = asm["_emscripten_bind_btCollisionObject__setCompanionId_p1"]; +var _emscripten_bind_btConeTwistConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btConeTwistConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btConeTwistConstraint__set_m_objectType_p1"]; +var _emscripten_bind_btDynamicsWorld__getNumConstraints_p0 = Module["_emscripten_bind_btDynamicsWorld__getNumConstraints_p0"] = asm["_emscripten_bind_btDynamicsWorld__getNumConstraints_p0"]; +var _emscripten_bind_btGhostObject__rayTest_p3 = Module["_emscripten_bind_btGhostObject__rayTest_p3"] = asm["_emscripten_bind_btGhostObject__rayTest_p3"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0"]; +var _emscripten_bind_btBoxShape__isConcave_p0 = Module["_emscripten_bind_btBoxShape__isConcave_p0"] = asm["_emscripten_bind_btBoxShape__isConcave_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__isCompound_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isCompound_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isCompound_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4 = Module["_emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4"] = asm["_emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4"]; +var _emscripten_bind_btSliderConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btSliderConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btSliderConstraint__setUserConstraintType_p1"]; +var _emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1 = Module["_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3 = Module["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3"]; +var _emscripten_bind_btCollisionConfiguration__getStackAllocator_p0 = Module["_emscripten_bind_btCollisionConfiguration__getStackAllocator_p0"] = asm["_emscripten_bind_btCollisionConfiguration__getStackAllocator_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btStaticPlaneShape__serialize_p2 = Module["_emscripten_bind_btStaticPlaneShape__serialize_p2"] = asm["_emscripten_bind_btStaticPlaneShape__serialize_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__rayTest_p3 = Module["_emscripten_bind_btContinuousDynamicsWorld__rayTest_p3"] = asm["_emscripten_bind_btContinuousDynamicsWorld__rayTest_p3"]; +var _emscripten_bind_btSliderConstraint__getParam_p1 = Module["_emscripten_bind_btSliderConstraint__getParam_p1"] = asm["_emscripten_bind_btSliderConstraint__getParam_p1"]; +var _emscripten_bind_btSliderConstraint__getParam_p2 = Module["_emscripten_bind_btSliderConstraint__getParam_p2"] = asm["_emscripten_bind_btSliderConstraint__getParam_p2"]; +var _emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11"]; +var _emscripten_bind_btGeneric6DofConstraint__getAngle_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getAngle_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAngle_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1"]; +var _emscripten_bind_btCollisionObject__getActivationState_p0 = Module["_emscripten_bind_btCollisionObject__getActivationState_p0"] = asm["_emscripten_bind_btCollisionObject__getActivationState_p0"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2 = Module["_emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2"] = asm["_emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2"]; +var _emscripten_bind_btStaticPlaneShape__isCompound_p0 = Module["_emscripten_bind_btStaticPlaneShape__isCompound_p0"] = asm["_emscripten_bind_btStaticPlaneShape__isCompound_p0"]; +var _emscripten_bind_btBoxShape__isInfinite_p0 = Module["_emscripten_bind_btBoxShape__isInfinite_p0"] = asm["_emscripten_bind_btBoxShape__isInfinite_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__removeAction_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__removeAction_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__removeAction_p1"]; +var _emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0 = Module["_emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0"]; +var _emscripten_bind_btSliderConstraint__getUpperLinLimit_p0 = Module["_emscripten_bind_btSliderConstraint__getUpperLinLimit_p0"] = asm["_emscripten_bind_btSliderConstraint__getUpperLinLimit_p0"]; +var _emscripten_bind_btConeShapeX__setUserPointer_p1 = Module["_emscripten_bind_btConeShapeX__setUserPointer_p1"] = asm["_emscripten_bind_btConeShapeX__setUserPointer_p1"]; +var _emscripten_bind_btJacobianEntry__get_m_aJ_p0 = Module["_emscripten_bind_btJacobianEntry__get_m_aJ_p0"] = asm["_emscripten_bind_btJacobianEntry__get_m_aJ_p0"]; +var _emscripten_bind_btDynamicsWorld__addRigidBody_p3 = Module["_emscripten_bind_btDynamicsWorld__addRigidBody_p3"] = asm["_emscripten_bind_btDynamicsWorld__addRigidBody_p3"]; +var _emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0"]; +var _emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3 = Module["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3"] = asm["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3"]; +var _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2"]; +var _emscripten_bind_btBoxShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btBoxShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btBoxShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btCylinderShapeZ__isConcave_p0 = Module["_emscripten_bind_btCylinderShapeZ__isConcave_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isConcave_p0"]; +var _emscripten_bind_btSimpleBroadphase__setAabb_p4 = Module["_emscripten_bind_btSimpleBroadphase__setAabb_p4"] = asm["_emscripten_bind_btSimpleBroadphase__setAabb_p4"]; +var _emscripten_bind_btManifoldPoint__get_m_localPointB_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_localPointB_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_localPointB_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2"]; +var _emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1"]; +var _emscripten_bind_btGhostObject__setDeactivationTime_p1 = Module["_emscripten_bind_btGhostObject__setDeactivationTime_p1"] = asm["_emscripten_bind_btGhostObject__setDeactivationTime_p1"]; +var _emscripten_bind_btQuaternion__getIdentity_p0 = Module["_emscripten_bind_btQuaternion__getIdentity_p0"] = asm["_emscripten_bind_btQuaternion__getIdentity_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0"]; +var _emscripten_bind_btCylinderShapeX__setMargin_p1 = Module["_emscripten_bind_btCylinderShapeX__setMargin_p1"] = asm["_emscripten_bind_btCylinderShapeX__setMargin_p1"]; +var _emscripten_bind_btCollisionShape__getBoundingSphere_p2 = Module["_emscripten_bind_btCollisionShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btCollisionShape__getBoundingSphere_p2"]; +var _emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1"]; +var _emscripten_bind_btDbvtBroadphase__get_m_prediction_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_prediction_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_prediction_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btDispatcher__findAlgorithm_p3 = Module["_emscripten_bind_btDispatcher__findAlgorithm_p3"] = asm["_emscripten_bind_btDispatcher__findAlgorithm_p3"]; +var _emscripten_bind_btDispatcher__findAlgorithm_p2 = Module["_emscripten_bind_btDispatcher__findAlgorithm_p2"] = asm["_emscripten_bind_btDispatcher__findAlgorithm_p2"]; +var _emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1"]; +var _emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3 = Module["_emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3"] = asm["_emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0"]; +var _emscripten_bind_btRigidBody__getCompanionId_p0 = Module["_emscripten_bind_btRigidBody__getCompanionId_p0"] = asm["_emscripten_bind_btRigidBody__getCompanionId_p0"]; +var _emscripten_bind_btCollisionWorld__rayTest_p3 = Module["_emscripten_bind_btCollisionWorld__rayTest_p3"] = asm["_emscripten_bind_btCollisionWorld__rayTest_p3"]; +var _emscripten_bind_btConvexTriangleMeshShape__setMargin_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__setMargin_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__setMargin_p1"]; +var _emscripten_bind_btCollisionWorld__addCollisionObject_p1 = Module["_emscripten_bind_btCollisionWorld__addCollisionObject_p1"] = asm["_emscripten_bind_btCollisionWorld__addCollisionObject_p1"]; +var _emscripten_bind_btCollisionWorld__addCollisionObject_p3 = Module["_emscripten_bind_btCollisionWorld__addCollisionObject_p3"] = asm["_emscripten_bind_btCollisionWorld__addCollisionObject_p3"]; +var _emscripten_bind_btCollisionWorld__addCollisionObject_p2 = Module["_emscripten_bind_btCollisionWorld__addCollisionObject_p2"] = asm["_emscripten_bind_btCollisionWorld__addCollisionObject_p2"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0"]; +var _emscripten_bind_btCapsuleShapeZ__getRadius_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getRadius_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getRadius_p0"]; +var _emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0 = Module["_emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0"] = asm["_emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0"]; +var _emscripten_bind_btRigidBody__hasAnisotropicFriction_p0 = Module["_emscripten_bind_btRigidBody__hasAnisotropicFriction_p0"] = asm["_emscripten_bind_btRigidBody__hasAnisotropicFriction_p0"]; +var _emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2 = Module["_emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2"] = asm["_emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2"]; +var _emscripten_bind_btConcaveShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConcaveShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConcaveShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btBoxShape__getPlaneEquation_p2 = Module["_emscripten_bind_btBoxShape__getPlaneEquation_p2"] = asm["_emscripten_bind_btBoxShape__getPlaneEquation_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7"]; +var _emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getMarginNV_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getMarginNV_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getMarginNV_p0"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0"]; +var _emscripten_bind_btStaticPlaneShape__getMargin_p0 = Module["_emscripten_bind_btStaticPlaneShape__getMargin_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getMargin_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1"]; +var _emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1 = Module["_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1"] = asm["_emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0"]; +var _emscripten_bind_btGhostObject__getFriction_p0 = Module["_emscripten_bind_btGhostObject__getFriction_p0"] = asm["_emscripten_bind_btGhostObject__getFriction_p0"]; +var _emscripten_bind_btConvexInternalShape__setMargin_p1 = Module["_emscripten_bind_btConvexInternalShape__setMargin_p1"] = asm["_emscripten_bind_btConvexInternalShape__setMargin_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1"]; +var _emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6 = Module["_emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6"]; +var _emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getMargin_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getMargin_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getMargin_p0"]; +var _emscripten_bind_btSimpleBroadphase__aabbTest_p3 = Module["_emscripten_bind_btSimpleBroadphase__aabbTest_p3"] = asm["_emscripten_bind_btSimpleBroadphase__aabbTest_p3"]; +var _emscripten_bind_btHinge2Constraint__setUpperLimit_p1 = Module["_emscripten_bind_btHinge2Constraint__setUpperLimit_p1"] = asm["_emscripten_bind_btHinge2Constraint__setUpperLimit_p1"]; +var _emscripten_bind_btConvexHullShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexHullShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexHullShape__isConvex2d_p0"]; +var _emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0"]; +var _emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btVector4__angle_p1 = Module["_emscripten_bind_btVector4__angle_p1"] = asm["_emscripten_bind_btVector4__angle_p1"]; +var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4"]; +var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3"]; +var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2"]; +var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1"]; +var _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0 = Module["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0"]; +var _emscripten_bind_btVector3__setMin_p1 = Module["_emscripten_bind_btVector3__setMin_p1"] = asm["_emscripten_bind_btVector3__setMin_p1"]; +var _emscripten_bind_btSliderConstraint__setLowerLinLimit_p1 = Module["_emscripten_bind_btSliderConstraint__setLowerLinLimit_p1"] = asm["_emscripten_bind_btSliderConstraint__setLowerLinLimit_p1"]; +var _emscripten_bind_btCylinderShape__getShapeType_p0 = Module["_emscripten_bind_btCylinderShape__getShapeType_p0"] = asm["_emscripten_bind_btCylinderShape__getShapeType_p0"]; +var _emscripten_bind_btMotionState__setWorldTransform_p1 = Module["_emscripten_bind_btMotionState__setWorldTransform_p1"] = asm["_emscripten_bind_btMotionState__setWorldTransform_p1"]; +var _emscripten_bind_btHingeConstraint__getUid_p0 = Module["_emscripten_bind_btHingeConstraint__getUid_p0"] = asm["_emscripten_bind_btHingeConstraint__getUid_p0"]; +var _emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4 = Module["_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4"] = asm["_emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4"]; +var _emscripten_bind_btUniformScalingShape__isConvex_p0 = Module["_emscripten_bind_btUniformScalingShape__isConvex_p0"] = asm["_emscripten_bind_btUniformScalingShape__isConvex_p0"]; +var _emscripten_bind_btQuantizedBvh__setQuantizationValues_p2 = Module["_emscripten_bind_btQuantizedBvh__setQuantizationValues_p2"] = asm["_emscripten_bind_btQuantizedBvh__setQuantizationValues_p2"]; +var _emscripten_bind_btQuantizedBvh__setQuantizationValues_p3 = Module["_emscripten_bind_btQuantizedBvh__setQuantizationValues_p3"] = asm["_emscripten_bind_btQuantizedBvh__setQuantizationValues_p3"]; +var _emscripten_bind_btQuantizedBvh__serialize_p3 = Module["_emscripten_bind_btQuantizedBvh__serialize_p3"] = asm["_emscripten_bind_btQuantizedBvh__serialize_p3"]; +var _emscripten_bind_btQuantizedBvh__serialize_p2 = Module["_emscripten_bind_btQuantizedBvh__serialize_p2"] = asm["_emscripten_bind_btQuantizedBvh__serialize_p2"]; +var _emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btHeightfieldTerrainShape__getName_p0 = Module["_emscripten_bind_btHeightfieldTerrainShape__getName_p0"] = asm["_emscripten_bind_btHeightfieldTerrainShape__getName_p0"]; +var _emscripten_bind_btQuadWord__btQuadWord_p4 = Module["_emscripten_bind_btQuadWord__btQuadWord_p4"] = asm["_emscripten_bind_btQuadWord__btQuadWord_p4"]; +var _emscripten_bind_btQuantizedBvh__isQuantized_p0 = Module["_emscripten_bind_btQuantizedBvh__isQuantized_p0"] = asm["_emscripten_bind_btQuantizedBvh__isQuantized_p0"]; +var _emscripten_bind_btQuaternion__nearest_p1 = Module["_emscripten_bind_btQuaternion__nearest_p1"] = asm["_emscripten_bind_btQuaternion__nearest_p1"]; +var _emscripten_bind_btConeShapeZ__getShapeType_p0 = Module["_emscripten_bind_btConeShapeZ__getShapeType_p0"] = asm["_emscripten_bind_btConeShapeZ__getShapeType_p0"]; +var _emscripten_bind_btHinge2Constraint__setLimit_p3 = Module["_emscripten_bind_btHinge2Constraint__setLimit_p3"] = asm["_emscripten_bind_btHinge2Constraint__setLimit_p3"]; +var _emscripten_bind_btUniversalConstraint__getUserConstraintId_p0 = Module["_emscripten_bind_btUniversalConstraint__getUserConstraintId_p0"] = asm["_emscripten_bind_btUniversalConstraint__getUserConstraintId_p0"]; +var _emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0 = Module["_emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0"] = asm["_emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0"]; +var _emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1 = Module["_emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1"] = asm["_emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1"]; +var _emscripten_bind_btSliderConstraint__getDampingLimAng_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingLimAng_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingLimAng_p0"]; +var _emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btCompoundShape__isInfinite_p0 = Module["_emscripten_bind_btCompoundShape__isInfinite_p0"] = asm["_emscripten_bind_btCompoundShape__isInfinite_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1"]; +var _emscripten_bind_btConeShapeX__getLocalScalingNV_p0 = Module["_emscripten_bind_btConeShapeX__getLocalScalingNV_p0"] = asm["_emscripten_bind_btConeShapeX__getLocalScalingNV_p0"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0"]; +var _emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0 = Module["_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0"] = asm["_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0"]; +var _emscripten_bind_btSliderConstraint__getFrameOffsetA_p0 = Module["_emscripten_bind_btSliderConstraint__getFrameOffsetA_p0"] = asm["_emscripten_bind_btSliderConstraint__getFrameOffsetA_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1"]; +var _emscripten_bind_btVector3__serializeFloat_p1 = Module["_emscripten_bind_btVector3__serializeFloat_p1"] = asm["_emscripten_bind_btVector3__serializeFloat_p1"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3 = Module["_emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3"] = asm["_emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3"]; +var _emscripten_bind_btAxisSweep3__printStats_p0 = Module["_emscripten_bind_btAxisSweep3__printStats_p0"] = asm["_emscripten_bind_btAxisSweep3__printStats_p0"]; +var _emscripten_bind_btSphereShape__isSoftBody_p0 = Module["_emscripten_bind_btSphereShape__isSoftBody_p0"] = asm["_emscripten_bind_btSphereShape__isSoftBody_p0"]; +var _emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1"]; +var _emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btVector3__dot_p1 = Module["_emscripten_bind_btVector3__dot_p1"] = asm["_emscripten_bind_btVector3__dot_p1"]; +var _emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1"]; +var _emscripten_bind_btHashString__equals_p1 = Module["_emscripten_bind_btHashString__equals_p1"] = asm["_emscripten_bind_btHashString__equals_p1"]; +var _emscripten_bind_btUniversalConstraint__buildJacobian_p0 = Module["_emscripten_bind_btUniversalConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btUniversalConstraint__buildJacobian_p0"]; +var _emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btContactConstraint__set_m_objectType_p1 = Module["_emscripten_bind_btContactConstraint__set_m_objectType_p1"] = asm["_emscripten_bind_btContactConstraint__set_m_objectType_p1"]; +var _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0 = Module["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0"] = asm["_emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0"]; +var _emscripten_bind_btAngularLimit__getSoftness_p0 = Module["_emscripten_bind_btAngularLimit__getSoftness_p0"] = asm["_emscripten_bind_btAngularLimit__getSoftness_p0"]; +var _emscripten_bind_btRigidBody__applyCentralForce_p1 = Module["_emscripten_bind_btRigidBody__applyCentralForce_p1"] = asm["_emscripten_bind_btRigidBody__applyCentralForce_p1"]; +var _emscripten_bind_btQuaternion__farthest_p1 = Module["_emscripten_bind_btQuaternion__farthest_p1"] = asm["_emscripten_bind_btQuaternion__farthest_p1"]; +var _emscripten_bind_btPersistentManifold__removeContactPoint_p1 = Module["_emscripten_bind_btPersistentManifold__removeContactPoint_p1"] = asm["_emscripten_bind_btPersistentManifold__removeContactPoint_p1"]; +var _emscripten_bind_btJacobianEntry__set_m_Adiag_p1 = Module["_emscripten_bind_btJacobianEntry__set_m_Adiag_p1"] = asm["_emscripten_bind_btJacobianEntry__set_m_Adiag_p1"]; +var _emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1 = Module["_emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1"]; +var _emscripten_bind_btConvexHullShape__getMargin_p0 = Module["_emscripten_bind_btConvexHullShape__getMargin_p0"] = asm["_emscripten_bind_btConvexHullShape__getMargin_p0"]; +var _emscripten_bind_btMultiSphereShape__getLocalScaling_p0 = Module["_emscripten_bind_btMultiSphereShape__getLocalScaling_p0"] = asm["_emscripten_bind_btMultiSphereShape__getLocalScaling_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btIDebugDraw__setDebugMode_p1 = Module["_emscripten_bind_btIDebugDraw__setDebugMode_p1"] = asm["_emscripten_bind_btIDebugDraw__setDebugMode_p1"]; +var _emscripten_bind_btPairCachingGhostObject__setCompanionId_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCompanionId_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCompanionId_p1"]; +var _emscripten_bind_btVector4__normalize_p0 = Module["_emscripten_bind_btVector4__normalize_p0"] = asm["_emscripten_bind_btVector4__normalize_p0"]; +var _emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1"]; +var _emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getUid_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getUid_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getUid_p0"]; +var _emscripten_bind_btSliderConstraint__testAngLimits_p0 = Module["_emscripten_bind_btSliderConstraint__testAngLimits_p0"] = asm["_emscripten_bind_btSliderConstraint__testAngLimits_p0"]; +var _emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2 = Module["_emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2"] = asm["_emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2"]; +var _emscripten_bind_btBoxShape__isConvex_p0 = Module["_emscripten_bind_btBoxShape__isConvex_p0"] = asm["_emscripten_bind_btBoxShape__isConvex_p0"]; +var _emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5 = Module["_emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5"] = asm["_emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5"]; +var _emscripten_bind_btPersistentManifold__get_m_companionIdB_p0 = Module["_emscripten_bind_btPersistentManifold__get_m_companionIdB_p0"] = asm["_emscripten_bind_btPersistentManifold__get_m_companionIdB_p0"]; +var _emscripten_bind_btUniformScalingShape__isConcave_p0 = Module["_emscripten_bind_btUniformScalingShape__isConcave_p0"] = asm["_emscripten_bind_btUniformScalingShape__isConcave_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0"]; +var _emscripten_bind_bt32BitAxisSweep3__getHandle_p1 = Module["_emscripten_bind_bt32BitAxisSweep3__getHandle_p1"] = asm["_emscripten_bind_bt32BitAxisSweep3__getHandle_p1"]; +var _emscripten_bind_CProfileNode__Reset_p0 = Module["_emscripten_bind_CProfileNode__Reset_p0"] = asm["_emscripten_bind_CProfileNode__Reset_p0"]; +var _emscripten_bind_btSphereShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btSphereShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btSphereShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0 = Module["_emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0"] = asm["_emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0"]; +var _emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0 = Module["_emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0"]; +var _emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2 = Module["_emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2"] = asm["_emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2"]; +var _emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1"]; +var _emscripten_bind_btBoxShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btBoxShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btBoxShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btCylinderShape__getMargin_p0 = Module["_emscripten_bind_btCylinderShape__getMargin_p0"] = asm["_emscripten_bind_btCylinderShape__getMargin_p0"]; +var _emscripten_bind_btQuaternion__w_p0 = Module["_emscripten_bind_btQuaternion__w_p0"] = asm["_emscripten_bind_btQuaternion__w_p0"]; +var _emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0 = Module["_emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0"] = asm["_emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0"]; +var _emscripten_bind_btIDebugDraw__draw3dText_p2 = Module["_emscripten_bind_btIDebugDraw__draw3dText_p2"] = asm["_emscripten_bind_btIDebugDraw__draw3dText_p2"]; +var _emscripten_bind_btMatrix3x3__setIdentity_p0 = Module["_emscripten_bind_btMatrix3x3__setIdentity_p0"] = asm["_emscripten_bind_btMatrix3x3__setIdentity_p0"]; +var _emscripten_bind_btHingeConstraint____destroy___p0 = Module["_emscripten_bind_btHingeConstraint____destroy___p0"] = asm["_emscripten_bind_btHingeConstraint____destroy___p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1"]; +var _emscripten_bind_btCollisionWorld__setDebugDrawer_p1 = Module["_emscripten_bind_btCollisionWorld__setDebugDrawer_p1"] = asm["_emscripten_bind_btCollisionWorld__setDebugDrawer_p1"]; +var _emscripten_bind_btTriangleMesh__getScaling_p0 = Module["_emscripten_bind_btTriangleMesh__getScaling_p0"] = asm["_emscripten_bind_btTriangleMesh__getScaling_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0"]; +var _emscripten_bind_btCapsuleShape__isConvex2d_p0 = Module["_emscripten_bind_btCapsuleShape__isConvex2d_p0"] = asm["_emscripten_bind_btCapsuleShape__isConvex2d_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0"]; +var _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1 = Module["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1"] = asm["_emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1"]; +var _emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btCylinderShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btCylinderShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btCylinderShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btCompoundShape__isConvex2d_p0 = Module["_emscripten_bind_btCompoundShape__isConvex2d_p0"] = asm["_emscripten_bind_btCompoundShape__isConvex2d_p0"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0"]; +var _emscripten_bind_btHinge2Constraint__isEnabled_p0 = Module["_emscripten_bind_btHinge2Constraint__isEnabled_p0"] = asm["_emscripten_bind_btHinge2Constraint__isEnabled_p0"]; +var _emscripten_bind_btSliderConstraint__getDampingDirLin_p0 = Module["_emscripten_bind_btSliderConstraint__getDampingDirLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getDampingDirLin_p0"]; +var _emscripten_bind_btDispatcher__getInternalManifoldPointer_p0 = Module["_emscripten_bind_btDispatcher__getInternalManifoldPointer_p0"] = asm["_emscripten_bind_btDispatcher__getInternalManifoldPointer_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1"]; +var _emscripten_bind_btMultiSphereShape__getSphereCount_p0 = Module["_emscripten_bind_btMultiSphereShape__getSphereCount_p0"] = asm["_emscripten_bind_btMultiSphereShape__getSphereCount_p0"]; +var _emscripten_bind_btDbvtBroadphase__rayTest_p5 = Module["_emscripten_bind_btDbvtBroadphase__rayTest_p5"] = asm["_emscripten_bind_btDbvtBroadphase__rayTest_p5"]; +var _emscripten_bind_btDbvtBroadphase__rayTest_p4 = Module["_emscripten_bind_btDbvtBroadphase__rayTest_p4"] = asm["_emscripten_bind_btDbvtBroadphase__rayTest_p4"]; +var _emscripten_bind_btHinge2Constraint__setStiffness_p2 = Module["_emscripten_bind_btHinge2Constraint__setStiffness_p2"] = asm["_emscripten_bind_btHinge2Constraint__setStiffness_p2"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1"]; +var _emscripten_bind_btCylinderShapeX__isNonMoving_p0 = Module["_emscripten_bind_btCylinderShapeX__isNonMoving_p0"] = asm["_emscripten_bind_btCylinderShapeX__isNonMoving_p0"]; +var _emscripten_bind_btConvexInternalShape__getMarginNV_p0 = Module["_emscripten_bind_btConvexInternalShape__getMarginNV_p0"] = asm["_emscripten_bind_btConvexInternalShape__getMarginNV_p0"]; +var _emscripten_bind_btConeShapeX__isSoftBody_p0 = Module["_emscripten_bind_btConeShapeX__isSoftBody_p0"] = asm["_emscripten_bind_btConeShapeX__isSoftBody_p0"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btHingeConstraint__getInfo2Internal_p5 = Module["_emscripten_bind_btHingeConstraint__getInfo2Internal_p5"] = asm["_emscripten_bind_btHingeConstraint__getInfo2Internal_p5"]; +var _emscripten_bind_btVector3__serializeDouble_p1 = Module["_emscripten_bind_btVector3__serializeDouble_p1"] = asm["_emscripten_bind_btVector3__serializeDouble_p1"]; +var _emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1 = Module["_emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1"] = asm["_emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1"]; +var _emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0 = Module["_emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0"] = asm["_emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0"]; +var _emscripten_bind_btVehicleRaycaster__castRay_p3 = Module["_emscripten_bind_btVehicleRaycaster__castRay_p3"] = asm["_emscripten_bind_btVehicleRaycaster__castRay_p3"]; +var _emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3 = Module["_emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3"] = asm["_emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3"]; +var _emscripten_bind_btManifoldPoint__get_m_index0_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_index0_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_index0_p0"]; +var _emscripten_bind_btTriangleInfoMap__deSerialize_p1 = Module["_emscripten_bind_btTriangleInfoMap__deSerialize_p1"] = asm["_emscripten_bind_btTriangleInfoMap__deSerialize_p1"]; +var _emscripten_bind_btDynamicsWorld__convexSweepTest_p4 = Module["_emscripten_bind_btDynamicsWorld__convexSweepTest_p4"] = asm["_emscripten_bind_btDynamicsWorld__convexSweepTest_p4"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1"]; +var _emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0 = Module["_emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0"] = asm["_emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1"]; +var _emscripten_bind_btHingeConstraint__getRigidBodyA_p0 = Module["_emscripten_bind_btHingeConstraint__getRigidBodyA_p0"] = asm["_emscripten_bind_btHingeConstraint__getRigidBodyA_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12 = Module["_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12"] = asm["_emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1"]; +var _emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0 = Module["_emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0"] = asm["_emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0"]; +var _emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1 = Module["_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1"]; +var _emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0 = Module["_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0"] = asm["_emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0"]; +var _emscripten_bind_btCapsuleShape__getLocalScaling_p0 = Module["_emscripten_bind_btCapsuleShape__getLocalScaling_p0"] = asm["_emscripten_bind_btCapsuleShape__getLocalScaling_p0"]; +var _emscripten_bind_btRaycastVehicle__getNumWheels_p0 = Module["_emscripten_bind_btRaycastVehicle__getNumWheels_p0"] = asm["_emscripten_bind_btRaycastVehicle__getNumWheels_p0"]; +var _emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0"]; +var _emscripten_bind_btConcaveShape__getMargin_p0 = Module["_emscripten_bind_btConcaveShape__getMargin_p0"] = asm["_emscripten_bind_btConcaveShape__getMargin_p0"]; +var _emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1 = Module["_emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1"] = asm["_emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1"]; +var _emscripten_bind_btBU_Simplex1to4__getAabb_p3 = Module["_emscripten_bind_btBU_Simplex1to4__getAabb_p3"] = asm["_emscripten_bind_btBU_Simplex1to4__getAabb_p3"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1"]; +var _emscripten_bind_btManifoldPoint__get_m_partId0_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_partId0_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_partId0_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1"]; +var _emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1 = Module["_emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1"] = asm["_emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2 = Module["_emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2"] = asm["_emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2"]; +var _emscripten_bind_btCylinderShapeZ__getAabbSlow_p3 = Module["_emscripten_bind_btCylinderShapeZ__getAabbSlow_p3"] = asm["_emscripten_bind_btCylinderShapeZ__getAabbSlow_p3"]; +var _emscripten_bind_btHingeConstraint__getUseFrameOffset_p0 = Module["_emscripten_bind_btHingeConstraint__getUseFrameOffset_p0"] = asm["_emscripten_bind_btHingeConstraint__getUseFrameOffset_p0"]; +var _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0 = Module["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0"] = asm["_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0"]; +var _emscripten_bind_btDynamicsWorld__convexSweepTest_p5 = Module["_emscripten_bind_btDynamicsWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btDynamicsWorld__convexSweepTest_p5"]; +var _emscripten_bind_btCylinderShape__isSoftBody_p0 = Module["_emscripten_bind_btCylinderShape__isSoftBody_p0"] = asm["_emscripten_bind_btCylinderShape__isSoftBody_p0"]; +var _emscripten_bind_btCylinderShape__setMargin_p1 = Module["_emscripten_bind_btCylinderShape__setMargin_p1"] = asm["_emscripten_bind_btCylinderShape__setMargin_p1"]; +var _emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0 = Module["_emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0"] = asm["_emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0"]; +var _emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0"]; +var _emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2 = Module["_emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2"] = asm["_emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2"]; +var _emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1 = Module["_emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1"]; +var _emscripten_bind_btVector3__op_sub_p1 = Module["_emscripten_bind_btVector3__op_sub_p1"] = asm["_emscripten_bind_btVector3__op_sub_p1"]; +var _emscripten_bind_btIndexedMesh__get_m_indexType_p0 = Module["_emscripten_bind_btIndexedMesh__get_m_indexType_p0"] = asm["_emscripten_bind_btIndexedMesh__get_m_indexType_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2"]; +var _emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1 = Module["_emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1"] = asm["_emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2"]; +var _emscripten_bind_btCapsuleShapeX__isInfinite_p0 = Module["_emscripten_bind_btCapsuleShapeX__isInfinite_p0"] = asm["_emscripten_bind_btCapsuleShapeX__isInfinite_p0"]; +var _emscripten_bind_btCylinderShapeZ__isConvex_p0 = Module["_emscripten_bind_btCylinderShapeZ__isConvex_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isConvex_p0"]; +var _emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1 = Module["_emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1"] = asm["_emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1"]; +var _emscripten_bind_btSliderConstraint__getAngularPos_p0 = Module["_emscripten_bind_btSliderConstraint__getAngularPos_p0"] = asm["_emscripten_bind_btSliderConstraint__getAngularPos_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8 = Module["_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8"] = asm["_emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8"]; +var _emscripten_bind_btConvexInternalShape__isSoftBody_p0 = Module["_emscripten_bind_btConvexInternalShape__isSoftBody_p0"] = asm["_emscripten_bind_btConvexInternalShape__isSoftBody_p0"]; +var _emscripten_bind_btMultiSphereShape__getBoundingSphere_p2 = Module["_emscripten_bind_btMultiSphereShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btMultiSphereShape__getBoundingSphere_p2"]; +var _emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1"]; +var _emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2 = Module["_emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2"] = asm["_emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2"]; +var _emscripten_bind_btConvexHullShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexHullShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexHullShape__isPolyhedral_p0"]; +var _emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1 = Module["_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1"]; +var _emscripten_bind_btSphereShape__getAabb_p3 = Module["_emscripten_bind_btSphereShape__getAabb_p3"] = asm["_emscripten_bind_btSphereShape__getAabb_p3"]; +var _emscripten_bind_btCollisionObject__setFriction_p1 = Module["_emscripten_bind_btCollisionObject__setFriction_p1"] = asm["_emscripten_bind_btCollisionObject__setFriction_p1"]; +var _emscripten_bind_btConvexHullShape__getMarginNV_p0 = Module["_emscripten_bind_btConvexHullShape__getMarginNV_p0"] = asm["_emscripten_bind_btConvexHullShape__getMarginNV_p0"]; +var _emscripten_bind_btCylinderShapeZ__isPolyhedral_p0 = Module["_emscripten_bind_btCylinderShapeZ__isPolyhedral_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isPolyhedral_p0"]; +var _emscripten_bind_btBU_Simplex1to4__isConcave_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isConcave_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isConcave_p0"]; +var _emscripten_bind_btConvexShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btIDebugDraw__drawContactPoint_p5 = Module["_emscripten_bind_btIDebugDraw__drawContactPoint_p5"] = asm["_emscripten_bind_btIDebugDraw__drawContactPoint_p5"]; +var _emscripten_bind_btConeShapeZ__isPolyhedral_p0 = Module["_emscripten_bind_btConeShapeZ__isPolyhedral_p0"] = asm["_emscripten_bind_btConeShapeZ__isPolyhedral_p0"]; +var _emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1 = Module["_emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1"] = asm["_emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1"]; +var _emscripten_bind_btContactConstraint__getUserConstraintPtr_p0 = Module["_emscripten_bind_btContactConstraint__getUserConstraintPtr_p0"] = asm["_emscripten_bind_btContactConstraint__getUserConstraintPtr_p0"]; +var _emscripten_bind_btContactConstraint__buildJacobian_p0 = Module["_emscripten_bind_btContactConstraint__buildJacobian_p0"] = asm["_emscripten_bind_btContactConstraint__buildJacobian_p0"]; +var _emscripten_bind_btRaycastVehicle__updateVehicle_p1 = Module["_emscripten_bind_btRaycastVehicle__updateVehicle_p1"] = asm["_emscripten_bind_btRaycastVehicle__updateVehicle_p1"]; +var _emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btClock____destroy___p0 = Module["_emscripten_bind_btClock____destroy___p0"] = asm["_emscripten_bind_btClock____destroy___p0"]; +var _emscripten_bind_btClock__btClock_p1 = Module["_emscripten_bind_btClock__btClock_p1"] = asm["_emscripten_bind_btClock__btClock_p1"]; +var _emscripten_bind_btClock__btClock_p0 = Module["_emscripten_bind_btClock__btClock_p0"] = asm["_emscripten_bind_btClock__btClock_p0"]; +var _emscripten_bind_btTriangleMesh__getNumTriangles_p0 = Module["_emscripten_bind_btTriangleMesh__getNumTriangles_p0"] = asm["_emscripten_bind_btTriangleMesh__getNumTriangles_p0"]; +var _emscripten_bind_btHingeConstraint__getRigidBodyB_p0 = Module["_emscripten_bind_btHingeConstraint__getRigidBodyB_p0"] = asm["_emscripten_bind_btHingeConstraint__getRigidBodyB_p0"]; +var _emscripten_bind_btCylinderShape__setUserPointer_p1 = Module["_emscripten_bind_btCylinderShape__setUserPointer_p1"] = asm["_emscripten_bind_btCylinderShape__setUserPointer_p1"]; +var _emscripten_bind_btManifoldPoint__get_m_lifeTime_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_lifeTime_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_lifeTime_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2"]; +var _emscripten_bind_btBroadphaseProxy__isCompound_p1 = Module["_emscripten_bind_btBroadphaseProxy__isCompound_p1"] = asm["_emscripten_bind_btBroadphaseProxy__isCompound_p1"]; +var _emscripten_bind_btConvexInternalShape__getLocalScaling_p0 = Module["_emscripten_bind_btConvexInternalShape__getLocalScaling_p0"] = asm["_emscripten_bind_btConvexInternalShape__getLocalScaling_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6 = Module["_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6"] = asm["_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6"]; +var _emscripten_bind_btRigidBody__setUserPointer_p1 = Module["_emscripten_bind_btRigidBody__setUserPointer_p1"] = asm["_emscripten_bind_btRigidBody__setUserPointer_p1"]; +var _emscripten_bind_btGhostObject__getBroadphaseHandle_p0 = Module["_emscripten_bind_btGhostObject__getBroadphaseHandle_p0"] = asm["_emscripten_bind_btGhostObject__getBroadphaseHandle_p0"]; +var _emscripten_bind_btUniformScalingShape__isCompound_p0 = Module["_emscripten_bind_btUniformScalingShape__isCompound_p0"] = asm["_emscripten_bind_btUniformScalingShape__isCompound_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0"]; +var _emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0 = Module["_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0"] = asm["_emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0"]; +var _emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1"]; +var _emscripten_bind_btQuadWord__z_p0 = Module["_emscripten_bind_btQuadWord__z_p0"] = asm["_emscripten_bind_btQuadWord__z_p0"]; +var _emscripten_bind_btSerializer__allocate_p2 = Module["_emscripten_bind_btSerializer__allocate_p2"] = asm["_emscripten_bind_btSerializer__allocate_p2"]; +var _emscripten_bind_btConvexShape__getAabbNonVirtual_p3 = Module["_emscripten_bind_btConvexShape__getAabbNonVirtual_p3"] = asm["_emscripten_bind_btConvexShape__getAabbNonVirtual_p3"]; +var _emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5 = Module["_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5"] = asm["_emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5"]; +var _emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3 = Module["_emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3"] = asm["_emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3"]; +var _emscripten_bind_btGhostObject__getDeactivationTime_p0 = Module["_emscripten_bind_btGhostObject__getDeactivationTime_p0"] = asm["_emscripten_bind_btGhostObject__getDeactivationTime_p0"]; +var _emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_btManifoldResult__btManifoldResult_p2 = Module["_emscripten_bind_btManifoldResult__btManifoldResult_p2"] = asm["_emscripten_bind_btManifoldResult__btManifoldResult_p2"]; +var _emscripten_bind_btManifoldResult__btManifoldResult_p0 = Module["_emscripten_bind_btManifoldResult__btManifoldResult_p0"] = asm["_emscripten_bind_btManifoldResult__btManifoldResult_p0"]; +var _emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0 = Module["_emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0"] = asm["_emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0"]; +var _emscripten_bind_btDbvtProxy__isPolyhedral_p1 = Module["_emscripten_bind_btDbvtProxy__isPolyhedral_p1"] = asm["_emscripten_bind_btDbvtProxy__isPolyhedral_p1"]; +var _emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1 = Module["_emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1"] = asm["_emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1"]; +var _emscripten_bind_btVector4__setMin_p1 = Module["_emscripten_bind_btVector4__setMin_p1"] = asm["_emscripten_bind_btVector4__setMin_p1"]; +var _emscripten_bind_btManifoldPoint__set_m_index1_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_index1_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_index1_p1"]; +var _emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btPoint2PointConstraint__getConstraintType_p0 = Module["_emscripten_bind_btPoint2PointConstraint__getConstraintType_p0"] = asm["_emscripten_bind_btPoint2PointConstraint__getConstraintType_p0"]; +var _emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btStaticPlaneShape__getLocalScaling_p0 = Module["_emscripten_bind_btStaticPlaneShape__getLocalScaling_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getLocalScaling_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1"]; +var _emscripten_bind_btOverlapCallback__processOverlap_p1 = Module["_emscripten_bind_btOverlapCallback__processOverlap_p1"] = asm["_emscripten_bind_btOverlapCallback__processOverlap_p1"]; +var _emscripten_bind_btConeShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btConeShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btConeShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btStackAlloc__destroy_p0 = Module["_emscripten_bind_btStackAlloc__destroy_p0"] = asm["_emscripten_bind_btStackAlloc__destroy_p0"]; +var _emscripten_bind_btConeShapeX__getAngularMotionDisc_p0 = Module["_emscripten_bind_btConeShapeX__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btConeShapeX__getAngularMotionDisc_p0"]; +var _emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2 = Module["_emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2"] = asm["_emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2"]; +var _emscripten_bind_btBroadphasePair__set_m_pProxy0_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_pProxy0_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_pProxy0_p1"]; +var _emscripten_bind_btPairCachingGhostObject__setActivationState_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setActivationState_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setActivationState_p1"]; +var _emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0 = Module["_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0"] = asm["_emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0"]; +var _emscripten_bind_btSliderConstraint__testLinLimits_p0 = Module["_emscripten_bind_btSliderConstraint__testLinLimits_p0"] = asm["_emscripten_bind_btSliderConstraint__testLinLimits_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1 = Module["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1"]; +var _emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1 = Module["_emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1"] = asm["_emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0"]; +var _emscripten_bind_btConeShapeX__getHeight_p0 = Module["_emscripten_bind_btConeShapeX__getHeight_p0"] = asm["_emscripten_bind_btConeShapeX__getHeight_p0"]; +var _emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0 = Module["_emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0"] = asm["_emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0"]; +var _emscripten_bind_btMatrix3x3__cofac_p4 = Module["_emscripten_bind_btMatrix3x3__cofac_p4"] = asm["_emscripten_bind_btMatrix3x3__cofac_p4"]; +var _emscripten_bind_btDbvtBroadphase__setAabb_p4 = Module["_emscripten_bind_btDbvtBroadphase__setAabb_p4"] = asm["_emscripten_bind_btDbvtBroadphase__setAabb_p4"]; +var _emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1 = Module["_emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1"] = asm["_emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1"]; +var _emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0"]; +var _emscripten_bind_btGhostObject__mergesSimulationIslands_p0 = Module["_emscripten_bind_btGhostObject__mergesSimulationIslands_p0"] = asm["_emscripten_bind_btGhostObject__mergesSimulationIslands_p0"]; +var _emscripten_bind_btConeTwistConstraint__setParam_p2 = Module["_emscripten_bind_btConeTwistConstraint__setParam_p2"] = asm["_emscripten_bind_btConeTwistConstraint__setParam_p2"]; +var _emscripten_bind_btPersistentManifold____destroy___p0 = Module["_emscripten_bind_btPersistentManifold____destroy___p0"] = asm["_emscripten_bind_btPersistentManifold____destroy___p0"]; +var _emscripten_bind_btBoxShape__getBoundingSphere_p2 = Module["_emscripten_bind_btBoxShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btBoxShape__getBoundingSphere_p2"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0"]; +var _emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0 = Module["_emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0"]; +var _emscripten_bind_btCollisionShape__isCompound_p0 = Module["_emscripten_bind_btCollisionShape__isCompound_p0"] = asm["_emscripten_bind_btCollisionShape__isCompound_p0"]; +var _emscripten_bind_btVector4__minAxis4_p0 = Module["_emscripten_bind_btVector4__minAxis4_p0"] = asm["_emscripten_bind_btVector4__minAxis4_p0"]; +var _emscripten_bind_btBroadphasePair__set_m_pProxy1_p1 = Module["_emscripten_bind_btBroadphasePair__set_m_pProxy1_p1"] = asm["_emscripten_bind_btBroadphasePair__set_m_pProxy1_p1"]; +var _emscripten_bind_btQuadWord__setMin_p1 = Module["_emscripten_bind_btQuadWord__setMin_p1"] = asm["_emscripten_bind_btQuadWord__setMin_p1"]; +var _emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1 = Module["_emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1"] = asm["_emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1"]; +var _emscripten_bind_btDbvtBroadphase__createProxy_p8 = Module["_emscripten_bind_btDbvtBroadphase__createProxy_p8"] = asm["_emscripten_bind_btDbvtBroadphase__createProxy_p8"]; +var _emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2 = Module["_emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2"] = asm["_emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2"]; +var _emscripten_bind_btDynamicsWorld__getConstraintSolver_p0 = Module["_emscripten_bind_btDynamicsWorld__getConstraintSolver_p0"] = asm["_emscripten_bind_btDynamicsWorld__getConstraintSolver_p0"]; +var _emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3 = Module["_emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3"] = asm["_emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3"]; +var _emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0 = Module["_emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0"] = asm["_emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0"]; +var _emscripten_bind_btQuaternion__inverse_p0 = Module["_emscripten_bind_btQuaternion__inverse_p0"] = asm["_emscripten_bind_btQuaternion__inverse_p0"]; +var _emscripten_bind_btRigidBody__internalGetExtensionPointer_p0 = Module["_emscripten_bind_btRigidBody__internalGetExtensionPointer_p0"] = asm["_emscripten_bind_btRigidBody__internalGetExtensionPointer_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1"]; +var _emscripten_bind_btDynamicsWorld__objectQuerySingle_p8 = Module["_emscripten_bind_btDynamicsWorld__objectQuerySingle_p8"] = asm["_emscripten_bind_btDynamicsWorld__objectQuerySingle_p8"]; +var _emscripten_bind_btCollisionObject__isStaticObject_p0 = Module["_emscripten_bind_btCollisionObject__isStaticObject_p0"] = asm["_emscripten_bind_btCollisionObject__isStaticObject_p0"]; +var _emscripten_bind_btCapsuleShape__getBoundingSphere_p2 = Module["_emscripten_bind_btCapsuleShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btCapsuleShape__getBoundingSphere_p2"]; +var _emscripten_bind_btStorageResult__setShapeIdentifiersB_p2 = Module["_emscripten_bind_btStorageResult__setShapeIdentifiersB_p2"] = asm["_emscripten_bind_btStorageResult__setShapeIdentifiersB_p2"]; +var _emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2 = Module["_emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2"] = asm["_emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0"]; +var _emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0 = Module["_emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0"] = asm["_emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2 = Module["_emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2"]; +var _emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getParam_p2 = Module["_emscripten_bind_btGeneric6DofConstraint__getParam_p2"] = asm["_emscripten_bind_btGeneric6DofConstraint__getParam_p2"]; +var _emscripten_bind_btVector3__setX_p1 = Module["_emscripten_bind_btVector3__setX_p1"] = asm["_emscripten_bind_btVector3__setX_p1"]; +var _emscripten_bind_btSphereShape__getBoundingSphere_p2 = Module["_emscripten_bind_btSphereShape__getBoundingSphere_p2"] = asm["_emscripten_bind_btSphereShape__getBoundingSphere_p2"]; +var _emscripten_bind_btGeneric6DofConstraint__getParam_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getParam_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getParam_p1"]; +var _emscripten_bind_btActionInterface__updateAction_p2 = Module["_emscripten_bind_btActionInterface__updateAction_p2"] = asm["_emscripten_bind_btActionInterface__updateAction_p2"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0 = Module["_emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0"] = asm["_emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1"]; +var _emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0 = Module["_emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0"] = asm["_emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0"]; +var _emscripten_bind_btQuantizedBvh__buildInternal_p0 = Module["_emscripten_bind_btQuantizedBvh__buildInternal_p0"] = asm["_emscripten_bind_btQuantizedBvh__buildInternal_p0"]; +var _emscripten_bind_btConvexShape__getMargin_p0 = Module["_emscripten_bind_btConvexShape__getMargin_p0"] = asm["_emscripten_bind_btConvexShape__getMargin_p0"]; +var _emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1 = Module["_emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1"]; +var _emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0 = Module["_emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0"] = asm["_emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0"]; +var _emscripten_bind_btConeShape__setMargin_p1 = Module["_emscripten_bind_btConeShape__setMargin_p1"] = asm["_emscripten_bind_btConeShape__setMargin_p1"]; +var _emscripten_bind_btStackAlloc__create_p1 = Module["_emscripten_bind_btStackAlloc__create_p1"] = asm["_emscripten_bind_btStackAlloc__create_p1"]; +var _emscripten_bind_btRigidBody__getAnisotropicFriction_p0 = Module["_emscripten_bind_btRigidBody__getAnisotropicFriction_p0"] = asm["_emscripten_bind_btRigidBody__getAnisotropicFriction_p0"]; +var _emscripten_bind_btBU_Simplex1to4__isSoftBody_p0 = Module["_emscripten_bind_btBU_Simplex1to4__isSoftBody_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__isSoftBody_p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4 = Module["_emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4"]; +var _emscripten_bind_btCollisionShape__calculateLocalInertia_p2 = Module["_emscripten_bind_btCollisionShape__calculateLocalInertia_p2"] = asm["_emscripten_bind_btCollisionShape__calculateLocalInertia_p2"]; +var _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6 = Module["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6"] = asm["_emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6"]; +var _emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0"]; +var _emscripten_bind_btQuaternion__length2_p0 = Module["_emscripten_bind_btQuaternion__length2_p0"] = asm["_emscripten_bind_btQuaternion__length2_p0"]; +var _emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0 = Module["_emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0"] = asm["_emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0"]; +var _emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1 = Module["_emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1"] = asm["_emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1"]; +var _emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4 = Module["_emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4"] = asm["_emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4"]; +var _emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1"]; +var _emscripten_bind_btRaycastVehicle__getForwardAxis_p0 = Module["_emscripten_bind_btRaycastVehicle__getForwardAxis_p0"] = asm["_emscripten_bind_btRaycastVehicle__getForwardAxis_p0"]; +var _emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0 = Module["_emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0"] = asm["_emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0"]; +var _emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1 = Module["_emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1"] = asm["_emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1"]; +var _emscripten_bind_btStaticPlaneShape__getUserPointer_p0 = Module["_emscripten_bind_btStaticPlaneShape__getUserPointer_p0"] = asm["_emscripten_bind_btStaticPlaneShape__getUserPointer_p0"]; +var _emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0 = Module["_emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0"] = asm["_emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0"]; +var _emscripten_bind_btSimpleDynamicsWorld__contactTest_p2 = Module["_emscripten_bind_btSimpleDynamicsWorld__contactTest_p2"] = asm["_emscripten_bind_btSimpleDynamicsWorld__contactTest_p2"]; +var _emscripten_bind_btGhostObject__internalGetExtensionPointer_p0 = Module["_emscripten_bind_btGhostObject__internalGetExtensionPointer_p0"] = asm["_emscripten_bind_btGhostObject__internalGetExtensionPointer_p0"]; +var _emscripten_bind_btStridingMeshInterface__getNumSubParts_p0 = Module["_emscripten_bind_btStridingMeshInterface__getNumSubParts_p0"] = asm["_emscripten_bind_btStridingMeshInterface__getNumSubParts_p0"]; +var _emscripten_bind_btVector3__getSkewSymmetricMatrix_p3 = Module["_emscripten_bind_btVector3__getSkewSymmetricMatrix_p3"] = asm["_emscripten_bind_btVector3__getSkewSymmetricMatrix_p3"]; +var _emscripten_bind_btGhostObject__setBroadphaseHandle_p1 = Module["_emscripten_bind_btGhostObject__setBroadphaseHandle_p1"] = asm["_emscripten_bind_btGhostObject__setBroadphaseHandle_p1"]; +var _emscripten_bind_ConcreteContactResultCallback____destroy___p0 = Module["_emscripten_bind_ConcreteContactResultCallback____destroy___p0"] = asm["_emscripten_bind_ConcreteContactResultCallback____destroy___p0"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0"]; +var _emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0 = Module["_emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0"] = asm["_emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0"]; +var _emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1 = Module["_emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1"] = asm["_emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1"]; +var _emscripten_bind_btHingeConstraint__setFrames_p2 = Module["_emscripten_bind_btHingeConstraint__setFrames_p2"] = asm["_emscripten_bind_btHingeConstraint__setFrames_p2"]; +var _emscripten_bind_btBroadphaseAabbCallback__process_p1 = Module["_emscripten_bind_btBroadphaseAabbCallback__process_p1"] = asm["_emscripten_bind_btBroadphaseAabbCallback__process_p1"]; +var _emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1 = Module["_emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1"] = asm["_emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1"]; +var _emscripten_bind_btCylinderShape__getAabb_p3 = Module["_emscripten_bind_btCylinderShape__getAabb_p3"] = asm["_emscripten_bind_btCylinderShape__getAabb_p3"]; +var _emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2"]; +var _emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0 = Module["_emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0"] = asm["_emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0"]; +var _emscripten_bind_btRaycastVehicle__getUserConstraintId_p0 = Module["_emscripten_bind_btRaycastVehicle__getUserConstraintId_p0"] = asm["_emscripten_bind_btRaycastVehicle__getUserConstraintId_p0"]; +var _emscripten_bind_btEmptyShape__isInfinite_p0 = Module["_emscripten_bind_btEmptyShape__isInfinite_p0"] = asm["_emscripten_bind_btEmptyShape__isInfinite_p0"]; +var _emscripten_bind_btAngularLimit__getSign_p0 = Module["_emscripten_bind_btAngularLimit__getSign_p0"] = asm["_emscripten_bind_btAngularLimit__getSign_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1"]; +var _emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3 = Module["_emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3"] = asm["_emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3"]; +var _emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1 = Module["_emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1"] = asm["_emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1"]; +var _emscripten_bind_btVector3__cross_p1 = Module["_emscripten_bind_btVector3__cross_p1"] = asm["_emscripten_bind_btVector3__cross_p1"]; +var _emscripten_bind_btCylinderShapeZ__serialize_p2 = Module["_emscripten_bind_btCylinderShapeZ__serialize_p2"] = asm["_emscripten_bind_btCylinderShapeZ__serialize_p2"]; +var _emscripten_bind_btCylinderShapeZ__isSoftBody_p0 = Module["_emscripten_bind_btCylinderShapeZ__isSoftBody_p0"] = asm["_emscripten_bind_btCylinderShapeZ__isSoftBody_p0"]; +var _emscripten_bind_btMultiSphereShape__serialize_p2 = Module["_emscripten_bind_btMultiSphereShape__serialize_p2"] = asm["_emscripten_bind_btMultiSphereShape__serialize_p2"]; +var _emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0 = Module["_emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0"] = asm["_emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0"]; +var _emscripten_bind_btVector4__length_p0 = Module["_emscripten_bind_btVector4__length_p0"] = asm["_emscripten_bind_btVector4__length_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3 = Module["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3"] = asm["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3"]; +var _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2 = Module["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2"] = asm["_emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2"]; +var _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1 = Module["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1"] = asm["_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1"]; +var _emscripten_bind_btCollisionShape__isNonMoving_p0 = Module["_emscripten_bind_btCollisionShape__isNonMoving_p0"] = asm["_emscripten_bind_btCollisionShape__isNonMoving_p0"]; +var _emscripten_bind_btConvexShape__localGetSupportingVertex_p1 = Module["_emscripten_bind_btConvexShape__localGetSupportingVertex_p1"] = asm["_emscripten_bind_btConvexShape__localGetSupportingVertex_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape____destroy___p0 = Module["_emscripten_bind_btConvexTriangleMeshShape____destroy___p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape____destroy___p0"]; +var _emscripten_bind_btRigidBody__setIslandTag_p1 = Module["_emscripten_bind_btRigidBody__setIslandTag_p1"] = asm["_emscripten_bind_btRigidBody__setIslandTag_p1"]; +var _emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btPolyhedralConvexShape__isInfinite_p0 = Module["_emscripten_bind_btPolyhedralConvexShape__isInfinite_p0"] = asm["_emscripten_bind_btPolyhedralConvexShape__isInfinite_p0"]; +var _emscripten_bind_btTriangleMesh__unLockVertexBase_p1 = Module["_emscripten_bind_btTriangleMesh__unLockVertexBase_p1"] = asm["_emscripten_bind_btTriangleMesh__unLockVertexBase_p1"]; +var _emscripten_bind_btQuaternion__setMin_p1 = Module["_emscripten_bind_btQuaternion__setMin_p1"] = asm["_emscripten_bind_btQuaternion__setMin_p1"]; +var _emscripten_bind_btConeShapeZ__getHeight_p0 = Module["_emscripten_bind_btConeShapeZ__getHeight_p0"] = asm["_emscripten_bind_btConeShapeZ__getHeight_p0"]; +var _emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1 = Module["_emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1"] = asm["_emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1"]; +var _emscripten_bind_btAngularLimit__getRelaxationFactor_p0 = Module["_emscripten_bind_btAngularLimit__getRelaxationFactor_p0"] = asm["_emscripten_bind_btAngularLimit__getRelaxationFactor_p0"]; +var _emscripten_bind_btSphereShape__isInfinite_p0 = Module["_emscripten_bind_btSphereShape__isInfinite_p0"] = asm["_emscripten_bind_btSphereShape__isInfinite_p0"]; +var _emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0 = Module["_emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0"] = asm["_emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0"]; +var _emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0"]; +var _emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1 = Module["_emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1"] = asm["_emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1"]; +var _emscripten_bind_btBoxShape__getNumVertices_p0 = Module["_emscripten_bind_btBoxShape__getNumVertices_p0"] = asm["_emscripten_bind_btBoxShape__getNumVertices_p0"]; +var _emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0 = Module["_emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0"] = asm["_emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0"]; +var _emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0 = Module["_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0"] = asm["_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0"]; +var _emscripten_bind_btBU_Simplex1to4__getName_p0 = Module["_emscripten_bind_btBU_Simplex1to4__getName_p0"] = asm["_emscripten_bind_btBU_Simplex1to4__getName_p0"]; +var _emscripten_bind_btStorageResult__addContactPoint_p3 = Module["_emscripten_bind_btStorageResult__addContactPoint_p3"] = asm["_emscripten_bind_btStorageResult__addContactPoint_p3"]; +var _emscripten_bind_btHingeConstraint__getSolveLimit_p0 = Module["_emscripten_bind_btHingeConstraint__getSolveLimit_p0"] = asm["_emscripten_bind_btHingeConstraint__getSolveLimit_p0"]; +var _emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0 = Module["_emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0"] = asm["_emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0"]; +var _emscripten_bind_btConvexTriangleMeshShape__serialize_p2 = Module["_emscripten_bind_btConvexTriangleMeshShape__serialize_p2"] = asm["_emscripten_bind_btConvexTriangleMeshShape__serialize_p2"]; +var _emscripten_bind_btDispatcher__getNumManifolds_p0 = Module["_emscripten_bind_btDispatcher__getNumManifolds_p0"] = asm["_emscripten_bind_btDispatcher__getNumManifolds_p0"]; +var _emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0 = Module["_emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0"] = asm["_emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0"]; +var _emscripten_bind_btSliderConstraint__getInfo1_p1 = Module["_emscripten_bind_btSliderConstraint__getInfo1_p1"] = asm["_emscripten_bind_btSliderConstraint__getInfo1_p1"]; +var _emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0 = Module["_emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0"] = asm["_emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0"]; +var _emscripten_bind_btGhostObject____destroy___p0 = Module["_emscripten_bind_btGhostObject____destroy___p0"] = asm["_emscripten_bind_btGhostObject____destroy___p0"]; +var _emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0 = Module["_emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0"] = asm["_emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0"]; +var _emscripten_bind_btConvexShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexShape__serializeSingleShape_p1"]; +var _emscripten_bind_btCapsuleShapeX____destroy___p0 = Module["_emscripten_bind_btCapsuleShapeX____destroy___p0"] = asm["_emscripten_bind_btCapsuleShapeX____destroy___p0"]; +var _emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3 = Module["_emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"] = asm["_emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3"]; +var _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0"]; +var _emscripten_bind_btUniformScalingShape__isInfinite_p0 = Module["_emscripten_bind_btUniformScalingShape__isInfinite_p0"] = asm["_emscripten_bind_btUniformScalingShape__isInfinite_p0"]; +var _emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6 = Module["_emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6"] = asm["_emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6"]; +var _emscripten_bind_btBoxShape__getAabb_p3 = Module["_emscripten_bind_btBoxShape__getAabb_p3"] = asm["_emscripten_bind_btBoxShape__getAabb_p3"]; +var _emscripten_bind_btHingeConstraint__setParam_p2 = Module["_emscripten_bind_btHingeConstraint__setParam_p2"] = asm["_emscripten_bind_btHingeConstraint__setParam_p2"]; +var _emscripten_bind_btUniversalConstraint__isLimited_p1 = Module["_emscripten_bind_btUniversalConstraint__isLimited_p1"] = asm["_emscripten_bind_btUniversalConstraint__isLimited_p1"]; +var _emscripten_bind_btCapsuleShapeX__getAabb_p3 = Module["_emscripten_bind_btCapsuleShapeX__getAabb_p3"] = asm["_emscripten_bind_btCapsuleShapeX__getAabb_p3"]; +var _emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1 = Module["_emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1"] = asm["_emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1"]; +var _emscripten_bind_btHinge2Constraint__getObjectType_p0 = Module["_emscripten_bind_btHinge2Constraint__getObjectType_p0"] = asm["_emscripten_bind_btHinge2Constraint__getObjectType_p0"]; +var _emscripten_bind_btManifoldPoint__setDistance_p1 = Module["_emscripten_bind_btManifoldPoint__setDistance_p1"] = asm["_emscripten_bind_btManifoldPoint__setDistance_p1"]; +var _emscripten_bind_btGhostObject__checkCollideWith_p1 = Module["_emscripten_bind_btGhostObject__checkCollideWith_p1"] = asm["_emscripten_bind_btGhostObject__checkCollideWith_p1"]; +var _emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1"]; +var _emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3 = Module["_emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3"] = asm["_emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3"]; +var _emscripten_bind_btMatrix3x3__setRotation_p1 = Module["_emscripten_bind_btMatrix3x3__setRotation_p1"] = asm["_emscripten_bind_btMatrix3x3__setRotation_p1"]; +var _emscripten_bind_btVector4__btVector4_p0 = Module["_emscripten_bind_btVector4__btVector4_p0"] = asm["_emscripten_bind_btVector4__btVector4_p0"]; +var _emscripten_bind_btManifoldPoint__set_m_partId0_p1 = Module["_emscripten_bind_btManifoldPoint__set_m_partId0_p1"] = asm["_emscripten_bind_btManifoldPoint__set_m_partId0_p1"]; +var _emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1 = Module["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1"] = asm["_emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1"]; +var _emscripten_bind_btVector4__btVector4_p4 = Module["_emscripten_bind_btVector4__btVector4_p4"] = asm["_emscripten_bind_btVector4__btVector4_p4"]; +var _emscripten_bind_btGhostObject__getCollisionFlags_p0 = Module["_emscripten_bind_btGhostObject__getCollisionFlags_p0"] = asm["_emscripten_bind_btGhostObject__getCollisionFlags_p0"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1"]; +var _emscripten_bind_btGeneric6DofConstraint__updateRHS_p1 = Module["_emscripten_bind_btGeneric6DofConstraint__updateRHS_p1"] = asm["_emscripten_bind_btGeneric6DofConstraint__updateRHS_p1"]; +var _emscripten_bind_btContactConstraint__serialize_p2 = Module["_emscripten_bind_btContactConstraint__serialize_p2"] = asm["_emscripten_bind_btContactConstraint__serialize_p2"]; +var _emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4 = Module["_emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4"] = asm["_emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4"]; +var _emscripten_bind_btMultiSphereShape__isNonMoving_p0 = Module["_emscripten_bind_btMultiSphereShape__isNonMoving_p0"] = asm["_emscripten_bind_btMultiSphereShape__isNonMoving_p0"]; +var _emscripten_bind_btHinge2Constraint__enableSpring_p2 = Module["_emscripten_bind_btHinge2Constraint__enableSpring_p2"] = asm["_emscripten_bind_btHinge2Constraint__enableSpring_p2"]; +var _emscripten_bind_btCapsuleShapeX__setLocalScaling_p1 = Module["_emscripten_bind_btCapsuleShapeX__setLocalScaling_p1"] = asm["_emscripten_bind_btCapsuleShapeX__setLocalScaling_p1"]; +var _emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0 = Module["_emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0"] = asm["_emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0"]; +var _emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0 = Module["_emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0"] = asm["_emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0"]; +var _emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0 = Module["_emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0"]; +var _emscripten_bind_btHinge2Constraint__getInfo2_p1 = Module["_emscripten_bind_btHinge2Constraint__getInfo2_p1"] = asm["_emscripten_bind_btHinge2Constraint__getInfo2_p1"]; +var _emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4 = Module["_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4"] = asm["_emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4"]; +var _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1 = Module["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1"] = asm["_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1"]; +var _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0 = Module["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0"] = asm["_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0"]; +var _emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1 = Module["_emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1"] = asm["_emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1"]; +var _emscripten_bind_btQuantizedBvh__deSerializeFloat_p1 = Module["_emscripten_bind_btQuantizedBvh__deSerializeFloat_p1"] = asm["_emscripten_bind_btQuantizedBvh__deSerializeFloat_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__isConcave_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isConcave_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isConcave_p0"]; +var _emscripten_bind_btRigidBody__setAngularFactor_p1 = Module["_emscripten_bind_btRigidBody__setAngularFactor_p1"] = asm["_emscripten_bind_btRigidBody__setAngularFactor_p1"]; +var _emscripten_bind_btAngularLimit__btAngularLimit_p0 = Module["_emscripten_bind_btAngularLimit__btAngularLimit_p0"] = asm["_emscripten_bind_btAngularLimit__btAngularLimit_p0"]; +var _emscripten_bind_btCapsuleShapeZ__setUserPointer_p1 = Module["_emscripten_bind_btCapsuleShapeZ__setUserPointer_p1"] = asm["_emscripten_bind_btCapsuleShapeZ__setUserPointer_p1"]; +var _emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1 = Module["_emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1"] = asm["_emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1"]; +var _emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1 = Module["_emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1"] = asm["_emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1"]; +var _emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5 = Module["_emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5"] = asm["_emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5"]; +var _emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1 = Module["_emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1"] = asm["_emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__serialize_p1 = Module["_emscripten_bind_btContinuousDynamicsWorld__serialize_p1"] = asm["_emscripten_bind_btContinuousDynamicsWorld__serialize_p1"]; +var _emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2 = Module["_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2"] = asm["_emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2"]; +var _emscripten_bind_btSphereShape__getMarginNonVirtual_p0 = Module["_emscripten_bind_btSphereShape__getMarginNonVirtual_p0"] = asm["_emscripten_bind_btSphereShape__getMarginNonVirtual_p0"]; +var _emscripten_bind_btCollisionDispatcher__needsResponse_p2 = Module["_emscripten_bind_btCollisionDispatcher__needsResponse_p2"] = asm["_emscripten_bind_btCollisionDispatcher__needsResponse_p2"]; +var _emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btPoint2PointConstraint__getParam_p2 = Module["_emscripten_bind_btPoint2PointConstraint__getParam_p2"] = asm["_emscripten_bind_btPoint2PointConstraint__getParam_p2"]; +var _emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btCollisionObject__getInternalType_p0 = Module["_emscripten_bind_btCollisionObject__getInternalType_p0"] = asm["_emscripten_bind_btCollisionObject__getInternalType_p0"]; +var _emscripten_bind_btPoint2PointConstraint__getParam_p1 = Module["_emscripten_bind_btPoint2PointConstraint__getParam_p1"] = asm["_emscripten_bind_btPoint2PointConstraint__getParam_p1"]; +var _emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0 = Module["_emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0"] = asm["_emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0"]; +var _emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1 = Module["_emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1"] = asm["_emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1"]; +var _emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1 = Module["_emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1"] = asm["_emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1"]; +var _emscripten_bind_btUniformScalingShape__setMargin_p1 = Module["_emscripten_bind_btUniformScalingShape__setMargin_p1"] = asm["_emscripten_bind_btUniformScalingShape__setMargin_p1"]; +var _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2 = Module["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2"] = asm["_emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2"]; +var _emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0 = Module["_emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0"] = asm["_emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0"]; +var _emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1 = Module["_emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1"] = asm["_emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1"]; +var _emscripten_bind_btOptimizedBvh__setQuantizationValues_p2 = Module["_emscripten_bind_btOptimizedBvh__setQuantizationValues_p2"] = asm["_emscripten_bind_btOptimizedBvh__setQuantizationValues_p2"]; +var _emscripten_bind_btOptimizedBvh__setQuantizationValues_p3 = Module["_emscripten_bind_btOptimizedBvh__setQuantizationValues_p3"] = asm["_emscripten_bind_btOptimizedBvh__setQuantizationValues_p3"]; +var _emscripten_bind_btMatrix3x3__setValue_p9 = Module["_emscripten_bind_btMatrix3x3__setValue_p9"] = asm["_emscripten_bind_btMatrix3x3__setValue_p9"]; +var _emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1 = Module["_emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1"] = asm["_emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1"]; +var _emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1 = Module["_emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1"] = asm["_emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1"]; +var _emscripten_bind_btMatrix3x3__op_mul_p1 = Module["_emscripten_bind_btMatrix3x3__op_mul_p1"] = asm["_emscripten_bind_btMatrix3x3__op_mul_p1"]; +var runPostSets = Module["runPostSets"] = asm["runPostSets"]; +var dynCall_viiiii = Module["dynCall_viiiii"] = asm["dynCall_viiiii"]; +var dynCall_iiiiiif = Module["dynCall_iiiiiif"] = asm["dynCall_iiiiiif"]; +var dynCall_vif = Module["dynCall_vif"] = asm["dynCall_vif"]; +var dynCall_viifii = Module["dynCall_viifii"] = asm["dynCall_viifii"]; +var dynCall_viiiifffffif = Module["dynCall_viiiifffffif"] = asm["dynCall_viiiifffffif"]; +var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"]; +var dynCall_iiiiiffii = Module["dynCall_iiiiiffii"] = asm["dynCall_iiiiiffii"]; +var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"]; +var dynCall_viiifii = Module["dynCall_viiifii"] = asm["dynCall_viiifii"]; +var dynCall_ifffffffff = Module["dynCall_ifffffffff"] = asm["dynCall_ifffffffff"]; +var dynCall_viiiif = Module["dynCall_viiiif"] = asm["dynCall_viiiif"]; +var dynCall_viiiiffffii = Module["dynCall_viiiiffffii"] = asm["dynCall_viiiiffffii"]; +var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"]; +var dynCall_iiiiiiifif = Module["dynCall_iiiiiiifif"] = asm["dynCall_iiiiiiifif"]; +var dynCall_vifffi = Module["dynCall_vifffi"] = asm["dynCall_vifffi"]; +var dynCall_ifiii = Module["dynCall_ifiii"] = asm["dynCall_ifiii"]; +var dynCall_viifi = Module["dynCall_viifi"] = asm["dynCall_viifi"]; +var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = asm["dynCall_viiiiiiiii"]; +var dynCall_viiiiiiff = Module["dynCall_viiiiiiff"] = asm["dynCall_viiiiiiff"]; +var dynCall_iiiifiii = Module["dynCall_iiiifiii"] = asm["dynCall_iiiifiii"]; +var dynCall_iiiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiiii"] = asm["dynCall_iiiiiiiiiiiiii"]; +var dynCall_viffff = Module["dynCall_viffff"] = asm["dynCall_viffff"]; +var dynCall_viffiii = Module["dynCall_viffiii"] = asm["dynCall_viffiii"]; +var dynCall_iiiiiiiiiiii = Module["dynCall_iiiiiiiiiiii"] = asm["dynCall_iiiiiiiiiiii"]; +var dynCall_fififii = Module["dynCall_fififii"] = asm["dynCall_fififii"]; +var dynCall_fiiiiiiiiiii = Module["dynCall_fiiiiiiiiiii"] = asm["dynCall_fiiiiiiiiiii"]; +var dynCall_fiifii = Module["dynCall_fiifii"] = asm["dynCall_fiifii"]; +var dynCall_ifff = Module["dynCall_ifff"] = asm["dynCall_ifff"]; +var dynCall_viiff = Module["dynCall_viiff"] = asm["dynCall_viiff"]; +var dynCall_iifi = Module["dynCall_iifi"] = asm["dynCall_iifi"]; +var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"]; +var dynCall_viiiifffffi = Module["dynCall_viiiifffffi"] = asm["dynCall_viiiifffffi"]; +var dynCall_fif = Module["dynCall_fif"] = asm["dynCall_fif"]; +var dynCall_iiiiff = Module["dynCall_iiiiff"] = asm["dynCall_iiiiff"]; +var dynCall_viff = Module["dynCall_viff"] = asm["dynCall_viff"]; +var dynCall_vifi = Module["dynCall_vifi"] = asm["dynCall_vifi"]; +var dynCall_viiiiif = Module["dynCall_viiiiif"] = asm["dynCall_viiiiif"]; +var dynCall_vifff = Module["dynCall_vifff"] = asm["dynCall_vifff"]; +var dynCall_viiiiii = Module["dynCall_viiiiii"] = asm["dynCall_viiiiii"]; +var dynCall_fiiff = Module["dynCall_fiiff"] = asm["dynCall_fiiff"]; +var dynCall_iiif = Module["dynCall_iiif"] = asm["dynCall_iiif"]; +var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = asm["dynCall_iiiiiiii"]; +var dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = asm["dynCall_viiiiiiii"]; +var dynCall_viffffff = Module["dynCall_viffffff"] = asm["dynCall_viffffff"]; +var dynCall_fiii = Module["dynCall_fiii"] = asm["dynCall_fiii"]; +var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = asm["dynCall_iiiiiiiiii"]; +var dynCall_fiif = Module["dynCall_fiif"] = asm["dynCall_fiif"]; +var dynCall_fiiiiiiiiii = Module["dynCall_fiiiiiiiiii"] = asm["dynCall_fiiiiiiiiii"]; +var dynCall_ifii = Module["dynCall_ifii"] = asm["dynCall_ifii"]; +var dynCall_fiffiiiiiii = Module["dynCall_fiffiiiiiii"] = asm["dynCall_fiffiiiiiii"]; +var dynCall_iiiiiiiiiiiii = Module["dynCall_iiiiiiiiiiiii"] = asm["dynCall_iiiiiiiiiiiii"]; +var dynCall_fiiiii = Module["dynCall_fiiiii"] = asm["dynCall_fiiiii"]; +var dynCall_iif = Module["dynCall_iif"] = asm["dynCall_iif"]; +var dynCall_if = Module["dynCall_if"] = asm["dynCall_if"]; +var dynCall_vifffff = Module["dynCall_vifffff"] = asm["dynCall_vifffff"]; +var dynCall_viiiiiiiif = Module["dynCall_viiiiiiiif"] = asm["dynCall_viiiiiiiif"]; +var dynCall_vifii = Module["dynCall_vifii"] = asm["dynCall_vifii"]; +var dynCall_fi = Module["dynCall_fi"] = asm["dynCall_fi"]; +var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = asm["dynCall_viiiiiiiiii"]; +var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"]; +var dynCall_iiiiii = Module["dynCall_iiiiii"] = asm["dynCall_iiiiii"]; +var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = asm["dynCall_iiiiiii"]; +var dynCall_viiiiiiif = Module["dynCall_viiiiiiif"] = asm["dynCall_viiiiiiif"]; +var dynCall_fii = Module["dynCall_fii"] = asm["dynCall_fii"]; +var dynCall_vifffffffff = Module["dynCall_vifffffffff"] = asm["dynCall_vifffffffff"]; +var dynCall_fiiiiiiii = Module["dynCall_fiiiiiiii"] = asm["dynCall_fiiiiiiii"]; +var dynCall_iifif = Module["dynCall_iifif"] = asm["dynCall_iifif"]; +var dynCall_iffff = Module["dynCall_iffff"] = asm["dynCall_iffff"]; +var dynCall_viiiiffffiif = Module["dynCall_viiiiffffiif"] = asm["dynCall_viiiiffffiif"]; +var dynCall_iiiiif = Module["dynCall_iiiiif"] = asm["dynCall_iiiiif"]; +var dynCall_iiff = Module["dynCall_iiff"] = asm["dynCall_iiff"]; +var dynCall_viiif = Module["dynCall_viiif"] = asm["dynCall_viiif"]; +var dynCall_i = Module["dynCall_i"] = asm["dynCall_i"]; +var dynCall_viiiifii = Module["dynCall_viiiifii"] = asm["dynCall_viiiifii"]; +var dynCall_iiiifffiii = Module["dynCall_iiiifffiii"] = asm["dynCall_iiiifffiii"]; +var dynCall_viii = Module["dynCall_viii"] = asm["dynCall_viii"]; +var dynCall_iff = Module["dynCall_iff"] = asm["dynCall_iff"]; +var dynCall_v = Module["dynCall_v"] = asm["dynCall_v"]; +var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = asm["dynCall_iiiiiiiii"]; +var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"]; +var dynCall_viif = Module["dynCall_viif"] = asm["dynCall_viif"]; +var dynCall_iiiif = Module["dynCall_iiiif"] = asm["dynCall_iiiif"]; +var dynCall_fiiifii = Module["dynCall_fiiifii"] = asm["dynCall_fiiifii"]; +var dynCall_viiii = Module["dynCall_viiii"] = asm["dynCall_viiii"]; +Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) }; +Runtime.stackSave = function() { return asm['stackSave']() }; +Runtime.stackRestore = function(top) { asm['stackRestore'](top) }; +// Warning: printing of i64 values may be slightly rounded! No deep i64 math used, so precise i64 code not included +var i64Math = null; +// === Auto-generated postamble setup entry stuff === +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +}; +ExitStatus.prototype = new Error(); +ExitStatus.prototype.constructor = ExitStatus; +var initialStackTop; +var preloadStartTime = null; +Module['callMain'] = Module.callMain = function callMain(args) { + assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); + assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); + args = args || []; + if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { + Module.printErr('preload time: ' + (Date.now() - preloadStartTime) + ' ms'); + } + ensureInitRuntime(); + var argc = args.length+1; + function pad() { + for (var i = 0; i < 4-1; i++) { + argv.push(0); + } + } + var argv = [allocate(intArrayFromString("/bin/this.program"), 'i8', ALLOC_NORMAL) ]; + pad(); + for (var i = 0; i < argc-1; i = i + 1) { + argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); + pad(); + } + argv.push(0); + argv = allocate(argv, 'i32', ALLOC_NORMAL); + initialStackTop = STACKTOP; + try { + var ret = Module['_main'](argc, argv, 0); + // if we're not running an evented main loop, it's time to exit + if (!Module['noExitRuntime']) { + exit(ret); + } + } + catch(e) { + if (e instanceof ExitStatus) { + // exit() throws this once it's done to make sure execution + // has been stopped completely + return; + } else if (e == 'SimulateInfiniteLoop') { + // running an evented main loop, don't immediately exit + Module['noExitRuntime'] = true; + return; + } else { + throw e; + } + } +} +function run(args) { + args = args || Module['arguments']; + if (preloadStartTime === null) preloadStartTime = Date.now(); + if (runDependencies > 0) { + Module.printErr('run() called, but dependencies remain, so not running'); + return; + } + preRun(); + if (runDependencies > 0) { + // a preRun added a dependency, run will be called later + return; + } + function doRun() { + ensureInitRuntime(); + preMain(); + calledRun = true; + if (Module['_main'] && shouldRunNow) { + Module['callMain'](args); + } + postRun(); + } + if (Module['setStatus']) { + Module['setStatus']('Running...'); + setTimeout(function() { + setTimeout(function() { + Module['setStatus'](''); + }, 1); + if (!ABORT) doRun(); + }, 1); + } else { + doRun(); + } +} +Module['run'] = Module.run = run; +function exit(status) { + ABORT = true; + EXITSTATUS = status; + STACKTOP = initialStackTop; + // exit the runtime + exitRuntime(); + // throw an exception to halt the current execution + throw new ExitStatus(status); +} +Module['exit'] = Module.exit = exit; +function abort(text) { + if (text) { + Module.print(text); + Module.printErr(text); + } + ABORT = true; + EXITSTATUS = 1; + throw 'abort() at ' + (new Error().stack); +} +Module['abort'] = Module.abort = abort; +// {{PRE_RUN_ADDITIONS}} +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} +// shouldRunNow refers to calling main(), not run(). +var shouldRunNow = true; +if (Module['noInitialRun']) { + shouldRunNow = false; +} +run(); +// {{POST_RUN_ADDITIONS}} +// {{MODULE_ADDITIONS}} +// Bindings utilities +var Object__cache = {}; // we do it this way so we do not modify |Object| +function wrapPointer(ptr, __class__) { + var cache = __class__ ? __class__.prototype.__cache__ : Object__cache; + var ret = cache[ptr]; + if (ret) return ret; + __class__ = __class__ || Object; + ret = Object.create(__class__.prototype); + ret.ptr = ptr; + ret.__class__ = __class__; + return cache[ptr] = ret; +} +Module['wrapPointer'] = wrapPointer; +function castObject(obj, __class__) { + return wrapPointer(obj.ptr, __class__); +} +Module['castObject'] = castObject; +Module['NULL'] = wrapPointer(0); +function destroy(obj) { + if (!obj['__destroy__']) throw 'Error: Cannot destroy object. (Did you create it yourself?)'; + obj['__destroy__'](); + // Remove from cache, so the object can be GC'd and refs added onto it released + if (obj.__class__ !== Object) { + delete obj.__class__.prototype.__cache__[obj.ptr]; + } else { + delete Object__cache[obj.ptr]; + } +} +Module['destroy'] = destroy; +function compare(obj1, obj2) { + return obj1.ptr === obj2.ptr; +} +Module['compare'] = compare; +function getPointer(obj) { + return obj.ptr; +} +Module['getPointer'] = getPointer; +function getClass(obj) { + return obj.__class__; +} +Module['getClass'] = getClass; +function customizeVTable(object, replacementPairs) { + // Does not handle multiple inheritance + // Find out vtable size + var vTable = getValue(object.ptr, 'void*'); + // This assumes our modification where we null-terminate vtables + var size = 0; + while (getValue(vTable + Runtime.QUANTUM_SIZE*size, 'void*')) { + size++; + } + // Prepare replacement lookup table and add replacements. + // There is actually no good way to do this! So we do the following hack: + // We create a fake vtable with canary functions, to detect which actual + // function is being called + var vTable2 = _malloc(size*Runtime.QUANTUM_SIZE); + setValue(object.ptr, vTable2, 'void*'); + var canaryValue; + var tempFuncs = []; + for (var i = 0; i < size; i++) { + (function(j) { + var index = Runtime.addFunction(function() { + canaryValue = j; + }); + setValue(vTable2 + Runtime.QUANTUM_SIZE*i, index, 'void*'); + tempFuncs.push(index); + })(i); + } + var args = [{ptr: 0}]; + replacementPairs.forEach(function(pair) { + // We need the wrapper function that converts arguments to not fail. Keep adding arguments til it works. + while(1) { + try { + pair['original'].apply(object, args); + break; + } catch(e) { + args.push(args[0]); + } + } + pair.originalIndex = getValue(vTable + canaryValue*Runtime.QUANTUM_SIZE, 'void*'); + }); + for (var i = 0; i < size; i++) { + Runtime.removeFunction(tempFuncs[i]); + } + // Do the replacements + var replacements = {}; + replacementPairs.forEach(function(pair) { + replacements[pair.originalIndex] = Runtime.addFunction(pair['replacement']); + }); + // Copy and modify vtable + for (var i = 0; i < size; i++) { + var value = getValue(vTable + Runtime.QUANTUM_SIZE*i, 'void*'); + if (value in replacements) value = replacements[value]; + setValue(vTable2 + Runtime.QUANTUM_SIZE*i, value, 'void*'); + } + return object; +} +Module['customizeVTable'] = customizeVTable; +// Converts a value into a C-style string. +function ensureString(value) { + if (typeof value == 'number') return value; + return allocate(intArrayFromString(value), 'i8', ALLOC_STACK); +} +function btMatrix3x3(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btMatrix3x3__btMatrix3x3_p0(); + else if (arg1 === undefined) + this.ptr = _emscripten_bind_btMatrix3x3__btMatrix3x3_p1(arg0.ptr); + else + this.ptr = _emscripten_bind_btMatrix3x3__btMatrix3x3_p9(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); + btMatrix3x3.prototype.__cache__[this.ptr] = this; + this.__class__ = btMatrix3x3; +} +btMatrix3x3.prototype.__cache__ = {}; +Module['btMatrix3x3'] = btMatrix3x3; +btMatrix3x3.prototype['getColumn'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__getColumn_p1(this.ptr, arg0), Module['btVector3']); +} +btMatrix3x3.prototype['serialize'] = function(arg0) { + _emscripten_bind_btMatrix3x3__serialize_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['deSerializeDouble'] = function(arg0) { + _emscripten_bind_btMatrix3x3__deSerializeDouble_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['scaled'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__scaled_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['op_sub'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__op_sub_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['transposeTimes'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__transposeTimes_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['getRotation'] = function(arg0) { + _emscripten_bind_btMatrix3x3__getRotation_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['tdotz'] = function(arg0) { + return _emscripten_bind_btMatrix3x3__tdotz_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['serializeFloat'] = function(arg0) { + _emscripten_bind_btMatrix3x3__serializeFloat_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['tdotx'] = function(arg0) { + return _emscripten_bind_btMatrix3x3__tdotx_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['absolute'] = function() { + return wrapPointer(_emscripten_bind_btMatrix3x3__absolute_p0(this.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['tdoty'] = function(arg0) { + return _emscripten_bind_btMatrix3x3__tdoty_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['inverse'] = function() { + return wrapPointer(_emscripten_bind_btMatrix3x3__inverse_p0(this.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['cofac'] = function(arg0, arg1, arg2, arg3) { + return _emscripten_bind_btMatrix3x3__cofac_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btMatrix3x3.prototype['deSerializeFloat'] = function(arg0) { + _emscripten_bind_btMatrix3x3__deSerializeFloat_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['getIdentity'] = function() { + return wrapPointer(_emscripten_bind_btMatrix3x3__getIdentity_p0(), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['adjoint'] = function() { + return wrapPointer(_emscripten_bind_btMatrix3x3__adjoint_p0(this.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['getRow'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__getRow_p1(this.ptr, arg0), Module['btVector3']); +} +btMatrix3x3.prototype['op_add'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__op_add_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['op_mul'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__op_mul_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['diagonalize'] = function(arg0, arg1, arg2) { + _emscripten_bind_btMatrix3x3__diagonalize_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btMatrix3x3.prototype['setRotation'] = function(arg0) { + _emscripten_bind_btMatrix3x3__setRotation_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['setEulerZYX'] = function(arg0, arg1, arg2) { + _emscripten_bind_btMatrix3x3__setEulerZYX_p3(this.ptr, arg0, arg1, arg2); +} +btMatrix3x3.prototype['setIdentity'] = function() { + _emscripten_bind_btMatrix3x3__setIdentity_p0(this.ptr); +} +btMatrix3x3.prototype['op_set'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__op_set_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['getEulerZYX'] = function(arg0, arg1, arg2, arg3) { + if (arg3 === undefined) + _emscripten_bind_btMatrix3x3__getEulerZYX_p3(this.ptr, arg0, arg1, arg2); + else + _emscripten_bind_btMatrix3x3__getEulerZYX_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btMatrix3x3.prototype['setEulerYPR'] = function(arg0, arg1, arg2) { + _emscripten_bind_btMatrix3x3__setEulerYPR_p3(this.ptr, arg0, arg1, arg2); +} +btMatrix3x3.prototype['determinant'] = function() { + return _emscripten_bind_btMatrix3x3__determinant_p0(this.ptr); +} +btMatrix3x3.prototype['setValue'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + _emscripten_bind_btMatrix3x3__setValue_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); +} +btMatrix3x3.prototype['deSerialize'] = function(arg0) { + _emscripten_bind_btMatrix3x3__deSerialize_p1(this.ptr, arg0.ptr); +} +btMatrix3x3.prototype['transpose'] = function() { + return wrapPointer(_emscripten_bind_btMatrix3x3__transpose_p0(this.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['op_get'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__op_get_p1(this.ptr, arg0), Module['btVector3']); +} +btMatrix3x3.prototype['__destroy__'] = function() { + _emscripten_bind_btMatrix3x3____destroy___p0(this.ptr); +} +btMatrix3x3.prototype['timesTranspose'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMatrix3x3__timesTranspose_p1(this.ptr, arg0.ptr), Module['btMatrix3x3']); +} +btMatrix3x3.prototype['getEulerYPR'] = function(arg0, arg1, arg2) { + _emscripten_bind_btMatrix3x3__getEulerYPR_p3(this.ptr, arg0, arg1, arg2); +} +function btDispatcherInfo() { + this.ptr = _emscripten_bind_btDispatcherInfo__btDispatcherInfo_p0(); + btDispatcherInfo.prototype.__cache__[this.ptr] = this; + this.__class__ = btDispatcherInfo; +} +btDispatcherInfo.prototype.__cache__ = {}; +Module['btDispatcherInfo'] = btDispatcherInfo; +btDispatcherInfo.prototype['set_m_enableSatConvex'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_enableSatConvex_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['set_m_stepCount'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_stepCount_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['get_m_timeOfImpact'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_timeOfImpact_p0(this.ptr); +} +btDispatcherInfo.prototype['get_m_stepCount'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_stepCount_p0(this.ptr); +} +btDispatcherInfo.prototype['get_m_useEpa'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_useEpa_p0(this.ptr); +} +btDispatcherInfo.prototype['get_m_useContinuous'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_useContinuous_p0(this.ptr); +} +btDispatcherInfo.prototype['set_m_useContinuous'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_useContinuous_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['get_m_dispatchFunc'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_dispatchFunc_p0(this.ptr); +} +btDispatcherInfo.prototype['set_m_stackAllocator'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_stackAllocator_p1(this.ptr, arg0.ptr); +} +btDispatcherInfo.prototype['get_m_stackAllocator'] = function() { + return wrapPointer(_emscripten_bind_btDispatcherInfo__get_m_stackAllocator_p0(this.ptr), Module['btStackAlloc']); +} +btDispatcherInfo.prototype['get_m_timeStep'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_timeStep_p0(this.ptr); +} +btDispatcherInfo.prototype['get_m_convexConservativeDistanceThreshold'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_convexConservativeDistanceThreshold_p0(this.ptr); +} +btDispatcherInfo.prototype['get_m_enableSatConvex'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_enableSatConvex_p0(this.ptr); +} +btDispatcherInfo.prototype['__destroy__'] = function() { + _emscripten_bind_btDispatcherInfo____destroy___p0(this.ptr); +} +btDispatcherInfo.prototype['set_m_allowedCcdPenetration'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_allowedCcdPenetration_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['set_m_timeStep'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_timeStep_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['set_m_timeOfImpact'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_timeOfImpact_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['set_m_useConvexConservativeDistanceUtil'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_useConvexConservativeDistanceUtil_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['get_m_useConvexConservativeDistanceUtil'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_useConvexConservativeDistanceUtil_p0(this.ptr); +} +btDispatcherInfo.prototype['get_m_allowedCcdPenetration'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_allowedCcdPenetration_p0(this.ptr); +} +btDispatcherInfo.prototype['set_m_convexConservativeDistanceThreshold'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_convexConservativeDistanceThreshold_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['set_m_dispatchFunc'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_dispatchFunc_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['get_m_enableSPU'] = function() { + return _emscripten_bind_btDispatcherInfo__get_m_enableSPU_p0(this.ptr); +} +btDispatcherInfo.prototype['set_m_enableSPU'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_enableSPU_p1(this.ptr, arg0); +} +btDispatcherInfo.prototype['set_m_useEpa'] = function(arg0) { + _emscripten_bind_btDispatcherInfo__set_m_useEpa_p1(this.ptr, arg0); +} +btCapsuleShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btCapsuleShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btCapsuleShape.prototype['isCompound'] = function() { + return _emscripten_bind_btCapsuleShape__isCompound_p0(this.ptr); +} +btCapsuleShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btCapsuleShape__setUserPointer_p1(this.ptr, arg0); +} +function btCapsuleShape(arg0, arg1) { + this.ptr = _emscripten_bind_btCapsuleShape__btCapsuleShape_p2(arg0, arg1); + btCapsuleShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btCapsuleShape; +} +btCapsuleShape.prototype.__cache__ = {}; +Module['btCapsuleShape'] = btCapsuleShape; +btCapsuleShape.prototype['getUpAxis'] = function() { + return _emscripten_bind_btCapsuleShape__getUpAxis_p0(this.ptr); +} +btCapsuleShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btCapsuleShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btCapsuleShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btCapsuleShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btCapsuleShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btCapsuleShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btCapsuleShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btCapsuleShape__isPolyhedral_p0(this.ptr); +} +btCapsuleShape.prototype['getRadius'] = function() { + return _emscripten_bind_btCapsuleShape__getRadius_p0(this.ptr); +} +btCapsuleShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCapsuleShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btCapsuleShape__calculateSerializeBufferSize_p0(this.ptr); +} +btCapsuleShape.prototype['getName'] = function() { + return _emscripten_bind_btCapsuleShape__getName_p0(this.ptr); +} +btCapsuleShape.prototype['getHalfHeight'] = function() { + return _emscripten_bind_btCapsuleShape__getHalfHeight_p0(this.ptr); +} +btCapsuleShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btCapsuleShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btCapsuleShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btCapsuleShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btCapsuleShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCapsuleShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btCapsuleShape__getMarginNV_p0(this.ptr); +} +btCapsuleShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btCapsuleShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btCapsuleShape.prototype['isConvex'] = function() { + return _emscripten_bind_btCapsuleShape__isConvex_p0(this.ptr); +} +btCapsuleShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btCapsuleShape__isInfinite_p0(this.ptr); +} +btCapsuleShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btCapsuleShape__getUserPointer_p0(this.ptr); +} +btCapsuleShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btCapsuleShape__isNonMoving_p0(this.ptr); +} +btCapsuleShape.prototype['getMargin'] = function() { + return _emscripten_bind_btCapsuleShape__getMargin_p0(this.ptr); +} +btCapsuleShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btCapsuleShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btCapsuleShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btCapsuleShape__setMargin_p1(this.ptr, arg0); +} +btCapsuleShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btCapsuleShape__isConvex2d_p0(this.ptr); +} +btCapsuleShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btCapsuleShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btCapsuleShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btCapsuleShape__isSoftBody_p0(this.ptr); +} +btCapsuleShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btCapsuleShape__getMarginNonVirtual_p0(this.ptr); +} +btCapsuleShape.prototype['__destroy__'] = function() { + _emscripten_bind_btCapsuleShape____destroy___p0(this.ptr); +} +btCapsuleShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btCapsuleShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btCapsuleShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btCapsuleShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btCapsuleShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btCapsuleShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btCapsuleShape__getAngularMotionDisc_p0(this.ptr); +} +btCapsuleShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btCapsuleShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btCapsuleShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCapsuleShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btCapsuleShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btCapsuleShape.prototype['isConcave'] = function() { + return _emscripten_bind_btCapsuleShape__isConcave_p0(this.ptr); +} +btCapsuleShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btCapsuleShape__getShapeType_p0(this.ptr); +} +btConvexHullShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btConvexHullShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btConvexHullShape.prototype['getNumPlanes'] = function() { + return _emscripten_bind_btConvexHullShape__getNumPlanes_p0(this.ptr); +} +btConvexHullShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexHullShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexHullShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btConvexHullShape__getAngularMotionDisc_p0(this.ptr); +} +btConvexHullShape.prototype['getScaledPoint'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexHullShape__getScaledPoint_p1(this.ptr, arg0), Module['btVector3']); +} +btConvexHullShape.prototype['isConvex'] = function() { + return _emscripten_bind_btConvexHullShape__isConvex_p0(this.ptr); +} +btConvexHullShape.prototype['getEdge'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexHullShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr); +} +btConvexHullShape.prototype['getNumVertices'] = function() { + return _emscripten_bind_btConvexHullShape__getNumVertices_p0(this.ptr); +} +btConvexHullShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btConvexHullShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btConvexHullShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btConvexHullShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btConvexHullShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btConvexHullShape__isPolyhedral_p0(this.ptr); +} +btConvexHullShape.prototype['getVertex'] = function(arg0, arg1) { + _emscripten_bind_btConvexHullShape__getVertex_p2(this.ptr, arg0, arg1.ptr); +} +btConvexHullShape.prototype['getUnscaledPoints'] = function() { + return wrapPointer(_emscripten_bind_btConvexHullShape__getUnscaledPoints_p0(this.ptr), Module['btVector3']); +} +btConvexHullShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexHullShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexHullShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConvexHullShape__calculateSerializeBufferSize_p0(this.ptr); +} +btConvexHullShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btConvexHullShape__setUserPointer_p1(this.ptr, arg0); +} +btConvexHullShape.prototype['getNumEdges'] = function() { + return _emscripten_bind_btConvexHullShape__getNumEdges_p0(this.ptr); +} +btConvexHullShape.prototype['getName'] = function() { + return _emscripten_bind_btConvexHullShape__getName_p0(this.ptr); +} +function btConvexHullShape(arg0, arg1, arg2) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btConvexHullShape__btConvexHullShape_p0(); + else if (arg1 === undefined) + this.ptr = _emscripten_bind_btConvexHullShape__btConvexHullShape_p1(arg0); + else if (arg2 === undefined) + this.ptr = _emscripten_bind_btConvexHullShape__btConvexHullShape_p2(arg0, arg1); + else + this.ptr = _emscripten_bind_btConvexHullShape__btConvexHullShape_p3(arg0, arg1, arg2); + btConvexHullShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btConvexHullShape; +} +btConvexHullShape.prototype.__cache__ = {}; +Module['btConvexHullShape'] = btConvexHullShape; +btConvexHullShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btConvexHullShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btConvexHullShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexHullShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexHullShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btConvexHullShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btConvexHullShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btConvexHullShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btConvexHullShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexHullShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexHullShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btConvexHullShape__getMarginNV_p0(this.ptr); +} +btConvexHullShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btConvexHullShape__isConvex2d_p0(this.ptr); +} +btConvexHullShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexHullShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexHullShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btConvexHullShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btConvexHullShape.prototype['addPoint'] = function(arg0) { + _emscripten_bind_btConvexHullShape__addPoint_p1(this.ptr, arg0.ptr); +} +btConvexHullShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btConvexHullShape__isInfinite_p0(this.ptr); +} +btConvexHullShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConvexHullShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConvexHullShape.prototype['isConcave'] = function() { + return _emscripten_bind_btConvexHullShape__isConcave_p0(this.ptr); +} +btConvexHullShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btConvexHullShape__getUserPointer_p0(this.ptr); +} +btConvexHullShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btConvexHullShape__isNonMoving_p0(this.ptr); +} +btConvexHullShape.prototype['getMargin'] = function() { + return _emscripten_bind_btConvexHullShape__getMargin_p0(this.ptr); +} +btConvexHullShape.prototype['recalcLocalAabb'] = function() { + _emscripten_bind_btConvexHullShape__recalcLocalAabb_p0(this.ptr); +} +btConvexHullShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btConvexHullShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btConvexHullShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btConvexHullShape__setMargin_p1(this.ptr, arg0); +} +btConvexHullShape.prototype['getNonvirtualAabb'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btConvexHullShape__getNonvirtualAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3); +} +btConvexHullShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexHullShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexHullShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btConvexHullShape__isSoftBody_p0(this.ptr); +} +btConvexHullShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btConvexHullShape__getMarginNonVirtual_p0(this.ptr); +} +btConvexHullShape.prototype['__destroy__'] = function() { + _emscripten_bind_btConvexHullShape____destroy___p0(this.ptr); +} +btConvexHullShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexHullShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConvexHullShape.prototype['getPoints'] = function() { + return wrapPointer(_emscripten_bind_btConvexHullShape__getPoints_p0(this.ptr), Module['btVector3']); +} +btConvexHullShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btConvexHullShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btConvexHullShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btConvexHullShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btConvexHullShape.prototype['isInside'] = function(arg0, arg1) { + return _emscripten_bind_btConvexHullShape__isInside_p2(this.ptr, arg0.ptr, arg1); +} +btConvexHullShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btConvexHullShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btConvexHullShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexHullShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexHullShape.prototype['getPlane'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexHullShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConvexHullShape.prototype['isCompound'] = function() { + return _emscripten_bind_btConvexHullShape__isCompound_p0(this.ptr); +} +btConvexHullShape.prototype['getConvexPolyhedron'] = function() { + return _emscripten_bind_btConvexHullShape__getConvexPolyhedron_p0(this.ptr); +} +btConvexHullShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btConvexHullShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btConvexHullShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btConvexHullShape__getShapeType_p0(this.ptr); +} +btConvexHullShape.prototype['getNumPoints'] = function() { + return _emscripten_bind_btConvexHullShape__getNumPoints_p0(this.ptr); +} +btConvexHullShape.prototype['initializePolyhedralFeatures'] = function() { + return _emscripten_bind_btConvexHullShape__initializePolyhedralFeatures_p0(this.ptr); +} +btTypedObject.prototype['__destroy__'] = function() { + _emscripten_bind_btTypedObject____destroy___p0(this.ptr); +} +function btTypedObject(arg0) { + this.ptr = _emscripten_bind_btTypedObject__btTypedObject_p1(arg0); + btTypedObject.prototype.__cache__[this.ptr] = this; + this.__class__ = btTypedObject; +} +btTypedObject.prototype.__cache__ = {}; +Module['btTypedObject'] = btTypedObject; +btTypedObject.prototype['getObjectType'] = function() { + return _emscripten_bind_btTypedObject__getObjectType_p0(this.ptr); +} +btTypedObject.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btTypedObject__get_m_objectType_p0(this.ptr); +} +btTypedObject.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btTypedObject__set_m_objectType_p1(this.ptr, arg0); +} +btIndexedMesh.prototype['get_m_numVertices'] = function() { + return _emscripten_bind_btIndexedMesh__get_m_numVertices_p0(this.ptr); +} +btIndexedMesh.prototype['get_m_vertexBase'] = function() { + return _emscripten_bind_btIndexedMesh__get_m_vertexBase_p0(this.ptr); +} +btIndexedMesh.prototype['set_m_indexType'] = function(arg0) { + _emscripten_bind_btIndexedMesh__set_m_indexType_p1(this.ptr, arg0); +} +btIndexedMesh.prototype['set_m_numTriangles'] = function(arg0) { + _emscripten_bind_btIndexedMesh__set_m_numTriangles_p1(this.ptr, arg0); +} +btIndexedMesh.prototype['get_m_vertexType'] = function() { + return _emscripten_bind_btIndexedMesh__get_m_vertexType_p0(this.ptr); +} +btIndexedMesh.prototype['get_m_vertexStride'] = function() { + return _emscripten_bind_btIndexedMesh__get_m_vertexStride_p0(this.ptr); +} +btIndexedMesh.prototype['get_m_numTriangles'] = function() { + return _emscripten_bind_btIndexedMesh__get_m_numTriangles_p0(this.ptr); +} +btIndexedMesh.prototype['set_m_numVertices'] = function(arg0) { + _emscripten_bind_btIndexedMesh__set_m_numVertices_p1(this.ptr, arg0); +} +btIndexedMesh.prototype['set_m_vertexType'] = function(arg0) { + _emscripten_bind_btIndexedMesh__set_m_vertexType_p1(this.ptr, arg0); +} +btIndexedMesh.prototype['get_m_indexType'] = function() { + return _emscripten_bind_btIndexedMesh__get_m_indexType_p0(this.ptr); +} +btIndexedMesh.prototype['__destroy__'] = function() { + _emscripten_bind_btIndexedMesh____destroy___p0(this.ptr); +} +btIndexedMesh.prototype['set_m_vertexBase'] = function(arg0) { +var stack = Runtime.stackSave(); +try { + _emscripten_bind_btIndexedMesh__set_m_vertexBase_p1(this.ptr, ensureString(arg0)); +} finally { Runtime.stackRestore(stack) } +} +function btIndexedMesh() { + this.ptr = _emscripten_bind_btIndexedMesh__btIndexedMesh_p0(); + btIndexedMesh.prototype.__cache__[this.ptr] = this; + this.__class__ = btIndexedMesh; +} +btIndexedMesh.prototype.__cache__ = {}; +Module['btIndexedMesh'] = btIndexedMesh; +btIndexedMesh.prototype['get_m_triangleIndexBase'] = function() { + return _emscripten_bind_btIndexedMesh__get_m_triangleIndexBase_p0(this.ptr); +} +btIndexedMesh.prototype['set_m_triangleIndexStride'] = function(arg0) { + _emscripten_bind_btIndexedMesh__set_m_triangleIndexStride_p1(this.ptr, arg0); +} +btIndexedMesh.prototype['set_m_vertexStride'] = function(arg0) { + _emscripten_bind_btIndexedMesh__set_m_vertexStride_p1(this.ptr, arg0); +} +btIndexedMesh.prototype['set_m_triangleIndexBase'] = function(arg0) { +var stack = Runtime.stackSave(); +try { + _emscripten_bind_btIndexedMesh__set_m_triangleIndexBase_p1(this.ptr, ensureString(arg0)); +} finally { Runtime.stackRestore(stack) } +} +btIndexedMesh.prototype['get_m_triangleIndexStride'] = function() { + return _emscripten_bind_btIndexedMesh__get_m_triangleIndexStride_p0(this.ptr); +} +btCollisionObject.prototype['getFriction'] = function() { + return _emscripten_bind_btCollisionObject__getFriction_p0(this.ptr); +} +btCollisionObject.prototype['setContactProcessingThreshold'] = function(arg0) { + _emscripten_bind_btCollisionObject__setContactProcessingThreshold_p1(this.ptr, arg0); +} +btCollisionObject.prototype['setInterpolationLinearVelocity'] = function(arg0) { + _emscripten_bind_btCollisionObject__setInterpolationLinearVelocity_p1(this.ptr, arg0.ptr); +} +btCollisionObject.prototype['getDeactivationTime'] = function() { + return _emscripten_bind_btCollisionObject__getDeactivationTime_p0(this.ptr); +} +btCollisionObject.prototype['setInterpolationAngularVelocity'] = function(arg0) { + _emscripten_bind_btCollisionObject__setInterpolationAngularVelocity_p1(this.ptr, arg0.ptr); +} +btCollisionObject.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btCollisionObject__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btCollisionObject.prototype['setFriction'] = function(arg0) { + _emscripten_bind_btCollisionObject__setFriction_p1(this.ptr, arg0); +} +btCollisionObject.prototype['internalSetExtensionPointer'] = function(arg0) { + _emscripten_bind_btCollisionObject__internalSetExtensionPointer_p1(this.ptr, arg0); +} +btCollisionObject.prototype['activate'] = function(arg0) { + if (arg0 === undefined) + _emscripten_bind_btCollisionObject__activate_p0(this.ptr); + else + _emscripten_bind_btCollisionObject__activate_p1(this.ptr, arg0); +} +btCollisionObject.prototype['setInterpolationWorldTransform'] = function(arg0) { + _emscripten_bind_btCollisionObject__setInterpolationWorldTransform_p1(this.ptr, arg0.ptr); +} +function btCollisionObject() { + this.ptr = _emscripten_bind_btCollisionObject__btCollisionObject_p0(); + btCollisionObject.prototype.__cache__[this.ptr] = this; + this.__class__ = btCollisionObject; +} +btCollisionObject.prototype.__cache__ = {}; +Module['btCollisionObject'] = btCollisionObject; +btCollisionObject.prototype['getInterpolationLinearVelocity'] = function() { + return wrapPointer(_emscripten_bind_btCollisionObject__getInterpolationLinearVelocity_p0(this.ptr), Module['btVector3']); +} +btCollisionObject.prototype['mergesSimulationIslands'] = function() { + return _emscripten_bind_btCollisionObject__mergesSimulationIslands_p0(this.ptr); +} +btCollisionObject.prototype['setCollisionShape'] = function(arg0) { + _emscripten_bind_btCollisionObject__setCollisionShape_p1(this.ptr, arg0.ptr); +} +btCollisionObject.prototype['setCcdMotionThreshold'] = function(arg0) { + _emscripten_bind_btCollisionObject__setCcdMotionThreshold_p1(this.ptr, arg0); +} +btCollisionObject.prototype['getIslandTag'] = function() { + return _emscripten_bind_btCollisionObject__getIslandTag_p0(this.ptr); +} +btCollisionObject.prototype['setCompanionId'] = function(arg0) { + _emscripten_bind_btCollisionObject__setCompanionId_p1(this.ptr, arg0); +} +btCollisionObject.prototype['getCcdMotionThreshold'] = function() { + return _emscripten_bind_btCollisionObject__getCcdMotionThreshold_p0(this.ptr); +} +btCollisionObject.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btCollisionObject__setUserPointer_p1(this.ptr, arg0); +} +btCollisionObject.prototype['checkCollideWith'] = function(arg0) { + return _emscripten_bind_btCollisionObject__checkCollideWith_p1(this.ptr, arg0.ptr); +} +btCollisionObject.prototype['getAnisotropicFriction'] = function() { + return wrapPointer(_emscripten_bind_btCollisionObject__getAnisotropicFriction_p0(this.ptr), Module['btVector3']); +} +btCollisionObject.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btCollisionObject__calculateSerializeBufferSize_p0(this.ptr); +} +btCollisionObject.prototype['getInterpolationAngularVelocity'] = function() { + return wrapPointer(_emscripten_bind_btCollisionObject__getInterpolationAngularVelocity_p0(this.ptr), Module['btVector3']); +} +btCollisionObject.prototype['forceActivationState'] = function(arg0) { + _emscripten_bind_btCollisionObject__forceActivationState_p1(this.ptr, arg0); +} +btCollisionObject.prototype['getInterpolationWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btCollisionObject__getInterpolationWorldTransform_p0(this.ptr), Module['btTransform']); +} +btCollisionObject.prototype['setIslandTag'] = function(arg0) { + _emscripten_bind_btCollisionObject__setIslandTag_p1(this.ptr, arg0); +} +btCollisionObject.prototype['setHitFraction'] = function(arg0) { + _emscripten_bind_btCollisionObject__setHitFraction_p1(this.ptr, arg0); +} +btCollisionObject.prototype['serializeSingleObject'] = function(arg0) { + _emscripten_bind_btCollisionObject__serializeSingleObject_p1(this.ptr, arg0.ptr); +} +btCollisionObject.prototype['getCollisionFlags'] = function() { + return _emscripten_bind_btCollisionObject__getCollisionFlags_p0(this.ptr); +} +btCollisionObject.prototype['isStaticObject'] = function() { + return _emscripten_bind_btCollisionObject__isStaticObject_p0(this.ptr); +} +btCollisionObject.prototype['getCollisionShape'] = function() { + return wrapPointer(_emscripten_bind_btCollisionObject__getCollisionShape_p0(this.ptr), Module['btCollisionShape']); +} +btCollisionObject.prototype['setAnisotropicFriction'] = function(arg0) { + _emscripten_bind_btCollisionObject__setAnisotropicFriction_p1(this.ptr, arg0.ptr); +} +btCollisionObject.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionObject____destroy___p0(this.ptr); +} +btCollisionObject.prototype['getBroadphaseHandle'] = function() { + return wrapPointer(_emscripten_bind_btCollisionObject__getBroadphaseHandle_p0(this.ptr), Module['btBroadphaseProxy']); +} +btCollisionObject.prototype['getRestitution'] = function() { + return _emscripten_bind_btCollisionObject__getRestitution_p0(this.ptr); +} +btCollisionObject.prototype['getUserPointer'] = function() { + return _emscripten_bind_btCollisionObject__getUserPointer_p0(this.ptr); +} +btCollisionObject.prototype['setCcdSweptSphereRadius'] = function(arg0) { + _emscripten_bind_btCollisionObject__setCcdSweptSphereRadius_p1(this.ptr, arg0); +} +btCollisionObject.prototype['getWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btCollisionObject__getWorldTransform_p0(this.ptr), Module['btTransform']); +} +btCollisionObject.prototype['getCcdSquareMotionThreshold'] = function() { + return _emscripten_bind_btCollisionObject__getCcdSquareMotionThreshold_p0(this.ptr); +} +btCollisionObject.prototype['setWorldTransform'] = function(arg0) { + _emscripten_bind_btCollisionObject__setWorldTransform_p1(this.ptr, arg0.ptr); +} +btCollisionObject.prototype['internalSetTemporaryCollisionShape'] = function(arg0) { + _emscripten_bind_btCollisionObject__internalSetTemporaryCollisionShape_p1(this.ptr, arg0.ptr); +} +btCollisionObject.prototype['getCompanionId'] = function() { + return _emscripten_bind_btCollisionObject__getCompanionId_p0(this.ptr); +} +btCollisionObject.prototype['isActive'] = function() { + return _emscripten_bind_btCollisionObject__isActive_p0(this.ptr); +} +btCollisionObject.prototype['getInternalType'] = function() { + return _emscripten_bind_btCollisionObject__getInternalType_p0(this.ptr); +} +btCollisionObject.prototype['getActivationState'] = function() { + return _emscripten_bind_btCollisionObject__getActivationState_p0(this.ptr); +} +btCollisionObject.prototype['hasContactResponse'] = function() { + return _emscripten_bind_btCollisionObject__hasContactResponse_p0(this.ptr); +} +btCollisionObject.prototype['setActivationState'] = function(arg0) { + _emscripten_bind_btCollisionObject__setActivationState_p1(this.ptr, arg0); +} +btCollisionObject.prototype['getRootCollisionShape'] = function() { + return wrapPointer(_emscripten_bind_btCollisionObject__getRootCollisionShape_p0(this.ptr), Module['btCollisionShape']); +} +btCollisionObject.prototype['getContactProcessingThreshold'] = function() { + return _emscripten_bind_btCollisionObject__getContactProcessingThreshold_p0(this.ptr); +} +btCollisionObject.prototype['getHitFraction'] = function() { + return _emscripten_bind_btCollisionObject__getHitFraction_p0(this.ptr); +} +btCollisionObject.prototype['getCcdSweptSphereRadius'] = function() { + return _emscripten_bind_btCollisionObject__getCcdSweptSphereRadius_p0(this.ptr); +} +btCollisionObject.prototype['setDeactivationTime'] = function(arg0) { + _emscripten_bind_btCollisionObject__setDeactivationTime_p1(this.ptr, arg0); +} +btCollisionObject.prototype['internalGetExtensionPointer'] = function() { + return _emscripten_bind_btCollisionObject__internalGetExtensionPointer_p0(this.ptr); +} +btCollisionObject.prototype['setCollisionFlags'] = function(arg0) { + _emscripten_bind_btCollisionObject__setCollisionFlags_p1(this.ptr, arg0); +} +btCollisionObject.prototype['isStaticOrKinematicObject'] = function() { + return _emscripten_bind_btCollisionObject__isStaticOrKinematicObject_p0(this.ptr); +} +btCollisionObject.prototype['setRestitution'] = function(arg0) { + _emscripten_bind_btCollisionObject__setRestitution_p1(this.ptr, arg0); +} +btCollisionObject.prototype['hasAnisotropicFriction'] = function() { + return _emscripten_bind_btCollisionObject__hasAnisotropicFriction_p0(this.ptr); +} +btCollisionObject.prototype['setBroadphaseHandle'] = function(arg0) { + _emscripten_bind_btCollisionObject__setBroadphaseHandle_p1(this.ptr, arg0.ptr); +} +btCollisionObject.prototype['isKinematicObject'] = function() { + return _emscripten_bind_btCollisionObject__isKinematicObject_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btConvexTriangleMeshShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btConvexTriangleMeshShape.prototype['getNumPlanes'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getNumPlanes_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexTriangleMeshShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btConvexTriangleMeshShape__setUserPointer_p1(this.ptr, arg0); +} +btConvexTriangleMeshShape.prototype['isInside'] = function(arg0, arg1) { + return _emscripten_bind_btConvexTriangleMeshShape__isInside_p2(this.ptr, arg0.ptr, arg1); +} +btConvexTriangleMeshShape.prototype['getNumVertices'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getNumVertices_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btConvexTriangleMeshShape.prototype['getMeshInterface'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getMeshInterface_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__isPolyhedral_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getVertex'] = function(arg0, arg1) { + _emscripten_bind_btConvexTriangleMeshShape__getVertex_p2(this.ptr, arg0, arg1.ptr); +} +function btConvexTriangleMeshShape(arg0, arg1) { + if (arg1 === undefined) + this.ptr = _emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p1(arg0.ptr); + else + this.ptr = _emscripten_bind_btConvexTriangleMeshShape__btConvexTriangleMeshShape_p2(arg0.ptr, arg1); + btConvexTriangleMeshShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btConvexTriangleMeshShape; +} +btConvexTriangleMeshShape.prototype.__cache__ = {}; +Module['btConvexTriangleMeshShape'] = btConvexTriangleMeshShape; +btConvexTriangleMeshShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexTriangleMeshShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexTriangleMeshShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexTriangleMeshShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__calculateSerializeBufferSize_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getNumEdges'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getNumEdges_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getName'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getName_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getEdge'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexTriangleMeshShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr); +} +btConvexTriangleMeshShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btConvexTriangleMeshShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexTriangleMeshShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btConvexTriangleMeshShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btConvexTriangleMeshShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btConvexTriangleMeshShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btConvexTriangleMeshShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexTriangleMeshShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexTriangleMeshShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getMarginNV_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__isConvex2d_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btConvexTriangleMeshShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btConvexTriangleMeshShape.prototype['isConvex'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__isConvex_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__isInfinite_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConvexTriangleMeshShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConvexTriangleMeshShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getUserPointer_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__isNonMoving_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getMargin'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getMargin_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['recalcLocalAabb'] = function() { + _emscripten_bind_btConvexTriangleMeshShape__recalcLocalAabb_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btConvexTriangleMeshShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btConvexTriangleMeshShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btConvexTriangleMeshShape__setMargin_p1(this.ptr, arg0); +} +btConvexTriangleMeshShape.prototype['getNonvirtualAabb'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btConvexTriangleMeshShape__getNonvirtualAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3); +} +btConvexTriangleMeshShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexTriangleMeshShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__isSoftBody_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getMarginNonVirtual_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['__destroy__'] = function() { + _emscripten_bind_btConvexTriangleMeshShape____destroy___p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexTriangleMeshShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConvexTriangleMeshShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btConvexTriangleMeshShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btConvexTriangleMeshShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btConvexTriangleMeshShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btConvexTriangleMeshShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getAngularMotionDisc_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btConvexTriangleMeshShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btConvexTriangleMeshShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexTriangleMeshShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexTriangleMeshShape.prototype['getPlane'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexTriangleMeshShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConvexTriangleMeshShape.prototype['isCompound'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__isCompound_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getConvexPolyhedron'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getConvexPolyhedron_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btConvexTriangleMeshShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btConvexTriangleMeshShape.prototype['calculatePrincipalAxisTransform'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexTriangleMeshShape__calculatePrincipalAxisTransform_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConvexTriangleMeshShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__getShapeType_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['isConcave'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__isConcave_p0(this.ptr); +} +btConvexTriangleMeshShape.prototype['initializePolyhedralFeatures'] = function() { + return _emscripten_bind_btConvexTriangleMeshShape__initializePolyhedralFeatures_p0(this.ptr); +} +function btBroadphaseInterface(){ throw "btBroadphaseInterface is abstract!" } +btBroadphaseInterface.prototype.__cache__ = {}; +Module['btBroadphaseInterface'] = btBroadphaseInterface; +btBroadphaseInterface.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg3 === undefined) + _emscripten_bind_btBroadphaseInterface__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); + else if (arg4 === undefined) + _emscripten_bind_btBroadphaseInterface__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_btBroadphaseInterface__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btBroadphaseInterface.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btBroadphaseInterface__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btBroadphaseInterface.prototype['getOverlappingPairCache'] = function() { + return wrapPointer(_emscripten_bind_btBroadphaseInterface__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btBroadphaseInterface.prototype['resetPool'] = function(arg0) { + _emscripten_bind_btBroadphaseInterface__resetPool_p1(this.ptr, arg0.ptr); +} +btBroadphaseInterface.prototype['calculateOverlappingPairs'] = function(arg0) { + _emscripten_bind_btBroadphaseInterface__calculateOverlappingPairs_p1(this.ptr, arg0.ptr); +} +btBroadphaseInterface.prototype['printStats'] = function() { + _emscripten_bind_btBroadphaseInterface__printStats_p0(this.ptr); +} +btBroadphaseInterface.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBroadphaseInterface__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBroadphaseInterface.prototype['aabbTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBroadphaseInterface__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBroadphaseInterface.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + return wrapPointer(_emscripten_bind_btBroadphaseInterface__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']); +} +btBroadphaseInterface.prototype['getBroadphaseAabb'] = function(arg0, arg1) { + _emscripten_bind_btBroadphaseInterface__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btBroadphaseInterface.prototype['destroyProxy'] = function(arg0, arg1) { + _emscripten_bind_btBroadphaseInterface__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btAngularLimit.prototype['getCorrection'] = function() { + return _emscripten_bind_btAngularLimit__getCorrection_p0(this.ptr); +} +function btAngularLimit() { + this.ptr = _emscripten_bind_btAngularLimit__btAngularLimit_p0(); + btAngularLimit.prototype.__cache__[this.ptr] = this; + this.__class__ = btAngularLimit; +} +btAngularLimit.prototype.__cache__ = {}; +Module['btAngularLimit'] = btAngularLimit; +btAngularLimit.prototype['getError'] = function() { + return _emscripten_bind_btAngularLimit__getError_p0(this.ptr); +} +btAngularLimit.prototype['fit'] = function(arg0) { + _emscripten_bind_btAngularLimit__fit_p1(this.ptr, arg0); +} +btAngularLimit.prototype['__destroy__'] = function() { + _emscripten_bind_btAngularLimit____destroy___p0(this.ptr); +} +btAngularLimit.prototype['isLimit'] = function() { + return _emscripten_bind_btAngularLimit__isLimit_p0(this.ptr); +} +btAngularLimit.prototype['getBiasFactor'] = function() { + return _emscripten_bind_btAngularLimit__getBiasFactor_p0(this.ptr); +} +btAngularLimit.prototype['getSign'] = function() { + return _emscripten_bind_btAngularLimit__getSign_p0(this.ptr); +} +btAngularLimit.prototype['set'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg2 === undefined) + _emscripten_bind_btAngularLimit__set_p2(this.ptr, arg0, arg1); + else if (arg3 === undefined) + _emscripten_bind_btAngularLimit__set_p3(this.ptr, arg0, arg1, arg2); + else if (arg4 === undefined) + _emscripten_bind_btAngularLimit__set_p4(this.ptr, arg0, arg1, arg2, arg3); + else + _emscripten_bind_btAngularLimit__set_p5(this.ptr, arg0, arg1, arg2, arg3, arg4); +} +btAngularLimit.prototype['getSoftness'] = function() { + return _emscripten_bind_btAngularLimit__getSoftness_p0(this.ptr); +} +btAngularLimit.prototype['getHigh'] = function() { + return _emscripten_bind_btAngularLimit__getHigh_p0(this.ptr); +} +btAngularLimit.prototype['test'] = function(arg0) { + _emscripten_bind_btAngularLimit__test_p1(this.ptr, arg0); +} +btAngularLimit.prototype['getHalfRange'] = function() { + return _emscripten_bind_btAngularLimit__getHalfRange_p0(this.ptr); +} +btAngularLimit.prototype['getLow'] = function() { + return _emscripten_bind_btAngularLimit__getLow_p0(this.ptr); +} +btAngularLimit.prototype['getRelaxationFactor'] = function() { + return _emscripten_bind_btAngularLimit__getRelaxationFactor_p0(this.ptr); +} +btDefaultCollisionConfiguration.prototype['__destroy__'] = function() { + _emscripten_bind_btDefaultCollisionConfiguration____destroy___p0(this.ptr); +} +btDefaultCollisionConfiguration.prototype['getStackAllocator'] = function() { + return wrapPointer(_emscripten_bind_btDefaultCollisionConfiguration__getStackAllocator_p0(this.ptr), Module['btStackAlloc']); +} +function btDefaultCollisionConfiguration(arg0) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p0(); + else + this.ptr = _emscripten_bind_btDefaultCollisionConfiguration__btDefaultCollisionConfiguration_p1(arg0.ptr); + btDefaultCollisionConfiguration.prototype.__cache__[this.ptr] = this; + this.__class__ = btDefaultCollisionConfiguration; +} +btDefaultCollisionConfiguration.prototype.__cache__ = {}; +Module['btDefaultCollisionConfiguration'] = btDefaultCollisionConfiguration; +btDefaultCollisionConfiguration.prototype['getPersistentManifoldPool'] = function() { + return _emscripten_bind_btDefaultCollisionConfiguration__getPersistentManifoldPool_p0(this.ptr); +} +btDefaultCollisionConfiguration.prototype['getSimplexSolver'] = function() { + return _emscripten_bind_btDefaultCollisionConfiguration__getSimplexSolver_p0(this.ptr); +} +btDefaultCollisionConfiguration.prototype['setConvexConvexMultipointIterations'] = function(arg0, arg1) { + if (arg0 === undefined) + _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p0(this.ptr); + else if (arg1 === undefined) + _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p1(this.ptr, arg0); + else + _emscripten_bind_btDefaultCollisionConfiguration__setConvexConvexMultipointIterations_p2(this.ptr, arg0, arg1); +} +btDefaultCollisionConfiguration.prototype['getCollisionAlgorithmPool'] = function() { + return _emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmPool_p0(this.ptr); +} +btDefaultCollisionConfiguration.prototype['getCollisionAlgorithmCreateFunc'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btDefaultCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2(this.ptr, arg0, arg1), Module['btCollisionAlgorithmCreateFunc']); +} +function ContactResultCallback(){ throw "ContactResultCallback is abstract!" } +ContactResultCallback.prototype.__cache__ = {}; +Module['ContactResultCallback'] = ContactResultCallback; +ContactResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +ContactResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ContactResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +ContactResultCallback.prototype['addSingleResult'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + return _emscripten_bind_btCollisionWorld__ContactResultCallback__addSingleResult_p7(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4.ptr, arg5, arg6); +} +ContactResultCallback.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterMask_p0(this.ptr); +} +ContactResultCallback.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_btCollisionWorld__ContactResultCallback__get_m_collisionFilterGroup_p0(this.ptr); +} +ContactResultCallback.prototype['needsCollision'] = function(arg0) { + return _emscripten_bind_btCollisionWorld__ContactResultCallback__needsCollision_p1(this.ptr, arg0.ptr); +} +btSphereSphereCollisionAlgorithm.prototype['getAllContactManifolds'] = function(arg0) { + _emscripten_bind_btSphereSphereCollisionAlgorithm__getAllContactManifolds_p1(this.ptr, arg0); +} +function btSphereSphereCollisionAlgorithm(arg0, arg1, arg2, arg3) { + if (arg1 === undefined) + this.ptr = _emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p1(arg0.ptr); + else + this.ptr = _emscripten_bind_btSphereSphereCollisionAlgorithm__btSphereSphereCollisionAlgorithm_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + btSphereSphereCollisionAlgorithm.prototype.__cache__[this.ptr] = this; + this.__class__ = btSphereSphereCollisionAlgorithm; +} +btSphereSphereCollisionAlgorithm.prototype.__cache__ = {}; +Module['btSphereSphereCollisionAlgorithm'] = btSphereSphereCollisionAlgorithm; +btSphereSphereCollisionAlgorithm.prototype['calculateTimeOfImpact'] = function(arg0, arg1, arg2, arg3) { + return _emscripten_bind_btSphereSphereCollisionAlgorithm__calculateTimeOfImpact_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btSphereSphereCollisionAlgorithm.prototype['processCollision'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btSphereSphereCollisionAlgorithm__processCollision_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btSphereSphereCollisionAlgorithm.prototype['__destroy__'] = function() { + _emscripten_bind_btSphereSphereCollisionAlgorithm____destroy___p0(this.ptr); +} +btSimpleBroadphase.prototype['__destroy__'] = function() { + _emscripten_bind_btSimpleBroadphase____destroy___p0(this.ptr); +} +function btSimpleBroadphase(arg0, arg1) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p0(); + else if (arg1 === undefined) + this.ptr = _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p1(arg0); + else + this.ptr = _emscripten_bind_btSimpleBroadphase__btSimpleBroadphase_p2(arg0, arg1.ptr); + btSimpleBroadphase.prototype.__cache__[this.ptr] = this; + this.__class__ = btSimpleBroadphase; +} +btSimpleBroadphase.prototype.__cache__ = {}; +Module['btSimpleBroadphase'] = btSimpleBroadphase; +btSimpleBroadphase.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btSimpleBroadphase__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btSimpleBroadphase.prototype['getOverlappingPairCache'] = function() { + return wrapPointer(_emscripten_bind_btSimpleBroadphase__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btSimpleBroadphase.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg3 === undefined) + _emscripten_bind_btSimpleBroadphase__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); + else if (arg4 === undefined) + _emscripten_bind_btSimpleBroadphase__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_btSimpleBroadphase__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btSimpleBroadphase.prototype['calculateOverlappingPairs'] = function(arg0) { + _emscripten_bind_btSimpleBroadphase__calculateOverlappingPairs_p1(this.ptr, arg0.ptr); +} +btSimpleBroadphase.prototype['testAabbOverlap'] = function(arg0, arg1) { + return _emscripten_bind_btSimpleBroadphase__testAabbOverlap_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btSimpleBroadphase.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSimpleBroadphase__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btSimpleBroadphase.prototype['aabbTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSimpleBroadphase__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btSimpleBroadphase.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + return wrapPointer(_emscripten_bind_btSimpleBroadphase__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']); +} +btSimpleBroadphase.prototype['printStats'] = function() { + _emscripten_bind_btSimpleBroadphase__printStats_p0(this.ptr); +} +btSimpleBroadphase.prototype['aabbOverlap'] = function(arg0, arg1) { + return _emscripten_bind_btSimpleBroadphase__aabbOverlap_p2(arg0.ptr, arg1.ptr); +} +btSimpleBroadphase.prototype['getBroadphaseAabb'] = function(arg0, arg1) { + _emscripten_bind_btSimpleBroadphase__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btSimpleBroadphase.prototype['destroyProxy'] = function(arg0, arg1) { + _emscripten_bind_btSimpleBroadphase__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr); +} +function btCollisionConfiguration(){ throw "btCollisionConfiguration is abstract!" } +btCollisionConfiguration.prototype.__cache__ = {}; +Module['btCollisionConfiguration'] = btCollisionConfiguration; +btCollisionConfiguration.prototype['getPersistentManifoldPool'] = function() { + return _emscripten_bind_btCollisionConfiguration__getPersistentManifoldPool_p0(this.ptr); +} +btCollisionConfiguration.prototype['getStackAllocator'] = function() { + return wrapPointer(_emscripten_bind_btCollisionConfiguration__getStackAllocator_p0(this.ptr), Module['btStackAlloc']); +} +btCollisionConfiguration.prototype['getCollisionAlgorithmPool'] = function() { + return _emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmPool_p0(this.ptr); +} +btCollisionConfiguration.prototype['getCollisionAlgorithmCreateFunc'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btCollisionConfiguration__getCollisionAlgorithmCreateFunc_p2(this.ptr, arg0, arg1), Module['btCollisionAlgorithmCreateFunc']); +} +btPersistentManifold.prototype['getNumContacts'] = function() { + return _emscripten_bind_btPersistentManifold__getNumContacts_p0(this.ptr); +} +btPersistentManifold.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btPersistentManifold__set_m_objectType_p1(this.ptr, arg0); +} +btPersistentManifold.prototype['getBody1'] = function() { + return _emscripten_bind_btPersistentManifold__getBody1_p0(this.ptr); +} +btPersistentManifold.prototype['validContactDistance'] = function(arg0) { + return _emscripten_bind_btPersistentManifold__validContactDistance_p1(this.ptr, arg0.ptr); +} +btPersistentManifold.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btPersistentManifold__get_m_objectType_p0(this.ptr); +} +btPersistentManifold.prototype['refreshContactPoints'] = function(arg0, arg1) { + _emscripten_bind_btPersistentManifold__refreshContactPoints_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btPersistentManifold.prototype['clearUserCache'] = function(arg0) { + _emscripten_bind_btPersistentManifold__clearUserCache_p1(this.ptr, arg0.ptr); +} +btPersistentManifold.prototype['set_m_index1a'] = function(arg0) { + _emscripten_bind_btPersistentManifold__set_m_index1a_p1(this.ptr, arg0); +} +function btPersistentManifold(arg0, arg1, arg2, arg3, arg4) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btPersistentManifold__btPersistentManifold_p0(); + else + this.ptr = _emscripten_bind_btPersistentManifold__btPersistentManifold_p5(arg0, arg1, arg2, arg3, arg4); + btPersistentManifold.prototype.__cache__[this.ptr] = this; + this.__class__ = btPersistentManifold; +} +btPersistentManifold.prototype.__cache__ = {}; +Module['btPersistentManifold'] = btPersistentManifold; +btPersistentManifold.prototype['addManifoldPoint'] = function(arg0) { + return _emscripten_bind_btPersistentManifold__addManifoldPoint_p1(this.ptr, arg0.ptr); +} +btPersistentManifold.prototype['getCacheEntry'] = function(arg0) { + return _emscripten_bind_btPersistentManifold__getCacheEntry_p1(this.ptr, arg0.ptr); +} +btPersistentManifold.prototype['getObjectType'] = function() { + return _emscripten_bind_btPersistentManifold__getObjectType_p0(this.ptr); +} +btPersistentManifold.prototype['getContactPoint'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPersistentManifold__getContactPoint_p1(this.ptr, arg0), Module['btManifoldPoint']); +} +btPersistentManifold.prototype['getContactBreakingThreshold'] = function() { + return _emscripten_bind_btPersistentManifold__getContactBreakingThreshold_p0(this.ptr); +} +btPersistentManifold.prototype['clearManifold'] = function() { + _emscripten_bind_btPersistentManifold__clearManifold_p0(this.ptr); +} +btPersistentManifold.prototype['getBody0'] = function() { + return _emscripten_bind_btPersistentManifold__getBody0_p0(this.ptr); +} +btPersistentManifold.prototype['setBodies'] = function(arg0, arg1) { + _emscripten_bind_btPersistentManifold__setBodies_p2(this.ptr, arg0, arg1); +} +btPersistentManifold.prototype['removeContactPoint'] = function(arg0) { + _emscripten_bind_btPersistentManifold__removeContactPoint_p1(this.ptr, arg0); +} +btPersistentManifold.prototype['__destroy__'] = function() { + _emscripten_bind_btPersistentManifold____destroy___p0(this.ptr); +} +btPersistentManifold.prototype['get_m_index1a'] = function() { + return _emscripten_bind_btPersistentManifold__get_m_index1a_p0(this.ptr); +} +btPersistentManifold.prototype['getContactProcessingThreshold'] = function() { + return _emscripten_bind_btPersistentManifold__getContactProcessingThreshold_p0(this.ptr); +} +btPersistentManifold.prototype['get_m_companionIdB'] = function() { + return _emscripten_bind_btPersistentManifold__get_m_companionIdB_p0(this.ptr); +} +btPersistentManifold.prototype['get_m_companionIdA'] = function() { + return _emscripten_bind_btPersistentManifold__get_m_companionIdA_p0(this.ptr); +} +btPersistentManifold.prototype['set_m_companionIdB'] = function(arg0) { + _emscripten_bind_btPersistentManifold__set_m_companionIdB_p1(this.ptr, arg0); +} +btPersistentManifold.prototype['set_m_companionIdA'] = function(arg0) { + _emscripten_bind_btPersistentManifold__set_m_companionIdA_p1(this.ptr, arg0); +} +btPersistentManifold.prototype['replaceContactPoint'] = function(arg0, arg1) { + _emscripten_bind_btPersistentManifold__replaceContactPoint_p2(this.ptr, arg0.ptr, arg1); +} +function btNodeOverlapCallback(){ throw "btNodeOverlapCallback is abstract!" } +btNodeOverlapCallback.prototype.__cache__ = {}; +Module['btNodeOverlapCallback'] = btNodeOverlapCallback; +btNodeOverlapCallback.prototype['processNode'] = function(arg0, arg1) { + _emscripten_bind_btNodeOverlapCallback__processNode_p2(this.ptr, arg0, arg1); +} +btCompoundShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btCompoundShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btCompoundShape.prototype['getDynamicAabbTree'] = function() { + return wrapPointer(_emscripten_bind_btCompoundShape__getDynamicAabbTree_p0(this.ptr), Module['btDbvt']); +} +btCompoundShape.prototype['isConvex'] = function() { + return _emscripten_bind_btCompoundShape__isConvex_p0(this.ptr); +} +btCompoundShape.prototype['getUpdateRevision'] = function() { + return _emscripten_bind_btCompoundShape__getUpdateRevision_p0(this.ptr); +} +btCompoundShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btCompoundShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btCompoundShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btCompoundShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btCompoundShape.prototype['createAabbTreeFromChildren'] = function() { + _emscripten_bind_btCompoundShape__createAabbTreeFromChildren_p0(this.ptr); +} +function btCompoundShape(arg0) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btCompoundShape__btCompoundShape_p0(); + else + this.ptr = _emscripten_bind_btCompoundShape__btCompoundShape_p1(arg0); + btCompoundShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btCompoundShape; +} +btCompoundShape.prototype.__cache__ = {}; +Module['btCompoundShape'] = btCompoundShape; +btCompoundShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btCompoundShape__calculateSerializeBufferSize_p0(this.ptr); +} +btCompoundShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btCompoundShape__setUserPointer_p1(this.ptr, arg0); +} +btCompoundShape.prototype['getName'] = function() { + return _emscripten_bind_btCompoundShape__getName_p0(this.ptr); +} +btCompoundShape.prototype['isCompound'] = function() { + return _emscripten_bind_btCompoundShape__isCompound_p0(this.ptr); +} +btCompoundShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btCompoundShape__isPolyhedral_p0(this.ptr); +} +btCompoundShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btCompoundShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btCompoundShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCompoundShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCompoundShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btCompoundShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btCompoundShape.prototype['getChildShape'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCompoundShape__getChildShape_p1(this.ptr, arg0), Module['btCollisionShape']); +} +btCompoundShape.prototype['addChildShape'] = function(arg0, arg1) { + _emscripten_bind_btCompoundShape__addChildShape_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btCompoundShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btCompoundShape__isInfinite_p0(this.ptr); +} +btCompoundShape.prototype['getChildTransform'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCompoundShape__getChildTransform_p1(this.ptr, arg0), Module['btTransform']); +} +btCompoundShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btCompoundShape__getUserPointer_p0(this.ptr); +} +btCompoundShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btCompoundShape__isNonMoving_p0(this.ptr); +} +btCompoundShape.prototype['getChildList'] = function() { + return wrapPointer(_emscripten_bind_btCompoundShape__getChildList_p0(this.ptr), Module['btCompoundShapeChild']); +} +btCompoundShape.prototype['getMargin'] = function() { + return _emscripten_bind_btCompoundShape__getMargin_p0(this.ptr); +} +btCompoundShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btCompoundShape__setMargin_p1(this.ptr, arg0); +} +btCompoundShape.prototype['getNumChildShapes'] = function() { + return _emscripten_bind_btCompoundShape__getNumChildShapes_p0(this.ptr); +} +btCompoundShape.prototype['removeChildShapeByIndex'] = function(arg0) { + _emscripten_bind_btCompoundShape__removeChildShapeByIndex_p1(this.ptr, arg0); +} +btCompoundShape.prototype['recalculateLocalAabb'] = function() { + _emscripten_bind_btCompoundShape__recalculateLocalAabb_p0(this.ptr); +} +btCompoundShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btCompoundShape__isSoftBody_p0(this.ptr); +} +btCompoundShape.prototype['__destroy__'] = function() { + _emscripten_bind_btCompoundShape____destroy___p0(this.ptr); +} +btCompoundShape.prototype['updateChildTransform'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btCompoundShape__updateChildTransform_p2(this.ptr, arg0, arg1.ptr); + else + _emscripten_bind_btCompoundShape__updateChildTransform_p3(this.ptr, arg0, arg1.ptr, arg2); +} +btCompoundShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btCompoundShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btCompoundShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btCompoundShape__getAngularMotionDisc_p0(this.ptr); +} +btCompoundShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btCompoundShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btCompoundShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btCompoundShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btCompoundShape.prototype['calculatePrincipalAxisTransform'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCompoundShape__calculatePrincipalAxisTransform_p3(this.ptr, arg0, arg1.ptr, arg2.ptr); +} +btCompoundShape.prototype['removeChildShape'] = function(arg0) { + _emscripten_bind_btCompoundShape__removeChildShape_p1(this.ptr, arg0.ptr); +} +btCompoundShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btCompoundShape__getShapeType_p0(this.ptr); +} +btCompoundShape.prototype['isConcave'] = function() { + return _emscripten_bind_btCompoundShape__isConcave_p0(this.ptr); +} +btCompoundShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btCompoundShape__isConvex2d_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btScaledBvhTriangleMeshShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btScaledBvhTriangleMeshShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btScaledBvhTriangleMeshShape__setUserPointer_p1(this.ptr, arg0); +} +function btScaledBvhTriangleMeshShape(arg0, arg1) { + this.ptr = _emscripten_bind_btScaledBvhTriangleMeshShape__btScaledBvhTriangleMeshShape_p2(arg0.ptr, arg1.ptr); + btScaledBvhTriangleMeshShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btScaledBvhTriangleMeshShape; +} +btScaledBvhTriangleMeshShape.prototype.__cache__ = {}; +Module['btScaledBvhTriangleMeshShape'] = btScaledBvhTriangleMeshShape; +btScaledBvhTriangleMeshShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btScaledBvhTriangleMeshShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btScaledBvhTriangleMeshShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btScaledBvhTriangleMeshShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btScaledBvhTriangleMeshShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) { + _emscripten_bind_btScaledBvhTriangleMeshShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btScaledBvhTriangleMeshShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__calculateSerializeBufferSize_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['getName'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__getName_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['isCompound'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__isCompound_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__isPolyhedral_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btScaledBvhTriangleMeshShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btScaledBvhTriangleMeshShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btScaledBvhTriangleMeshShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btScaledBvhTriangleMeshShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btScaledBvhTriangleMeshShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btScaledBvhTriangleMeshShape.prototype['getChildShape'] = function() { + return wrapPointer(_emscripten_bind_btScaledBvhTriangleMeshShape__getChildShape_p0(this.ptr), Module['btBvhTriangleMeshShape']); +} +btScaledBvhTriangleMeshShape.prototype['isConvex'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__isConvex_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__isInfinite_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__getUserPointer_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__isNonMoving_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['getMargin'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__getMargin_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btScaledBvhTriangleMeshShape__setMargin_p1(this.ptr, arg0); +} +btScaledBvhTriangleMeshShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__isConvex2d_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__isSoftBody_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['__destroy__'] = function() { + _emscripten_bind_btScaledBvhTriangleMeshShape____destroy___p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btScaledBvhTriangleMeshShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btScaledBvhTriangleMeshShape.prototype['isConcave'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__isConcave_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__getAngularMotionDisc_p0(this.ptr); +} +btScaledBvhTriangleMeshShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btScaledBvhTriangleMeshShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btScaledBvhTriangleMeshShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btScaledBvhTriangleMeshShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btScaledBvhTriangleMeshShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btScaledBvhTriangleMeshShape__getShapeType_p0(this.ptr); +} +function btDynamicsWorld(){ throw "btDynamicsWorld is abstract!" } +btDynamicsWorld.prototype.__cache__ = {}; +Module['btDynamicsWorld'] = btDynamicsWorld; +btDynamicsWorld.prototype['setGravity'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__setGravity_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['addAction'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__addAction_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['getSolverInfo'] = function() { + return wrapPointer(_emscripten_bind_btDynamicsWorld__getSolverInfo_p0(this.ptr), Module['btContactSolverInfo']); +} +btDynamicsWorld.prototype['serialize'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__serialize_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['getDispatcher'] = function() { + return wrapPointer(_emscripten_bind_btDynamicsWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']); +} +btDynamicsWorld.prototype['addRigidBody'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btDynamicsWorld__addRigidBody_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btDynamicsWorld__addRigidBody_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btDynamicsWorld.prototype['clearForces'] = function() { + _emscripten_bind_btDynamicsWorld__clearForces_p0(this.ptr); +} +btDynamicsWorld.prototype['removeVehicle'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__removeVehicle_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['getDebugDrawer'] = function() { + return wrapPointer(_emscripten_bind_btDynamicsWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']); +} +btDynamicsWorld.prototype['setBroadphase'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__setBroadphase_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['performDiscreteCollisionDetection'] = function() { + _emscripten_bind_btDynamicsWorld__performDiscreteCollisionDetection_p0(this.ptr); +} +btDynamicsWorld.prototype['getCollisionObjectArray'] = function() { + return _emscripten_bind_btDynamicsWorld__getCollisionObjectArray_p0(this.ptr); +} +btDynamicsWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDynamicsWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btDynamicsWorld.prototype['removeConstraint'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__removeConstraint_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['rayTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDynamicsWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btDynamicsWorld.prototype['getNumConstraints'] = function() { + return _emscripten_bind_btDynamicsWorld__getNumConstraints_p0(this.ptr); +} +btDynamicsWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btDynamicsWorld__addCollisionObject_p1(this.ptr, arg0.ptr); + else if (arg2 === undefined) + _emscripten_bind_btDynamicsWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1); + else + _emscripten_bind_btDynamicsWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btDynamicsWorld.prototype['removeRigidBody'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__removeRigidBody_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['contactTest'] = function(arg0, arg1) { + _emscripten_bind_btDynamicsWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btDynamicsWorld.prototype['setInternalTickCallback'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p1(this.ptr, arg0); + else if (arg2 === undefined) + _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btDynamicsWorld__setInternalTickCallback_p3(this.ptr, arg0, arg1, arg2); +} +btDynamicsWorld.prototype['getForceUpdateAllAabbs'] = function() { + return _emscripten_bind_btDynamicsWorld__getForceUpdateAllAabbs_p0(this.ptr); +} +btDynamicsWorld.prototype['updateAabbs'] = function() { + _emscripten_bind_btDynamicsWorld__updateAabbs_p0(this.ptr); +} +btDynamicsWorld.prototype['setDebugDrawer'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__setDebugDrawer_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['synchronizeMotionStates'] = function() { + _emscripten_bind_btDynamicsWorld__synchronizeMotionStates_p0(this.ptr); +} +btDynamicsWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg4 === undefined) + _emscripten_bind_btDynamicsWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_btDynamicsWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); +} +btDynamicsWorld.prototype['getNumCollisionObjects'] = function() { + return _emscripten_bind_btDynamicsWorld__getNumCollisionObjects_p0(this.ptr); +} +btDynamicsWorld.prototype['__destroy__'] = function() { + _emscripten_bind_btDynamicsWorld____destroy___p0(this.ptr); +} +btDynamicsWorld.prototype['addConstraint'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btDynamicsWorld__addConstraint_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btDynamicsWorld__addConstraint_p2(this.ptr, arg0.ptr, arg1); +} +btDynamicsWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDynamicsWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btDynamicsWorld.prototype['getGravity'] = function() { + return wrapPointer(_emscripten_bind_btDynamicsWorld__getGravity_p0(this.ptr), Module['btVector3']); +} +btDynamicsWorld.prototype['debugDrawWorld'] = function() { + _emscripten_bind_btDynamicsWorld__debugDrawWorld_p0(this.ptr); +} +btDynamicsWorld.prototype['getBroadphase'] = function() { + return wrapPointer(_emscripten_bind_btDynamicsWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']); +} +btDynamicsWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btDynamicsWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr); +} +btDynamicsWorld.prototype['removeAction'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__removeAction_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0); +} +btDynamicsWorld.prototype['setWorldUserInfo'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__setWorldUserInfo_p1(this.ptr, arg0); +} +btDynamicsWorld.prototype['removeCharacter'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__removeCharacter_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['getConstraint'] = function(arg0) { + return wrapPointer(_emscripten_bind_btDynamicsWorld__getConstraint_p1(this.ptr, arg0), Module['btTypedConstraint']); +} +btDynamicsWorld.prototype['getConstraintSolver'] = function() { + return wrapPointer(_emscripten_bind_btDynamicsWorld__getConstraintSolver_p0(this.ptr), Module['btConstraintSolver']); +} +btDynamicsWorld.prototype['stepSimulation'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + return _emscripten_bind_btDynamicsWorld__stepSimulation_p1(this.ptr, arg0); + else if (arg2 === undefined) + return _emscripten_bind_btDynamicsWorld__stepSimulation_p2(this.ptr, arg0, arg1); + else + return _emscripten_bind_btDynamicsWorld__stepSimulation_p3(this.ptr, arg0, arg1, arg2); +} +btDynamicsWorld.prototype['addCharacter'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__addCharacter_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['getWorldType'] = function() { + return _emscripten_bind_btDynamicsWorld__getWorldType_p0(this.ptr); +} +btDynamicsWorld.prototype['updateSingleAabb'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__updateSingleAabb_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['addVehicle'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__addVehicle_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['getPairCache'] = function() { + return wrapPointer(_emscripten_bind_btDynamicsWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btDynamicsWorld.prototype['getWorldUserInfo'] = function() { + return _emscripten_bind_btDynamicsWorld__getWorldUserInfo_p0(this.ptr); +} +btDynamicsWorld.prototype['removeCollisionObject'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__removeCollisionObject_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['setConstraintSolver'] = function(arg0) { + _emscripten_bind_btDynamicsWorld__setConstraintSolver_p1(this.ptr, arg0.ptr); +} +btDynamicsWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + _emscripten_bind_btDynamicsWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7); +} +btDynamicsWorld.prototype['getDispatchInfo'] = function() { + return wrapPointer(_emscripten_bind_btDynamicsWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']); +} +function btDefaultVehicleRaycaster(arg0) { + this.ptr = _emscripten_bind_btDefaultVehicleRaycaster__btDefaultVehicleRaycaster_p1(arg0.ptr); + btDefaultVehicleRaycaster.prototype.__cache__[this.ptr] = this; + this.__class__ = btDefaultVehicleRaycaster; +} +btDefaultVehicleRaycaster.prototype.__cache__ = {}; +Module['btDefaultVehicleRaycaster'] = btDefaultVehicleRaycaster; +btDefaultVehicleRaycaster.prototype['__destroy__'] = function() { + _emscripten_bind_btDefaultVehicleRaycaster____destroy___p0(this.ptr); +} +btDefaultVehicleRaycaster.prototype['castRay'] = function(arg0, arg1, arg2) { + return _emscripten_bind_btDefaultVehicleRaycaster__castRay_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConstraintSetting.prototype['__destroy__'] = function() { + _emscripten_bind_btConstraintSetting____destroy___p0(this.ptr); +} +function btConstraintSetting() { + this.ptr = _emscripten_bind_btConstraintSetting__btConstraintSetting_p0(); + btConstraintSetting.prototype.__cache__[this.ptr] = this; + this.__class__ = btConstraintSetting; +} +btConstraintSetting.prototype.__cache__ = {}; +Module['btConstraintSetting'] = btConstraintSetting; +btConstraintSetting.prototype['set_m_impulseClamp'] = function(arg0) { + _emscripten_bind_btConstraintSetting__set_m_impulseClamp_p1(this.ptr, arg0); +} +btConstraintSetting.prototype['get_m_damping'] = function() { + return _emscripten_bind_btConstraintSetting__get_m_damping_p0(this.ptr); +} +btConstraintSetting.prototype['get_m_impulseClamp'] = function() { + return _emscripten_bind_btConstraintSetting__get_m_impulseClamp_p0(this.ptr); +} +btConstraintSetting.prototype['set_m_tau'] = function(arg0) { + _emscripten_bind_btConstraintSetting__set_m_tau_p1(this.ptr, arg0); +} +btConstraintSetting.prototype['set_m_damping'] = function(arg0) { + _emscripten_bind_btConstraintSetting__set_m_damping_p1(this.ptr, arg0); +} +btConstraintSetting.prototype['get_m_tau'] = function() { + return _emscripten_bind_btConstraintSetting__get_m_tau_p0(this.ptr); +} +btStackAlloc.prototype['__destroy__'] = function() { + _emscripten_bind_btStackAlloc____destroy___p0(this.ptr); +} +btStackAlloc.prototype['create'] = function(arg0) { + _emscripten_bind_btStackAlloc__create_p1(this.ptr, arg0); +} +function btStackAlloc(arg0) { + this.ptr = _emscripten_bind_btStackAlloc__btStackAlloc_p1(arg0); + btStackAlloc.prototype.__cache__[this.ptr] = this; + this.__class__ = btStackAlloc; +} +btStackAlloc.prototype.__cache__ = {}; +Module['btStackAlloc'] = btStackAlloc; +btStackAlloc.prototype['allocate'] = function(arg0) { + return _emscripten_bind_btStackAlloc__allocate_p1(this.ptr, arg0); +} +btStackAlloc.prototype['destroy'] = function() { + _emscripten_bind_btStackAlloc__destroy_p0(this.ptr); +} +btStackAlloc.prototype['beginBlock'] = function() { + return wrapPointer(_emscripten_bind_btStackAlloc__beginBlock_p0(this.ptr), Module['btBlock']); +} +btStackAlloc.prototype['getAvailableMemory'] = function() { + return _emscripten_bind_btStackAlloc__getAvailableMemory_p0(this.ptr); +} +btStackAlloc.prototype['endBlock'] = function(arg0) { + _emscripten_bind_btStackAlloc__endBlock_p1(this.ptr, arg0.ptr); +} +function btContactSolverInfo() { + this.ptr = _emscripten_bind_btContactSolverInfo__btContactSolverInfo_p0(); + btContactSolverInfo.prototype.__cache__[this.ptr] = this; + this.__class__ = btContactSolverInfo; +} +btContactSolverInfo.prototype.__cache__ = {}; +Module['btContactSolverInfo'] = btContactSolverInfo; +btContactSolverInfo.prototype['__destroy__'] = function() { + _emscripten_bind_btContactSolverInfo____destroy___p0(this.ptr); +} +btUniversalConstraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btUniversalConstraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btUniversalConstraint__buildJacobian_p0(this.ptr); +} +btUniversalConstraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btUniversalConstraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btUniversalConstraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btUniversalConstraint.prototype['getUid'] = function() { + return _emscripten_bind_btUniversalConstraint__getUid_p0(this.ptr); +} +btUniversalConstraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__set_m_objectType_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setEnabled_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['getFrameOffsetA'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']); +} +btUniversalConstraint.prototype['getRelativePivotPosition'] = function(arg0) { + return _emscripten_bind_btUniversalConstraint__getRelativePivotPosition_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['getFrameOffsetB'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']); +} +btUniversalConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + _emscripten_bind_btUniversalConstraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr); +} +btUniversalConstraint.prototype['getCalculatedTransformA'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']); +} +btUniversalConstraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btUniversalConstraint__getUserConstraintId_p0(this.ptr); +} +btUniversalConstraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btUniversalConstraint__get_m_objectType_p0(this.ptr); +} +btUniversalConstraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btUniversalConstraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btUniversalConstraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btUniversalConstraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btUniversalConstraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btUniversalConstraint__getParam_p2(this.ptr, arg0, arg1); +} +btUniversalConstraint.prototype['setUpperLimit'] = function(arg0, arg1) { + _emscripten_bind_btUniversalConstraint__setUpperLimit_p2(this.ptr, arg0, arg1); +} +btUniversalConstraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['calcAnchorPos'] = function() { + _emscripten_bind_btUniversalConstraint__calcAnchorPos_p0(this.ptr); +} +btUniversalConstraint.prototype['getAngularLowerLimit'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__getAngularLowerLimit_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btUniversalConstraint__calculateSerializeBufferSize_p0(this.ptr); +} +btUniversalConstraint.prototype['getAxis'] = function(arg0) { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getAxis_p1(this.ptr, arg0), Module['btVector3']); +} +btUniversalConstraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btUniversalConstraint__internalGetAppliedImpulse_p0(this.ptr); +} +btUniversalConstraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btUniversalConstraint__isEnabled_p0(this.ptr); +} +btUniversalConstraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setUserConstraintId_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['getLinearUpperLimit'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__getLinearUpperLimit_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btUniversalConstraint__getConstraintType_p0(this.ptr); +} +btUniversalConstraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__enableFeedback_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['getAnchor'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getAnchor_p0(this.ptr), Module['btVector3']); +} +btUniversalConstraint.prototype['setUseFrameOffset'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setUseFrameOffset_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['isLimited'] = function(arg0) { + return _emscripten_bind_btUniversalConstraint__isLimited_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['getAngle2'] = function() { + return _emscripten_bind_btUniversalConstraint__getAngle2_p0(this.ptr); +} +btUniversalConstraint.prototype['getRotationalLimitMotor'] = function(arg0) { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getRotationalLimitMotor_p1(this.ptr, arg0), Module['btRotationalLimitMotor']); +} +btUniversalConstraint.prototype['getAngle1'] = function() { + return _emscripten_bind_btUniversalConstraint__getAngle1_p0(this.ptr); +} +btUniversalConstraint.prototype['getInfo1NonVirtual'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btUniversalConstraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btUniversalConstraint.prototype['setLinearLowerLimit'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setLinearLowerLimit_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['getAnchor2'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getAnchor2_p0(this.ptr), Module['btVector3']); +} +btUniversalConstraint.prototype['__destroy__'] = function() { + _emscripten_bind_btUniversalConstraint____destroy___p0(this.ptr); +} +btUniversalConstraint.prototype['getLinearLowerLimit'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__getLinearLowerLimit_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['setFrames'] = function(arg0, arg1) { + _emscripten_bind_btUniversalConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btUniversalConstraint.prototype['getUseFrameOffset'] = function() { + return _emscripten_bind_btUniversalConstraint__getUseFrameOffset_p0(this.ptr); +} +btUniversalConstraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setUserConstraintType_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['getCalculatedTransformB'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']); +} +btUniversalConstraint.prototype['calculateTransforms'] = function(arg0, arg1) { + if (arg0 === undefined) + _emscripten_bind_btUniversalConstraint__calculateTransforms_p0(this.ptr); + else + _emscripten_bind_btUniversalConstraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btUniversalConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['get_limit_motor_info2'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) { + if (arg11 === undefined) + return _emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p11(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10); + else + return _emscripten_bind_btUniversalConstraint__get_limit_motor_info2_p12(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10, arg11); +} +btUniversalConstraint.prototype['get_m_useSolveConstraintObsolete'] = function() { + return _emscripten_bind_btUniversalConstraint__get_m_useSolveConstraintObsolete_p0(this.ptr); +} +btUniversalConstraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btUniversalConstraint__getAppliedImpulse_p0(this.ptr); +} +btUniversalConstraint.prototype['setLimit'] = function(arg0, arg1, arg2) { + _emscripten_bind_btUniversalConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2); +} +function btUniversalConstraint(arg0, arg1, arg2, arg3, arg4) { + this.ptr = _emscripten_bind_btUniversalConstraint__btUniversalConstraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); + btUniversalConstraint.prototype.__cache__[this.ptr] = this; + this.__class__ = btUniversalConstraint; +} +btUniversalConstraint.prototype.__cache__ = {}; +Module['btUniversalConstraint'] = btUniversalConstraint; +btUniversalConstraint.prototype['getTranslationalLimitMotor'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getTranslationalLimitMotor_p0(this.ptr), Module['btTranslationalLimitMotor']); +} +btUniversalConstraint.prototype['setLowerLimit'] = function(arg0, arg1) { + _emscripten_bind_btUniversalConstraint__setLowerLimit_p2(this.ptr, arg0, arg1); +} +btUniversalConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btUniversalConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btUniversalConstraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btUniversalConstraint__needsFeedback_p0(this.ptr); +} +btUniversalConstraint.prototype['getAngle'] = function(arg0) { + return _emscripten_bind_btUniversalConstraint__getAngle_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['updateRHS'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__updateRHS_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['getAngularUpperLimit'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__getAngularUpperLimit_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['setAngularLowerLimit'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setAngularLowerLimit_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btUniversalConstraint__getObjectType_p0(this.ptr); +} +btUniversalConstraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btUniversalConstraint__getUserConstraintType_p0(this.ptr); +} +btUniversalConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btUniversalConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btUniversalConstraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btUniversalConstraint__getDbgDrawSize_p0(this.ptr); +} +btUniversalConstraint.prototype['getAxis1'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getAxis1_p0(this.ptr), Module['btVector3']); +} +btUniversalConstraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btUniversalConstraint__getUserConstraintPtr_p0(this.ptr); +} +btUniversalConstraint.prototype['getAxis2'] = function() { + return wrapPointer(_emscripten_bind_btUniversalConstraint__getAxis2_p0(this.ptr), Module['btVector3']); +} +btUniversalConstraint.prototype['setLinearUpperLimit'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setLinearUpperLimit_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['setAngularUpperLimit'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setAngularUpperLimit_p1(this.ptr, arg0.ptr); +} +btUniversalConstraint.prototype['setAxis'] = function(arg0, arg1) { + _emscripten_bind_btUniversalConstraint__setAxis_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btUniversalConstraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btUniversalConstraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +btUniversalConstraint.prototype['testAngularLimitMotor'] = function(arg0) { + return _emscripten_bind_btUniversalConstraint__testAngularLimitMotor_p1(this.ptr, arg0); +} +btEmptyShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btEmptyShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btEmptyShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btEmptyShape__setUserPointer_p1(this.ptr, arg0); +} +btEmptyShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btEmptyShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btEmptyShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btEmptyShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btEmptyShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) { + _emscripten_bind_btEmptyShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btEmptyShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btEmptyShape__calculateSerializeBufferSize_p0(this.ptr); +} +btEmptyShape.prototype['getName'] = function() { + return _emscripten_bind_btEmptyShape__getName_p0(this.ptr); +} +btEmptyShape.prototype['isCompound'] = function() { + return _emscripten_bind_btEmptyShape__isCompound_p0(this.ptr); +} +btEmptyShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btEmptyShape__isPolyhedral_p0(this.ptr); +} +btEmptyShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btEmptyShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btEmptyShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btEmptyShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btEmptyShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btEmptyShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btEmptyShape.prototype['isConvex'] = function() { + return _emscripten_bind_btEmptyShape__isConvex_p0(this.ptr); +} +btEmptyShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btEmptyShape__isInfinite_p0(this.ptr); +} +btEmptyShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btEmptyShape__getUserPointer_p0(this.ptr); +} +btEmptyShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btEmptyShape__isNonMoving_p0(this.ptr); +} +btEmptyShape.prototype['getMargin'] = function() { + return _emscripten_bind_btEmptyShape__getMargin_p0(this.ptr); +} +btEmptyShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btEmptyShape__setMargin_p1(this.ptr, arg0); +} +btEmptyShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btEmptyShape__isConvex2d_p0(this.ptr); +} +btEmptyShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btEmptyShape__isSoftBody_p0(this.ptr); +} +function btEmptyShape() { + this.ptr = _emscripten_bind_btEmptyShape__btEmptyShape_p0(); + btEmptyShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btEmptyShape; +} +btEmptyShape.prototype.__cache__ = {}; +Module['btEmptyShape'] = btEmptyShape; +btEmptyShape.prototype['__destroy__'] = function() { + _emscripten_bind_btEmptyShape____destroy___p0(this.ptr); +} +btEmptyShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btEmptyShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btEmptyShape.prototype['isConcave'] = function() { + return _emscripten_bind_btEmptyShape__isConcave_p0(this.ptr); +} +btEmptyShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btEmptyShape__getAngularMotionDisc_p0(this.ptr); +} +btEmptyShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btEmptyShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btEmptyShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btEmptyShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btEmptyShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btEmptyShape__getShapeType_p0(this.ptr); +} +btRigidBody.prototype['updateDeactivation'] = function(arg0) { + _emscripten_bind_btRigidBody__updateDeactivation_p1(this.ptr, arg0); +} +btRigidBody.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btRigidBody__setUserPointer_p1(this.ptr, arg0); +} +btRigidBody.prototype['wantsSleeping'] = function() { + return _emscripten_bind_btRigidBody__wantsSleeping_p0(this.ptr); +} +btRigidBody.prototype['getOrientation'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getOrientation_p0(this.ptr), Module['btQuaternion']); +} +btRigidBody.prototype['setMassProps'] = function(arg0, arg1) { + _emscripten_bind_btRigidBody__setMassProps_p2(this.ptr, arg0, arg1.ptr); +} +btRigidBody.prototype['setMotionState'] = function(arg0) { + _emscripten_bind_btRigidBody__setMotionState_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['clearForces'] = function() { + _emscripten_bind_btRigidBody__clearForces_p0(this.ptr); +} +btRigidBody.prototype['getInterpolationLinearVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getInterpolationLinearVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['set_m_frictionSolverType'] = function(arg0) { + _emscripten_bind_btRigidBody__set_m_frictionSolverType_p1(this.ptr, arg0); +} +btRigidBody.prototype['setCollisionShape'] = function(arg0) { + _emscripten_bind_btRigidBody__setCollisionShape_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getHitFraction'] = function() { + return _emscripten_bind_btRigidBody__getHitFraction_p0(this.ptr); +} +btRigidBody.prototype['getTurnVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getTurnVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['internalGetInvMass'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__internalGetInvMass_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['setIslandTag'] = function(arg0) { + _emscripten_bind_btRigidBody__setIslandTag_p1(this.ptr, arg0); +} +btRigidBody.prototype['getInvMass'] = function() { + return _emscripten_bind_btRigidBody__getInvMass_p0(this.ptr); +} +btRigidBody.prototype['getCollisionFlags'] = function() { + return _emscripten_bind_btRigidBody__getCollisionFlags_p0(this.ptr); +} +btRigidBody.prototype['getTotalForce'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getTotalForce_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['getCenterOfMassPosition'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getCenterOfMassPosition_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['getDeactivationTime'] = function() { + return _emscripten_bind_btRigidBody__getDeactivationTime_p0(this.ptr); +} +btRigidBody.prototype['getRootCollisionShape'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getRootCollisionShape_p0(this.ptr), Module['btCollisionShape']); +} +btRigidBody.prototype['getGravity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getGravity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['setCenterOfMassTransform'] = function(arg0) { + _emscripten_bind_btRigidBody__setCenterOfMassTransform_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['setFlags'] = function(arg0) { + _emscripten_bind_btRigidBody__setFlags_p1(this.ptr, arg0); +} +btRigidBody.prototype['isActive'] = function() { + return _emscripten_bind_btRigidBody__isActive_p0(this.ptr); +} +btRigidBody.prototype['getActivationState'] = function() { + return _emscripten_bind_btRigidBody__getActivationState_p0(this.ptr); +} +btRigidBody.prototype['getTotalTorque'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getTotalTorque_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['getInvInertiaTensorWorld'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getInvInertiaTensorWorld_p0(this.ptr), Module['btMatrix3x3']); +} +btRigidBody.prototype['computeImpulseDenominator'] = function(arg0, arg1) { + return _emscripten_bind_btRigidBody__computeImpulseDenominator_p2(this.ptr, arg0.ptr, arg1.ptr); +} +function btRigidBody(arg0, arg1, arg2, arg3) { + if (arg1 === undefined) + this.ptr = _emscripten_bind_btRigidBody__btRigidBody_p1(arg0.ptr); + else if (arg3 === undefined) + this.ptr = _emscripten_bind_btRigidBody__btRigidBody_p3(arg0, arg1.ptr, arg2.ptr); + else + this.ptr = _emscripten_bind_btRigidBody__btRigidBody_p4(arg0, arg1.ptr, arg2.ptr, arg3.ptr); + btRigidBody.prototype.__cache__[this.ptr] = this; + this.__class__ = btRigidBody; +} +btRigidBody.prototype.__cache__ = {}; +Module['btRigidBody'] = btRigidBody; +btRigidBody.prototype['getLinearSleepingThreshold'] = function() { + return _emscripten_bind_btRigidBody__getLinearSleepingThreshold_p0(this.ptr); +} +btRigidBody.prototype['internalGetExtensionPointer'] = function() { + return _emscripten_bind_btRigidBody__internalGetExtensionPointer_p0(this.ptr); +} +btRigidBody.prototype['applyForce'] = function(arg0, arg1) { + _emscripten_bind_btRigidBody__applyForce_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btRigidBody.prototype['internalGetVelocityInLocalPointObsolete'] = function(arg0, arg1) { + _emscripten_bind_btRigidBody__internalGetVelocityInLocalPointObsolete_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btRigidBody.prototype['mergesSimulationIslands'] = function() { + return _emscripten_bind_btRigidBody__mergesSimulationIslands_p0(this.ptr); +} +btRigidBody.prototype['getFriction'] = function() { + return _emscripten_bind_btRigidBody__getFriction_p0(this.ptr); +} +btRigidBody.prototype['setContactProcessingThreshold'] = function(arg0) { + _emscripten_bind_btRigidBody__setContactProcessingThreshold_p1(this.ptr, arg0); +} +btRigidBody.prototype['internalGetDeltaAngularVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__internalGetDeltaAngularVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['applyCentralForce'] = function(arg0) { + _emscripten_bind_btRigidBody__applyCentralForce_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['applyImpulse'] = function(arg0, arg1) { + _emscripten_bind_btRigidBody__applyImpulse_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btRigidBody.prototype['applyTorque'] = function(arg0) { + _emscripten_bind_btRigidBody__applyTorque_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getIslandTag'] = function() { + return _emscripten_bind_btRigidBody__getIslandTag_p0(this.ptr); +} +btRigidBody.prototype['internalGetAngularFactor'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__internalGetAngularFactor_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['predictIntegratedTransform'] = function(arg0, arg1) { + _emscripten_bind_btRigidBody__predictIntegratedTransform_p2(this.ptr, arg0, arg1.ptr); +} +btRigidBody.prototype['getInterpolationAngularVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getInterpolationAngularVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['forceActivationState'] = function(arg0) { + _emscripten_bind_btRigidBody__forceActivationState_p1(this.ptr, arg0); +} +btRigidBody.prototype['getAngularVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getAngularVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['getLinearVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getLinearVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['checkCollideWithOverride'] = function(arg0) { + return _emscripten_bind_btRigidBody__checkCollideWithOverride_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getBroadphaseHandle'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getBroadphaseHandle_p0(this.ptr), Module['btBroadphaseProxy']); +} +btRigidBody.prototype['getUserPointer'] = function() { + return _emscripten_bind_btRigidBody__getUserPointer_p0(this.ptr); +} +btRigidBody.prototype['setCcdSweptSphereRadius'] = function(arg0) { + _emscripten_bind_btRigidBody__setCcdSweptSphereRadius_p1(this.ptr, arg0); +} +btRigidBody.prototype['setAngularVelocity'] = function(arg0) { + _emscripten_bind_btRigidBody__setAngularVelocity_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['addConstraintRef'] = function(arg0) { + _emscripten_bind_btRigidBody__addConstraintRef_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['integrateVelocities'] = function(arg0) { + _emscripten_bind_btRigidBody__integrateVelocities_p1(this.ptr, arg0); +} +btRigidBody.prototype['isInWorld'] = function() { + return _emscripten_bind_btRigidBody__isInWorld_p0(this.ptr); +} +btRigidBody.prototype['internalSetTemporaryCollisionShape'] = function(arg0) { + _emscripten_bind_btRigidBody__internalSetTemporaryCollisionShape_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['computeAngularImpulseDenominator'] = function(arg0) { + return _emscripten_bind_btRigidBody__computeAngularImpulseDenominator_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getAngularDamping'] = function() { + return _emscripten_bind_btRigidBody__getAngularDamping_p0(this.ptr); +} +btRigidBody.prototype['setNewBroadphaseProxy'] = function(arg0) { + _emscripten_bind_btRigidBody__setNewBroadphaseProxy_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['removeConstraintRef'] = function(arg0) { + _emscripten_bind_btRigidBody__removeConstraintRef_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getAngularFactor'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getAngularFactor_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['isStaticOrKinematicObject'] = function() { + return _emscripten_bind_btRigidBody__isStaticOrKinematicObject_p0(this.ptr); +} +btRigidBody.prototype['setRestitution'] = function(arg0) { + _emscripten_bind_btRigidBody__setRestitution_p1(this.ptr, arg0); +} +btRigidBody.prototype['isKinematicObject'] = function() { + return _emscripten_bind_btRigidBody__isKinematicObject_p0(this.ptr); +} +btRigidBody.prototype['proceedToTransform'] = function(arg0) { + _emscripten_bind_btRigidBody__proceedToTransform_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['internalWritebackVelocity'] = function(arg0) { + if (arg0 === undefined) + _emscripten_bind_btRigidBody__internalWritebackVelocity_p0(this.ptr); + else + _emscripten_bind_btRigidBody__internalWritebackVelocity_p1(this.ptr, arg0); +} +btRigidBody.prototype['setInterpolationLinearVelocity'] = function(arg0) { + _emscripten_bind_btRigidBody__setInterpolationLinearVelocity_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['applyGravity'] = function() { + _emscripten_bind_btRigidBody__applyGravity_p0(this.ptr); +} +btRigidBody.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btRigidBody__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btRigidBody.prototype['internalApplyImpulse'] = function(arg0, arg1, arg2) { + _emscripten_bind_btRigidBody__internalApplyImpulse_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btRigidBody.prototype['internalSetExtensionPointer'] = function(arg0) { + _emscripten_bind_btRigidBody__internalSetExtensionPointer_p1(this.ptr, arg0); +} +btRigidBody.prototype['activate'] = function(arg0) { + if (arg0 === undefined) + _emscripten_bind_btRigidBody__activate_p0(this.ptr); + else + _emscripten_bind_btRigidBody__activate_p1(this.ptr, arg0); +} +btRigidBody.prototype['getMotionState'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getMotionState_p0(this.ptr), Module['btMotionState']); +} +btRigidBody.prototype['setCompanionId'] = function(arg0) { + _emscripten_bind_btRigidBody__setCompanionId_p1(this.ptr, arg0); +} +btRigidBody.prototype['internalApplyPushImpulse'] = function(arg0, arg1, arg2) { + _emscripten_bind_btRigidBody__internalApplyPushImpulse_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btRigidBody.prototype['setCcdMotionThreshold'] = function(arg0) { + _emscripten_bind_btRigidBody__setCcdMotionThreshold_p1(this.ptr, arg0); +} +btRigidBody.prototype['getVelocityInLocalPoint'] = function(arg0) { + return wrapPointer(_emscripten_bind_btRigidBody__getVelocityInLocalPoint_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btRigidBody.prototype['getCcdMotionThreshold'] = function() { + return _emscripten_bind_btRigidBody__getCcdMotionThreshold_p0(this.ptr); +} +btRigidBody.prototype['getLinearFactor'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getLinearFactor_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['getAnisotropicFriction'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getAnisotropicFriction_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['getAngularSleepingThreshold'] = function() { + return _emscripten_bind_btRigidBody__getAngularSleepingThreshold_p0(this.ptr); +} +btRigidBody.prototype['getInterpolationWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getInterpolationWorldTransform_p0(this.ptr), Module['btTransform']); +} +btRigidBody.prototype['getAabb'] = function(arg0, arg1) { + _emscripten_bind_btRigidBody__getAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btRigidBody.prototype['serializeSingleObject'] = function(arg0) { + _emscripten_bind_btRigidBody__serializeSingleObject_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['translate'] = function(arg0) { + _emscripten_bind_btRigidBody__translate_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getWorldTransform_p0(this.ptr), Module['btTransform']); +} +btRigidBody.prototype['getBroadphaseProxy'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getBroadphaseProxy_p0(this.ptr), Module['btBroadphaseProxy']); +} +btRigidBody.prototype['getCollisionShape'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getCollisionShape_p0(this.ptr), Module['btCollisionShape']); +} +btRigidBody.prototype['setAnisotropicFriction'] = function(arg0) { + _emscripten_bind_btRigidBody__setAnisotropicFriction_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['get_m_contactSolverType'] = function() { + return _emscripten_bind_btRigidBody__get_m_contactSolverType_p0(this.ptr); +} +btRigidBody.prototype['internalGetDeltaLinearVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__internalGetDeltaLinearVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['hasContactResponse'] = function() { + return _emscripten_bind_btRigidBody__hasContactResponse_p0(this.ptr); +} +btRigidBody.prototype['upcast'] = function(arg0) { + return wrapPointer(_emscripten_bind_btRigidBody__upcast_p1(arg0.ptr), Module['btRigidBody']); +} +btRigidBody.prototype['getCompanionId'] = function() { + return _emscripten_bind_btRigidBody__getCompanionId_p0(this.ptr); +} +btRigidBody.prototype['saveKinematicState'] = function(arg0) { + _emscripten_bind_btRigidBody__saveKinematicState_p1(this.ptr, arg0); +} +btRigidBody.prototype['setWorldTransform'] = function(arg0) { + _emscripten_bind_btRigidBody__setWorldTransform_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['setActivationState'] = function(arg0) { + _emscripten_bind_btRigidBody__setActivationState_p1(this.ptr, arg0); +} +btRigidBody.prototype['getDeltaAngularVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getDeltaAngularVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['getCcdSweptSphereRadius'] = function() { + return _emscripten_bind_btRigidBody__getCcdSweptSphereRadius_p0(this.ptr); +} +btRigidBody.prototype['getConstraintRef'] = function(arg0) { + return wrapPointer(_emscripten_bind_btRigidBody__getConstraintRef_p1(this.ptr, arg0), Module['btTypedConstraint']); +} +btRigidBody.prototype['setDeactivationTime'] = function(arg0) { + _emscripten_bind_btRigidBody__setDeactivationTime_p1(this.ptr, arg0); +} +btRigidBody.prototype['getCenterOfMassTransform'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getCenterOfMassTransform_p0(this.ptr), Module['btTransform']); +} +btRigidBody.prototype['hasAnisotropicFriction'] = function() { + return _emscripten_bind_btRigidBody__hasAnisotropicFriction_p0(this.ptr); +} +btRigidBody.prototype['setBroadphaseHandle'] = function(arg0) { + _emscripten_bind_btRigidBody__setBroadphaseHandle_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getFlags'] = function() { + return _emscripten_bind_btRigidBody__getFlags_p0(this.ptr); +} +btRigidBody.prototype['setGravity'] = function(arg0) { + _emscripten_bind_btRigidBody__setGravity_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getCcdSquareMotionThreshold'] = function() { + return _emscripten_bind_btRigidBody__getCcdSquareMotionThreshold_p0(this.ptr); +} +btRigidBody.prototype['setAngularFactor'] = function(arg0) { + _emscripten_bind_btRigidBody__setAngularFactor_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getPushVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getPushVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['updateInertiaTensor'] = function() { + _emscripten_bind_btRigidBody__updateInertiaTensor_p0(this.ptr); +} +btRigidBody.prototype['setInterpolationAngularVelocity'] = function(arg0) { + _emscripten_bind_btRigidBody__setInterpolationAngularVelocity_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['setFriction'] = function(arg0) { + _emscripten_bind_btRigidBody__setFriction_p1(this.ptr, arg0); +} +btRigidBody.prototype['setDamping'] = function(arg0, arg1) { + _emscripten_bind_btRigidBody__setDamping_p2(this.ptr, arg0, arg1); +} +btRigidBody.prototype['getInternalType'] = function() { + return _emscripten_bind_btRigidBody__getInternalType_p0(this.ptr); +} +btRigidBody.prototype['set_m_contactSolverType'] = function(arg0) { + _emscripten_bind_btRigidBody__set_m_contactSolverType_p1(this.ptr, arg0); +} +btRigidBody.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btRigidBody__calculateSerializeBufferSize_p0(this.ptr); +} +btRigidBody.prototype['checkCollideWith'] = function(arg0) { + return _emscripten_bind_btRigidBody__checkCollideWith_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getInvInertiaDiagLocal'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getInvInertiaDiagLocal_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['applyTorqueImpulse'] = function(arg0) { + _emscripten_bind_btRigidBody__applyTorqueImpulse_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['internalGetPushVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__internalGetPushVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['setLinearFactor'] = function(arg0) { + _emscripten_bind_btRigidBody__setLinearFactor_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['setLinearVelocity'] = function(arg0) { + _emscripten_bind_btRigidBody__setLinearVelocity_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['isStaticObject'] = function() { + return _emscripten_bind_btRigidBody__isStaticObject_p0(this.ptr); +} +btRigidBody.prototype['applyCentralImpulse'] = function(arg0) { + _emscripten_bind_btRigidBody__applyCentralImpulse_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['setCollisionFlags'] = function(arg0) { + _emscripten_bind_btRigidBody__setCollisionFlags_p1(this.ptr, arg0); +} +btRigidBody.prototype['getDeltaLinearVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__getDeltaLinearVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['setInvInertiaDiagLocal'] = function(arg0) { + _emscripten_bind_btRigidBody__setInvInertiaDiagLocal_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['setSleepingThresholds'] = function(arg0, arg1) { + _emscripten_bind_btRigidBody__setSleepingThresholds_p2(this.ptr, arg0, arg1); +} +btRigidBody.prototype['get_m_frictionSolverType'] = function() { + return _emscripten_bind_btRigidBody__get_m_frictionSolverType_p0(this.ptr); +} +btRigidBody.prototype['__destroy__'] = function() { + _emscripten_bind_btRigidBody____destroy___p0(this.ptr); +} +btRigidBody.prototype['internalGetAngularVelocity'] = function(arg0) { + _emscripten_bind_btRigidBody__internalGetAngularVelocity_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['getNumConstraintRefs'] = function() { + return _emscripten_bind_btRigidBody__getNumConstraintRefs_p0(this.ptr); +} +btRigidBody.prototype['getRestitution'] = function() { + return _emscripten_bind_btRigidBody__getRestitution_p0(this.ptr); +} +btRigidBody.prototype['getContactProcessingThreshold'] = function() { + return _emscripten_bind_btRigidBody__getContactProcessingThreshold_p0(this.ptr); +} +btRigidBody.prototype['internalGetTurnVelocity'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__internalGetTurnVelocity_p0(this.ptr), Module['btVector3']); +} +btRigidBody.prototype['setInterpolationWorldTransform'] = function(arg0) { + _emscripten_bind_btRigidBody__setInterpolationWorldTransform_p1(this.ptr, arg0.ptr); +} +btRigidBody.prototype['setHitFraction'] = function(arg0) { + _emscripten_bind_btRigidBody__setHitFraction_p1(this.ptr, arg0); +} +btRigidBody.prototype['applyDamping'] = function(arg0) { + _emscripten_bind_btRigidBody__applyDamping_p1(this.ptr, arg0); +} +btRigidBody.prototype['getLinearDamping'] = function() { + return _emscripten_bind_btRigidBody__getLinearDamping_p0(this.ptr); +} +btOptimizedBvh.prototype['buildInternal'] = function() { + _emscripten_bind_btOptimizedBvh__buildInternal_p0(this.ptr); +} +btOptimizedBvh.prototype['serialize'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + return _emscripten_bind_btOptimizedBvh__serialize_p2(this.ptr, arg0, arg1.ptr); + else + return _emscripten_bind_btOptimizedBvh__serialize_p3(this.ptr, arg0, arg1, arg2); +} +btOptimizedBvh.prototype['getLeafNodeArray'] = function() { + return _emscripten_bind_btOptimizedBvh__getLeafNodeArray_p0(this.ptr); +} +btOptimizedBvh.prototype['setQuantizationValues'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btOptimizedBvh__setQuantizationValues_p2(this.ptr, arg0.ptr, arg1.ptr); + else + _emscripten_bind_btOptimizedBvh__setQuantizationValues_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btOptimizedBvh.prototype['quantize'] = function(arg0, arg1, arg2) { + _emscripten_bind_btOptimizedBvh__quantize_p3(this.ptr, arg0, arg1.ptr, arg2); +} +btOptimizedBvh.prototype['isQuantized'] = function() { + return _emscripten_bind_btOptimizedBvh__isQuantized_p0(this.ptr); +} +btOptimizedBvh.prototype['getAlignmentSerializationPadding'] = function() { + return _emscripten_bind_btOptimizedBvh__getAlignmentSerializationPadding_p0(); +} +btOptimizedBvh.prototype['updateBvhNodes'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btOptimizedBvh__updateBvhNodes_p4(this.ptr, arg0.ptr, arg1, arg2, arg3); +} +btOptimizedBvh.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btOptimizedBvh__calculateSerializeBufferSize_p0(this.ptr); +} +btOptimizedBvh.prototype['getQuantizedNodeArray'] = function() { + return _emscripten_bind_btOptimizedBvh__getQuantizedNodeArray_p0(this.ptr); +} +btOptimizedBvh.prototype['reportAabbOverlappingNodex'] = function(arg0, arg1, arg2) { + _emscripten_bind_btOptimizedBvh__reportAabbOverlappingNodex_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btOptimizedBvh.prototype['reportRayOverlappingNodex'] = function(arg0, arg1, arg2) { + _emscripten_bind_btOptimizedBvh__reportRayOverlappingNodex_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btOptimizedBvh.prototype['build'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btOptimizedBvh__build_p4(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3.ptr); +} +btOptimizedBvh.prototype['refitPartial'] = function(arg0, arg1, arg2) { + _emscripten_bind_btOptimizedBvh__refitPartial_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btOptimizedBvh.prototype['deSerializeInPlace'] = function(arg0, arg1, arg2) { + return wrapPointer(_emscripten_bind_btOptimizedBvh__deSerializeInPlace_p3(arg0, arg1, arg2), Module['btOptimizedBvh']); +} +btOptimizedBvh.prototype['quantizeWithClamp'] = function(arg0, arg1, arg2) { + _emscripten_bind_btOptimizedBvh__quantizeWithClamp_p3(this.ptr, arg0, arg1.ptr, arg2); +} +btOptimizedBvh.prototype['refit'] = function(arg0, arg1, arg2) { + _emscripten_bind_btOptimizedBvh__refit_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btOptimizedBvh.prototype['deSerializeDouble'] = function(arg0) { + _emscripten_bind_btOptimizedBvh__deSerializeDouble_p1(this.ptr, arg0.ptr); +} +btOptimizedBvh.prototype['calculateSerializeBufferSizeNew'] = function() { + return _emscripten_bind_btOptimizedBvh__calculateSerializeBufferSizeNew_p0(this.ptr); +} +btOptimizedBvh.prototype['__destroy__'] = function() { + _emscripten_bind_btOptimizedBvh____destroy___p0(this.ptr); +} +btOptimizedBvh.prototype['deSerializeFloat'] = function(arg0) { + _emscripten_bind_btOptimizedBvh__deSerializeFloat_p1(this.ptr, arg0.ptr); +} +btOptimizedBvh.prototype['serializeInPlace'] = function(arg0, arg1, arg2) { + return _emscripten_bind_btOptimizedBvh__serializeInPlace_p3(this.ptr, arg0, arg1, arg2); +} +btOptimizedBvh.prototype['getSubtreeInfoArray'] = function() { + return _emscripten_bind_btOptimizedBvh__getSubtreeInfoArray_p0(this.ptr); +} +btOptimizedBvh.prototype['unQuantize'] = function(arg0) { + return wrapPointer(_emscripten_bind_btOptimizedBvh__unQuantize_p1(this.ptr, arg0), Module['btVector3']); +} +btOptimizedBvh.prototype['reportBoxCastOverlappingNodex'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btOptimizedBvh__reportBoxCastOverlappingNodex_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +function btOptimizedBvh() { + this.ptr = _emscripten_bind_btOptimizedBvh__btOptimizedBvh_p0(); + btOptimizedBvh.prototype.__cache__[this.ptr] = this; + this.__class__ = btOptimizedBvh; +} +btOptimizedBvh.prototype.__cache__ = {}; +Module['btOptimizedBvh'] = btOptimizedBvh; +function btTypedConstraint(){ throw "btTypedConstraint is abstract!" } +btTypedConstraint.prototype.__cache__ = {}; +Module['btTypedConstraint'] = btTypedConstraint; +btTypedConstraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btTypedConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btTypedConstraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btTypedConstraint__buildJacobian_p0(this.ptr); +} +btTypedConstraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btTypedConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btTypedConstraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btTypedConstraint__set_m_objectType_p1(this.ptr, arg0); +} +btTypedConstraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btTypedConstraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btTypedConstraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btTypedConstraint__enableFeedback_p1(this.ptr, arg0); +} +btTypedConstraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btTypedConstraint__getUserConstraintId_p0(this.ptr); +} +btTypedConstraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btTypedConstraint__get_m_objectType_p0(this.ptr); +} +btTypedConstraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btTypedConstraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btTypedConstraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btTypedConstraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btTypedConstraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btTypedConstraint__getParam_p2(this.ptr, arg0, arg1); +} +btTypedConstraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btTypedConstraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btTypedConstraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btTypedConstraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btTypedConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btTypedConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +btTypedConstraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btTypedConstraint__calculateSerializeBufferSize_p0(this.ptr); +} +btTypedConstraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btTypedConstraint__isEnabled_p0(this.ptr); +} +btTypedConstraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btTypedConstraint__setUserConstraintId_p1(this.ptr, arg0); +} +btTypedConstraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btTypedConstraint__getConstraintType_p0(this.ptr); +} +btTypedConstraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btTypedConstraint__getDbgDrawSize_p0(this.ptr); +} +btTypedConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btTypedConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btTypedConstraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btTypedConstraint__needsFeedback_p0(this.ptr); +} +btTypedConstraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btTypedConstraint__getObjectType_p0(this.ptr); +} +btTypedConstraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btTypedConstraint__getUserConstraintPtr_p0(this.ptr); +} +btTypedConstraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btTypedConstraint__setEnabled_p1(this.ptr, arg0); +} +btTypedConstraint.prototype['getUid'] = function() { + return _emscripten_bind_btTypedConstraint__getUid_p0(this.ptr); +} +btTypedConstraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btTypedConstraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btTypedConstraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btTypedConstraint__setUserConstraintType_p1(this.ptr, arg0); +} +btTypedConstraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btTypedConstraint__internalGetAppliedImpulse_p0(this.ptr); +} +btTypedConstraint.prototype['__destroy__'] = function() { + _emscripten_bind_btTypedConstraint____destroy___p0(this.ptr); +} +btTypedConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btTypedConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btTypedConstraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btTypedConstraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btTypedConstraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btTypedConstraint__getUserConstraintType_p0(this.ptr); +} +btTypedConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btTypedConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btTypedConstraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btTypedConstraint__getAppliedImpulse_p0(this.ptr); +} +btTypedConstraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btTypedConstraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +function btPolyhedralConvexShape(){ throw "btPolyhedralConvexShape is abstract!" } +btPolyhedralConvexShape.prototype.__cache__ = {}; +Module['btPolyhedralConvexShape'] = btPolyhedralConvexShape; +btPolyhedralConvexShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btPolyhedralConvexShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btPolyhedralConvexShape.prototype['getNumPlanes'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getNumPlanes_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btPolyhedralConvexShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexShape__setUserPointer_p1(this.ptr, arg0); +} +btPolyhedralConvexShape.prototype['isInside'] = function(arg0, arg1) { + return _emscripten_bind_btPolyhedralConvexShape__isInside_p2(this.ptr, arg0.ptr, arg1); +} +btPolyhedralConvexShape.prototype['getNumVertices'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getNumVertices_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btPolyhedralConvexShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__isPolyhedral_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getVertex'] = function(arg0, arg1) { + _emscripten_bind_btPolyhedralConvexShape__getVertex_p2(this.ptr, arg0, arg1.ptr); +} +btPolyhedralConvexShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btPolyhedralConvexShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btPolyhedralConvexShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__calculateSerializeBufferSize_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getNumEdges'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getNumEdges_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getName'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getName_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getEdge'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr); +} +btPolyhedralConvexShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btPolyhedralConvexShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btPolyhedralConvexShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btPolyhedralConvexShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btPolyhedralConvexShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btPolyhedralConvexShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getMarginNV_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__isConvex2d_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btPolyhedralConvexShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btPolyhedralConvexShape.prototype['isConvex'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__isConvex_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__isInfinite_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btPolyhedralConvexShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btPolyhedralConvexShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getUserPointer_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__isNonMoving_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getMargin'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getMargin_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btPolyhedralConvexShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btPolyhedralConvexShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexShape__setMargin_p1(this.ptr, arg0); +} +btPolyhedralConvexShape.prototype['initializePolyhedralFeatures'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__initializePolyhedralFeatures_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btPolyhedralConvexShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__isSoftBody_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getMarginNonVirtual_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btPolyhedralConvexShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btPolyhedralConvexShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btPolyhedralConvexShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btPolyhedralConvexShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btPolyhedralConvexShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getAngularMotionDisc_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btPolyhedralConvexShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btPolyhedralConvexShape.prototype['getPlane'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btPolyhedralConvexShape.prototype['isCompound'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__isCompound_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['getConvexPolyhedron'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getConvexPolyhedron_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btPolyhedralConvexShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btPolyhedralConvexShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__getShapeType_p0(this.ptr); +} +btPolyhedralConvexShape.prototype['isConcave'] = function() { + return _emscripten_bind_btPolyhedralConvexShape__isConcave_p0(this.ptr); +} +function btIDebugDraw(){ throw "btIDebugDraw is abstract!" } +btIDebugDraw.prototype.__cache__ = {}; +Module['btIDebugDraw'] = btIDebugDraw; +btIDebugDraw.prototype['draw3dText'] = function(arg0, arg1) { +var stack = Runtime.stackSave(); +try { + _emscripten_bind_btIDebugDraw__draw3dText_p2(this.ptr, arg0.ptr, ensureString(arg1)); +} finally { Runtime.stackRestore(stack) } +} +btIDebugDraw.prototype['drawTriangle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + if (arg5 === undefined) + _emscripten_bind_btIDebugDraw__drawTriangle_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); + else + _emscripten_bind_btIDebugDraw__drawTriangle_p8(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7); +} +btIDebugDraw.prototype['drawCone'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btIDebugDraw__drawCone_p5(this.ptr, arg0, arg1, arg2, arg3.ptr, arg4.ptr); +} +btIDebugDraw.prototype['drawContactPoint'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btIDebugDraw__drawContactPoint_p5(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4.ptr); +} +btIDebugDraw.prototype['drawArc'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + if (arg9 === undefined) + _emscripten_bind_btIDebugDraw__drawArc_p9(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5, arg6, arg7.ptr, arg8); + else + _emscripten_bind_btIDebugDraw__drawArc_p10(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5, arg6, arg7.ptr, arg8, arg9); +} +btIDebugDraw.prototype['drawLine'] = function(arg0, arg1, arg2, arg3) { + if (arg3 === undefined) + _emscripten_bind_btIDebugDraw__drawLine_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); + else + _emscripten_bind_btIDebugDraw__drawLine_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btIDebugDraw.prototype['reportErrorWarning'] = function(arg0) { +var stack = Runtime.stackSave(); +try { + _emscripten_bind_btIDebugDraw__reportErrorWarning_p1(this.ptr, ensureString(arg0)); +} finally { Runtime.stackRestore(stack) } +} +btIDebugDraw.prototype['getDebugMode'] = function() { + return _emscripten_bind_btIDebugDraw__getDebugMode_p0(this.ptr); +} +btIDebugDraw.prototype['drawCylinder'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btIDebugDraw__drawCylinder_p5(this.ptr, arg0, arg1, arg2, arg3.ptr, arg4.ptr); +} +btIDebugDraw.prototype['drawTransform'] = function(arg0, arg1) { + _emscripten_bind_btIDebugDraw__drawTransform_p2(this.ptr, arg0.ptr, arg1); +} +btIDebugDraw.prototype['drawAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btIDebugDraw__drawAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btIDebugDraw.prototype['drawPlane'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btIDebugDraw__drawPlane_p4(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3.ptr); +} +btIDebugDraw.prototype['drawCapsule'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btIDebugDraw__drawCapsule_p5(this.ptr, arg0, arg1, arg2, arg3.ptr, arg4.ptr); +} +btIDebugDraw.prototype['drawBox'] = function(arg0, arg1, arg2, arg3) { + if (arg3 === undefined) + _emscripten_bind_btIDebugDraw__drawBox_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); + else + _emscripten_bind_btIDebugDraw__drawBox_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btIDebugDraw.prototype['setDebugMode'] = function(arg0) { + _emscripten_bind_btIDebugDraw__setDebugMode_p1(this.ptr, arg0); +} +btIDebugDraw.prototype['drawSpherePatch'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + if (arg9 === undefined) + _emscripten_bind_btIDebugDraw__drawSpherePatch_p9(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5, arg6, arg7, arg8.ptr); + else + _emscripten_bind_btIDebugDraw__drawSpherePatch_p10(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5, arg6, arg7, arg8.ptr, arg9); +} +btIDebugDraw.prototype['drawSphere'] = function(arg0, arg1, arg2) { + _emscripten_bind_btIDebugDraw__drawSphere_p3(this.ptr, arg0, arg1.ptr, arg2.ptr); +} +btDbvtBroadphase.prototype['set_m_pid'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_pid_p1(this.ptr, arg0); +} +function btDbvtBroadphase(arg0) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p0(); + else + this.ptr = _emscripten_bind_btDbvtBroadphase__btDbvtBroadphase_p1(arg0.ptr); + btDbvtBroadphase.prototype.__cache__[this.ptr] = this; + this.__class__ = btDbvtBroadphase; +} +btDbvtBroadphase.prototype.__cache__ = {}; +Module['btDbvtBroadphase'] = btDbvtBroadphase; +btDbvtBroadphase.prototype['get_m_deferedcollide'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_deferedcollide_p0(this.ptr); +} +btDbvtBroadphase.prototype['performDeferredRemoval'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__performDeferredRemoval_p1(this.ptr, arg0.ptr); +} +btDbvtBroadphase.prototype['set_m_releasepaircache'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_releasepaircache_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['get_m_dupdates'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_dupdates_p0(this.ptr); +} +btDbvtBroadphase.prototype['set_m_paircache'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_paircache_p1(this.ptr, arg0.ptr); +} +btDbvtBroadphase.prototype['calculateOverlappingPairs'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__calculateOverlappingPairs_p1(this.ptr, arg0.ptr); +} +btDbvtBroadphase.prototype['get_m_releasepaircache'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_releasepaircache_p0(this.ptr); +} +btDbvtBroadphase.prototype['set_m_fupdates'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_fupdates_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['set_m_deferedcollide'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_deferedcollide_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['set_m_cid'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_cid_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg3 === undefined) + _emscripten_bind_btDbvtBroadphase__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); + else if (arg4 === undefined) + _emscripten_bind_btDbvtBroadphase__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_btDbvtBroadphase__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btDbvtBroadphase.prototype['set_m_newpairs'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_newpairs_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btDbvtBroadphase__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btDbvtBroadphase.prototype['get_m_fixedleft'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_fixedleft_p0(this.ptr); +} +btDbvtBroadphase.prototype['resetPool'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__resetPool_p1(this.ptr, arg0.ptr); +} +btDbvtBroadphase.prototype['set_m_gid'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_gid_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDbvtBroadphase__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btDbvtBroadphase.prototype['get_m_stageCurrent'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_stageCurrent_p0(this.ptr); +} +btDbvtBroadphase.prototype['set_m_updates_call'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_updates_call_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['set_m_needcleanup'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_needcleanup_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['set_m_updates_done'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_updates_done_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['get_m_fupdates'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_fupdates_p0(this.ptr); +} +btDbvtBroadphase.prototype['get_m_pid'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_pid_p0(this.ptr); +} +btDbvtBroadphase.prototype['set_m_dupdates'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_dupdates_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['get_m_cid'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_cid_p0(this.ptr); +} +btDbvtBroadphase.prototype['set_m_updates_ratio'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_updates_ratio_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['setVelocityPrediction'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__setVelocityPrediction_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['benchmark'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__benchmark_p1(arg0.ptr); +} +btDbvtBroadphase.prototype['collide'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__collide_p1(this.ptr, arg0.ptr); +} +btDbvtBroadphase.prototype['get_m_updates_call'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_updates_call_p0(this.ptr); +} +btDbvtBroadphase.prototype['printStats'] = function() { + _emscripten_bind_btDbvtBroadphase__printStats_p0(this.ptr); +} +btDbvtBroadphase.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + return wrapPointer(_emscripten_bind_btDbvtBroadphase__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']); +} +btDbvtBroadphase.prototype['get_m_cupdates'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_cupdates_p0(this.ptr); +} +btDbvtBroadphase.prototype['optimize'] = function() { + _emscripten_bind_btDbvtBroadphase__optimize_p0(this.ptr); +} +btDbvtBroadphase.prototype['set_m_cupdates'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_cupdates_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['get_m_prediction'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_prediction_p0(this.ptr); +} +btDbvtBroadphase.prototype['__destroy__'] = function() { + _emscripten_bind_btDbvtBroadphase____destroy___p0(this.ptr); +} +btDbvtBroadphase.prototype['get_m_gid'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_gid_p0(this.ptr); +} +btDbvtBroadphase.prototype['get_m_needcleanup'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_needcleanup_p0(this.ptr); +} +btDbvtBroadphase.prototype['getOverlappingPairCache'] = function() { + return wrapPointer(_emscripten_bind_btDbvtBroadphase__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btDbvtBroadphase.prototype['get_m_newpairs'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_newpairs_p0(this.ptr); +} +btDbvtBroadphase.prototype['get_m_updates_ratio'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_updates_ratio_p0(this.ptr); +} +btDbvtBroadphase.prototype['setAabbForceUpdate'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btDbvtBroadphase__setAabbForceUpdate_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btDbvtBroadphase.prototype['set_m_prediction'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_prediction_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['aabbTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDbvtBroadphase__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btDbvtBroadphase.prototype['getVelocityPrediction'] = function() { + return _emscripten_bind_btDbvtBroadphase__getVelocityPrediction_p0(this.ptr); +} +btDbvtBroadphase.prototype['get_m_paircache'] = function() { + return wrapPointer(_emscripten_bind_btDbvtBroadphase__get_m_paircache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btDbvtBroadphase.prototype['get_m_updates_done'] = function() { + return _emscripten_bind_btDbvtBroadphase__get_m_updates_done_p0(this.ptr); +} +btDbvtBroadphase.prototype['set_m_fixedleft'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_fixedleft_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['set_m_stageCurrent'] = function(arg0) { + _emscripten_bind_btDbvtBroadphase__set_m_stageCurrent_p1(this.ptr, arg0); +} +btDbvtBroadphase.prototype['getBroadphaseAabb'] = function(arg0, arg1) { + _emscripten_bind_btDbvtBroadphase__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btDbvtBroadphase.prototype['destroyProxy'] = function(arg0, arg1) { + _emscripten_bind_btDbvtBroadphase__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr); +} +function btSimpleBroadphaseProxy(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p0(); + else + this.ptr = _emscripten_bind_btSimpleBroadphaseProxy__btSimpleBroadphaseProxy_p7(arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6); + btSimpleBroadphaseProxy.prototype.__cache__[this.ptr] = this; + this.__class__ = btSimpleBroadphaseProxy; +} +btSimpleBroadphaseProxy.prototype.__cache__ = {}; +Module['btSimpleBroadphaseProxy'] = btSimpleBroadphaseProxy; +btSimpleBroadphaseProxy.prototype['get_m_clientObject'] = function() { + return _emscripten_bind_btSimpleBroadphaseProxy__get_m_clientObject_p0(this.ptr); +} +btSimpleBroadphaseProxy.prototype['isInfinite'] = function(arg0) { + return _emscripten_bind_btSimpleBroadphaseProxy__isInfinite_p1(arg0); +} +btSimpleBroadphaseProxy.prototype['set_m_clientObject'] = function(arg0) { + _emscripten_bind_btSimpleBroadphaseProxy__set_m_clientObject_p1(this.ptr, arg0); +} +btSimpleBroadphaseProxy.prototype['SetNextFree'] = function(arg0) { + _emscripten_bind_btSimpleBroadphaseProxy__SetNextFree_p1(this.ptr, arg0); +} +btSimpleBroadphaseProxy.prototype['get_m_nextFree'] = function() { + return _emscripten_bind_btSimpleBroadphaseProxy__get_m_nextFree_p0(this.ptr); +} +btSimpleBroadphaseProxy.prototype['set_m_multiSapParentProxy'] = function(arg0) { + _emscripten_bind_btSimpleBroadphaseProxy__set_m_multiSapParentProxy_p1(this.ptr, arg0); +} +btSimpleBroadphaseProxy.prototype['isCompound'] = function(arg0) { + return _emscripten_bind_btSimpleBroadphaseProxy__isCompound_p1(arg0); +} +btSimpleBroadphaseProxy.prototype['isPolyhedral'] = function(arg0) { + return _emscripten_bind_btSimpleBroadphaseProxy__isPolyhedral_p1(arg0); +} +btSimpleBroadphaseProxy.prototype['get_m_aabbMin'] = function() { + return wrapPointer(_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMin_p0(this.ptr), Module['btVector3']); +} +btSimpleBroadphaseProxy.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterMask_p0(this.ptr); +} +btSimpleBroadphaseProxy.prototype['set_m_uniqueId'] = function(arg0) { + _emscripten_bind_btSimpleBroadphaseProxy__set_m_uniqueId_p1(this.ptr, arg0); +} +btSimpleBroadphaseProxy.prototype['isConvex'] = function(arg0) { + return _emscripten_bind_btSimpleBroadphaseProxy__isConvex_p1(arg0); +} +btSimpleBroadphaseProxy.prototype['GetNextFree'] = function() { + return _emscripten_bind_btSimpleBroadphaseProxy__GetNextFree_p0(this.ptr); +} +btSimpleBroadphaseProxy.prototype['getUid'] = function() { + return _emscripten_bind_btSimpleBroadphaseProxy__getUid_p0(this.ptr); +} +btSimpleBroadphaseProxy.prototype['get_m_aabbMax'] = function() { + return wrapPointer(_emscripten_bind_btSimpleBroadphaseProxy__get_m_aabbMax_p0(this.ptr), Module['btVector3']); +} +btSimpleBroadphaseProxy.prototype['isNonMoving'] = function(arg0) { + return _emscripten_bind_btSimpleBroadphaseProxy__isNonMoving_p1(arg0); +} +btSimpleBroadphaseProxy.prototype['set_m_aabbMin'] = function(arg0) { + _emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMin_p1(this.ptr, arg0.ptr); +} +btSimpleBroadphaseProxy.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +btSimpleBroadphaseProxy.prototype['isConvex2d'] = function(arg0) { + return _emscripten_bind_btSimpleBroadphaseProxy__isConvex2d_p1(arg0); +} +btSimpleBroadphaseProxy.prototype['isSoftBody'] = function(arg0) { + return _emscripten_bind_btSimpleBroadphaseProxy__isSoftBody_p1(arg0); +} +btSimpleBroadphaseProxy.prototype['set_m_aabbMax'] = function(arg0) { + _emscripten_bind_btSimpleBroadphaseProxy__set_m_aabbMax_p1(this.ptr, arg0.ptr); +} +btSimpleBroadphaseProxy.prototype['__destroy__'] = function() { + _emscripten_bind_btSimpleBroadphaseProxy____destroy___p0(this.ptr); +} +btSimpleBroadphaseProxy.prototype['get_m_uniqueId'] = function() { + return _emscripten_bind_btSimpleBroadphaseProxy__get_m_uniqueId_p0(this.ptr); +} +btSimpleBroadphaseProxy.prototype['set_m_nextFree'] = function(arg0) { + _emscripten_bind_btSimpleBroadphaseProxy__set_m_nextFree_p1(this.ptr, arg0); +} +btSimpleBroadphaseProxy.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_btSimpleBroadphaseProxy__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +btSimpleBroadphaseProxy.prototype['isConcave'] = function(arg0) { + return _emscripten_bind_btSimpleBroadphaseProxy__isConcave_p1(arg0); +} +btSimpleBroadphaseProxy.prototype['get_m_multiSapParentProxy'] = function() { + return _emscripten_bind_btSimpleBroadphaseProxy__get_m_multiSapParentProxy_p0(this.ptr); +} +btSimpleBroadphaseProxy.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_btSimpleBroadphaseProxy__get_m_collisionFilterGroup_p0(this.ptr); +} +function btCollisionDispatcher(arg0) { + this.ptr = _emscripten_bind_btCollisionDispatcher__btCollisionDispatcher_p1(arg0.ptr); + btCollisionDispatcher.prototype.__cache__[this.ptr] = this; + this.__class__ = btCollisionDispatcher; +} +btCollisionDispatcher.prototype.__cache__ = {}; +Module['btCollisionDispatcher'] = btCollisionDispatcher; +btCollisionDispatcher.prototype['freeCollisionAlgorithm'] = function(arg0) { + _emscripten_bind_btCollisionDispatcher__freeCollisionAlgorithm_p1(this.ptr, arg0); +} +btCollisionDispatcher.prototype['setNearCallback'] = function(arg0) { + _emscripten_bind_btCollisionDispatcher__setNearCallback_p1(this.ptr, arg0); +} +btCollisionDispatcher.prototype['getNearCallback'] = function() { + return _emscripten_bind_btCollisionDispatcher__getNearCallback_p0(this.ptr); +} +btCollisionDispatcher.prototype['findAlgorithm'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + return wrapPointer(_emscripten_bind_btCollisionDispatcher__findAlgorithm_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btCollisionAlgorithm']); + else + return wrapPointer(_emscripten_bind_btCollisionDispatcher__findAlgorithm_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr), Module['btCollisionAlgorithm']); +} +btCollisionDispatcher.prototype['needsResponse'] = function(arg0, arg1) { + return _emscripten_bind_btCollisionDispatcher__needsResponse_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btCollisionDispatcher.prototype['releaseManifold'] = function(arg0) { + _emscripten_bind_btCollisionDispatcher__releaseManifold_p1(this.ptr, arg0.ptr); +} +btCollisionDispatcher.prototype['getDispatcherFlags'] = function() { + return _emscripten_bind_btCollisionDispatcher__getDispatcherFlags_p0(this.ptr); +} +btCollisionDispatcher.prototype['setDispatcherFlags'] = function(arg0) { + _emscripten_bind_btCollisionDispatcher__setDispatcherFlags_p1(this.ptr, arg0); +} +btCollisionDispatcher.prototype['getManifoldByIndexInternal'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCollisionDispatcher__getManifoldByIndexInternal_p1(this.ptr, arg0), Module['btPersistentManifold']); +} +btCollisionDispatcher.prototype['registerCollisionCreateFunc'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCollisionDispatcher__registerCollisionCreateFunc_p3(this.ptr, arg0, arg1, arg2.ptr); +} +btCollisionDispatcher.prototype['needsCollision'] = function(arg0, arg1) { + return _emscripten_bind_btCollisionDispatcher__needsCollision_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btCollisionDispatcher.prototype['getNumManifolds'] = function() { + return _emscripten_bind_btCollisionDispatcher__getNumManifolds_p0(this.ptr); +} +btCollisionDispatcher.prototype['setCollisionConfiguration'] = function(arg0) { + _emscripten_bind_btCollisionDispatcher__setCollisionConfiguration_p1(this.ptr, arg0.ptr); +} +btCollisionDispatcher.prototype['clearManifold'] = function(arg0) { + _emscripten_bind_btCollisionDispatcher__clearManifold_p1(this.ptr, arg0.ptr); +} +btCollisionDispatcher.prototype['getNewManifold'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btCollisionDispatcher__getNewManifold_p2(this.ptr, arg0, arg1), Module['btPersistentManifold']); +} +btCollisionDispatcher.prototype['dispatchAllCollisionPairs'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCollisionDispatcher__dispatchAllCollisionPairs_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCollisionDispatcher.prototype['allocateCollisionAlgorithm'] = function(arg0) { + return _emscripten_bind_btCollisionDispatcher__allocateCollisionAlgorithm_p1(this.ptr, arg0); +} +btCollisionDispatcher.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionDispatcher____destroy___p0(this.ptr); +} +btCollisionDispatcher.prototype['getCollisionConfiguration'] = function() { + return wrapPointer(_emscripten_bind_btCollisionDispatcher__getCollisionConfiguration_p0(this.ptr), Module['btCollisionConfiguration']); +} +btCollisionDispatcher.prototype['getInternalManifoldPointer'] = function() { + return wrapPointer(_emscripten_bind_btCollisionDispatcher__getInternalManifoldPointer_p0(this.ptr), Module['btPersistentManifold']); +} +btCollisionDispatcher.prototype['defaultNearCallback'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCollisionDispatcher__defaultNearCallback_p3(arg0.ptr, arg1.ptr, arg2.ptr); +} +btCollisionDispatcher.prototype['getInternalManifoldPool'] = function() { + return _emscripten_bind_btCollisionDispatcher__getInternalManifoldPool_p0(this.ptr); +} +function btAxisSweep3(arg0, arg1, arg2, arg3, arg4) { + if (arg2 === undefined) + this.ptr = _emscripten_bind_btAxisSweep3__btAxisSweep3_p2(arg0.ptr, arg1.ptr); + else if (arg3 === undefined) + this.ptr = _emscripten_bind_btAxisSweep3__btAxisSweep3_p3(arg0.ptr, arg1.ptr, arg2); + else if (arg4 === undefined) + this.ptr = _emscripten_bind_btAxisSweep3__btAxisSweep3_p4(arg0.ptr, arg1.ptr, arg2, arg3.ptr); + else + this.ptr = _emscripten_bind_btAxisSweep3__btAxisSweep3_p5(arg0.ptr, arg1.ptr, arg2, arg3.ptr, arg4); + btAxisSweep3.prototype.__cache__[this.ptr] = this; + this.__class__ = btAxisSweep3; +} +btAxisSweep3.prototype.__cache__ = {}; +Module['btAxisSweep3'] = btAxisSweep3; +btAxisSweep3.prototype['getNumHandles'] = function() { + return _emscripten_bind_btAxisSweep3__getNumHandles_p0(this.ptr); +} +btAxisSweep3.prototype['addHandle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + return _emscripten_bind_btAxisSweep3__addHandle_p7(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5.ptr, arg6); +} +btAxisSweep3.prototype['quantize'] = function(arg0, arg1, arg2) { + _emscripten_bind_btAxisSweep3__quantize_p3(this.ptr, arg0, arg1.ptr, arg2); +} +btAxisSweep3.prototype['removeHandle'] = function(arg0, arg1) { + _emscripten_bind_btAxisSweep3__removeHandle_p2(this.ptr, arg0, arg1.ptr); +} +btAxisSweep3.prototype['getOverlappingPairUserCallback'] = function() { + return wrapPointer(_emscripten_bind_btAxisSweep3__getOverlappingPairUserCallback_p0(this.ptr), Module['btOverlappingPairCallback']); +} +btAxisSweep3.prototype['processAllOverlappingPairs'] = function(arg0) { + _emscripten_bind_btAxisSweep3__processAllOverlappingPairs_p1(this.ptr, arg0.ptr); +} +btAxisSweep3.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg3 === undefined) + _emscripten_bind_btAxisSweep3__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); + else if (arg4 === undefined) + _emscripten_bind_btAxisSweep3__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_btAxisSweep3__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btAxisSweep3.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btAxisSweep3__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btAxisSweep3.prototype['resetPool'] = function(arg0) { + _emscripten_bind_btAxisSweep3__resetPool_p1(this.ptr, arg0.ptr); +} +btAxisSweep3.prototype['testAabbOverlap'] = function(arg0, arg1) { + return _emscripten_bind_btAxisSweep3__testAabbOverlap_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btAxisSweep3.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btAxisSweep3__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btAxisSweep3.prototype['updateHandle'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btAxisSweep3__updateHandle_p4(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3.ptr); +} +btAxisSweep3.prototype['printStats'] = function() { + _emscripten_bind_btAxisSweep3__printStats_p0(this.ptr); +} +btAxisSweep3.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + return wrapPointer(_emscripten_bind_btAxisSweep3__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']); +} +btAxisSweep3.prototype['__destroy__'] = function() { + _emscripten_bind_btAxisSweep3____destroy___p0(this.ptr); +} +btAxisSweep3.prototype['setOverlappingPairUserCallback'] = function(arg0) { + _emscripten_bind_btAxisSweep3__setOverlappingPairUserCallback_p1(this.ptr, arg0.ptr); +} +btAxisSweep3.prototype['calculateOverlappingPairs'] = function(arg0) { + _emscripten_bind_btAxisSweep3__calculateOverlappingPairs_p1(this.ptr, arg0.ptr); +} +btAxisSweep3.prototype['getOverlappingPairCache'] = function() { + return wrapPointer(_emscripten_bind_btAxisSweep3__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btAxisSweep3.prototype['unQuantize'] = function(arg0, arg1, arg2) { + _emscripten_bind_btAxisSweep3__unQuantize_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btAxisSweep3.prototype['aabbTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btAxisSweep3__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btAxisSweep3.prototype['getBroadphaseAabb'] = function(arg0, arg1) { + _emscripten_bind_btAxisSweep3__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btAxisSweep3.prototype['destroyProxy'] = function(arg0, arg1) { + _emscripten_bind_btAxisSweep3__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btAxisSweep3.prototype['getHandle'] = function(arg0) { + return _emscripten_bind_btAxisSweep3__getHandle_p1(this.ptr, arg0); +} +btCollisionAlgorithmConstructionInfo.prototype['set_m_dispatcher1'] = function(arg0) { + _emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_dispatcher1_p1(this.ptr, arg0.ptr); +} +btCollisionAlgorithmConstructionInfo.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionAlgorithmConstructionInfo____destroy___p0(this.ptr); +} +function btCollisionAlgorithmConstructionInfo(arg0, arg1) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p0(); + else + this.ptr = _emscripten_bind_btCollisionAlgorithmConstructionInfo__btCollisionAlgorithmConstructionInfo_p2(arg0.ptr, arg1); + btCollisionAlgorithmConstructionInfo.prototype.__cache__[this.ptr] = this; + this.__class__ = btCollisionAlgorithmConstructionInfo; +} +btCollisionAlgorithmConstructionInfo.prototype.__cache__ = {}; +Module['btCollisionAlgorithmConstructionInfo'] = btCollisionAlgorithmConstructionInfo; +btCollisionAlgorithmConstructionInfo.prototype['get_m_dispatcher1'] = function() { + return wrapPointer(_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_dispatcher1_p0(this.ptr), Module['btDispatcher']); +} +btCollisionAlgorithmConstructionInfo.prototype['set_m_manifold'] = function(arg0) { + _emscripten_bind_btCollisionAlgorithmConstructionInfo__set_m_manifold_p1(this.ptr, arg0.ptr); +} +btCollisionAlgorithmConstructionInfo.prototype['get_m_manifold'] = function() { + return wrapPointer(_emscripten_bind_btCollisionAlgorithmConstructionInfo__get_m_manifold_p0(this.ptr), Module['btPersistentManifold']); +} +btDiscreteDynamicsWorld.prototype['setGravity'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__setGravity_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['addAction'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__addAction_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['getSolverInfo'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getSolverInfo_p0(this.ptr), Module['btContactSolverInfo']); +} +btDiscreteDynamicsWorld.prototype['getDebugDrawer'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']); +} +btDiscreteDynamicsWorld.prototype['applyGravity'] = function() { + _emscripten_bind_btDiscreteDynamicsWorld__applyGravity_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['serialize'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__serialize_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['getDispatcher'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']); +} +btDiscreteDynamicsWorld.prototype['getCollisionWorld'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getCollisionWorld_p0(this.ptr), Module['btCollisionWorld']); +} +btDiscreteDynamicsWorld.prototype['addRigidBody'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btDiscreteDynamicsWorld__addRigidBody_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btDiscreteDynamicsWorld.prototype['clearForces'] = function() { + _emscripten_bind_btDiscreteDynamicsWorld__clearForces_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['removeVehicle'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__removeVehicle_p1(this.ptr, arg0.ptr); +} +function btDiscreteDynamicsWorld(arg0, arg1, arg2, arg3) { + this.ptr = _emscripten_bind_btDiscreteDynamicsWorld__btDiscreteDynamicsWorld_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + btDiscreteDynamicsWorld.prototype.__cache__[this.ptr] = this; + this.__class__ = btDiscreteDynamicsWorld; +} +btDiscreteDynamicsWorld.prototype.__cache__ = {}; +Module['btDiscreteDynamicsWorld'] = btDiscreteDynamicsWorld; +btDiscreteDynamicsWorld.prototype['setBroadphase'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__setBroadphase_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['getSynchronizeAllMotionStates'] = function() { + return _emscripten_bind_btDiscreteDynamicsWorld__getSynchronizeAllMotionStates_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['setNumTasks'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__setNumTasks_p1(this.ptr, arg0); +} +btDiscreteDynamicsWorld.prototype['setSynchronizeAllMotionStates'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__setSynchronizeAllMotionStates_p1(this.ptr, arg0); +} +btDiscreteDynamicsWorld.prototype['getCollisionObjectArray'] = function() { + return _emscripten_bind_btDiscreteDynamicsWorld__getCollisionObjectArray_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDiscreteDynamicsWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btDiscreteDynamicsWorld.prototype['removeConstraint'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__removeConstraint_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['rayTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDiscreteDynamicsWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btDiscreteDynamicsWorld.prototype['getNumConstraints'] = function() { + return _emscripten_bind_btDiscreteDynamicsWorld__getNumConstraints_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p1(this.ptr, arg0.ptr); + else if (arg2 === undefined) + _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1); + else + _emscripten_bind_btDiscreteDynamicsWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btDiscreteDynamicsWorld.prototype['removeRigidBody'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__removeRigidBody_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['contactTest'] = function(arg0, arg1) { + _emscripten_bind_btDiscreteDynamicsWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btDiscreteDynamicsWorld.prototype['performDiscreteCollisionDetection'] = function() { + _emscripten_bind_btDiscreteDynamicsWorld__performDiscreteCollisionDetection_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['setInternalTickCallback'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p1(this.ptr, arg0); + else if (arg2 === undefined) + _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btDiscreteDynamicsWorld__setInternalTickCallback_p3(this.ptr, arg0, arg1, arg2); +} +btDiscreteDynamicsWorld.prototype['getForceUpdateAllAabbs'] = function() { + return _emscripten_bind_btDiscreteDynamicsWorld__getForceUpdateAllAabbs_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['updateAabbs'] = function() { + _emscripten_bind_btDiscreteDynamicsWorld__updateAabbs_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['setDebugDrawer'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__setDebugDrawer_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['debugDrawConstraint'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__debugDrawConstraint_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['debugDrawWorld'] = function() { + _emscripten_bind_btDiscreteDynamicsWorld__debugDrawWorld_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg4 === undefined) + _emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_btDiscreteDynamicsWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); +} +btDiscreteDynamicsWorld.prototype['getNumCollisionObjects'] = function() { + return _emscripten_bind_btDiscreteDynamicsWorld__getNumCollisionObjects_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['setWorldUserInfo'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__setWorldUserInfo_p1(this.ptr, arg0); +} +btDiscreteDynamicsWorld.prototype['addConstraint'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btDiscreteDynamicsWorld__addConstraint_p2(this.ptr, arg0.ptr, arg1); +} +btDiscreteDynamicsWorld.prototype['getWorldUserInfo'] = function() { + return _emscripten_bind_btDiscreteDynamicsWorld__getWorldUserInfo_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDiscreteDynamicsWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btDiscreteDynamicsWorld.prototype['getGravity'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getGravity_p0(this.ptr), Module['btVector3']); +} +btDiscreteDynamicsWorld.prototype['getBroadphase'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']); +} +btDiscreteDynamicsWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btDiscreteDynamicsWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr); +} +btDiscreteDynamicsWorld.prototype['removeAction'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__removeAction_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0); +} +btDiscreteDynamicsWorld.prototype['__destroy__'] = function() { + _emscripten_bind_btDiscreteDynamicsWorld____destroy___p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['removeCharacter'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__removeCharacter_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['getConstraint'] = function(arg0) { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getConstraint_p1(this.ptr, arg0), Module['btTypedConstraint']); +} +btDiscreteDynamicsWorld.prototype['getConstraintSolver'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getConstraintSolver_p0(this.ptr), Module['btConstraintSolver']); +} +btDiscreteDynamicsWorld.prototype['stepSimulation'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + return _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p1(this.ptr, arg0); + else if (arg2 === undefined) + return _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p2(this.ptr, arg0, arg1); + else + return _emscripten_bind_btDiscreteDynamicsWorld__stepSimulation_p3(this.ptr, arg0, arg1, arg2); +} +btDiscreteDynamicsWorld.prototype['addCharacter'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__addCharacter_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['getWorldType'] = function() { + return _emscripten_bind_btDiscreteDynamicsWorld__getWorldType_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['updateSingleAabb'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__updateSingleAabb_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['updateVehicles'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__updateVehicles_p1(this.ptr, arg0); +} +btDiscreteDynamicsWorld.prototype['synchronizeSingleMotionState'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__synchronizeSingleMotionState_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['addVehicle'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__addVehicle_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['getPairCache'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btDiscreteDynamicsWorld.prototype['synchronizeMotionStates'] = function() { + _emscripten_bind_btDiscreteDynamicsWorld__synchronizeMotionStates_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['getSimulationIslandManager'] = function() { + return _emscripten_bind_btDiscreteDynamicsWorld__getSimulationIslandManager_p0(this.ptr); +} +btDiscreteDynamicsWorld.prototype['removeCollisionObject'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__removeCollisionObject_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['setConstraintSolver'] = function(arg0) { + _emscripten_bind_btDiscreteDynamicsWorld__setConstraintSolver_p1(this.ptr, arg0.ptr); +} +btDiscreteDynamicsWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + _emscripten_bind_btDiscreteDynamicsWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7); +} +btDiscreteDynamicsWorld.prototype['getDispatchInfo'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteDynamicsWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']); +} +function btTriangleCallback(){ throw "btTriangleCallback is abstract!" } +btTriangleCallback.prototype.__cache__ = {}; +Module['btTriangleCallback'] = btTriangleCallback; +btTriangleCallback.prototype['processTriangle'] = function(arg0, arg1, arg2) { + _emscripten_bind_btTriangleCallback__processTriangle_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btConeTwistConstraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btConeTwistConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btConeTwistConstraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btConeTwistConstraint__buildJacobian_p0(this.ptr); +} +btConeTwistConstraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btConeTwistConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btConeTwistConstraint.prototype['isPastSwingLimit'] = function() { + return _emscripten_bind_btConeTwistConstraint__isPastSwingLimit_p0(this.ptr); +} +btConeTwistConstraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__set_m_objectType_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setEnabled_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['getFrameOffsetA'] = function() { + return wrapPointer(_emscripten_bind_btConeTwistConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']); +} +btConeTwistConstraint.prototype['getFrameOffsetB'] = function() { + return wrapPointer(_emscripten_bind_btConeTwistConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']); +} +btConeTwistConstraint.prototype['getSwingSpan2'] = function() { + return _emscripten_bind_btConeTwistConstraint__getSwingSpan2_p0(this.ptr); +} +btConeTwistConstraint.prototype['getSwingSpan1'] = function() { + return _emscripten_bind_btConeTwistConstraint__getSwingSpan1_p0(this.ptr); +} +btConeTwistConstraint.prototype['calcAngleInfo2'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btConeTwistConstraint__calcAngleInfo2_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btConeTwistConstraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btConeTwistConstraint__get_m_objectType_p0(this.ptr); +} +btConeTwistConstraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btConeTwistConstraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btConeTwistConstraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btConeTwistConstraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btConeTwistConstraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btConeTwistConstraint__getParam_p2(this.ptr, arg0, arg1); +} +btConeTwistConstraint.prototype['setDamping'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setDamping_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btConeTwistConstraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btConeTwistConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +function btConeTwistConstraint(arg0, arg1, arg2, arg3) { + if (arg2 === undefined) + this.ptr = _emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p2(arg0.ptr, arg1.ptr); + else + this.ptr = _emscripten_bind_btConeTwistConstraint__btConeTwistConstraint_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + btConeTwistConstraint.prototype.__cache__[this.ptr] = this; + this.__class__ = btConeTwistConstraint; +} +btConeTwistConstraint.prototype.__cache__ = {}; +Module['btConeTwistConstraint'] = btConeTwistConstraint; +btConeTwistConstraint.prototype['setMotorTarget'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setMotorTarget_p1(this.ptr, arg0.ptr); +} +btConeTwistConstraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConeTwistConstraint__calculateSerializeBufferSize_p0(this.ptr); +} +btConeTwistConstraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btConeTwistConstraint__isEnabled_p0(this.ptr); +} +btConeTwistConstraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setUserConstraintId_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btConeTwistConstraint__getConstraintType_p0(this.ptr); +} +btConeTwistConstraint.prototype['getTwistAngle'] = function() { + return _emscripten_bind_btConeTwistConstraint__getTwistAngle_p0(this.ptr); +} +btConeTwistConstraint.prototype['setMaxMotorImpulseNormalized'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setMaxMotorImpulseNormalized_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__enableFeedback_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btConeTwistConstraint__needsFeedback_p0(this.ptr); +} +btConeTwistConstraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btConeTwistConstraint__getObjectType_p0(this.ptr); +} +btConeTwistConstraint.prototype['getSolveTwistLimit'] = function() { + return _emscripten_bind_btConeTwistConstraint__getSolveTwistLimit_p0(this.ptr); +} +btConeTwistConstraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btConeTwistConstraint__getUserConstraintPtr_p0(this.ptr); +} +btConeTwistConstraint.prototype['enableMotor'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__enableMotor_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['getBFrame'] = function() { + return wrapPointer(_emscripten_bind_btConeTwistConstraint__getBFrame_p0(this.ptr), Module['btTransform']); +} +btConeTwistConstraint.prototype['getInfo1NonVirtual'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr); +} +btConeTwistConstraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConeTwistConstraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConeTwistConstraint.prototype['getUid'] = function() { + return _emscripten_bind_btConeTwistConstraint__getUid_p0(this.ptr); +} +btConeTwistConstraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btConeTwistConstraint__getDbgDrawSize_p0(this.ptr); +} +btConeTwistConstraint.prototype['__destroy__'] = function() { + _emscripten_bind_btConeTwistConstraint____destroy___p0(this.ptr); +} +btConeTwistConstraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['getFixThresh'] = function() { + return _emscripten_bind_btConeTwistConstraint__getFixThresh_p0(this.ptr); +} +btConeTwistConstraint.prototype['getSolveSwingLimit'] = function() { + return _emscripten_bind_btConeTwistConstraint__getSolveSwingLimit_p0(this.ptr); +} +btConeTwistConstraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setUserConstraintType_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btConeTwistConstraint__internalGetAppliedImpulse_p0(this.ptr); +} +btConeTwistConstraint.prototype['setAngularOnly'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setAngularOnly_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['setFrames'] = function(arg0, arg1) { + _emscripten_bind_btConeTwistConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btConeTwistConstraint.prototype['setLimit'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + if (arg2 === undefined) + _emscripten_bind_btConeTwistConstraint__setLimit_p2(this.ptr, arg0, arg1); + else if (arg3 === undefined) + _emscripten_bind_btConeTwistConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2); + else if (arg4 === undefined) + _emscripten_bind_btConeTwistConstraint__setLimit_p4(this.ptr, arg0, arg1, arg2, arg3); + else if (arg5 === undefined) + _emscripten_bind_btConeTwistConstraint__setLimit_p5(this.ptr, arg0, arg1, arg2, arg3, arg4); + else + _emscripten_bind_btConeTwistConstraint__setLimit_p6(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5); +} +btConeTwistConstraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btConeTwistConstraint__getAppliedImpulse_p0(this.ptr); +} +btConeTwistConstraint.prototype['getTwistLimitSign'] = function() { + return _emscripten_bind_btConeTwistConstraint__getTwistLimitSign_p0(this.ptr); +} +btConeTwistConstraint.prototype['setMaxMotorImpulse'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setMaxMotorImpulse_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btConeTwistConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btConeTwistConstraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btConeTwistConstraint__getUserConstraintId_p0(this.ptr); +} +btConeTwistConstraint.prototype['updateRHS'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__updateRHS_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btConeTwistConstraint__getInfo2NonVirtual_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btConeTwistConstraint.prototype['setFixThresh'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setFixThresh_p1(this.ptr, arg0); +} +btConeTwistConstraint.prototype['setMotorTargetInConstraintSpace'] = function(arg0) { + _emscripten_bind_btConeTwistConstraint__setMotorTargetInConstraintSpace_p1(this.ptr, arg0.ptr); +} +btConeTwistConstraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btConeTwistConstraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btConeTwistConstraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btConeTwistConstraint__getUserConstraintType_p0(this.ptr); +} +btConeTwistConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeTwistConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConeTwistConstraint.prototype['GetPointForAngle'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btConeTwistConstraint__GetPointForAngle_p2(this.ptr, arg0, arg1), Module['btVector3']); +} +btConeTwistConstraint.prototype['calcAngleInfo'] = function() { + _emscripten_bind_btConeTwistConstraint__calcAngleInfo_p0(this.ptr); +} +btConeTwistConstraint.prototype['getTwistSpan'] = function() { + return _emscripten_bind_btConeTwistConstraint__getTwistSpan_p0(this.ptr); +} +btConeTwistConstraint.prototype['getAFrame'] = function() { + return wrapPointer(_emscripten_bind_btConeTwistConstraint__getAFrame_p0(this.ptr), Module['btTransform']); +} +btHingeConstraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btHingeConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btHingeConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btHingeConstraint__getInfo2NonVirtual_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btHingeConstraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btHingeConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btHingeConstraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btHingeConstraint__set_m_objectType_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['getMotorTargetVelosity'] = function() { + return _emscripten_bind_btHingeConstraint__getMotorTargetVelosity_p0(this.ptr); +} +btHingeConstraint.prototype['getFrameOffsetA'] = function() { + return wrapPointer(_emscripten_bind_btHingeConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']); +} +btHingeConstraint.prototype['getFrameOffsetB'] = function() { + return wrapPointer(_emscripten_bind_btHingeConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']); +} +btHingeConstraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btHingeConstraint__buildJacobian_p0(this.ptr); +} +btHingeConstraint.prototype['setMaxMotorImpulse'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setMaxMotorImpulse_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btHingeConstraint__get_m_objectType_p0(this.ptr); +} +btHingeConstraint.prototype['getHingeAngle'] = function(arg0, arg1) { + if (arg0 === undefined) + return _emscripten_bind_btHingeConstraint__getHingeAngle_p0(this.ptr); + else + return _emscripten_bind_btHingeConstraint__getHingeAngle_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btHingeConstraint.prototype['testLimit'] = function(arg0, arg1) { + _emscripten_bind_btHingeConstraint__testLimit_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btHingeConstraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btHingeConstraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btHingeConstraint.prototype['getInfo2Internal'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btHingeConstraint__getInfo2Internal_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btHingeConstraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btHingeConstraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btHingeConstraint.prototype['getUpperLimit'] = function() { + return _emscripten_bind_btHingeConstraint__getUpperLimit_p0(this.ptr); +} +btHingeConstraint.prototype['enableAngularMotor'] = function(arg0, arg1, arg2) { + _emscripten_bind_btHingeConstraint__enableAngularMotor_p3(this.ptr, arg0, arg1, arg2); +} +btHingeConstraint.prototype['getLimitSign'] = function() { + return _emscripten_bind_btHingeConstraint__getLimitSign_p0(this.ptr); +} +function btHingeConstraint(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + if (arg3 === undefined) + this.ptr = _emscripten_bind_btHingeConstraint__btHingeConstraint_p3(arg0.ptr, arg1.ptr, arg2.ptr); + else if (arg4 === undefined) + this.ptr = _emscripten_bind_btHingeConstraint__btHingeConstraint_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3); + else if (arg6 === undefined) + this.ptr = _emscripten_bind_btHingeConstraint__btHingeConstraint_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr); + else + this.ptr = _emscripten_bind_btHingeConstraint__btHingeConstraint_p7(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6); + btHingeConstraint.prototype.__cache__[this.ptr] = this; + this.__class__ = btHingeConstraint; +} +btHingeConstraint.prototype.__cache__ = {}; +Module['btHingeConstraint'] = btHingeConstraint; +btHingeConstraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btHingeConstraint__isEnabled_p0(this.ptr); +} +btHingeConstraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setUserConstraintId_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btHingeConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btHingeConstraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setEnabled_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btHingeConstraint__getConstraintType_p0(this.ptr); +} +btHingeConstraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btHingeConstraint__enableFeedback_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['getMaxMotorImpulse'] = function() { + return _emscripten_bind_btHingeConstraint__getMaxMotorImpulse_p0(this.ptr); +} +btHingeConstraint.prototype['getLowerLimit'] = function() { + return _emscripten_bind_btHingeConstraint__getLowerLimit_p0(this.ptr); +} +btHingeConstraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btHingeConstraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btHingeConstraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btHingeConstraint.prototype['setUseFrameOffset'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setUseFrameOffset_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['getEnableAngularMotor'] = function() { + return _emscripten_bind_btHingeConstraint__getEnableAngularMotor_p0(this.ptr); +} +btHingeConstraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btHingeConstraint__needsFeedback_p0(this.ptr); +} +btHingeConstraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btHingeConstraint__getObjectType_p0(this.ptr); +} +btHingeConstraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btHingeConstraint__getUserConstraintPtr_p0(this.ptr); +} +btHingeConstraint.prototype['enableMotor'] = function(arg0) { + _emscripten_bind_btHingeConstraint__enableMotor_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['getBFrame'] = function() { + return wrapPointer(_emscripten_bind_btHingeConstraint__getBFrame_p0(this.ptr), Module['btTransform']); +} +btHingeConstraint.prototype['getInfo1NonVirtual'] = function(arg0) { + _emscripten_bind_btHingeConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr); +} +btHingeConstraint.prototype['getInfo2InternalUsingFrameOffset'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btHingeConstraint__getInfo2InternalUsingFrameOffset_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btHingeConstraint.prototype['getUid'] = function() { + return _emscripten_bind_btHingeConstraint__getUid_p0(this.ptr); +} +btHingeConstraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btHingeConstraint__getDbgDrawSize_p0(this.ptr); +} +btHingeConstraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btHingeConstraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btHingeConstraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['getUseFrameOffset'] = function() { + return _emscripten_bind_btHingeConstraint__getUseFrameOffset_p0(this.ptr); +} +btHingeConstraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setUserConstraintType_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btHingeConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btHingeConstraint__calculateSerializeBufferSize_p0(this.ptr); +} +btHingeConstraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btHingeConstraint__internalGetAppliedImpulse_p0(this.ptr); +} +btHingeConstraint.prototype['setAngularOnly'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setAngularOnly_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btHingeConstraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btHingeConstraint__getParam_p2(this.ptr, arg0, arg1); +} +btHingeConstraint.prototype['setLimit'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg2 === undefined) + _emscripten_bind_btHingeConstraint__setLimit_p2(this.ptr, arg0, arg1); + else if (arg3 === undefined) + _emscripten_bind_btHingeConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2); + else if (arg4 === undefined) + _emscripten_bind_btHingeConstraint__setLimit_p4(this.ptr, arg0, arg1, arg2, arg3); + else + _emscripten_bind_btHingeConstraint__setLimit_p5(this.ptr, arg0, arg1, arg2, arg3, arg4); +} +btHingeConstraint.prototype['getSolveLimit'] = function() { + return _emscripten_bind_btHingeConstraint__getSolveLimit_p0(this.ptr); +} +btHingeConstraint.prototype['__destroy__'] = function() { + _emscripten_bind_btHingeConstraint____destroy___p0(this.ptr); +} +btHingeConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btHingeConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btHingeConstraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btHingeConstraint__getUserConstraintId_p0(this.ptr); +} +btHingeConstraint.prototype['updateRHS'] = function(arg0) { + _emscripten_bind_btHingeConstraint__updateRHS_p1(this.ptr, arg0); +} +btHingeConstraint.prototype['setMotorTarget'] = function(arg0, arg1) { + _emscripten_bind_btHingeConstraint__setMotorTarget_p2(this.ptr, arg0.ptr, arg1); +} +btHingeConstraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btHingeConstraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btHingeConstraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btHingeConstraint__getUserConstraintType_p0(this.ptr); +} +btHingeConstraint.prototype['getAngularOnly'] = function() { + return _emscripten_bind_btHingeConstraint__getAngularOnly_p0(this.ptr); +} +btHingeConstraint.prototype['setFrames'] = function(arg0, arg1) { + _emscripten_bind_btHingeConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btHingeConstraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btHingeConstraint__getAppliedImpulse_p0(this.ptr); +} +btHingeConstraint.prototype['setAxis'] = function(arg0) { + _emscripten_bind_btHingeConstraint__setAxis_p1(this.ptr, arg0.ptr); +} +btHingeConstraint.prototype['getAFrame'] = function() { + return wrapPointer(_emscripten_bind_btHingeConstraint__getAFrame_p0(this.ptr), Module['btTransform']); +} +btRotationalLimitMotor.prototype['set_m_loLimit'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_loLimit_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['set_m_currentLimitError'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_currentLimitError_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['set_m_maxLimitForce'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_maxLimitForce_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['needApplyTorques'] = function() { + return _emscripten_bind_btRotationalLimitMotor__needApplyTorques_p0(this.ptr); +} +btRotationalLimitMotor.prototype['set_m_currentPosition'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_currentPosition_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['solveAngularLimits'] = function(arg0, arg1, arg2, arg3, arg4) { + return _emscripten_bind_btRotationalLimitMotor__solveAngularLimits_p5(this.ptr, arg0, arg1.ptr, arg2, arg3.ptr, arg4.ptr); +} +btRotationalLimitMotor.prototype['get_m_stopERP'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_stopERP_p0(this.ptr); +} +btRotationalLimitMotor.prototype['set_m_stopERP'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_stopERP_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['set_m_stopCFM'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_stopCFM_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['get_m_currentPosition'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_currentPosition_p0(this.ptr); +} +btRotationalLimitMotor.prototype['get_m_stopCFM'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_stopCFM_p0(this.ptr); +} +function btRotationalLimitMotor(arg0) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p0(); + else + this.ptr = _emscripten_bind_btRotationalLimitMotor__btRotationalLimitMotor_p1(arg0.ptr); + btRotationalLimitMotor.prototype.__cache__[this.ptr] = this; + this.__class__ = btRotationalLimitMotor; +} +btRotationalLimitMotor.prototype.__cache__ = {}; +Module['btRotationalLimitMotor'] = btRotationalLimitMotor; +btRotationalLimitMotor.prototype['get_m_enableMotor'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_enableMotor_p0(this.ptr); +} +btRotationalLimitMotor.prototype['set_m_enableMotor'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_enableMotor_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['testLimitValue'] = function(arg0) { + return _emscripten_bind_btRotationalLimitMotor__testLimitValue_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['get_m_currentLimitError'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_currentLimitError_p0(this.ptr); +} +btRotationalLimitMotor.prototype['set_m_limitSoftness'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_limitSoftness_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['get_m_loLimit'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_loLimit_p0(this.ptr); +} +btRotationalLimitMotor.prototype['get_m_currentLimit'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_currentLimit_p0(this.ptr); +} +btRotationalLimitMotor.prototype['set_m_hiLimit'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_hiLimit_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['get_m_bounce'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_bounce_p0(this.ptr); +} +btRotationalLimitMotor.prototype['get_m_targetVelocity'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_targetVelocity_p0(this.ptr); +} +btRotationalLimitMotor.prototype['get_m_accumulatedImpulse'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_accumulatedImpulse_p0(this.ptr); +} +btRotationalLimitMotor.prototype['set_m_damping'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_damping_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['set_m_maxMotorForce'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_maxMotorForce_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['set_m_normalCFM'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_normalCFM_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['__destroy__'] = function() { + _emscripten_bind_btRotationalLimitMotor____destroy___p0(this.ptr); +} +btRotationalLimitMotor.prototype['get_m_maxLimitForce'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_maxLimitForce_p0(this.ptr); +} +btRotationalLimitMotor.prototype['get_m_damping'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_damping_p0(this.ptr); +} +btRotationalLimitMotor.prototype['get_m_normalCFM'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_normalCFM_p0(this.ptr); +} +btRotationalLimitMotor.prototype['get_m_hiLimit'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_hiLimit_p0(this.ptr); +} +btRotationalLimitMotor.prototype['set_m_accumulatedImpulse'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_accumulatedImpulse_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['set_m_targetVelocity'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_targetVelocity_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['isLimited'] = function() { + return _emscripten_bind_btRotationalLimitMotor__isLimited_p0(this.ptr); +} +btRotationalLimitMotor.prototype['get_m_maxMotorForce'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_maxMotorForce_p0(this.ptr); +} +btRotationalLimitMotor.prototype['set_m_currentLimit'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_currentLimit_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['set_m_bounce'] = function(arg0) { + _emscripten_bind_btRotationalLimitMotor__set_m_bounce_p1(this.ptr, arg0); +} +btRotationalLimitMotor.prototype['get_m_limitSoftness'] = function() { + return _emscripten_bind_btRotationalLimitMotor__get_m_limitSoftness_p0(this.ptr); +} +function btVehicleRaycaster(){ throw "btVehicleRaycaster is abstract!" } +btVehicleRaycaster.prototype.__cache__ = {}; +Module['btVehicleRaycaster'] = btVehicleRaycaster; +btVehicleRaycaster.prototype['castRay'] = function(arg0, arg1, arg2) { + return _emscripten_bind_btVehicleRaycaster__castRay_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShapeZ.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btConeShapeZ__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btConeShapeZ.prototype['isCompound'] = function() { + return _emscripten_bind_btConeShapeZ__isCompound_p0(this.ptr); +} +btConeShapeZ.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShapeZ__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShapeZ.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btConeShapeZ__setUserPointer_p1(this.ptr, arg0); +} +btConeShapeZ.prototype['getMarginNV'] = function() { + return _emscripten_bind_btConeShapeZ__getMarginNV_p0(this.ptr); +} +btConeShapeZ.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConeShapeZ__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConeShapeZ.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btConeShapeZ__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btConeShapeZ.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btConeShapeZ__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btConeShapeZ.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btConeShapeZ__isPolyhedral_p0(this.ptr); +} +btConeShapeZ.prototype['getRadius'] = function() { + return _emscripten_bind_btConeShapeZ__getRadius_p0(this.ptr); +} +btConeShapeZ.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShapeZ__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShapeZ.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConeShapeZ__calculateSerializeBufferSize_p0(this.ptr); +} +function btConeShapeZ(arg0, arg1) { + this.ptr = _emscripten_bind_btConeShapeZ__btConeShapeZ_p2(arg0, arg1); + btConeShapeZ.prototype.__cache__[this.ptr] = this; + this.__class__ = btConeShapeZ; +} +btConeShapeZ.prototype.__cache__ = {}; +Module['btConeShapeZ'] = btConeShapeZ; +btConeShapeZ.prototype['getName'] = function() { + return _emscripten_bind_btConeShapeZ__getName_p0(this.ptr); +} +btConeShapeZ.prototype['getHeight'] = function() { + return _emscripten_bind_btConeShapeZ__getHeight_p0(this.ptr); +} +btConeShapeZ.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btConeShapeZ__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btConeShapeZ.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShapeZ.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShapeZ__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShapeZ.prototype['setConeUpIndex'] = function(arg0) { + _emscripten_bind_btConeShapeZ__setConeUpIndex_p1(this.ptr, arg0); +} +btConeShapeZ.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btConeShapeZ__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btConeShapeZ.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShapeZ__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShapeZ.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShapeZ__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShapeZ.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btConeShapeZ__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btConeShapeZ.prototype['isConvex'] = function() { + return _emscripten_bind_btConeShapeZ__isConvex_p0(this.ptr); +} +btConeShapeZ.prototype['isInfinite'] = function() { + return _emscripten_bind_btConeShapeZ__isInfinite_p0(this.ptr); +} +btConeShapeZ.prototype['getUserPointer'] = function() { + return _emscripten_bind_btConeShapeZ__getUserPointer_p0(this.ptr); +} +btConeShapeZ.prototype['isNonMoving'] = function() { + return _emscripten_bind_btConeShapeZ__isNonMoving_p0(this.ptr); +} +btConeShapeZ.prototype['getMargin'] = function() { + return _emscripten_bind_btConeShapeZ__getMargin_p0(this.ptr); +} +btConeShapeZ.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btConeShapeZ__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btConeShapeZ.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btConeShapeZ__setMargin_p1(this.ptr, arg0); +} +btConeShapeZ.prototype['isConvex2d'] = function() { + return _emscripten_bind_btConeShapeZ__isConvex2d_p0(this.ptr); +} +btConeShapeZ.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btConeShapeZ__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btConeShapeZ.prototype['isSoftBody'] = function() { + return _emscripten_bind_btConeShapeZ__isSoftBody_p0(this.ptr); +} +btConeShapeZ.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btConeShapeZ__getMarginNonVirtual_p0(this.ptr); +} +btConeShapeZ.prototype['__destroy__'] = function() { + _emscripten_bind_btConeShapeZ____destroy___p0(this.ptr); +} +btConeShapeZ.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConeShapeZ.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btConeShapeZ__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btConeShapeZ.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btConeShapeZ__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btConeShapeZ.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btConeShapeZ__getAngularMotionDisc_p0(this.ptr); +} +btConeShapeZ.prototype['getConeUpIndex'] = function() { + return _emscripten_bind_btConeShapeZ__getConeUpIndex_p0(this.ptr); +} +btConeShapeZ.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btConeShapeZ__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btConeShapeZ.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShapeZ__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShapeZ.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btConeShapeZ__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btConeShapeZ.prototype['isConcave'] = function() { + return _emscripten_bind_btConeShapeZ__isConcave_p0(this.ptr); +} +btConeShapeZ.prototype['getShapeType'] = function() { + return _emscripten_bind_btConeShapeZ__getShapeType_p0(this.ptr); +} +btConeShapeX.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btConeShapeX__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btConeShapeX.prototype['isCompound'] = function() { + return _emscripten_bind_btConeShapeX__isCompound_p0(this.ptr); +} +btConeShapeX.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShapeX__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShapeX.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btConeShapeX__setUserPointer_p1(this.ptr, arg0); +} +btConeShapeX.prototype['getMarginNV'] = function() { + return _emscripten_bind_btConeShapeX__getMarginNV_p0(this.ptr); +} +btConeShapeX.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConeShapeX__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConeShapeX.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btConeShapeX__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btConeShapeX.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btConeShapeX__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btConeShapeX.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btConeShapeX__isPolyhedral_p0(this.ptr); +} +btConeShapeX.prototype['getRadius'] = function() { + return _emscripten_bind_btConeShapeX__getRadius_p0(this.ptr); +} +btConeShapeX.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShapeX__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShapeX.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConeShapeX__calculateSerializeBufferSize_p0(this.ptr); +} +function btConeShapeX(arg0, arg1) { + this.ptr = _emscripten_bind_btConeShapeX__btConeShapeX_p2(arg0, arg1); + btConeShapeX.prototype.__cache__[this.ptr] = this; + this.__class__ = btConeShapeX; +} +btConeShapeX.prototype.__cache__ = {}; +Module['btConeShapeX'] = btConeShapeX; +btConeShapeX.prototype['getHeight'] = function() { + return _emscripten_bind_btConeShapeX__getHeight_p0(this.ptr); +} +btConeShapeX.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btConeShapeX__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btConeShapeX.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShapeX.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShapeX__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShapeX.prototype['setConeUpIndex'] = function(arg0) { + _emscripten_bind_btConeShapeX__setConeUpIndex_p1(this.ptr, arg0); +} +btConeShapeX.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btConeShapeX__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btConeShapeX.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShapeX__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShapeX.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShapeX__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShapeX.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btConeShapeX__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btConeShapeX.prototype['isConvex'] = function() { + return _emscripten_bind_btConeShapeX__isConvex_p0(this.ptr); +} +btConeShapeX.prototype['isInfinite'] = function() { + return _emscripten_bind_btConeShapeX__isInfinite_p0(this.ptr); +} +btConeShapeX.prototype['isConcave'] = function() { + return _emscripten_bind_btConeShapeX__isConcave_p0(this.ptr); +} +btConeShapeX.prototype['getUserPointer'] = function() { + return _emscripten_bind_btConeShapeX__getUserPointer_p0(this.ptr); +} +btConeShapeX.prototype['isNonMoving'] = function() { + return _emscripten_bind_btConeShapeX__isNonMoving_p0(this.ptr); +} +btConeShapeX.prototype['getMargin'] = function() { + return _emscripten_bind_btConeShapeX__getMargin_p0(this.ptr); +} +btConeShapeX.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btConeShapeX__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btConeShapeX.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btConeShapeX__setMargin_p1(this.ptr, arg0); +} +btConeShapeX.prototype['isConvex2d'] = function() { + return _emscripten_bind_btConeShapeX__isConvex2d_p0(this.ptr); +} +btConeShapeX.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btConeShapeX__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btConeShapeX.prototype['isSoftBody'] = function() { + return _emscripten_bind_btConeShapeX__isSoftBody_p0(this.ptr); +} +btConeShapeX.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btConeShapeX__getMarginNonVirtual_p0(this.ptr); +} +btConeShapeX.prototype['__destroy__'] = function() { + _emscripten_bind_btConeShapeX____destroy___p0(this.ptr); +} +btConeShapeX.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConeShapeX.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btConeShapeX__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btConeShapeX.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btConeShapeX__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btConeShapeX.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btConeShapeX__getAngularMotionDisc_p0(this.ptr); +} +btConeShapeX.prototype['getConeUpIndex'] = function() { + return _emscripten_bind_btConeShapeX__getConeUpIndex_p0(this.ptr); +} +btConeShapeX.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btConeShapeX__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btConeShapeX.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShapeX__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShapeX.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btConeShapeX__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btConeShapeX.prototype['getName'] = function() { + return _emscripten_bind_btConeShapeX__getName_p0(this.ptr); +} +btConeShapeX.prototype['getShapeType'] = function() { + return _emscripten_bind_btConeShapeX__getShapeType_p0(this.ptr); +} +btTriangleMesh.prototype['get_m_weldingThreshold'] = function() { + return _emscripten_bind_btTriangleMesh__get_m_weldingThreshold_p0(this.ptr); +} +btTriangleMesh.prototype['addIndex'] = function(arg0) { + _emscripten_bind_btTriangleMesh__addIndex_p1(this.ptr, arg0); +} +btTriangleMesh.prototype['preallocateVertices'] = function(arg0) { + _emscripten_bind_btTriangleMesh__preallocateVertices_p1(this.ptr, arg0); +} +btTriangleMesh.prototype['calculateAabbBruteForce'] = function(arg0, arg1) { + _emscripten_bind_btTriangleMesh__calculateAabbBruteForce_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btTriangleMesh.prototype['findOrAddVertex'] = function(arg0, arg1) { + return _emscripten_bind_btTriangleMesh__findOrAddVertex_p2(this.ptr, arg0.ptr, arg1); +} +btTriangleMesh.prototype['addIndexedMesh'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btTriangleMesh__addIndexedMesh_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btTriangleMesh__addIndexedMesh_p2(this.ptr, arg0.ptr, arg1); +} +btTriangleMesh.prototype['getPremadeAabb'] = function(arg0, arg1) { + _emscripten_bind_btTriangleMesh__getPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btTriangleMesh.prototype['getUse4componentVertices'] = function() { + return _emscripten_bind_btTriangleMesh__getUse4componentVertices_p0(this.ptr); +} +btTriangleMesh.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btTriangleMesh__calculateSerializeBufferSize_p0(this.ptr); +} +function btTriangleMesh(arg0, arg1) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btTriangleMesh__btTriangleMesh_p0(); + else if (arg1 === undefined) + this.ptr = _emscripten_bind_btTriangleMesh__btTriangleMesh_p1(arg0); + else + this.ptr = _emscripten_bind_btTriangleMesh__btTriangleMesh_p2(arg0, arg1); + btTriangleMesh.prototype.__cache__[this.ptr] = this; + this.__class__ = btTriangleMesh; +} +btTriangleMesh.prototype.__cache__ = {}; +Module['btTriangleMesh'] = btTriangleMesh; +btTriangleMesh.prototype['getScaling'] = function() { + return wrapPointer(_emscripten_bind_btTriangleMesh__getScaling_p0(this.ptr), Module['btVector3']); +} +btTriangleMesh.prototype['setPremadeAabb'] = function(arg0, arg1) { + _emscripten_bind_btTriangleMesh__setPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btTriangleMesh.prototype['InternalProcessAllTriangles'] = function(arg0, arg1, arg2) { + _emscripten_bind_btTriangleMesh__InternalProcessAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btTriangleMesh.prototype['setScaling'] = function(arg0) { + _emscripten_bind_btTriangleMesh__setScaling_p1(this.ptr, arg0.ptr); +} +btTriangleMesh.prototype['unLockReadOnlyVertexBase'] = function(arg0) { + _emscripten_bind_btTriangleMesh__unLockReadOnlyVertexBase_p1(this.ptr, arg0); +} +btTriangleMesh.prototype['set_m_weldingThreshold'] = function(arg0) { + _emscripten_bind_btTriangleMesh__set_m_weldingThreshold_p1(this.ptr, arg0); +} +btTriangleMesh.prototype['getLockedReadOnlyVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (arg8 === undefined) + _emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + else + _emscripten_bind_btTriangleMesh__getLockedReadOnlyVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); +} +btTriangleMesh.prototype['preallocateIndices'] = function(arg0) { + _emscripten_bind_btTriangleMesh__preallocateIndices_p1(this.ptr, arg0); +} +btTriangleMesh.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btTriangleMesh__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btTriangleMesh.prototype['getUse32bitIndices'] = function() { + return _emscripten_bind_btTriangleMesh__getUse32bitIndices_p0(this.ptr); +} +btTriangleMesh.prototype['unLockVertexBase'] = function(arg0) { + _emscripten_bind_btTriangleMesh__unLockVertexBase_p1(this.ptr, arg0); +} +btTriangleMesh.prototype['__destroy__'] = function() { + _emscripten_bind_btTriangleMesh____destroy___p0(this.ptr); +} +btTriangleMesh.prototype['getNumTriangles'] = function() { + return _emscripten_bind_btTriangleMesh__getNumTriangles_p0(this.ptr); +} +btTriangleMesh.prototype['getIndexedMeshArray'] = function() { + return _emscripten_bind_btTriangleMesh__getIndexedMeshArray_p0(this.ptr); +} +btTriangleMesh.prototype['getNumSubParts'] = function() { + return _emscripten_bind_btTriangleMesh__getNumSubParts_p0(this.ptr); +} +btTriangleMesh.prototype['getLockedVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (arg8 === undefined) + _emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + else + _emscripten_bind_btTriangleMesh__getLockedVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); +} +btTriangleMesh.prototype['hasPremadeAabb'] = function() { + return _emscripten_bind_btTriangleMesh__hasPremadeAabb_p0(this.ptr); +} +btTriangleMesh.prototype['addTriangle'] = function(arg0, arg1, arg2, arg3) { + if (arg3 === undefined) + _emscripten_bind_btTriangleMesh__addTriangle_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); + else + _emscripten_bind_btTriangleMesh__addTriangle_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3); +} +function btBroadphaseAabbCallback(){ throw "btBroadphaseAabbCallback is abstract!" } +btBroadphaseAabbCallback.prototype.__cache__ = {}; +Module['btBroadphaseAabbCallback'] = btBroadphaseAabbCallback; +btBroadphaseAabbCallback.prototype['process'] = function(arg0) { + return _emscripten_bind_btBroadphaseAabbCallback__process_p1(this.ptr, arg0.ptr); +} +btBroadphasePair.prototype['__destroy__'] = function() { + _emscripten_bind_btBroadphasePair____destroy___p0(this.ptr); +} +btBroadphasePair.prototype['set_m_internalTmpValue'] = function(arg0) { + _emscripten_bind_btBroadphasePair__set_m_internalTmpValue_p1(this.ptr, arg0); +} +btBroadphasePair.prototype['get_m_pProxy0'] = function() { + return wrapPointer(_emscripten_bind_btBroadphasePair__get_m_pProxy0_p0(this.ptr), Module['btBroadphaseProxy']); +} +btBroadphasePair.prototype['get_m_pProxy1'] = function() { + return wrapPointer(_emscripten_bind_btBroadphasePair__get_m_pProxy1_p0(this.ptr), Module['btBroadphaseProxy']); +} +btBroadphasePair.prototype['set_m_pProxy0'] = function(arg0) { + _emscripten_bind_btBroadphasePair__set_m_pProxy0_p1(this.ptr, arg0.ptr); +} +btBroadphasePair.prototype['set_m_pProxy1'] = function(arg0) { + _emscripten_bind_btBroadphasePair__set_m_pProxy1_p1(this.ptr, arg0.ptr); +} +function btBroadphasePair(arg0, arg1) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btBroadphasePair__btBroadphasePair_p0(); + else if (arg1 === undefined) + this.ptr = _emscripten_bind_btBroadphasePair__btBroadphasePair_p1(arg0.ptr); + else + this.ptr = _emscripten_bind_btBroadphasePair__btBroadphasePair_p2(arg0.ptr, arg1.ptr); + btBroadphasePair.prototype.__cache__[this.ptr] = this; + this.__class__ = btBroadphasePair; +} +btBroadphasePair.prototype.__cache__ = {}; +Module['btBroadphasePair'] = btBroadphasePair; +btBroadphasePair.prototype['get_m_internalTmpValue'] = function() { + return _emscripten_bind_btBroadphasePair__get_m_internalTmpValue_p0(this.ptr); +} +btBroadphasePair.prototype['get_m_internalInfo1'] = function() { + return _emscripten_bind_btBroadphasePair__get_m_internalInfo1_p0(this.ptr); +} +btBroadphasePair.prototype['get_m_algorithm'] = function() { + return wrapPointer(_emscripten_bind_btBroadphasePair__get_m_algorithm_p0(this.ptr), Module['btCollisionAlgorithm']); +} +btBroadphasePair.prototype['set_m_internalInfo1'] = function(arg0) { + _emscripten_bind_btBroadphasePair__set_m_internalInfo1_p1(this.ptr, arg0); +} +btBroadphasePair.prototype['set_m_algorithm'] = function(arg0) { + _emscripten_bind_btBroadphasePair__set_m_algorithm_p1(this.ptr, arg0.ptr); +} +function btBroadphaseRayCallback(){ throw "btBroadphaseRayCallback is abstract!" } +btBroadphaseRayCallback.prototype.__cache__ = {}; +Module['btBroadphaseRayCallback'] = btBroadphaseRayCallback; +btBroadphaseRayCallback.prototype['process'] = function(arg0) { + return _emscripten_bind_btBroadphaseRayCallback__process_p1(this.ptr, arg0.ptr); +} +btBroadphaseRayCallback.prototype['get_m_rayDirectionInverse'] = function() { + return wrapPointer(_emscripten_bind_btBroadphaseRayCallback__get_m_rayDirectionInverse_p0(this.ptr), Module['btVector3']); +} +btBroadphaseRayCallback.prototype['set_m_rayDirectionInverse'] = function(arg0) { + _emscripten_bind_btBroadphaseRayCallback__set_m_rayDirectionInverse_p1(this.ptr, arg0.ptr); +} +btBroadphaseRayCallback.prototype['set_m_lambda_max'] = function(arg0) { + _emscripten_bind_btBroadphaseRayCallback__set_m_lambda_max_p1(this.ptr, arg0); +} +btBroadphaseRayCallback.prototype['get_m_lambda_max'] = function() { + return _emscripten_bind_btBroadphaseRayCallback__get_m_lambda_max_p0(this.ptr); +} +function ConvexResultCallback(){ throw "ConvexResultCallback is abstract!" } +ConvexResultCallback.prototype.__cache__ = {}; +Module['ConvexResultCallback'] = ConvexResultCallback; +ConvexResultCallback.prototype['get_m_closestHitFraction'] = function() { + return _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_closestHitFraction_p0(this.ptr); +} +ConvexResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +ConvexResultCallback.prototype['needsCollision'] = function(arg0) { + return _emscripten_bind_btCollisionWorld__ConvexResultCallback__needsCollision_p1(this.ptr, arg0.ptr); +} +ConvexResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0); +} +ConvexResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ConvexResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +ConvexResultCallback.prototype['hasHit'] = function() { + return _emscripten_bind_btCollisionWorld__ConvexResultCallback__hasHit_p0(this.ptr); +} +ConvexResultCallback.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterMask_p0(this.ptr); +} +ConvexResultCallback.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_btCollisionWorld__ConvexResultCallback__get_m_collisionFilterGroup_p0(this.ptr); +} +ConvexResultCallback.prototype['addSingleResult'] = function(arg0, arg1) { + return _emscripten_bind_btCollisionWorld__ConvexResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1); +} +btDefaultMotionState.prototype['__destroy__'] = function() { + _emscripten_bind_btDefaultMotionState____destroy___p0(this.ptr); +} +btDefaultMotionState.prototype['get_m_startWorldTrans'] = function() { + return wrapPointer(_emscripten_bind_btDefaultMotionState__get_m_startWorldTrans_p0(this.ptr), Module['btTransform']); +} +btDefaultMotionState.prototype['get_m_userPointer'] = function() { + return _emscripten_bind_btDefaultMotionState__get_m_userPointer_p0(this.ptr); +} +btDefaultMotionState.prototype['getWorldTransform'] = function(arg0) { + _emscripten_bind_btDefaultMotionState__getWorldTransform_p1(this.ptr, arg0.ptr); +} +btDefaultMotionState.prototype['set_m_startWorldTrans'] = function(arg0) { + _emscripten_bind_btDefaultMotionState__set_m_startWorldTrans_p1(this.ptr, arg0.ptr); +} +btDefaultMotionState.prototype['setWorldTransform'] = function(arg0) { + _emscripten_bind_btDefaultMotionState__setWorldTransform_p1(this.ptr, arg0.ptr); +} +btDefaultMotionState.prototype['get_m_graphicsWorldTrans'] = function() { + return wrapPointer(_emscripten_bind_btDefaultMotionState__get_m_graphicsWorldTrans_p0(this.ptr), Module['btTransform']); +} +btDefaultMotionState.prototype['set_m_userPointer'] = function(arg0) { + _emscripten_bind_btDefaultMotionState__set_m_userPointer_p1(this.ptr, arg0); +} +btDefaultMotionState.prototype['set_m_graphicsWorldTrans'] = function(arg0) { + _emscripten_bind_btDefaultMotionState__set_m_graphicsWorldTrans_p1(this.ptr, arg0.ptr); +} +function btDefaultMotionState(arg0, arg1) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p0(); + else if (arg1 === undefined) + this.ptr = _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p1(arg0.ptr); + else + this.ptr = _emscripten_bind_btDefaultMotionState__btDefaultMotionState_p2(arg0.ptr, arg1.ptr); + btDefaultMotionState.prototype.__cache__[this.ptr] = this; + this.__class__ = btDefaultMotionState; +} +btDefaultMotionState.prototype.__cache__ = {}; +Module['btDefaultMotionState'] = btDefaultMotionState; +btDefaultMotionState.prototype['get_m_centerOfMassOffset'] = function() { + return wrapPointer(_emscripten_bind_btDefaultMotionState__get_m_centerOfMassOffset_p0(this.ptr), Module['btTransform']); +} +btDefaultMotionState.prototype['set_m_centerOfMassOffset'] = function(arg0) { + _emscripten_bind_btDefaultMotionState__set_m_centerOfMassOffset_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['setGravity'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__setGravity_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['addAction'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__addAction_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['getSolverInfo'] = function() { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getSolverInfo_p0(this.ptr), Module['btContactSolverInfo']); +} +btContinuousDynamicsWorld.prototype['getDebugDrawer'] = function() { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']); +} +btContinuousDynamicsWorld.prototype['applyGravity'] = function() { + _emscripten_bind_btContinuousDynamicsWorld__applyGravity_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['serialize'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__serialize_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['getDispatcher'] = function() { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']); +} +btContinuousDynamicsWorld.prototype['getCollisionWorld'] = function() { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getCollisionWorld_p0(this.ptr), Module['btCollisionWorld']); +} +btContinuousDynamicsWorld.prototype['addRigidBody'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btContinuousDynamicsWorld__addRigidBody_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btContinuousDynamicsWorld.prototype['clearForces'] = function() { + _emscripten_bind_btContinuousDynamicsWorld__clearForces_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['removeVehicle'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__removeVehicle_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['internalSingleStepSimulation'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__internalSingleStepSimulation_p1(this.ptr, arg0); +} +btContinuousDynamicsWorld.prototype['setBroadphase'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__setBroadphase_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['getSynchronizeAllMotionStates'] = function() { + return _emscripten_bind_btContinuousDynamicsWorld__getSynchronizeAllMotionStates_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['setNumTasks'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__setNumTasks_p1(this.ptr, arg0); +} +btContinuousDynamicsWorld.prototype['setSynchronizeAllMotionStates'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__setSynchronizeAllMotionStates_p1(this.ptr, arg0); +} +btContinuousDynamicsWorld.prototype['calculateTimeOfImpacts'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__calculateTimeOfImpacts_p1(this.ptr, arg0); +} +btContinuousDynamicsWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) { + _emscripten_bind_btContinuousDynamicsWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btContinuousDynamicsWorld.prototype['removeConstraint'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__removeConstraint_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['rayTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btContinuousDynamicsWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btContinuousDynamicsWorld.prototype['getNumConstraints'] = function() { + return _emscripten_bind_btContinuousDynamicsWorld__getNumConstraints_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p1(this.ptr, arg0.ptr); + else if (arg2 === undefined) + _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1); + else + _emscripten_bind_btContinuousDynamicsWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btContinuousDynamicsWorld.prototype['removeRigidBody'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__removeRigidBody_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['contactTest'] = function(arg0, arg1) { + _emscripten_bind_btContinuousDynamicsWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btContinuousDynamicsWorld.prototype['performDiscreteCollisionDetection'] = function() { + _emscripten_bind_btContinuousDynamicsWorld__performDiscreteCollisionDetection_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['setInternalTickCallback'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p1(this.ptr, arg0); + else if (arg2 === undefined) + _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btContinuousDynamicsWorld__setInternalTickCallback_p3(this.ptr, arg0, arg1, arg2); +} +btContinuousDynamicsWorld.prototype['getForceUpdateAllAabbs'] = function() { + return _emscripten_bind_btContinuousDynamicsWorld__getForceUpdateAllAabbs_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['updateAabbs'] = function() { + _emscripten_bind_btContinuousDynamicsWorld__updateAabbs_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['setDebugDrawer'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__setDebugDrawer_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['debugDrawConstraint'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__debugDrawConstraint_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['debugDrawWorld'] = function() { + _emscripten_bind_btContinuousDynamicsWorld__debugDrawWorld_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg4 === undefined) + _emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_btContinuousDynamicsWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); +} +function btContinuousDynamicsWorld(arg0, arg1, arg2, arg3) { + this.ptr = _emscripten_bind_btContinuousDynamicsWorld__btContinuousDynamicsWorld_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + btContinuousDynamicsWorld.prototype.__cache__[this.ptr] = this; + this.__class__ = btContinuousDynamicsWorld; +} +btContinuousDynamicsWorld.prototype.__cache__ = {}; +Module['btContinuousDynamicsWorld'] = btContinuousDynamicsWorld; +btContinuousDynamicsWorld.prototype['getNumCollisionObjects'] = function() { + return _emscripten_bind_btContinuousDynamicsWorld__getNumCollisionObjects_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['setWorldUserInfo'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__setWorldUserInfo_p1(this.ptr, arg0); +} +btContinuousDynamicsWorld.prototype['addConstraint'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btContinuousDynamicsWorld__addConstraint_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btContinuousDynamicsWorld__addConstraint_p2(this.ptr, arg0.ptr, arg1); +} +btContinuousDynamicsWorld.prototype['getWorldUserInfo'] = function() { + return _emscripten_bind_btContinuousDynamicsWorld__getWorldUserInfo_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btContinuousDynamicsWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btContinuousDynamicsWorld.prototype['getGravity'] = function() { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getGravity_p0(this.ptr), Module['btVector3']); +} +btContinuousDynamicsWorld.prototype['getBroadphase'] = function() { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']); +} +btContinuousDynamicsWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btContinuousDynamicsWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr); +} +btContinuousDynamicsWorld.prototype['removeAction'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__removeAction_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0); +} +btContinuousDynamicsWorld.prototype['__destroy__'] = function() { + _emscripten_bind_btContinuousDynamicsWorld____destroy___p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['removeCharacter'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__removeCharacter_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['getConstraint'] = function(arg0) { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getConstraint_p1(this.ptr, arg0), Module['btTypedConstraint']); +} +btContinuousDynamicsWorld.prototype['getConstraintSolver'] = function() { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getConstraintSolver_p0(this.ptr), Module['btConstraintSolver']); +} +btContinuousDynamicsWorld.prototype['stepSimulation'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + return _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p1(this.ptr, arg0); + else if (arg2 === undefined) + return _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p2(this.ptr, arg0, arg1); + else + return _emscripten_bind_btContinuousDynamicsWorld__stepSimulation_p3(this.ptr, arg0, arg1, arg2); +} +btContinuousDynamicsWorld.prototype['addCharacter'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__addCharacter_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['getWorldType'] = function() { + return _emscripten_bind_btContinuousDynamicsWorld__getWorldType_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['updateSingleAabb'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__updateSingleAabb_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['updateVehicles'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__updateVehicles_p1(this.ptr, arg0); +} +btContinuousDynamicsWorld.prototype['synchronizeSingleMotionState'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__synchronizeSingleMotionState_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['getCollisionObjectArray'] = function() { + return _emscripten_bind_btContinuousDynamicsWorld__getCollisionObjectArray_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['addVehicle'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__addVehicle_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['getPairCache'] = function() { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btContinuousDynamicsWorld.prototype['synchronizeMotionStates'] = function() { + _emscripten_bind_btContinuousDynamicsWorld__synchronizeMotionStates_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['getSimulationIslandManager'] = function() { + return _emscripten_bind_btContinuousDynamicsWorld__getSimulationIslandManager_p0(this.ptr); +} +btContinuousDynamicsWorld.prototype['removeCollisionObject'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__removeCollisionObject_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['setConstraintSolver'] = function(arg0) { + _emscripten_bind_btContinuousDynamicsWorld__setConstraintSolver_p1(this.ptr, arg0.ptr); +} +btContinuousDynamicsWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + _emscripten_bind_btContinuousDynamicsWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7); +} +btContinuousDynamicsWorld.prototype['getDispatchInfo'] = function() { + return wrapPointer(_emscripten_bind_btContinuousDynamicsWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']); +} +btConeShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btConeShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btConeShape.prototype['isCompound'] = function() { + return _emscripten_bind_btConeShape__isCompound_p0(this.ptr); +} +btConeShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btConeShape__setUserPointer_p1(this.ptr, arg0); +} +btConeShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btConeShape__getMarginNV_p0(this.ptr); +} +btConeShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConeShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConeShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btConeShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btConeShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btConeShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btConeShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btConeShape__isPolyhedral_p0(this.ptr); +} +btConeShape.prototype['getRadius'] = function() { + return _emscripten_bind_btConeShape__getRadius_p0(this.ptr); +} +function btConeShape(arg0, arg1) { + this.ptr = _emscripten_bind_btConeShape__btConeShape_p2(arg0, arg1); + btConeShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btConeShape; +} +btConeShape.prototype.__cache__ = {}; +Module['btConeShape'] = btConeShape; +btConeShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConeShape__calculateSerializeBufferSize_p0(this.ptr); +} +btConeShape.prototype['getName'] = function() { + return _emscripten_bind_btConeShape__getName_p0(this.ptr); +} +btConeShape.prototype['getHeight'] = function() { + return _emscripten_bind_btConeShape__getHeight_p0(this.ptr); +} +btConeShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btConeShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btConeShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShape.prototype['setConeUpIndex'] = function(arg0) { + _emscripten_bind_btConeShape__setConeUpIndex_p1(this.ptr, arg0); +} +btConeShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btConeShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btConeShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConeShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConeShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btConeShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btConeShape.prototype['isConvex'] = function() { + return _emscripten_bind_btConeShape__isConvex_p0(this.ptr); +} +btConeShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btConeShape__isInfinite_p0(this.ptr); +} +btConeShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btConeShape__getUserPointer_p0(this.ptr); +} +btConeShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btConeShape__isNonMoving_p0(this.ptr); +} +btConeShape.prototype['getMargin'] = function() { + return _emscripten_bind_btConeShape__getMargin_p0(this.ptr); +} +btConeShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btConeShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btConeShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btConeShape__setMargin_p1(this.ptr, arg0); +} +btConeShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btConeShape__isConvex2d_p0(this.ptr); +} +btConeShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btConeShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btConeShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btConeShape__isSoftBody_p0(this.ptr); +} +btConeShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btConeShape__getMarginNonVirtual_p0(this.ptr); +} +btConeShape.prototype['__destroy__'] = function() { + _emscripten_bind_btConeShape____destroy___p0(this.ptr); +} +btConeShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConeShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btConeShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btConeShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btConeShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btConeShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btConeShape__getAngularMotionDisc_p0(this.ptr); +} +btConeShape.prototype['getConeUpIndex'] = function() { + return _emscripten_bind_btConeShape__getConeUpIndex_p0(this.ptr); +} +btConeShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btConeShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btConeShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConeShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConeShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btConeShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btConeShape.prototype['isConcave'] = function() { + return _emscripten_bind_btConeShape__isConcave_p0(this.ptr); +} +btConeShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btConeShape__getShapeType_p0(this.ptr); +} +btWheelInfo.prototype['set_m_chassisConnectionPointCS'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_chassisConnectionPointCS_p1(this.ptr, arg0.ptr); +} +btWheelInfo.prototype['set_m_maxSuspensionTravelCm'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_maxSuspensionTravelCm_p1(this.ptr, arg0); +} +btWheelInfo.prototype['get_m_wheelsRadius'] = function() { + return _emscripten_bind_btWheelInfo__get_m_wheelsRadius_p0(this.ptr); +} +btWheelInfo.prototype['get_m_suspensionRestLength1'] = function() { + return _emscripten_bind_btWheelInfo__get_m_suspensionRestLength1_p0(this.ptr); +} +btWheelInfo.prototype['set_m_suspensionStiffness'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_suspensionStiffness_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_wheelsRadius'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_wheelsRadius_p1(this.ptr, arg0); +} +btWheelInfo.prototype['get_m_maxSuspensionForce'] = function() { + return _emscripten_bind_btWheelInfo__get_m_maxSuspensionForce_p0(this.ptr); +} +btWheelInfo.prototype['updateWheel'] = function(arg0, arg1) { + _emscripten_bind_btWheelInfo__updateWheel_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btWheelInfo.prototype['get_m_wheelsDampingCompression'] = function() { + return _emscripten_bind_btWheelInfo__get_m_wheelsDampingCompression_p0(this.ptr); +} +btWheelInfo.prototype['get_m_clippedInvContactDotSuspension'] = function() { + return _emscripten_bind_btWheelInfo__get_m_clippedInvContactDotSuspension_p0(this.ptr); +} +btWheelInfo.prototype['get_m_worldTransform'] = function() { + return wrapPointer(_emscripten_bind_btWheelInfo__get_m_worldTransform_p0(this.ptr), Module['btTransform']); +} +btWheelInfo.prototype['get_m_frictionSlip'] = function() { + return _emscripten_bind_btWheelInfo__get_m_frictionSlip_p0(this.ptr); +} +btWheelInfo.prototype['get_m_bIsFrontWheel'] = function() { + return _emscripten_bind_btWheelInfo__get_m_bIsFrontWheel_p0(this.ptr); +} +btWheelInfo.prototype['set_m_engineForce'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_engineForce_p1(this.ptr, arg0); +} +btWheelInfo.prototype['get_m_engineForce'] = function() { + return _emscripten_bind_btWheelInfo__get_m_engineForce_p0(this.ptr); +} +btWheelInfo.prototype['get_m_steering'] = function() { + return _emscripten_bind_btWheelInfo__get_m_steering_p0(this.ptr); +} +btWheelInfo.prototype['get_m_rollInfluence'] = function() { + return _emscripten_bind_btWheelInfo__get_m_rollInfluence_p0(this.ptr); +} +btWheelInfo.prototype['get_m_suspensionRelativeVelocity'] = function() { + return _emscripten_bind_btWheelInfo__get_m_suspensionRelativeVelocity_p0(this.ptr); +} +btWheelInfo.prototype['set_m_clientInfo'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_clientInfo_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_brake'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_brake_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_suspensionRelativeVelocity'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_suspensionRelativeVelocity_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_bIsFrontWheel'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_bIsFrontWheel_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_wheelDirectionCS'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_wheelDirectionCS_p1(this.ptr, arg0.ptr); +} +btWheelInfo.prototype['set_m_wheelsDampingCompression'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_wheelsDampingCompression_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_deltaRotation'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_deltaRotation_p1(this.ptr, arg0); +} +btWheelInfo.prototype['get_m_clientInfo'] = function() { + return _emscripten_bind_btWheelInfo__get_m_clientInfo_p0(this.ptr); +} +btWheelInfo.prototype['set_m_frictionSlip'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_frictionSlip_p1(this.ptr, arg0); +} +btWheelInfo.prototype['get_m_skidInfo'] = function() { + return _emscripten_bind_btWheelInfo__get_m_skidInfo_p0(this.ptr); +} +btWheelInfo.prototype['getSuspensionRestLength'] = function() { + return _emscripten_bind_btWheelInfo__getSuspensionRestLength_p0(this.ptr); +} +btWheelInfo.prototype['get_m_wheelsDampingRelaxation'] = function() { + return _emscripten_bind_btWheelInfo__get_m_wheelsDampingRelaxation_p0(this.ptr); +} +btWheelInfo.prototype['get_m_maxSuspensionTravelCm'] = function() { + return _emscripten_bind_btWheelInfo__get_m_maxSuspensionTravelCm_p0(this.ptr); +} +btWheelInfo.prototype['set_m_steering'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_steering_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_wheelAxleCS'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_wheelAxleCS_p1(this.ptr, arg0.ptr); +} +function btWheelInfo(arg0) { + this.ptr = _emscripten_bind_btWheelInfo__btWheelInfo_p1(arg0.ptr); + btWheelInfo.prototype.__cache__[this.ptr] = this; + this.__class__ = btWheelInfo; +} +btWheelInfo.prototype.__cache__ = {}; +Module['btWheelInfo'] = btWheelInfo; +btWheelInfo.prototype['get_m_chassisConnectionPointCS'] = function() { + return wrapPointer(_emscripten_bind_btWheelInfo__get_m_chassisConnectionPointCS_p0(this.ptr), Module['btVector3']); +} +btWheelInfo.prototype['get_m_brake'] = function() { + return _emscripten_bind_btWheelInfo__get_m_brake_p0(this.ptr); +} +btWheelInfo.prototype['set_m_skidInfo'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_skidInfo_p1(this.ptr, arg0); +} +btWheelInfo.prototype['get_m_wheelsSuspensionForce'] = function() { + return _emscripten_bind_btWheelInfo__get_m_wheelsSuspensionForce_p0(this.ptr); +} +btWheelInfo.prototype['set_m_suspensionRestLength1'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_suspensionRestLength1_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_rollInfluence'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_rollInfluence_p1(this.ptr, arg0); +} +btWheelInfo.prototype['__destroy__'] = function() { + _emscripten_bind_btWheelInfo____destroy___p0(this.ptr); +} +btWheelInfo.prototype['get_m_rotation'] = function() { + return _emscripten_bind_btWheelInfo__get_m_rotation_p0(this.ptr); +} +btWheelInfo.prototype['set_m_wheelsDampingRelaxation'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_wheelsDampingRelaxation_p1(this.ptr, arg0); +} +btWheelInfo.prototype['get_m_wheelDirectionCS'] = function() { + return wrapPointer(_emscripten_bind_btWheelInfo__get_m_wheelDirectionCS_p0(this.ptr), Module['btVector3']); +} +btWheelInfo.prototype['get_m_suspensionStiffness'] = function() { + return _emscripten_bind_btWheelInfo__get_m_suspensionStiffness_p0(this.ptr); +} +btWheelInfo.prototype['set_m_clippedInvContactDotSuspension'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_clippedInvContactDotSuspension_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_rotation'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_rotation_p1(this.ptr, arg0); +} +btWheelInfo.prototype['get_m_wheelAxleCS'] = function() { + return wrapPointer(_emscripten_bind_btWheelInfo__get_m_wheelAxleCS_p0(this.ptr), Module['btVector3']); +} +btWheelInfo.prototype['set_m_wheelsSuspensionForce'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_wheelsSuspensionForce_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_maxSuspensionForce'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_maxSuspensionForce_p1(this.ptr, arg0); +} +btWheelInfo.prototype['set_m_worldTransform'] = function(arg0) { + _emscripten_bind_btWheelInfo__set_m_worldTransform_p1(this.ptr, arg0.ptr); +} +btWheelInfo.prototype['get_m_deltaRotation'] = function() { + return _emscripten_bind_btWheelInfo__get_m_deltaRotation_p0(this.ptr); +} +btBU_Simplex1to4.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btBU_Simplex1to4__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btBU_Simplex1to4.prototype['getNumPlanes'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getNumPlanes_p0(this.ptr); +} +btBU_Simplex1to4.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBU_Simplex1to4.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btBU_Simplex1to4__setUserPointer_p1(this.ptr, arg0); +} +btBU_Simplex1to4.prototype['isInside'] = function(arg0, arg1) { + return _emscripten_bind_btBU_Simplex1to4__isInside_p2(this.ptr, arg0.ptr, arg1); +} +btBU_Simplex1to4.prototype['getNumVertices'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getNumVertices_p0(this.ptr); +} +btBU_Simplex1to4.prototype['addVertex'] = function(arg0) { + _emscripten_bind_btBU_Simplex1to4__addVertex_p1(this.ptr, arg0.ptr); +} +btBU_Simplex1to4.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btBU_Simplex1to4__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btBU_Simplex1to4.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btBU_Simplex1to4.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btBU_Simplex1to4__isPolyhedral_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getVertex'] = function(arg0, arg1) { + _emscripten_bind_btBU_Simplex1to4__getVertex_p2(this.ptr, arg0, arg1.ptr); +} +btBU_Simplex1to4.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBU_Simplex1to4.prototype['getIndex'] = function(arg0) { + return _emscripten_bind_btBU_Simplex1to4__getIndex_p1(this.ptr, arg0); +} +btBU_Simplex1to4.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBU_Simplex1to4__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBU_Simplex1to4.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btBU_Simplex1to4__calculateSerializeBufferSize_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getNumEdges'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getNumEdges_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getName'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getName_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getEdge'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBU_Simplex1to4__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr); +} +btBU_Simplex1to4.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btBU_Simplex1to4__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btBU_Simplex1to4.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBU_Simplex1to4__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBU_Simplex1to4.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btBU_Simplex1to4__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btBU_Simplex1to4.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btBU_Simplex1to4__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btBU_Simplex1to4.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBU_Simplex1to4__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBU_Simplex1to4.prototype['getMarginNV'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getMarginNV_p0(this.ptr); +} +btBU_Simplex1to4.prototype['isConvex2d'] = function() { + return _emscripten_bind_btBU_Simplex1to4__isConvex2d_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btBU_Simplex1to4__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btBU_Simplex1to4.prototype['isConvex'] = function() { + return _emscripten_bind_btBU_Simplex1to4__isConvex_p0(this.ptr); +} +btBU_Simplex1to4.prototype['isInfinite'] = function() { + return _emscripten_bind_btBU_Simplex1to4__isInfinite_p0(this.ptr); +} +btBU_Simplex1to4.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btBU_Simplex1to4__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btBU_Simplex1to4.prototype['isNonMoving'] = function() { + return _emscripten_bind_btBU_Simplex1to4__isNonMoving_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getUserPointer'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getUserPointer_p0(this.ptr); +} +function btBU_Simplex1to4(arg0, arg1, arg2, arg3) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p0(); + else if (arg1 === undefined) + this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p1(arg0.ptr); + else if (arg2 === undefined) + this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p2(arg0.ptr, arg1.ptr); + else if (arg3 === undefined) + this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p3(arg0.ptr, arg1.ptr, arg2.ptr); + else + this.ptr = _emscripten_bind_btBU_Simplex1to4__btBU_Simplex1to4_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + btBU_Simplex1to4.prototype.__cache__[this.ptr] = this; + this.__class__ = btBU_Simplex1to4; +} +btBU_Simplex1to4.prototype.__cache__ = {}; +Module['btBU_Simplex1to4'] = btBU_Simplex1to4; +btBU_Simplex1to4.prototype['getMargin'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getMargin_p0(this.ptr); +} +btBU_Simplex1to4.prototype['recalcLocalAabb'] = function() { + _emscripten_bind_btBU_Simplex1to4__recalcLocalAabb_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btBU_Simplex1to4__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btBU_Simplex1to4.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btBU_Simplex1to4__setMargin_p1(this.ptr, arg0); +} +btBU_Simplex1to4.prototype['initializePolyhedralFeatures'] = function() { + return _emscripten_bind_btBU_Simplex1to4__initializePolyhedralFeatures_p0(this.ptr); +} +btBU_Simplex1to4.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBU_Simplex1to4__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBU_Simplex1to4.prototype['isSoftBody'] = function() { + return _emscripten_bind_btBU_Simplex1to4__isSoftBody_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getMarginNonVirtual_p0(this.ptr); +} +btBU_Simplex1to4.prototype['reset'] = function() { + _emscripten_bind_btBU_Simplex1to4__reset_p0(this.ptr); +} +btBU_Simplex1to4.prototype['__destroy__'] = function() { + _emscripten_bind_btBU_Simplex1to4____destroy___p0(this.ptr); +} +btBU_Simplex1to4.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBU_Simplex1to4__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btBU_Simplex1to4.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btBU_Simplex1to4__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btBU_Simplex1to4.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btBU_Simplex1to4__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btBU_Simplex1to4.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getAngularMotionDisc_p0(this.ptr); +} +btBU_Simplex1to4.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btBU_Simplex1to4__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btBU_Simplex1to4.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBU_Simplex1to4__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBU_Simplex1to4.prototype['getPlane'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBU_Simplex1to4__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btBU_Simplex1to4.prototype['isCompound'] = function() { + return _emscripten_bind_btBU_Simplex1to4__isCompound_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getConvexPolyhedron'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getConvexPolyhedron_p0(this.ptr); +} +btBU_Simplex1to4.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btBU_Simplex1to4__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btBU_Simplex1to4.prototype['getShapeType'] = function() { + return _emscripten_bind_btBU_Simplex1to4__getShapeType_p0(this.ptr); +} +btBU_Simplex1to4.prototype['isConcave'] = function() { + return _emscripten_bind_btBU_Simplex1to4__isConcave_p0(this.ptr); +} +btBU_Simplex1to4.prototype['getNonvirtualAabb'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btBU_Simplex1to4__getNonvirtualAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3); +} +btVector4.prototype['setMin'] = function(arg0) { + _emscripten_bind_btVector4__setMin_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['getSkewSymmetricMatrix'] = function(arg0, arg1, arg2) { + _emscripten_bind_btVector4__getSkewSymmetricMatrix_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btVector4.prototype['serialize'] = function(arg0) { + _emscripten_bind_btVector4__serialize_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['deSerializeDouble'] = function(arg0) { + _emscripten_bind_btVector4__deSerializeDouble_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['getX'] = function() { + return _emscripten_bind_btVector4__getX_p0(this.ptr); +} +btVector4.prototype['minAxis4'] = function() { + return _emscripten_bind_btVector4__minAxis4_p0(this.ptr); +} +btVector4.prototype['getZ'] = function() { + return _emscripten_bind_btVector4__getZ_p0(this.ptr); +} +btVector4.prototype['setInterpolate3'] = function(arg0, arg1, arg2) { + _emscripten_bind_btVector4__setInterpolate3_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btVector4.prototype['triple'] = function(arg0, arg1) { + return _emscripten_bind_btVector4__triple_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btVector4.prototype['absolute'] = function() { + return wrapPointer(_emscripten_bind_btVector4__absolute_p0(this.ptr), Module['btVector3']); +} +btVector4.prototype['normalize'] = function() { + return wrapPointer(_emscripten_bind_btVector4__normalize_p0(this.ptr), Module['btVector3']); +} +btVector4.prototype['angle'] = function(arg0) { + return _emscripten_bind_btVector4__angle_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['deSerializeFloat'] = function(arg0) { + _emscripten_bind_btVector4__deSerializeFloat_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['lerp'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btVector4__lerp_p2(this.ptr, arg0.ptr, arg1), Module['btVector3']); +} +btVector4.prototype['setMax'] = function(arg0) { + _emscripten_bind_btVector4__setMax_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['cross'] = function(arg0) { + return wrapPointer(_emscripten_bind_btVector4__cross_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btVector4.prototype['serializeDouble'] = function(arg0) { + _emscripten_bind_btVector4__serializeDouble_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['absolute4'] = function() { + return wrapPointer(_emscripten_bind_btVector4__absolute4_p0(this.ptr), Module['btVector4']); +} +btVector4.prototype['getW'] = function() { + return _emscripten_bind_btVector4__getW_p0(this.ptr); +} +btVector4.prototype['distance2'] = function(arg0) { + return _emscripten_bind_btVector4__distance2_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['closestAxis'] = function() { + return _emscripten_bind_btVector4__closestAxis_p0(this.ptr); +} +btVector4.prototype['setValue'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btVector4__setValue_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btVector4.prototype['fuzzyZero'] = function() { + return _emscripten_bind_btVector4__fuzzyZero_p0(this.ptr); +} +btVector4.prototype['deSerialize'] = function(arg0) { + _emscripten_bind_btVector4__deSerialize_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['distance'] = function(arg0) { + return _emscripten_bind_btVector4__distance_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['minAxis'] = function() { + return _emscripten_bind_btVector4__minAxis_p0(this.ptr); +} +function btVector4(arg0, arg1, arg2, arg3) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btVector4__btVector4_p0(); + else + this.ptr = _emscripten_bind_btVector4__btVector4_p4(arg0, arg1, arg2, arg3); + btVector4.prototype.__cache__[this.ptr] = this; + this.__class__ = btVector4; +} +btVector4.prototype.__cache__ = {}; +Module['btVector4'] = btVector4; +btVector4.prototype['isZero'] = function() { + return _emscripten_bind_btVector4__isZero_p0(this.ptr); +} +btVector4.prototype['safeNormalize'] = function() { + return wrapPointer(_emscripten_bind_btVector4__safeNormalize_p0(this.ptr), Module['btVector3']); +} +btVector4.prototype['normalized'] = function() { + return wrapPointer(_emscripten_bind_btVector4__normalized_p0(this.ptr), Module['btVector3']); +} +btVector4.prototype['serializeFloat'] = function(arg0) { + _emscripten_bind_btVector4__serializeFloat_p1(this.ptr, arg0.ptr); +} +btVector4.prototype['setX'] = function(arg0) { + _emscripten_bind_btVector4__setX_p1(this.ptr, arg0); +} +btVector4.prototype['setY'] = function(arg0) { + _emscripten_bind_btVector4__setY_p1(this.ptr, arg0); +} +btVector4.prototype['setZ'] = function(arg0) { + _emscripten_bind_btVector4__setZ_p1(this.ptr, arg0); +} +btVector4.prototype['maxAxis4'] = function() { + return _emscripten_bind_btVector4__maxAxis4_p0(this.ptr); +} +btVector4.prototype['__destroy__'] = function() { + _emscripten_bind_btVector4____destroy___p0(this.ptr); +} +btVector4.prototype['rotate'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btVector4__rotate_p2(this.ptr, arg0.ptr, arg1), Module['btVector3']); +} +btVector4.prototype['maxAxis'] = function() { + return _emscripten_bind_btVector4__maxAxis_p0(this.ptr); +} +btVector4.prototype['closestAxis4'] = function() { + return _emscripten_bind_btVector4__closestAxis4_p0(this.ptr); +} +btVector4.prototype['getY'] = function() { + return _emscripten_bind_btVector4__getY_p0(this.ptr); +} +btVector4.prototype['length2'] = function() { + return _emscripten_bind_btVector4__length2_p0(this.ptr); +} +btVector4.prototype['setZero'] = function() { + _emscripten_bind_btVector4__setZero_p0(this.ptr); +} +btVector4.prototype['length'] = function() { + return _emscripten_bind_btVector4__length_p0(this.ptr); +} +btVector4.prototype['setW'] = function(arg0) { + _emscripten_bind_btVector4__setW_p1(this.ptr, arg0); +} +btVector4.prototype['furthestAxis'] = function() { + return _emscripten_bind_btVector4__furthestAxis_p0(this.ptr); +} +btVector4.prototype['w'] = function() { + return _emscripten_bind_btVector4__w_p0(this.ptr); +} +btVector4.prototype['y'] = function() { + return _emscripten_bind_btVector4__y_p0(this.ptr); +} +btVector4.prototype['x'] = function() { + return _emscripten_bind_btVector4__x_p0(this.ptr); +} +btVector4.prototype['z'] = function() { + return _emscripten_bind_btVector4__z_p0(this.ptr); +} +btVector4.prototype['dot'] = function(arg0) { + return _emscripten_bind_btVector4__dot_p1(this.ptr, arg0.ptr); +} +function btActionInterface(){ throw "btActionInterface is abstract!" } +btActionInterface.prototype.__cache__ = {}; +Module['btActionInterface'] = btActionInterface; +btActionInterface.prototype['updateAction'] = function(arg0, arg1) { + _emscripten_bind_btActionInterface__updateAction_p2(this.ptr, arg0.ptr, arg1); +} +btActionInterface.prototype['debugDraw'] = function(arg0) { + _emscripten_bind_btActionInterface__debugDraw_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['setMin'] = function(arg0) { + _emscripten_bind_btVector3__setMin_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['getSkewSymmetricMatrix'] = function(arg0, arg1, arg2) { + _emscripten_bind_btVector3__getSkewSymmetricMatrix_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btVector3.prototype['serialize'] = function(arg0) { + _emscripten_bind_btVector3__serialize_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['deSerializeDouble'] = function(arg0) { + _emscripten_bind_btVector3__deSerializeDouble_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['getX'] = function() { + return _emscripten_bind_btVector3__getX_p0(this.ptr); +} +btVector3.prototype['getY'] = function() { + return _emscripten_bind_btVector3__getY_p0(this.ptr); +} +btVector3.prototype['getZ'] = function() { + return _emscripten_bind_btVector3__getZ_p0(this.ptr); +} +btVector3.prototype['setInterpolate3'] = function(arg0, arg1, arg2) { + _emscripten_bind_btVector3__setInterpolate3_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btVector3.prototype['triple'] = function(arg0, arg1) { + return _emscripten_bind_btVector3__triple_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btVector3.prototype['op_sub'] = function(arg0) { + return wrapPointer(_emscripten_bind_btVector3__op_sub_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btVector3.prototype['absolute'] = function() { + return wrapPointer(_emscripten_bind_btVector3__absolute_p0(this.ptr), Module['btVector3']); +} +btVector3.prototype['normalize'] = function() { + return wrapPointer(_emscripten_bind_btVector3__normalize_p0(this.ptr), Module['btVector3']); +} +btVector3.prototype['angle'] = function(arg0) { + return _emscripten_bind_btVector3__angle_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['lerp'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btVector3__lerp_p2(this.ptr, arg0.ptr, arg1), Module['btVector3']); +} +btVector3.prototype['setMax'] = function(arg0) { + _emscripten_bind_btVector3__setMax_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['cross'] = function(arg0) { + return wrapPointer(_emscripten_bind_btVector3__cross_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btVector3.prototype['op_add'] = function(arg0) { + return wrapPointer(_emscripten_bind_btVector3__op_add_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btVector3.prototype['op_comp'] = function(arg0) { + return _emscripten_bind_btVector3__op_comp_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['__destroy__'] = function() { + _emscripten_bind_btVector3____destroy___p0(this.ptr); +} +btVector3.prototype['op_mul'] = function(arg0) { + return wrapPointer(_emscripten_bind_btVector3__op_mul_p1(this.ptr, arg0), Module['btVector3']); +} +btVector3.prototype['serializeDouble'] = function(arg0) { + _emscripten_bind_btVector3__serializeDouble_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['isZero'] = function() { + return _emscripten_bind_btVector3__isZero_p0(this.ptr); +} +btVector3.prototype['op_set'] = function(arg0) { + return _emscripten_bind_btVector3__op_set_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['distance2'] = function(arg0) { + return _emscripten_bind_btVector3__distance2_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['closestAxis'] = function() { + return _emscripten_bind_btVector3__closestAxis_p0(this.ptr); +} +btVector3.prototype['setValue'] = function(arg0, arg1, arg2) { + _emscripten_bind_btVector3__setValue_p3(this.ptr, arg0, arg1, arg2); +} +btVector3.prototype['fuzzyZero'] = function() { + return _emscripten_bind_btVector3__fuzzyZero_p0(this.ptr); +} +btVector3.prototype['deSerialize'] = function(arg0) { + _emscripten_bind_btVector3__deSerialize_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['op_div'] = function(arg0) { + return wrapPointer(_emscripten_bind_btVector3__op_div_p1(this.ptr, arg0), Module['btVector3']); +} +btVector3.prototype['minAxis'] = function() { + return _emscripten_bind_btVector3__minAxis_p0(this.ptr); +} +btVector3.prototype['safeNormalize'] = function() { + return wrapPointer(_emscripten_bind_btVector3__safeNormalize_p0(this.ptr), Module['btVector3']); +} +btVector3.prototype['normalized'] = function() { + return wrapPointer(_emscripten_bind_btVector3__normalized_p0(this.ptr), Module['btVector3']); +} +function btVector3(arg0, arg1, arg2) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btVector3__btVector3_p0(); + else + this.ptr = _emscripten_bind_btVector3__btVector3_p3(arg0, arg1, arg2); + btVector3.prototype.__cache__[this.ptr] = this; + this.__class__ = btVector3; +} +btVector3.prototype.__cache__ = {}; +Module['btVector3'] = btVector3; +btVector3.prototype['serializeFloat'] = function(arg0) { + _emscripten_bind_btVector3__serializeFloat_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['setX'] = function(arg0) { + _emscripten_bind_btVector3__setX_p1(this.ptr, arg0); +} +btVector3.prototype['setY'] = function(arg0) { + _emscripten_bind_btVector3__setY_p1(this.ptr, arg0); +} +btVector3.prototype['setZ'] = function(arg0) { + _emscripten_bind_btVector3__setZ_p1(this.ptr, arg0); +} +btVector3.prototype['distance'] = function(arg0) { + return _emscripten_bind_btVector3__distance_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['rotate'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btVector3__rotate_p2(this.ptr, arg0.ptr, arg1), Module['btVector3']); +} +btVector3.prototype['maxAxis'] = function() { + return _emscripten_bind_btVector3__maxAxis_p0(this.ptr); +} +btVector3.prototype['deSerializeFloat'] = function(arg0) { + _emscripten_bind_btVector3__deSerializeFloat_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['length2'] = function() { + return _emscripten_bind_btVector3__length2_p0(this.ptr); +} +btVector3.prototype['setZero'] = function() { + _emscripten_bind_btVector3__setZero_p0(this.ptr); +} +btVector3.prototype['length'] = function() { + return _emscripten_bind_btVector3__length_p0(this.ptr); +} +btVector3.prototype['setW'] = function(arg0) { + _emscripten_bind_btVector3__setW_p1(this.ptr, arg0); +} +btVector3.prototype['dot'] = function(arg0) { + return _emscripten_bind_btVector3__dot_p1(this.ptr, arg0.ptr); +} +btVector3.prototype['w'] = function() { + return _emscripten_bind_btVector3__w_p0(this.ptr); +} +btVector3.prototype['y'] = function() { + return _emscripten_bind_btVector3__y_p0(this.ptr); +} +btVector3.prototype['x'] = function() { + return _emscripten_bind_btVector3__x_p0(this.ptr); +} +btVector3.prototype['z'] = function() { + return _emscripten_bind_btVector3__z_p0(this.ptr); +} +btVector3.prototype['furthestAxis'] = function() { + return _emscripten_bind_btVector3__furthestAxis_p0(this.ptr); +} +function btSerializer(){ throw "btSerializer is abstract!" } +btSerializer.prototype.__cache__ = {}; +Module['btSerializer'] = btSerializer; +btSerializer.prototype['setSerializationFlags'] = function(arg0) { + _emscripten_bind_btSerializer__setSerializationFlags_p1(this.ptr, arg0); +} +btSerializer.prototype['findNameForPointer'] = function(arg0) { + return _emscripten_bind_btSerializer__findNameForPointer_p1(this.ptr, arg0); +} +btSerializer.prototype['startSerialization'] = function() { + _emscripten_bind_btSerializer__startSerialization_p0(this.ptr); +} +btSerializer.prototype['getSerializationFlags'] = function() { + return _emscripten_bind_btSerializer__getSerializationFlags_p0(this.ptr); +} +btSerializer.prototype['finishSerialization'] = function() { + _emscripten_bind_btSerializer__finishSerialization_p0(this.ptr); +} +btSerializer.prototype['getUniquePointer'] = function(arg0) { + return _emscripten_bind_btSerializer__getUniquePointer_p1(this.ptr, arg0); +} +btSerializer.prototype['getBufferPointer'] = function() { + return _emscripten_bind_btSerializer__getBufferPointer_p0(this.ptr); +} +btSerializer.prototype['getCurrentBufferSize'] = function() { + return _emscripten_bind_btSerializer__getCurrentBufferSize_p0(this.ptr); +} +btSerializer.prototype['finalizeChunk'] = function(arg0, arg1, arg2, arg3) { +var stack = Runtime.stackSave(); +try { + _emscripten_bind_btSerializer__finalizeChunk_p4(this.ptr, arg0.ptr, ensureString(arg1), arg2, arg3); +} finally { Runtime.stackRestore(stack) } +} +btSerializer.prototype['serializeName'] = function(arg0) { +var stack = Runtime.stackSave(); +try { + _emscripten_bind_btSerializer__serializeName_p1(this.ptr, ensureString(arg0)); +} finally { Runtime.stackRestore(stack) } +} +btSerializer.prototype['findPointer'] = function(arg0) { + return _emscripten_bind_btSerializer__findPointer_p1(this.ptr, arg0); +} +btSerializer.prototype['registerNameForPointer'] = function(arg0, arg1) { +var stack = Runtime.stackSave(); +try { + _emscripten_bind_btSerializer__registerNameForPointer_p2(this.ptr, arg0, ensureString(arg1)); +} finally { Runtime.stackRestore(stack) } +} +btSerializer.prototype['allocate'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btSerializer__allocate_p2(this.ptr, arg0, arg1), Module['btChunk']); +} +btTriangleInfo.prototype['set_m_edgeV2V0Angle'] = function(arg0) { + _emscripten_bind_btTriangleInfo__set_m_edgeV2V0Angle_p1(this.ptr, arg0); +} +btTriangleInfo.prototype['__destroy__'] = function() { + _emscripten_bind_btTriangleInfo____destroy___p0(this.ptr); +} +btTriangleInfo.prototype['get_m_edgeV1V2Angle'] = function() { + return _emscripten_bind_btTriangleInfo__get_m_edgeV1V2Angle_p0(this.ptr); +} +btTriangleInfo.prototype['get_m_edgeV0V1Angle'] = function() { + return _emscripten_bind_btTriangleInfo__get_m_edgeV0V1Angle_p0(this.ptr); +} +btTriangleInfo.prototype['set_m_flags'] = function(arg0) { + _emscripten_bind_btTriangleInfo__set_m_flags_p1(this.ptr, arg0); +} +btTriangleInfo.prototype['set_m_edgeV0V1Angle'] = function(arg0) { + _emscripten_bind_btTriangleInfo__set_m_edgeV0V1Angle_p1(this.ptr, arg0); +} +btTriangleInfo.prototype['get_m_edgeV2V0Angle'] = function() { + return _emscripten_bind_btTriangleInfo__get_m_edgeV2V0Angle_p0(this.ptr); +} +btTriangleInfo.prototype['set_m_edgeV1V2Angle'] = function(arg0) { + _emscripten_bind_btTriangleInfo__set_m_edgeV1V2Angle_p1(this.ptr, arg0); +} +btTriangleInfo.prototype['get_m_flags'] = function() { + return _emscripten_bind_btTriangleInfo__get_m_flags_p0(this.ptr); +} +function btTriangleInfo() { + this.ptr = _emscripten_bind_btTriangleInfo__btTriangleInfo_p0(); + btTriangleInfo.prototype.__cache__[this.ptr] = this; + this.__class__ = btTriangleInfo; +} +btTriangleInfo.prototype.__cache__ = {}; +Module['btTriangleInfo'] = btTriangleInfo; +ClosestRayResultCallback.prototype['addSingleResult'] = function(arg0, arg1) { + return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1); +} +ClosestRayResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +ClosestRayResultCallback.prototype['get_m_rayToWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayToWorld_p0(this.ptr), Module['btVector3']); +} +ClosestRayResultCallback.prototype['get_m_hitPointWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitPointWorld_p0(this.ptr), Module['btVector3']); +} +ClosestRayResultCallback.prototype['set_m_collisionObject'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionObject_p1(this.ptr, arg0.ptr); +} +ClosestRayResultCallback.prototype['get_m_collisionObject'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionObject_p0(this.ptr), Module['btCollisionObject']); +} +ClosestRayResultCallback.prototype['set_m_flags'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_flags_p1(this.ptr, arg0); +} +ClosestRayResultCallback.prototype['set_m_rayToWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayToWorld_p1(this.ptr, arg0.ptr); +} +ClosestRayResultCallback.prototype['get_m_rayFromWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_rayFromWorld_p0(this.ptr), Module['btVector3']); +} +ClosestRayResultCallback.prototype['needsCollision'] = function(arg0) { + return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__needsCollision_p1(this.ptr, arg0.ptr); +} +ClosestRayResultCallback.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterMask_p0(this.ptr); +} +ClosestRayResultCallback.prototype['get_m_closestHitFraction'] = function() { + return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_closestHitFraction_p0(this.ptr); +} +ClosestRayResultCallback.prototype['set_m_hitNormalWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitNormalWorld_p1(this.ptr, arg0.ptr); +} +ClosestRayResultCallback.prototype['set_m_hitPointWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_hitPointWorld_p1(this.ptr, arg0.ptr); +} +ClosestRayResultCallback.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback____destroy___p0(this.ptr); +} +ClosestRayResultCallback.prototype['get_m_flags'] = function() { + return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_flags_p0(this.ptr); +} +ClosestRayResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0); +} +ClosestRayResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +ClosestRayResultCallback.prototype['hasHit'] = function() { + return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__hasHit_p0(this.ptr); +} +ClosestRayResultCallback.prototype['get_m_hitNormalWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_hitNormalWorld_p0(this.ptr), Module['btVector3']); +} +function ClosestRayResultCallback(arg0, arg1) { + this.ptr = _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__ClosestRayResultCallback_p2(arg0.ptr, arg1.ptr); + ClosestRayResultCallback.prototype.__cache__[this.ptr] = this; + this.__class__ = ClosestRayResultCallback; +} +ClosestRayResultCallback.prototype.__cache__ = {}; +Module['ClosestRayResultCallback'] = ClosestRayResultCallback; +ClosestRayResultCallback.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__get_m_collisionFilterGroup_p0(this.ptr); +} +ClosestRayResultCallback.prototype['set_m_rayFromWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestRayResultCallback__set_m_rayFromWorld_p1(this.ptr, arg0.ptr); +} +LocalRayResult.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionWorld__LocalRayResult____destroy___p0(this.ptr); +} +LocalRayResult.prototype['set_m_localShapeInfo'] = function(arg0) { + _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_localShapeInfo_p1(this.ptr, arg0.ptr); +} +LocalRayResult.prototype['get_m_hitNormalLocal'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitNormalLocal_p0(this.ptr), Module['btVector3']); +} +LocalRayResult.prototype['set_m_hitNormalLocal'] = function(arg0) { + _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitNormalLocal_p1(this.ptr, arg0.ptr); +} +LocalRayResult.prototype['set_m_hitFraction'] = function(arg0) { + _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_hitFraction_p1(this.ptr, arg0); +} +LocalRayResult.prototype['get_m_hitFraction'] = function() { + return _emscripten_bind_btCollisionWorld__LocalRayResult__get_m_hitFraction_p0(this.ptr); +} +function LocalRayResult(arg0, arg1, arg2, arg3) { + this.ptr = _emscripten_bind_btCollisionWorld__LocalRayResult__LocalRayResult_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3); + LocalRayResult.prototype.__cache__[this.ptr] = this; + this.__class__ = LocalRayResult; +} +LocalRayResult.prototype.__cache__ = {}; +Module['LocalRayResult'] = LocalRayResult; +LocalRayResult.prototype['get_m_localShapeInfo'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_localShapeInfo_p0(this.ptr), Module['LocalShapeInfo']); +} +LocalRayResult.prototype['set_m_collisionObject'] = function(arg0) { + _emscripten_bind_btCollisionWorld__LocalRayResult__set_m_collisionObject_p1(this.ptr, arg0.ptr); +} +LocalRayResult.prototype['get_m_collisionObject'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__LocalRayResult__get_m_collisionObject_p0(this.ptr), Module['btCollisionObject']); +} +btHinge2Constraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btHinge2Constraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btHinge2Constraint__buildJacobian_p0(this.ptr); +} +btHinge2Constraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btHinge2Constraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btHinge2Constraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btHinge2Constraint.prototype['getUid'] = function() { + return _emscripten_bind_btHinge2Constraint__getUid_p0(this.ptr); +} +btHinge2Constraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__set_m_objectType_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setEnabled_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['getFrameOffsetA'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']); +} +btHinge2Constraint.prototype['getRelativePivotPosition'] = function(arg0) { + return _emscripten_bind_btHinge2Constraint__getRelativePivotPosition_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btHinge2Constraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btHinge2Constraint.prototype['getCalculatedTransformB'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']); +} +btHinge2Constraint.prototype['getCalculatedTransformA'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']); +} +btHinge2Constraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btHinge2Constraint__getUserConstraintId_p0(this.ptr); +} +btHinge2Constraint.prototype['setUpperLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setUpperLimit_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btHinge2Constraint__get_m_objectType_p0(this.ptr); +} +btHinge2Constraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btHinge2Constraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btHinge2Constraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btHinge2Constraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btHinge2Constraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btHinge2Constraint__getParam_p2(this.ptr, arg0, arg1); +} +btHinge2Constraint.prototype['setDamping'] = function(arg0, arg1) { + _emscripten_bind_btHinge2Constraint__setDamping_p2(this.ptr, arg0, arg1); +} +btHinge2Constraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['calcAnchorPos'] = function() { + _emscripten_bind_btHinge2Constraint__calcAnchorPos_p0(this.ptr); +} +btHinge2Constraint.prototype['getAngularLowerLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__getAngularLowerLimit_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btHinge2Constraint__calculateSerializeBufferSize_p0(this.ptr); +} +btHinge2Constraint.prototype['setEquilibriumPoint'] = function(arg0, arg1) { + if (arg0 === undefined) + _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p0(this.ptr); + else if (arg1 === undefined) + _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p1(this.ptr, arg0); + else + _emscripten_bind_btHinge2Constraint__setEquilibriumPoint_p2(this.ptr, arg0, arg1); +} +btHinge2Constraint.prototype['getAxis'] = function(arg0) { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getAxis_p1(this.ptr, arg0), Module['btVector3']); +} +btHinge2Constraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btHinge2Constraint__internalGetAppliedImpulse_p0(this.ptr); +} +btHinge2Constraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btHinge2Constraint__isEnabled_p0(this.ptr); +} +btHinge2Constraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setUserConstraintId_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['getLinearUpperLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__getLinearUpperLimit_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btHinge2Constraint__getConstraintType_p0(this.ptr); +} +btHinge2Constraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__enableFeedback_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['getAnchor'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getAnchor_p0(this.ptr), Module['btVector3']); +} +btHinge2Constraint.prototype['setUseFrameOffset'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setUseFrameOffset_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['isLimited'] = function(arg0) { + return _emscripten_bind_btHinge2Constraint__isLimited_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['getAngle2'] = function() { + return _emscripten_bind_btHinge2Constraint__getAngle2_p0(this.ptr); +} +btHinge2Constraint.prototype['getRotationalLimitMotor'] = function(arg0) { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getRotationalLimitMotor_p1(this.ptr, arg0), Module['btRotationalLimitMotor']); +} +btHinge2Constraint.prototype['getAngle1'] = function() { + return _emscripten_bind_btHinge2Constraint__getAngle1_p0(this.ptr); +} +btHinge2Constraint.prototype['getInfo1NonVirtual'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['getFrameOffsetB'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']); +} +btHinge2Constraint.prototype['setLinearLowerLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setLinearLowerLimit_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['getAnchor2'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getAnchor2_p0(this.ptr), Module['btVector3']); +} +btHinge2Constraint.prototype['__destroy__'] = function() { + _emscripten_bind_btHinge2Constraint____destroy___p0(this.ptr); +} +btHinge2Constraint.prototype['getLinearLowerLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__getLinearLowerLimit_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['setFrames'] = function(arg0, arg1) { + _emscripten_bind_btHinge2Constraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btHinge2Constraint.prototype['getUseFrameOffset'] = function() { + return _emscripten_bind_btHinge2Constraint__getUseFrameOffset_p0(this.ptr); +} +btHinge2Constraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setUserConstraintType_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['enableSpring'] = function(arg0, arg1) { + _emscripten_bind_btHinge2Constraint__enableSpring_p2(this.ptr, arg0, arg1); +} +btHinge2Constraint.prototype['calculateTransforms'] = function(arg0, arg1) { + if (arg0 === undefined) + _emscripten_bind_btHinge2Constraint__calculateTransforms_p0(this.ptr); + else + _emscripten_bind_btHinge2Constraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btHinge2Constraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['setStiffness'] = function(arg0, arg1) { + _emscripten_bind_btHinge2Constraint__setStiffness_p2(this.ptr, arg0, arg1); +} +btHinge2Constraint.prototype['get_limit_motor_info2'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) { + if (arg11 === undefined) + return _emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p11(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10); + else + return _emscripten_bind_btHinge2Constraint__get_limit_motor_info2_p12(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10, arg11); +} +btHinge2Constraint.prototype['get_m_useSolveConstraintObsolete'] = function() { + return _emscripten_bind_btHinge2Constraint__get_m_useSolveConstraintObsolete_p0(this.ptr); +} +btHinge2Constraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btHinge2Constraint__getAppliedImpulse_p0(this.ptr); +} +btHinge2Constraint.prototype['setLimit'] = function(arg0, arg1, arg2) { + _emscripten_bind_btHinge2Constraint__setLimit_p3(this.ptr, arg0, arg1, arg2); +} +btHinge2Constraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['getTranslationalLimitMotor'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getTranslationalLimitMotor_p0(this.ptr), Module['btTranslationalLimitMotor']); +} +btHinge2Constraint.prototype['setLowerLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setLowerLimit_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btHinge2Constraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btHinge2Constraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btHinge2Constraint__needsFeedback_p0(this.ptr); +} +btHinge2Constraint.prototype['getAngle'] = function(arg0) { + return _emscripten_bind_btHinge2Constraint__getAngle_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['updateRHS'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__updateRHS_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + _emscripten_bind_btHinge2Constraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr); +} +btHinge2Constraint.prototype['getAngularUpperLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__getAngularUpperLimit_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['setAngularLowerLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setAngularLowerLimit_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btHinge2Constraint__getObjectType_p0(this.ptr); +} +btHinge2Constraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btHinge2Constraint__getUserConstraintType_p0(this.ptr); +} +btHinge2Constraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btHinge2Constraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btHinge2Constraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btHinge2Constraint__getDbgDrawSize_p0(this.ptr); +} +btHinge2Constraint.prototype['getAxis1'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getAxis1_p0(this.ptr), Module['btVector3']); +} +btHinge2Constraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btHinge2Constraint__getUserConstraintPtr_p0(this.ptr); +} +btHinge2Constraint.prototype['getAxis2'] = function() { + return wrapPointer(_emscripten_bind_btHinge2Constraint__getAxis2_p0(this.ptr), Module['btVector3']); +} +function btHinge2Constraint(arg0, arg1, arg2, arg3, arg4) { + this.ptr = _emscripten_bind_btHinge2Constraint__btHinge2Constraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); + btHinge2Constraint.prototype.__cache__[this.ptr] = this; + this.__class__ = btHinge2Constraint; +} +btHinge2Constraint.prototype.__cache__ = {}; +Module['btHinge2Constraint'] = btHinge2Constraint; +btHinge2Constraint.prototype['setLinearUpperLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setLinearUpperLimit_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['setAngularUpperLimit'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setAngularUpperLimit_p1(this.ptr, arg0.ptr); +} +btHinge2Constraint.prototype['setAxis'] = function(arg0, arg1) { + _emscripten_bind_btHinge2Constraint__setAxis_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btHinge2Constraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btHinge2Constraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +btHinge2Constraint.prototype['testAngularLimitMotor'] = function(arg0) { + return _emscripten_bind_btHinge2Constraint__testAngularLimitMotor_p1(this.ptr, arg0); +} +function btConstraintSolver(){ throw "btConstraintSolver is abstract!" } +btConstraintSolver.prototype.__cache__ = {}; +Module['btConstraintSolver'] = btConstraintSolver; +btConstraintSolver.prototype['reset'] = function() { + _emscripten_bind_btConstraintSolver__reset_p0(this.ptr); +} +btConstraintSolver.prototype['allSolved'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConstraintSolver__allSolved_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConstraintSolver.prototype['solveGroup'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + return _emscripten_bind_btConstraintSolver__solveGroup_p10(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3, arg4.ptr, arg5, arg6.ptr, arg7.ptr, arg8.ptr, arg9.ptr); +} +btConstraintSolver.prototype['prepareSolve'] = function(arg0, arg1) { + _emscripten_bind_btConstraintSolver__prepareSolve_p2(this.ptr, arg0, arg1); +} +btRaycastVehicle.prototype['updateSuspension'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__updateSuspension_p1(this.ptr, arg0); +} +btRaycastVehicle.prototype['getRigidBody'] = function() { + return wrapPointer(_emscripten_bind_btRaycastVehicle__getRigidBody_p0(this.ptr), Module['btRigidBody']); +} +btRaycastVehicle.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btRaycastVehicle__getUserConstraintId_p0(this.ptr); +} +btRaycastVehicle.prototype['getWheelTransformWS'] = function(arg0) { + return wrapPointer(_emscripten_bind_btRaycastVehicle__getWheelTransformWS_p1(this.ptr, arg0), Module['btTransform']); +} +btRaycastVehicle.prototype['addWheel'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + return wrapPointer(_emscripten_bind_btRaycastVehicle__addWheel_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4, arg5.ptr, arg6), Module['btWheelInfo']); +} +btRaycastVehicle.prototype['updateWheelTransform'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btRaycastVehicle__updateWheelTransform_p1(this.ptr, arg0); + else + _emscripten_bind_btRaycastVehicle__updateWheelTransform_p2(this.ptr, arg0, arg1); +} +btRaycastVehicle.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__setUserConstraintId_p1(this.ptr, arg0); +} +btRaycastVehicle.prototype['getNumWheels'] = function() { + return _emscripten_bind_btRaycastVehicle__getNumWheels_p0(this.ptr); +} +btRaycastVehicle.prototype['rayCast'] = function(arg0) { + return _emscripten_bind_btRaycastVehicle__rayCast_p1(this.ptr, arg0.ptr); +} +btRaycastVehicle.prototype['getRightAxis'] = function() { + return _emscripten_bind_btRaycastVehicle__getRightAxis_p0(this.ptr); +} +btRaycastVehicle.prototype['applyEngineForce'] = function(arg0, arg1) { + _emscripten_bind_btRaycastVehicle__applyEngineForce_p2(this.ptr, arg0, arg1); +} +btRaycastVehicle.prototype['getForwardVector'] = function() { + return wrapPointer(_emscripten_bind_btRaycastVehicle__getForwardVector_p0(this.ptr), Module['btVector3']); +} +btRaycastVehicle.prototype['getWheelInfo'] = function(arg0) { + return wrapPointer(_emscripten_bind_btRaycastVehicle__getWheelInfo_p1(this.ptr, arg0), Module['btWheelInfo']); +} +btRaycastVehicle.prototype['getChassisWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btRaycastVehicle__getChassisWorldTransform_p0(this.ptr), Module['btTransform']); +} +btRaycastVehicle.prototype['updateWheelTransformsWS'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btRaycastVehicle__updateWheelTransformsWS_p2(this.ptr, arg0.ptr, arg1); +} +btRaycastVehicle.prototype['resetSuspension'] = function() { + _emscripten_bind_btRaycastVehicle__resetSuspension_p0(this.ptr); +} +btRaycastVehicle.prototype['setCoordinateSystem'] = function(arg0, arg1, arg2) { + _emscripten_bind_btRaycastVehicle__setCoordinateSystem_p3(this.ptr, arg0, arg1, arg2); +} +btRaycastVehicle.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__setUserConstraintType_p1(this.ptr, arg0); +} +btRaycastVehicle.prototype['debugDraw'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__debugDraw_p1(this.ptr, arg0.ptr); +} +btRaycastVehicle.prototype['__destroy__'] = function() { + _emscripten_bind_btRaycastVehicle____destroy___p0(this.ptr); +} +btRaycastVehicle.prototype['updateFriction'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__updateFriction_p1(this.ptr, arg0); +} +function btRaycastVehicle(arg0, arg1, arg2) { + this.ptr = _emscripten_bind_btRaycastVehicle__btRaycastVehicle_p3(arg0.ptr, arg1.ptr, arg2.ptr); + btRaycastVehicle.prototype.__cache__[this.ptr] = this; + this.__class__ = btRaycastVehicle; +} +btRaycastVehicle.prototype.__cache__ = {}; +Module['btRaycastVehicle'] = btRaycastVehicle; +btRaycastVehicle.prototype['getForwardAxis'] = function() { + return _emscripten_bind_btRaycastVehicle__getForwardAxis_p0(this.ptr); +} +btRaycastVehicle.prototype['getSteeringValue'] = function(arg0) { + return _emscripten_bind_btRaycastVehicle__getSteeringValue_p1(this.ptr, arg0); +} +btRaycastVehicle.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btRaycastVehicle__getUserConstraintType_p0(this.ptr); +} +btRaycastVehicle.prototype['getUpAxis'] = function() { + return _emscripten_bind_btRaycastVehicle__getUpAxis_p0(this.ptr); +} +btRaycastVehicle.prototype['setPitchControl'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__setPitchControl_p1(this.ptr, arg0); +} +btRaycastVehicle.prototype['getCurrentSpeedKmHour'] = function() { + return _emscripten_bind_btRaycastVehicle__getCurrentSpeedKmHour_p0(this.ptr); +} +btRaycastVehicle.prototype['setBrake'] = function(arg0, arg1) { + _emscripten_bind_btRaycastVehicle__setBrake_p2(this.ptr, arg0, arg1); +} +btRaycastVehicle.prototype['setSteeringValue'] = function(arg0, arg1) { + _emscripten_bind_btRaycastVehicle__setSteeringValue_p2(this.ptr, arg0, arg1); +} +btRaycastVehicle.prototype['updateVehicle'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__updateVehicle_p1(this.ptr, arg0); +} +btRaycastVehicle.prototype['updateAction'] = function(arg0, arg1) { + _emscripten_bind_btRaycastVehicle__updateAction_p2(this.ptr, arg0.ptr, arg1); +} +AllHitsRayResultCallback.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback____destroy___p0(this.ptr); +} +AllHitsRayResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +AllHitsRayResultCallback.prototype['needsCollision'] = function(arg0) { + return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__needsCollision_p1(this.ptr, arg0.ptr); +} +AllHitsRayResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) { + _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0); +} +AllHitsRayResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +AllHitsRayResultCallback.prototype['get_m_closestHitFraction'] = function() { + return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_closestHitFraction_p0(this.ptr); +} +AllHitsRayResultCallback.prototype['addSingleResult'] = function(arg0, arg1) { + return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1); +} +AllHitsRayResultCallback.prototype['set_m_rayToWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayToWorld_p1(this.ptr, arg0.ptr); +} +AllHitsRayResultCallback.prototype['set_m_flags'] = function(arg0) { + _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_flags_p1(this.ptr, arg0); +} +AllHitsRayResultCallback.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterMask_p0(this.ptr); +} +AllHitsRayResultCallback.prototype['get_m_rayToWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayToWorld_p0(this.ptr), Module['btVector3']); +} +AllHitsRayResultCallback.prototype['get_m_flags'] = function() { + return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_flags_p0(this.ptr); +} +AllHitsRayResultCallback.prototype['get_m_rayFromWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_rayFromWorld_p0(this.ptr), Module['btVector3']); +} +AllHitsRayResultCallback.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionFilterGroup_p0(this.ptr); +} +AllHitsRayResultCallback.prototype['hasHit'] = function() { + return _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__hasHit_p0(this.ptr); +} +AllHitsRayResultCallback.prototype['set_m_collisionObject'] = function(arg0) { + _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_collisionObject_p1(this.ptr, arg0.ptr); +} +AllHitsRayResultCallback.prototype['set_m_rayFromWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__set_m_rayFromWorld_p1(this.ptr, arg0.ptr); +} +function AllHitsRayResultCallback(arg0, arg1) { + this.ptr = _emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__AllHitsRayResultCallback_p2(arg0.ptr, arg1.ptr); + AllHitsRayResultCallback.prototype.__cache__[this.ptr] = this; + this.__class__ = AllHitsRayResultCallback; +} +AllHitsRayResultCallback.prototype.__cache__ = {}; +Module['AllHitsRayResultCallback'] = AllHitsRayResultCallback; +AllHitsRayResultCallback.prototype['get_m_collisionObject'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__AllHitsRayResultCallback__get_m_collisionObject_p0(this.ptr), Module['btCollisionObject']); +} +btCylinderShapeX.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btCylinderShapeX__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btCylinderShapeX.prototype['isCompound'] = function() { + return _emscripten_bind_btCylinderShapeX__isCompound_p0(this.ptr); +} +btCylinderShapeX.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShapeX__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShapeX.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btCylinderShapeX__setUserPointer_p1(this.ptr, arg0); +} +btCylinderShapeX.prototype['getUpAxis'] = function() { + return _emscripten_bind_btCylinderShapeX__getUpAxis_p0(this.ptr); +} +btCylinderShapeX.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btCylinderShapeX__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btCylinderShapeX.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeX__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeX.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btCylinderShapeX__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btCylinderShapeX.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btCylinderShapeX__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btCylinderShapeX.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btCylinderShapeX__isPolyhedral_p0(this.ptr); +} +btCylinderShapeX.prototype['getRadius'] = function() { + return _emscripten_bind_btCylinderShapeX__getRadius_p0(this.ptr); +} +btCylinderShapeX.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShapeX__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCylinderShapeX.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btCylinderShapeX__calculateSerializeBufferSize_p0(this.ptr); +} +btCylinderShapeX.prototype['getName'] = function() { + return _emscripten_bind_btCylinderShapeX__getName_p0(this.ptr); +} +btCylinderShapeX.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeX__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeX.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShapeX.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShapeX__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShapeX.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btCylinderShapeX__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btCylinderShapeX.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShapeX__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCylinderShapeX.prototype['getMarginNV'] = function() { + return _emscripten_bind_btCylinderShapeX__getMarginNV_p0(this.ptr); +} +btCylinderShapeX.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShapeX__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShapeX.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btCylinderShapeX__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btCylinderShapeX.prototype['isConvex'] = function() { + return _emscripten_bind_btCylinderShapeX__isConvex_p0(this.ptr); +} +btCylinderShapeX.prototype['isInfinite'] = function() { + return _emscripten_bind_btCylinderShapeX__isInfinite_p0(this.ptr); +} +btCylinderShapeX.prototype['getUserPointer'] = function() { + return _emscripten_bind_btCylinderShapeX__getUserPointer_p0(this.ptr); +} +btCylinderShapeX.prototype['isNonMoving'] = function() { + return _emscripten_bind_btCylinderShapeX__isNonMoving_p0(this.ptr); +} +btCylinderShapeX.prototype['getMargin'] = function() { + return _emscripten_bind_btCylinderShapeX__getMargin_p0(this.ptr); +} +btCylinderShapeX.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btCylinderShapeX__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btCylinderShapeX.prototype['getHalfExtentsWithoutMargin'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeX__getHalfExtentsWithoutMargin_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeX.prototype['isConvex2d'] = function() { + return _emscripten_bind_btCylinderShapeX__isConvex2d_p0(this.ptr); +} +btCylinderShapeX.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btCylinderShapeX__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btCylinderShapeX.prototype['isSoftBody'] = function() { + return _emscripten_bind_btCylinderShapeX__isSoftBody_p0(this.ptr); +} +btCylinderShapeX.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btCylinderShapeX__getMarginNonVirtual_p0(this.ptr); +} +btCylinderShapeX.prototype['__destroy__'] = function() { + _emscripten_bind_btCylinderShapeX____destroy___p0(this.ptr); +} +btCylinderShapeX.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btCylinderShapeX.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeX__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeX.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btCylinderShapeX__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btCylinderShapeX.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btCylinderShapeX__getAngularMotionDisc_p0(this.ptr); +} +function btCylinderShapeX(arg0) { + this.ptr = _emscripten_bind_btCylinderShapeX__btCylinderShapeX_p1(arg0.ptr); + btCylinderShapeX.prototype.__cache__[this.ptr] = this; + this.__class__ = btCylinderShapeX; +} +btCylinderShapeX.prototype.__cache__ = {}; +Module['btCylinderShapeX'] = btCylinderShapeX; +btCylinderShapeX.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShapeX__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCylinderShapeX.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btCylinderShapeX__setMargin_p1(this.ptr, arg0); +} +btCylinderShapeX.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btCylinderShapeX__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btCylinderShapeX.prototype['getHalfExtentsWithMargin'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeX__getHalfExtentsWithMargin_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeX.prototype['isConcave'] = function() { + return _emscripten_bind_btCylinderShapeX__isConcave_p0(this.ptr); +} +btCylinderShapeX.prototype['getShapeType'] = function() { + return _emscripten_bind_btCylinderShapeX__getShapeType_p0(this.ptr); +} +function RayResultCallback(){ throw "RayResultCallback is abstract!" } +RayResultCallback.prototype.__cache__ = {}; +Module['RayResultCallback'] = RayResultCallback; +RayResultCallback.prototype['get_m_closestHitFraction'] = function() { + return _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_closestHitFraction_p0(this.ptr); +} +RayResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +RayResultCallback.prototype['get_m_flags'] = function() { + return _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_flags_p0(this.ptr); +} +RayResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) { + _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0); +} +RayResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +RayResultCallback.prototype['set_m_flags'] = function(arg0) { + _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_flags_p1(this.ptr, arg0); +} +RayResultCallback.prototype['hasHit'] = function() { + return _emscripten_bind_btCollisionWorld__RayResultCallback__hasHit_p0(this.ptr); +} +RayResultCallback.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterMask_p0(this.ptr); +} +RayResultCallback.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionFilterGroup_p0(this.ptr); +} +RayResultCallback.prototype['addSingleResult'] = function(arg0, arg1) { + return _emscripten_bind_btCollisionWorld__RayResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1); +} +RayResultCallback.prototype['set_m_collisionObject'] = function(arg0) { + _emscripten_bind_btCollisionWorld__RayResultCallback__set_m_collisionObject_p1(this.ptr, arg0.ptr); +} +RayResultCallback.prototype['needsCollision'] = function(arg0) { + return _emscripten_bind_btCollisionWorld__RayResultCallback__needsCollision_p1(this.ptr, arg0.ptr); +} +RayResultCallback.prototype['get_m_collisionObject'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__RayResultCallback__get_m_collisionObject_p0(this.ptr), Module['btCollisionObject']); +} +btUniformScalingShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btUniformScalingShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btUniformScalingShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btUniformScalingShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btUniformScalingShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btUniformScalingShape__setUserPointer_p1(this.ptr, arg0); +} +btUniformScalingShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btUniformScalingShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btUniformScalingShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btUniformScalingShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btUniformScalingShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btUniformScalingShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btUniformScalingShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btUniformScalingShape__isPolyhedral_p0(this.ptr); +} +btUniformScalingShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btUniformScalingShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btUniformScalingShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btUniformScalingShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btUniformScalingShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btUniformScalingShape__calculateSerializeBufferSize_p0(this.ptr); +} +btUniformScalingShape.prototype['getName'] = function() { + return _emscripten_bind_btUniformScalingShape__getName_p0(this.ptr); +} +btUniformScalingShape.prototype['isCompound'] = function() { + return _emscripten_bind_btUniformScalingShape__isCompound_p0(this.ptr); +} +btUniformScalingShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btUniformScalingShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btUniformScalingShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btUniformScalingShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btUniformScalingShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btUniformScalingShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btUniformScalingShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btUniformScalingShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btUniformScalingShape.prototype['getChildShape'] = function() { + return wrapPointer(_emscripten_bind_btUniformScalingShape__getChildShape_p0(this.ptr), Module['btConvexShape']); +} +btUniformScalingShape.prototype['isConvex'] = function() { + return _emscripten_bind_btUniformScalingShape__isConvex_p0(this.ptr); +} +btUniformScalingShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btUniformScalingShape__isInfinite_p0(this.ptr); +} +btUniformScalingShape.prototype['__destroy__'] = function() { + _emscripten_bind_btUniformScalingShape____destroy___p0(this.ptr); +} +btUniformScalingShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btUniformScalingShape__getUserPointer_p0(this.ptr); +} +btUniformScalingShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btUniformScalingShape__isNonMoving_p0(this.ptr); +} +btUniformScalingShape.prototype['getMargin'] = function() { + return _emscripten_bind_btUniformScalingShape__getMargin_p0(this.ptr); +} +btUniformScalingShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btUniformScalingShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btUniformScalingShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btUniformScalingShape__setMargin_p1(this.ptr, arg0); +} +btUniformScalingShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btUniformScalingShape__isConvex2d_p0(this.ptr); +} +btUniformScalingShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btUniformScalingShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btUniformScalingShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btUniformScalingShape__isSoftBody_p0(this.ptr); +} +btUniformScalingShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btUniformScalingShape__getMarginNonVirtual_p0(this.ptr); +} +btUniformScalingShape.prototype['getUniformScalingFactor'] = function() { + return _emscripten_bind_btUniformScalingShape__getUniformScalingFactor_p0(this.ptr); +} +btUniformScalingShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btUniformScalingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btUniformScalingShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btUniformScalingShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btUniformScalingShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btUniformScalingShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btUniformScalingShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btUniformScalingShape__getAngularMotionDisc_p0(this.ptr); +} +btUniformScalingShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btUniformScalingShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btUniformScalingShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btUniformScalingShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +function btUniformScalingShape(arg0, arg1) { + this.ptr = _emscripten_bind_btUniformScalingShape__btUniformScalingShape_p2(arg0.ptr, arg1); + btUniformScalingShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btUniformScalingShape; +} +btUniformScalingShape.prototype.__cache__ = {}; +Module['btUniformScalingShape'] = btUniformScalingShape; +btUniformScalingShape.prototype['isConcave'] = function() { + return _emscripten_bind_btUniformScalingShape__isConcave_p0(this.ptr); +} +btUniformScalingShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btUniformScalingShape__getShapeType_p0(this.ptr); +} +btVehicleRaycasterResult.prototype['__destroy__'] = function() { + _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult____destroy___p0(this.ptr); +} +function btVehicleRaycasterResult() { + this.ptr = _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__btVehicleRaycasterResult_p0(); + btVehicleRaycasterResult.prototype.__cache__[this.ptr] = this; + this.__class__ = btVehicleRaycasterResult; +} +btVehicleRaycasterResult.prototype.__cache__ = {}; +Module['btVehicleRaycasterResult'] = btVehicleRaycasterResult; +btVehicleRaycasterResult.prototype['set_m_distFraction'] = function(arg0) { + _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_distFraction_p1(this.ptr, arg0); +} +btVehicleRaycasterResult.prototype['get_m_hitNormalInWorld'] = function() { + return wrapPointer(_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitNormalInWorld_p0(this.ptr), Module['btVector3']); +} +btVehicleRaycasterResult.prototype['get_m_hitPointInWorld'] = function() { + return wrapPointer(_emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_hitPointInWorld_p0(this.ptr), Module['btVector3']); +} +btVehicleRaycasterResult.prototype['get_m_distFraction'] = function() { + return _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__get_m_distFraction_p0(this.ptr); +} +btVehicleRaycasterResult.prototype['set_m_hitNormalInWorld'] = function(arg0) { + _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitNormalInWorld_p1(this.ptr, arg0.ptr); +} +btVehicleRaycasterResult.prototype['set_m_hitPointInWorld'] = function(arg0) { + _emscripten_bind_btVehicleRaycaster__btVehicleRaycasterResult__set_m_hitPointInWorld_p1(this.ptr, arg0.ptr); +} +btQuadWord.prototype['__destroy__'] = function() { + _emscripten_bind_btQuadWord____destroy___p0(this.ptr); +} +btQuadWord.prototype['setMin'] = function(arg0) { + _emscripten_bind_btQuadWord__setMin_p1(this.ptr, arg0.ptr); +} +btQuadWord.prototype['setValue'] = function(arg0, arg1, arg2, arg3) { + if (arg3 === undefined) + _emscripten_bind_btQuadWord__setValue_p3(this.ptr, arg0, arg1, arg2); + else + _emscripten_bind_btQuadWord__setValue_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btQuadWord.prototype['setMax'] = function(arg0) { + _emscripten_bind_btQuadWord__setMax_p1(this.ptr, arg0.ptr); +} +btQuadWord.prototype['op_comp'] = function(arg0) { + return _emscripten_bind_btQuadWord__op_comp_p1(this.ptr, arg0.ptr); +} +btQuadWord.prototype['getX'] = function() { + return _emscripten_bind_btQuadWord__getX_p0(this.ptr); +} +btQuadWord.prototype['getY'] = function() { + return _emscripten_bind_btQuadWord__getY_p0(this.ptr); +} +btQuadWord.prototype['getZ'] = function() { + return _emscripten_bind_btQuadWord__getZ_p0(this.ptr); +} +btQuadWord.prototype['setW'] = function(arg0) { + _emscripten_bind_btQuadWord__setW_p1(this.ptr, arg0); +} +btQuadWord.prototype['op_set'] = function(arg0) { + return _emscripten_bind_btQuadWord__op_set_p1(this.ptr, arg0.ptr); +} +btQuadWord.prototype['w'] = function() { + return _emscripten_bind_btQuadWord__w_p0(this.ptr); +} +btQuadWord.prototype['y'] = function() { + return _emscripten_bind_btQuadWord__y_p0(this.ptr); +} +btQuadWord.prototype['x'] = function() { + return _emscripten_bind_btQuadWord__x_p0(this.ptr); +} +btQuadWord.prototype['z'] = function() { + return _emscripten_bind_btQuadWord__z_p0(this.ptr); +} +btQuadWord.prototype['setX'] = function(arg0) { + _emscripten_bind_btQuadWord__setX_p1(this.ptr, arg0); +} +btQuadWord.prototype['setY'] = function(arg0) { + _emscripten_bind_btQuadWord__setY_p1(this.ptr, arg0); +} +btQuadWord.prototype['setZ'] = function(arg0) { + _emscripten_bind_btQuadWord__setZ_p1(this.ptr, arg0); +} +function btQuadWord(arg0, arg1, arg2, arg3) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btQuadWord__btQuadWord_p0(); + else if (arg3 === undefined) + this.ptr = _emscripten_bind_btQuadWord__btQuadWord_p3(arg0, arg1, arg2); + else + this.ptr = _emscripten_bind_btQuadWord__btQuadWord_p4(arg0, arg1, arg2, arg3); + btQuadWord.prototype.__cache__[this.ptr] = this; + this.__class__ = btQuadWord; +} +btQuadWord.prototype.__cache__ = {}; +Module['btQuadWord'] = btQuadWord; +btCylinderShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btCylinderShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btCylinderShape.prototype['isCompound'] = function() { + return _emscripten_bind_btCylinderShape__isCompound_p0(this.ptr); +} +btCylinderShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btCylinderShape__setUserPointer_p1(this.ptr, arg0); +} +btCylinderShape.prototype['getUpAxis'] = function() { + return _emscripten_bind_btCylinderShape__getUpAxis_p0(this.ptr); +} +btCylinderShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btCylinderShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btCylinderShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btCylinderShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btCylinderShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btCylinderShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btCylinderShape__isPolyhedral_p0(this.ptr); +} +btCylinderShape.prototype['getRadius'] = function() { + return _emscripten_bind_btCylinderShape__getRadius_p0(this.ptr); +} +btCylinderShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCylinderShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btCylinderShape__calculateSerializeBufferSize_p0(this.ptr); +} +btCylinderShape.prototype['getName'] = function() { + return _emscripten_bind_btCylinderShape__getName_p0(this.ptr); +} +btCylinderShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btCylinderShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btCylinderShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btCylinderShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCylinderShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btCylinderShape__getMarginNV_p0(this.ptr); +} +btCylinderShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btCylinderShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btCylinderShape.prototype['isConvex'] = function() { + return _emscripten_bind_btCylinderShape__isConvex_p0(this.ptr); +} +btCylinderShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btCylinderShape__isInfinite_p0(this.ptr); +} +btCylinderShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btCylinderShape__getUserPointer_p0(this.ptr); +} +btCylinderShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btCylinderShape__isNonMoving_p0(this.ptr); +} +btCylinderShape.prototype['getMargin'] = function() { + return _emscripten_bind_btCylinderShape__getMargin_p0(this.ptr); +} +btCylinderShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btCylinderShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btCylinderShape.prototype['getHalfExtentsWithoutMargin'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShape__getHalfExtentsWithoutMargin_p0(this.ptr), Module['btVector3']); +} +btCylinderShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btCylinderShape__isConvex2d_p0(this.ptr); +} +btCylinderShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btCylinderShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btCylinderShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btCylinderShape__isSoftBody_p0(this.ptr); +} +btCylinderShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btCylinderShape__getMarginNonVirtual_p0(this.ptr); +} +btCylinderShape.prototype['__destroy__'] = function() { + _emscripten_bind_btCylinderShape____destroy___p0(this.ptr); +} +btCylinderShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btCylinderShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btCylinderShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btCylinderShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btCylinderShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btCylinderShape__getAngularMotionDisc_p0(this.ptr); +} +btCylinderShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btCylinderShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btCylinderShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCylinderShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btCylinderShape__setMargin_p1(this.ptr, arg0); +} +btCylinderShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btCylinderShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +function btCylinderShape(arg0) { + this.ptr = _emscripten_bind_btCylinderShape__btCylinderShape_p1(arg0.ptr); + btCylinderShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btCylinderShape; +} +btCylinderShape.prototype.__cache__ = {}; +Module['btCylinderShape'] = btCylinderShape; +btCylinderShape.prototype['getHalfExtentsWithMargin'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShape__getHalfExtentsWithMargin_p0(this.ptr), Module['btVector3']); +} +btCylinderShape.prototype['isConcave'] = function() { + return _emscripten_bind_btCylinderShape__isConcave_p0(this.ptr); +} +btCylinderShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btCylinderShape__getShapeType_p0(this.ptr); +} +function btStorageResult(){ throw "btStorageResult is abstract!" } +btStorageResult.prototype.__cache__ = {}; +Module['btStorageResult'] = btStorageResult; +btStorageResult.prototype['set_m_distance'] = function(arg0) { + _emscripten_bind_btStorageResult__set_m_distance_p1(this.ptr, arg0); +} +btStorageResult.prototype['set_m_closestPointInB'] = function(arg0) { + _emscripten_bind_btStorageResult__set_m_closestPointInB_p1(this.ptr, arg0.ptr); +} +btStorageResult.prototype['addContactPoint'] = function(arg0, arg1, arg2) { + _emscripten_bind_btStorageResult__addContactPoint_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btStorageResult.prototype['set_m_normalOnSurfaceB'] = function(arg0) { + _emscripten_bind_btStorageResult__set_m_normalOnSurfaceB_p1(this.ptr, arg0.ptr); +} +btStorageResult.prototype['get_m_distance'] = function() { + return _emscripten_bind_btStorageResult__get_m_distance_p0(this.ptr); +} +btStorageResult.prototype['setShapeIdentifiersB'] = function(arg0, arg1) { + _emscripten_bind_btStorageResult__setShapeIdentifiersB_p2(this.ptr, arg0, arg1); +} +btStorageResult.prototype['setShapeIdentifiersA'] = function(arg0, arg1) { + _emscripten_bind_btStorageResult__setShapeIdentifiersA_p2(this.ptr, arg0, arg1); +} +btStorageResult.prototype['get_m_closestPointInB'] = function() { + return wrapPointer(_emscripten_bind_btStorageResult__get_m_closestPointInB_p0(this.ptr), Module['btVector3']); +} +btStorageResult.prototype['get_m_normalOnSurfaceB'] = function() { + return wrapPointer(_emscripten_bind_btStorageResult__get_m_normalOnSurfaceB_p0(this.ptr), Module['btVector3']); +} +btDbvtProxy.prototype['get_m_clientObject'] = function() { + return _emscripten_bind_btDbvtProxy__get_m_clientObject_p0(this.ptr); +} +btDbvtProxy.prototype['get_stage'] = function() { + return _emscripten_bind_btDbvtProxy__get_stage_p0(this.ptr); +} +btDbvtProxy.prototype['set_stage'] = function(arg0) { + _emscripten_bind_btDbvtProxy__set_stage_p1(this.ptr, arg0); +} +btDbvtProxy.prototype['set_m_clientObject'] = function(arg0) { + _emscripten_bind_btDbvtProxy__set_m_clientObject_p1(this.ptr, arg0); +} +btDbvtProxy.prototype['get_leaf'] = function() { + return wrapPointer(_emscripten_bind_btDbvtProxy__get_leaf_p0(this.ptr), Module['btDbvtNode']); +} +btDbvtProxy.prototype['isCompound'] = function(arg0) { + return _emscripten_bind_btDbvtProxy__isCompound_p1(arg0); +} +btDbvtProxy.prototype['isPolyhedral'] = function(arg0) { + return _emscripten_bind_btDbvtProxy__isPolyhedral_p1(arg0); +} +btDbvtProxy.prototype['get_m_aabbMin'] = function() { + return wrapPointer(_emscripten_bind_btDbvtProxy__get_m_aabbMin_p0(this.ptr), Module['btVector3']); +} +btDbvtProxy.prototype['set_m_uniqueId'] = function(arg0) { + _emscripten_bind_btDbvtProxy__set_m_uniqueId_p1(this.ptr, arg0); +} +btDbvtProxy.prototype['isConvex'] = function(arg0) { + return _emscripten_bind_btDbvtProxy__isConvex_p1(arg0); +} +btDbvtProxy.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_btDbvtProxy__get_m_collisionFilterMask_p0(this.ptr); +} +btDbvtProxy.prototype['getUid'] = function() { + return _emscripten_bind_btDbvtProxy__getUid_p0(this.ptr); +} +btDbvtProxy.prototype['get_m_aabbMax'] = function() { + return wrapPointer(_emscripten_bind_btDbvtProxy__get_m_aabbMax_p0(this.ptr), Module['btVector3']); +} +btDbvtProxy.prototype['isNonMoving'] = function(arg0) { + return _emscripten_bind_btDbvtProxy__isNonMoving_p1(arg0); +} +btDbvtProxy.prototype['set_m_aabbMin'] = function(arg0) { + _emscripten_bind_btDbvtProxy__set_m_aabbMin_p1(this.ptr, arg0.ptr); +} +btDbvtProxy.prototype['set_m_multiSapParentProxy'] = function(arg0) { + _emscripten_bind_btDbvtProxy__set_m_multiSapParentProxy_p1(this.ptr, arg0); +} +btDbvtProxy.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_btDbvtProxy__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +function btDbvtProxy(arg0, arg1, arg2, arg3, arg4) { + this.ptr = _emscripten_bind_btDbvtProxy__btDbvtProxy_p5(arg0.ptr, arg1.ptr, arg2, arg3, arg4); + btDbvtProxy.prototype.__cache__[this.ptr] = this; + this.__class__ = btDbvtProxy; +} +btDbvtProxy.prototype.__cache__ = {}; +Module['btDbvtProxy'] = btDbvtProxy; +btDbvtProxy.prototype['isSoftBody'] = function(arg0) { + return _emscripten_bind_btDbvtProxy__isSoftBody_p1(arg0); +} +btDbvtProxy.prototype['set_m_aabbMax'] = function(arg0) { + _emscripten_bind_btDbvtProxy__set_m_aabbMax_p1(this.ptr, arg0.ptr); +} +btDbvtProxy.prototype['__destroy__'] = function() { + _emscripten_bind_btDbvtProxy____destroy___p0(this.ptr); +} +btDbvtProxy.prototype['get_m_uniqueId'] = function() { + return _emscripten_bind_btDbvtProxy__get_m_uniqueId_p0(this.ptr); +} +btDbvtProxy.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_btDbvtProxy__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +btDbvtProxy.prototype['set_leaf'] = function(arg0) { + _emscripten_bind_btDbvtProxy__set_leaf_p1(this.ptr, arg0.ptr); +} +btDbvtProxy.prototype['isInfinite'] = function(arg0) { + return _emscripten_bind_btDbvtProxy__isInfinite_p1(arg0); +} +btDbvtProxy.prototype['isConcave'] = function(arg0) { + return _emscripten_bind_btDbvtProxy__isConcave_p1(arg0); +} +btDbvtProxy.prototype['get_m_multiSapParentProxy'] = function() { + return _emscripten_bind_btDbvtProxy__get_m_multiSapParentProxy_p0(this.ptr); +} +btDbvtProxy.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_btDbvtProxy__get_m_collisionFilterGroup_p0(this.ptr); +} +btDbvtProxy.prototype['isConvex2d'] = function(arg0) { + return _emscripten_bind_btDbvtProxy__isConvex2d_p1(arg0); +} +function ConcreteContactResultCallback() { + this.ptr = _emscripten_bind_ConcreteContactResultCallback__ConcreteContactResultCallback_p0(); + ConcreteContactResultCallback.prototype.__cache__[this.ptr] = this; + this.__class__ = ConcreteContactResultCallback; +} +ConcreteContactResultCallback.prototype.__cache__ = {}; +Module['ConcreteContactResultCallback'] = ConcreteContactResultCallback; +ConcreteContactResultCallback.prototype['__destroy__'] = function() { + _emscripten_bind_ConcreteContactResultCallback____destroy___p0(this.ptr); +} +ConcreteContactResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +ConcreteContactResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_ConcreteContactResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +ConcreteContactResultCallback.prototype['addSingleResult'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + return _emscripten_bind_ConcreteContactResultCallback__addSingleResult_p7(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4.ptr, arg5, arg6); +} +ConcreteContactResultCallback.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterMask_p0(this.ptr); +} +ConcreteContactResultCallback.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_ConcreteContactResultCallback__get_m_collisionFilterGroup_p0(this.ptr); +} +ConcreteContactResultCallback.prototype['needsCollision'] = function(arg0) { + return _emscripten_bind_ConcreteContactResultCallback__needsCollision_p1(this.ptr, arg0.ptr); +} +btSequentialImpulseConstraintSolver.prototype['reset'] = function() { + _emscripten_bind_btSequentialImpulseConstraintSolver__reset_p0(this.ptr); +} +btSequentialImpulseConstraintSolver.prototype['__destroy__'] = function() { + _emscripten_bind_btSequentialImpulseConstraintSolver____destroy___p0(this.ptr); +} +function btSequentialImpulseConstraintSolver() { + this.ptr = _emscripten_bind_btSequentialImpulseConstraintSolver__btSequentialImpulseConstraintSolver_p0(); + btSequentialImpulseConstraintSolver.prototype.__cache__[this.ptr] = this; + this.__class__ = btSequentialImpulseConstraintSolver; +} +btSequentialImpulseConstraintSolver.prototype.__cache__ = {}; +Module['btSequentialImpulseConstraintSolver'] = btSequentialImpulseConstraintSolver; +btSequentialImpulseConstraintSolver.prototype['prepareSolve'] = function(arg0, arg1) { + _emscripten_bind_btSequentialImpulseConstraintSolver__prepareSolve_p2(this.ptr, arg0, arg1); +} +btSequentialImpulseConstraintSolver.prototype['btRand2'] = function() { + return _emscripten_bind_btSequentialImpulseConstraintSolver__btRand2_p0(this.ptr); +} +btSequentialImpulseConstraintSolver.prototype['getRandSeed'] = function() { + return _emscripten_bind_btSequentialImpulseConstraintSolver__getRandSeed_p0(this.ptr); +} +btSequentialImpulseConstraintSolver.prototype['setRandSeed'] = function(arg0) { + _emscripten_bind_btSequentialImpulseConstraintSolver__setRandSeed_p1(this.ptr, arg0); +} +btSequentialImpulseConstraintSolver.prototype['allSolved'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSequentialImpulseConstraintSolver__allSolved_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btSequentialImpulseConstraintSolver.prototype['solveGroup'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + return _emscripten_bind_btSequentialImpulseConstraintSolver__solveGroup_p10(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3, arg4.ptr, arg5, arg6.ptr, arg7.ptr, arg8.ptr, arg9.ptr); +} +btSequentialImpulseConstraintSolver.prototype['btRandInt2'] = function(arg0) { + return _emscripten_bind_btSequentialImpulseConstraintSolver__btRandInt2_p1(this.ptr, arg0); +} +btSimpleDynamicsWorld.prototype['setGravity'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__setGravity_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['addAction'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__addAction_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['getSolverInfo'] = function() { + return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getSolverInfo_p0(this.ptr), Module['btContactSolverInfo']); +} +btSimpleDynamicsWorld.prototype['serialize'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__serialize_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['getDispatcher'] = function() { + return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']); +} +btSimpleDynamicsWorld.prototype['addRigidBody'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btSimpleDynamicsWorld__addRigidBody_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btSimpleDynamicsWorld.prototype['clearForces'] = function() { + _emscripten_bind_btSimpleDynamicsWorld__clearForces_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['removeVehicle'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__removeVehicle_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['getDebugDrawer'] = function() { + return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']); +} +btSimpleDynamicsWorld.prototype['setBroadphase'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__setBroadphase_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['performDiscreteCollisionDetection'] = function() { + _emscripten_bind_btSimpleDynamicsWorld__performDiscreteCollisionDetection_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['getCollisionObjectArray'] = function() { + return _emscripten_bind_btSimpleDynamicsWorld__getCollisionObjectArray_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSimpleDynamicsWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btSimpleDynamicsWorld.prototype['removeConstraint'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__removeConstraint_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['rayTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSimpleDynamicsWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btSimpleDynamicsWorld.prototype['getNumConstraints'] = function() { + return _emscripten_bind_btSimpleDynamicsWorld__getNumConstraints_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p1(this.ptr, arg0.ptr); + else if (arg2 === undefined) + _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1); + else + _emscripten_bind_btSimpleDynamicsWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btSimpleDynamicsWorld.prototype['removeRigidBody'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__removeRigidBody_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['contactTest'] = function(arg0, arg1) { + _emscripten_bind_btSimpleDynamicsWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btSimpleDynamicsWorld.prototype['setInternalTickCallback'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p1(this.ptr, arg0); + else if (arg2 === undefined) + _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btSimpleDynamicsWorld__setInternalTickCallback_p3(this.ptr, arg0, arg1, arg2); +} +btSimpleDynamicsWorld.prototype['getForceUpdateAllAabbs'] = function() { + return _emscripten_bind_btSimpleDynamicsWorld__getForceUpdateAllAabbs_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['updateAabbs'] = function() { + _emscripten_bind_btSimpleDynamicsWorld__updateAabbs_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['setDebugDrawer'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__setDebugDrawer_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['debugDrawWorld'] = function() { + _emscripten_bind_btSimpleDynamicsWorld__debugDrawWorld_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg4 === undefined) + _emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_btSimpleDynamicsWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); +} +btSimpleDynamicsWorld.prototype['getNumCollisionObjects'] = function() { + return _emscripten_bind_btSimpleDynamicsWorld__getNumCollisionObjects_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['setWorldUserInfo'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__setWorldUserInfo_p1(this.ptr, arg0); +} +btSimpleDynamicsWorld.prototype['addConstraint'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btSimpleDynamicsWorld__addConstraint_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btSimpleDynamicsWorld__addConstraint_p2(this.ptr, arg0.ptr, arg1); +} +btSimpleDynamicsWorld.prototype['getWorldUserInfo'] = function() { + return _emscripten_bind_btSimpleDynamicsWorld__getWorldUserInfo_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSimpleDynamicsWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btSimpleDynamicsWorld.prototype['getGravity'] = function() { + return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getGravity_p0(this.ptr), Module['btVector3']); +} +function btSimpleDynamicsWorld(arg0, arg1, arg2, arg3) { + this.ptr = _emscripten_bind_btSimpleDynamicsWorld__btSimpleDynamicsWorld_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + btSimpleDynamicsWorld.prototype.__cache__[this.ptr] = this; + this.__class__ = btSimpleDynamicsWorld; +} +btSimpleDynamicsWorld.prototype.__cache__ = {}; +Module['btSimpleDynamicsWorld'] = btSimpleDynamicsWorld; +btSimpleDynamicsWorld.prototype['getBroadphase'] = function() { + return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']); +} +btSimpleDynamicsWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btSimpleDynamicsWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr); +} +btSimpleDynamicsWorld.prototype['removeAction'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__removeAction_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0); +} +btSimpleDynamicsWorld.prototype['__destroy__'] = function() { + _emscripten_bind_btSimpleDynamicsWorld____destroy___p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['removeCharacter'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__removeCharacter_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['getConstraint'] = function(arg0) { + return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getConstraint_p1(this.ptr, arg0), Module['btTypedConstraint']); +} +btSimpleDynamicsWorld.prototype['getConstraintSolver'] = function() { + return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getConstraintSolver_p0(this.ptr), Module['btConstraintSolver']); +} +btSimpleDynamicsWorld.prototype['stepSimulation'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + return _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p1(this.ptr, arg0); + else if (arg2 === undefined) + return _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p2(this.ptr, arg0, arg1); + else + return _emscripten_bind_btSimpleDynamicsWorld__stepSimulation_p3(this.ptr, arg0, arg1, arg2); +} +btSimpleDynamicsWorld.prototype['addCharacter'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__addCharacter_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['getWorldType'] = function() { + return _emscripten_bind_btSimpleDynamicsWorld__getWorldType_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['updateSingleAabb'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__updateSingleAabb_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['addVehicle'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__addVehicle_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['getPairCache'] = function() { + return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btSimpleDynamicsWorld.prototype['synchronizeMotionStates'] = function() { + _emscripten_bind_btSimpleDynamicsWorld__synchronizeMotionStates_p0(this.ptr); +} +btSimpleDynamicsWorld.prototype['removeCollisionObject'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__removeCollisionObject_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['setConstraintSolver'] = function(arg0) { + _emscripten_bind_btSimpleDynamicsWorld__setConstraintSolver_p1(this.ptr, arg0.ptr); +} +btSimpleDynamicsWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + _emscripten_bind_btSimpleDynamicsWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7); +} +btSimpleDynamicsWorld.prototype['getDispatchInfo'] = function() { + return wrapPointer(_emscripten_bind_btSimpleDynamicsWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']); +} +btManifoldResult.prototype['__destroy__'] = function() { + _emscripten_bind_btManifoldResult____destroy___p0(this.ptr); +} +btManifoldResult.prototype['getPersistentManifold'] = function() { + return wrapPointer(_emscripten_bind_btManifoldResult__getPersistentManifold_p0(this.ptr), Module['btPersistentManifold']); +} +btManifoldResult.prototype['getBody0Internal'] = function() { + return wrapPointer(_emscripten_bind_btManifoldResult__getBody0Internal_p0(this.ptr), Module['btCollisionObject']); +} +btManifoldResult.prototype['addContactPoint'] = function(arg0, arg1, arg2) { + _emscripten_bind_btManifoldResult__addContactPoint_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btManifoldResult.prototype['getBody1Internal'] = function() { + return wrapPointer(_emscripten_bind_btManifoldResult__getBody1Internal_p0(this.ptr), Module['btCollisionObject']); +} +function btManifoldResult(arg0, arg1) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btManifoldResult__btManifoldResult_p0(); + else + this.ptr = _emscripten_bind_btManifoldResult__btManifoldResult_p2(arg0.ptr, arg1.ptr); + btManifoldResult.prototype.__cache__[this.ptr] = this; + this.__class__ = btManifoldResult; +} +btManifoldResult.prototype.__cache__ = {}; +Module['btManifoldResult'] = btManifoldResult; +btManifoldResult.prototype['setShapeIdentifiersB'] = function(arg0, arg1) { + _emscripten_bind_btManifoldResult__setShapeIdentifiersB_p2(this.ptr, arg0, arg1); +} +btManifoldResult.prototype['setShapeIdentifiersA'] = function(arg0, arg1) { + _emscripten_bind_btManifoldResult__setShapeIdentifiersA_p2(this.ptr, arg0, arg1); +} +btManifoldResult.prototype['refreshContactPoints'] = function() { + _emscripten_bind_btManifoldResult__refreshContactPoints_p0(this.ptr); +} +btManifoldResult.prototype['setPersistentManifold'] = function(arg0) { + _emscripten_bind_btManifoldResult__setPersistentManifold_p1(this.ptr, arg0.ptr); +} +btMultiSphereShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btMultiSphereShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btMultiSphereShape.prototype['isCompound'] = function() { + return _emscripten_bind_btMultiSphereShape__isCompound_p0(this.ptr); +} +btMultiSphereShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMultiSphereShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btMultiSphereShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btMultiSphereShape__setUserPointer_p1(this.ptr, arg0); +} +btMultiSphereShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btMultiSphereShape__getMarginNV_p0(this.ptr); +} +btMultiSphereShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btMultiSphereShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +function btMultiSphereShape(arg0, arg1, arg2) { + this.ptr = _emscripten_bind_btMultiSphereShape__btMultiSphereShape_p3(arg0.ptr, arg1, arg2); + btMultiSphereShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btMultiSphereShape; +} +btMultiSphereShape.prototype.__cache__ = {}; +Module['btMultiSphereShape'] = btMultiSphereShape; +btMultiSphereShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btMultiSphereShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btMultiSphereShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btMultiSphereShape__isPolyhedral_p0(this.ptr); +} +btMultiSphereShape.prototype['getSphereRadius'] = function(arg0) { + return _emscripten_bind_btMultiSphereShape__getSphereRadius_p1(this.ptr, arg0); +} +btMultiSphereShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMultiSphereShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btMultiSphereShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btMultiSphereShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btMultiSphereShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btMultiSphereShape__calculateSerializeBufferSize_p0(this.ptr); +} +btMultiSphereShape.prototype['getSphereCount'] = function() { + return _emscripten_bind_btMultiSphereShape__getSphereCount_p0(this.ptr); +} +btMultiSphereShape.prototype['getName'] = function() { + return _emscripten_bind_btMultiSphereShape__getName_p0(this.ptr); +} +btMultiSphereShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btMultiSphereShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btMultiSphereShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMultiSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btMultiSphereShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btMultiSphereShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btMultiSphereShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btMultiSphereShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btMultiSphereShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btMultiSphereShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btMultiSphereShape.prototype['getSpherePosition'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMultiSphereShape__getSpherePosition_p1(this.ptr, arg0), Module['btVector3']); +} +btMultiSphereShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btMultiSphereShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btMultiSphereShape.prototype['isConvex'] = function() { + return _emscripten_bind_btMultiSphereShape__isConvex_p0(this.ptr); +} +btMultiSphereShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btMultiSphereShape__isInfinite_p0(this.ptr); +} +btMultiSphereShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btMultiSphereShape__getUserPointer_p0(this.ptr); +} +btMultiSphereShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btMultiSphereShape__isNonMoving_p0(this.ptr); +} +btMultiSphereShape.prototype['getMargin'] = function() { + return _emscripten_bind_btMultiSphereShape__getMargin_p0(this.ptr); +} +btMultiSphereShape.prototype['recalcLocalAabb'] = function() { + _emscripten_bind_btMultiSphereShape__recalcLocalAabb_p0(this.ptr); +} +btMultiSphereShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btMultiSphereShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btMultiSphereShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btMultiSphereShape__setMargin_p1(this.ptr, arg0); +} +btMultiSphereShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btMultiSphereShape__isConvex2d_p0(this.ptr); +} +btMultiSphereShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btMultiSphereShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btMultiSphereShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btMultiSphereShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btMultiSphereShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btMultiSphereShape__isSoftBody_p0(this.ptr); +} +btMultiSphereShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btMultiSphereShape__getMarginNonVirtual_p0(this.ptr); +} +btMultiSphereShape.prototype['__destroy__'] = function() { + _emscripten_bind_btMultiSphereShape____destroy___p0(this.ptr); +} +btMultiSphereShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btMultiSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btMultiSphereShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btMultiSphereShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btMultiSphereShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btMultiSphereShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btMultiSphereShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btMultiSphereShape__getAngularMotionDisc_p0(this.ptr); +} +btMultiSphereShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btMultiSphereShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btMultiSphereShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btMultiSphereShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btMultiSphereShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btMultiSphereShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btMultiSphereShape.prototype['isConcave'] = function() { + return _emscripten_bind_btMultiSphereShape__isConcave_p0(this.ptr); +} +btMultiSphereShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btMultiSphereShape__getShapeType_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btHeightfieldTerrainShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btHeightfieldTerrainShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btHeightfieldTerrainShape__setUserPointer_p1(this.ptr, arg0); +} +btHeightfieldTerrainShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btHeightfieldTerrainShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btHeightfieldTerrainShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btHeightfieldTerrainShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +function btHeightfieldTerrainShape(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (arg7 === undefined) + this.ptr = _emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p7(arg0, arg1, arg2, arg3, arg4, arg5, arg6); + else + this.ptr = _emscripten_bind_btHeightfieldTerrainShape__btHeightfieldTerrainShape_p9(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); + btHeightfieldTerrainShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btHeightfieldTerrainShape; +} +btHeightfieldTerrainShape.prototype.__cache__ = {}; +Module['btHeightfieldTerrainShape'] = btHeightfieldTerrainShape; +btHeightfieldTerrainShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) { + _emscripten_bind_btHeightfieldTerrainShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btHeightfieldTerrainShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__calculateSerializeBufferSize_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['getName'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__getName_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['isCompound'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__isCompound_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__isPolyhedral_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btHeightfieldTerrainShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btHeightfieldTerrainShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btHeightfieldTerrainShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btHeightfieldTerrainShape.prototype['setUseDiamondSubdivision'] = function(arg0) { + if (arg0 === undefined) + _emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p0(this.ptr); + else + _emscripten_bind_btHeightfieldTerrainShape__setUseDiamondSubdivision_p1(this.ptr, arg0); +} +btHeightfieldTerrainShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btHeightfieldTerrainShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btHeightfieldTerrainShape.prototype['isConvex'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__isConvex_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__isInfinite_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__getUserPointer_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__isNonMoving_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['getMargin'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__getMargin_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btHeightfieldTerrainShape__setMargin_p1(this.ptr, arg0); +} +btHeightfieldTerrainShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__isConvex2d_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__isSoftBody_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['__destroy__'] = function() { + _emscripten_bind_btHeightfieldTerrainShape____destroy___p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btHeightfieldTerrainShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btHeightfieldTerrainShape.prototype['isConcave'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__isConcave_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__getAngularMotionDisc_p0(this.ptr); +} +btHeightfieldTerrainShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btHeightfieldTerrainShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btHeightfieldTerrainShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btHeightfieldTerrainShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btHeightfieldTerrainShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btHeightfieldTerrainShape__getShapeType_p0(this.ptr); +} +function btConvexInternalAabbCachingShape(){ throw "btConvexInternalAabbCachingShape is abstract!" } +btConvexInternalAabbCachingShape.prototype.__cache__ = {}; +Module['btConvexInternalAabbCachingShape'] = btConvexInternalAabbCachingShape; +btConvexInternalAabbCachingShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btConvexInternalAabbCachingShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btConvexInternalAabbCachingShape.prototype['isCompound'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__isCompound_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexInternalAabbCachingShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btConvexInternalAabbCachingShape__setUserPointer_p1(this.ptr, arg0); +} +btConvexInternalAabbCachingShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__getMarginNV_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConvexInternalAabbCachingShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConvexInternalAabbCachingShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btConvexInternalAabbCachingShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__isPolyhedral_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexInternalAabbCachingShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexInternalAabbCachingShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexInternalAabbCachingShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__calculateSerializeBufferSize_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['getName'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__getName_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btConvexInternalAabbCachingShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexInternalAabbCachingShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btConvexInternalAabbCachingShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btConvexInternalAabbCachingShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btConvexInternalAabbCachingShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btConvexInternalAabbCachingShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexInternalAabbCachingShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexInternalAabbCachingShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btConvexInternalAabbCachingShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btConvexInternalAabbCachingShape.prototype['isConvex'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__isConvex_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__isInfinite_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__getUserPointer_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__isNonMoving_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['getMargin'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__getMargin_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['recalcLocalAabb'] = function() { + _emscripten_bind_btConvexInternalAabbCachingShape__recalcLocalAabb_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btConvexInternalAabbCachingShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btConvexInternalAabbCachingShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btConvexInternalAabbCachingShape__setMargin_p1(this.ptr, arg0); +} +btConvexInternalAabbCachingShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__isConvex2d_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexInternalAabbCachingShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__isSoftBody_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__getMarginNonVirtual_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['__destroy__'] = function() { + _emscripten_bind_btConvexInternalAabbCachingShape____destroy___p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexInternalAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConvexInternalAabbCachingShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btConvexInternalAabbCachingShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btConvexInternalAabbCachingShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btConvexInternalAabbCachingShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btConvexInternalAabbCachingShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__getAngularMotionDisc_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btConvexInternalAabbCachingShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btConvexInternalAabbCachingShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexInternalAabbCachingShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexInternalAabbCachingShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btConvexInternalAabbCachingShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btConvexInternalAabbCachingShape.prototype['isConcave'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__isConcave_p0(this.ptr); +} +btConvexInternalAabbCachingShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btConvexInternalAabbCachingShape__getShapeType_p0(this.ptr); +} +function btConvexShape(){ throw "btConvexShape is abstract!" } +btConvexShape.prototype.__cache__ = {}; +Module['btConvexShape'] = btConvexShape; +btConvexShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btConvexShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btConvexShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btConvexShape__setUserPointer_p1(this.ptr, arg0); +} +btConvexShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConvexShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConvexShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btConvexShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btConvexShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btConvexShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btConvexShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btConvexShape__isPolyhedral_p0(this.ptr); +} +btConvexShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConvexShape__calculateSerializeBufferSize_p0(this.ptr); +} +btConvexShape.prototype['getName'] = function() { + return _emscripten_bind_btConvexShape__getName_p0(this.ptr); +} +btConvexShape.prototype['isCompound'] = function() { + return _emscripten_bind_btConvexShape__isCompound_p0(this.ptr); +} +btConvexShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btConvexShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btConvexShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btConvexShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btConvexShape.prototype['isConvex'] = function() { + return _emscripten_bind_btConvexShape__isConvex_p0(this.ptr); +} +btConvexShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btConvexShape__isInfinite_p0(this.ptr); +} +btConvexShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btConvexShape__getUserPointer_p0(this.ptr); +} +btConvexShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btConvexShape__isNonMoving_p0(this.ptr); +} +btConvexShape.prototype['getMargin'] = function() { + return _emscripten_bind_btConvexShape__getMargin_p0(this.ptr); +} +btConvexShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btConvexShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btConvexShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btConvexShape__setMargin_p1(this.ptr, arg0); +} +btConvexShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btConvexShape__isConvex2d_p0(this.ptr); +} +btConvexShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btConvexShape__isSoftBody_p0(this.ptr); +} +btConvexShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btConvexShape__getMarginNonVirtual_p0(this.ptr); +} +btConvexShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConvexShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btConvexShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btConvexShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btConvexShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btConvexShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btConvexShape__getAngularMotionDisc_p0(this.ptr); +} +btConvexShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btConvexShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btConvexShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexShape.prototype['isConcave'] = function() { + return _emscripten_bind_btConvexShape__isConcave_p0(this.ptr); +} +btConvexShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btConvexShape__getShapeType_p0(this.ptr); +} +function btDiscreteCollisionDetectorInterface(){ throw "btDiscreteCollisionDetectorInterface is abstract!" } +btDiscreteCollisionDetectorInterface.prototype.__cache__ = {}; +Module['btDiscreteCollisionDetectorInterface'] = btDiscreteCollisionDetectorInterface; +btDiscreteCollisionDetectorInterface.prototype['getClosestPoints'] = function(arg0, arg1, arg2, arg3) { + if (arg3 === undefined) + _emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); + else + _emscripten_bind_btDiscreteCollisionDetectorInterface__getClosestPoints_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3); +} +btDefaultCollisionConstructionInfo.prototype['set_m_customCollisionAlgorithmMaxElementSize'] = function(arg0) { + _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_customCollisionAlgorithmMaxElementSize_p1(this.ptr, arg0); +} +btDefaultCollisionConstructionInfo.prototype['set_m_collisionAlgorithmPool'] = function(arg0) { + _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_collisionAlgorithmPool_p1(this.ptr, arg0); +} +btDefaultCollisionConstructionInfo.prototype['get_m_customCollisionAlgorithmMaxElementSize'] = function() { + return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_customCollisionAlgorithmMaxElementSize_p0(this.ptr); +} +btDefaultCollisionConstructionInfo.prototype['get_m_persistentManifoldPool'] = function() { + return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_persistentManifoldPool_p0(this.ptr); +} +btDefaultCollisionConstructionInfo.prototype['set_m_useEpaPenetrationAlgorithm'] = function(arg0) { + _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_useEpaPenetrationAlgorithm_p1(this.ptr, arg0); +} +btDefaultCollisionConstructionInfo.prototype['__destroy__'] = function() { + _emscripten_bind_btDefaultCollisionConstructionInfo____destroy___p0(this.ptr); +} +btDefaultCollisionConstructionInfo.prototype['get_m_defaultStackAllocatorSize'] = function() { + return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultStackAllocatorSize_p0(this.ptr); +} +btDefaultCollisionConstructionInfo.prototype['set_m_defaultStackAllocatorSize'] = function(arg0) { + _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultStackAllocatorSize_p1(this.ptr, arg0); +} +btDefaultCollisionConstructionInfo.prototype['get_m_defaultMaxCollisionAlgorithmPoolSize'] = function() { + return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxCollisionAlgorithmPoolSize_p0(this.ptr); +} +btDefaultCollisionConstructionInfo.prototype['set_m_defaultMaxPersistentManifoldPoolSize'] = function(arg0) { + _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxPersistentManifoldPoolSize_p1(this.ptr, arg0); +} +btDefaultCollisionConstructionInfo.prototype['get_m_useEpaPenetrationAlgorithm'] = function() { + return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_useEpaPenetrationAlgorithm_p0(this.ptr); +} +btDefaultCollisionConstructionInfo.prototype['set_m_stackAlloc'] = function(arg0) { + _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_stackAlloc_p1(this.ptr, arg0.ptr); +} +btDefaultCollisionConstructionInfo.prototype['get_m_collisionAlgorithmPool'] = function() { + return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_collisionAlgorithmPool_p0(this.ptr); +} +btDefaultCollisionConstructionInfo.prototype['get_m_stackAlloc'] = function() { + return wrapPointer(_emscripten_bind_btDefaultCollisionConstructionInfo__get_m_stackAlloc_p0(this.ptr), Module['btStackAlloc']); +} +btDefaultCollisionConstructionInfo.prototype['set_m_defaultMaxCollisionAlgorithmPoolSize'] = function(arg0) { + _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_defaultMaxCollisionAlgorithmPoolSize_p1(this.ptr, arg0); +} +function btDefaultCollisionConstructionInfo() { + this.ptr = _emscripten_bind_btDefaultCollisionConstructionInfo__btDefaultCollisionConstructionInfo_p0(); + btDefaultCollisionConstructionInfo.prototype.__cache__[this.ptr] = this; + this.__class__ = btDefaultCollisionConstructionInfo; +} +btDefaultCollisionConstructionInfo.prototype.__cache__ = {}; +Module['btDefaultCollisionConstructionInfo'] = btDefaultCollisionConstructionInfo; +btDefaultCollisionConstructionInfo.prototype['get_m_defaultMaxPersistentManifoldPoolSize'] = function() { + return _emscripten_bind_btDefaultCollisionConstructionInfo__get_m_defaultMaxPersistentManifoldPoolSize_p0(this.ptr); +} +btDefaultCollisionConstructionInfo.prototype['set_m_persistentManifoldPool'] = function(arg0) { + _emscripten_bind_btDefaultCollisionConstructionInfo__set_m_persistentManifoldPool_p1(this.ptr, arg0); +} +function btDispatcher(){ throw "btDispatcher is abstract!" } +btDispatcher.prototype.__cache__ = {}; +Module['btDispatcher'] = btDispatcher; +btDispatcher.prototype['allocateCollisionAlgorithm'] = function(arg0) { + return _emscripten_bind_btDispatcher__allocateCollisionAlgorithm_p1(this.ptr, arg0); +} +btDispatcher.prototype['getManifoldByIndexInternal'] = function(arg0) { + return wrapPointer(_emscripten_bind_btDispatcher__getManifoldByIndexInternal_p1(this.ptr, arg0), Module['btPersistentManifold']); +} +btDispatcher.prototype['getNumManifolds'] = function() { + return _emscripten_bind_btDispatcher__getNumManifolds_p0(this.ptr); +} +btDispatcher.prototype['clearManifold'] = function(arg0) { + _emscripten_bind_btDispatcher__clearManifold_p1(this.ptr, arg0.ptr); +} +btDispatcher.prototype['freeCollisionAlgorithm'] = function(arg0) { + _emscripten_bind_btDispatcher__freeCollisionAlgorithm_p1(this.ptr, arg0); +} +btDispatcher.prototype['getInternalManifoldPointer'] = function() { + return wrapPointer(_emscripten_bind_btDispatcher__getInternalManifoldPointer_p0(this.ptr), Module['btPersistentManifold']); +} +btDispatcher.prototype['findAlgorithm'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + return wrapPointer(_emscripten_bind_btDispatcher__findAlgorithm_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btCollisionAlgorithm']); + else + return wrapPointer(_emscripten_bind_btDispatcher__findAlgorithm_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr), Module['btCollisionAlgorithm']); +} +btDispatcher.prototype['needsResponse'] = function(arg0, arg1) { + return _emscripten_bind_btDispatcher__needsResponse_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btDispatcher.prototype['getNewManifold'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btDispatcher__getNewManifold_p2(this.ptr, arg0, arg1), Module['btPersistentManifold']); +} +btDispatcher.prototype['dispatchAllCollisionPairs'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDispatcher__dispatchAllCollisionPairs_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btDispatcher.prototype['getInternalManifoldPool'] = function() { + return _emscripten_bind_btDispatcher__getInternalManifoldPool_p0(this.ptr); +} +btDispatcher.prototype['needsCollision'] = function(arg0, arg1) { + return _emscripten_bind_btDispatcher__needsCollision_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btDispatcher.prototype['releaseManifold'] = function(arg0) { + _emscripten_bind_btDispatcher__releaseManifold_p1(this.ptr, arg0.ptr); +} +btJacobianEntry.prototype['__destroy__'] = function() { + _emscripten_bind_btJacobianEntry____destroy___p0(this.ptr); +} +btJacobianEntry.prototype['set_m_linearJointAxis'] = function(arg0) { + _emscripten_bind_btJacobianEntry__set_m_linearJointAxis_p1(this.ptr, arg0.ptr); +} +btJacobianEntry.prototype['get_m_bJ'] = function() { + return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_bJ_p0(this.ptr), Module['btVector3']); +} +function btJacobianEntry(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p0(); + else if (arg4 === undefined) + this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else if (arg5 === undefined) + this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); + else if (arg6 === undefined) + this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5); + else + this.ptr = _emscripten_bind_btJacobianEntry__btJacobianEntry_p9(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6, arg7.ptr, arg8); + btJacobianEntry.prototype.__cache__[this.ptr] = this; + this.__class__ = btJacobianEntry; +} +btJacobianEntry.prototype.__cache__ = {}; +Module['btJacobianEntry'] = btJacobianEntry; +btJacobianEntry.prototype['get_m_linearJointAxis'] = function() { + return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_linearJointAxis_p0(this.ptr), Module['btVector3']); +} +btJacobianEntry.prototype['set_m_aJ'] = function(arg0) { + _emscripten_bind_btJacobianEntry__set_m_aJ_p1(this.ptr, arg0.ptr); +} +btJacobianEntry.prototype['getDiagonal'] = function() { + return _emscripten_bind_btJacobianEntry__getDiagonal_p0(this.ptr); +} +btJacobianEntry.prototype['set_m_Adiag'] = function(arg0) { + _emscripten_bind_btJacobianEntry__set_m_Adiag_p1(this.ptr, arg0); +} +btJacobianEntry.prototype['getRelativeVelocity'] = function(arg0, arg1, arg2, arg3) { + return _emscripten_bind_btJacobianEntry__getRelativeVelocity_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btJacobianEntry.prototype['set_m_bJ'] = function(arg0) { + _emscripten_bind_btJacobianEntry__set_m_bJ_p1(this.ptr, arg0.ptr); +} +btJacobianEntry.prototype['get_m_Adiag'] = function() { + return _emscripten_bind_btJacobianEntry__get_m_Adiag_p0(this.ptr); +} +btJacobianEntry.prototype['getNonDiagonal'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + return _emscripten_bind_btJacobianEntry__getNonDiagonal_p2(this.ptr, arg0.ptr, arg1); + else + return _emscripten_bind_btJacobianEntry__getNonDiagonal_p3(this.ptr, arg0.ptr, arg1, arg2); +} +btJacobianEntry.prototype['set_m_1MinvJt'] = function(arg0) { + _emscripten_bind_btJacobianEntry__set_m_1MinvJt_p1(this.ptr, arg0.ptr); +} +btJacobianEntry.prototype['get_m_0MinvJt'] = function() { + return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_0MinvJt_p0(this.ptr), Module['btVector3']); +} +btJacobianEntry.prototype['set_m_0MinvJt'] = function(arg0) { + _emscripten_bind_btJacobianEntry__set_m_0MinvJt_p1(this.ptr, arg0.ptr); +} +btJacobianEntry.prototype['get_m_aJ'] = function() { + return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_aJ_p0(this.ptr), Module['btVector3']); +} +btJacobianEntry.prototype['get_m_1MinvJt'] = function() { + return wrapPointer(_emscripten_bind_btJacobianEntry__get_m_1MinvJt_p0(this.ptr), Module['btVector3']); +} +function btOverlappingPairCallback(){ throw "btOverlappingPairCallback is abstract!" } +btOverlappingPairCallback.prototype.__cache__ = {}; +Module['btOverlappingPairCallback'] = btOverlappingPairCallback; +btOverlappingPairCallback.prototype['addOverlappingPair'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btOverlappingPairCallback__addOverlappingPair_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btBroadphasePair']); +} +btOverlappingPairCallback.prototype['removeOverlappingPair'] = function(arg0, arg1, arg2) { + return _emscripten_bind_btOverlappingPairCallback__removeOverlappingPair_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btOverlappingPairCallback.prototype['removeOverlappingPairsContainingProxy'] = function(arg0, arg1) { + _emscripten_bind_btOverlappingPairCallback__removeOverlappingPairsContainingProxy_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btHashInt.prototype['__destroy__'] = function() { + _emscripten_bind_btHashInt____destroy___p0(this.ptr); +} +btHashInt.prototype['setUid1'] = function(arg0) { + _emscripten_bind_btHashInt__setUid1_p1(this.ptr, arg0); +} +function btHashInt(arg0) { + this.ptr = _emscripten_bind_btHashInt__btHashInt_p1(arg0); + btHashInt.prototype.__cache__[this.ptr] = this; + this.__class__ = btHashInt; +} +btHashInt.prototype.__cache__ = {}; +Module['btHashInt'] = btHashInt; +btHashInt.prototype['equals'] = function(arg0) { + return _emscripten_bind_btHashInt__equals_p1(this.ptr, arg0.ptr); +} +btHashInt.prototype['getUid1'] = function() { + return _emscripten_bind_btHashInt__getUid1_p0(this.ptr); +} +btHashInt.prototype['getHash'] = function() { + return _emscripten_bind_btHashInt__getHash_p0(this.ptr); +} +btCollisionAlgorithmCreateFunc.prototype['get_m_swapped'] = function() { + return _emscripten_bind_btCollisionAlgorithmCreateFunc__get_m_swapped_p0(this.ptr); +} +btCollisionAlgorithmCreateFunc.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionAlgorithmCreateFunc____destroy___p0(this.ptr); +} +btCollisionAlgorithmCreateFunc.prototype['CreateCollisionAlgorithm'] = function(arg0, arg1, arg2) { + return wrapPointer(_emscripten_bind_btCollisionAlgorithmCreateFunc__CreateCollisionAlgorithm_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr), Module['btCollisionAlgorithm']); +} +btCollisionAlgorithmCreateFunc.prototype['set_m_swapped'] = function(arg0) { + _emscripten_bind_btCollisionAlgorithmCreateFunc__set_m_swapped_p1(this.ptr, arg0); +} +function btCollisionAlgorithmCreateFunc() { + this.ptr = _emscripten_bind_btCollisionAlgorithmCreateFunc__btCollisionAlgorithmCreateFunc_p0(); + btCollisionAlgorithmCreateFunc.prototype.__cache__[this.ptr] = this; + this.__class__ = btCollisionAlgorithmCreateFunc; +} +btCollisionAlgorithmCreateFunc.prototype.__cache__ = {}; +Module['btCollisionAlgorithmCreateFunc'] = btCollisionAlgorithmCreateFunc; +btCollisionWorld.prototype['setBroadphase'] = function(arg0) { + _emscripten_bind_btCollisionWorld__setBroadphase_p1(this.ptr, arg0.ptr); +} +btCollisionWorld.prototype['serialize'] = function(arg0) { + _emscripten_bind_btCollisionWorld__serialize_p1(this.ptr, arg0.ptr); +} +btCollisionWorld.prototype['getDispatcher'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__getDispatcher_p0(this.ptr), Module['btDispatcher']); +} +btCollisionWorld.prototype['getDispatchInfo'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__getDispatchInfo_p0(this.ptr), Module['btDispatcherInfo']); +} +btCollisionWorld.prototype['getDebugDrawer'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__getDebugDrawer_p0(this.ptr), Module['btIDebugDraw']); +} +btCollisionWorld.prototype['performDiscreteCollisionDetection'] = function() { + _emscripten_bind_btCollisionWorld__performDiscreteCollisionDetection_p0(this.ptr); +} +btCollisionWorld.prototype['getCollisionObjectArray'] = function() { + return _emscripten_bind_btCollisionWorld__getCollisionObjectArray_p0(this.ptr); +} +btCollisionWorld.prototype['debugDrawObject'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCollisionWorld__debugDrawObject_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCollisionWorld.prototype['rayTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCollisionWorld__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCollisionWorld.prototype['addCollisionObject'] = function(arg0, arg1, arg2) { + if (arg1 === undefined) + _emscripten_bind_btCollisionWorld__addCollisionObject_p1(this.ptr, arg0.ptr); + else if (arg2 === undefined) + _emscripten_bind_btCollisionWorld__addCollisionObject_p2(this.ptr, arg0.ptr, arg1); + else + _emscripten_bind_btCollisionWorld__addCollisionObject_p3(this.ptr, arg0.ptr, arg1, arg2); +} +function btCollisionWorld(arg0, arg1, arg2) { + this.ptr = _emscripten_bind_btCollisionWorld__btCollisionWorld_p3(arg0.ptr, arg1.ptr, arg2.ptr); + btCollisionWorld.prototype.__cache__[this.ptr] = this; + this.__class__ = btCollisionWorld; +} +btCollisionWorld.prototype.__cache__ = {}; +Module['btCollisionWorld'] = btCollisionWorld; +btCollisionWorld.prototype['contactTest'] = function(arg0, arg1) { + _emscripten_bind_btCollisionWorld__contactTest_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btCollisionWorld.prototype['getForceUpdateAllAabbs'] = function() { + return _emscripten_bind_btCollisionWorld__getForceUpdateAllAabbs_p0(this.ptr); +} +btCollisionWorld.prototype['updateAabbs'] = function() { + _emscripten_bind_btCollisionWorld__updateAabbs_p0(this.ptr); +} +btCollisionWorld.prototype['setDebugDrawer'] = function(arg0) { + _emscripten_bind_btCollisionWorld__setDebugDrawer_p1(this.ptr, arg0.ptr); +} +btCollisionWorld.prototype['debugDrawWorld'] = function() { + _emscripten_bind_btCollisionWorld__debugDrawWorld_p0(this.ptr); +} +btCollisionWorld.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg4 === undefined) + _emscripten_bind_btCollisionWorld__convexSweepTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_btCollisionWorld__convexSweepTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); +} +btCollisionWorld.prototype['getNumCollisionObjects'] = function() { + return _emscripten_bind_btCollisionWorld__getNumCollisionObjects_p0(this.ptr); +} +btCollisionWorld.prototype['contactPairTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCollisionWorld__contactPairTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCollisionWorld.prototype['getBroadphase'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__getBroadphase_p0(this.ptr), Module['btBroadphaseInterface']); +} +btCollisionWorld.prototype['rayTestSingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btCollisionWorld__rayTestSingle_p6(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr); +} +btCollisionWorld.prototype['setForceUpdateAllAabbs'] = function(arg0) { + _emscripten_bind_btCollisionWorld__setForceUpdateAllAabbs_p1(this.ptr, arg0); +} +btCollisionWorld.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionWorld____destroy___p0(this.ptr); +} +btCollisionWorld.prototype['objectQuerySingle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + _emscripten_bind_btCollisionWorld__objectQuerySingle_p8(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7); +} +btCollisionWorld.prototype['updateSingleAabb'] = function(arg0) { + _emscripten_bind_btCollisionWorld__updateSingleAabb_p1(this.ptr, arg0.ptr); +} +btCollisionWorld.prototype['getPairCache'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__getPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +btCollisionWorld.prototype['removeCollisionObject'] = function(arg0) { + _emscripten_bind_btCollisionWorld__removeCollisionObject_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['set_m_currentLimitError'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_currentLimitError_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['needApplyForce'] = function(arg0) { + return _emscripten_bind_btTranslationalLimitMotor__needApplyForce_p1(this.ptr, arg0); +} +btTranslationalLimitMotor.prototype['get_m_currentLimitError'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_currentLimitError_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['get_m_currentLinearDiff'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_currentLinearDiff_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['get_m_stopERP'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_stopERP_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['set_m_stopERP'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_stopERP_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['set_m_stopCFM'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_stopCFM_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['get_m_stopCFM'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_stopCFM_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['get_m_lowerLimit'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_lowerLimit_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['set_m_maxMotorForce'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_maxMotorForce_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['testLimitValue'] = function(arg0, arg1) { + return _emscripten_bind_btTranslationalLimitMotor__testLimitValue_p2(this.ptr, arg0, arg1); +} +btTranslationalLimitMotor.prototype['set_m_restitution'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_restitution_p1(this.ptr, arg0); +} +btTranslationalLimitMotor.prototype['set_m_limitSoftness'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_limitSoftness_p1(this.ptr, arg0); +} +btTranslationalLimitMotor.prototype['set_m_currentLinearDiff'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_currentLinearDiff_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['get_m_restitution'] = function() { + return _emscripten_bind_btTranslationalLimitMotor__get_m_restitution_p0(this.ptr); +} +btTranslationalLimitMotor.prototype['get_m_targetVelocity'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_targetVelocity_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['get_m_maxMotorForce'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_maxMotorForce_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['set_m_damping'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_damping_p1(this.ptr, arg0); +} +btTranslationalLimitMotor.prototype['get_m_upperLimit'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_upperLimit_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['set_m_accumulatedImpulse'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_accumulatedImpulse_p1(this.ptr, arg0.ptr); +} +function btTranslationalLimitMotor(arg0) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p0(); + else + this.ptr = _emscripten_bind_btTranslationalLimitMotor__btTranslationalLimitMotor_p1(arg0.ptr); + btTranslationalLimitMotor.prototype.__cache__[this.ptr] = this; + this.__class__ = btTranslationalLimitMotor; +} +btTranslationalLimitMotor.prototype.__cache__ = {}; +Module['btTranslationalLimitMotor'] = btTranslationalLimitMotor; +btTranslationalLimitMotor.prototype['set_m_upperLimit'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_upperLimit_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['__destroy__'] = function() { + _emscripten_bind_btTranslationalLimitMotor____destroy___p0(this.ptr); +} +btTranslationalLimitMotor.prototype['set_m_normalCFM'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_normalCFM_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['get_m_damping'] = function() { + return _emscripten_bind_btTranslationalLimitMotor__get_m_damping_p0(this.ptr); +} +btTranslationalLimitMotor.prototype['get_m_normalCFM'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_normalCFM_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['set_m_targetVelocity'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_targetVelocity_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['isLimited'] = function(arg0) { + return _emscripten_bind_btTranslationalLimitMotor__isLimited_p1(this.ptr, arg0); +} +btTranslationalLimitMotor.prototype['get_m_accumulatedImpulse'] = function() { + return wrapPointer(_emscripten_bind_btTranslationalLimitMotor__get_m_accumulatedImpulse_p0(this.ptr), Module['btVector3']); +} +btTranslationalLimitMotor.prototype['set_m_lowerLimit'] = function(arg0) { + _emscripten_bind_btTranslationalLimitMotor__set_m_lowerLimit_p1(this.ptr, arg0.ptr); +} +btTranslationalLimitMotor.prototype['get_m_limitSoftness'] = function() { + return _emscripten_bind_btTranslationalLimitMotor__get_m_limitSoftness_p0(this.ptr); +} +btTranslationalLimitMotor.prototype['solveLinearAxis'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + return _emscripten_bind_btTranslationalLimitMotor__solveLinearAxis_p9(this.ptr, arg0, arg1, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6, arg7.ptr, arg8.ptr); +} +function btInternalTriangleIndexCallback(){ throw "btInternalTriangleIndexCallback is abstract!" } +btInternalTriangleIndexCallback.prototype.__cache__ = {}; +Module['btInternalTriangleIndexCallback'] = btInternalTriangleIndexCallback; +btInternalTriangleIndexCallback.prototype['internalProcessTriangleIndex'] = function(arg0, arg1, arg2) { + _emscripten_bind_btInternalTriangleIndexCallback__internalProcessTriangleIndex_p3(this.ptr, arg0.ptr, arg1, arg2); +} +function btConvexInternalShape(){ throw "btConvexInternalShape is abstract!" } +btConvexInternalShape.prototype.__cache__ = {}; +Module['btConvexInternalShape'] = btConvexInternalShape; +btConvexInternalShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btConvexInternalShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btConvexInternalShape.prototype['isCompound'] = function() { + return _emscripten_bind_btConvexInternalShape__isCompound_p0(this.ptr); +} +btConvexInternalShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexInternalShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexInternalShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btConvexInternalShape__setUserPointer_p1(this.ptr, arg0); +} +btConvexInternalShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btConvexInternalShape__getMarginNV_p0(this.ptr); +} +btConvexInternalShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConvexInternalShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConvexInternalShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btConvexInternalShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btConvexInternalShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btConvexInternalShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btConvexInternalShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btConvexInternalShape__isPolyhedral_p0(this.ptr); +} +btConvexInternalShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexInternalShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexInternalShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexInternalShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexInternalShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConvexInternalShape__calculateSerializeBufferSize_p0(this.ptr); +} +btConvexInternalShape.prototype['getName'] = function() { + return _emscripten_bind_btConvexInternalShape__getName_p0(this.ptr); +} +btConvexInternalShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btConvexInternalShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btConvexInternalShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexInternalShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexInternalShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btConvexInternalShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btConvexInternalShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btConvexInternalShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btConvexInternalShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexInternalShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexInternalShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btConvexInternalShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btConvexInternalShape.prototype['isConvex'] = function() { + return _emscripten_bind_btConvexInternalShape__isConvex_p0(this.ptr); +} +btConvexInternalShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btConvexInternalShape__isInfinite_p0(this.ptr); +} +btConvexInternalShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btConvexInternalShape__getUserPointer_p0(this.ptr); +} +btConvexInternalShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btConvexInternalShape__isNonMoving_p0(this.ptr); +} +btConvexInternalShape.prototype['getMargin'] = function() { + return _emscripten_bind_btConvexInternalShape__getMargin_p0(this.ptr); +} +btConvexInternalShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btConvexInternalShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btConvexInternalShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btConvexInternalShape__setMargin_p1(this.ptr, arg0); +} +btConvexInternalShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btConvexInternalShape__isConvex2d_p0(this.ptr); +} +btConvexInternalShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btConvexInternalShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btConvexInternalShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btConvexInternalShape__isSoftBody_p0(this.ptr); +} +btConvexInternalShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btConvexInternalShape__getMarginNonVirtual_p0(this.ptr); +} +btConvexInternalShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexInternalShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btConvexInternalShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btConvexInternalShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btConvexInternalShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btConvexInternalShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btConvexInternalShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btConvexInternalShape__getAngularMotionDisc_p0(this.ptr); +} +btConvexInternalShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btConvexInternalShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btConvexInternalShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConvexInternalShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConvexInternalShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btConvexInternalShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btConvexInternalShape.prototype['isConcave'] = function() { + return _emscripten_bind_btConvexInternalShape__isConcave_p0(this.ptr); +} +btConvexInternalShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btConvexInternalShape__getShapeType_p0(this.ptr); +} +btHashPtr.prototype['__destroy__'] = function() { + _emscripten_bind_btHashPtr____destroy___p0(this.ptr); +} +btHashPtr.prototype['equals'] = function(arg0) { + return _emscripten_bind_btHashPtr__equals_p1(this.ptr, arg0.ptr); +} +btHashPtr.prototype['getHash'] = function() { + return _emscripten_bind_btHashPtr__getHash_p0(this.ptr); +} +function btHashPtr(arg0) { + this.ptr = _emscripten_bind_btHashPtr__btHashPtr_p1(arg0); + btHashPtr.prototype.__cache__[this.ptr] = this; + this.__class__ = btHashPtr; +} +btHashPtr.prototype.__cache__ = {}; +Module['btHashPtr'] = btHashPtr; +btHashPtr.prototype['getPointer'] = function() { + return _emscripten_bind_btHashPtr__getPointer_p0(this.ptr); +} +btPairCachingGhostObject.prototype['removeOverlappingObjectInternal'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p2(this.ptr, arg0.ptr, arg1.ptr); + else + _emscripten_bind_btPairCachingGhostObject__removeOverlappingObjectInternal_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btPairCachingGhostObject.prototype['getFriction'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getFriction_p0(this.ptr); +} +btPairCachingGhostObject.prototype['setInterpolationLinearVelocity'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setInterpolationLinearVelocity_p1(this.ptr, arg0.ptr); +} +btPairCachingGhostObject.prototype['getDeactivationTime'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getDeactivationTime_p0(this.ptr); +} +btPairCachingGhostObject.prototype['setCompanionId'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setCompanionId_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['setInterpolationAngularVelocity'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setInterpolationAngularVelocity_p1(this.ptr, arg0.ptr); +} +function btPairCachingGhostObject() { + this.ptr = _emscripten_bind_btPairCachingGhostObject__btPairCachingGhostObject_p0(); + btPairCachingGhostObject.prototype.__cache__[this.ptr] = this; + this.__class__ = btPairCachingGhostObject; +} +btPairCachingGhostObject.prototype.__cache__ = {}; +Module['btPairCachingGhostObject'] = btPairCachingGhostObject; +btPairCachingGhostObject.prototype['getCcdSweptSphereRadius'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getCcdSweptSphereRadius_p0(this.ptr); +} +btPairCachingGhostObject.prototype['setFriction'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setFriction_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['internalSetExtensionPointer'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__internalSetExtensionPointer_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['setContactProcessingThreshold'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setContactProcessingThreshold_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['setInterpolationWorldTransform'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setInterpolationWorldTransform_p1(this.ptr, arg0.ptr); +} +btPairCachingGhostObject.prototype['getInterpolationLinearVelocity'] = function() { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getInterpolationLinearVelocity_p0(this.ptr), Module['btVector3']); +} +btPairCachingGhostObject.prototype['mergesSimulationIslands'] = function() { + return _emscripten_bind_btPairCachingGhostObject__mergesSimulationIslands_p0(this.ptr); +} +btPairCachingGhostObject.prototype['setCollisionShape'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setCollisionShape_p1(this.ptr, arg0.ptr); +} +btPairCachingGhostObject.prototype['setCcdMotionThreshold'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setCcdMotionThreshold_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['getIslandTag'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getIslandTag_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getNumOverlappingObjects'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getNumOverlappingObjects_p0(this.ptr); +} +btPairCachingGhostObject.prototype['addOverlappingObjectInternal'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btPairCachingGhostObject__addOverlappingObjectInternal_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btPairCachingGhostObject.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setUserPointer_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['checkCollideWith'] = function(arg0) { + return _emscripten_bind_btPairCachingGhostObject__checkCollideWith_p1(this.ptr, arg0.ptr); +} +btPairCachingGhostObject.prototype['rayTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPairCachingGhostObject__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btPairCachingGhostObject.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btPairCachingGhostObject__calculateSerializeBufferSize_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getInterpolationAngularVelocity'] = function() { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getInterpolationAngularVelocity_p0(this.ptr), Module['btVector3']); +} +btPairCachingGhostObject.prototype['forceActivationState'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__forceActivationState_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['activate'] = function(arg0) { + if (arg0 === undefined) + _emscripten_bind_btPairCachingGhostObject__activate_p0(this.ptr); + else + _emscripten_bind_btPairCachingGhostObject__activate_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['setIslandTag'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setIslandTag_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['setHitFraction'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setHitFraction_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['getInterpolationWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getInterpolationWorldTransform_p0(this.ptr), Module['btTransform']); +} +btPairCachingGhostObject.prototype['getHitFraction'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getHitFraction_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getOverlappingObject'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getOverlappingObject_p1(this.ptr, arg0), Module['btCollisionObject']); +} +btPairCachingGhostObject.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg4 === undefined) + _emscripten_bind_btPairCachingGhostObject__convexSweepTest_p4(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3); + else + _emscripten_bind_btPairCachingGhostObject__convexSweepTest_p5(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3, arg4); +} +btPairCachingGhostObject.prototype['isStaticObject'] = function() { + return _emscripten_bind_btPairCachingGhostObject__isStaticObject_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getCollisionShape'] = function() { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getCollisionShape_p0(this.ptr), Module['btCollisionShape']); +} +btPairCachingGhostObject.prototype['setAnisotropicFriction'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setAnisotropicFriction_p1(this.ptr, arg0.ptr); +} +btPairCachingGhostObject.prototype['getActivationState'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getActivationState_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getBroadphaseHandle'] = function() { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getBroadphaseHandle_p0(this.ptr), Module['btBroadphaseProxy']); +} +btPairCachingGhostObject.prototype['getRestitution'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getRestitution_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getUserPointer'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getUserPointer_p0(this.ptr); +} +btPairCachingGhostObject.prototype['setCcdSweptSphereRadius'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setCcdSweptSphereRadius_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['getWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getWorldTransform_p0(this.ptr), Module['btTransform']); +} +btPairCachingGhostObject.prototype['getCcdSquareMotionThreshold'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getCcdSquareMotionThreshold_p0(this.ptr); +} +btPairCachingGhostObject.prototype['setWorldTransform'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setWorldTransform_p1(this.ptr, arg0.ptr); +} +btPairCachingGhostObject.prototype['internalSetTemporaryCollisionShape'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__internalSetTemporaryCollisionShape_p1(this.ptr, arg0.ptr); +} +btPairCachingGhostObject.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btPairCachingGhostObject__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btPairCachingGhostObject.prototype['getCcdMotionThreshold'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getCcdMotionThreshold_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getCompanionId'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getCompanionId_p0(this.ptr); +} +btPairCachingGhostObject.prototype['serializeSingleObject'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__serializeSingleObject_p1(this.ptr, arg0.ptr); +} +btPairCachingGhostObject.prototype['isActive'] = function() { + return _emscripten_bind_btPairCachingGhostObject__isActive_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getInternalType'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getInternalType_p0(this.ptr); +} +btPairCachingGhostObject.prototype['__destroy__'] = function() { + _emscripten_bind_btPairCachingGhostObject____destroy___p0(this.ptr); +} +btPairCachingGhostObject.prototype['hasContactResponse'] = function() { + return _emscripten_bind_btPairCachingGhostObject__hasContactResponse_p0(this.ptr); +} +btPairCachingGhostObject.prototype['upcast'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__upcast_p1(arg0.ptr), Module['btGhostObject']); +} +btPairCachingGhostObject.prototype['setActivationState'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setActivationState_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['getRootCollisionShape'] = function() { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getRootCollisionShape_p0(this.ptr), Module['btCollisionShape']); +} +btPairCachingGhostObject.prototype['getContactProcessingThreshold'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getContactProcessingThreshold_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getCollisionFlags'] = function() { + return _emscripten_bind_btPairCachingGhostObject__getCollisionFlags_p0(this.ptr); +} +btPairCachingGhostObject.prototype['getOverlappingPairCache'] = function() { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getOverlappingPairCache_p0(this.ptr), Module['btHashedOverlappingPairCache']); +} +btPairCachingGhostObject.prototype['getAnisotropicFriction'] = function() { + return wrapPointer(_emscripten_bind_btPairCachingGhostObject__getAnisotropicFriction_p0(this.ptr), Module['btVector3']); +} +btPairCachingGhostObject.prototype['setDeactivationTime'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setDeactivationTime_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['internalGetExtensionPointer'] = function() { + return _emscripten_bind_btPairCachingGhostObject__internalGetExtensionPointer_p0(this.ptr); +} +btPairCachingGhostObject.prototype['setCollisionFlags'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setCollisionFlags_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['isStaticOrKinematicObject'] = function() { + return _emscripten_bind_btPairCachingGhostObject__isStaticOrKinematicObject_p0(this.ptr); +} +btPairCachingGhostObject.prototype['setRestitution'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setRestitution_p1(this.ptr, arg0); +} +btPairCachingGhostObject.prototype['hasAnisotropicFriction'] = function() { + return _emscripten_bind_btPairCachingGhostObject__hasAnisotropicFriction_p0(this.ptr); +} +btPairCachingGhostObject.prototype['setBroadphaseHandle'] = function(arg0) { + _emscripten_bind_btPairCachingGhostObject__setBroadphaseHandle_p1(this.ptr, arg0.ptr); +} +btPairCachingGhostObject.prototype['isKinematicObject'] = function() { + return _emscripten_bind_btPairCachingGhostObject__isKinematicObject_p0(this.ptr); +} +function btOverlapCallback(){ throw "btOverlapCallback is abstract!" } +btOverlapCallback.prototype.__cache__ = {}; +Module['btOverlapCallback'] = btOverlapCallback; +btOverlapCallback.prototype['processOverlap'] = function(arg0) { + return _emscripten_bind_btOverlapCallback__processOverlap_p1(this.ptr, arg0.ptr); +} +btStaticPlaneShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btStaticPlaneShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btStaticPlaneShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btStaticPlaneShape__setUserPointer_p1(this.ptr, arg0); +} +btStaticPlaneShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btStaticPlaneShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btStaticPlaneShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btStaticPlaneShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btStaticPlaneShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) { + _emscripten_bind_btStaticPlaneShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btStaticPlaneShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btStaticPlaneShape__calculateSerializeBufferSize_p0(this.ptr); +} +btStaticPlaneShape.prototype['getName'] = function() { + return _emscripten_bind_btStaticPlaneShape__getName_p0(this.ptr); +} +btStaticPlaneShape.prototype['isCompound'] = function() { + return _emscripten_bind_btStaticPlaneShape__isCompound_p0(this.ptr); +} +btStaticPlaneShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btStaticPlaneShape__isPolyhedral_p0(this.ptr); +} +btStaticPlaneShape.prototype['getPlaneNormal'] = function() { + return wrapPointer(_emscripten_bind_btStaticPlaneShape__getPlaneNormal_p0(this.ptr), Module['btVector3']); +} +btStaticPlaneShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btStaticPlaneShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btStaticPlaneShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btStaticPlaneShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btStaticPlaneShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btStaticPlaneShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btStaticPlaneShape.prototype['isConvex'] = function() { + return _emscripten_bind_btStaticPlaneShape__isConvex_p0(this.ptr); +} +btStaticPlaneShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btStaticPlaneShape__isInfinite_p0(this.ptr); +} +btStaticPlaneShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btStaticPlaneShape__getUserPointer_p0(this.ptr); +} +btStaticPlaneShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btStaticPlaneShape__isNonMoving_p0(this.ptr); +} +btStaticPlaneShape.prototype['getMargin'] = function() { + return _emscripten_bind_btStaticPlaneShape__getMargin_p0(this.ptr); +} +btStaticPlaneShape.prototype['getPlaneConstant'] = function() { + return _emscripten_bind_btStaticPlaneShape__getPlaneConstant_p0(this.ptr); +} +btStaticPlaneShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btStaticPlaneShape__setMargin_p1(this.ptr, arg0); +} +btStaticPlaneShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btStaticPlaneShape__isConvex2d_p0(this.ptr); +} +btStaticPlaneShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btStaticPlaneShape__isSoftBody_p0(this.ptr); +} +btStaticPlaneShape.prototype['__destroy__'] = function() { + _emscripten_bind_btStaticPlaneShape____destroy___p0(this.ptr); +} +btStaticPlaneShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btStaticPlaneShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btStaticPlaneShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btStaticPlaneShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btStaticPlaneShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btStaticPlaneShape__getAngularMotionDisc_p0(this.ptr); +} +btStaticPlaneShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btStaticPlaneShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +function btStaticPlaneShape(arg0, arg1) { + this.ptr = _emscripten_bind_btStaticPlaneShape__btStaticPlaneShape_p2(arg0.ptr, arg1); + btStaticPlaneShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btStaticPlaneShape; +} +btStaticPlaneShape.prototype.__cache__ = {}; +Module['btStaticPlaneShape'] = btStaticPlaneShape; +btStaticPlaneShape.prototype['isConcave'] = function() { + return _emscripten_bind_btStaticPlaneShape__isConcave_p0(this.ptr); +} +btStaticPlaneShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btStaticPlaneShape__getShapeType_p0(this.ptr); +} +function btOverlappingPairCache(){ throw "btOverlappingPairCache is abstract!" } +btOverlappingPairCache.prototype.__cache__ = {}; +Module['btOverlappingPairCache'] = btOverlappingPairCache; +btOverlappingPairCache.prototype['sortOverlappingPairs'] = function(arg0) { + _emscripten_bind_btOverlappingPairCache__sortOverlappingPairs_p1(this.ptr, arg0.ptr); +} +btOverlappingPairCache.prototype['setInternalGhostPairCallback'] = function(arg0) { + _emscripten_bind_btOverlappingPairCache__setInternalGhostPairCallback_p1(this.ptr, arg0.ptr); +} +btOverlappingPairCache.prototype['addOverlappingPair'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btOverlappingPairCache__addOverlappingPair_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btBroadphasePair']); +} +btOverlappingPairCache.prototype['removeOverlappingPairsContainingProxy'] = function(arg0, arg1) { + _emscripten_bind_btOverlappingPairCache__removeOverlappingPairsContainingProxy_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btOverlappingPairCache.prototype['hasDeferredRemoval'] = function() { + return _emscripten_bind_btOverlappingPairCache__hasDeferredRemoval_p0(this.ptr); +} +btOverlappingPairCache.prototype['getOverlappingPairArray'] = function() { + return _emscripten_bind_btOverlappingPairCache__getOverlappingPairArray_p0(this.ptr); +} +btOverlappingPairCache.prototype['findPair'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btOverlappingPairCache__findPair_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btBroadphasePair']); +} +btOverlappingPairCache.prototype['cleanProxyFromPairs'] = function(arg0, arg1) { + _emscripten_bind_btOverlappingPairCache__cleanProxyFromPairs_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btOverlappingPairCache.prototype['cleanOverlappingPair'] = function(arg0, arg1) { + _emscripten_bind_btOverlappingPairCache__cleanOverlappingPair_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btOverlappingPairCache.prototype['getNumOverlappingPairs'] = function() { + return _emscripten_bind_btOverlappingPairCache__getNumOverlappingPairs_p0(this.ptr); +} +btOverlappingPairCache.prototype['removeOverlappingPair'] = function(arg0, arg1, arg2) { + return _emscripten_bind_btOverlappingPairCache__removeOverlappingPair_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btOverlappingPairCache.prototype['setOverlapFilterCallback'] = function(arg0) { + _emscripten_bind_btOverlappingPairCache__setOverlapFilterCallback_p1(this.ptr, arg0.ptr); +} +btOverlappingPairCache.prototype['getOverlappingPairArrayPtr'] = function() { + return wrapPointer(_emscripten_bind_btOverlappingPairCache__getOverlappingPairArrayPtr_p0(this.ptr), Module['btBroadphasePair']); +} +btOverlappingPairCache.prototype['processAllOverlappingPairs'] = function(arg0, arg1) { + _emscripten_bind_btOverlappingPairCache__processAllOverlappingPairs_p2(this.ptr, arg0.ptr, arg1.ptr); +} +function btCollisionShape(){ throw "btCollisionShape is abstract!" } +btCollisionShape.prototype.__cache__ = {}; +Module['btCollisionShape'] = btCollisionShape; +btCollisionShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btCollisionShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btCollisionShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btCollisionShape__setUserPointer_p1(this.ptr, arg0); +} +btCollisionShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btCollisionShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btCollisionShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btCollisionShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btCollisionShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btCollisionShape__calculateSerializeBufferSize_p0(this.ptr); +} +btCollisionShape.prototype['getName'] = function() { + return _emscripten_bind_btCollisionShape__getName_p0(this.ptr); +} +btCollisionShape.prototype['isCompound'] = function() { + return _emscripten_bind_btCollisionShape__isCompound_p0(this.ptr); +} +btCollisionShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btCollisionShape__isPolyhedral_p0(this.ptr); +} +btCollisionShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btCollisionShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btCollisionShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCollisionShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCollisionShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btCollisionShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btCollisionShape.prototype['isConvex'] = function() { + return _emscripten_bind_btCollisionShape__isConvex_p0(this.ptr); +} +btCollisionShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btCollisionShape__isInfinite_p0(this.ptr); +} +btCollisionShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btCollisionShape__getUserPointer_p0(this.ptr); +} +btCollisionShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btCollisionShape__isNonMoving_p0(this.ptr); +} +btCollisionShape.prototype['getMargin'] = function() { + return _emscripten_bind_btCollisionShape__getMargin_p0(this.ptr); +} +btCollisionShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btCollisionShape__setMargin_p1(this.ptr, arg0); +} +btCollisionShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btCollisionShape__isConvex2d_p0(this.ptr); +} +btCollisionShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btCollisionShape__isSoftBody_p0(this.ptr); +} +btCollisionShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btCollisionShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btCollisionShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btCollisionShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btCollisionShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btCollisionShape__getAngularMotionDisc_p0(this.ptr); +} +btCollisionShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btCollisionShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btCollisionShape.prototype['isConcave'] = function() { + return _emscripten_bind_btCollisionShape__isConcave_p0(this.ptr); +} +btCollisionShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btCollisionShape__getShapeType_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btGeneric6DofConstraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btGeneric6DofConstraint__buildJacobian_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btGeneric6DofConstraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btGeneric6DofConstraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btGeneric6DofConstraint.prototype['getUid'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getUid_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__set_m_objectType_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setEnabled_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['getFrameOffsetA'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']); +} +btGeneric6DofConstraint.prototype['getRelativePivotPosition'] = function(arg0) { + return _emscripten_bind_btGeneric6DofConstraint__getRelativePivotPosition_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['getFrameOffsetB'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']); +} +btGeneric6DofConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + _emscripten_bind_btGeneric6DofConstraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr); +} +btGeneric6DofConstraint.prototype['getCalculatedTransformA'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']); +} +btGeneric6DofConstraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getUserConstraintId_p0(this.ptr); +} +function btGeneric6DofConstraint(arg0, arg1, arg2, arg3, arg4) { + if (arg3 === undefined) + this.ptr = _emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p3(arg0.ptr, arg1.ptr, arg2); + else + this.ptr = _emscripten_bind_btGeneric6DofConstraint__btGeneric6DofConstraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); + btGeneric6DofConstraint.prototype.__cache__[this.ptr] = this; + this.__class__ = btGeneric6DofConstraint; +} +btGeneric6DofConstraint.prototype.__cache__ = {}; +Module['btGeneric6DofConstraint'] = btGeneric6DofConstraint; +btGeneric6DofConstraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btGeneric6DofConstraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btGeneric6DofConstraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btGeneric6DofConstraint__getParam_p2(this.ptr, arg0, arg1); +} +btGeneric6DofConstraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['calcAnchorPos'] = function() { + _emscripten_bind_btGeneric6DofConstraint__calcAnchorPos_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['getAngularLowerLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__getAngularLowerLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__calculateSerializeBufferSize_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['getAxis'] = function(arg0) { + return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getAxis_p1(this.ptr, arg0), Module['btVector3']); +} +btGeneric6DofConstraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__internalGetAppliedImpulse_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__isEnabled_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setUserConstraintId_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['getLinearUpperLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__getLinearUpperLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getConstraintType_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__enableFeedback_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['setUseFrameOffset'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setUseFrameOffset_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__needsFeedback_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getObjectType_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['getRotationalLimitMotor'] = function(arg0) { + return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getRotationalLimitMotor_p1(this.ptr, arg0), Module['btRotationalLimitMotor']); +} +btGeneric6DofConstraint.prototype['getInfo1NonVirtual'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btGeneric6DofConstraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btGeneric6DofConstraint.prototype['setLinearLowerLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setLinearLowerLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getDbgDrawSize_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['getLinearLowerLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__getLinearLowerLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['isLimited'] = function(arg0) { + return _emscripten_bind_btGeneric6DofConstraint__isLimited_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['getUseFrameOffset'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getUseFrameOffset_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setUserConstraintType_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['getCalculatedTransformB'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']); +} +btGeneric6DofConstraint.prototype['calculateTransforms'] = function(arg0, arg1) { + if (arg0 === undefined) + _emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p0(this.ptr); + else + _emscripten_bind_btGeneric6DofConstraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btGeneric6DofConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['get_limit_motor_info2'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) { + if (arg11 === undefined) + return _emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p11(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10); + else + return _emscripten_bind_btGeneric6DofConstraint__get_limit_motor_info2_p12(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10, arg11); +} +btGeneric6DofConstraint.prototype['get_m_useSolveConstraintObsolete'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__get_m_useSolveConstraintObsolete_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getAppliedImpulse_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['setLimit'] = function(arg0, arg1, arg2) { + _emscripten_bind_btGeneric6DofConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2); +} +btGeneric6DofConstraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['getTranslationalLimitMotor'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofConstraint__getTranslationalLimitMotor_p0(this.ptr), Module['btTranslationalLimitMotor']); +} +btGeneric6DofConstraint.prototype['__destroy__'] = function() { + _emscripten_bind_btGeneric6DofConstraint____destroy___p0(this.ptr); +} +btGeneric6DofConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btGeneric6DofConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btGeneric6DofConstraint.prototype['getAngle'] = function(arg0) { + return _emscripten_bind_btGeneric6DofConstraint__getAngle_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['updateRHS'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__updateRHS_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['getAngularUpperLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__getAngularUpperLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__get_m_objectType_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['setAngularLowerLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setAngularLowerLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getUserConstraintType_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btGeneric6DofConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btGeneric6DofConstraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btGeneric6DofConstraint__getUserConstraintPtr_p0(this.ptr); +} +btGeneric6DofConstraint.prototype['setFrames'] = function(arg0, arg1) { + _emscripten_bind_btGeneric6DofConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btGeneric6DofConstraint.prototype['setLinearUpperLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setLinearUpperLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['setAngularUpperLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setAngularUpperLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofConstraint.prototype['setAxis'] = function(arg0, arg1) { + _emscripten_bind_btGeneric6DofConstraint__setAxis_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btGeneric6DofConstraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btGeneric6DofConstraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +btGeneric6DofConstraint.prototype['testAngularLimitMotor'] = function(arg0) { + return _emscripten_bind_btGeneric6DofConstraint__testAngularLimitMotor_p1(this.ptr, arg0); +} +btClock.prototype['reset'] = function() { + _emscripten_bind_btClock__reset_p0(this.ptr); +} +btClock.prototype['__destroy__'] = function() { + _emscripten_bind_btClock____destroy___p0(this.ptr); +} +btClock.prototype['getTimeMilliseconds'] = function() { + return _emscripten_bind_btClock__getTimeMilliseconds_p0(this.ptr); +} +btClock.prototype['getTimeMicroseconds'] = function() { + return _emscripten_bind_btClock__getTimeMicroseconds_p0(this.ptr); +} +function btClock(arg0) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btClock__btClock_p0(); + else + this.ptr = _emscripten_bind_btClock__btClock_p1(arg0.ptr); + btClock.prototype.__cache__[this.ptr] = this; + this.__class__ = btClock; +} +btClock.prototype.__cache__ = {}; +Module['btClock'] = btClock; +btClock.prototype['op_set'] = function(arg0) { + return wrapPointer(_emscripten_bind_btClock__op_set_p1(this.ptr, arg0.ptr), Module['btClock']); +} +btTransform.prototype['setFromOpenGLMatrix'] = function(arg0) { + _emscripten_bind_btTransform__setFromOpenGLMatrix_p1(this.ptr, arg0); +} +btTransform.prototype['setBasis'] = function(arg0) { + _emscripten_bind_btTransform__setBasis_p1(this.ptr, arg0.ptr); +} +btTransform.prototype['getOrigin'] = function() { + return wrapPointer(_emscripten_bind_btTransform__getOrigin_p0(this.ptr), Module['btVector3']); +} +btTransform.prototype['deSerializeDouble'] = function(arg0) { + _emscripten_bind_btTransform__deSerializeDouble_p1(this.ptr, arg0.ptr); +} +btTransform.prototype['deSerializeFloat'] = function(arg0) { + _emscripten_bind_btTransform__deSerializeFloat_p1(this.ptr, arg0.ptr); +} +btTransform.prototype['getRotation'] = function() { + return wrapPointer(_emscripten_bind_btTransform__getRotation_p0(this.ptr), Module['btQuaternion']); +} +btTransform.prototype['inverse'] = function() { + return wrapPointer(_emscripten_bind_btTransform__inverse_p0(this.ptr), Module['btTransform']); +} +btTransform.prototype['getIdentity'] = function() { + return wrapPointer(_emscripten_bind_btTransform__getIdentity_p0(), Module['btTransform']); +} +btTransform.prototype['inverseTimes'] = function(arg0) { + return wrapPointer(_emscripten_bind_btTransform__inverseTimes_p1(this.ptr, arg0.ptr), Module['btTransform']); +} +btTransform.prototype['op_mul'] = function(arg0) { + return wrapPointer(_emscripten_bind_btTransform__op_mul_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btTransform.prototype['setRotation'] = function(arg0) { + _emscripten_bind_btTransform__setRotation_p1(this.ptr, arg0.ptr); +} +btTransform.prototype['setIdentity'] = function() { + _emscripten_bind_btTransform__setIdentity_p0(this.ptr); +} +btTransform.prototype['op_set'] = function(arg0) { + return wrapPointer(_emscripten_bind_btTransform__op_set_p1(this.ptr, arg0.ptr), Module['btTransform']); +} +btTransform.prototype['getOpenGLMatrix'] = function(arg0) { + _emscripten_bind_btTransform__getOpenGLMatrix_p1(this.ptr, arg0); +} +btTransform.prototype['serialize'] = function(arg0) { + _emscripten_bind_btTransform__serialize_p1(this.ptr, arg0.ptr); +} +btTransform.prototype['deSerialize'] = function(arg0) { + _emscripten_bind_btTransform__deSerialize_p1(this.ptr, arg0.ptr); +} +btTransform.prototype['invXform'] = function(arg0) { + return wrapPointer(_emscripten_bind_btTransform__invXform_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btTransform.prototype['serializeFloat'] = function(arg0) { + _emscripten_bind_btTransform__serializeFloat_p1(this.ptr, arg0.ptr); +} +btTransform.prototype['mult'] = function(arg0, arg1) { + _emscripten_bind_btTransform__mult_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btTransform.prototype['__destroy__'] = function() { + _emscripten_bind_btTransform____destroy___p0(this.ptr); +} +btTransform.prototype['getBasis'] = function() { + return wrapPointer(_emscripten_bind_btTransform__getBasis_p0(this.ptr), Module['btMatrix3x3']); +} +btTransform.prototype['setOrigin'] = function(arg0) { + _emscripten_bind_btTransform__setOrigin_p1(this.ptr, arg0.ptr); +} +function btTransform(arg0, arg1) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btTransform__btTransform_p0(); + else if (arg1 === undefined) + this.ptr = _emscripten_bind_btTransform__btTransform_p1(arg0.ptr); + else + this.ptr = _emscripten_bind_btTransform__btTransform_p2(arg0.ptr, arg1.ptr); + btTransform.prototype.__cache__[this.ptr] = this; + this.__class__ = btTransform; +} +btTransform.prototype.__cache__ = {}; +Module['btTransform'] = btTransform; +btRigidBodyConstructionInfo.prototype['get_m_restitution'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_restitution_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['get_m_additionalDamping'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDamping_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_mass'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_mass_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['set_m_additionalDamping'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDamping_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['set_m_angularSleepingThreshold'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularSleepingThreshold_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['set_m_angularDamping'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_angularDamping_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['get_m_linearSleepingThreshold'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearSleepingThreshold_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_friction'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_friction_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['get_m_linearDamping'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_linearDamping_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['get_m_angularDamping'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularDamping_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['get_m_mass'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_mass_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_linearDamping'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearDamping_p1(this.ptr, arg0); +} +function btRigidBodyConstructionInfo(arg0, arg1, arg2, arg3) { + if (arg3 === undefined) + this.ptr = _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p3(arg0, arg1.ptr, arg2.ptr); + else + this.ptr = _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__btRigidBodyConstructionInfo_p4(arg0, arg1.ptr, arg2.ptr, arg3.ptr); + btRigidBodyConstructionInfo.prototype.__cache__[this.ptr] = this; + this.__class__ = btRigidBodyConstructionInfo; +} +btRigidBodyConstructionInfo.prototype.__cache__ = {}; +Module['btRigidBodyConstructionInfo'] = btRigidBodyConstructionInfo; +btRigidBodyConstructionInfo.prototype['set_m_restitution'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_restitution_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['get_m_additionalAngularDampingFactor'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingFactor_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_startWorldTransform'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_startWorldTransform_p1(this.ptr, arg0.ptr); +} +btRigidBodyConstructionInfo.prototype['get_m_additionalAngularDampingThresholdSqr'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalAngularDampingThresholdSqr_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_collisionShape'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_collisionShape_p1(this.ptr, arg0.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_additionalAngularDampingThresholdSqr'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingThresholdSqr_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['set_m_localInertia'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_localInertia_p1(this.ptr, arg0.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_additionalLinearDampingThresholdSqr'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalLinearDampingThresholdSqr_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['get_m_collisionShape'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_collisionShape_p0(this.ptr), Module['btCollisionShape']); +} +btRigidBodyConstructionInfo.prototype['set_m_motionState'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_motionState_p1(this.ptr, arg0.ptr); +} +btRigidBodyConstructionInfo.prototype['get_m_friction'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_friction_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_linearSleepingThreshold'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_linearSleepingThreshold_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['get_m_startWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_startWorldTransform_p0(this.ptr), Module['btTransform']); +} +btRigidBodyConstructionInfo.prototype['get_m_localInertia'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_localInertia_p0(this.ptr), Module['btVector3']); +} +btRigidBodyConstructionInfo.prototype['get_m_motionState'] = function() { + return wrapPointer(_emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_motionState_p0(this.ptr), Module['btMotionState']); +} +btRigidBodyConstructionInfo.prototype['__destroy__'] = function() { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo____destroy___p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['get_m_additionalDampingFactor'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalDampingFactor_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['get_m_additionalLinearDampingThresholdSqr'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_additionalLinearDampingThresholdSqr_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_additionalDampingFactor'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalDampingFactor_p1(this.ptr, arg0); +} +btRigidBodyConstructionInfo.prototype['get_m_angularSleepingThreshold'] = function() { + return _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__get_m_angularSleepingThreshold_p0(this.ptr); +} +btRigidBodyConstructionInfo.prototype['set_m_additionalAngularDampingFactor'] = function(arg0) { + _emscripten_bind_btRigidBody__btRigidBodyConstructionInfo__set_m_additionalAngularDampingFactor_p1(this.ptr, arg0); +} +CProfileNode.prototype['Reset'] = function() { + _emscripten_bind_CProfileNode__Reset_p0(this.ptr); +} +CProfileNode.prototype['__destroy__'] = function() { + _emscripten_bind_CProfileNode____destroy___p0(this.ptr); +} +CProfileNode.prototype['Return'] = function() { + return _emscripten_bind_CProfileNode__Return_p0(this.ptr); +} +CProfileNode.prototype['Get_Sub_Node'] = function(arg0) { +var stack = Runtime.stackSave(); +try { + return wrapPointer(_emscripten_bind_CProfileNode__Get_Sub_Node_p1(this.ptr, ensureString(arg0)), Module['CProfileNode']); +} finally { Runtime.stackRestore(stack) } +} +CProfileNode.prototype['CleanupMemory'] = function() { + _emscripten_bind_CProfileNode__CleanupMemory_p0(this.ptr); +} +CProfileNode.prototype['Get_Parent'] = function() { + return wrapPointer(_emscripten_bind_CProfileNode__Get_Parent_p0(this.ptr), Module['CProfileNode']); +} +CProfileNode.prototype['Get_Total_Calls'] = function() { + return _emscripten_bind_CProfileNode__Get_Total_Calls_p0(this.ptr); +} +CProfileNode.prototype['Get_Name'] = function() { + return _emscripten_bind_CProfileNode__Get_Name_p0(this.ptr); +} +CProfileNode.prototype['Get_Total_Time'] = function() { + return _emscripten_bind_CProfileNode__Get_Total_Time_p0(this.ptr); +} +CProfileNode.prototype['Get_Sibling'] = function() { + return wrapPointer(_emscripten_bind_CProfileNode__Get_Sibling_p0(this.ptr), Module['CProfileNode']); +} +CProfileNode.prototype['Call'] = function() { + _emscripten_bind_CProfileNode__Call_p0(this.ptr); +} +CProfileNode.prototype['Get_Child'] = function() { + return wrapPointer(_emscripten_bind_CProfileNode__Get_Child_p0(this.ptr), Module['CProfileNode']); +} +function CProfileNode(arg0, arg1) { +var stack = Runtime.stackSave(); +try { + this.ptr = _emscripten_bind_CProfileNode__CProfileNode_p2(ensureString(arg0), arg1.ptr); +} finally { Runtime.stackRestore(stack) } + CProfileNode.prototype.__cache__[this.ptr] = this; + this.__class__ = CProfileNode; +} +CProfileNode.prototype.__cache__ = {}; +Module['CProfileNode'] = CProfileNode; +ClosestPointInput.prototype['set_m_transformB'] = function(arg0) { + _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformB_p1(this.ptr, arg0.ptr); +} +function ClosestPointInput() { + this.ptr = _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__ClosestPointInput_p0(); + ClosestPointInput.prototype.__cache__[this.ptr] = this; + this.__class__ = ClosestPointInput; +} +ClosestPointInput.prototype.__cache__ = {}; +Module['ClosestPointInput'] = ClosestPointInput; +ClosestPointInput.prototype['get_m_maximumDistanceSquared'] = function() { + return _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_maximumDistanceSquared_p0(this.ptr); +} +ClosestPointInput.prototype['set_m_transformA'] = function(arg0) { + _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_transformA_p1(this.ptr, arg0.ptr); +} +ClosestPointInput.prototype['get_m_transformA'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformA_p0(this.ptr), Module['btTransform']); +} +ClosestPointInput.prototype['get_m_transformB'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_transformB_p0(this.ptr), Module['btTransform']); +} +ClosestPointInput.prototype['__destroy__'] = function() { + _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput____destroy___p0(this.ptr); +} +ClosestPointInput.prototype['set_m_stackAlloc'] = function(arg0) { + _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_stackAlloc_p1(this.ptr, arg0.ptr); +} +ClosestPointInput.prototype['get_m_stackAlloc'] = function() { + return wrapPointer(_emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__get_m_stackAlloc_p0(this.ptr), Module['btStackAlloc']); +} +ClosestPointInput.prototype['set_m_maximumDistanceSquared'] = function(arg0) { + _emscripten_bind_btDiscreteCollisionDetectorInterface__ClosestPointInput__set_m_maximumDistanceSquared_p1(this.ptr, arg0); +} +btBvhTriangleMeshShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btBvhTriangleMeshShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btBvhTriangleMeshShape.prototype['getLocalAabbMax'] = function() { + return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMax_p0(this.ptr), Module['btVector3']); +} +function btBvhTriangleMeshShape(arg0, arg1, arg2, arg3, arg4) { + if (arg2 === undefined) + this.ptr = _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p2(arg0.ptr, arg1); + else if (arg3 === undefined) + this.ptr = _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p3(arg0.ptr, arg1, arg2); + else if (arg4 === undefined) + this.ptr = _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p4(arg0.ptr, arg1, arg2.ptr, arg3.ptr); + else + this.ptr = _emscripten_bind_btBvhTriangleMeshShape__btBvhTriangleMeshShape_p5(arg0.ptr, arg1, arg2.ptr, arg3.ptr, arg4); + btBvhTriangleMeshShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btBvhTriangleMeshShape; +} +btBvhTriangleMeshShape.prototype.__cache__ = {}; +Module['btBvhTriangleMeshShape'] = btBvhTriangleMeshShape; +btBvhTriangleMeshShape.prototype['serializeSingleTriangleInfoMap'] = function(arg0) { + _emscripten_bind_btBvhTriangleMeshShape__serializeSingleTriangleInfoMap_p1(this.ptr, arg0.ptr); +} +btBvhTriangleMeshShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btBvhTriangleMeshShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btBvhTriangleMeshShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBvhTriangleMeshShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btBvhTriangleMeshShape.prototype['getOwnsBvh'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__getOwnsBvh_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['getMeshInterface'] = function() { + return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getMeshInterface_p0(this.ptr), Module['btStridingMeshInterface']); +} +btBvhTriangleMeshShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBvhTriangleMeshShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBvhTriangleMeshShape.prototype['refitTree'] = function(arg0, arg1) { + _emscripten_bind_btBvhTriangleMeshShape__refitTree_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btBvhTriangleMeshShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__calculateSerializeBufferSize_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btBvhTriangleMeshShape__setUserPointer_p1(this.ptr, arg0); +} +btBvhTriangleMeshShape.prototype['performRaycast'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBvhTriangleMeshShape__performRaycast_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBvhTriangleMeshShape.prototype['setTriangleInfoMap'] = function(arg0) { + _emscripten_bind_btBvhTriangleMeshShape__setTriangleInfoMap_p1(this.ptr, arg0.ptr); +} +btBvhTriangleMeshShape.prototype['usesQuantizedAabbCompression'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__usesQuantizedAabbCompression_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['getName'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__getName_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['getTriangleInfoMap'] = function() { + return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getTriangleInfoMap_p0(this.ptr), Module['btTriangleInfoMap']); +} +btBvhTriangleMeshShape.prototype['isCompound'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__isCompound_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__isPolyhedral_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btBvhTriangleMeshShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btBvhTriangleMeshShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBvhTriangleMeshShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBvhTriangleMeshShape.prototype['getOptimizedBvh'] = function() { + return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getOptimizedBvh_p0(this.ptr), Module['btOptimizedBvh']); +} +btBvhTriangleMeshShape.prototype['getLocalAabbMin'] = function() { + return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__getLocalAabbMin_p0(this.ptr), Module['btVector3']); +} +btBvhTriangleMeshShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btBvhTriangleMeshShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btBvhTriangleMeshShape.prototype['isConvex'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__isConvex_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__isInfinite_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['buildOptimizedBvh'] = function() { + _emscripten_bind_btBvhTriangleMeshShape__buildOptimizedBvh_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['isConcave'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__isConcave_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__getUserPointer_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__isNonMoving_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['getMargin'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__getMargin_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['recalcLocalAabb'] = function() { + _emscripten_bind_btBvhTriangleMeshShape__recalcLocalAabb_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btBvhTriangleMeshShape__setMargin_p1(this.ptr, arg0); +} +btBvhTriangleMeshShape.prototype['partialRefitTree'] = function(arg0, arg1) { + _emscripten_bind_btBvhTriangleMeshShape__partialRefitTree_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btBvhTriangleMeshShape.prototype['performConvexcast'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btBvhTriangleMeshShape__performConvexcast_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btBvhTriangleMeshShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBvhTriangleMeshShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBvhTriangleMeshShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__isSoftBody_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['__destroy__'] = function() { + _emscripten_bind_btBvhTriangleMeshShape____destroy___p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btBvhTriangleMeshShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btBvhTriangleMeshShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btBvhTriangleMeshShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btBvhTriangleMeshShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__getAngularMotionDisc_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btBvhTriangleMeshShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btBvhTriangleMeshShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__getShapeType_p0(this.ptr); +} +btBvhTriangleMeshShape.prototype['serializeSingleBvh'] = function(arg0) { + _emscripten_bind_btBvhTriangleMeshShape__serializeSingleBvh_p1(this.ptr, arg0.ptr); +} +btBvhTriangleMeshShape.prototype['setOptimizedBvh'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btBvhTriangleMeshShape__setOptimizedBvh_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btBvhTriangleMeshShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btBvhTriangleMeshShape__isConvex2d_p0(this.ptr); +} +function btOverlapFilterCallback(){ throw "btOverlapFilterCallback is abstract!" } +btOverlapFilterCallback.prototype.__cache__ = {}; +Module['btOverlapFilterCallback'] = btOverlapFilterCallback; +btOverlapFilterCallback.prototype['needBroadphaseCollision'] = function(arg0, arg1) { + return _emscripten_bind_btOverlapFilterCallback__needBroadphaseCollision_p2(this.ptr, arg0.ptr, arg1.ptr); +} +function btActivatingCollisionAlgorithm(){ throw "btActivatingCollisionAlgorithm is abstract!" } +btActivatingCollisionAlgorithm.prototype.__cache__ = {}; +Module['btActivatingCollisionAlgorithm'] = btActivatingCollisionAlgorithm; +btActivatingCollisionAlgorithm.prototype['getAllContactManifolds'] = function(arg0) { + _emscripten_bind_btActivatingCollisionAlgorithm__getAllContactManifolds_p1(this.ptr, arg0); +} +btActivatingCollisionAlgorithm.prototype['calculateTimeOfImpact'] = function(arg0, arg1, arg2, arg3) { + return _emscripten_bind_btActivatingCollisionAlgorithm__calculateTimeOfImpact_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btActivatingCollisionAlgorithm.prototype['processCollision'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btActivatingCollisionAlgorithm__processCollision_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btSliderConstraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btSliderConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btSliderConstraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btSliderConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btSliderConstraint.prototype['getAngDepth'] = function() { + return _emscripten_bind_btSliderConstraint__getAngDepth_p0(this.ptr); +} +btSliderConstraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btSliderConstraint__buildJacobian_p0(this.ptr); +} +btSliderConstraint.prototype['getTargetAngMotorVelocity'] = function() { + return _emscripten_bind_btSliderConstraint__getTargetAngMotorVelocity_p0(this.ptr); +} +btSliderConstraint.prototype['getAngularPos'] = function() { + return _emscripten_bind_btSliderConstraint__getAngularPos_p0(this.ptr); +} +btSliderConstraint.prototype['setRestitutionLimAng'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setRestitutionLimAng_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btSliderConstraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btSliderConstraint__getParam_p2(this.ptr, arg0, arg1); +} +btSliderConstraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btSliderConstraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btSliderConstraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btSliderConstraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btSliderConstraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btSliderConstraint__isEnabled_p0(this.ptr); +} +btSliderConstraint.prototype['getPoweredLinMotor'] = function() { + return _emscripten_bind_btSliderConstraint__getPoweredLinMotor_p0(this.ptr); +} +btSliderConstraint.prototype['setUseFrameOffset'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setUseFrameOffset_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setSoftnessLimLin'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setSoftnessLimLin_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getAncorInA'] = function() { + return wrapPointer(_emscripten_bind_btSliderConstraint__getAncorInA_p0(this.ptr), Module['btVector3']); +} +btSliderConstraint.prototype['getAncorInB'] = function() { + return wrapPointer(_emscripten_bind_btSliderConstraint__getAncorInB_p0(this.ptr), Module['btVector3']); +} +btSliderConstraint.prototype['setDampingDirAng'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setDampingDirAng_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getSolveLinLimit'] = function() { + return _emscripten_bind_btSliderConstraint__getSolveLinLimit_p0(this.ptr); +} +btSliderConstraint.prototype['getUseFrameOffset'] = function() { + return _emscripten_bind_btSliderConstraint__getUseFrameOffset_p0(this.ptr); +} +btSliderConstraint.prototype['getMaxAngMotorForce'] = function() { + return _emscripten_bind_btSliderConstraint__getMaxAngMotorForce_p0(this.ptr); +} +btSliderConstraint.prototype['setRestitutionDirAng'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setRestitutionDirAng_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btSliderConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btSliderConstraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btSliderConstraint__needsFeedback_p0(this.ptr); +} +btSliderConstraint.prototype['getMaxLinMotorForce'] = function() { + return _emscripten_bind_btSliderConstraint__getMaxLinMotorForce_p0(this.ptr); +} +btSliderConstraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btSliderConstraint__getObjectType_p0(this.ptr); +} +btSliderConstraint.prototype['setDampingOrthoLin'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setDampingOrthoLin_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getSolveAngLimit'] = function() { + return _emscripten_bind_btSliderConstraint__getSolveAngLimit_p0(this.ptr); +} +btSliderConstraint.prototype['setPoweredAngMotor'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setPoweredAngMotor_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btSliderConstraint__enableFeedback_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getLinearPos'] = function() { + return _emscripten_bind_btSliderConstraint__getLinearPos_p0(this.ptr); +} +btSliderConstraint.prototype['getCalculatedTransformB'] = function() { + return wrapPointer(_emscripten_bind_btSliderConstraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']); +} +btSliderConstraint.prototype['getCalculatedTransformA'] = function() { + return wrapPointer(_emscripten_bind_btSliderConstraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']); +} +btSliderConstraint.prototype['testAngLimits'] = function() { + _emscripten_bind_btSliderConstraint__testAngLimits_p0(this.ptr); +} +btSliderConstraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btSliderConstraint__get_m_objectType_p0(this.ptr); +} +btSliderConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setDampingDirLin'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setDampingDirLin_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getUpperAngLimit'] = function() { + return _emscripten_bind_btSliderConstraint__getUpperAngLimit_p0(this.ptr); +} +btSliderConstraint.prototype['setUpperAngLimit'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setUpperAngLimit_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getRestitutionLimAng'] = function() { + return _emscripten_bind_btSliderConstraint__getRestitutionLimAng_p0(this.ptr); +} +btSliderConstraint.prototype['getSoftnessOrthoLin'] = function() { + return _emscripten_bind_btSliderConstraint__getSoftnessOrthoLin_p0(this.ptr); +} +btSliderConstraint.prototype['setLowerLinLimit'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setLowerLinLimit_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getRestitutionDirLin'] = function() { + return _emscripten_bind_btSliderConstraint__getRestitutionDirLin_p0(this.ptr); +} +btSliderConstraint.prototype['getInfo1NonVirtual'] = function(arg0) { + _emscripten_bind_btSliderConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr); +} +btSliderConstraint.prototype['setRestitutionLimLin'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setRestitutionLimLin_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getUid'] = function() { + return _emscripten_bind_btSliderConstraint__getUid_p0(this.ptr); +} +btSliderConstraint.prototype['setTargetLinMotorVelocity'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setTargetLinMotorVelocity_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getUpperLinLimit'] = function() { + return _emscripten_bind_btSliderConstraint__getUpperLinLimit_p0(this.ptr); +} +btSliderConstraint.prototype['setMaxLinMotorForce'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setMaxLinMotorForce_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getLowerAngLimit'] = function() { + return _emscripten_bind_btSliderConstraint__getLowerAngLimit_p0(this.ptr); +} +btSliderConstraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btSliderConstraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btSliderConstraint.prototype['setSoftnessDirLin'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setSoftnessDirLin_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + _emscripten_bind_btSliderConstraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5, arg6); +} +btSliderConstraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btSliderConstraint__set_m_objectType_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getFrameOffsetA'] = function() { + return wrapPointer(_emscripten_bind_btSliderConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']); +} +btSliderConstraint.prototype['getFrameOffsetB'] = function() { + return wrapPointer(_emscripten_bind_btSliderConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']); +} +btSliderConstraint.prototype['getDampingDirAng'] = function() { + return _emscripten_bind_btSliderConstraint__getDampingDirAng_p0(this.ptr); +} +btSliderConstraint.prototype['getRestitutionLimLin'] = function() { + return _emscripten_bind_btSliderConstraint__getRestitutionLimLin_p0(this.ptr); +} +btSliderConstraint.prototype['getSoftnessOrthoAng'] = function() { + return _emscripten_bind_btSliderConstraint__getSoftnessOrthoAng_p0(this.ptr); +} +btSliderConstraint.prototype['setSoftnessOrthoLin'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setSoftnessOrthoLin_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setSoftnessLimAng'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setSoftnessLimAng_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getDampingDirLin'] = function() { + return _emscripten_bind_btSliderConstraint__getDampingDirLin_p0(this.ptr); +} +btSliderConstraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btSliderConstraint__getDbgDrawSize_p0(this.ptr); +} +btSliderConstraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btSliderConstraint__getUserConstraintPtr_p0(this.ptr); +} +btSliderConstraint.prototype['getSoftnessLimLin'] = function() { + return _emscripten_bind_btSliderConstraint__getSoftnessLimLin_p0(this.ptr); +} +btSliderConstraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setEnabled_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setPoweredLinMotor'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setPoweredLinMotor_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['calculateTransforms'] = function(arg0, arg1) { + _emscripten_bind_btSliderConstraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btSliderConstraint.prototype['getLinDepth'] = function() { + return _emscripten_bind_btSliderConstraint__getLinDepth_p0(this.ptr); +} +btSliderConstraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btSliderConstraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btSliderConstraint.prototype['getDampingLimLin'] = function() { + return _emscripten_bind_btSliderConstraint__getDampingLimLin_p0(this.ptr); +} +btSliderConstraint.prototype['getRestitutionDirAng'] = function() { + return _emscripten_bind_btSliderConstraint__getRestitutionDirAng_p0(this.ptr); +} +btSliderConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSliderConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btSliderConstraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btSliderConstraint__getAppliedImpulse_p0(this.ptr); +} +btSliderConstraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btSliderConstraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btSliderConstraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btSliderConstraint.prototype['getDampingLimAng'] = function() { + return _emscripten_bind_btSliderConstraint__getDampingLimAng_p0(this.ptr); +} +btSliderConstraint.prototype['setRestitutionOrthoLin'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setRestitutionOrthoLin_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setRestitutionDirLin'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setRestitutionDirLin_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setDampingLimAng'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setDampingLimAng_p1(this.ptr, arg0); +} +function btSliderConstraint(arg0, arg1, arg2, arg3, arg4) { + if (arg3 === undefined) + this.ptr = _emscripten_bind_btSliderConstraint__btSliderConstraint_p3(arg0.ptr, arg1.ptr, arg2); + else + this.ptr = _emscripten_bind_btSliderConstraint__btSliderConstraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); + btSliderConstraint.prototype.__cache__[this.ptr] = this; + this.__class__ = btSliderConstraint; +} +btSliderConstraint.prototype.__cache__ = {}; +Module['btSliderConstraint'] = btSliderConstraint; +btSliderConstraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btSliderConstraint__getUserConstraintId_p0(this.ptr); +} +btSliderConstraint.prototype['setSoftnessDirAng'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setSoftnessDirAng_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setUpperLinLimit'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setUpperLinLimit_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btSliderConstraint__calculateSerializeBufferSize_p0(this.ptr); +} +btSliderConstraint.prototype['setTargetAngMotorVelocity'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setTargetAngMotorVelocity_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getSoftnessDirAng'] = function() { + return _emscripten_bind_btSliderConstraint__getSoftnessDirAng_p0(this.ptr); +} +btSliderConstraint.prototype['setMaxAngMotorForce'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setMaxAngMotorForce_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setLowerAngLimit'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setLowerAngLimit_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setUserConstraintId_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btSliderConstraint__getConstraintType_p0(this.ptr); +} +btSliderConstraint.prototype['getPoweredAngMotor'] = function() { + return _emscripten_bind_btSliderConstraint__getPoweredAngMotor_p0(this.ptr); +} +btSliderConstraint.prototype['getDampingOrthoAng'] = function() { + return _emscripten_bind_btSliderConstraint__getDampingOrthoAng_p0(this.ptr); +} +btSliderConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btSliderConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getRestitutionOrthoLin'] = function() { + return _emscripten_bind_btSliderConstraint__getRestitutionOrthoLin_p0(this.ptr); +} +btSliderConstraint.prototype['getTargetLinMotorVelocity'] = function() { + return _emscripten_bind_btSliderConstraint__getTargetLinMotorVelocity_p0(this.ptr); +} +btSliderConstraint.prototype['testLinLimits'] = function() { + _emscripten_bind_btSliderConstraint__testLinLimits_p0(this.ptr); +} +btSliderConstraint.prototype['getLowerLinLimit'] = function() { + return _emscripten_bind_btSliderConstraint__getLowerLinLimit_p0(this.ptr); +} +btSliderConstraint.prototype['setDampingOrthoAng'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setDampingOrthoAng_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btSliderConstraint__getUserConstraintType_p0(this.ptr); +} +btSliderConstraint.prototype['setRestitutionOrthoAng'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setRestitutionOrthoAng_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getRestitutionOrthoAng'] = function() { + return _emscripten_bind_btSliderConstraint__getRestitutionOrthoAng_p0(this.ptr); +} +btSliderConstraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setUserConstraintType_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['getDampingOrthoLin'] = function() { + return _emscripten_bind_btSliderConstraint__getDampingOrthoLin_p0(this.ptr); +} +btSliderConstraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btSliderConstraint__internalGetAppliedImpulse_p0(this.ptr); +} +btSliderConstraint.prototype['getSoftnessLimAng'] = function() { + return _emscripten_bind_btSliderConstraint__getSoftnessLimAng_p0(this.ptr); +} +btSliderConstraint.prototype['__destroy__'] = function() { + _emscripten_bind_btSliderConstraint____destroy___p0(this.ptr); +} +btSliderConstraint.prototype['setSoftnessOrthoAng'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setSoftnessOrthoAng_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setDampingLimLin'] = function(arg0) { + _emscripten_bind_btSliderConstraint__setDampingLimLin_p1(this.ptr, arg0); +} +btSliderConstraint.prototype['setFrames'] = function(arg0, arg1) { + _emscripten_bind_btSliderConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btSliderConstraint.prototype['getSoftnessDirLin'] = function() { + return _emscripten_bind_btSliderConstraint__getSoftnessDirLin_p0(this.ptr); +} +btSliderConstraint.prototype['getUseLinearReferenceFrameA'] = function() { + return _emscripten_bind_btSliderConstraint__getUseLinearReferenceFrameA_p0(this.ptr); +} +btVehicleTuning.prototype['set_m_suspensionCompression'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionCompression_p1(this.ptr, arg0); +} +btVehicleTuning.prototype['set_m_maxSuspensionTravelCm'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionTravelCm_p1(this.ptr, arg0); +} +btVehicleTuning.prototype['get_m_maxSuspensionTravelCm'] = function() { + return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionTravelCm_p0(this.ptr); +} +btVehicleTuning.prototype['set_m_suspensionStiffness'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionStiffness_p1(this.ptr, arg0); +} +btVehicleTuning.prototype['get_m_frictionSlip'] = function() { + return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_frictionSlip_p0(this.ptr); +} +btVehicleTuning.prototype['get_m_suspensionDamping'] = function() { + return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionDamping_p0(this.ptr); +} +btVehicleTuning.prototype['get_m_suspensionStiffness'] = function() { + return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionStiffness_p0(this.ptr); +} +btVehicleTuning.prototype['get_m_suspensionCompression'] = function() { + return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_suspensionCompression_p0(this.ptr); +} +btVehicleTuning.prototype['set_m_suspensionDamping'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_suspensionDamping_p1(this.ptr, arg0); +} +function btVehicleTuning() { + this.ptr = _emscripten_bind_btRaycastVehicle__btVehicleTuning__btVehicleTuning_p0(); + btVehicleTuning.prototype.__cache__[this.ptr] = this; + this.__class__ = btVehicleTuning; +} +btVehicleTuning.prototype.__cache__ = {}; +Module['btVehicleTuning'] = btVehicleTuning; +btVehicleTuning.prototype['__destroy__'] = function() { + _emscripten_bind_btRaycastVehicle__btVehicleTuning____destroy___p0(this.ptr); +} +btVehicleTuning.prototype['set_m_frictionSlip'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_frictionSlip_p1(this.ptr, arg0); +} +btVehicleTuning.prototype['set_m_maxSuspensionForce'] = function(arg0) { + _emscripten_bind_btRaycastVehicle__btVehicleTuning__set_m_maxSuspensionForce_p1(this.ptr, arg0); +} +btVehicleTuning.prototype['get_m_maxSuspensionForce'] = function() { + return _emscripten_bind_btRaycastVehicle__btVehicleTuning__get_m_maxSuspensionForce_p0(this.ptr); +} +function btContactConstraint(){ throw "btContactConstraint is abstract!" } +btContactConstraint.prototype.__cache__ = {}; +Module['btContactConstraint'] = btContactConstraint; +btContactConstraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btContactConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btContactConstraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btContactConstraint__buildJacobian_p0(this.ptr); +} +btContactConstraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btContactConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btContactConstraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btContactConstraint__set_m_objectType_p1(this.ptr, arg0); +} +btContactConstraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btContactConstraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btContactConstraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btContactConstraint__enableFeedback_p1(this.ptr, arg0); +} +btContactConstraint.prototype['getContactManifold'] = function() { + return wrapPointer(_emscripten_bind_btContactConstraint__getContactManifold_p0(this.ptr), Module['btPersistentManifold']); +} +btContactConstraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btContactConstraint__getUserConstraintId_p0(this.ptr); +} +btContactConstraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btContactConstraint__get_m_objectType_p0(this.ptr); +} +btContactConstraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btContactConstraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btContactConstraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btContactConstraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btContactConstraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btContactConstraint__getParam_p2(this.ptr, arg0, arg1); +} +btContactConstraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btContactConstraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btContactConstraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btContactConstraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btContactConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btContactConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +btContactConstraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btContactConstraint__calculateSerializeBufferSize_p0(this.ptr); +} +btContactConstraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btContactConstraint__isEnabled_p0(this.ptr); +} +btContactConstraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btContactConstraint__setUserConstraintId_p1(this.ptr, arg0); +} +btContactConstraint.prototype['setContactManifold'] = function(arg0) { + _emscripten_bind_btContactConstraint__setContactManifold_p1(this.ptr, arg0.ptr); +} +btContactConstraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btContactConstraint__getConstraintType_p0(this.ptr); +} +btContactConstraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btContactConstraint__getDbgDrawSize_p0(this.ptr); +} +btContactConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btContactConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btContactConstraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btContactConstraint__needsFeedback_p0(this.ptr); +} +btContactConstraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btContactConstraint__getObjectType_p0(this.ptr); +} +btContactConstraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btContactConstraint__getUserConstraintPtr_p0(this.ptr); +} +btContactConstraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btContactConstraint__setEnabled_p1(this.ptr, arg0); +} +btContactConstraint.prototype['getUid'] = function() { + return _emscripten_bind_btContactConstraint__getUid_p0(this.ptr); +} +btContactConstraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btContactConstraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btContactConstraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btContactConstraint__setUserConstraintType_p1(this.ptr, arg0); +} +btContactConstraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btContactConstraint__internalGetAppliedImpulse_p0(this.ptr); +} +btContactConstraint.prototype['__destroy__'] = function() { + _emscripten_bind_btContactConstraint____destroy___p0(this.ptr); +} +btContactConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btContactConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btContactConstraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btContactConstraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btContactConstraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btContactConstraint__getUserConstraintType_p0(this.ptr); +} +btContactConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btContactConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btContactConstraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btContactConstraint__getAppliedImpulse_p0(this.ptr); +} +btContactConstraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btContactConstraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['get_m_contactCFM1'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_contactCFM1_p0(this.ptr); +} +btManifoldPoint.prototype['get_m_contactCFM2'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_contactCFM2_p0(this.ptr); +} +btManifoldPoint.prototype['set_m_appliedImpulse'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_appliedImpulse_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['set_m_contactCFM1'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_contactCFM1_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['get_m_combinedFriction'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_combinedFriction_p0(this.ptr); +} +function btManifoldPoint(arg0, arg1, arg2, arg3) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btManifoldPoint__btManifoldPoint_p0(); + else + this.ptr = _emscripten_bind_btManifoldPoint__btManifoldPoint_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3); + btManifoldPoint.prototype.__cache__[this.ptr] = this; + this.__class__ = btManifoldPoint; +} +btManifoldPoint.prototype.__cache__ = {}; +Module['btManifoldPoint'] = btManifoldPoint; +btManifoldPoint.prototype['get_m_partId0'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_partId0_p0(this.ptr); +} +btManifoldPoint.prototype['get_m_partId1'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_partId1_p0(this.ptr); +} +btManifoldPoint.prototype['get_m_normalWorldOnB'] = function() { + return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_normalWorldOnB_p0(this.ptr), Module['btVector3']); +} +btManifoldPoint.prototype['set_m_combinedFriction'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_combinedFriction_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['set_m_lateralFrictionDir1'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir1_p1(this.ptr, arg0.ptr); +} +btManifoldPoint.prototype['get_m_index1'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_index1_p0(this.ptr); +} +btManifoldPoint.prototype['get_m_index0'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_index0_p0(this.ptr); +} +btManifoldPoint.prototype['set_m_userPersistentData'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_userPersistentData_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['set_m_contactCFM2'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_contactCFM2_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['get_m_appliedImpulse'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_appliedImpulse_p0(this.ptr); +} +btManifoldPoint.prototype['get_m_userPersistentData'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_userPersistentData_p0(this.ptr); +} +btManifoldPoint.prototype['getDistance'] = function() { + return _emscripten_bind_btManifoldPoint__getDistance_p0(this.ptr); +} +btManifoldPoint.prototype['get_m_lifeTime'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_lifeTime_p0(this.ptr); +} +btManifoldPoint.prototype['getPositionWorldOnB'] = function() { + return wrapPointer(_emscripten_bind_btManifoldPoint__getPositionWorldOnB_p0(this.ptr), Module['btVector3']); +} +btManifoldPoint.prototype['getPositionWorldOnA'] = function() { + return wrapPointer(_emscripten_bind_btManifoldPoint__getPositionWorldOnA_p0(this.ptr), Module['btVector3']); +} +btManifoldPoint.prototype['set_m_partId0'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_partId0_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['set_m_partId1'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_partId1_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['set_m_positionWorldOnA'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_positionWorldOnA_p1(this.ptr, arg0.ptr); +} +btManifoldPoint.prototype['setDistance'] = function(arg0) { + _emscripten_bind_btManifoldPoint__setDistance_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['set_m_positionWorldOnB'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_positionWorldOnB_p1(this.ptr, arg0.ptr); +} +btManifoldPoint.prototype['get_m_appliedImpulseLateral1'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral1_p0(this.ptr); +} +btManifoldPoint.prototype['get_m_appliedImpulseLateral2'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_appliedImpulseLateral2_p0(this.ptr); +} +btManifoldPoint.prototype['__destroy__'] = function() { + _emscripten_bind_btManifoldPoint____destroy___p0(this.ptr); +} +btManifoldPoint.prototype['set_m_lateralFrictionInitialized'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_lateralFrictionInitialized_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['getLifeTime'] = function() { + return _emscripten_bind_btManifoldPoint__getLifeTime_p0(this.ptr); +} +btManifoldPoint.prototype['set_m_index0'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_index0_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['get_m_contactMotion1'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_contactMotion1_p0(this.ptr); +} +btManifoldPoint.prototype['get_m_contactMotion2'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_contactMotion2_p0(this.ptr); +} +btManifoldPoint.prototype['set_m_index1'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_index1_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['get_m_lateralFrictionDir1'] = function() { + return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir1_p0(this.ptr), Module['btVector3']); +} +btManifoldPoint.prototype['set_m_normalWorldOnB'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_normalWorldOnB_p1(this.ptr, arg0.ptr); +} +btManifoldPoint.prototype['set_m_combinedRestitution'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_combinedRestitution_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['get_m_positionWorldOnA'] = function() { + return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_positionWorldOnA_p0(this.ptr), Module['btVector3']); +} +btManifoldPoint.prototype['get_m_lateralFrictionDir2'] = function() { + return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_lateralFrictionDir2_p0(this.ptr), Module['btVector3']); +} +btManifoldPoint.prototype['get_m_positionWorldOnB'] = function() { + return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_positionWorldOnB_p0(this.ptr), Module['btVector3']); +} +btManifoldPoint.prototype['set_m_lateralFrictionDir2'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_lateralFrictionDir2_p1(this.ptr, arg0.ptr); +} +btManifoldPoint.prototype['set_m_appliedImpulseLateral1'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral1_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['set_m_appliedImpulseLateral2'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_appliedImpulseLateral2_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['get_m_lateralFrictionInitialized'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_lateralFrictionInitialized_p0(this.ptr); +} +btManifoldPoint.prototype['set_m_localPointB'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_localPointB_p1(this.ptr, arg0.ptr); +} +btManifoldPoint.prototype['set_m_localPointA'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_localPointA_p1(this.ptr, arg0.ptr); +} +btManifoldPoint.prototype['get_m_combinedRestitution'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_combinedRestitution_p0(this.ptr); +} +btManifoldPoint.prototype['set_m_contactMotion1'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_contactMotion1_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['set_m_contactMotion2'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_contactMotion2_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['get_m_localPointB'] = function() { + return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_localPointB_p0(this.ptr), Module['btVector3']); +} +btManifoldPoint.prototype['get_m_localPointA'] = function() { + return wrapPointer(_emscripten_bind_btManifoldPoint__get_m_localPointA_p0(this.ptr), Module['btVector3']); +} +btManifoldPoint.prototype['set_m_distance1'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_distance1_p1(this.ptr, arg0); +} +btManifoldPoint.prototype['get_m_distance1'] = function() { + return _emscripten_bind_btManifoldPoint__get_m_distance1_p0(this.ptr); +} +btManifoldPoint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btManifoldPoint__getAppliedImpulse_p0(this.ptr); +} +btManifoldPoint.prototype['set_m_lifeTime'] = function(arg0) { + _emscripten_bind_btManifoldPoint__set_m_lifeTime_p1(this.ptr, arg0); +} +function btStridingMeshInterface(){ throw "btStridingMeshInterface is abstract!" } +btStridingMeshInterface.prototype.__cache__ = {}; +Module['btStridingMeshInterface'] = btStridingMeshInterface; +btStridingMeshInterface.prototype['getLockedReadOnlyVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (arg8 === undefined) + _emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + else + _emscripten_bind_btStridingMeshInterface__getLockedReadOnlyVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); +} +btStridingMeshInterface.prototype['preallocateIndices'] = function(arg0) { + _emscripten_bind_btStridingMeshInterface__preallocateIndices_p1(this.ptr, arg0); +} +btStridingMeshInterface.prototype['calculateAabbBruteForce'] = function(arg0, arg1) { + _emscripten_bind_btStridingMeshInterface__calculateAabbBruteForce_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btStridingMeshInterface.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btStridingMeshInterface__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btStridingMeshInterface.prototype['preallocateVertices'] = function(arg0) { + _emscripten_bind_btStridingMeshInterface__preallocateVertices_p1(this.ptr, arg0); +} +btStridingMeshInterface.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btStridingMeshInterface__calculateSerializeBufferSize_p0(this.ptr); +} +btStridingMeshInterface.prototype['setScaling'] = function(arg0) { + _emscripten_bind_btStridingMeshInterface__setScaling_p1(this.ptr, arg0.ptr); +} +btStridingMeshInterface.prototype['getScaling'] = function() { + return wrapPointer(_emscripten_bind_btStridingMeshInterface__getScaling_p0(this.ptr), Module['btVector3']); +} +btStridingMeshInterface.prototype['setPremadeAabb'] = function(arg0, arg1) { + _emscripten_bind_btStridingMeshInterface__setPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btStridingMeshInterface.prototype['InternalProcessAllTriangles'] = function(arg0, arg1, arg2) { + _emscripten_bind_btStridingMeshInterface__InternalProcessAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btStridingMeshInterface.prototype['getPremadeAabb'] = function(arg0, arg1) { + _emscripten_bind_btStridingMeshInterface__getPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btStridingMeshInterface.prototype['getNumSubParts'] = function() { + return _emscripten_bind_btStridingMeshInterface__getNumSubParts_p0(this.ptr); +} +btStridingMeshInterface.prototype['getLockedVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (arg8 === undefined) + _emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + else + _emscripten_bind_btStridingMeshInterface__getLockedVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); +} +btStridingMeshInterface.prototype['hasPremadeAabb'] = function() { + return _emscripten_bind_btStridingMeshInterface__hasPremadeAabb_p0(this.ptr); +} +btStridingMeshInterface.prototype['unLockVertexBase'] = function(arg0) { + _emscripten_bind_btStridingMeshInterface__unLockVertexBase_p1(this.ptr, arg0); +} +btStridingMeshInterface.prototype['unLockReadOnlyVertexBase'] = function(arg0) { + _emscripten_bind_btStridingMeshInterface__unLockReadOnlyVertexBase_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btPoint2PointConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btPoint2PointConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPoint2PointConstraint__getInfo2NonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btPoint2PointConstraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btPoint2PointConstraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btPoint2PointConstraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btPoint2PointConstraint.prototype['getUid'] = function() { + return _emscripten_bind_btPoint2PointConstraint__getUid_p0(this.ptr); +} +btPoint2PointConstraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__set_m_objectType_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__setEnabled_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__setUserConstraintId_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btPoint2PointConstraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btPoint2PointConstraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btPoint2PointConstraint__buildJacobian_p0(this.ptr); +} +btPoint2PointConstraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btPoint2PointConstraint__getUserConstraintId_p0(this.ptr); +} +btPoint2PointConstraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btPoint2PointConstraint__get_m_objectType_p0(this.ptr); +} +btPoint2PointConstraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btPoint2PointConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btPoint2PointConstraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btPoint2PointConstraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btPoint2PointConstraint__getParam_p2(this.ptr, arg0, arg1); +} +btPoint2PointConstraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0); +} +function btPoint2PointConstraint(arg0, arg1, arg2, arg3) { + if (arg2 === undefined) + this.ptr = _emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p2(arg0.ptr, arg1.ptr); + else + this.ptr = _emscripten_bind_btPoint2PointConstraint__btPoint2PointConstraint_p4(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + btPoint2PointConstraint.prototype.__cache__[this.ptr] = this; + this.__class__ = btPoint2PointConstraint; +} +btPoint2PointConstraint.prototype.__cache__ = {}; +Module['btPoint2PointConstraint'] = btPoint2PointConstraint; +btPoint2PointConstraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btPoint2PointConstraint__getObjectType_p0(this.ptr); +} +btPoint2PointConstraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btPoint2PointConstraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btPoint2PointConstraint__calculateSerializeBufferSize_p0(this.ptr); +} +btPoint2PointConstraint.prototype['getPivotInA'] = function() { + return wrapPointer(_emscripten_bind_btPoint2PointConstraint__getPivotInA_p0(this.ptr), Module['btVector3']); +} +btPoint2PointConstraint.prototype['getPivotInB'] = function() { + return wrapPointer(_emscripten_bind_btPoint2PointConstraint__getPivotInB_p0(this.ptr), Module['btVector3']); +} +btPoint2PointConstraint.prototype['get_m_setting'] = function() { + return wrapPointer(_emscripten_bind_btPoint2PointConstraint__get_m_setting_p0(this.ptr), Module['btConstraintSetting']); +} +btPoint2PointConstraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btPoint2PointConstraint__isEnabled_p0(this.ptr); +} +btPoint2PointConstraint.prototype['set_m_setting'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__set_m_setting_p1(this.ptr, arg0.ptr); +} +btPoint2PointConstraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btPoint2PointConstraint__getConstraintType_p0(this.ptr); +} +btPoint2PointConstraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__enableFeedback_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btPoint2PointConstraint__needsFeedback_p0(this.ptr); +} +btPoint2PointConstraint.prototype['setPivotA'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__setPivotA_p1(this.ptr, arg0.ptr); +} +btPoint2PointConstraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btPoint2PointConstraint__getUserConstraintPtr_p0(this.ptr); +} +btPoint2PointConstraint.prototype['setPivotB'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__setPivotB_p1(this.ptr, arg0.ptr); +} +btPoint2PointConstraint.prototype['getInfo1NonVirtual'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr); +} +btPoint2PointConstraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btPoint2PointConstraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btPoint2PointConstraint__getDbgDrawSize_p0(this.ptr); +} +btPoint2PointConstraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__setUserConstraintType_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btPoint2PointConstraint__internalGetAppliedImpulse_p0(this.ptr); +} +btPoint2PointConstraint.prototype['get_m_useSolveConstraintObsolete'] = function() { + return _emscripten_bind_btPoint2PointConstraint__get_m_useSolveConstraintObsolete_p0(this.ptr); +} +btPoint2PointConstraint.prototype['__destroy__'] = function() { + _emscripten_bind_btPoint2PointConstraint____destroy___p0(this.ptr); +} +btPoint2PointConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btPoint2PointConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btPoint2PointConstraint.prototype['updateRHS'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__updateRHS_p1(this.ptr, arg0); +} +btPoint2PointConstraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btPoint2PointConstraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btPoint2PointConstraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btPoint2PointConstraint__getUserConstraintType_p0(this.ptr); +} +btPoint2PointConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPoint2PointConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btPoint2PointConstraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btPoint2PointConstraint__getAppliedImpulse_p0(this.ptr); +} +btPoint2PointConstraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btPoint2PointConstraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +btCylinderShapeZ.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btCylinderShapeZ__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btCylinderShapeZ.prototype['isCompound'] = function() { + return _emscripten_bind_btCylinderShapeZ__isCompound_p0(this.ptr); +} +btCylinderShapeZ.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShapeZ__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShapeZ.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btCylinderShapeZ__setUserPointer_p1(this.ptr, arg0); +} +btCylinderShapeZ.prototype['getUpAxis'] = function() { + return _emscripten_bind_btCylinderShapeZ__getUpAxis_p0(this.ptr); +} +btCylinderShapeZ.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btCylinderShapeZ__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btCylinderShapeZ.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeZ__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeZ.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btCylinderShapeZ__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btCylinderShapeZ.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btCylinderShapeZ__isPolyhedral_p0(this.ptr); +} +btCylinderShapeZ.prototype['getRadius'] = function() { + return _emscripten_bind_btCylinderShapeZ__getRadius_p0(this.ptr); +} +btCylinderShapeZ.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShapeZ__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCylinderShapeZ.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btCylinderShapeZ__calculateSerializeBufferSize_p0(this.ptr); +} +btCylinderShapeZ.prototype['getName'] = function() { + return _emscripten_bind_btCylinderShapeZ__getName_p0(this.ptr); +} +btCylinderShapeZ.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeZ__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeZ.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShapeZ.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btCylinderShapeZ__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btCylinderShapeZ.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btCylinderShapeZ__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btCylinderShapeZ.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShapeZ__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCylinderShapeZ.prototype['getMarginNV'] = function() { + return _emscripten_bind_btCylinderShapeZ__getMarginNV_p0(this.ptr); +} +btCylinderShapeZ.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShapeZ__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShapeZ.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btCylinderShapeZ__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btCylinderShapeZ.prototype['isConvex'] = function() { + return _emscripten_bind_btCylinderShapeZ__isConvex_p0(this.ptr); +} +btCylinderShapeZ.prototype['isInfinite'] = function() { + return _emscripten_bind_btCylinderShapeZ__isInfinite_p0(this.ptr); +} +btCylinderShapeZ.prototype['getUserPointer'] = function() { + return _emscripten_bind_btCylinderShapeZ__getUserPointer_p0(this.ptr); +} +btCylinderShapeZ.prototype['isNonMoving'] = function() { + return _emscripten_bind_btCylinderShapeZ__isNonMoving_p0(this.ptr); +} +btCylinderShapeZ.prototype['getMargin'] = function() { + return _emscripten_bind_btCylinderShapeZ__getMargin_p0(this.ptr); +} +btCylinderShapeZ.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btCylinderShapeZ__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btCylinderShapeZ.prototype['getHalfExtentsWithoutMargin'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithoutMargin_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeZ.prototype['isConvex2d'] = function() { + return _emscripten_bind_btCylinderShapeZ__isConvex2d_p0(this.ptr); +} +btCylinderShapeZ.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCylinderShapeZ__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCylinderShapeZ.prototype['isSoftBody'] = function() { + return _emscripten_bind_btCylinderShapeZ__isSoftBody_p0(this.ptr); +} +btCylinderShapeZ.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btCylinderShapeZ__getMarginNonVirtual_p0(this.ptr); +} +btCylinderShapeZ.prototype['__destroy__'] = function() { + _emscripten_bind_btCylinderShapeZ____destroy___p0(this.ptr); +} +btCylinderShapeZ.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btCylinderShapeZ.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeZ__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeZ.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btCylinderShapeZ__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btCylinderShapeZ.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btCylinderShapeZ__getAngularMotionDisc_p0(this.ptr); +} +btCylinderShapeZ.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btCylinderShapeZ__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btCylinderShapeZ.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCylinderShapeZ__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +function btCylinderShapeZ(arg0) { + this.ptr = _emscripten_bind_btCylinderShapeZ__btCylinderShapeZ_p1(arg0.ptr); + btCylinderShapeZ.prototype.__cache__[this.ptr] = this; + this.__class__ = btCylinderShapeZ; +} +btCylinderShapeZ.prototype.__cache__ = {}; +Module['btCylinderShapeZ'] = btCylinderShapeZ; +btCylinderShapeZ.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btCylinderShapeZ__setMargin_p1(this.ptr, arg0); +} +btCylinderShapeZ.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btCylinderShapeZ__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btCylinderShapeZ.prototype['getHalfExtentsWithMargin'] = function() { + return wrapPointer(_emscripten_bind_btCylinderShapeZ__getHalfExtentsWithMargin_p0(this.ptr), Module['btVector3']); +} +btCylinderShapeZ.prototype['isConcave'] = function() { + return _emscripten_bind_btCylinderShapeZ__isConcave_p0(this.ptr); +} +btCylinderShapeZ.prototype['getShapeType'] = function() { + return _emscripten_bind_btCylinderShapeZ__getShapeType_p0(this.ptr); +} +btBvhSubtreeInfo.prototype['get_m_subtreeSize'] = function() { + return _emscripten_bind_btBvhSubtreeInfo__get_m_subtreeSize_p0(this.ptr); +} +btBvhSubtreeInfo.prototype['get_m_rootNodeIndex'] = function() { + return _emscripten_bind_btBvhSubtreeInfo__get_m_rootNodeIndex_p0(this.ptr); +} +btBvhSubtreeInfo.prototype['__destroy__'] = function() { + _emscripten_bind_btBvhSubtreeInfo____destroy___p0(this.ptr); +} +btBvhSubtreeInfo.prototype['set_m_rootNodeIndex'] = function(arg0) { + _emscripten_bind_btBvhSubtreeInfo__set_m_rootNodeIndex_p1(this.ptr, arg0); +} +btBvhSubtreeInfo.prototype['setAabbFromQuantizeNode'] = function(arg0) { + _emscripten_bind_btBvhSubtreeInfo__setAabbFromQuantizeNode_p1(this.ptr, arg0.ptr); +} +function btBvhSubtreeInfo() { + this.ptr = _emscripten_bind_btBvhSubtreeInfo__btBvhSubtreeInfo_p0(); + btBvhSubtreeInfo.prototype.__cache__[this.ptr] = this; + this.__class__ = btBvhSubtreeInfo; +} +btBvhSubtreeInfo.prototype.__cache__ = {}; +Module['btBvhSubtreeInfo'] = btBvhSubtreeInfo; +btBvhSubtreeInfo.prototype['set_m_subtreeSize'] = function(arg0) { + _emscripten_bind_btBvhSubtreeInfo__set_m_subtreeSize_p1(this.ptr, arg0); +} +function btMotionState(){ throw "btMotionState is abstract!" } +btMotionState.prototype.__cache__ = {}; +Module['btMotionState'] = btMotionState; +btMotionState.prototype['setWorldTransform'] = function(arg0) { + _emscripten_bind_btMotionState__setWorldTransform_p1(this.ptr, arg0.ptr); +} +btMotionState.prototype['getWorldTransform'] = function(arg0) { + _emscripten_bind_btMotionState__getWorldTransform_p1(this.ptr, arg0.ptr); +} +ClosestConvexResultCallback.prototype['get_m_convexToWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexToWorld_p0(this.ptr), Module['btVector3']); +} +ClosestConvexResultCallback.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback____destroy___p0(this.ptr); +} +ClosestConvexResultCallback.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +ClosestConvexResultCallback.prototype['needsCollision'] = function(arg0) { + return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__needsCollision_p1(this.ptr, arg0.ptr); +} +ClosestConvexResultCallback.prototype['set_m_closestHitFraction'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_closestHitFraction_p1(this.ptr, arg0); +} +ClosestConvexResultCallback.prototype['get_m_closestHitFraction'] = function() { + return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_closestHitFraction_p0(this.ptr); +} +ClosestConvexResultCallback.prototype['get_m_hitCollisionObject'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitCollisionObject_p0(this.ptr), Module['btCollisionObject']); +} +ClosestConvexResultCallback.prototype['addSingleResult'] = function(arg0, arg1) { + return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__addSingleResult_p2(this.ptr, arg0.ptr, arg1); +} +ClosestConvexResultCallback.prototype['set_m_hitCollisionObject'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitCollisionObject_p1(this.ptr, arg0.ptr); +} +ClosestConvexResultCallback.prototype['get_m_hitNormalWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitNormalWorld_p0(this.ptr), Module['btVector3']); +} +ClosestConvexResultCallback.prototype['get_m_hitPointWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_hitPointWorld_p0(this.ptr), Module['btVector3']); +} +ClosestConvexResultCallback.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterMask_p0(this.ptr); +} +ClosestConvexResultCallback.prototype['hasHit'] = function() { + return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__hasHit_p0(this.ptr); +} +ClosestConvexResultCallback.prototype['set_m_hitPointWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitPointWorld_p1(this.ptr, arg0.ptr); +} +ClosestConvexResultCallback.prototype['set_m_convexToWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexToWorld_p1(this.ptr, arg0.ptr); +} +function ClosestConvexResultCallback(arg0, arg1) { + this.ptr = _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__ClosestConvexResultCallback_p2(arg0.ptr, arg1.ptr); + ClosestConvexResultCallback.prototype.__cache__[this.ptr] = this; + this.__class__ = ClosestConvexResultCallback; +} +ClosestConvexResultCallback.prototype.__cache__ = {}; +Module['ClosestConvexResultCallback'] = ClosestConvexResultCallback; +ClosestConvexResultCallback.prototype['set_m_hitNormalWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_hitNormalWorld_p1(this.ptr, arg0.ptr); +} +ClosestConvexResultCallback.prototype['get_m_convexFromWorld'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_convexFromWorld_p0(this.ptr), Module['btVector3']); +} +ClosestConvexResultCallback.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__get_m_collisionFilterGroup_p0(this.ptr); +} +ClosestConvexResultCallback.prototype['set_m_convexFromWorld'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_convexFromWorld_p1(this.ptr, arg0.ptr); +} +ClosestConvexResultCallback.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_btCollisionWorld__ClosestConvexResultCallback__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +btConvexSeparatingDistanceUtil.prototype['updateSeparatingDistance'] = function(arg0, arg1) { + _emscripten_bind_btConvexSeparatingDistanceUtil__updateSeparatingDistance_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btConvexSeparatingDistanceUtil.prototype['__destroy__'] = function() { + _emscripten_bind_btConvexSeparatingDistanceUtil____destroy___p0(this.ptr); +} +function btConvexSeparatingDistanceUtil(arg0, arg1) { + this.ptr = _emscripten_bind_btConvexSeparatingDistanceUtil__btConvexSeparatingDistanceUtil_p2(arg0, arg1); + btConvexSeparatingDistanceUtil.prototype.__cache__[this.ptr] = this; + this.__class__ = btConvexSeparatingDistanceUtil; +} +btConvexSeparatingDistanceUtil.prototype.__cache__ = {}; +Module['btConvexSeparatingDistanceUtil'] = btConvexSeparatingDistanceUtil; +btConvexSeparatingDistanceUtil.prototype['getConservativeSeparatingDistance'] = function() { + return _emscripten_bind_btConvexSeparatingDistanceUtil__getConservativeSeparatingDistance_p0(this.ptr); +} +btConvexSeparatingDistanceUtil.prototype['initSeparatingDistance'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btConvexSeparatingDistanceUtil__initSeparatingDistance_p4(this.ptr, arg0.ptr, arg1, arg2.ptr, arg3.ptr); +} +btGeneric6DofSpringConstraint.prototype['getRigidBodyB'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyB_p0(this.ptr), Module['btRigidBody']); +} +btGeneric6DofSpringConstraint.prototype['buildJacobian'] = function() { + _emscripten_bind_btGeneric6DofSpringConstraint__buildJacobian_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['setParam'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btGeneric6DofSpringConstraint__setParam_p2(this.ptr, arg0, arg1); + else + _emscripten_bind_btGeneric6DofSpringConstraint__setParam_p3(this.ptr, arg0, arg1, arg2); +} +btGeneric6DofSpringConstraint.prototype['getUid'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getUid_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['set_m_objectType'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__set_m_objectType_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['setEnabled'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setEnabled_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['getFrameOffsetA'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetA_p0(this.ptr), Module['btTransform']); +} +btGeneric6DofSpringConstraint.prototype['getRelativePivotPosition'] = function(arg0) { + return _emscripten_bind_btGeneric6DofSpringConstraint__getRelativePivotPosition_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['getFrameOffsetB'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getFrameOffsetB_p0(this.ptr), Module['btTransform']); +} +btGeneric6DofSpringConstraint.prototype['getInfo2NonVirtual'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + _emscripten_bind_btGeneric6DofSpringConstraint__getInfo2NonVirtual_p7(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr); +} +btGeneric6DofSpringConstraint.prototype['getCalculatedTransformA'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformA_p0(this.ptr), Module['btTransform']); +} +btGeneric6DofSpringConstraint.prototype['getUserConstraintId'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintId_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['get_m_objectType'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__get_m_objectType_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['getRigidBodyA'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getRigidBodyA_p0(this.ptr), Module['btRigidBody']); +} +btGeneric6DofSpringConstraint.prototype['getBreakingImpulseThreshold'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getBreakingImpulseThreshold_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['getParam'] = function(arg0, arg1) { + if (arg1 === undefined) + return _emscripten_bind_btGeneric6DofSpringConstraint__getParam_p1(this.ptr, arg0); + else + return _emscripten_bind_btGeneric6DofSpringConstraint__getParam_p2(this.ptr, arg0, arg1); +} +btGeneric6DofSpringConstraint.prototype['setDamping'] = function(arg0, arg1) { + _emscripten_bind_btGeneric6DofSpringConstraint__setDamping_p2(this.ptr, arg0, arg1); +} +btGeneric6DofSpringConstraint.prototype['getInfo1'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__getInfo1_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['getInfo2'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__getInfo2_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['calcAnchorPos'] = function() { + _emscripten_bind_btGeneric6DofSpringConstraint__calcAnchorPos_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['getAngularLowerLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__getAngularLowerLimit_p1(this.ptr, arg0.ptr); +} +function btGeneric6DofSpringConstraint(arg0, arg1, arg2, arg3, arg4) { + this.ptr = _emscripten_bind_btGeneric6DofSpringConstraint__btGeneric6DofSpringConstraint_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); + btGeneric6DofSpringConstraint.prototype.__cache__[this.ptr] = this; + this.__class__ = btGeneric6DofSpringConstraint; +} +btGeneric6DofSpringConstraint.prototype.__cache__ = {}; +Module['btGeneric6DofSpringConstraint'] = btGeneric6DofSpringConstraint; +btGeneric6DofSpringConstraint.prototype['setEquilibriumPoint'] = function(arg0, arg1) { + if (arg0 === undefined) + _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p0(this.ptr); + else if (arg1 === undefined) + _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p1(this.ptr, arg0); + else + _emscripten_bind_btGeneric6DofSpringConstraint__setEquilibriumPoint_p2(this.ptr, arg0, arg1); +} +btGeneric6DofSpringConstraint.prototype['getAxis'] = function(arg0) { + return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getAxis_p1(this.ptr, arg0), Module['btVector3']); +} +btGeneric6DofSpringConstraint.prototype['internalGetAppliedImpulse'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__internalGetAppliedImpulse_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['isEnabled'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__isEnabled_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['setUserConstraintId'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintId_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['getLinearUpperLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__getLinearUpperLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['getConstraintType'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getConstraintType_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['enableFeedback'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__enableFeedback_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['setUseFrameOffset'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setUseFrameOffset_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['needsFeedback'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__needsFeedback_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['getObjectType'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getObjectType_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['getRotationalLimitMotor'] = function(arg0) { + return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getRotationalLimitMotor_p1(this.ptr, arg0), Module['btRotationalLimitMotor']); +} +btGeneric6DofSpringConstraint.prototype['getInfo1NonVirtual'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__getInfo1NonVirtual_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btGeneric6DofSpringConstraint__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btGeneric6DofSpringConstraint.prototype['setLinearLowerLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setLinearLowerLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['getDbgDrawSize'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getDbgDrawSize_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['getLinearLowerLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__getLinearLowerLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['setDbgDrawSize'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setDbgDrawSize_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['isLimited'] = function(arg0) { + return _emscripten_bind_btGeneric6DofSpringConstraint__isLimited_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['getUseFrameOffset'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getUseFrameOffset_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['setUserConstraintType'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintType_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['enableSpring'] = function(arg0, arg1) { + _emscripten_bind_btGeneric6DofSpringConstraint__enableSpring_p2(this.ptr, arg0, arg1); +} +btGeneric6DofSpringConstraint.prototype['getCalculatedTransformB'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getCalculatedTransformB_p0(this.ptr), Module['btTransform']); +} +btGeneric6DofSpringConstraint.prototype['calculateTransforms'] = function(arg0, arg1) { + if (arg0 === undefined) + _emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p0(this.ptr); + else + _emscripten_bind_btGeneric6DofSpringConstraint__calculateTransforms_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btGeneric6DofSpringConstraint.prototype['internalSetAppliedImpulse'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__internalSetAppliedImpulse_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['setBreakingImpulseThreshold'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setBreakingImpulseThreshold_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__calculateSerializeBufferSize_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['get_limit_motor_info2'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11) { + if (arg11 === undefined) + return _emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p11(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10); + else + return _emscripten_bind_btGeneric6DofSpringConstraint__get_limit_motor_info2_p12(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr, arg5.ptr, arg6.ptr, arg7.ptr, arg8, arg9.ptr, arg10, arg11); +} +btGeneric6DofSpringConstraint.prototype['get_m_useSolveConstraintObsolete'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__get_m_useSolveConstraintObsolete_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['getAppliedImpulse'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getAppliedImpulse_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['setLimit'] = function(arg0, arg1, arg2) { + _emscripten_bind_btGeneric6DofSpringConstraint__setLimit_p3(this.ptr, arg0, arg1, arg2); +} +btGeneric6DofSpringConstraint.prototype['set_m_useSolveConstraintObsolete'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__set_m_useSolveConstraintObsolete_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['getTranslationalLimitMotor'] = function() { + return wrapPointer(_emscripten_bind_btGeneric6DofSpringConstraint__getTranslationalLimitMotor_p0(this.ptr), Module['btTranslationalLimitMotor']); +} +btGeneric6DofSpringConstraint.prototype['__destroy__'] = function() { + _emscripten_bind_btGeneric6DofSpringConstraint____destroy___p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['setupSolverConstraint'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btGeneric6DofSpringConstraint__setupSolverConstraint_p4(this.ptr, arg0, arg1, arg2, arg3); +} +btGeneric6DofSpringConstraint.prototype['getAngle'] = function(arg0) { + return _emscripten_bind_btGeneric6DofSpringConstraint__getAngle_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['updateRHS'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__updateRHS_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['getAngularUpperLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__getAngularUpperLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['setAngularLowerLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setAngularLowerLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['getUserConstraintType'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintType_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['solveConstraintObsolete'] = function(arg0, arg1, arg2) { + _emscripten_bind_btGeneric6DofSpringConstraint__solveConstraintObsolete_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btGeneric6DofSpringConstraint.prototype['setStiffness'] = function(arg0, arg1) { + _emscripten_bind_btGeneric6DofSpringConstraint__setStiffness_p2(this.ptr, arg0, arg1); +} +btGeneric6DofSpringConstraint.prototype['getUserConstraintPtr'] = function() { + return _emscripten_bind_btGeneric6DofSpringConstraint__getUserConstraintPtr_p0(this.ptr); +} +btGeneric6DofSpringConstraint.prototype['setFrames'] = function(arg0, arg1) { + _emscripten_bind_btGeneric6DofSpringConstraint__setFrames_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btGeneric6DofSpringConstraint.prototype['setLinearUpperLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setLinearUpperLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['setAngularUpperLimit'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setAngularUpperLimit_p1(this.ptr, arg0.ptr); +} +btGeneric6DofSpringConstraint.prototype['setAxis'] = function(arg0, arg1) { + _emscripten_bind_btGeneric6DofSpringConstraint__setAxis_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btGeneric6DofSpringConstraint.prototype['setUserConstraintPtr'] = function(arg0) { + _emscripten_bind_btGeneric6DofSpringConstraint__setUserConstraintPtr_p1(this.ptr, arg0); +} +btGeneric6DofSpringConstraint.prototype['testAngularLimitMotor'] = function(arg0) { + return _emscripten_bind_btGeneric6DofSpringConstraint__testAngularLimitMotor_p1(this.ptr, arg0); +} +btBroadphaseProxy.prototype['get_m_clientObject'] = function() { + return _emscripten_bind_btBroadphaseProxy__get_m_clientObject_p0(this.ptr); +} +btBroadphaseProxy.prototype['isInfinite'] = function(arg0) { + return _emscripten_bind_btBroadphaseProxy__isInfinite_p1(arg0); +} +btBroadphaseProxy.prototype['set_m_clientObject'] = function(arg0) { + _emscripten_bind_btBroadphaseProxy__set_m_clientObject_p1(this.ptr, arg0); +} +btBroadphaseProxy.prototype['set_m_multiSapParentProxy'] = function(arg0) { + _emscripten_bind_btBroadphaseProxy__set_m_multiSapParentProxy_p1(this.ptr, arg0); +} +function btBroadphaseProxy(arg0, arg1, arg2, arg3, arg4, arg5) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p0(); + else if (arg5 === undefined) + this.ptr = _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p5(arg0.ptr, arg1.ptr, arg2, arg3, arg4); + else + this.ptr = _emscripten_bind_btBroadphaseProxy__btBroadphaseProxy_p6(arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5); + btBroadphaseProxy.prototype.__cache__[this.ptr] = this; + this.__class__ = btBroadphaseProxy; +} +btBroadphaseProxy.prototype.__cache__ = {}; +Module['btBroadphaseProxy'] = btBroadphaseProxy; +btBroadphaseProxy.prototype['isCompound'] = function(arg0) { + return _emscripten_bind_btBroadphaseProxy__isCompound_p1(arg0); +} +btBroadphaseProxy.prototype['isPolyhedral'] = function(arg0) { + return _emscripten_bind_btBroadphaseProxy__isPolyhedral_p1(arg0); +} +btBroadphaseProxy.prototype['get_m_aabbMin'] = function() { + return wrapPointer(_emscripten_bind_btBroadphaseProxy__get_m_aabbMin_p0(this.ptr), Module['btVector3']); +} +btBroadphaseProxy.prototype['set_m_uniqueId'] = function(arg0) { + _emscripten_bind_btBroadphaseProxy__set_m_uniqueId_p1(this.ptr, arg0); +} +btBroadphaseProxy.prototype['isConvex'] = function(arg0) { + return _emscripten_bind_btBroadphaseProxy__isConvex_p1(arg0); +} +btBroadphaseProxy.prototype['get_m_collisionFilterMask'] = function() { + return _emscripten_bind_btBroadphaseProxy__get_m_collisionFilterMask_p0(this.ptr); +} +btBroadphaseProxy.prototype['getUid'] = function() { + return _emscripten_bind_btBroadphaseProxy__getUid_p0(this.ptr); +} +btBroadphaseProxy.prototype['get_m_aabbMax'] = function() { + return wrapPointer(_emscripten_bind_btBroadphaseProxy__get_m_aabbMax_p0(this.ptr), Module['btVector3']); +} +btBroadphaseProxy.prototype['isNonMoving'] = function(arg0) { + return _emscripten_bind_btBroadphaseProxy__isNonMoving_p1(arg0); +} +btBroadphaseProxy.prototype['set_m_aabbMin'] = function(arg0) { + _emscripten_bind_btBroadphaseProxy__set_m_aabbMin_p1(this.ptr, arg0.ptr); +} +btBroadphaseProxy.prototype['set_m_collisionFilterGroup'] = function(arg0) { + _emscripten_bind_btBroadphaseProxy__set_m_collisionFilterGroup_p1(this.ptr, arg0); +} +btBroadphaseProxy.prototype['isConvex2d'] = function(arg0) { + return _emscripten_bind_btBroadphaseProxy__isConvex2d_p1(arg0); +} +btBroadphaseProxy.prototype['isSoftBody'] = function(arg0) { + return _emscripten_bind_btBroadphaseProxy__isSoftBody_p1(arg0); +} +btBroadphaseProxy.prototype['set_m_aabbMax'] = function(arg0) { + _emscripten_bind_btBroadphaseProxy__set_m_aabbMax_p1(this.ptr, arg0.ptr); +} +btBroadphaseProxy.prototype['__destroy__'] = function() { + _emscripten_bind_btBroadphaseProxy____destroy___p0(this.ptr); +} +btBroadphaseProxy.prototype['get_m_uniqueId'] = function() { + return _emscripten_bind_btBroadphaseProxy__get_m_uniqueId_p0(this.ptr); +} +btBroadphaseProxy.prototype['set_m_collisionFilterMask'] = function(arg0) { + _emscripten_bind_btBroadphaseProxy__set_m_collisionFilterMask_p1(this.ptr, arg0); +} +btBroadphaseProxy.prototype['isConcave'] = function(arg0) { + return _emscripten_bind_btBroadphaseProxy__isConcave_p1(arg0); +} +btBroadphaseProxy.prototype['get_m_multiSapParentProxy'] = function() { + return _emscripten_bind_btBroadphaseProxy__get_m_multiSapParentProxy_p0(this.ptr); +} +btBroadphaseProxy.prototype['get_m_collisionFilterGroup'] = function() { + return _emscripten_bind_btBroadphaseProxy__get_m_collisionFilterGroup_p0(this.ptr); +} +btTriangleIndexVertexArray.prototype['getLockedReadOnlyVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (arg8 === undefined) + _emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + else + _emscripten_bind_btTriangleIndexVertexArray__getLockedReadOnlyVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); +} +btTriangleIndexVertexArray.prototype['preallocateIndices'] = function(arg0) { + _emscripten_bind_btTriangleIndexVertexArray__preallocateIndices_p1(this.ptr, arg0); +} +btTriangleIndexVertexArray.prototype['calculateAabbBruteForce'] = function(arg0, arg1) { + _emscripten_bind_btTriangleIndexVertexArray__calculateAabbBruteForce_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btTriangleIndexVertexArray.prototype['__destroy__'] = function() { + _emscripten_bind_btTriangleIndexVertexArray____destroy___p0(this.ptr); +} +btTriangleIndexVertexArray.prototype['preallocateVertices'] = function(arg0) { + _emscripten_bind_btTriangleIndexVertexArray__preallocateVertices_p1(this.ptr, arg0); +} +btTriangleIndexVertexArray.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btTriangleIndexVertexArray__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btTriangleIndexVertexArray.prototype['getIndexedMeshArray'] = function() { + return _emscripten_bind_btTriangleIndexVertexArray__getIndexedMeshArray_p0(this.ptr); +} +function btTriangleIndexVertexArray(arg0, arg1, arg2, arg3, arg4, arg5) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p0(); + else + this.ptr = _emscripten_bind_btTriangleIndexVertexArray__btTriangleIndexVertexArray_p6(arg0, arg1, arg2, arg3, arg4, arg5); + btTriangleIndexVertexArray.prototype.__cache__[this.ptr] = this; + this.__class__ = btTriangleIndexVertexArray; +} +btTriangleIndexVertexArray.prototype.__cache__ = {}; +Module['btTriangleIndexVertexArray'] = btTriangleIndexVertexArray; +btTriangleIndexVertexArray.prototype['setScaling'] = function(arg0) { + _emscripten_bind_btTriangleIndexVertexArray__setScaling_p1(this.ptr, arg0.ptr); +} +btTriangleIndexVertexArray.prototype['getScaling'] = function() { + return wrapPointer(_emscripten_bind_btTriangleIndexVertexArray__getScaling_p0(this.ptr), Module['btVector3']); +} +btTriangleIndexVertexArray.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btTriangleIndexVertexArray__calculateSerializeBufferSize_p0(this.ptr); +} +btTriangleIndexVertexArray.prototype['setPremadeAabb'] = function(arg0, arg1) { + _emscripten_bind_btTriangleIndexVertexArray__setPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btTriangleIndexVertexArray.prototype['InternalProcessAllTriangles'] = function(arg0, arg1, arg2) { + _emscripten_bind_btTriangleIndexVertexArray__InternalProcessAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btTriangleIndexVertexArray.prototype['getPremadeAabb'] = function(arg0, arg1) { + _emscripten_bind_btTriangleIndexVertexArray__getPremadeAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btTriangleIndexVertexArray.prototype['addIndexedMesh'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btTriangleIndexVertexArray__addIndexedMesh_p2(this.ptr, arg0.ptr, arg1); +} +btTriangleIndexVertexArray.prototype['getNumSubParts'] = function() { + return _emscripten_bind_btTriangleIndexVertexArray__getNumSubParts_p0(this.ptr); +} +btTriangleIndexVertexArray.prototype['getLockedVertexIndexBase'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) { + if (arg8 === undefined) + _emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p8(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7); + else + _emscripten_bind_btTriangleIndexVertexArray__getLockedVertexIndexBase_p9(this.ptr, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); +} +btTriangleIndexVertexArray.prototype['hasPremadeAabb'] = function() { + return _emscripten_bind_btTriangleIndexVertexArray__hasPremadeAabb_p0(this.ptr); +} +btTriangleIndexVertexArray.prototype['unLockVertexBase'] = function(arg0) { + _emscripten_bind_btTriangleIndexVertexArray__unLockVertexBase_p1(this.ptr, arg0); +} +btTriangleIndexVertexArray.prototype['unLockReadOnlyVertexBase'] = function(arg0) { + _emscripten_bind_btTriangleIndexVertexArray__unLockReadOnlyVertexBase_p1(this.ptr, arg0); +} +btBoxShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btBoxShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btBoxShape.prototype['getNumPlanes'] = function() { + return _emscripten_bind_btBoxShape__getNumPlanes_p0(this.ptr); +} +btBoxShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBoxShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBoxShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btBoxShape__setUserPointer_p1(this.ptr, arg0); +} +btBoxShape.prototype['isInside'] = function(arg0, arg1) { + return _emscripten_bind_btBoxShape__isInside_p2(this.ptr, arg0.ptr, arg1); +} +btBoxShape.prototype['getNumVertices'] = function() { + return _emscripten_bind_btBoxShape__getNumVertices_p0(this.ptr); +} +btBoxShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btBoxShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btBoxShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btBoxShape__isPolyhedral_p0(this.ptr); +} +btBoxShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btBoxShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btBoxShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBoxShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBoxShape.prototype['getVertex'] = function(arg0, arg1) { + _emscripten_bind_btBoxShape__getVertex_p2(this.ptr, arg0, arg1.ptr); +} +btBoxShape.prototype['getPlaneEquation'] = function(arg0, arg1) { + _emscripten_bind_btBoxShape__getPlaneEquation_p2(this.ptr, arg0.ptr, arg1); +} +btBoxShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBoxShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBoxShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBoxShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBoxShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btBoxShape__calculateSerializeBufferSize_p0(this.ptr); +} +btBoxShape.prototype['getNumEdges'] = function() { + return _emscripten_bind_btBoxShape__getNumEdges_p0(this.ptr); +} +btBoxShape.prototype['getName'] = function() { + return _emscripten_bind_btBoxShape__getName_p0(this.ptr); +} +btBoxShape.prototype['getEdge'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBoxShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr); +} +btBoxShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btBoxShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +function btBoxShape(arg0) { + this.ptr = _emscripten_bind_btBoxShape__btBoxShape_p1(arg0.ptr); + btBoxShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btBoxShape; +} +btBoxShape.prototype.__cache__ = {}; +Module['btBoxShape'] = btBoxShape; +btBoxShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btBoxShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btBoxShape.prototype['isCompound'] = function() { + return _emscripten_bind_btBoxShape__isCompound_p0(this.ptr); +} +btBoxShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btBoxShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btBoxShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBoxShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBoxShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btBoxShape__getMarginNV_p0(this.ptr); +} +btBoxShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btBoxShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btBoxShape.prototype['isConvex'] = function() { + return _emscripten_bind_btBoxShape__isConvex_p0(this.ptr); +} +btBoxShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btBoxShape__isInfinite_p0(this.ptr); +} +btBoxShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btBoxShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btBoxShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btBoxShape__getUserPointer_p0(this.ptr); +} +btBoxShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btBoxShape__isNonMoving_p0(this.ptr); +} +btBoxShape.prototype['getMargin'] = function() { + return _emscripten_bind_btBoxShape__getMargin_p0(this.ptr); +} +btBoxShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btBoxShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btBoxShape.prototype['getHalfExtentsWithoutMargin'] = function() { + return wrapPointer(_emscripten_bind_btBoxShape__getHalfExtentsWithoutMargin_p0(this.ptr), Module['btVector3']); +} +btBoxShape.prototype['initializePolyhedralFeatures'] = function() { + return _emscripten_bind_btBoxShape__initializePolyhedralFeatures_p0(this.ptr); +} +btBoxShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btBoxShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btBoxShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btBoxShape__isSoftBody_p0(this.ptr); +} +btBoxShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btBoxShape__getMarginNonVirtual_p0(this.ptr); +} +btBoxShape.prototype['__destroy__'] = function() { + _emscripten_bind_btBoxShape____destroy___p0(this.ptr); +} +btBoxShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBoxShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btBoxShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btBoxShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btBoxShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btBoxShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btBoxShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btBoxShape__getAngularMotionDisc_p0(this.ptr); +} +btBoxShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btBoxShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btBoxShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBoxShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btBoxShape.prototype['getPlane'] = function(arg0, arg1, arg2) { + _emscripten_bind_btBoxShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btBoxShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btBoxShape__setMargin_p1(this.ptr, arg0); +} +btBoxShape.prototype['getConvexPolyhedron'] = function() { + return _emscripten_bind_btBoxShape__getConvexPolyhedron_p0(this.ptr); +} +btBoxShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btBoxShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btBoxShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btBoxShape__getShapeType_p0(this.ptr); +} +btBoxShape.prototype['getHalfExtentsWithMargin'] = function() { + return wrapPointer(_emscripten_bind_btBoxShape__getHalfExtentsWithMargin_p0(this.ptr), Module['btVector3']); +} +btBoxShape.prototype['isConcave'] = function() { + return _emscripten_bind_btBoxShape__isConcave_p0(this.ptr); +} +btBoxShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btBoxShape__isConvex2d_p0(this.ptr); +} +function Result(){ throw "Result is abstract!" } +Result.prototype.__cache__ = {}; +Module['Result'] = Result; +Result.prototype['setShapeIdentifiersB'] = function(arg0, arg1) { + _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersB_p2(this.ptr, arg0, arg1); +} +Result.prototype['setShapeIdentifiersA'] = function(arg0, arg1) { + _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__setShapeIdentifiersA_p2(this.ptr, arg0, arg1); +} +Result.prototype['addContactPoint'] = function(arg0, arg1, arg2) { + _emscripten_bind_btDiscreteCollisionDetectorInterface__Result__addContactPoint_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +function btPolyhedralConvexAabbCachingShape(){ throw "btPolyhedralConvexAabbCachingShape is abstract!" } +btPolyhedralConvexAabbCachingShape.prototype.__cache__ = {}; +Module['btPolyhedralConvexAabbCachingShape'] = btPolyhedralConvexAabbCachingShape; +btPolyhedralConvexAabbCachingShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getNumPlanes'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPlanes_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btPolyhedralConvexAabbCachingShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__setUserPointer_p1(this.ptr, arg0); +} +btPolyhedralConvexAabbCachingShape.prototype['isInside'] = function(arg0, arg1) { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isInside_p2(this.ptr, arg0.ptr, arg1); +} +btPolyhedralConvexAabbCachingShape.prototype['getNumVertices'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumVertices_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btPolyhedralConvexAabbCachingShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isPolyhedral_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getVertex'] = function(arg0, arg1) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__getVertex_p2(this.ptr, arg0, arg1.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btPolyhedralConvexAabbCachingShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateSerializeBufferSize_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getNumEdges'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNumEdges_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getName'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getName_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getEdge'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__getEdge_p3(this.ptr, arg0, arg1.ptr, arg2.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btPolyhedralConvexAabbCachingShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btPolyhedralConvexAabbCachingShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btPolyhedralConvexAabbCachingShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex2d_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btPolyhedralConvexAabbCachingShape.prototype['isConvex'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConvex_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isInfinite_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getUserPointer_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isNonMoving_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getMargin'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMargin_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['recalcLocalAabb'] = function() { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__recalcLocalAabb_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__setMargin_p1(this.ptr, arg0); +} +btPolyhedralConvexAabbCachingShape.prototype['initializePolyhedralFeatures'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__initializePolyhedralFeatures_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNV_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isSoftBody_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getMarginNonVirtual_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btPolyhedralConvexAabbCachingShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btPolyhedralConvexAabbCachingShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btPolyhedralConvexAabbCachingShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btPolyhedralConvexAabbCachingShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAngularMotionDisc_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getPlane'] = function(arg0, arg1, arg2) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__getPlane_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btPolyhedralConvexAabbCachingShape.prototype['isCompound'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isCompound_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getConvexPolyhedron'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getConvexPolyhedron_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__getShapeType_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['isConcave'] = function() { + return _emscripten_bind_btPolyhedralConvexAabbCachingShape__isConcave_p0(this.ptr); +} +btPolyhedralConvexAabbCachingShape.prototype['getNonvirtualAabb'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btPolyhedralConvexAabbCachingShape__getNonvirtualAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3); +} +CProfileSample.prototype['__destroy__'] = function() { + _emscripten_bind_CProfileSample____destroy___p0(this.ptr); +} +function CProfileSample(arg0) { +var stack = Runtime.stackSave(); +try { + this.ptr = _emscripten_bind_CProfileSample__CProfileSample_p1(ensureString(arg0)); +} finally { Runtime.stackRestore(stack) } + CProfileSample.prototype.__cache__[this.ptr] = this; + this.__class__ = CProfileSample; +} +CProfileSample.prototype.__cache__ = {}; +Module['CProfileSample'] = CProfileSample; +btCapsuleShapeX.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btCapsuleShapeX__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btCapsuleShapeX.prototype['isCompound'] = function() { + return _emscripten_bind_btCapsuleShapeX__isCompound_p0(this.ptr); +} +btCapsuleShapeX.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShapeX__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShapeX.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btCapsuleShapeX__setUserPointer_p1(this.ptr, arg0); +} +btCapsuleShapeX.prototype['getUpAxis'] = function() { + return _emscripten_bind_btCapsuleShapeX__getUpAxis_p0(this.ptr); +} +btCapsuleShapeX.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btCapsuleShapeX__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btCapsuleShapeX.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btCapsuleShapeX__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btCapsuleShapeX.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btCapsuleShapeX__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btCapsuleShapeX.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btCapsuleShapeX__isPolyhedral_p0(this.ptr); +} +btCapsuleShapeX.prototype['getRadius'] = function() { + return _emscripten_bind_btCapsuleShapeX__getRadius_p0(this.ptr); +} +btCapsuleShapeX.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShapeX__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCapsuleShapeX.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btCapsuleShapeX__calculateSerializeBufferSize_p0(this.ptr); +} +btCapsuleShapeX.prototype['getName'] = function() { + return _emscripten_bind_btCapsuleShapeX__getName_p0(this.ptr); +} +btCapsuleShapeX.prototype['getHalfHeight'] = function() { + return _emscripten_bind_btCapsuleShapeX__getHalfHeight_p0(this.ptr); +} +btCapsuleShapeX.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btCapsuleShapeX__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btCapsuleShapeX.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShapeX__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShapeX.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShapeX__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShapeX.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btCapsuleShapeX__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btCapsuleShapeX.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShapeX__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCapsuleShapeX.prototype['getMarginNV'] = function() { + return _emscripten_bind_btCapsuleShapeX__getMarginNV_p0(this.ptr); +} +btCapsuleShapeX.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShapeX__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShapeX.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btCapsuleShapeX__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btCapsuleShapeX.prototype['isConvex'] = function() { + return _emscripten_bind_btCapsuleShapeX__isConvex_p0(this.ptr); +} +btCapsuleShapeX.prototype['isInfinite'] = function() { + return _emscripten_bind_btCapsuleShapeX__isInfinite_p0(this.ptr); +} +function btCapsuleShapeX(arg0, arg1) { + this.ptr = _emscripten_bind_btCapsuleShapeX__btCapsuleShapeX_p2(arg0, arg1); + btCapsuleShapeX.prototype.__cache__[this.ptr] = this; + this.__class__ = btCapsuleShapeX; +} +btCapsuleShapeX.prototype.__cache__ = {}; +Module['btCapsuleShapeX'] = btCapsuleShapeX; +btCapsuleShapeX.prototype['getUserPointer'] = function() { + return _emscripten_bind_btCapsuleShapeX__getUserPointer_p0(this.ptr); +} +btCapsuleShapeX.prototype['isNonMoving'] = function() { + return _emscripten_bind_btCapsuleShapeX__isNonMoving_p0(this.ptr); +} +btCapsuleShapeX.prototype['getMargin'] = function() { + return _emscripten_bind_btCapsuleShapeX__getMargin_p0(this.ptr); +} +btCapsuleShapeX.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btCapsuleShapeX__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btCapsuleShapeX.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btCapsuleShapeX__setMargin_p1(this.ptr, arg0); +} +btCapsuleShapeX.prototype['isConvex2d'] = function() { + return _emscripten_bind_btCapsuleShapeX__isConvex2d_p0(this.ptr); +} +btCapsuleShapeX.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btCapsuleShapeX__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btCapsuleShapeX.prototype['isSoftBody'] = function() { + return _emscripten_bind_btCapsuleShapeX__isSoftBody_p0(this.ptr); +} +btCapsuleShapeX.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btCapsuleShapeX__getMarginNonVirtual_p0(this.ptr); +} +btCapsuleShapeX.prototype['__destroy__'] = function() { + _emscripten_bind_btCapsuleShapeX____destroy___p0(this.ptr); +} +btCapsuleShapeX.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShapeX__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btCapsuleShapeX.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btCapsuleShapeX__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btCapsuleShapeX.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btCapsuleShapeX__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btCapsuleShapeX.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btCapsuleShapeX__getAngularMotionDisc_p0(this.ptr); +} +btCapsuleShapeX.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btCapsuleShapeX__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btCapsuleShapeX.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShapeX__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCapsuleShapeX.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btCapsuleShapeX__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btCapsuleShapeX.prototype['isConcave'] = function() { + return _emscripten_bind_btCapsuleShapeX__isConcave_p0(this.ptr); +} +btCapsuleShapeX.prototype['getShapeType'] = function() { + return _emscripten_bind_btCapsuleShapeX__getShapeType_p0(this.ptr); +} +btQuaternion.prototype['nearest'] = function(arg0) { + return wrapPointer(_emscripten_bind_btQuaternion__nearest_p1(this.ptr, arg0.ptr), Module['btQuaternion']); +} +btQuaternion.prototype['setMin'] = function(arg0) { + _emscripten_bind_btQuaternion__setMin_p1(this.ptr, arg0.ptr); +} +btQuaternion.prototype['farthest'] = function(arg0) { + return wrapPointer(_emscripten_bind_btQuaternion__farthest_p1(this.ptr, arg0.ptr), Module['btQuaternion']); +} +btQuaternion.prototype['getX'] = function() { + return _emscripten_bind_btQuaternion__getX_p0(this.ptr); +} +btQuaternion.prototype['getY'] = function() { + return _emscripten_bind_btQuaternion__getY_p0(this.ptr); +} +btQuaternion.prototype['getZ'] = function() { + return _emscripten_bind_btQuaternion__getZ_p0(this.ptr); +} +btQuaternion.prototype['setEuler'] = function(arg0, arg1, arg2) { + _emscripten_bind_btQuaternion__setEuler_p3(this.ptr, arg0, arg1, arg2); +} +btQuaternion.prototype['op_sub'] = function(arg0) { + return wrapPointer(_emscripten_bind_btQuaternion__op_sub_p1(this.ptr, arg0.ptr), Module['btQuaternion']); +} +btQuaternion.prototype['getW'] = function() { + return _emscripten_bind_btQuaternion__getW_p0(this.ptr); +} +btQuaternion.prototype['normalize'] = function() { + return wrapPointer(_emscripten_bind_btQuaternion__normalize_p0(this.ptr), Module['btQuaternion']); +} +btQuaternion.prototype['slerp'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btQuaternion__slerp_p2(this.ptr, arg0.ptr, arg1), Module['btQuaternion']); +} +btQuaternion.prototype['inverse'] = function() { + return wrapPointer(_emscripten_bind_btQuaternion__inverse_p0(this.ptr), Module['btQuaternion']); +} +btQuaternion.prototype['angle'] = function(arg0) { + return _emscripten_bind_btQuaternion__angle_p1(this.ptr, arg0.ptr); +} +btQuaternion.prototype['getAxis'] = function() { + return wrapPointer(_emscripten_bind_btQuaternion__getAxis_p0(this.ptr), Module['btVector3']); +} +btQuaternion.prototype['getIdentity'] = function() { + return wrapPointer(_emscripten_bind_btQuaternion__getIdentity_p0(), Module['btQuaternion']); +} +btQuaternion.prototype['setMax'] = function(arg0) { + _emscripten_bind_btQuaternion__setMax_p1(this.ptr, arg0.ptr); +} +btQuaternion.prototype['op_add'] = function(arg0) { + return wrapPointer(_emscripten_bind_btQuaternion__op_add_p1(this.ptr, arg0.ptr), Module['btQuaternion']); +} +btQuaternion.prototype['op_mul'] = function(arg0) { + return wrapPointer(_emscripten_bind_btQuaternion__op_mul_p1(this.ptr, arg0), Module['btQuaternion']); +} +btQuaternion.prototype['setRotation'] = function(arg0, arg1) { + _emscripten_bind_btQuaternion__setRotation_p2(this.ptr, arg0.ptr, arg1); +} +btQuaternion.prototype['setEulerZYX'] = function(arg0, arg1, arg2) { + _emscripten_bind_btQuaternion__setEulerZYX_p3(this.ptr, arg0, arg1, arg2); +} +btQuaternion.prototype['setValue'] = function(arg0, arg1, arg2, arg3) { + if (arg3 === undefined) + _emscripten_bind_btQuaternion__setValue_p3(this.ptr, arg0, arg1, arg2); + else + _emscripten_bind_btQuaternion__setValue_p4(this.ptr, arg0, arg1, arg2, arg3); +} +function btQuaternion(arg0, arg1, arg2, arg3) { + if (arg0 === undefined) + this.ptr = _emscripten_bind_btQuaternion__btQuaternion_p0(); + else if (arg2 === undefined) + this.ptr = _emscripten_bind_btQuaternion__btQuaternion_p2(arg0.ptr, arg1); + else if (arg3 === undefined) + this.ptr = _emscripten_bind_btQuaternion__btQuaternion_p3(arg0, arg1, arg2); + else + this.ptr = _emscripten_bind_btQuaternion__btQuaternion_p4(arg0, arg1, arg2, arg3); + btQuaternion.prototype.__cache__[this.ptr] = this; + this.__class__ = btQuaternion; +} +btQuaternion.prototype.__cache__ = {}; +Module['btQuaternion'] = btQuaternion; +btQuaternion.prototype['op_div'] = function(arg0) { + return wrapPointer(_emscripten_bind_btQuaternion__op_div_p1(this.ptr, arg0), Module['btQuaternion']); +} +btQuaternion.prototype['setW'] = function(arg0) { + _emscripten_bind_btQuaternion__setW_p1(this.ptr, arg0); +} +btQuaternion.prototype['normalized'] = function() { + return wrapPointer(_emscripten_bind_btQuaternion__normalized_p0(this.ptr), Module['btQuaternion']); +} +btQuaternion.prototype['setX'] = function(arg0) { + _emscripten_bind_btQuaternion__setX_p1(this.ptr, arg0); +} +btQuaternion.prototype['setY'] = function(arg0) { + _emscripten_bind_btQuaternion__setY_p1(this.ptr, arg0); +} +btQuaternion.prototype['setZ'] = function(arg0) { + _emscripten_bind_btQuaternion__setZ_p1(this.ptr, arg0); +} +btQuaternion.prototype['__destroy__'] = function() { + _emscripten_bind_btQuaternion____destroy___p0(this.ptr); +} +btQuaternion.prototype['getAngle'] = function() { + return _emscripten_bind_btQuaternion__getAngle_p0(this.ptr); +} +btQuaternion.prototype['length2'] = function() { + return _emscripten_bind_btQuaternion__length2_p0(this.ptr); +} +btQuaternion.prototype['length'] = function() { + return _emscripten_bind_btQuaternion__length_p0(this.ptr); +} +btQuaternion.prototype['w'] = function() { + return _emscripten_bind_btQuaternion__w_p0(this.ptr); +} +btQuaternion.prototype['y'] = function() { + return _emscripten_bind_btQuaternion__y_p0(this.ptr); +} +btQuaternion.prototype['x'] = function() { + return _emscripten_bind_btQuaternion__x_p0(this.ptr); +} +btQuaternion.prototype['z'] = function() { + return _emscripten_bind_btQuaternion__z_p0(this.ptr); +} +btQuaternion.prototype['dot'] = function(arg0) { + return _emscripten_bind_btQuaternion__dot_p1(this.ptr, arg0.ptr); +} +btCapsuleShapeZ.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btCapsuleShapeZ__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btCapsuleShapeZ.prototype['isCompound'] = function() { + return _emscripten_bind_btCapsuleShapeZ__isCompound_p0(this.ptr); +} +btCapsuleShapeZ.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShapeZ.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btCapsuleShapeZ__setUserPointer_p1(this.ptr, arg0); +} +btCapsuleShapeZ.prototype['getUpAxis'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getUpAxis_p0(this.ptr); +} +btCapsuleShapeZ.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btCapsuleShapeZ__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btCapsuleShapeZ.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btCapsuleShapeZ__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btCapsuleShapeZ.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btCapsuleShapeZ.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btCapsuleShapeZ__isPolyhedral_p0(this.ptr); +} +btCapsuleShapeZ.prototype['getRadius'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getRadius_p0(this.ptr); +} +btCapsuleShapeZ.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShapeZ__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCapsuleShapeZ.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btCapsuleShapeZ__calculateSerializeBufferSize_p0(this.ptr); +} +btCapsuleShapeZ.prototype['getName'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getName_p0(this.ptr); +} +btCapsuleShapeZ.prototype['getHalfHeight'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getHalfHeight_p0(this.ptr); +} +btCapsuleShapeZ.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btCapsuleShapeZ__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btCapsuleShapeZ.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShapeZ.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShapeZ__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShapeZ.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btCapsuleShapeZ__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btCapsuleShapeZ.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShapeZ__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCapsuleShapeZ.prototype['getMarginNV'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getMarginNV_p0(this.ptr); +} +btCapsuleShapeZ.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btCapsuleShapeZ__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btCapsuleShapeZ.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btCapsuleShapeZ__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btCapsuleShapeZ.prototype['isConvex'] = function() { + return _emscripten_bind_btCapsuleShapeZ__isConvex_p0(this.ptr); +} +btCapsuleShapeZ.prototype['isInfinite'] = function() { + return _emscripten_bind_btCapsuleShapeZ__isInfinite_p0(this.ptr); +} +function btCapsuleShapeZ(arg0, arg1) { + this.ptr = _emscripten_bind_btCapsuleShapeZ__btCapsuleShapeZ_p2(arg0, arg1); + btCapsuleShapeZ.prototype.__cache__[this.ptr] = this; + this.__class__ = btCapsuleShapeZ; +} +btCapsuleShapeZ.prototype.__cache__ = {}; +Module['btCapsuleShapeZ'] = btCapsuleShapeZ; +btCapsuleShapeZ.prototype['getUserPointer'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getUserPointer_p0(this.ptr); +} +btCapsuleShapeZ.prototype['isNonMoving'] = function() { + return _emscripten_bind_btCapsuleShapeZ__isNonMoving_p0(this.ptr); +} +btCapsuleShapeZ.prototype['getMargin'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getMargin_p0(this.ptr); +} +btCapsuleShapeZ.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btCapsuleShapeZ__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btCapsuleShapeZ.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btCapsuleShapeZ__setMargin_p1(this.ptr, arg0); +} +btCapsuleShapeZ.prototype['isConvex2d'] = function() { + return _emscripten_bind_btCapsuleShapeZ__isConvex2d_p0(this.ptr); +} +btCapsuleShapeZ.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btCapsuleShapeZ__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btCapsuleShapeZ.prototype['isSoftBody'] = function() { + return _emscripten_bind_btCapsuleShapeZ__isSoftBody_p0(this.ptr); +} +btCapsuleShapeZ.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getMarginNonVirtual_p0(this.ptr); +} +btCapsuleShapeZ.prototype['__destroy__'] = function() { + _emscripten_bind_btCapsuleShapeZ____destroy___p0(this.ptr); +} +btCapsuleShapeZ.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShapeZ__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btCapsuleShapeZ.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btCapsuleShapeZ__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btCapsuleShapeZ.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btCapsuleShapeZ__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btCapsuleShapeZ.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getAngularMotionDisc_p0(this.ptr); +} +btCapsuleShapeZ.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btCapsuleShapeZ__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btCapsuleShapeZ.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btCapsuleShapeZ__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btCapsuleShapeZ.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btCapsuleShapeZ__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btCapsuleShapeZ.prototype['isConcave'] = function() { + return _emscripten_bind_btCapsuleShapeZ__isConcave_p0(this.ptr); +} +btCapsuleShapeZ.prototype['getShapeType'] = function() { + return _emscripten_bind_btCapsuleShapeZ__getShapeType_p0(this.ptr); +} +btGhostObject.prototype['removeOverlappingObjectInternal'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p2(this.ptr, arg0.ptr, arg1.ptr); + else + _emscripten_bind_btGhostObject__removeOverlappingObjectInternal_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btGhostObject.prototype['getFriction'] = function() { + return _emscripten_bind_btGhostObject__getFriction_p0(this.ptr); +} +btGhostObject.prototype['setInterpolationLinearVelocity'] = function(arg0) { + _emscripten_bind_btGhostObject__setInterpolationLinearVelocity_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['getDeactivationTime'] = function() { + return _emscripten_bind_btGhostObject__getDeactivationTime_p0(this.ptr); +} +btGhostObject.prototype['setCompanionId'] = function(arg0) { + _emscripten_bind_btGhostObject__setCompanionId_p1(this.ptr, arg0); +} +btGhostObject.prototype['setInterpolationAngularVelocity'] = function(arg0) { + _emscripten_bind_btGhostObject__setInterpolationAngularVelocity_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btGhostObject__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btGhostObject.prototype['getCcdSweptSphereRadius'] = function() { + return _emscripten_bind_btGhostObject__getCcdSweptSphereRadius_p0(this.ptr); +} +btGhostObject.prototype['setFriction'] = function(arg0) { + _emscripten_bind_btGhostObject__setFriction_p1(this.ptr, arg0); +} +btGhostObject.prototype['internalSetExtensionPointer'] = function(arg0) { + _emscripten_bind_btGhostObject__internalSetExtensionPointer_p1(this.ptr, arg0); +} +btGhostObject.prototype['setContactProcessingThreshold'] = function(arg0) { + _emscripten_bind_btGhostObject__setContactProcessingThreshold_p1(this.ptr, arg0); +} +btGhostObject.prototype['setInterpolationWorldTransform'] = function(arg0) { + _emscripten_bind_btGhostObject__setInterpolationWorldTransform_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['getInterpolationLinearVelocity'] = function() { + return wrapPointer(_emscripten_bind_btGhostObject__getInterpolationLinearVelocity_p0(this.ptr), Module['btVector3']); +} +btGhostObject.prototype['mergesSimulationIslands'] = function() { + return _emscripten_bind_btGhostObject__mergesSimulationIslands_p0(this.ptr); +} +btGhostObject.prototype['setCollisionShape'] = function(arg0) { + _emscripten_bind_btGhostObject__setCollisionShape_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['setCcdMotionThreshold'] = function(arg0) { + _emscripten_bind_btGhostObject__setCcdMotionThreshold_p1(this.ptr, arg0); +} +btGhostObject.prototype['getIslandTag'] = function() { + return _emscripten_bind_btGhostObject__getIslandTag_p0(this.ptr); +} +btGhostObject.prototype['getNumOverlappingObjects'] = function() { + return _emscripten_bind_btGhostObject__getNumOverlappingObjects_p0(this.ptr); +} +btGhostObject.prototype['addOverlappingObjectInternal'] = function(arg0, arg1) { + if (arg1 === undefined) + _emscripten_bind_btGhostObject__addOverlappingObjectInternal_p1(this.ptr, arg0.ptr); + else + _emscripten_bind_btGhostObject__addOverlappingObjectInternal_p2(this.ptr, arg0.ptr, arg1.ptr); +} +btGhostObject.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btGhostObject__setUserPointer_p1(this.ptr, arg0); +} +btGhostObject.prototype['checkCollideWith'] = function(arg0) { + return _emscripten_bind_btGhostObject__checkCollideWith_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['rayTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_btGhostObject__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btGhostObject.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btGhostObject__calculateSerializeBufferSize_p0(this.ptr); +} +btGhostObject.prototype['getInterpolationAngularVelocity'] = function() { + return wrapPointer(_emscripten_bind_btGhostObject__getInterpolationAngularVelocity_p0(this.ptr), Module['btVector3']); +} +btGhostObject.prototype['forceActivationState'] = function(arg0) { + _emscripten_bind_btGhostObject__forceActivationState_p1(this.ptr, arg0); +} +btGhostObject.prototype['activate'] = function(arg0) { + if (arg0 === undefined) + _emscripten_bind_btGhostObject__activate_p0(this.ptr); + else + _emscripten_bind_btGhostObject__activate_p1(this.ptr, arg0); +} +btGhostObject.prototype['setIslandTag'] = function(arg0) { + _emscripten_bind_btGhostObject__setIslandTag_p1(this.ptr, arg0); +} +btGhostObject.prototype['setHitFraction'] = function(arg0) { + _emscripten_bind_btGhostObject__setHitFraction_p1(this.ptr, arg0); +} +btGhostObject.prototype['setCcdSweptSphereRadius'] = function(arg0) { + _emscripten_bind_btGhostObject__setCcdSweptSphereRadius_p1(this.ptr, arg0); +} +btGhostObject.prototype['getInterpolationWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btGhostObject__getInterpolationWorldTransform_p0(this.ptr), Module['btTransform']); +} +btGhostObject.prototype['serializeSingleObject'] = function(arg0) { + _emscripten_bind_btGhostObject__serializeSingleObject_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['getOverlappingObject'] = function(arg0) { + return wrapPointer(_emscripten_bind_btGhostObject__getOverlappingObject_p1(this.ptr, arg0), Module['btCollisionObject']); +} +btGhostObject.prototype['convexSweepTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg4 === undefined) + _emscripten_bind_btGhostObject__convexSweepTest_p4(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3); + else + _emscripten_bind_btGhostObject__convexSweepTest_p5(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3, arg4); +} +btGhostObject.prototype['isStaticObject'] = function() { + return _emscripten_bind_btGhostObject__isStaticObject_p0(this.ptr); +} +btGhostObject.prototype['getCollisionShape'] = function() { + return wrapPointer(_emscripten_bind_btGhostObject__getCollisionShape_p0(this.ptr), Module['btCollisionShape']); +} +btGhostObject.prototype['setAnisotropicFriction'] = function(arg0) { + _emscripten_bind_btGhostObject__setAnisotropicFriction_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['getActivationState'] = function() { + return _emscripten_bind_btGhostObject__getActivationState_p0(this.ptr); +} +btGhostObject.prototype['getBroadphaseHandle'] = function() { + return wrapPointer(_emscripten_bind_btGhostObject__getBroadphaseHandle_p0(this.ptr), Module['btBroadphaseProxy']); +} +btGhostObject.prototype['getRestitution'] = function() { + return _emscripten_bind_btGhostObject__getRestitution_p0(this.ptr); +} +btGhostObject.prototype['getUserPointer'] = function() { + return _emscripten_bind_btGhostObject__getUserPointer_p0(this.ptr); +} +function btGhostObject() { + this.ptr = _emscripten_bind_btGhostObject__btGhostObject_p0(); + btGhostObject.prototype.__cache__[this.ptr] = this; + this.__class__ = btGhostObject; +} +btGhostObject.prototype.__cache__ = {}; +Module['btGhostObject'] = btGhostObject; +btGhostObject.prototype['getWorldTransform'] = function() { + return wrapPointer(_emscripten_bind_btGhostObject__getWorldTransform_p0(this.ptr), Module['btTransform']); +} +btGhostObject.prototype['getCcdSquareMotionThreshold'] = function() { + return _emscripten_bind_btGhostObject__getCcdSquareMotionThreshold_p0(this.ptr); +} +btGhostObject.prototype['setWorldTransform'] = function(arg0) { + _emscripten_bind_btGhostObject__setWorldTransform_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['internalSetTemporaryCollisionShape'] = function(arg0) { + _emscripten_bind_btGhostObject__internalSetTemporaryCollisionShape_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['getCcdMotionThreshold'] = function() { + return _emscripten_bind_btGhostObject__getCcdMotionThreshold_p0(this.ptr); +} +btGhostObject.prototype['getCompanionId'] = function() { + return _emscripten_bind_btGhostObject__getCompanionId_p0(this.ptr); +} +btGhostObject.prototype['isActive'] = function() { + return _emscripten_bind_btGhostObject__isActive_p0(this.ptr); +} +btGhostObject.prototype['getInternalType'] = function() { + return _emscripten_bind_btGhostObject__getInternalType_p0(this.ptr); +} +btGhostObject.prototype['__destroy__'] = function() { + _emscripten_bind_btGhostObject____destroy___p0(this.ptr); +} +btGhostObject.prototype['hasContactResponse'] = function() { + return _emscripten_bind_btGhostObject__hasContactResponse_p0(this.ptr); +} +btGhostObject.prototype['upcast'] = function(arg0) { + return wrapPointer(_emscripten_bind_btGhostObject__upcast_p1(arg0.ptr), Module['btGhostObject']); +} +btGhostObject.prototype['setActivationState'] = function(arg0) { + _emscripten_bind_btGhostObject__setActivationState_p1(this.ptr, arg0); +} +btGhostObject.prototype['getRootCollisionShape'] = function() { + return wrapPointer(_emscripten_bind_btGhostObject__getRootCollisionShape_p0(this.ptr), Module['btCollisionShape']); +} +btGhostObject.prototype['getContactProcessingThreshold'] = function() { + return _emscripten_bind_btGhostObject__getContactProcessingThreshold_p0(this.ptr); +} +btGhostObject.prototype['getCollisionFlags'] = function() { + return _emscripten_bind_btGhostObject__getCollisionFlags_p0(this.ptr); +} +btGhostObject.prototype['getHitFraction'] = function() { + return _emscripten_bind_btGhostObject__getHitFraction_p0(this.ptr); +} +btGhostObject.prototype['getAnisotropicFriction'] = function() { + return wrapPointer(_emscripten_bind_btGhostObject__getAnisotropicFriction_p0(this.ptr), Module['btVector3']); +} +btGhostObject.prototype['setDeactivationTime'] = function(arg0) { + _emscripten_bind_btGhostObject__setDeactivationTime_p1(this.ptr, arg0); +} +btGhostObject.prototype['internalGetExtensionPointer'] = function() { + return _emscripten_bind_btGhostObject__internalGetExtensionPointer_p0(this.ptr); +} +btGhostObject.prototype['setCollisionFlags'] = function(arg0) { + _emscripten_bind_btGhostObject__setCollisionFlags_p1(this.ptr, arg0); +} +btGhostObject.prototype['isStaticOrKinematicObject'] = function() { + return _emscripten_bind_btGhostObject__isStaticOrKinematicObject_p0(this.ptr); +} +btGhostObject.prototype['setRestitution'] = function(arg0) { + _emscripten_bind_btGhostObject__setRestitution_p1(this.ptr, arg0); +} +btGhostObject.prototype['hasAnisotropicFriction'] = function() { + return _emscripten_bind_btGhostObject__hasAnisotropicFriction_p0(this.ptr); +} +btGhostObject.prototype['setBroadphaseHandle'] = function(arg0) { + _emscripten_bind_btGhostObject__setBroadphaseHandle_p1(this.ptr, arg0.ptr); +} +btGhostObject.prototype['isKinematicObject'] = function() { + return _emscripten_bind_btGhostObject__isKinematicObject_p0(this.ptr); +} +function btConcaveShape(){ throw "btConcaveShape is abstract!" } +btConcaveShape.prototype.__cache__ = {}; +Module['btConcaveShape'] = btConcaveShape; +btConcaveShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btConcaveShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btConcaveShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btConcaveShape__setUserPointer_p1(this.ptr, arg0); +} +btConcaveShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btConcaveShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btConcaveShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btConcaveShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btConcaveShape.prototype['processAllTriangles'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConcaveShape__processAllTriangles_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConcaveShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btConcaveShape__calculateSerializeBufferSize_p0(this.ptr); +} +btConcaveShape.prototype['getName'] = function() { + return _emscripten_bind_btConcaveShape__getName_p0(this.ptr); +} +btConcaveShape.prototype['isCompound'] = function() { + return _emscripten_bind_btConcaveShape__isCompound_p0(this.ptr); +} +btConcaveShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btConcaveShape__isPolyhedral_p0(this.ptr); +} +btConcaveShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btConcaveShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btConcaveShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btConcaveShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btConcaveShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btConcaveShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btConcaveShape.prototype['isConvex'] = function() { + return _emscripten_bind_btConcaveShape__isConvex_p0(this.ptr); +} +btConcaveShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btConcaveShape__isInfinite_p0(this.ptr); +} +btConcaveShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btConcaveShape__getUserPointer_p0(this.ptr); +} +btConcaveShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btConcaveShape__isNonMoving_p0(this.ptr); +} +btConcaveShape.prototype['getMargin'] = function() { + return _emscripten_bind_btConcaveShape__getMargin_p0(this.ptr); +} +btConcaveShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btConcaveShape__setMargin_p1(this.ptr, arg0); +} +btConcaveShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btConcaveShape__isConvex2d_p0(this.ptr); +} +btConcaveShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btConcaveShape__isSoftBody_p0(this.ptr); +} +btConcaveShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btConcaveShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btConcaveShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btConcaveShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btConcaveShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btConcaveShape__getAngularMotionDisc_p0(this.ptr); +} +btConcaveShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btConcaveShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btConcaveShape.prototype['isConcave'] = function() { + return _emscripten_bind_btConcaveShape__isConcave_p0(this.ptr); +} +btConcaveShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btConcaveShape__getShapeType_p0(this.ptr); +} +function btTriangleInfoMap(){ throw "btTriangleInfoMap is abstract!" } +btTriangleInfoMap.prototype.__cache__ = {}; +Module['btTriangleInfoMap'] = btTriangleInfoMap; +btTriangleInfoMap.prototype['__destroy__'] = function() { + _emscripten_bind_btTriangleInfoMap____destroy___p0(this.ptr); +} +btTriangleInfoMap.prototype['get_m_zeroAreaThreshold'] = function() { + return _emscripten_bind_btTriangleInfoMap__get_m_zeroAreaThreshold_p0(this.ptr); +} +btTriangleInfoMap.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btTriangleInfoMap__calculateSerializeBufferSize_p0(this.ptr); +} +btTriangleInfoMap.prototype['get_m_maxEdgeAngleThreshold'] = function() { + return _emscripten_bind_btTriangleInfoMap__get_m_maxEdgeAngleThreshold_p0(this.ptr); +} +btTriangleInfoMap.prototype['deSerialize'] = function(arg0) { + _emscripten_bind_btTriangleInfoMap__deSerialize_p1(this.ptr, arg0.ptr); +} +btTriangleInfoMap.prototype['set_m_convexEpsilon'] = function(arg0) { + _emscripten_bind_btTriangleInfoMap__set_m_convexEpsilon_p1(this.ptr, arg0); +} +btTriangleInfoMap.prototype['get_m_edgeDistanceThreshold'] = function() { + return _emscripten_bind_btTriangleInfoMap__get_m_edgeDistanceThreshold_p0(this.ptr); +} +btTriangleInfoMap.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btTriangleInfoMap__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btTriangleInfoMap.prototype['set_m_equalVertexThreshold'] = function(arg0) { + _emscripten_bind_btTriangleInfoMap__set_m_equalVertexThreshold_p1(this.ptr, arg0); +} +btTriangleInfoMap.prototype['set_m_planarEpsilon'] = function(arg0) { + _emscripten_bind_btTriangleInfoMap__set_m_planarEpsilon_p1(this.ptr, arg0); +} +btTriangleInfoMap.prototype['get_m_equalVertexThreshold'] = function() { + return _emscripten_bind_btTriangleInfoMap__get_m_equalVertexThreshold_p0(this.ptr); +} +btTriangleInfoMap.prototype['get_m_convexEpsilon'] = function() { + return _emscripten_bind_btTriangleInfoMap__get_m_convexEpsilon_p0(this.ptr); +} +btTriangleInfoMap.prototype['set_m_edgeDistanceThreshold'] = function(arg0) { + _emscripten_bind_btTriangleInfoMap__set_m_edgeDistanceThreshold_p1(this.ptr, arg0); +} +btTriangleInfoMap.prototype['set_m_maxEdgeAngleThreshold'] = function(arg0) { + _emscripten_bind_btTriangleInfoMap__set_m_maxEdgeAngleThreshold_p1(this.ptr, arg0); +} +btTriangleInfoMap.prototype['set_m_zeroAreaThreshold'] = function(arg0) { + _emscripten_bind_btTriangleInfoMap__set_m_zeroAreaThreshold_p1(this.ptr, arg0); +} +btTriangleInfoMap.prototype['get_m_planarEpsilon'] = function() { + return _emscripten_bind_btTriangleInfoMap__get_m_planarEpsilon_p0(this.ptr); +} +LocalConvexResult.prototype['__destroy__'] = function() { + _emscripten_bind_btCollisionWorld__LocalConvexResult____destroy___p0(this.ptr); +} +LocalConvexResult.prototype['set_m_localShapeInfo'] = function(arg0) { + _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_localShapeInfo_p1(this.ptr, arg0.ptr); +} +LocalConvexResult.prototype['get_m_hitNormalLocal'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitNormalLocal_p0(this.ptr), Module['btVector3']); +} +LocalConvexResult.prototype['get_m_hitCollisionObject'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitCollisionObject_p0(this.ptr), Module['btCollisionObject']); +} +LocalConvexResult.prototype['set_m_hitNormalLocal'] = function(arg0) { + _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitNormalLocal_p1(this.ptr, arg0.ptr); +} +LocalConvexResult.prototype['set_m_hitFraction'] = function(arg0) { + _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitFraction_p1(this.ptr, arg0); +} +function LocalConvexResult(arg0, arg1, arg2, arg3, arg4) { + this.ptr = _emscripten_bind_btCollisionWorld__LocalConvexResult__LocalConvexResult_p5(arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4); + LocalConvexResult.prototype.__cache__[this.ptr] = this; + this.__class__ = LocalConvexResult; +} +LocalConvexResult.prototype.__cache__ = {}; +Module['LocalConvexResult'] = LocalConvexResult; +LocalConvexResult.prototype['set_m_hitCollisionObject'] = function(arg0) { + _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitCollisionObject_p1(this.ptr, arg0.ptr); +} +LocalConvexResult.prototype['get_m_hitFraction'] = function() { + return _emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitFraction_p0(this.ptr); +} +LocalConvexResult.prototype['set_m_hitPointLocal'] = function(arg0) { + _emscripten_bind_btCollisionWorld__LocalConvexResult__set_m_hitPointLocal_p1(this.ptr, arg0.ptr); +} +LocalConvexResult.prototype['get_m_localShapeInfo'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_localShapeInfo_p0(this.ptr), Module['LocalShapeInfo']); +} +LocalConvexResult.prototype['get_m_hitPointLocal'] = function() { + return wrapPointer(_emscripten_bind_btCollisionWorld__LocalConvexResult__get_m_hitPointLocal_p0(this.ptr), Module['btVector3']); +} +bt32BitAxisSweep3.prototype['getNumHandles'] = function() { + return _emscripten_bind_bt32BitAxisSweep3__getNumHandles_p0(this.ptr); +} +bt32BitAxisSweep3.prototype['addHandle'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) { + return _emscripten_bind_bt32BitAxisSweep3__addHandle_p7(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5.ptr, arg6); +} +bt32BitAxisSweep3.prototype['quantize'] = function(arg0, arg1, arg2) { + _emscripten_bind_bt32BitAxisSweep3__quantize_p3(this.ptr, arg0, arg1.ptr, arg2); +} +bt32BitAxisSweep3.prototype['removeHandle'] = function(arg0, arg1) { + _emscripten_bind_bt32BitAxisSweep3__removeHandle_p2(this.ptr, arg0, arg1.ptr); +} +bt32BitAxisSweep3.prototype['getOverlappingPairUserCallback'] = function() { + return wrapPointer(_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairUserCallback_p0(this.ptr), Module['btOverlappingPairCallback']); +} +bt32BitAxisSweep3.prototype['processAllOverlappingPairs'] = function(arg0) { + _emscripten_bind_bt32BitAxisSweep3__processAllOverlappingPairs_p1(this.ptr, arg0.ptr); +} +bt32BitAxisSweep3.prototype['rayTest'] = function(arg0, arg1, arg2, arg3, arg4) { + if (arg3 === undefined) + _emscripten_bind_bt32BitAxisSweep3__rayTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); + else if (arg4 === undefined) + _emscripten_bind_bt32BitAxisSweep3__rayTest_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); + else + _emscripten_bind_bt32BitAxisSweep3__rayTest_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +bt32BitAxisSweep3.prototype['setAabb'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_bt32BitAxisSweep3__setAabb_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +bt32BitAxisSweep3.prototype['resetPool'] = function(arg0) { + _emscripten_bind_bt32BitAxisSweep3__resetPool_p1(this.ptr, arg0.ptr); +} +bt32BitAxisSweep3.prototype['testAabbOverlap'] = function(arg0, arg1) { + return _emscripten_bind_bt32BitAxisSweep3__testAabbOverlap_p2(this.ptr, arg0.ptr, arg1.ptr); +} +bt32BitAxisSweep3.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_bt32BitAxisSweep3__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +bt32BitAxisSweep3.prototype['updateHandle'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_bt32BitAxisSweep3__updateHandle_p4(this.ptr, arg0, arg1.ptr, arg2.ptr, arg3.ptr); +} +function bt32BitAxisSweep3(arg0, arg1, arg2, arg3, arg4) { + if (arg2 === undefined) + this.ptr = _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p2(arg0.ptr, arg1.ptr); + else if (arg3 === undefined) + this.ptr = _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p3(arg0.ptr, arg1.ptr, arg2); + else if (arg4 === undefined) + this.ptr = _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p4(arg0.ptr, arg1.ptr, arg2, arg3.ptr); + else + this.ptr = _emscripten_bind_bt32BitAxisSweep3__bt32BitAxisSweep3_p5(arg0.ptr, arg1.ptr, arg2, arg3.ptr, arg4); + bt32BitAxisSweep3.prototype.__cache__[this.ptr] = this; + this.__class__ = bt32BitAxisSweep3; +} +bt32BitAxisSweep3.prototype.__cache__ = {}; +Module['bt32BitAxisSweep3'] = bt32BitAxisSweep3; +bt32BitAxisSweep3.prototype['printStats'] = function() { + _emscripten_bind_bt32BitAxisSweep3__printStats_p0(this.ptr); +} +bt32BitAxisSweep3.prototype['createProxy'] = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { + return wrapPointer(_emscripten_bind_bt32BitAxisSweep3__createProxy_p8(this.ptr, arg0.ptr, arg1.ptr, arg2, arg3, arg4, arg5, arg6.ptr, arg7), Module['btBroadphaseProxy']); +} +bt32BitAxisSweep3.prototype['__destroy__'] = function() { + _emscripten_bind_bt32BitAxisSweep3____destroy___p0(this.ptr); +} +bt32BitAxisSweep3.prototype['setOverlappingPairUserCallback'] = function(arg0) { + _emscripten_bind_bt32BitAxisSweep3__setOverlappingPairUserCallback_p1(this.ptr, arg0.ptr); +} +bt32BitAxisSweep3.prototype['calculateOverlappingPairs'] = function(arg0) { + _emscripten_bind_bt32BitAxisSweep3__calculateOverlappingPairs_p1(this.ptr, arg0.ptr); +} +bt32BitAxisSweep3.prototype['getOverlappingPairCache'] = function() { + return wrapPointer(_emscripten_bind_bt32BitAxisSweep3__getOverlappingPairCache_p0(this.ptr), Module['btOverlappingPairCache']); +} +bt32BitAxisSweep3.prototype['unQuantize'] = function(arg0, arg1, arg2) { + _emscripten_bind_bt32BitAxisSweep3__unQuantize_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +bt32BitAxisSweep3.prototype['aabbTest'] = function(arg0, arg1, arg2) { + _emscripten_bind_bt32BitAxisSweep3__aabbTest_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +bt32BitAxisSweep3.prototype['getBroadphaseAabb'] = function(arg0, arg1) { + _emscripten_bind_bt32BitAxisSweep3__getBroadphaseAabb_p2(this.ptr, arg0.ptr, arg1.ptr); +} +bt32BitAxisSweep3.prototype['destroyProxy'] = function(arg0, arg1) { + _emscripten_bind_bt32BitAxisSweep3__destroyProxy_p2(this.ptr, arg0.ptr, arg1.ptr); +} +bt32BitAxisSweep3.prototype['getHandle'] = function(arg0) { + return _emscripten_bind_bt32BitAxisSweep3__getHandle_p1(this.ptr, arg0); +} +function btCollisionAlgorithm(){ throw "btCollisionAlgorithm is abstract!" } +btCollisionAlgorithm.prototype.__cache__ = {}; +Module['btCollisionAlgorithm'] = btCollisionAlgorithm; +btCollisionAlgorithm.prototype['getAllContactManifolds'] = function(arg0) { + _emscripten_bind_btCollisionAlgorithm__getAllContactManifolds_p1(this.ptr, arg0); +} +btCollisionAlgorithm.prototype['calculateTimeOfImpact'] = function(arg0, arg1, arg2, arg3) { + return _emscripten_bind_btCollisionAlgorithm__calculateTimeOfImpact_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btCollisionAlgorithm.prototype['processCollision'] = function(arg0, arg1, arg2, arg3) { + _emscripten_bind_btCollisionAlgorithm__processCollision_p4(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr); +} +btSphereShape.prototype['calculateLocalInertia'] = function(arg0, arg1) { + _emscripten_bind_btSphereShape__calculateLocalInertia_p2(this.ptr, arg0, arg1.ptr); +} +btSphereShape.prototype['isCompound'] = function() { + return _emscripten_bind_btSphereShape__isCompound_p0(this.ptr); +} +btSphereShape.prototype['localGetSupportingVertex'] = function(arg0) { + return wrapPointer(_emscripten_bind_btSphereShape__localGetSupportingVertex_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btSphereShape.prototype['setUserPointer'] = function(arg0) { + _emscripten_bind_btSphereShape__setUserPointer_p1(this.ptr, arg0); +} +btSphereShape.prototype['getMarginNV'] = function() { + return _emscripten_bind_btSphereShape__getMarginNV_p0(this.ptr); +} +btSphereShape.prototype['serialize'] = function(arg0, arg1) { + return _emscripten_bind_btSphereShape__serialize_p2(this.ptr, arg0, arg1.ptr); +} +btSphereShape.prototype['getLocalScaling'] = function() { + return wrapPointer(_emscripten_bind_btSphereShape__getLocalScaling_p0(this.ptr), Module['btVector3']); +} +btSphereShape.prototype['getNumPreferredPenetrationDirections'] = function() { + return _emscripten_bind_btSphereShape__getNumPreferredPenetrationDirections_p0(this.ptr); +} +btSphereShape.prototype['isPolyhedral'] = function() { + return _emscripten_bind_btSphereShape__isPolyhedral_p0(this.ptr); +} +btSphereShape.prototype['getRadius'] = function() { + return _emscripten_bind_btSphereShape__getRadius_p0(this.ptr); +} +btSphereShape.prototype['getAabbNonVirtual'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSphereShape__getAabbNonVirtual_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btSphereShape.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btSphereShape__calculateSerializeBufferSize_p0(this.ptr); +} +btSphereShape.prototype['getName'] = function() { + return _emscripten_bind_btSphereShape__getName_p0(this.ptr); +} +btSphereShape.prototype['getLocalScalingNV'] = function() { + return wrapPointer(_emscripten_bind_btSphereShape__getLocalScalingNV_p0(this.ptr), Module['btVector3']); +} +btSphereShape.prototype['localGetSupportVertexWithoutMarginNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btSphereShape__localGetSupportVertexWithoutMarginNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btSphereShape.prototype['setImplicitShapeDimensions'] = function(arg0) { + _emscripten_bind_btSphereShape__setImplicitShapeDimensions_p1(this.ptr, arg0.ptr); +} +btSphereShape.prototype['setLocalScaling'] = function(arg0) { + _emscripten_bind_btSphereShape__setLocalScaling_p1(this.ptr, arg0.ptr); +} +btSphereShape.prototype['getAabb'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSphereShape__getAabb_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btSphereShape.prototype['setUnscaledRadius'] = function(arg0) { + _emscripten_bind_btSphereShape__setUnscaledRadius_p1(this.ptr, arg0); +} +btSphereShape.prototype['localGetSupportVertexNonVirtual'] = function(arg0) { + return wrapPointer(_emscripten_bind_btSphereShape__localGetSupportVertexNonVirtual_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btSphereShape.prototype['getContactBreakingThreshold'] = function(arg0) { + return _emscripten_bind_btSphereShape__getContactBreakingThreshold_p1(this.ptr, arg0); +} +btSphereShape.prototype['isConvex'] = function() { + return _emscripten_bind_btSphereShape__isConvex_p0(this.ptr); +} +btSphereShape.prototype['isInfinite'] = function() { + return _emscripten_bind_btSphereShape__isInfinite_p0(this.ptr); +} +btSphereShape.prototype['getUserPointer'] = function() { + return _emscripten_bind_btSphereShape__getUserPointer_p0(this.ptr); +} +btSphereShape.prototype['isNonMoving'] = function() { + return _emscripten_bind_btSphereShape__isNonMoving_p0(this.ptr); +} +btSphereShape.prototype['getMargin'] = function() { + return _emscripten_bind_btSphereShape__getMargin_p0(this.ptr); +} +btSphereShape.prototype['getPreferredPenetrationDirection'] = function(arg0, arg1) { + _emscripten_bind_btSphereShape__getPreferredPenetrationDirection_p2(this.ptr, arg0, arg1.ptr); +} +btSphereShape.prototype['setMargin'] = function(arg0) { + _emscripten_bind_btSphereShape__setMargin_p1(this.ptr, arg0); +} +btSphereShape.prototype['isConvex2d'] = function() { + return _emscripten_bind_btSphereShape__isConvex2d_p0(this.ptr); +} +function btSphereShape(arg0) { + this.ptr = _emscripten_bind_btSphereShape__btSphereShape_p1(arg0); + btSphereShape.prototype.__cache__[this.ptr] = this; + this.__class__ = btSphereShape; +} +btSphereShape.prototype.__cache__ = {}; +Module['btSphereShape'] = btSphereShape; +btSphereShape.prototype['localGetSupportingVertexWithoutMargin'] = function(arg0) { + return wrapPointer(_emscripten_bind_btSphereShape__localGetSupportingVertexWithoutMargin_p1(this.ptr, arg0.ptr), Module['btVector3']); +} +btSphereShape.prototype['isSoftBody'] = function() { + return _emscripten_bind_btSphereShape__isSoftBody_p0(this.ptr); +} +btSphereShape.prototype['getMarginNonVirtual'] = function() { + return _emscripten_bind_btSphereShape__getMarginNonVirtual_p0(this.ptr); +} +btSphereShape.prototype['__destroy__'] = function() { + _emscripten_bind_btSphereShape____destroy___p0(this.ptr); +} +btSphereShape.prototype['batchedUnitVectorGetSupportingVertexWithoutMargin'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSphereShape__batchedUnitVectorGetSupportingVertexWithoutMargin_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btSphereShape.prototype['getImplicitShapeDimensions'] = function() { + return wrapPointer(_emscripten_bind_btSphereShape__getImplicitShapeDimensions_p0(this.ptr), Module['btVector3']); +} +btSphereShape.prototype['getBoundingSphere'] = function(arg0, arg1) { + _emscripten_bind_btSphereShape__getBoundingSphere_p2(this.ptr, arg0.ptr, arg1); +} +btSphereShape.prototype['getAngularMotionDisc'] = function() { + return _emscripten_bind_btSphereShape__getAngularMotionDisc_p0(this.ptr); +} +btSphereShape.prototype['serializeSingleShape'] = function(arg0) { + _emscripten_bind_btSphereShape__serializeSingleShape_p1(this.ptr, arg0.ptr); +} +btSphereShape.prototype['getAabbSlow'] = function(arg0, arg1, arg2) { + _emscripten_bind_btSphereShape__getAabbSlow_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btSphereShape.prototype['calculateTemporalAabb'] = function(arg0, arg1, arg2, arg3, arg4, arg5) { + _emscripten_bind_btSphereShape__calculateTemporalAabb_p6(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3, arg4.ptr, arg5.ptr); +} +btSphereShape.prototype['isConcave'] = function() { + return _emscripten_bind_btSphereShape__isConcave_p0(this.ptr); +} +btSphereShape.prototype['getShapeType'] = function() { + return _emscripten_bind_btSphereShape__getShapeType_p0(this.ptr); +} +btQuantizedBvh.prototype['setTraversalMode'] = function(arg0) { + _emscripten_bind_btQuantizedBvh__setTraversalMode_p1(this.ptr, arg0); +} +btQuantizedBvh.prototype['buildInternal'] = function() { + _emscripten_bind_btQuantizedBvh__buildInternal_p0(this.ptr); +} +btQuantizedBvh.prototype['serialize'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + return _emscripten_bind_btQuantizedBvh__serialize_p2(this.ptr, arg0, arg1.ptr); + else + return _emscripten_bind_btQuantizedBvh__serialize_p3(this.ptr, arg0, arg1, arg2); +} +btQuantizedBvh.prototype['getLeafNodeArray'] = function() { + return _emscripten_bind_btQuantizedBvh__getLeafNodeArray_p0(this.ptr); +} +btQuantizedBvh.prototype['setQuantizationValues'] = function(arg0, arg1, arg2) { + if (arg2 === undefined) + _emscripten_bind_btQuantizedBvh__setQuantizationValues_p2(this.ptr, arg0.ptr, arg1.ptr); + else + _emscripten_bind_btQuantizedBvh__setQuantizationValues_p3(this.ptr, arg0.ptr, arg1.ptr, arg2); +} +btQuantizedBvh.prototype['quantize'] = function(arg0, arg1, arg2) { + _emscripten_bind_btQuantizedBvh__quantize_p3(this.ptr, arg0, arg1.ptr, arg2); +} +btQuantizedBvh.prototype['isQuantized'] = function() { + return _emscripten_bind_btQuantizedBvh__isQuantized_p0(this.ptr); +} +btQuantizedBvh.prototype['getAlignmentSerializationPadding'] = function() { + return _emscripten_bind_btQuantizedBvh__getAlignmentSerializationPadding_p0(); +} +btQuantizedBvh.prototype['calculateSerializeBufferSize'] = function() { + return _emscripten_bind_btQuantizedBvh__calculateSerializeBufferSize_p0(this.ptr); +} +btQuantizedBvh.prototype['getQuantizedNodeArray'] = function() { + return _emscripten_bind_btQuantizedBvh__getQuantizedNodeArray_p0(this.ptr); +} +btQuantizedBvh.prototype['reportAabbOverlappingNodex'] = function(arg0, arg1, arg2) { + _emscripten_bind_btQuantizedBvh__reportAabbOverlappingNodex_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btQuantizedBvh.prototype['reportRayOverlappingNodex'] = function(arg0, arg1, arg2) { + _emscripten_bind_btQuantizedBvh__reportRayOverlappingNodex_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btQuantizedBvh.prototype['deSerializeInPlace'] = function(arg0, arg1, arg2) { + return wrapPointer(_emscripten_bind_btQuantizedBvh__deSerializeInPlace_p3(arg0, arg1, arg2), Module['btQuantizedBvh']); +} +btQuantizedBvh.prototype['quantizeWithClamp'] = function(arg0, arg1, arg2) { + _emscripten_bind_btQuantizedBvh__quantizeWithClamp_p3(this.ptr, arg0, arg1.ptr, arg2); +} +btQuantizedBvh.prototype['deSerializeDouble'] = function(arg0) { + _emscripten_bind_btQuantizedBvh__deSerializeDouble_p1(this.ptr, arg0.ptr); +} +btQuantizedBvh.prototype['calculateSerializeBufferSizeNew'] = function() { + return _emscripten_bind_btQuantizedBvh__calculateSerializeBufferSizeNew_p0(this.ptr); +} +btQuantizedBvh.prototype['__destroy__'] = function() { + _emscripten_bind_btQuantizedBvh____destroy___p0(this.ptr); +} +function btQuantizedBvh() { + this.ptr = _emscripten_bind_btQuantizedBvh__btQuantizedBvh_p0(); + btQuantizedBvh.prototype.__cache__[this.ptr] = this; + this.__class__ = btQuantizedBvh; +} +btQuantizedBvh.prototype.__cache__ = {}; +Module['btQuantizedBvh'] = btQuantizedBvh; +btQuantizedBvh.prototype['deSerializeFloat'] = function(arg0) { + _emscripten_bind_btQuantizedBvh__deSerializeFloat_p1(this.ptr, arg0.ptr); +} +btQuantizedBvh.prototype['getSubtreeInfoArray'] = function() { + return _emscripten_bind_btQuantizedBvh__getSubtreeInfoArray_p0(this.ptr); +} +btQuantizedBvh.prototype['unQuantize'] = function(arg0) { + return wrapPointer(_emscripten_bind_btQuantizedBvh__unQuantize_p1(this.ptr, arg0), Module['btVector3']); +} +btQuantizedBvh.prototype['reportBoxCastOverlappingNodex'] = function(arg0, arg1, arg2, arg3, arg4) { + _emscripten_bind_btQuantizedBvh__reportBoxCastOverlappingNodex_p5(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr, arg3.ptr, arg4.ptr); +} +btHashString.prototype['get_m_string'] = function() { + return _emscripten_bind_btHashString__get_m_string_p0(this.ptr); +} +btHashString.prototype['__destroy__'] = function() { + _emscripten_bind_btHashString____destroy___p0(this.ptr); +} +btHashString.prototype['set_m_hash'] = function(arg0) { + _emscripten_bind_btHashString__set_m_hash_p1(this.ptr, arg0); +} +btHashString.prototype['set_m_string'] = function(arg0) { +var stack = Runtime.stackSave(); +try { + _emscripten_bind_btHashString__set_m_string_p1(this.ptr, ensureString(arg0)); +} finally { Runtime.stackRestore(stack) } +} +function btHashString(arg0) { +var stack = Runtime.stackSave(); +try { + this.ptr = _emscripten_bind_btHashString__btHashString_p1(ensureString(arg0)); +} finally { Runtime.stackRestore(stack) } + btHashString.prototype.__cache__[this.ptr] = this; + this.__class__ = btHashString; +} +btHashString.prototype.__cache__ = {}; +Module['btHashString'] = btHashString; +btHashString.prototype['equals'] = function(arg0) { + return _emscripten_bind_btHashString__equals_p1(this.ptr, arg0.ptr); +} +btHashString.prototype['getHash'] = function() { + return _emscripten_bind_btHashString__getHash_p0(this.ptr); +} +btHashString.prototype['portableStringCompare'] = function(arg0, arg1) { +var stack = Runtime.stackSave(); +try { + return _emscripten_bind_btHashString__portableStringCompare_p2(this.ptr, ensureString(arg0), ensureString(arg1)); +} finally { Runtime.stackRestore(stack) } +} +btHashString.prototype['get_m_hash'] = function() { + return _emscripten_bind_btHashString__get_m_hash_p0(this.ptr); +} +btGhostPairCallback.prototype['addOverlappingPair'] = function(arg0, arg1) { + return wrapPointer(_emscripten_bind_btGhostPairCallback__addOverlappingPair_p2(this.ptr, arg0.ptr, arg1.ptr), Module['btBroadphasePair']); +} +btGhostPairCallback.prototype['removeOverlappingPair'] = function(arg0, arg1, arg2) { + return _emscripten_bind_btGhostPairCallback__removeOverlappingPair_p3(this.ptr, arg0.ptr, arg1.ptr, arg2.ptr); +} +btGhostPairCallback.prototype['__destroy__'] = function() { + _emscripten_bind_btGhostPairCallback____destroy___p0(this.ptr); +} +function btGhostPairCallback() { + this.ptr = _emscripten_bind_btGhostPairCallback__btGhostPairCallback_p0(); + btGhostPairCallback.prototype.__cache__[this.ptr] = this; + this.__class__ = btGhostPairCallback; +} +btGhostPairCallback.prototype.__cache__ = {}; +Module['btGhostPairCallback'] = btGhostPairCallback; +btGhostPairCallback.prototype['removeOverlappingPairsContainingProxy'] = function(arg0, arg1) { + _emscripten_bind_btGhostPairCallback__removeOverlappingPairsContainingProxy_p2(this.ptr, arg0.ptr, arg1.ptr); +} +this['Ammo'] = Module; /* With or without a closure, the proper usage is Ammo.* */ diff --git a/src/nodeschool/webgl/breakWall/src/lib/physijs_worker.js b/src/nodeschool/webgl/breakWall/src/lib/physijs_worker.js new file mode 100644 index 0000000..0307624 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/lib/physijs_worker.js @@ -0,0 +1,1399 @@ +'use strict'; +var + transferableMessage = self.webkitPostMessage || self.postMessage, + + // enum + MESSAGE_TYPES = { + WORLDREPORT: 0, + COLLISIONREPORT: 1, + VEHICLEREPORT: 2, + CONSTRAINTREPORT: 3 + }, + + // temp variables + _object, + _vector, + _transform, + + // functions + public_functions = {}, + getShapeFromCache, + setShapeCache, + createShape, + reportWorld, + reportVehicles, + reportCollisions, + reportConstraints, + + // world variables + fixedTimeStep, // used when calling stepSimulation + rateLimit, // sets whether or not to sync the simulation rate with fixedTimeStep + last_simulation_time, + last_simulation_duration = 0, + world, + transform, + _vec3_1, + _vec3_2, + _vec3_3, + _quat, + // private cache + _objects = {}, + _vehicles = {}, + _constraints = {}, + _materials = {}, + _objects_ammo = {}, + _num_objects = 0, + _num_wheels = 0, + _num_constraints = 0, + _object_shapes = {}, + + // The following objects are to track objects that ammo.js doesn't clean + // up. All are cleaned up when they're corresponding body is destroyed. + // Unfortunately, it's very difficult to get at these objects from the + // body, so we have to track them ourselves. + _motion_states = {}, + // Don't need to worry about it for cached shapes. + _noncached_shapes = {}, + // A body with a compound shape always has a regular shape as well, so we + // have track them separately. + _compound_shapes = {}, + + // object reporting + REPORT_CHUNKSIZE, // report array is increased in increments of this chunk size + + WORLDREPORT_ITEMSIZE = 14, // how many float values each reported item needs + worldreport, + + COLLISIONREPORT_ITEMSIZE = 5, // one float for each object id, and a Vec3 contact normal + collisionreport, + + VEHICLEREPORT_ITEMSIZE = 9, // vehicle id, wheel index, 3 for position, 4 for rotation + vehiclereport, + + CONSTRAINTREPORT_ITEMSIZE = 6, // constraint id, offset object, offset, applied impulse + constraintreport; + +var ab = new ArrayBuffer( 1 ); + +transferableMessage( ab, [ab] ); +var SUPPORT_TRANSFERABLE = ( ab.byteLength === 0 ); + +getShapeFromCache = function ( cache_key ) { + if ( _object_shapes[ cache_key ] !== undefined ) { + return _object_shapes[ cache_key ]; + } + return null; +}; + +setShapeCache = function ( cache_key, shape ) { + _object_shapes[ cache_key ] = shape; +} + +createShape = function( description ) { + var cache_key, shape; + + _transform.setIdentity(); + switch ( description.type ) { + case 'plane': + cache_key = 'plane_' + description.normal.x + '_' + description.normal.y + '_' + description.normal.z; + if ( ( shape = getShapeFromCache( cache_key ) ) === null ) { + _vec3_1.setX(description.normal.x); + _vec3_1.setY(description.normal.y); + _vec3_1.setZ(description.normal.z); + shape = new Ammo.btStaticPlaneShape(_vec3_1, 0 ); + setShapeCache( cache_key, shape ); + } + break; + + case 'box': + cache_key = 'box_' + description.width + '_' + description.height + '_' + description.depth; + if ( ( shape = getShapeFromCache( cache_key ) ) === null ) { + _vec3_1.setX(description.width / 2); + _vec3_1.setY(description.height / 2); + _vec3_1.setZ(description.depth / 2); + shape = new Ammo.btBoxShape(_vec3_1); + setShapeCache( cache_key, shape ); + } + break; + + case 'sphere': + cache_key = 'sphere_' + description.radius; + if ( ( shape = getShapeFromCache( cache_key ) ) === null ) { + shape = new Ammo.btSphereShape( description.radius ); + setShapeCache( cache_key, shape ); + } + break; + + case 'cylinder': + cache_key = 'cylinder_' + description.width + '_' + description.height + '_' + description.depth; + if ( ( shape = getShapeFromCache( cache_key ) ) === null ) { + _vec3_1.setX(description.width / 2); + _vec3_1.setY(description.height / 2); + _vec3_1.setZ(description.depth / 2); + shape = new Ammo.btCylinderShape(_vec3_1); + setShapeCache( cache_key, shape ); + } + break; + + case 'capsule': + cache_key = 'capsule_' + description.radius + '_' + description.height; + if ( ( shape = getShapeFromCache( cache_key ) ) === null ) { + // In Bullet, capsule height excludes the end spheres + shape = new Ammo.btCapsuleShape( description.radius, description.height - 2 * description.radius ); + setShapeCache( cache_key, shape ); + } + break; + + case 'cone': + cache_key = 'cone_' + description.radius + '_' + description.height; + if ( ( shape = getShapeFromCache( cache_key ) ) === null ) { + shape = new Ammo.btConeShape( description.radius, description.height ); + setShapeCache( cache_key, shape ); + } + break; + + case 'concave': + var i, triangle, triangle_mesh = new Ammo.btTriangleMesh; + if (!description.triangles.length) return false + + for ( i = 0; i < description.triangles.length; i++ ) { + triangle = description.triangles[i]; + + _vec3_1.setX(triangle[0].x); + _vec3_1.setY(triangle[0].y); + _vec3_1.setZ(triangle[0].z); + + _vec3_2.setX(triangle[1].x); + _vec3_2.setY(triangle[1].y); + _vec3_2.setZ(triangle[1].z); + + _vec3_3.setX(triangle[2].x); + _vec3_3.setY(triangle[2].y); + _vec3_3.setZ(triangle[2].z); + + triangle_mesh.addTriangle( + _vec3_1, + _vec3_2, + _vec3_3, + true + ); + } + + shape = new Ammo.btBvhTriangleMeshShape( + triangle_mesh, + true, + true + ); + _noncached_shapes[description.id] = shape; + break; + + case 'convex': + var i, point, shape = new Ammo.btConvexHullShape; + for ( i = 0; i < description.points.length; i++ ) { + point = description.points[i]; + + _vec3_1.setX(point.x); + _vec3_1.setY(point.y); + _vec3_1.setZ(point.z); + + shape.addPoint(_vec3_1); + + } + _noncached_shapes[description.id] = shape; + break; + + case 'heightfield': + + var ptr = Ammo.allocate(4 * description.xpts * description.ypts, "float", Ammo.ALLOC_NORMAL); + + for (var f = 0; f < description.points.length; f++) { + Ammo.setValue(ptr + f, description.points[f] , 'float'); + } + + shape = new Ammo.btHeightfieldTerrainShape( + description.xpts, + description.ypts, + ptr, + 1, + -description.absMaxHeight, + description.absMaxHeight, + 2, + 0, + false + ); + + _vec3_1.setX(description.xsize/(description.xpts - 1)); + _vec3_1.setY(description.ysize/(description.ypts - 1)); + _vec3_1.setZ(1); + + shape.setLocalScaling(_vec3_1); + _noncached_shapes[description.id] = shape; + break; + + default: + // Not recognized + return; + break; + } + + return shape; +}; + +public_functions.init = function( params ) { + importScripts( params.ammo ); + + _transform = new Ammo.btTransform; + _vec3_1 = new Ammo.btVector3(0,0,0); + _vec3_2 = new Ammo.btVector3(0,0,0); + _vec3_3 = new Ammo.btVector3(0,0,0); + _quat = new Ammo.btQuaternion(0,0,0,0); + + REPORT_CHUNKSIZE = params.reportsize || 50; + if ( SUPPORT_TRANSFERABLE ) { + // Transferable messages are supported, take advantage of them with TypedArrays + worldreport = new Float32Array(2 + REPORT_CHUNKSIZE * WORLDREPORT_ITEMSIZE); // message id + # of objects to report + chunk size * # of values per object + collisionreport = new Float32Array(2 + REPORT_CHUNKSIZE * COLLISIONREPORT_ITEMSIZE); // message id + # of collisions to report + chunk size * # of values per object + vehiclereport = new Float32Array(2 + REPORT_CHUNKSIZE * VEHICLEREPORT_ITEMSIZE); // message id + # of vehicles to report + chunk size * # of values per object + constraintreport = new Float32Array(2 + REPORT_CHUNKSIZE * CONSTRAINTREPORT_ITEMSIZE); // message id + # of constraints to report + chunk size * # of values per object + } else { + // Transferable messages are not supported, send data as normal arrays + worldreport = []; + collisionreport = []; + vehiclereport = []; + constraintreport = []; + } + worldreport[0] = MESSAGE_TYPES.WORLDREPORT; + collisionreport[0] = MESSAGE_TYPES.COLLISIONREPORT; + vehiclereport[0] = MESSAGE_TYPES.VEHICLEREPORT; + constraintreport[0] = MESSAGE_TYPES.CONSTRAINTREPORT; + + var collisionConfiguration = new Ammo.btDefaultCollisionConfiguration, + dispatcher = new Ammo.btCollisionDispatcher( collisionConfiguration ), + solver = new Ammo.btSequentialImpulseConstraintSolver, + broadphase; + + if ( !params.broadphase ) params.broadphase = { type: 'dynamic' }; + switch ( params.broadphase.type ) { + case 'sweepprune': + + _vec3_1.setX(params.broadphase.aabbmin.x); + _vec3_1.setY(params.broadphase.aabbmin.y); + _vec3_1.setZ(params.broadphase.aabbmin.z); + + _vec3_2.setX(params.broadphase.aabbmax.x); + _vec3_2.setY(params.broadphase.aabbmax.y); + _vec3_2.setZ(params.broadphase.aabbmax.z); + + broadphase = new Ammo.btAxisSweep3( + _vec3_1, + _vec3_2 + ); + + break; + + case 'dynamic': + default: + broadphase = new Ammo.btDbvtBroadphase; + break; + } + + world = new Ammo.btDiscreteDynamicsWorld( dispatcher, broadphase, solver, collisionConfiguration ); + + fixedTimeStep = params.fixedTimeStep; + rateLimit = params.rateLimit; + + transferableMessage({ cmd: 'worldReady' }); +}; + +public_functions.registerMaterial = function( description ) { + _materials[ description.id ] = description; +}; + +public_functions.unRegisterMaterial = function( description ) { + delete _materials[ description.id ]; +}; + +public_functions.setFixedTimeStep = function( description ) { + fixedTimeStep = description; +}; + +public_functions.setGravity = function( description ) { + _vec3_1.setX(description.x); + _vec3_1.setY(description.y); + _vec3_1.setZ(description.z); + world.setGravity(_vec3_1); +}; + +public_functions.addObject = function( description ) { + + var i, + localInertia, shape, motionState, rbInfo, body; + +shape = createShape( description ); +if (!shape) return +// If there are children then this is a compound shape +if ( description.children ) { + var compound_shape = new Ammo.btCompoundShape, _child; + compound_shape.addChildShape( _transform, shape ); + + for ( i = 0; i < description.children.length; i++ ) { + _child = description.children[i]; + + var trans = new Ammo.btTransform; + trans.setIdentity(); + + _vec3_1.setX(_child.position_offset.x); + _vec3_1.setY(_child.position_offset.y); + _vec3_1.setZ(_child.position_offset.z); + trans.setOrigin(_vec3_1); + + _quat.setX(_child.rotation.x); + _quat.setY(_child.rotation.y); + _quat.setZ(_child.rotation.z); + _quat.setW(_child.rotation.w); + trans.setRotation(_quat); + + shape = createShape( description.children[i] ); + compound_shape.addChildShape( trans, shape ); + Ammo.destroy(trans); + } + + shape = compound_shape; + _compound_shapes[ description.id ] = shape; + } + _vec3_1.setX(0); + _vec3_1.setY(0); + _vec3_1.setZ(0); + shape.calculateLocalInertia( description.mass, _vec3_1 ); + + _transform.setIdentity(); + + _vec3_2.setX(description.position.x); + _vec3_2.setY(description.position.y); + _vec3_2.setZ(description.position.z); + _transform.setOrigin(_vec3_2); + + _quat.setX(description.rotation.x); + _quat.setY(description.rotation.y); + _quat.setZ(description.rotation.z); + _quat.setW(description.rotation.w); + _transform.setRotation(_quat); + + motionState = new Ammo.btDefaultMotionState( _transform ); // #TODO: btDefaultMotionState supports center of mass offset as second argument - implement + rbInfo = new Ammo.btRigidBodyConstructionInfo( description.mass, motionState, shape, _vec3_1 ); + + if ( description.materialId !== undefined ) { + rbInfo.set_m_friction( _materials[ description.materialId ].friction ); + rbInfo.set_m_restitution( _materials[ description.materialId ].restitution ); + } + + body = new Ammo.btRigidBody( rbInfo ); + Ammo.destroy(rbInfo); + + if ( typeof description.collision_flags !== 'undefined' ) { + body.setCollisionFlags( description.collision_flags ); + } + + world.addRigidBody( body ); + + body.id = description.id; + _objects[ body.id ] = body; + _motion_states[ body.id ] = motionState; + + var ptr = body.a != undefined ? body.a : body.ptr; + _objects_ammo[ptr] = body.id; + _num_objects++; + + transferableMessage({ cmd: 'objectReady', params: body.id }); +}; + +public_functions.addVehicle = function( description ) { + var vehicle_tuning = new Ammo.btVehicleTuning(), + vehicle; + + vehicle_tuning.set_m_suspensionStiffness( description.suspension_stiffness ); + vehicle_tuning.set_m_suspensionCompression( description.suspension_compression ); + vehicle_tuning.set_m_suspensionDamping( description.suspension_damping ); + vehicle_tuning.set_m_maxSuspensionTravelCm( description.max_suspension_travel ); + vehicle_tuning.set_m_maxSuspensionForce( description.max_suspension_force ); + + vehicle = new Ammo.btRaycastVehicle( vehicle_tuning, _objects[ description.rigidBody ], new Ammo.btDefaultVehicleRaycaster( world ) ); + vehicle.tuning = vehicle_tuning; + + _objects[ description.rigidBody ].setActivationState( 4 ); + vehicle.setCoordinateSystem( 0, 1, 2 ); + + world.addVehicle( vehicle ); + _vehicles[ description.id ] = vehicle; +}; +public_functions.removeVehicle = function( description ) { + delete _vehicles[ description.id ]; +}; + +public_functions.addWheel = function( description ) { + if ( _vehicles[description.id] !== undefined ) { + var tuning = _vehicles[description.id].tuning; + if ( description.tuning !== undefined ) { + tuning = new Ammo.btVehicleTuning(); + tuning.set_m_suspensionStiffness( description.tuning.suspension_stiffness ); + tuning.set_m_suspensionCompression( description.tuning.suspension_compression ); + tuning.set_m_suspensionDamping( description.tuning.suspension_damping ); + tuning.set_m_maxSuspensionTravelCm( description.tuning.max_suspension_travel ); + tuning.set_m_maxSuspensionForce( description.tuning.max_suspension_force ); + } + + _vec3_1.setX(description.connection_point.x); + _vec3_1.setY(description.connection_point.y); + _vec3_1.setZ(description.connection_point.z); + + _vec3_2.setX(description.wheel_direction.x); + _vec3_2.setY(description.wheel_direction.y); + _vec3_2.setZ(description.wheel_direction.z); + + _vec3_3.setX(description.wheel_axle.x); + _vec3_3.setY(description.wheel_axle.y); + _vec3_3.setZ(description.wheel_axle.z); + + _vehicles[description.id].addWheel( + _vec3_1, + _vec3_2, + _vec3_3, + description.suspension_rest_length, + description.wheel_radius, + tuning, + description.is_front_wheel + ); + } + + _num_wheels++; + + if ( SUPPORT_TRANSFERABLE ) { + vehiclereport = new Float32Array(1 + _num_wheels * VEHICLEREPORT_ITEMSIZE); // message id & ( # of objects to report * # of values per object ) + vehiclereport[0] = MESSAGE_TYPES.VEHICLEREPORT; + } else { + vehiclereport = [ MESSAGE_TYPES.VEHICLEREPORT ]; + } +}; + +public_functions.setSteering = function( details ) { + if ( _vehicles[details.id] !== undefined ) { + _vehicles[details.id].setSteeringValue( details.steering, details.wheel ); + } +}; +public_functions.setBrake = function( details ) { + if ( _vehicles[details.id] !== undefined ) { + _vehicles[details.id].setBrake( details.brake, details.wheel ); + } +}; +public_functions.applyEngineForce = function( details ) { + if ( _vehicles[details.id] !== undefined ) { + _vehicles[details.id].applyEngineForce( details.force, details.wheel ); + } +}; + +public_functions.removeObject = function( details ) { + world.removeRigidBody( _objects[details.id] ); + Ammo.destroy(_objects[details.id]); + Ammo.destroy(_motion_states[details.id]); + if (_compound_shapes[details.id]) Ammo.destroy(_compound_shapes[details.id]); + if (_noncached_shapes[details.id]) Ammo.destroy(_noncached_shapes[details.id]); + var ptr = _objects[details.id].a != undefined ? _objects[details.id].a : _objects[details.id].ptr; + delete _objects_ammo[ptr]; + delete _objects[details.id]; + delete _motion_states[details.id]; + if (_compound_shapes[details.id]) delete _compound_shapes[details.id]; + if (_noncached_shapes[details.id]) delete _noncached_shapes[details.id]; + _num_objects--; +}; + +public_functions.updateTransform = function( details ) { + _object = _objects[details.id]; + _object.getMotionState().getWorldTransform( _transform ); + + if ( details.pos ) { + _vec3_1.setX(details.pos.x); + _vec3_1.setY(details.pos.y); + _vec3_1.setZ(details.pos.z); + _transform.setOrigin(_vec3_1); + } + + if ( details.quat ) { + _quat.setX(details.quat.x); + _quat.setY(details.quat.y); + _quat.setZ(details.quat.z); + _quat.setW(details.quat.w); + _transform.setRotation(_quat); + } + + _object.setWorldTransform( _transform ); + _object.activate(); +}; + +public_functions.updateMass = function( details ) { + // #TODO: changing a static object into dynamic is buggy + _object = _objects[details.id]; + + // Per http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=&f=9&t=3663#p13816 + world.removeRigidBody( _object ); + + _vec3_1.setX(0); + _vec3_1.setY(0); + _vec3_1.setZ(0); + + _object.setMassProps( details.mass, _vec3_1 ); + world.addRigidBody( _object ); + _object.activate(); +}; + +public_functions.applyCentralImpulse = function ( details ) { + + _vec3_1.setX(details.x); + _vec3_1.setY(details.y); + _vec3_1.setZ(details.z); + + _objects[details.id].applyCentralImpulse(_vec3_1); + _objects[details.id].activate(); +}; + +public_functions.applyImpulse = function ( details ) { + + _vec3_1.setX(details.impulse_x); + _vec3_1.setY(details.impulse_y); + _vec3_1.setZ(details.impulse_z); + + _vec3_2.setX(details.x); + _vec3_2.setY(details.y); + _vec3_2.setZ(details.z); + + _objects[details.id].applyImpulse( + _vec3_1, + _vec3_2 + ); + _objects[details.id].activate(); +}; + +public_functions.applyCentralForce = function ( details ) { + + _vec3_1.setX(details.x); + _vec3_1.setY(details.y); + _vec3_1.setZ(details.z); + + _objects[details.id].applyCentralForce(_vec3_1); + _objects[details.id].activate(); +}; + +public_functions.applyForce = function ( details ) { + + _vec3_1.setX(details.impulse_x); + _vec3_1.setY(details.impulse_y); + _vec3_1.setZ(details.impulse_z); + + _vec3_2.setX(details.x); + _vec3_2.setY(details.y); + _vec3_2.setZ(details.z); + + _objects[details.id].applyForce( + _vec3_1, + _vec3_2 + ); + _objects[details.id].activate(); +}; + +public_functions.setAngularVelocity = function ( details ) { + + _vec3_1.setX(details.x); + _vec3_1.setY(details.y); + _vec3_1.setZ(details.z); + + _objects[details.id].setAngularVelocity( + _vec3_1 + ); + _objects[details.id].activate(); +}; + +public_functions.setLinearVelocity = function ( details ) { + + _vec3_1.setX(details.x); + _vec3_1.setY(details.y); + _vec3_1.setZ(details.z); + + _objects[details.id].setLinearVelocity( + _vec3_1 + ); + _objects[details.id].activate(); +}; + +public_functions.setAngularFactor = function ( details ) { + + _vec3_1.setX(details.x); + _vec3_1.setY(details.y); + _vec3_1.setZ(details.z); + + _objects[details.id].setAngularFactor( + _vec3_1 + ); +}; + +public_functions.setLinearFactor = function ( details ) { + + _vec3_1.setX(details.x); + _vec3_1.setY(details.y); + _vec3_1.setZ(details.z); + + _objects[details.id].setLinearFactor( + _vec3_1 + ); +}; + +public_functions.setDamping = function ( details ) { + _objects[details.id].setDamping( details.linear, details.angular ); +}; + +public_functions.setCcdMotionThreshold = function ( details ) { + _objects[details.id].setCcdMotionThreshold( details.threshold ); +}; + +public_functions.setCcdSweptSphereRadius = function ( details ) { + _objects[details.id].setCcdSweptSphereRadius( details.radius ); +}; + +public_functions.addConstraint = function ( details ) { + var constraint; + + switch ( details.type ) { + + case 'point': + if ( details.objectb === undefined ) { + + _vec3_1.setX(details.positiona.x); + _vec3_1.setY(details.positiona.y); + _vec3_1.setZ(details.positiona.z); + + constraint = new Ammo.btPoint2PointConstraint( + _objects[ details.objecta ], + _vec3_1 + ); + } else { + + _vec3_1.setX(details.positiona.x); + _vec3_1.setY(details.positiona.y); + _vec3_1.setZ(details.positiona.z); + + _vec3_2.setX(details.positionb.x); + _vec3_2.setY(details.positionb.y); + _vec3_2.setZ(details.positionb.z); + + constraint = new Ammo.btPoint2PointConstraint( + _objects[ details.objecta ], + _objects[ details.objectb ], + _vec3_1, + _vec3_2 + ); + } + break; + + case 'hinge': + if ( details.objectb === undefined ) { + + _vec3_1.setX(details.positiona.x); + _vec3_1.setY(details.positiona.y); + _vec3_1.setZ(details.positiona.z); + + _vec3_2.setX(details.axis.x); + _vec3_2.setY(details.axis.y); + _vec3_2.setZ(details.axis.z); + + constraint = new Ammo.btHingeConstraint( + _objects[ details.objecta ], + _vec3_1, + _vec3_2 + ); + } else { + + _vec3_1.setX(details.positiona.x); + _vec3_1.setY(details.positiona.y); + _vec3_1.setZ(details.positiona.z); + + _vec3_2.setX(details.positionb.x); + _vec3_2.setY(details.positionb.y); + _vec3_2.setZ(details.positionb.z); + + _vec3_3.setX(details.axis.x); + _vec3_3.setY(details.axis.y); + _vec3_3.setZ(details.axis.z); + + constraint = new Ammo.btHingeConstraint( + _objects[ details.objecta ], + _objects[ details.objectb ], + _vec3_1, + _vec3_2, + _vec3_3, + _vec3_3 + ); + } + break; + + case 'slider': + var transforma, transformb, rotation; + + transforma = new Ammo.btTransform(); + + _vec3_1.setX(details.positiona.x); + _vec3_1.setY(details.positiona.y); + _vec3_1.setZ(details.positiona.z); + + transforma.setOrigin(_vec3_1); + + var rotation = transforma.getRotation(); + rotation.setEuler( details.axis.x, details.axis.y, details.axis.z ); + transforma.setRotation( rotation ); + + if ( details.objectb ) { + transformb = new Ammo.btTransform(); + + _vec3_2.setX(details.positionb.x); + _vec3_2.setY(details.positionb.y); + _vec3_2.setZ(details.positionb.z); + + transformb.setOrigin(_vec3_2); + + rotation = transformb.getRotation(); + rotation.setEuler( details.axis.x, details.axis.y, details.axis.z ); + transformb.setRotation( rotation ); + + constraint = new Ammo.btSliderConstraint( + _objects[ details.objecta ], + _objects[ details.objectb ], + transforma, + transformb, + true + ); + } else { + constraint = new Ammo.btSliderConstraint( + _objects[ details.objecta ], + transforma, + true + ); + } + + Ammo.destroy(transforma); + if (transformb != undefined) { + Ammo.destroy(transformb); + } + break; + + case 'conetwist': + var transforma, transformb; + + transforma = new Ammo.btTransform(); + transforma.setIdentity(); + + transformb = new Ammo.btTransform(); + transformb.setIdentity(); + + _vec3_1.setX(details.positiona.x); + _vec3_1.setY(details.positiona.y); + _vec3_1.setZ(details.positiona.z); + + _vec3_2.setX(details.positionb.x); + _vec3_2.setY(details.positionb.y); + _vec3_2.setZ(details.positionb.z); + + transforma.setOrigin(_vec3_1); + transformb.setOrigin(_vec3_2); + + var rotation = transforma.getRotation(); + rotation.setEulerZYX( -details.axisa.z, -details.axisa.y, -details.axisa.x ); + transforma.setRotation( rotation ); + + rotation = transformb.getRotation(); + rotation.setEulerZYX( -details.axisb.z, -details.axisb.y, -details.axisb.x ); + transformb.setRotation( rotation ); + + constraint = new Ammo.btConeTwistConstraint( + _objects[ details.objecta ], + _objects[ details.objectb ], + transforma, + transformb + ); + + constraint.setLimit( Math.PI, 0, Math.PI ); + + Ammo.destroy(transforma); + Ammo.destroy(transformb); + + break; + + case 'dof': + var transforma, transformb, rotation; + + transforma = new Ammo.btTransform(); + transforma.setIdentity(); + + _vec3_1.setX(details.positiona.x); + _vec3_1.setY(details.positiona.y); + _vec3_1.setZ(details.positiona.z); + + transforma.setOrigin(_vec3_1 ); + + rotation = transforma.getRotation(); + rotation.setEulerZYX( -details.axisa.z, -details.axisa.y, -details.axisa.x ); + transforma.setRotation( rotation ); + + if ( details.objectb ) { + transformb = new Ammo.btTransform(); + transformb.setIdentity(); + + _vec3_2.setX(details.positionb.x); + _vec3_2.setY(details.positionb.y); + _vec3_2.setZ(details.positionb.z); + + transformb.setOrigin(_vec3_2); + + rotation = transformb.getRotation(); + rotation.setEulerZYX( -details.axisb.z, -details.axisb.y, -details.axisb.x ); + transformb.setRotation( rotation ); + + constraint = new Ammo.btGeneric6DofConstraint( + _objects[ details.objecta ], + _objects[ details.objectb ], + transforma, + transformb + ); + } else { + constraint = new Ammo.btGeneric6DofConstraint( + _objects[ details.objecta ], + transforma + ); + } + Ammo.destroy(transforma); + if (transformb != undefined) { + Ammo.destroy(transformb); + } + break; + + default: + return; + + }; + + world.addConstraint( constraint ); + + constraint.enableFeedback(); + _constraints[ details.id ] = constraint; + _num_constraints++; + + if ( SUPPORT_TRANSFERABLE ) { + constraintreport = new Float32Array(1 + _num_constraints * CONSTRAINTREPORT_ITEMSIZE); // message id & ( # of objects to report * # of values per object ) + constraintreport[0] = MESSAGE_TYPES.CONSTRAINTREPORT; + } else { + constraintreport = [ MESSAGE_TYPES.CONSTRAINTREPORT ]; + } +}; + +public_functions.removeConstraint = function( details ) { + var constraint = _constraints[ details.id ]; + if ( constraint !== undefined ) { + world.removeConstraint( constraint ); + delete _constraints[ details.id ]; + _num_constraints--; + } +}; + +public_functions.constraint_setBreakingImpulseThreshold = function( details ) { + var constraint = _constraints[ details.id ]; + if ( constraint !== undefind ) { + constraint.setBreakingImpulseThreshold( details.threshold ); + } +}; + +public_functions.simulate = function simulate( params ) { + if ( world ) { + params = params || {}; + + if ( !params.timeStep ) { + if ( last_simulation_time ) { + params.timeStep = 0; + while ( params.timeStep + last_simulation_duration <= fixedTimeStep ) { + params.timeStep = ( Date.now() - last_simulation_time ) / 1000; // time since last simulation + } + } else { + params.timeStep = fixedTimeStep; // handle first frame + } + } else { + if ( params.timeStep < fixedTimeStep ) { + params.timeStep = fixedTimeStep; + } + } + + params.maxSubSteps = params.maxSubSteps || Math.ceil( params.timeStep / fixedTimeStep ); // If maxSubSteps is not defined, keep the simulation fully up to date + + last_simulation_duration = Date.now(); + world.stepSimulation( params.timeStep, params.maxSubSteps, fixedTimeStep ); + + reportVehicles(); + reportCollisions(); + reportConstraints(); + reportWorld(); + + last_simulation_duration = ( Date.now() - last_simulation_duration ) / 1000; + last_simulation_time = Date.now(); + } +}; + + +// Constraint functions +public_functions.hinge_setLimits = function( params ) { + _constraints[ params.constraint ].setLimit( params.low, params.high, 0, params.bias_factor, params.relaxation_factor ); +}; +public_functions.hinge_enableAngularMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.enableAngularMotor( true, params.velocity, params.acceleration ); + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.hinge_disableMotor = function( params ) { + _constraints[ params.constraint ].enableMotor( false ); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; + +public_functions.slider_setLimits = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.setLowerLinLimit( params.lin_lower || 0 ); + constraint.setUpperLinLimit( params.lin_upper || 0 ); + + constraint.setLowerAngLimit( params.ang_lower || 0 ); + constraint.setUpperAngLimit( params.ang_upper || 0 ); +}; +public_functions.slider_setRestitution = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.setSoftnessLimLin( params.linear || 0 ); + constraint.setSoftnessLimAng( params.angular || 0 ); +}; +public_functions.slider_enableLinearMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.setTargetLinMotorVelocity( params.velocity ); + constraint.setMaxLinMotorForce( params.acceleration ); + constraint.setPoweredLinMotor( true ); + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.slider_disableLinearMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.setPoweredLinMotor( false ); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.slider_enableAngularMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.setTargetAngMotorVelocity( params.velocity ); + constraint.setMaxAngMotorForce( params.acceleration ); + constraint.setPoweredAngMotor( true ); + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.slider_disableAngularMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.setPoweredAngMotor( false ); + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; + +public_functions.conetwist_setLimit = function( params ) { + _constraints[ params.constraint ].setLimit( params.z, params.y, params.x ); // ZYX order +}; +public_functions.conetwist_enableMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.enableMotor( true ); + constraint.getRigidBodyA().activate(); + constraint.getRigidBodyB().activate(); +}; +public_functions.conetwist_setMaxMotorImpulse = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.setMaxMotorImpulse( params.max_impulse ); + constraint.getRigidBodyA().activate(); + constraint.getRigidBodyB().activate(); +}; +public_functions.conetwist_setMotorTarget = function( params ) { + var constraint = _constraints[ params.constraint ]; + + _quat.setX(params.x); + _quat.setY(params.y); + _quat.setZ(params.z); + _quat.setW(params.w); + + constraint.setMotorTarget(_quat); + + constraint.getRigidBodyA().activate(); + constraint.getRigidBodyB().activate(); +}; +public_functions.conetwist_disableMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + constraint.enableMotor( false ); + constraint.getRigidBodyA().activate(); + constraint.getRigidBodyB().activate(); +}; + +public_functions.dof_setLinearLowerLimit = function( params ) { + var constraint = _constraints[ params.constraint ]; + + _vec3_1.setX(params.x); + _vec3_1.setY(params.y); + _vec3_1.setZ(params.z); + + constraint.setLinearLowerLimit(_vec3_1); + + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.dof_setLinearUpperLimit = function( params ) { + var constraint = _constraints[ params.constraint ]; + + _vec3_1.setX(params.x); + _vec3_1.setY(params.y); + _vec3_1.setZ(params.z); + + constraint.setLinearUpperLimit(_vec3_1); + + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.dof_setAngularLowerLimit = function( params ) { + var constraint = _constraints[ params.constraint ]; + + _vec3_1.setX(params.x); + _vec3_1.setY(params.y); + _vec3_1.setZ(params.z); + + constraint.setAngularLowerLimit(_vec3_1); + + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.dof_setAngularUpperLimit = function( params ) { + var constraint = _constraints[ params.constraint ]; + + _vec3_1.setX(params.x); + _vec3_1.setY(params.y); + _vec3_1.setZ(params.z); + + constraint.setAngularUpperLimit(_vec3_1); + + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.dof_enableAngularMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + + var motor = constraint.getRotationalLimitMotor( params.which ); + motor.set_m_enableMotor( true ); + + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.dof_configureAngularMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + + var motor = constraint.getRotationalLimitMotor( params.which ); + + motor.set_m_loLimit( params.low_angle ); + motor.set_m_hiLimit( params.high_angle ); + motor.set_m_targetVelocity( params.velocity ); + motor.set_m_maxMotorForce( params.max_force ); + + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; +public_functions.dof_disableAngularMotor = function( params ) { + var constraint = _constraints[ params.constraint ]; + + var motor = constraint.getRotationalLimitMotor( params.which ); + motor.set_m_enableMotor( false ); + + constraint.getRigidBodyA().activate(); + if ( constraint.getRigidBodyB() ) { + constraint.getRigidBodyB().activate(); + } +}; + +reportWorld = function() { + var index, object, + transform, origin, rotation, + offset = 0, + i = 0; + + if ( SUPPORT_TRANSFERABLE ) { + if ( worldreport.length < 2 + _num_objects * WORLDREPORT_ITEMSIZE ) { + worldreport = new Float32Array( + 2 + // message id & # objects in report + ( Math.ceil( _num_objects / REPORT_CHUNKSIZE ) * REPORT_CHUNKSIZE ) * WORLDREPORT_ITEMSIZE // # of values needed * item size + ); + worldreport[0] = MESSAGE_TYPES.WORLDREPORT; + } + } + + worldreport[1] = _num_objects; // record how many objects we're reporting on + + //for ( i = 0; i < worldreport[1]; i++ ) { + for ( index in _objects ) { + if ( _objects.hasOwnProperty( index ) ) { + object = _objects[index]; + + // #TODO: we can't use center of mass transform when center of mass can change, + // but getMotionState().getWorldTransform() screws up on objects that have been moved + //object.getMotionState().getWorldTransform( transform ); + transform = object.getCenterOfMassTransform(); + + origin = transform.getOrigin(); + rotation = transform.getRotation(); + + // add values to report + offset = 2 + (i++) * WORLDREPORT_ITEMSIZE; + + worldreport[ offset ] = object.id; + + worldreport[ offset + 1 ] = origin.x(); + worldreport[ offset + 2 ] = origin.y(); + worldreport[ offset + 3 ] = origin.z(); + + worldreport[ offset + 4 ] = rotation.x(); + worldreport[ offset + 5 ] = rotation.y(); + worldreport[ offset + 6 ] = rotation.z(); + worldreport[ offset + 7 ] = rotation.w(); + + _vector = object.getLinearVelocity(); + worldreport[ offset + 8 ] = _vector.x(); + worldreport[ offset + 9 ] = _vector.y(); + worldreport[ offset + 10 ] = _vector.z(); + + _vector = object.getAngularVelocity(); + worldreport[ offset + 11 ] = _vector.x(); + worldreport[ offset + 12 ] = _vector.y(); + worldreport[ offset + 13 ] = _vector.z(); + } + } + + + if ( SUPPORT_TRANSFERABLE ) { + transferableMessage( worldreport.buffer, [worldreport.buffer] ); + } else { + transferableMessage( worldreport ); + } + +}; + +reportCollisions = function() { + var i, offset, + dp = world.getDispatcher(), + num = dp.getNumManifolds(), + manifold, num_contacts, j, pt, + _collided = false; + + if ( SUPPORT_TRANSFERABLE ) { + if ( collisionreport.length < 2 + num * COLLISIONREPORT_ITEMSIZE ) { + collisionreport = new Float32Array( + 2 + // message id & # objects in report + ( Math.ceil( _num_objects / REPORT_CHUNKSIZE ) * REPORT_CHUNKSIZE ) * COLLISIONREPORT_ITEMSIZE // # of values needed * item size + ); + collisionreport[0] = MESSAGE_TYPES.COLLISIONREPORT; + } + } + + collisionreport[1] = 0; // how many collisions we're reporting on + + for ( i = 0; i < num; i++ ) { + manifold = dp.getManifoldByIndexInternal( i ); + + num_contacts = manifold.getNumContacts(); + if ( num_contacts === 0 ) { + continue; + } + + for ( j = 0; j < num_contacts; j++ ) { + pt = manifold.getContactPoint( j ); + //if ( pt.getDistance() < 0 ) { + offset = 2 + (collisionreport[1]++) * COLLISIONREPORT_ITEMSIZE; + collisionreport[ offset ] = _objects_ammo[ manifold.getBody0() ]; + collisionreport[ offset + 1 ] = _objects_ammo[ manifold.getBody1() ]; + + _vector = pt.get_m_normalWorldOnB(); + collisionreport[ offset + 2 ] = _vector.x(); + collisionreport[ offset + 3 ] = _vector.y(); + collisionreport[ offset + 4 ] = _vector.z(); + break; + //} + + transferableMessage( _objects_ammo ); + + } + } + + + if ( SUPPORT_TRANSFERABLE ) { + transferableMessage( collisionreport.buffer, [collisionreport.buffer] ); + } else { + transferableMessage( collisionreport ); + } +}; + +reportVehicles = function() { + var index, vehicle, + transform, origin, rotation, + offset = 0, + i = 0, j = 0; + + if ( SUPPORT_TRANSFERABLE ) { + if ( vehiclereport.length < 2 + _num_wheels * VEHICLEREPORT_ITEMSIZE ) { + vehiclereport = new Float32Array( + 2 + // message id & # objects in report + ( Math.ceil( _num_wheels / REPORT_CHUNKSIZE ) * REPORT_CHUNKSIZE ) * VEHICLEREPORT_ITEMSIZE // # of values needed * item size + ); + vehiclereport[0] = MESSAGE_TYPES.VEHICLEREPORT; + } + } + + for ( index in _vehicles ) { + if ( _vehicles.hasOwnProperty( index ) ) { + vehicle = _vehicles[index]; + + for ( j = 0; j < vehicle.getNumWheels(); j++ ) { + + //vehicle.updateWheelTransform( j, true ); + + //transform = vehicle.getWheelTransformWS( j ); + transform = vehicle.getWheelInfo( j ).get_m_worldTransform(); + + origin = transform.getOrigin(); + rotation = transform.getRotation(); + + // add values to report + offset = 1 + (i++) * VEHICLEREPORT_ITEMSIZE; + + vehiclereport[ offset ] = index; + vehiclereport[ offset + 1 ] = j; + + vehiclereport[ offset + 2 ] = origin.x(); + vehiclereport[ offset + 3 ] = origin.y(); + vehiclereport[ offset + 4 ] = origin.z(); + + vehiclereport[ offset + 5 ] = rotation.x(); + vehiclereport[ offset + 6 ] = rotation.y(); + vehiclereport[ offset + 7 ] = rotation.z(); + vehiclereport[ offset + 8 ] = rotation.w(); + + } + + } + } + + if ( j !== 0 ) { + if ( SUPPORT_TRANSFERABLE ) { + transferableMessage( vehiclereport.buffer, [vehiclereport.buffer] ); + } else { + transferableMessage( vehiclereport ); + } + } +}; + +reportConstraints = function() { + var index, constraint, + offset_body, + transform, origin, + offset = 0, + i = 0; + + if ( SUPPORT_TRANSFERABLE ) { + if ( constraintreport.length < 2 + _num_constraints * CONSTRAINTREPORT_ITEMSIZE ) { + constraintreport = new Float32Array( + 2 + // message id & # objects in report + ( Math.ceil( _num_constraints / REPORT_CHUNKSIZE ) * REPORT_CHUNKSIZE ) * CONSTRAINTREPORT_ITEMSIZE // # of values needed * item size + ); + constraintreport[0] = MESSAGE_TYPES.CONSTRAINTREPORT; + } + } + + for ( index in _constraints ) { + if ( _constraints.hasOwnProperty( index ) ) { + constraint = _constraints[index]; + offset_body = constraint.getRigidBodyA(); + transform = constraint.getFrameOffsetA(); + origin = transform.getOrigin(); + + // add values to report + offset = 1 + (i++) * CONSTRAINTREPORT_ITEMSIZE; + + constraintreport[ offset ] = index; + constraintreport[ offset + 1 ] = offset_body.id; + constraintreport[ offset + 2 ] = origin.getX(); + constraintreport[ offset + 3 ] = origin.getY(); + constraintreport[ offset + 4 ] = origin.getZ(); + constraintreport[ offset + 5 ] = constraint.getAppliedImpulse(); + } + } + + + if ( i !== 0 ) { + if ( SUPPORT_TRANSFERABLE ) { + transferableMessage( constraintreport.buffer, [constraintreport.buffer] ); + } else { + transferableMessage( constraintreport ); + } + } + +}; + +self.onmessage = function( event ) { + + if ( event.data instanceof Float32Array ) { + // transferable object + + switch ( event.data[0] ) { + case MESSAGE_TYPES.WORLDREPORT: + worldreport = new Float32Array( event.data ); + break; + + case MESSAGE_TYPES.COLLISIONREPORT: + collisionreport = new Float32Array( event.data ); + break; + + case MESSAGE_TYPES.VEHICLEREPORT: + vehiclereport = new Float32Array( event.data ); + break; + + case MESSAGE_TYPES.CONSTRAINTREPORT: + constraintreport = new Float32Array( event.data ); + break; + } + + return; + } + + if ( event.data.cmd && public_functions[event.data.cmd] ) { + //if ( event.data.params.id !== undefined && _objects[event.data.params.id] === undefined && event.data.cmd !== 'addObject' && event.data.cmd !== 'registerMaterial' ) return; + public_functions[event.data.cmd]( event.data.params ); + } + +}; diff --git a/src/nodeschool/webgl/breakWall/src/lib/three.js b/src/nodeschool/webgl/breakWall/src/lib/three.js new file mode 100644 index 0000000..0df3d03 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/lib/three.js @@ -0,0 +1,49623 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.THREE = {})); +}(this, function (exports) { 'use strict'; + + // Polyfills + + if ( Number.EPSILON === undefined ) { + + Number.EPSILON = Math.pow( 2, - 52 ); + + } + + if ( Number.isInteger === undefined ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger + + Number.isInteger = function ( value ) { + + return typeof value === 'number' && isFinite( value ) && Math.floor( value ) === value; + + }; + + } + + // + + if ( Math.sign === undefined ) { + + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sign + + Math.sign = function ( x ) { + + return ( x < 0 ) ? - 1 : ( x > 0 ) ? 1 : + x; + + }; + + } + + if ( 'name' in Function.prototype === false ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name + + Object.defineProperty( Function.prototype, 'name', { + + get: function () { + + return this.toString().match( /^\s*function\s*([^\(\s]*)/ )[ 1 ]; + + } + + } ); + + } + + if ( Object.assign === undefined ) { + + // Missing in IE + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + + Object.assign = function ( target ) { + + if ( target === undefined || target === null ) { + + throw new TypeError( 'Cannot convert undefined or null to object' ); + + } + + var output = Object( target ); + + for ( var index = 1; index < arguments.length; index ++ ) { + + var source = arguments[ index ]; + + if ( source !== undefined && source !== null ) { + + for ( var nextKey in source ) { + + if ( Object.prototype.hasOwnProperty.call( source, nextKey ) ) { + + output[ nextKey ] = source[ nextKey ]; + + } + + } + + } + + } + + return output; + + }; + + } + + var REVISION = '109'; + var MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 }; + var TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 }; + var CullFaceNone = 0; + var CullFaceBack = 1; + var CullFaceFront = 2; + var CullFaceFrontBack = 3; + var FrontFaceDirectionCW = 0; + var FrontFaceDirectionCCW = 1; + var BasicShadowMap = 0; + var PCFShadowMap = 1; + var PCFSoftShadowMap = 2; + var VSMShadowMap = 3; + var FrontSide = 0; + var BackSide = 1; + var DoubleSide = 2; + var FlatShading = 1; + var SmoothShading = 2; + var NoColors = 0; + var FaceColors = 1; + var VertexColors = 2; + var NoBlending = 0; + var NormalBlending = 1; + var AdditiveBlending = 2; + var SubtractiveBlending = 3; + var MultiplyBlending = 4; + var CustomBlending = 5; + var AddEquation = 100; + var SubtractEquation = 101; + var ReverseSubtractEquation = 102; + var MinEquation = 103; + var MaxEquation = 104; + var ZeroFactor = 200; + var OneFactor = 201; + var SrcColorFactor = 202; + var OneMinusSrcColorFactor = 203; + var SrcAlphaFactor = 204; + var OneMinusSrcAlphaFactor = 205; + var DstAlphaFactor = 206; + var OneMinusDstAlphaFactor = 207; + var DstColorFactor = 208; + var OneMinusDstColorFactor = 209; + var SrcAlphaSaturateFactor = 210; + var NeverDepth = 0; + var AlwaysDepth = 1; + var LessDepth = 2; + var LessEqualDepth = 3; + var EqualDepth = 4; + var GreaterEqualDepth = 5; + var GreaterDepth = 6; + var NotEqualDepth = 7; + var MultiplyOperation = 0; + var MixOperation = 1; + var AddOperation = 2; + var NoToneMapping = 0; + var LinearToneMapping = 1; + var ReinhardToneMapping = 2; + var Uncharted2ToneMapping = 3; + var CineonToneMapping = 4; + var ACESFilmicToneMapping = 5; + + var UVMapping = 300; + var CubeReflectionMapping = 301; + var CubeRefractionMapping = 302; + var EquirectangularReflectionMapping = 303; + var EquirectangularRefractionMapping = 304; + var SphericalReflectionMapping = 305; + var CubeUVReflectionMapping = 306; + var CubeUVRefractionMapping = 307; + var RepeatWrapping = 1000; + var ClampToEdgeWrapping = 1001; + var MirroredRepeatWrapping = 1002; + var NearestFilter = 1003; + var NearestMipmapNearestFilter = 1004; + var NearestMipMapNearestFilter = 1004; + var NearestMipmapLinearFilter = 1005; + var NearestMipMapLinearFilter = 1005; + var LinearFilter = 1006; + var LinearMipmapNearestFilter = 1007; + var LinearMipMapNearestFilter = 1007; + var LinearMipmapLinearFilter = 1008; + var LinearMipMapLinearFilter = 1008; + var UnsignedByteType = 1009; + var ByteType = 1010; + var ShortType = 1011; + var UnsignedShortType = 1012; + var IntType = 1013; + var UnsignedIntType = 1014; + var FloatType = 1015; + var HalfFloatType = 1016; + var UnsignedShort4444Type = 1017; + var UnsignedShort5551Type = 1018; + var UnsignedShort565Type = 1019; + var UnsignedInt248Type = 1020; + var AlphaFormat = 1021; + var RGBFormat = 1022; + var RGBAFormat = 1023; + var LuminanceFormat = 1024; + var LuminanceAlphaFormat = 1025; + var RGBEFormat = RGBAFormat; + var DepthFormat = 1026; + var DepthStencilFormat = 1027; + var RedFormat = 1028; + var RGB_S3TC_DXT1_Format = 33776; + var RGBA_S3TC_DXT1_Format = 33777; + var RGBA_S3TC_DXT3_Format = 33778; + var RGBA_S3TC_DXT5_Format = 33779; + var RGB_PVRTC_4BPPV1_Format = 35840; + var RGB_PVRTC_2BPPV1_Format = 35841; + var RGBA_PVRTC_4BPPV1_Format = 35842; + var RGBA_PVRTC_2BPPV1_Format = 35843; + var RGB_ETC1_Format = 36196; + var RGBA_ASTC_4x4_Format = 37808; + var RGBA_ASTC_5x4_Format = 37809; + var RGBA_ASTC_5x5_Format = 37810; + var RGBA_ASTC_6x5_Format = 37811; + var RGBA_ASTC_6x6_Format = 37812; + var RGBA_ASTC_8x5_Format = 37813; + var RGBA_ASTC_8x6_Format = 37814; + var RGBA_ASTC_8x8_Format = 37815; + var RGBA_ASTC_10x5_Format = 37816; + var RGBA_ASTC_10x6_Format = 37817; + var RGBA_ASTC_10x8_Format = 37818; + var RGBA_ASTC_10x10_Format = 37819; + var RGBA_ASTC_12x10_Format = 37820; + var RGBA_ASTC_12x12_Format = 37821; + var LoopOnce = 2200; + var LoopRepeat = 2201; + var LoopPingPong = 2202; + var InterpolateDiscrete = 2300; + var InterpolateLinear = 2301; + var InterpolateSmooth = 2302; + var ZeroCurvatureEnding = 2400; + var ZeroSlopeEnding = 2401; + var WrapAroundEnding = 2402; + var TrianglesDrawMode = 0; + var TriangleStripDrawMode = 1; + var TriangleFanDrawMode = 2; + var LinearEncoding = 3000; + var sRGBEncoding = 3001; + var GammaEncoding = 3007; + var RGBEEncoding = 3002; + var LogLuvEncoding = 3003; + var RGBM7Encoding = 3004; + var RGBM16Encoding = 3005; + var RGBDEncoding = 3006; + var BasicDepthPacking = 3200; + var RGBADepthPacking = 3201; + var TangentSpaceNormalMap = 0; + var ObjectSpaceNormalMap = 1; + + var ZeroStencilOp = 0; + var KeepStencilOp = 7680; + var ReplaceStencilOp = 7681; + var IncrementStencilOp = 7682; + var DecrementStencilOp = 7683; + var IncrementWrapStencilOp = 34055; + var DecrementWrapStencilOp = 34056; + var InvertStencilOp = 5386; + + var NeverStencilFunc = 512; + var LessStencilFunc = 513; + var EqualStencilFunc = 514; + var LessEqualStencilFunc = 515; + var GreaterStencilFunc = 516; + var NotEqualStencilFunc = 517; + var GreaterEqualStencilFunc = 518; + var AlwaysStencilFunc = 519; + + /** + * https://github.com/mrdoob/eventdispatcher.js/ + */ + + function EventDispatcher() {} + + Object.assign( EventDispatcher.prototype, { + + addEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) { this._listeners = {}; } + + var listeners = this._listeners; + + if ( listeners[ type ] === undefined ) { + + listeners[ type ] = []; + + } + + if ( listeners[ type ].indexOf( listener ) === - 1 ) { + + listeners[ type ].push( listener ); + + } + + }, + + hasEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) { return false; } + + var listeners = this._listeners; + + return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1; + + }, + + removeEventListener: function ( type, listener ) { + + if ( this._listeners === undefined ) { return; } + + var listeners = this._listeners; + var listenerArray = listeners[ type ]; + + if ( listenerArray !== undefined ) { + + var index = listenerArray.indexOf( listener ); + + if ( index !== - 1 ) { + + listenerArray.splice( index, 1 ); + + } + + } + + }, + + dispatchEvent: function ( event ) { + + if ( this._listeners === undefined ) { return; } + + var listeners = this._listeners; + var listenerArray = listeners[ event.type ]; + + if ( listenerArray !== undefined ) { + + event.target = this; + + var array = listenerArray.slice( 0 ); + + for ( var i = 0, l = array.length; i < l; i ++ ) { + + array[ i ].call( this, event ); + + } + + } + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var _lut = []; + + for ( var i = 0; i < 256; i ++ ) { + + _lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 ); + + } + + var _Math = { + + DEG2RAD: Math.PI / 180, + RAD2DEG: 180 / Math.PI, + + generateUUID: function () { + + // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136 + + var d0 = Math.random() * 0xffffffff | 0; + var d1 = Math.random() * 0xffffffff | 0; + var d2 = Math.random() * 0xffffffff | 0; + var d3 = Math.random() * 0xffffffff | 0; + var uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' + + _lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' + + _lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] + + _lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ]; + + // .toUpperCase() here flattens concatenated strings to save heap memory space. + return uuid.toUpperCase(); + + }, + + clamp: function ( value, min, max ) { + + return Math.max( min, Math.min( max, value ) ); + + }, + + // compute euclidian modulo of m % n + // https://en.wikipedia.org/wiki/Modulo_operation + + euclideanModulo: function ( n, m ) { + + return ( ( n % m ) + m ) % m; + + }, + + // Linear mapping from range to range + + mapLinear: function ( x, a1, a2, b1, b2 ) { + + return b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 ); + + }, + + // https://en.wikipedia.org/wiki/Linear_interpolation + + lerp: function ( x, y, t ) { + + return ( 1 - t ) * x + t * y; + + }, + + // http://en.wikipedia.org/wiki/Smoothstep + + smoothstep: function ( x, min, max ) { + + if ( x <= min ) { return 0; } + if ( x >= max ) { return 1; } + + x = ( x - min ) / ( max - min ); + + return x * x * ( 3 - 2 * x ); + + }, + + smootherstep: function ( x, min, max ) { + + if ( x <= min ) { return 0; } + if ( x >= max ) { return 1; } + + x = ( x - min ) / ( max - min ); + + return x * x * x * ( x * ( x * 6 - 15 ) + 10 ); + + }, + + // Random integer from interval + + randInt: function ( low, high ) { + + return low + Math.floor( Math.random() * ( high - low + 1 ) ); + + }, + + // Random float from interval + + randFloat: function ( low, high ) { + + return low + Math.random() * ( high - low ); + + }, + + // Random float from <-range/2, range/2> interval + + randFloatSpread: function ( range ) { + + return range * ( 0.5 - Math.random() ); + + }, + + degToRad: function ( degrees ) { + + return degrees * _Math.DEG2RAD; + + }, + + radToDeg: function ( radians ) { + + return radians * _Math.RAD2DEG; + + }, + + isPowerOfTwo: function ( value ) { + + return ( value & ( value - 1 ) ) === 0 && value !== 0; + + }, + + ceilPowerOfTwo: function ( value ) { + + return Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) ); + + }, + + floorPowerOfTwo: function ( value ) { + + return Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) ); + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author philogb / http://blog.thejit.org/ + * @author egraether / http://egraether.com/ + * @author zz85 / http://www.lab4games.net/zz85/blog + */ + + function Vector2( x, y ) { + + this.x = x || 0; + this.y = y || 0; + + } + + Object.defineProperties( Vector2.prototype, { + + "width": { + + get: function () { + + return this.x; + + }, + + set: function ( value ) { + + this.x = value; + + } + + }, + + "height": { + + get: function () { + + return this.y; + + }, + + set: function ( value ) { + + this.y = value; + + } + + } + + } ); + + Object.assign( Vector2.prototype, { + + isVector2: true, + + set: function ( x, y ) { + + this.x = x; + this.y = y; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + + return this; + + }, + + multiply: function ( v ) { + + this.x *= v.x; + this.y *= v.y; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + + return this; + + }, + + divide: function ( v ) { + + this.x /= v.x; + this.y /= v.y; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + applyMatrix3: function ( m ) { + + var x = this.x, y = this.y; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ]; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ]; + + return this; + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + + return this; + + }, + + clampScalar: function ( minVal, maxVal ) { + + this.x = Math.max( minVal, Math.min( maxVal, this.x ) ); + this.y = Math.max( minVal, Math.min( maxVal, this.y ) ); + + return this; + + }, + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y; + + }, + + cross: function ( v ) { + + return this.x * v.y - this.y * v.x; + + }, + + lengthSq: function () { + + return this.x * this.x + this.y * this.y; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + angle: function () { + + // computes the angle in radians with respect to the positive x-axis + + var angle = Math.atan2( this.y, this.x ); + + if ( angle < 0 ) { angle += 2 * Math.PI; } + + return angle; + + }, + + distanceTo: function ( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + }, + + distanceToSquared: function ( v ) { + + var dx = this.x - v.x, dy = this.y - v.y; + return dx * dx + dy * dy; + + }, + + manhattanDistanceTo: function ( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) { offset = 0; } + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) { array = []; } + if ( offset === undefined ) { offset = 0; } + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + + return this; + + }, + + rotateAround: function ( center, angle ) { + + var c = Math.cos( angle ), s = Math.sin( angle ); + + var x = this.x - center.x; + var y = this.y - center.y; + + this.x = x * c - y * s + center.x; + this.y = x * s + y * c + center.y; + + return this; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + */ + + function Quaternion( x, y, z, w ) { + + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this._w = ( w !== undefined ) ? w : 1; + + } + + Object.assign( Quaternion, { + + slerp: function ( qa, qb, qm, t ) { + + return qm.copy( qa ).slerp( qb, t ); + + }, + + slerpFlat: function ( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) { + + // fuzz-free, array-based Quaternion SLERP operation + + var x0 = src0[ srcOffset0 + 0 ], + y0 = src0[ srcOffset0 + 1 ], + z0 = src0[ srcOffset0 + 2 ], + w0 = src0[ srcOffset0 + 3 ], + + x1 = src1[ srcOffset1 + 0 ], + y1 = src1[ srcOffset1 + 1 ], + z1 = src1[ srcOffset1 + 2 ], + w1 = src1[ srcOffset1 + 3 ]; + + if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) { + + var s = 1 - t, + + cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, + + dir = ( cos >= 0 ? 1 : - 1 ), + sqrSin = 1 - cos * cos; + + // Skip the Slerp for tiny steps to avoid numeric problems: + if ( sqrSin > Number.EPSILON ) { + + var sin = Math.sqrt( sqrSin ), + len = Math.atan2( sin, cos * dir ); + + s = Math.sin( s * len ) / sin; + t = Math.sin( t * len ) / sin; + + } + + var tDir = t * dir; + + x0 = x0 * s + x1 * tDir; + y0 = y0 * s + y1 * tDir; + z0 = z0 * s + z1 * tDir; + w0 = w0 * s + w1 * tDir; + + // Normalize in case we just did a lerp: + if ( s === 1 - t ) { + + var f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 ); + + x0 *= f; + y0 *= f; + z0 *= f; + w0 *= f; + + } + + } + + dst[ dstOffset ] = x0; + dst[ dstOffset + 1 ] = y0; + dst[ dstOffset + 2 ] = z0; + dst[ dstOffset + 3 ] = w0; + + } + + } ); + + Object.defineProperties( Quaternion.prototype, { + + x: { + + get: function () { + + return this._x; + + }, + + set: function ( value ) { + + this._x = value; + this._onChangeCallback(); + + } + + }, + + y: { + + get: function () { + + return this._y; + + }, + + set: function ( value ) { + + this._y = value; + this._onChangeCallback(); + + } + + }, + + z: { + + get: function () { + + return this._z; + + }, + + set: function ( value ) { + + this._z = value; + this._onChangeCallback(); + + } + + }, + + w: { + + get: function () { + + return this._w; + + }, + + set: function ( value ) { + + this._w = value; + this._onChangeCallback(); + + } + + } + + } ); + + Object.assign( Quaternion.prototype, { + + isQuaternion: true, + + set: function ( x, y, z, w ) { + + this._x = x; + this._y = y; + this._z = z; + this._w = w; + + this._onChangeCallback(); + + return this; + + }, + + clone: function () { + + return new this.constructor( this._x, this._y, this._z, this._w ); + + }, + + copy: function ( quaternion ) { + + this._x = quaternion.x; + this._y = quaternion.y; + this._z = quaternion.z; + this._w = quaternion.w; + + this._onChangeCallback(); + + return this; + + }, + + setFromEuler: function ( euler, update ) { + + if ( ! ( euler && euler.isEuler ) ) { + + throw new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + + } + + var x = euler._x, y = euler._y, z = euler._z, order = euler.order; + + // http://www.mathworks.com/matlabcentral/fileexchange/ + // 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/ + // content/SpinCalc.m + + var cos = Math.cos; + var sin = Math.sin; + + var c1 = cos( x / 2 ); + var c2 = cos( y / 2 ); + var c3 = cos( z / 2 ); + + var s1 = sin( x / 2 ); + var s2 = sin( y / 2 ); + var s3 = sin( z / 2 ); + + if ( order === 'XYZ' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'YXZ' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'ZXY' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'ZYX' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } else if ( order === 'YZX' ) { + + this._x = s1 * c2 * c3 + c1 * s2 * s3; + this._y = c1 * s2 * c3 + s1 * c2 * s3; + this._z = c1 * c2 * s3 - s1 * s2 * c3; + this._w = c1 * c2 * c3 - s1 * s2 * s3; + + } else if ( order === 'XZY' ) { + + this._x = s1 * c2 * c3 - c1 * s2 * s3; + this._y = c1 * s2 * c3 - s1 * c2 * s3; + this._z = c1 * c2 * s3 + s1 * s2 * c3; + this._w = c1 * c2 * c3 + s1 * s2 * s3; + + } + + if ( update !== false ) { this._onChangeCallback(); } + + return this; + + }, + + setFromAxisAngle: function ( axis, angle ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm + + // assumes axis is normalized + + var halfAngle = angle / 2, s = Math.sin( halfAngle ); + + this._x = axis.x * s; + this._y = axis.y * s; + this._z = axis.z * s; + this._w = Math.cos( halfAngle ); + + this._onChangeCallback(); + + return this; + + }, + + setFromRotationMatrix: function ( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ], + + trace = m11 + m22 + m33, + s; + + if ( trace > 0 ) { + + s = 0.5 / Math.sqrt( trace + 1.0 ); + + this._w = 0.25 / s; + this._x = ( m32 - m23 ) * s; + this._y = ( m13 - m31 ) * s; + this._z = ( m21 - m12 ) * s; + + } else if ( m11 > m22 && m11 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 ); + + this._w = ( m32 - m23 ) / s; + this._x = 0.25 * s; + this._y = ( m12 + m21 ) / s; + this._z = ( m13 + m31 ) / s; + + } else if ( m22 > m33 ) { + + s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 ); + + this._w = ( m13 - m31 ) / s; + this._x = ( m12 + m21 ) / s; + this._y = 0.25 * s; + this._z = ( m23 + m32 ) / s; + + } else { + + s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 ); + + this._w = ( m21 - m12 ) / s; + this._x = ( m13 + m31 ) / s; + this._y = ( m23 + m32 ) / s; + this._z = 0.25 * s; + + } + + this._onChangeCallback(); + + return this; + + }, + + setFromUnitVectors: function ( vFrom, vTo ) { + + // assumes direction vectors vFrom and vTo are normalized + + var EPS = 0.000001; + + var r = vFrom.dot( vTo ) + 1; + + if ( r < EPS ) { + + r = 0; + + if ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) { + + this._x = - vFrom.y; + this._y = vFrom.x; + this._z = 0; + this._w = r; + + } else { + + this._x = 0; + this._y = - vFrom.z; + this._z = vFrom.y; + this._w = r; + + } + + } else { + + // crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3 + + this._x = vFrom.y * vTo.z - vFrom.z * vTo.y; + this._y = vFrom.z * vTo.x - vFrom.x * vTo.z; + this._z = vFrom.x * vTo.y - vFrom.y * vTo.x; + this._w = r; + + } + + return this.normalize(); + + }, + + angleTo: function ( q ) { + + return 2 * Math.acos( Math.abs( _Math.clamp( this.dot( q ), - 1, 1 ) ) ); + + }, + + rotateTowards: function ( q, step ) { + + var angle = this.angleTo( q ); + + if ( angle === 0 ) { return this; } + + var t = Math.min( 1, step / angle ); + + this.slerp( q, t ); + + return this; + + }, + + inverse: function () { + + // quaternion is assumed to have unit length + + return this.conjugate(); + + }, + + conjugate: function () { + + this._x *= - 1; + this._y *= - 1; + this._z *= - 1; + + this._onChangeCallback(); + + return this; + + }, + + dot: function ( v ) { + + return this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w; + + }, + + lengthSq: function () { + + return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w; + + }, + + length: function () { + + return Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w ); + + }, + + normalize: function () { + + var l = this.length(); + + if ( l === 0 ) { + + this._x = 0; + this._y = 0; + this._z = 0; + this._w = 1; + + } else { + + l = 1 / l; + + this._x = this._x * l; + this._y = this._y * l; + this._z = this._z * l; + this._w = this._w * l; + + } + + this._onChangeCallback(); + + return this; + + }, + + multiply: function ( q, p ) { + + if ( p !== undefined ) { + + console.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' ); + return this.multiplyQuaternions( q, p ); + + } + + return this.multiplyQuaternions( this, q ); + + }, + + premultiply: function ( q ) { + + return this.multiplyQuaternions( q, this ); + + }, + + multiplyQuaternions: function ( a, b ) { + + // from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm + + var qax = a._x, qay = a._y, qaz = a._z, qaw = a._w; + var qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w; + + this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby; + this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz; + this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx; + this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz; + + this._onChangeCallback(); + + return this; + + }, + + slerp: function ( qb, t ) { + + if ( t === 0 ) { return this; } + if ( t === 1 ) { return this.copy( qb ); } + + var x = this._x, y = this._y, z = this._z, w = this._w; + + // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/ + + var cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z; + + if ( cosHalfTheta < 0 ) { + + this._w = - qb._w; + this._x = - qb._x; + this._y = - qb._y; + this._z = - qb._z; + + cosHalfTheta = - cosHalfTheta; + + } else { + + this.copy( qb ); + + } + + if ( cosHalfTheta >= 1.0 ) { + + this._w = w; + this._x = x; + this._y = y; + this._z = z; + + return this; + + } + + var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta; + + if ( sqrSinHalfTheta <= Number.EPSILON ) { + + var s = 1 - t; + this._w = s * w + t * this._w; + this._x = s * x + t * this._x; + this._y = s * y + t * this._y; + this._z = s * z + t * this._z; + + this.normalize(); + this._onChangeCallback(); + + return this; + + } + + var sinHalfTheta = Math.sqrt( sqrSinHalfTheta ); + var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta ); + var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta, + ratioB = Math.sin( t * halfTheta ) / sinHalfTheta; + + this._w = ( w * ratioA + this._w * ratioB ); + this._x = ( x * ratioA + this._x * ratioB ); + this._y = ( y * ratioA + this._y * ratioB ); + this._z = ( z * ratioA + this._z * ratioB ); + + this._onChangeCallback(); + + return this; + + }, + + equals: function ( quaternion ) { + + return ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) { offset = 0; } + + this._x = array[ offset ]; + this._y = array[ offset + 1 ]; + this._z = array[ offset + 2 ]; + this._w = array[ offset + 3 ]; + + this._onChangeCallback(); + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) { array = []; } + if ( offset === undefined ) { offset = 0; } + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._w; + + return array; + + }, + + _onChange: function ( callback ) { + + this._onChangeCallback = callback; + + return this; + + }, + + _onChangeCallback: function () {} + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author kile / http://kile.stravaganza.org/ + * @author philogb / http://blog.thejit.org/ + * @author mikael emtinger / http://gomo.se/ + * @author egraether / http://egraether.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + var _vector = new Vector3(); + var _quaternion = new Quaternion(); + + function Vector3( x, y, z ) { + + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + + } + + Object.assign( Vector3.prototype, { + + isVector3: true, + + set: function ( x, y, z ) { + + this.x = x; + this.y = y; + this.z = z; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setZ: function ( z ) { + + this.z = z; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y, this.z ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + this.z += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + + return this; + + }, + + multiply: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' ); + return this.multiplyVectors( v, w ); + + } + + this.x *= v.x; + this.y *= v.y; + this.z *= v.z; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + + return this; + + }, + + multiplyVectors: function ( a, b ) { + + this.x = a.x * b.x; + this.y = a.y * b.y; + this.z = a.z * b.z; + + return this; + + }, + + applyEuler: function ( euler ) { + + if ( ! ( euler && euler.isEuler ) ) { + + console.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' ); + + } + + return this.applyQuaternion( _quaternion.setFromEuler( euler ) ); + + }, + + applyAxisAngle: function ( axis, angle ) { + + return this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) ); + + }, + + applyMatrix3: function ( m ) { + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z; + this.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z; + this.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z; + + return this; + + }, + + applyMatrix4: function ( m ) { + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + var w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] ); + + this.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w; + this.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w; + this.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w; + + return this; + + }, + + applyQuaternion: function ( q ) { + + var x = this.x, y = this.y, z = this.z; + var qx = q.x, qy = q.y, qz = q.z, qw = q.w; + + // calculate quat * vector + + var ix = qw * x + qy * z - qz * y; + var iy = qw * y + qz * x - qx * z; + var iz = qw * z + qx * y - qy * x; + var iw = - qx * x - qy * y - qz * z; + + // calculate result * inverse quat + + this.x = ix * qw + iw * - qx + iy * - qz - iz * - qy; + this.y = iy * qw + iw * - qy + iz * - qx - ix * - qz; + this.z = iz * qw + iw * - qz + ix * - qy - iy * - qx; + + return this; + + }, + + project: function ( camera ) { + + return this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix ); + + }, + + unproject: function ( camera ) { + + return this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld ); + + }, + + transformDirection: function ( m ) { + + // input: THREE.Matrix4 affine matrix + // vector interpreted as a direction + + var x = this.x, y = this.y, z = this.z; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z; + + return this.normalize(); + + }, + + divide: function ( v ) { + + this.x /= v.x; + this.y /= v.y; + this.z /= v.z; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + this.z = Math.max( min.z, Math.min( max.z, this.z ) ); + + return this; + + }, + + clampScalar: function ( minVal, maxVal ) { + + this.x = Math.max( minVal, Math.min( maxVal, this.x ) ); + this.y = Math.max( minVal, Math.min( maxVal, this.y ) ); + this.z = Math.max( minVal, Math.min( maxVal, this.z ) ); + + return this; + + }, + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z; + + }, + + // TODO lengthSquared? + + lengthSq: function () { + + return this.x * this.x + this.y * this.y + this.z * this.z; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + cross: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' ); + return this.crossVectors( v, w ); + + } + + return this.crossVectors( this, v ); + + }, + + crossVectors: function ( a, b ) { + + var ax = a.x, ay = a.y, az = a.z; + var bx = b.x, by = b.y, bz = b.z; + + this.x = ay * bz - az * by; + this.y = az * bx - ax * bz; + this.z = ax * by - ay * bx; + + return this; + + }, + + projectOnVector: function ( v ) { + + // v cannot be the zero v + + var scalar = v.dot( this ) / v.lengthSq(); + + return this.copy( v ).multiplyScalar( scalar ); + + }, + + projectOnPlane: function ( planeNormal ) { + + _vector.copy( this ).projectOnVector( planeNormal ); + + return this.sub( _vector ); + + }, + + reflect: function ( normal ) { + + // reflect incident vector off plane orthogonal to normal + // normal is assumed to have unit length + + return this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) ); + + }, + + angleTo: function ( v ) { + + var denominator = Math.sqrt( this.lengthSq() * v.lengthSq() ); + + if ( denominator === 0 ) { console.error( 'THREE.Vector3: angleTo() can\'t handle zero length vectors.' ); } + + var theta = this.dot( v ) / denominator; + + // clamp, to handle numerical problems + + return Math.acos( _Math.clamp( theta, - 1, 1 ) ); + + }, + + distanceTo: function ( v ) { + + return Math.sqrt( this.distanceToSquared( v ) ); + + }, + + distanceToSquared: function ( v ) { + + var dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z; + + return dx * dx + dy * dy + dz * dz; + + }, + + manhattanDistanceTo: function ( v ) { + + return Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z ); + + }, + + setFromSpherical: function ( s ) { + + return this.setFromSphericalCoords( s.radius, s.phi, s.theta ); + + }, + + setFromSphericalCoords: function ( radius, phi, theta ) { + + var sinPhiRadius = Math.sin( phi ) * radius; + + this.x = sinPhiRadius * Math.sin( theta ); + this.y = Math.cos( phi ) * radius; + this.z = sinPhiRadius * Math.cos( theta ); + + return this; + + }, + + setFromCylindrical: function ( c ) { + + return this.setFromCylindricalCoords( c.radius, c.theta, c.y ); + + }, + + setFromCylindricalCoords: function ( radius, theta, y ) { + + this.x = radius * Math.sin( theta ); + this.y = y; + this.z = radius * Math.cos( theta ); + + return this; + + }, + + setFromMatrixPosition: function ( m ) { + + var e = m.elements; + + this.x = e[ 12 ]; + this.y = e[ 13 ]; + this.z = e[ 14 ]; + + return this; + + }, + + setFromMatrixScale: function ( m ) { + + var sx = this.setFromMatrixColumn( m, 0 ).length(); + var sy = this.setFromMatrixColumn( m, 1 ).length(); + var sz = this.setFromMatrixColumn( m, 2 ).length(); + + this.x = sx; + this.y = sy; + this.z = sz; + + return this; + + }, + + setFromMatrixColumn: function ( m, index ) { + + return this.fromArray( m.elements, index * 4 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) { offset = 0; } + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) { array = []; } + if ( offset === undefined ) { offset = 0; } + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + * @author tschw + */ + + var _vector$1 = new Vector3(); + + function Matrix3() { + + this.elements = [ + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ]; + + if ( arguments.length > 0 ) { + + console.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' ); + + } + + } + + Object.assign( Matrix3.prototype, { + + isMatrix3: true, + + set: function ( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) { + + var te = this.elements; + + te[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31; + te[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32; + te[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33; + + return this; + + }, + + identity: function () { + + this.set( + + 1, 0, 0, + 0, 1, 0, + 0, 0, 1 + + ); + + return this; + + }, + + clone: function () { + + return new this.constructor().fromArray( this.elements ); + + }, + + copy: function ( m ) { + + var te = this.elements; + var me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; + te[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; + te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ]; + + return this; + + }, + + setFromMatrix4: function ( m ) { + + var me = m.elements; + + this.set( + + me[ 0 ], me[ 4 ], me[ 8 ], + me[ 1 ], me[ 5 ], me[ 9 ], + me[ 2 ], me[ 6 ], me[ 10 ] + + ); + + return this; + + }, + + applyToBufferAttribute: function ( attribute ) { + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + _vector$1.x = attribute.getX( i ); + _vector$1.y = attribute.getY( i ); + _vector$1.z = attribute.getZ( i ); + + _vector$1.applyMatrix3( this ); + + attribute.setXYZ( i, _vector$1.x, _vector$1.y, _vector$1.z ); + + } + + return attribute; + + }, + + multiply: function ( m ) { + + return this.multiplyMatrices( this, m ); + + }, + + premultiply: function ( m ) { + + return this.multiplyMatrices( m, this ); + + }, + + multiplyMatrices: function ( a, b ) { + + var ae = a.elements; + var be = b.elements; + var te = this.elements; + + var a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ]; + var a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ]; + var a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ]; + + var b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ]; + var b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ]; + var b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31; + te[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32; + te[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31; + te[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32; + te[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31; + te[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32; + te[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33; + + return this; + + }, + + multiplyScalar: function ( s ) { + + var te = this.elements; + + te[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s; + te[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s; + te[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s; + + return this; + + }, + + determinant: function () { + + var te = this.elements; + + var a = te[ 0 ], b = te[ 1 ], c = te[ 2 ], + d = te[ 3 ], e = te[ 4 ], f = te[ 5 ], + g = te[ 6 ], h = te[ 7 ], i = te[ 8 ]; + + return a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g; + + }, + + getInverse: function ( matrix, throwOnDegenerate ) { + + if ( matrix && matrix.isMatrix4 ) { + + console.error( "THREE.Matrix3: .getInverse() no longer takes a Matrix4 argument." ); + + } + + var me = matrix.elements, + te = this.elements, + + n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], + n12 = me[ 3 ], n22 = me[ 4 ], n32 = me[ 5 ], + n13 = me[ 6 ], n23 = me[ 7 ], n33 = me[ 8 ], + + t11 = n33 * n22 - n32 * n23, + t12 = n32 * n13 - n33 * n12, + t13 = n23 * n12 - n22 * n13, + + det = n11 * t11 + n21 * t12 + n31 * t13; + + if ( det === 0 ) { + + var msg = "THREE.Matrix3: .getInverse() can't invert matrix, determinant is 0"; + + if ( throwOnDegenerate === true ) { + + throw new Error( msg ); + + } else { + + console.warn( msg ); + + } + + return this.identity(); + + } + + var detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv; + te[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv; + + te[ 3 ] = t12 * detInv; + te[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv; + te[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv; + + te[ 6 ] = t13 * detInv; + te[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv; + te[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv; + + return this; + + }, + + transpose: function () { + + var tmp, m = this.elements; + + tmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp; + tmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp; + tmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp; + + return this; + + }, + + getNormalMatrix: function ( matrix4 ) { + + return this.setFromMatrix4( matrix4 ).getInverse( this ).transpose(); + + }, + + transposeIntoArray: function ( r ) { + + var m = this.elements; + + r[ 0 ] = m[ 0 ]; + r[ 1 ] = m[ 3 ]; + r[ 2 ] = m[ 6 ]; + r[ 3 ] = m[ 1 ]; + r[ 4 ] = m[ 4 ]; + r[ 5 ] = m[ 7 ]; + r[ 6 ] = m[ 2 ]; + r[ 7 ] = m[ 5 ]; + r[ 8 ] = m[ 8 ]; + + return this; + + }, + + setUvTransform: function ( tx, ty, sx, sy, rotation, cx, cy ) { + + var c = Math.cos( rotation ); + var s = Math.sin( rotation ); + + this.set( + sx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx, + - sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty, + 0, 0, 1 + ); + + }, + + scale: function ( sx, sy ) { + + var te = this.elements; + + te[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx; + te[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy; + + return this; + + }, + + rotate: function ( theta ) { + + var c = Math.cos( theta ); + var s = Math.sin( theta ); + + var te = this.elements; + + var a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ]; + var a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ]; + + te[ 0 ] = c * a11 + s * a21; + te[ 3 ] = c * a12 + s * a22; + te[ 6 ] = c * a13 + s * a23; + + te[ 1 ] = - s * a11 + c * a21; + te[ 4 ] = - s * a12 + c * a22; + te[ 7 ] = - s * a13 + c * a23; + + return this; + + }, + + translate: function ( tx, ty ) { + + var te = this.elements; + + te[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ]; + te[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ]; + + return this; + + }, + + equals: function ( matrix ) { + + var te = this.elements; + var me = matrix.elements; + + for ( var i = 0; i < 9; i ++ ) { + + if ( te[ i ] !== me[ i ] ) { return false; } + + } + + return true; + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) { offset = 0; } + + for ( var i = 0; i < 9; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) { array = []; } + if ( offset === undefined ) { offset = 0; } + + var te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + + array[ offset + 3 ] = te[ 3 ]; + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + array[ offset + 8 ] = te[ 8 ]; + + return array; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + */ + + var _canvas; + + var ImageUtils = { + + getDataURL: function ( image ) { + + var canvas; + + if ( typeof HTMLCanvasElement == 'undefined' ) { + + return image.src; + + } else if ( image instanceof HTMLCanvasElement ) { + + canvas = image; + + } else { + + if ( _canvas === undefined ) { _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); } + + _canvas.width = image.width; + _canvas.height = image.height; + + var context = _canvas.getContext( '2d' ); + + if ( image instanceof ImageData ) { + + context.putImageData( image, 0, 0 ); + + } else { + + context.drawImage( image, 0, 0, image.width, image.height ); + + } + + canvas = _canvas; + + } + + if ( canvas.width > 2048 || canvas.height > 2048 ) { + + return canvas.toDataURL( 'image/jpeg', 0.6 ); + + } else { + + return canvas.toDataURL( 'image/png' ); + + } + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + */ + + var textureId = 0; + + function Texture( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + + Object.defineProperty( this, 'id', { value: textureId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + + this.image = image !== undefined ? image : Texture.DEFAULT_IMAGE; + this.mipmaps = []; + + this.mapping = mapping !== undefined ? mapping : Texture.DEFAULT_MAPPING; + + this.wrapS = wrapS !== undefined ? wrapS : ClampToEdgeWrapping; + this.wrapT = wrapT !== undefined ? wrapT : ClampToEdgeWrapping; + + this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; + this.minFilter = minFilter !== undefined ? minFilter : LinearMipmapLinearFilter; + + this.anisotropy = anisotropy !== undefined ? anisotropy : 1; + + this.format = format !== undefined ? format : RGBAFormat; + this.type = type !== undefined ? type : UnsignedByteType; + + this.offset = new Vector2( 0, 0 ); + this.repeat = new Vector2( 1, 1 ); + this.center = new Vector2( 0, 0 ); + this.rotation = 0; + + this.matrixAutoUpdate = true; + this.matrix = new Matrix3(); + + this.generateMipmaps = true; + this.premultiplyAlpha = false; + this.flipY = true; + this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml) + + // Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap. + // + // Also changing the encoding after already used by a Material will not automatically make the Material + // update. You need to explicitly call Material.needsUpdate to trigger it to recompile. + this.encoding = encoding !== undefined ? encoding : LinearEncoding; + + this.version = 0; + this.onUpdate = null; + + } + + Texture.DEFAULT_IMAGE = undefined; + Texture.DEFAULT_MAPPING = UVMapping; + + Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Texture, + + isTexture: true, + + updateMatrix: function () { + + this.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.name = source.name; + + this.image = source.image; + this.mipmaps = source.mipmaps.slice( 0 ); + + this.mapping = source.mapping; + + this.wrapS = source.wrapS; + this.wrapT = source.wrapT; + + this.magFilter = source.magFilter; + this.minFilter = source.minFilter; + + this.anisotropy = source.anisotropy; + + this.format = source.format; + this.type = source.type; + + this.offset.copy( source.offset ); + this.repeat.copy( source.repeat ); + this.center.copy( source.center ); + this.rotation = source.rotation; + + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrix.copy( source.matrix ); + + this.generateMipmaps = source.generateMipmaps; + this.premultiplyAlpha = source.premultiplyAlpha; + this.flipY = source.flipY; + this.unpackAlignment = source.unpackAlignment; + this.encoding = source.encoding; + + return this; + + }, + + toJSON: function ( meta ) { + + var isRootObject = ( meta === undefined || typeof meta === 'string' ); + + if ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) { + + return meta.textures[ this.uuid ]; + + } + + var output = { + + metadata: { + version: 4.5, + type: 'Texture', + generator: 'Texture.toJSON' + }, + + uuid: this.uuid, + name: this.name, + + mapping: this.mapping, + + repeat: [ this.repeat.x, this.repeat.y ], + offset: [ this.offset.x, this.offset.y ], + center: [ this.center.x, this.center.y ], + rotation: this.rotation, + + wrap: [ this.wrapS, this.wrapT ], + + format: this.format, + type: this.type, + encoding: this.encoding, + + minFilter: this.minFilter, + magFilter: this.magFilter, + anisotropy: this.anisotropy, + + flipY: this.flipY, + + premultiplyAlpha: this.premultiplyAlpha, + unpackAlignment: this.unpackAlignment + + }; + + if ( this.image !== undefined ) { + + // TODO: Move to THREE.Image + + var image = this.image; + + if ( image.uuid === undefined ) { + + image.uuid = _Math.generateUUID(); // UGH + + } + + if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) { + + var url; + + if ( Array.isArray( image ) ) { + + // process array of images e.g. CubeTexture + + url = []; + + for ( var i = 0, l = image.length; i < l; i ++ ) { + + url.push( ImageUtils.getDataURL( image[ i ] ) ); + + } + + } else { + + // process single image + + url = ImageUtils.getDataURL( image ); + + } + + meta.images[ image.uuid ] = { + uuid: image.uuid, + url: url + }; + + } + + output.image = image.uuid; + + } + + if ( ! isRootObject ) { + + meta.textures[ this.uuid ] = output; + + } + + return output; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + }, + + transformUv: function ( uv ) { + + if ( this.mapping !== UVMapping ) { return uv; } + + uv.applyMatrix3( this.matrix ); + + if ( uv.x < 0 || uv.x > 1 ) { + + switch ( this.wrapS ) { + + case RepeatWrapping: + + uv.x = uv.x - Math.floor( uv.x ); + break; + + case ClampToEdgeWrapping: + + uv.x = uv.x < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) { + + uv.x = Math.ceil( uv.x ) - uv.x; + + } else { + + uv.x = uv.x - Math.floor( uv.x ); + + } + break; + + } + + } + + if ( uv.y < 0 || uv.y > 1 ) { + + switch ( this.wrapT ) { + + case RepeatWrapping: + + uv.y = uv.y - Math.floor( uv.y ); + break; + + case ClampToEdgeWrapping: + + uv.y = uv.y < 0 ? 0 : 1; + break; + + case MirroredRepeatWrapping: + + if ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) { + + uv.y = Math.ceil( uv.y ) - uv.y; + + } else { + + uv.y = uv.y - Math.floor( uv.y ); + + } + break; + + } + + } + + if ( this.flipY ) { + + uv.y = 1 - uv.y; + + } + + return uv; + + } + + } ); + + Object.defineProperty( Texture.prototype, "needsUpdate", { + + set: function ( value ) { + + if ( value === true ) { this.version ++; } + + } + + } ); + + /** + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author philogb / http://blog.thejit.org/ + * @author mikael emtinger / http://gomo.se/ + * @author egraether / http://egraether.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Vector4( x, y, z, w ) { + + this.x = x || 0; + this.y = y || 0; + this.z = z || 0; + this.w = ( w !== undefined ) ? w : 1; + + } + + Object.defineProperties( Vector4.prototype, { + + "width": { + + get: function () { + + return this.z; + + }, + + set: function ( value ) { + + this.z = value; + + } + + }, + + "height": { + + get: function () { + + return this.w; + + }, + + set: function ( value ) { + + this.w = value; + + } + + } + + } ); + + Object.assign( Vector4.prototype, { + + isVector4: true, + + set: function ( x, y, z, w ) { + + this.x = x; + this.y = y; + this.z = z; + this.w = w; + + return this; + + }, + + setScalar: function ( scalar ) { + + this.x = scalar; + this.y = scalar; + this.z = scalar; + this.w = scalar; + + return this; + + }, + + setX: function ( x ) { + + this.x = x; + + return this; + + }, + + setY: function ( y ) { + + this.y = y; + + return this; + + }, + + setZ: function ( z ) { + + this.z = z; + + return this; + + }, + + setW: function ( w ) { + + this.w = w; + + return this; + + }, + + setComponent: function ( index, value ) { + + switch ( index ) { + + case 0: this.x = value; break; + case 1: this.y = value; break; + case 2: this.z = value; break; + case 3: this.w = value; break; + default: throw new Error( 'index is out of range: ' + index ); + + } + + return this; + + }, + + getComponent: function ( index ) { + + switch ( index ) { + + case 0: return this.x; + case 1: return this.y; + case 2: return this.z; + case 3: return this.w; + default: throw new Error( 'index is out of range: ' + index ); + + } + + }, + + clone: function () { + + return new this.constructor( this.x, this.y, this.z, this.w ); + + }, + + copy: function ( v ) { + + this.x = v.x; + this.y = v.y; + this.z = v.z; + this.w = ( v.w !== undefined ) ? v.w : 1; + + return this; + + }, + + add: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' ); + return this.addVectors( v, w ); + + } + + this.x += v.x; + this.y += v.y; + this.z += v.z; + this.w += v.w; + + return this; + + }, + + addScalar: function ( s ) { + + this.x += s; + this.y += s; + this.z += s; + this.w += s; + + return this; + + }, + + addVectors: function ( a, b ) { + + this.x = a.x + b.x; + this.y = a.y + b.y; + this.z = a.z + b.z; + this.w = a.w + b.w; + + return this; + + }, + + addScaledVector: function ( v, s ) { + + this.x += v.x * s; + this.y += v.y * s; + this.z += v.z * s; + this.w += v.w * s; + + return this; + + }, + + sub: function ( v, w ) { + + if ( w !== undefined ) { + + console.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' ); + return this.subVectors( v, w ); + + } + + this.x -= v.x; + this.y -= v.y; + this.z -= v.z; + this.w -= v.w; + + return this; + + }, + + subScalar: function ( s ) { + + this.x -= s; + this.y -= s; + this.z -= s; + this.w -= s; + + return this; + + }, + + subVectors: function ( a, b ) { + + this.x = a.x - b.x; + this.y = a.y - b.y; + this.z = a.z - b.z; + this.w = a.w - b.w; + + return this; + + }, + + multiplyScalar: function ( scalar ) { + + this.x *= scalar; + this.y *= scalar; + this.z *= scalar; + this.w *= scalar; + + return this; + + }, + + applyMatrix4: function ( m ) { + + var x = this.x, y = this.y, z = this.z, w = this.w; + var e = m.elements; + + this.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w; + this.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w; + this.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w; + this.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w; + + return this; + + }, + + divideScalar: function ( scalar ) { + + return this.multiplyScalar( 1 / scalar ); + + }, + + setAxisAngleFromQuaternion: function ( q ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm + + // q is assumed to be normalized + + this.w = 2 * Math.acos( q.w ); + + var s = Math.sqrt( 1 - q.w * q.w ); + + if ( s < 0.0001 ) { + + this.x = 1; + this.y = 0; + this.z = 0; + + } else { + + this.x = q.x / s; + this.y = q.y / s; + this.z = q.z / s; + + } + + return this; + + }, + + setAxisAngleFromRotationMatrix: function ( m ) { + + // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var angle, x, y, z, // variables for result + epsilon = 0.01, // margin to allow for rounding errors + epsilon2 = 0.1, // margin to distinguish between 0 and 180 degrees + + te = m.elements, + + m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ], + m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ], + m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + if ( ( Math.abs( m12 - m21 ) < epsilon ) && + ( Math.abs( m13 - m31 ) < epsilon ) && + ( Math.abs( m23 - m32 ) < epsilon ) ) { + + // singularity found + // first check for identity matrix which must have +1 for all terms + // in leading diagonal and zero in other terms + + if ( ( Math.abs( m12 + m21 ) < epsilon2 ) && + ( Math.abs( m13 + m31 ) < epsilon2 ) && + ( Math.abs( m23 + m32 ) < epsilon2 ) && + ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) { + + // this singularity is identity matrix so angle = 0 + + this.set( 1, 0, 0, 0 ); + + return this; // zero angle, arbitrary axis + + } + + // otherwise this singularity is angle = 180 + + angle = Math.PI; + + var xx = ( m11 + 1 ) / 2; + var yy = ( m22 + 1 ) / 2; + var zz = ( m33 + 1 ) / 2; + var xy = ( m12 + m21 ) / 4; + var xz = ( m13 + m31 ) / 4; + var yz = ( m23 + m32 ) / 4; + + if ( ( xx > yy ) && ( xx > zz ) ) { + + // m11 is the largest diagonal term + + if ( xx < epsilon ) { + + x = 0; + y = 0.707106781; + z = 0.707106781; + + } else { + + x = Math.sqrt( xx ); + y = xy / x; + z = xz / x; + + } + + } else if ( yy > zz ) { + + // m22 is the largest diagonal term + + if ( yy < epsilon ) { + + x = 0.707106781; + y = 0; + z = 0.707106781; + + } else { + + y = Math.sqrt( yy ); + x = xy / y; + z = yz / y; + + } + + } else { + + // m33 is the largest diagonal term so base result on this + + if ( zz < epsilon ) { + + x = 0.707106781; + y = 0.707106781; + z = 0; + + } else { + + z = Math.sqrt( zz ); + x = xz / z; + y = yz / z; + + } + + } + + this.set( x, y, z, angle ); + + return this; // return 180 deg rotation + + } + + // as we have reached here there are no singularities so we can handle normally + + var s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) + + ( m13 - m31 ) * ( m13 - m31 ) + + ( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize + + if ( Math.abs( s ) < 0.001 ) { s = 1; } + + // prevent divide by zero, should not happen if matrix is orthogonal and should be + // caught by singularity test above, but I've left it in just in case + + this.x = ( m32 - m23 ) / s; + this.y = ( m13 - m31 ) / s; + this.z = ( m21 - m12 ) / s; + this.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 ); + + return this; + + }, + + min: function ( v ) { + + this.x = Math.min( this.x, v.x ); + this.y = Math.min( this.y, v.y ); + this.z = Math.min( this.z, v.z ); + this.w = Math.min( this.w, v.w ); + + return this; + + }, + + max: function ( v ) { + + this.x = Math.max( this.x, v.x ); + this.y = Math.max( this.y, v.y ); + this.z = Math.max( this.z, v.z ); + this.w = Math.max( this.w, v.w ); + + return this; + + }, + + clamp: function ( min, max ) { + + // assumes min < max, componentwise + + this.x = Math.max( min.x, Math.min( max.x, this.x ) ); + this.y = Math.max( min.y, Math.min( max.y, this.y ) ); + this.z = Math.max( min.z, Math.min( max.z, this.z ) ); + this.w = Math.max( min.w, Math.min( max.w, this.w ) ); + + return this; + + }, + + clampScalar: function ( minVal, maxVal ) { + + this.x = Math.max( minVal, Math.min( maxVal, this.x ) ); + this.y = Math.max( minVal, Math.min( maxVal, this.y ) ); + this.z = Math.max( minVal, Math.min( maxVal, this.z ) ); + this.w = Math.max( minVal, Math.min( maxVal, this.w ) ); + + return this; + + }, + + clampLength: function ( min, max ) { + + var length = this.length(); + + return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) ); + + }, + + floor: function () { + + this.x = Math.floor( this.x ); + this.y = Math.floor( this.y ); + this.z = Math.floor( this.z ); + this.w = Math.floor( this.w ); + + return this; + + }, + + ceil: function () { + + this.x = Math.ceil( this.x ); + this.y = Math.ceil( this.y ); + this.z = Math.ceil( this.z ); + this.w = Math.ceil( this.w ); + + return this; + + }, + + round: function () { + + this.x = Math.round( this.x ); + this.y = Math.round( this.y ); + this.z = Math.round( this.z ); + this.w = Math.round( this.w ); + + return this; + + }, + + roundToZero: function () { + + this.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x ); + this.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y ); + this.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z ); + this.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w ); + + return this; + + }, + + negate: function () { + + this.x = - this.x; + this.y = - this.y; + this.z = - this.z; + this.w = - this.w; + + return this; + + }, + + dot: function ( v ) { + + return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w; + + }, + + lengthSq: function () { + + return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w; + + }, + + length: function () { + + return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w ); + + }, + + manhattanLength: function () { + + return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w ); + + }, + + normalize: function () { + + return this.divideScalar( this.length() || 1 ); + + }, + + setLength: function ( length ) { + + return this.normalize().multiplyScalar( length ); + + }, + + lerp: function ( v, alpha ) { + + this.x += ( v.x - this.x ) * alpha; + this.y += ( v.y - this.y ) * alpha; + this.z += ( v.z - this.z ) * alpha; + this.w += ( v.w - this.w ) * alpha; + + return this; + + }, + + lerpVectors: function ( v1, v2, alpha ) { + + return this.subVectors( v2, v1 ).multiplyScalar( alpha ).add( v1 ); + + }, + + equals: function ( v ) { + + return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) { offset = 0; } + + this.x = array[ offset ]; + this.y = array[ offset + 1 ]; + this.z = array[ offset + 2 ]; + this.w = array[ offset + 3 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) { array = []; } + if ( offset === undefined ) { offset = 0; } + + array[ offset ] = this.x; + array[ offset + 1 ] = this.y; + array[ offset + 2 ] = this.z; + array[ offset + 3 ] = this.w; + + return array; + + }, + + fromBufferAttribute: function ( attribute, index, offset ) { + + if ( offset !== undefined ) { + + console.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' ); + + } + + this.x = attribute.getX( index ); + this.y = attribute.getY( index ); + this.z = attribute.getZ( index ); + this.w = attribute.getW( index ); + + return this; + + } + + } ); + + /** + * @author szimek / https://github.com/szimek/ + * @author alteredq / http://alteredqualia.com/ + * @author Marius Kintel / https://github.com/kintel + */ + + /* + In options, we can specify: + * Texture parameters for an auto-generated target texture + * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers + */ + function WebGLRenderTarget( width, height, options ) { + + this.width = width; + this.height = height; + + this.scissor = new Vector4( 0, 0, width, height ); + this.scissorTest = false; + + this.viewport = new Vector4( 0, 0, width, height ); + + options = options || {}; + + this.texture = new Texture( undefined, undefined, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding ); + + this.texture.image = {}; + this.texture.image.width = width; + this.texture.image.height = height; + + this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false; + this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter; + + this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true; + this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : true; + this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null; + + } + + WebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: WebGLRenderTarget, + + isWebGLRenderTarget: true, + + setSize: function ( width, height ) { + + if ( this.width !== width || this.height !== height ) { + + this.width = width; + this.height = height; + + this.texture.image.width = width; + this.texture.image.height = height; + + this.dispose(); + + } + + this.viewport.set( 0, 0, width, height ); + this.scissor.set( 0, 0, width, height ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.width = source.width; + this.height = source.height; + + this.viewport.copy( source.viewport ); + + this.texture = source.texture.clone(); + + this.depthBuffer = source.depthBuffer; + this.stencilBuffer = source.stencilBuffer; + this.depthTexture = source.depthTexture; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author Mugen87 / https://github.com/Mugen87 + * @author Matt DesLauriers / @mattdesl + */ + + function WebGLMultisampleRenderTarget( width, height, options ) { + + WebGLRenderTarget.call( this, width, height, options ); + + this.samples = 4; + + } + + WebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), { + + constructor: WebGLMultisampleRenderTarget, + + isWebGLMultisampleRenderTarget: true, + + copy: function ( source ) { + + WebGLRenderTarget.prototype.copy.call( this, source ); + + this.samples = source.samples; + + return this; + + } + + } ); + + var _v1 = new Vector3(); + var _m1 = new Matrix4(); + var _zero = new Vector3( 0, 0, 0 ); + var _one = new Vector3( 1, 1, 1 ); + var _x = new Vector3(); + var _y = new Vector3(); + var _z = new Vector3(); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author philogb / http://blog.thejit.org/ + * @author jordi_ros / http://plattsoft.com + * @author D1plo1d / http://github.com/D1plo1d + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author timknip / http://www.floorplanner.com/ + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + */ + + function Matrix4() { + + this.elements = [ + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ]; + + if ( arguments.length > 0 ) { + + console.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' ); + + } + + } + + Object.assign( Matrix4.prototype, { + + isMatrix4: true, + + set: function ( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) { + + var te = this.elements; + + te[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14; + te[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24; + te[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34; + te[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44; + + return this; + + }, + + identity: function () { + + this.set( + + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + clone: function () { + + return new Matrix4().fromArray( this.elements ); + + }, + + copy: function ( m ) { + + var te = this.elements; + var me = m.elements; + + te[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ]; + te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; + te[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ]; + te[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ]; + + return this; + + }, + + copyPosition: function ( m ) { + + var te = this.elements, me = m.elements; + + te[ 12 ] = me[ 12 ]; + te[ 13 ] = me[ 13 ]; + te[ 14 ] = me[ 14 ]; + + return this; + + }, + + extractBasis: function ( xAxis, yAxis, zAxis ) { + + xAxis.setFromMatrixColumn( this, 0 ); + yAxis.setFromMatrixColumn( this, 1 ); + zAxis.setFromMatrixColumn( this, 2 ); + + return this; + + }, + + makeBasis: function ( xAxis, yAxis, zAxis ) { + + this.set( + xAxis.x, yAxis.x, zAxis.x, 0, + xAxis.y, yAxis.y, zAxis.y, 0, + xAxis.z, yAxis.z, zAxis.z, 0, + 0, 0, 0, 1 + ); + + return this; + + }, + + extractRotation: function ( m ) { + + // this method does not support reflection matrices + + var te = this.elements; + var me = m.elements; + + var scaleX = 1 / _v1.setFromMatrixColumn( m, 0 ).length(); + var scaleY = 1 / _v1.setFromMatrixColumn( m, 1 ).length(); + var scaleZ = 1 / _v1.setFromMatrixColumn( m, 2 ).length(); + + te[ 0 ] = me[ 0 ] * scaleX; + te[ 1 ] = me[ 1 ] * scaleX; + te[ 2 ] = me[ 2 ] * scaleX; + te[ 3 ] = 0; + + te[ 4 ] = me[ 4 ] * scaleY; + te[ 5 ] = me[ 5 ] * scaleY; + te[ 6 ] = me[ 6 ] * scaleY; + te[ 7 ] = 0; + + te[ 8 ] = me[ 8 ] * scaleZ; + te[ 9 ] = me[ 9 ] * scaleZ; + te[ 10 ] = me[ 10 ] * scaleZ; + te[ 11 ] = 0; + + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + }, + + makeRotationFromEuler: function ( euler ) { + + if ( ! ( euler && euler.isEuler ) ) { + + console.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' ); + + } + + var te = this.elements; + + var x = euler.x, y = euler.y, z = euler.z; + var a = Math.cos( x ), b = Math.sin( x ); + var c = Math.cos( y ), d = Math.sin( y ); + var e = Math.cos( z ), f = Math.sin( z ); + + if ( euler.order === 'XYZ' ) { + + var ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = - c * f; + te[ 8 ] = d; + + te[ 1 ] = af + be * d; + te[ 5 ] = ae - bf * d; + te[ 9 ] = - b * c; + + te[ 2 ] = bf - ae * d; + te[ 6 ] = be + af * d; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YXZ' ) { + + var ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce + df * b; + te[ 4 ] = de * b - cf; + te[ 8 ] = a * d; + + te[ 1 ] = a * f; + te[ 5 ] = a * e; + te[ 9 ] = - b; + + te[ 2 ] = cf * b - de; + te[ 6 ] = df + ce * b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZXY' ) { + + var ce = c * e, cf = c * f, de = d * e, df = d * f; + + te[ 0 ] = ce - df * b; + te[ 4 ] = - a * f; + te[ 8 ] = de + cf * b; + + te[ 1 ] = cf + de * b; + te[ 5 ] = a * e; + te[ 9 ] = df - ce * b; + + te[ 2 ] = - a * d; + te[ 6 ] = b; + te[ 10 ] = a * c; + + } else if ( euler.order === 'ZYX' ) { + + var ae = a * e, af = a * f, be = b * e, bf = b * f; + + te[ 0 ] = c * e; + te[ 4 ] = be * d - af; + te[ 8 ] = ae * d + bf; + + te[ 1 ] = c * f; + te[ 5 ] = bf * d + ae; + te[ 9 ] = af * d - be; + + te[ 2 ] = - d; + te[ 6 ] = b * c; + te[ 10 ] = a * c; + + } else if ( euler.order === 'YZX' ) { + + var ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = bd - ac * f; + te[ 8 ] = bc * f + ad; + + te[ 1 ] = f; + te[ 5 ] = a * e; + te[ 9 ] = - b * e; + + te[ 2 ] = - d * e; + te[ 6 ] = ad * f + bc; + te[ 10 ] = ac - bd * f; + + } else if ( euler.order === 'XZY' ) { + + var ac = a * c, ad = a * d, bc = b * c, bd = b * d; + + te[ 0 ] = c * e; + te[ 4 ] = - f; + te[ 8 ] = d * e; + + te[ 1 ] = ac * f + bd; + te[ 5 ] = a * e; + te[ 9 ] = ad * f - bc; + + te[ 2 ] = bc * f - ad; + te[ 6 ] = b * e; + te[ 10 ] = bd * f + ac; + + } + + // bottom row + te[ 3 ] = 0; + te[ 7 ] = 0; + te[ 11 ] = 0; + + // last column + te[ 12 ] = 0; + te[ 13 ] = 0; + te[ 14 ] = 0; + te[ 15 ] = 1; + + return this; + + }, + + makeRotationFromQuaternion: function ( q ) { + + return this.compose( _zero, q, _one ); + + }, + + lookAt: function ( eye, target, up ) { + + var te = this.elements; + + _z.subVectors( eye, target ); + + if ( _z.lengthSq() === 0 ) { + + // eye and target are in the same position + + _z.z = 1; + + } + + _z.normalize(); + _x.crossVectors( up, _z ); + + if ( _x.lengthSq() === 0 ) { + + // up and z are parallel + + if ( Math.abs( up.z ) === 1 ) { + + _z.x += 0.0001; + + } else { + + _z.z += 0.0001; + + } + + _z.normalize(); + _x.crossVectors( up, _z ); + + } + + _x.normalize(); + _y.crossVectors( _z, _x ); + + te[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x; + te[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y; + te[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z; + + return this; + + }, + + multiply: function ( m, n ) { + + if ( n !== undefined ) { + + console.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' ); + return this.multiplyMatrices( m, n ); + + } + + return this.multiplyMatrices( this, m ); + + }, + + premultiply: function ( m ) { + + return this.multiplyMatrices( m, this ); + + }, + + multiplyMatrices: function ( a, b ) { + + var ae = a.elements; + var be = b.elements; + var te = this.elements; + + var a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ]; + var a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ]; + var a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ]; + var a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ]; + + var b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ]; + var b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ]; + var b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ]; + var b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ]; + + te[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41; + te[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42; + te[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43; + te[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44; + + te[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41; + te[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42; + te[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43; + te[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44; + + te[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41; + te[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42; + te[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43; + te[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44; + + te[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41; + te[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42; + te[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43; + te[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44; + + return this; + + }, + + multiplyScalar: function ( s ) { + + var te = this.elements; + + te[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s; + te[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s; + te[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s; + te[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s; + + return this; + + }, + + applyToBufferAttribute: function ( attribute ) { + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + _v1.x = attribute.getX( i ); + _v1.y = attribute.getY( i ); + _v1.z = attribute.getZ( i ); + + _v1.applyMatrix4( this ); + + attribute.setXYZ( i, _v1.x, _v1.y, _v1.z ); + + } + + return attribute; + + }, + + determinant: function () { + + var te = this.elements; + + var n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ]; + var n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ]; + var n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ]; + var n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ]; + + //TODO: make this more efficient + //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm ) + + return ( + n41 * ( + + n14 * n23 * n32 + - n13 * n24 * n32 + - n14 * n22 * n33 + + n12 * n24 * n33 + + n13 * n22 * n34 + - n12 * n23 * n34 + ) + + n42 * ( + + n11 * n23 * n34 + - n11 * n24 * n33 + + n14 * n21 * n33 + - n13 * n21 * n34 + + n13 * n24 * n31 + - n14 * n23 * n31 + ) + + n43 * ( + + n11 * n24 * n32 + - n11 * n22 * n34 + - n14 * n21 * n32 + + n12 * n21 * n34 + + n14 * n22 * n31 + - n12 * n24 * n31 + ) + + n44 * ( + - n13 * n22 * n31 + - n11 * n23 * n32 + + n11 * n22 * n33 + + n13 * n21 * n32 + - n12 * n21 * n33 + + n12 * n23 * n31 + ) + + ); + + }, + + transpose: function () { + + var te = this.elements; + var tmp; + + tmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp; + tmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp; + tmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp; + + tmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp; + tmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp; + tmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp; + + return this; + + }, + + setPosition: function ( x, y, z ) { + + var te = this.elements; + + if ( x.isVector3 ) { + + te[ 12 ] = x.x; + te[ 13 ] = x.y; + te[ 14 ] = x.z; + + } else { + + te[ 12 ] = x; + te[ 13 ] = y; + te[ 14 ] = z; + + } + + return this; + + }, + + getInverse: function ( m, throwOnDegenerate ) { + + // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm + var te = this.elements, + me = m.elements, + + n11 = me[ 0 ], n21 = me[ 1 ], n31 = me[ 2 ], n41 = me[ 3 ], + n12 = me[ 4 ], n22 = me[ 5 ], n32 = me[ 6 ], n42 = me[ 7 ], + n13 = me[ 8 ], n23 = me[ 9 ], n33 = me[ 10 ], n43 = me[ 11 ], + n14 = me[ 12 ], n24 = me[ 13 ], n34 = me[ 14 ], n44 = me[ 15 ], + + t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, + t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, + t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, + t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34; + + var det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14; + + if ( det === 0 ) { + + var msg = "THREE.Matrix4: .getInverse() can't invert matrix, determinant is 0"; + + if ( throwOnDegenerate === true ) { + + throw new Error( msg ); + + } else { + + console.warn( msg ); + + } + + return this.identity(); + + } + + var detInv = 1 / det; + + te[ 0 ] = t11 * detInv; + te[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv; + te[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv; + te[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv; + + te[ 4 ] = t12 * detInv; + te[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv; + te[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv; + te[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv; + + te[ 8 ] = t13 * detInv; + te[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv; + te[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv; + te[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv; + + te[ 12 ] = t14 * detInv; + te[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv; + te[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv; + te[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv; + + return this; + + }, + + scale: function ( v ) { + + var te = this.elements; + var x = v.x, y = v.y, z = v.z; + + te[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z; + te[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z; + te[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z; + te[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z; + + return this; + + }, + + getMaxScaleOnAxis: function () { + + var te = this.elements; + + var scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ]; + var scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ]; + var scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ]; + + return Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) ); + + }, + + makeTranslation: function ( x, y, z ) { + + this.set( + + 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationX: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + 1, 0, 0, 0, + 0, c, - s, 0, + 0, s, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationY: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, 0, s, 0, + 0, 1, 0, 0, + - s, 0, c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationZ: function ( theta ) { + + var c = Math.cos( theta ), s = Math.sin( theta ); + + this.set( + + c, - s, 0, 0, + s, c, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeRotationAxis: function ( axis, angle ) { + + // Based on http://www.gamedev.net/reference/articles/article1199.asp + + var c = Math.cos( angle ); + var s = Math.sin( angle ); + var t = 1 - c; + var x = axis.x, y = axis.y, z = axis.z; + var tx = t * x, ty = t * y; + + this.set( + + tx * x + c, tx * y - s * z, tx * z + s * y, 0, + tx * y + s * z, ty * y + c, ty * z - s * x, 0, + tx * z - s * y, ty * z + s * x, t * z * z + c, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeScale: function ( x, y, z ) { + + this.set( + + x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + makeShear: function ( x, y, z ) { + + this.set( + + 1, y, z, 0, + x, 1, z, 0, + x, y, 1, 0, + 0, 0, 0, 1 + + ); + + return this; + + }, + + compose: function ( position, quaternion, scale ) { + + var te = this.elements; + + var x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w; + var x2 = x + x, y2 = y + y, z2 = z + z; + var xx = x * x2, xy = x * y2, xz = x * z2; + var yy = y * y2, yz = y * z2, zz = z * z2; + var wx = w * x2, wy = w * y2, wz = w * z2; + + var sx = scale.x, sy = scale.y, sz = scale.z; + + te[ 0 ] = ( 1 - ( yy + zz ) ) * sx; + te[ 1 ] = ( xy + wz ) * sx; + te[ 2 ] = ( xz - wy ) * sx; + te[ 3 ] = 0; + + te[ 4 ] = ( xy - wz ) * sy; + te[ 5 ] = ( 1 - ( xx + zz ) ) * sy; + te[ 6 ] = ( yz + wx ) * sy; + te[ 7 ] = 0; + + te[ 8 ] = ( xz + wy ) * sz; + te[ 9 ] = ( yz - wx ) * sz; + te[ 10 ] = ( 1 - ( xx + yy ) ) * sz; + te[ 11 ] = 0; + + te[ 12 ] = position.x; + te[ 13 ] = position.y; + te[ 14 ] = position.z; + te[ 15 ] = 1; + + return this; + + }, + + decompose: function ( position, quaternion, scale ) { + + var te = this.elements; + + var sx = _v1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length(); + var sy = _v1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length(); + var sz = _v1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length(); + + // if determine is negative, we need to invert one scale + var det = this.determinant(); + if ( det < 0 ) { sx = - sx; } + + position.x = te[ 12 ]; + position.y = te[ 13 ]; + position.z = te[ 14 ]; + + // scale the rotation part + _m1.copy( this ); + + var invSX = 1 / sx; + var invSY = 1 / sy; + var invSZ = 1 / sz; + + _m1.elements[ 0 ] *= invSX; + _m1.elements[ 1 ] *= invSX; + _m1.elements[ 2 ] *= invSX; + + _m1.elements[ 4 ] *= invSY; + _m1.elements[ 5 ] *= invSY; + _m1.elements[ 6 ] *= invSY; + + _m1.elements[ 8 ] *= invSZ; + _m1.elements[ 9 ] *= invSZ; + _m1.elements[ 10 ] *= invSZ; + + quaternion.setFromRotationMatrix( _m1 ); + + scale.x = sx; + scale.y = sy; + scale.z = sz; + + return this; + + }, + + makePerspective: function ( left, right, top, bottom, near, far ) { + + if ( far === undefined ) { + + console.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' ); + + } + + var te = this.elements; + var x = 2 * near / ( right - left ); + var y = 2 * near / ( top - bottom ); + + var a = ( right + left ) / ( right - left ); + var b = ( top + bottom ) / ( top - bottom ); + var c = - ( far + near ) / ( far - near ); + var d = - 2 * far * near / ( far - near ); + + te[ 0 ] = x; te[ 4 ] = 0; te[ 8 ] = a; te[ 12 ] = 0; + te[ 1 ] = 0; te[ 5 ] = y; te[ 9 ] = b; te[ 13 ] = 0; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = c; te[ 14 ] = d; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = - 1; te[ 15 ] = 0; + + return this; + + }, + + makeOrthographic: function ( left, right, top, bottom, near, far ) { + + var te = this.elements; + var w = 1.0 / ( right - left ); + var h = 1.0 / ( top - bottom ); + var p = 1.0 / ( far - near ); + + var x = ( right + left ) * w; + var y = ( top + bottom ) * h; + var z = ( far + near ) * p; + + te[ 0 ] = 2 * w; te[ 4 ] = 0; te[ 8 ] = 0; te[ 12 ] = - x; + te[ 1 ] = 0; te[ 5 ] = 2 * h; te[ 9 ] = 0; te[ 13 ] = - y; + te[ 2 ] = 0; te[ 6 ] = 0; te[ 10 ] = - 2 * p; te[ 14 ] = - z; + te[ 3 ] = 0; te[ 7 ] = 0; te[ 11 ] = 0; te[ 15 ] = 1; + + return this; + + }, + + equals: function ( matrix ) { + + var te = this.elements; + var me = matrix.elements; + + for ( var i = 0; i < 16; i ++ ) { + + if ( te[ i ] !== me[ i ] ) { return false; } + + } + + return true; + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) { offset = 0; } + + for ( var i = 0; i < 16; i ++ ) { + + this.elements[ i ] = array[ i + offset ]; + + } + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) { array = []; } + if ( offset === undefined ) { offset = 0; } + + var te = this.elements; + + array[ offset ] = te[ 0 ]; + array[ offset + 1 ] = te[ 1 ]; + array[ offset + 2 ] = te[ 2 ]; + array[ offset + 3 ] = te[ 3 ]; + + array[ offset + 4 ] = te[ 4 ]; + array[ offset + 5 ] = te[ 5 ]; + array[ offset + 6 ] = te[ 6 ]; + array[ offset + 7 ] = te[ 7 ]; + + array[ offset + 8 ] = te[ 8 ]; + array[ offset + 9 ] = te[ 9 ]; + array[ offset + 10 ] = te[ 10 ]; + array[ offset + 11 ] = te[ 11 ]; + + array[ offset + 12 ] = te[ 12 ]; + array[ offset + 13 ] = te[ 13 ]; + array[ offset + 14 ] = te[ 14 ]; + array[ offset + 15 ] = te[ 15 ]; + + return array; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + * @author bhouston / http://clara.io + */ + + var _matrix = new Matrix4(); + var _quaternion$1 = new Quaternion(); + + function Euler( x, y, z, order ) { + + this._x = x || 0; + this._y = y || 0; + this._z = z || 0; + this._order = order || Euler.DefaultOrder; + + } + + Euler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ]; + + Euler.DefaultOrder = 'XYZ'; + + Object.defineProperties( Euler.prototype, { + + x: { + + get: function () { + + return this._x; + + }, + + set: function ( value ) { + + this._x = value; + this._onChangeCallback(); + + } + + }, + + y: { + + get: function () { + + return this._y; + + }, + + set: function ( value ) { + + this._y = value; + this._onChangeCallback(); + + } + + }, + + z: { + + get: function () { + + return this._z; + + }, + + set: function ( value ) { + + this._z = value; + this._onChangeCallback(); + + } + + }, + + order: { + + get: function () { + + return this._order; + + }, + + set: function ( value ) { + + this._order = value; + this._onChangeCallback(); + + } + + } + + } ); + + Object.assign( Euler.prototype, { + + isEuler: true, + + set: function ( x, y, z, order ) { + + this._x = x; + this._y = y; + this._z = z; + this._order = order || this._order; + + this._onChangeCallback(); + + return this; + + }, + + clone: function () { + + return new this.constructor( this._x, this._y, this._z, this._order ); + + }, + + copy: function ( euler ) { + + this._x = euler._x; + this._y = euler._y; + this._z = euler._z; + this._order = euler._order; + + this._onChangeCallback(); + + return this; + + }, + + setFromRotationMatrix: function ( m, order, update ) { + + var clamp = _Math.clamp; + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + var te = m.elements; + var m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ]; + var m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ]; + var m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ]; + + order = order || this._order; + + if ( order === 'XYZ' ) { + + this._y = Math.asin( clamp( m13, - 1, 1 ) ); + + if ( Math.abs( m13 ) < 0.9999999 ) { + + this._x = Math.atan2( - m23, m33 ); + this._z = Math.atan2( - m12, m11 ); + + } else { + + this._x = Math.atan2( m32, m22 ); + this._z = 0; + + } + + } else if ( order === 'YXZ' ) { + + this._x = Math.asin( - clamp( m23, - 1, 1 ) ); + + if ( Math.abs( m23 ) < 0.9999999 ) { + + this._y = Math.atan2( m13, m33 ); + this._z = Math.atan2( m21, m22 ); + + } else { + + this._y = Math.atan2( - m31, m11 ); + this._z = 0; + + } + + } else if ( order === 'ZXY' ) { + + this._x = Math.asin( clamp( m32, - 1, 1 ) ); + + if ( Math.abs( m32 ) < 0.9999999 ) { + + this._y = Math.atan2( - m31, m33 ); + this._z = Math.atan2( - m12, m22 ); + + } else { + + this._y = 0; + this._z = Math.atan2( m21, m11 ); + + } + + } else if ( order === 'ZYX' ) { + + this._y = Math.asin( - clamp( m31, - 1, 1 ) ); + + if ( Math.abs( m31 ) < 0.9999999 ) { + + this._x = Math.atan2( m32, m33 ); + this._z = Math.atan2( m21, m11 ); + + } else { + + this._x = 0; + this._z = Math.atan2( - m12, m22 ); + + } + + } else if ( order === 'YZX' ) { + + this._z = Math.asin( clamp( m21, - 1, 1 ) ); + + if ( Math.abs( m21 ) < 0.9999999 ) { + + this._x = Math.atan2( - m23, m22 ); + this._y = Math.atan2( - m31, m11 ); + + } else { + + this._x = 0; + this._y = Math.atan2( m13, m33 ); + + } + + } else if ( order === 'XZY' ) { + + this._z = Math.asin( - clamp( m12, - 1, 1 ) ); + + if ( Math.abs( m12 ) < 0.9999999 ) { + + this._x = Math.atan2( m32, m22 ); + this._y = Math.atan2( m13, m11 ); + + } else { + + this._x = Math.atan2( - m23, m33 ); + this._y = 0; + + } + + } else { + + console.warn( 'THREE.Euler: .setFromRotationMatrix() given unsupported order: ' + order ); + + } + + this._order = order; + + if ( update !== false ) { this._onChangeCallback(); } + + return this; + + }, + + setFromQuaternion: function ( q, order, update ) { + + _matrix.makeRotationFromQuaternion( q ); + + return this.setFromRotationMatrix( _matrix, order, update ); + + }, + + setFromVector3: function ( v, order ) { + + return this.set( v.x, v.y, v.z, order || this._order ); + + }, + + reorder: function ( newOrder ) { + + // WARNING: this discards revolution information -bhouston + + _quaternion$1.setFromEuler( this ); + + return this.setFromQuaternion( _quaternion$1, newOrder ); + + }, + + equals: function ( euler ) { + + return ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order ); + + }, + + fromArray: function ( array ) { + + this._x = array[ 0 ]; + this._y = array[ 1 ]; + this._z = array[ 2 ]; + if ( array[ 3 ] !== undefined ) { this._order = array[ 3 ]; } + + this._onChangeCallback(); + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) { array = []; } + if ( offset === undefined ) { offset = 0; } + + array[ offset ] = this._x; + array[ offset + 1 ] = this._y; + array[ offset + 2 ] = this._z; + array[ offset + 3 ] = this._order; + + return array; + + }, + + toVector3: function ( optionalResult ) { + + if ( optionalResult ) { + + return optionalResult.set( this._x, this._y, this._z ); + + } else { + + return new Vector3( this._x, this._y, this._z ); + + } + + }, + + _onChange: function ( callback ) { + + this._onChangeCallback = callback; + + return this; + + }, + + _onChangeCallback: function () {} + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Layers() { + + this.mask = 1 | 0; + + } + + Object.assign( Layers.prototype, { + + set: function ( channel ) { + + this.mask = 1 << channel | 0; + + }, + + enable: function ( channel ) { + + this.mask |= 1 << channel | 0; + + }, + + enableAll: function () { + + this.mask = 0xffffffff | 0; + + }, + + toggle: function ( channel ) { + + this.mask ^= 1 << channel | 0; + + }, + + disable: function ( channel ) { + + this.mask &= ~ ( 1 << channel | 0 ); + + }, + + disableAll: function () { + + this.mask = 0; + + }, + + test: function ( layers ) { + + return ( this.mask & layers.mask ) !== 0; + + } + + } ); + + var _object3DId = 0; + + var _v1$1 = new Vector3(); + var _q1 = new Quaternion(); + var _m1$1 = new Matrix4(); + var _target = new Vector3(); + + var _position = new Vector3(); + var _scale = new Vector3(); + var _quaternion$2 = new Quaternion(); + + var _xAxis = new Vector3( 1, 0, 0 ); + var _yAxis = new Vector3( 0, 1, 0 ); + var _zAxis = new Vector3( 0, 0, 1 ); + + var _addedEvent = { type: 'added' }; + var _removedEvent = { type: 'removed' }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author WestLangley / http://github.com/WestLangley + * @author elephantatwork / www.elephantatwork.ch + */ + + function Object3D() { + + Object.defineProperty( this, 'id', { value: _object3DId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Object3D'; + + this.parent = null; + this.children = []; + + this.up = Object3D.DefaultUp.clone(); + + var position = new Vector3(); + var rotation = new Euler(); + var quaternion = new Quaternion(); + var scale = new Vector3( 1, 1, 1 ); + + function onRotationChange() { + + quaternion.setFromEuler( rotation, false ); + + } + + function onQuaternionChange() { + + rotation.setFromQuaternion( quaternion, undefined, false ); + + } + + rotation._onChange( onRotationChange ); + quaternion._onChange( onQuaternionChange ); + + Object.defineProperties( this, { + position: { + configurable: true, + enumerable: true, + value: position + }, + rotation: { + configurable: true, + enumerable: true, + value: rotation + }, + quaternion: { + configurable: true, + enumerable: true, + value: quaternion + }, + scale: { + configurable: true, + enumerable: true, + value: scale + }, + modelViewMatrix: { + value: new Matrix4() + }, + normalMatrix: { + value: new Matrix3() + } + } ); + + this.matrix = new Matrix4(); + this.matrixWorld = new Matrix4(); + + this.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate; + this.matrixWorldNeedsUpdate = false; + + this.layers = new Layers(); + this.visible = true; + + this.castShadow = false; + this.receiveShadow = false; + + this.frustumCulled = true; + this.renderOrder = 0; + + this.userData = {}; + + } + + Object3D.DefaultUp = new Vector3( 0, 1, 0 ); + Object3D.DefaultMatrixAutoUpdate = true; + + Object3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Object3D, + + isObject3D: true, + + onBeforeRender: function () {}, + onAfterRender: function () {}, + + applyMatrix: function ( matrix ) { + + if ( this.matrixAutoUpdate ) { this.updateMatrix(); } + + this.matrix.premultiply( matrix ); + + this.matrix.decompose( this.position, this.quaternion, this.scale ); + + }, + + applyQuaternion: function ( q ) { + + this.quaternion.premultiply( q ); + + return this; + + }, + + setRotationFromAxisAngle: function ( axis, angle ) { + + // assumes axis is normalized + + this.quaternion.setFromAxisAngle( axis, angle ); + + }, + + setRotationFromEuler: function ( euler ) { + + this.quaternion.setFromEuler( euler, true ); + + }, + + setRotationFromMatrix: function ( m ) { + + // assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + + this.quaternion.setFromRotationMatrix( m ); + + }, + + setRotationFromQuaternion: function ( q ) { + + // assumes q is normalized + + this.quaternion.copy( q ); + + }, + + rotateOnAxis: function ( axis, angle ) { + + // rotate object on axis in object space + // axis is assumed to be normalized + + _q1.setFromAxisAngle( axis, angle ); + + this.quaternion.multiply( _q1 ); + + return this; + + }, + + rotateOnWorldAxis: function ( axis, angle ) { + + // rotate object on axis in world space + // axis is assumed to be normalized + // method assumes no rotated parent + + _q1.setFromAxisAngle( axis, angle ); + + this.quaternion.premultiply( _q1 ); + + return this; + + }, + + rotateX: function ( angle ) { + + return this.rotateOnAxis( _xAxis, angle ); + + }, + + rotateY: function ( angle ) { + + return this.rotateOnAxis( _yAxis, angle ); + + }, + + rotateZ: function ( angle ) { + + return this.rotateOnAxis( _zAxis, angle ); + + }, + + translateOnAxis: function ( axis, distance ) { + + // translate object by distance along axis in object space + // axis is assumed to be normalized + + _v1$1.copy( axis ).applyQuaternion( this.quaternion ); + + this.position.add( _v1$1.multiplyScalar( distance ) ); + + return this; + + }, + + translateX: function ( distance ) { + + return this.translateOnAxis( _xAxis, distance ); + + }, + + translateY: function ( distance ) { + + return this.translateOnAxis( _yAxis, distance ); + + }, + + translateZ: function ( distance ) { + + return this.translateOnAxis( _zAxis, distance ); + + }, + + localToWorld: function ( vector ) { + + return vector.applyMatrix4( this.matrixWorld ); + + }, + + worldToLocal: function ( vector ) { + + return vector.applyMatrix4( _m1$1.getInverse( this.matrixWorld ) ); + + }, + + lookAt: function ( x, y, z ) { + + // This method does not support objects having non-uniformly-scaled parent(s) + + if ( x.isVector3 ) { + + _target.copy( x ); + + } else { + + _target.set( x, y, z ); + + } + + var parent = this.parent; + + this.updateWorldMatrix( true, false ); + + _position.setFromMatrixPosition( this.matrixWorld ); + + if ( this.isCamera || this.isLight ) { + + _m1$1.lookAt( _position, _target, this.up ); + + } else { + + _m1$1.lookAt( _target, _position, this.up ); + + } + + this.quaternion.setFromRotationMatrix( _m1$1 ); + + if ( parent ) { + + _m1$1.extractRotation( parent.matrixWorld ); + _q1.setFromRotationMatrix( _m1$1 ); + this.quaternion.premultiply( _q1.inverse() ); + + } + + }, + + add: function ( object ) { + + if ( arguments.length > 1 ) { + + for ( var i = 0; i < arguments.length; i ++ ) { + + this.add( arguments[ i ] ); + + } + + return this; + + } + + if ( object === this ) { + + console.error( "THREE.Object3D.add: object can't be added as a child of itself.", object ); + return this; + + } + + if ( ( object && object.isObject3D ) ) { + + if ( object.parent !== null ) { + + object.parent.remove( object ); + + } + + object.parent = this; + this.children.push( object ); + + object.dispatchEvent( _addedEvent ); + + } else { + + console.error( "THREE.Object3D.add: object not an instance of THREE.Object3D.", object ); + + } + + return this; + + }, + + remove: function ( object ) { + + if ( arguments.length > 1 ) { + + for ( var i = 0; i < arguments.length; i ++ ) { + + this.remove( arguments[ i ] ); + + } + + return this; + + } + + var index = this.children.indexOf( object ); + + if ( index !== - 1 ) { + + object.parent = null; + this.children.splice( index, 1 ); + + object.dispatchEvent( _removedEvent ); + + } + + return this; + + }, + + attach: function ( object ) { + + // adds object as a child of this, while maintaining the object's world transform + + this.updateWorldMatrix( true, false ); + + _m1$1.getInverse( this.matrixWorld ); + + if ( object.parent !== null ) { + + object.parent.updateWorldMatrix( true, false ); + + _m1$1.multiply( object.parent.matrixWorld ); + + } + + object.applyMatrix( _m1$1 ); + + object.updateWorldMatrix( false, false ); + + this.add( object ); + + return this; + + }, + + getObjectById: function ( id ) { + + return this.getObjectByProperty( 'id', id ); + + }, + + getObjectByName: function ( name ) { + + return this.getObjectByProperty( 'name', name ); + + }, + + getObjectByProperty: function ( name, value ) { + + if ( this[ name ] === value ) { return this; } + + for ( var i = 0, l = this.children.length; i < l; i ++ ) { + + var child = this.children[ i ]; + var object = child.getObjectByProperty( name, value ); + + if ( object !== undefined ) { + + return object; + + } + + } + + return undefined; + + }, + + getWorldPosition: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldPosition() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + return target.setFromMatrixPosition( this.matrixWorld ); + + }, + + getWorldQuaternion: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' ); + target = new Quaternion(); + + } + + this.updateMatrixWorld( true ); + + this.matrixWorld.decompose( _position, target, _scale ); + + return target; + + }, + + getWorldScale: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldScale() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + this.matrixWorld.decompose( _position, _quaternion$2, target ); + + return target; + + }, + + getWorldDirection: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Object3D: .getWorldDirection() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + var e = this.matrixWorld.elements; + + return target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize(); + + }, + + raycast: function () {}, + + traverse: function ( callback ) { + + callback( this ); + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverse( callback ); + + } + + }, + + traverseVisible: function ( callback ) { + + if ( this.visible === false ) { return; } + + callback( this ); + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].traverseVisible( callback ); + + } + + }, + + traverseAncestors: function ( callback ) { + + var parent = this.parent; + + if ( parent !== null ) { + + callback( parent ); + + parent.traverseAncestors( callback ); + + } + + }, + + updateMatrix: function () { + + this.matrix.compose( this.position, this.quaternion, this.scale ); + + this.matrixWorldNeedsUpdate = true; + + }, + + updateMatrixWorld: function ( force ) { + + if ( this.matrixAutoUpdate ) { this.updateMatrix(); } + + if ( this.matrixWorldNeedsUpdate || force ) { + + if ( this.parent === null ) { + + this.matrixWorld.copy( this.matrix ); + + } else { + + this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + + } + + this.matrixWorldNeedsUpdate = false; + + force = true; + + } + + // update children + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateMatrixWorld( force ); + + } + + }, + + updateWorldMatrix: function ( updateParents, updateChildren ) { + + var parent = this.parent; + + if ( updateParents === true && parent !== null ) { + + parent.updateWorldMatrix( true, false ); + + } + + if ( this.matrixAutoUpdate ) { this.updateMatrix(); } + + if ( this.parent === null ) { + + this.matrixWorld.copy( this.matrix ); + + } else { + + this.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix ); + + } + + // update children + + if ( updateChildren === true ) { + + var children = this.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateWorldMatrix( false, true ); + + } + + } + + }, + + toJSON: function ( meta ) { + + // meta is a string when called from JSON.stringify + var isRootObject = ( meta === undefined || typeof meta === 'string' ); + + var output = {}; + + // meta is a hash used to collect geometries, materials. + // not providing it implies that this is the root object + // being serialized. + if ( isRootObject ) { + + // initialize meta obj + meta = { + geometries: {}, + materials: {}, + textures: {}, + images: {}, + shapes: {} + }; + + output.metadata = { + version: 4.5, + type: 'Object', + generator: 'Object3D.toJSON' + }; + + } + + // standard Object3D serialization + + var object = {}; + + object.uuid = this.uuid; + object.type = this.type; + + if ( this.name !== '' ) { object.name = this.name; } + if ( this.castShadow === true ) { object.castShadow = true; } + if ( this.receiveShadow === true ) { object.receiveShadow = true; } + if ( this.visible === false ) { object.visible = false; } + if ( this.frustumCulled === false ) { object.frustumCulled = false; } + if ( this.renderOrder !== 0 ) { object.renderOrder = this.renderOrder; } + if ( JSON.stringify( this.userData ) !== '{}' ) { object.userData = this.userData; } + + object.layers = this.layers.mask; + object.matrix = this.matrix.toArray(); + + if ( this.matrixAutoUpdate === false ) { object.matrixAutoUpdate = false; } + + // object specific properties + + if ( this.isMesh && this.drawMode !== TrianglesDrawMode ) { object.drawMode = this.drawMode; } + + // + + function serialize( library, element ) { + + if ( library[ element.uuid ] === undefined ) { + + library[ element.uuid ] = element.toJSON( meta ); + + } + + return element.uuid; + + } + + if ( this.isMesh || this.isLine || this.isPoints ) { + + object.geometry = serialize( meta.geometries, this.geometry ); + + var parameters = this.geometry.parameters; + + if ( parameters !== undefined && parameters.shapes !== undefined ) { + + var shapes = parameters.shapes; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + serialize( meta.shapes, shape ); + + } + + } else { + + serialize( meta.shapes, shapes ); + + } + + } + + } + + if ( this.material !== undefined ) { + + if ( Array.isArray( this.material ) ) { + + var uuids = []; + + for ( var i = 0, l = this.material.length; i < l; i ++ ) { + + uuids.push( serialize( meta.materials, this.material[ i ] ) ); + + } + + object.material = uuids; + + } else { + + object.material = serialize( meta.materials, this.material ); + + } + + } + + // + + if ( this.children.length > 0 ) { + + object.children = []; + + for ( var i = 0; i < this.children.length; i ++ ) { + + object.children.push( this.children[ i ].toJSON( meta ).object ); + + } + + } + + if ( isRootObject ) { + + var geometries = extractFromCache( meta.geometries ); + var materials = extractFromCache( meta.materials ); + var textures = extractFromCache( meta.textures ); + var images = extractFromCache( meta.images ); + var shapes = extractFromCache( meta.shapes ); + + if ( geometries.length > 0 ) { output.geometries = geometries; } + if ( materials.length > 0 ) { output.materials = materials; } + if ( textures.length > 0 ) { output.textures = textures; } + if ( images.length > 0 ) { output.images = images; } + if ( shapes.length > 0 ) { output.shapes = shapes; } + + } + + output.object = object; + + return output; + + // extract data from the cache hash + // remove metadata on each item + // and return as array + function extractFromCache( cache ) { + + var values = []; + for ( var key in cache ) { + + var data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + return values; + + } + + }, + + clone: function ( recursive ) { + + return new this.constructor().copy( this, recursive ); + + }, + + copy: function ( source, recursive ) { + + if ( recursive === undefined ) { recursive = true; } + + this.name = source.name; + + this.up.copy( source.up ); + + this.position.copy( source.position ); + this.quaternion.copy( source.quaternion ); + this.scale.copy( source.scale ); + + this.matrix.copy( source.matrix ); + this.matrixWorld.copy( source.matrixWorld ); + + this.matrixAutoUpdate = source.matrixAutoUpdate; + this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate; + + this.layers.mask = source.layers.mask; + this.visible = source.visible; + + this.castShadow = source.castShadow; + this.receiveShadow = source.receiveShadow; + + this.frustumCulled = source.frustumCulled; + this.renderOrder = source.renderOrder; + + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + if ( recursive === true ) { + + for ( var i = 0; i < source.children.length; i ++ ) { + + var child = source.children[ i ]; + this.add( child.clone() ); + + } + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Scene() { + + Object3D.call( this ); + + this.type = 'Scene'; + + this.background = null; + this.fog = null; + this.overrideMaterial = null; + + this.autoUpdate = true; // checked by the renderer + + if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) { + + __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef + + } + + } + + Scene.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Scene, + + isScene: true, + + copy: function ( source, recursive ) { + + Object3D.prototype.copy.call( this, source, recursive ); + + if ( source.background !== null ) { this.background = source.background.clone(); } + if ( source.fog !== null ) { this.fog = source.fog.clone(); } + if ( source.overrideMaterial !== null ) { this.overrideMaterial = source.overrideMaterial.clone(); } + + this.autoUpdate = source.autoUpdate; + this.matrixAutoUpdate = source.matrixAutoUpdate; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + if ( this.background !== null ) { data.object.background = this.background.toJSON( meta ); } + if ( this.fog !== null ) { data.object.fog = this.fog.toJSON(); } + + return data; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + var _points = [ + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3(), + new Vector3() + ]; + var _vector$2 = new Vector3(); + + // triangle centered vertices + + var _v0 = new Vector3(); + var _v1$2 = new Vector3(); + var _v2 = new Vector3(); + + // triangle edge vectors + + var _f0 = new Vector3(); + var _f1 = new Vector3(); + var _f2 = new Vector3(); + + var _center = new Vector3(); + var _extents = new Vector3(); + var _triangleNormal = new Vector3(); + var _testAxis = new Vector3(); + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + */ + + function Box3( min, max ) { + + this.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity ); + this.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity ); + + } + + Object.assign( Box3.prototype, { + + isBox3: true, + + set: function ( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + }, + + setFromArray: function ( array ) { + + var minX = + Infinity; + var minY = + Infinity; + var minZ = + Infinity; + + var maxX = - Infinity; + var maxY = - Infinity; + var maxZ = - Infinity; + + for ( var i = 0, l = array.length; i < l; i += 3 ) { + + var x = array[ i ]; + var y = array[ i + 1 ]; + var z = array[ i + 2 ]; + + if ( x < minX ) { minX = x; } + if ( y < minY ) { minY = y; } + if ( z < minZ ) { minZ = z; } + + if ( x > maxX ) { maxX = x; } + if ( y > maxY ) { maxY = y; } + if ( z > maxZ ) { maxZ = z; } + + } + + this.min.set( minX, minY, minZ ); + this.max.set( maxX, maxY, maxZ ); + + return this; + + }, + + setFromBufferAttribute: function ( attribute ) { + + var minX = + Infinity; + var minY = + Infinity; + var minZ = + Infinity; + + var maxX = - Infinity; + var maxY = - Infinity; + var maxZ = - Infinity; + + for ( var i = 0, l = attribute.count; i < l; i ++ ) { + + var x = attribute.getX( i ); + var y = attribute.getY( i ); + var z = attribute.getZ( i ); + + if ( x < minX ) { minX = x; } + if ( y < minY ) { minY = y; } + if ( z < minZ ) { minZ = z; } + + if ( x > maxX ) { maxX = x; } + if ( y > maxY ) { maxY = y; } + if ( z > maxZ ) { maxZ = z; } + + } + + this.min.set( minX, minY, minZ ); + this.max.set( maxX, maxY, maxZ ); + + return this; + + }, + + setFromPoints: function ( points ) { + + this.makeEmpty(); + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + }, + + setFromCenterAndSize: function ( center, size ) { + + var halfSize = _vector$2.copy( size ).multiplyScalar( 0.5 ); + + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + }, + + setFromObject: function ( object ) { + + this.makeEmpty(); + + return this.expandByObject( object ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + }, + + makeEmpty: function () { + + this.min.x = this.min.y = this.min.z = + Infinity; + this.max.x = this.max.y = this.max.z = - Infinity; + + return this; + + }, + + isEmpty: function () { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z ); + + }, + + getCenter: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .getCenter() target is now required' ); + target = new Vector3(); + + } + + return this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + }, + + getSize: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .getSize() target is now required' ); + target = new Vector3(); + + } + + return this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min ); + + }, + + expandByPoint: function ( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + }, + + expandByVector: function ( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + }, + + expandByScalar: function ( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + }, + + expandByObject: function ( object ) { + + var i, l; + + // Computes the world-axis-aligned bounding box of an object (including its children), + // accounting for both the object's, and children's, world transforms + + object.updateWorldMatrix( false, false ); + + var geometry = object.geometry; + + if ( geometry !== undefined ) { + + if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + + for ( i = 0, l = vertices.length; i < l; i ++ ) { + + _vector$2.copy( vertices[ i ] ); + _vector$2.applyMatrix4( object.matrixWorld ); + + this.expandByPoint( _vector$2 ); + + } + + } else if ( geometry.isBufferGeometry ) { + + var attribute = geometry.attributes.position; + + if ( attribute !== undefined ) { + + for ( i = 0, l = attribute.count; i < l; i ++ ) { + + _vector$2.fromBufferAttribute( attribute, i ).applyMatrix4( object.matrixWorld ); + + this.expandByPoint( _vector$2 ); + + } + + } + + } + + } + + // + + var children = object.children; + + for ( i = 0, l = children.length; i < l; i ++ ) { + + this.expandByObject( children[ i ] ); + + } + + return this; + + }, + + containsPoint: function ( point ) { + + return point.x < this.min.x || point.x > this.max.x || + point.y < this.min.y || point.y > this.max.y || + point.z < this.min.z || point.z > this.max.z ? false : true; + + }, + + containsBox: function ( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y && + this.min.z <= box.min.z && box.max.z <= this.max.z; + + }, + + getParameter: function ( point, target ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .getParameter() target is now required' ); + target = new Vector3(); + + } + + return target.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ), + ( point.z - this.min.z ) / ( this.max.z - this.min.z ) + ); + + }, + + intersectsBox: function ( box ) { + + // using 6 splitting planes to rule out intersections. + return box.max.x < this.min.x || box.min.x > this.max.x || + box.max.y < this.min.y || box.min.y > this.max.y || + box.max.z < this.min.z || box.min.z > this.max.z ? false : true; + + }, + + intersectsSphere: function ( sphere ) { + + // Find the point on the AABB closest to the sphere center. + this.clampPoint( sphere.center, _vector$2 ); + + // If that point is inside the sphere, the AABB and sphere intersect. + return _vector$2.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius ); + + }, + + intersectsPlane: function ( plane ) { + + // We compute the minimum and maximum dot product values. If those values + // are on the same side (back or front) of the plane, then there is no intersection. + + var min, max; + + if ( plane.normal.x > 0 ) { + + min = plane.normal.x * this.min.x; + max = plane.normal.x * this.max.x; + + } else { + + min = plane.normal.x * this.max.x; + max = plane.normal.x * this.min.x; + + } + + if ( plane.normal.y > 0 ) { + + min += plane.normal.y * this.min.y; + max += plane.normal.y * this.max.y; + + } else { + + min += plane.normal.y * this.max.y; + max += plane.normal.y * this.min.y; + + } + + if ( plane.normal.z > 0 ) { + + min += plane.normal.z * this.min.z; + max += plane.normal.z * this.max.z; + + } else { + + min += plane.normal.z * this.max.z; + max += plane.normal.z * this.min.z; + + } + + return ( min <= - plane.constant && max >= - plane.constant ); + + }, + + intersectsTriangle: function ( triangle ) { + + if ( this.isEmpty() ) { + + return false; + + } + + // compute box center and extents + this.getCenter( _center ); + _extents.subVectors( this.max, _center ); + + // translate triangle to aabb origin + _v0.subVectors( triangle.a, _center ); + _v1$2.subVectors( triangle.b, _center ); + _v2.subVectors( triangle.c, _center ); + + // compute edge vectors for triangle + _f0.subVectors( _v1$2, _v0 ); + _f1.subVectors( _v2, _v1$2 ); + _f2.subVectors( _v0, _v2 ); + + // test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb + // make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation + // axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned) + var axes = [ + 0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y, + _f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x, + - _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0 + ]; + if ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) { + + return false; + + } + + // test 3 face normals from the aabb + axes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ]; + if ( ! satForAxes( axes, _v0, _v1$2, _v2, _extents ) ) { + + return false; + + } + + // finally testing the face normal of the triangle + // use already existing triangle edge vectors here + _triangleNormal.crossVectors( _f0, _f1 ); + axes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ]; + + return satForAxes( axes, _v0, _v1$2, _v2, _extents ); + + }, + + clampPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box3: .clampPoint() target is now required' ); + target = new Vector3(); + + } + + return target.copy( point ).clamp( this.min, this.max ); + + }, + + distanceToPoint: function ( point ) { + + var clampedPoint = _vector$2.copy( point ).clamp( this.min, this.max ); + + return clampedPoint.sub( point ).length(); + + }, + + getBoundingSphere: function ( target ) { + + if ( target === undefined ) { + + console.error( 'THREE.Box3: .getBoundingSphere() target is now required' ); + //target = new Sphere(); // removed to avoid cyclic dependency + + } + + this.getCenter( target.center ); + + target.radius = this.getSize( _vector$2 ).length() * 0.5; + + return target; + + }, + + intersect: function ( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + // ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values. + if ( this.isEmpty() ) { this.makeEmpty(); } + + return this; + + }, + + union: function ( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + }, + + applyMatrix4: function ( matrix ) { + + // transform of empty box is an empty box. + if ( this.isEmpty() ) { return this; } + + // NOTE: I am using a binary pattern to specify all 2^3 combinations below + _points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000 + _points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001 + _points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010 + _points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011 + _points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100 + _points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101 + _points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110 + _points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111 + + this.setFromPoints( _points ); + + return this; + + }, + + translate: function ( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + }, + + equals: function ( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + + } ); + + function satForAxes( axes, v0, v1, v2, extents ) { + + var i, j; + + for ( i = 0, j = axes.length - 3; i <= j; i += 3 ) { + + _testAxis.fromArray( axes, i ); + // project the aabb onto the seperating axis + var r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z ); + // project all 3 vertices of the triangle onto the seperating axis + var p0 = v0.dot( _testAxis ); + var p1 = v1.dot( _testAxis ); + var p2 = v2.dot( _testAxis ); + // actual test, basically see if either of the most extreme of the triangle points intersects r + if ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) { + + // points of the projected triangle are outside the projected half-length of the aabb + // the axis is seperating and we can exit + return false; + + } + + } + + return true; + + } + + var _box = new Box3(); + + /** + * @author bhouston / http://clara.io + * @author mrdoob / http://mrdoob.com/ + */ + + function Sphere( center, radius ) { + + this.center = ( center !== undefined ) ? center : new Vector3(); + this.radius = ( radius !== undefined ) ? radius : 0; + + } + + Object.assign( Sphere.prototype, { + + set: function ( center, radius ) { + + this.center.copy( center ); + this.radius = radius; + + return this; + + }, + + setFromPoints: function ( points, optionalCenter ) { + + var center = this.center; + + if ( optionalCenter !== undefined ) { + + center.copy( optionalCenter ); + + } else { + + _box.setFromPoints( points ).getCenter( center ); + + } + + var maxRadiusSq = 0; + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) ); + + } + + this.radius = Math.sqrt( maxRadiusSq ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( sphere ) { + + this.center.copy( sphere.center ); + this.radius = sphere.radius; + + return this; + + }, + + empty: function () { + + return ( this.radius <= 0 ); + + }, + + containsPoint: function ( point ) { + + return ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) ); + + }, + + distanceToPoint: function ( point ) { + + return ( point.distanceTo( this.center ) - this.radius ); + + }, + + intersectsSphere: function ( sphere ) { + + var radiusSum = this.radius + sphere.radius; + + return sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsSphere( this ); + + }, + + intersectsPlane: function ( plane ) { + + return Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius; + + }, + + clampPoint: function ( point, target ) { + + var deltaLengthSq = this.center.distanceToSquared( point ); + + if ( target === undefined ) { + + console.warn( 'THREE.Sphere: .clampPoint() target is now required' ); + target = new Vector3(); + + } + + target.copy( point ); + + if ( deltaLengthSq > ( this.radius * this.radius ) ) { + + target.sub( this.center ).normalize(); + target.multiplyScalar( this.radius ).add( this.center ); + + } + + return target; + + }, + + getBoundingBox: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Sphere: .getBoundingBox() target is now required' ); + target = new Box3(); + + } + + target.set( this.center, this.center ); + target.expandByScalar( this.radius ); + + return target; + + }, + + applyMatrix4: function ( matrix ) { + + this.center.applyMatrix4( matrix ); + this.radius = this.radius * matrix.getMaxScaleOnAxis(); + + return this; + + }, + + translate: function ( offset ) { + + this.center.add( offset ); + + return this; + + }, + + equals: function ( sphere ) { + + return sphere.center.equals( this.center ) && ( sphere.radius === this.radius ); + + } + + } ); + + var _vector$3 = new Vector3(); + var _segCenter = new Vector3(); + var _segDir = new Vector3(); + var _diff = new Vector3(); + + var _edge1 = new Vector3(); + var _edge2 = new Vector3(); + var _normal = new Vector3(); + + /** + * @author bhouston / http://clara.io + */ + + function Ray( origin, direction ) { + + this.origin = ( origin !== undefined ) ? origin : new Vector3(); + this.direction = ( direction !== undefined ) ? direction : new Vector3(); + + } + + Object.assign( Ray.prototype, { + + set: function ( origin, direction ) { + + this.origin.copy( origin ); + this.direction.copy( direction ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( ray ) { + + this.origin.copy( ray.origin ); + this.direction.copy( ray.direction ); + + return this; + + }, + + at: function ( t, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Ray: .at() target is now required' ); + target = new Vector3(); + + } + + return target.copy( this.direction ).multiplyScalar( t ).add( this.origin ); + + }, + + lookAt: function ( v ) { + + this.direction.copy( v ).sub( this.origin ).normalize(); + + return this; + + }, + + recast: function ( t ) { + + this.origin.copy( this.at( t, _vector$3 ) ); + + return this; + + }, + + closestPointToPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Ray: .closestPointToPoint() target is now required' ); + target = new Vector3(); + + } + + target.subVectors( point, this.origin ); + + var directionDistance = target.dot( this.direction ); + + if ( directionDistance < 0 ) { + + return target.copy( this.origin ); + + } + + return target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + + }, + + distanceToPoint: function ( point ) { + + return Math.sqrt( this.distanceSqToPoint( point ) ); + + }, + + distanceSqToPoint: function ( point ) { + + var directionDistance = _vector$3.subVectors( point, this.origin ).dot( this.direction ); + + // point behind the ray + + if ( directionDistance < 0 ) { + + return this.origin.distanceToSquared( point ); + + } + + _vector$3.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin ); + + return _vector$3.distanceToSquared( point ); + + }, + + distanceSqToSegment: function ( v0, v1, optionalPointOnRay, optionalPointOnSegment ) { + + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h + // It returns the min distance between the ray and the segment + // defined by v0 and v1 + // It can also set two optional targets : + // - The closest point on the ray + // - The closest point on the segment + + _segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 ); + _segDir.copy( v1 ).sub( v0 ).normalize(); + _diff.copy( this.origin ).sub( _segCenter ); + + var segExtent = v0.distanceTo( v1 ) * 0.5; + var a01 = - this.direction.dot( _segDir ); + var b0 = _diff.dot( this.direction ); + var b1 = - _diff.dot( _segDir ); + var c = _diff.lengthSq(); + var det = Math.abs( 1 - a01 * a01 ); + var s0, s1, sqrDist, extDet; + + if ( det > 0 ) { + + // The ray and segment are not parallel. + + s0 = a01 * b1 - b0; + s1 = a01 * b0 - b1; + extDet = segExtent * det; + + if ( s0 >= 0 ) { + + if ( s1 >= - extDet ) { + + if ( s1 <= extDet ) { + + // region 0 + // Minimum at interior points of ray and segment. + + var invDet = 1 / det; + s0 *= invDet; + s1 *= invDet; + sqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c; + + } else { + + // region 1 + + s1 = segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + // region 5 + + s1 = - segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } else { + + if ( s1 <= - extDet ) { + + // region 4 + + s0 = Math.max( 0, - ( - a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } else if ( s1 <= extDet ) { + + // region 3 + + s0 = 0; + s1 = Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = s1 * ( s1 + 2 * b1 ) + c; + + } else { + + // region 2 + + s0 = Math.max( 0, - ( a01 * segExtent + b0 ) ); + s1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + } + + } else { + + // Ray and segment are parallel. + + s1 = ( a01 > 0 ) ? - segExtent : segExtent; + s0 = Math.max( 0, - ( a01 * s1 + b0 ) ); + sqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c; + + } + + if ( optionalPointOnRay ) { + + optionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin ); + + } + + if ( optionalPointOnSegment ) { + + optionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter ); + + } + + return sqrDist; + + }, + + intersectSphere: function ( sphere, target ) { + + _vector$3.subVectors( sphere.center, this.origin ); + var tca = _vector$3.dot( this.direction ); + var d2 = _vector$3.dot( _vector$3 ) - tca * tca; + var radius2 = sphere.radius * sphere.radius; + + if ( d2 > radius2 ) { return null; } + + var thc = Math.sqrt( radius2 - d2 ); + + // t0 = first intersect point - entrance on front of sphere + var t0 = tca - thc; + + // t1 = second intersect point - exit point on back of sphere + var t1 = tca + thc; + + // test to see if both t0 and t1 are behind the ray - if so, return null + if ( t0 < 0 && t1 < 0 ) { return null; } + + // test to see if t0 is behind the ray: + // if it is, the ray is inside the sphere, so return the second exit point scaled by t1, + // in order to always return an intersect point that is in front of the ray. + if ( t0 < 0 ) { return this.at( t1, target ); } + + // else t0 is in front of the ray, so return the first collision point scaled by t0 + return this.at( t0, target ); + + }, + + intersectsSphere: function ( sphere ) { + + return this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius ); + + }, + + distanceToPlane: function ( plane ) { + + var denominator = plane.normal.dot( this.direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( plane.distanceToPoint( this.origin ) === 0 ) { + + return 0; + + } + + // Null is preferable to undefined since undefined means.... it is undefined + + return null; + + } + + var t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator; + + // Return if the ray never intersects the plane + + return t >= 0 ? t : null; + + }, + + intersectPlane: function ( plane, target ) { + + var t = this.distanceToPlane( plane ); + + if ( t === null ) { + + return null; + + } + + return this.at( t, target ); + + }, + + intersectsPlane: function ( plane ) { + + // check if the ray lies on the plane first + + var distToPoint = plane.distanceToPoint( this.origin ); + + if ( distToPoint === 0 ) { + + return true; + + } + + var denominator = plane.normal.dot( this.direction ); + + if ( denominator * distToPoint < 0 ) { + + return true; + + } + + // ray origin is behind the plane (and is pointing behind it) + + return false; + + }, + + intersectBox: function ( box, target ) { + + var tmin, tmax, tymin, tymax, tzmin, tzmax; + + var invdirx = 1 / this.direction.x, + invdiry = 1 / this.direction.y, + invdirz = 1 / this.direction.z; + + var origin = this.origin; + + if ( invdirx >= 0 ) { + + tmin = ( box.min.x - origin.x ) * invdirx; + tmax = ( box.max.x - origin.x ) * invdirx; + + } else { + + tmin = ( box.max.x - origin.x ) * invdirx; + tmax = ( box.min.x - origin.x ) * invdirx; + + } + + if ( invdiry >= 0 ) { + + tymin = ( box.min.y - origin.y ) * invdiry; + tymax = ( box.max.y - origin.y ) * invdiry; + + } else { + + tymin = ( box.max.y - origin.y ) * invdiry; + tymax = ( box.min.y - origin.y ) * invdiry; + + } + + if ( ( tmin > tymax ) || ( tymin > tmax ) ) { return null; } + + // These lines also handle the case where tmin or tmax is NaN + // (result of 0 * Infinity). x !== x returns true if x is NaN + + if ( tymin > tmin || tmin !== tmin ) { tmin = tymin; } + + if ( tymax < tmax || tmax !== tmax ) { tmax = tymax; } + + if ( invdirz >= 0 ) { + + tzmin = ( box.min.z - origin.z ) * invdirz; + tzmax = ( box.max.z - origin.z ) * invdirz; + + } else { + + tzmin = ( box.max.z - origin.z ) * invdirz; + tzmax = ( box.min.z - origin.z ) * invdirz; + + } + + if ( ( tmin > tzmax ) || ( tzmin > tmax ) ) { return null; } + + if ( tzmin > tmin || tmin !== tmin ) { tmin = tzmin; } + + if ( tzmax < tmax || tmax !== tmax ) { tmax = tzmax; } + + //return point closest to the ray (positive side) + + if ( tmax < 0 ) { return null; } + + return this.at( tmin >= 0 ? tmin : tmax, target ); + + }, + + intersectsBox: function ( box ) { + + return this.intersectBox( box, _vector$3 ) !== null; + + }, + + intersectTriangle: function ( a, b, c, backfaceCulling, target ) { + + // Compute the offset origin, edges, and normal. + + // from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h + + _edge1.subVectors( b, a ); + _edge2.subVectors( c, a ); + _normal.crossVectors( _edge1, _edge2 ); + + // Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction, + // E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by + // |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2)) + // |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q)) + // |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N) + var DdN = this.direction.dot( _normal ); + var sign; + + if ( DdN > 0 ) { + + if ( backfaceCulling ) { return null; } + sign = 1; + + } else if ( DdN < 0 ) { + + sign = - 1; + DdN = - DdN; + + } else { + + return null; + + } + + _diff.subVectors( this.origin, a ); + var DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) ); + + // b1 < 0, no intersection + if ( DdQxE2 < 0 ) { + + return null; + + } + + var DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) ); + + // b2 < 0, no intersection + if ( DdE1xQ < 0 ) { + + return null; + + } + + // b1+b2 > 1, no intersection + if ( DdQxE2 + DdE1xQ > DdN ) { + + return null; + + } + + // Line intersects triangle, check if ray does. + var QdN = - sign * _diff.dot( _normal ); + + // t < 0, no intersection + if ( QdN < 0 ) { + + return null; + + } + + // Ray intersects triangle. + return this.at( QdN / DdN, target ); + + }, + + applyMatrix4: function ( matrix4 ) { + + this.origin.applyMatrix4( matrix4 ); + this.direction.transformDirection( matrix4 ); + + return this; + + }, + + equals: function ( ray ) { + + return ray.origin.equals( this.origin ) && ray.direction.equals( this.direction ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author mrdoob / http://mrdoob.com/ + */ + + var _v0$1 = new Vector3(); + var _v1$3 = new Vector3(); + var _v2$1 = new Vector3(); + var _v3 = new Vector3(); + + var _vab = new Vector3(); + var _vac = new Vector3(); + var _vbc = new Vector3(); + var _vap = new Vector3(); + var _vbp = new Vector3(); + var _vcp = new Vector3(); + + function Triangle( a, b, c ) { + + this.a = ( a !== undefined ) ? a : new Vector3(); + this.b = ( b !== undefined ) ? b : new Vector3(); + this.c = ( c !== undefined ) ? c : new Vector3(); + + } + + Object.assign( Triangle, { + + getNormal: function ( a, b, c, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getNormal() target is now required' ); + target = new Vector3(); + + } + + target.subVectors( c, b ); + _v0$1.subVectors( a, b ); + target.cross( _v0$1 ); + + var targetLengthSq = target.lengthSq(); + if ( targetLengthSq > 0 ) { + + return target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) ); + + } + + return target.set( 0, 0, 0 ); + + }, + + // static/instance method to calculate barycentric coordinates + // based on: http://www.blackpawn.com/texts/pointinpoly/default.html + getBarycoord: function ( point, a, b, c, target ) { + + _v0$1.subVectors( c, a ); + _v1$3.subVectors( b, a ); + _v2$1.subVectors( point, a ); + + var dot00 = _v0$1.dot( _v0$1 ); + var dot01 = _v0$1.dot( _v1$3 ); + var dot02 = _v0$1.dot( _v2$1 ); + var dot11 = _v1$3.dot( _v1$3 ); + var dot12 = _v1$3.dot( _v2$1 ); + + var denom = ( dot00 * dot11 - dot01 * dot01 ); + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getBarycoord() target is now required' ); + target = new Vector3(); + + } + + // collinear or singular triangle + if ( denom === 0 ) { + + // arbitrary location outside of triangle? + // not sure if this is the best idea, maybe should be returning undefined + return target.set( - 2, - 1, - 1 ); + + } + + var invDenom = 1 / denom; + var u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom; + var v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom; + + // barycentric coordinates must always sum to 1 + return target.set( 1 - u - v, v, u ); + + }, + + containsPoint: function ( point, a, b, c ) { + + Triangle.getBarycoord( point, a, b, c, _v3 ); + + return ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 ); + + }, + + getUV: function ( point, p1, p2, p3, uv1, uv2, uv3, target ) { + + this.getBarycoord( point, p1, p2, p3, _v3 ); + + target.set( 0, 0 ); + target.addScaledVector( uv1, _v3.x ); + target.addScaledVector( uv2, _v3.y ); + target.addScaledVector( uv3, _v3.z ); + + return target; + + }, + + isFrontFacing: function ( a, b, c, direction ) { + + _v0$1.subVectors( c, b ); + _v1$3.subVectors( a, b ); + + // strictly front facing + return ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false; + + } + + } ); + + Object.assign( Triangle.prototype, { + + set: function ( a, b, c ) { + + this.a.copy( a ); + this.b.copy( b ); + this.c.copy( c ); + + return this; + + }, + + setFromPointsAndIndices: function ( points, i0, i1, i2 ) { + + this.a.copy( points[ i0 ] ); + this.b.copy( points[ i1 ] ); + this.c.copy( points[ i2 ] ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( triangle ) { + + this.a.copy( triangle.a ); + this.b.copy( triangle.b ); + this.c.copy( triangle.c ); + + return this; + + }, + + getArea: function () { + + _v0$1.subVectors( this.c, this.b ); + _v1$3.subVectors( this.a, this.b ); + + return _v0$1.cross( _v1$3 ).length() * 0.5; + + }, + + getMidpoint: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getMidpoint() target is now required' ); + target = new Vector3(); + + } + + return target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 ); + + }, + + getNormal: function ( target ) { + + return Triangle.getNormal( this.a, this.b, this.c, target ); + + }, + + getPlane: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .getPlane() target is now required' ); + target = new Vector3(); + + } + + return target.setFromCoplanarPoints( this.a, this.b, this.c ); + + }, + + getBarycoord: function ( point, target ) { + + return Triangle.getBarycoord( point, this.a, this.b, this.c, target ); + + }, + + getUV: function ( point, uv1, uv2, uv3, target ) { + + return Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target ); + + }, + + containsPoint: function ( point ) { + + return Triangle.containsPoint( point, this.a, this.b, this.c ); + + }, + + isFrontFacing: function ( direction ) { + + return Triangle.isFrontFacing( this.a, this.b, this.c, direction ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsTriangle( this ); + + }, + + closestPointToPoint: function ( p, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' ); + target = new Vector3(); + + } + + var a = this.a, b = this.b, c = this.c; + var v, w; + + // algorithm thanks to Real-Time Collision Detection by Christer Ericson, + // published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc., + // under the accompanying license; see chapter 5.1.5 for detailed explanation. + // basically, we're distinguishing which of the voronoi regions of the triangle + // the point lies in with the minimum amount of redundant computation. + + _vab.subVectors( b, a ); + _vac.subVectors( c, a ); + _vap.subVectors( p, a ); + var d1 = _vab.dot( _vap ); + var d2 = _vac.dot( _vap ); + if ( d1 <= 0 && d2 <= 0 ) { + + // vertex region of A; barycentric coords (1, 0, 0) + return target.copy( a ); + + } + + _vbp.subVectors( p, b ); + var d3 = _vab.dot( _vbp ); + var d4 = _vac.dot( _vbp ); + if ( d3 >= 0 && d4 <= d3 ) { + + // vertex region of B; barycentric coords (0, 1, 0) + return target.copy( b ); + + } + + var vc = d1 * d4 - d3 * d2; + if ( vc <= 0 && d1 >= 0 && d3 <= 0 ) { + + v = d1 / ( d1 - d3 ); + // edge region of AB; barycentric coords (1-v, v, 0) + return target.copy( a ).addScaledVector( _vab, v ); + + } + + _vcp.subVectors( p, c ); + var d5 = _vab.dot( _vcp ); + var d6 = _vac.dot( _vcp ); + if ( d6 >= 0 && d5 <= d6 ) { + + // vertex region of C; barycentric coords (0, 0, 1) + return target.copy( c ); + + } + + var vb = d5 * d2 - d1 * d6; + if ( vb <= 0 && d2 >= 0 && d6 <= 0 ) { + + w = d2 / ( d2 - d6 ); + // edge region of AC; barycentric coords (1-w, 0, w) + return target.copy( a ).addScaledVector( _vac, w ); + + } + + var va = d3 * d6 - d5 * d4; + if ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) { + + _vbc.subVectors( c, b ); + w = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) ); + // edge region of BC; barycentric coords (0, 1-w, w) + return target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC + + } + + // face region + var denom = 1 / ( va + vb + vc ); + // u = va * denom + v = vb * denom; + w = vc * denom; + + return target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w ); + + }, + + equals: function ( triangle ) { + + return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF, + 'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2, + 'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50, + 'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B, + 'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B, + 'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F, + 'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3, + 'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222, + 'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700, + 'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4, + 'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00, + 'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3, + 'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA, + 'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32, + 'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3, + 'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC, + 'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD, + 'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6, + 'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9, + 'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F, + 'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE, + 'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA, + 'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0, + 'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 }; + + var _hslA = { h: 0, s: 0, l: 0 }; + var _hslB = { h: 0, s: 0, l: 0 }; + + function Color( r, g, b ) { + + if ( g === undefined && b === undefined ) { + + // r is THREE.Color, hex or string + return this.set( r ); + + } + + return this.setRGB( r, g, b ); + + } + + function hue2rgb( p, q, t ) { + + if ( t < 0 ) { t += 1; } + if ( t > 1 ) { t -= 1; } + if ( t < 1 / 6 ) { return p + ( q - p ) * 6 * t; } + if ( t < 1 / 2 ) { return q; } + if ( t < 2 / 3 ) { return p + ( q - p ) * 6 * ( 2 / 3 - t ); } + return p; + + } + + function SRGBToLinear( c ) { + + return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 ); + + } + + function LinearToSRGB( c ) { + + return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055; + + } + + Object.assign( Color.prototype, { + + isColor: true, + + r: 1, g: 1, b: 1, + + set: function ( value ) { + + if ( value && value.isColor ) { + + this.copy( value ); + + } else if ( typeof value === 'number' ) { + + this.setHex( value ); + + } else if ( typeof value === 'string' ) { + + this.setStyle( value ); + + } + + return this; + + }, + + setScalar: function ( scalar ) { + + this.r = scalar; + this.g = scalar; + this.b = scalar; + + return this; + + }, + + setHex: function ( hex ) { + + hex = Math.floor( hex ); + + this.r = ( hex >> 16 & 255 ) / 255; + this.g = ( hex >> 8 & 255 ) / 255; + this.b = ( hex & 255 ) / 255; + + return this; + + }, + + setRGB: function ( r, g, b ) { + + this.r = r; + this.g = g; + this.b = b; + + return this; + + }, + + setHSL: function ( h, s, l ) { + + // h,s,l ranges are in 0.0 - 1.0 + h = _Math.euclideanModulo( h, 1 ); + s = _Math.clamp( s, 0, 1 ); + l = _Math.clamp( l, 0, 1 ); + + if ( s === 0 ) { + + this.r = this.g = this.b = l; + + } else { + + var p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s ); + var q = ( 2 * l ) - p; + + this.r = hue2rgb( q, p, h + 1 / 3 ); + this.g = hue2rgb( q, p, h ); + this.b = hue2rgb( q, p, h - 1 / 3 ); + + } + + return this; + + }, + + setStyle: function ( style ) { + + function handleAlpha( string ) { + + if ( string === undefined ) { return; } + + if ( parseFloat( string ) < 1 ) { + + console.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' ); + + } + + } + + + var m; + + if ( m = /^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec( style ) ) { + + // rgb / hsl + + var color; + var name = m[ 1 ]; + var components = m[ 2 ]; + + switch ( name ) { + + case 'rgb': + case 'rgba': + + if ( color = /^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // rgb(255,0,0) rgba(255,0,0,0.5) + this.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255; + this.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255; + this.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255; + + handleAlpha( color[ 5 ] ); + + return this; + + } + + if ( color = /^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // rgb(100%,0%,0%) rgba(100%,0%,0%,0.5) + this.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100; + this.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100; + this.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100; + + handleAlpha( color[ 5 ] ); + + return this; + + } + + break; + + case 'hsl': + case 'hsla': + + if ( color = /^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec( components ) ) { + + // hsl(120,50%,50%) hsla(120,50%,50%,0.5) + var h = parseFloat( color[ 1 ] ) / 360; + var s = parseInt( color[ 2 ], 10 ) / 100; + var l = parseInt( color[ 3 ], 10 ) / 100; + + handleAlpha( color[ 5 ] ); + + return this.setHSL( h, s, l ); + + } + + break; + + } + + } else if ( m = /^\#([A-Fa-f0-9]+)$/.exec( style ) ) { + + // hex color + + var hex = m[ 1 ]; + var size = hex.length; + + if ( size === 3 ) { + + // #ff0 + this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255; + this.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255; + this.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255; + + return this; + + } else if ( size === 6 ) { + + // #ff0000 + this.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255; + this.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255; + this.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255; + + return this; + + } + + } + + if ( style && style.length > 0 ) { + + // color keywords + var hex = _colorKeywords[ style ]; + + if ( hex !== undefined ) { + + // red + this.setHex( hex ); + + } else { + + // unknown color + console.warn( 'THREE.Color: Unknown color ' + style ); + + } + + } + + return this; + + }, + + clone: function () { + + return new this.constructor( this.r, this.g, this.b ); + + }, + + copy: function ( color ) { + + this.r = color.r; + this.g = color.g; + this.b = color.b; + + return this; + + }, + + copyGammaToLinear: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) { gammaFactor = 2.0; } + + this.r = Math.pow( color.r, gammaFactor ); + this.g = Math.pow( color.g, gammaFactor ); + this.b = Math.pow( color.b, gammaFactor ); + + return this; + + }, + + copyLinearToGamma: function ( color, gammaFactor ) { + + if ( gammaFactor === undefined ) { gammaFactor = 2.0; } + + var safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0; + + this.r = Math.pow( color.r, safeInverse ); + this.g = Math.pow( color.g, safeInverse ); + this.b = Math.pow( color.b, safeInverse ); + + return this; + + }, + + convertGammaToLinear: function ( gammaFactor ) { + + this.copyGammaToLinear( this, gammaFactor ); + + return this; + + }, + + convertLinearToGamma: function ( gammaFactor ) { + + this.copyLinearToGamma( this, gammaFactor ); + + return this; + + }, + + copySRGBToLinear: function ( color ) { + + this.r = SRGBToLinear( color.r ); + this.g = SRGBToLinear( color.g ); + this.b = SRGBToLinear( color.b ); + + return this; + + }, + + copyLinearToSRGB: function ( color ) { + + this.r = LinearToSRGB( color.r ); + this.g = LinearToSRGB( color.g ); + this.b = LinearToSRGB( color.b ); + + return this; + + }, + + convertSRGBToLinear: function () { + + this.copySRGBToLinear( this ); + + return this; + + }, + + convertLinearToSRGB: function () { + + this.copyLinearToSRGB( this ); + + return this; + + }, + + getHex: function () { + + return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0; + + }, + + getHexString: function () { + + return ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 ); + + }, + + getHSL: function ( target ) { + + // h,s,l ranges are in 0.0 - 1.0 + + if ( target === undefined ) { + + console.warn( 'THREE.Color: .getHSL() target is now required' ); + target = { h: 0, s: 0, l: 0 }; + + } + + var r = this.r, g = this.g, b = this.b; + + var max = Math.max( r, g, b ); + var min = Math.min( r, g, b ); + + var hue, saturation; + var lightness = ( min + max ) / 2.0; + + if ( min === max ) { + + hue = 0; + saturation = 0; + + } else { + + var delta = max - min; + + saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min ); + + switch ( max ) { + + case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break; + case g: hue = ( b - r ) / delta + 2; break; + case b: hue = ( r - g ) / delta + 4; break; + + } + + hue /= 6; + + } + + target.h = hue; + target.s = saturation; + target.l = lightness; + + return target; + + }, + + getStyle: function () { + + return 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')'; + + }, + + offsetHSL: function ( h, s, l ) { + + this.getHSL( _hslA ); + + _hslA.h += h; _hslA.s += s; _hslA.l += l; + + this.setHSL( _hslA.h, _hslA.s, _hslA.l ); + + return this; + + }, + + add: function ( color ) { + + this.r += color.r; + this.g += color.g; + this.b += color.b; + + return this; + + }, + + addColors: function ( color1, color2 ) { + + this.r = color1.r + color2.r; + this.g = color1.g + color2.g; + this.b = color1.b + color2.b; + + return this; + + }, + + addScalar: function ( s ) { + + this.r += s; + this.g += s; + this.b += s; + + return this; + + }, + + sub: function ( color ) { + + this.r = Math.max( 0, this.r - color.r ); + this.g = Math.max( 0, this.g - color.g ); + this.b = Math.max( 0, this.b - color.b ); + + return this; + + }, + + multiply: function ( color ) { + + this.r *= color.r; + this.g *= color.g; + this.b *= color.b; + + return this; + + }, + + multiplyScalar: function ( s ) { + + this.r *= s; + this.g *= s; + this.b *= s; + + return this; + + }, + + lerp: function ( color, alpha ) { + + this.r += ( color.r - this.r ) * alpha; + this.g += ( color.g - this.g ) * alpha; + this.b += ( color.b - this.b ) * alpha; + + return this; + + }, + + lerpHSL: function ( color, alpha ) { + + this.getHSL( _hslA ); + color.getHSL( _hslB ); + + var h = _Math.lerp( _hslA.h, _hslB.h, alpha ); + var s = _Math.lerp( _hslA.s, _hslB.s, alpha ); + var l = _Math.lerp( _hslA.l, _hslB.l, alpha ); + + this.setHSL( h, s, l ); + + return this; + + }, + + equals: function ( c ) { + + return ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) { offset = 0; } + + this.r = array[ offset ]; + this.g = array[ offset + 1 ]; + this.b = array[ offset + 2 ]; + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) { array = []; } + if ( offset === undefined ) { offset = 0; } + + array[ offset ] = this.r; + array[ offset + 1 ] = this.g; + array[ offset + 2 ] = this.b; + + return array; + + }, + + toJSON: function () { + + return this.getHex(); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Face3( a, b, c, normal, color, materialIndex ) { + + this.a = a; + this.b = b; + this.c = c; + + this.normal = ( normal && normal.isVector3 ) ? normal : new Vector3(); + this.vertexNormals = Array.isArray( normal ) ? normal : []; + + this.color = ( color && color.isColor ) ? color : new Color(); + this.vertexColors = Array.isArray( color ) ? color : []; + + this.materialIndex = materialIndex !== undefined ? materialIndex : 0; + + } + + Object.assign( Face3.prototype, { + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.a = source.a; + this.b = source.b; + this.c = source.c; + + this.normal.copy( source.normal ); + this.color.copy( source.color ); + + this.materialIndex = source.materialIndex; + + for ( var i = 0, il = source.vertexNormals.length; i < il; i ++ ) { + + this.vertexNormals[ i ] = source.vertexNormals[ i ].clone(); + + } + + for ( var i = 0, il = source.vertexColors.length; i < il; i ++ ) { + + this.vertexColors[ i ] = source.vertexColors[ i ].clone(); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + var materialId = 0; + + function Material() { + + Object.defineProperty( this, 'id', { value: materialId ++ } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Material'; + + this.fog = true; + + this.blending = NormalBlending; + this.side = FrontSide; + this.flatShading = false; + this.vertexTangents = false; + this.vertexColors = NoColors; // THREE.NoColors, THREE.VertexColors, THREE.FaceColors + + this.opacity = 1; + this.transparent = false; + + this.blendSrc = SrcAlphaFactor; + this.blendDst = OneMinusSrcAlphaFactor; + this.blendEquation = AddEquation; + this.blendSrcAlpha = null; + this.blendDstAlpha = null; + this.blendEquationAlpha = null; + + this.depthFunc = LessEqualDepth; + this.depthTest = true; + this.depthWrite = true; + + this.stencilWriteMask = 0xff; + this.stencilFunc = AlwaysStencilFunc; + this.stencilRef = 0; + this.stencilFuncMask = 0xff; + this.stencilFail = KeepStencilOp; + this.stencilZFail = KeepStencilOp; + this.stencilZPass = KeepStencilOp; + this.stencilWrite = false; + + this.clippingPlanes = null; + this.clipIntersection = false; + this.clipShadows = false; + + this.shadowSide = null; + + this.colorWrite = true; + + this.precision = null; // override the renderer's default precision for this material + + this.polygonOffset = false; + this.polygonOffsetFactor = 0; + this.polygonOffsetUnits = 0; + + this.dithering = false; + + this.alphaTest = 0; + this.premultipliedAlpha = false; + + this.visible = true; + + this.toneMapped = true; + + this.userData = {}; + + this.needsUpdate = true; + + } + + Material.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Material, + + isMaterial: true, + + onBeforeCompile: function () {}, + + setValues: function ( values ) { + + if ( values === undefined ) { return; } + + for ( var key in values ) { + + var newValue = values[ key ]; + + if ( newValue === undefined ) { + + console.warn( "THREE.Material: '" + key + "' parameter is undefined." ); + continue; + + } + + // for backward compatability if shading is set in the constructor + if ( key === 'shading' ) { + + console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + this.flatShading = ( newValue === FlatShading ) ? true : false; + continue; + + } + + var currentValue = this[ key ]; + + if ( currentValue === undefined ) { + + console.warn( "THREE." + this.type + ": '" + key + "' is not a property of this material." ); + continue; + + } + + if ( currentValue && currentValue.isColor ) { + + currentValue.set( newValue ); + + } else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) { + + currentValue.copy( newValue ); + + } else { + + this[ key ] = newValue; + + } + + } + + }, + + toJSON: function ( meta ) { + + var isRoot = ( meta === undefined || typeof meta === 'string' ); + + if ( isRoot ) { + + meta = { + textures: {}, + images: {} + }; + + } + + var data = { + metadata: { + version: 4.5, + type: 'Material', + generator: 'Material.toJSON' + } + }; + + // standard Material serialization + data.uuid = this.uuid; + data.type = this.type; + + if ( this.name !== '' ) { data.name = this.name; } + + if ( this.color && this.color.isColor ) { data.color = this.color.getHex(); } + + if ( this.roughness !== undefined ) { data.roughness = this.roughness; } + if ( this.metalness !== undefined ) { data.metalness = this.metalness; } + + if ( this.sheen && this.sheen.isColor ) { data.sheen = this.sheen.getHex(); } + if ( this.emissive && this.emissive.isColor ) { data.emissive = this.emissive.getHex(); } + if ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) { data.emissiveIntensity = this.emissiveIntensity; } + + if ( this.specular && this.specular.isColor ) { data.specular = this.specular.getHex(); } + if ( this.shininess !== undefined ) { data.shininess = this.shininess; } + if ( this.clearcoat !== undefined ) { data.clearcoat = this.clearcoat; } + if ( this.clearcoatRoughness !== undefined ) { data.clearcoatRoughness = this.clearcoatRoughness; } + + if ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) { + + data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid; + data.clearcoatNormalScale = this.clearcoatNormalScale.toArray(); + + } + + if ( this.map && this.map.isTexture ) { data.map = this.map.toJSON( meta ).uuid; } + if ( this.matcap && this.matcap.isTexture ) { data.matcap = this.matcap.toJSON( meta ).uuid; } + if ( this.alphaMap && this.alphaMap.isTexture ) { data.alphaMap = this.alphaMap.toJSON( meta ).uuid; } + if ( this.lightMap && this.lightMap.isTexture ) { data.lightMap = this.lightMap.toJSON( meta ).uuid; } + + if ( this.aoMap && this.aoMap.isTexture ) { + + data.aoMap = this.aoMap.toJSON( meta ).uuid; + data.aoMapIntensity = this.aoMapIntensity; + + } + + if ( this.bumpMap && this.bumpMap.isTexture ) { + + data.bumpMap = this.bumpMap.toJSON( meta ).uuid; + data.bumpScale = this.bumpScale; + + } + + if ( this.normalMap && this.normalMap.isTexture ) { + + data.normalMap = this.normalMap.toJSON( meta ).uuid; + data.normalMapType = this.normalMapType; + data.normalScale = this.normalScale.toArray(); + + } + + if ( this.displacementMap && this.displacementMap.isTexture ) { + + data.displacementMap = this.displacementMap.toJSON( meta ).uuid; + data.displacementScale = this.displacementScale; + data.displacementBias = this.displacementBias; + + } + + if ( this.roughnessMap && this.roughnessMap.isTexture ) { data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid; } + if ( this.metalnessMap && this.metalnessMap.isTexture ) { data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid; } + + if ( this.emissiveMap && this.emissiveMap.isTexture ) { data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid; } + if ( this.specularMap && this.specularMap.isTexture ) { data.specularMap = this.specularMap.toJSON( meta ).uuid; } + + if ( this.envMap && this.envMap.isTexture ) { + + data.envMap = this.envMap.toJSON( meta ).uuid; + data.reflectivity = this.reflectivity; // Scale behind envMap + data.refractionRatio = this.refractionRatio; + + if ( this.combine !== undefined ) { data.combine = this.combine; } + if ( this.envMapIntensity !== undefined ) { data.envMapIntensity = this.envMapIntensity; } + + } + + if ( this.gradientMap && this.gradientMap.isTexture ) { + + data.gradientMap = this.gradientMap.toJSON( meta ).uuid; + + } + + if ( this.size !== undefined ) { data.size = this.size; } + if ( this.sizeAttenuation !== undefined ) { data.sizeAttenuation = this.sizeAttenuation; } + + if ( this.blending !== NormalBlending ) { data.blending = this.blending; } + if ( this.flatShading === true ) { data.flatShading = this.flatShading; } + if ( this.side !== FrontSide ) { data.side = this.side; } + if ( this.vertexColors !== NoColors ) { data.vertexColors = this.vertexColors; } + + if ( this.opacity < 1 ) { data.opacity = this.opacity; } + if ( this.transparent === true ) { data.transparent = this.transparent; } + + data.depthFunc = this.depthFunc; + data.depthTest = this.depthTest; + data.depthWrite = this.depthWrite; + + data.stencilWrite = this.stencilWrite; + data.stencilWriteMask = this.stencilWriteMask; + data.stencilFunc = this.stencilFunc; + data.stencilRef = this.stencilRef; + data.stencilFuncMask = this.stencilFuncMask; + data.stencilFail = this.stencilFail; + data.stencilZFail = this.stencilZFail; + data.stencilZPass = this.stencilZPass; + + // rotation (SpriteMaterial) + if ( this.rotation && this.rotation !== 0 ) { data.rotation = this.rotation; } + + if ( this.polygonOffset === true ) { data.polygonOffset = true; } + if ( this.polygonOffsetFactor !== 0 ) { data.polygonOffsetFactor = this.polygonOffsetFactor; } + if ( this.polygonOffsetUnits !== 0 ) { data.polygonOffsetUnits = this.polygonOffsetUnits; } + + if ( this.linewidth && this.linewidth !== 1 ) { data.linewidth = this.linewidth; } + if ( this.dashSize !== undefined ) { data.dashSize = this.dashSize; } + if ( this.gapSize !== undefined ) { data.gapSize = this.gapSize; } + if ( this.scale !== undefined ) { data.scale = this.scale; } + + if ( this.dithering === true ) { data.dithering = true; } + + if ( this.alphaTest > 0 ) { data.alphaTest = this.alphaTest; } + if ( this.premultipliedAlpha === true ) { data.premultipliedAlpha = this.premultipliedAlpha; } + + if ( this.wireframe === true ) { data.wireframe = this.wireframe; } + if ( this.wireframeLinewidth > 1 ) { data.wireframeLinewidth = this.wireframeLinewidth; } + if ( this.wireframeLinecap !== 'round' ) { data.wireframeLinecap = this.wireframeLinecap; } + if ( this.wireframeLinejoin !== 'round' ) { data.wireframeLinejoin = this.wireframeLinejoin; } + + if ( this.morphTargets === true ) { data.morphTargets = true; } + if ( this.morphNormals === true ) { data.morphNormals = true; } + if ( this.skinning === true ) { data.skinning = true; } + + if ( this.visible === false ) { data.visible = false; } + + if ( this.toneMapped === false ) { data.toneMapped = false; } + + if ( JSON.stringify( this.userData ) !== '{}' ) { data.userData = this.userData; } + + // TODO: Copied from Object3D.toJSON + + function extractFromCache( cache ) { + + var values = []; + + for ( var key in cache ) { + + var data = cache[ key ]; + delete data.metadata; + values.push( data ); + + } + + return values; + + } + + if ( isRoot ) { + + var textures = extractFromCache( meta.textures ); + var images = extractFromCache( meta.images ); + + if ( textures.length > 0 ) { data.textures = textures; } + if ( images.length > 0 ) { data.images = images; } + + } + + return data; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.name = source.name; + + this.fog = source.fog; + + this.blending = source.blending; + this.side = source.side; + this.flatShading = source.flatShading; + this.vertexColors = source.vertexColors; + + this.opacity = source.opacity; + this.transparent = source.transparent; + + this.blendSrc = source.blendSrc; + this.blendDst = source.blendDst; + this.blendEquation = source.blendEquation; + this.blendSrcAlpha = source.blendSrcAlpha; + this.blendDstAlpha = source.blendDstAlpha; + this.blendEquationAlpha = source.blendEquationAlpha; + + this.depthFunc = source.depthFunc; + this.depthTest = source.depthTest; + this.depthWrite = source.depthWrite; + + this.stencilWrite = source.stencilWrite; + this.stencilWriteMask = source.stencilWriteMask; + this.stencilFunc = source.stencilFunc; + this.stencilRef = source.stencilRef; + this.stencilFuncMask = source.stencilFuncMask; + this.stencilFail = source.stencilFail; + this.stencilZFail = source.stencilZFail; + this.stencilZPass = source.stencilZPass; + + this.colorWrite = source.colorWrite; + + this.precision = source.precision; + + this.polygonOffset = source.polygonOffset; + this.polygonOffsetFactor = source.polygonOffsetFactor; + this.polygonOffsetUnits = source.polygonOffsetUnits; + + this.dithering = source.dithering; + + this.alphaTest = source.alphaTest; + this.premultipliedAlpha = source.premultipliedAlpha; + + this.visible = source.visible; + + this.toneMapped = source.toneMapped; + + this.userData = JSON.parse( JSON.stringify( source.userData ) ); + + this.clipShadows = source.clipShadows; + this.clipIntersection = source.clipIntersection; + + var srcPlanes = source.clippingPlanes, + dstPlanes = null; + + if ( srcPlanes !== null ) { + + var n = srcPlanes.length; + dstPlanes = new Array( n ); + + for ( var i = 0; i !== n; ++ i ) + { dstPlanes[ i ] = srcPlanes[ i ].clone(); } + + } + + this.clippingPlanes = dstPlanes; + + this.shadowSide = source.shadowSide; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * depthTest: , + * depthWrite: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: + * } + */ + + function MeshBasicMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshBasicMaterial'; + + this.color = new Color( 0xffffff ); // emissive + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + + this.setValues( parameters ); + + } + + MeshBasicMaterial.prototype = Object.create( Material.prototype ); + MeshBasicMaterial.prototype.constructor = MeshBasicMaterial; + + MeshBasicMaterial.prototype.isMeshBasicMaterial = true; + + MeshBasicMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function BufferAttribute( array, itemSize, normalized ) { + + if ( Array.isArray( array ) ) { + + throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' ); + + } + + this.name = ''; + + this.array = array; + this.itemSize = itemSize; + this.count = array !== undefined ? array.length / itemSize : 0; + this.normalized = normalized === true; + + this.dynamic = false; + this.updateRange = { offset: 0, count: - 1 }; + + this.version = 0; + + } + + Object.defineProperty( BufferAttribute.prototype, 'needsUpdate', { + + set: function ( value ) { + + if ( value === true ) { this.version ++; } + + } + + } ); + + Object.assign( BufferAttribute.prototype, { + + isBufferAttribute: true, + + onUploadCallback: function () {}, + + setDynamic: function ( value ) { + + this.dynamic = value; + + return this; + + }, + + copy: function ( source ) { + + this.name = source.name; + this.array = new source.array.constructor( source.array ); + this.itemSize = source.itemSize; + this.count = source.count; + this.normalized = source.normalized; + + this.dynamic = source.dynamic; + + return this; + + }, + + copyAt: function ( index1, attribute, index2 ) { + + index1 *= this.itemSize; + index2 *= attribute.itemSize; + + for ( var i = 0, l = this.itemSize; i < l; i ++ ) { + + this.array[ index1 + i ] = attribute.array[ index2 + i ]; + + } + + return this; + + }, + + copyArray: function ( array ) { + + this.array.set( array ); + + return this; + + }, + + copyColorsArray: function ( colors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = colors.length; i < l; i ++ ) { + + var color = colors[ i ]; + + if ( color === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i ); + color = new Color(); + + } + + array[ offset ++ ] = color.r; + array[ offset ++ ] = color.g; + array[ offset ++ ] = color.b; + + } + + return this; + + }, + + copyVector2sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i ); + vector = new Vector2(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + + } + + return this; + + }, + + copyVector3sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i ); + vector = new Vector3(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + array[ offset ++ ] = vector.z; + + } + + return this; + + }, + + copyVector4sArray: function ( vectors ) { + + var array = this.array, offset = 0; + + for ( var i = 0, l = vectors.length; i < l; i ++ ) { + + var vector = vectors[ i ]; + + if ( vector === undefined ) { + + console.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i ); + vector = new Vector4(); + + } + + array[ offset ++ ] = vector.x; + array[ offset ++ ] = vector.y; + array[ offset ++ ] = vector.z; + array[ offset ++ ] = vector.w; + + } + + return this; + + }, + + set: function ( value, offset ) { + + if ( offset === undefined ) { offset = 0; } + + this.array.set( value, offset ); + + return this; + + }, + + getX: function ( index ) { + + return this.array[ index * this.itemSize ]; + + }, + + setX: function ( index, x ) { + + this.array[ index * this.itemSize ] = x; + + return this; + + }, + + getY: function ( index ) { + + return this.array[ index * this.itemSize + 1 ]; + + }, + + setY: function ( index, y ) { + + this.array[ index * this.itemSize + 1 ] = y; + + return this; + + }, + + getZ: function ( index ) { + + return this.array[ index * this.itemSize + 2 ]; + + }, + + setZ: function ( index, z ) { + + this.array[ index * this.itemSize + 2 ] = z; + + return this; + + }, + + getW: function ( index ) { + + return this.array[ index * this.itemSize + 3 ]; + + }, + + setW: function ( index, w ) { + + this.array[ index * this.itemSize + 3 ] = w; + + return this; + + }, + + setXY: function ( index, x, y ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + + return this; + + }, + + setXYZ: function ( index, x, y, z ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + + return this; + + }, + + setXYZW: function ( index, x, y, z, w ) { + + index *= this.itemSize; + + this.array[ index + 0 ] = x; + this.array[ index + 1 ] = y; + this.array[ index + 2 ] = z; + this.array[ index + 3 ] = w; + + return this; + + }, + + onUpload: function ( callback ) { + + this.onUploadCallback = callback; + + return this; + + }, + + clone: function () { + + return new this.constructor( this.array, this.itemSize ).copy( this ); + + }, + + toJSON: function () { + + return { + itemSize: this.itemSize, + type: this.array.constructor.name, + array: Array.prototype.slice.call( this.array ), + normalized: this.normalized + }; + + } + + } ); + + // + + function Int8BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int8Array( array ), itemSize, normalized ); + + } + + Int8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int8BufferAttribute.prototype.constructor = Int8BufferAttribute; + + + function Uint8BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized ); + + } + + Uint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8BufferAttribute.prototype.constructor = Uint8BufferAttribute; + + + function Uint8ClampedBufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized ); + + } + + Uint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute; + + + function Int16BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int16Array( array ), itemSize, normalized ); + + } + + Int16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int16BufferAttribute.prototype.constructor = Int16BufferAttribute; + + + function Uint16BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized ); + + } + + Uint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint16BufferAttribute.prototype.constructor = Uint16BufferAttribute; + + + function Int32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Int32Array( array ), itemSize, normalized ); + + } + + Int32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Int32BufferAttribute.prototype.constructor = Int32BufferAttribute; + + + function Uint32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized ); + + } + + Uint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Uint32BufferAttribute.prototype.constructor = Uint32BufferAttribute; + + + function Float32BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Float32Array( array ), itemSize, normalized ); + + } + + Float32BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float32BufferAttribute.prototype.constructor = Float32BufferAttribute; + + + function Float64BufferAttribute( array, itemSize, normalized ) { + + BufferAttribute.call( this, new Float64Array( array ), itemSize, normalized ); + + } + + Float64BufferAttribute.prototype = Object.create( BufferAttribute.prototype ); + Float64BufferAttribute.prototype.constructor = Float64BufferAttribute; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function DirectGeometry() { + + this.vertices = []; + this.normals = []; + this.colors = []; + this.uvs = []; + this.uvs2 = []; + + this.groups = []; + + this.morphTargets = {}; + + this.skinWeights = []; + this.skinIndices = []; + + // this.lineDistances = []; + + this.boundingBox = null; + this.boundingSphere = null; + + // update flags + + this.verticesNeedUpdate = false; + this.normalsNeedUpdate = false; + this.colorsNeedUpdate = false; + this.uvsNeedUpdate = false; + this.groupsNeedUpdate = false; + + } + + Object.assign( DirectGeometry.prototype, { + + computeGroups: function ( geometry ) { + + var group; + var groups = []; + var materialIndex = undefined; + + var faces = geometry.faces; + + for ( var i = 0; i < faces.length; i ++ ) { + + var face = faces[ i ]; + + // materials + + if ( face.materialIndex !== materialIndex ) { + + materialIndex = face.materialIndex; + + if ( group !== undefined ) { + + group.count = ( i * 3 ) - group.start; + groups.push( group ); + + } + + group = { + start: i * 3, + materialIndex: materialIndex + }; + + } + + } + + if ( group !== undefined ) { + + group.count = ( i * 3 ) - group.start; + groups.push( group ); + + } + + this.groups = groups; + + }, + + fromGeometry: function ( geometry ) { + + var faces = geometry.faces; + var vertices = geometry.vertices; + var faceVertexUvs = geometry.faceVertexUvs; + + var hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0; + var hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0; + + // morphs + + var morphTargets = geometry.morphTargets; + var morphTargetsLength = morphTargets.length; + + var morphTargetsPosition; + + if ( morphTargetsLength > 0 ) { + + morphTargetsPosition = []; + + for ( var i = 0; i < morphTargetsLength; i ++ ) { + + morphTargetsPosition[ i ] = { + name: morphTargets[ i ].name, + data: [] + }; + + } + + this.morphTargets.position = morphTargetsPosition; + + } + + var morphNormals = geometry.morphNormals; + var morphNormalsLength = morphNormals.length; + + var morphTargetsNormal; + + if ( morphNormalsLength > 0 ) { + + morphTargetsNormal = []; + + for ( var i = 0; i < morphNormalsLength; i ++ ) { + + morphTargetsNormal[ i ] = { + name: morphNormals[ i ].name, + data: [] + }; + + } + + this.morphTargets.normal = morphTargetsNormal; + + } + + // skins + + var skinIndices = geometry.skinIndices; + var skinWeights = geometry.skinWeights; + + var hasSkinIndices = skinIndices.length === vertices.length; + var hasSkinWeights = skinWeights.length === vertices.length; + + // + + if ( vertices.length > 0 && faces.length === 0 ) { + + console.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' ); + + } + + for ( var i = 0; i < faces.length; i ++ ) { + + var face = faces[ i ]; + + this.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] ); + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + this.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] ); + + } else { + + var normal = face.normal; + + this.normals.push( normal, normal, normal ); + + } + + var vertexColors = face.vertexColors; + + if ( vertexColors.length === 3 ) { + + this.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] ); + + } else { + + var color = face.color; + + this.colors.push( color, color, color ); + + } + + if ( hasFaceVertexUv === true ) { + + var vertexUvs = faceVertexUvs[ 0 ][ i ]; + + if ( vertexUvs !== undefined ) { + + this.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + + } else { + + console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i ); + + this.uvs.push( new Vector2(), new Vector2(), new Vector2() ); + + } + + } + + if ( hasFaceVertexUv2 === true ) { + + var vertexUvs = faceVertexUvs[ 1 ][ i ]; + + if ( vertexUvs !== undefined ) { + + this.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] ); + + } else { + + console.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i ); + + this.uvs2.push( new Vector2(), new Vector2(), new Vector2() ); + + } + + } + + // morphs + + for ( var j = 0; j < morphTargetsLength; j ++ ) { + + var morphTarget = morphTargets[ j ].vertices; + + morphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] ); + + } + + for ( var j = 0; j < morphNormalsLength; j ++ ) { + + var morphNormal = morphNormals[ j ].vertexNormals[ i ]; + + morphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c ); + + } + + // skins + + if ( hasSkinIndices ) { + + this.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] ); + + } + + if ( hasSkinWeights ) { + + this.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] ); + + } + + } + + this.computeGroups( geometry ); + + this.verticesNeedUpdate = geometry.verticesNeedUpdate; + this.normalsNeedUpdate = geometry.normalsNeedUpdate; + this.colorsNeedUpdate = geometry.colorsNeedUpdate; + this.uvsNeedUpdate = geometry.uvsNeedUpdate; + this.groupsNeedUpdate = geometry.groupsNeedUpdate; + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function arrayMax( array ) { + + if ( array.length === 0 ) { return - Infinity; } + + var max = array[ 0 ]; + + for ( var i = 1, l = array.length; i < l; ++ i ) { + + if ( array[ i ] > max ) { max = array[ i ]; } + + } + + return max; + + } + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id + + var _m1$2 = new Matrix4(); + var _obj = new Object3D(); + var _offset = new Vector3(); + var _box$1 = new Box3(); + var _boxMorphTargets = new Box3(); + var _vector$4 = new Vector3(); + + function BufferGeometry() { + + Object.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'BufferGeometry'; + + this.index = null; + this.attributes = {}; + + this.morphAttributes = {}; + + this.groups = []; + + this.boundingBox = null; + this.boundingSphere = null; + + this.drawRange = { start: 0, count: Infinity }; + + this.userData = {}; + + } + + BufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: BufferGeometry, + + isBufferGeometry: true, + + getIndex: function () { + + return this.index; + + }, + + setIndex: function ( index ) { + + if ( Array.isArray( index ) ) { + + this.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 ); + + } else { + + this.index = index; + + } + + }, + + addAttribute: function ( name, attribute ) { + + if ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) { + + console.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' ); + + return this.addAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) ); + + } + + if ( name === 'index' ) { + + console.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' ); + this.setIndex( attribute ); + + return this; + + } + + return this.setAttribute( name, attribute ); + + }, + + getAttribute: function ( name ) { + + return this.attributes[ name ]; + + }, + + setAttribute: function ( name, attribute ) { + + this.attributes[ name ] = attribute; + + return this; + + }, + + removeAttribute: function ( name ) { + + delete this.attributes[ name ]; + + return this; + + }, + + addGroup: function ( start, count, materialIndex ) { + + this.groups.push( { + + start: start, + count: count, + materialIndex: materialIndex !== undefined ? materialIndex : 0 + + } ); + + }, + + clearGroups: function () { + + this.groups = []; + + }, + + setDrawRange: function ( start, count ) { + + this.drawRange.start = start; + this.drawRange.count = count; + + }, + + applyMatrix: function ( matrix ) { + + var position = this.attributes.position; + + if ( position !== undefined ) { + + matrix.applyToBufferAttribute( position ); + position.needsUpdate = true; + + } + + var normal = this.attributes.normal; + + if ( normal !== undefined ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + normalMatrix.applyToBufferAttribute( normal ); + normal.needsUpdate = true; + + } + + var tangent = this.attributes.tangent; + + if ( tangent !== undefined ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + // Tangent is vec4, but the '.w' component is a sign value (+1/-1). + normalMatrix.applyToBufferAttribute( tangent ); + tangent.needsUpdate = true; + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + return this; + + }, + + rotateX: function ( angle ) { + + // rotate geometry around world x-axis + + _m1$2.makeRotationX( angle ); + + this.applyMatrix( _m1$2 ); + + return this; + + }, + + rotateY: function ( angle ) { + + // rotate geometry around world y-axis + + _m1$2.makeRotationY( angle ); + + this.applyMatrix( _m1$2 ); + + return this; + + }, + + rotateZ: function ( angle ) { + + // rotate geometry around world z-axis + + _m1$2.makeRotationZ( angle ); + + this.applyMatrix( _m1$2 ); + + return this; + + }, + + translate: function ( x, y, z ) { + + // translate geometry + + _m1$2.makeTranslation( x, y, z ); + + this.applyMatrix( _m1$2 ); + + return this; + + }, + + scale: function ( x, y, z ) { + + // scale geometry + + _m1$2.makeScale( x, y, z ); + + this.applyMatrix( _m1$2 ); + + return this; + + }, + + lookAt: function ( vector ) { + + _obj.lookAt( vector ); + + _obj.updateMatrix(); + + this.applyMatrix( _obj.matrix ); + + return this; + + }, + + center: function () { + + this.computeBoundingBox(); + + this.boundingBox.getCenter( _offset ).negate(); + + this.translate( _offset.x, _offset.y, _offset.z ); + + return this; + + }, + + setFromObject: function ( object ) { + + // console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this ); + + var geometry = object.geometry; + + if ( object.isPoints || object.isLine ) { + + var positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 ); + var colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 ); + + this.addAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) ); + this.addAttribute( 'color', colors.copyColorsArray( geometry.colors ) ); + + if ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) { + + var lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 ); + + this.addAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) ); + + } + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + } else if ( object.isMesh ) { + + if ( geometry && geometry.isGeometry ) { + + this.fromGeometry( geometry ); + + } + + } + + return this; + + }, + + setFromPoints: function ( points ) { + + var position = []; + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + position.push( point.x, point.y, point.z || 0 ); + + } + + this.addAttribute( 'position', new Float32BufferAttribute( position, 3 ) ); + + return this; + + }, + + updateFromObject: function ( object ) { + + var geometry = object.geometry; + + if ( object.isMesh ) { + + var direct = geometry.__directGeometry; + + if ( geometry.elementsNeedUpdate === true ) { + + direct = undefined; + geometry.elementsNeedUpdate = false; + + } + + if ( direct === undefined ) { + + return this.fromGeometry( geometry ); + + } + + direct.verticesNeedUpdate = geometry.verticesNeedUpdate; + direct.normalsNeedUpdate = geometry.normalsNeedUpdate; + direct.colorsNeedUpdate = geometry.colorsNeedUpdate; + direct.uvsNeedUpdate = geometry.uvsNeedUpdate; + direct.groupsNeedUpdate = geometry.groupsNeedUpdate; + + geometry.verticesNeedUpdate = false; + geometry.normalsNeedUpdate = false; + geometry.colorsNeedUpdate = false; + geometry.uvsNeedUpdate = false; + geometry.groupsNeedUpdate = false; + + geometry = direct; + + } + + var attribute; + + if ( geometry.verticesNeedUpdate === true ) { + + attribute = this.attributes.position; + + if ( attribute !== undefined ) { + + attribute.copyVector3sArray( geometry.vertices ); + attribute.needsUpdate = true; + + } + + geometry.verticesNeedUpdate = false; + + } + + if ( geometry.normalsNeedUpdate === true ) { + + attribute = this.attributes.normal; + + if ( attribute !== undefined ) { + + attribute.copyVector3sArray( geometry.normals ); + attribute.needsUpdate = true; + + } + + geometry.normalsNeedUpdate = false; + + } + + if ( geometry.colorsNeedUpdate === true ) { + + attribute = this.attributes.color; + + if ( attribute !== undefined ) { + + attribute.copyColorsArray( geometry.colors ); + attribute.needsUpdate = true; + + } + + geometry.colorsNeedUpdate = false; + + } + + if ( geometry.uvsNeedUpdate ) { + + attribute = this.attributes.uv; + + if ( attribute !== undefined ) { + + attribute.copyVector2sArray( geometry.uvs ); + attribute.needsUpdate = true; + + } + + geometry.uvsNeedUpdate = false; + + } + + if ( geometry.lineDistancesNeedUpdate ) { + + attribute = this.attributes.lineDistance; + + if ( attribute !== undefined ) { + + attribute.copyArray( geometry.lineDistances ); + attribute.needsUpdate = true; + + } + + geometry.lineDistancesNeedUpdate = false; + + } + + if ( geometry.groupsNeedUpdate ) { + + geometry.computeGroups( object.geometry ); + this.groups = geometry.groups; + + geometry.groupsNeedUpdate = false; + + } + + return this; + + }, + + fromGeometry: function ( geometry ) { + + geometry.__directGeometry = new DirectGeometry().fromGeometry( geometry ); + + return this.fromDirectGeometry( geometry.__directGeometry ); + + }, + + fromDirectGeometry: function ( geometry ) { + + var positions = new Float32Array( geometry.vertices.length * 3 ); + this.addAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) ); + + if ( geometry.normals.length > 0 ) { + + var normals = new Float32Array( geometry.normals.length * 3 ); + this.addAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) ); + + } + + if ( geometry.colors.length > 0 ) { + + var colors = new Float32Array( geometry.colors.length * 3 ); + this.addAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) ); + + } + + if ( geometry.uvs.length > 0 ) { + + var uvs = new Float32Array( geometry.uvs.length * 2 ); + this.addAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) ); + + } + + if ( geometry.uvs2.length > 0 ) { + + var uvs2 = new Float32Array( geometry.uvs2.length * 2 ); + this.addAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) ); + + } + + // groups + + this.groups = geometry.groups; + + // morphs + + for ( var name in geometry.morphTargets ) { + + var array = []; + var morphTargets = geometry.morphTargets[ name ]; + + for ( var i = 0, l = morphTargets.length; i < l; i ++ ) { + + var morphTarget = morphTargets[ i ]; + + var attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 ); + attribute.name = morphTarget.name; + + array.push( attribute.copyVector3sArray( morphTarget.data ) ); + + } + + this.morphAttributes[ name ] = array; + + } + + // skinning + + if ( geometry.skinIndices.length > 0 ) { + + var skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 ); + this.addAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) ); + + } + + if ( geometry.skinWeights.length > 0 ) { + + var skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 ); + this.addAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) ); + + } + + // + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + return this; + + }, + + computeBoundingBox: function () { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + var position = this.attributes.position; + var morphAttributesPosition = this.morphAttributes.position; + + if ( position !== undefined ) { + + this.boundingBox.setFromBufferAttribute( position ); + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + var morphAttribute = morphAttributesPosition[ i ]; + _box$1.setFromBufferAttribute( morphAttribute ); + + this.boundingBox.expandByPoint( _box$1.min ); + this.boundingBox.expandByPoint( _box$1.max ); + + } + + } + + } else { + + this.boundingBox.makeEmpty(); + + } + + if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this ); + + } + + }, + + computeBoundingSphere: function () { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + var position = this.attributes.position; + var morphAttributesPosition = this.morphAttributes.position; + + if ( position ) { + + // first, find the center of the bounding sphere + + var center = this.boundingSphere.center; + + _box$1.setFromBufferAttribute( position ); + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + var morphAttribute = morphAttributesPosition[ i ]; + _boxMorphTargets.setFromBufferAttribute( morphAttribute ); + + _box$1.expandByPoint( _boxMorphTargets.min ); + _box$1.expandByPoint( _boxMorphTargets.max ); + + } + + } + + _box$1.getCenter( center ); + + // second, try to find a boundingSphere with a radius smaller than the + // boundingSphere of the boundingBox: sqrt(3) smaller in the best case + + var maxRadiusSq = 0; + + for ( var i = 0, il = position.count; i < il; i ++ ) { + + _vector$4.fromBufferAttribute( position, i ); + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) ); + + } + + // process morph attributes if present + + if ( morphAttributesPosition ) { + + for ( var i = 0, il = morphAttributesPosition.length; i < il; i ++ ) { + + var morphAttribute = morphAttributesPosition[ i ]; + + for ( var j = 0, jl = morphAttribute.count; j < jl; j ++ ) { + + _vector$4.fromBufferAttribute( morphAttribute, j ); + + maxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) ); + + } + + } + + } + + this.boundingSphere.radius = Math.sqrt( maxRadiusSq ); + + if ( isNaN( this.boundingSphere.radius ) ) { + + console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this ); + + } + + } + + }, + + computeFaceNormals: function () { + + // backwards compatibility + + }, + + computeVertexNormals: function () { + + var index = this.index; + var attributes = this.attributes; + + if ( attributes.position ) { + + var positions = attributes.position.array; + + if ( attributes.normal === undefined ) { + + this.addAttribute( 'normal', new BufferAttribute( new Float32Array( positions.length ), 3 ) ); + + } else { + + // reset existing normals to zero + + var array = attributes.normal.array; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + array[ i ] = 0; + + } + + } + + var normals = attributes.normal.array; + + var vA, vB, vC; + var pA = new Vector3(), pB = new Vector3(), pC = new Vector3(); + var cb = new Vector3(), ab = new Vector3(); + + // indexed elements + + if ( index ) { + + var indices = index.array; + + for ( var i = 0, il = index.count; i < il; i += 3 ) { + + vA = indices[ i + 0 ] * 3; + vB = indices[ i + 1 ] * 3; + vC = indices[ i + 2 ] * 3; + + pA.fromArray( positions, vA ); + pB.fromArray( positions, vB ); + pC.fromArray( positions, vC ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + normals[ vA ] += cb.x; + normals[ vA + 1 ] += cb.y; + normals[ vA + 2 ] += cb.z; + + normals[ vB ] += cb.x; + normals[ vB + 1 ] += cb.y; + normals[ vB + 2 ] += cb.z; + + normals[ vC ] += cb.x; + normals[ vC + 1 ] += cb.y; + normals[ vC + 2 ] += cb.z; + + } + + } else { + + // non-indexed elements (unconnected triangle soup) + + for ( var i = 0, il = positions.length; i < il; i += 9 ) { + + pA.fromArray( positions, i ); + pB.fromArray( positions, i + 3 ); + pC.fromArray( positions, i + 6 ); + + cb.subVectors( pC, pB ); + ab.subVectors( pA, pB ); + cb.cross( ab ); + + normals[ i ] = cb.x; + normals[ i + 1 ] = cb.y; + normals[ i + 2 ] = cb.z; + + normals[ i + 3 ] = cb.x; + normals[ i + 4 ] = cb.y; + normals[ i + 5 ] = cb.z; + + normals[ i + 6 ] = cb.x; + normals[ i + 7 ] = cb.y; + normals[ i + 8 ] = cb.z; + + } + + } + + this.normalizeNormals(); + + attributes.normal.needsUpdate = true; + + } + + }, + + merge: function ( geometry, offset ) { + + if ( ! ( geometry && geometry.isBufferGeometry ) ) { + + console.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry ); + return; + + } + + if ( offset === undefined ) { + + offset = 0; + + console.warn( + 'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. ' + + 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.' + ); + + } + + var attributes = this.attributes; + + for ( var key in attributes ) { + + if ( geometry.attributes[ key ] === undefined ) { continue; } + + var attribute1 = attributes[ key ]; + var attributeArray1 = attribute1.array; + + var attribute2 = geometry.attributes[ key ]; + var attributeArray2 = attribute2.array; + + var attributeOffset = attribute2.itemSize * offset; + var length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset ); + + for ( var i = 0, j = attributeOffset; i < length; i ++, j ++ ) { + + attributeArray1[ j ] = attributeArray2[ i ]; + + } + + } + + return this; + + }, + + normalizeNormals: function () { + + var normals = this.attributes.normal; + + for ( var i = 0, il = normals.count; i < il; i ++ ) { + + _vector$4.x = normals.getX( i ); + _vector$4.y = normals.getY( i ); + _vector$4.z = normals.getZ( i ); + + _vector$4.normalize(); + + normals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z ); + + } + + }, + + toNonIndexed: function () { + + function convertBufferAttribute( attribute, indices ) { + + var array = attribute.array; + var itemSize = attribute.itemSize; + + var array2 = new array.constructor( indices.length * itemSize ); + + var index = 0, index2 = 0; + + for ( var i = 0, l = indices.length; i < l; i ++ ) { + + index = indices[ i ] * itemSize; + + for ( var j = 0; j < itemSize; j ++ ) { + + array2[ index2 ++ ] = array[ index ++ ]; + + } + + } + + return new BufferAttribute( array2, itemSize ); + + } + + // + + if ( this.index === null ) { + + console.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' ); + return this; + + } + + var geometry2 = new BufferGeometry(); + + var indices = this.index.array; + var attributes = this.attributes; + + // attributes + + for ( var name in attributes ) { + + var attribute = attributes[ name ]; + + var newAttribute = convertBufferAttribute( attribute, indices ); + + geometry2.addAttribute( name, newAttribute ); + + } + + // morph attributes + + var morphAttributes = this.morphAttributes; + + for ( name in morphAttributes ) { + + var morphArray = []; + var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + + for ( var i = 0, il = morphAttribute.length; i < il; i ++ ) { + + var attribute = morphAttribute[ i ]; + + var newAttribute = convertBufferAttribute( attribute, indices ); + + morphArray.push( newAttribute ); + + } + + geometry2.morphAttributes[ name ] = morphArray; + + } + + // groups + + var groups = this.groups; + + for ( var i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + geometry2.addGroup( group.start, group.count, group.materialIndex ); + + } + + return geometry2; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'BufferGeometry', + generator: 'BufferGeometry.toJSON' + } + }; + + // standard BufferGeometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if ( this.name !== '' ) { data.name = this.name; } + if ( Object.keys( this.userData ).length > 0 ) { data.userData = this.userData; } + + if ( this.parameters !== undefined ) { + + var parameters = this.parameters; + + for ( var key in parameters ) { + + if ( parameters[ key ] !== undefined ) { data[ key ] = parameters[ key ]; } + + } + + return data; + + } + + data.data = { attributes: {} }; + + var index = this.index; + + if ( index !== null ) { + + data.data.index = { + type: index.array.constructor.name, + array: Array.prototype.slice.call( index.array ) + }; + + } + + var attributes = this.attributes; + + for ( var key in attributes ) { + + var attribute = attributes[ key ]; + + var attributeData = attribute.toJSON(); + + if ( attribute.name !== '' ) { attributeData.name = attribute.name; } + + data.data.attributes[ key ] = attributeData; + + } + + var morphAttributes = {}; + var hasMorphAttributes = false; + + for ( var key in this.morphAttributes ) { + + var attributeArray = this.morphAttributes[ key ]; + + var array = []; + + for ( var i = 0, il = attributeArray.length; i < il; i ++ ) { + + var attribute = attributeArray[ i ]; + + var attributeData = attribute.toJSON(); + + if ( attribute.name !== '' ) { attributeData.name = attribute.name; } + + array.push( attributeData ); + + } + + if ( array.length > 0 ) { + + morphAttributes[ key ] = array; + + hasMorphAttributes = true; + + } + + } + + if ( hasMorphAttributes ) { data.data.morphAttributes = morphAttributes; } + + var groups = this.groups; + + if ( groups.length > 0 ) { + + data.data.groups = JSON.parse( JSON.stringify( groups ) ); + + } + + var boundingSphere = this.boundingSphere; + + if ( boundingSphere !== null ) { + + data.data.boundingSphere = { + center: boundingSphere.center.toArray(), + radius: boundingSphere.radius + }; + + } + + return data; + + }, + + clone: function () { + + /* + // Handle primitives + + var parameters = this.parameters; + + if ( parameters !== undefined ) { + + var values = []; + + for ( var key in parameters ) { + + values.push( parameters[ key ] ); + + } + + var geometry = Object.create( this.constructor.prototype ); + this.constructor.apply( geometry, values ); + return geometry; + + } + + return new this.constructor().copy( this ); + */ + + return new BufferGeometry().copy( this ); + + }, + + copy: function ( source ) { + + var name, i, l; + + // reset + + this.index = null; + this.attributes = {}; + this.morphAttributes = {}; + this.groups = []; + this.boundingBox = null; + this.boundingSphere = null; + + // name + + this.name = source.name; + + // index + + var index = source.index; + + if ( index !== null ) { + + this.setIndex( index.clone() ); + + } + + // attributes + + var attributes = source.attributes; + + for ( name in attributes ) { + + var attribute = attributes[ name ]; + this.addAttribute( name, attribute.clone() ); + + } + + // morph attributes + + var morphAttributes = source.morphAttributes; + + for ( name in morphAttributes ) { + + var array = []; + var morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes + + for ( i = 0, l = morphAttribute.length; i < l; i ++ ) { + + array.push( morphAttribute[ i ].clone() ); + + } + + this.morphAttributes[ name ] = array; + + } + + // groups + + var groups = source.groups; + + for ( i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + this.addGroup( group.start, group.count, group.materialIndex ); + + } + + // bounding box + + var boundingBox = source.boundingBox; + + if ( boundingBox !== null ) { + + this.boundingBox = boundingBox.clone(); + + } + + // bounding sphere + + var boundingSphere = source.boundingSphere; + + if ( boundingSphere !== null ) { + + this.boundingSphere = boundingSphere.clone(); + + } + + // draw range + + this.drawRange.start = source.drawRange.start; + this.drawRange.count = source.drawRange.count; + + // user data + + this.userData = source.userData; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author jonobr1 / http://jonobr1.com/ + */ + + var _inverseMatrix = new Matrix4(); + var _ray = new Ray(); + var _sphere = new Sphere(); + + var _vA = new Vector3(); + var _vB = new Vector3(); + var _vC = new Vector3(); + + var _tempA = new Vector3(); + var _tempB = new Vector3(); + var _tempC = new Vector3(); + + var _morphA = new Vector3(); + var _morphB = new Vector3(); + var _morphC = new Vector3(); + + var _uvA = new Vector2(); + var _uvB = new Vector2(); + var _uvC = new Vector2(); + + var _intersectionPoint = new Vector3(); + var _intersectionPointWorld = new Vector3(); + + function Mesh( geometry, material ) { + + Object3D.call( this ); + + this.type = 'Mesh'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new MeshBasicMaterial( { color: Math.random() * 0xffffff } ); + + this.drawMode = TrianglesDrawMode; + + this.updateMorphTargets(); + + } + + Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Mesh, + + isMesh: true, + + setDrawMode: function ( value ) { + + this.drawMode = value; + + }, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + this.drawMode = source.drawMode; + + if ( source.morphTargetInfluences !== undefined ) { + + this.morphTargetInfluences = source.morphTargetInfluences.slice(); + + } + + if ( source.morphTargetDictionary !== undefined ) { + + this.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary ); + + } + + return this; + + }, + + updateMorphTargets: function () { + + var geometry = this.geometry; + var m, ml, name; + + if ( geometry.isBufferGeometry ) { + + var morphAttributes = geometry.morphAttributes; + var keys = Object.keys( morphAttributes ); + + if ( keys.length > 0 ) { + + var morphAttribute = morphAttributes[ keys[ 0 ] ]; + + if ( morphAttribute !== undefined ) { + + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) { + + name = morphAttribute[ m ].name || String( m ); + + this.morphTargetInfluences.push( 0 ); + this.morphTargetDictionary[ name ] = m; + + } + + } + + } + + } else { + + var morphTargets = geometry.morphTargets; + + if ( morphTargets !== undefined && morphTargets.length > 0 ) { + + console.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); + + } + + } + + }, + + raycast: function ( raycaster, intersects ) { + + var geometry = this.geometry; + var material = this.material; + var matrixWorld = this.matrixWorld; + + if ( material === undefined ) { return; } + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) { geometry.computeBoundingSphere(); } + + _sphere.copy( geometry.boundingSphere ); + _sphere.applyMatrix4( matrixWorld ); + + if ( raycaster.ray.intersectsSphere( _sphere ) === false ) { return; } + + // + + _inverseMatrix.getInverse( matrixWorld ); + _ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix ); + + // Check boundingBox before continuing + + if ( geometry.boundingBox !== null ) { + + if ( _ray.intersectsBox( geometry.boundingBox ) === false ) { return; } + + } + + var intersection; + + if ( geometry.isBufferGeometry ) { + + var a, b, c; + var index = geometry.index; + var position = geometry.attributes.position; + var morphPosition = geometry.morphAttributes.position; + var uv = geometry.attributes.uv; + var uv2 = geometry.attributes.uv2; + var groups = geometry.groups; + var drawRange = geometry.drawRange; + var i, j, il, jl; + var group, groupMaterial; + var start, end; + + if ( index !== null ) { + + // indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + groupMaterial = material[ group.materialIndex ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = index.getX( j ); + b = index.getX( j + 1 ); + c = index.getX( j + 2 ); + + intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, uv, uv2, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics + intersection.face.materialIndex = group.materialIndex; + intersects.push( intersection ); + + } + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( index.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = index.getX( i ); + b = index.getX( i + 1 ); + c = index.getX( i + 2 ); + + intersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, uv, uv2, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics + intersects.push( intersection ); + + } + + } + + } + + } else if ( position !== undefined ) { + + // non-indexed buffer geometry + + if ( Array.isArray( material ) ) { + + for ( i = 0, il = groups.length; i < il; i ++ ) { + + group = groups[ i ]; + groupMaterial = material[ group.materialIndex ]; + + start = Math.max( group.start, drawRange.start ); + end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ); + + for ( j = start, jl = end; j < jl; j += 3 ) { + + a = j; + b = j + 1; + c = j + 2; + + intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, uv, uv2, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics + intersection.face.materialIndex = group.materialIndex; + intersects.push( intersection ); + + } + + } + + } + + } else { + + start = Math.max( 0, drawRange.start ); + end = Math.min( position.count, ( drawRange.start + drawRange.count ) ); + + for ( i = start, il = end; i < il; i += 3 ) { + + a = i; + b = i + 1; + c = i + 2; + + intersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, uv, uv2, a, b, c ); + + if ( intersection ) { + + intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics + intersects.push( intersection ); + + } + + } + + } + + } + + } else if ( geometry.isGeometry ) { + + var fvA, fvB, fvC; + var isMultiMaterial = Array.isArray( material ); + + var vertices = geometry.vertices; + var faces = geometry.faces; + var uvs; + + var faceVertexUvs = geometry.faceVertexUvs[ 0 ]; + if ( faceVertexUvs.length > 0 ) { uvs = faceVertexUvs; } + + for ( var f = 0, fl = faces.length; f < fl; f ++ ) { + + var face = faces[ f ]; + var faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material; + + if ( faceMaterial === undefined ) { continue; } + + fvA = vertices[ face.a ]; + fvB = vertices[ face.b ]; + fvC = vertices[ face.c ]; + + intersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint ); + + if ( intersection ) { + + if ( uvs && uvs[ f ] ) { + + var uvs_f = uvs[ f ]; + _uvA.copy( uvs_f[ 0 ] ); + _uvB.copy( uvs_f[ 1 ] ); + _uvC.copy( uvs_f[ 2 ] ); + + intersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() ); + + } + + intersection.face = face; + intersection.faceIndex = f; + intersects.push( intersection ); + + } + + } + + } + + }, + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + function checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) { + + var intersect; + + if ( material.side === BackSide ) { + + intersect = ray.intersectTriangle( pC, pB, pA, true, point ); + + } else { + + intersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point ); + + } + + if ( intersect === null ) { return null; } + + _intersectionPointWorld.copy( point ); + _intersectionPointWorld.applyMatrix4( object.matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld ); + + if ( distance < raycaster.near || distance > raycaster.far ) { return null; } + + return { + distance: distance, + point: _intersectionPointWorld.clone(), + object: object + }; + + } + + function checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, uv, uv2, a, b, c ) { + + _vA.fromBufferAttribute( position, a ); + _vB.fromBufferAttribute( position, b ); + _vC.fromBufferAttribute( position, c ); + + var morphInfluences = object.morphTargetInfluences; + + if ( material.morphTargets && morphPosition && morphInfluences ) { + + _morphA.set( 0, 0, 0 ); + _morphB.set( 0, 0, 0 ); + _morphC.set( 0, 0, 0 ); + + for ( var i = 0, il = morphPosition.length; i < il; i ++ ) { + + var influence = morphInfluences[ i ]; + var morphAttribute = morphPosition[ i ]; + + if ( influence === 0 ) { continue; } + + _tempA.fromBufferAttribute( morphAttribute, a ); + _tempB.fromBufferAttribute( morphAttribute, b ); + _tempC.fromBufferAttribute( morphAttribute, c ); + + _morphA.addScaledVector( _tempA.sub( _vA ), influence ); + _morphB.addScaledVector( _tempB.sub( _vB ), influence ); + _morphC.addScaledVector( _tempC.sub( _vC ), influence ); + + } + + _vA.add( _morphA ); + _vB.add( _morphB ); + _vC.add( _morphC ); + + } + + var intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint ); + + if ( intersection ) { + + if ( uv ) { + + _uvA.fromBufferAttribute( uv, a ); + _uvB.fromBufferAttribute( uv, b ); + _uvC.fromBufferAttribute( uv, c ); + + intersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ); + + } + + if ( uv2 ) { + + _uvA.fromBufferAttribute( uv2, a ); + _uvB.fromBufferAttribute( uv2, b ); + _uvC.fromBufferAttribute( uv2, c ); + + intersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ); + + } + + var face = new Face3( a, b, c ); + Triangle.getNormal( _vA, _vB, _vC, face.normal ); + + intersection.face = face; + + } + + return intersection; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author kile / http://kile.stravaganza.org/ + * @author alteredq / http://alteredqualia.com/ + * @author mikael emtinger / http://gomo.se/ + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author bhouston / http://clara.io + */ + + var _geometryId = 0; // Geometry uses even numbers as Id + var _m1$3 = new Matrix4(); + var _obj$1 = new Object3D(); + var _offset$1 = new Vector3(); + + function Geometry() { + + Object.defineProperty( this, 'id', { value: _geometryId += 2 } ); + + this.uuid = _Math.generateUUID(); + + this.name = ''; + this.type = 'Geometry'; + + this.vertices = []; + this.colors = []; + this.faces = []; + this.faceVertexUvs = [[]]; + + this.morphTargets = []; + this.morphNormals = []; + + this.skinWeights = []; + this.skinIndices = []; + + this.lineDistances = []; + + this.boundingBox = null; + this.boundingSphere = null; + + // update flags + + this.elementsNeedUpdate = false; + this.verticesNeedUpdate = false; + this.uvsNeedUpdate = false; + this.normalsNeedUpdate = false; + this.colorsNeedUpdate = false; + this.lineDistancesNeedUpdate = false; + this.groupsNeedUpdate = false; + + } + + Geometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: Geometry, + + isGeometry: true, + + applyMatrix: function ( matrix ) { + + var normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + for ( var i = 0, il = this.vertices.length; i < il; i ++ ) { + + var vertex = this.vertices[ i ]; + vertex.applyMatrix4( matrix ); + + } + + for ( var i = 0, il = this.faces.length; i < il; i ++ ) { + + var face = this.faces[ i ]; + face.normal.applyMatrix3( normalMatrix ).normalize(); + + for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + + face.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize(); + + } + + } + + if ( this.boundingBox !== null ) { + + this.computeBoundingBox(); + + } + + if ( this.boundingSphere !== null ) { + + this.computeBoundingSphere(); + + } + + this.verticesNeedUpdate = true; + this.normalsNeedUpdate = true; + + return this; + + }, + + rotateX: function ( angle ) { + + // rotate geometry around world x-axis + + _m1$3.makeRotationX( angle ); + + this.applyMatrix( _m1$3 ); + + return this; + + }, + + rotateY: function ( angle ) { + + // rotate geometry around world y-axis + + _m1$3.makeRotationY( angle ); + + this.applyMatrix( _m1$3 ); + + return this; + + }, + + rotateZ: function ( angle ) { + + // rotate geometry around world z-axis + + _m1$3.makeRotationZ( angle ); + + this.applyMatrix( _m1$3 ); + + return this; + + }, + + translate: function ( x, y, z ) { + + // translate geometry + + _m1$3.makeTranslation( x, y, z ); + + this.applyMatrix( _m1$3 ); + + return this; + + }, + + scale: function ( x, y, z ) { + + // scale geometry + + _m1$3.makeScale( x, y, z ); + + this.applyMatrix( _m1$3 ); + + return this; + + }, + + lookAt: function ( vector ) { + + _obj$1.lookAt( vector ); + + _obj$1.updateMatrix(); + + this.applyMatrix( _obj$1.matrix ); + + return this; + + }, + + fromBufferGeometry: function ( geometry ) { + + var scope = this; + + var indices = geometry.index !== null ? geometry.index.array : undefined; + var attributes = geometry.attributes; + + if ( attributes.position === undefined ) { + + console.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' ); + return this; + + } + + var positions = attributes.position.array; + var normals = attributes.normal !== undefined ? attributes.normal.array : undefined; + var colors = attributes.color !== undefined ? attributes.color.array : undefined; + var uvs = attributes.uv !== undefined ? attributes.uv.array : undefined; + var uvs2 = attributes.uv2 !== undefined ? attributes.uv2.array : undefined; + + if ( uvs2 !== undefined ) { this.faceVertexUvs[ 1 ] = []; } + + for ( var i = 0; i < positions.length; i += 3 ) { + + scope.vertices.push( new Vector3().fromArray( positions, i ) ); + + if ( colors !== undefined ) { + + scope.colors.push( new Color().fromArray( colors, i ) ); + + } + + } + + function addFace( a, b, c, materialIndex ) { + + var vertexColors = ( colors === undefined ) ? [] : [ + scope.colors[ a ].clone(), + scope.colors[ b ].clone(), + scope.colors[ c ].clone() ]; + + var vertexNormals = ( normals === undefined ) ? [] : [ + new Vector3().fromArray( normals, a * 3 ), + new Vector3().fromArray( normals, b * 3 ), + new Vector3().fromArray( normals, c * 3 ) + ]; + + var face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex ); + + scope.faces.push( face ); + + if ( uvs !== undefined ) { + + scope.faceVertexUvs[ 0 ].push( [ + new Vector2().fromArray( uvs, a * 2 ), + new Vector2().fromArray( uvs, b * 2 ), + new Vector2().fromArray( uvs, c * 2 ) + ] ); + + } + + if ( uvs2 !== undefined ) { + + scope.faceVertexUvs[ 1 ].push( [ + new Vector2().fromArray( uvs2, a * 2 ), + new Vector2().fromArray( uvs2, b * 2 ), + new Vector2().fromArray( uvs2, c * 2 ) + ] ); + + } + + } + + var groups = geometry.groups; + + if ( groups.length > 0 ) { + + for ( var i = 0; i < groups.length; i ++ ) { + + var group = groups[ i ]; + + var start = group.start; + var count = group.count; + + for ( var j = start, jl = start + count; j < jl; j += 3 ) { + + if ( indices !== undefined ) { + + addFace( indices[ j ], indices[ j + 1 ], indices[ j + 2 ], group.materialIndex ); + + } else { + + addFace( j, j + 1, j + 2, group.materialIndex ); + + } + + } + + } + + } else { + + if ( indices !== undefined ) { + + for ( var i = 0; i < indices.length; i += 3 ) { + + addFace( indices[ i ], indices[ i + 1 ], indices[ i + 2 ] ); + + } + + } else { + + for ( var i = 0; i < positions.length / 3; i += 3 ) { + + addFace( i, i + 1, i + 2 ); + + } + + } + + } + + this.computeFaceNormals(); + + if ( geometry.boundingBox !== null ) { + + this.boundingBox = geometry.boundingBox.clone(); + + } + + if ( geometry.boundingSphere !== null ) { + + this.boundingSphere = geometry.boundingSphere.clone(); + + } + + return this; + + }, + + center: function () { + + this.computeBoundingBox(); + + this.boundingBox.getCenter( _offset$1 ).negate(); + + this.translate( _offset$1.x, _offset$1.y, _offset$1.z ); + + return this; + + }, + + normalize: function () { + + this.computeBoundingSphere(); + + var center = this.boundingSphere.center; + var radius = this.boundingSphere.radius; + + var s = radius === 0 ? 1 : 1.0 / radius; + + var matrix = new Matrix4(); + matrix.set( + s, 0, 0, - s * center.x, + 0, s, 0, - s * center.y, + 0, 0, s, - s * center.z, + 0, 0, 0, 1 + ); + + this.applyMatrix( matrix ); + + return this; + + }, + + computeFaceNormals: function () { + + var cb = new Vector3(), ab = new Vector3(); + + for ( var f = 0, fl = this.faces.length; f < fl; f ++ ) { + + var face = this.faces[ f ]; + + var vA = this.vertices[ face.a ]; + var vB = this.vertices[ face.b ]; + var vC = this.vertices[ face.c ]; + + cb.subVectors( vC, vB ); + ab.subVectors( vA, vB ); + cb.cross( ab ); + + cb.normalize(); + + face.normal.copy( cb ); + + } + + }, + + computeVertexNormals: function ( areaWeighted ) { + + if ( areaWeighted === undefined ) { areaWeighted = true; } + + var v, vl, f, fl, face, vertices; + + vertices = new Array( this.vertices.length ); + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + vertices[ v ] = new Vector3(); + + } + + if ( areaWeighted ) { + + // vertex normals weighted by triangle areas + // http://www.iquilezles.org/www/articles/normals/normals.htm + + var vA, vB, vC; + var cb = new Vector3(), ab = new Vector3(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + vA = this.vertices[ face.a ]; + vB = this.vertices[ face.b ]; + vC = this.vertices[ face.c ]; + + cb.subVectors( vC, vB ); + ab.subVectors( vA, vB ); + cb.cross( ab ); + + vertices[ face.a ].add( cb ); + vertices[ face.b ].add( cb ); + vertices[ face.c ].add( cb ); + + } + + } else { + + this.computeFaceNormals(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + vertices[ face.a ].add( face.normal ); + vertices[ face.b ].add( face.normal ); + vertices[ face.c ].add( face.normal ); + + } + + } + + for ( v = 0, vl = this.vertices.length; v < vl; v ++ ) { + + vertices[ v ].normalize(); + + } + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + vertexNormals[ 0 ].copy( vertices[ face.a ] ); + vertexNormals[ 1 ].copy( vertices[ face.b ] ); + vertexNormals[ 2 ].copy( vertices[ face.c ] ); + + } else { + + vertexNormals[ 0 ] = vertices[ face.a ].clone(); + vertexNormals[ 1 ] = vertices[ face.b ].clone(); + vertexNormals[ 2 ] = vertices[ face.c ].clone(); + + } + + } + + if ( this.faces.length > 0 ) { + + this.normalsNeedUpdate = true; + + } + + }, + + computeFlatVertexNormals: function () { + + var f, fl, face; + + this.computeFaceNormals(); + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + var vertexNormals = face.vertexNormals; + + if ( vertexNormals.length === 3 ) { + + vertexNormals[ 0 ].copy( face.normal ); + vertexNormals[ 1 ].copy( face.normal ); + vertexNormals[ 2 ].copy( face.normal ); + + } else { + + vertexNormals[ 0 ] = face.normal.clone(); + vertexNormals[ 1 ] = face.normal.clone(); + vertexNormals[ 2 ] = face.normal.clone(); + + } + + } + + if ( this.faces.length > 0 ) { + + this.normalsNeedUpdate = true; + + } + + }, + + computeMorphNormals: function () { + + var i, il, f, fl, face; + + // save original normals + // - create temp variables on first access + // otherwise just copy (for faster repeated calls) + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + if ( ! face.__originalFaceNormal ) { + + face.__originalFaceNormal = face.normal.clone(); + + } else { + + face.__originalFaceNormal.copy( face.normal ); + + } + + if ( ! face.__originalVertexNormals ) { face.__originalVertexNormals = []; } + + for ( i = 0, il = face.vertexNormals.length; i < il; i ++ ) { + + if ( ! face.__originalVertexNormals[ i ] ) { + + face.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone(); + + } else { + + face.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] ); + + } + + } + + } + + // use temp geometry to compute face and vertex normals for each morph + + var tmpGeo = new Geometry(); + tmpGeo.faces = this.faces; + + for ( i = 0, il = this.morphTargets.length; i < il; i ++ ) { + + // create on first access + + if ( ! this.morphNormals[ i ] ) { + + this.morphNormals[ i ] = {}; + this.morphNormals[ i ].faceNormals = []; + this.morphNormals[ i ].vertexNormals = []; + + var dstNormalsFace = this.morphNormals[ i ].faceNormals; + var dstNormalsVertex = this.morphNormals[ i ].vertexNormals; + + var faceNormal, vertexNormals; + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + faceNormal = new Vector3(); + vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() }; + + dstNormalsFace.push( faceNormal ); + dstNormalsVertex.push( vertexNormals ); + + } + + } + + var morphNormals = this.morphNormals[ i ]; + + // set vertices to morph target + + tmpGeo.vertices = this.morphTargets[ i ].vertices; + + // compute morph normals + + tmpGeo.computeFaceNormals(); + tmpGeo.computeVertexNormals(); + + // store morph normals + + var faceNormal, vertexNormals; + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + faceNormal = morphNormals.faceNormals[ f ]; + vertexNormals = morphNormals.vertexNormals[ f ]; + + faceNormal.copy( face.normal ); + + vertexNormals.a.copy( face.vertexNormals[ 0 ] ); + vertexNormals.b.copy( face.vertexNormals[ 1 ] ); + vertexNormals.c.copy( face.vertexNormals[ 2 ] ); + + } + + } + + // restore original normals + + for ( f = 0, fl = this.faces.length; f < fl; f ++ ) { + + face = this.faces[ f ]; + + face.normal = face.__originalFaceNormal; + face.vertexNormals = face.__originalVertexNormals; + + } + + }, + + computeBoundingBox: function () { + + if ( this.boundingBox === null ) { + + this.boundingBox = new Box3(); + + } + + this.boundingBox.setFromPoints( this.vertices ); + + }, + + computeBoundingSphere: function () { + + if ( this.boundingSphere === null ) { + + this.boundingSphere = new Sphere(); + + } + + this.boundingSphere.setFromPoints( this.vertices ); + + }, + + merge: function ( geometry, matrix, materialIndexOffset ) { + + if ( ! ( geometry && geometry.isGeometry ) ) { + + console.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry ); + return; + + } + + var normalMatrix, + vertexOffset = this.vertices.length, + vertices1 = this.vertices, + vertices2 = geometry.vertices, + faces1 = this.faces, + faces2 = geometry.faces, + colors1 = this.colors, + colors2 = geometry.colors; + + if ( materialIndexOffset === undefined ) { materialIndexOffset = 0; } + + if ( matrix !== undefined ) { + + normalMatrix = new Matrix3().getNormalMatrix( matrix ); + + } + + // vertices + + for ( var i = 0, il = vertices2.length; i < il; i ++ ) { + + var vertex = vertices2[ i ]; + + var vertexCopy = vertex.clone(); + + if ( matrix !== undefined ) { vertexCopy.applyMatrix4( matrix ); } + + vertices1.push( vertexCopy ); + + } + + // colors + + for ( var i = 0, il = colors2.length; i < il; i ++ ) { + + colors1.push( colors2[ i ].clone() ); + + } + + // faces + + for ( i = 0, il = faces2.length; i < il; i ++ ) { + + var face = faces2[ i ], faceCopy, normal, color, + faceVertexNormals = face.vertexNormals, + faceVertexColors = face.vertexColors; + + faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset ); + faceCopy.normal.copy( face.normal ); + + if ( normalMatrix !== undefined ) { + + faceCopy.normal.applyMatrix3( normalMatrix ).normalize(); + + } + + for ( var j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) { + + normal = faceVertexNormals[ j ].clone(); + + if ( normalMatrix !== undefined ) { + + normal.applyMatrix3( normalMatrix ).normalize(); + + } + + faceCopy.vertexNormals.push( normal ); + + } + + faceCopy.color.copy( face.color ); + + for ( var j = 0, jl = faceVertexColors.length; j < jl; j ++ ) { + + color = faceVertexColors[ j ]; + faceCopy.vertexColors.push( color.clone() ); + + } + + faceCopy.materialIndex = face.materialIndex + materialIndexOffset; + + faces1.push( faceCopy ); + + } + + // uvs + + for ( var i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) { + + var faceVertexUvs2 = geometry.faceVertexUvs[ i ]; + + if ( this.faceVertexUvs[ i ] === undefined ) { this.faceVertexUvs[ i ] = []; } + + for ( var j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) { + + var uvs2 = faceVertexUvs2[ j ], uvsCopy = []; + + for ( var k = 0, kl = uvs2.length; k < kl; k ++ ) { + + uvsCopy.push( uvs2[ k ].clone() ); + + } + + this.faceVertexUvs[ i ].push( uvsCopy ); + + } + + } + + }, + + mergeMesh: function ( mesh ) { + + if ( ! ( mesh && mesh.isMesh ) ) { + + console.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh ); + return; + + } + + if ( mesh.matrixAutoUpdate ) { mesh.updateMatrix(); } + + this.merge( mesh.geometry, mesh.matrix ); + + }, + + /* + * Checks for duplicate vertices with hashmap. + * Duplicated vertices are removed + * and faces' vertices are updated. + */ + + mergeVertices: function () { + + var verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique) + var unique = [], changes = []; + + var v, key; + var precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001 + var precision = Math.pow( 10, precisionPoints ); + var i, il, face; + var indices, j, jl; + + for ( i = 0, il = this.vertices.length; i < il; i ++ ) { + + v = this.vertices[ i ]; + key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision ); + + if ( verticesMap[ key ] === undefined ) { + + verticesMap[ key ] = i; + unique.push( this.vertices[ i ] ); + changes[ i ] = unique.length - 1; + + } else { + + //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]); + changes[ i ] = changes[ verticesMap[ key ] ]; + + } + + } + + + // if faces are completely degenerate after merging vertices, we + // have to remove them from the geometry. + var faceIndicesToRemove = []; + + for ( i = 0, il = this.faces.length; i < il; i ++ ) { + + face = this.faces[ i ]; + + face.a = changes[ face.a ]; + face.b = changes[ face.b ]; + face.c = changes[ face.c ]; + + indices = [ face.a, face.b, face.c ]; + + // if any duplicate vertices are found in a Face3 + // we have to remove the face as nothing can be saved + for ( var n = 0; n < 3; n ++ ) { + + if ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) { + + faceIndicesToRemove.push( i ); + break; + + } + + } + + } + + for ( i = faceIndicesToRemove.length - 1; i >= 0; i -- ) { + + var idx = faceIndicesToRemove[ i ]; + + this.faces.splice( idx, 1 ); + + for ( j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) { + + this.faceVertexUvs[ j ].splice( idx, 1 ); + + } + + } + + // Use unique set of vertices + + var diff = this.vertices.length - unique.length; + this.vertices = unique; + return diff; + + }, + + setFromPoints: function ( points ) { + + this.vertices = []; + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + this.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + + } + + return this; + + }, + + sortFacesByMaterialIndex: function () { + + var faces = this.faces; + var length = faces.length; + + // tag faces + + for ( var i = 0; i < length; i ++ ) { + + faces[ i ]._id = i; + + } + + // sort faces + + function materialIndexSort( a, b ) { + + return a.materialIndex - b.materialIndex; + + } + + faces.sort( materialIndexSort ); + + // sort uvs + + var uvs1 = this.faceVertexUvs[ 0 ]; + var uvs2 = this.faceVertexUvs[ 1 ]; + + var newUvs1, newUvs2; + + if ( uvs1 && uvs1.length === length ) { newUvs1 = []; } + if ( uvs2 && uvs2.length === length ) { newUvs2 = []; } + + for ( var i = 0; i < length; i ++ ) { + + var id = faces[ i ]._id; + + if ( newUvs1 ) { newUvs1.push( uvs1[ id ] ); } + if ( newUvs2 ) { newUvs2.push( uvs2[ id ] ); } + + } + + if ( newUvs1 ) { this.faceVertexUvs[ 0 ] = newUvs1; } + if ( newUvs2 ) { this.faceVertexUvs[ 1 ] = newUvs2; } + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'Geometry', + generator: 'Geometry.toJSON' + } + }; + + // standard Geometry serialization + + data.uuid = this.uuid; + data.type = this.type; + if ( this.name !== '' ) { data.name = this.name; } + + if ( this.parameters !== undefined ) { + + var parameters = this.parameters; + + for ( var key in parameters ) { + + if ( parameters[ key ] !== undefined ) { data[ key ] = parameters[ key ]; } + + } + + return data; + + } + + var vertices = []; + + for ( var i = 0; i < this.vertices.length; i ++ ) { + + var vertex = this.vertices[ i ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + var faces = []; + var normals = []; + var normalsHash = {}; + var colors = []; + var colorsHash = {}; + var uvs = []; + var uvsHash = {}; + + for ( var i = 0; i < this.faces.length; i ++ ) { + + var face = this.faces[ i ]; + + var hasMaterial = true; + var hasFaceUv = false; // deprecated + var hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined; + var hasFaceNormal = face.normal.length() > 0; + var hasFaceVertexNormal = face.vertexNormals.length > 0; + var hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1; + var hasFaceVertexColor = face.vertexColors.length > 0; + + var faceType = 0; + + faceType = setBit( faceType, 0, 0 ); // isQuad + faceType = setBit( faceType, 1, hasMaterial ); + faceType = setBit( faceType, 2, hasFaceUv ); + faceType = setBit( faceType, 3, hasFaceVertexUv ); + faceType = setBit( faceType, 4, hasFaceNormal ); + faceType = setBit( faceType, 5, hasFaceVertexNormal ); + faceType = setBit( faceType, 6, hasFaceColor ); + faceType = setBit( faceType, 7, hasFaceVertexColor ); + + faces.push( faceType ); + faces.push( face.a, face.b, face.c ); + faces.push( face.materialIndex ); + + if ( hasFaceVertexUv ) { + + var faceVertexUvs = this.faceVertexUvs[ 0 ][ i ]; + + faces.push( + getUvIndex( faceVertexUvs[ 0 ] ), + getUvIndex( faceVertexUvs[ 1 ] ), + getUvIndex( faceVertexUvs[ 2 ] ) + ); + + } + + if ( hasFaceNormal ) { + + faces.push( getNormalIndex( face.normal ) ); + + } + + if ( hasFaceVertexNormal ) { + + var vertexNormals = face.vertexNormals; + + faces.push( + getNormalIndex( vertexNormals[ 0 ] ), + getNormalIndex( vertexNormals[ 1 ] ), + getNormalIndex( vertexNormals[ 2 ] ) + ); + + } + + if ( hasFaceColor ) { + + faces.push( getColorIndex( face.color ) ); + + } + + if ( hasFaceVertexColor ) { + + var vertexColors = face.vertexColors; + + faces.push( + getColorIndex( vertexColors[ 0 ] ), + getColorIndex( vertexColors[ 1 ] ), + getColorIndex( vertexColors[ 2 ] ) + ); + + } + + } + + function setBit( value, position, enabled ) { + + return enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) ); + + } + + function getNormalIndex( normal ) { + + var hash = normal.x.toString() + normal.y.toString() + normal.z.toString(); + + if ( normalsHash[ hash ] !== undefined ) { + + return normalsHash[ hash ]; + + } + + normalsHash[ hash ] = normals.length / 3; + normals.push( normal.x, normal.y, normal.z ); + + return normalsHash[ hash ]; + + } + + function getColorIndex( color ) { + + var hash = color.r.toString() + color.g.toString() + color.b.toString(); + + if ( colorsHash[ hash ] !== undefined ) { + + return colorsHash[ hash ]; + + } + + colorsHash[ hash ] = colors.length; + colors.push( color.getHex() ); + + return colorsHash[ hash ]; + + } + + function getUvIndex( uv ) { + + var hash = uv.x.toString() + uv.y.toString(); + + if ( uvsHash[ hash ] !== undefined ) { + + return uvsHash[ hash ]; + + } + + uvsHash[ hash ] = uvs.length / 2; + uvs.push( uv.x, uv.y ); + + return uvsHash[ hash ]; + + } + + data.data = {}; + + data.data.vertices = vertices; + data.data.normals = normals; + if ( colors.length > 0 ) { data.data.colors = colors; } + if ( uvs.length > 0 ) { data.data.uvs = [ uvs ]; } // temporal backward compatibility + data.data.faces = faces; + + return data; + + }, + + clone: function () { + + /* + // Handle primitives + + var parameters = this.parameters; + + if ( parameters !== undefined ) { + + var values = []; + + for ( var key in parameters ) { + + values.push( parameters[ key ] ); + + } + + var geometry = Object.create( this.constructor.prototype ); + this.constructor.apply( geometry, values ); + return geometry; + + } + + return new this.constructor().copy( this ); + */ + + return new Geometry().copy( this ); + + }, + + copy: function ( source ) { + + var i, il, j, jl, k, kl; + + // reset + + this.vertices = []; + this.colors = []; + this.faces = []; + this.faceVertexUvs = [[]]; + this.morphTargets = []; + this.morphNormals = []; + this.skinWeights = []; + this.skinIndices = []; + this.lineDistances = []; + this.boundingBox = null; + this.boundingSphere = null; + + // name + + this.name = source.name; + + // vertices + + var vertices = source.vertices; + + for ( i = 0, il = vertices.length; i < il; i ++ ) { + + this.vertices.push( vertices[ i ].clone() ); + + } + + // colors + + var colors = source.colors; + + for ( i = 0, il = colors.length; i < il; i ++ ) { + + this.colors.push( colors[ i ].clone() ); + + } + + // faces + + var faces = source.faces; + + for ( i = 0, il = faces.length; i < il; i ++ ) { + + this.faces.push( faces[ i ].clone() ); + + } + + // face vertex uvs + + for ( i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) { + + var faceVertexUvs = source.faceVertexUvs[ i ]; + + if ( this.faceVertexUvs[ i ] === undefined ) { + + this.faceVertexUvs[ i ] = []; + + } + + for ( j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) { + + var uvs = faceVertexUvs[ j ], uvsCopy = []; + + for ( k = 0, kl = uvs.length; k < kl; k ++ ) { + + var uv = uvs[ k ]; + + uvsCopy.push( uv.clone() ); + + } + + this.faceVertexUvs[ i ].push( uvsCopy ); + + } + + } + + // morph targets + + var morphTargets = source.morphTargets; + + for ( i = 0, il = morphTargets.length; i < il; i ++ ) { + + var morphTarget = {}; + morphTarget.name = morphTargets[ i ].name; + + // vertices + + if ( morphTargets[ i ].vertices !== undefined ) { + + morphTarget.vertices = []; + + for ( j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) { + + morphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() ); + + } + + } + + // normals + + if ( morphTargets[ i ].normals !== undefined ) { + + morphTarget.normals = []; + + for ( j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) { + + morphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() ); + + } + + } + + this.morphTargets.push( morphTarget ); + + } + + // morph normals + + var morphNormals = source.morphNormals; + + for ( i = 0, il = morphNormals.length; i < il; i ++ ) { + + var morphNormal = {}; + + // vertex normals + + if ( morphNormals[ i ].vertexNormals !== undefined ) { + + morphNormal.vertexNormals = []; + + for ( j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) { + + var srcVertexNormal = morphNormals[ i ].vertexNormals[ j ]; + var destVertexNormal = {}; + + destVertexNormal.a = srcVertexNormal.a.clone(); + destVertexNormal.b = srcVertexNormal.b.clone(); + destVertexNormal.c = srcVertexNormal.c.clone(); + + morphNormal.vertexNormals.push( destVertexNormal ); + + } + + } + + // face normals + + if ( morphNormals[ i ].faceNormals !== undefined ) { + + morphNormal.faceNormals = []; + + for ( j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) { + + morphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() ); + + } + + } + + this.morphNormals.push( morphNormal ); + + } + + // skin weights + + var skinWeights = source.skinWeights; + + for ( i = 0, il = skinWeights.length; i < il; i ++ ) { + + this.skinWeights.push( skinWeights[ i ].clone() ); + + } + + // skin indices + + var skinIndices = source.skinIndices; + + for ( i = 0, il = skinIndices.length; i < il; i ++ ) { + + this.skinIndices.push( skinIndices[ i ].clone() ); + + } + + // line distances + + var lineDistances = source.lineDistances; + + for ( i = 0, il = lineDistances.length; i < il; i ++ ) { + + this.lineDistances.push( lineDistances[ i ] ); + + } + + // bounding box + + var boundingBox = source.boundingBox; + + if ( boundingBox !== null ) { + + this.boundingBox = boundingBox.clone(); + + } + + // bounding sphere + + var boundingSphere = source.boundingSphere; + + if ( boundingSphere !== null ) { + + this.boundingSphere = boundingSphere.clone(); + + } + + // update flags + + this.elementsNeedUpdate = source.elementsNeedUpdate; + this.verticesNeedUpdate = source.verticesNeedUpdate; + this.uvsNeedUpdate = source.uvsNeedUpdate; + this.normalsNeedUpdate = source.normalsNeedUpdate; + this.colorsNeedUpdate = source.colorsNeedUpdate; + this.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate; + this.groupsNeedUpdate = source.groupsNeedUpdate; + + return this; + + }, + + dispose: function () { + + this.dispatchEvent( { type: 'dispose' } ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // BoxGeometry + + var BoxGeometry = /*@__PURE__*/(function (Geometry) { + function BoxGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + + Geometry.call(this); + + this.type = 'BoxGeometry'; + + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + + this.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) ); + this.mergeVertices(); + + } + + if ( Geometry ) BoxGeometry.__proto__ = Geometry; + BoxGeometry.prototype = Object.create( Geometry && Geometry.prototype ); + BoxGeometry.prototype.constructor = BoxGeometry; + + return BoxGeometry; + }(Geometry)); + + // BoxBufferGeometry + + var BoxBufferGeometry = /*@__PURE__*/(function (BufferGeometry) { + function BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) { + + BufferGeometry.call(this); + + this.type = 'BoxBufferGeometry'; + + this.parameters = { + width: width, + height: height, + depth: depth, + widthSegments: widthSegments, + heightSegments: heightSegments, + depthSegments: depthSegments + }; + + var scope = this; + + width = width || 1; + height = height || 1; + depth = depth || 1; + + // segments + + widthSegments = Math.floor( widthSegments ) || 1; + heightSegments = Math.floor( heightSegments ) || 1; + depthSegments = Math.floor( depthSegments ) || 1; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var numberOfVertices = 0; + var groupStart = 0; + + // build each side of the box geometry + + buildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px + buildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx + buildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py + buildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny + buildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz + buildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) { + + var segmentWidth = width / gridX; + var segmentHeight = height / gridY; + + var widthHalf = width / 2; + var heightHalf = height / 2; + var depthHalf = depth / 2; + + var gridX1 = gridX + 1; + var gridY1 = gridY + 1; + + var vertexCounter = 0; + var groupCount = 0; + + var ix, iy; + + var vector = new Vector3(); + + // generate vertices, normals and uvs + + for ( iy = 0; iy < gridY1; iy ++ ) { + + var y = iy * segmentHeight - heightHalf; + + for ( ix = 0; ix < gridX1; ix ++ ) { + + var x = ix * segmentWidth - widthHalf; + + // set values to correct vector component + + vector[ u ] = x * udir; + vector[ v ] = y * vdir; + vector[ w ] = depthHalf; + + // now apply vector to vertex buffer + + vertices.push( vector.x, vector.y, vector.z ); + + // set values to correct vector component + + vector[ u ] = 0; + vector[ v ] = 0; + vector[ w ] = depth > 0 ? 1 : - 1; + + // now apply vector to normal buffer + + normals.push( vector.x, vector.y, vector.z ); + + // uvs + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + // counters + + vertexCounter += 1; + + } + + } + + // indices + + // 1. you need three indices to draw a single face + // 2. a single segment consists of two faces + // 3. so we need to generate six (2*3) indices per segment + + for ( iy = 0; iy < gridY; iy ++ ) { + + for ( ix = 0; ix < gridX; ix ++ ) { + + var a = numberOfVertices + ix + gridX1 * iy; + var b = numberOfVertices + ix + gridX1 * ( iy + 1 ); + var c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 ); + var d = numberOfVertices + ( ix + 1 ) + gridX1 * iy; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + // increase counter + + groupCount += 6; + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, materialIndex ); + + // calculate new start value for groups + + groupStart += groupCount; + + // update total number of vertices + + numberOfVertices += vertexCounter; + + } + + } + + if ( BufferGeometry ) BoxBufferGeometry.__proto__ = BufferGeometry; + BoxBufferGeometry.prototype = Object.create( BufferGeometry && BufferGeometry.prototype ); + BoxBufferGeometry.prototype.constructor = BoxBufferGeometry; + + return BoxBufferGeometry; + }(BufferGeometry)); + + /** + * Uniform Utilities + */ + + function cloneUniforms( src ) { + + var dst = {}; + + for ( var u in src ) { + + dst[ u ] = {}; + + for ( var p in src[ u ] ) { + + var property = src[ u ][ p ]; + + if ( property && ( property.isColor || + property.isMatrix3 || property.isMatrix4 || + property.isVector2 || property.isVector3 || property.isVector4 || + property.isTexture ) ) { + + dst[ u ][ p ] = property.clone(); + + } else if ( Array.isArray( property ) ) { + + dst[ u ][ p ] = property.slice(); + + } else { + + dst[ u ][ p ] = property; + + } + + } + + } + + return dst; + + } + + function mergeUniforms( uniforms ) { + + var merged = {}; + + for ( var u = 0; u < uniforms.length; u ++ ) { + + var tmp = cloneUniforms( uniforms[ u ] ); + + for ( var p in tmp ) { + + merged[ p ] = tmp[ p ]; + + } + + } + + return merged; + + } + + // Legacy + + var UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms }; + + var default_vertex = "void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}"; + + var default_fragment = "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}"; + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * defines: { "label" : "value" }, + * uniforms: { "parameter1": { value: 1.0 }, "parameter2": { value2: 2 } }, + * + * fragmentShader: , + * vertexShader: , + * + * wireframe: , + * wireframeLinewidth: , + * + * lights: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function ShaderMaterial( parameters ) { + + Material.call( this ); + + this.type = 'ShaderMaterial'; + + this.defines = {}; + this.uniforms = {}; + + this.vertexShader = default_vertex; + this.fragmentShader = default_fragment; + + this.linewidth = 1; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; // set to use scene fog + this.lights = false; // set to use scene lights + this.clipping = false; // set to use user-defined clipping planes + + this.skinning = false; // set to use skinning attribute streams + this.morphTargets = false; // set to use morph targets + this.morphNormals = false; // set to use morph normals + + this.extensions = { + derivatives: false, // set to use derivatives + fragDepth: false, // set to use fragment depth values + drawBuffers: false, // set to use draw buffers + shaderTextureLOD: false // set to use shader texture LOD + }; + + // When rendered geometry doesn't include these attributes but the material does, + // use these default values in WebGL. This avoids errors when buffer data is missing. + this.defaultAttributeValues = { + 'color': [ 1, 1, 1 ], + 'uv': [ 0, 0 ], + 'uv2': [ 0, 0 ] + }; + + this.index0AttributeName = undefined; + this.uniformsNeedUpdate = false; + + if ( parameters !== undefined ) { + + if ( parameters.attributes !== undefined ) { + + console.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' ); + + } + + this.setValues( parameters ); + + } + + } + + ShaderMaterial.prototype = Object.create( Material.prototype ); + ShaderMaterial.prototype.constructor = ShaderMaterial; + + ShaderMaterial.prototype.isShaderMaterial = true; + + ShaderMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.fragmentShader = source.fragmentShader; + this.vertexShader = source.vertexShader; + + this.uniforms = cloneUniforms( source.uniforms ); + + this.defines = Object.assign( {}, source.defines ); + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.lights = source.lights; + this.clipping = source.clipping; + + this.skinning = source.skinning; + + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + this.extensions = source.extensions; + + return this; + + }; + + ShaderMaterial.prototype.toJSON = function ( meta ) { + + var data = Material.prototype.toJSON.call( this, meta ); + + data.uniforms = {}; + + for ( var name in this.uniforms ) { + + var uniform = this.uniforms[ name ]; + var value = uniform.value; + + if ( value && value.isTexture ) { + + data.uniforms[ name ] = { + type: 't', + value: value.toJSON( meta ).uuid + }; + + } else if ( value && value.isColor ) { + + data.uniforms[ name ] = { + type: 'c', + value: value.getHex() + }; + + } else if ( value && value.isVector2 ) { + + data.uniforms[ name ] = { + type: 'v2', + value: value.toArray() + }; + + } else if ( value && value.isVector3 ) { + + data.uniforms[ name ] = { + type: 'v3', + value: value.toArray() + }; + + } else if ( value && value.isVector4 ) { + + data.uniforms[ name ] = { + type: 'v4', + value: value.toArray() + }; + + } else if ( value && value.isMatrix3 ) { + + data.uniforms[ name ] = { + type: 'm3', + value: value.toArray() + }; + + } else if ( value && value.isMatrix4 ) { + + data.uniforms[ name ] = { + type: 'm4', + value: value.toArray() + }; + + } else { + + data.uniforms[ name ] = { + value: value + }; + + // note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far + + } + + } + + if ( Object.keys( this.defines ).length > 0 ) { data.defines = this.defines; } + + data.vertexShader = this.vertexShader; + data.fragmentShader = this.fragmentShader; + + var extensions = {}; + + for ( var key in this.extensions ) { + + if ( this.extensions[ key ] === true ) { extensions[ key ] = true; } + + } + + if ( Object.keys( extensions ).length > 0 ) { data.extensions = extensions; } + + return data; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + * @author WestLangley / http://github.com/WestLangley + */ + + function Camera() { + + Object3D.call( this ); + + this.type = 'Camera'; + + this.matrixWorldInverse = new Matrix4(); + + this.projectionMatrix = new Matrix4(); + this.projectionMatrixInverse = new Matrix4(); + + } + + Camera.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Camera, + + isCamera: true, + + copy: function ( source, recursive ) { + + Object3D.prototype.copy.call( this, source, recursive ); + + this.matrixWorldInverse.copy( source.matrixWorldInverse ); + + this.projectionMatrix.copy( source.projectionMatrix ); + this.projectionMatrixInverse.copy( source.projectionMatrixInverse ); + + return this; + + }, + + getWorldDirection: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Camera: .getWorldDirection() target is now required' ); + target = new Vector3(); + + } + + this.updateMatrixWorld( true ); + + var e = this.matrixWorld.elements; + + return target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize(); + + }, + + updateMatrixWorld: function ( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + this.matrixWorldInverse.getInverse( this.matrixWorld ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author greggman / http://games.greggman.com/ + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author tschw + */ + + function PerspectiveCamera( fov, aspect, near, far ) { + + Camera.call( this ); + + this.type = 'PerspectiveCamera'; + + this.fov = fov !== undefined ? fov : 50; + this.zoom = 1; + + this.near = near !== undefined ? near : 0.1; + this.far = far !== undefined ? far : 2000; + this.focus = 10; + + this.aspect = aspect !== undefined ? aspect : 1; + this.view = null; + + this.filmGauge = 35; // width of the film (default in millimeters) + this.filmOffset = 0; // horizontal film offset (same unit as gauge) + + this.updateProjectionMatrix(); + + } + + PerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + + constructor: PerspectiveCamera, + + isPerspectiveCamera: true, + + copy: function ( source, recursive ) { + + Camera.prototype.copy.call( this, source, recursive ); + + this.fov = source.fov; + this.zoom = source.zoom; + + this.near = source.near; + this.far = source.far; + this.focus = source.focus; + + this.aspect = source.aspect; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + this.filmGauge = source.filmGauge; + this.filmOffset = source.filmOffset; + + return this; + + }, + + /** + * Sets the FOV by focal length in respect to the current .filmGauge. + * + * The default film gauge is 35, so that the focal length can be specified for + * a 35mm (full frame) camera. + * + * Values for focal length and film gauge must have the same unit. + */ + setFocalLength: function ( focalLength ) { + + // see http://www.bobatkins.com/photography/technical/field_of_view.html + var vExtentSlope = 0.5 * this.getFilmHeight() / focalLength; + + this.fov = _Math.RAD2DEG * 2 * Math.atan( vExtentSlope ); + this.updateProjectionMatrix(); + + }, + + /** + * Calculates the focal length from the current .fov and .filmGauge. + */ + getFocalLength: function () { + + var vExtentSlope = Math.tan( _Math.DEG2RAD * 0.5 * this.fov ); + + return 0.5 * this.getFilmHeight() / vExtentSlope; + + }, + + getEffectiveFOV: function () { + + return _Math.RAD2DEG * 2 * Math.atan( + Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom ); + + }, + + getFilmWidth: function () { + + // film not completely covered in portrait format (aspect < 1) + return this.filmGauge * Math.min( this.aspect, 1 ); + + }, + + getFilmHeight: function () { + + // film not completely covered in landscape format (aspect > 1) + return this.filmGauge / Math.max( this.aspect, 1 ); + + }, + + /** + * Sets an offset in a larger frustum. This is useful for multi-window or + * multi-monitor/multi-machine setups. + * + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and + * the monitors are in grid like this + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this + * + * var w = 1920; + * var h = 1080; + * var fullWidth = w * 3; + * var fullHeight = h * 2; + * + * --A-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * --B-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * --C-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * --D-- + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * --E-- + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * --F-- + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); + * + * Note there is no reason monitors have to be the same size or in a grid. + */ + setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + + this.aspect = fullWidth / fullHeight; + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + }, + + clearViewOffset: function () { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + }, + + updateProjectionMatrix: function () { + + var near = this.near, + top = near * Math.tan( _Math.DEG2RAD * 0.5 * this.fov ) / this.zoom, + height = 2 * top, + width = this.aspect * height, + left = - 0.5 * width, + view = this.view; + + if ( this.view !== null && this.view.enabled ) { + + var fullWidth = view.fullWidth, + fullHeight = view.fullHeight; + + left += view.offsetX * width / fullWidth; + top -= view.offsetY * height / fullHeight; + width *= view.width / fullWidth; + height *= view.height / fullHeight; + + } + + var skew = this.filmOffset; + if ( skew !== 0 ) { left += near * skew / this.getFilmWidth(); } + + this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far ); + + this.projectionMatrixInverse.getInverse( this.projectionMatrix ); + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.fov = this.fov; + data.object.zoom = this.zoom; + + data.object.near = this.near; + data.object.far = this.far; + data.object.focus = this.focus; + + data.object.aspect = this.aspect; + + if ( this.view !== null ) { data.object.view = Object.assign( {}, this.view ); } + + data.object.filmGauge = this.filmGauge; + data.object.filmOffset = this.filmOffset; + + return data; + + } + + } ); + + /** + * Camera for rendering cube maps + * - renders scene into axis-aligned cube + * + * @author alteredq / http://alteredqualia.com/ + */ + + var fov = 90, aspect = 1; + + function CubeCamera( near, far, cubeResolution, options ) { + + Object3D.call( this ); + + this.type = 'CubeCamera'; + + var cameraPX = new PerspectiveCamera( fov, aspect, near, far ); + cameraPX.up.set( 0, - 1, 0 ); + cameraPX.lookAt( new Vector3( 1, 0, 0 ) ); + this.add( cameraPX ); + + var cameraNX = new PerspectiveCamera( fov, aspect, near, far ); + cameraNX.up.set( 0, - 1, 0 ); + cameraNX.lookAt( new Vector3( - 1, 0, 0 ) ); + this.add( cameraNX ); + + var cameraPY = new PerspectiveCamera( fov, aspect, near, far ); + cameraPY.up.set( 0, 0, 1 ); + cameraPY.lookAt( new Vector3( 0, 1, 0 ) ); + this.add( cameraPY ); + + var cameraNY = new PerspectiveCamera( fov, aspect, near, far ); + cameraNY.up.set( 0, 0, - 1 ); + cameraNY.lookAt( new Vector3( 0, - 1, 0 ) ); + this.add( cameraNY ); + + var cameraPZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraPZ.up.set( 0, - 1, 0 ); + cameraPZ.lookAt( new Vector3( 0, 0, 1 ) ); + this.add( cameraPZ ); + + var cameraNZ = new PerspectiveCamera( fov, aspect, near, far ); + cameraNZ.up.set( 0, - 1, 0 ); + cameraNZ.lookAt( new Vector3( 0, 0, - 1 ) ); + this.add( cameraNZ ); + + options = options || { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter }; + + this.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options ); + this.renderTarget.texture.name = "CubeCamera"; + + this.update = function ( renderer, scene ) { + + if ( this.parent === null ) { this.updateMatrixWorld(); } + + var currentRenderTarget = renderer.getRenderTarget(); + + var renderTarget = this.renderTarget; + var generateMipmaps = renderTarget.texture.generateMipmaps; + + renderTarget.texture.generateMipmaps = false; + + renderer.setRenderTarget( renderTarget, 0 ); + renderer.render( scene, cameraPX ); + + renderer.setRenderTarget( renderTarget, 1 ); + renderer.render( scene, cameraNX ); + + renderer.setRenderTarget( renderTarget, 2 ); + renderer.render( scene, cameraPY ); + + renderer.setRenderTarget( renderTarget, 3 ); + renderer.render( scene, cameraNY ); + + renderer.setRenderTarget( renderTarget, 4 ); + renderer.render( scene, cameraPZ ); + + renderTarget.texture.generateMipmaps = generateMipmaps; + + renderer.setRenderTarget( renderTarget, 5 ); + renderer.render( scene, cameraNZ ); + + renderer.setRenderTarget( currentRenderTarget ); + + }; + + this.clear = function ( renderer, color, depth, stencil ) { + + var currentRenderTarget = renderer.getRenderTarget(); + + var renderTarget = this.renderTarget; + + for ( var i = 0; i < 6; i ++ ) { + + renderer.setRenderTarget( renderTarget, i ); + + renderer.clear( color, depth, stencil ); + + } + + renderer.setRenderTarget( currentRenderTarget ); + + }; + + } + + CubeCamera.prototype = Object.create( Object3D.prototype ); + CubeCamera.prototype.constructor = CubeCamera; + + /** + * @author alteredq / http://alteredqualia.com + * @author WestLangley / http://github.com/WestLangley + */ + + function WebGLRenderTargetCube( width, height, options ) { + + WebGLRenderTarget.call( this, width, height, options ); + + } + + WebGLRenderTargetCube.prototype = Object.create( WebGLRenderTarget.prototype ); + WebGLRenderTargetCube.prototype.constructor = WebGLRenderTargetCube; + + WebGLRenderTargetCube.prototype.isWebGLRenderTargetCube = true; + + WebGLRenderTargetCube.prototype.fromEquirectangularTexture = function ( renderer, texture ) { + + this.texture.type = texture.type; + this.texture.format = texture.format; + this.texture.encoding = texture.encoding; + + var scene = new Scene(); + + var shader = { + + uniforms: { + tEquirect: { value: null }, + }, + + vertexShader: [ + + "varying vec3 vWorldDirection;", + + "vec3 transformDirection( in vec3 dir, in mat4 matrix ) {", + + " return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );", + + "}", + + "void main() {", + + " vWorldDirection = transformDirection( position, modelMatrix );", + + " #include ", + " #include ", + + "}" + + ].join( '\n' ), + + fragmentShader: [ + + "uniform sampler2D tEquirect;", + + "varying vec3 vWorldDirection;", + + "#define RECIPROCAL_PI 0.31830988618", + "#define RECIPROCAL_PI2 0.15915494", + + "void main() {", + + " vec3 direction = normalize( vWorldDirection );", + + " vec2 sampleUV;", + + " sampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;", + + " sampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;", + + " gl_FragColor = texture2D( tEquirect, sampleUV );", + + "}" + + ].join( '\n' ), + }; + + var material = new ShaderMaterial( { + + type: 'CubemapFromEquirect', + + uniforms: cloneUniforms( shader.uniforms ), + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader, + side: BackSide, + blending: NoBlending + + } ); + + material.uniforms.tEquirect.value = texture; + + var mesh = new Mesh( new BoxBufferGeometry( 5, 5, 5 ), material ); + + scene.add( mesh ); + + var camera = new CubeCamera( 1, 10, 1 ); + + camera.renderTarget = this; + camera.renderTarget.texture.name = 'CubeCameraTexture'; + + camera.update( renderer, scene ); + + mesh.geometry.dispose(); + mesh.material.dispose(); + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.image = { data: data || null, width: width || 1, height: height || 1 }; + + this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; + this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; + + this.generateMipmaps = false; + this.flipY = false; + this.unpackAlignment = 1; + + this.needsUpdate = true; + + } + + DataTexture.prototype = Object.create( Texture.prototype ); + DataTexture.prototype.constructor = DataTexture; + + DataTexture.prototype.isDataTexture = true; + + /** + * @author bhouston / http://clara.io + */ + + var _vector1 = new Vector3(); + var _vector2 = new Vector3(); + var _normalMatrix = new Matrix3(); + + function Plane( normal, constant ) { + + // normal is assumed to be normalized + + this.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 ); + this.constant = ( constant !== undefined ) ? constant : 0; + + } + + Object.assign( Plane.prototype, { + + isPlane: true, + + set: function ( normal, constant ) { + + this.normal.copy( normal ); + this.constant = constant; + + return this; + + }, + + setComponents: function ( x, y, z, w ) { + + this.normal.set( x, y, z ); + this.constant = w; + + return this; + + }, + + setFromNormalAndCoplanarPoint: function ( normal, point ) { + + this.normal.copy( normal ); + this.constant = - point.dot( this.normal ); + + return this; + + }, + + setFromCoplanarPoints: function ( a, b, c ) { + + var normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize(); + + // Q: should an error be thrown if normal is zero (e.g. degenerate plane)? + + this.setFromNormalAndCoplanarPoint( normal, a ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( plane ) { + + this.normal.copy( plane.normal ); + this.constant = plane.constant; + + return this; + + }, + + normalize: function () { + + // Note: will lead to a divide by zero if the plane is invalid. + + var inverseNormalLength = 1.0 / this.normal.length(); + this.normal.multiplyScalar( inverseNormalLength ); + this.constant *= inverseNormalLength; + + return this; + + }, + + negate: function () { + + this.constant *= - 1; + this.normal.negate(); + + return this; + + }, + + distanceToPoint: function ( point ) { + + return this.normal.dot( point ) + this.constant; + + }, + + distanceToSphere: function ( sphere ) { + + return this.distanceToPoint( sphere.center ) - sphere.radius; + + }, + + projectPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Plane: .projectPoint() target is now required' ); + target = new Vector3(); + + } + + return target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point ); + + }, + + intersectLine: function ( line, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Plane: .intersectLine() target is now required' ); + target = new Vector3(); + + } + + var direction = line.delta( _vector1 ); + + var denominator = this.normal.dot( direction ); + + if ( denominator === 0 ) { + + // line is coplanar, return origin + if ( this.distanceToPoint( line.start ) === 0 ) { + + return target.copy( line.start ); + + } + + // Unsure if this is the correct method to handle this case. + return undefined; + + } + + var t = - ( line.start.dot( this.normal ) + this.constant ) / denominator; + + if ( t < 0 || t > 1 ) { + + return undefined; + + } + + return target.copy( direction ).multiplyScalar( t ).add( line.start ); + + }, + + intersectsLine: function ( line ) { + + // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it. + + var startSign = this.distanceToPoint( line.start ); + var endSign = this.distanceToPoint( line.end ); + + return ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 ); + + }, + + intersectsBox: function ( box ) { + + return box.intersectsPlane( this ); + + }, + + intersectsSphere: function ( sphere ) { + + return sphere.intersectsPlane( this ); + + }, + + coplanarPoint: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Plane: .coplanarPoint() target is now required' ); + target = new Vector3(); + + } + + return target.copy( this.normal ).multiplyScalar( - this.constant ); + + }, + + applyMatrix4: function ( matrix, optionalNormalMatrix ) { + + var normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix ); + + var referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix ); + + var normal = this.normal.applyMatrix3( normalMatrix ).normalize(); + + this.constant = - referencePoint.dot( normal ); + + return this; + + }, + + translate: function ( offset ) { + + this.constant -= offset.dot( this.normal ); + + return this; + + }, + + equals: function ( plane ) { + + return plane.normal.equals( this.normal ) && ( plane.constant === this.constant ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author bhouston / http://clara.io + */ + + var _sphere$1 = new Sphere(); + var _vector$5 = new Vector3(); + + function Frustum( p0, p1, p2, p3, p4, p5 ) { + + this.planes = [ + + ( p0 !== undefined ) ? p0 : new Plane(), + ( p1 !== undefined ) ? p1 : new Plane(), + ( p2 !== undefined ) ? p2 : new Plane(), + ( p3 !== undefined ) ? p3 : new Plane(), + ( p4 !== undefined ) ? p4 : new Plane(), + ( p5 !== undefined ) ? p5 : new Plane() + + ]; + + } + + Object.assign( Frustum.prototype, { + + set: function ( p0, p1, p2, p3, p4, p5 ) { + + var planes = this.planes; + + planes[ 0 ].copy( p0 ); + planes[ 1 ].copy( p1 ); + planes[ 2 ].copy( p2 ); + planes[ 3 ].copy( p3 ); + planes[ 4 ].copy( p4 ); + planes[ 5 ].copy( p5 ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( frustum ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + planes[ i ].copy( frustum.planes[ i ] ); + + } + + return this; + + }, + + setFromMatrix: function ( m ) { + + var planes = this.planes; + var me = m.elements; + var me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ]; + var me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ]; + var me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ]; + var me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ]; + + planes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize(); + planes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize(); + planes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize(); + planes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize(); + planes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize(); + planes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize(); + + return this; + + }, + + intersectsObject: function ( object ) { + + var geometry = object.geometry; + + if ( geometry.boundingSphere === null ) { geometry.computeBoundingSphere(); } + + _sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld ); + + return this.intersectsSphere( _sphere$1 ); + + }, + + intersectsSprite: function ( sprite ) { + + _sphere$1.center.set( 0, 0, 0 ); + _sphere$1.radius = 0.7071067811865476; + _sphere$1.applyMatrix4( sprite.matrixWorld ); + + return this.intersectsSphere( _sphere$1 ); + + }, + + intersectsSphere: function ( sphere ) { + + var planes = this.planes; + var center = sphere.center; + var negRadius = - sphere.radius; + + for ( var i = 0; i < 6; i ++ ) { + + var distance = planes[ i ].distanceToPoint( center ); + + if ( distance < negRadius ) { + + return false; + + } + + } + + return true; + + }, + + intersectsBox: function ( box ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + var plane = planes[ i ]; + + // corner at max distance + + _vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x; + _vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y; + _vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z; + + if ( plane.distanceToPoint( _vector$5 ) < 0 ) { + + return false; + + } + + } + + return true; + + }, + + containsPoint: function ( point ) { + + var planes = this.planes; + + for ( var i = 0; i < 6; i ++ ) { + + if ( planes[ i ].distanceToPoint( point ) < 0 ) { + + return false; + + } + + } + + return true; + + } + + } ); + + var alphamap_fragment = "#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif"; + + var alphamap_pars_fragment = "#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif"; + + var alphatest_fragment = "#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif"; + + var aomap_fragment = "#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif"; + + var aomap_pars_fragment = "#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif"; + + var begin_vertex = "vec3 transformed = vec3( position );"; + + var beginnormal_vertex = "vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif"; + + var bsdfs = "vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif"; + + var bumpmap_pars_fragment = "#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif"; + + var clipping_planes_fragment = "#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t#endif\n#endif"; + + var clipping_planes_pars_fragment = "#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif"; + + var clipping_planes_pars_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvarying vec3 vViewPosition;\n#endif"; + + var clipping_planes_vertex = "#if NUM_CLIPPING_PLANES > 0 && ! defined( STANDARD ) && ! defined( PHONG ) && ! defined( MATCAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif"; + + var color_fragment = "#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif"; + + var color_pars_fragment = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; + + var color_pars_vertex = "#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif"; + + var color_vertex = "#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif"; + + var common = "#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}"; + + var cube_uv_reflection_fragment = "#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV( sampler2D envMap, vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif"; + + var defaultnormal_vertex = "vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\ttransformedNormal = mat3( instanceMatrix ) * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = normalMatrix * objectTangent;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif"; + + var displacementmap_pars_vertex = "#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif"; + + var displacementmap_vertex = "#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif"; + + var emissivemap_fragment = "#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif"; + + var emissivemap_pars_fragment = "#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif"; + + var encodings_fragment = "gl_FragColor = linearToOutputTexel( gl_FragColor );"; + + var encodings_pars_fragment = "\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}"; + + var envmap_fragment = "#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\treflectVec = normalize( reflectVec );\n\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\treflectVec = normalize( reflectVec );\n\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif"; + + var envmap_common_pars_fragment = "#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif"; + + var envmap_pars_fragment = "#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif"; + + var envmap_pars_vertex = "#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif"; + + var envmap_vertex = "#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif"; + + var fog_vertex = "#ifdef USE_FOG\n\tfogDepth = -mvPosition.z;\n#endif"; + + var fog_pars_vertex = "#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif"; + + var fog_fragment = "#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif"; + + var fog_pars_fragment = "#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif"; + + var gradientmap_pars_fragment = "#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif"; + + var lightmap_fragment = "#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif"; + + var lightmap_pars_fragment = "#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif"; + + var lights_lambert_vertex = "vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif"; + + var lights_pars_begin = "uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t\tfloat shadowCameraNear;\n\t\tfloat shadowCameraFar;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif"; + + var envmap_physical_pars_fragment = "#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t vec3 reflectVec = reflect( -viewDir, normal );\n\t\t reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t vec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, queryReflectVec, roughness );\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif"; + + var lights_phong_fragment = "BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;"; + + var lights_phong_pars_fragment = "varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)"; + + var lights_physical_fragment = "PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = saturate( clearcoat );\tmaterial.clearcoatRoughness = clamp( clearcoatRoughness, 0.04, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif"; + + var lights_physical_pars_fragment = "struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}"; + + var lights_fragment_begin = "\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( pointLight.shadow, directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( spotLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectLight.color *= all( bvec3( directionalLight.shadow, directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif"; + + var lights_fragment_maps = "#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif"; + + var lights_fragment_end = "#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif"; + + var logdepthbuf_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 1.0 ? log2( vFragDepth ) * logDepthBufFC * 0.5 : gl_FragCoord.z;\n#endif"; + + var logdepthbuf_pars_fragment = "#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif"; + + var logdepthbuf_pars_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif"; + + var logdepthbuf_vertex = "#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif"; + + var map_fragment = "#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif"; + + var map_pars_fragment = "#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif"; + + var map_particle_fragment = "#ifdef USE_MAP\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif"; + + var map_particle_pars_fragment = "#ifdef USE_MAP\n\tuniform mat3 uvTransform;\n\tuniform sampler2D map;\n#endif"; + + var metalnessmap_fragment = "float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif"; + + var metalnessmap_pars_fragment = "#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif"; + + var morphnormal_vertex = "#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif"; + + var morphtarget_pars_vertex = "#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif"; + + var morphtarget_vertex = "#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif"; + + var normal_fragment_begin = "#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;"; + + var normal_fragment_maps = "#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\t#ifdef USE_TANGENT\n\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, normalScale, normalMap );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif"; + + var normalmap_pars_fragment = "#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec2 normalScale, in sampler2D normalMap ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy *= normalScale;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tbool frontFacing = dot( cross( S, T ), N ) > 0.0;\n\t\t\tmapN.xy *= ( float( frontFacing ) * 2.0 - 1.0 );\n\t\t#else\n\t\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif"; + + var clearcoat_normal_fragment_begin = "#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif"; + + var clearcoat_normal_fragment_maps = "#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 vTBN = mat3( tangent, bitangent, clearcoatNormal );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = clearcoatNormalScale * mapN.xy;\n\t\tclearcoatNormal = normalize( vTBN * mapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatNormalScale, clearcoatNormalMap );\n\t#endif\n#endif"; + + var clearcoat_normalmap_pars_fragment = "#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif"; + + var packing = "vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 encodeHalfRGBA ( vec2 v ) {\n\tvec4 encoded = vec4( 0.0 );\n\tconst vec2 offset = vec2( 1.0 / 255.0, 0.0 );\n\tencoded.xy = vec2( v.x, fract( v.x * 255.0 ) );\n\tencoded.xy = encoded.xy - ( encoded.yy * offset );\n\tencoded.zw = vec2( v.y, fract( v.y * 255.0 ) );\n\tencoded.zw = encoded.zw - ( encoded.ww * offset );\n\treturn encoded;\n}\nvec2 decodeHalfRGBA( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}"; + + var premultiplied_alpha_fragment = "#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif"; + + var project_vertex = "vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;"; + + var dithering_fragment = "#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif"; + + var dithering_pars_fragment = "#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif"; + + var roughnessmap_fragment = "float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif"; + + var roughnessmap_pars_fragment = "#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif"; + + var shadowmap_pars_fragment = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn decodeHalfRGBA( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = ( floor( uv * size - 0.5 ) + 0.5 ) * texelSize;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif"; + + var shadowmap_pars_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif"; + + var shadowmap_vertex = "#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif"; + + var shadowmask_pars_fragment = "float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLight directionalLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= all( bvec2( directionalLight.shadow, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLight spotLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= all( bvec2( spotLight.shadow, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLight pointLight;\n\t#pragma unroll_loop\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= all( bvec2( pointLight.shadow, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}"; + + var skinbase_vertex = "#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif"; + + var skinning_pars_vertex = "#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif"; + + var skinning_vertex = "#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif"; + + var skinnormal_vertex = "#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif"; + + var specularmap_fragment = "float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif"; + + var specularmap_pars_fragment = "#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif"; + + var tonemapping_fragment = "#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif"; + + var tonemapping_pars_fragment = "#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( ( color * ( 2.51 * color + 0.03 ) ) / ( color * ( 2.43 * color + 0.59 ) + 0.14 ) );\n}"; + + var uv_pars_fragment = "#ifdef USE_UV\n\tvarying vec2 vUv;\n#endif"; + + var uv_pars_vertex = "#ifdef USE_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif"; + + var uv_vertex = "#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif"; + + var uv2_pars_fragment = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif"; + + var uv2_pars_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif"; + + var uv2_vertex = "#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif"; + + var worldpos_vertex = "#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif"; + + var background_frag = "uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; + + var background_vert = "varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}"; + + var cube_frag = "uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}"; + + var cube_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}"; + + var depth_frag = "#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}"; + + var depth_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var distanceRGBA_frag = "#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}"; + + var distanceRGBA_vert = "#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}"; + + var equirect_frag = "uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV;\n\tsampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include \n\t#include \n}"; + + var equirect_vert = "varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}"; + + var linedashed_frag = "uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var linedashed_vert = "uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; + + var meshbasic_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshbasic_vert = "#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshlambert_frag = "uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshlambert_vert = "#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshmatcap_frag = "#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshmatcap_vert = "#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}"; + + var meshphong_frag = "#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphong_vert = "#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphysical_frag = "#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSPARENCY\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSPARENCY\n\tuniform float transparency;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSPARENCY\n\t\tdiffuseColor.a *= saturate( 1. - transparency + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var meshphysical_vert = "#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}"; + + var normal_frag = "#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}"; + + var normal_vert = "#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}"; + + var points_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var points_vert = "uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var shadow_frag = "uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n}"; + + var shadow_vert = "#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}"; + + var sprite_frag = "uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n}"; + + var sprite_vert = "uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}"; + + var ShaderChunk = { + alphamap_fragment: alphamap_fragment, + alphamap_pars_fragment: alphamap_pars_fragment, + alphatest_fragment: alphatest_fragment, + aomap_fragment: aomap_fragment, + aomap_pars_fragment: aomap_pars_fragment, + begin_vertex: begin_vertex, + beginnormal_vertex: beginnormal_vertex, + bsdfs: bsdfs, + bumpmap_pars_fragment: bumpmap_pars_fragment, + clipping_planes_fragment: clipping_planes_fragment, + clipping_planes_pars_fragment: clipping_planes_pars_fragment, + clipping_planes_pars_vertex: clipping_planes_pars_vertex, + clipping_planes_vertex: clipping_planes_vertex, + color_fragment: color_fragment, + color_pars_fragment: color_pars_fragment, + color_pars_vertex: color_pars_vertex, + color_vertex: color_vertex, + common: common, + cube_uv_reflection_fragment: cube_uv_reflection_fragment, + defaultnormal_vertex: defaultnormal_vertex, + displacementmap_pars_vertex: displacementmap_pars_vertex, + displacementmap_vertex: displacementmap_vertex, + emissivemap_fragment: emissivemap_fragment, + emissivemap_pars_fragment: emissivemap_pars_fragment, + encodings_fragment: encodings_fragment, + encodings_pars_fragment: encodings_pars_fragment, + envmap_fragment: envmap_fragment, + envmap_common_pars_fragment: envmap_common_pars_fragment, + envmap_pars_fragment: envmap_pars_fragment, + envmap_pars_vertex: envmap_pars_vertex, + envmap_physical_pars_fragment: envmap_physical_pars_fragment, + envmap_vertex: envmap_vertex, + fog_vertex: fog_vertex, + fog_pars_vertex: fog_pars_vertex, + fog_fragment: fog_fragment, + fog_pars_fragment: fog_pars_fragment, + gradientmap_pars_fragment: gradientmap_pars_fragment, + lightmap_fragment: lightmap_fragment, + lightmap_pars_fragment: lightmap_pars_fragment, + lights_lambert_vertex: lights_lambert_vertex, + lights_pars_begin: lights_pars_begin, + lights_phong_fragment: lights_phong_fragment, + lights_phong_pars_fragment: lights_phong_pars_fragment, + lights_physical_fragment: lights_physical_fragment, + lights_physical_pars_fragment: lights_physical_pars_fragment, + lights_fragment_begin: lights_fragment_begin, + lights_fragment_maps: lights_fragment_maps, + lights_fragment_end: lights_fragment_end, + logdepthbuf_fragment: logdepthbuf_fragment, + logdepthbuf_pars_fragment: logdepthbuf_pars_fragment, + logdepthbuf_pars_vertex: logdepthbuf_pars_vertex, + logdepthbuf_vertex: logdepthbuf_vertex, + map_fragment: map_fragment, + map_pars_fragment: map_pars_fragment, + map_particle_fragment: map_particle_fragment, + map_particle_pars_fragment: map_particle_pars_fragment, + metalnessmap_fragment: metalnessmap_fragment, + metalnessmap_pars_fragment: metalnessmap_pars_fragment, + morphnormal_vertex: morphnormal_vertex, + morphtarget_pars_vertex: morphtarget_pars_vertex, + morphtarget_vertex: morphtarget_vertex, + normal_fragment_begin: normal_fragment_begin, + normal_fragment_maps: normal_fragment_maps, + normalmap_pars_fragment: normalmap_pars_fragment, + clearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin, + clearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps, + clearcoat_normalmap_pars_fragment: clearcoat_normalmap_pars_fragment, + packing: packing, + premultiplied_alpha_fragment: premultiplied_alpha_fragment, + project_vertex: project_vertex, + dithering_fragment: dithering_fragment, + dithering_pars_fragment: dithering_pars_fragment, + roughnessmap_fragment: roughnessmap_fragment, + roughnessmap_pars_fragment: roughnessmap_pars_fragment, + shadowmap_pars_fragment: shadowmap_pars_fragment, + shadowmap_pars_vertex: shadowmap_pars_vertex, + shadowmap_vertex: shadowmap_vertex, + shadowmask_pars_fragment: shadowmask_pars_fragment, + skinbase_vertex: skinbase_vertex, + skinning_pars_vertex: skinning_pars_vertex, + skinning_vertex: skinning_vertex, + skinnormal_vertex: skinnormal_vertex, + specularmap_fragment: specularmap_fragment, + specularmap_pars_fragment: specularmap_pars_fragment, + tonemapping_fragment: tonemapping_fragment, + tonemapping_pars_fragment: tonemapping_pars_fragment, + uv_pars_fragment: uv_pars_fragment, + uv_pars_vertex: uv_pars_vertex, + uv_vertex: uv_vertex, + uv2_pars_fragment: uv2_pars_fragment, + uv2_pars_vertex: uv2_pars_vertex, + uv2_vertex: uv2_vertex, + worldpos_vertex: worldpos_vertex, + + background_frag: background_frag, + background_vert: background_vert, + cube_frag: cube_frag, + cube_vert: cube_vert, + depth_frag: depth_frag, + depth_vert: depth_vert, + distanceRGBA_frag: distanceRGBA_frag, + distanceRGBA_vert: distanceRGBA_vert, + equirect_frag: equirect_frag, + equirect_vert: equirect_vert, + linedashed_frag: linedashed_frag, + linedashed_vert: linedashed_vert, + meshbasic_frag: meshbasic_frag, + meshbasic_vert: meshbasic_vert, + meshlambert_frag: meshlambert_frag, + meshlambert_vert: meshlambert_vert, + meshmatcap_frag: meshmatcap_frag, + meshmatcap_vert: meshmatcap_vert, + meshphong_frag: meshphong_frag, + meshphong_vert: meshphong_vert, + meshphysical_frag: meshphysical_frag, + meshphysical_vert: meshphysical_vert, + normal_frag: normal_frag, + normal_vert: normal_vert, + points_frag: points_frag, + points_vert: points_vert, + shadow_frag: shadow_frag, + shadow_vert: shadow_vert, + sprite_frag: sprite_frag, + sprite_vert: sprite_vert + }; + + /** + * Uniforms library for shared webgl shaders + */ + + var UniformsLib = { + + common: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + + map: { value: null }, + uvTransform: { value: new Matrix3() }, + + alphaMap: { value: null }, + + }, + + specularmap: { + + specularMap: { value: null }, + + }, + + envmap: { + + envMap: { value: null }, + flipEnvMap: { value: - 1 }, + reflectivity: { value: 1.0 }, + refractionRatio: { value: 0.98 }, + maxMipLevel: { value: 0 } + + }, + + aomap: { + + aoMap: { value: null }, + aoMapIntensity: { value: 1 } + + }, + + lightmap: { + + lightMap: { value: null }, + lightMapIntensity: { value: 1 } + + }, + + emissivemap: { + + emissiveMap: { value: null } + + }, + + bumpmap: { + + bumpMap: { value: null }, + bumpScale: { value: 1 } + + }, + + normalmap: { + + normalMap: { value: null }, + normalScale: { value: new Vector2( 1, 1 ) } + + }, + + displacementmap: { + + displacementMap: { value: null }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 } + + }, + + roughnessmap: { + + roughnessMap: { value: null } + + }, + + metalnessmap: { + + metalnessMap: { value: null } + + }, + + gradientmap: { + + gradientMap: { value: null } + + }, + + fog: { + + fogDensity: { value: 0.00025 }, + fogNear: { value: 1 }, + fogFar: { value: 2000 }, + fogColor: { value: new Color( 0xffffff ) } + + }, + + lights: { + + ambientLightColor: { value: [] }, + + lightProbe: { value: [] }, + + directionalLights: { value: [], properties: { + direction: {}, + color: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + directionalShadowMap: { value: [] }, + directionalShadowMatrix: { value: [] }, + + spotLights: { value: [], properties: { + color: {}, + position: {}, + direction: {}, + distance: {}, + coneCos: {}, + penumbraCos: {}, + decay: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {} + } }, + + spotShadowMap: { value: [] }, + spotShadowMatrix: { value: [] }, + + pointLights: { value: [], properties: { + color: {}, + position: {}, + decay: {}, + distance: {}, + + shadow: {}, + shadowBias: {}, + shadowRadius: {}, + shadowMapSize: {}, + shadowCameraNear: {}, + shadowCameraFar: {} + } }, + + pointShadowMap: { value: [] }, + pointShadowMatrix: { value: [] }, + + hemisphereLights: { value: [], properties: { + direction: {}, + skyColor: {}, + groundColor: {} + } }, + + // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src + rectAreaLights: { value: [], properties: { + color: {}, + position: {}, + width: {}, + height: {} + } } + + }, + + points: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + size: { value: 1.0 }, + scale: { value: 1.0 }, + map: { value: null }, + uvTransform: { value: new Matrix3() } + + }, + + sprite: { + + diffuse: { value: new Color( 0xeeeeee ) }, + opacity: { value: 1.0 }, + center: { value: new Vector2( 0.5, 0.5 ) }, + rotation: { value: 0.0 }, + map: { value: null }, + uvTransform: { value: new Matrix3() } + + } + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author mikael emtinger / http://gomo.se/ + */ + + var ShaderLib = { + + basic: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.meshbasic_vert, + fragmentShader: ShaderChunk.meshbasic_frag + + }, + + lambert: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) } + } + ] ), + + vertexShader: ShaderChunk.meshlambert_vert, + fragmentShader: ShaderChunk.meshlambert_frag + + }, + + phong: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.specularmap, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.gradientmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) }, + specular: { value: new Color( 0x111111 ) }, + shininess: { value: 30 } + } + ] ), + + vertexShader: ShaderChunk.meshphong_vert, + fragmentShader: ShaderChunk.meshphong_frag + + }, + + standard: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.envmap, + UniformsLib.aomap, + UniformsLib.lightmap, + UniformsLib.emissivemap, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.roughnessmap, + UniformsLib.metalnessmap, + UniformsLib.fog, + UniformsLib.lights, + { + emissive: { value: new Color( 0x000000 ) }, + roughness: { value: 0.5 }, + metalness: { value: 0.5 }, + envMapIntensity: { value: 1 } // temporary + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + + }, + + matcap: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + UniformsLib.fog, + { + matcap: { value: null } + } + ] ), + + vertexShader: ShaderChunk.meshmatcap_vert, + fragmentShader: ShaderChunk.meshmatcap_frag + + }, + + points: { + + uniforms: mergeUniforms( [ + UniformsLib.points, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.points_vert, + fragmentShader: ShaderChunk.points_frag + + }, + + dashed: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.fog, + { + scale: { value: 1 }, + dashSize: { value: 1 }, + totalSize: { value: 2 } + } + ] ), + + vertexShader: ShaderChunk.linedashed_vert, + fragmentShader: ShaderChunk.linedashed_frag + + }, + + depth: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.displacementmap + ] ), + + vertexShader: ShaderChunk.depth_vert, + fragmentShader: ShaderChunk.depth_frag + + }, + + normal: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.bumpmap, + UniformsLib.normalmap, + UniformsLib.displacementmap, + { + opacity: { value: 1.0 } + } + ] ), + + vertexShader: ShaderChunk.normal_vert, + fragmentShader: ShaderChunk.normal_frag + + }, + + sprite: { + + uniforms: mergeUniforms( [ + UniformsLib.sprite, + UniformsLib.fog + ] ), + + vertexShader: ShaderChunk.sprite_vert, + fragmentShader: ShaderChunk.sprite_frag + + }, + + background: { + + uniforms: { + uvTransform: { value: new Matrix3() }, + t2D: { value: null }, + }, + + vertexShader: ShaderChunk.background_vert, + fragmentShader: ShaderChunk.background_frag + + }, + /* ------------------------------------------------------------------------- + // Cube map shader + ------------------------------------------------------------------------- */ + + cube: { + + uniforms: { + tCube: { value: null }, + tFlip: { value: - 1 }, + opacity: { value: 1.0 } + }, + + vertexShader: ShaderChunk.cube_vert, + fragmentShader: ShaderChunk.cube_frag + + }, + + equirect: { + + uniforms: { + tEquirect: { value: null }, + }, + + vertexShader: ShaderChunk.equirect_vert, + fragmentShader: ShaderChunk.equirect_frag + + }, + + distanceRGBA: { + + uniforms: mergeUniforms( [ + UniformsLib.common, + UniformsLib.displacementmap, + { + referencePosition: { value: new Vector3() }, + nearDistance: { value: 1 }, + farDistance: { value: 1000 } + } + ] ), + + vertexShader: ShaderChunk.distanceRGBA_vert, + fragmentShader: ShaderChunk.distanceRGBA_frag + + }, + + shadow: { + + uniforms: mergeUniforms( [ + UniformsLib.lights, + UniformsLib.fog, + { + color: { value: new Color( 0x00000 ) }, + opacity: { value: 1.0 } + } ] ), + + vertexShader: ShaderChunk.shadow_vert, + fragmentShader: ShaderChunk.shadow_frag + + } + + }; + + ShaderLib.physical = { + + uniforms: mergeUniforms( [ + ShaderLib.standard.uniforms, + { + transparency: { value: 0 }, + clearcoat: { value: 0 }, + clearcoatRoughness: { value: 0 }, + sheen: { value: new Color( 0x000000 ) }, + clearcoatNormalScale: { value: new Vector2( 1, 1 ) }, + clearcoatNormalMap: { value: null }, + } + ] ), + + vertexShader: ShaderChunk.meshphysical_vert, + fragmentShader: ShaderChunk.meshphysical_frag + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLAnimation() { + + var context = null; + var isAnimating = false; + var animationLoop = null; + + function onAnimationFrame( time, frame ) { + + if ( isAnimating === false ) { return; } + + animationLoop( time, frame ); + + context.requestAnimationFrame( onAnimationFrame ); + + } + + return { + + start: function () { + + if ( isAnimating === true ) { return; } + if ( animationLoop === null ) { return; } + + context.requestAnimationFrame( onAnimationFrame ); + + isAnimating = true; + + }, + + stop: function () { + + isAnimating = false; + + }, + + setAnimationLoop: function ( callback ) { + + animationLoop = callback; + + }, + + setContext: function ( value ) { + + context = value; + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLAttributes( gl ) { + + var buffers = new WeakMap(); + + function createBuffer( attribute, bufferType ) { + + var array = attribute.array; + var usage = attribute.dynamic ? 35048 : 35044; + + var buffer = gl.createBuffer(); + + gl.bindBuffer( bufferType, buffer ); + gl.bufferData( bufferType, array, usage ); + + attribute.onUploadCallback(); + + var type = 5126; + + if ( array instanceof Float32Array ) { + + type = 5126; + + } else if ( array instanceof Float64Array ) { + + console.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' ); + + } else if ( array instanceof Uint16Array ) { + + type = 5123; + + } else if ( array instanceof Int16Array ) { + + type = 5122; + + } else if ( array instanceof Uint32Array ) { + + type = 5125; + + } else if ( array instanceof Int32Array ) { + + type = 5124; + + } else if ( array instanceof Int8Array ) { + + type = 5120; + + } else if ( array instanceof Uint8Array ) { + + type = 5121; + + } + + return { + buffer: buffer, + type: type, + bytesPerElement: array.BYTES_PER_ELEMENT, + version: attribute.version + }; + + } + + function updateBuffer( buffer, attribute, bufferType ) { + + var array = attribute.array; + var updateRange = attribute.updateRange; + + gl.bindBuffer( bufferType, buffer ); + + if ( attribute.dynamic === false ) { + + gl.bufferData( bufferType, array, 35044 ); + + } else if ( updateRange.count === - 1 ) { + + // Not using update ranges + + gl.bufferSubData( bufferType, 0, array ); + + } else if ( updateRange.count === 0 ) { + + console.error( 'THREE.WebGLObjects.updateBuffer: dynamic THREE.BufferAttribute marked as needsUpdate but updateRange.count is 0, ensure you are using set methods or updating manually.' ); + + } else { + + gl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT, + array.subarray( updateRange.offset, updateRange.offset + updateRange.count ) ); + + updateRange.count = - 1; // reset range + + } + + } + + // + + function get( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) { attribute = attribute.data; } + + return buffers.get( attribute ); + + } + + function remove( attribute ) { + + if ( attribute.isInterleavedBufferAttribute ) { attribute = attribute.data; } + + var data = buffers.get( attribute ); + + if ( data ) { + + gl.deleteBuffer( data.buffer ); + + buffers.delete( attribute ); + + } + + } + + function update( attribute, bufferType ) { + + if ( attribute.isInterleavedBufferAttribute ) { attribute = attribute.data; } + + var data = buffers.get( attribute ); + + if ( data === undefined ) { + + buffers.set( attribute, createBuffer( attribute, bufferType ) ); + + } else if ( data.version < attribute.version ) { + + updateBuffer( data.buffer, attribute, bufferType ); + + data.version = attribute.version; + + } + + } + + return { + + get: get, + remove: remove, + update: update + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // PlaneGeometry + + function PlaneGeometry( width, height, widthSegments, heightSegments ) { + + Geometry.call( this ); + + this.type = 'PlaneGeometry'; + + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + this.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) ); + this.mergeVertices(); + + } + + PlaneGeometry.prototype = Object.create( Geometry.prototype ); + PlaneGeometry.prototype.constructor = PlaneGeometry; + + // PlaneBufferGeometry + + function PlaneBufferGeometry( width, height, widthSegments, heightSegments ) { + + BufferGeometry.call( this ); + + this.type = 'PlaneBufferGeometry'; + + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + width = width || 1; + height = height || 1; + + var width_half = width / 2; + var height_half = height / 2; + + var gridX = Math.floor( widthSegments ) || 1; + var gridY = Math.floor( heightSegments ) || 1; + + var gridX1 = gridX + 1; + var gridY1 = gridY + 1; + + var segment_width = width / gridX; + var segment_height = height / gridY; + + var ix, iy; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // generate vertices, normals and uvs + + for ( iy = 0; iy < gridY1; iy ++ ) { + + var y = iy * segment_height - height_half; + + for ( ix = 0; ix < gridX1; ix ++ ) { + + var x = ix * segment_width - width_half; + + vertices.push( x, - y, 0 ); + + normals.push( 0, 0, 1 ); + + uvs.push( ix / gridX ); + uvs.push( 1 - ( iy / gridY ) ); + + } + + } + + // indices + + for ( iy = 0; iy < gridY; iy ++ ) { + + for ( ix = 0; ix < gridX; ix ++ ) { + + var a = ix + gridX1 * iy; + var b = ix + gridX1 * ( iy + 1 ); + var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); + var d = ( ix + 1 ) + gridX1 * iy; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + PlaneBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PlaneBufferGeometry.prototype.constructor = PlaneBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLBackground( renderer, state, objects, premultipliedAlpha ) { + + var clearColor = new Color( 0x000000 ); + var clearAlpha = 0; + + var planeMesh; + var boxMesh; + // Store the current background texture and its `version` + // so we can recompile the material accordingly. + var currentBackground = null; + var currentBackgroundVersion = 0; + + function render( renderList, scene, camera, forceClear ) { + + var background = scene.background; + + // Ignore background in AR + // TODO: Reconsider this. + + var vr = renderer.vr; + var session = vr.getSession && vr.getSession(); + + if ( session && session.environmentBlendMode === 'additive' ) { + + background = null; + + } + + if ( background === null ) { + + setClear( clearColor, clearAlpha ); + currentBackground = null; + currentBackgroundVersion = 0; + + } else if ( background && background.isColor ) { + + setClear( background, 1 ); + forceClear = true; + currentBackground = null; + currentBackgroundVersion = 0; + + } + + if ( renderer.autoClear || forceClear ) { + + renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil ); + + } + + if ( background && ( background.isCubeTexture || background.isWebGLRenderTargetCube ) ) { + + if ( boxMesh === undefined ) { + + boxMesh = new Mesh( + new BoxBufferGeometry( 1, 1, 1 ), + new ShaderMaterial( { + type: 'BackgroundCubeMaterial', + uniforms: cloneUniforms( ShaderLib.cube.uniforms ), + vertexShader: ShaderLib.cube.vertexShader, + fragmentShader: ShaderLib.cube.fragmentShader, + side: BackSide, + depthTest: false, + depthWrite: false, + fog: false + } ) + ); + + boxMesh.geometry.removeAttribute( 'normal' ); + boxMesh.geometry.removeAttribute( 'uv' ); + + boxMesh.onBeforeRender = function ( renderer, scene, camera ) { + + this.matrixWorld.copyPosition( camera.matrixWorld ); + + }; + + // enable code injection for non-built-in material + Object.defineProperty( boxMesh.material, 'map', { + + get: function () { + + return this.uniforms.tCube.value; + + } + + } ); + + objects.update( boxMesh ); + + } + + var texture = background.isWebGLRenderTargetCube ? background.texture : background; + boxMesh.material.uniforms.tCube.value = texture; + boxMesh.material.uniforms.tFlip.value = ( background.isWebGLRenderTargetCube ) ? 1 : - 1; + + if ( currentBackground !== background || + currentBackgroundVersion !== texture.version ) { + + boxMesh.material.needsUpdate = true; + + currentBackground = background; + currentBackgroundVersion = texture.version; + + } + + // push to the pre-sorted opaque render list + renderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null ); + + } else if ( background && background.isTexture ) { + + if ( planeMesh === undefined ) { + + planeMesh = new Mesh( + new PlaneBufferGeometry( 2, 2 ), + new ShaderMaterial( { + type: 'BackgroundMaterial', + uniforms: cloneUniforms( ShaderLib.background.uniforms ), + vertexShader: ShaderLib.background.vertexShader, + fragmentShader: ShaderLib.background.fragmentShader, + side: FrontSide, + depthTest: false, + depthWrite: false, + fog: false + } ) + ); + + planeMesh.geometry.removeAttribute( 'normal' ); + + // enable code injection for non-built-in material + Object.defineProperty( planeMesh.material, 'map', { + + get: function () { + + return this.uniforms.t2D.value; + + } + + } ); + + objects.update( planeMesh ); + + } + + planeMesh.material.uniforms.t2D.value = background; + + if ( background.matrixAutoUpdate === true ) { + + background.updateMatrix(); + + } + + planeMesh.material.uniforms.uvTransform.value.copy( background.matrix ); + + if ( currentBackground !== background || + currentBackgroundVersion !== background.version ) { + + planeMesh.material.needsUpdate = true; + + currentBackground = background; + currentBackgroundVersion = background.version; + + } + + + // push to the pre-sorted opaque render list + renderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null ); + + } + + } + + function setClear( color, alpha ) { + + state.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha ); + + } + + return { + + getClearColor: function () { + + return clearColor; + + }, + setClearColor: function ( color, alpha ) { + + clearColor.set( color ); + clearAlpha = alpha !== undefined ? alpha : 1; + setClear( clearColor, clearAlpha ); + + }, + getClearAlpha: function () { + + return clearAlpha; + + }, + setClearAlpha: function ( alpha ) { + + clearAlpha = alpha; + setClear( clearColor, clearAlpha ); + + }, + render: render + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLBufferRenderer( gl, extensions, info, capabilities ) { + + var mode; + + function setMode( value ) { + + mode = value; + + } + + function render( start, count ) { + + gl.drawArrays( mode, start, count ); + + info.update( count, mode ); + + } + + function renderInstances( geometry, start, count, primcount ) { + + if ( primcount === 0 ) { return; } + + var extension, methodName; + + if ( capabilities.isWebGL2 ) { + + extension = gl; + methodName = 'drawArraysInstanced'; + + } else { + + extension = extensions.get( 'ANGLE_instanced_arrays' ); + methodName = 'drawArraysInstancedANGLE'; + + if ( extension === null ) { + + console.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + } + + extension[ methodName ]( mode, start, count, primcount ); + + info.update( count, mode, primcount ); + + } + + // + + this.setMode = setMode; + this.render = render; + this.renderInstances = renderInstances; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLCapabilities( gl, extensions, parameters ) { + + var maxAnisotropy; + + function getMaxAnisotropy() { + + if ( maxAnisotropy !== undefined ) { return maxAnisotropy; } + + var extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + + if ( extension !== null ) { + + maxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT ); + + } else { + + maxAnisotropy = 0; + + } + + return maxAnisotropy; + + } + + function getMaxPrecision( precision ) { + + if ( precision === 'highp' ) { + + if ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 && + gl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) { + + return 'highp'; + + } + + precision = 'mediump'; + + } + + if ( precision === 'mediump' ) { + + if ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 && + gl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) { + + return 'mediump'; + + } + + } + + return 'lowp'; + + } + + var isWebGL2 = typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext; + + var precision = parameters.precision !== undefined ? parameters.precision : 'highp'; + var maxPrecision = getMaxPrecision( precision ); + + if ( maxPrecision !== precision ) { + + console.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' ); + precision = maxPrecision; + + } + + var logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true; + + var maxTextures = gl.getParameter( 34930 ); + var maxVertexTextures = gl.getParameter( 35660 ); + var maxTextureSize = gl.getParameter( 3379 ); + var maxCubemapSize = gl.getParameter( 34076 ); + + var maxAttributes = gl.getParameter( 34921 ); + var maxVertexUniforms = gl.getParameter( 36347 ); + var maxVaryings = gl.getParameter( 36348 ); + var maxFragmentUniforms = gl.getParameter( 36349 ); + + var vertexTextures = maxVertexTextures > 0; + var floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' ); + var floatVertexTextures = vertexTextures && floatFragmentTextures; + + var maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0; + + return { + + isWebGL2: isWebGL2, + + getMaxAnisotropy: getMaxAnisotropy, + getMaxPrecision: getMaxPrecision, + + precision: precision, + logarithmicDepthBuffer: logarithmicDepthBuffer, + + maxTextures: maxTextures, + maxVertexTextures: maxVertexTextures, + maxTextureSize: maxTextureSize, + maxCubemapSize: maxCubemapSize, + + maxAttributes: maxAttributes, + maxVertexUniforms: maxVertexUniforms, + maxVaryings: maxVaryings, + maxFragmentUniforms: maxFragmentUniforms, + + vertexTextures: vertexTextures, + floatFragmentTextures: floatFragmentTextures, + floatVertexTextures: floatVertexTextures, + + maxSamples: maxSamples + + }; + + } + + /** + * @author tschw + */ + + function WebGLClipping() { + + var scope = this, + + globalState = null, + numGlobalPlanes = 0, + localClippingEnabled = false, + renderingShadows = false, + + plane = new Plane(), + viewNormalMatrix = new Matrix3(), + + uniform = { value: null, needsUpdate: false }; + + this.uniform = uniform; + this.numPlanes = 0; + this.numIntersection = 0; + + this.init = function ( planes, enableLocalClipping, camera ) { + + var enabled = + planes.length !== 0 || + enableLocalClipping || + // enable state of previous frame - the clipping code has to + // run another frame in order to reset the state: + numGlobalPlanes !== 0 || + localClippingEnabled; + + localClippingEnabled = enableLocalClipping; + + globalState = projectPlanes( planes, camera, 0 ); + numGlobalPlanes = planes.length; + + return enabled; + + }; + + this.beginShadows = function () { + + renderingShadows = true; + projectPlanes( null ); + + }; + + this.endShadows = function () { + + renderingShadows = false; + resetGlobalState(); + + }; + + this.setState = function ( planes, clipIntersection, clipShadows, camera, cache, fromCache ) { + + if ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) { + + // there's no local clipping + + if ( renderingShadows ) { + + // there's no global clipping + + projectPlanes( null ); + + } else { + + resetGlobalState(); + + } + + } else { + + var nGlobal = renderingShadows ? 0 : numGlobalPlanes, + lGlobal = nGlobal * 4, + + dstArray = cache.clippingState || null; + + uniform.value = dstArray; // ensure unique state + + dstArray = projectPlanes( planes, camera, lGlobal, fromCache ); + + for ( var i = 0; i !== lGlobal; ++ i ) { + + dstArray[ i ] = globalState[ i ]; + + } + + cache.clippingState = dstArray; + this.numIntersection = clipIntersection ? this.numPlanes : 0; + this.numPlanes += nGlobal; + + } + + + }; + + function resetGlobalState() { + + if ( uniform.value !== globalState ) { + + uniform.value = globalState; + uniform.needsUpdate = numGlobalPlanes > 0; + + } + + scope.numPlanes = numGlobalPlanes; + scope.numIntersection = 0; + + } + + function projectPlanes( planes, camera, dstOffset, skipTransform ) { + + var nPlanes = planes !== null ? planes.length : 0, + dstArray = null; + + if ( nPlanes !== 0 ) { + + dstArray = uniform.value; + + if ( skipTransform !== true || dstArray === null ) { + + var flatSize = dstOffset + nPlanes * 4, + viewMatrix = camera.matrixWorldInverse; + + viewNormalMatrix.getNormalMatrix( viewMatrix ); + + if ( dstArray === null || dstArray.length < flatSize ) { + + dstArray = new Float32Array( flatSize ); + + } + + for ( var i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) { + + plane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix ); + + plane.normal.toArray( dstArray, i4 ); + dstArray[ i4 + 3 ] = plane.constant; + + } + + } + + uniform.value = dstArray; + uniform.needsUpdate = true; + + } + + scope.numPlanes = nPlanes; + + return dstArray; + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLExtensions( gl ) { + + var extensions = {}; + + return { + + get: function ( name ) { + + if ( extensions[ name ] !== undefined ) { + + return extensions[ name ]; + + } + + var extension; + + switch ( name ) { + + case 'WEBGL_depth_texture': + extension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' ); + break; + + case 'EXT_texture_filter_anisotropic': + extension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' ); + break; + + case 'WEBGL_compressed_texture_s3tc': + extension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' ); + break; + + case 'WEBGL_compressed_texture_pvrtc': + extension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' ); + break; + + default: + extension = gl.getExtension( name ); + + } + + if ( extension === null ) { + + console.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' ); + + } + + extensions[ name ] = extension; + + return extension; + + } + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLGeometries( gl, attributes, info ) { + + var geometries = new WeakMap(); + var wireframeAttributes = new WeakMap(); + + function onGeometryDispose( event ) { + + var geometry = event.target; + var buffergeometry = geometries.get( geometry ); + + if ( buffergeometry.index !== null ) { + + attributes.remove( buffergeometry.index ); + + } + + for ( var name in buffergeometry.attributes ) { + + attributes.remove( buffergeometry.attributes[ name ] ); + + } + + geometry.removeEventListener( 'dispose', onGeometryDispose ); + + geometries.delete( geometry ); + + var attribute = wireframeAttributes.get( buffergeometry ); + + if ( attribute ) { + + attributes.remove( attribute ); + wireframeAttributes.delete( buffergeometry ); + + } + + // + + info.memory.geometries --; + + } + + function get( object, geometry ) { + + var buffergeometry = geometries.get( geometry ); + + if ( buffergeometry ) { return buffergeometry; } + + geometry.addEventListener( 'dispose', onGeometryDispose ); + + if ( geometry.isBufferGeometry ) { + + buffergeometry = geometry; + + } else if ( geometry.isGeometry ) { + + if ( geometry._bufferGeometry === undefined ) { + + geometry._bufferGeometry = new BufferGeometry().setFromObject( object ); + + } + + buffergeometry = geometry._bufferGeometry; + + } + + geometries.set( geometry, buffergeometry ); + + info.memory.geometries ++; + + return buffergeometry; + + } + + function update( geometry ) { + + var index = geometry.index; + var geometryAttributes = geometry.attributes; + + if ( index !== null ) { + + attributes.update( index, 34963 ); + + } + + for ( var name in geometryAttributes ) { + + attributes.update( geometryAttributes[ name ], 34962 ); + + } + + // morph targets + + var morphAttributes = geometry.morphAttributes; + + for ( var name in morphAttributes ) { + + var array = morphAttributes[ name ]; + + for ( var i = 0, l = array.length; i < l; i ++ ) { + + attributes.update( array[ i ], 34962 ); + + } + + } + + } + + function updateWireframeAttribute( geometry ) { + + var indices = []; + + var geometryIndex = geometry.index; + var geometryPosition = geometry.attributes.position; + var version = 0; + + if ( geometryIndex !== null ) { + + var array = geometryIndex.array; + version = geometryIndex.version; + + for ( var i = 0, l = array.length; i < l; i += 3 ) { + + var a = array[ i + 0 ]; + var b = array[ i + 1 ]; + var c = array[ i + 2 ]; + + indices.push( a, b, b, c, c, a ); + + } + + } else { + + var array = geometryPosition.array; + version = geometryPosition.version; + + for ( var i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) { + + var a = i + 0; + var b = i + 1; + var c = i + 2; + + indices.push( a, b, b, c, c, a ); + + } + + } + + var attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 ); + attribute.version = version; + + attributes.update( attribute, 34963 ); + + // + + var previousAttribute = wireframeAttributes.get( geometry ); + + if ( previousAttribute ) { attributes.remove( previousAttribute ); } + + // + + wireframeAttributes.set( geometry, attribute ); + + } + + function getWireframeAttribute( geometry ) { + + var currentAttribute = wireframeAttributes.get( geometry ); + + if ( currentAttribute ) { + + var geometryIndex = geometry.index; + + if ( geometryIndex !== null ) { + + // if the attribute is obsolete, create a new one + + if ( currentAttribute.version < geometryIndex.version ) { + + updateWireframeAttribute( geometry ); + + } + + } + + } else { + + updateWireframeAttribute( geometry ); + + } + + return wireframeAttributes.get( geometry ); + + } + + return { + + get: get, + update: update, + + getWireframeAttribute: getWireframeAttribute + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) { + + var mode; + + function setMode( value ) { + + mode = value; + + } + + var type, bytesPerElement; + + function setIndex( value ) { + + type = value.type; + bytesPerElement = value.bytesPerElement; + + } + + function render( start, count ) { + + gl.drawElements( mode, count, type, start * bytesPerElement ); + + info.update( count, mode ); + + } + + function renderInstances( geometry, start, count, primcount ) { + + if ( primcount === 0 ) { return; } + + var extension, methodName; + + if ( capabilities.isWebGL2 ) { + + extension = gl; + methodName = 'drawElementsInstanced'; + + } else { + + extension = extensions.get( 'ANGLE_instanced_arrays' ); + methodName = 'drawElementsInstancedANGLE'; + + if ( extension === null ) { + + console.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' ); + return; + + } + + } + + extension[ methodName ]( mode, count, type, start * bytesPerElement, primcount ); + + info.update( count, mode, primcount ); + + } + + // + + this.setMode = setMode; + this.setIndex = setIndex; + this.render = render; + this.renderInstances = renderInstances; + + } + + /** + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WebGLInfo( gl ) { + + var memory = { + geometries: 0, + textures: 0 + }; + + var render = { + frame: 0, + calls: 0, + triangles: 0, + points: 0, + lines: 0 + }; + + function update( count, mode, instanceCount ) { + + instanceCount = instanceCount || 1; + + render.calls ++; + + switch ( mode ) { + + case 4: + render.triangles += instanceCount * ( count / 3 ); + break; + + case 5: + case 6: + render.triangles += instanceCount * ( count - 2 ); + break; + + case 1: + render.lines += instanceCount * ( count / 2 ); + break; + + case 3: + render.lines += instanceCount * ( count - 1 ); + break; + + case 2: + render.lines += instanceCount * count; + break; + + case 0: + render.points += instanceCount * count; + break; + + default: + console.error( 'THREE.WebGLInfo: Unknown draw mode:', mode ); + break; + + } + + } + + function reset() { + + render.frame ++; + render.calls = 0; + render.triangles = 0; + render.points = 0; + render.lines = 0; + + } + + return { + memory: memory, + render: render, + programs: null, + autoReset: true, + reset: reset, + update: update + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function absNumericalSort( a, b ) { + + return Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] ); + + } + + function WebGLMorphtargets( gl ) { + + var influencesList = {}; + var morphInfluences = new Float32Array( 8 ); + + function update( object, geometry, material, program ) { + + var objectInfluences = object.morphTargetInfluences; + + var length = objectInfluences.length; + + var influences = influencesList[ geometry.id ]; + + if ( influences === undefined ) { + + // initialise list + + influences = []; + + for ( var i = 0; i < length; i ++ ) { + + influences[ i ] = [ i, 0 ]; + + } + + influencesList[ geometry.id ] = influences; + + } + + var morphTargets = material.morphTargets && geometry.morphAttributes.position; + var morphNormals = material.morphNormals && geometry.morphAttributes.normal; + + // Remove current morphAttributes + + for ( var i = 0; i < length; i ++ ) { + + var influence = influences[ i ]; + + if ( influence[ 1 ] !== 0 ) { + + if ( morphTargets ) { geometry.removeAttribute( 'morphTarget' + i ); } + if ( morphNormals ) { geometry.removeAttribute( 'morphNormal' + i ); } + + } + + } + + // Collect influences + + for ( var i = 0; i < length; i ++ ) { + + var influence = influences[ i ]; + + influence[ 0 ] = i; + influence[ 1 ] = objectInfluences[ i ]; + + } + + influences.sort( absNumericalSort ); + + // Add morphAttributes + + for ( var i = 0; i < 8; i ++ ) { + + var influence = influences[ i ]; + + if ( influence ) { + + var index = influence[ 0 ]; + var value = influence[ 1 ]; + + if ( value ) { + + if ( morphTargets ) { geometry.addAttribute( 'morphTarget' + i, morphTargets[ index ] ); } + if ( morphNormals ) { geometry.addAttribute( 'morphNormal' + i, morphNormals[ index ] ); } + + morphInfluences[ i ] = value; + continue; + + } + + } + + morphInfluences[ i ] = 0; + + } + + program.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences ); + + } + + return { + + update: update + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLObjects( gl, geometries, attributes, info ) { + + var updateList = {}; + + function update( object ) { + + var frame = info.render.frame; + + var geometry = object.geometry; + var buffergeometry = geometries.get( object, geometry ); + + // Update once per frame + + if ( updateList[ buffergeometry.id ] !== frame ) { + + if ( geometry.isGeometry ) { + + buffergeometry.updateFromObject( object ); + + } + + geometries.update( buffergeometry ); + + updateList[ buffergeometry.id ] = frame; + + } + + if ( object.isInstancedMesh ) { + + attributes.update( object.instanceMatrix, 34962 ); + + } + + return buffergeometry; + + } + + function dispose() { + + updateList = {}; + + } + + return { + + update: update, + dispose: dispose + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) { + + images = images !== undefined ? images : []; + mapping = mapping !== undefined ? mapping : CubeReflectionMapping; + format = format !== undefined ? format : RGBFormat; + + Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.flipY = false; + + } + + CubeTexture.prototype = Object.create( Texture.prototype ); + CubeTexture.prototype.constructor = CubeTexture; + + CubeTexture.prototype.isCubeTexture = true; + + Object.defineProperty( CubeTexture.prototype, 'images', { + + get: function () { + + return this.image; + + }, + + set: function ( value ) { + + this.image = value; + + } + + } ); + + /** + * @author Takahiro https://github.com/takahirox + */ + + function DataTexture2DArray( data, width, height, depth ) { + + Texture.call( this, null ); + + this.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 }; + + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + + this.wrapR = ClampToEdgeWrapping; + + this.generateMipmaps = false; + this.flipY = false; + + this.needsUpdate = true; + + } + + DataTexture2DArray.prototype = Object.create( Texture.prototype ); + DataTexture2DArray.prototype.constructor = DataTexture2DArray; + DataTexture2DArray.prototype.isDataTexture2DArray = true; + + /** + * @author Artur Trzesiok + */ + + function DataTexture3D( data, width, height, depth ) { + + // We're going to add .setXXX() methods for setting properties later. + // Users can still set in DataTexture3D directly. + // + // var texture = new THREE.DataTexture3D( data, width, height, depth ); + // texture.anisotropy = 16; + // + // See #14839 + + Texture.call( this, null ); + + this.image = { data: data || null, width: width || 1, height: height || 1, depth: depth || 1 }; + + this.magFilter = NearestFilter; + this.minFilter = NearestFilter; + + this.wrapR = ClampToEdgeWrapping; + + this.generateMipmaps = false; + this.flipY = false; + + this.needsUpdate = true; + + + } + + DataTexture3D.prototype = Object.create( Texture.prototype ); + DataTexture3D.prototype.constructor = DataTexture3D; + DataTexture3D.prototype.isDataTexture3D = true; + + /** + * @author tschw + * @author Mugen87 / https://github.com/Mugen87 + * @author mrdoob / http://mrdoob.com/ + * + * Uniforms of a program. + * Those form a tree structure with a special top-level container for the root, + * which you get by calling 'new WebGLUniforms( gl, program )'. + * + * + * Properties of inner nodes including the top-level container: + * + * .seq - array of nested uniforms + * .map - nested uniforms by name + * + * + * Methods of all nodes except the top-level container: + * + * .setValue( gl, value, [textures] ) + * + * uploads a uniform value(s) + * the 'textures' parameter is needed for sampler uniforms + * + * + * Static methods of the top-level container (textures factorizations): + * + * .upload( gl, seq, values, textures ) + * + * sets uniforms in 'seq' to 'values[id].value' + * + * .seqWithValue( seq, values ) : filteredSeq + * + * filters 'seq' entries with corresponding entry in values + * + * + * Methods of the top-level container (textures factorizations): + * + * .setValue( gl, name, value, textures ) + * + * sets uniform with name 'name' to 'value' + * + * .setOptional( gl, obj, prop ) + * + * like .set for an optional property of the object + * + */ + + var emptyTexture = new Texture(); + var emptyTexture2dArray = new DataTexture2DArray(); + var emptyTexture3d = new DataTexture3D(); + var emptyCubeTexture = new CubeTexture(); + + // --- Utilities --- + + // Array Caches (provide typed arrays for temporary by size) + + var arrayCacheF32 = []; + var arrayCacheI32 = []; + + // Float32Array caches used for uploading Matrix uniforms + + var mat4array = new Float32Array( 16 ); + var mat3array = new Float32Array( 9 ); + var mat2array = new Float32Array( 4 ); + + // Flattening for arrays of vectors and matrices + + function flatten( array, nBlocks, blockSize ) { + + var firstElem = array[ 0 ]; + + if ( firstElem <= 0 || firstElem > 0 ) { return array; } + // unoptimized: ! isNaN( firstElem ) + // see http://jacksondunstan.com/articles/983 + + var n = nBlocks * blockSize, + r = arrayCacheF32[ n ]; + + if ( r === undefined ) { + + r = new Float32Array( n ); + arrayCacheF32[ n ] = r; + + } + + if ( nBlocks !== 0 ) { + + firstElem.toArray( r, 0 ); + + for ( var i = 1, offset = 0; i !== nBlocks; ++ i ) { + + offset += blockSize; + array[ i ].toArray( r, offset ); + + } + + } + + return r; + + } + + function arraysEqual( a, b ) { + + if ( a.length !== b.length ) { return false; } + + for ( var i = 0, l = a.length; i < l; i ++ ) { + + if ( a[ i ] !== b[ i ] ) { return false; } + + } + + return true; + + } + + function copyArray( a, b ) { + + for ( var i = 0, l = b.length; i < l; i ++ ) { + + a[ i ] = b[ i ]; + + } + + } + + // Texture unit allocation + + function allocTexUnits( textures, n ) { + + var r = arrayCacheI32[ n ]; + + if ( r === undefined ) { + + r = new Int32Array( n ); + arrayCacheI32[ n ] = r; + + } + + for ( var i = 0; i !== n; ++ i ) + { r[ i ] = textures.allocateTextureUnit(); } + + return r; + + } + + // --- Setters --- + + // Note: Defining these methods externally, because they come in a bunch + // and this way their names minify. + + // Single scalar + + function setValueV1f( gl, v ) { + + var cache = this.cache; + + if ( cache[ 0 ] === v ) { return; } + + gl.uniform1f( this.addr, v ); + + cache[ 0 ] = v; + + } + + // Single float vector (from flat array or THREE.VectorN) + + function setValueV2f( gl, v ) { + + var cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) { + + gl.uniform2f( this.addr, v.x, v.y ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + + } + + } else { + + if ( arraysEqual( cache, v ) ) { return; } + + gl.uniform2fv( this.addr, v ); + + copyArray( cache, v ); + + } + + } + + function setValueV3f( gl, v ) { + + var cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) { + + gl.uniform3f( this.addr, v.x, v.y, v.z ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + + } + + } else if ( v.r !== undefined ) { + + if ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) { + + gl.uniform3f( this.addr, v.r, v.g, v.b ); + + cache[ 0 ] = v.r; + cache[ 1 ] = v.g; + cache[ 2 ] = v.b; + + } + + } else { + + if ( arraysEqual( cache, v ) ) { return; } + + gl.uniform3fv( this.addr, v ); + + copyArray( cache, v ); + + } + + } + + function setValueV4f( gl, v ) { + + var cache = this.cache; + + if ( v.x !== undefined ) { + + if ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) { + + gl.uniform4f( this.addr, v.x, v.y, v.z, v.w ); + + cache[ 0 ] = v.x; + cache[ 1 ] = v.y; + cache[ 2 ] = v.z; + cache[ 3 ] = v.w; + + } + + } else { + + if ( arraysEqual( cache, v ) ) { return; } + + gl.uniform4fv( this.addr, v ); + + copyArray( cache, v ); + + } + + } + + // Single matrix (from flat array or MatrixN) + + function setValueM2( gl, v ) { + + var cache = this.cache; + var elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) { return; } + + gl.uniformMatrix2fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) { return; } + + mat2array.set( elements ); + + gl.uniformMatrix2fv( this.addr, false, mat2array ); + + copyArray( cache, elements ); + + } + + } + + function setValueM3( gl, v ) { + + var cache = this.cache; + var elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) { return; } + + gl.uniformMatrix3fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) { return; } + + mat3array.set( elements ); + + gl.uniformMatrix3fv( this.addr, false, mat3array ); + + copyArray( cache, elements ); + + } + + } + + function setValueM4( gl, v ) { + + var cache = this.cache; + var elements = v.elements; + + if ( elements === undefined ) { + + if ( arraysEqual( cache, v ) ) { return; } + + gl.uniformMatrix4fv( this.addr, false, v ); + + copyArray( cache, v ); + + } else { + + if ( arraysEqual( cache, elements ) ) { return; } + + mat4array.set( elements ); + + gl.uniformMatrix4fv( this.addr, false, mat4array ); + + copyArray( cache, elements ); + + } + + } + + // Single texture (2D / Cube) + + function setValueT1( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.safeSetTexture2D( v || emptyTexture, unit ); + + } + + function setValueT2DArray1( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.setTexture2DArray( v || emptyTexture2dArray, unit ); + + } + + function setValueT3D1( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.setTexture3D( v || emptyTexture3d, unit ); + + } + + function setValueT6( gl, v, textures ) { + + var cache = this.cache; + var unit = textures.allocateTextureUnit(); + + if ( cache[ 0 ] !== unit ) { + + gl.uniform1i( this.addr, unit ); + cache[ 0 ] = unit; + + } + + textures.safeSetTextureCube( v || emptyCubeTexture, unit ); + + } + + // Integer / Boolean vectors or arrays thereof (always flat arrays) + + function setValueV1i( gl, v ) { + + var cache = this.cache; + + if ( cache[ 0 ] === v ) { return; } + + gl.uniform1i( this.addr, v ); + + cache[ 0 ] = v; + + } + + function setValueV2i( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) { return; } + + gl.uniform2iv( this.addr, v ); + + copyArray( cache, v ); + + } + + function setValueV3i( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) { return; } + + gl.uniform3iv( this.addr, v ); + + copyArray( cache, v ); + + } + + function setValueV4i( gl, v ) { + + var cache = this.cache; + + if ( arraysEqual( cache, v ) ) { return; } + + gl.uniform4iv( this.addr, v ); + + copyArray( cache, v ); + + } + + // Helper to pick the right setter for the singular case + + function getSingularSetter( type ) { + + switch ( type ) { + + case 0x1406: return setValueV1f; // FLOAT + case 0x8b50: return setValueV2f; // _VEC2 + case 0x8b51: return setValueV3f; // _VEC3 + case 0x8b52: return setValueV4f; // _VEC4 + + case 0x8b5a: return setValueM2; // _MAT2 + case 0x8b5b: return setValueM3; // _MAT3 + case 0x8b5c: return setValueM4; // _MAT4 + + case 0x8b5e: case 0x8d66: return setValueT1; // SAMPLER_2D, SAMPLER_EXTERNAL_OES + case 0x8b5f: return setValueT3D1; // SAMPLER_3D + case 0x8b60: return setValueT6; // SAMPLER_CUBE + case 0x8DC1: return setValueT2DArray1; // SAMPLER_2D_ARRAY + + case 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL + case 0x8b53: case 0x8b57: return setValueV2i; // _VEC2 + case 0x8b54: case 0x8b58: return setValueV3i; // _VEC3 + case 0x8b55: case 0x8b59: return setValueV4i; // _VEC4 + + } + + } + + // Array of scalars + function setValueV1fArray( gl, v ) { + + gl.uniform1fv( this.addr, v ); + + } + + // Integer / Boolean vectors or arrays thereof (always flat arrays) + function setValueV1iArray( gl, v ) { + + gl.uniform1iv( this.addr, v ); + + } + + function setValueV2iArray( gl, v ) { + + gl.uniform2iv( this.addr, v ); + + } + + function setValueV3iArray( gl, v ) { + + gl.uniform3iv( this.addr, v ); + + } + + function setValueV4iArray( gl, v ) { + + gl.uniform4iv( this.addr, v ); + + } + + + // Array of vectors (flat or from THREE classes) + + function setValueV2fArray( gl, v ) { + + var data = flatten( v, this.size, 2 ); + + gl.uniform2fv( this.addr, data ); + + } + + function setValueV3fArray( gl, v ) { + + var data = flatten( v, this.size, 3 ); + + gl.uniform3fv( this.addr, data ); + + } + + function setValueV4fArray( gl, v ) { + + var data = flatten( v, this.size, 4 ); + + gl.uniform4fv( this.addr, data ); + + } + + // Array of matrices (flat or from THREE clases) + + function setValueM2Array( gl, v ) { + + var data = flatten( v, this.size, 4 ); + + gl.uniformMatrix2fv( this.addr, false, data ); + + } + + function setValueM3Array( gl, v ) { + + var data = flatten( v, this.size, 9 ); + + gl.uniformMatrix3fv( this.addr, false, data ); + + } + + function setValueM4Array( gl, v ) { + + var data = flatten( v, this.size, 16 ); + + gl.uniformMatrix4fv( this.addr, false, data ); + + } + + // Array of textures (2D / Cube) + + function setValueT1Array( gl, v, textures ) { + + var n = v.length; + + var units = allocTexUnits( textures, n ); + + gl.uniform1iv( this.addr, units ); + + for ( var i = 0; i !== n; ++ i ) { + + textures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] ); + + } + + } + + function setValueT6Array( gl, v, textures ) { + + var n = v.length; + + var units = allocTexUnits( textures, n ); + + gl.uniform1iv( this.addr, units ); + + for ( var i = 0; i !== n; ++ i ) { + + textures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] ); + + } + + } + + // Helper to pick the right setter for a pure (bottom-level) array + + function getPureArraySetter( type ) { + + switch ( type ) { + + case 0x1406: return setValueV1fArray; // FLOAT + case 0x8b50: return setValueV2fArray; // _VEC2 + case 0x8b51: return setValueV3fArray; // _VEC3 + case 0x8b52: return setValueV4fArray; // _VEC4 + + case 0x8b5a: return setValueM2Array; // _MAT2 + case 0x8b5b: return setValueM3Array; // _MAT3 + case 0x8b5c: return setValueM4Array; // _MAT4 + + case 0x8b5e: return setValueT1Array; // SAMPLER_2D + case 0x8b60: return setValueT6Array; // SAMPLER_CUBE + + case 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL + case 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2 + case 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3 + case 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4 + + } + + } + + // --- Uniform Classes --- + + function SingleUniform( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.cache = []; + this.setValue = getSingularSetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + + function PureArrayUniform( id, activeInfo, addr ) { + + this.id = id; + this.addr = addr; + this.cache = []; + this.size = activeInfo.size; + this.setValue = getPureArraySetter( activeInfo.type ); + + // this.path = activeInfo.name; // DEBUG + + } + + PureArrayUniform.prototype.updateCache = function ( data ) { + + var cache = this.cache; + + if ( data instanceof Float32Array && cache.length !== data.length ) { + + this.cache = new Float32Array( data.length ); + + } + + copyArray( cache, data ); + + }; + + function StructuredUniform( id ) { + + this.id = id; + + this.seq = []; + this.map = {}; + + } + + StructuredUniform.prototype.setValue = function ( gl, value, textures ) { + + var seq = this.seq; + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ]; + u.setValue( gl, value[ u.id ], textures ); + + } + + }; + + // --- Top-level --- + + // Parser - builds up the property tree from the path strings + + var RePathPart = /([\w\d_]+)(\])?(\[|\.)?/g; + + // extracts + // - the identifier (member name or array index) + // - followed by an optional right bracket (found when array index) + // - followed by an optional left bracket or dot (type of subscript) + // + // Note: These portions can be read in a non-overlapping fashion and + // allow straightforward parsing of the hierarchy that WebGL encodes + // in the uniform names. + + function addUniform( container, uniformObject ) { + + container.seq.push( uniformObject ); + container.map[ uniformObject.id ] = uniformObject; + + } + + function parseUniform( activeInfo, addr, container ) { + + var path = activeInfo.name, + pathLength = path.length; + + // reset RegExp object, because of the early exit of a previous run + RePathPart.lastIndex = 0; + + while ( true ) { + + var match = RePathPart.exec( path ), + matchEnd = RePathPart.lastIndex, + + id = match[ 1 ], + idIsIndex = match[ 2 ] === ']', + subscript = match[ 3 ]; + + if ( idIsIndex ) { id = id | 0; } // convert to integer + + if ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) { + + // bare name or "pure" bottom-level array "[0]" suffix + + addUniform( container, subscript === undefined ? + new SingleUniform( id, activeInfo, addr ) : + new PureArrayUniform( id, activeInfo, addr ) ); + + break; + + } else { + + // step into inner node / create it in case it doesn't exist + + var map = container.map, next = map[ id ]; + + if ( next === undefined ) { + + next = new StructuredUniform( id ); + addUniform( container, next ); + + } + + container = next; + + } + + } + + } + + // Root Container + + function WebGLUniforms( gl, program ) { + + this.seq = []; + this.map = {}; + + var n = gl.getProgramParameter( program, 35718 ); + + for ( var i = 0; i < n; ++ i ) { + + var info = gl.getActiveUniform( program, i ), + addr = gl.getUniformLocation( program, info.name ); + + parseUniform( info, addr, this ); + + } + + } + + WebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) { + + var u = this.map[ name ]; + + if ( u !== undefined ) { u.setValue( gl, value, textures ); } + + }; + + WebGLUniforms.prototype.setOptional = function ( gl, object, name ) { + + var v = object[ name ]; + + if ( v !== undefined ) { this.setValue( gl, name, v ); } + + }; + + + // Static interface + + WebGLUniforms.upload = function ( gl, seq, values, textures ) { + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ], + v = values[ u.id ]; + + if ( v.needsUpdate !== false ) { + + // note: always updating when .needsUpdate is undefined + u.setValue( gl, v.value, textures ); + + } + + } + + }; + + WebGLUniforms.seqWithValue = function ( seq, values ) { + + var r = []; + + for ( var i = 0, n = seq.length; i !== n; ++ i ) { + + var u = seq[ i ]; + if ( u.id in values ) { r.push( u ); } + + } + + return r; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLShader( gl, type, string ) { + + var shader = gl.createShader( type ); + + gl.shaderSource( shader, string ); + gl.compileShader( shader ); + + return shader; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var programIdCount = 0; + + function addLineNumbers( string ) { + + var lines = string.split( '\n' ); + + for ( var i = 0; i < lines.length; i ++ ) { + + lines[ i ] = ( i + 1 ) + ': ' + lines[ i ]; + + } + + return lines.join( '\n' ); + + } + + function getEncodingComponents( encoding ) { + + switch ( encoding ) { + + case LinearEncoding: + return [ 'Linear', '( value )' ]; + case sRGBEncoding: + return [ 'sRGB', '( value )' ]; + case RGBEEncoding: + return [ 'RGBE', '( value )' ]; + case RGBM7Encoding: + return [ 'RGBM', '( value, 7.0 )' ]; + case RGBM16Encoding: + return [ 'RGBM', '( value, 16.0 )' ]; + case RGBDEncoding: + return [ 'RGBD', '( value, 256.0 )' ]; + case GammaEncoding: + return [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ]; + case LogLuvEncoding: + return [ 'LogLuv', '( value )' ]; + default: + throw new Error( 'unsupported encoding: ' + encoding ); + + } + + } + + function getShaderErrors( gl, shader, type ) { + + var status = gl.getShaderParameter( shader, 35713 ); + var log = gl.getShaderInfoLog( shader ).trim(); + + if ( status && log === '' ) { return ''; } + + // --enable-privileged-webgl-extension + // console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) ); + + var source = gl.getShaderSource( shader ); + + return 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\n' + log + addLineNumbers( source ); + + } + + function getTexelDecodingFunction( functionName, encoding ) { + + var components = getEncodingComponents( encoding ); + return 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }'; + + } + + function getTexelEncodingFunction( functionName, encoding ) { + + var components = getEncodingComponents( encoding ); + return 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }'; + + } + + function getToneMappingFunction( functionName, toneMapping ) { + + var toneMappingName; + + switch ( toneMapping ) { + + case LinearToneMapping: + toneMappingName = 'Linear'; + break; + + case ReinhardToneMapping: + toneMappingName = 'Reinhard'; + break; + + case Uncharted2ToneMapping: + toneMappingName = 'Uncharted2'; + break; + + case CineonToneMapping: + toneMappingName = 'OptimizedCineon'; + break; + + case ACESFilmicToneMapping: + toneMappingName = 'ACESFilmic'; + break; + + default: + throw new Error( 'unsupported toneMapping: ' + toneMapping ); + + } + + return 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }'; + + } + + function generateExtensions( extensions, parameters, rendererExtensions ) { + + extensions = extensions || {}; + + var chunks = [ + ( extensions.derivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading ) ? '#extension GL_OES_standard_derivatives : enable' : '', + ( extensions.fragDepth || parameters.logarithmicDepthBuffer ) && rendererExtensions.get( 'EXT_frag_depth' ) ? '#extension GL_EXT_frag_depth : enable' : '', + ( extensions.drawBuffers ) && rendererExtensions.get( 'WEBGL_draw_buffers' ) ? '#extension GL_EXT_draw_buffers : require' : '', + ( extensions.shaderTextureLOD || parameters.envMap ) && rendererExtensions.get( 'EXT_shader_texture_lod' ) ? '#extension GL_EXT_shader_texture_lod : enable' : '' + ]; + + return chunks.filter( filterEmptyLine ).join( '\n' ); + + } + + function generateDefines( defines ) { + + var chunks = []; + + for ( var name in defines ) { + + var value = defines[ name ]; + + if ( value === false ) { continue; } + + chunks.push( '#define ' + name + ' ' + value ); + + } + + return chunks.join( '\n' ); + + } + + function fetchAttributeLocations( gl, program ) { + + var attributes = {}; + + var n = gl.getProgramParameter( program, 35721 ); + + for ( var i = 0; i < n; i ++ ) { + + var info = gl.getActiveAttrib( program, i ); + var name = info.name; + + // console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i ); + + attributes[ name ] = gl.getAttribLocation( program, name ); + + } + + return attributes; + + } + + function filterEmptyLine( string ) { + + return string !== ''; + + } + + function replaceLightNums( string, parameters ) { + + return string + .replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights ) + .replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights ) + .replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights ) + .replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights ) + .replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights ) + .replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows ) + .replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows ) + .replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows ); + + } + + function replaceClippingPlaneNums( string, parameters ) { + + return string + .replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes ) + .replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) ); + + } + + // Resolve Includes + + var includePattern = /^[ \t]*#include +<([\w\d./]+)>/gm; + + function resolveIncludes( string ) { + + return string.replace( includePattern, includeReplacer ); + + } + + function includeReplacer( match, include ) { + + var string = ShaderChunk[ include ]; + + if ( string === undefined ) { + + throw new Error( 'Can not resolve #include <' + include + '>' ); + + } + + return resolveIncludes( string ); + + } + + // Unroll Loops + + var loopPattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g; + + function unrollLoops( string ) { + + return string.replace( loopPattern, loopReplacer ); + + } + + function loopReplacer( match, start, end, snippet ) { + + var string = ''; + + for ( var i = parseInt( start ); i < parseInt( end ); i ++ ) { + + string += snippet + .replace( /\[ i \]/g, '[ ' + i + ' ]' ) + .replace( /UNROLLED_LOOP_INDEX/g, i ); + + } + + return string; + + } + + // + + function generatePrecision( parameters ) { + + var precisionstring = "precision " + parameters.precision + " float;\nprecision " + parameters.precision + " int;"; + + if ( parameters.precision === "highp" ) { + + precisionstring += "\n#define HIGH_PRECISION"; + + } else if ( parameters.precision === "mediump" ) { + + precisionstring += "\n#define MEDIUM_PRECISION"; + + } else if ( parameters.precision === "lowp" ) { + + precisionstring += "\n#define LOW_PRECISION"; + + } + + return precisionstring; + + } + + function generateShadowMapTypeDefine( parameters ) { + + var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC'; + + if ( parameters.shadowMapType === PCFShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF'; + + } else if ( parameters.shadowMapType === PCFSoftShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT'; + + } else if ( parameters.shadowMapType === VSMShadowMap ) { + + shadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM'; + + } + + return shadowMapTypeDefine; + + } + + function generateEnvMapTypeDefine( parameters, material ) { + + var envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + + if ( parameters.envMap ) { + + switch ( material.envMap.mapping ) { + + case CubeReflectionMapping: + case CubeRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE'; + break; + + case CubeUVReflectionMapping: + case CubeUVRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV'; + break; + + case EquirectangularReflectionMapping: + case EquirectangularRefractionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_EQUIREC'; + break; + + case SphericalReflectionMapping: + envMapTypeDefine = 'ENVMAP_TYPE_SPHERE'; + break; + + } + + } + + return envMapTypeDefine; + + } + + function generateEnvMapModeDefine( parameters, material ) { + + var envMapModeDefine = 'ENVMAP_MODE_REFLECTION'; + + if ( parameters.envMap ) { + + switch ( material.envMap.mapping ) { + + case CubeRefractionMapping: + case EquirectangularRefractionMapping: + envMapModeDefine = 'ENVMAP_MODE_REFRACTION'; + break; + + } + + } + + return envMapModeDefine; + + } + + function generateEnvMapBlendingDefine( parameters, material ) { + + var envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + + if ( parameters.envMap ) { + + switch ( material.combine ) { + + case MultiplyOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY'; + break; + + case MixOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_MIX'; + break; + + case AddOperation: + envMapBlendingDefine = 'ENVMAP_BLENDING_ADD'; + break; + + } + + } + + return envMapBlendingDefine; + + } + + function WebGLProgram( renderer, extensions, code, material, shader, parameters ) { + + var gl = renderer.getContext(); + + var defines = material.defines; + + var vertexShader = shader.vertexShader; + var fragmentShader = shader.fragmentShader; + var shadowMapTypeDefine = generateShadowMapTypeDefine( parameters ); + var envMapTypeDefine = generateEnvMapTypeDefine( parameters, material ); + var envMapModeDefine = generateEnvMapModeDefine( parameters, material ); + var envMapBlendingDefine = generateEnvMapBlendingDefine( parameters, material ); + + + var gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0; + + var customExtensions = parameters.isWebGL2 ? '' : generateExtensions( material.extensions, parameters, extensions ); + + var customDefines = generateDefines( defines ); + + var program = gl.createProgram(); + + var prefixVertex, prefixFragment; + + var renderTarget = renderer.getRenderTarget(); + var numMultiviewViews = renderTarget && renderTarget.isWebGLMultiviewRenderTarget ? renderTarget.numViews : 0; + + if ( material.isRawShaderMaterial ) { + + prefixVertex = [ + + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixVertex.length > 0 ) { + + prefixVertex += '\n'; + + } + + prefixFragment = [ + + customExtensions, + customDefines + + ].filter( filterEmptyLine ).join( '\n' ); + + if ( prefixFragment.length > 0 ) { + + prefixFragment += '\n'; + + } + + } else { + + prefixVertex = [ + + generatePrecision( parameters ), + + '#define SHADER_NAME ' + shader.name, + + customDefines, + + parameters.instancing ? '#define USE_INSTANCING' : '', + parameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '', + + '#define GAMMA_FACTOR ' + gammaFactorDefine, + + '#define MAX_BONES ' + parameters.maxBones, + ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', + ( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '', + + parameters.map ? '#define USE_MAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', + ( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '', + + parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', + parameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '', + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + + parameters.vertexTangents ? '#define USE_TANGENT' : '', + parameters.vertexColors ? '#define USE_COLOR' : '', + parameters.vertexUvs ? '#define USE_UV' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.skinning ? '#define USE_SKINNING' : '', + parameters.useVertexTexture ? '#define BONE_TEXTURE' : '', + + parameters.morphTargets ? '#define USE_MORPHTARGETS' : '', + parameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '', + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.logarithmicDepthBuffer && ( parameters.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + + 'uniform mat4 modelMatrix;', + 'uniform mat4 modelViewMatrix;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 viewMatrix;', + 'uniform mat3 normalMatrix;', + 'uniform vec3 cameraPosition;', + + '#ifdef USE_INSTANCING', + + ' attribute mat4 instanceMatrix;', + + '#endif', + + 'attribute vec3 position;', + 'attribute vec3 normal;', + 'attribute vec2 uv;', + + '#ifdef USE_TANGENT', + + ' attribute vec4 tangent;', + + '#endif', + + '#ifdef USE_COLOR', + + ' attribute vec3 color;', + + '#endif', + + '#ifdef USE_MORPHTARGETS', + + ' attribute vec3 morphTarget0;', + ' attribute vec3 morphTarget1;', + ' attribute vec3 morphTarget2;', + ' attribute vec3 morphTarget3;', + + ' #ifdef USE_MORPHNORMALS', + + ' attribute vec3 morphNormal0;', + ' attribute vec3 morphNormal1;', + ' attribute vec3 morphNormal2;', + ' attribute vec3 morphNormal3;', + + ' #else', + + ' attribute vec3 morphTarget4;', + ' attribute vec3 morphTarget5;', + ' attribute vec3 morphTarget6;', + ' attribute vec3 morphTarget7;', + + ' #endif', + + '#endif', + + '#ifdef USE_SKINNING', + + ' attribute vec4 skinIndex;', + ' attribute vec4 skinWeight;', + + '#endif', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + prefixFragment = [ + + customExtensions, + + generatePrecision( parameters ), + + '#define SHADER_NAME ' + shader.name, + + customDefines, + + parameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer + + '#define GAMMA_FACTOR ' + gammaFactorDefine, + + ( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '', + ( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '', + + parameters.map ? '#define USE_MAP' : '', + parameters.matcap ? '#define USE_MATCAP' : '', + parameters.envMap ? '#define USE_ENVMAP' : '', + parameters.envMap ? '#define ' + envMapTypeDefine : '', + parameters.envMap ? '#define ' + envMapModeDefine : '', + parameters.envMap ? '#define ' + envMapBlendingDefine : '', + parameters.lightMap ? '#define USE_LIGHTMAP' : '', + parameters.aoMap ? '#define USE_AOMAP' : '', + parameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '', + parameters.bumpMap ? '#define USE_BUMPMAP' : '', + parameters.normalMap ? '#define USE_NORMALMAP' : '', + ( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '', + ( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '', + parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '', + parameters.specularMap ? '#define USE_SPECULARMAP' : '', + parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '', + parameters.metalnessMap ? '#define USE_METALNESSMAP' : '', + parameters.alphaMap ? '#define USE_ALPHAMAP' : '', + + parameters.sheen ? '#define USE_SHEEN' : '', + + parameters.vertexTangents ? '#define USE_TANGENT' : '', + parameters.vertexColors ? '#define USE_COLOR' : '', + parameters.vertexUvs ? '#define USE_UV' : '', + + parameters.gradientMap ? '#define USE_GRADIENTMAP' : '', + + parameters.flatShading ? '#define FLAT_SHADED' : '', + + parameters.doubleSided ? '#define DOUBLE_SIDED' : '', + parameters.flipSided ? '#define FLIP_SIDED' : '', + + parameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '', + parameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '', + + parameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '', + + parameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '', + + parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '', + parameters.logarithmicDepthBuffer && ( parameters.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '', + + ( ( material.extensions ? material.extensions.shaderTextureLOD : false ) || parameters.envMap ) && ( parameters.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '', + + 'uniform mat4 viewMatrix;', + 'uniform vec3 cameraPosition;', + + ( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '', + ( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below + ( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '', + + parameters.dithering ? '#define DITHERING' : '', + + ( parameters.outputEncoding || parameters.mapEncoding || parameters.matcapEncoding || parameters.envMapEncoding || parameters.emissiveMapEncoding ) ? + ShaderChunk[ 'encodings_pars_fragment' ] : '', // this code is required here because it is used by the various encoding/decoding function defined below + parameters.mapEncoding ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '', + parameters.matcapEncoding ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '', + parameters.envMapEncoding ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '', + parameters.emissiveMapEncoding ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '', + parameters.outputEncoding ? getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ) : '', + + parameters.depthPacking ? '#define DEPTH_PACKING ' + material.depthPacking : '', + + '\n' + + ].filter( filterEmptyLine ).join( '\n' ); + + } + + vertexShader = resolveIncludes( vertexShader ); + vertexShader = replaceLightNums( vertexShader, parameters ); + vertexShader = replaceClippingPlaneNums( vertexShader, parameters ); + + fragmentShader = resolveIncludes( fragmentShader ); + fragmentShader = replaceLightNums( fragmentShader, parameters ); + fragmentShader = replaceClippingPlaneNums( fragmentShader, parameters ); + + vertexShader = unrollLoops( vertexShader ); + fragmentShader = unrollLoops( fragmentShader ); + + if ( parameters.isWebGL2 && ! material.isRawShaderMaterial ) { + + var isGLSL3ShaderMaterial = false; + + var versionRegex = /^\s*#version\s+300\s+es\s*\n/; + + if ( material.isShaderMaterial && + vertexShader.match( versionRegex ) !== null && + fragmentShader.match( versionRegex ) !== null ) { + + isGLSL3ShaderMaterial = true; + + vertexShader = vertexShader.replace( versionRegex, '' ); + fragmentShader = fragmentShader.replace( versionRegex, '' ); + + } + + // GLSL 3.0 conversion + + prefixVertex = [ + '#version 300 es\n', + '#define attribute in', + '#define varying out', + '#define texture2D texture' + ].join( '\n' ) + '\n' + prefixVertex; + + prefixFragment = [ + '#version 300 es\n', + '#define varying in', + isGLSL3ShaderMaterial ? '' : 'out highp vec4 pc_fragColor;', + isGLSL3ShaderMaterial ? '' : '#define gl_FragColor pc_fragColor', + '#define gl_FragDepthEXT gl_FragDepth', + '#define texture2D texture', + '#define textureCube texture', + '#define texture2DProj textureProj', + '#define texture2DLodEXT textureLod', + '#define texture2DProjLodEXT textureProjLod', + '#define textureCubeLodEXT textureLod', + '#define texture2DGradEXT textureGrad', + '#define texture2DProjGradEXT textureProjGrad', + '#define textureCubeGradEXT textureGrad' + ].join( '\n' ) + '\n' + prefixFragment; + + // Multiview + + if ( numMultiviewViews > 0 ) { + + prefixVertex = prefixVertex.replace( + '#version 300 es\n', + [ + '#version 300 es\n', + '#extension GL_OVR_multiview2 : require', + 'layout(num_views = ' + numMultiviewViews + ') in;', + '#define VIEW_ID gl_ViewID_OVR' + ].join( '\n' ) + ); + + prefixVertex = prefixVertex.replace( + [ + 'uniform mat4 modelViewMatrix;', + 'uniform mat4 projectionMatrix;', + 'uniform mat4 viewMatrix;', + 'uniform mat3 normalMatrix;' + ].join( '\n' ), + [ + 'uniform mat4 modelViewMatrices[' + numMultiviewViews + '];', + 'uniform mat4 projectionMatrices[' + numMultiviewViews + '];', + 'uniform mat4 viewMatrices[' + numMultiviewViews + '];', + 'uniform mat3 normalMatrices[' + numMultiviewViews + '];', + + '#define modelViewMatrix modelViewMatrices[VIEW_ID]', + '#define projectionMatrix projectionMatrices[VIEW_ID]', + '#define viewMatrix viewMatrices[VIEW_ID]', + '#define normalMatrix normalMatrices[VIEW_ID]' + ].join( '\n' ) + ); + + prefixFragment = prefixFragment.replace( + '#version 300 es\n', + [ + '#version 300 es\n', + '#extension GL_OVR_multiview2 : require', + '#define VIEW_ID gl_ViewID_OVR' + ].join( '\n' ) + ); + + prefixFragment = prefixFragment.replace( + 'uniform mat4 viewMatrix;', + [ + 'uniform mat4 viewMatrices[' + numMultiviewViews + '];', + '#define viewMatrix viewMatrices[VIEW_ID]' + ].join( '\n' ) + ); + + } + + } + + var vertexGlsl = prefixVertex + vertexShader; + var fragmentGlsl = prefixFragment + fragmentShader; + + // console.log( '*VERTEX*', vertexGlsl ); + // console.log( '*FRAGMENT*', fragmentGlsl ); + + var glVertexShader = WebGLShader( gl, 35633, vertexGlsl ); + var glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl ); + + gl.attachShader( program, glVertexShader ); + gl.attachShader( program, glFragmentShader ); + + // Force a particular attribute to index 0. + + if ( material.index0AttributeName !== undefined ) { + + gl.bindAttribLocation( program, 0, material.index0AttributeName ); + + } else if ( parameters.morphTargets === true ) { + + // programs with morphTargets displace position out of attribute 0 + gl.bindAttribLocation( program, 0, 'position' ); + + } + + gl.linkProgram( program ); + + // check for link errors + if ( renderer.debug.checkShaderErrors ) { + + var programLog = gl.getProgramInfoLog( program ).trim(); + var vertexLog = gl.getShaderInfoLog( glVertexShader ).trim(); + var fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim(); + + var runnable = true; + var haveDiagnostics = true; + + if ( gl.getProgramParameter( program, 35714 ) === false ) { + + runnable = false; + + var vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' ); + var fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' ); + + console.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors ); + + } else if ( programLog !== '' ) { + + console.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog ); + + } else if ( vertexLog === '' || fragmentLog === '' ) { + + haveDiagnostics = false; + + } + + if ( haveDiagnostics ) { + + this.diagnostics = { + + runnable: runnable, + material: material, + + programLog: programLog, + + vertexShader: { + + log: vertexLog, + prefix: prefixVertex + + }, + + fragmentShader: { + + log: fragmentLog, + prefix: prefixFragment + + } + + }; + + } + + } + + // clean up + + gl.deleteShader( glVertexShader ); + gl.deleteShader( glFragmentShader ); + + // set up caching for uniform locations + + var cachedUniforms; + + this.getUniforms = function () { + + if ( cachedUniforms === undefined ) { + + cachedUniforms = new WebGLUniforms( gl, program ); + + } + + return cachedUniforms; + + }; + + // set up caching for attribute locations + + var cachedAttributes; + + this.getAttributes = function () { + + if ( cachedAttributes === undefined ) { + + cachedAttributes = fetchAttributeLocations( gl, program ); + + } + + return cachedAttributes; + + }; + + // free resource + + this.destroy = function () { + + gl.deleteProgram( program ); + this.program = undefined; + + }; + + // + + this.name = shader.name; + this.id = programIdCount ++; + this.code = code; + this.usedTimes = 1; + this.program = program; + this.vertexShader = glVertexShader; + this.fragmentShader = glFragmentShader; + this.numMultiviewViews = numMultiviewViews; + + return this; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLPrograms( renderer, extensions, capabilities ) { + + var programs = []; + + var shaderIDs = { + MeshDepthMaterial: 'depth', + MeshDistanceMaterial: 'distanceRGBA', + MeshNormalMaterial: 'normal', + MeshBasicMaterial: 'basic', + MeshLambertMaterial: 'lambert', + MeshPhongMaterial: 'phong', + MeshToonMaterial: 'phong', + MeshStandardMaterial: 'physical', + MeshPhysicalMaterial: 'physical', + MeshMatcapMaterial: 'matcap', + LineBasicMaterial: 'basic', + LineDashedMaterial: 'dashed', + PointsMaterial: 'points', + ShadowMaterial: 'shadow', + SpriteMaterial: 'sprite' + }; + + var parameterNames = [ + "precision", "supportsVertexTextures", "instancing", + "map", "mapEncoding", "matcap", "matcapEncoding", "envMap", "envMapMode", "envMapEncoding", + "lightMap", "aoMap", "emissiveMap", "emissiveMapEncoding", "bumpMap", "normalMap", "objectSpaceNormalMap", "tangentSpaceNormalMap", "clearcoatNormalMap", "displacementMap", "specularMap", + "roughnessMap", "metalnessMap", "gradientMap", + "alphaMap", "combine", "vertexColors", "vertexTangents", "fog", "useFog", "fogExp2", + "flatShading", "sizeAttenuation", "logarithmicDepthBuffer", "skinning", + "maxBones", "useVertexTexture", "morphTargets", "morphNormals", + "maxMorphTargets", "maxMorphNormals", "premultipliedAlpha", + "numDirLights", "numPointLights", "numSpotLights", "numHemiLights", "numRectAreaLights", + "shadowMapEnabled", "shadowMapType", "toneMapping", 'physicallyCorrectLights', + "alphaTest", "doubleSided", "flipSided", "numClippingPlanes", "numClipIntersection", "depthPacking", "dithering", + "sheen" + ]; + + + function allocateBones( object ) { + + var skeleton = object.skeleton; + var bones = skeleton.bones; + + if ( capabilities.floatVertexTextures ) { + + return 1024; + + } else { + + // default for when object is not specified + // ( for example when prebuilding shader to be used with multiple objects ) + // + // - leave some extra space for other uniforms + // - limit here is ANGLE's 254 max uniform vectors + // (up to 54 should be safe) + + var nVertexUniforms = capabilities.maxVertexUniforms; + var nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 ); + + var maxBones = Math.min( nVertexMatrices, bones.length ); + + if ( maxBones < bones.length ) { + + console.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' ); + return 0; + + } + + return maxBones; + + } + + } + + function getTextureEncodingFromMap( map, gammaOverrideLinear ) { + + var encoding; + + if ( ! map ) { + + encoding = LinearEncoding; + + } else if ( map.isTexture ) { + + encoding = map.encoding; + + } else if ( map.isWebGLRenderTarget ) { + + console.warn( "THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead." ); + encoding = map.texture.encoding; + + } + + // add backwards compatibility for WebGLRenderer.gammaInput/gammaOutput parameter, should probably be removed at some point. + if ( encoding === LinearEncoding && gammaOverrideLinear ) { + + encoding = GammaEncoding; + + } + + return encoding; + + } + + this.getParameters = function ( material, lights, shadows, fog, nClipPlanes, nClipIntersection, object ) { + + var shaderID = shaderIDs[ material.type ]; + + // heuristics to create shader parameters according to lights in the scene + // (not to blow over maxLights budget) + + var maxBones = object.isSkinnedMesh ? allocateBones( object ) : 0; + var precision = capabilities.precision; + + if ( material.precision !== null ) { + + precision = capabilities.getMaxPrecision( material.precision ); + + if ( precision !== material.precision ) { + + console.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' ); + + } + + } + + var currentRenderTarget = renderer.getRenderTarget(); + + var parameters = { + + isWebGL2: capabilities.isWebGL2, + + shaderID: shaderID, + + precision: precision, + + instancing: object.isInstancedMesh === true, + + supportsVertexTextures: capabilities.vertexTextures, + outputEncoding: getTextureEncodingFromMap( ( ! currentRenderTarget ) ? null : currentRenderTarget.texture, renderer.gammaOutput ), + map: !! material.map, + mapEncoding: getTextureEncodingFromMap( material.map, renderer.gammaInput ), + matcap: !! material.matcap, + matcapEncoding: getTextureEncodingFromMap( material.matcap, renderer.gammaInput ), + envMap: !! material.envMap, + envMapMode: material.envMap && material.envMap.mapping, + envMapEncoding: getTextureEncodingFromMap( material.envMap, renderer.gammaInput ), + envMapCubeUV: ( !! material.envMap ) && ( ( material.envMap.mapping === CubeUVReflectionMapping ) || ( material.envMap.mapping === CubeUVRefractionMapping ) ), + lightMap: !! material.lightMap, + aoMap: !! material.aoMap, + emissiveMap: !! material.emissiveMap, + emissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap, renderer.gammaInput ), + bumpMap: !! material.bumpMap, + normalMap: !! material.normalMap, + objectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap, + tangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap, + clearcoatNormalMap: !! material.clearcoatNormalMap, + displacementMap: !! material.displacementMap, + roughnessMap: !! material.roughnessMap, + metalnessMap: !! material.metalnessMap, + specularMap: !! material.specularMap, + alphaMap: !! material.alphaMap, + + gradientMap: !! material.gradientMap, + + sheen: !! material.sheen, + + combine: material.combine, + + vertexTangents: ( material.normalMap && material.vertexTangents ), + vertexColors: material.vertexColors, + vertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap, + + fog: !! fog, + useFog: material.fog, + fogExp2: ( fog && fog.isFogExp2 ), + + flatShading: material.flatShading, + + sizeAttenuation: material.sizeAttenuation, + logarithmicDepthBuffer: capabilities.logarithmicDepthBuffer, + + skinning: material.skinning && maxBones > 0, + maxBones: maxBones, + useVertexTexture: capabilities.floatVertexTextures, + + morphTargets: material.morphTargets, + morphNormals: material.morphNormals, + maxMorphTargets: renderer.maxMorphTargets, + maxMorphNormals: renderer.maxMorphNormals, + + numDirLights: lights.directional.length, + numPointLights: lights.point.length, + numSpotLights: lights.spot.length, + numRectAreaLights: lights.rectArea.length, + numHemiLights: lights.hemi.length, + + numDirLightShadows: lights.directionalShadowMap.length, + numPointLightShadows: lights.pointShadowMap.length, + numSpotLightShadows: lights.spotShadowMap.length, + + numClippingPlanes: nClipPlanes, + numClipIntersection: nClipIntersection, + + dithering: material.dithering, + + shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0, + shadowMapType: renderer.shadowMap.type, + + toneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping, + physicallyCorrectLights: renderer.physicallyCorrectLights, + + premultipliedAlpha: material.premultipliedAlpha, + + alphaTest: material.alphaTest, + doubleSided: material.side === DoubleSide, + flipSided: material.side === BackSide, + + depthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false + + }; + + return parameters; + + }; + + this.getProgramCode = function ( material, parameters ) { + + var array = []; + + if ( parameters.shaderID ) { + + array.push( parameters.shaderID ); + + } else { + + array.push( material.fragmentShader ); + array.push( material.vertexShader ); + + } + + if ( material.defines !== undefined ) { + + for ( var name in material.defines ) { + + array.push( name ); + array.push( material.defines[ name ] ); + + } + + } + + for ( var i = 0; i < parameterNames.length; i ++ ) { + + array.push( parameters[ parameterNames[ i ] ] ); + + } + + array.push( material.onBeforeCompile.toString() ); + + array.push( renderer.gammaOutput ); + + array.push( renderer.gammaFactor ); + + return array.join(); + + }; + + this.acquireProgram = function ( material, shader, parameters, code ) { + + var program; + + // Check if code has been already compiled + for ( var p = 0, pl = programs.length; p < pl; p ++ ) { + + var programInfo = programs[ p ]; + + if ( programInfo.code === code ) { + + program = programInfo; + ++ program.usedTimes; + + break; + + } + + } + + if ( program === undefined ) { + + program = new WebGLProgram( renderer, extensions, code, material, shader, parameters ); + programs.push( program ); + + } + + return program; + + }; + + this.releaseProgram = function ( program ) { + + if ( -- program.usedTimes === 0 ) { + + // Remove from unordered set + var i = programs.indexOf( program ); + programs[ i ] = programs[ programs.length - 1 ]; + programs.pop(); + + // Free WebGL resources + program.destroy(); + + } + + }; + + // Exposed for resource monitoring & error feedback via renderer.info: + this.programs = programs; + + } + + /** + * @author fordacious / fordacious.github.io + */ + + function WebGLProperties() { + + var properties = new WeakMap(); + + function get( object ) { + + var map = properties.get( object ); + + if ( map === undefined ) { + + map = {}; + properties.set( object, map ); + + } + + return map; + + } + + function remove( object ) { + + properties.delete( object ); + + } + + function update( object, key, value ) { + + properties.get( object )[ key ] = value; + + } + + function dispose() { + + properties = new WeakMap(); + + } + + return { + get: get, + remove: remove, + update: update, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function painterSortStable( a, b ) { + + if ( a.groupOrder !== b.groupOrder ) { + + return a.groupOrder - b.groupOrder; + + } else if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.program !== b.program ) { + + return a.program.id - b.program.id; + + } else if ( a.material.id !== b.material.id ) { + + return a.material.id - b.material.id; + + } else if ( a.z !== b.z ) { + + return a.z - b.z; + + } else { + + return a.id - b.id; + + } + + } + + function reversePainterSortStable( a, b ) { + + if ( a.groupOrder !== b.groupOrder ) { + + return a.groupOrder - b.groupOrder; + + } else if ( a.renderOrder !== b.renderOrder ) { + + return a.renderOrder - b.renderOrder; + + } else if ( a.z !== b.z ) { + + return b.z - a.z; + + } else { + + return a.id - b.id; + + } + + } + + + function WebGLRenderList() { + + var renderItems = []; + var renderItemsIndex = 0; + + var opaque = []; + var transparent = []; + + var defaultProgram = { id: - 1 }; + + function init() { + + renderItemsIndex = 0; + + opaque.length = 0; + transparent.length = 0; + + } + + function getNextRenderItem( object, geometry, material, groupOrder, z, group ) { + + var renderItem = renderItems[ renderItemsIndex ]; + + if ( renderItem === undefined ) { + + renderItem = { + id: object.id, + object: object, + geometry: geometry, + material: material, + program: material.program || defaultProgram, + groupOrder: groupOrder, + renderOrder: object.renderOrder, + z: z, + group: group + }; + + renderItems[ renderItemsIndex ] = renderItem; + + } else { + + renderItem.id = object.id; + renderItem.object = object; + renderItem.geometry = geometry; + renderItem.material = material; + renderItem.program = material.program || defaultProgram; + renderItem.groupOrder = groupOrder; + renderItem.renderOrder = object.renderOrder; + renderItem.z = z; + renderItem.group = group; + + } + + renderItemsIndex ++; + + return renderItem; + + } + + function push( object, geometry, material, groupOrder, z, group ) { + + var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); + + ( material.transparent === true ? transparent : opaque ).push( renderItem ); + + } + + function unshift( object, geometry, material, groupOrder, z, group ) { + + var renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group ); + + ( material.transparent === true ? transparent : opaque ).unshift( renderItem ); + + } + + function sort() { + + if ( opaque.length > 1 ) { opaque.sort( painterSortStable ); } + if ( transparent.length > 1 ) { transparent.sort( reversePainterSortStable ); } + + } + + return { + opaque: opaque, + transparent: transparent, + + init: init, + push: push, + unshift: unshift, + + sort: sort + }; + + } + + function WebGLRenderLists() { + + var lists = new WeakMap(); + + function onSceneDispose( event ) { + + var scene = event.target; + + scene.removeEventListener( 'dispose', onSceneDispose ); + + lists.delete( scene ); + + } + + function get( scene, camera ) { + + var cameras = lists.get( scene ); + var list; + if ( cameras === undefined ) { + + list = new WebGLRenderList(); + lists.set( scene, new WeakMap() ); + lists.get( scene ).set( camera, list ); + + scene.addEventListener( 'dispose', onSceneDispose ); + + } else { + + list = cameras.get( camera ); + if ( list === undefined ) { + + list = new WebGLRenderList(); + cameras.set( camera, list ); + + } + + } + + return list; + + } + + function dispose() { + + lists = new WeakMap(); + + } + + return { + get: get, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function UniformsCache() { + + var lights = {}; + + return { + + get: function ( light ) { + + if ( lights[ light.id ] !== undefined ) { + + return lights[ light.id ]; + + } + + var uniforms; + + switch ( light.type ) { + + case 'DirectionalLight': + uniforms = { + direction: new Vector3(), + color: new Color(), + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'SpotLight': + uniforms = { + position: new Vector3(), + direction: new Vector3(), + color: new Color(), + distance: 0, + coneCos: 0, + penumbraCos: 0, + decay: 0, + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2() + }; + break; + + case 'PointLight': + uniforms = { + position: new Vector3(), + color: new Color(), + distance: 0, + decay: 0, + + shadow: false, + shadowBias: 0, + shadowRadius: 1, + shadowMapSize: new Vector2(), + shadowCameraNear: 1, + shadowCameraFar: 1000 + }; + break; + + case 'HemisphereLight': + uniforms = { + direction: new Vector3(), + skyColor: new Color(), + groundColor: new Color() + }; + break; + + case 'RectAreaLight': + uniforms = { + color: new Color(), + position: new Vector3(), + halfWidth: new Vector3(), + halfHeight: new Vector3() + // TODO (abelnation): set RectAreaLight shadow uniforms + }; + break; + + } + + lights[ light.id ] = uniforms; + + return uniforms; + + } + + }; + + } + + var nextVersion = 0; + + function shadowCastingLightsFirst( lightA, lightB ) { + + return ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 ); + + } + + function WebGLLights() { + + var cache = new UniformsCache(); + + var state = { + + version: 0, + + hash: { + directionalLength: - 1, + pointLength: - 1, + spotLength: - 1, + rectAreaLength: - 1, + hemiLength: - 1, + + numDirectionalShadows: - 1, + numPointShadows: - 1, + numSpotShadows: - 1, + }, + + ambient: [ 0, 0, 0 ], + probe: [], + directional: [], + directionalShadowMap: [], + directionalShadowMatrix: [], + spot: [], + spotShadowMap: [], + spotShadowMatrix: [], + rectArea: [], + point: [], + pointShadowMap: [], + pointShadowMatrix: [], + hemi: [], + + numDirectionalShadows: - 1, + numPointShadows: - 1, + numSpotShadows: - 1 + + }; + + for ( var i = 0; i < 9; i ++ ) { state.probe.push( new Vector3() ); } + + var vector3 = new Vector3(); + var matrix4 = new Matrix4(); + var matrix42 = new Matrix4(); + + function setup( lights, shadows, camera ) { + + var r = 0, g = 0, b = 0; + + for ( var i = 0; i < 9; i ++ ) { state.probe[ i ].set( 0, 0, 0 ); } + + var directionalLength = 0; + var pointLength = 0; + var spotLength = 0; + var rectAreaLength = 0; + var hemiLength = 0; + + var numDirectionalShadows = 0; + var numPointShadows = 0; + var numSpotShadows = 0; + + var viewMatrix = camera.matrixWorldInverse; + + lights.sort( shadowCastingLightsFirst ); + + for ( var i = 0, l = lights.length; i < l; i ++ ) { + + var light = lights[ i ]; + + var color = light.color; + var intensity = light.intensity; + var distance = light.distance; + + var shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null; + + if ( light.isAmbientLight ) { + + r += color.r * intensity; + g += color.g * intensity; + b += color.b * intensity; + + } else if ( light.isLightProbe ) { + + for ( var j = 0; j < 9; j ++ ) { + + state.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity ); + + } + + } else if ( light.isDirectionalLight ) { + + var uniforms = cache.get( light ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + + state.directionalShadowMap[ directionalLength ] = shadowMap; + state.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix; + + numDirectionalShadows ++; + + } + + state.directional[ directionalLength ] = uniforms; + + directionalLength ++; + + } else if ( light.isSpotLight ) { + + var uniforms = cache.get( light ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + uniforms.color.copy( color ).multiplyScalar( intensity ); + uniforms.distance = distance; + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + vector3.setFromMatrixPosition( light.target.matrixWorld ); + uniforms.direction.sub( vector3 ); + uniforms.direction.transformDirection( viewMatrix ); + + uniforms.coneCos = Math.cos( light.angle ); + uniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) ); + uniforms.decay = light.decay; + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + + state.spotShadowMap[ spotLength ] = shadowMap; + state.spotShadowMatrix[ spotLength ] = light.shadow.matrix; + + numSpotShadows ++; + + } + + state.spot[ spotLength ] = uniforms; + + spotLength ++; + + } else if ( light.isRectAreaLight ) { + + var uniforms = cache.get( light ); + + // (a) intensity is the total visible light emitted + //uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) ); + + // (b) intensity is the brightness of the light + uniforms.color.copy( color ).multiplyScalar( intensity ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + // extract local rotation of light to derive width/height half vectors + matrix42.identity(); + matrix4.copy( light.matrixWorld ); + matrix4.premultiply( viewMatrix ); + matrix42.extractRotation( matrix4 ); + + uniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 ); + uniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 ); + + uniforms.halfWidth.applyMatrix4( matrix42 ); + uniforms.halfHeight.applyMatrix4( matrix42 ); + + // TODO (abelnation): RectAreaLight distance? + // uniforms.distance = distance; + + state.rectArea[ rectAreaLength ] = uniforms; + + rectAreaLength ++; + + } else if ( light.isPointLight ) { + + var uniforms = cache.get( light ); + + uniforms.position.setFromMatrixPosition( light.matrixWorld ); + uniforms.position.applyMatrix4( viewMatrix ); + + uniforms.color.copy( light.color ).multiplyScalar( light.intensity ); + uniforms.distance = light.distance; + uniforms.decay = light.decay; + + uniforms.shadow = light.castShadow; + + if ( light.castShadow ) { + + var shadow = light.shadow; + + uniforms.shadowBias = shadow.bias; + uniforms.shadowRadius = shadow.radius; + uniforms.shadowMapSize = shadow.mapSize; + uniforms.shadowCameraNear = shadow.camera.near; + uniforms.shadowCameraFar = shadow.camera.far; + + state.pointShadowMap[ pointLength ] = shadowMap; + state.pointShadowMatrix[ pointLength ] = light.shadow.matrix; + + numPointShadows ++; + + } + + state.point[ pointLength ] = uniforms; + + pointLength ++; + + } else if ( light.isHemisphereLight ) { + + var uniforms = cache.get( light ); + + uniforms.direction.setFromMatrixPosition( light.matrixWorld ); + uniforms.direction.transformDirection( viewMatrix ); + uniforms.direction.normalize(); + + uniforms.skyColor.copy( light.color ).multiplyScalar( intensity ); + uniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity ); + + state.hemi[ hemiLength ] = uniforms; + + hemiLength ++; + + } + + } + + state.ambient[ 0 ] = r; + state.ambient[ 1 ] = g; + state.ambient[ 2 ] = b; + + var hash = state.hash; + + if ( hash.directionalLength !== directionalLength || + hash.pointLength !== pointLength || + hash.spotLength !== spotLength || + hash.rectAreaLength !== rectAreaLength || + hash.hemiLength !== hemiLength || + hash.numDirectionalShadows !== numDirectionalShadows || + hash.numPointShadows !== numPointShadows || + hash.numSpotShadows !== numSpotShadows ) { + + state.directional.length = directionalLength; + state.spot.length = spotLength; + state.rectArea.length = rectAreaLength; + state.point.length = pointLength; + state.hemi.length = hemiLength; + + state.directionalShadowMap.length = numDirectionalShadows; + state.pointShadowMap.length = numPointShadows; + state.spotShadowMap.length = numSpotShadows; + state.directionalShadowMatrix.length = numDirectionalShadows; + state.pointShadowMatrix.length = numPointShadows; + state.spotShadowMatrix.length = numSpotShadows; + + hash.directionalLength = directionalLength; + hash.pointLength = pointLength; + hash.spotLength = spotLength; + hash.rectAreaLength = rectAreaLength; + hash.hemiLength = hemiLength; + + hash.numDirectionalShadows = numDirectionalShadows; + hash.numPointShadows = numPointShadows; + hash.numSpotShadows = numSpotShadows; + + state.version = nextVersion ++; + + } + + } + + return { + setup: setup, + state: state + }; + + } + + /** + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WebGLRenderState() { + + var lights = new WebGLLights(); + + var lightsArray = []; + var shadowsArray = []; + + function init() { + + lightsArray.length = 0; + shadowsArray.length = 0; + + } + + function pushLight( light ) { + + lightsArray.push( light ); + + } + + function pushShadow( shadowLight ) { + + shadowsArray.push( shadowLight ); + + } + + function setupLights( camera ) { + + lights.setup( lightsArray, shadowsArray, camera ); + + } + + var state = { + lightsArray: lightsArray, + shadowsArray: shadowsArray, + + lights: lights + }; + + return { + init: init, + state: state, + setupLights: setupLights, + + pushLight: pushLight, + pushShadow: pushShadow + }; + + } + + function WebGLRenderStates() { + + var renderStates = new WeakMap(); + + function onSceneDispose( event ) { + + var scene = event.target; + + scene.removeEventListener( 'dispose', onSceneDispose ); + + renderStates.delete( scene ); + + } + + function get( scene, camera ) { + + var renderState; + + if ( renderStates.has( scene ) === false ) { + + renderState = new WebGLRenderState(); + renderStates.set( scene, new WeakMap() ); + renderStates.get( scene ).set( camera, renderState ); + + scene.addEventListener( 'dispose', onSceneDispose ); + + } else { + + if ( renderStates.get( scene ).has( camera ) === false ) { + + renderState = new WebGLRenderState(); + renderStates.get( scene ).set( camera, renderState ); + + } else { + + renderState = renderStates.get( scene ).get( camera ); + + } + + } + + return renderState; + + } + + function dispose() { + + renderStates = new WeakMap(); + + } + + return { + get: get, + dispose: dispose + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author bhouston / https://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * + * opacity: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * } + */ + + function MeshDepthMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshDepthMaterial'; + + this.depthPacking = BasicDepthPacking; + + this.skinning = false; + this.morphTargets = false; + + this.map = null; + + this.alphaMap = null; + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; + + this.setValues( parameters ); + + } + + MeshDepthMaterial.prototype = Object.create( Material.prototype ); + MeshDepthMaterial.prototype.constructor = MeshDepthMaterial; + + MeshDepthMaterial.prototype.isMeshDepthMaterial = true; + + MeshDepthMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.depthPacking = source.depthPacking; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * + * referencePosition: , + * nearDistance: , + * farDistance: , + * + * skinning: , + * morphTargets: , + * + * map: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: + * + * } + */ + + function MeshDistanceMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshDistanceMaterial'; + + this.referencePosition = new Vector3(); + this.nearDistance = 1; + this.farDistance = 1000; + + this.skinning = false; + this.morphTargets = false; + + this.map = null; + + this.alphaMap = null; + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.fog = false; + + this.setValues( parameters ); + + } + + MeshDistanceMaterial.prototype = Object.create( Material.prototype ); + MeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial; + + MeshDistanceMaterial.prototype.isMeshDistanceMaterial = true; + + MeshDistanceMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.referencePosition.copy( source.referencePosition ); + this.nearDistance = source.nearDistance; + this.farDistance = source.farDistance; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + + this.map = source.map; + + this.alphaMap = source.alphaMap; + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + return this; + + }; + + var vsm_frag = "uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n float mean = 0.0;\n float squared_mean = 0.0;\n \n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\n for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n #ifdef HORIZONAL_PASS\n vec2 distribution = decodeHalfRGBA ( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean * HALF_SAMPLE_RATE;\n squared_mean = squared_mean * HALF_SAMPLE_RATE;\n float std_dev = pow( squared_mean - mean * mean, 0.5 );\n gl_FragColor = encodeHalfRGBA( vec2( mean, std_dev ) );\n}"; + + var vsm_vert = "void main() {\n\tgl_Position = vec4( position, 1.0 );\n}"; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLShadowMap( _renderer, _objects, maxTextureSize ) { + + var _frustum = new Frustum(), + + _shadowMapSize = new Vector2(), + _viewportSize = new Vector2(), + + _viewport = new Vector4(), + + _MorphingFlag = 1, + _SkinningFlag = 2, + + _NumberOfMaterialVariants = ( _MorphingFlag | _SkinningFlag ) + 1, + + _depthMaterials = new Array( _NumberOfMaterialVariants ), + _distanceMaterials = new Array( _NumberOfMaterialVariants ), + + _materialCache = {}; + + var shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide }; + + var shadowMaterialVertical = new ShaderMaterial( { + + defines: { + SAMPLE_RATE: 2.0 / 8.0, + HALF_SAMPLE_RATE: 1.0 / 8.0 + }, + + uniforms: { + shadow_pass: { value: null }, + resolution: { value: new Vector2() }, + radius: { value: 4.0 } + }, + + vertexShader: vsm_vert, + + fragmentShader: vsm_frag + + } ); + + var shadowMaterialHorizonal = shadowMaterialVertical.clone(); + shadowMaterialHorizonal.defines.HORIZONAL_PASS = 1; + + var fullScreenTri = new BufferGeometry(); + fullScreenTri.addAttribute( + "position", + new BufferAttribute( + new Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ), + 3 + ) + ); + + var fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical ); + + // init + + for ( var i = 0; i !== _NumberOfMaterialVariants; ++ i ) { + + var useMorphing = ( i & _MorphingFlag ) !== 0; + var useSkinning = ( i & _SkinningFlag ) !== 0; + + var depthMaterial = new MeshDepthMaterial( { + + depthPacking: RGBADepthPacking, + + morphTargets: useMorphing, + skinning: useSkinning + + } ); + + _depthMaterials[ i ] = depthMaterial; + + var distanceMaterial = new MeshDistanceMaterial( { + + morphTargets: useMorphing, + skinning: useSkinning + + } ); + + _distanceMaterials[ i ] = distanceMaterial; + + } + + var scope = this; + + this.enabled = false; + + this.autoUpdate = true; + this.needsUpdate = false; + + this.type = PCFShadowMap; + + this.render = function ( lights, scene, camera ) { + + if ( scope.enabled === false ) { return; } + if ( scope.autoUpdate === false && scope.needsUpdate === false ) { return; } + + if ( lights.length === 0 ) { return; } + + var currentRenderTarget = _renderer.getRenderTarget(); + var activeCubeFace = _renderer.getActiveCubeFace(); + var activeMipmapLevel = _renderer.getActiveMipmapLevel(); + + var _state = _renderer.state; + + // Set GL state for depth map. + _state.setBlending( NoBlending ); + _state.buffers.color.setClear( 1, 1, 1, 1 ); + _state.buffers.depth.setTest( true ); + _state.setScissorTest( false ); + + // render depth map + + for ( var i = 0, il = lights.length; i < il; i ++ ) { + + var light = lights[ i ]; + var shadow = light.shadow; + + if ( shadow === undefined ) { + + console.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' ); + continue; + + } + + _shadowMapSize.copy( shadow.mapSize ); + + var shadowFrameExtents = shadow.getFrameExtents(); + + _shadowMapSize.multiply( shadowFrameExtents ); + + _viewportSize.copy( shadow.mapSize ); + + if ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) { + + console.warn( 'THREE.WebGLShadowMap:', light, 'has shadow exceeding max texture size, reducing' ); + + if ( _shadowMapSize.x > maxTextureSize ) { + + _viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x ); + _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x; + shadow.mapSize.x = _viewportSize.x; + + } + + if ( _shadowMapSize.y > maxTextureSize ) { + + _viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y ); + _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y; + shadow.mapSize.y = _viewportSize.y; + + } + + } + + if ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) { + + var pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat }; + + shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); + shadow.map.texture.name = light.name + ".shadowMap"; + + shadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); + + shadow.camera.updateProjectionMatrix(); + + } + + if ( shadow.map === null ) { + + var pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat }; + + shadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars ); + shadow.map.texture.name = light.name + ".shadowMap"; + + shadow.camera.updateProjectionMatrix(); + + } + + _renderer.setRenderTarget( shadow.map ); + _renderer.clear(); + + var viewportCount = shadow.getViewportCount(); + + for ( var vp = 0; vp < viewportCount; vp ++ ) { + + var viewport = shadow.getViewport( vp ); + + _viewport.set( + _viewportSize.x * viewport.x, + _viewportSize.y * viewport.y, + _viewportSize.x * viewport.z, + _viewportSize.y * viewport.w + ); + + _state.viewport( _viewport ); + + shadow.updateMatrices( light, camera, vp ); + + _frustum = shadow.getFrustum(); + + renderObject( scene, camera, shadow.camera, light, this.type ); + + } + + // do blur pass for VSM + + if ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) { + + VSMPass( shadow, camera ); + + } + + } + + scope.needsUpdate = false; + + _renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel ); + + }; + + function VSMPass( shadow, camera ) { + + var geometry = _objects.update( fullScreenMesh ); + + // vertical pass + + shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture; + shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize; + shadowMaterialVertical.uniforms.radius.value = shadow.radius; + _renderer.setRenderTarget( shadow.mapPass ); + _renderer.clear(); + _renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null ); + + // horizonal pass + + shadowMaterialHorizonal.uniforms.shadow_pass.value = shadow.mapPass.texture; + shadowMaterialHorizonal.uniforms.resolution.value = shadow.mapSize; + shadowMaterialHorizonal.uniforms.radius.value = shadow.radius; + _renderer.setRenderTarget( shadow.map ); + _renderer.clear(); + _renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizonal, fullScreenMesh, null ); + + } + + function getDepthMaterial( object, material, light, shadowCameraNear, shadowCameraFar, type ) { + + var geometry = object.geometry; + + var result = null; + + var materialVariants = _depthMaterials; + var customMaterial = object.customDepthMaterial; + + if ( light.isPointLight ) { + + materialVariants = _distanceMaterials; + customMaterial = object.customDistanceMaterial; + + } + + if ( ! customMaterial ) { + + var useMorphing = false; + + if ( material.morphTargets ) { + + if ( geometry && geometry.isBufferGeometry ) { + + useMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0; + + } else if ( geometry && geometry.isGeometry ) { + + useMorphing = geometry.morphTargets && geometry.morphTargets.length > 0; + + } + + } + + if ( object.isSkinnedMesh && material.skinning === false ) { + + console.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object ); + + } + + var useSkinning = object.isSkinnedMesh && material.skinning; + + var variantIndex = 0; + + if ( useMorphing ) { variantIndex |= _MorphingFlag; } + if ( useSkinning ) { variantIndex |= _SkinningFlag; } + + result = materialVariants[ variantIndex ]; + + } else { + + result = customMaterial; + + } + + if ( _renderer.localClippingEnabled && + material.clipShadows === true && + material.clippingPlanes.length !== 0 ) { + + // in this case we need a unique material instance reflecting the + // appropriate state + + var keyA = result.uuid, keyB = material.uuid; + + var materialsForVariant = _materialCache[ keyA ]; + + if ( materialsForVariant === undefined ) { + + materialsForVariant = {}; + _materialCache[ keyA ] = materialsForVariant; + + } + + var cachedMaterial = materialsForVariant[ keyB ]; + + if ( cachedMaterial === undefined ) { + + cachedMaterial = result.clone(); + materialsForVariant[ keyB ] = cachedMaterial; + + } + + result = cachedMaterial; + + } + + result.visible = material.visible; + result.wireframe = material.wireframe; + + if ( type === VSMShadowMap ) { + + result.side = ( material.shadowSide != null ) ? material.shadowSide : material.side; + + } else { + + result.side = ( material.shadowSide != null ) ? material.shadowSide : shadowSide[ material.side ]; + + } + + result.clipShadows = material.clipShadows; + result.clippingPlanes = material.clippingPlanes; + result.clipIntersection = material.clipIntersection; + + result.wireframeLinewidth = material.wireframeLinewidth; + result.linewidth = material.linewidth; + + if ( light.isPointLight && result.isMeshDistanceMaterial ) { + + result.referencePosition.setFromMatrixPosition( light.matrixWorld ); + result.nearDistance = shadowCameraNear; + result.farDistance = shadowCameraFar; + + } + + return result; + + } + + function renderObject( object, camera, shadowCamera, light, type ) { + + if ( object.visible === false ) { return; } + + var visible = object.layers.test( camera.layers ); + + if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) { + + if ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) { + + object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld ); + + var geometry = _objects.update( object ); + var material = object.material; + + if ( Array.isArray( material ) ) { + + var groups = geometry.groups; + + for ( var k = 0, kl = groups.length; k < kl; k ++ ) { + + var group = groups[ k ]; + var groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + var depthMaterial = getDepthMaterial( object, groupMaterial, light, shadowCamera.near, shadowCamera.far, type ); + + _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group ); + + } + + } + + } else if ( material.visible ) { + + var depthMaterial = getDepthMaterial( object, material, light, shadowCamera.near, shadowCamera.far, type ); + + _renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null ); + + } + + } + + } + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + renderObject( children[ i ], camera, shadowCamera, light, type ); + + } + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLState( gl, extensions, utils, capabilities ) { + + function ColorBuffer() { + + var locked = false; + + var color = new Vector4(); + var currentColorMask = null; + var currentColorClear = new Vector4( 0, 0, 0, 0 ); + + return { + + setMask: function ( colorMask ) { + + if ( currentColorMask !== colorMask && ! locked ) { + + gl.colorMask( colorMask, colorMask, colorMask, colorMask ); + currentColorMask = colorMask; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( r, g, b, a, premultipliedAlpha ) { + + if ( premultipliedAlpha === true ) { + + r *= a; g *= a; b *= a; + + } + + color.set( r, g, b, a ); + + if ( currentColorClear.equals( color ) === false ) { + + gl.clearColor( r, g, b, a ); + currentColorClear.copy( color ); + + } + + }, + + reset: function () { + + locked = false; + + currentColorMask = null; + currentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state + + } + + }; + + } + + function DepthBuffer() { + + var locked = false; + + var currentDepthMask = null; + var currentDepthFunc = null; + var currentDepthClear = null; + + return { + + setTest: function ( depthTest ) { + + if ( depthTest ) { + + enable( 2929 ); + + } else { + + disable( 2929 ); + + } + + }, + + setMask: function ( depthMask ) { + + if ( currentDepthMask !== depthMask && ! locked ) { + + gl.depthMask( depthMask ); + currentDepthMask = depthMask; + + } + + }, + + setFunc: function ( depthFunc ) { + + if ( currentDepthFunc !== depthFunc ) { + + if ( depthFunc ) { + + switch ( depthFunc ) { + + case NeverDepth: + + gl.depthFunc( 512 ); + break; + + case AlwaysDepth: + + gl.depthFunc( 519 ); + break; + + case LessDepth: + + gl.depthFunc( 513 ); + break; + + case LessEqualDepth: + + gl.depthFunc( 515 ); + break; + + case EqualDepth: + + gl.depthFunc( 514 ); + break; + + case GreaterEqualDepth: + + gl.depthFunc( 518 ); + break; + + case GreaterDepth: + + gl.depthFunc( 516 ); + break; + + case NotEqualDepth: + + gl.depthFunc( 517 ); + break; + + default: + + gl.depthFunc( 515 ); + + } + + } else { + + gl.depthFunc( 515 ); + + } + + currentDepthFunc = depthFunc; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( depth ) { + + if ( currentDepthClear !== depth ) { + + gl.clearDepth( depth ); + currentDepthClear = depth; + + } + + }, + + reset: function () { + + locked = false; + + currentDepthMask = null; + currentDepthFunc = null; + currentDepthClear = null; + + } + + }; + + } + + function StencilBuffer() { + + var locked = false; + + var currentStencilMask = null; + var currentStencilFunc = null; + var currentStencilRef = null; + var currentStencilFuncMask = null; + var currentStencilFail = null; + var currentStencilZFail = null; + var currentStencilZPass = null; + var currentStencilClear = null; + + return { + + setTest: function ( stencilTest ) { + + if ( ! locked ) { + + if ( stencilTest ) { + + enable( 2960 ); + + } else { + + disable( 2960 ); + + } + + } + + }, + + setMask: function ( stencilMask ) { + + if ( currentStencilMask !== stencilMask && ! locked ) { + + gl.stencilMask( stencilMask ); + currentStencilMask = stencilMask; + + } + + }, + + setFunc: function ( stencilFunc, stencilRef, stencilMask ) { + + if ( currentStencilFunc !== stencilFunc || + currentStencilRef !== stencilRef || + currentStencilFuncMask !== stencilMask ) { + + gl.stencilFunc( stencilFunc, stencilRef, stencilMask ); + + currentStencilFunc = stencilFunc; + currentStencilRef = stencilRef; + currentStencilFuncMask = stencilMask; + + } + + }, + + setOp: function ( stencilFail, stencilZFail, stencilZPass ) { + + if ( currentStencilFail !== stencilFail || + currentStencilZFail !== stencilZFail || + currentStencilZPass !== stencilZPass ) { + + gl.stencilOp( stencilFail, stencilZFail, stencilZPass ); + + currentStencilFail = stencilFail; + currentStencilZFail = stencilZFail; + currentStencilZPass = stencilZPass; + + } + + }, + + setLocked: function ( lock ) { + + locked = lock; + + }, + + setClear: function ( stencil ) { + + if ( currentStencilClear !== stencil ) { + + gl.clearStencil( stencil ); + currentStencilClear = stencil; + + } + + }, + + reset: function () { + + locked = false; + + currentStencilMask = null; + currentStencilFunc = null; + currentStencilRef = null; + currentStencilFuncMask = null; + currentStencilFail = null; + currentStencilZFail = null; + currentStencilZPass = null; + currentStencilClear = null; + + } + + }; + + } + + // + + var colorBuffer = new ColorBuffer(); + var depthBuffer = new DepthBuffer(); + var stencilBuffer = new StencilBuffer(); + + var maxVertexAttributes = gl.getParameter( 34921 ); + var newAttributes = new Uint8Array( maxVertexAttributes ); + var enabledAttributes = new Uint8Array( maxVertexAttributes ); + var attributeDivisors = new Uint8Array( maxVertexAttributes ); + + var enabledCapabilities = {}; + + var compressedTextureFormats = null; + + var currentProgram = null; + + var currentBlendingEnabled = null; + var currentBlending = null; + var currentBlendEquation = null; + var currentBlendSrc = null; + var currentBlendDst = null; + var currentBlendEquationAlpha = null; + var currentBlendSrcAlpha = null; + var currentBlendDstAlpha = null; + var currentPremultipledAlpha = false; + + var currentFlipSided = null; + var currentCullFace = null; + + var currentLineWidth = null; + + var currentPolygonOffsetFactor = null; + var currentPolygonOffsetUnits = null; + + var maxTextures = gl.getParameter( 35661 ); + + var lineWidthAvailable = false; + var version = 0; + var glVersion = gl.getParameter( 7938 ); + + if ( glVersion.indexOf( 'WebGL' ) !== - 1 ) { + + version = parseFloat( /^WebGL\ ([0-9])/.exec( glVersion )[ 1 ] ); + lineWidthAvailable = ( version >= 1.0 ); + + } else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) { + + version = parseFloat( /^OpenGL\ ES\ ([0-9])/.exec( glVersion )[ 1 ] ); + lineWidthAvailable = ( version >= 2.0 ); + + } + + var currentTextureSlot = null; + var currentBoundTextures = {}; + + var currentScissor = new Vector4(); + var currentViewport = new Vector4(); + + function createTexture( type, target, count ) { + + var data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4. + var texture = gl.createTexture(); + + gl.bindTexture( type, texture ); + gl.texParameteri( type, 10241, 9728 ); + gl.texParameteri( type, 10240, 9728 ); + + for ( var i = 0; i < count; i ++ ) { + + gl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data ); + + } + + return texture; + + } + + var emptyTextures = {}; + emptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 ); + emptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 ); + + // init + + colorBuffer.setClear( 0, 0, 0, 1 ); + depthBuffer.setClear( 1 ); + stencilBuffer.setClear( 0 ); + + enable( 2929 ); + depthBuffer.setFunc( LessEqualDepth ); + + setFlipSided( false ); + setCullFace( CullFaceBack ); + enable( 2884 ); + + setBlending( NoBlending ); + + // + + function initAttributes() { + + for ( var i = 0, l = newAttributes.length; i < l; i ++ ) { + + newAttributes[ i ] = 0; + + } + + } + + function enableAttribute( attribute ) { + + enableAttributeAndDivisor( attribute, 0 ); + + } + + function enableAttributeAndDivisor( attribute, meshPerAttribute ) { + + newAttributes[ attribute ] = 1; + + if ( enabledAttributes[ attribute ] === 0 ) { + + gl.enableVertexAttribArray( attribute ); + enabledAttributes[ attribute ] = 1; + + } + + if ( attributeDivisors[ attribute ] !== meshPerAttribute ) { + + var extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' ); + + extension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute ); + attributeDivisors[ attribute ] = meshPerAttribute; + + } + + } + + function disableUnusedAttributes() { + + for ( var i = 0, l = enabledAttributes.length; i !== l; ++ i ) { + + if ( enabledAttributes[ i ] !== newAttributes[ i ] ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + } + + function enable( id ) { + + if ( enabledCapabilities[ id ] !== true ) { + + gl.enable( id ); + enabledCapabilities[ id ] = true; + + } + + } + + function disable( id ) { + + if ( enabledCapabilities[ id ] !== false ) { + + gl.disable( id ); + enabledCapabilities[ id ] = false; + + } + + } + + function getCompressedTextureFormats() { + + if ( compressedTextureFormats === null ) { + + compressedTextureFormats = []; + + if ( extensions.get( 'WEBGL_compressed_texture_pvrtc' ) || + extensions.get( 'WEBGL_compressed_texture_s3tc' ) || + extensions.get( 'WEBGL_compressed_texture_etc1' ) || + extensions.get( 'WEBGL_compressed_texture_astc' ) ) { + + var formats = gl.getParameter( 34467 ); + + for ( var i = 0; i < formats.length; i ++ ) { + + compressedTextureFormats.push( formats[ i ] ); + + } + + } + + } + + return compressedTextureFormats; + + } + + function useProgram( program ) { + + if ( currentProgram !== program ) { + + gl.useProgram( program ); + + currentProgram = program; + + return true; + + } + + return false; + + } + + function setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) { + + if ( blending === NoBlending ) { + + if ( currentBlendingEnabled ) { + + disable( 3042 ); + currentBlendingEnabled = false; + + } + + return; + + } + + if ( ! currentBlendingEnabled ) { + + enable( 3042 ); + currentBlendingEnabled = true; + + } + + if ( blending !== CustomBlending ) { + + if ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) { + + if ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) { + + gl.blendEquation( 32774 ); + + currentBlendEquation = AddEquation; + currentBlendEquationAlpha = AddEquation; + + } + + if ( premultipliedAlpha ) { + + switch ( blending ) { + + case NormalBlending: + gl.blendFuncSeparate( 1, 771, 1, 771 ); + break; + + case AdditiveBlending: + gl.blendFunc( 1, 1 ); + break; + + case SubtractiveBlending: + gl.blendFuncSeparate( 0, 0, 769, 771 ); + break; + + case MultiplyBlending: + gl.blendFuncSeparate( 0, 768, 0, 770 ); + break; + + default: + console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + break; + + } + + } else { + + switch ( blending ) { + + case NormalBlending: + gl.blendFuncSeparate( 770, 771, 1, 771 ); + break; + + case AdditiveBlending: + gl.blendFunc( 770, 1 ); + break; + + case SubtractiveBlending: + gl.blendFunc( 0, 769 ); + break; + + case MultiplyBlending: + gl.blendFunc( 0, 768 ); + break; + + default: + console.error( 'THREE.WebGLState: Invalid blending: ', blending ); + break; + + } + + } + + currentBlendSrc = null; + currentBlendDst = null; + currentBlendSrcAlpha = null; + currentBlendDstAlpha = null; + + currentBlending = blending; + currentPremultipledAlpha = premultipliedAlpha; + + } + + return; + + } + + // custom blending + + blendEquationAlpha = blendEquationAlpha || blendEquation; + blendSrcAlpha = blendSrcAlpha || blendSrc; + blendDstAlpha = blendDstAlpha || blendDst; + + if ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) { + + gl.blendEquationSeparate( utils.convert( blendEquation ), utils.convert( blendEquationAlpha ) ); + + currentBlendEquation = blendEquation; + currentBlendEquationAlpha = blendEquationAlpha; + + } + + if ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) { + + gl.blendFuncSeparate( utils.convert( blendSrc ), utils.convert( blendDst ), utils.convert( blendSrcAlpha ), utils.convert( blendDstAlpha ) ); + + currentBlendSrc = blendSrc; + currentBlendDst = blendDst; + currentBlendSrcAlpha = blendSrcAlpha; + currentBlendDstAlpha = blendDstAlpha; + + } + + currentBlending = blending; + currentPremultipledAlpha = null; + + } + + function setMaterial( material, frontFaceCW ) { + + material.side === DoubleSide + ? disable( 2884 ) + : enable( 2884 ); + + var flipSided = ( material.side === BackSide ); + if ( frontFaceCW ) { flipSided = ! flipSided; } + + setFlipSided( flipSided ); + + ( material.blending === NormalBlending && material.transparent === false ) + ? setBlending( NoBlending ) + : setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha ); + + depthBuffer.setFunc( material.depthFunc ); + depthBuffer.setTest( material.depthTest ); + depthBuffer.setMask( material.depthWrite ); + colorBuffer.setMask( material.colorWrite ); + + var stencilWrite = material.stencilWrite; + stencilBuffer.setTest( stencilWrite ); + if ( stencilWrite ) { + + stencilBuffer.setMask( material.stencilWriteMask ); + stencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask ); + stencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass ); + + } + + setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits ); + + } + + // + + function setFlipSided( flipSided ) { + + if ( currentFlipSided !== flipSided ) { + + if ( flipSided ) { + + gl.frontFace( 2304 ); + + } else { + + gl.frontFace( 2305 ); + + } + + currentFlipSided = flipSided; + + } + + } + + function setCullFace( cullFace ) { + + if ( cullFace !== CullFaceNone ) { + + enable( 2884 ); + + if ( cullFace !== currentCullFace ) { + + if ( cullFace === CullFaceBack ) { + + gl.cullFace( 1029 ); + + } else if ( cullFace === CullFaceFront ) { + + gl.cullFace( 1028 ); + + } else { + + gl.cullFace( 1032 ); + + } + + } + + } else { + + disable( 2884 ); + + } + + currentCullFace = cullFace; + + } + + function setLineWidth( width ) { + + if ( width !== currentLineWidth ) { + + if ( lineWidthAvailable ) { gl.lineWidth( width ); } + + currentLineWidth = width; + + } + + } + + function setPolygonOffset( polygonOffset, factor, units ) { + + if ( polygonOffset ) { + + enable( 32823 ); + + if ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) { + + gl.polygonOffset( factor, units ); + + currentPolygonOffsetFactor = factor; + currentPolygonOffsetUnits = units; + + } + + } else { + + disable( 32823 ); + + } + + } + + function setScissorTest( scissorTest ) { + + if ( scissorTest ) { + + enable( 3089 ); + + } else { + + disable( 3089 ); + + } + + } + + // texture + + function activeTexture( webglSlot ) { + + if ( webglSlot === undefined ) { webglSlot = 33984 + maxTextures - 1; } + + if ( currentTextureSlot !== webglSlot ) { + + gl.activeTexture( webglSlot ); + currentTextureSlot = webglSlot; + + } + + } + + function bindTexture( webglType, webglTexture ) { + + if ( currentTextureSlot === null ) { + + activeTexture(); + + } + + var boundTexture = currentBoundTextures[ currentTextureSlot ]; + + if ( boundTexture === undefined ) { + + boundTexture = { type: undefined, texture: undefined }; + currentBoundTextures[ currentTextureSlot ] = boundTexture; + + } + + if ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) { + + gl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] ); + + boundTexture.type = webglType; + boundTexture.texture = webglTexture; + + } + + } + + function compressedTexImage2D() { + + try { + + gl.compressedTexImage2D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texImage2D() { + + try { + + gl.texImage2D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + function texImage3D() { + + try { + + gl.texImage3D.apply( gl, arguments ); + + } catch ( error ) { + + console.error( 'THREE.WebGLState:', error ); + + } + + } + + // + + function scissor( scissor ) { + + if ( currentScissor.equals( scissor ) === false ) { + + gl.scissor( scissor.x, scissor.y, scissor.z, scissor.w ); + currentScissor.copy( scissor ); + + } + + } + + function viewport( viewport ) { + + if ( currentViewport.equals( viewport ) === false ) { + + gl.viewport( viewport.x, viewport.y, viewport.z, viewport.w ); + currentViewport.copy( viewport ); + + } + + } + + // + + function reset() { + + for ( var i = 0; i < enabledAttributes.length; i ++ ) { + + if ( enabledAttributes[ i ] === 1 ) { + + gl.disableVertexAttribArray( i ); + enabledAttributes[ i ] = 0; + + } + + } + + enabledCapabilities = {}; + + compressedTextureFormats = null; + + currentTextureSlot = null; + currentBoundTextures = {}; + + currentProgram = null; + + currentBlending = null; + + currentFlipSided = null; + currentCullFace = null; + + colorBuffer.reset(); + depthBuffer.reset(); + stencilBuffer.reset(); + + } + + return { + + buffers: { + color: colorBuffer, + depth: depthBuffer, + stencil: stencilBuffer + }, + + initAttributes: initAttributes, + enableAttribute: enableAttribute, + enableAttributeAndDivisor: enableAttributeAndDivisor, + disableUnusedAttributes: disableUnusedAttributes, + enable: enable, + disable: disable, + getCompressedTextureFormats: getCompressedTextureFormats, + + useProgram: useProgram, + + setBlending: setBlending, + setMaterial: setMaterial, + + setFlipSided: setFlipSided, + setCullFace: setCullFace, + + setLineWidth: setLineWidth, + setPolygonOffset: setPolygonOffset, + + setScissorTest: setScissorTest, + + activeTexture: activeTexture, + bindTexture: bindTexture, + compressedTexImage2D: compressedTexImage2D, + texImage2D: texImage2D, + texImage3D: texImage3D, + + scissor: scissor, + viewport: viewport, + + reset: reset + + }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) { + + var _videoTextures = new WeakMap(); + var _canvas; + + // cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas, + // also OffscreenCanvas.getContext("webgl"), but not OffscreenCanvas.getContext("2d")! + + var useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined' + && ( new OffscreenCanvas( 1, 1 ).getContext( "2d" ) ) !== null; + + function createCanvas( width, height ) { + + // Use OffscreenCanvas when available. Specially needed in web workers + + return useOffscreenCanvas ? + new OffscreenCanvas( width, height ) : + document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ); + + } + + function resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) { + + var scale = 1; + + // handle case if texture exceeds max size + + if ( image.width > maxSize || image.height > maxSize ) { + + scale = maxSize / Math.max( image.width, image.height ); + + } + + // only perform resize if necessary + + if ( scale < 1 || needsPowerOfTwo === true ) { + + // only perform resize for certain image types + + if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) || + ( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) || + ( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) { + + var floor = needsPowerOfTwo ? _Math.floorPowerOfTwo : Math.floor; + + var width = floor( scale * image.width ); + var height = floor( scale * image.height ); + + if ( _canvas === undefined ) { _canvas = createCanvas( width, height ); } + + // cube textures can't reuse the same canvas + + var canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas; + + canvas.width = width; + canvas.height = height; + + var context = canvas.getContext( '2d' ); + context.drawImage( image, 0, 0, width, height ); + + console.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' ); + + return canvas; + + } else { + + if ( 'data' in image ) { + + console.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' ); + + } + + return image; + + } + + } + + return image; + + } + + function isPowerOfTwo( image ) { + + return _Math.isPowerOfTwo( image.width ) && _Math.isPowerOfTwo( image.height ); + + } + + function textureNeedsPowerOfTwo( texture ) { + + if ( capabilities.isWebGL2 ) { return false; } + + return ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) || + ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ); + + } + + function textureNeedsGenerateMipmaps( texture, supportsMips ) { + + return texture.generateMipmaps && supportsMips && + texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter; + + } + + function generateMipmap( target, texture, width, height ) { + + _gl.generateMipmap( target ); + + var textureProperties = properties.get( texture ); + + // Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11 + textureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E; + + } + + function getInternalFormat( glFormat, glType ) { + + if ( ! capabilities.isWebGL2 ) { return glFormat; } + + var internalFormat = glFormat; + + if ( glFormat === 6403 ) { + + if ( glType === 5126 ) { internalFormat = 33326; } + if ( glType === 5131 ) { internalFormat = 33325; } + if ( glType === 5121 ) { internalFormat = 33321; } + + } + + if ( glFormat === 6407 ) { + + if ( glType === 5126 ) { internalFormat = 34837; } + if ( glType === 5131 ) { internalFormat = 34843; } + if ( glType === 5121 ) { internalFormat = 32849; } + + } + + if ( glFormat === 6408 ) { + + if ( glType === 5126 ) { internalFormat = 34836; } + if ( glType === 5131 ) { internalFormat = 34842; } + if ( glType === 5121 ) { internalFormat = 32856; } + + } + + if ( internalFormat === 33325 || internalFormat === 33326 || + internalFormat === 34842 || internalFormat === 34836 ) { + + extensions.get( 'EXT_color_buffer_float' ); + + } else if ( internalFormat === 34843 || internalFormat === 34837 ) { + + console.warn( 'THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.' ); + + } + + return internalFormat; + + } + + // Fallback filters for non-power-of-2 textures + + function filterFallback( f ) { + + if ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) { + + return 9728; + + } + + return 9729; + + } + + // + + function onTextureDispose( event ) { + + var texture = event.target; + + texture.removeEventListener( 'dispose', onTextureDispose ); + + deallocateTexture( texture ); + + if ( texture.isVideoTexture ) { + + _videoTextures.delete( texture ); + + } + + info.memory.textures --; + + } + + function onRenderTargetDispose( event ) { + + var renderTarget = event.target; + + renderTarget.removeEventListener( 'dispose', onRenderTargetDispose ); + + deallocateRenderTarget( renderTarget ); + + info.memory.textures --; + + } + + // + + function deallocateTexture( texture ) { + + var textureProperties = properties.get( texture ); + + if ( textureProperties.__webglInit === undefined ) { return; } + + _gl.deleteTexture( textureProperties.__webglTexture ); + + properties.remove( texture ); + + } + + function deallocateRenderTarget( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + var textureProperties = properties.get( renderTarget.texture ); + + if ( ! renderTarget ) { return; } + + if ( textureProperties.__webglTexture !== undefined ) { + + _gl.deleteTexture( textureProperties.__webglTexture ); + + } + + if ( renderTarget.depthTexture ) { + + renderTarget.depthTexture.dispose(); + + } + + if ( renderTarget.isWebGLRenderTargetCube ) { + + for ( var i = 0; i < 6; i ++ ) { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] ); + if ( renderTargetProperties.__webglDepthbuffer ) { _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] ); } + + } + + } else { + + _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer ); + if ( renderTargetProperties.__webglDepthbuffer ) { _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer ); } + + } + + if ( renderTarget.isWebGLMultiviewRenderTarget ) { + + _gl.deleteTexture( renderTargetProperties.__webglColorTexture ); + _gl.deleteTexture( renderTargetProperties.__webglDepthStencilTexture ); + + info.memory.textures -= 2; + + for ( var i = 0, il = renderTargetProperties.__webglViewFramebuffers.length; i < il; i ++ ) { + + _gl.deleteFramebuffer( renderTargetProperties.__webglViewFramebuffers[ i ] ); + + } + + } + + properties.remove( renderTarget.texture ); + properties.remove( renderTarget ); + + } + + // + + var textureUnits = 0; + + function resetTextureUnits() { + + textureUnits = 0; + + } + + function allocateTextureUnit() { + + var textureUnit = textureUnits; + + if ( textureUnit >= capabilities.maxTextures ) { + + console.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures ); + + } + + textureUnits += 1; + + return textureUnit; + + } + + // + + function setTexture2D( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.isVideoTexture ) { updateVideoTexture( texture ); } + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + var image = texture.image; + + if ( image === undefined ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' ); + + } else if ( image.complete === false ) { + + console.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' ); + + } else { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + } + + state.activeTexture( 33984 + slot ); + state.bindTexture( 3553, textureProperties.__webglTexture ); + + } + + function setTexture2DArray( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + state.activeTexture( 33984 + slot ); + state.bindTexture( 35866, textureProperties.__webglTexture ); + + } + + function setTexture3D( texture, slot ) { + + var textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + uploadTexture( textureProperties, texture, slot ); + return; + + } + + state.activeTexture( 33984 + slot ); + state.bindTexture( 32879, textureProperties.__webglTexture ); + + } + + function setTextureCube( texture, slot ) { + + if ( texture.image.length !== 6 ) { return; } + + var textureProperties = properties.get( texture ); + + if ( texture.version > 0 && textureProperties.__version !== texture.version ) { + + initTexture( textureProperties, texture ); + + state.activeTexture( 33984 + slot ); + state.bindTexture( 34067, textureProperties.__webglTexture ); + + _gl.pixelStorei( 37440, texture.flipY ); + + var isCompressed = ( texture && texture.isCompressedTexture ); + var isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture ); + + var cubeImage = []; + + for ( var i = 0; i < 6; i ++ ) { + + if ( ! isCompressed && ! isDataTexture ) { + + cubeImage[ i ] = resizeImage( texture.image[ i ], false, true, capabilities.maxCubemapSize ); + + } else { + + cubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ]; + + } + + } + + var image = cubeImage[ 0 ], + supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, + glFormat = utils.convert( texture.format ), + glType = utils.convert( texture.type ), + glInternalFormat = getInternalFormat( glFormat, glType ); + + setTextureParameters( 34067, texture, supportsMips ); + + var mipmaps; + + if ( isCompressed ) { + + for ( var i = 0; i < 6; i ++ ) { + + mipmaps = cubeImage[ i ].mipmaps; + + for ( var j = 0; j < mipmaps.length; j ++ ) { + + var mipmap = mipmaps[ j ]; + + if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + + if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + + state.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' ); + + } + + } else { + + state.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + } + + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else { + + mipmaps = texture.mipmaps; + + for ( var i = 0; i < 6; i ++ ) { + + if ( isDataTexture ) { + + state.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data ); + + for ( var j = 0; j < mipmaps.length; j ++ ) { + + var mipmap = mipmaps[ j ]; + var mipmapImage = mipmap.image[ i ].image; + + state.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data ); + + } + + } else { + + state.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] ); + + for ( var j = 0; j < mipmaps.length; j ++ ) { + + var mipmap = mipmaps[ j ]; + + state.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] ); + + } + + } + + } + + textureProperties.__maxMipLevel = mipmaps.length; + + } + + if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { + + // We assume images for cube map have the same size. + generateMipmap( 34067, texture, image.width, image.height ); + + } + + textureProperties.__version = texture.version; + + if ( texture.onUpdate ) { texture.onUpdate( texture ); } + + } else { + + state.activeTexture( 33984 + slot ); + state.bindTexture( 34067, textureProperties.__webglTexture ); + + } + + } + + function setTextureCubeDynamic( texture, slot ) { + + state.activeTexture( 33984 + slot ); + state.bindTexture( 34067, properties.get( texture ).__webglTexture ); + + } + + function setTextureParameters( textureType, texture, supportsMips ) { + + var extension; + + if ( supportsMips ) { + + _gl.texParameteri( textureType, 10242, utils.convert( texture.wrapS ) ); + _gl.texParameteri( textureType, 10243, utils.convert( texture.wrapT ) ); + + if ( textureType === 32879 || textureType === 35866 ) { + + _gl.texParameteri( textureType, 32882, utils.convert( texture.wrapR ) ); + + } + + _gl.texParameteri( textureType, 10240, utils.convert( texture.magFilter ) ); + _gl.texParameteri( textureType, 10241, utils.convert( texture.minFilter ) ); + + } else { + + _gl.texParameteri( textureType, 10242, 33071 ); + _gl.texParameteri( textureType, 10243, 33071 ); + + if ( textureType === 32879 || textureType === 35866 ) { + + _gl.texParameteri( textureType, 32882, 33071 ); + + } + + if ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) { + + console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' ); + + } + + _gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) ); + _gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) ); + + if ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) { + + console.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' ); + + } + + } + + extension = extensions.get( 'EXT_texture_filter_anisotropic' ); + + if ( extension ) { + + if ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) { return; } + if ( texture.type === HalfFloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) { return; } + + if ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) { + + _gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) ); + properties.get( texture ).__currentAnisotropy = texture.anisotropy; + + } + + } + + } + + function initTexture( textureProperties, texture ) { + + if ( textureProperties.__webglInit === undefined ) { + + textureProperties.__webglInit = true; + + texture.addEventListener( 'dispose', onTextureDispose ); + + textureProperties.__webglTexture = _gl.createTexture(); + + info.memory.textures ++; + + } + + } + + function uploadTexture( textureProperties, texture, slot ) { + + var textureType = 3553; + + if ( texture.isDataTexture2DArray ) { textureType = 35866; } + if ( texture.isDataTexture3D ) { textureType = 32879; } + + initTexture( textureProperties, texture ); + + state.activeTexture( 33984 + slot ); + state.bindTexture( textureType, textureProperties.__webglTexture ); + + _gl.pixelStorei( 37440, texture.flipY ); + _gl.pixelStorei( 37441, texture.premultiplyAlpha ); + _gl.pixelStorei( 3317, texture.unpackAlignment ); + + var needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false; + var image = resizeImage( texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize ); + + var supportsMips = isPowerOfTwo( image ) || capabilities.isWebGL2, + glFormat = utils.convert( texture.format ), + glType = utils.convert( texture.type ), + glInternalFormat = getInternalFormat( glFormat, glType ); + + setTextureParameters( textureType, texture, supportsMips ); + + var mipmap, mipmaps = texture.mipmaps; + + if ( texture.isDepthTexture ) { + + // populate depth texture with dummy data + + glInternalFormat = 6402; + + if ( texture.type === FloatType ) { + + if ( ! capabilities.isWebGL2 ) { throw new Error( 'Float Depth Texture only supported in WebGL2.0' ); } + glInternalFormat = 36012; + + } else if ( capabilities.isWebGL2 ) { + + // WebGL 2.0 requires signed internalformat for glTexImage2D + glInternalFormat = 33189; + + } + + if ( texture.format === DepthFormat && glInternalFormat === 6402 ) { + + // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) { + + console.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' ); + + texture.type = UnsignedShortType; + glType = utils.convert( texture.type ); + + } + + } + + // Depth stencil textures need the DEPTH_STENCIL internal format + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.format === DepthStencilFormat ) { + + glInternalFormat = 34041; + + // The error INVALID_OPERATION is generated by texImage2D if format and internalformat are + // DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL. + // (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/) + if ( texture.type !== UnsignedInt248Type ) { + + console.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' ); + + texture.type = UnsignedInt248Type; + glType = utils.convert( texture.type ); + + } + + } + + state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null ); + + } else if ( texture.isDataTexture ) { + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 && supportsMips ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + texture.generateMipmaps = false; + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else { + + state.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data ); + textureProperties.__maxMipLevel = 0; + + } + + } else if ( texture.isCompressedTexture ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + + if ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) { + + if ( state.getCompressedTextureFormats().indexOf( glFormat ) > - 1 ) { + + state.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data ); + + } else { + + console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' ); + + } + + } else { + + state.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data ); + + } + + } + + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else if ( texture.isDataTexture2DArray ) { + + state.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); + textureProperties.__maxMipLevel = 0; + + } else if ( texture.isDataTexture3D ) { + + state.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data ); + textureProperties.__maxMipLevel = 0; + + } else { + + // regular Texture (image, video, canvas) + + // use manually created mipmaps if available + // if there are no manual mipmaps + // set 0 level mipmap and then use GL to generate other mipmap levels + + if ( mipmaps.length > 0 && supportsMips ) { + + for ( var i = 0, il = mipmaps.length; i < il; i ++ ) { + + mipmap = mipmaps[ i ]; + state.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap ); + + } + + texture.generateMipmaps = false; + textureProperties.__maxMipLevel = mipmaps.length - 1; + + } else { + + state.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image ); + textureProperties.__maxMipLevel = 0; + + } + + } + + if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { + + generateMipmap( 3553, texture, image.width, image.height ); + + } + + textureProperties.__version = texture.version; + + if ( texture.onUpdate ) { texture.onUpdate( texture ); } + + } + + // Render targets + + // Setup storage for target texture and bind it to correct framebuffer + function setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) { + + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + var glInternalFormat = getInternalFormat( glFormat, glType ); + state.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null ); + _gl.bindFramebuffer( 36160, framebuffer ); + _gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 ); + _gl.bindFramebuffer( 36160, null ); + + } + + // Setup storage for internal depth/stencil buffers and bind to correct framebuffer + function setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) { + + _gl.bindRenderbuffer( 36161, renderbuffer ); + + if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) { + + if ( isMultisample ) { + + var samples = getRenderTargetSamples( renderTarget ); + + _gl.renderbufferStorageMultisample( 36161, samples, 33189, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( 36161, 33189, renderTarget.width, renderTarget.height ); + + } + + _gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer ); + + } else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) { + + if ( isMultisample ) { + + var samples = getRenderTargetSamples( renderTarget ); + + _gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height ); + + } + + + _gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer ); + + } else { + + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + var glInternalFormat = getInternalFormat( glFormat, glType ); + + if ( isMultisample ) { + + var samples = getRenderTargetSamples( renderTarget ); + + _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + } else { + + _gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height ); + + } + + } + + _gl.bindRenderbuffer( 36161, null ); + + } + + // Setup resources for a Depth Texture for a FBO (needs an extension) + function setupDepthTexture( framebuffer, renderTarget ) { + + var isCube = ( renderTarget && renderTarget.isWebGLRenderTargetCube ); + if ( isCube ) { throw new Error( 'Depth Texture with cube render targets is not supported' ); } + + _gl.bindFramebuffer( 36160, framebuffer ); + + if ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) { + + throw new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' ); + + } + + // upload an empty depth texture with framebuffer size + if ( ! properties.get( renderTarget.depthTexture ).__webglTexture || + renderTarget.depthTexture.image.width !== renderTarget.width || + renderTarget.depthTexture.image.height !== renderTarget.height ) { + + renderTarget.depthTexture.image.width = renderTarget.width; + renderTarget.depthTexture.image.height = renderTarget.height; + renderTarget.depthTexture.needsUpdate = true; + + } + + setTexture2D( renderTarget.depthTexture, 0 ); + + var webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture; + + if ( renderTarget.depthTexture.format === DepthFormat ) { + + _gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 ); + + } else if ( renderTarget.depthTexture.format === DepthStencilFormat ) { + + _gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 ); + + } else { + + throw new Error( 'Unknown depthTexture format' ); + + } + + } + + // Setup GL resources for a non-texture depth buffer + function setupDepthRenderbuffer( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + + var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); + + if ( renderTarget.depthTexture ) { + + if ( isCube ) { throw new Error( 'target.depthTexture not supported in Cube render targets' ); } + + setupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget ); + + } else { + + if ( isCube ) { + + renderTargetProperties.__webglDepthbuffer = []; + + for ( var i = 0; i < 6; i ++ ) { + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] ); + renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget ); + + } + + } else { + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer ); + renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget ); + + } + + } + + _gl.bindFramebuffer( 36160, null ); + + } + + // Set up GL resources for the render target + function setupRenderTarget( renderTarget ) { + + var renderTargetProperties = properties.get( renderTarget ); + var textureProperties = properties.get( renderTarget.texture ); + + renderTarget.addEventListener( 'dispose', onRenderTargetDispose ); + + textureProperties.__webglTexture = _gl.createTexture(); + + info.memory.textures ++; + + var isCube = ( renderTarget.isWebGLRenderTargetCube === true ); + var isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true ); + var isMultiview = ( renderTarget.isWebGLMultiviewRenderTarget === true ); + var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; + + // Setup framebuffer + + if ( isCube ) { + + renderTargetProperties.__webglFramebuffer = []; + + for ( var i = 0; i < 6; i ++ ) { + + renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer(); + + } + + } else { + + renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); + + if ( isMultisample ) { + + if ( capabilities.isWebGL2 ) { + + renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer(); + renderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer(); + + _gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer ); + var glFormat = utils.convert( renderTarget.texture.format ); + var glType = utils.convert( renderTarget.texture.type ); + var glInternalFormat = getInternalFormat( glFormat, glType ); + var samples = getRenderTargetSamples( renderTarget ); + _gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height ); + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); + _gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer ); + _gl.bindRenderbuffer( 36161, null ); + + if ( renderTarget.depthBuffer ) { + + renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer(); + setupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true ); + + } + + _gl.bindFramebuffer( 36160, null ); + + + } else { + + console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); + + } + + } else if ( isMultiview ) { + + var width = renderTarget.width; + var height = renderTarget.height; + var numViews = renderTarget.numViews; + + _gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer ); + + var ext = extensions.get( 'OVR_multiview2' ); + + info.memory.textures += 2; + + var colorTexture = _gl.createTexture(); + _gl.bindTexture( 35866, colorTexture ); + _gl.texParameteri( 35866, 10240, 9728 ); + _gl.texParameteri( 35866, 10241, 9728 ); + _gl.texImage3D( 35866, 0, 32856, width, height, numViews, 0, 6408, 5121, null ); + ext.framebufferTextureMultiviewOVR( 36160, 36064, colorTexture, 0, 0, numViews ); + + var depthStencilTexture = _gl.createTexture(); + _gl.bindTexture( 35866, depthStencilTexture ); + _gl.texParameteri( 35866, 10240, 9728 ); + _gl.texParameteri( 35866, 10241, 9728 ); + _gl.texImage3D( 35866, 0, 35056, width, height, numViews, 0, 34041, 34042, null ); + ext.framebufferTextureMultiviewOVR( 36160, 33306, depthStencilTexture, 0, 0, numViews ); + + var viewFramebuffers = new Array( numViews ); + for ( var i = 0; i < numViews; ++ i ) { + + viewFramebuffers[ i ] = _gl.createFramebuffer(); + _gl.bindFramebuffer( 36160, viewFramebuffers[ i ] ); + _gl.framebufferTextureLayer( 36160, 36064, colorTexture, 0, i ); + + } + + renderTargetProperties.__webglColorTexture = colorTexture; + renderTargetProperties.__webglDepthStencilTexture = depthStencilTexture; + renderTargetProperties.__webglViewFramebuffers = viewFramebuffers; + + _gl.bindFramebuffer( 36160, null ); + _gl.bindTexture( 35866, null ); + + } + + } + + // Setup color buffer + + if ( isCube ) { + + state.bindTexture( 34067, textureProperties.__webglTexture ); + setTextureParameters( 34067, renderTarget.texture, supportsMips ); + + for ( var i = 0; i < 6; i ++ ) { + + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i ); + + } + + if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { + + generateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height ); + + } + + state.bindTexture( 34067, null ); + + } else if ( ! isMultiview ) { + + state.bindTexture( 3553, textureProperties.__webglTexture ); + setTextureParameters( 3553, renderTarget.texture, supportsMips ); + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 ); + + if ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) { + + generateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height ); + + } + + state.bindTexture( 3553, null ); + + } + + // Setup depth and stencil buffers + + if ( renderTarget.depthBuffer ) { + + setupDepthRenderbuffer( renderTarget ); + + } + + } + + function updateRenderTargetMipmap( renderTarget ) { + + var texture = renderTarget.texture; + var supportsMips = isPowerOfTwo( renderTarget ) || capabilities.isWebGL2; + + if ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) { + + var target = renderTarget.isWebGLRenderTargetCube ? 34067 : 3553; + var webglTexture = properties.get( texture ).__webglTexture; + + state.bindTexture( target, webglTexture ); + generateMipmap( target, texture, renderTarget.width, renderTarget.height ); + state.bindTexture( target, null ); + + } + + } + + function updateMultisampleRenderTarget( renderTarget ) { + + if ( renderTarget.isWebGLMultisampleRenderTarget ) { + + if ( capabilities.isWebGL2 ) { + + var renderTargetProperties = properties.get( renderTarget ); + + _gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer ); + _gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer ); + + var width = renderTarget.width; + var height = renderTarget.height; + var mask = 16384; + + if ( renderTarget.depthBuffer ) { mask |= 256; } + if ( renderTarget.stencilBuffer ) { mask |= 1024; } + + _gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 ); + + } else { + + console.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' ); + + } + + } + + } + + function getRenderTargetSamples( renderTarget ) { + + return ( capabilities.isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ? + Math.min( capabilities.maxSamples, renderTarget.samples ) : 0; + + } + + function updateVideoTexture( texture ) { + + var frame = info.render.frame; + + // Check the last frame we updated the VideoTexture + + if ( _videoTextures.get( texture ) !== frame ) { + + _videoTextures.set( texture, frame ); + texture.update(); + + } + + } + + // backwards compatibility + + var warnedTexture2D = false; + var warnedTextureCube = false; + + function safeSetTexture2D( texture, slot ) { + + if ( texture && texture.isWebGLRenderTarget ) { + + if ( warnedTexture2D === false ) { + + console.warn( "THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead." ); + warnedTexture2D = true; + + } + + texture = texture.texture; + + } + + setTexture2D( texture, slot ); + + } + + function safeSetTextureCube( texture, slot ) { + + if ( texture && texture.isWebGLRenderTargetCube ) { + + if ( warnedTextureCube === false ) { + + console.warn( "THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead." ); + warnedTextureCube = true; + + } + + texture = texture.texture; + + } + + // currently relying on the fact that WebGLRenderTargetCube.texture is a Texture and NOT a CubeTexture + // TODO: unify these code paths + if ( ( texture && texture.isCubeTexture ) || + ( Array.isArray( texture.image ) && texture.image.length === 6 ) ) { + + // CompressedTexture can have Array in image :/ + + // this function alone should take care of cube textures + setTextureCube( texture, slot ); + + } else { + + // assumed: texture property of THREE.WebGLRenderTargetCube + setTextureCubeDynamic( texture, slot ); + + } + + } + + // + + this.allocateTextureUnit = allocateTextureUnit; + this.resetTextureUnits = resetTextureUnits; + + this.setTexture2D = setTexture2D; + this.setTexture2DArray = setTexture2DArray; + this.setTexture3D = setTexture3D; + this.setTextureCube = setTextureCube; + this.setTextureCubeDynamic = setTextureCubeDynamic; + this.setupRenderTarget = setupRenderTarget; + this.updateRenderTargetMipmap = updateRenderTargetMipmap; + this.updateMultisampleRenderTarget = updateMultisampleRenderTarget; + + this.safeSetTexture2D = safeSetTexture2D; + this.safeSetTextureCube = safeSetTextureCube; + + } + + /** + * @author thespite / http://www.twitter.com/thespite + */ + + function WebGLUtils( gl, extensions, capabilities ) { + + function convert( p ) { + + var extension; + + if ( p === RepeatWrapping ) { return 10497; } + if ( p === ClampToEdgeWrapping ) { return 33071; } + if ( p === MirroredRepeatWrapping ) { return 33648; } + + if ( p === NearestFilter ) { return 9728; } + if ( p === NearestMipmapNearestFilter ) { return 9984; } + if ( p === NearestMipmapLinearFilter ) { return 9986; } + + if ( p === LinearFilter ) { return 9729; } + if ( p === LinearMipmapNearestFilter ) { return 9985; } + if ( p === LinearMipmapLinearFilter ) { return 9987; } + + if ( p === UnsignedByteType ) { return 5121; } + if ( p === UnsignedShort4444Type ) { return 32819; } + if ( p === UnsignedShort5551Type ) { return 32820; } + if ( p === UnsignedShort565Type ) { return 33635; } + + if ( p === ByteType ) { return 5120; } + if ( p === ShortType ) { return 5122; } + if ( p === UnsignedShortType ) { return 5123; } + if ( p === IntType ) { return 5124; } + if ( p === UnsignedIntType ) { return 5125; } + if ( p === FloatType ) { return 5126; } + + if ( p === HalfFloatType ) { + + if ( capabilities.isWebGL2 ) { return 5131; } + + extension = extensions.get( 'OES_texture_half_float' ); + + if ( extension !== null ) { return extension.HALF_FLOAT_OES; } + + } + + if ( p === AlphaFormat ) { return 6406; } + if ( p === RGBFormat ) { return 6407; } + if ( p === RGBAFormat ) { return 6408; } + if ( p === LuminanceFormat ) { return 6409; } + if ( p === LuminanceAlphaFormat ) { return 6410; } + if ( p === DepthFormat ) { return 6402; } + if ( p === DepthStencilFormat ) { return 34041; } + if ( p === RedFormat ) { return 6403; } + + if ( p === AddEquation ) { return 32774; } + if ( p === SubtractEquation ) { return 32778; } + if ( p === ReverseSubtractEquation ) { return 32779; } + + if ( p === ZeroFactor ) { return 0; } + if ( p === OneFactor ) { return 1; } + if ( p === SrcColorFactor ) { return 768; } + if ( p === OneMinusSrcColorFactor ) { return 769; } + if ( p === SrcAlphaFactor ) { return 770; } + if ( p === OneMinusSrcAlphaFactor ) { return 771; } + if ( p === DstAlphaFactor ) { return 772; } + if ( p === OneMinusDstAlphaFactor ) { return 773; } + + if ( p === DstColorFactor ) { return 774; } + if ( p === OneMinusDstColorFactor ) { return 775; } + if ( p === SrcAlphaSaturateFactor ) { return 776; } + + if ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || + p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_s3tc' ); + + if ( extension !== null ) { + + if ( p === RGB_S3TC_DXT1_Format ) { return extension.COMPRESSED_RGB_S3TC_DXT1_EXT; } + if ( p === RGBA_S3TC_DXT1_Format ) { return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT; } + if ( p === RGBA_S3TC_DXT3_Format ) { return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT; } + if ( p === RGBA_S3TC_DXT5_Format ) { return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT; } + + } + + } + + if ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || + p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + + if ( extension !== null ) { + + if ( p === RGB_PVRTC_4BPPV1_Format ) { return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG; } + if ( p === RGB_PVRTC_2BPPV1_Format ) { return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG; } + if ( p === RGBA_PVRTC_4BPPV1_Format ) { return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG; } + if ( p === RGBA_PVRTC_2BPPV1_Format ) { return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG; } + + } + + } + + if ( p === RGB_ETC1_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_etc1' ); + + if ( extension !== null ) { return extension.COMPRESSED_RGB_ETC1_WEBGL; } + + } + + if ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format || + p === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format || + p === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format || + p === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format || + p === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) { + + extension = extensions.get( 'WEBGL_compressed_texture_astc' ); + + if ( extension !== null ) { + + return p; + + } + + } + + if ( p === MinEquation || p === MaxEquation ) { + + if ( capabilities.isWebGL2 ) { + + if ( p === MinEquation ) { return 32775; } + if ( p === MaxEquation ) { return 32776; } + + } + + extension = extensions.get( 'EXT_blend_minmax' ); + + if ( extension !== null ) { + + if ( p === MinEquation ) { return extension.MIN_EXT; } + if ( p === MaxEquation ) { return extension.MAX_EXT; } + + } + + } + + if ( p === UnsignedInt248Type ) { + + if ( capabilities.isWebGL2 ) { return 34042; } + + extension = extensions.get( 'WEBGL_depth_texture' ); + + if ( extension !== null ) { return extension.UNSIGNED_INT_24_8_WEBGL; } + + } + + return 0; + + } + + return { convert: convert }; + + } + + /** + * @author fernandojsg / http://fernandojsg.com + * @author Takahiro https://github.com/takahirox + */ + + function WebGLMultiviewRenderTarget( width, height, numViews, options ) { + + WebGLRenderTarget.call( this, width, height, options ); + + this.depthBuffer = false; + this.stencilBuffer = false; + + this.numViews = numViews; + + } + + WebGLMultiviewRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), { + + constructor: WebGLMultiviewRenderTarget, + + isWebGLMultiviewRenderTarget: true, + + copy: function ( source ) { + + WebGLRenderTarget.prototype.copy.call( this, source ); + + this.numViews = source.numViews; + + return this; + + }, + + setNumViews: function ( numViews ) { + + if ( this.numViews !== numViews ) { + + this.numViews = numViews; + this.dispose(); + + } + + return this; + + } + + } ); + + /** + * @author fernandojsg / http://fernandojsg.com + * @author Takahiro https://github.com/takahirox + */ + + function WebGLMultiview( renderer, gl ) { + + var DEFAULT_NUMVIEWS = 2; + + var extensions = renderer.extensions; + var properties = renderer.properties; + + var renderTarget, currentRenderTarget; + var mat3, mat4, cameraArray, renderSize; + + var available; + var maxNumViews = 0; + + // + + function isAvailable() { + + if ( available === undefined ) { + + var extension = extensions.get( 'OVR_multiview2' ); + + available = extension !== null && gl.getContextAttributes().antialias === false; + + if ( available ) { + + maxNumViews = gl.getParameter( extension.MAX_VIEWS_OVR ); + renderTarget = new WebGLMultiviewRenderTarget( 0, 0, DEFAULT_NUMVIEWS ); + + renderSize = new Vector2(); + mat4 = []; + mat3 = []; + cameraArray = []; + + for ( var i = 0; i < maxNumViews; i ++ ) { + + mat4[ i ] = new Matrix4(); + mat3[ i ] = new Matrix3(); + + } + + } + + } + + return available; + + } + + function getCameraArray( camera ) { + + if ( camera.isArrayCamera ) { return camera.cameras; } + + cameraArray[ 0 ] = camera; + + return cameraArray; + + } + + function updateCameraProjectionMatricesUniform( camera, uniforms ) { + + var cameras = getCameraArray( camera ); + + for ( var i = 0; i < cameras.length; i ++ ) { + + mat4[ i ].copy( cameras[ i ].projectionMatrix ); + + } + + uniforms.setValue( gl, 'projectionMatrices', mat4 ); + + } + + function updateCameraViewMatricesUniform( camera, uniforms ) { + + var cameras = getCameraArray( camera ); + + for ( var i = 0; i < cameras.length; i ++ ) { + + mat4[ i ].copy( cameras[ i ].matrixWorldInverse ); + + } + + uniforms.setValue( gl, 'viewMatrices', mat4 ); + + } + + function updateObjectMatricesUniforms( object, camera, uniforms ) { + + var cameras = getCameraArray( camera ); + + for ( var i = 0; i < cameras.length; i ++ ) { + + mat4[ i ].multiplyMatrices( cameras[ i ].matrixWorldInverse, object.matrixWorld ); + mat3[ i ].getNormalMatrix( mat4[ i ] ); + + } + + uniforms.setValue( gl, 'modelViewMatrices', mat4 ); + uniforms.setValue( gl, 'normalMatrices', mat3 ); + + } + + function isMultiviewCompatible( camera ) { + + if ( camera.isArrayCamera === undefined ) { return true; } + + var cameras = camera.cameras; + + if ( cameras.length > maxNumViews ) { return false; } + + for ( var i = 1, il = cameras.length; i < il; i ++ ) { + + if ( cameras[ 0 ].viewport.z !== cameras[ i ].viewport.z || + cameras[ 0 ].viewport.w !== cameras[ i ].viewport.w ) { return false; } + + } + + return true; + + } + + function resizeRenderTarget( camera ) { + + if ( currentRenderTarget ) { + + renderSize.set( currentRenderTarget.width, currentRenderTarget.height ); + + } else { + + renderer.getDrawingBufferSize( renderSize ); + + } + + if ( camera.isArrayCamera ) { + + var viewport = camera.cameras[ 0 ].viewport; + + renderTarget.setSize( viewport.z, viewport.w ); + renderTarget.setNumViews( camera.cameras.length ); + + } else { + + renderTarget.setSize( renderSize.x, renderSize.y ); + renderTarget.setNumViews( DEFAULT_NUMVIEWS ); + + } + + } + + function attachCamera( camera ) { + + if ( isMultiviewCompatible( camera ) === false ) { return; } + + currentRenderTarget = renderer.getRenderTarget(); + resizeRenderTarget( camera ); + renderer.setRenderTarget( renderTarget ); + + } + + function detachCamera( camera ) { + + if ( renderTarget !== renderer.getRenderTarget() ) { return; } + + renderer.setRenderTarget( currentRenderTarget ); + + flush( camera ); + + } + + function flush( camera ) { + + var srcRenderTarget = renderTarget; + var numViews = srcRenderTarget.numViews; + + var srcFramebuffers = properties.get( srcRenderTarget ).__webglViewFramebuffers; + + var viewWidth = srcRenderTarget.width; + var viewHeight = srcRenderTarget.height; + + if ( camera.isArrayCamera ) { + + for ( var i = 0; i < numViews; i ++ ) { + + var viewport = camera.cameras[ i ].viewport; + + var x1 = viewport.x; + var y1 = viewport.y; + var x2 = x1 + viewport.z; + var y2 = y1 + viewport.w; + + gl.bindFramebuffer( 36008, srcFramebuffers[ i ] ); + gl.blitFramebuffer( 0, 0, viewWidth, viewHeight, x1, y1, x2, y2, 16384, 9728 ); + + } + + } else { + + gl.bindFramebuffer( 36008, srcFramebuffers[ 0 ] ); + gl.blitFramebuffer( 0, 0, viewWidth, viewHeight, 0, 0, renderSize.x, renderSize.y, 16384, 9728 ); + + } + + } + + this.isAvailable = isAvailable; + this.attachCamera = attachCamera; + this.detachCamera = detachCamera; + this.updateCameraProjectionMatricesUniform = updateCameraProjectionMatricesUniform; + this.updateCameraViewMatricesUniform = updateCameraViewMatricesUniform; + this.updateObjectMatricesUniforms = updateObjectMatricesUniforms; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Group() { + + Object3D.call( this ); + + this.type = 'Group'; + + } + + Group.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Group, + + isGroup: true + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ArrayCamera( array ) { + + PerspectiveCamera.call( this ); + + this.cameras = array || []; + + } + + ArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), { + + constructor: ArrayCamera, + + isArrayCamera: true + + } ); + + /** + * @author jsantell / https://www.jsantell.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var cameraLPos = new Vector3(); + var cameraRPos = new Vector3(); + + /** + * Assumes 2 cameras that are parallel and share an X-axis, and that + * the cameras' projection and world matrices have already been set. + * And that near and far planes are identical for both cameras. + * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765 + */ + function setProjectionFromUnion( camera, cameraL, cameraR ) { + + cameraLPos.setFromMatrixPosition( cameraL.matrixWorld ); + cameraRPos.setFromMatrixPosition( cameraR.matrixWorld ); + + var ipd = cameraLPos.distanceTo( cameraRPos ); + + var projL = cameraL.projectionMatrix.elements; + var projR = cameraR.projectionMatrix.elements; + + // VR systems will have identical far and near planes, and + // most likely identical top and bottom frustum extents. + // Use the left camera for these values. + var near = projL[ 14 ] / ( projL[ 10 ] - 1 ); + var far = projL[ 14 ] / ( projL[ 10 ] + 1 ); + var topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ]; + var bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ]; + + var leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ]; + var rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ]; + var left = near * leftFov; + var right = near * rightFov; + + // Calculate the new camera's position offset from the + // left camera. xOffset should be roughly half `ipd`. + var zOffset = ipd / ( - leftFov + rightFov ); + var xOffset = zOffset * - leftFov; + + // TODO: Better way to apply this offset? + cameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale ); + camera.translateX( xOffset ); + camera.translateZ( zOffset ); + camera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale ); + camera.matrixWorldInverse.getInverse( camera.matrixWorld ); + + // Find the union of the frustum values of the cameras and scale + // the values so that the near plane's position does not change in world space, + // although must now be relative to the new union camera. + var near2 = near + zOffset; + var far2 = far + zOffset; + var left2 = left - xOffset; + var right2 = right + ( ipd - xOffset ); + var top2 = topFov * far / far2 * near2; + var bottom2 = bottomFov * far / far2 * near2; + + camera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 ); + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebVRManager( renderer ) { + + var renderWidth, renderHeight; + var scope = this; + + var device = null; + var frameData = null; + + var poseTarget = null; + + var controllers = []; + var standingMatrix = new Matrix4(); + var standingMatrixInverse = new Matrix4(); + + var framebufferScaleFactor = 1.0; + + var referenceSpaceType = 'local-floor'; + + if ( typeof window !== 'undefined' && 'VRFrameData' in window ) { + + frameData = new window.VRFrameData(); + window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false ); + + } + + var matrixWorldInverse = new Matrix4(); + var tempQuaternion = new Quaternion(); + var tempPosition = new Vector3(); + + var cameraL = new PerspectiveCamera(); + cameraL.viewport = new Vector4(); + cameraL.layers.enable( 1 ); + + var cameraR = new PerspectiveCamera(); + cameraR.viewport = new Vector4(); + cameraR.layers.enable( 2 ); + + var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); + cameraVR.layers.enable( 1 ); + cameraVR.layers.enable( 2 ); + + // + + function isPresenting() { + + return device !== null && device.isPresenting === true; + + } + + var currentSize = new Vector2(), currentPixelRatio; + + function onVRDisplayPresentChange() { + + if ( isPresenting() ) { + + var eyeParameters = device.getEyeParameters( 'left' ); + renderWidth = 2 * eyeParameters.renderWidth * framebufferScaleFactor; + renderHeight = eyeParameters.renderHeight * framebufferScaleFactor; + + currentPixelRatio = renderer.getPixelRatio(); + renderer.getSize( currentSize ); + + renderer.setDrawingBufferSize( renderWidth, renderHeight, 1 ); + + cameraL.viewport.set( 0, 0, renderWidth / 2, renderHeight ); + cameraR.viewport.set( renderWidth / 2, 0, renderWidth / 2, renderHeight ); + + animation.start(); + + scope.dispatchEvent( { type: 'sessionstart' } ); + + } else { + + if ( scope.enabled ) { + + renderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio ); + + } + + animation.stop(); + + scope.dispatchEvent( { type: 'sessionend' } ); + + } + + } + + // + + var triggers = []; + + function findGamepad( id ) { + + var gamepads = navigator.getGamepads && navigator.getGamepads(); + + for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) { + + var gamepad = gamepads[ i ]; + + if ( gamepad && ( gamepad.id === 'Daydream Controller' || + gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' || + gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) || + gamepad.id.startsWith( 'HTC Vive Focus' ) || + gamepad.id.startsWith( 'Spatial Controller' ) ) ) { + + if ( j === id ) { return gamepad; } + + j ++; + + } + + } + + } + + function updateControllers() { + + for ( var i = 0; i < controllers.length; i ++ ) { + + var controller = controllers[ i ]; + + var gamepad = findGamepad( i ); + + if ( gamepad !== undefined && gamepad.pose !== undefined ) { + + if ( gamepad.pose === null ) { return; } + + // Pose + + var pose = gamepad.pose; + + if ( pose.hasPosition === false ) { controller.position.set( 0.2, - 0.6, - 0.05 ); } + + if ( pose.position !== null ) { controller.position.fromArray( pose.position ); } + if ( pose.orientation !== null ) { controller.quaternion.fromArray( pose.orientation ); } + controller.matrix.compose( controller.position, controller.quaternion, controller.scale ); + controller.matrix.premultiply( standingMatrix ); + controller.matrix.decompose( controller.position, controller.quaternion, controller.scale ); + controller.matrixWorldNeedsUpdate = true; + controller.visible = true; + + // Trigger + + var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1; + + if ( triggers[ i ] === undefined ) { triggers[ i ] = false; } + + if ( triggers[ i ] !== gamepad.buttons[ buttonId ].pressed ) { + + triggers[ i ] = gamepad.buttons[ buttonId ].pressed; + + if ( triggers[ i ] === true ) { + + controller.dispatchEvent( { type: 'selectstart' } ); + + } else { + + controller.dispatchEvent( { type: 'selectend' } ); + controller.dispatchEvent( { type: 'select' } ); + + } + + } + + } else { + + controller.visible = false; + + } + + } + + } + + function updateViewportFromBounds( viewport, bounds ) { + + if ( bounds !== null && bounds.length === 4 ) { + + viewport.set( bounds[ 0 ] * renderWidth, bounds[ 1 ] * renderHeight, bounds[ 2 ] * renderWidth, bounds[ 3 ] * renderHeight ); + + } + + } + + // + + this.enabled = false; + + this.getController = function ( id ) { + + var controller = controllers[ id ]; + + if ( controller === undefined ) { + + controller = new Group(); + controller.matrixAutoUpdate = false; + controller.visible = false; + + controllers[ id ] = controller; + + } + + return controller; + + }; + + this.getDevice = function () { + + return device; + + }; + + this.setDevice = function ( value ) { + + if ( value !== undefined ) { device = value; } + + animation.setContext( value ); + + }; + + this.setFramebufferScaleFactor = function ( value ) { + + framebufferScaleFactor = value; + + }; + + this.setReferenceSpaceType = function ( value ) { + + referenceSpaceType = value; + + }; + + this.setPoseTarget = function ( object ) { + + if ( object !== undefined ) { poseTarget = object; } + + }; + + this.getCamera = function ( camera ) { + + var userHeight = referenceSpaceType === 'local-floor' ? 1.6 : 0; + + if ( isPresenting() === false ) { + + camera.position.set( 0, userHeight, 0 ); + camera.rotation.set( 0, 0, 0 ); + + return camera; + + } + + device.depthNear = camera.near; + device.depthFar = camera.far; + + device.getFrameData( frameData ); + + // + + if ( referenceSpaceType === 'local-floor' ) { + + var stageParameters = device.stageParameters; + + if ( stageParameters ) { + + standingMatrix.fromArray( stageParameters.sittingToStandingTransform ); + + } else { + + standingMatrix.makeTranslation( 0, userHeight, 0 ); + + } + + } + + + var pose = frameData.pose; + var poseObject = poseTarget !== null ? poseTarget : camera; + + // We want to manipulate poseObject by its position and quaternion components since users may rely on them. + poseObject.matrix.copy( standingMatrix ); + poseObject.matrix.decompose( poseObject.position, poseObject.quaternion, poseObject.scale ); + + if ( pose.orientation !== null ) { + + tempQuaternion.fromArray( pose.orientation ); + poseObject.quaternion.multiply( tempQuaternion ); + + } + + if ( pose.position !== null ) { + + tempQuaternion.setFromRotationMatrix( standingMatrix ); + tempPosition.fromArray( pose.position ); + tempPosition.applyQuaternion( tempQuaternion ); + poseObject.position.add( tempPosition ); + + } + + poseObject.updateMatrixWorld(); + + // + + cameraL.near = camera.near; + cameraR.near = camera.near; + + cameraL.far = camera.far; + cameraR.far = camera.far; + + cameraL.matrixWorldInverse.fromArray( frameData.leftViewMatrix ); + cameraR.matrixWorldInverse.fromArray( frameData.rightViewMatrix ); + + // TODO (mrdoob) Double check this code + + standingMatrixInverse.getInverse( standingMatrix ); + + if ( referenceSpaceType === 'local-floor' ) { + + cameraL.matrixWorldInverse.multiply( standingMatrixInverse ); + cameraR.matrixWorldInverse.multiply( standingMatrixInverse ); + + } + + var parent = poseObject.parent; + + if ( parent !== null ) { + + matrixWorldInverse.getInverse( parent.matrixWorld ); + + cameraL.matrixWorldInverse.multiply( matrixWorldInverse ); + cameraR.matrixWorldInverse.multiply( matrixWorldInverse ); + + } + + // envMap and Mirror needs camera.matrixWorld + + cameraL.matrixWorld.getInverse( cameraL.matrixWorldInverse ); + cameraR.matrixWorld.getInverse( cameraR.matrixWorldInverse ); + + cameraL.projectionMatrix.fromArray( frameData.leftProjectionMatrix ); + cameraR.projectionMatrix.fromArray( frameData.rightProjectionMatrix ); + + setProjectionFromUnion( cameraVR, cameraL, cameraR ); + + // + + var layers = device.getLayers(); + + if ( layers.length ) { + + var layer = layers[ 0 ]; + + updateViewportFromBounds( cameraL.viewport, layer.leftBounds ); + updateViewportFromBounds( cameraR.viewport, layer.rightBounds ); + + } + + updateControllers(); + + return cameraVR; + + }; + + this.getStandingMatrix = function () { + + return standingMatrix; + + }; + + this.isPresenting = isPresenting; + + // Animation Loop + + var animation = new WebGLAnimation(); + + this.setAnimationLoop = function ( callback ) { + + animation.setAnimationLoop( callback ); + + if ( isPresenting() ) { animation.start(); } + + }; + + this.submitFrame = function () { + + if ( isPresenting() ) { device.submitFrame(); } + + }; + + this.dispose = function () { + + if ( typeof window !== 'undefined' ) { + + window.removeEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange ); + + } + + }; + + // DEPRECATED + + this.setFrameOfReferenceType = function () { + + console.warn( 'THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.' ); + + }; + + } + + Object.assign( WebVRManager.prototype, EventDispatcher.prototype ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function WebXRManager( renderer, gl ) { + + var scope = this; + + var session = null; + + // var framebufferScaleFactor = 1.0; + + var referenceSpace = null; + var referenceSpaceType = 'local-floor'; + + var pose = null; + + var controllers = []; + var inputSources = []; + + function isPresenting() { + + return session !== null && referenceSpace !== null; + + } + + // + + var cameraL = new PerspectiveCamera(); + cameraL.layers.enable( 1 ); + cameraL.viewport = new Vector4(); + + var cameraR = new PerspectiveCamera(); + cameraR.layers.enable( 2 ); + cameraR.viewport = new Vector4(); + + var cameraVR = new ArrayCamera( [ cameraL, cameraR ] ); + cameraVR.layers.enable( 1 ); + cameraVR.layers.enable( 2 ); + + // + + this.enabled = false; + + this.getController = function ( id ) { + + var controller = controllers[ id ]; + + if ( controller === undefined ) { + + controller = new Group(); + controller.matrixAutoUpdate = false; + controller.visible = false; + + controllers[ id ] = controller; + + } + + return controller; + + }; + + // + + function onSessionEvent( event ) { + + for ( var i = 0; i < controllers.length; i ++ ) { + + if ( inputSources[ i ] === event.inputSource ) { + + controllers[ i ].dispatchEvent( { type: event.type } ); + + } + + } + + } + + function onSessionEnd() { + + renderer.setFramebuffer( null ); + renderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830 + animation.stop(); + + scope.dispatchEvent( { type: 'sessionend' } ); + + } + + function onRequestReferenceSpace( value ) { + + referenceSpace = value; + + animation.setContext( session ); + animation.start(); + + scope.dispatchEvent( { type: 'sessionstart' } ); + + } + + this.setFramebufferScaleFactor = function ( /* value */ ) { + + // framebufferScaleFactor = value; + + }; + + this.setReferenceSpaceType = function ( value ) { + + referenceSpaceType = value; + + }; + + this.getSession = function () { + + return session; + + }; + + this.setSession = function ( value ) { + + session = value; + + if ( session !== null ) { + + session.addEventListener( 'select', onSessionEvent ); + session.addEventListener( 'selectstart', onSessionEvent ); + session.addEventListener( 'selectend', onSessionEvent ); + session.addEventListener( 'end', onSessionEnd ); + + // eslint-disable-next-line no-undef + session.updateRenderState( { baseLayer: new XRWebGLLayer( session, gl ) } ); + + session.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace ); + + // + + inputSources = session.inputSources; + + session.addEventListener( 'inputsourceschange', function () { + + inputSources = session.inputSources; + console.log( inputSources ); + + for ( var i = 0; i < controllers.length; i ++ ) { + + var controller = controllers[ i ]; + controller.userData.inputSource = inputSources[ i ]; + + } + + } ); + + } + + }; + + function updateCamera( camera, parent ) { + + if ( parent === null ) { + + camera.matrixWorld.copy( camera.matrix ); + + } else { + + camera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix ); + + } + + camera.matrixWorldInverse.getInverse( camera.matrixWorld ); + + } + + this.getCamera = function ( camera ) { + + if ( isPresenting() ) { + + var parent = camera.parent; + var cameras = cameraVR.cameras; + + updateCamera( cameraVR, parent ); + + for ( var i = 0; i < cameras.length; i ++ ) { + + updateCamera( cameras[ i ], parent ); + + } + + // update camera and its children + + camera.matrixWorld.copy( cameraVR.matrixWorld ); + + var children = camera.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + children[ i ].updateMatrixWorld( true ); + + } + + setProjectionFromUnion( cameraVR, cameraL, cameraR ); + + return cameraVR; + + } + + return camera; + + }; + + this.isPresenting = isPresenting; + + // Animation Loop + + var onAnimationFrameCallback = null; + + function onAnimationFrame( time, frame ) { + + pose = frame.getViewerPose( referenceSpace ); + + if ( pose !== null ) { + + var views = pose.views; + var baseLayer = session.renderState.baseLayer; + + renderer.setFramebuffer( baseLayer.framebuffer ); + + for ( var i = 0; i < views.length; i ++ ) { + + var view = views[ i ]; + var viewport = baseLayer.getViewport( view ); + var viewMatrix = view.transform.inverse.matrix; + + var camera = cameraVR.cameras[ i ]; + camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix ); + camera.projectionMatrix.fromArray( view.projectionMatrix ); + camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height ); + + if ( i === 0 ) { + + cameraVR.matrix.copy( camera.matrix ); + + } + + } + + } + + // + + for ( var i = 0; i < controllers.length; i ++ ) { + + var controller = controllers[ i ]; + + var inputSource = inputSources[ i ]; + + if ( inputSource ) { + + var inputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace ); + + if ( inputPose !== null ) { + + controller.matrix.fromArray( inputPose.transform.matrix ); + controller.matrix.decompose( controller.position, controller.rotation, controller.scale ); + controller.visible = true; + + continue; + + } + + } + + controller.visible = false; + + } + + if ( onAnimationFrameCallback ) { onAnimationFrameCallback( time ); } + + } + + var animation = new WebGLAnimation(); + animation.setAnimationLoop( onAnimationFrame ); + + this.setAnimationLoop = function ( callback ) { + + onAnimationFrameCallback = callback; + + }; + + this.dispose = function () {}; + + // DEPRECATED + + this.getStandingMatrix = function () { + + console.warn( 'THREE.WebXRManager: getStandingMatrix() is no longer needed.' ); + return new Matrix4(); + + }; + + this.getDevice = function () { + + console.warn( 'THREE.WebXRManager: getDevice() has been deprecated.' ); + + }; + + this.setDevice = function () { + + console.warn( 'THREE.WebXRManager: setDevice() has been deprecated.' ); + + }; + + this.setFrameOfReferenceType = function () { + + console.warn( 'THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.' ); + + }; + + this.submitFrame = function () {}; + + } + + Object.assign( WebXRManager.prototype, EventDispatcher.prototype ); + + /** + * @author supereggbert / http://www.paulbrunt.co.uk/ + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * @author szimek / https://github.com/szimek/ + * @author tschw + */ + + function WebGLRenderer( parameters ) { + + parameters = parameters || {}; + + var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' ), + _context = parameters.context !== undefined ? parameters.context : null, + + _alpha = parameters.alpha !== undefined ? parameters.alpha : false, + _depth = parameters.depth !== undefined ? parameters.depth : true, + _stencil = parameters.stencil !== undefined ? parameters.stencil : true, + _antialias = parameters.antialias !== undefined ? parameters.antialias : false, + _premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true, + _preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false, + _powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default', + _failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false; + + var currentRenderList = null; + var currentRenderState = null; + + // public properties + + this.domElement = _canvas; + + // Debug configuration container + this.debug = { + + /** + * Enables error checking and reporting when shader programs are being compiled + * @type {boolean} + */ + checkShaderErrors: true + }; + + // clearing + + this.autoClear = true; + this.autoClearColor = true; + this.autoClearDepth = true; + this.autoClearStencil = true; + + // scene graph + + this.sortObjects = true; + + // user-defined clipping + + this.clippingPlanes = []; + this.localClippingEnabled = false; + + // physically based shading + + this.gammaFactor = 2.0; // for backwards compatibility + this.gammaInput = false; + this.gammaOutput = false; + + // physical lights + + this.physicallyCorrectLights = false; + + // tone mapping + + this.toneMapping = LinearToneMapping; + this.toneMappingExposure = 1.0; + this.toneMappingWhitePoint = 1.0; + + // morphs + + this.maxMorphTargets = 8; + this.maxMorphNormals = 4; + + // internal properties + + var _this = this, + + _isContextLost = false, + + // internal state cache + + _framebuffer = null, + + _currentActiveCubeFace = 0, + _currentActiveMipmapLevel = 0, + _currentRenderTarget = null, + _currentFramebuffer = null, + _currentMaterialId = - 1, + + // geometry and program caching + + _currentGeometryProgram = { + geometry: null, + program: null, + wireframe: false + }, + + _currentCamera = null, + _currentArrayCamera = null, + + _currentViewport = new Vector4(), + _currentScissor = new Vector4(), + _currentScissorTest = null, + + // + + _width = _canvas.width, + _height = _canvas.height, + + _pixelRatio = 1, + + _viewport = new Vector4( 0, 0, _width, _height ), + _scissor = new Vector4( 0, 0, _width, _height ), + _scissorTest = false, + + // frustum + + _frustum = new Frustum(), + + // clipping + + _clipping = new WebGLClipping(), + _clippingEnabled = false, + _localClippingEnabled = false, + + // camera matrices cache + + _projScreenMatrix = new Matrix4(), + + _vector3 = new Vector3(); + + function getTargetPixelRatio() { + + return _currentRenderTarget === null ? _pixelRatio : 1; + + } + + // initialize + + var _gl; + + try { + + var contextAttributes = { + alpha: _alpha, + depth: _depth, + stencil: _stencil, + antialias: _antialias, + premultipliedAlpha: _premultipliedAlpha, + preserveDrawingBuffer: _preserveDrawingBuffer, + powerPreference: _powerPreference, + failIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat, + xrCompatible: true + }; + + // event listeners must be registered before WebGL context is created, see #12753 + + _canvas.addEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.addEventListener( 'webglcontextrestored', onContextRestore, false ); + + _gl = _context || _canvas.getContext( 'webgl', contextAttributes ) || _canvas.getContext( 'experimental-webgl', contextAttributes ); + + if ( _gl === null ) { + + if ( _canvas.getContext( 'webgl' ) !== null ) { + + throw new Error( 'Error creating WebGL context with your selected attributes.' ); + + } else { + + throw new Error( 'Error creating WebGL context.' ); + + } + + } + + // Some experimental-webgl implementations do not have getShaderPrecisionFormat + + if ( _gl.getShaderPrecisionFormat === undefined ) { + + _gl.getShaderPrecisionFormat = function () { + + return { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 }; + + }; + + } + + } catch ( error ) { + + console.error( 'THREE.WebGLRenderer: ' + error.message ); + throw error; + + } + + var extensions, capabilities, state, info; + var properties, textures, attributes, geometries, objects; + var programCache, renderLists, renderStates; + + var background, morphtargets, bufferRenderer, indexedBufferRenderer; + + var utils; + + function initGLContext() { + + extensions = new WebGLExtensions( _gl ); + + capabilities = new WebGLCapabilities( _gl, extensions, parameters ); + + if ( capabilities.isWebGL2 === false ) { + + extensions.get( 'WEBGL_depth_texture' ); + extensions.get( 'OES_texture_float' ); + extensions.get( 'OES_texture_half_float' ); + extensions.get( 'OES_texture_half_float_linear' ); + extensions.get( 'OES_standard_derivatives' ); + extensions.get( 'OES_element_index_uint' ); + extensions.get( 'ANGLE_instanced_arrays' ); + + } + + extensions.get( 'OES_texture_float_linear' ); + + utils = new WebGLUtils( _gl, extensions, capabilities ); + + state = new WebGLState( _gl, extensions, utils, capabilities ); + state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() ); + state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() ); + + info = new WebGLInfo( _gl ); + properties = new WebGLProperties(); + textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ); + attributes = new WebGLAttributes( _gl ); + geometries = new WebGLGeometries( _gl, attributes, info ); + objects = new WebGLObjects( _gl, geometries, attributes, info ); + morphtargets = new WebGLMorphtargets( _gl ); + programCache = new WebGLPrograms( _this, extensions, capabilities ); + renderLists = new WebGLRenderLists(); + renderStates = new WebGLRenderStates(); + + background = new WebGLBackground( _this, state, objects, _premultipliedAlpha ); + + bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities ); + indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities ); + + info.programs = programCache.programs; + + _this.capabilities = capabilities; + _this.extensions = extensions; + _this.properties = properties; + _this.renderLists = renderLists; + _this.state = state; + _this.info = info; + + } + + initGLContext(); + + // vr + + var vr = ( typeof navigator !== 'undefined' && 'xr' in navigator && 'supportsSession' in navigator.xr ) ? new WebXRManager( _this, _gl ) : new WebVRManager( _this ); + + this.vr = vr; + + // Multiview + + var multiview = new WebGLMultiview( _this, _gl ); + + // shadow map + + var shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize ); + + this.shadowMap = shadowMap; + + // API + + this.getContext = function () { + + return _gl; + + }; + + this.getContextAttributes = function () { + + return _gl.getContextAttributes(); + + }; + + this.forceContextLoss = function () { + + var extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) { extension.loseContext(); } + + }; + + this.forceContextRestore = function () { + + var extension = extensions.get( 'WEBGL_lose_context' ); + if ( extension ) { extension.restoreContext(); } + + }; + + this.getPixelRatio = function () { + + return _pixelRatio; + + }; + + this.setPixelRatio = function ( value ) { + + if ( value === undefined ) { return; } + + _pixelRatio = value; + + this.setSize( _width, _height, false ); + + }; + + this.getSize = function ( target ) { + + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' ); + + target = new Vector2(); + + } + + return target.set( _width, _height ); + + }; + + this.setSize = function ( width, height, updateStyle ) { + + if ( vr.isPresenting() ) { + + console.warn( 'THREE.WebGLRenderer: Can\'t change size while VR device is presenting.' ); + return; + + } + + _width = width; + _height = height; + + _canvas.width = Math.floor( width * _pixelRatio ); + _canvas.height = Math.floor( height * _pixelRatio ); + + if ( updateStyle !== false ) { + + _canvas.style.width = width + 'px'; + _canvas.style.height = height + 'px'; + + } + + this.setViewport( 0, 0, width, height ); + + }; + + this.getDrawingBufferSize = function ( target ) { + + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' ); + + target = new Vector2(); + + } + + return target.set( _width * _pixelRatio, _height * _pixelRatio ).floor(); + + }; + + this.setDrawingBufferSize = function ( width, height, pixelRatio ) { + + _width = width; + _height = height; + + _pixelRatio = pixelRatio; + + _canvas.width = Math.floor( width * pixelRatio ); + _canvas.height = Math.floor( height * pixelRatio ); + + this.setViewport( 0, 0, width, height ); + + }; + + this.getCurrentViewport = function ( target ) { + + if ( target === undefined ) { + + console.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' ); + + target = new Vector4(); + + } + + return target.copy( _currentViewport ); + + }; + + this.getViewport = function ( target ) { + + return target.copy( _viewport ); + + }; + + this.setViewport = function ( x, y, width, height ) { + + if ( x.isVector4 ) { + + _viewport.set( x.x, x.y, x.z, x.w ); + + } else { + + _viewport.set( x, y, width, height ); + + } + + state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() ); + + }; + + this.getScissor = function ( target ) { + + return target.copy( _scissor ); + + }; + + this.setScissor = function ( x, y, width, height ) { + + if ( x.isVector4 ) { + + _scissor.set( x.x, x.y, x.z, x.w ); + + } else { + + _scissor.set( x, y, width, height ); + + } + + state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() ); + + }; + + this.getScissorTest = function () { + + return _scissorTest; + + }; + + this.setScissorTest = function ( boolean ) { + + state.setScissorTest( _scissorTest = boolean ); + + }; + + // Clearing + + this.getClearColor = function () { + + return background.getClearColor(); + + }; + + this.setClearColor = function () { + + background.setClearColor.apply( background, arguments ); + + }; + + this.getClearAlpha = function () { + + return background.getClearAlpha(); + + }; + + this.setClearAlpha = function () { + + background.setClearAlpha.apply( background, arguments ); + + }; + + this.clear = function ( color, depth, stencil ) { + + var bits = 0; + + if ( color === undefined || color ) { bits |= 16384; } + if ( depth === undefined || depth ) { bits |= 256; } + if ( stencil === undefined || stencil ) { bits |= 1024; } + + _gl.clear( bits ); + + }; + + this.clearColor = function () { + + this.clear( true, false, false ); + + }; + + this.clearDepth = function () { + + this.clear( false, true, false ); + + }; + + this.clearStencil = function () { + + this.clear( false, false, true ); + + }; + + // + + this.dispose = function () { + + _canvas.removeEventListener( 'webglcontextlost', onContextLost, false ); + _canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false ); + + renderLists.dispose(); + renderStates.dispose(); + properties.dispose(); + objects.dispose(); + + vr.dispose(); + + animation.stop(); + + }; + + // Events + + function onContextLost( event ) { + + event.preventDefault(); + + console.log( 'THREE.WebGLRenderer: Context Lost.' ); + + _isContextLost = true; + + } + + function onContextRestore( /* event */ ) { + + console.log( 'THREE.WebGLRenderer: Context Restored.' ); + + _isContextLost = false; + + initGLContext(); + + } + + function onMaterialDispose( event ) { + + var material = event.target; + + material.removeEventListener( 'dispose', onMaterialDispose ); + + deallocateMaterial( material ); + + } + + // Buffer deallocation + + function deallocateMaterial( material ) { + + releaseMaterialProgramReference( material ); + + properties.remove( material ); + + } + + + function releaseMaterialProgramReference( material ) { + + var programInfo = properties.get( material ).program; + + material.program = undefined; + + if ( programInfo !== undefined ) { + + programCache.releaseProgram( programInfo ); + + } + + } + + // Buffer rendering + + function renderObjectImmediate( object, program ) { + + object.render( function ( object ) { + + _this.renderBufferImmediate( object, program ); + + } ); + + } + + this.renderBufferImmediate = function ( object, program ) { + + state.initAttributes(); + + var buffers = properties.get( object ); + + if ( object.hasPositions && ! buffers.position ) { buffers.position = _gl.createBuffer(); } + if ( object.hasNormals && ! buffers.normal ) { buffers.normal = _gl.createBuffer(); } + if ( object.hasUvs && ! buffers.uv ) { buffers.uv = _gl.createBuffer(); } + if ( object.hasColors && ! buffers.color ) { buffers.color = _gl.createBuffer(); } + + var programAttributes = program.getAttributes(); + + if ( object.hasPositions ) { + + _gl.bindBuffer( 34962, buffers.position ); + _gl.bufferData( 34962, object.positionArray, 35048 ); + + state.enableAttribute( programAttributes.position ); + _gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 ); + + } + + if ( object.hasNormals ) { + + _gl.bindBuffer( 34962, buffers.normal ); + _gl.bufferData( 34962, object.normalArray, 35048 ); + + state.enableAttribute( programAttributes.normal ); + _gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 ); + + } + + if ( object.hasUvs ) { + + _gl.bindBuffer( 34962, buffers.uv ); + _gl.bufferData( 34962, object.uvArray, 35048 ); + + state.enableAttribute( programAttributes.uv ); + _gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 ); + + } + + if ( object.hasColors ) { + + _gl.bindBuffer( 34962, buffers.color ); + _gl.bufferData( 34962, object.colorArray, 35048 ); + + state.enableAttribute( programAttributes.color ); + _gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 ); + + } + + state.disableUnusedAttributes(); + + _gl.drawArrays( 4, 0, object.count ); + + object.count = 0; + + }; + + this.renderBufferDirect = function ( camera, fog, geometry, material, object, group ) { + + var frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 ); + + state.setMaterial( material, frontFaceCW ); + + var program = setProgram( camera, fog, material, object ); + + var updateBuffers = false; + + if ( _currentGeometryProgram.geometry !== geometry.id || + _currentGeometryProgram.program !== program.id || + _currentGeometryProgram.wireframe !== ( material.wireframe === true ) ) { + + _currentGeometryProgram.geometry = geometry.id; + _currentGeometryProgram.program = program.id; + _currentGeometryProgram.wireframe = material.wireframe === true; + updateBuffers = true; + + } + + if ( object.morphTargetInfluences ) { + + morphtargets.update( object, geometry, material, program ); + + updateBuffers = true; + + } + + // + + var index = geometry.index; + var position = geometry.attributes.position; + var rangeFactor = 1; + + if ( material.wireframe === true ) { + + index = geometries.getWireframeAttribute( geometry ); + rangeFactor = 2; + + } + + var attribute; + var renderer = bufferRenderer; + + if ( index !== null ) { + + attribute = attributes.get( index ); + + renderer = indexedBufferRenderer; + renderer.setIndex( attribute ); + + } + + if ( updateBuffers ) { + + setupVertexAttributes( object, geometry, material, program ); + + if ( index !== null ) { + + _gl.bindBuffer( 34963, attribute.buffer ); + + } + + } + + // + + var dataCount = Infinity; + + if ( index !== null ) { + + dataCount = index.count; + + } else if ( position !== undefined ) { + + dataCount = position.count; + + } + + var rangeStart = geometry.drawRange.start * rangeFactor; + var rangeCount = geometry.drawRange.count * rangeFactor; + + var groupStart = group !== null ? group.start * rangeFactor : 0; + var groupCount = group !== null ? group.count * rangeFactor : Infinity; + + var drawStart = Math.max( rangeStart, groupStart ); + var drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1; + + var drawCount = Math.max( 0, drawEnd - drawStart + 1 ); + + if ( drawCount === 0 ) { return; } + + // + + if ( object.isMesh ) { + + if ( material.wireframe === true ) { + + state.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() ); + renderer.setMode( 1 ); + + } else { + + switch ( object.drawMode ) { + + case TrianglesDrawMode: + renderer.setMode( 4 ); + break; + + case TriangleStripDrawMode: + renderer.setMode( 5 ); + break; + + case TriangleFanDrawMode: + renderer.setMode( 6 ); + break; + + } + + } + + } else if ( object.isLine ) { + + var lineWidth = material.linewidth; + + if ( lineWidth === undefined ) { lineWidth = 1; } // Not using Line*Material + + state.setLineWidth( lineWidth * getTargetPixelRatio() ); + + if ( object.isLineSegments ) { + + renderer.setMode( 1 ); + + } else if ( object.isLineLoop ) { + + renderer.setMode( 2 ); + + } else { + + renderer.setMode( 3 ); + + } + + } else if ( object.isPoints ) { + + renderer.setMode( 0 ); + + } else if ( object.isSprite ) { + + renderer.setMode( 4 ); + + } + + if ( object.isInstancedMesh ) { + + renderer.renderInstances( geometry, drawStart, drawCount, object.count ); + + } else if ( geometry.isInstancedBufferGeometry ) { + + renderer.renderInstances( geometry, drawStart, drawCount, geometry.maxInstancedCount ); + + } else { + + renderer.render( drawStart, drawCount ); + + } + + }; + + function setupVertexAttributes( object, geometry, material, program ) { + + if ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) { + + if ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) { return; } + + } + + state.initAttributes(); + + var geometryAttributes = geometry.attributes; + + var programAttributes = program.getAttributes(); + + var materialDefaultAttributeValues = material.defaultAttributeValues; + + for ( var name in programAttributes ) { + + var programAttribute = programAttributes[ name ]; + + if ( programAttribute >= 0 ) { + + var geometryAttribute = geometryAttributes[ name ]; + + if ( geometryAttribute !== undefined ) { + + var normalized = geometryAttribute.normalized; + var size = geometryAttribute.itemSize; + + var attribute = attributes.get( geometryAttribute ); + + // TODO Attribute may not be available on context restore + + if ( attribute === undefined ) { continue; } + + var buffer = attribute.buffer; + var type = attribute.type; + var bytesPerElement = attribute.bytesPerElement; + + if ( geometryAttribute.isInterleavedBufferAttribute ) { + + var data = geometryAttribute.data; + var stride = data.stride; + var offset = geometryAttribute.offset; + + if ( data && data.isInstancedInterleavedBuffer ) { + + state.enableAttributeAndDivisor( programAttribute, data.meshPerAttribute ); + + if ( geometry.maxInstancedCount === undefined ) { + + geometry.maxInstancedCount = data.meshPerAttribute * data.count; + + } + + } else { + + state.enableAttribute( programAttribute ); + + } + + _gl.bindBuffer( 34962, buffer ); + _gl.vertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement ); + + } else { + + if ( geometryAttribute.isInstancedBufferAttribute ) { + + state.enableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute ); + + if ( geometry.maxInstancedCount === undefined ) { + + geometry.maxInstancedCount = geometryAttribute.meshPerAttribute * geometryAttribute.count; + + } + + } else { + + state.enableAttribute( programAttribute ); + + } + + _gl.bindBuffer( 34962, buffer ); + _gl.vertexAttribPointer( programAttribute, size, type, normalized, 0, 0 ); + + } + + } else if ( name === 'instanceMatrix' ) { + + var attribute = attributes.get( object.instanceMatrix ); + + // TODO Attribute may not be available on context restore + + if ( attribute === undefined ) { continue; } + + var buffer = attribute.buffer; + var type = attribute.type; + + state.enableAttributeAndDivisor( programAttribute + 0, 1 ); + state.enableAttributeAndDivisor( programAttribute + 1, 1 ); + state.enableAttributeAndDivisor( programAttribute + 2, 1 ); + state.enableAttributeAndDivisor( programAttribute + 3, 1 ); + + _gl.bindBuffer( 34962, buffer ); + + _gl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 ); + _gl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 ); + _gl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 ); + _gl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 ); + + } else if ( materialDefaultAttributeValues !== undefined ) { + + var value = materialDefaultAttributeValues[ name ]; + + if ( value !== undefined ) { + + switch ( value.length ) { + + case 2: + _gl.vertexAttrib2fv( programAttribute, value ); + break; + + case 3: + _gl.vertexAttrib3fv( programAttribute, value ); + break; + + case 4: + _gl.vertexAttrib4fv( programAttribute, value ); + break; + + default: + _gl.vertexAttrib1fv( programAttribute, value ); + + } + + } + + } + + } + + } + + state.disableUnusedAttributes(); + + } + + // Compile + + this.compile = function ( scene, camera ) { + + currentRenderState = renderStates.get( scene, camera ); + currentRenderState.init(); + + scene.traverse( function ( object ) { + + if ( object.isLight ) { + + currentRenderState.pushLight( object ); + + if ( object.castShadow ) { + + currentRenderState.pushShadow( object ); + + } + + } + + } ); + + currentRenderState.setupLights( camera ); + + scene.traverse( function ( object ) { + + if ( object.material ) { + + if ( Array.isArray( object.material ) ) { + + for ( var i = 0; i < object.material.length; i ++ ) { + + initMaterial( object.material[ i ], scene.fog, object ); + + } + + } else { + + initMaterial( object.material, scene.fog, object ); + + } + + } + + } ); + + }; + + // Animation Loop + + var onAnimationFrameCallback = null; + + function onAnimationFrame( time ) { + + if ( vr.isPresenting() ) { return; } + if ( onAnimationFrameCallback ) { onAnimationFrameCallback( time ); } + + } + + var animation = new WebGLAnimation(); + animation.setAnimationLoop( onAnimationFrame ); + + if ( typeof window !== 'undefined' ) { animation.setContext( window ); } + + this.setAnimationLoop = function ( callback ) { + + onAnimationFrameCallback = callback; + vr.setAnimationLoop( callback ); + + animation.start(); + + }; + + // Rendering + + this.render = function ( scene, camera ) { + + var renderTarget, forceClear; + + if ( arguments[ 2 ] !== undefined ) { + + console.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' ); + renderTarget = arguments[ 2 ]; + + } + + if ( arguments[ 3 ] !== undefined ) { + + console.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' ); + forceClear = arguments[ 3 ]; + + } + + if ( ! ( camera && camera.isCamera ) ) { + + console.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' ); + return; + + } + + if ( _isContextLost ) { return; } + + // reset caching for this frame + + _currentGeometryProgram.geometry = null; + _currentGeometryProgram.program = null; + _currentGeometryProgram.wireframe = false; + _currentMaterialId = - 1; + _currentCamera = null; + + // update scene graph + + if ( scene.autoUpdate === true ) { scene.updateMatrixWorld(); } + + // update camera matrices and frustum + + if ( camera.parent === null ) { camera.updateMatrixWorld(); } + + if ( vr.enabled ) { + + camera = vr.getCamera( camera ); + + } + + // + + currentRenderState = renderStates.get( scene, camera ); + currentRenderState.init(); + + scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget ); + + _projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); + _frustum.setFromMatrix( _projScreenMatrix ); + + _localClippingEnabled = this.localClippingEnabled; + _clippingEnabled = _clipping.init( this.clippingPlanes, _localClippingEnabled, camera ); + + currentRenderList = renderLists.get( scene, camera ); + currentRenderList.init(); + + projectObject( scene, camera, 0, _this.sortObjects ); + + if ( _this.sortObjects === true ) { + + currentRenderList.sort(); + + } + + // + + if ( _clippingEnabled ) { _clipping.beginShadows(); } + + var shadowsArray = currentRenderState.state.shadowsArray; + + shadowMap.render( shadowsArray, scene, camera ); + + currentRenderState.setupLights( camera ); + + if ( _clippingEnabled ) { _clipping.endShadows(); } + + // + + if ( this.info.autoReset ) { this.info.reset(); } + + if ( renderTarget !== undefined ) { + + this.setRenderTarget( renderTarget ); + + } + + if ( vr.enabled && multiview.isAvailable() ) { + + multiview.attachCamera( camera ); + + } + + // + + background.render( currentRenderList, scene, camera, forceClear ); + + // render scene + + var opaqueObjects = currentRenderList.opaque; + var transparentObjects = currentRenderList.transparent; + + if ( scene.overrideMaterial ) { + + var overrideMaterial = scene.overrideMaterial; + + if ( opaqueObjects.length ) { renderObjects( opaqueObjects, scene, camera, overrideMaterial ); } + if ( transparentObjects.length ) { renderObjects( transparentObjects, scene, camera, overrideMaterial ); } + + } else { + + // opaque pass (front-to-back order) + + if ( opaqueObjects.length ) { renderObjects( opaqueObjects, scene, camera ); } + + // transparent pass (back-to-front order) + + if ( transparentObjects.length ) { renderObjects( transparentObjects, scene, camera ); } + + } + + // + + scene.onAfterRender( _this, scene, camera ); + + // + + if ( _currentRenderTarget !== null ) { + + // Generate mipmap if we're using any kind of mipmap filtering + + textures.updateRenderTargetMipmap( _currentRenderTarget ); + + // resolve multisample renderbuffers to a single-sample texture if necessary + + textures.updateMultisampleRenderTarget( _currentRenderTarget ); + + } + + // Ensure depth buffer writing is enabled so it can be cleared on next render + + state.buffers.depth.setTest( true ); + state.buffers.depth.setMask( true ); + state.buffers.color.setMask( true ); + + state.setPolygonOffset( false ); + + if ( vr.enabled ) { + + if ( multiview.isAvailable() ) { + + multiview.detachCamera( camera ); + + } + + vr.submitFrame(); + + } + + // _gl.finish(); + + currentRenderList = null; + currentRenderState = null; + + }; + + function projectObject( object, camera, groupOrder, sortObjects ) { + + if ( object.visible === false ) { return; } + + var visible = object.layers.test( camera.layers ); + + if ( visible ) { + + if ( object.isGroup ) { + + groupOrder = object.renderOrder; + + } else if ( object.isLOD ) { + + if ( object.autoUpdate === true ) { object.update( camera ); } + + } else if ( object.isLight ) { + + currentRenderState.pushLight( object ); + + if ( object.castShadow ) { + + currentRenderState.pushShadow( object ); + + } + + } else if ( object.isSprite ) { + + if ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + var geometry = objects.update( object ); + var material = object.material; + + if ( material.visible ) { + + currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); + + } + + } + + } else if ( object.isImmediateRenderObject ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + currentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null ); + + } else if ( object.isMesh || object.isLine || object.isPoints ) { + + if ( object.isSkinnedMesh ) { + + // update skeleton only once in a frame + + if ( object.skeleton.frame !== info.render.frame ) { + + object.skeleton.update(); + object.skeleton.frame = info.render.frame; + + } + + } + + if ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) { + + if ( sortObjects ) { + + _vector3.setFromMatrixPosition( object.matrixWorld ) + .applyMatrix4( _projScreenMatrix ); + + } + + var geometry = objects.update( object ); + var material = object.material; + + if ( Array.isArray( material ) ) { + + var groups = geometry.groups; + + for ( var i = 0, l = groups.length; i < l; i ++ ) { + + var group = groups[ i ]; + var groupMaterial = material[ group.materialIndex ]; + + if ( groupMaterial && groupMaterial.visible ) { + + currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group ); + + } + + } + + } else if ( material.visible ) { + + currentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null ); + + } + + } + + } + + } + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + projectObject( children[ i ], camera, groupOrder, sortObjects ); + + } + + } + + function renderObjects( renderList, scene, camera, overrideMaterial ) { + + for ( var i = 0, l = renderList.length; i < l; i ++ ) { + + var renderItem = renderList[ i ]; + + var object = renderItem.object; + var geometry = renderItem.geometry; + var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial; + var group = renderItem.group; + + if ( camera.isArrayCamera ) { + + _currentArrayCamera = camera; + + if ( vr.enabled && multiview.isAvailable() ) { + + renderObject( object, scene, camera, geometry, material, group ); + + } else { + + var cameras = camera.cameras; + + for ( var j = 0, jl = cameras.length; j < jl; j ++ ) { + + var camera2 = cameras[ j ]; + + if ( object.layers.test( camera2.layers ) ) { + + state.viewport( _currentViewport.copy( camera2.viewport ) ); + + currentRenderState.setupLights( camera2 ); + + renderObject( object, scene, camera2, geometry, material, group ); + + } + + } + + } + + } else { + + _currentArrayCamera = null; + + renderObject( object, scene, camera, geometry, material, group ); + + } + + } + + } + + function renderObject( object, scene, camera, geometry, material, group ) { + + object.onBeforeRender( _this, scene, camera, geometry, material, group ); + currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); + + object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); + object.normalMatrix.getNormalMatrix( object.modelViewMatrix ); + + if ( object.isImmediateRenderObject ) { + + state.setMaterial( material ); + + var program = setProgram( camera, scene.fog, material, object ); + + _currentGeometryProgram.geometry = null; + _currentGeometryProgram.program = null; + _currentGeometryProgram.wireframe = false; + + renderObjectImmediate( object, program ); + + } else { + + _this.renderBufferDirect( camera, scene.fog, geometry, material, object, group ); + + } + + object.onAfterRender( _this, scene, camera, geometry, material, group ); + currentRenderState = renderStates.get( scene, _currentArrayCamera || camera ); + + } + + function initMaterial( material, fog, object ) { + + var materialProperties = properties.get( material ); + + var lights = currentRenderState.state.lights; + var shadowsArray = currentRenderState.state.shadowsArray; + + var lightsStateVersion = lights.state.version; + + var parameters = programCache.getParameters( + material, lights.state, shadowsArray, fog, _clipping.numPlanes, _clipping.numIntersection, object ); + + var code = programCache.getProgramCode( material, parameters ); + + var program = materialProperties.program; + var programChange = true; + + if ( program === undefined ) { + + // new material + material.addEventListener( 'dispose', onMaterialDispose ); + + } else if ( program.code !== code ) { + + // changed glsl or parameters + releaseMaterialProgramReference( material ); + + } else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) { + + materialProperties.lightsStateVersion = lightsStateVersion; + + programChange = false; + + } else if ( parameters.shaderID !== undefined ) { + + // same glsl and uniform list + return; + + } else { + + // only rebuild uniform list + programChange = false; + + } + + if ( programChange ) { + + if ( parameters.shaderID ) { + + var shader = ShaderLib[ parameters.shaderID ]; + + materialProperties.shader = { + name: material.type, + uniforms: cloneUniforms( shader.uniforms ), + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader + }; + + } else { + + materialProperties.shader = { + name: material.type, + uniforms: material.uniforms, + vertexShader: material.vertexShader, + fragmentShader: material.fragmentShader + }; + + } + + material.onBeforeCompile( materialProperties.shader, _this ); + + // Computing code again as onBeforeCompile may have changed the shaders + code = programCache.getProgramCode( material, parameters ); + + program = programCache.acquireProgram( material, materialProperties.shader, parameters, code ); + + materialProperties.program = program; + material.program = program; + + } + + var programAttributes = program.getAttributes(); + + if ( material.morphTargets ) { + + material.numSupportedMorphTargets = 0; + + for ( var i = 0; i < _this.maxMorphTargets; i ++ ) { + + if ( programAttributes[ 'morphTarget' + i ] >= 0 ) { + + material.numSupportedMorphTargets ++; + + } + + } + + } + + if ( material.morphNormals ) { + + material.numSupportedMorphNormals = 0; + + for ( var i = 0; i < _this.maxMorphNormals; i ++ ) { + + if ( programAttributes[ 'morphNormal' + i ] >= 0 ) { + + material.numSupportedMorphNormals ++; + + } + + } + + } + + var uniforms = materialProperties.shader.uniforms; + + if ( ! material.isShaderMaterial && + ! material.isRawShaderMaterial || + material.clipping === true ) { + + materialProperties.numClippingPlanes = _clipping.numPlanes; + materialProperties.numIntersection = _clipping.numIntersection; + uniforms.clippingPlanes = _clipping.uniform; + + } + + materialProperties.fog = fog; + + // store the light setup it was created for + + materialProperties.needsLights = materialNeedsLights( material ); + materialProperties.lightsStateVersion = lightsStateVersion; + + if ( materialProperties.needsLights ) { + + // wire up the material to this renderer's lighting state + + uniforms.ambientLightColor.value = lights.state.ambient; + uniforms.lightProbe.value = lights.state.probe; + uniforms.directionalLights.value = lights.state.directional; + uniforms.spotLights.value = lights.state.spot; + uniforms.rectAreaLights.value = lights.state.rectArea; + uniforms.pointLights.value = lights.state.point; + uniforms.hemisphereLights.value = lights.state.hemi; + + uniforms.directionalShadowMap.value = lights.state.directionalShadowMap; + uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix; + uniforms.spotShadowMap.value = lights.state.spotShadowMap; + uniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix; + uniforms.pointShadowMap.value = lights.state.pointShadowMap; + uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix; + // TODO (abelnation): add area lights shadow info to uniforms + + } + + var progUniforms = materialProperties.program.getUniforms(), + uniformsList = + WebGLUniforms.seqWithValue( progUniforms.seq, uniforms ); + + materialProperties.uniformsList = uniformsList; + + } + + function setProgram( camera, fog, material, object ) { + + textures.resetTextureUnits(); + + var materialProperties = properties.get( material ); + var lights = currentRenderState.state.lights; + + if ( _clippingEnabled ) { + + if ( _localClippingEnabled || camera !== _currentCamera ) { + + var useCache = + camera === _currentCamera && + material.id === _currentMaterialId; + + // we might want to call this function with some ClippingGroup + // object instead of the material, once it becomes feasible + // (#8465, #8379) + _clipping.setState( + material.clippingPlanes, material.clipIntersection, material.clipShadows, + camera, materialProperties, useCache ); + + } + + } + + if ( material.needsUpdate === false ) { + + if ( materialProperties.program === undefined ) { + + material.needsUpdate = true; + + } else if ( material.fog && materialProperties.fog !== fog ) { + + material.needsUpdate = true; + + } else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) { + + material.needsUpdate = true; + + } else if ( materialProperties.numClippingPlanes !== undefined && + ( materialProperties.numClippingPlanes !== _clipping.numPlanes || + materialProperties.numIntersection !== _clipping.numIntersection ) ) { + + material.needsUpdate = true; + + } + + } + + if ( material.needsUpdate ) { + + initMaterial( material, fog, object ); + material.needsUpdate = false; + + } + + var refreshProgram = false; + var refreshMaterial = false; + var refreshLights = false; + + var program = materialProperties.program, + p_uniforms = program.getUniforms(), + m_uniforms = materialProperties.shader.uniforms; + + if ( state.useProgram( program.program ) ) { + + refreshProgram = true; + refreshMaterial = true; + refreshLights = true; + + } + + if ( material.id !== _currentMaterialId ) { + + _currentMaterialId = material.id; + + refreshMaterial = true; + + } + + if ( refreshProgram || _currentCamera !== camera ) { + + if ( program.numMultiviewViews > 0 ) { + + multiview.updateCameraProjectionMatricesUniform( camera, p_uniforms ); + + } else { + + p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix ); + + } + + if ( capabilities.logarithmicDepthBuffer ) { + + p_uniforms.setValue( _gl, 'logDepthBufFC', + 2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) ); + + } + + if ( _currentCamera !== camera ) { + + _currentCamera = camera; + + // lighting uniforms depend on the camera so enforce an update + // now, in case this material supports lights - or later, when + // the next material that does gets activated: + + refreshMaterial = true; // set to true on material change + refreshLights = true; // remains set until update done + + } + + // load material specific uniforms + // (shader material also gets them for the sake of genericity) + + if ( material.isShaderMaterial || + material.isMeshPhongMaterial || + material.isMeshStandardMaterial || + material.envMap ) { + + var uCamPos = p_uniforms.map.cameraPosition; + + if ( uCamPos !== undefined ) { + + uCamPos.setValue( _gl, + _vector3.setFromMatrixPosition( camera.matrixWorld ) ); + + } + + } + + if ( material.isMeshPhongMaterial || + material.isMeshLambertMaterial || + material.isMeshBasicMaterial || + material.isMeshStandardMaterial || + material.isShaderMaterial || + material.skinning ) { + + if ( program.numMultiviewViews > 0 ) { + + multiview.updateCameraViewMatricesUniform( camera, p_uniforms ); + + } else { + + p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse ); + + } + + } + + } + + // skinning uniforms must be set even if material didn't change + // auto-setting of texture unit for bone texture must go before other textures + // not sure why, but otherwise weird things happen + + if ( material.skinning ) { + + p_uniforms.setOptional( _gl, object, 'bindMatrix' ); + p_uniforms.setOptional( _gl, object, 'bindMatrixInverse' ); + + var skeleton = object.skeleton; + + if ( skeleton ) { + + var bones = skeleton.bones; + + if ( capabilities.floatVertexTextures ) { + + if ( skeleton.boneTexture === undefined ) { + + // layout (1 matrix = 4 pixels) + // RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4) + // with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8) + // 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16) + // 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32) + // 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64) + + + var size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix + size = _Math.ceilPowerOfTwo( size ); + size = Math.max( size, 4 ); + + var boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel + boneMatrices.set( skeleton.boneMatrices ); // copy current values + + var boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType ); + + skeleton.boneMatrices = boneMatrices; + skeleton.boneTexture = boneTexture; + skeleton.boneTextureSize = size; + + } + + p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures ); + p_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize ); + + } else { + + p_uniforms.setOptional( _gl, skeleton, 'boneMatrices' ); + + } + + } + + } + + if ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) { + + materialProperties.receiveShadow = object.receiveShadow; + p_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow ); + + } + + if ( refreshMaterial ) { + + p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure ); + p_uniforms.setValue( _gl, 'toneMappingWhitePoint', _this.toneMappingWhitePoint ); + + if ( materialProperties.needsLights ) { + + // the current material requires lighting info + + // note: all lighting uniforms are always set correctly + // they simply reference the renderer's state for their + // values + // + // use the current material's .needsUpdate flags to set + // the GL state when required + + markUniformsLightsNeedsUpdate( m_uniforms, refreshLights ); + + } + + // refresh uniforms common to several materials + + if ( fog && material.fog ) { + + refreshUniformsFog( m_uniforms, fog ); + + } + + if ( material.isMeshBasicMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + } else if ( material.isMeshLambertMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsLambert( m_uniforms, material ); + + } else if ( material.isMeshPhongMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + if ( material.isMeshToonMaterial ) { + + refreshUniformsToon( m_uniforms, material ); + + } else { + + refreshUniformsPhong( m_uniforms, material ); + + } + + } else if ( material.isMeshStandardMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + if ( material.isMeshPhysicalMaterial ) { + + refreshUniformsPhysical( m_uniforms, material ); + + } else { + + refreshUniformsStandard( m_uniforms, material ); + + } + + } else if ( material.isMeshMatcapMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + + refreshUniformsMatcap( m_uniforms, material ); + + } else if ( material.isMeshDepthMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsDepth( m_uniforms, material ); + + } else if ( material.isMeshDistanceMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsDistance( m_uniforms, material ); + + } else if ( material.isMeshNormalMaterial ) { + + refreshUniformsCommon( m_uniforms, material ); + refreshUniformsNormal( m_uniforms, material ); + + } else if ( material.isLineBasicMaterial ) { + + refreshUniformsLine( m_uniforms, material ); + + if ( material.isLineDashedMaterial ) { + + refreshUniformsDash( m_uniforms, material ); + + } + + } else if ( material.isPointsMaterial ) { + + refreshUniformsPoints( m_uniforms, material ); + + } else if ( material.isSpriteMaterial ) { + + refreshUniformsSprites( m_uniforms, material ); + + } else if ( material.isShadowMaterial ) { + + m_uniforms.color.value.copy( material.color ); + m_uniforms.opacity.value = material.opacity; + + } + + // RectAreaLight Texture + // TODO (mrdoob): Find a nicer implementation + + if ( m_uniforms.ltc_1 !== undefined ) { m_uniforms.ltc_1.value = UniformsLib.LTC_1; } + if ( m_uniforms.ltc_2 !== undefined ) { m_uniforms.ltc_2.value = UniformsLib.LTC_2; } + + WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures ); + + } + + if ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) { + + WebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures ); + material.uniformsNeedUpdate = false; + + } + + if ( material.isSpriteMaterial ) { + + p_uniforms.setValue( _gl, 'center', object.center ); + + } + + // common matrices + + if ( program.numMultiviewViews > 0 ) { + + multiview.updateObjectMatricesUniforms( object, camera, p_uniforms ); + + } else { + + p_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix ); + p_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix ); + + } + + p_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld ); + + return program; + + } + + // Uniforms (refresh uniforms objects) + + function refreshUniformsCommon( uniforms, material ) { + + uniforms.opacity.value = material.opacity; + + if ( material.color ) { + + uniforms.diffuse.value.copy( material.color ); + + } + + if ( material.emissive ) { + + uniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity ); + + } + + if ( material.map ) { + + uniforms.map.value = material.map; + + } + + if ( material.alphaMap ) { + + uniforms.alphaMap.value = material.alphaMap; + + } + + if ( material.specularMap ) { + + uniforms.specularMap.value = material.specularMap; + + } + + if ( material.envMap ) { + + uniforms.envMap.value = material.envMap; + + // don't flip CubeTexture envMaps, flip everything else: + // WebGLRenderTargetCube will be flipped for backwards compatibility + // WebGLRenderTargetCube.texture will be flipped because it's a Texture and NOT a CubeTexture + // this check must be handled differently, or removed entirely, if WebGLRenderTargetCube uses a CubeTexture in the future + uniforms.flipEnvMap.value = material.envMap.isCubeTexture ? - 1 : 1; + + uniforms.reflectivity.value = material.reflectivity; + uniforms.refractionRatio.value = material.refractionRatio; + + uniforms.maxMipLevel.value = properties.get( material.envMap ).__maxMipLevel; + + } + + if ( material.lightMap ) { + + uniforms.lightMap.value = material.lightMap; + uniforms.lightMapIntensity.value = material.lightMapIntensity; + + } + + if ( material.aoMap ) { + + uniforms.aoMap.value = material.aoMap; + uniforms.aoMapIntensity.value = material.aoMapIntensity; + + } + + // uv repeat and offset setting priorities + // 1. color map + // 2. specular map + // 3. normal map + // 4. bump map + // 5. alpha map + // 6. emissive map + + var uvScaleMap; + + if ( material.map ) { + + uvScaleMap = material.map; + + } else if ( material.specularMap ) { + + uvScaleMap = material.specularMap; + + } else if ( material.displacementMap ) { + + uvScaleMap = material.displacementMap; + + } else if ( material.normalMap ) { + + uvScaleMap = material.normalMap; + + } else if ( material.bumpMap ) { + + uvScaleMap = material.bumpMap; + + } else if ( material.roughnessMap ) { + + uvScaleMap = material.roughnessMap; + + } else if ( material.metalnessMap ) { + + uvScaleMap = material.metalnessMap; + + } else if ( material.alphaMap ) { + + uvScaleMap = material.alphaMap; + + } else if ( material.emissiveMap ) { + + uvScaleMap = material.emissiveMap; + + } + + if ( uvScaleMap !== undefined ) { + + // backwards compatibility + if ( uvScaleMap.isWebGLRenderTarget ) { + + uvScaleMap = uvScaleMap.texture; + + } + + if ( uvScaleMap.matrixAutoUpdate === true ) { + + uvScaleMap.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( uvScaleMap.matrix ); + + } + + } + + function refreshUniformsLine( uniforms, material ) { + + uniforms.diffuse.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + + } + + function refreshUniformsDash( uniforms, material ) { + + uniforms.dashSize.value = material.dashSize; + uniforms.totalSize.value = material.dashSize + material.gapSize; + uniforms.scale.value = material.scale; + + } + + function refreshUniformsPoints( uniforms, material ) { + + uniforms.diffuse.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + uniforms.size.value = material.size * _pixelRatio; + uniforms.scale.value = _height * 0.5; + + uniforms.map.value = material.map; + + if ( material.map !== null ) { + + if ( material.map.matrixAutoUpdate === true ) { + + material.map.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( material.map.matrix ); + + } + + } + + function refreshUniformsSprites( uniforms, material ) { + + uniforms.diffuse.value.copy( material.color ); + uniforms.opacity.value = material.opacity; + uniforms.rotation.value = material.rotation; + uniforms.map.value = material.map; + + if ( material.map !== null ) { + + if ( material.map.matrixAutoUpdate === true ) { + + material.map.updateMatrix(); + + } + + uniforms.uvTransform.value.copy( material.map.matrix ); + + } + + } + + function refreshUniformsFog( uniforms, fog ) { + + uniforms.fogColor.value.copy( fog.color ); + + if ( fog.isFog ) { + + uniforms.fogNear.value = fog.near; + uniforms.fogFar.value = fog.far; + + } else if ( fog.isFogExp2 ) { + + uniforms.fogDensity.value = fog.density; + + } + + } + + function refreshUniformsLambert( uniforms, material ) { + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + } + + function refreshUniformsPhong( uniforms, material ) { + + uniforms.specular.value.copy( material.specular ); + uniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 ) + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) { uniforms.bumpScale.value *= - 1; } + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) { uniforms.normalScale.value.negate(); } + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsToon( uniforms, material ) { + + refreshUniformsPhong( uniforms, material ); + + if ( material.gradientMap ) { + + uniforms.gradientMap.value = material.gradientMap; + + } + + } + + function refreshUniformsStandard( uniforms, material ) { + + uniforms.roughness.value = material.roughness; + uniforms.metalness.value = material.metalness; + + if ( material.roughnessMap ) { + + uniforms.roughnessMap.value = material.roughnessMap; + + } + + if ( material.metalnessMap ) { + + uniforms.metalnessMap.value = material.metalnessMap; + + } + + if ( material.emissiveMap ) { + + uniforms.emissiveMap.value = material.emissiveMap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) { uniforms.bumpScale.value *= - 1; } + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) { uniforms.normalScale.value.negate(); } + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + if ( material.envMap ) { + + //uniforms.envMap.value = material.envMap; // part of uniforms common + uniforms.envMapIntensity.value = material.envMapIntensity; + + } + + } + + function refreshUniformsPhysical( uniforms, material ) { + + refreshUniformsStandard( uniforms, material ); + + uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common + + uniforms.clearcoat.value = material.clearcoat; + uniforms.clearcoatRoughness.value = material.clearcoatRoughness; + if ( material.sheen ) { uniforms.sheen.value.copy( material.sheen ); } + + if ( material.clearcoatNormalMap ) { + + uniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale ); + uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap; + + if ( material.side === BackSide ) { + + uniforms.clearcoatNormalScale.value.negate(); + + } + + } + + uniforms.transparency.value = material.transparency; + + } + + function refreshUniformsMatcap( uniforms, material ) { + + if ( material.matcap ) { + + uniforms.matcap.value = material.matcap; + + } + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) { uniforms.bumpScale.value *= - 1; } + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) { uniforms.normalScale.value.negate(); } + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsDepth( uniforms, material ) { + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + function refreshUniformsDistance( uniforms, material ) { + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + uniforms.referencePosition.value.copy( material.referencePosition ); + uniforms.nearDistance.value = material.nearDistance; + uniforms.farDistance.value = material.farDistance; + + } + + function refreshUniformsNormal( uniforms, material ) { + + if ( material.bumpMap ) { + + uniforms.bumpMap.value = material.bumpMap; + uniforms.bumpScale.value = material.bumpScale; + if ( material.side === BackSide ) { uniforms.bumpScale.value *= - 1; } + + } + + if ( material.normalMap ) { + + uniforms.normalMap.value = material.normalMap; + uniforms.normalScale.value.copy( material.normalScale ); + if ( material.side === BackSide ) { uniforms.normalScale.value.negate(); } + + } + + if ( material.displacementMap ) { + + uniforms.displacementMap.value = material.displacementMap; + uniforms.displacementScale.value = material.displacementScale; + uniforms.displacementBias.value = material.displacementBias; + + } + + } + + // If uniforms are marked as clean, they don't need to be loaded to the GPU. + + function markUniformsLightsNeedsUpdate( uniforms, value ) { + + uniforms.ambientLightColor.needsUpdate = value; + uniforms.lightProbe.needsUpdate = value; + + uniforms.directionalLights.needsUpdate = value; + uniforms.pointLights.needsUpdate = value; + uniforms.spotLights.needsUpdate = value; + uniforms.rectAreaLights.needsUpdate = value; + uniforms.hemisphereLights.needsUpdate = value; + + } + + function materialNeedsLights( material ) { + + return material.isMeshLambertMaterial || material.isMeshPhongMaterial || + material.isMeshStandardMaterial || material.isShadowMaterial || + ( material.isShaderMaterial && material.lights === true ); + + } + + // + this.setFramebuffer = function ( value ) { + + if ( _framebuffer !== value ) { _gl.bindFramebuffer( 36160, value ); } + + _framebuffer = value; + + }; + + this.getActiveCubeFace = function () { + + return _currentActiveCubeFace; + + }; + + this.getActiveMipmapLevel = function () { + + return _currentActiveMipmapLevel; + + }; + + this.getRenderTarget = function () { + + return _currentRenderTarget; + + }; + + this.setRenderTarget = function ( renderTarget, activeCubeFace, activeMipmapLevel ) { + + _currentRenderTarget = renderTarget; + _currentActiveCubeFace = activeCubeFace; + _currentActiveMipmapLevel = activeMipmapLevel; + + if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) { + + textures.setupRenderTarget( renderTarget ); + + } + + var framebuffer = _framebuffer; + var isCube = false; + + if ( renderTarget ) { + + var __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( renderTarget.isWebGLRenderTargetCube ) { + + framebuffer = __webglFramebuffer[ activeCubeFace || 0 ]; + isCube = true; + + } else if ( renderTarget.isWebGLMultisampleRenderTarget ) { + + framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer; + + } else { + + framebuffer = __webglFramebuffer; + + } + + _currentViewport.copy( renderTarget.viewport ); + _currentScissor.copy( renderTarget.scissor ); + _currentScissorTest = renderTarget.scissorTest; + + } else { + + _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor(); + _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor(); + _currentScissorTest = _scissorTest; + + } + + if ( _currentFramebuffer !== framebuffer ) { + + _gl.bindFramebuffer( 36160, framebuffer ); + _currentFramebuffer = framebuffer; + + } + + state.viewport( _currentViewport ); + state.scissor( _currentScissor ); + state.setScissorTest( _currentScissorTest ); + + if ( isCube ) { + + var textureProperties = properties.get( renderTarget.texture ); + _gl.framebufferTexture2D( 36160, 36064, 34069 + ( activeCubeFace || 0 ), textureProperties.__webglTexture, activeMipmapLevel || 0 ); + + } + + }; + + this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) { + + if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' ); + return; + + } + + var framebuffer = properties.get( renderTarget ).__webglFramebuffer; + + if ( renderTarget.isWebGLRenderTargetCube && activeCubeFaceIndex !== undefined ) { + + framebuffer = framebuffer[ activeCubeFaceIndex ]; + + } + + if ( framebuffer ) { + + var restore = false; + + if ( framebuffer !== _currentFramebuffer ) { + + _gl.bindFramebuffer( 36160, framebuffer ); + + restore = true; + + } + + try { + + var texture = renderTarget.texture; + var textureFormat = texture.format; + var textureType = texture.type; + + if ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' ); + return; + + } + + if ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513) + ! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox + ! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); + return; + + } + + if ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) { + + // the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604) + + if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) { + + _gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer ); + + } + + } else { + + console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' ); + + } + + } finally { + + if ( restore ) { + + _gl.bindFramebuffer( 36160, _currentFramebuffer ); + + } + + } + + } + + }; + + this.copyFramebufferToTexture = function ( position, texture, level ) { + + var width = texture.image.width; + var height = texture.image.height; + var glFormat = utils.convert( texture.format ); + + textures.setTexture2D( texture, 0 ); + + _gl.copyTexImage2D( 3553, level || 0, glFormat, position.x, position.y, width, height, 0 ); + + }; + + this.copyTextureToTexture = function ( position, srcTexture, dstTexture, level ) { + + var width = srcTexture.image.width; + var height = srcTexture.image.height; + var glFormat = utils.convert( dstTexture.format ); + var glType = utils.convert( dstTexture.type ); + + textures.setTexture2D( dstTexture, 0 ); + + if ( srcTexture.isDataTexture ) { + + _gl.texSubImage2D( 3553, level || 0, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data ); + + } else { + + _gl.texSubImage2D( 3553, level || 0, position.x, position.y, glFormat, glType, srcTexture.image ); + + } + + }; + + if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) { + + __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function FogExp2( color, density ) { + + this.name = ''; + + this.color = new Color( color ); + this.density = ( density !== undefined ) ? density : 0.00025; + + } + + Object.assign( FogExp2.prototype, { + + isFogExp2: true, + + clone: function () { + + return new FogExp2( this.color, this.density ); + + }, + + toJSON: function ( /* meta */ ) { + + return { + type: 'FogExp2', + color: this.color.getHex(), + density: this.density + }; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Fog( color, near, far ) { + + this.name = ''; + + this.color = new Color( color ); + + this.near = ( near !== undefined ) ? near : 1; + this.far = ( far !== undefined ) ? far : 1000; + + } + + Object.assign( Fog.prototype, { + + isFog: true, + + clone: function () { + + return new Fog( this.color, this.near, this.far ); + + }, + + toJSON: function ( /* meta */ ) { + + return { + type: 'Fog', + color: this.color.getHex(), + near: this.near, + far: this.far + }; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InterleavedBuffer( array, stride ) { + + this.array = array; + this.stride = stride; + this.count = array !== undefined ? array.length / stride : 0; + + this.dynamic = false; + this.updateRange = { offset: 0, count: - 1 }; + + this.version = 0; + + } + + Object.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', { + + set: function ( value ) { + + if ( value === true ) { this.version ++; } + + } + + } ); + + Object.assign( InterleavedBuffer.prototype, { + + isInterleavedBuffer: true, + + onUploadCallback: function () {}, + + setDynamic: function ( value ) { + + this.dynamic = value; + + return this; + + }, + + copy: function ( source ) { + + this.array = new source.array.constructor( source.array ); + this.count = source.count; + this.stride = source.stride; + this.dynamic = source.dynamic; + + return this; + + }, + + copyAt: function ( index1, attribute, index2 ) { + + index1 *= this.stride; + index2 *= attribute.stride; + + for ( var i = 0, l = this.stride; i < l; i ++ ) { + + this.array[ index1 + i ] = attribute.array[ index2 + i ]; + + } + + return this; + + }, + + set: function ( value, offset ) { + + if ( offset === undefined ) { offset = 0; } + + this.array.set( value, offset ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + onUpload: function ( callback ) { + + this.onUploadCallback = callback; + + return this; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) { + + this.data = interleavedBuffer; + this.itemSize = itemSize; + this.offset = offset; + + this.normalized = normalized === true; + + } + + Object.defineProperties( InterleavedBufferAttribute.prototype, { + + count: { + + get: function () { + + return this.data.count; + + } + + }, + + array: { + + get: function () { + + return this.data.array; + + } + + } + + } ); + + Object.assign( InterleavedBufferAttribute.prototype, { + + isInterleavedBufferAttribute: true, + + setX: function ( index, x ) { + + this.data.array[ index * this.data.stride + this.offset ] = x; + + return this; + + }, + + setY: function ( index, y ) { + + this.data.array[ index * this.data.stride + this.offset + 1 ] = y; + + return this; + + }, + + setZ: function ( index, z ) { + + this.data.array[ index * this.data.stride + this.offset + 2 ] = z; + + return this; + + }, + + setW: function ( index, w ) { + + this.data.array[ index * this.data.stride + this.offset + 3 ] = w; + + return this; + + }, + + getX: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset ]; + + }, + + getY: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 1 ]; + + }, + + getZ: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 2 ]; + + }, + + getW: function ( index ) { + + return this.data.array[ index * this.data.stride + this.offset + 3 ]; + + }, + + setXY: function ( index, x, y ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + + return this; + + }, + + setXYZ: function ( index, x, y, z ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + + return this; + + }, + + setXYZW: function ( index, x, y, z, w ) { + + index = index * this.data.stride + this.offset; + + this.data.array[ index + 0 ] = x; + this.data.array[ index + 1 ] = y; + this.data.array[ index + 2 ] = z; + this.data.array[ index + 3 ] = w; + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * map: new THREE.Texture( ), + * rotation: , + * sizeAttenuation: + * } + */ + + function SpriteMaterial( parameters ) { + + Material.call( this ); + + this.type = 'SpriteMaterial'; + + this.color = new Color( 0xffffff ); + this.map = null; + + this.rotation = 0; + + this.sizeAttenuation = true; + + this.transparent = true; + + this.setValues( parameters ); + + } + + SpriteMaterial.prototype = Object.create( Material.prototype ); + SpriteMaterial.prototype.constructor = SpriteMaterial; + SpriteMaterial.prototype.isSpriteMaterial = true; + + SpriteMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.map = source.map; + + this.rotation = source.rotation; + + this.sizeAttenuation = source.sizeAttenuation; + + return this; + + }; + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + */ + + var _geometry; + + var _intersectPoint = new Vector3(); + var _worldScale = new Vector3(); + var _mvPosition = new Vector3(); + + var _alignedPosition = new Vector2(); + var _rotatedPosition = new Vector2(); + var _viewWorldMatrix = new Matrix4(); + + var _vA$1 = new Vector3(); + var _vB$1 = new Vector3(); + var _vC$1 = new Vector3(); + + var _uvA$1 = new Vector2(); + var _uvB$1 = new Vector2(); + var _uvC$1 = new Vector2(); + + function Sprite( material ) { + + Object3D.call( this ); + + this.type = 'Sprite'; + + if ( _geometry === undefined ) { + + _geometry = new BufferGeometry(); + + var float32Array = new Float32Array( [ + - 0.5, - 0.5, 0, 0, 0, + 0.5, - 0.5, 0, 1, 0, + 0.5, 0.5, 0, 1, 1, + - 0.5, 0.5, 0, 0, 1 + ] ); + + var interleavedBuffer = new InterleavedBuffer( float32Array, 5 ); + + _geometry.setIndex( [ 0, 1, 2, 0, 2, 3 ] ); + _geometry.addAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) ); + _geometry.addAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) ); + + } + + this.geometry = _geometry; + this.material = ( material !== undefined ) ? material : new SpriteMaterial(); + + this.center = new Vector2( 0.5, 0.5 ); + + } + + Sprite.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Sprite, + + isSprite: true, + + raycast: function ( raycaster, intersects ) { + + if ( raycaster.camera === null ) { + + console.error( 'THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.' ); + + } + + _worldScale.setFromMatrixScale( this.matrixWorld ); + + _viewWorldMatrix.copy( raycaster.camera.matrixWorld ); + this.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld ); + + _mvPosition.setFromMatrixPosition( this.modelViewMatrix ); + + if ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) { + + _worldScale.multiplyScalar( - _mvPosition.z ); + + } + + var rotation = this.material.rotation; + var sin, cos; + if ( rotation !== 0 ) { + + cos = Math.cos( rotation ); + sin = Math.sin( rotation ); + + } + + var center = this.center; + + transformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos ); + transformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos ); + transformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos ); + + _uvA$1.set( 0, 0 ); + _uvB$1.set( 1, 0 ); + _uvC$1.set( 1, 1 ); + + // check first triangle + var intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint ); + + if ( intersect === null ) { + + // check second triangle + transformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos ); + _uvB$1.set( 0, 1 ); + + intersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint ); + if ( intersect === null ) { + + return; + + } + + } + + var distance = raycaster.ray.origin.distanceTo( _intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) { return; } + + intersects.push( { + + distance: distance, + point: _intersectPoint.clone(), + uv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ), + face: null, + object: this + + } ); + + }, + + clone: function () { + + return new this.constructor( this.material ).copy( this ); + + }, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + if ( source.center !== undefined ) { this.center.copy( source.center ); } + + return this; + + } + + + } ); + + function transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) { + + // compute position in camera space + _alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale ); + + // to check if rotation is not zero + if ( sin !== undefined ) { + + _rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y ); + _rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y ); + + } else { + + _rotatedPosition.copy( _alignedPosition ); + + } + + + vertexPosition.copy( mvPosition ); + vertexPosition.x += _rotatedPosition.x; + vertexPosition.y += _rotatedPosition.y; + + // transform to world space + vertexPosition.applyMatrix4( _viewWorldMatrix ); + + } + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + var _v1$4 = new Vector3(); + var _v2$2 = new Vector3(); + + function LOD() { + + Object3D.call( this ); + + this.type = 'LOD'; + + Object.defineProperties( this, { + levels: { + enumerable: true, + value: [] + } + } ); + + this.autoUpdate = true; + + } + + LOD.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: LOD, + + isLOD: true, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source, false ); + + var levels = source.levels; + + for ( var i = 0, l = levels.length; i < l; i ++ ) { + + var level = levels[ i ]; + + this.addLevel( level.object.clone(), level.distance ); + + } + + return this; + + }, + + addLevel: function ( object, distance ) { + + if ( distance === undefined ) { distance = 0; } + + distance = Math.abs( distance ); + + var levels = this.levels; + + for ( var l = 0; l < levels.length; l ++ ) { + + if ( distance < levels[ l ].distance ) { + + break; + + } + + } + + levels.splice( l, 0, { distance: distance, object: object } ); + + this.add( object ); + + return this; + + }, + + getObjectForDistance: function ( distance ) { + + var levels = this.levels; + + for ( var i = 1, l = levels.length; i < l; i ++ ) { + + if ( distance < levels[ i ].distance ) { + + break; + + } + + } + + return levels[ i - 1 ].object; + + }, + + raycast: function ( raycaster, intersects ) { + + _v1$4.setFromMatrixPosition( this.matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( _v1$4 ); + + this.getObjectForDistance( distance ).raycast( raycaster, intersects ); + + }, + + update: function ( camera ) { + + var levels = this.levels; + + if ( levels.length > 1 ) { + + _v1$4.setFromMatrixPosition( camera.matrixWorld ); + _v2$2.setFromMatrixPosition( this.matrixWorld ); + + var distance = _v1$4.distanceTo( _v2$2 ); + + levels[ 0 ].object.visible = true; + + for ( var i = 1, l = levels.length; i < l; i ++ ) { + + if ( distance >= levels[ i ].distance ) { + + levels[ i - 1 ].object.visible = false; + levels[ i ].object.visible = true; + + } else { + + break; + + } + + } + + for ( ; i < l; i ++ ) { + + levels[ i ].object.visible = false; + + } + + } + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.levels = []; + + var levels = this.levels; + + for ( var i = 0, l = levels.length; i < l; i ++ ) { + + var level = levels[ i ]; + + data.object.levels.push( { + object: level.object.uuid, + distance: level.distance + } ); + + } + + return data; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author ikerr / http://verold.com + */ + + function SkinnedMesh( geometry, material ) { + + if ( geometry && geometry.isGeometry ) { + + console.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' ); + + } + + Mesh.call( this, geometry, material ); + + this.type = 'SkinnedMesh'; + + this.bindMode = 'attached'; + this.bindMatrix = new Matrix4(); + this.bindMatrixInverse = new Matrix4(); + + } + + SkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), { + + constructor: SkinnedMesh, + + isSkinnedMesh: true, + + bind: function ( skeleton, bindMatrix ) { + + this.skeleton = skeleton; + + if ( bindMatrix === undefined ) { + + this.updateMatrixWorld( true ); + + this.skeleton.calculateInverses(); + + bindMatrix = this.matrixWorld; + + } + + this.bindMatrix.copy( bindMatrix ); + this.bindMatrixInverse.getInverse( bindMatrix ); + + }, + + pose: function () { + + this.skeleton.pose(); + + }, + + normalizeSkinWeights: function () { + + var vector = new Vector4(); + + var skinWeight = this.geometry.attributes.skinWeight; + + for ( var i = 0, l = skinWeight.count; i < l; i ++ ) { + + vector.x = skinWeight.getX( i ); + vector.y = skinWeight.getY( i ); + vector.z = skinWeight.getZ( i ); + vector.w = skinWeight.getW( i ); + + var scale = 1.0 / vector.manhattanLength(); + + if ( scale !== Infinity ) { + + vector.multiplyScalar( scale ); + + } else { + + vector.set( 1, 0, 0, 0 ); // do something reasonable + + } + + skinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w ); + + } + + }, + + updateMatrixWorld: function ( force ) { + + Mesh.prototype.updateMatrixWorld.call( this, force ); + + if ( this.bindMode === 'attached' ) { + + this.bindMatrixInverse.getInverse( this.matrixWorld ); + + } else if ( this.bindMode === 'detached' ) { + + this.bindMatrixInverse.getInverse( this.bindMatrix ); + + } else { + + console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode ); + + } + + }, + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author michael guerrero / http://realitymeltdown.com + * @author ikerr / http://verold.com + */ + + var _offsetMatrix = new Matrix4(); + var _identityMatrix = new Matrix4(); + + function Skeleton( bones, boneInverses ) { + + // copy the bone array + + bones = bones || []; + + this.bones = bones.slice( 0 ); + this.boneMatrices = new Float32Array( this.bones.length * 16 ); + + this.frame = - 1; + + // use the supplied bone inverses or calculate the inverses + + if ( boneInverses === undefined ) { + + this.calculateInverses(); + + } else { + + if ( this.bones.length === boneInverses.length ) { + + this.boneInverses = boneInverses.slice( 0 ); + + } else { + + console.warn( 'THREE.Skeleton boneInverses is the wrong length.' ); + + this.boneInverses = []; + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + this.boneInverses.push( new Matrix4() ); + + } + + } + + } + + } + + Object.assign( Skeleton.prototype, { + + calculateInverses: function () { + + this.boneInverses = []; + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + var inverse = new Matrix4(); + + if ( this.bones[ i ] ) { + + inverse.getInverse( this.bones[ i ].matrixWorld ); + + } + + this.boneInverses.push( inverse ); + + } + + }, + + pose: function () { + + var bone, i, il; + + // recover the bind-time world matrices + + for ( i = 0, il = this.bones.length; i < il; i ++ ) { + + bone = this.bones[ i ]; + + if ( bone ) { + + bone.matrixWorld.getInverse( this.boneInverses[ i ] ); + + } + + } + + // compute the local matrices, positions, rotations and scales + + for ( i = 0, il = this.bones.length; i < il; i ++ ) { + + bone = this.bones[ i ]; + + if ( bone ) { + + if ( bone.parent && bone.parent.isBone ) { + + bone.matrix.getInverse( bone.parent.matrixWorld ); + bone.matrix.multiply( bone.matrixWorld ); + + } else { + + bone.matrix.copy( bone.matrixWorld ); + + } + + bone.matrix.decompose( bone.position, bone.quaternion, bone.scale ); + + } + + } + + }, + + update: function () { + + var bones = this.bones; + var boneInverses = this.boneInverses; + var boneMatrices = this.boneMatrices; + var boneTexture = this.boneTexture; + + // flatten bone matrices to array + + for ( var i = 0, il = bones.length; i < il; i ++ ) { + + // compute the offset between the current and the original transform + + var matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix; + + _offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] ); + _offsetMatrix.toArray( boneMatrices, i * 16 ); + + } + + if ( boneTexture !== undefined ) { + + boneTexture.needsUpdate = true; + + } + + }, + + clone: function () { + + return new Skeleton( this.bones, this.boneInverses ); + + }, + + getBoneByName: function ( name ) { + + for ( var i = 0, il = this.bones.length; i < il; i ++ ) { + + var bone = this.bones[ i ]; + + if ( bone.name === name ) { + + return bone; + + } + + } + + return undefined; + + } + + } ); + + /** + * @author mikael emtinger / http://gomo.se/ + * @author alteredq / http://alteredqualia.com/ + * @author ikerr / http://verold.com + */ + + function Bone() { + + Object3D.call( this ); + + this.type = 'Bone'; + + } + + Bone.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Bone, + + isBone: true + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function InstancedMesh( geometry, material, count ) { + + Mesh.call( this, geometry, material ); + + this.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 ); + + this.count = count; + + } + + InstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), { + + constructor: InstancedMesh, + + isInstancedMesh: true, + + raycast: function () {}, + + setMatrixAt: function ( index, matrix ) { + + matrix.toArray( this.instanceMatrix.array, index * 16 ); + + }, + + updateMorphTargets: function () {} + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * linecap: "round", + * linejoin: "round" + * } + */ + + function LineBasicMaterial( parameters ) { + + Material.call( this ); + + this.type = 'LineBasicMaterial'; + + this.color = new Color( 0xffffff ); + + this.linewidth = 1; + this.linecap = 'round'; + this.linejoin = 'round'; + + this.setValues( parameters ); + + } + + LineBasicMaterial.prototype = Object.create( Material.prototype ); + LineBasicMaterial.prototype.constructor = LineBasicMaterial; + + LineBasicMaterial.prototype.isLineBasicMaterial = true; + + LineBasicMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.linewidth = source.linewidth; + this.linecap = source.linecap; + this.linejoin = source.linejoin; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var _start = new Vector3(); + var _end = new Vector3(); + var _inverseMatrix$1 = new Matrix4(); + var _ray$1 = new Ray(); + var _sphere$2 = new Sphere(); + + function Line( geometry, material, mode ) { + + if ( mode === 1 ) { + + console.error( 'THREE.Line: parameter THREE.LinePieces no longer supported. Use THREE.LineSegments instead.' ); + + } + + Object3D.call( this ); + + this.type = 'Line'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new LineBasicMaterial( { color: Math.random() * 0xffffff } ); + + } + + Line.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Line, + + isLine: true, + + computeLineDistances: function () { + + var geometry = this.geometry; + + if ( geometry.isBufferGeometry ) { + + // we assume non-indexed geometry + + if ( geometry.index === null ) { + + var positionAttribute = geometry.attributes.position; + var lineDistances = [ 0 ]; + + for ( var i = 1, l = positionAttribute.count; i < l; i ++ ) { + + _start.fromBufferAttribute( positionAttribute, i - 1 ); + _end.fromBufferAttribute( positionAttribute, i ); + + lineDistances[ i ] = lineDistances[ i - 1 ]; + lineDistances[ i ] += _start.distanceTo( _end ); + + } + + geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + + } else { + + console.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var lineDistances = geometry.lineDistances; + + lineDistances[ 0 ] = 0; + + for ( var i = 1, l = vertices.length; i < l; i ++ ) { + + lineDistances[ i ] = lineDistances[ i - 1 ]; + lineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] ); + + } + + } + + return this; + + }, + + raycast: function ( raycaster, intersects ) { + + var precision = raycaster.linePrecision; + + var geometry = this.geometry; + var matrixWorld = this.matrixWorld; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) { geometry.computeBoundingSphere(); } + + _sphere$2.copy( geometry.boundingSphere ); + _sphere$2.applyMatrix4( matrixWorld ); + _sphere$2.radius += precision; + + if ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) { return; } + + // + + _inverseMatrix$1.getInverse( matrixWorld ); + _ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 ); + + var localPrecision = precision / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + var localPrecisionSq = localPrecision * localPrecision; + + var vStart = new Vector3(); + var vEnd = new Vector3(); + var interSegment = new Vector3(); + var interRay = new Vector3(); + var step = ( this && this.isLineSegments ) ? 2 : 1; + + if ( geometry.isBufferGeometry ) { + + var index = geometry.index; + var attributes = geometry.attributes; + var positions = attributes.position.array; + + if ( index !== null ) { + + var indices = index.array; + + for ( var i = 0, l = indices.length - 1; i < l; i += step ) { + + var a = indices[ i ]; + var b = indices[ i + 1 ]; + + vStart.fromArray( positions, a * 3 ); + vEnd.fromArray( positions, b * 3 ); + + var distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + + if ( distSq > localPrecisionSq ) { continue; } + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) { continue; } + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } else { + + for ( var i = 0, l = positions.length / 3 - 1; i < l; i += step ) { + + vStart.fromArray( positions, 3 * i ); + vEnd.fromArray( positions, 3 * i + 3 ); + + var distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment ); + + if ( distSq > localPrecisionSq ) { continue; } + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) { continue; } + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var nbVertices = vertices.length; + + for ( var i = 0; i < nbVertices - 1; i += step ) { + + var distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment ); + + if ( distSq > localPrecisionSq ) { continue; } + + interRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation + + var distance = raycaster.ray.origin.distanceTo( interRay ); + + if ( distance < raycaster.near || distance > raycaster.far ) { continue; } + + intersects.push( { + + distance: distance, + // What do we want? intersection point on the ray or on the segment?? + // point: raycaster.ray.at( distance ), + point: interSegment.clone().applyMatrix4( this.matrixWorld ), + index: i, + face: null, + faceIndex: null, + object: this + + } ); + + } + + } + + }, + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var _start$1 = new Vector3(); + var _end$1 = new Vector3(); + + function LineSegments( geometry, material ) { + + Line.call( this, geometry, material ); + + this.type = 'LineSegments'; + + } + + LineSegments.prototype = Object.assign( Object.create( Line.prototype ), { + + constructor: LineSegments, + + isLineSegments: true, + + computeLineDistances: function () { + + var geometry = this.geometry; + + if ( geometry.isBufferGeometry ) { + + // we assume non-indexed geometry + + if ( geometry.index === null ) { + + var positionAttribute = geometry.attributes.position; + var lineDistances = []; + + for ( var i = 0, l = positionAttribute.count; i < l; i += 2 ) { + + _start$1.fromBufferAttribute( positionAttribute, i ); + _end$1.fromBufferAttribute( positionAttribute, i + 1 ); + + lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; + lineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 ); + + } + + geometry.addAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) ); + + } else { + + console.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' ); + + } + + } else if ( geometry.isGeometry ) { + + var vertices = geometry.vertices; + var lineDistances = geometry.lineDistances; + + for ( var i = 0, l = vertices.length; i < l; i += 2 ) { + + _start$1.copy( vertices[ i ] ); + _end$1.copy( vertices[ i + 1 ] ); + + lineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ]; + lineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 ); + + } + + } + + return this; + + } + + } ); + + /** + * @author mgreter / http://github.com/mgreter + */ + + function LineLoop( geometry, material ) { + + Line.call( this, geometry, material ); + + this.type = 'LineLoop'; + + } + + LineLoop.prototype = Object.assign( Object.create( Line.prototype ), { + + constructor: LineLoop, + + isLineLoop: true, + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * map: new THREE.Texture( ), + * + * size: , + * sizeAttenuation: + * + * morphTargets: + * } + */ + + function PointsMaterial( parameters ) { + + Material.call( this ); + + this.type = 'PointsMaterial'; + + this.color = new Color( 0xffffff ); + + this.map = null; + + this.size = 1; + this.sizeAttenuation = true; + + this.morphTargets = false; + + this.setValues( parameters ); + + } + + PointsMaterial.prototype = Object.create( Material.prototype ); + PointsMaterial.prototype.constructor = PointsMaterial; + + PointsMaterial.prototype.isPointsMaterial = true; + + PointsMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.size = source.size; + this.sizeAttenuation = source.sizeAttenuation; + + this.morphTargets = source.morphTargets; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + var _inverseMatrix$2 = new Matrix4(); + var _ray$2 = new Ray(); + var _sphere$3 = new Sphere(); + var _position$1 = new Vector3(); + + function Points( geometry, material ) { + + Object3D.call( this ); + + this.type = 'Points'; + + this.geometry = geometry !== undefined ? geometry : new BufferGeometry(); + this.material = material !== undefined ? material : new PointsMaterial( { color: Math.random() * 0xffffff } ); + + this.updateMorphTargets(); + + } + + Points.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Points, + + isPoints: true, + + raycast: function ( raycaster, intersects ) { + + var geometry = this.geometry; + var matrixWorld = this.matrixWorld; + var threshold = raycaster.params.Points.threshold; + + // Checking boundingSphere distance to ray + + if ( geometry.boundingSphere === null ) { geometry.computeBoundingSphere(); } + + _sphere$3.copy( geometry.boundingSphere ); + _sphere$3.applyMatrix4( matrixWorld ); + _sphere$3.radius += threshold; + + if ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) { return; } + + // + + _inverseMatrix$2.getInverse( matrixWorld ); + _ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 ); + + var localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 ); + var localThresholdSq = localThreshold * localThreshold; + + if ( geometry.isBufferGeometry ) { + + var index = geometry.index; + var attributes = geometry.attributes; + var positions = attributes.position.array; + + if ( index !== null ) { + + var indices = index.array; + + for ( var i = 0, il = indices.length; i < il; i ++ ) { + + var a = indices[ i ]; + + _position$1.fromArray( positions, a * 3 ); + + testPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this ); + + } + + } else { + + for ( var i = 0, l = positions.length / 3; i < l; i ++ ) { + + _position$1.fromArray( positions, i * 3 ); + + testPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this ); + + } + + } + + } else { + + var vertices = geometry.vertices; + + for ( var i = 0, l = vertices.length; i < l; i ++ ) { + + testPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this ); + + } + + } + + }, + + updateMorphTargets: function () { + + var geometry = this.geometry; + var m, ml, name; + + if ( geometry.isBufferGeometry ) { + + var morphAttributes = geometry.morphAttributes; + var keys = Object.keys( morphAttributes ); + + if ( keys.length > 0 ) { + + var morphAttribute = morphAttributes[ keys[ 0 ] ]; + + if ( morphAttribute !== undefined ) { + + this.morphTargetInfluences = []; + this.morphTargetDictionary = {}; + + for ( m = 0, ml = morphAttribute.length; m < ml; m ++ ) { + + name = morphAttribute[ m ].name || String( m ); + + this.morphTargetInfluences.push( 0 ); + this.morphTargetDictionary[ name ] = m; + + } + + } + + } + + } else { + + var morphTargets = geometry.morphTargets; + + if ( morphTargets !== undefined && morphTargets.length > 0 ) { + + console.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' ); + + } + + } + + }, + + clone: function () { + + return new this.constructor( this.geometry, this.material ).copy( this ); + + } + + } ); + + function testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) { + + var rayPointDistanceSq = _ray$2.distanceSqToPoint( point ); + + if ( rayPointDistanceSq < localThresholdSq ) { + + var intersectPoint = new Vector3(); + + _ray$2.closestPointToPoint( point, intersectPoint ); + intersectPoint.applyMatrix4( matrixWorld ); + + var distance = raycaster.ray.origin.distanceTo( intersectPoint ); + + if ( distance < raycaster.near || distance > raycaster.far ) { return; } + + intersects.push( { + + distance: distance, + distanceToRay: Math.sqrt( rayPointDistanceSq ), + point: intersectPoint, + index: index, + face: null, + object: object + + } ); + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + Texture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.format = format !== undefined ? format : RGBFormat; + + this.minFilter = minFilter !== undefined ? minFilter : LinearFilter; + this.magFilter = magFilter !== undefined ? magFilter : LinearFilter; + + this.generateMipmaps = false; + + } + + VideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), { + + constructor: VideoTexture, + + isVideoTexture: true, + + update: function () { + + var video = this.image; + + if ( video.readyState >= video.HAVE_CURRENT_DATA ) { + + this.needsUpdate = true; + + } + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) { + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ); + + this.image = { width: width, height: height }; + this.mipmaps = mipmaps; + + // no flipping for cube textures + // (also flipping doesn't work for compressed textures ) + + this.flipY = false; + + // can't generate mipmaps for compressed textures + // mips must be embedded in DDS files + + this.generateMipmaps = false; + + } + + CompressedTexture.prototype = Object.create( Texture.prototype ); + CompressedTexture.prototype.constructor = CompressedTexture; + + CompressedTexture.prototype.isCompressedTexture = true; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { + + Texture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.needsUpdate = true; + + } + + CanvasTexture.prototype = Object.create( Texture.prototype ); + CanvasTexture.prototype.constructor = CanvasTexture; + CanvasTexture.prototype.isCanvasTexture = true; + + /** + * @author Matt DesLauriers / @mattdesl + * @author atix / arthursilber.de + */ + + function DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) { + + format = format !== undefined ? format : DepthFormat; + + if ( format !== DepthFormat && format !== DepthStencilFormat ) { + + throw new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' ); + + } + + if ( type === undefined && format === DepthFormat ) { type = UnsignedShortType; } + if ( type === undefined && format === DepthStencilFormat ) { type = UnsignedInt248Type; } + + Texture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); + + this.image = { width: width, height: height }; + + this.magFilter = magFilter !== undefined ? magFilter : NearestFilter; + this.minFilter = minFilter !== undefined ? minFilter : NearestFilter; + + this.flipY = false; + this.generateMipmaps = false; + + } + + DepthTexture.prototype = Object.create( Texture.prototype ); + DepthTexture.prototype.constructor = DepthTexture; + DepthTexture.prototype.isDepthTexture = true; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + function WireframeGeometry( geometry ) { + + BufferGeometry.call( this ); + + this.type = 'WireframeGeometry'; + + // buffer + + var vertices = []; + + // helper variables + + var i, j, l, o, ol; + var edge = [ 0, 0 ], edges = {}, e, edge1, edge2; + var key, keys = [ 'a', 'b', 'c' ]; + var vertex; + + // different logic for Geometry and BufferGeometry + + if ( geometry && geometry.isGeometry ) { + + // create a data structure that contains all edges without duplicates + + var faces = geometry.faces; + + for ( i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( j = 0; j < 3; j ++ ) { + + edge1 = face[ keys[ j ] ]; + edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; + edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + e = edges[ key ]; + + vertex = geometry.vertices[ e.index1 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex = geometry.vertices[ e.index2 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } else if ( geometry && geometry.isBufferGeometry ) { + + var position, indices, groups; + var group, start, count; + var index1, index2; + + vertex = new Vector3(); + + if ( geometry.index !== null ) { + + // indexed BufferGeometry + + position = geometry.attributes.position; + indices = geometry.index; + groups = geometry.groups; + + if ( groups.length === 0 ) { + + groups = [ { start: 0, count: indices.count, materialIndex: 0 } ]; + + } + + // create a data structure that contains all eges without duplicates + + for ( o = 0, ol = groups.length; o < ol; ++ o ) { + + group = groups[ o ]; + + start = group.start; + count = group.count; + + for ( i = start, l = ( start + count ); i < l; i += 3 ) { + + for ( j = 0; j < 3; j ++ ) { + + edge1 = indices.getX( i + j ); + edge2 = indices.getX( i + ( j + 1 ) % 3 ); + edge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] }; + + } + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + e = edges[ key ]; + + vertex.fromBufferAttribute( position, e.index1 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex.fromBufferAttribute( position, e.index2 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } else { + + // non-indexed BufferGeometry + + position = geometry.attributes.position; + + for ( i = 0, l = ( position.count / 3 ); i < l; i ++ ) { + + for ( j = 0; j < 3; j ++ ) { + + // three edges per triangle, an edge is represented as (index1, index2) + // e.g. the first triangle has the following edges: (0,1),(1,2),(2,0) + + index1 = 3 * i + j; + vertex.fromBufferAttribute( position, index1 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + index2 = 3 * i + ( ( j + 1 ) % 3 ); + vertex.fromBufferAttribute( position, index2 ); + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + } + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + WireframeGeometry.prototype = Object.create( BufferGeometry.prototype ); + WireframeGeometry.prototype.constructor = WireframeGeometry; + + /** + * @author zz85 / https://github.com/zz85 + * @author Mugen87 / https://github.com/Mugen87 + * + * Parametric Surfaces Geometry + * based on the brilliant article by @prideout http://prideout.net/blog/?p=44 + */ + + // ParametricGeometry + + function ParametricGeometry( func, slices, stacks ) { + + Geometry.call( this ); + + this.type = 'ParametricGeometry'; + + this.parameters = { + func: func, + slices: slices, + stacks: stacks + }; + + this.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) ); + this.mergeVertices(); + + } + + ParametricGeometry.prototype = Object.create( Geometry.prototype ); + ParametricGeometry.prototype.constructor = ParametricGeometry; + + // ParametricBufferGeometry + + function ParametricBufferGeometry( func, slices, stacks ) { + + BufferGeometry.call( this ); + + this.type = 'ParametricBufferGeometry'; + + this.parameters = { + func: func, + slices: slices, + stacks: stacks + }; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + var EPS = 0.00001; + + var normal = new Vector3(); + + var p0 = new Vector3(), p1 = new Vector3(); + var pu = new Vector3(), pv = new Vector3(); + + var i, j; + + if ( func.length < 3 ) { + + console.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' ); + + } + + // generate vertices, normals and uvs + + var sliceCount = slices + 1; + + for ( i = 0; i <= stacks; i ++ ) { + + var v = i / stacks; + + for ( j = 0; j <= slices; j ++ ) { + + var u = j / slices; + + // vertex + + func( u, v, p0 ); + vertices.push( p0.x, p0.y, p0.z ); + + // normal + + // approximate tangent vectors via finite differences + + if ( u - EPS >= 0 ) { + + func( u - EPS, v, p1 ); + pu.subVectors( p0, p1 ); + + } else { + + func( u + EPS, v, p1 ); + pu.subVectors( p1, p0 ); + + } + + if ( v - EPS >= 0 ) { + + func( u, v - EPS, p1 ); + pv.subVectors( p0, p1 ); + + } else { + + func( u, v + EPS, p1 ); + pv.subVectors( p1, p0 ); + + } + + // cross product of tangent vectors returns surface normal + + normal.crossVectors( pu, pv ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, v ); + + } + + } + + // generate indices + + for ( i = 0; i < stacks; i ++ ) { + + for ( j = 0; j < slices; j ++ ) { + + var a = i * sliceCount + j; + var b = i * sliceCount + j + 1; + var c = ( i + 1 ) * sliceCount + j + 1; + var d = ( i + 1 ) * sliceCount + j; + + // faces one and two + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + ParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry; + + /** + * @author clockworkgeek / https://github.com/clockworkgeek + * @author timothypratley / https://github.com/timothypratley + * @author WestLangley / http://github.com/WestLangley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // PolyhedronGeometry + + function PolyhedronGeometry( vertices, indices, radius, detail ) { + + Geometry.call( this ); + + this.type = 'PolyhedronGeometry'; + + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) ); + this.mergeVertices(); + + } + + PolyhedronGeometry.prototype = Object.create( Geometry.prototype ); + PolyhedronGeometry.prototype.constructor = PolyhedronGeometry; + + // PolyhedronBufferGeometry + + function PolyhedronBufferGeometry( vertices, indices, radius, detail ) { + + BufferGeometry.call( this ); + + this.type = 'PolyhedronBufferGeometry'; + + this.parameters = { + vertices: vertices, + indices: indices, + radius: radius, + detail: detail + }; + + radius = radius || 1; + detail = detail || 0; + + // default buffer data + + var vertexBuffer = []; + var uvBuffer = []; + + // the subdivision creates the vertex buffer data + + subdivide( detail ); + + // all vertices should lie on a conceptual sphere with a given radius + + applyRadius( radius ); + + // finally, create the uv data + + generateUVs(); + + // build non-indexed geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) ); + + if ( detail === 0 ) { + + this.computeVertexNormals(); // flat normals + + } else { + + this.normalizeNormals(); // smooth normals + + } + + // helper functions + + function subdivide( detail ) { + + var a = new Vector3(); + var b = new Vector3(); + var c = new Vector3(); + + // iterate over all faces and apply a subdivison with the given detail value + + for ( var i = 0; i < indices.length; i += 3 ) { + + // get the vertices of the face + + getVertexByIndex( indices[ i + 0 ], a ); + getVertexByIndex( indices[ i + 1 ], b ); + getVertexByIndex( indices[ i + 2 ], c ); + + // perform subdivision + + subdivideFace( a, b, c, detail ); + + } + + } + + function subdivideFace( a, b, c, detail ) { + + var cols = Math.pow( 2, detail ); + + // we use this multidimensional array as a data structure for creating the subdivision + + var v = []; + + var i, j; + + // construct all of the vertices for this subdivision + + for ( i = 0; i <= cols; i ++ ) { + + v[ i ] = []; + + var aj = a.clone().lerp( c, i / cols ); + var bj = b.clone().lerp( c, i / cols ); + + var rows = cols - i; + + for ( j = 0; j <= rows; j ++ ) { + + if ( j === 0 && i === cols ) { + + v[ i ][ j ] = aj; + + } else { + + v[ i ][ j ] = aj.clone().lerp( bj, j / rows ); + + } + + } + + } + + // construct all of the faces + + for ( i = 0; i < cols; i ++ ) { + + for ( j = 0; j < 2 * ( cols - i ) - 1; j ++ ) { + + var k = Math.floor( j / 2 ); + + if ( j % 2 === 0 ) { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + pushVertex( v[ i ][ k ] ); + + } else { + + pushVertex( v[ i ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k + 1 ] ); + pushVertex( v[ i + 1 ][ k ] ); + + } + + } + + } + + } + + function applyRadius( radius ) { + + var vertex = new Vector3(); + + // iterate over the entire buffer and apply the radius to each vertex + + for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + vertex.normalize().multiplyScalar( radius ); + + vertexBuffer[ i + 0 ] = vertex.x; + vertexBuffer[ i + 1 ] = vertex.y; + vertexBuffer[ i + 2 ] = vertex.z; + + } + + } + + function generateUVs() { + + var vertex = new Vector3(); + + for ( var i = 0; i < vertexBuffer.length; i += 3 ) { + + vertex.x = vertexBuffer[ i + 0 ]; + vertex.y = vertexBuffer[ i + 1 ]; + vertex.z = vertexBuffer[ i + 2 ]; + + var u = azimuth( vertex ) / 2 / Math.PI + 0.5; + var v = inclination( vertex ) / Math.PI + 0.5; + uvBuffer.push( u, 1 - v ); + + } + + correctUVs(); + + correctSeam(); + + } + + function correctSeam() { + + // handle case when face straddles the seam, see #3269 + + for ( var i = 0; i < uvBuffer.length; i += 6 ) { + + // uv data of a single face + + var x0 = uvBuffer[ i + 0 ]; + var x1 = uvBuffer[ i + 2 ]; + var x2 = uvBuffer[ i + 4 ]; + + var max = Math.max( x0, x1, x2 ); + var min = Math.min( x0, x1, x2 ); + + // 0.9 is somewhat arbitrary + + if ( max > 0.9 && min < 0.1 ) { + + if ( x0 < 0.2 ) { uvBuffer[ i + 0 ] += 1; } + if ( x1 < 0.2 ) { uvBuffer[ i + 2 ] += 1; } + if ( x2 < 0.2 ) { uvBuffer[ i + 4 ] += 1; } + + } + + } + + } + + function pushVertex( vertex ) { + + vertexBuffer.push( vertex.x, vertex.y, vertex.z ); + + } + + function getVertexByIndex( index, vertex ) { + + var stride = index * 3; + + vertex.x = vertices[ stride + 0 ]; + vertex.y = vertices[ stride + 1 ]; + vertex.z = vertices[ stride + 2 ]; + + } + + function correctUVs() { + + var a = new Vector3(); + var b = new Vector3(); + var c = new Vector3(); + + var centroid = new Vector3(); + + var uvA = new Vector2(); + var uvB = new Vector2(); + var uvC = new Vector2(); + + for ( var i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) { + + a.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] ); + b.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] ); + c.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] ); + + uvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] ); + uvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] ); + uvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] ); + + centroid.copy( a ).add( b ).add( c ).divideScalar( 3 ); + + var azi = azimuth( centroid ); + + correctUV( uvA, j + 0, a, azi ); + correctUV( uvB, j + 2, b, azi ); + correctUV( uvC, j + 4, c, azi ); + + } + + } + + function correctUV( uv, stride, vector, azimuth ) { + + if ( ( azimuth < 0 ) && ( uv.x === 1 ) ) { + + uvBuffer[ stride ] = uv.x - 1; + + } + + if ( ( vector.x === 0 ) && ( vector.z === 0 ) ) { + + uvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5; + + } + + } + + // Angle around the Y axis, counter-clockwise when looking from above. + + function azimuth( vector ) { + + return Math.atan2( vector.z, - vector.x ); + + } + + + // Angle above the XZ plane. + + function inclination( vector ) { + + return Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) ); + + } + + } + + PolyhedronBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + PolyhedronBufferGeometry.prototype.constructor = PolyhedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // TetrahedronGeometry + + function TetrahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'TetrahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + TetrahedronGeometry.prototype = Object.create( Geometry.prototype ); + TetrahedronGeometry.prototype.constructor = TetrahedronGeometry; + + // TetrahedronBufferGeometry + + function TetrahedronBufferGeometry( radius, detail ) { + + var vertices = [ + 1, 1, 1, - 1, - 1, 1, - 1, 1, - 1, 1, - 1, - 1 + ]; + + var indices = [ + 2, 1, 0, 0, 3, 2, 1, 3, 0, 2, 3, 1 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'TetrahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + TetrahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + TetrahedronBufferGeometry.prototype.constructor = TetrahedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // OctahedronGeometry + + function OctahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'OctahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + OctahedronGeometry.prototype = Object.create( Geometry.prototype ); + OctahedronGeometry.prototype.constructor = OctahedronGeometry; + + // OctahedronBufferGeometry + + function OctahedronBufferGeometry( radius, detail ) { + + var vertices = [ + 1, 0, 0, - 1, 0, 0, 0, 1, 0, + 0, - 1, 0, 0, 0, 1, 0, 0, - 1 + ]; + + var indices = [ + 0, 2, 4, 0, 4, 3, 0, 3, 5, + 0, 5, 2, 1, 2, 5, 1, 5, 3, + 1, 3, 4, 1, 4, 2 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'OctahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + OctahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + OctahedronBufferGeometry.prototype.constructor = OctahedronBufferGeometry; + + /** + * @author timothypratley / https://github.com/timothypratley + * @author Mugen87 / https://github.com/Mugen87 + */ + + // IcosahedronGeometry + + function IcosahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'IcosahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + IcosahedronGeometry.prototype = Object.create( Geometry.prototype ); + IcosahedronGeometry.prototype.constructor = IcosahedronGeometry; + + // IcosahedronBufferGeometry + + function IcosahedronBufferGeometry( radius, detail ) { + + var t = ( 1 + Math.sqrt( 5 ) ) / 2; + + var vertices = [ + - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, 0, + 0, - 1, t, 0, 1, t, 0, - 1, - t, 0, 1, - t, + t, 0, - 1, t, 0, 1, - t, 0, - 1, - t, 0, 1 + ]; + + var indices = [ + 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11, + 1, 5, 9, 5, 11, 4, 11, 10, 2, 10, 7, 6, 7, 1, 8, + 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9, + 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7, 9, 8, 1 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'IcosahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + IcosahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + IcosahedronBufferGeometry.prototype.constructor = IcosahedronBufferGeometry; + + /** + * @author Abe Pazos / https://hamoid.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + // DodecahedronGeometry + + function DodecahedronGeometry( radius, detail ) { + + Geometry.call( this ); + + this.type = 'DodecahedronGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + this.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) ); + this.mergeVertices(); + + } + + DodecahedronGeometry.prototype = Object.create( Geometry.prototype ); + DodecahedronGeometry.prototype.constructor = DodecahedronGeometry; + + // DodecahedronBufferGeometry + + function DodecahedronBufferGeometry( radius, detail ) { + + var t = ( 1 + Math.sqrt( 5 ) ) / 2; + var r = 1 / t; + + var vertices = [ + + // (±1, ±1, ±1) + - 1, - 1, - 1, - 1, - 1, 1, + - 1, 1, - 1, - 1, 1, 1, + 1, - 1, - 1, 1, - 1, 1, + 1, 1, - 1, 1, 1, 1, + + // (0, ±1/φ, ±φ) + 0, - r, - t, 0, - r, t, + 0, r, - t, 0, r, t, + + // (±1/φ, ±φ, 0) + - r, - t, 0, - r, t, 0, + r, - t, 0, r, t, 0, + + // (±φ, 0, ±1/φ) + - t, 0, - r, t, 0, - r, + - t, 0, r, t, 0, r + ]; + + var indices = [ + 3, 11, 7, 3, 7, 15, 3, 15, 13, + 7, 19, 17, 7, 17, 6, 7, 6, 15, + 17, 4, 8, 17, 8, 10, 17, 10, 6, + 8, 0, 16, 8, 16, 2, 8, 2, 10, + 0, 12, 1, 0, 1, 18, 0, 18, 16, + 6, 10, 2, 6, 2, 13, 6, 13, 15, + 2, 16, 18, 2, 18, 3, 2, 3, 13, + 18, 1, 9, 18, 9, 11, 18, 11, 3, + 4, 14, 12, 4, 12, 0, 4, 0, 8, + 11, 9, 5, 11, 5, 19, 11, 19, 7, + 19, 5, 14, 19, 14, 4, 19, 4, 17, + 1, 12, 14, 1, 14, 5, 1, 5, 9 + ]; + + PolyhedronBufferGeometry.call( this, vertices, indices, radius, detail ); + + this.type = 'DodecahedronBufferGeometry'; + + this.parameters = { + radius: radius, + detail: detail + }; + + } + + DodecahedronBufferGeometry.prototype = Object.create( PolyhedronBufferGeometry.prototype ); + DodecahedronBufferGeometry.prototype.constructor = DodecahedronBufferGeometry; + + /** + * @author oosmoxiecode / https://github.com/oosmoxiecode + * @author WestLangley / https://github.com/WestLangley + * @author zz85 / https://github.com/zz85 + * @author miningold / https://github.com/miningold + * @author jonobr1 / https://github.com/jonobr1 + * @author Mugen87 / https://github.com/Mugen87 + * + */ + + // TubeGeometry + + function TubeGeometry( path, tubularSegments, radius, radialSegments, closed, taper ) { + + Geometry.call( this ); + + this.type = 'TubeGeometry'; + + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + + if ( taper !== undefined ) { console.warn( 'THREE.TubeGeometry: taper has been removed.' ); } + + var bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ); + + // expose internals + + this.tangents = bufferGeometry.tangents; + this.normals = bufferGeometry.normals; + this.binormals = bufferGeometry.binormals; + + // create geometry + + this.fromBufferGeometry( bufferGeometry ); + this.mergeVertices(); + + } + + TubeGeometry.prototype = Object.create( Geometry.prototype ); + TubeGeometry.prototype.constructor = TubeGeometry; + + // TubeBufferGeometry + + function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed ) { + + BufferGeometry.call( this ); + + this.type = 'TubeBufferGeometry'; + + this.parameters = { + path: path, + tubularSegments: tubularSegments, + radius: radius, + radialSegments: radialSegments, + closed: closed + }; + + tubularSegments = tubularSegments || 64; + radius = radius || 1; + radialSegments = radialSegments || 8; + closed = closed || false; + + var frames = path.computeFrenetFrames( tubularSegments, closed ); + + // expose internals + + this.tangents = frames.tangents; + this.normals = frames.normals; + this.binormals = frames.binormals; + + // helper variables + + var vertex = new Vector3(); + var normal = new Vector3(); + var uv = new Vector2(); + var P = new Vector3(); + + var i, j; + + // buffer + + var vertices = []; + var normals = []; + var uvs = []; + var indices = []; + + // create buffer data + + generateBufferData(); + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // functions + + function generateBufferData() { + + for ( i = 0; i < tubularSegments; i ++ ) { + + generateSegment( i ); + + } + + // if the geometry is not closed, generate the last row of vertices and normals + // at the regular position on the given path + // + // if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ) + + generateSegment( ( closed === false ) ? tubularSegments : 0 ); + + // uvs are generated in a separate function. + // this makes it easy compute correct values for closed geometries + + generateUVs(); + + // finally create faces + + generateIndices(); + + } + + function generateSegment( i ) { + + // we use getPointAt to sample evenly distributed points from the given path + + P = path.getPointAt( i / tubularSegments, P ); + + // retrieve corresponding normal and binormal + + var N = frames.normals[ i ]; + var B = frames.binormals[ i ]; + + // generate normals and vertices for the current segment + + for ( j = 0; j <= radialSegments; j ++ ) { + + var v = j / radialSegments * Math.PI * 2; + + var sin = Math.sin( v ); + var cos = - Math.cos( v ); + + // normal + + normal.x = ( cos * N.x + sin * B.x ); + normal.y = ( cos * N.y + sin * B.y ); + normal.z = ( cos * N.z + sin * B.z ); + normal.normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // vertex + + vertex.x = P.x + radius * normal.x; + vertex.y = P.y + radius * normal.y; + vertex.z = P.z + radius * normal.z; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + function generateIndices() { + + for ( j = 1; j <= tubularSegments; j ++ ) { + + for ( i = 1; i <= radialSegments; i ++ ) { + + var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + var b = ( radialSegments + 1 ) * j + ( i - 1 ); + var c = ( radialSegments + 1 ) * j + i; + var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + } + + function generateUVs() { + + for ( i = 0; i <= tubularSegments; i ++ ) { + + for ( j = 0; j <= radialSegments; j ++ ) { + + uv.x = i / tubularSegments; + uv.y = j / radialSegments; + + uvs.push( uv.x, uv.y ); + + } + + } + + } + + } + + TubeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TubeBufferGeometry.prototype.constructor = TubeBufferGeometry; + + TubeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + data.path = this.parameters.path.toJSON(); + + return data; + + }; + + /** + * @author oosmoxiecode + * @author Mugen87 / https://github.com/Mugen87 + * + * based on http://www.blackpawn.com/texts/pqtorus/ + */ + + // TorusKnotGeometry + + function TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) { + + Geometry.call( this ); + + this.type = 'TorusKnotGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + + if ( heightScale !== undefined ) { console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' ); } + + this.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) ); + this.mergeVertices(); + + } + + TorusKnotGeometry.prototype = Object.create( Geometry.prototype ); + TorusKnotGeometry.prototype.constructor = TorusKnotGeometry; + + // TorusKnotBufferGeometry + + function TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) { + + BufferGeometry.call( this ); + + this.type = 'TorusKnotBufferGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + tubularSegments: tubularSegments, + radialSegments: radialSegments, + p: p, + q: q + }; + + radius = radius || 1; + tube = tube || 0.4; + tubularSegments = Math.floor( tubularSegments ) || 64; + radialSegments = Math.floor( radialSegments ) || 8; + p = p || 2; + q = q || 3; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var i, j; + + var vertex = new Vector3(); + var normal = new Vector3(); + + var P1 = new Vector3(); + var P2 = new Vector3(); + + var B = new Vector3(); + var T = new Vector3(); + var N = new Vector3(); + + // generate vertices, normals and uvs + + for ( i = 0; i <= tubularSegments; ++ i ) { + + // the radian "u" is used to calculate the position on the torus curve of the current tubular segement + + var u = i / tubularSegments * p * Math.PI * 2; + + // now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead. + // these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions + + calculatePositionOnCurve( u, p, q, radius, P1 ); + calculatePositionOnCurve( u + 0.01, p, q, radius, P2 ); + + // calculate orthonormal basis + + T.subVectors( P2, P1 ); + N.addVectors( P2, P1 ); + B.crossVectors( T, N ); + N.crossVectors( B, T ); + + // normalize B, N. T can be ignored, we don't use it + + B.normalize(); + N.normalize(); + + for ( j = 0; j <= radialSegments; ++ j ) { + + // now calculate the vertices. they are nothing more than an extrusion of the torus curve. + // because we extrude a shape in the xy-plane, there is no need to calculate a z-value. + + var v = j / radialSegments * Math.PI * 2; + var cx = - tube * Math.cos( v ); + var cy = tube * Math.sin( v ); + + // now calculate the final vertex position. + // first we orient the extrusion with our basis vectos, then we add it to the current position on the curve + + vertex.x = P1.x + ( cx * N.x + cy * B.x ); + vertex.y = P1.y + ( cx * N.y + cy * B.y ); + vertex.z = P1.z + ( cx * N.z + cy * B.z ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal) + + normal.subVectors( vertex, P1 ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( j = 1; j <= tubularSegments; j ++ ) { + + for ( i = 1; i <= radialSegments; i ++ ) { + + // indices + + var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 ); + var b = ( radialSegments + 1 ) * j + ( i - 1 ); + var c = ( radialSegments + 1 ) * j + i; + var d = ( radialSegments + 1 ) * ( j - 1 ) + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // this function calculates the current position on the torus curve + + function calculatePositionOnCurve( u, p, q, radius, position ) { + + var cu = Math.cos( u ); + var su = Math.sin( u ); + var quOverP = q / p * u; + var cs = Math.cos( quOverP ); + + position.x = radius * ( 2 + cs ) * 0.5 * cu; + position.y = radius * ( 2 + cs ) * su * 0.5; + position.z = radius * Math.sin( quOverP ) * 0.5; + + } + + } + + TorusKnotBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusKnotBufferGeometry.prototype.constructor = TorusKnotBufferGeometry; + + /** + * @author oosmoxiecode + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // TorusGeometry + + function TorusGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + + Geometry.call( this ); + + this.type = 'TorusGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + + this.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) ); + this.mergeVertices(); + + } + + TorusGeometry.prototype = Object.create( Geometry.prototype ); + TorusGeometry.prototype.constructor = TorusGeometry; + + // TorusBufferGeometry + + function TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) { + + BufferGeometry.call( this ); + + this.type = 'TorusBufferGeometry'; + + this.parameters = { + radius: radius, + tube: tube, + radialSegments: radialSegments, + tubularSegments: tubularSegments, + arc: arc + }; + + radius = radius || 1; + tube = tube || 0.4; + radialSegments = Math.floor( radialSegments ) || 8; + tubularSegments = Math.floor( tubularSegments ) || 6; + arc = arc || Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var center = new Vector3(); + var vertex = new Vector3(); + var normal = new Vector3(); + + var j, i; + + // generate vertices, normals and uvs + + for ( j = 0; j <= radialSegments; j ++ ) { + + for ( i = 0; i <= tubularSegments; i ++ ) { + + var u = i / tubularSegments * arc; + var v = j / radialSegments * Math.PI * 2; + + // vertex + + vertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u ); + vertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u ); + vertex.z = tube * Math.sin( v ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + center.x = radius * Math.cos( u ); + center.y = radius * Math.sin( u ); + normal.subVectors( vertex, center ).normalize(); + + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( i / tubularSegments ); + uvs.push( j / radialSegments ); + + } + + } + + // generate indices + + for ( j = 1; j <= radialSegments; j ++ ) { + + for ( i = 1; i <= tubularSegments; i ++ ) { + + // indices + + var a = ( tubularSegments + 1 ) * j + i - 1; + var b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1; + var c = ( tubularSegments + 1 ) * ( j - 1 ) + i; + var d = ( tubularSegments + 1 ) * j + i; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + TorusBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + TorusBufferGeometry.prototype.constructor = TorusBufferGeometry; + + /** + * @author Mugen87 / https://github.com/Mugen87 + * Port from https://github.com/mapbox/earcut (v2.1.5) + */ + + var Earcut = { + + triangulate: function ( data, holeIndices, dim ) { + + dim = dim || 2; + + var hasHoles = holeIndices && holeIndices.length, + outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length, + outerNode = linkedList( data, 0, outerLen, dim, true ), + triangles = []; + + if ( ! outerNode || outerNode.next === outerNode.prev ) { return triangles; } + + var minX, minY, maxX, maxY, x, y, invSize; + + if ( hasHoles ) { outerNode = eliminateHoles( data, holeIndices, outerNode, dim ); } + + // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox + if ( data.length > 80 * dim ) { + + minX = maxX = data[ 0 ]; + minY = maxY = data[ 1 ]; + + for ( var i = dim; i < outerLen; i += dim ) { + + x = data[ i ]; + y = data[ i + 1 ]; + if ( x < minX ) { minX = x; } + if ( y < minY ) { minY = y; } + if ( x > maxX ) { maxX = x; } + if ( y > maxY ) { maxY = y; } + + } + + // minX, minY and invSize are later used to transform coords into integers for z-order calculation + invSize = Math.max( maxX - minX, maxY - minY ); + invSize = invSize !== 0 ? 1 / invSize : 0; + + } + + earcutLinked( outerNode, triangles, dim, minX, minY, invSize ); + + return triangles; + + } + + }; + + // create a circular doubly linked list from polygon points in the specified winding order + function linkedList( data, start, end, dim, clockwise ) { + + var i, last; + + if ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) { + + for ( i = start; i < end; i += dim ) { last = insertNode( i, data[ i ], data[ i + 1 ], last ); } + + } else { + + for ( i = end - dim; i >= start; i -= dim ) { last = insertNode( i, data[ i ], data[ i + 1 ], last ); } + + } + + if ( last && equals( last, last.next ) ) { + + removeNode( last ); + last = last.next; + + } + + return last; + + } + + // eliminate colinear or duplicate points + function filterPoints( start, end ) { + + if ( ! start ) { return start; } + if ( ! end ) { end = start; } + + var p = start, + again; + do { + + again = false; + + if ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) { + + removeNode( p ); + p = end = p.prev; + if ( p === p.next ) { break; } + again = true; + + } else { + + p = p.next; + + } + + } while ( again || p !== end ); + + return end; + + } + + // main ear slicing loop which triangulates a polygon (given as a linked list) + function earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) { + + if ( ! ear ) { return; } + + // interlink polygon nodes in z-order + if ( ! pass && invSize ) { indexCurve( ear, minX, minY, invSize ); } + + var stop = ear, + prev, next; + + // iterate through ears, slicing them one by one + while ( ear.prev !== ear.next ) { + + prev = ear.prev; + next = ear.next; + + if ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) { + + // cut off the triangle + triangles.push( prev.i / dim ); + triangles.push( ear.i / dim ); + triangles.push( next.i / dim ); + + removeNode( ear ); + + // skipping the next vertex leads to less sliver triangles + ear = next.next; + stop = next.next; + + continue; + + } + + ear = next; + + // if we looped through the whole remaining polygon and can't find any more ears + if ( ear === stop ) { + + // try filtering points and slicing again + if ( ! pass ) { + + earcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 ); + + // if this didn't work, try curing all small self-intersections locally + + } else if ( pass === 1 ) { + + ear = cureLocalIntersections( ear, triangles, dim ); + earcutLinked( ear, triangles, dim, minX, minY, invSize, 2 ); + + // as a last resort, try splitting the remaining polygon into two + + } else if ( pass === 2 ) { + + splitEarcut( ear, triangles, dim, minX, minY, invSize ); + + } + + break; + + } + + } + + } + + // check whether a polygon node forms a valid ear with adjacent nodes + function isEar( ear ) { + + var a = ear.prev, + b = ear, + c = ear.next; + + if ( area( a, b, c ) >= 0 ) { return false; } // reflex, can't be an ear + + // now make sure we don't have other points inside the potential ear + var p = ear.next.next; + + while ( p !== ear.prev ) { + + if ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && + area( p.prev, p, p.next ) >= 0 ) { return false; } + p = p.next; + + } + + return true; + + } + + function isEarHashed( ear, minX, minY, invSize ) { + + var a = ear.prev, + b = ear, + c = ear.next; + + if ( area( a, b, c ) >= 0 ) { return false; } // reflex, can't be an ear + + // triangle bbox; min & max are calculated like this for speed + var minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ), + minTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ), + maxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ), + maxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y ); + + // z-order range for the current triangle bbox; + var minZ = zOrder( minTX, minTY, minX, minY, invSize ), + maxZ = zOrder( maxTX, maxTY, minX, minY, invSize ); + + var p = ear.prevZ, + n = ear.nextZ; + + // look for points inside the triangle in both directions + while ( p && p.z >= minZ && n && n.z <= maxZ ) { + + if ( p !== ear.prev && p !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && + area( p.prev, p, p.next ) >= 0 ) { return false; } + p = p.prevZ; + + if ( n !== ear.prev && n !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) && + area( n.prev, n, n.next ) >= 0 ) { return false; } + n = n.nextZ; + + } + + // look for remaining points in decreasing z-order + while ( p && p.z >= minZ ) { + + if ( p !== ear.prev && p !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) && + area( p.prev, p, p.next ) >= 0 ) { return false; } + p = p.prevZ; + + } + + // look for remaining points in increasing z-order + while ( n && n.z <= maxZ ) { + + if ( n !== ear.prev && n !== ear.next && + pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) && + area( n.prev, n, n.next ) >= 0 ) { return false; } + n = n.nextZ; + + } + + return true; + + } + + // go through all polygon nodes and cure small local self-intersections + function cureLocalIntersections( start, triangles, dim ) { + + var p = start; + do { + + var a = p.prev, + b = p.next.next; + + if ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) { + + triangles.push( a.i / dim ); + triangles.push( p.i / dim ); + triangles.push( b.i / dim ); + + // remove two nodes involved + removeNode( p ); + removeNode( p.next ); + + p = start = b; + + } + + p = p.next; + + } while ( p !== start ); + + return p; + + } + + // try splitting polygon into two and triangulate them independently + function splitEarcut( start, triangles, dim, minX, minY, invSize ) { + + // look for a valid diagonal that divides the polygon into two + var a = start; + do { + + var b = a.next.next; + while ( b !== a.prev ) { + + if ( a.i !== b.i && isValidDiagonal( a, b ) ) { + + // split the polygon in two by the diagonal + var c = splitPolygon( a, b ); + + // filter colinear points around the cuts + a = filterPoints( a, a.next ); + c = filterPoints( c, c.next ); + + // run earcut on each half + earcutLinked( a, triangles, dim, minX, minY, invSize ); + earcutLinked( c, triangles, dim, minX, minY, invSize ); + return; + + } + + b = b.next; + + } + + a = a.next; + + } while ( a !== start ); + + } + + // link every hole into the outer loop, producing a single-ring polygon without holes + function eliminateHoles( data, holeIndices, outerNode, dim ) { + + var queue = [], + i, len, start, end, list; + + for ( i = 0, len = holeIndices.length; i < len; i ++ ) { + + start = holeIndices[ i ] * dim; + end = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length; + list = linkedList( data, start, end, dim, false ); + if ( list === list.next ) { list.steiner = true; } + queue.push( getLeftmost( list ) ); + + } + + queue.sort( compareX ); + + // process holes from left to right + for ( i = 0; i < queue.length; i ++ ) { + + eliminateHole( queue[ i ], outerNode ); + outerNode = filterPoints( outerNode, outerNode.next ); + + } + + return outerNode; + + } + + function compareX( a, b ) { + + return a.x - b.x; + + } + + // find a bridge between vertices that connects hole with an outer ring and and link it + function eliminateHole( hole, outerNode ) { + + outerNode = findHoleBridge( hole, outerNode ); + if ( outerNode ) { + + var b = splitPolygon( outerNode, hole ); + filterPoints( b, b.next ); + + } + + } + + // David Eberly's algorithm for finding a bridge between hole and outer polygon + function findHoleBridge( hole, outerNode ) { + + var p = outerNode, + hx = hole.x, + hy = hole.y, + qx = - Infinity, + m; + + // find a segment intersected by a ray from the hole's leftmost point to the left; + // segment's endpoint with lesser x will be potential connection point + do { + + if ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) { + + var x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y ); + if ( x <= hx && x > qx ) { + + qx = x; + if ( x === hx ) { + + if ( hy === p.y ) { return p; } + if ( hy === p.next.y ) { return p.next; } + + } + + m = p.x < p.next.x ? p : p.next; + + } + + } + + p = p.next; + + } while ( p !== outerNode ); + + if ( ! m ) { return null; } + + if ( hx === qx ) { return m.prev; } // hole touches outer segment; pick lower endpoint + + // look for points inside the triangle of hole point, segment intersection and endpoint; + // if there are no points found, we have a valid connection; + // otherwise choose the point of the minimum angle with the ray as connection point + + var stop = m, + mx = m.x, + my = m.y, + tanMin = Infinity, + tan; + + p = m.next; + + while ( p !== stop ) { + + if ( hx >= p.x && p.x >= mx && hx !== p.x && + pointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) { + + tan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential + + if ( ( tan < tanMin || ( tan === tanMin && p.x > m.x ) ) && locallyInside( p, hole ) ) { + + m = p; + tanMin = tan; + + } + + } + + p = p.next; + + } + + return m; + + } + + // interlink polygon nodes in z-order + function indexCurve( start, minX, minY, invSize ) { + + var p = start; + do { + + if ( p.z === null ) { p.z = zOrder( p.x, p.y, minX, minY, invSize ); } + p.prevZ = p.prev; + p.nextZ = p.next; + p = p.next; + + } while ( p !== start ); + + p.prevZ.nextZ = null; + p.prevZ = null; + + sortLinked( p ); + + } + + // Simon Tatham's linked list merge sort algorithm + // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html + function sortLinked( list ) { + + var i, p, q, e, tail, numMerges, pSize, qSize, + inSize = 1; + + do { + + p = list; + list = null; + tail = null; + numMerges = 0; + + while ( p ) { + + numMerges ++; + q = p; + pSize = 0; + for ( i = 0; i < inSize; i ++ ) { + + pSize ++; + q = q.nextZ; + if ( ! q ) { break; } + + } + + qSize = inSize; + + while ( pSize > 0 || ( qSize > 0 && q ) ) { + + if ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) { + + e = p; + p = p.nextZ; + pSize --; + + } else { + + e = q; + q = q.nextZ; + qSize --; + + } + + if ( tail ) { tail.nextZ = e; } + else { list = e; } + + e.prevZ = tail; + tail = e; + + } + + p = q; + + } + + tail.nextZ = null; + inSize *= 2; + + } while ( numMerges > 1 ); + + return list; + + } + + // z-order of a point given coords and inverse of the longer side of data bbox + function zOrder( x, y, minX, minY, invSize ) { + + // coords are transformed into non-negative 15-bit integer range + x = 32767 * ( x - minX ) * invSize; + y = 32767 * ( y - minY ) * invSize; + + x = ( x | ( x << 8 ) ) & 0x00FF00FF; + x = ( x | ( x << 4 ) ) & 0x0F0F0F0F; + x = ( x | ( x << 2 ) ) & 0x33333333; + x = ( x | ( x << 1 ) ) & 0x55555555; + + y = ( y | ( y << 8 ) ) & 0x00FF00FF; + y = ( y | ( y << 4 ) ) & 0x0F0F0F0F; + y = ( y | ( y << 2 ) ) & 0x33333333; + y = ( y | ( y << 1 ) ) & 0x55555555; + + return x | ( y << 1 ); + + } + + // find the leftmost node of a polygon ring + function getLeftmost( start ) { + + var p = start, + leftmost = start; + do { + + if ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) { leftmost = p; } + p = p.next; + + } while ( p !== start ); + + return leftmost; + + } + + // check if a point lies within a convex triangle + function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) { + + return ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 && + ( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 && + ( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0; + + } + + // check if a diagonal between two polygon nodes is valid (lies in polygon interior) + function isValidDiagonal( a, b ) { + + return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && + locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ); + + } + + // signed area of a triangle + function area( p, q, r ) { + + return ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y ); + + } + + // check if two points are equal + function equals( p1, p2 ) { + + return p1.x === p2.x && p1.y === p2.y; + + } + + // check if two segments intersect + function intersects( p1, q1, p2, q2 ) { + + if ( ( equals( p1, p2 ) && equals( q1, q2 ) ) || + ( equals( p1, q2 ) && equals( p2, q1 ) ) ) { return true; } + return area( p1, q1, p2 ) > 0 !== area( p1, q1, q2 ) > 0 && + area( p2, q2, p1 ) > 0 !== area( p2, q2, q1 ) > 0; + + } + + // check if a polygon diagonal intersects any polygon segments + function intersectsPolygon( a, b ) { + + var p = a; + do { + + if ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i && + intersects( p, p.next, a, b ) ) { return true; } + p = p.next; + + } while ( p !== a ); + + return false; + + } + + // check if a polygon diagonal is locally inside the polygon + function locallyInside( a, b ) { + + return area( a.prev, a, a.next ) < 0 ? + area( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 : + area( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0; + + } + + // check if the middle point of a polygon diagonal is inside the polygon + function middleInside( a, b ) { + + var p = a, + inside = false, + px = ( a.x + b.x ) / 2, + py = ( a.y + b.y ) / 2; + do { + + if ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y && + ( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) ) + { inside = ! inside; } + p = p.next; + + } while ( p !== a ); + + return inside; + + } + + // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two; + // if one belongs to the outer ring and another to a hole, it merges it into a single ring + function splitPolygon( a, b ) { + + var a2 = new Node( a.i, a.x, a.y ), + b2 = new Node( b.i, b.x, b.y ), + an = a.next, + bp = b.prev; + + a.next = b; + b.prev = a; + + a2.next = an; + an.prev = a2; + + b2.next = a2; + a2.prev = b2; + + bp.next = b2; + b2.prev = bp; + + return b2; + + } + + // create a node and optionally link it with previous one (in a circular doubly linked list) + function insertNode( i, x, y, last ) { + + var p = new Node( i, x, y ); + + if ( ! last ) { + + p.prev = p; + p.next = p; + + } else { + + p.next = last.next; + p.prev = last; + last.next.prev = p; + last.next = p; + + } + + return p; + + } + + function removeNode( p ) { + + p.next.prev = p.prev; + p.prev.next = p.next; + + if ( p.prevZ ) { p.prevZ.nextZ = p.nextZ; } + if ( p.nextZ ) { p.nextZ.prevZ = p.prevZ; } + + } + + function Node( i, x, y ) { + + // vertex index in coordinates array + this.i = i; + + // vertex coordinates + this.x = x; + this.y = y; + + // previous and next vertex nodes in a polygon ring + this.prev = null; + this.next = null; + + // z-order curve value + this.z = null; + + // previous and next nodes in z-order + this.prevZ = null; + this.nextZ = null; + + // indicates whether this is a steiner point + this.steiner = false; + + } + + function signedArea( data, start, end, dim ) { + + var sum = 0; + for ( var i = start, j = end - dim; i < end; i += dim ) { + + sum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] ); + j = i; + + } + + return sum; + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + */ + + var ShapeUtils = { + + // calculate area of the contour polygon + + area: function ( contour ) { + + var n = contour.length; + var a = 0.0; + + for ( var p = n - 1, q = 0; q < n; p = q ++ ) { + + a += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y; + + } + + return a * 0.5; + + }, + + isClockWise: function ( pts ) { + + return ShapeUtils.area( pts ) < 0; + + }, + + triangulateShape: function ( contour, holes ) { + + var vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ] + var holeIndices = []; // array of hole indices + var faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ] + + removeDupEndPts( contour ); + addContour( vertices, contour ); + + // + + var holeIndex = contour.length; + + holes.forEach( removeDupEndPts ); + + for ( var i = 0; i < holes.length; i ++ ) { + + holeIndices.push( holeIndex ); + holeIndex += holes[ i ].length; + addContour( vertices, holes[ i ] ); + + } + + // + + var triangles = Earcut.triangulate( vertices, holeIndices ); + + // + + for ( var i = 0; i < triangles.length; i += 3 ) { + + faces.push( triangles.slice( i, i + 3 ) ); + + } + + return faces; + + } + + }; + + function removeDupEndPts( points ) { + + var l = points.length; + + if ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) { + + points.pop(); + + } + + } + + function addContour( vertices, contour ) { + + for ( var i = 0; i < contour.length; i ++ ) { + + vertices.push( contour[ i ].x ); + vertices.push( contour[ i ].y ); + + } + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + * Creates extruded geometry from a path shape. + * + * parameters = { + * + * curveSegments: , // number of points on the curves + * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too + * depth: , // Depth to extrude the shape + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into the original shape bevel goes + * bevelSize: , // how far from shape outline (including bevelOffset) is bevel + * bevelOffset: , // how far from shape outline does bevel start + * bevelSegments: , // number of bevel layers + * + * extrudePath: // curve to extrude shape along + * + * UVGenerator: // object that provides UV generator functions + * + * } + */ + + // ExtrudeGeometry + + function ExtrudeGeometry( shapes, options ) { + + Geometry.call( this ); + + this.type = 'ExtrudeGeometry'; + + this.parameters = { + shapes: shapes, + options: options + }; + + this.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) ); + this.mergeVertices(); + + } + + ExtrudeGeometry.prototype = Object.create( Geometry.prototype ); + ExtrudeGeometry.prototype.constructor = ExtrudeGeometry; + + ExtrudeGeometry.prototype.toJSON = function () { + + var data = Geometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + var options = this.parameters.options; + + return toJSON( shapes, options, data ); + + }; + + // ExtrudeBufferGeometry + + function ExtrudeBufferGeometry( shapes, options ) { + + BufferGeometry.call( this ); + + this.type = 'ExtrudeBufferGeometry'; + + this.parameters = { + shapes: shapes, + options: options + }; + + shapes = Array.isArray( shapes ) ? shapes : [ shapes ]; + + var scope = this; + + var verticesArray = []; + var uvArray = []; + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + addShape( shape ); + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) ); + + this.computeVertexNormals(); + + // functions + + function addShape( shape ) { + + var placeholder = []; + + // options + + var curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12; + var steps = options.steps !== undefined ? options.steps : 1; + var depth = options.depth !== undefined ? options.depth : 100; + + var bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true; + var bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6; + var bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2; + var bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0; + var bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3; + + var extrudePath = options.extrudePath; + + var uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator; + + // deprecated options + + if ( options.amount !== undefined ) { + + console.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' ); + depth = options.amount; + + } + + // + + var extrudePts, extrudeByPath = false; + var splineTube, binormal, normal, position2; + + if ( extrudePath ) { + + extrudePts = extrudePath.getSpacedPoints( steps ); + + extrudeByPath = true; + bevelEnabled = false; // bevels not supported for path extrusion + + // SETUP TNB variables + + // TODO1 - have a .isClosed in spline? + + splineTube = extrudePath.computeFrenetFrames( steps, false ); + + // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length); + + binormal = new Vector3(); + normal = new Vector3(); + position2 = new Vector3(); + + } + + // Safeguards if bevels are not enabled + + if ( ! bevelEnabled ) { + + bevelSegments = 0; + bevelThickness = 0; + bevelSize = 0; + bevelOffset = 0; + + } + + // Variables initialization + + var ahole, h, hl; // looping of holes + + var shapePoints = shape.extractPoints( curveSegments ); + + var vertices = shapePoints.shape; + var holes = shapePoints.holes; + + var reverse = ! ShapeUtils.isClockWise( vertices ); + + if ( reverse ) { + + vertices = vertices.reverse(); + + // Maybe we should also check if holes are in the opposite direction, just to be safe ... + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + if ( ShapeUtils.isClockWise( ahole ) ) { + + holes[ h ] = ahole.reverse(); + + } + + } + + } + + + var faces = ShapeUtils.triangulateShape( vertices, holes ); + + /* Vertices */ + + var contour = vertices; // vertices has all points but contour has only points of circumference + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + vertices = vertices.concat( ahole ); + + } + + + function scalePt2( pt, vec, size ) { + + if ( ! vec ) { console.error( "THREE.ExtrudeGeometry: vec does not exist" ); } + + return vec.clone().multiplyScalar( size ).add( pt ); + + } + + var b, bs, t, z, + vert, vlen = vertices.length, + face, flen = faces.length; + + + // Find directions for point movement + + + function getBevelVec( inPt, inPrev, inNext ) { + + // computes for inPt the corresponding point inPt' on a new contour + // shifted by 1 unit (length of normalized vector) to the left + // if we walk along contour clockwise, this new contour is outside the old one + // + // inPt' is the intersection of the two lines parallel to the two + // adjacent edges of inPt at a distance of 1 unit on the left side. + + var v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt + + // good reading for geometry algorithms (here: line-line intersection) + // http://geomalgorithms.com/a05-_intersect-1.html + + var v_prev_x = inPt.x - inPrev.x, + v_prev_y = inPt.y - inPrev.y; + var v_next_x = inNext.x - inPt.x, + v_next_y = inNext.y - inPt.y; + + var v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y ); + + // check for collinear edges + var collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + if ( Math.abs( collinear0 ) > Number.EPSILON ) { + + // not collinear + + // length of vectors for normalizing + + var v_prev_len = Math.sqrt( v_prev_lensq ); + var v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y ); + + // shift adjacent points by unit vectors to the left + + var ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len ); + var ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len ); + + var ptNextShift_x = ( inNext.x - v_next_y / v_next_len ); + var ptNextShift_y = ( inNext.y + v_next_x / v_next_len ); + + // scaling factor for v_prev to intersection point + + var sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y - + ( ptNextShift_y - ptPrevShift_y ) * v_next_x ) / + ( v_prev_x * v_next_y - v_prev_y * v_next_x ); + + // vector from inPt to intersection point + + v_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x ); + v_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y ); + + // Don't normalize!, otherwise sharp corners become ugly + // but prevent crazy spikes + var v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y ); + if ( v_trans_lensq <= 2 ) { + + return new Vector2( v_trans_x, v_trans_y ); + + } else { + + shrink_by = Math.sqrt( v_trans_lensq / 2 ); + + } + + } else { + + // handle special case of collinear edges + + var direction_eq = false; // assumes: opposite + if ( v_prev_x > Number.EPSILON ) { + + if ( v_next_x > Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( v_prev_x < - Number.EPSILON ) { + + if ( v_next_x < - Number.EPSILON ) { + + direction_eq = true; + + } + + } else { + + if ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) { + + direction_eq = true; + + } + + } + + } + + if ( direction_eq ) { + + // console.log("Warning: lines are a straight sequence"); + v_trans_x = - v_prev_y; + v_trans_y = v_prev_x; + shrink_by = Math.sqrt( v_prev_lensq ); + + } else { + + // console.log("Warning: lines are a straight spike"); + v_trans_x = v_prev_x; + v_trans_y = v_prev_y; + shrink_by = Math.sqrt( v_prev_lensq / 2 ); + + } + + } + + return new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by ); + + } + + + var contourMovements = []; + + for ( var i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) { j = 0; } + if ( k === il ) { k = 0; } + + // (j)---(i)---(k) + // console.log('i,j,k', i, j , k) + + contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] ); + + } + + var holesMovements = [], + oneHoleMovements, verticesMovements = contourMovements.concat(); + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + + oneHoleMovements = []; + + for ( i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) { + + if ( j === il ) { j = 0; } + if ( k === il ) { k = 0; } + + // (j)---(i)---(k) + oneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] ); + + } + + holesMovements.push( oneHoleMovements ); + verticesMovements = verticesMovements.concat( oneHoleMovements ); + + } + + + // Loop bevelSegments, 1 for the front, 1 for the back + + for ( b = 0; b < bevelSegments; b ++ ) { + + //for ( b = bevelSegments; b > 0; b -- ) { + + t = b / bevelSegments; + z = bevelThickness * Math.cos( t * Math.PI / 2 ); + bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset; + + // contract shape + + for ( i = 0, il = contour.length; i < il; i ++ ) { + + vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + + } + + // expand holes + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + + for ( i = 0, il = ahole.length; i < il; i ++ ) { + + vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + v( vert.x, vert.y, - z ); + + } + + } + + } + + bs = bevelSize + bevelOffset; + + // Back facing vertices + + for ( i = 0; i < vlen; i ++ ) { + + vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, 0 ); + + } else { + + // v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x ); + + normal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + // Add stepped vertices... + // Including front facing vertices + + var s; + + for ( s = 1; s <= steps; s ++ ) { + + for ( i = 0; i < vlen; i ++ ) { + + vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ]; + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, depth / steps * s ); + + } else { + + // v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x ); + + normal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x ); + binormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y ); + + position2.copy( extrudePts[ s ] ).add( normal ).add( binormal ); + + v( position2.x, position2.y, position2.z ); + + } + + } + + } + + + // Add bevel segments planes + + //for ( b = 1; b <= bevelSegments; b ++ ) { + for ( b = bevelSegments - 1; b >= 0; b -- ) { + + t = b / bevelSegments; + z = bevelThickness * Math.cos( t * Math.PI / 2 ); + bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset; + + // contract shape + + for ( i = 0, il = contour.length; i < il; i ++ ) { + + vert = scalePt2( contour[ i ], contourMovements[ i ], bs ); + v( vert.x, vert.y, depth + z ); + + } + + // expand holes + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + oneHoleMovements = holesMovements[ h ]; + + for ( i = 0, il = ahole.length; i < il; i ++ ) { + + vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs ); + + if ( ! extrudeByPath ) { + + v( vert.x, vert.y, depth + z ); + + } else { + + v( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z ); + + } + + } + + } + + } + + /* Faces */ + + // Top and bottom faces + + buildLidFaces(); + + // Sides faces + + buildSideFaces(); + + + ///// Internal functions + + function buildLidFaces() { + + var start = verticesArray.length / 3; + + if ( bevelEnabled ) { + + var layer = 0; // steps + 1 + var offset = vlen * layer; + + // Bottom faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset ); + + } + + layer = steps + bevelSegments * 2; + offset = vlen * layer; + + // Top faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset ); + + } + + } else { + + // Bottom faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 2 ], face[ 1 ], face[ 0 ] ); + + } + + // Top faces + + for ( i = 0; i < flen; i ++ ) { + + face = faces[ i ]; + f3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps ); + + } + + } + + scope.addGroup( start, verticesArray.length / 3 - start, 0 ); + + } + + // Create faces for the z-sides of the shape + + function buildSideFaces() { + + var start = verticesArray.length / 3; + var layeroffset = 0; + sidewalls( contour, layeroffset ); + layeroffset += contour.length; + + for ( h = 0, hl = holes.length; h < hl; h ++ ) { + + ahole = holes[ h ]; + sidewalls( ahole, layeroffset ); + + //, true + layeroffset += ahole.length; + + } + + + scope.addGroup( start, verticesArray.length / 3 - start, 1 ); + + + } + + function sidewalls( contour, layeroffset ) { + + var j, k; + i = contour.length; + + while ( -- i >= 0 ) { + + j = i; + k = i - 1; + if ( k < 0 ) { k = contour.length - 1; } + + //console.log('b', i,j, i-1, k,vertices.length); + + var s = 0, + sl = steps + bevelSegments * 2; + + for ( s = 0; s < sl; s ++ ) { + + var slen1 = vlen * s; + var slen2 = vlen * ( s + 1 ); + + var a = layeroffset + j + slen1, + b = layeroffset + k + slen1, + c = layeroffset + k + slen2, + d = layeroffset + j + slen2; + + f4( a, b, c, d ); + + } + + } + + } + + function v( x, y, z ) { + + placeholder.push( x ); + placeholder.push( y ); + placeholder.push( z ); + + } + + + function f3( a, b, c ) { + + addVertex( a ); + addVertex( b ); + addVertex( c ); + + var nextIndex = verticesArray.length / 3; + var uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + + } + + function f4( a, b, c, d ) { + + addVertex( a ); + addVertex( b ); + addVertex( d ); + + addVertex( b ); + addVertex( c ); + addVertex( d ); + + + var nextIndex = verticesArray.length / 3; + var uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 ); + + addUV( uvs[ 0 ] ); + addUV( uvs[ 1 ] ); + addUV( uvs[ 3 ] ); + + addUV( uvs[ 1 ] ); + addUV( uvs[ 2 ] ); + addUV( uvs[ 3 ] ); + + } + + function addVertex( index ) { + + verticesArray.push( placeholder[ index * 3 + 0 ] ); + verticesArray.push( placeholder[ index * 3 + 1 ] ); + verticesArray.push( placeholder[ index * 3 + 2 ] ); + + } + + + function addUV( vector2 ) { + + uvArray.push( vector2.x ); + uvArray.push( vector2.y ); + + } + + } + + } + + ExtrudeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ExtrudeBufferGeometry.prototype.constructor = ExtrudeBufferGeometry; + + ExtrudeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + var options = this.parameters.options; + + return toJSON( shapes, options, data ); + + }; + + // + + var WorldUVGenerator = { + + generateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) { + + var a_x = vertices[ indexA * 3 ]; + var a_y = vertices[ indexA * 3 + 1 ]; + var b_x = vertices[ indexB * 3 ]; + var b_y = vertices[ indexB * 3 + 1 ]; + var c_x = vertices[ indexC * 3 ]; + var c_y = vertices[ indexC * 3 + 1 ]; + + return [ + new Vector2( a_x, a_y ), + new Vector2( b_x, b_y ), + new Vector2( c_x, c_y ) + ]; + + }, + + generateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) { + + var a_x = vertices[ indexA * 3 ]; + var a_y = vertices[ indexA * 3 + 1 ]; + var a_z = vertices[ indexA * 3 + 2 ]; + var b_x = vertices[ indexB * 3 ]; + var b_y = vertices[ indexB * 3 + 1 ]; + var b_z = vertices[ indexB * 3 + 2 ]; + var c_x = vertices[ indexC * 3 ]; + var c_y = vertices[ indexC * 3 + 1 ]; + var c_z = vertices[ indexC * 3 + 2 ]; + var d_x = vertices[ indexD * 3 ]; + var d_y = vertices[ indexD * 3 + 1 ]; + var d_z = vertices[ indexD * 3 + 2 ]; + + if ( Math.abs( a_y - b_y ) < 0.01 ) { + + return [ + new Vector2( a_x, 1 - a_z ), + new Vector2( b_x, 1 - b_z ), + new Vector2( c_x, 1 - c_z ), + new Vector2( d_x, 1 - d_z ) + ]; + + } else { + + return [ + new Vector2( a_y, 1 - a_z ), + new Vector2( b_y, 1 - b_z ), + new Vector2( c_y, 1 - c_z ), + new Vector2( d_y, 1 - d_z ) + ]; + + } + + } + }; + + function toJSON( shapes, options, data ) { + + // + + data.shapes = []; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + data.shapes.push( shape.uuid ); + + } + + } else { + + data.shapes.push( shapes.uuid ); + + } + + // + + if ( options.extrudePath !== undefined ) { data.options.extrudePath = options.extrudePath.toJSON(); } + + return data; + + } + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author alteredq / http://alteredqualia.com/ + * + * Text = 3D Text + * + * parameters = { + * font: , // font + * + * size: , // size of the text + * height: , // thickness to extrude text + * curveSegments: , // number of points on the curves + * + * bevelEnabled: , // turn on bevel + * bevelThickness: , // how deep into text bevel goes + * bevelSize: , // how far from text outline (including bevelOffset) is bevel + * bevelOffset: // how far from text outline does bevel start + * } + */ + + // TextGeometry + + function TextGeometry( text, parameters ) { + + Geometry.call( this ); + + this.type = 'TextGeometry'; + + this.parameters = { + text: text, + parameters: parameters + }; + + this.fromBufferGeometry( new TextBufferGeometry( text, parameters ) ); + this.mergeVertices(); + + } + + TextGeometry.prototype = Object.create( Geometry.prototype ); + TextGeometry.prototype.constructor = TextGeometry; + + // TextBufferGeometry + + function TextBufferGeometry( text, parameters ) { + + parameters = parameters || {}; + + var font = parameters.font; + + if ( ! ( font && font.isFont ) ) { + + console.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' ); + return new Geometry(); + + } + + var shapes = font.generateShapes( text, parameters.size ); + + // translate parameters to ExtrudeGeometry API + + parameters.depth = parameters.height !== undefined ? parameters.height : 50; + + // defaults + + if ( parameters.bevelThickness === undefined ) { parameters.bevelThickness = 10; } + if ( parameters.bevelSize === undefined ) { parameters.bevelSize = 8; } + if ( parameters.bevelEnabled === undefined ) { parameters.bevelEnabled = false; } + + ExtrudeBufferGeometry.call( this, shapes, parameters ); + + this.type = 'TextBufferGeometry'; + + } + + TextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype ); + TextBufferGeometry.prototype.constructor = TextBufferGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author benaadams / https://twitter.com/ben_a_adams + * @author Mugen87 / https://github.com/Mugen87 + */ + + // SphereGeometry + + function SphereGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'SphereGeometry'; + + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + SphereGeometry.prototype = Object.create( Geometry.prototype ); + SphereGeometry.prototype.constructor = SphereGeometry; + + // SphereBufferGeometry + + function SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'SphereBufferGeometry'; + + this.parameters = { + radius: radius, + widthSegments: widthSegments, + heightSegments: heightSegments, + phiStart: phiStart, + phiLength: phiLength, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + radius = radius || 1; + + widthSegments = Math.max( 3, Math.floor( widthSegments ) || 8 ); + heightSegments = Math.max( 2, Math.floor( heightSegments ) || 6 ); + + phiStart = phiStart !== undefined ? phiStart : 0; + phiLength = phiLength !== undefined ? phiLength : Math.PI * 2; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI; + + var thetaEnd = Math.min( thetaStart + thetaLength, Math.PI ); + + var ix, iy; + + var index = 0; + var grid = []; + + var vertex = new Vector3(); + var normal = new Vector3(); + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // generate vertices, normals and uvs + + for ( iy = 0; iy <= heightSegments; iy ++ ) { + + var verticesRow = []; + + var v = iy / heightSegments; + + // special case for the poles + + var uOffset = 0; + + if ( iy == 0 && thetaStart == 0 ) { + + uOffset = 0.5 / widthSegments; + + } else if ( iy == heightSegments && thetaEnd == Math.PI ) { + + uOffset = - 0.5 / widthSegments; + + } + + for ( ix = 0; ix <= widthSegments; ix ++ ) { + + var u = ix / widthSegments; + + // vertex + + vertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + vertex.y = radius * Math.cos( thetaStart + v * thetaLength ); + vertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.copy( vertex ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u + uOffset, 1 - v ); + + verticesRow.push( index ++ ); + + } + + grid.push( verticesRow ); + + } + + // indices + + for ( iy = 0; iy < heightSegments; iy ++ ) { + + for ( ix = 0; ix < widthSegments; ix ++ ) { + + var a = grid[ iy ][ ix + 1 ]; + var b = grid[ iy ][ ix ]; + var c = grid[ iy + 1 ][ ix ]; + var d = grid[ iy + 1 ][ ix + 1 ]; + + if ( iy !== 0 || thetaStart > 0 ) { indices.push( a, b, d ); } + if ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) { indices.push( b, c, d ); } + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + SphereBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + SphereBufferGeometry.prototype.constructor = SphereBufferGeometry; + + /** + * @author Kaleb Murphy + * @author Mugen87 / https://github.com/Mugen87 + */ + + // RingGeometry + + function RingGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'RingGeometry'; + + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + RingGeometry.prototype = Object.create( Geometry.prototype ); + RingGeometry.prototype.constructor = RingGeometry; + + // RingBufferGeometry + + function RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'RingBufferGeometry'; + + this.parameters = { + innerRadius: innerRadius, + outerRadius: outerRadius, + thetaSegments: thetaSegments, + phiSegments: phiSegments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + innerRadius = innerRadius || 0.5; + outerRadius = outerRadius || 1; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + thetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8; + phiSegments = phiSegments !== undefined ? Math.max( 1, phiSegments ) : 1; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // some helper variables + + var segment; + var radius = innerRadius; + var radiusStep = ( ( outerRadius - innerRadius ) / phiSegments ); + var vertex = new Vector3(); + var uv = new Vector2(); + var j, i; + + // generate vertices, normals and uvs + + for ( j = 0; j <= phiSegments; j ++ ) { + + for ( i = 0; i <= thetaSegments; i ++ ) { + + // values are generate from the inside of the ring to the outside + + segment = thetaStart + i / thetaSegments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uv + + uv.x = ( vertex.x / outerRadius + 1 ) / 2; + uv.y = ( vertex.y / outerRadius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // increase the radius for next row of vertices + + radius += radiusStep; + + } + + // indices + + for ( j = 0; j < phiSegments; j ++ ) { + + var thetaSegmentLevel = j * ( thetaSegments + 1 ); + + for ( i = 0; i < thetaSegments; i ++ ) { + + segment = i + thetaSegmentLevel; + + var a = segment; + var b = segment + thetaSegments + 1; + var c = segment + thetaSegments + 2; + var d = segment + 1; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + RingBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + RingBufferGeometry.prototype.constructor = RingBufferGeometry; + + /** + * @author zz85 / https://github.com/zz85 + * @author bhouston / http://clara.io + * @author Mugen87 / https://github.com/Mugen87 + */ + + // LatheGeometry + + function LatheGeometry( points, segments, phiStart, phiLength ) { + + Geometry.call( this ); + + this.type = 'LatheGeometry'; + + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + + this.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) ); + this.mergeVertices(); + + } + + LatheGeometry.prototype = Object.create( Geometry.prototype ); + LatheGeometry.prototype.constructor = LatheGeometry; + + // LatheBufferGeometry + + function LatheBufferGeometry( points, segments, phiStart, phiLength ) { + + BufferGeometry.call( this ); + + this.type = 'LatheBufferGeometry'; + + this.parameters = { + points: points, + segments: segments, + phiStart: phiStart, + phiLength: phiLength + }; + + segments = Math.floor( segments ) || 12; + phiStart = phiStart || 0; + phiLength = phiLength || Math.PI * 2; + + // clamp phiLength so it's in range of [ 0, 2PI ] + + phiLength = _Math.clamp( phiLength, 0, Math.PI * 2 ); + + + // buffers + + var indices = []; + var vertices = []; + var uvs = []; + + // helper variables + + var base; + var inverseSegments = 1.0 / segments; + var vertex = new Vector3(); + var uv = new Vector2(); + var i, j; + + // generate vertices and uvs + + for ( i = 0; i <= segments; i ++ ) { + + var phi = phiStart + i * inverseSegments * phiLength; + + var sin = Math.sin( phi ); + var cos = Math.cos( phi ); + + for ( j = 0; j <= ( points.length - 1 ); j ++ ) { + + // vertex + + vertex.x = points[ j ].x * sin; + vertex.y = points[ j ].y; + vertex.z = points[ j ].x * cos; + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // uv + + uv.x = i / segments; + uv.y = j / ( points.length - 1 ); + + uvs.push( uv.x, uv.y ); + + + } + + } + + // indices + + for ( i = 0; i < segments; i ++ ) { + + for ( j = 0; j < ( points.length - 1 ); j ++ ) { + + base = j + i * points.length; + + var a = base; + var b = base + points.length; + var c = base + points.length + 1; + var d = base + 1; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + // generate normals + + this.computeVertexNormals(); + + // if the geometry is closed, we need to average the normals along the seam. + // because the corresponding vertices are identical (but still have different UVs). + + if ( phiLength === Math.PI * 2 ) { + + var normals = this.attributes.normal.array; + var n1 = new Vector3(); + var n2 = new Vector3(); + var n = new Vector3(); + + // this is the buffer offset for the last line of vertices + + base = segments * points.length * 3; + + for ( i = 0, j = 0; i < points.length; i ++, j += 3 ) { + + // select the normal of the vertex in the first line + + n1.x = normals[ j + 0 ]; + n1.y = normals[ j + 1 ]; + n1.z = normals[ j + 2 ]; + + // select the normal of the vertex in the last line + + n2.x = normals[ base + j + 0 ]; + n2.y = normals[ base + j + 1 ]; + n2.z = normals[ base + j + 2 ]; + + // average normals + + n.addVectors( n1, n2 ).normalize(); + + // assign the new values to both normals + + normals[ j + 0 ] = normals[ base + j + 0 ] = n.x; + normals[ j + 1 ] = normals[ base + j + 1 ] = n.y; + normals[ j + 2 ] = normals[ base + j + 2 ] = n.z; + + } + + } + + } + + LatheBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + LatheBufferGeometry.prototype.constructor = LatheBufferGeometry; + + /** + * @author jonobr1 / http://jonobr1.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + // ShapeGeometry + + function ShapeGeometry( shapes, curveSegments ) { + + Geometry.call( this ); + + this.type = 'ShapeGeometry'; + + if ( typeof curveSegments === 'object' ) { + + console.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' ); + + curveSegments = curveSegments.curveSegments; + + } + + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; + + this.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) ); + this.mergeVertices(); + + } + + ShapeGeometry.prototype = Object.create( Geometry.prototype ); + ShapeGeometry.prototype.constructor = ShapeGeometry; + + ShapeGeometry.prototype.toJSON = function () { + + var data = Geometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + + return toJSON$1( shapes, data ); + + }; + + // ShapeBufferGeometry + + function ShapeBufferGeometry( shapes, curveSegments ) { + + BufferGeometry.call( this ); + + this.type = 'ShapeBufferGeometry'; + + this.parameters = { + shapes: shapes, + curveSegments: curveSegments + }; + + curveSegments = curveSegments || 12; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var groupStart = 0; + var groupCount = 0; + + // allow single and array values for "shapes" parameter + + if ( Array.isArray( shapes ) === false ) { + + addShape( shapes ); + + } else { + + for ( var i = 0; i < shapes.length; i ++ ) { + + addShape( shapes[ i ] ); + + this.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support + + groupStart += groupCount; + groupCount = 0; + + } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + + // helper functions + + function addShape( shape ) { + + var i, l, shapeHole; + + var indexOffset = vertices.length / 3; + var points = shape.extractPoints( curveSegments ); + + var shapeVertices = points.shape; + var shapeHoles = points.holes; + + // check direction of vertices + + if ( ShapeUtils.isClockWise( shapeVertices ) === false ) { + + shapeVertices = shapeVertices.reverse(); + + } + + for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + + shapeHole = shapeHoles[ i ]; + + if ( ShapeUtils.isClockWise( shapeHole ) === true ) { + + shapeHoles[ i ] = shapeHole.reverse(); + + } + + } + + var faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles ); + + // join vertices of inner and outer paths to a single array + + for ( i = 0, l = shapeHoles.length; i < l; i ++ ) { + + shapeHole = shapeHoles[ i ]; + shapeVertices = shapeVertices.concat( shapeHole ); + + } + + // vertices, normals, uvs + + for ( i = 0, l = shapeVertices.length; i < l; i ++ ) { + + var vertex = shapeVertices[ i ]; + + vertices.push( vertex.x, vertex.y, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( vertex.x, vertex.y ); // world uvs + + } + + // incides + + for ( i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + var a = face[ 0 ] + indexOffset; + var b = face[ 1 ] + indexOffset; + var c = face[ 2 ] + indexOffset; + + indices.push( a, b, c ); + groupCount += 3; + + } + + } + + } + + ShapeBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + ShapeBufferGeometry.prototype.constructor = ShapeBufferGeometry; + + ShapeBufferGeometry.prototype.toJSON = function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + var shapes = this.parameters.shapes; + + return toJSON$1( shapes, data ); + + }; + + // + + function toJSON$1( shapes, data ) { + + data.shapes = []; + + if ( Array.isArray( shapes ) ) { + + for ( var i = 0, l = shapes.length; i < l; i ++ ) { + + var shape = shapes[ i ]; + + data.shapes.push( shape.uuid ); + + } + + } else { + + data.shapes.push( shapes.uuid ); + + } + + return data; + + } + + /** + * @author WestLangley / http://github.com/WestLangley + * @author Mugen87 / https://github.com/Mugen87 + */ + + function EdgesGeometry( geometry, thresholdAngle ) { + + BufferGeometry.call( this ); + + this.type = 'EdgesGeometry'; + + this.parameters = { + thresholdAngle: thresholdAngle + }; + + thresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1; + + // buffer + + var vertices = []; + + // helper variables + + var thresholdDot = Math.cos( _Math.DEG2RAD * thresholdAngle ); + var edge = [ 0, 0 ], edges = {}, edge1, edge2; + var key, keys = [ 'a', 'b', 'c' ]; + + // prepare source geometry + + var geometry2; + + if ( geometry.isBufferGeometry ) { + + geometry2 = new Geometry(); + geometry2.fromBufferGeometry( geometry ); + + } else { + + geometry2 = geometry.clone(); + + } + + geometry2.mergeVertices(); + geometry2.computeFaceNormals(); + + var sourceVertices = geometry2.vertices; + var faces = geometry2.faces; + + // now create a data structure where each entry represents an edge with its adjoining faces + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( var j = 0; j < 3; j ++ ) { + + edge1 = face[ keys[ j ] ]; + edge2 = face[ keys[ ( j + 1 ) % 3 ] ]; + edge[ 0 ] = Math.min( edge1, edge2 ); + edge[ 1 ] = Math.max( edge1, edge2 ); + + key = edge[ 0 ] + ',' + edge[ 1 ]; + + if ( edges[ key ] === undefined ) { + + edges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ], face1: i, face2: undefined }; + + } else { + + edges[ key ].face2 = i; + + } + + } + + } + + // generate vertices + + for ( key in edges ) { + + var e = edges[ key ]; + + // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree. + + if ( e.face2 === undefined || faces[ e.face1 ].normal.dot( faces[ e.face2 ].normal ) <= thresholdDot ) { + + var vertex = sourceVertices[ e.index1 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + vertex = sourceVertices[ e.index2 ]; + vertices.push( vertex.x, vertex.y, vertex.z ); + + } + + } + + // build geometry + + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + + } + + EdgesGeometry.prototype = Object.create( BufferGeometry.prototype ); + EdgesGeometry.prototype.constructor = EdgesGeometry; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + // CylinderGeometry + + function CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'CylinderGeometry'; + + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + CylinderGeometry.prototype = Object.create( Geometry.prototype ); + CylinderGeometry.prototype.constructor = CylinderGeometry; + + // CylinderBufferGeometry + + function CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'CylinderBufferGeometry'; + + this.parameters = { + radiusTop: radiusTop, + radiusBottom: radiusBottom, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + var scope = this; + + radiusTop = radiusTop !== undefined ? radiusTop : 1; + radiusBottom = radiusBottom !== undefined ? radiusBottom : 1; + height = height || 1; + + radialSegments = Math.floor( radialSegments ) || 8; + heightSegments = Math.floor( heightSegments ) || 1; + + openEnded = openEnded !== undefined ? openEnded : false; + thetaStart = thetaStart !== undefined ? thetaStart : 0.0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var index = 0; + var indexArray = []; + var halfHeight = height / 2; + var groupStart = 0; + + // generate geometry + + generateTorso(); + + if ( openEnded === false ) { + + if ( radiusTop > 0 ) { generateCap( true ); } + if ( radiusBottom > 0 ) { generateCap( false ); } + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + function generateTorso() { + + var x, y; + var normal = new Vector3(); + var vertex = new Vector3(); + + var groupCount = 0; + + // this will be used to calculate the normal + var slope = ( radiusBottom - radiusTop ) / height; + + // generate vertices, normals and uvs + + for ( y = 0; y <= heightSegments; y ++ ) { + + var indexRow = []; + + var v = y / heightSegments; + + // calculate the radius of the current row + + var radius = v * ( radiusBottom - radiusTop ) + radiusTop; + + for ( x = 0; x <= radialSegments; x ++ ) { + + var u = x / radialSegments; + + var theta = u * thetaLength + thetaStart; + + var sinTheta = Math.sin( theta ); + var cosTheta = Math.cos( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = - v * height + halfHeight; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normal.set( sinTheta, slope, cosTheta ).normalize(); + normals.push( normal.x, normal.y, normal.z ); + + // uv + + uvs.push( u, 1 - v ); + + // save index of vertex in respective row + + indexRow.push( index ++ ); + + } + + // now save vertices of the row in our index array + + indexArray.push( indexRow ); + + } + + // generate indices + + for ( x = 0; x < radialSegments; x ++ ) { + + for ( y = 0; y < heightSegments; y ++ ) { + + // we use the index array to access the correct indices + + var a = indexArray[ y ][ x ]; + var b = indexArray[ y + 1 ][ x ]; + var c = indexArray[ y + 1 ][ x + 1 ]; + var d = indexArray[ y ][ x + 1 ]; + + // faces + + indices.push( a, b, d ); + indices.push( b, c, d ); + + // update group counter + + groupCount += 6; + + } + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, 0 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + function generateCap( top ) { + + var x, centerIndexStart, centerIndexEnd; + + var uv = new Vector2(); + var vertex = new Vector3(); + + var groupCount = 0; + + var radius = ( top === true ) ? radiusTop : radiusBottom; + var sign = ( top === true ) ? 1 : - 1; + + // save the index of the first center vertex + centerIndexStart = index; + + // first we generate the center vertex data of the cap. + // because the geometry needs one set of uvs per face, + // we must generate a center vertex per face/segment + + for ( x = 1; x <= radialSegments; x ++ ) { + + // vertex + + vertices.push( 0, halfHeight * sign, 0 ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uvs.push( 0.5, 0.5 ); + + // increase index + + index ++; + + } + + // save the index of the last center vertex + + centerIndexEnd = index; + + // now we generate the surrounding vertices, normals and uvs + + for ( x = 0; x <= radialSegments; x ++ ) { + + var u = x / radialSegments; + var theta = u * thetaLength + thetaStart; + + var cosTheta = Math.cos( theta ); + var sinTheta = Math.sin( theta ); + + // vertex + + vertex.x = radius * sinTheta; + vertex.y = halfHeight * sign; + vertex.z = radius * cosTheta; + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, sign, 0 ); + + // uv + + uv.x = ( cosTheta * 0.5 ) + 0.5; + uv.y = ( sinTheta * 0.5 * sign ) + 0.5; + uvs.push( uv.x, uv.y ); + + // increase index + + index ++; + + } + + // generate indices + + for ( x = 0; x < radialSegments; x ++ ) { + + var c = centerIndexStart + x; + var i = centerIndexEnd + x; + + if ( top === true ) { + + // face top + + indices.push( i, i + 1, c ); + + } else { + + // face bottom + + indices.push( i + 1, i, c ); + + } + + groupCount += 3; + + } + + // add a group to the geometry. this will ensure multi material support + + scope.addGroup( groupStart, groupCount, top === true ? 1 : 2 ); + + // calculate new start value for groups + + groupStart += groupCount; + + } + + } + + CylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry; + + /** + * @author abelnation / http://github.com/abelnation + */ + + // ConeGeometry + + function ConeGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + CylinderGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + + this.type = 'ConeGeometry'; + + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + } + + ConeGeometry.prototype = Object.create( CylinderGeometry.prototype ); + ConeGeometry.prototype.constructor = ConeGeometry; + + // ConeBufferGeometry + + function ConeBufferGeometry( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) { + + CylinderBufferGeometry.call( this, 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ); + + this.type = 'ConeBufferGeometry'; + + this.parameters = { + radius: radius, + height: height, + radialSegments: radialSegments, + heightSegments: heightSegments, + openEnded: openEnded, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + } + + ConeBufferGeometry.prototype = Object.create( CylinderBufferGeometry.prototype ); + ConeBufferGeometry.prototype.constructor = ConeBufferGeometry; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + * @author Mugen87 / https://github.com/Mugen87 + * @author hughes + */ + + // CircleGeometry + + function CircleGeometry( radius, segments, thetaStart, thetaLength ) { + + Geometry.call( this ); + + this.type = 'CircleGeometry'; + + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + this.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) ); + this.mergeVertices(); + + } + + CircleGeometry.prototype = Object.create( Geometry.prototype ); + CircleGeometry.prototype.constructor = CircleGeometry; + + // CircleBufferGeometry + + function CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) { + + BufferGeometry.call( this ); + + this.type = 'CircleBufferGeometry'; + + this.parameters = { + radius: radius, + segments: segments, + thetaStart: thetaStart, + thetaLength: thetaLength + }; + + radius = radius || 1; + segments = segments !== undefined ? Math.max( 3, segments ) : 8; + + thetaStart = thetaStart !== undefined ? thetaStart : 0; + thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2; + + // buffers + + var indices = []; + var vertices = []; + var normals = []; + var uvs = []; + + // helper variables + + var i, s; + var vertex = new Vector3(); + var uv = new Vector2(); + + // center point + + vertices.push( 0, 0, 0 ); + normals.push( 0, 0, 1 ); + uvs.push( 0.5, 0.5 ); + + for ( s = 0, i = 3; s <= segments; s ++, i += 3 ) { + + var segment = thetaStart + s / segments * thetaLength; + + // vertex + + vertex.x = radius * Math.cos( segment ); + vertex.y = radius * Math.sin( segment ); + + vertices.push( vertex.x, vertex.y, vertex.z ); + + // normal + + normals.push( 0, 0, 1 ); + + // uvs + + uv.x = ( vertices[ i ] / radius + 1 ) / 2; + uv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2; + + uvs.push( uv.x, uv.y ); + + } + + // indices + + for ( i = 1; i <= segments; i ++ ) { + + indices.push( i, i + 1, 0 ); + + } + + // build geometry + + this.setIndex( indices ); + this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) ); + this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) ); + + } + + CircleBufferGeometry.prototype = Object.create( BufferGeometry.prototype ); + CircleBufferGeometry.prototype.constructor = CircleBufferGeometry; + + + + var Geometries = /*#__PURE__*/Object.freeze({ + WireframeGeometry: WireframeGeometry, + ParametricGeometry: ParametricGeometry, + ParametricBufferGeometry: ParametricBufferGeometry, + TetrahedronGeometry: TetrahedronGeometry, + TetrahedronBufferGeometry: TetrahedronBufferGeometry, + OctahedronGeometry: OctahedronGeometry, + OctahedronBufferGeometry: OctahedronBufferGeometry, + IcosahedronGeometry: IcosahedronGeometry, + IcosahedronBufferGeometry: IcosahedronBufferGeometry, + DodecahedronGeometry: DodecahedronGeometry, + DodecahedronBufferGeometry: DodecahedronBufferGeometry, + PolyhedronGeometry: PolyhedronGeometry, + PolyhedronBufferGeometry: PolyhedronBufferGeometry, + TubeGeometry: TubeGeometry, + TubeBufferGeometry: TubeBufferGeometry, + TorusKnotGeometry: TorusKnotGeometry, + TorusKnotBufferGeometry: TorusKnotBufferGeometry, + TorusGeometry: TorusGeometry, + TorusBufferGeometry: TorusBufferGeometry, + TextGeometry: TextGeometry, + TextBufferGeometry: TextBufferGeometry, + SphereGeometry: SphereGeometry, + SphereBufferGeometry: SphereBufferGeometry, + RingGeometry: RingGeometry, + RingBufferGeometry: RingBufferGeometry, + PlaneGeometry: PlaneGeometry, + PlaneBufferGeometry: PlaneBufferGeometry, + LatheGeometry: LatheGeometry, + LatheBufferGeometry: LatheBufferGeometry, + ShapeGeometry: ShapeGeometry, + ShapeBufferGeometry: ShapeBufferGeometry, + ExtrudeGeometry: ExtrudeGeometry, + ExtrudeBufferGeometry: ExtrudeBufferGeometry, + EdgesGeometry: EdgesGeometry, + ConeGeometry: ConeGeometry, + ConeBufferGeometry: ConeBufferGeometry, + CylinderGeometry: CylinderGeometry, + CylinderBufferGeometry: CylinderBufferGeometry, + CircleGeometry: CircleGeometry, + CircleBufferGeometry: CircleBufferGeometry, + BoxGeometry: BoxGeometry, + BoxBufferGeometry: BoxBufferGeometry + }); + + /** + * @author mrdoob / http://mrdoob.com/ + * + * parameters = { + * color: + * } + */ + + function ShadowMaterial( parameters ) { + + Material.call( this ); + + this.type = 'ShadowMaterial'; + + this.color = new Color( 0x000000 ); + this.transparent = true; + + this.setValues( parameters ); + + } + + ShadowMaterial.prototype = Object.create( Material.prototype ); + ShadowMaterial.prototype.constructor = ShadowMaterial; + + ShadowMaterial.prototype.isShadowMaterial = true; + + ShadowMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function RawShaderMaterial( parameters ) { + + ShaderMaterial.call( this, parameters ); + + this.type = 'RawShaderMaterial'; + + } + + RawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype ); + RawShaderMaterial.prototype.constructor = RawShaderMaterial; + + RawShaderMaterial.prototype.isRawShaderMaterial = true; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * color: , + * roughness: , + * metalness: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * roughnessMap: new THREE.Texture( ), + * + * metalnessMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * envMapIntensity: + * + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshStandardMaterial( parameters ) { + + Material.call( this ); + + this.defines = { 'STANDARD': '' }; + + this.type = 'MeshStandardMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + this.roughness = 0.5; + this.metalness = 0.5; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.roughnessMap = null; + + this.metalnessMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.envMapIntensity = 1.0; + + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshStandardMaterial.prototype = Object.create( Material.prototype ); + MeshStandardMaterial.prototype.constructor = MeshStandardMaterial; + + MeshStandardMaterial.prototype.isMeshStandardMaterial = true; + + MeshStandardMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.defines = { 'STANDARD': '' }; + + this.color.copy( source.color ); + this.roughness = source.roughness; + this.metalness = source.metalness; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.roughnessMap = source.roughnessMap; + + this.metalnessMap = source.metalnessMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapIntensity = source.envMapIntensity; + + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * reflectivity: + * clearcoat: + * clearcoatRoughness: + * + * sheen: + * + * clearcoatNormalScale: , + * clearcoatNormalMap: new THREE.Texture( ), + * } + */ + + function MeshPhysicalMaterial( parameters ) { + + MeshStandardMaterial.call( this ); + + this.defines = { + + 'STANDARD': '', + 'PHYSICAL': '' + + }; + + this.type = 'MeshPhysicalMaterial'; + + this.reflectivity = 0.5; // maps to F0 = 0.04 + + this.clearcoat = 0.0; + this.clearcoatRoughness = 0.0; + + this.sheen = null; // null will disable sheen bsdf + + this.clearcoatNormalScale = new Vector2( 1, 1 ); + this.clearcoatNormalMap = null; + + this.transparency = 0.0; + + this.setValues( parameters ); + + } + + MeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype ); + MeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial; + + MeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true; + + MeshPhysicalMaterial.prototype.copy = function ( source ) { + + MeshStandardMaterial.prototype.copy.call( this, source ); + + this.defines = { + + 'STANDARD': '', + 'PHYSICAL': '' + + }; + + this.reflectivity = source.reflectivity; + + this.clearcoat = source.clearcoat; + this.clearcoatRoughness = source.clearcoatRoughness; + + if ( source.sheen ) { this.sheen = ( this.sheen || new Color() ).copy( source.sheen ); } + else { this.sheen = null; } + + this.clearcoatNormalMap = source.clearcoatNormalMap; + this.clearcoatNormalScale.copy( source.clearcoatNormalScale ); + + this.transparency = source.transparency; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * specular: , + * shininess: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshPhongMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshPhongMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + this.specular = new Color( 0x111111 ); + this.shininess = 30; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshPhongMaterial.prototype = Object.create( Material.prototype ); + MeshPhongMaterial.prototype.constructor = MeshPhongMaterial; + + MeshPhongMaterial.prototype.isMeshPhongMaterial = true; + + MeshPhongMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.specular.copy( source.specular ); + this.shininess = source.shininess; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author takahirox / http://github.com/takahirox + * + * parameters = { + * gradientMap: new THREE.Texture( ) + * } + */ + + function MeshToonMaterial( parameters ) { + + MeshPhongMaterial.call( this ); + + this.defines = { 'TOON': '' }; + + this.type = 'MeshToonMaterial'; + + this.gradientMap = null; + + this.setValues( parameters ); + + } + + MeshToonMaterial.prototype = Object.create( MeshPhongMaterial.prototype ); + MeshToonMaterial.prototype.constructor = MeshToonMaterial; + + MeshToonMaterial.prototype.isMeshToonMaterial = true; + + MeshToonMaterial.prototype.copy = function ( source ) { + + MeshPhongMaterial.prototype.copy.call( this, source ); + + this.gradientMap = source.gradientMap; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * opacity: , + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * wireframe: , + * wireframeLinewidth: + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshNormalMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshNormalMaterial'; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.wireframe = false; + this.wireframeLinewidth = 1; + + this.fog = false; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshNormalMaterial.prototype = Object.create( Material.prototype ); + MeshNormalMaterial.prototype.constructor = MeshNormalMaterial; + + MeshNormalMaterial.prototype.isMeshNormalMaterial = true; + + MeshNormalMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * map: new THREE.Texture( ), + * + * lightMap: new THREE.Texture( ), + * lightMapIntensity: + * + * aoMap: new THREE.Texture( ), + * aoMapIntensity: + * + * emissive: , + * emissiveIntensity: + * emissiveMap: new THREE.Texture( ), + * + * specularMap: new THREE.Texture( ), + * + * alphaMap: new THREE.Texture( ), + * + * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ), + * combine: THREE.Multiply, + * reflectivity: , + * refractionRatio: , + * + * wireframe: , + * wireframeLinewidth: , + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshLambertMaterial( parameters ) { + + Material.call( this ); + + this.type = 'MeshLambertMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshLambertMaterial.prototype = Object.create( Material.prototype ); + MeshLambertMaterial.prototype.constructor = MeshLambertMaterial; + + MeshLambertMaterial.prototype.isMeshLambertMaterial = true; + + MeshLambertMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * + * parameters = { + * color: , + * opacity: , + * + * matcap: new THREE.Texture( ), + * + * map: new THREE.Texture( ), + * + * bumpMap: new THREE.Texture( ), + * bumpScale: , + * + * normalMap: new THREE.Texture( ), + * normalMapType: THREE.TangentSpaceNormalMap, + * normalScale: , + * + * displacementMap: new THREE.Texture( ), + * displacementScale: , + * displacementBias: , + * + * alphaMap: new THREE.Texture( ), + * + * skinning: , + * morphTargets: , + * morphNormals: + * } + */ + + function MeshMatcapMaterial( parameters ) { + + Material.call( this ); + + this.defines = { 'MATCAP': '' }; + + this.type = 'MeshMatcapMaterial'; + + this.color = new Color( 0xffffff ); // diffuse + + this.matcap = null; + + this.map = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.alphaMap = null; + + this.skinning = false; + this.morphTargets = false; + this.morphNormals = false; + + this.setValues( parameters ); + + } + + MeshMatcapMaterial.prototype = Object.create( Material.prototype ); + MeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial; + + MeshMatcapMaterial.prototype.isMeshMatcapMaterial = true; + + MeshMatcapMaterial.prototype.copy = function ( source ) { + + Material.prototype.copy.call( this, source ); + + this.defines = { 'MATCAP': '' }; + + this.color.copy( source.color ); + + this.matcap = source.matcap; + + this.map = source.map; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.alphaMap = source.alphaMap; + + this.skinning = source.skinning; + this.morphTargets = source.morphTargets; + this.morphNormals = source.morphNormals; + + return this; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * color: , + * opacity: , + * + * linewidth: , + * + * scale: , + * dashSize: , + * gapSize: + * } + */ + + function LineDashedMaterial( parameters ) { + + LineBasicMaterial.call( this ); + + this.type = 'LineDashedMaterial'; + + this.scale = 1; + this.dashSize = 3; + this.gapSize = 1; + + this.setValues( parameters ); + + } + + LineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype ); + LineDashedMaterial.prototype.constructor = LineDashedMaterial; + + LineDashedMaterial.prototype.isLineDashedMaterial = true; + + LineDashedMaterial.prototype.copy = function ( source ) { + + LineBasicMaterial.prototype.copy.call( this, source ); + + this.scale = source.scale; + this.dashSize = source.dashSize; + this.gapSize = source.gapSize; + + return this; + + }; + + + + var Materials = /*#__PURE__*/Object.freeze({ + ShadowMaterial: ShadowMaterial, + SpriteMaterial: SpriteMaterial, + RawShaderMaterial: RawShaderMaterial, + ShaderMaterial: ShaderMaterial, + PointsMaterial: PointsMaterial, + MeshPhysicalMaterial: MeshPhysicalMaterial, + MeshStandardMaterial: MeshStandardMaterial, + MeshPhongMaterial: MeshPhongMaterial, + MeshToonMaterial: MeshToonMaterial, + MeshNormalMaterial: MeshNormalMaterial, + MeshLambertMaterial: MeshLambertMaterial, + MeshDepthMaterial: MeshDepthMaterial, + MeshDistanceMaterial: MeshDistanceMaterial, + MeshBasicMaterial: MeshBasicMaterial, + MeshMatcapMaterial: MeshMatcapMaterial, + LineDashedMaterial: LineDashedMaterial, + LineBasicMaterial: LineBasicMaterial, + Material: Material + }); + + /** + * @author tschw + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + */ + + var AnimationUtils = { + + // same as Array.prototype.slice, but also works on typed arrays + arraySlice: function ( array, from, to ) { + + if ( AnimationUtils.isTypedArray( array ) ) { + + // in ios9 array.subarray(from, undefined) will return empty array + // but array.subarray(from) or array.subarray(from, len) is correct + return new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) ); + + } + + return array.slice( from, to ); + + }, + + // converts an array to a specific type + convertArray: function ( array, type, forceClone ) { + + if ( ! array || // let 'undefined' and 'null' pass + ! forceClone && array.constructor === type ) { return array; } + + if ( typeof type.BYTES_PER_ELEMENT === 'number' ) { + + return new type( array ); // create typed array + + } + + return Array.prototype.slice.call( array ); // create Array + + }, + + isTypedArray: function ( object ) { + + return ArrayBuffer.isView( object ) && + ! ( object instanceof DataView ); + + }, + + // returns an array by which times and values can be sorted + getKeyframeOrder: function ( times ) { + + function compareTime( i, j ) { + + return times[ i ] - times[ j ]; + + } + + var n = times.length; + var result = new Array( n ); + for ( var i = 0; i !== n; ++ i ) { result[ i ] = i; } + + result.sort( compareTime ); + + return result; + + }, + + // uses the array previously returned by 'getKeyframeOrder' to sort data + sortedArray: function ( values, stride, order ) { + + var nValues = values.length; + var result = new values.constructor( nValues ); + + for ( var i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) { + + var srcOffset = order[ i ] * stride; + + for ( var j = 0; j !== stride; ++ j ) { + + result[ dstOffset ++ ] = values[ srcOffset + j ]; + + } + + } + + return result; + + }, + + // function for parsing AOS keyframe formats + flattenJSON: function ( jsonKeys, times, values, valuePropertyName ) { + + var i = 1, key = jsonKeys[ 0 ]; + + while ( key !== undefined && key[ valuePropertyName ] === undefined ) { + + key = jsonKeys[ i ++ ]; + + } + + if ( key === undefined ) { return; } // no data + + var value = key[ valuePropertyName ]; + if ( value === undefined ) { return; } // no data + + if ( Array.isArray( value ) ) { + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push.apply( values, value ); // push all elements + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else if ( value.toArray !== undefined ) { + + // ...assume THREE.Math-ish + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + value.toArray( values, values.length ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } else { + + // otherwise push as-is + + do { + + value = key[ valuePropertyName ]; + + if ( value !== undefined ) { + + times.push( key.time ); + values.push( value ); + + } + + key = jsonKeys[ i ++ ]; + + } while ( key !== undefined ); + + } + + } + + }; + + /** + * Abstract base class of interpolants over parametric samples. + * + * The parameter domain is one dimensional, typically the time or a path + * along a curve defined by the data. + * + * The sample values can have any dimensionality and derived classes may + * apply special interpretations to the data. + * + * This class provides the interval seek in a Template Method, deferring + * the actual interpolation to derived classes. + * + * Time complexity is O(1) for linear access crossing at most two points + * and O(log N) for random access, where N is the number of positions. + * + * References: + * + * http://www.oodesign.com/template-method-pattern.html + * + * @author tschw + */ + + function Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + this.parameterPositions = parameterPositions; + this._cachedIndex = 0; + + this.resultBuffer = resultBuffer !== undefined ? + resultBuffer : new sampleValues.constructor( sampleSize ); + this.sampleValues = sampleValues; + this.valueSize = sampleSize; + + } + + Object.assign( Interpolant.prototype, { + + evaluate: function ( t ) { + + var pp = this.parameterPositions, + i1 = this._cachedIndex, + + t1 = pp[ i1 ], + t0 = pp[ i1 - 1 ]; + + validate_interval: { + + seek: { + + var right; + + linear_scan: { + + //- See http://jsperf.com/comparison-to-undefined/3 + //- slower code: + //- + //- if ( t >= t1 || t1 === undefined ) { + forward_scan: if ( ! ( t < t1 ) ) { + + for ( var giveUpAt = i1 + 2; ; ) { + + if ( t1 === undefined ) { + + if ( t < t0 ) { break forward_scan; } + + // after end + + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_( i1 - 1, t, t0 ); + + } + + if ( i1 === giveUpAt ) { break; } // this loop + + t0 = t1; + t1 = pp[ ++ i1 ]; + + if ( t < t1 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the right side of the index + right = pp.length; + break linear_scan; + + } + + //- slower code: + //- if ( t < t0 || t0 === undefined ) { + if ( ! ( t >= t0 ) ) { + + // looping? + + var t1global = pp[ 1 ]; + + if ( t < t1global ) { + + i1 = 2; // + 1, using the scan for the details + t0 = t1global; + + } + + // linear reverse scan + + for ( var giveUpAt = i1 - 2; ; ) { + + if ( t0 === undefined ) { + + // before start + + this._cachedIndex = 0; + return this.beforeStart_( 0, t, t1 ); + + } + + if ( i1 === giveUpAt ) { break; } // this loop + + t1 = t0; + t0 = pp[ -- i1 - 1 ]; + + if ( t >= t0 ) { + + // we have arrived at the sought interval + break seek; + + } + + } + + // prepare binary search on the left side of the index + right = i1; + i1 = 0; + break linear_scan; + + } + + // the interval is valid + + break validate_interval; + + } // linear scan + + // binary search + + while ( i1 < right ) { + + var mid = ( i1 + right ) >>> 1; + + if ( t < pp[ mid ] ) { + + right = mid; + + } else { + + i1 = mid + 1; + + } + + } + + t1 = pp[ i1 ]; + t0 = pp[ i1 - 1 ]; + + // check boundary cases, again + + if ( t0 === undefined ) { + + this._cachedIndex = 0; + return this.beforeStart_( 0, t, t1 ); + + } + + if ( t1 === undefined ) { + + i1 = pp.length; + this._cachedIndex = i1; + return this.afterEnd_( i1 - 1, t0, t ); + + } + + } // seek + + this._cachedIndex = i1; + + this.intervalChanged_( i1, t0, t1 ); + + } // validate_interval + + return this.interpolate_( i1, t0, t, t1 ); + + }, + + settings: null, // optional, subclass-specific settings structure + // Note: The indirection allows central control of many interpolants. + + // --- Protected interface + + DefaultSettings_: {}, + + getSettings_: function () { + + return this.settings || this.DefaultSettings_; + + }, + + copySampleValue_: function ( index ) { + + // copies a sample value to the result buffer + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + offset = index * stride; + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = values[ offset + i ]; + + } + + return result; + + }, + + // Template methods for derived classes: + + interpolate_: function ( /* i1, t0, t, t1 */ ) { + + throw new Error( 'call to abstract method' ); + // implementations shall return this.resultBuffer + + }, + + intervalChanged_: function ( /* i1, t0, t1 */ ) { + + // empty + + } + + } ); + + //!\ DECLARE ALIAS AFTER assign prototype ! + Object.assign( Interpolant.prototype, { + + //( 0, t, t0 ), returns this.resultBuffer + beforeStart_: Interpolant.prototype.copySampleValue_, + + //( N-1, tN-1, t ), returns this.resultBuffer + afterEnd_: Interpolant.prototype.copySampleValue_, + + } ); + + /** + * Fast and simple cubic spline interpolant. + * + * It was derived from a Hermitian construction setting the first derivative + * at each sample position to the linear slope between neighboring positions + * over their parameter interval. + * + * @author tschw + */ + + function CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + this._weightPrev = - 0; + this._offsetPrev = - 0; + this._weightNext = - 0; + this._offsetNext = - 0; + + } + + CubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: CubicInterpolant, + + DefaultSettings_: { + + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + + }, + + intervalChanged_: function ( i1, t0, t1 ) { + + var pp = this.parameterPositions, + iPrev = i1 - 2, + iNext = i1 + 1, + + tPrev = pp[ iPrev ], + tNext = pp[ iNext ]; + + if ( tPrev === undefined ) { + + switch ( this.getSettings_().endingStart ) { + + case ZeroSlopeEnding: + + // f'(t0) = 0 + iPrev = i1; + tPrev = 2 * t0 - t1; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iPrev = pp.length - 2; + tPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(t0) = 0 a.k.a. Natural Spline + iPrev = i1; + tPrev = t1; + + } + + } + + if ( tNext === undefined ) { + + switch ( this.getSettings_().endingEnd ) { + + case ZeroSlopeEnding: + + // f'(tN) = 0 + iNext = i1; + tNext = 2 * t1 - t0; + + break; + + case WrapAroundEnding: + + // use the other end of the curve + iNext = 1; + tNext = t1 + pp[ 1 ] - pp[ 0 ]; + + break; + + default: // ZeroCurvatureEnding + + // f''(tN) = 0, a.k.a. Natural Spline + iNext = i1 - 1; + tNext = t0; + + } + + } + + var halfDt = ( t1 - t0 ) * 0.5, + stride = this.valueSize; + + this._weightPrev = halfDt / ( t0 - tPrev ); + this._weightNext = halfDt / ( tNext - t1 ); + this._offsetPrev = iPrev * stride; + this._offsetNext = iNext * stride; + + }, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + o1 = i1 * stride, o0 = o1 - stride, + oP = this._offsetPrev, oN = this._offsetNext, + wP = this._weightPrev, wN = this._weightNext, + + p = ( t - t0 ) / ( t1 - t0 ), + pp = p * p, + ppp = pp * p; + + // evaluate polynomials + + var sP = - wP * ppp + 2 * wP * pp - wP * p; + var s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1; + var s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p; + var sN = wN * ppp - wN * pp; + + // combine data linearly + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = + sP * values[ oP + i ] + + s0 * values[ o0 + i ] + + s1 * values[ o1 + i ] + + sN * values[ oN + i ]; + + } + + return result; + + } + + } ); + + /** + * @author tschw + */ + + function LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + LinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: LinearInterpolant, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + offset1 = i1 * stride, + offset0 = offset1 - stride, + + weight1 = ( t - t0 ) / ( t1 - t0 ), + weight0 = 1 - weight1; + + for ( var i = 0; i !== stride; ++ i ) { + + result[ i ] = + values[ offset0 + i ] * weight0 + + values[ offset1 + i ] * weight1; + + } + + return result; + + } + + } ); + + /** + * + * Interpolant that evaluates to the sample value at the position preceeding + * the parameter. + * + * @author tschw + */ + + function DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + DiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: DiscreteInterpolant, + + interpolate_: function ( i1 /*, t0, t, t1 */ ) { + + return this.copySampleValue_( i1 - 1 ); + + } + + } ); + + /** + * + * A timed sequence of keyframes for a specific property. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function KeyframeTrack( name, times, values, interpolation ) { + + if ( name === undefined ) { throw new Error( 'THREE.KeyframeTrack: track name is undefined' ); } + if ( times === undefined || times.length === 0 ) { throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name ); } + + this.name = name; + + this.times = AnimationUtils.convertArray( times, this.TimeBufferType ); + this.values = AnimationUtils.convertArray( values, this.ValueBufferType ); + + this.setInterpolation( interpolation || this.DefaultInterpolation ); + + } + + // Static methods + + Object.assign( KeyframeTrack, { + + // Serialization (in static context, because of constructor invocation + // and automatic invocation of .toJSON): + + toJSON: function ( track ) { + + var trackType = track.constructor; + + var json; + + // derived classes can define a static toJSON method + if ( trackType.toJSON !== undefined ) { + + json = trackType.toJSON( track ); + + } else { + + // by default, we assume the data can be serialized as-is + json = { + + 'name': track.name, + 'times': AnimationUtils.convertArray( track.times, Array ), + 'values': AnimationUtils.convertArray( track.values, Array ) + + }; + + var interpolation = track.getInterpolation(); + + if ( interpolation !== track.DefaultInterpolation ) { + + json.interpolation = interpolation; + + } + + } + + json.type = track.ValueTypeName; // mandatory + + return json; + + } + + } ); + + Object.assign( KeyframeTrack.prototype, { + + constructor: KeyframeTrack, + + TimeBufferType: Float32Array, + + ValueBufferType: Float32Array, + + DefaultInterpolation: InterpolateLinear, + + InterpolantFactoryMethodDiscrete: function ( result ) { + + return new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodLinear: function ( result ) { + + return new LinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodSmooth: function ( result ) { + + return new CubicInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + setInterpolation: function ( interpolation ) { + + var factoryMethod; + + switch ( interpolation ) { + + case InterpolateDiscrete: + + factoryMethod = this.InterpolantFactoryMethodDiscrete; + + break; + + case InterpolateLinear: + + factoryMethod = this.InterpolantFactoryMethodLinear; + + break; + + case InterpolateSmooth: + + factoryMethod = this.InterpolantFactoryMethodSmooth; + + break; + + } + + if ( factoryMethod === undefined ) { + + var message = "unsupported interpolation for " + + this.ValueTypeName + " keyframe track named " + this.name; + + if ( this.createInterpolant === undefined ) { + + // fall back to default, unless the default itself is messed up + if ( interpolation !== this.DefaultInterpolation ) { + + this.setInterpolation( this.DefaultInterpolation ); + + } else { + + throw new Error( message ); // fatal, in this case + + } + + } + + console.warn( 'THREE.KeyframeTrack:', message ); + return this; + + } + + this.createInterpolant = factoryMethod; + + return this; + + }, + + getInterpolation: function () { + + switch ( this.createInterpolant ) { + + case this.InterpolantFactoryMethodDiscrete: + + return InterpolateDiscrete; + + case this.InterpolantFactoryMethodLinear: + + return InterpolateLinear; + + case this.InterpolantFactoryMethodSmooth: + + return InterpolateSmooth; + + } + + }, + + getValueSize: function () { + + return this.values.length / this.times.length; + + }, + + // move all keyframes either forwards or backwards in time + shift: function ( timeOffset ) { + + if ( timeOffset !== 0.0 ) { + + var times = this.times; + + for ( var i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] += timeOffset; + + } + + } + + return this; + + }, + + // scale all keyframe times by a factor (useful for frame <-> seconds conversions) + scale: function ( timeScale ) { + + if ( timeScale !== 1.0 ) { + + var times = this.times; + + for ( var i = 0, n = times.length; i !== n; ++ i ) { + + times[ i ] *= timeScale; + + } + + } + + return this; + + }, + + // removes keyframes before and after animation without changing any values within the range [startTime, endTime]. + // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values + trim: function ( startTime, endTime ) { + + var times = this.times, + nKeys = times.length, + from = 0, + to = nKeys - 1; + + while ( from !== nKeys && times[ from ] < startTime ) { + + ++ from; + + } + + while ( to !== - 1 && times[ to ] > endTime ) { + + -- to; + + } + + ++ to; // inclusive -> exclusive bound + + if ( from !== 0 || to !== nKeys ) { + + // empty tracks are forbidden, so keep at least one keyframe + if ( from >= to ) { to = Math.max( to, 1 ), from = to - 1; } + + var stride = this.getValueSize(); + this.times = AnimationUtils.arraySlice( times, from, to ); + this.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride ); + + } + + return this; + + }, + + // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable + validate: function () { + + var valid = true; + + var valueSize = this.getValueSize(); + if ( valueSize - Math.floor( valueSize ) !== 0 ) { + + console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this ); + valid = false; + + } + + var times = this.times, + values = this.values, + + nKeys = times.length; + + if ( nKeys === 0 ) { + + console.error( 'THREE.KeyframeTrack: Track is empty.', this ); + valid = false; + + } + + var prevTime = null; + + for ( var i = 0; i !== nKeys; i ++ ) { + + var currTime = times[ i ]; + + if ( typeof currTime === 'number' && isNaN( currTime ) ) { + + console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime ); + valid = false; + break; + + } + + if ( prevTime !== null && prevTime > currTime ) { + + console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime ); + valid = false; + break; + + } + + prevTime = currTime; + + } + + if ( values !== undefined ) { + + if ( AnimationUtils.isTypedArray( values ) ) { + + for ( var i = 0, n = values.length; i !== n; ++ i ) { + + var value = values[ i ]; + + if ( isNaN( value ) ) { + + console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value ); + valid = false; + break; + + } + + } + + } + + } + + return valid; + + }, + + // removes equivalent sequential keys as common in morph target sequences + // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0) + optimize: function () { + + var times = this.times, + values = this.values, + stride = this.getValueSize(), + + smoothInterpolation = this.getInterpolation() === InterpolateSmooth, + + writeIndex = 1, + lastIndex = times.length - 1; + + for ( var i = 1; i < lastIndex; ++ i ) { + + var keep = false; + + var time = times[ i ]; + var timeNext = times[ i + 1 ]; + + // remove adjacent keyframes scheduled at the same time + + if ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) { + + if ( ! smoothInterpolation ) { + + // remove unnecessary keyframes same as their neighbors + + var offset = i * stride, + offsetP = offset - stride, + offsetN = offset + stride; + + for ( var j = 0; j !== stride; ++ j ) { + + var value = values[ offset + j ]; + + if ( value !== values[ offsetP + j ] || + value !== values[ offsetN + j ] ) { + + keep = true; + break; + + } + + } + + } else { + + keep = true; + + } + + } + + // in-place compaction + + if ( keep ) { + + if ( i !== writeIndex ) { + + times[ writeIndex ] = times[ i ]; + + var readOffset = i * stride, + writeOffset = writeIndex * stride; + + for ( var j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + } + + ++ writeIndex; + + } + + } + + // flush last keyframe (compaction looks ahead) + + if ( lastIndex > 0 ) { + + times[ writeIndex ] = times[ lastIndex ]; + + for ( var readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) { + + values[ writeOffset + j ] = values[ readOffset + j ]; + + } + + ++ writeIndex; + + } + + if ( writeIndex !== times.length ) { + + this.times = AnimationUtils.arraySlice( times, 0, writeIndex ); + this.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride ); + + } + + return this; + + }, + + clone: function () { + + var times = AnimationUtils.arraySlice( this.times, 0 ); + var values = AnimationUtils.arraySlice( this.values, 0 ); + + var TypedKeyframeTrack = this.constructor; + var track = new TypedKeyframeTrack( this.name, times, values ); + + // Interpolant argument to constructor is not saved, so copy the factory method directly. + track.createInterpolant = this.createInterpolant; + + return track; + + } + + } ); + + /** + * + * A Track of Boolean keyframe values. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function BooleanKeyframeTrack( name, times, values ) { + + KeyframeTrack.call( this, name, times, values ); + + } + + BooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: BooleanKeyframeTrack, + + ValueTypeName: 'bool', + ValueBufferType: Array, + + DefaultInterpolation: InterpolateDiscrete, + + InterpolantFactoryMethodLinear: undefined, + InterpolantFactoryMethodSmooth: undefined + + // Note: Actually this track could have a optimized / compressed + // representation of a single value and a custom interpolant that + // computes "firstValue ^ isOdd( index )". + + } ); + + /** + * + * A Track of keyframe values that represent color. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function ColorKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + ColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: ColorKeyframeTrack, + + ValueTypeName: 'color' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + // Note: Very basic implementation and nothing special yet. + // However, this is the place for color space parameterization. + + } ); + + /** + * + * A Track of numeric keyframe values. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function NumberKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + NumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: NumberKeyframeTrack, + + ValueTypeName: 'number' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + } ); + + /** + * Spherical linear unit quaternion interpolant. + * + * @author tschw + */ + + function QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) { + + Interpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer ); + + } + + QuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), { + + constructor: QuaternionLinearInterpolant, + + interpolate_: function ( i1, t0, t, t1 ) { + + var result = this.resultBuffer, + values = this.sampleValues, + stride = this.valueSize, + + offset = i1 * stride, + + alpha = ( t - t0 ) / ( t1 - t0 ); + + for ( var end = offset + stride; offset !== end; offset += 4 ) { + + Quaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha ); + + } + + return result; + + } + + } ); + + /** + * + * A Track of quaternion keyframe values. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function QuaternionKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + QuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: QuaternionKeyframeTrack, + + ValueTypeName: 'quaternion', + + // ValueBufferType is inherited + + DefaultInterpolation: InterpolateLinear, + + InterpolantFactoryMethodLinear: function ( result ) { + + return new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result ); + + }, + + InterpolantFactoryMethodSmooth: undefined // not yet implemented + + } ); + + /** + * + * A Track that interpolates Strings + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function StringKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + StringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: StringKeyframeTrack, + + ValueTypeName: 'string', + ValueBufferType: Array, + + DefaultInterpolation: InterpolateDiscrete, + + InterpolantFactoryMethodLinear: undefined, + + InterpolantFactoryMethodSmooth: undefined + + } ); + + /** + * + * A Track of vectored keyframe values. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function VectorKeyframeTrack( name, times, values, interpolation ) { + + KeyframeTrack.call( this, name, times, values, interpolation ); + + } + + VectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), { + + constructor: VectorKeyframeTrack, + + ValueTypeName: 'vector' + + // ValueBufferType is inherited + + // DefaultInterpolation is inherited + + } ); + + /** + * + * Reusable set of Tracks that represent an animation. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + */ + + function AnimationClip( name, duration, tracks ) { + + this.name = name; + this.tracks = tracks; + this.duration = ( duration !== undefined ) ? duration : - 1; + + this.uuid = _Math.generateUUID(); + + // this means it should figure out its duration by scanning the tracks + if ( this.duration < 0 ) { + + this.resetDuration(); + + } + + } + + function getTrackTypeForValueTypeName( typeName ) { + + switch ( typeName.toLowerCase() ) { + + case 'scalar': + case 'double': + case 'float': + case 'number': + case 'integer': + + return NumberKeyframeTrack; + + case 'vector': + case 'vector2': + case 'vector3': + case 'vector4': + + return VectorKeyframeTrack; + + case 'color': + + return ColorKeyframeTrack; + + case 'quaternion': + + return QuaternionKeyframeTrack; + + case 'bool': + case 'boolean': + + return BooleanKeyframeTrack; + + case 'string': + + return StringKeyframeTrack; + + } + + throw new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName ); + + } + + function parseKeyframeTrack( json ) { + + if ( json.type === undefined ) { + + throw new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' ); + + } + + var trackType = getTrackTypeForValueTypeName( json.type ); + + if ( json.times === undefined ) { + + var times = [], values = []; + + AnimationUtils.flattenJSON( json.keys, times, values, 'value' ); + + json.times = times; + json.values = values; + + } + + // derived classes can define a static parse method + if ( trackType.parse !== undefined ) { + + return trackType.parse( json ); + + } else { + + // by default, we assume a constructor compatible with the base + return new trackType( json.name, json.times, json.values, json.interpolation ); + + } + + } + + Object.assign( AnimationClip, { + + parse: function ( json ) { + + var tracks = [], + jsonTracks = json.tracks, + frameTime = 1.0 / ( json.fps || 1.0 ); + + for ( var i = 0, n = jsonTracks.length; i !== n; ++ i ) { + + tracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) ); + + } + + return new AnimationClip( json.name, json.duration, tracks ); + + }, + + toJSON: function ( clip ) { + + var tracks = [], + clipTracks = clip.tracks; + + var json = { + + 'name': clip.name, + 'duration': clip.duration, + 'tracks': tracks, + 'uuid': clip.uuid + + }; + + for ( var i = 0, n = clipTracks.length; i !== n; ++ i ) { + + tracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) ); + + } + + return json; + + }, + + CreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) { + + var numMorphTargets = morphTargetSequence.length; + var tracks = []; + + for ( var i = 0; i < numMorphTargets; i ++ ) { + + var times = []; + var values = []; + + times.push( + ( i + numMorphTargets - 1 ) % numMorphTargets, + i, + ( i + 1 ) % numMorphTargets ); + + values.push( 0, 1, 0 ); + + var order = AnimationUtils.getKeyframeOrder( times ); + times = AnimationUtils.sortedArray( times, 1, order ); + values = AnimationUtils.sortedArray( values, 1, order ); + + // if there is a key at the first frame, duplicate it as the + // last frame as well for perfect loop. + if ( ! noLoop && times[ 0 ] === 0 ) { + + times.push( numMorphTargets ); + values.push( values[ 0 ] ); + + } + + tracks.push( + new NumberKeyframeTrack( + '.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']', + times, values + ).scale( 1.0 / fps ) ); + + } + + return new AnimationClip( name, - 1, tracks ); + + }, + + findByName: function ( objectOrClipArray, name ) { + + var clipArray = objectOrClipArray; + + if ( ! Array.isArray( objectOrClipArray ) ) { + + var o = objectOrClipArray; + clipArray = o.geometry && o.geometry.animations || o.animations; + + } + + for ( var i = 0; i < clipArray.length; i ++ ) { + + if ( clipArray[ i ].name === name ) { + + return clipArray[ i ]; + + } + + } + + return null; + + }, + + CreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) { + + var animationToMorphTargets = {}; + + // tested with https://regex101.com/ on trick sequences + // such flamingo_flyA_003, flamingo_run1_003, crdeath0059 + var pattern = /^([\w-]*?)([\d]+)$/; + + // sort morph target names into animation groups based + // patterns like Walk_001, Walk_002, Run_001, Run_002 + for ( var i = 0, il = morphTargets.length; i < il; i ++ ) { + + var morphTarget = morphTargets[ i ]; + var parts = morphTarget.name.match( pattern ); + + if ( parts && parts.length > 1 ) { + + var name = parts[ 1 ]; + + var animationMorphTargets = animationToMorphTargets[ name ]; + if ( ! animationMorphTargets ) { + + animationToMorphTargets[ name ] = animationMorphTargets = []; + + } + + animationMorphTargets.push( morphTarget ); + + } + + } + + var clips = []; + + for ( var name in animationToMorphTargets ) { + + clips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) ); + + } + + return clips; + + }, + + // parse the animation.hierarchy format + parseAnimation: function ( animation, bones ) { + + if ( ! animation ) { + + console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' ); + return null; + + } + + var addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) { + + // only return track if there are actually keys. + if ( animationKeys.length !== 0 ) { + + var times = []; + var values = []; + + AnimationUtils.flattenJSON( animationKeys, times, values, propertyName ); + + // empty keys are filtered out, so check again + if ( times.length !== 0 ) { + + destTracks.push( new trackType( trackName, times, values ) ); + + } + + } + + }; + + var tracks = []; + + var clipName = animation.name || 'default'; + // automatic length determination in AnimationClip. + var duration = animation.length || - 1; + var fps = animation.fps || 30; + + var hierarchyTracks = animation.hierarchy || []; + + for ( var h = 0; h < hierarchyTracks.length; h ++ ) { + + var animationKeys = hierarchyTracks[ h ].keys; + + // skip empty tracks + if ( ! animationKeys || animationKeys.length === 0 ) { continue; } + + // process morph targets + if ( animationKeys[ 0 ].morphTargets ) { + + // figure out all morph targets used in this track + var morphTargetNames = {}; + + for ( var k = 0; k < animationKeys.length; k ++ ) { + + if ( animationKeys[ k ].morphTargets ) { + + for ( var m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) { + + morphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1; + + } + + } + + } + + // create a track for each morph target with all zero + // morphTargetInfluences except for the keys in which + // the morphTarget is named. + for ( var morphTargetName in morphTargetNames ) { + + var times = []; + var values = []; + + for ( var m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) { + + var animationKey = animationKeys[ k ]; + + times.push( animationKey.time ); + values.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 ); + + } + + tracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) ); + + } + + duration = morphTargetNames.length * ( fps || 1.0 ); + + } else { + + // ...assume skeletal animation + + var boneName = '.bones[' + bones[ h ].name + ']'; + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.position', + animationKeys, 'pos', tracks ); + + addNonemptyTrack( + QuaternionKeyframeTrack, boneName + '.quaternion', + animationKeys, 'rot', tracks ); + + addNonemptyTrack( + VectorKeyframeTrack, boneName + '.scale', + animationKeys, 'scl', tracks ); + + } + + } + + if ( tracks.length === 0 ) { + + return null; + + } + + var clip = new AnimationClip( clipName, duration, tracks ); + + return clip; + + } + + } ); + + Object.assign( AnimationClip.prototype, { + + resetDuration: function () { + + var tracks = this.tracks, duration = 0; + + for ( var i = 0, n = tracks.length; i !== n; ++ i ) { + + var track = this.tracks[ i ]; + + duration = Math.max( duration, track.times[ track.times.length - 1 ] ); + + } + + this.duration = duration; + + return this; + + }, + + trim: function () { + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].trim( 0, this.duration ); + + } + + return this; + + }, + + validate: function () { + + var valid = true; + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + valid = valid && this.tracks[ i ].validate(); + + } + + return valid; + + }, + + optimize: function () { + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + this.tracks[ i ].optimize(); + + } + + return this; + + }, + + + clone: function () { + + var tracks = []; + + for ( var i = 0; i < this.tracks.length; i ++ ) { + + tracks.push( this.tracks[ i ].clone() ); + + } + + return new AnimationClip( this.name, this.duration, tracks ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var Cache = { + + enabled: false, + + files: {}, + + add: function ( key, file ) { + + if ( this.enabled === false ) { return; } + + // console.log( 'THREE.Cache', 'Adding key:', key ); + + this.files[ key ] = file; + + }, + + get: function ( key ) { + + if ( this.enabled === false ) { return; } + + // console.log( 'THREE.Cache', 'Checking key:', key ); + + return this.files[ key ]; + + }, + + remove: function ( key ) { + + delete this.files[ key ]; + + }, + + clear: function () { + + this.files = {}; + + } + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LoadingManager( onLoad, onProgress, onError ) { + + var scope = this; + + var isLoading = false; + var itemsLoaded = 0; + var itemsTotal = 0; + var urlModifier = undefined; + var handlers = []; + + // Refer to #5689 for the reason why we don't set .onStart + // in the constructor + + this.onStart = undefined; + this.onLoad = onLoad; + this.onProgress = onProgress; + this.onError = onError; + + this.itemStart = function ( url ) { + + itemsTotal ++; + + if ( isLoading === false ) { + + if ( scope.onStart !== undefined ) { + + scope.onStart( url, itemsLoaded, itemsTotal ); + + } + + } + + isLoading = true; + + }; + + this.itemEnd = function ( url ) { + + itemsLoaded ++; + + if ( scope.onProgress !== undefined ) { + + scope.onProgress( url, itemsLoaded, itemsTotal ); + + } + + if ( itemsLoaded === itemsTotal ) { + + isLoading = false; + + if ( scope.onLoad !== undefined ) { + + scope.onLoad(); + + } + + } + + }; + + this.itemError = function ( url ) { + + if ( scope.onError !== undefined ) { + + scope.onError( url ); + + } + + }; + + this.resolveURL = function ( url ) { + + if ( urlModifier ) { + + return urlModifier( url ); + + } + + return url; + + }; + + this.setURLModifier = function ( transform ) { + + urlModifier = transform; + + return this; + + }; + + this.addHandler = function ( regex, loader ) { + + handlers.push( regex, loader ); + + return this; + + }; + + this.removeHandler = function ( regex ) { + + var index = handlers.indexOf( regex ); + + if ( index !== - 1 ) { + + handlers.splice( index, 2 ); + + } + + return this; + + }; + + this.getHandler = function ( file ) { + + for ( var i = 0, l = handlers.length; i < l; i += 2 ) { + + var regex = handlers[ i ]; + var loader = handlers[ i + 1 ]; + + if ( regex.test( file ) ) { + + return loader; + + } + + } + + return null; + + }; + + } + + var DefaultLoadingManager = new LoadingManager(); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Loader( manager ) { + + this.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager; + + this.crossOrigin = 'anonymous'; + this.path = ''; + this.resourcePath = ''; + + } + + Object.assign( Loader.prototype, { + + load: function ( /* url, onLoad, onProgress, onError */ ) {}, + + parse: function ( /* data */ ) {}, + + setCrossOrigin: function ( crossOrigin ) { + + this.crossOrigin = crossOrigin; + return this; + + }, + + setPath: function ( path ) { + + this.path = path; + return this; + + }, + + setResourcePath: function ( resourcePath ) { + + this.resourcePath = resourcePath; + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var loading = {}; + + function FileLoader( manager ) { + + Loader.call( this, manager ); + + } + + FileLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: FileLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) { url = ''; } + + if ( this.path !== undefined ) { url = this.path + url; } + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) { onLoad( cached ); } + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + // Check if request is duplicate + + if ( loading[ url ] !== undefined ) { + + loading[ url ].push( { + + onLoad: onLoad, + onProgress: onProgress, + onError: onError + + } ); + + return; + + } + + // Check for data: URI + var dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/; + var dataUriRegexResult = url.match( dataUriRegex ); + + // Safari can not handle Data URIs through XMLHttpRequest so process manually + if ( dataUriRegexResult ) { + + var mimeType = dataUriRegexResult[ 1 ]; + var isBase64 = !! dataUriRegexResult[ 2 ]; + var data = dataUriRegexResult[ 3 ]; + + data = decodeURIComponent( data ); + + if ( isBase64 ) { data = atob( data ); } + + try { + + var response; + var responseType = ( this.responseType || '' ).toLowerCase(); + + switch ( responseType ) { + + case 'arraybuffer': + case 'blob': + + var view = new Uint8Array( data.length ); + + for ( var i = 0; i < data.length; i ++ ) { + + view[ i ] = data.charCodeAt( i ); + + } + + if ( responseType === 'blob' ) { + + response = new Blob( [ view.buffer ], { type: mimeType } ); + + } else { + + response = view.buffer; + + } + + break; + + case 'document': + + var parser = new DOMParser(); + response = parser.parseFromString( data, mimeType ); + + break; + + case 'json': + + response = JSON.parse( data ); + + break; + + default: // 'text' or other + + response = data; + + break; + + } + + // Wait for next browser tick like standard XMLHttpRequest event dispatching does + setTimeout( function () { + + if ( onLoad ) { onLoad( response ); } + + scope.manager.itemEnd( url ); + + }, 0 ); + + } catch ( error ) { + + // Wait for next browser tick like standard XMLHttpRequest event dispatching does + setTimeout( function () { + + if ( onError ) { onError( error ); } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }, 0 ); + + } + + } else { + + // Initialise array for duplicate requests + + loading[ url ] = []; + + loading[ url ].push( { + + onLoad: onLoad, + onProgress: onProgress, + onError: onError + + } ); + + var request = new XMLHttpRequest(); + + request.open( 'GET', url, true ); + + request.addEventListener( 'load', function ( event ) { + + var response = this.response; + + Cache.add( url, response ); + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + if ( this.status === 200 || this.status === 0 ) { + + // Some browsers return HTTP Status 0 when using non-http protocol + // e.g. 'file://' or 'data://'. Handle as success. + + if ( this.status === 0 ) { console.warn( 'THREE.FileLoader: HTTP Status 0 received.' ); } + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onLoad ) { callback.onLoad( response ); } + + } + + scope.manager.itemEnd( url ); + + } else { + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) { callback.onError( event ); } + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } + + }, false ); + + request.addEventListener( 'progress', function ( event ) { + + var callbacks = loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onProgress ) { callback.onProgress( event ); } + + } + + }, false ); + + request.addEventListener( 'error', function ( event ) { + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) { callback.onError( event ); } + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }, false ); + + request.addEventListener( 'abort', function ( event ) { + + var callbacks = loading[ url ]; + + delete loading[ url ]; + + for ( var i = 0, il = callbacks.length; i < il; i ++ ) { + + var callback = callbacks[ i ]; + if ( callback.onError ) { callback.onError( event ); } + + } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + }, false ); + + if ( this.responseType !== undefined ) { request.responseType = this.responseType; } + if ( this.withCredentials !== undefined ) { request.withCredentials = this.withCredentials; } + + if ( request.overrideMimeType ) { request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' ); } + + for ( var header in this.requestHeader ) { + + request.setRequestHeader( header, this.requestHeader[ header ] ); + + } + + request.send( null ); + + } + + scope.manager.itemStart( url ); + + return request; + + }, + + setResponseType: function ( value ) { + + this.responseType = value; + return this; + + }, + + setWithCredentials: function ( value ) { + + this.withCredentials = value; + return this; + + }, + + setMimeType: function ( value ) { + + this.mimeType = value; + return this; + + }, + + setRequestHeader: function ( value ) { + + this.requestHeader = value; + return this; + + } + + } ); + + /** + * @author bhouston / http://clara.io/ + */ + + function AnimationLoader( manager ) { + + Loader.call( this, manager ); + + } + + AnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: AnimationLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var animations = []; + + for ( var i = 0; i < json.length; i ++ ) { + + var clip = AnimationClip.parse( json[ i ] ); + + animations.push( clip ); + + } + + return animations; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * + * Abstract Base class to block based textures loader (dds, pvr, ...) + * + * Sub classes have to implement the parse() method which will be used in load(). + */ + + function CompressedTextureLoader( manager ) { + + Loader.call( this, manager ); + + } + + CompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: CompressedTextureLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var images = []; + + var texture = new CompressedTexture(); + texture.image = images; + + var loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.setResponseType( 'arraybuffer' ); + + function loadTexture( i ) { + + loader.load( url[ i ], function ( buffer ) { + + var texDatas = scope.parse( buffer, true ); + + images[ i ] = { + width: texDatas.width, + height: texDatas.height, + format: texDatas.format, + mipmaps: texDatas.mipmaps + }; + + loaded += 1; + + if ( loaded === 6 ) { + + if ( texDatas.mipmapCount === 1 ) + { texture.minFilter = LinearFilter; } + + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) { onLoad( texture ); } + + } + + }, onProgress, onError ); + + } + + if ( Array.isArray( url ) ) { + + var loaded = 0; + + for ( var i = 0, il = url.length; i < il; ++ i ) { + + loadTexture( i ); + + } + + } else { + + // compressed cubemap texture stored in a single DDS file + + loader.load( url, function ( buffer ) { + + var texDatas = scope.parse( buffer, true ); + + if ( texDatas.isCubemap ) { + + var faces = texDatas.mipmaps.length / texDatas.mipmapCount; + + for ( var f = 0; f < faces; f ++ ) { + + images[ f ] = { mipmaps: [] }; + + for ( var i = 0; i < texDatas.mipmapCount; i ++ ) { + + images[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] ); + images[ f ].format = texDatas.format; + images[ f ].width = texDatas.width; + images[ f ].height = texDatas.height; + + } + + } + + } else { + + texture.image.width = texDatas.width; + texture.image.height = texDatas.height; + texture.mipmaps = texDatas.mipmaps; + + } + + if ( texDatas.mipmapCount === 1 ) { + + texture.minFilter = LinearFilter; + + } + + texture.format = texDatas.format; + texture.needsUpdate = true; + + if ( onLoad ) { onLoad( texture ); } + + }, onProgress, onError ); + + } + + return texture; + + } + + } ); + + /** + * @author Nikos M. / https://github.com/foo123/ + * + * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...) + * + * Sub classes have to implement the parse() method which will be used in load(). + */ + + function DataTextureLoader( manager ) { + + Loader.call( this, manager ); + + } + + DataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: DataTextureLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var texture = new DataTexture(); + + var loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.setPath( this.path ); + loader.load( url, function ( buffer ) { + + var texData = scope.parse( buffer ); + + if ( ! texData ) { return; } + + if ( texData.image !== undefined ) { + + texture.image = texData.image; + + } else if ( texData.data !== undefined ) { + + texture.image.width = texData.width; + texture.image.height = texData.height; + texture.image.data = texData.data; + + } + + texture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping; + texture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping; + + texture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter; + texture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearMipmapLinearFilter; + + texture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1; + + if ( texData.format !== undefined ) { + + texture.format = texData.format; + + } + if ( texData.type !== undefined ) { + + texture.type = texData.type; + + } + + if ( texData.mipmaps !== undefined ) { + + texture.mipmaps = texData.mipmaps; + + } + + if ( texData.mipmapCount === 1 ) { + + texture.minFilter = LinearFilter; + + } + + texture.needsUpdate = true; + + if ( onLoad ) { onLoad( texture, texData ); } + + }, onProgress, onError ); + + + return texture; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ImageLoader( manager ) { + + Loader.call( this, manager ); + + } + + ImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: ImageLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + if ( this.path !== undefined ) { url = this.path + url; } + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) { onLoad( cached ); } + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + var image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' ); + + function onImageLoad() { + + image.removeEventListener( 'load', onImageLoad, false ); + image.removeEventListener( 'error', onImageError, false ); + + Cache.add( url, this ); + + if ( onLoad ) { onLoad( this ); } + + scope.manager.itemEnd( url ); + + } + + function onImageError( event ) { + + image.removeEventListener( 'load', onImageLoad, false ); + image.removeEventListener( 'error', onImageError, false ); + + if ( onError ) { onError( event ); } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } + + image.addEventListener( 'load', onImageLoad, false ); + image.addEventListener( 'error', onImageError, false ); + + if ( url.substr( 0, 5 ) !== 'data:' ) { + + if ( this.crossOrigin !== undefined ) { image.crossOrigin = this.crossOrigin; } + + } + + scope.manager.itemStart( url ); + + image.src = url; + + return image; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function CubeTextureLoader( manager ) { + + Loader.call( this, manager ); + + } + + CubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: CubeTextureLoader, + + load: function ( urls, onLoad, onProgress, onError ) { + + var texture = new CubeTexture(); + + var loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + var loaded = 0; + + function loadTexture( i ) { + + loader.load( urls[ i ], function ( image ) { + + texture.images[ i ] = image; + + loaded ++; + + if ( loaded === 6 ) { + + texture.needsUpdate = true; + + if ( onLoad ) { onLoad( texture ); } + + } + + }, undefined, onError ); + + } + + for ( var i = 0; i < urls.length; ++ i ) { + + loadTexture( i ); + + } + + return texture; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function TextureLoader( manager ) { + + Loader.call( this, manager ); + + } + + TextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: TextureLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var texture = new Texture(); + + var loader = new ImageLoader( this.manager ); + loader.setCrossOrigin( this.crossOrigin ); + loader.setPath( this.path ); + + loader.load( url, function ( image ) { + + texture.image = image; + + // JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB. + var isJPEG = url.search( /\.jpe?g($|\?)/i ) > 0 || url.search( /^data\:image\/jpeg/ ) === 0; + + texture.format = isJPEG ? RGBFormat : RGBAFormat; + texture.needsUpdate = true; + + if ( onLoad !== undefined ) { + + onLoad( texture ); + + } + + }, onProgress, onError ); + + return texture; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Extensible curve object + * + * Some common of curve methods: + * .getPoint( t, optionalTarget ), .getTangent( t ) + * .getPointAt( u, optionalTarget ), .getTangentAt( u ) + * .getPoints(), .getSpacedPoints() + * .getLength() + * .updateArcLengths() + * + * This following curves inherit from THREE.Curve: + * + * -- 2D curves -- + * THREE.ArcCurve + * THREE.CubicBezierCurve + * THREE.EllipseCurve + * THREE.LineCurve + * THREE.QuadraticBezierCurve + * THREE.SplineCurve + * + * -- 3D curves -- + * THREE.CatmullRomCurve3 + * THREE.CubicBezierCurve3 + * THREE.LineCurve3 + * THREE.QuadraticBezierCurve3 + * + * A series of curves can be represented as a THREE.CurvePath. + * + **/ + + /************************************************************** + * Abstract Curve base class + **************************************************************/ + + function Curve() { + + this.type = 'Curve'; + + this.arcLengthDivisions = 200; + + } + + Object.assign( Curve.prototype, { + + // Virtual base class method to overwrite and implement in subclasses + // - t [0 .. 1] + + getPoint: function ( /* t, optionalTarget */ ) { + + console.warn( 'THREE.Curve: .getPoint() not implemented.' ); + return null; + + }, + + // Get point at relative position in curve according to arc length + // - u [0 .. 1] + + getPointAt: function ( u, optionalTarget ) { + + var t = this.getUtoTmapping( u ); + return this.getPoint( t, optionalTarget ); + + }, + + // Get sequence of points using getPoint( t ) + + getPoints: function ( divisions ) { + + if ( divisions === undefined ) { divisions = 5; } + + var points = []; + + for ( var d = 0; d <= divisions; d ++ ) { + + points.push( this.getPoint( d / divisions ) ); + + } + + return points; + + }, + + // Get sequence of points using getPointAt( u ) + + getSpacedPoints: function ( divisions ) { + + if ( divisions === undefined ) { divisions = 5; } + + var points = []; + + for ( var d = 0; d <= divisions; d ++ ) { + + points.push( this.getPointAt( d / divisions ) ); + + } + + return points; + + }, + + // Get total curve arc length + + getLength: function () { + + var lengths = this.getLengths(); + return lengths[ lengths.length - 1 ]; + + }, + + // Get list of cumulative segment lengths + + getLengths: function ( divisions ) { + + if ( divisions === undefined ) { divisions = this.arcLengthDivisions; } + + if ( this.cacheArcLengths && + ( this.cacheArcLengths.length === divisions + 1 ) && + ! this.needsUpdate ) { + + return this.cacheArcLengths; + + } + + this.needsUpdate = false; + + var cache = []; + var current, last = this.getPoint( 0 ); + var p, sum = 0; + + cache.push( 0 ); + + for ( p = 1; p <= divisions; p ++ ) { + + current = this.getPoint( p / divisions ); + sum += current.distanceTo( last ); + cache.push( sum ); + last = current; + + } + + this.cacheArcLengths = cache; + + return cache; // { sums: cache, sum: sum }; Sum is in the last element. + + }, + + updateArcLengths: function () { + + this.needsUpdate = true; + this.getLengths(); + + }, + + // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant + + getUtoTmapping: function ( u, distance ) { + + var arcLengths = this.getLengths(); + + var i = 0, il = arcLengths.length; + + var targetArcLength; // The targeted u distance value to get + + if ( distance ) { + + targetArcLength = distance; + + } else { + + targetArcLength = u * arcLengths[ il - 1 ]; + + } + + // binary search for the index with largest value smaller than target u distance + + var low = 0, high = il - 1, comparison; + + while ( low <= high ) { + + i = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats + + comparison = arcLengths[ i ] - targetArcLength; + + if ( comparison < 0 ) { + + low = i + 1; + + } else if ( comparison > 0 ) { + + high = i - 1; + + } else { + + high = i; + break; + + // DONE + + } + + } + + i = high; + + if ( arcLengths[ i ] === targetArcLength ) { + + return i / ( il - 1 ); + + } + + // we could get finer grain at lengths, or use simple interpolation between two points + + var lengthBefore = arcLengths[ i ]; + var lengthAfter = arcLengths[ i + 1 ]; + + var segmentLength = lengthAfter - lengthBefore; + + // determine where we are between the 'before' and 'after' points + + var segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength; + + // add that fractional amount to t + + var t = ( i + segmentFraction ) / ( il - 1 ); + + return t; + + }, + + // Returns a unit vector tangent at t + // In case any sub curve does not implement its tangent derivation, + // 2 points a small delta apart will be used to find its gradient + // which seems to give a reasonable approximation + + getTangent: function ( t ) { + + var delta = 0.0001; + var t1 = t - delta; + var t2 = t + delta; + + // Capping in case of danger + + if ( t1 < 0 ) { t1 = 0; } + if ( t2 > 1 ) { t2 = 1; } + + var pt1 = this.getPoint( t1 ); + var pt2 = this.getPoint( t2 ); + + var vec = pt2.clone().sub( pt1 ); + return vec.normalize(); + + }, + + getTangentAt: function ( u ) { + + var t = this.getUtoTmapping( u ); + return this.getTangent( t ); + + }, + + computeFrenetFrames: function ( segments, closed ) { + + // see http://www.cs.indiana.edu/pub/techreports/TR425.pdf + + var normal = new Vector3(); + + var tangents = []; + var normals = []; + var binormals = []; + + var vec = new Vector3(); + var mat = new Matrix4(); + + var i, u, theta; + + // compute the tangent vectors for each segment on the curve + + for ( i = 0; i <= segments; i ++ ) { + + u = i / segments; + + tangents[ i ] = this.getTangentAt( u ); + tangents[ i ].normalize(); + + } + + // select an initial normal vector perpendicular to the first tangent vector, + // and in the direction of the minimum tangent xyz component + + normals[ 0 ] = new Vector3(); + binormals[ 0 ] = new Vector3(); + var min = Number.MAX_VALUE; + var tx = Math.abs( tangents[ 0 ].x ); + var ty = Math.abs( tangents[ 0 ].y ); + var tz = Math.abs( tangents[ 0 ].z ); + + if ( tx <= min ) { + + min = tx; + normal.set( 1, 0, 0 ); + + } + + if ( ty <= min ) { + + min = ty; + normal.set( 0, 1, 0 ); + + } + + if ( tz <= min ) { + + normal.set( 0, 0, 1 ); + + } + + vec.crossVectors( tangents[ 0 ], normal ).normalize(); + + normals[ 0 ].crossVectors( tangents[ 0 ], vec ); + binormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] ); + + + // compute the slowly-varying normal and binormal vectors for each segment on the curve + + for ( i = 1; i <= segments; i ++ ) { + + normals[ i ] = normals[ i - 1 ].clone(); + + binormals[ i ] = binormals[ i - 1 ].clone(); + + vec.crossVectors( tangents[ i - 1 ], tangents[ i ] ); + + if ( vec.length() > Number.EPSILON ) { + + vec.normalize(); + + theta = Math.acos( _Math.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors + + normals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) ); + + } + + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + // if the curve is closed, postprocess the vectors so the first and last normal vectors are the same + + if ( closed === true ) { + + theta = Math.acos( _Math.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) ); + theta /= segments; + + if ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) { + + theta = - theta; + + } + + for ( i = 1; i <= segments; i ++ ) { + + // twist a little... + normals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) ); + binormals[ i ].crossVectors( tangents[ i ], normals[ i ] ); + + } + + } + + return { + tangents: tangents, + normals: normals, + binormals: binormals + }; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( source ) { + + this.arcLengthDivisions = source.arcLengthDivisions; + + return this; + + }, + + toJSON: function () { + + var data = { + metadata: { + version: 4.5, + type: 'Curve', + generator: 'Curve.toJSON' + } + }; + + data.arcLengthDivisions = this.arcLengthDivisions; + data.type = this.type; + + return data; + + }, + + fromJSON: function ( json ) { + + this.arcLengthDivisions = json.arcLengthDivisions; + + return this; + + } + + } ); + + function EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + Curve.call( this ); + + this.type = 'EllipseCurve'; + + this.aX = aX || 0; + this.aY = aY || 0; + + this.xRadius = xRadius || 1; + this.yRadius = yRadius || 1; + + this.aStartAngle = aStartAngle || 0; + this.aEndAngle = aEndAngle || 2 * Math.PI; + + this.aClockwise = aClockwise || false; + + this.aRotation = aRotation || 0; + + } + + EllipseCurve.prototype = Object.create( Curve.prototype ); + EllipseCurve.prototype.constructor = EllipseCurve; + + EllipseCurve.prototype.isEllipseCurve = true; + + EllipseCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var twoPi = Math.PI * 2; + var deltaAngle = this.aEndAngle - this.aStartAngle; + var samePoints = Math.abs( deltaAngle ) < Number.EPSILON; + + // ensures that deltaAngle is 0 .. 2 PI + while ( deltaAngle < 0 ) { deltaAngle += twoPi; } + while ( deltaAngle > twoPi ) { deltaAngle -= twoPi; } + + if ( deltaAngle < Number.EPSILON ) { + + if ( samePoints ) { + + deltaAngle = 0; + + } else { + + deltaAngle = twoPi; + + } + + } + + if ( this.aClockwise === true && ! samePoints ) { + + if ( deltaAngle === twoPi ) { + + deltaAngle = - twoPi; + + } else { + + deltaAngle = deltaAngle - twoPi; + + } + + } + + var angle = this.aStartAngle + t * deltaAngle; + var x = this.aX + this.xRadius * Math.cos( angle ); + var y = this.aY + this.yRadius * Math.sin( angle ); + + if ( this.aRotation !== 0 ) { + + var cos = Math.cos( this.aRotation ); + var sin = Math.sin( this.aRotation ); + + var tx = x - this.aX; + var ty = y - this.aY; + + // Rotate the point about the center of the ellipse. + x = tx * cos - ty * sin + this.aX; + y = tx * sin + ty * cos + this.aY; + + } + + return point.set( x, y ); + + }; + + EllipseCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.aX = source.aX; + this.aY = source.aY; + + this.xRadius = source.xRadius; + this.yRadius = source.yRadius; + + this.aStartAngle = source.aStartAngle; + this.aEndAngle = source.aEndAngle; + + this.aClockwise = source.aClockwise; + + this.aRotation = source.aRotation; + + return this; + + }; + + + EllipseCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.aX = this.aX; + data.aY = this.aY; + + data.xRadius = this.xRadius; + data.yRadius = this.yRadius; + + data.aStartAngle = this.aStartAngle; + data.aEndAngle = this.aEndAngle; + + data.aClockwise = this.aClockwise; + + data.aRotation = this.aRotation; + + return data; + + }; + + EllipseCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.aX = json.aX; + this.aY = json.aY; + + this.xRadius = json.xRadius; + this.yRadius = json.yRadius; + + this.aStartAngle = json.aStartAngle; + this.aEndAngle = json.aEndAngle; + + this.aClockwise = json.aClockwise; + + this.aRotation = json.aRotation; + + return this; + + }; + + function ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + EllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + this.type = 'ArcCurve'; + + } + + ArcCurve.prototype = Object.create( EllipseCurve.prototype ); + ArcCurve.prototype.constructor = ArcCurve; + + ArcCurve.prototype.isArcCurve = true; + + /** + * @author zz85 https://github.com/zz85 + * + * Centripetal CatmullRom Curve - which is useful for avoiding + * cusps and self-intersections in non-uniform catmull rom curves. + * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf + * + * curve.type accepts centripetal(default), chordal and catmullrom + * curve.tension is used for catmullrom which defaults to 0.5 + */ + + + /* + Based on an optimized c++ solution in + - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/ + - http://ideone.com/NoEbVM + + This CubicPoly class could be used for reusing some variables and calculations, + but for three.js curve use, it could be possible inlined and flatten into a single function call + which can be placed in CurveUtils. + */ + + function CubicPoly() { + + var c0 = 0, c1 = 0, c2 = 0, c3 = 0; + + /* + * Compute coefficients for a cubic polynomial + * p(s) = c0 + c1*s + c2*s^2 + c3*s^3 + * such that + * p(0) = x0, p(1) = x1 + * and + * p'(0) = t0, p'(1) = t1. + */ + function init( x0, x1, t0, t1 ) { + + c0 = x0; + c1 = t0; + c2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1; + c3 = 2 * x0 - 2 * x1 + t0 + t1; + + } + + return { + + initCatmullRom: function ( x0, x1, x2, x3, tension ) { + + init( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) ); + + }, + + initNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) { + + // compute tangents when parameterized in [t1,t2] + var t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1; + var t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2; + + // rescale tangents for parametrization in [0,1] + t1 *= dt1; + t2 *= dt1; + + init( x1, x2, t1, t2 ); + + }, + + calc: function ( t ) { + + var t2 = t * t; + var t3 = t2 * t; + return c0 + c1 * t + c2 * t2 + c3 * t3; + + } + + }; + + } + + // + + var tmp = new Vector3(); + var px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly(); + + function CatmullRomCurve3( points, closed, curveType, tension ) { + + Curve.call( this ); + + this.type = 'CatmullRomCurve3'; + + this.points = points || []; + this.closed = closed || false; + this.curveType = curveType || 'centripetal'; + this.tension = tension || 0.5; + + } + + CatmullRomCurve3.prototype = Object.create( Curve.prototype ); + CatmullRomCurve3.prototype.constructor = CatmullRomCurve3; + + CatmullRomCurve3.prototype.isCatmullRomCurve3 = true; + + CatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var points = this.points; + var l = points.length; + + var p = ( l - ( this.closed ? 0 : 1 ) ) * t; + var intPoint = Math.floor( p ); + var weight = p - intPoint; + + if ( this.closed ) { + + intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l; + + } else if ( weight === 0 && intPoint === l - 1 ) { + + intPoint = l - 2; + weight = 1; + + } + + var p0, p1, p2, p3; // 4 points + + if ( this.closed || intPoint > 0 ) { + + p0 = points[ ( intPoint - 1 ) % l ]; + + } else { + + // extrapolate first point + tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] ); + p0 = tmp; + + } + + p1 = points[ intPoint % l ]; + p2 = points[ ( intPoint + 1 ) % l ]; + + if ( this.closed || intPoint + 2 < l ) { + + p3 = points[ ( intPoint + 2 ) % l ]; + + } else { + + // extrapolate last point + tmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] ); + p3 = tmp; + + } + + if ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) { + + // init Centripetal / Chordal Catmull-Rom + var pow = this.curveType === 'chordal' ? 0.5 : 0.25; + var dt0 = Math.pow( p0.distanceToSquared( p1 ), pow ); + var dt1 = Math.pow( p1.distanceToSquared( p2 ), pow ); + var dt2 = Math.pow( p2.distanceToSquared( p3 ), pow ); + + // safety check for repeated points + if ( dt1 < 1e-4 ) { dt1 = 1.0; } + if ( dt0 < 1e-4 ) { dt0 = dt1; } + if ( dt2 < 1e-4 ) { dt2 = dt1; } + + px.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 ); + py.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 ); + pz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 ); + + } else if ( this.curveType === 'catmullrom' ) { + + px.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension ); + py.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension ); + pz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension ); + + } + + point.set( + px.calc( weight ), + py.calc( weight ), + pz.calc( weight ) + ); + + return point; + + }; + + CatmullRomCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.points = []; + + for ( var i = 0, l = source.points.length; i < l; i ++ ) { + + var point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + this.closed = source.closed; + this.curveType = source.curveType; + this.tension = source.tension; + + return this; + + }; + + CatmullRomCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.points = []; + + for ( var i = 0, l = this.points.length; i < l; i ++ ) { + + var point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + data.closed = this.closed; + data.curveType = this.curveType; + data.tension = this.tension; + + return data; + + }; + + CatmullRomCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.points = []; + + for ( var i = 0, l = json.points.length; i < l; i ++ ) { + + var point = json.points[ i ]; + this.points.push( new Vector3().fromArray( point ) ); + + } + + this.closed = json.closed; + this.curveType = json.curveType; + this.tension = json.tension; + + return this; + + }; + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + * Bezier Curves formulas obtained from + * http://en.wikipedia.org/wiki/Bézier_curve + */ + + function CatmullRom( t, p0, p1, p2, p3 ) { + + var v0 = ( p2 - p0 ) * 0.5; + var v1 = ( p3 - p1 ) * 0.5; + var t2 = t * t; + var t3 = t * t2; + return ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1; + + } + + // + + function QuadraticBezierP0( t, p ) { + + var k = 1 - t; + return k * k * p; + + } + + function QuadraticBezierP1( t, p ) { + + return 2 * ( 1 - t ) * t * p; + + } + + function QuadraticBezierP2( t, p ) { + + return t * t * p; + + } + + function QuadraticBezier( t, p0, p1, p2 ) { + + return QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) + + QuadraticBezierP2( t, p2 ); + + } + + // + + function CubicBezierP0( t, p ) { + + var k = 1 - t; + return k * k * k * p; + + } + + function CubicBezierP1( t, p ) { + + var k = 1 - t; + return 3 * k * k * t * p; + + } + + function CubicBezierP2( t, p ) { + + return 3 * ( 1 - t ) * t * t * p; + + } + + function CubicBezierP3( t, p ) { + + return t * t * t * p; + + } + + function CubicBezier( t, p0, p1, p2, p3 ) { + + return CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) + + CubicBezierP3( t, p3 ); + + } + + function CubicBezierCurve( v0, v1, v2, v3 ) { + + Curve.call( this ); + + this.type = 'CubicBezierCurve'; + + this.v0 = v0 || new Vector2(); + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + this.v3 = v3 || new Vector2(); + + } + + CubicBezierCurve.prototype = Object.create( Curve.prototype ); + CubicBezierCurve.prototype.constructor = CubicBezierCurve; + + CubicBezierCurve.prototype.isCubicBezierCurve = true; + + CubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ) + ); + + return point; + + }; + + CubicBezierCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + }; + + CubicBezierCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + }; + + CubicBezierCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + }; + + function CubicBezierCurve3( v0, v1, v2, v3 ) { + + Curve.call( this ); + + this.type = 'CubicBezierCurve3'; + + this.v0 = v0 || new Vector3(); + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + this.v3 = v3 || new Vector3(); + + } + + CubicBezierCurve3.prototype = Object.create( Curve.prototype ); + CubicBezierCurve3.prototype.constructor = CubicBezierCurve3; + + CubicBezierCurve3.prototype.isCubicBezierCurve3 = true; + + CubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3; + + point.set( + CubicBezier( t, v0.x, v1.x, v2.x, v3.x ), + CubicBezier( t, v0.y, v1.y, v2.y, v3.y ), + CubicBezier( t, v0.z, v1.z, v2.z, v3.z ) + ); + + return point; + + }; + + CubicBezierCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + this.v3.copy( source.v3 ); + + return this; + + }; + + CubicBezierCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + data.v3 = this.v3.toArray(); + + return data; + + }; + + CubicBezierCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + this.v3.fromArray( json.v3 ); + + return this; + + }; + + function LineCurve( v1, v2 ) { + + Curve.call( this ); + + this.type = 'LineCurve'; + + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + + } + + LineCurve.prototype = Object.create( Curve.prototype ); + LineCurve.prototype.constructor = LineCurve; + + LineCurve.prototype.isLineCurve = true; + + LineCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + }; + + // Line curve is linear, so we can overwrite default getPointAt + + LineCurve.prototype.getPointAt = function ( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + }; + + LineCurve.prototype.getTangent = function ( /* t */ ) { + + var tangent = this.v2.clone().sub( this.v1 ); + + return tangent.normalize(); + + }; + + LineCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + LineCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + LineCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function LineCurve3( v1, v2 ) { + + Curve.call( this ); + + this.type = 'LineCurve3'; + + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + + } + + LineCurve3.prototype = Object.create( Curve.prototype ); + LineCurve3.prototype.constructor = LineCurve3; + + LineCurve3.prototype.isLineCurve3 = true; + + LineCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + if ( t === 1 ) { + + point.copy( this.v2 ); + + } else { + + point.copy( this.v2 ).sub( this.v1 ); + point.multiplyScalar( t ).add( this.v1 ); + + } + + return point; + + }; + + // Line curve is linear, so we can overwrite default getPointAt + + LineCurve3.prototype.getPointAt = function ( u, optionalTarget ) { + + return this.getPoint( u, optionalTarget ); + + }; + + LineCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + LineCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + LineCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function QuadraticBezierCurve( v0, v1, v2 ) { + + Curve.call( this ); + + this.type = 'QuadraticBezierCurve'; + + this.v0 = v0 || new Vector2(); + this.v1 = v1 || new Vector2(); + this.v2 = v2 || new Vector2(); + + } + + QuadraticBezierCurve.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve; + + QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true; + + QuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ) + ); + + return point; + + }; + + QuadraticBezierCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + QuadraticBezierCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + QuadraticBezierCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function QuadraticBezierCurve3( v0, v1, v2 ) { + + Curve.call( this ); + + this.type = 'QuadraticBezierCurve3'; + + this.v0 = v0 || new Vector3(); + this.v1 = v1 || new Vector3(); + this.v2 = v2 || new Vector3(); + + } + + QuadraticBezierCurve3.prototype = Object.create( Curve.prototype ); + QuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3; + + QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true; + + QuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector3(); + + var v0 = this.v0, v1 = this.v1, v2 = this.v2; + + point.set( + QuadraticBezier( t, v0.x, v1.x, v2.x ), + QuadraticBezier( t, v0.y, v1.y, v2.y ), + QuadraticBezier( t, v0.z, v1.z, v2.z ) + ); + + return point; + + }; + + QuadraticBezierCurve3.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.v0.copy( source.v0 ); + this.v1.copy( source.v1 ); + this.v2.copy( source.v2 ); + + return this; + + }; + + QuadraticBezierCurve3.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.v0 = this.v0.toArray(); + data.v1 = this.v1.toArray(); + data.v2 = this.v2.toArray(); + + return data; + + }; + + QuadraticBezierCurve3.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.v0.fromArray( json.v0 ); + this.v1.fromArray( json.v1 ); + this.v2.fromArray( json.v2 ); + + return this; + + }; + + function SplineCurve( points /* array of Vector2 */ ) { + + Curve.call( this ); + + this.type = 'SplineCurve'; + + this.points = points || []; + + } + + SplineCurve.prototype = Object.create( Curve.prototype ); + SplineCurve.prototype.constructor = SplineCurve; + + SplineCurve.prototype.isSplineCurve = true; + + SplineCurve.prototype.getPoint = function ( t, optionalTarget ) { + + var point = optionalTarget || new Vector2(); + + var points = this.points; + var p = ( points.length - 1 ) * t; + + var intPoint = Math.floor( p ); + var weight = p - intPoint; + + var p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ]; + var p1 = points[ intPoint ]; + var p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ]; + var p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ]; + + point.set( + CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ), + CatmullRom( weight, p0.y, p1.y, p2.y, p3.y ) + ); + + return point; + + }; + + SplineCurve.prototype.copy = function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.points = []; + + for ( var i = 0, l = source.points.length; i < l; i ++ ) { + + var point = source.points[ i ]; + + this.points.push( point.clone() ); + + } + + return this; + + }; + + SplineCurve.prototype.toJSON = function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.points = []; + + for ( var i = 0, l = this.points.length; i < l; i ++ ) { + + var point = this.points[ i ]; + data.points.push( point.toArray() ); + + } + + return data; + + }; + + SplineCurve.prototype.fromJSON = function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.points = []; + + for ( var i = 0, l = json.points.length; i < l; i ++ ) { + + var point = json.points[ i ]; + this.points.push( new Vector2().fromArray( point ) ); + + } + + return this; + + }; + + + + var Curves = /*#__PURE__*/Object.freeze({ + ArcCurve: ArcCurve, + CatmullRomCurve3: CatmullRomCurve3, + CubicBezierCurve: CubicBezierCurve, + CubicBezierCurve3: CubicBezierCurve3, + EllipseCurve: EllipseCurve, + LineCurve: LineCurve, + LineCurve3: LineCurve3, + QuadraticBezierCurve: QuadraticBezierCurve, + QuadraticBezierCurve3: QuadraticBezierCurve3, + SplineCurve: SplineCurve + }); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * + **/ + + /************************************************************** + * Curved Path - a curve path is simply a array of connected + * curves, but retains the api of a curve + **************************************************************/ + + function CurvePath() { + + Curve.call( this ); + + this.type = 'CurvePath'; + + this.curves = []; + this.autoClose = false; // Automatically closes the path + + } + + CurvePath.prototype = Object.assign( Object.create( Curve.prototype ), { + + constructor: CurvePath, + + add: function ( curve ) { + + this.curves.push( curve ); + + }, + + closePath: function () { + + // Add a line curve if start and end of lines are not connected + var startPoint = this.curves[ 0 ].getPoint( 0 ); + var endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 ); + + if ( ! startPoint.equals( endPoint ) ) { + + this.curves.push( new LineCurve( endPoint, startPoint ) ); + + } + + }, + + // To get accurate point with reference to + // entire path distance at time t, + // following has to be done: + + // 1. Length of each sub path have to be known + // 2. Locate and identify type of curve + // 3. Get t for the curve + // 4. Return curve.getPointAt(t') + + getPoint: function ( t ) { + + var d = t * this.getLength(); + var curveLengths = this.getCurveLengths(); + var i = 0; + + // To think about boundaries points. + + while ( i < curveLengths.length ) { + + if ( curveLengths[ i ] >= d ) { + + var diff = curveLengths[ i ] - d; + var curve = this.curves[ i ]; + + var segmentLength = curve.getLength(); + var u = segmentLength === 0 ? 0 : 1 - diff / segmentLength; + + return curve.getPointAt( u ); + + } + + i ++; + + } + + return null; + + // loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) { + + points.push( points[ 0 ] ); + + } + + return points; + + }, + + copy: function ( source ) { + + Curve.prototype.copy.call( this, source ); + + this.curves = []; + + for ( var i = 0, l = source.curves.length; i < l; i ++ ) { + + var curve = source.curves[ i ]; + + this.curves.push( curve.clone() ); + + } + + this.autoClose = source.autoClose; + + return this; + + }, + + toJSON: function () { + + var data = Curve.prototype.toJSON.call( this ); + + data.autoClose = this.autoClose; + data.curves = []; + + for ( var i = 0, l = this.curves.length; i < l; i ++ ) { + + var curve = this.curves[ i ]; + data.curves.push( curve.toJSON() ); + + } + + return data; + + }, + + fromJSON: function ( json ) { + + Curve.prototype.fromJSON.call( this, json ); + + this.autoClose = json.autoClose; + this.curves = []; + + for ( var i = 0, l = json.curves.length; i < l; i ++ ) { + + var curve = json.curves[ i ]; + this.curves.push( new Curves[ curve.type ]().fromJSON( curve ) ); + + } + + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Creates free form 2d path using series of points, lines or curves. + **/ + + function Path( points ) { + + CurvePath.call( this ); + + this.type = 'Path'; + + this.currentPoint = new Vector2(); + + if ( points ) { + + this.setFromPoints( points ); + + } + + } + + Path.prototype = Object.assign( Object.create( CurvePath.prototype ), { + + constructor: Path, + + setFromPoints: function ( points ) { + + this.moveTo( points[ 0 ].x, points[ 0 ].y ); + + for ( var i = 1, l = points.length; i < l; i ++ ) { + + this.lineTo( points[ i ].x, points[ i ].y ); + + } + + }, + + moveTo: function ( x, y ) { + + this.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying? + + }, + + lineTo: function ( x, y ) { + + var curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) ); + this.curves.push( curve ); + + this.currentPoint.set( x, y ); + + }, + + quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + + var curve = new QuadraticBezierCurve( + this.currentPoint.clone(), + new Vector2( aCPx, aCPy ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + }, + + bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + var curve = new CubicBezierCurve( + this.currentPoint.clone(), + new Vector2( aCP1x, aCP1y ), + new Vector2( aCP2x, aCP2y ), + new Vector2( aX, aY ) + ); + + this.curves.push( curve ); + + this.currentPoint.set( aX, aY ); + + }, + + splineThru: function ( pts /*Array of Vector*/ ) { + + var npts = [ this.currentPoint.clone() ].concat( pts ); + + var curve = new SplineCurve( npts ); + this.curves.push( curve ); + + this.currentPoint.copy( pts[ pts.length - 1 ] ); + + }, + + arc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + var x0 = this.currentPoint.x; + var y0 = this.currentPoint.y; + + this.absarc( aX + x0, aY + y0, aRadius, + aStartAngle, aEndAngle, aClockwise ); + + }, + + absarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) { + + this.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise ); + + }, + + ellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + var x0 = this.currentPoint.x; + var y0 = this.currentPoint.y; + + this.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + }, + + absellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) { + + var curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ); + + if ( this.curves.length > 0 ) { + + // if a previous curve is present, attempt to join + var firstPoint = curve.getPoint( 0 ); + + if ( ! firstPoint.equals( this.currentPoint ) ) { + + this.lineTo( firstPoint.x, firstPoint.y ); + + } + + } + + this.curves.push( curve ); + + var lastPoint = curve.getPoint( 1 ); + this.currentPoint.copy( lastPoint ); + + }, + + copy: function ( source ) { + + CurvePath.prototype.copy.call( this, source ); + + this.currentPoint.copy( source.currentPoint ); + + return this; + + }, + + toJSON: function () { + + var data = CurvePath.prototype.toJSON.call( this ); + + data.currentPoint = this.currentPoint.toArray(); + + return data; + + }, + + fromJSON: function ( json ) { + + CurvePath.prototype.fromJSON.call( this, json ); + + this.currentPoint.fromArray( json.currentPoint ); + + return this; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * Defines a 2d shape plane using paths. + **/ + + // STEP 1 Create a path. + // STEP 2 Turn path into shape. + // STEP 3 ExtrudeGeometry takes in Shape/Shapes + // STEP 3a - Extract points from each shape, turn to vertices + // STEP 3b - Triangulate each shape, add faces. + + function Shape( points ) { + + Path.call( this, points ); + + this.uuid = _Math.generateUUID(); + + this.type = 'Shape'; + + this.holes = []; + + } + + Shape.prototype = Object.assign( Object.create( Path.prototype ), { + + constructor: Shape, + + getPointsHoles: function ( divisions ) { + + var holesPts = []; + + for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + + holesPts[ i ] = this.holes[ i ].getPoints( divisions ); + + } + + return holesPts; + + }, + + // get points of shape and holes (keypoints based on segments parameter) + + extractPoints: function ( divisions ) { + + return { + + shape: this.getPoints( divisions ), + holes: this.getPointsHoles( divisions ) + + }; + + }, + + copy: function ( source ) { + + Path.prototype.copy.call( this, source ); + + this.holes = []; + + for ( var i = 0, l = source.holes.length; i < l; i ++ ) { + + var hole = source.holes[ i ]; + + this.holes.push( hole.clone() ); + + } + + return this; + + }, + + toJSON: function () { + + var data = Path.prototype.toJSON.call( this ); + + data.uuid = this.uuid; + data.holes = []; + + for ( var i = 0, l = this.holes.length; i < l; i ++ ) { + + var hole = this.holes[ i ]; + data.holes.push( hole.toJSON() ); + + } + + return data; + + }, + + fromJSON: function ( json ) { + + Path.prototype.fromJSON.call( this, json ); + + this.uuid = json.uuid; + this.holes = []; + + for ( var i = 0, l = json.holes.length; i < l; i ++ ) { + + var hole = json.holes[ i ]; + this.holes.push( new Path().fromJSON( hole ) ); + + } + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function Light( color, intensity ) { + + Object3D.call( this ); + + this.type = 'Light'; + + this.color = new Color( color ); + this.intensity = intensity !== undefined ? intensity : 1; + + this.receiveShadow = undefined; + + } + + Light.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Light, + + isLight: true, + + copy: function ( source ) { + + Object3D.prototype.copy.call( this, source ); + + this.color.copy( source.color ); + this.intensity = source.intensity; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.color = this.color.getHex(); + data.object.intensity = this.intensity; + + if ( this.groundColor !== undefined ) { data.object.groundColor = this.groundColor.getHex(); } + + if ( this.distance !== undefined ) { data.object.distance = this.distance; } + if ( this.angle !== undefined ) { data.object.angle = this.angle; } + if ( this.decay !== undefined ) { data.object.decay = this.decay; } + if ( this.penumbra !== undefined ) { data.object.penumbra = this.penumbra; } + + if ( this.shadow !== undefined ) { data.object.shadow = this.shadow.toJSON(); } + + return data; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function HemisphereLight( skyColor, groundColor, intensity ) { + + Light.call( this, skyColor, intensity ); + + this.type = 'HemisphereLight'; + + this.castShadow = undefined; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.groundColor = new Color( groundColor ); + + } + + HemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: HemisphereLight, + + isHemisphereLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.groundColor.copy( source.groundColor ); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function LightShadow( camera ) { + + this.camera = camera; + + this.bias = 0; + this.radius = 1; + + this.mapSize = new Vector2( 512, 512 ); + + this.map = null; + this.mapPass = null; + this.matrix = new Matrix4(); + + this._frustum = new Frustum(); + this._frameExtents = new Vector2( 1, 1 ); + + this._viewportCount = 1; + + this._viewports = [ + + new Vector4( 0, 0, 1, 1 ) + + ]; + + } + + Object.assign( LightShadow.prototype, { + + _projScreenMatrix: new Matrix4(), + + _lightPositionWorld: new Vector3(), + + _lookTarget: new Vector3(), + + getViewportCount: function () { + + return this._viewportCount; + + }, + + getFrustum: function () { + + return this._frustum; + + }, + + updateMatrices: function ( light ) { + + var shadowCamera = this.camera, + shadowMatrix = this.matrix, + projScreenMatrix = this._projScreenMatrix, + lookTarget = this._lookTarget, + lightPositionWorld = this._lightPositionWorld; + + lightPositionWorld.setFromMatrixPosition( light.matrixWorld ); + shadowCamera.position.copy( lightPositionWorld ); + + lookTarget.setFromMatrixPosition( light.target.matrixWorld ); + shadowCamera.lookAt( lookTarget ); + shadowCamera.updateMatrixWorld(); + + projScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse ); + this._frustum.setFromMatrix( projScreenMatrix ); + + shadowMatrix.set( + 0.5, 0.0, 0.0, 0.5, + 0.0, 0.5, 0.0, 0.5, + 0.0, 0.0, 0.5, 0.5, + 0.0, 0.0, 0.0, 1.0 + ); + + shadowMatrix.multiply( shadowCamera.projectionMatrix ); + shadowMatrix.multiply( shadowCamera.matrixWorldInverse ); + + }, + + getViewport: function ( viewportIndex ) { + + return this._viewports[ viewportIndex ]; + + }, + + getFrameExtents: function () { + + return this._frameExtents; + + }, + + copy: function ( source ) { + + this.camera = source.camera.clone(); + + this.bias = source.bias; + this.radius = source.radius; + + this.mapSize.copy( source.mapSize ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + toJSON: function () { + + var object = {}; + + if ( this.bias !== 0 ) { object.bias = this.bias; } + if ( this.radius !== 1 ) { object.radius = this.radius; } + if ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) { object.mapSize = this.mapSize.toArray(); } + + object.camera = this.camera.toJSON( false ).object; + delete object.camera.matrix; + + return object; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function SpotLightShadow() { + + LightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) ); + + } + + SpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + + constructor: SpotLightShadow, + + isSpotLightShadow: true, + + updateMatrices: function ( light, viewCamera, viewportIndex ) { + + var camera = this.camera; + + var fov = _Math.RAD2DEG * 2 * light.angle; + var aspect = this.mapSize.width / this.mapSize.height; + var far = light.distance || camera.far; + + if ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) { + + camera.fov = fov; + camera.aspect = aspect; + camera.far = far; + camera.updateProjectionMatrix(); + + } + + LightShadow.prototype.updateMatrices.call( this, light, viewCamera, viewportIndex ); + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function SpotLight( color, intensity, distance, angle, penumbra, decay ) { + + Light.call( this, color, intensity ); + + this.type = 'SpotLight'; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.target = new Object3D(); + + Object.defineProperty( this, 'power', { + get: function () { + + // intensity = power per solid angle. + // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + return this.intensity * Math.PI; + + }, + set: function ( power ) { + + // intensity = power per solid angle. + // ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + this.intensity = power / Math.PI; + + } + } ); + + this.distance = ( distance !== undefined ) ? distance : 0; + this.angle = ( angle !== undefined ) ? angle : Math.PI / 3; + this.penumbra = ( penumbra !== undefined ) ? penumbra : 0; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + + this.shadow = new SpotLightShadow(); + + } + + SpotLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: SpotLight, + + isSpotLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.distance = source.distance; + this.angle = source.angle; + this.penumbra = source.penumbra; + this.decay = source.decay; + + this.target = source.target.clone(); + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + function PointLightShadow() { + + LightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) ); + + this._frameExtents = new Vector2( 4, 2 ); + + this._viewportCount = 6; + + this._viewports = [ + // These viewports map a cube-map onto a 2D texture with the + // following orientation: + // + // xzXZ + // y Y + // + // X - Positive x direction + // x - Negative x direction + // Y - Positive y direction + // y - Negative y direction + // Z - Positive z direction + // z - Negative z direction + + // positive X + new Vector4( 2, 1, 1, 1 ), + // negative X + new Vector4( 0, 1, 1, 1 ), + // positive Z + new Vector4( 3, 1, 1, 1 ), + // negative Z + new Vector4( 1, 1, 1, 1 ), + // positive Y + new Vector4( 3, 0, 1, 1 ), + // negative Y + new Vector4( 1, 0, 1, 1 ) + ]; + + this._cubeDirections = [ + new Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ), + new Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 ) + ]; + + this._cubeUps = [ + new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), + new Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ), new Vector3( 0, 0, - 1 ) + ]; + + } + + PointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + + constructor: PointLightShadow, + + isPointLightShadow: true, + + updateMatrices: function ( light, viewCamera, viewportIndex ) { + + var camera = this.camera, + shadowMatrix = this.matrix, + lightPositionWorld = this._lightPositionWorld, + lookTarget = this._lookTarget, + projScreenMatrix = this._projScreenMatrix; + + lightPositionWorld.setFromMatrixPosition( light.matrixWorld ); + camera.position.copy( lightPositionWorld ); + + lookTarget.copy( camera.position ); + lookTarget.add( this._cubeDirections[ viewportIndex ] ); + camera.up.copy( this._cubeUps[ viewportIndex ] ); + camera.lookAt( lookTarget ); + camera.updateMatrixWorld(); + + shadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z ); + + projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); + this._frustum.setFromMatrix( projScreenMatrix ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + + function PointLight( color, intensity, distance, decay ) { + + Light.call( this, color, intensity ); + + this.type = 'PointLight'; + + Object.defineProperty( this, 'power', { + get: function () { + + // intensity = power per solid angle. + // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + return this.intensity * 4 * Math.PI; + + }, + set: function ( power ) { + + // intensity = power per solid angle. + // ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf + this.intensity = power / ( 4 * Math.PI ); + + } + } ); + + this.distance = ( distance !== undefined ) ? distance : 0; + this.decay = ( decay !== undefined ) ? decay : 1; // for physically correct lights, should be 2. + + this.shadow = new PointLightShadow(); + + } + + PointLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: PointLight, + + isPointLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.distance = source.distance; + this.decay = source.decay; + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + * @author arose / http://github.com/arose + */ + + function OrthographicCamera( left, right, top, bottom, near, far ) { + + Camera.call( this ); + + this.type = 'OrthographicCamera'; + + this.zoom = 1; + this.view = null; + + this.left = ( left !== undefined ) ? left : - 1; + this.right = ( right !== undefined ) ? right : 1; + this.top = ( top !== undefined ) ? top : 1; + this.bottom = ( bottom !== undefined ) ? bottom : - 1; + + this.near = ( near !== undefined ) ? near : 0.1; + this.far = ( far !== undefined ) ? far : 2000; + + this.updateProjectionMatrix(); + + } + + OrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), { + + constructor: OrthographicCamera, + + isOrthographicCamera: true, + + copy: function ( source, recursive ) { + + Camera.prototype.copy.call( this, source, recursive ); + + this.left = source.left; + this.right = source.right; + this.top = source.top; + this.bottom = source.bottom; + this.near = source.near; + this.far = source.far; + + this.zoom = source.zoom; + this.view = source.view === null ? null : Object.assign( {}, source.view ); + + return this; + + }, + + setViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) { + + if ( this.view === null ) { + + this.view = { + enabled: true, + fullWidth: 1, + fullHeight: 1, + offsetX: 0, + offsetY: 0, + width: 1, + height: 1 + }; + + } + + this.view.enabled = true; + this.view.fullWidth = fullWidth; + this.view.fullHeight = fullHeight; + this.view.offsetX = x; + this.view.offsetY = y; + this.view.width = width; + this.view.height = height; + + this.updateProjectionMatrix(); + + }, + + clearViewOffset: function () { + + if ( this.view !== null ) { + + this.view.enabled = false; + + } + + this.updateProjectionMatrix(); + + }, + + updateProjectionMatrix: function () { + + var dx = ( this.right - this.left ) / ( 2 * this.zoom ); + var dy = ( this.top - this.bottom ) / ( 2 * this.zoom ); + var cx = ( this.right + this.left ) / 2; + var cy = ( this.top + this.bottom ) / 2; + + var left = cx - dx; + var right = cx + dx; + var top = cy + dy; + var bottom = cy - dy; + + if ( this.view !== null && this.view.enabled ) { + + var zoomW = this.zoom / ( this.view.width / this.view.fullWidth ); + var zoomH = this.zoom / ( this.view.height / this.view.fullHeight ); + var scaleW = ( this.right - this.left ) / this.view.width; + var scaleH = ( this.top - this.bottom ) / this.view.height; + + left += scaleW * ( this.view.offsetX / zoomW ); + right = left + scaleW * ( this.view.width / zoomW ); + top -= scaleH * ( this.view.offsetY / zoomH ); + bottom = top - scaleH * ( this.view.height / zoomH ); + + } + + this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far ); + + this.projectionMatrixInverse.getInverse( this.projectionMatrix ); + + }, + + toJSON: function ( meta ) { + + var data = Object3D.prototype.toJSON.call( this, meta ); + + data.object.zoom = this.zoom; + data.object.left = this.left; + data.object.right = this.right; + data.object.top = this.top; + data.object.bottom = this.bottom; + data.object.near = this.near; + data.object.far = this.far; + + if ( this.view !== null ) { data.object.view = Object.assign( {}, this.view ); } + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function DirectionalLightShadow() { + + LightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) ); + + } + + DirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), { + + constructor: DirectionalLightShadow, + + isDirectionalLightShadow: true, + + updateMatrices: function ( light, viewCamera, viewportIndex ) { + + LightShadow.prototype.updateMatrices.call( this, light, viewCamera, viewportIndex ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author alteredq / http://alteredqualia.com/ + */ + + function DirectionalLight( color, intensity ) { + + Light.call( this, color, intensity ); + + this.type = 'DirectionalLight'; + + this.position.copy( Object3D.DefaultUp ); + this.updateMatrix(); + + this.target = new Object3D(); + + this.shadow = new DirectionalLightShadow(); + + } + + DirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: DirectionalLight, + + isDirectionalLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.target = source.target.clone(); + + this.shadow = source.shadow.clone(); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AmbientLight( color, intensity ) { + + Light.call( this, color, intensity ); + + this.type = 'AmbientLight'; + + this.castShadow = undefined; + + } + + AmbientLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: AmbientLight, + + isAmbientLight: true + + } ); + + /** + * @author abelnation / http://github.com/abelnation + */ + + function RectAreaLight( color, intensity, width, height ) { + + Light.call( this, color, intensity ); + + this.type = 'RectAreaLight'; + + this.width = ( width !== undefined ) ? width : 10; + this.height = ( height !== undefined ) ? height : 10; + + } + + RectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: RectAreaLight, + + isRectAreaLight: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.width = source.width; + this.height = source.height; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Light.prototype.toJSON.call( this, meta ); + + data.object.width = this.width; + data.object.height = this.height; + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function MaterialLoader( manager ) { + + Loader.call( this, manager ); + + this.textures = {}; + + } + + MaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: MaterialLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var textures = this.textures; + + function getTexture( name ) { + + if ( textures[ name ] === undefined ) { + + console.warn( 'THREE.MaterialLoader: Undefined texture', name ); + + } + + return textures[ name ]; + + } + + var material = new Materials[ json.type ](); + + if ( json.uuid !== undefined ) { material.uuid = json.uuid; } + if ( json.name !== undefined ) { material.name = json.name; } + if ( json.color !== undefined ) { material.color.setHex( json.color ); } + if ( json.roughness !== undefined ) { material.roughness = json.roughness; } + if ( json.metalness !== undefined ) { material.metalness = json.metalness; } + if ( json.sheen !== undefined ) { material.sheen = new Color().setHex( json.sheen ); } + if ( json.emissive !== undefined ) { material.emissive.setHex( json.emissive ); } + if ( json.specular !== undefined ) { material.specular.setHex( json.specular ); } + if ( json.shininess !== undefined ) { material.shininess = json.shininess; } + if ( json.clearcoat !== undefined ) { material.clearcoat = json.clearcoat; } + if ( json.clearcoatRoughness !== undefined ) { material.clearcoatRoughness = json.clearcoatRoughness; } + if ( json.vertexColors !== undefined ) { material.vertexColors = json.vertexColors; } + if ( json.fog !== undefined ) { material.fog = json.fog; } + if ( json.flatShading !== undefined ) { material.flatShading = json.flatShading; } + if ( json.blending !== undefined ) { material.blending = json.blending; } + if ( json.combine !== undefined ) { material.combine = json.combine; } + if ( json.side !== undefined ) { material.side = json.side; } + if ( json.opacity !== undefined ) { material.opacity = json.opacity; } + if ( json.transparent !== undefined ) { material.transparent = json.transparent; } + if ( json.alphaTest !== undefined ) { material.alphaTest = json.alphaTest; } + if ( json.depthTest !== undefined ) { material.depthTest = json.depthTest; } + if ( json.depthWrite !== undefined ) { material.depthWrite = json.depthWrite; } + if ( json.colorWrite !== undefined ) { material.colorWrite = json.colorWrite; } + + if ( json.stencilWrite !== undefined ) { material.stencilWrite = json.stencilWrite; } + if ( json.stencilWriteMask !== undefined ) { material.stencilWriteMask = json.stencilWriteMask; } + if ( json.stencilFunc !== undefined ) { material.stencilFunc = json.stencilFunc; } + if ( json.stencilRef !== undefined ) { material.stencilRef = json.stencilRef; } + if ( json.stencilFuncMask !== undefined ) { material.stencilFuncMask = json.stencilFuncMask; } + if ( json.stencilFail !== undefined ) { material.stencilFail = json.stencilFail; } + if ( json.stencilZFail !== undefined ) { material.stencilZFail = json.stencilZFail; } + if ( json.stencilZPass !== undefined ) { material.stencilZPass = json.stencilZPass; } + + if ( json.wireframe !== undefined ) { material.wireframe = json.wireframe; } + if ( json.wireframeLinewidth !== undefined ) { material.wireframeLinewidth = json.wireframeLinewidth; } + if ( json.wireframeLinecap !== undefined ) { material.wireframeLinecap = json.wireframeLinecap; } + if ( json.wireframeLinejoin !== undefined ) { material.wireframeLinejoin = json.wireframeLinejoin; } + + if ( json.rotation !== undefined ) { material.rotation = json.rotation; } + + if ( json.linewidth !== 1 ) { material.linewidth = json.linewidth; } + if ( json.dashSize !== undefined ) { material.dashSize = json.dashSize; } + if ( json.gapSize !== undefined ) { material.gapSize = json.gapSize; } + if ( json.scale !== undefined ) { material.scale = json.scale; } + + if ( json.polygonOffset !== undefined ) { material.polygonOffset = json.polygonOffset; } + if ( json.polygonOffsetFactor !== undefined ) { material.polygonOffsetFactor = json.polygonOffsetFactor; } + if ( json.polygonOffsetUnits !== undefined ) { material.polygonOffsetUnits = json.polygonOffsetUnits; } + + if ( json.skinning !== undefined ) { material.skinning = json.skinning; } + if ( json.morphTargets !== undefined ) { material.morphTargets = json.morphTargets; } + if ( json.morphNormals !== undefined ) { material.morphNormals = json.morphNormals; } + if ( json.dithering !== undefined ) { material.dithering = json.dithering; } + + if ( json.visible !== undefined ) { material.visible = json.visible; } + + if ( json.toneMapped !== undefined ) { material.toneMapped = json.toneMapped; } + + if ( json.userData !== undefined ) { material.userData = json.userData; } + + // Shader Material + + if ( json.uniforms !== undefined ) { + + for ( var name in json.uniforms ) { + + var uniform = json.uniforms[ name ]; + + material.uniforms[ name ] = {}; + + switch ( uniform.type ) { + + case 't': + material.uniforms[ name ].value = getTexture( uniform.value ); + break; + + case 'c': + material.uniforms[ name ].value = new Color().setHex( uniform.value ); + break; + + case 'v2': + material.uniforms[ name ].value = new Vector2().fromArray( uniform.value ); + break; + + case 'v3': + material.uniforms[ name ].value = new Vector3().fromArray( uniform.value ); + break; + + case 'v4': + material.uniforms[ name ].value = new Vector4().fromArray( uniform.value ); + break; + + case 'm3': + material.uniforms[ name ].value = new Matrix3().fromArray( uniform.value ); + + case 'm4': + material.uniforms[ name ].value = new Matrix4().fromArray( uniform.value ); + break; + + default: + material.uniforms[ name ].value = uniform.value; + + } + + } + + } + + if ( json.defines !== undefined ) { material.defines = json.defines; } + if ( json.vertexShader !== undefined ) { material.vertexShader = json.vertexShader; } + if ( json.fragmentShader !== undefined ) { material.fragmentShader = json.fragmentShader; } + + if ( json.extensions !== undefined ) { + + for ( var key in json.extensions ) { + + material.extensions[ key ] = json.extensions[ key ]; + + } + + } + + // Deprecated + + if ( json.shading !== undefined ) { material.flatShading = json.shading === 1; } // THREE.FlatShading + + // for PointsMaterial + + if ( json.size !== undefined ) { material.size = json.size; } + if ( json.sizeAttenuation !== undefined ) { material.sizeAttenuation = json.sizeAttenuation; } + + // maps + + if ( json.map !== undefined ) { material.map = getTexture( json.map ); } + if ( json.matcap !== undefined ) { material.matcap = getTexture( json.matcap ); } + + if ( json.alphaMap !== undefined ) { + + material.alphaMap = getTexture( json.alphaMap ); + material.transparent = true; + + } + + if ( json.bumpMap !== undefined ) { material.bumpMap = getTexture( json.bumpMap ); } + if ( json.bumpScale !== undefined ) { material.bumpScale = json.bumpScale; } + + if ( json.normalMap !== undefined ) { material.normalMap = getTexture( json.normalMap ); } + if ( json.normalMapType !== undefined ) { material.normalMapType = json.normalMapType; } + if ( json.normalScale !== undefined ) { + + var normalScale = json.normalScale; + + if ( Array.isArray( normalScale ) === false ) { + + // Blender exporter used to export a scalar. See #7459 + + normalScale = [ normalScale, normalScale ]; + + } + + material.normalScale = new Vector2().fromArray( normalScale ); + + } + + if ( json.displacementMap !== undefined ) { material.displacementMap = getTexture( json.displacementMap ); } + if ( json.displacementScale !== undefined ) { material.displacementScale = json.displacementScale; } + if ( json.displacementBias !== undefined ) { material.displacementBias = json.displacementBias; } + + if ( json.roughnessMap !== undefined ) { material.roughnessMap = getTexture( json.roughnessMap ); } + if ( json.metalnessMap !== undefined ) { material.metalnessMap = getTexture( json.metalnessMap ); } + + if ( json.emissiveMap !== undefined ) { material.emissiveMap = getTexture( json.emissiveMap ); } + if ( json.emissiveIntensity !== undefined ) { material.emissiveIntensity = json.emissiveIntensity; } + + if ( json.specularMap !== undefined ) { material.specularMap = getTexture( json.specularMap ); } + + if ( json.envMap !== undefined ) { material.envMap = getTexture( json.envMap ); } + if ( json.envMapIntensity !== undefined ) { material.envMapIntensity = json.envMapIntensity; } + + if ( json.reflectivity !== undefined ) { material.reflectivity = json.reflectivity; } + if ( json.refractionRatio !== undefined ) { material.refractionRatio = json.refractionRatio; } + + if ( json.lightMap !== undefined ) { material.lightMap = getTexture( json.lightMap ); } + if ( json.lightMapIntensity !== undefined ) { material.lightMapIntensity = json.lightMapIntensity; } + + if ( json.aoMap !== undefined ) { material.aoMap = getTexture( json.aoMap ); } + if ( json.aoMapIntensity !== undefined ) { material.aoMapIntensity = json.aoMapIntensity; } + + if ( json.gradientMap !== undefined ) { material.gradientMap = getTexture( json.gradientMap ); } + + if ( json.clearcoatNormalMap !== undefined ) { material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap ); } + if ( json.clearcoatNormalScale !== undefined ) { material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale ); } + + return material; + + }, + + setTextures: function ( value ) { + + this.textures = value; + return this; + + } + + } ); + + /** + * @author Don McCurdy / https://www.donmccurdy.com + */ + + var LoaderUtils = { + + decodeText: function ( array ) { + + if ( typeof TextDecoder !== 'undefined' ) { + + return new TextDecoder().decode( array ); + + } + + // Avoid the String.fromCharCode.apply(null, array) shortcut, which + // throws a "maximum call stack size exceeded" error for large arrays. + + var s = ''; + + for ( var i = 0, il = array.length; i < il; i ++ ) { + + // Implicitly assumes little-endian. + s += String.fromCharCode( array[ i ] ); + + } + + try { + + // merges multi-byte utf-8 characters. + + return decodeURIComponent( escape( s ) ); + + } catch ( e ) { // see #16358 + + return s; + + } + + }, + + extractUrlBase: function ( url ) { + + var index = url.lastIndexOf( '/' ); + + if ( index === - 1 ) { return './'; } + + return url.substr( 0, index + 1 ); + + } + + }; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedBufferGeometry() { + + BufferGeometry.call( this ); + + this.type = 'InstancedBufferGeometry'; + this.maxInstancedCount = undefined; + + } + + InstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), { + + constructor: InstancedBufferGeometry, + + isInstancedBufferGeometry: true, + + copy: function ( source ) { + + BufferGeometry.prototype.copy.call( this, source ); + + this.maxInstancedCount = source.maxInstancedCount; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + toJSON: function () { + + var data = BufferGeometry.prototype.toJSON.call( this ); + + data.maxInstancedCount = this.maxInstancedCount; + + data.isInstancedBufferGeometry = true; + + return data; + + } + + } ); + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) { + + if ( typeof ( normalized ) === 'number' ) { + + meshPerAttribute = normalized; + + normalized = false; + + console.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' ); + + } + + BufferAttribute.call( this, array, itemSize, normalized ); + + this.meshPerAttribute = meshPerAttribute || 1; + + } + + InstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), { + + constructor: InstancedBufferAttribute, + + isInstancedBufferAttribute: true, + + copy: function ( source ) { + + BufferAttribute.prototype.copy.call( this, source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + }, + + toJSON: function () { + + var data = BufferAttribute.prototype.toJSON.call( this ); + + data.meshPerAttribute = this.meshPerAttribute; + + data.isInstancedBufferAttribute = true; + + return data; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function BufferGeometryLoader( manager ) { + + Loader.call( this, manager ); + + } + + BufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: BufferGeometryLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( scope.manager ); + loader.setPath( scope.path ); + loader.load( url, function ( text ) { + + onLoad( scope.parse( JSON.parse( text ) ) ); + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + var geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry(); + + var index = json.data.index; + + if ( index !== undefined ) { + + var typedArray = new TYPED_ARRAYS[ index.type ]( index.array ); + geometry.setIndex( new BufferAttribute( typedArray, 1 ) ); + + } + + var attributes = json.data.attributes; + + for ( var key in attributes ) { + + var attribute = attributes[ key ]; + var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); + var bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute; + var bufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized ); + if ( attribute.name !== undefined ) { bufferAttribute.name = attribute.name; } + geometry.addAttribute( key, bufferAttribute ); + + } + + var morphAttributes = json.data.morphAttributes; + + if ( morphAttributes ) { + + for ( var key in morphAttributes ) { + + var attributeArray = morphAttributes[ key ]; + + var array = []; + + for ( var i = 0, il = attributeArray.length; i < il; i ++ ) { + + var attribute = attributeArray[ i ]; + var typedArray = new TYPED_ARRAYS[ attribute.type ]( attribute.array ); + + var bufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized ); + if ( attribute.name !== undefined ) { bufferAttribute.name = attribute.name; } + array.push( bufferAttribute ); + + } + + geometry.morphAttributes[ key ] = array; + + } + + } + + var groups = json.data.groups || json.data.drawcalls || json.data.offsets; + + if ( groups !== undefined ) { + + for ( var i = 0, n = groups.length; i !== n; ++ i ) { + + var group = groups[ i ]; + + geometry.addGroup( group.start, group.count, group.materialIndex ); + + } + + } + + var boundingSphere = json.data.boundingSphere; + + if ( boundingSphere !== undefined ) { + + var center = new Vector3(); + + if ( boundingSphere.center !== undefined ) { + + center.fromArray( boundingSphere.center ); + + } + + geometry.boundingSphere = new Sphere( center, boundingSphere.radius ); + + } + + if ( json.name ) { geometry.name = json.name; } + if ( json.userData ) { geometry.userData = json.userData; } + + return geometry; + + } + + } ); + + var TYPED_ARRAYS = { + Int8Array: Int8Array, + Uint8Array: Uint8Array, + // Workaround for IE11 pre KB2929437. See #11440 + Uint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array, + Int16Array: Int16Array, + Uint16Array: Uint16Array, + Int32Array: Int32Array, + Uint32Array: Uint32Array, + Float32Array: Float32Array, + Float64Array: Float64Array + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function ObjectLoader( manager ) { + + Loader.call( this, manager ); + + } + + ObjectLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: ObjectLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path; + this.resourcePath = this.resourcePath || path; + + var loader = new FileLoader( scope.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + var json = null; + + try { + + json = JSON.parse( text ); + + } catch ( error ) { + + if ( onError !== undefined ) { onError( error ); } + + console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message ); + + return; + + } + + var metadata = json.metadata; + + if ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) { + + console.error( 'THREE.ObjectLoader: Can\'t load ' + url ); + return; + + } + + scope.parse( json, onLoad ); + + }, onProgress, onError ); + + }, + + parse: function ( json, onLoad ) { + + var shapes = this.parseShape( json.shapes ); + var geometries = this.parseGeometries( json.geometries, shapes ); + + var images = this.parseImages( json.images, function () { + + if ( onLoad !== undefined ) { onLoad( object ); } + + } ); + + var textures = this.parseTextures( json.textures, images ); + var materials = this.parseMaterials( json.materials, textures ); + + var object = this.parseObject( json.object, geometries, materials ); + + if ( json.animations ) { + + object.animations = this.parseAnimations( json.animations ); + + } + + if ( json.images === undefined || json.images.length === 0 ) { + + if ( onLoad !== undefined ) { onLoad( object ); } + + } + + return object; + + }, + + parseShape: function ( json ) { + + var shapes = {}; + + if ( json !== undefined ) { + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var shape = new Shape().fromJSON( json[ i ] ); + + shapes[ shape.uuid ] = shape; + + } + + } + + return shapes; + + }, + + parseGeometries: function ( json, shapes ) { + + var geometries = {}; + + if ( json !== undefined ) { + + var bufferGeometryLoader = new BufferGeometryLoader(); + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var geometry; + var data = json[ i ]; + + switch ( data.type ) { + + case 'PlaneGeometry': + case 'PlaneBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.width, + data.height, + data.widthSegments, + data.heightSegments + ); + + break; + + case 'BoxGeometry': + case 'BoxBufferGeometry': + case 'CubeGeometry': // backwards compatible + + geometry = new Geometries[ data.type ]( + data.width, + data.height, + data.depth, + data.widthSegments, + data.heightSegments, + data.depthSegments + ); + + break; + + case 'CircleGeometry': + case 'CircleBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.segments, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'CylinderGeometry': + case 'CylinderBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radiusTop, + data.radiusBottom, + data.height, + data.radialSegments, + data.heightSegments, + data.openEnded, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'ConeGeometry': + case 'ConeBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.height, + data.radialSegments, + data.heightSegments, + data.openEnded, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'SphereGeometry': + case 'SphereBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.widthSegments, + data.heightSegments, + data.phiStart, + data.phiLength, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'DodecahedronGeometry': + case 'DodecahedronBufferGeometry': + case 'IcosahedronGeometry': + case 'IcosahedronBufferGeometry': + case 'OctahedronGeometry': + case 'OctahedronBufferGeometry': + case 'TetrahedronGeometry': + case 'TetrahedronBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.detail + ); + + break; + + case 'RingGeometry': + case 'RingBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.innerRadius, + data.outerRadius, + data.thetaSegments, + data.phiSegments, + data.thetaStart, + data.thetaLength + ); + + break; + + case 'TorusGeometry': + case 'TorusBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.tube, + data.radialSegments, + data.tubularSegments, + data.arc + ); + + break; + + case 'TorusKnotGeometry': + case 'TorusKnotBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.radius, + data.tube, + data.tubularSegments, + data.radialSegments, + data.p, + data.q + ); + + break; + + case 'TubeGeometry': + case 'TubeBufferGeometry': + + // This only works for built-in curves (e.g. CatmullRomCurve3). + // User defined curves or instances of CurvePath will not be deserialized. + geometry = new Geometries[ data.type ]( + new Curves[ data.path.type ]().fromJSON( data.path ), + data.tubularSegments, + data.radius, + data.radialSegments, + data.closed + ); + + break; + + case 'LatheGeometry': + case 'LatheBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.points, + data.segments, + data.phiStart, + data.phiLength + ); + + break; + + case 'PolyhedronGeometry': + case 'PolyhedronBufferGeometry': + + geometry = new Geometries[ data.type ]( + data.vertices, + data.indices, + data.radius, + data.details + ); + + break; + + case 'ShapeGeometry': + case 'ShapeBufferGeometry': + + var geometryShapes = []; + + for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { + + var shape = shapes[ data.shapes[ j ] ]; + + geometryShapes.push( shape ); + + } + + geometry = new Geometries[ data.type ]( + geometryShapes, + data.curveSegments + ); + + break; + + + case 'ExtrudeGeometry': + case 'ExtrudeBufferGeometry': + + var geometryShapes = []; + + for ( var j = 0, jl = data.shapes.length; j < jl; j ++ ) { + + var shape = shapes[ data.shapes[ j ] ]; + + geometryShapes.push( shape ); + + } + + var extrudePath = data.options.extrudePath; + + if ( extrudePath !== undefined ) { + + data.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath ); + + } + + geometry = new Geometries[ data.type ]( + geometryShapes, + data.options + ); + + break; + + case 'BufferGeometry': + case 'InstancedBufferGeometry': + + geometry = bufferGeometryLoader.parse( data ); + + break; + + case 'Geometry': + + if ( 'THREE' in window && 'LegacyJSONLoader' in THREE ) { + + var geometryLoader = new THREE.LegacyJSONLoader(); + geometry = geometryLoader.parse( data, this.resourcePath ).geometry; + + + } else { + + console.error( 'THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type "Geometry".' ); + + } + + break; + + default: + + console.warn( 'THREE.ObjectLoader: Unsupported geometry type "' + data.type + '"' ); + + continue; + + } + + geometry.uuid = data.uuid; + + if ( data.name !== undefined ) { geometry.name = data.name; } + if ( geometry.isBufferGeometry === true && data.userData !== undefined ) { geometry.userData = data.userData; } + + geometries[ data.uuid ] = geometry; + + } + + } + + return geometries; + + }, + + parseMaterials: function ( json, textures ) { + + var cache = {}; // MultiMaterial + var materials = {}; + + if ( json !== undefined ) { + + var loader = new MaterialLoader(); + loader.setTextures( textures ); + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var data = json[ i ]; + + if ( data.type === 'MultiMaterial' ) { + + // Deprecated + + var array = []; + + for ( var j = 0; j < data.materials.length; j ++ ) { + + var material = data.materials[ j ]; + + if ( cache[ material.uuid ] === undefined ) { + + cache[ material.uuid ] = loader.parse( material ); + + } + + array.push( cache[ material.uuid ] ); + + } + + materials[ data.uuid ] = array; + + } else { + + if ( cache[ data.uuid ] === undefined ) { + + cache[ data.uuid ] = loader.parse( data ); + + } + + materials[ data.uuid ] = cache[ data.uuid ]; + + } + + } + + } + + return materials; + + }, + + parseAnimations: function ( json ) { + + var animations = []; + + for ( var i = 0; i < json.length; i ++ ) { + + var data = json[ i ]; + + var clip = AnimationClip.parse( data ); + + if ( data.uuid !== undefined ) { clip.uuid = data.uuid; } + + animations.push( clip ); + + } + + return animations; + + }, + + parseImages: function ( json, onLoad ) { + + var scope = this; + var images = {}; + + function loadImage( url ) { + + scope.manager.itemStart( url ); + + return loader.load( url, function () { + + scope.manager.itemEnd( url ); + + }, undefined, function () { + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } ); + + } + + if ( json !== undefined && json.length > 0 ) { + + var manager = new LoadingManager( onLoad ); + + var loader = new ImageLoader( manager ); + loader.setCrossOrigin( this.crossOrigin ); + + for ( var i = 0, il = json.length; i < il; i ++ ) { + + var image = json[ i ]; + var url = image.url; + + if ( Array.isArray( url ) ) { + + // load array of images e.g CubeTexture + + images[ image.uuid ] = []; + + for ( var j = 0, jl = url.length; j < jl; j ++ ) { + + var currentUrl = url[ j ]; + + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.resourcePath + currentUrl; + + images[ image.uuid ].push( loadImage( path ) ); + + } + + } else { + + // load single image + + var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.resourcePath + image.url; + + images[ image.uuid ] = loadImage( path ); + + } + + } + + } + + return images; + + }, + + parseTextures: function ( json, images ) { + + function parseConstant( value, type ) { + + if ( typeof value === 'number' ) { return value; } + + console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value ); + + return type[ value ]; + + } + + var textures = {}; + + if ( json !== undefined ) { + + for ( var i = 0, l = json.length; i < l; i ++ ) { + + var data = json[ i ]; + + if ( data.image === undefined ) { + + console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid ); + + } + + if ( images[ data.image ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined image', data.image ); + + } + + var texture; + + if ( Array.isArray( images[ data.image ] ) ) { + + texture = new CubeTexture( images[ data.image ] ); + + } else { + + texture = new Texture( images[ data.image ] ); + + } + + texture.needsUpdate = true; + + texture.uuid = data.uuid; + + if ( data.name !== undefined ) { texture.name = data.name; } + + if ( data.mapping !== undefined ) { texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING ); } + + if ( data.offset !== undefined ) { texture.offset.fromArray( data.offset ); } + if ( data.repeat !== undefined ) { texture.repeat.fromArray( data.repeat ); } + if ( data.center !== undefined ) { texture.center.fromArray( data.center ); } + if ( data.rotation !== undefined ) { texture.rotation = data.rotation; } + + if ( data.wrap !== undefined ) { + + texture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING ); + texture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING ); + + } + + if ( data.format !== undefined ) { texture.format = data.format; } + if ( data.type !== undefined ) { texture.type = data.type; } + if ( data.encoding !== undefined ) { texture.encoding = data.encoding; } + + if ( data.minFilter !== undefined ) { texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER ); } + if ( data.magFilter !== undefined ) { texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER ); } + if ( data.anisotropy !== undefined ) { texture.anisotropy = data.anisotropy; } + + if ( data.flipY !== undefined ) { texture.flipY = data.flipY; } + + if ( data.premultiplyAlpha !== undefined ) { texture.premultiplyAlpha = data.premultiplyAlpha; } + if ( data.unpackAlignment !== undefined ) { texture.unpackAlignment = data.unpackAlignment; } + + textures[ data.uuid ] = texture; + + } + + } + + return textures; + + }, + + parseObject: function ( data, geometries, materials ) { + + var object; + + function getGeometry( name ) { + + if ( geometries[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined geometry', name ); + + } + + return geometries[ name ]; + + } + + function getMaterial( name ) { + + if ( name === undefined ) { return undefined; } + + if ( Array.isArray( name ) ) { + + var array = []; + + for ( var i = 0, l = name.length; i < l; i ++ ) { + + var uuid = name[ i ]; + + if ( materials[ uuid ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', uuid ); + + } + + array.push( materials[ uuid ] ); + + } + + return array; + + } + + if ( materials[ name ] === undefined ) { + + console.warn( 'THREE.ObjectLoader: Undefined material', name ); + + } + + return materials[ name ]; + + } + + switch ( data.type ) { + + case 'Scene': + + object = new Scene(); + + if ( data.background !== undefined ) { + + if ( Number.isInteger( data.background ) ) { + + object.background = new Color( data.background ); + + } + + } + + if ( data.fog !== undefined ) { + + if ( data.fog.type === 'Fog' ) { + + object.fog = new Fog( data.fog.color, data.fog.near, data.fog.far ); + + } else if ( data.fog.type === 'FogExp2' ) { + + object.fog = new FogExp2( data.fog.color, data.fog.density ); + + } + + } + + break; + + case 'PerspectiveCamera': + + object = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far ); + + if ( data.focus !== undefined ) { object.focus = data.focus; } + if ( data.zoom !== undefined ) { object.zoom = data.zoom; } + if ( data.filmGauge !== undefined ) { object.filmGauge = data.filmGauge; } + if ( data.filmOffset !== undefined ) { object.filmOffset = data.filmOffset; } + if ( data.view !== undefined ) { object.view = Object.assign( {}, data.view ); } + + break; + + case 'OrthographicCamera': + + object = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far ); + + if ( data.zoom !== undefined ) { object.zoom = data.zoom; } + if ( data.view !== undefined ) { object.view = Object.assign( {}, data.view ); } + + break; + + case 'AmbientLight': + + object = new AmbientLight( data.color, data.intensity ); + + break; + + case 'DirectionalLight': + + object = new DirectionalLight( data.color, data.intensity ); + + break; + + case 'PointLight': + + object = new PointLight( data.color, data.intensity, data.distance, data.decay ); + + break; + + case 'RectAreaLight': + + object = new RectAreaLight( data.color, data.intensity, data.width, data.height ); + + break; + + case 'SpotLight': + + object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay ); + + break; + + case 'HemisphereLight': + + object = new HemisphereLight( data.color, data.groundColor, data.intensity ); + + break; + + case 'SkinnedMesh': + + console.warn( 'THREE.ObjectLoader.parseObject() does not support SkinnedMesh yet.' ); + + case 'Mesh': + + var geometry = getGeometry( data.geometry ); + var material = getMaterial( data.material ); + + if ( geometry.bones && geometry.bones.length > 0 ) { + + object = new SkinnedMesh( geometry, material ); + + } else { + + object = new Mesh( geometry, material ); + + } + + if ( data.drawMode !== undefined ) { object.setDrawMode( data.drawMode ); } + + break; + + case 'LOD': + + object = new LOD(); + + break; + + case 'Line': + + object = new Line( getGeometry( data.geometry ), getMaterial( data.material ), data.mode ); + + break; + + case 'LineLoop': + + object = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'LineSegments': + + object = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'PointCloud': + case 'Points': + + object = new Points( getGeometry( data.geometry ), getMaterial( data.material ) ); + + break; + + case 'Sprite': + + object = new Sprite( getMaterial( data.material ) ); + + break; + + case 'Group': + + object = new Group(); + + break; + + default: + + object = new Object3D(); + + } + + object.uuid = data.uuid; + + if ( data.name !== undefined ) { object.name = data.name; } + + if ( data.matrix !== undefined ) { + + object.matrix.fromArray( data.matrix ); + + if ( data.matrixAutoUpdate !== undefined ) { object.matrixAutoUpdate = data.matrixAutoUpdate; } + if ( object.matrixAutoUpdate ) { object.matrix.decompose( object.position, object.quaternion, object.scale ); } + + } else { + + if ( data.position !== undefined ) { object.position.fromArray( data.position ); } + if ( data.rotation !== undefined ) { object.rotation.fromArray( data.rotation ); } + if ( data.quaternion !== undefined ) { object.quaternion.fromArray( data.quaternion ); } + if ( data.scale !== undefined ) { object.scale.fromArray( data.scale ); } + + } + + if ( data.castShadow !== undefined ) { object.castShadow = data.castShadow; } + if ( data.receiveShadow !== undefined ) { object.receiveShadow = data.receiveShadow; } + + if ( data.shadow ) { + + if ( data.shadow.bias !== undefined ) { object.shadow.bias = data.shadow.bias; } + if ( data.shadow.radius !== undefined ) { object.shadow.radius = data.shadow.radius; } + if ( data.shadow.mapSize !== undefined ) { object.shadow.mapSize.fromArray( data.shadow.mapSize ); } + if ( data.shadow.camera !== undefined ) { object.shadow.camera = this.parseObject( data.shadow.camera ); } + + } + + if ( data.visible !== undefined ) { object.visible = data.visible; } + if ( data.frustumCulled !== undefined ) { object.frustumCulled = data.frustumCulled; } + if ( data.renderOrder !== undefined ) { object.renderOrder = data.renderOrder; } + if ( data.userData !== undefined ) { object.userData = data.userData; } + if ( data.layers !== undefined ) { object.layers.mask = data.layers; } + + if ( data.children !== undefined ) { + + var children = data.children; + + for ( var i = 0; i < children.length; i ++ ) { + + object.add( this.parseObject( children[ i ], geometries, materials ) ); + + } + + } + + if ( data.type === 'LOD' ) { + + var levels = data.levels; + + for ( var l = 0; l < levels.length; l ++ ) { + + var level = levels[ l ]; + var child = object.getObjectByProperty( 'uuid', level.object ); + + if ( child !== undefined ) { + + object.addLevel( child, level.distance ); + + } + + } + + } + + return object; + + } + + } ); + + var TEXTURE_MAPPING = { + UVMapping: UVMapping, + CubeReflectionMapping: CubeReflectionMapping, + CubeRefractionMapping: CubeRefractionMapping, + EquirectangularReflectionMapping: EquirectangularReflectionMapping, + EquirectangularRefractionMapping: EquirectangularRefractionMapping, + SphericalReflectionMapping: SphericalReflectionMapping, + CubeUVReflectionMapping: CubeUVReflectionMapping, + CubeUVRefractionMapping: CubeUVRefractionMapping + }; + + var TEXTURE_WRAPPING = { + RepeatWrapping: RepeatWrapping, + ClampToEdgeWrapping: ClampToEdgeWrapping, + MirroredRepeatWrapping: MirroredRepeatWrapping + }; + + var TEXTURE_FILTER = { + NearestFilter: NearestFilter, + NearestMipmapNearestFilter: NearestMipmapNearestFilter, + NearestMipmapLinearFilter: NearestMipmapLinearFilter, + LinearFilter: LinearFilter, + LinearMipmapNearestFilter: LinearMipmapNearestFilter, + LinearMipmapLinearFilter: LinearMipmapLinearFilter + }; + + /** + * @author thespite / http://clicktorelease.com/ + */ + + + function ImageBitmapLoader( manager ) { + + if ( typeof createImageBitmap === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' ); + + } + + if ( typeof fetch === 'undefined' ) { + + console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' ); + + } + + Loader.call( this, manager ); + + this.options = undefined; + + } + + ImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: ImageBitmapLoader, + + setOptions: function setOptions( options ) { + + this.options = options; + + return this; + + }, + + load: function ( url, onLoad, onProgress, onError ) { + + if ( url === undefined ) { url = ''; } + + if ( this.path !== undefined ) { url = this.path + url; } + + url = this.manager.resolveURL( url ); + + var scope = this; + + var cached = Cache.get( url ); + + if ( cached !== undefined ) { + + scope.manager.itemStart( url ); + + setTimeout( function () { + + if ( onLoad ) { onLoad( cached ); } + + scope.manager.itemEnd( url ); + + }, 0 ); + + return cached; + + } + + fetch( url ).then( function ( res ) { + + return res.blob(); + + } ).then( function ( blob ) { + + if ( scope.options === undefined ) { + + // Workaround for FireFox. It causes an error if you pass options. + return createImageBitmap( blob ); + + } else { + + return createImageBitmap( blob, scope.options ); + + } + + } ).then( function ( imageBitmap ) { + + Cache.add( url, imageBitmap ); + + if ( onLoad ) { onLoad( imageBitmap ); } + + scope.manager.itemEnd( url ); + + } ).catch( function ( e ) { + + if ( onError ) { onError( e ); } + + scope.manager.itemError( url ); + scope.manager.itemEnd( url ); + + } ); + + scope.manager.itemStart( url ); + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * minimal class for proxing functions to Path. Replaces old "extractSubpaths()" + **/ + + function ShapePath() { + + this.type = 'ShapePath'; + + this.color = new Color(); + + this.subPaths = []; + this.currentPath = null; + + } + + Object.assign( ShapePath.prototype, { + + moveTo: function ( x, y ) { + + this.currentPath = new Path(); + this.subPaths.push( this.currentPath ); + this.currentPath.moveTo( x, y ); + + }, + + lineTo: function ( x, y ) { + + this.currentPath.lineTo( x, y ); + + }, + + quadraticCurveTo: function ( aCPx, aCPy, aX, aY ) { + + this.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY ); + + }, + + bezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) { + + this.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ); + + }, + + splineThru: function ( pts ) { + + this.currentPath.splineThru( pts ); + + }, + + toShapes: function ( isCCW, noHoles ) { + + function toShapesNoHoles( inSubpaths ) { + + var shapes = []; + + for ( var i = 0, l = inSubpaths.length; i < l; i ++ ) { + + var tmpPath = inSubpaths[ i ]; + + var tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + + shapes.push( tmpShape ); + + } + + return shapes; + + } + + function isPointInsidePolygon( inPt, inPolygon ) { + + var polyLen = inPolygon.length; + + // inPt on polygon contour => immediate success or + // toggling of inside/outside at every single! intersection point of an edge + // with the horizontal line through inPt, left of inPt + // not counting lowerY endpoints of edges and whole edges on that line + var inside = false; + for ( var p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) { + + var edgeLowPt = inPolygon[ p ]; + var edgeHighPt = inPolygon[ q ]; + + var edgeDx = edgeHighPt.x - edgeLowPt.x; + var edgeDy = edgeHighPt.y - edgeLowPt.y; + + if ( Math.abs( edgeDy ) > Number.EPSILON ) { + + // not parallel + if ( edgeDy < 0 ) { + + edgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx; + edgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy; + + } + if ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) { continue; } + + if ( inPt.y === edgeLowPt.y ) { + + if ( inPt.x === edgeLowPt.x ) { return true; } // inPt is on contour ? + // continue; // no intersection or edgeLowPt => doesn't count !!! + + } else { + + var perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y ); + if ( perpEdge === 0 ) { return true; } // inPt is on contour ? + if ( perpEdge < 0 ) { continue; } + inside = ! inside; // true intersection left of inPt + + } + + } else { + + // parallel or collinear + if ( inPt.y !== edgeLowPt.y ) { continue; } // parallel + // edge lies on the same horizontal line as inPt + if ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) || + ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) ) { return true; } // inPt: Point on contour ! + // continue; + + } + + } + + return inside; + + } + + var isClockWise = ShapeUtils.isClockWise; + + var subPaths = this.subPaths; + if ( subPaths.length === 0 ) { return []; } + + if ( noHoles === true ) { return toShapesNoHoles( subPaths ); } + + + var solid, tmpPath, tmpShape, shapes = []; + + if ( subPaths.length === 1 ) { + + tmpPath = subPaths[ 0 ]; + tmpShape = new Shape(); + tmpShape.curves = tmpPath.curves; + shapes.push( tmpShape ); + return shapes; + + } + + var holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() ); + holesFirst = isCCW ? ! holesFirst : holesFirst; + + // console.log("Holes first", holesFirst); + + var betterShapeHoles = []; + var newShapes = []; + var newShapeHoles = []; + var mainIdx = 0; + var tmpPoints; + + newShapes[ mainIdx ] = undefined; + newShapeHoles[ mainIdx ] = []; + + for ( var i = 0, l = subPaths.length; i < l; i ++ ) { + + tmpPath = subPaths[ i ]; + tmpPoints = tmpPath.getPoints(); + solid = isClockWise( tmpPoints ); + solid = isCCW ? ! solid : solid; + + if ( solid ) { + + if ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) ) { mainIdx ++; } + + newShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints }; + newShapes[ mainIdx ].s.curves = tmpPath.curves; + + if ( holesFirst ) { mainIdx ++; } + newShapeHoles[ mainIdx ] = []; + + //console.log('cw', i); + + } else { + + newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } ); + + //console.log('ccw', i); + + } + + } + + // only Holes? -> probably all Shapes with wrong orientation + if ( ! newShapes[ 0 ] ) { return toShapesNoHoles( subPaths ); } + + + if ( newShapes.length > 1 ) { + + var ambiguous = false; + var toChange = []; + + for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + betterShapeHoles[ sIdx ] = []; + + } + + for ( var sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) { + + var sho = newShapeHoles[ sIdx ]; + + for ( var hIdx = 0; hIdx < sho.length; hIdx ++ ) { + + var ho = sho[ hIdx ]; + var hole_unassigned = true; + + for ( var s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) { + + if ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) { + + if ( sIdx !== s2Idx ) { toChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } ); } + if ( hole_unassigned ) { + + hole_unassigned = false; + betterShapeHoles[ s2Idx ].push( ho ); + + } else { + + ambiguous = true; + + } + + } + + } + if ( hole_unassigned ) { + + betterShapeHoles[ sIdx ].push( ho ); + + } + + } + + } + // console.log("ambiguous: ", ambiguous); + if ( toChange.length > 0 ) { + + // console.log("to change: ", toChange); + if ( ! ambiguous ) { newShapeHoles = betterShapeHoles; } + + } + + } + + var tmpHoles; + + for ( var i = 0, il = newShapes.length; i < il; i ++ ) { + + tmpShape = newShapes[ i ].s; + shapes.push( tmpShape ); + tmpHoles = newShapeHoles[ i ]; + + for ( var j = 0, jl = tmpHoles.length; j < jl; j ++ ) { + + tmpShape.holes.push( tmpHoles[ j ].h ); + + } + + } + + //console.log("shape", shapes); + + return shapes; + + } + + } ); + + /** + * @author zz85 / http://www.lab4games.net/zz85/blog + * @author mrdoob / http://mrdoob.com/ + */ + + + function Font( data ) { + + this.type = 'Font'; + + this.data = data; + + } + + Object.assign( Font.prototype, { + + isFont: true, + + generateShapes: function ( text, size ) { + + if ( size === undefined ) { size = 100; } + + var shapes = []; + var paths = createPaths( text, size, this.data ); + + for ( var p = 0, pl = paths.length; p < pl; p ++ ) { + + Array.prototype.push.apply( shapes, paths[ p ].toShapes() ); + + } + + return shapes; + + } + + } ); + + function createPaths( text, size, data ) { + + var chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // see #13988 + var scale = size / data.resolution; + var line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale; + + var paths = []; + + var offsetX = 0, offsetY = 0; + + for ( var i = 0; i < chars.length; i ++ ) { + + var char = chars[ i ]; + + if ( char === '\n' ) { + + offsetX = 0; + offsetY -= line_height; + + } else { + + var ret = createPath( char, scale, offsetX, offsetY, data ); + offsetX += ret.offsetX; + paths.push( ret.path ); + + } + + } + + return paths; + + } + + function createPath( char, scale, offsetX, offsetY, data ) { + + var glyph = data.glyphs[ char ] || data.glyphs[ '?' ]; + + if ( ! glyph ) { + + console.error( 'THREE.Font: character "' + char + '" does not exists in font family ' + data.familyName + '.' ); + + return; + + } + + var path = new ShapePath(); + + var x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2; + + if ( glyph.o ) { + + var outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) ); + + for ( var i = 0, l = outline.length; i < l; ) { + + var action = outline[ i ++ ]; + + switch ( action ) { + + case 'm': // moveTo + + x = outline[ i ++ ] * scale + offsetX; + y = outline[ i ++ ] * scale + offsetY; + + path.moveTo( x, y ); + + break; + + case 'l': // lineTo + + x = outline[ i ++ ] * scale + offsetX; + y = outline[ i ++ ] * scale + offsetY; + + path.lineTo( x, y ); + + break; + + case 'q': // quadraticCurveTo + + cpx = outline[ i ++ ] * scale + offsetX; + cpy = outline[ i ++ ] * scale + offsetY; + cpx1 = outline[ i ++ ] * scale + offsetX; + cpy1 = outline[ i ++ ] * scale + offsetY; + + path.quadraticCurveTo( cpx1, cpy1, cpx, cpy ); + + break; + + case 'b': // bezierCurveTo + + cpx = outline[ i ++ ] * scale + offsetX; + cpy = outline[ i ++ ] * scale + offsetY; + cpx1 = outline[ i ++ ] * scale + offsetX; + cpy1 = outline[ i ++ ] * scale + offsetY; + cpx2 = outline[ i ++ ] * scale + offsetX; + cpy2 = outline[ i ++ ] * scale + offsetY; + + path.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy ); + + break; + + } + + } + + } + + return { offsetX: glyph.ha * scale, path: path }; + + } + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function FontLoader( manager ) { + + Loader.call( this, manager ); + + } + + FontLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: FontLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var scope = this; + + var loader = new FileLoader( this.manager ); + loader.setPath( this.path ); + loader.load( url, function ( text ) { + + var json; + + try { + + json = JSON.parse( text ); + + } catch ( e ) { + + console.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' ); + json = JSON.parse( text.substring( 65, text.length - 2 ) ); + + } + + var font = scope.parse( json ); + + if ( onLoad ) { onLoad( font ); } + + }, onProgress, onError ); + + }, + + parse: function ( json ) { + + return new Font( json ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var _context; + + var AudioContext = { + + getContext: function () { + + if ( _context === undefined ) { + + _context = new ( window.AudioContext || window.webkitAudioContext )(); + + } + + return _context; + + }, + + setContext: function ( value ) { + + _context = value; + + } + + }; + + /** + * @author Reece Aaron Lecrivain / http://reecenotes.com/ + */ + + function AudioLoader( manager ) { + + Loader.call( this, manager ); + + } + + AudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), { + + constructor: AudioLoader, + + load: function ( url, onLoad, onProgress, onError ) { + + var loader = new FileLoader( this.manager ); + loader.setResponseType( 'arraybuffer' ); + loader.setPath( this.path ); + loader.load( url, function ( buffer ) { + + // Create a copy of the buffer. The `decodeAudioData` method + // detaches the buffer when complete, preventing reuse. + var bufferCopy = buffer.slice( 0 ); + + var context = AudioContext.getContext(); + context.decodeAudioData( bufferCopy, function ( audioBuffer ) { + + onLoad( audioBuffer ); + + } ); + + }, onProgress, onError ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * Primary reference: + * https://graphics.stanford.edu/papers/envmap/envmap.pdf + * + * Secondary reference: + * https://www.ppsloan.org/publications/StupidSH36.pdf + */ + + // 3-band SH defined by 9 coefficients + + function SphericalHarmonics3() { + + this.coefficients = []; + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients.push( new Vector3() ); + + } + + } + + Object.assign( SphericalHarmonics3.prototype, { + + isSphericalHarmonics3: true, + + set: function ( coefficients ) { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].copy( coefficients[ i ] ); + + } + + return this; + + }, + + zero: function () { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].set( 0, 0, 0 ); + + } + + return this; + + }, + + // get the radiance in the direction of the normal + // target is a Vector3 + getAt: function ( normal, target ) { + + // normal is assumed to be unit length + + var x = normal.x, y = normal.y, z = normal.z; + + var coeff = this.coefficients; + + // band 0 + target.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 ); + + // band 1 + target.addScale( coeff[ 1 ], 0.488603 * y ); + target.addScale( coeff[ 2 ], 0.488603 * z ); + target.addScale( coeff[ 3 ], 0.488603 * x ); + + // band 2 + target.addScale( coeff[ 4 ], 1.092548 * ( x * y ) ); + target.addScale( coeff[ 5 ], 1.092548 * ( y * z ) ); + target.addScale( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) ); + target.addScale( coeff[ 7 ], 1.092548 * ( x * z ) ); + target.addScale( coeff[ 8 ], 0.546274 * ( x * x - y * y ) ); + + return target; + + }, + + // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal + // target is a Vector3 + // https://graphics.stanford.edu/papers/envmap/envmap.pdf + getIrradianceAt: function ( normal, target ) { + + // normal is assumed to be unit length + + var x = normal.x, y = normal.y, z = normal.z; + + var coeff = this.coefficients; + + // band 0 + target.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095 + + // band 1 + target.addScale( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603 + target.addScale( coeff[ 2 ], 2.0 * 0.511664 * z ); + target.addScale( coeff[ 3 ], 2.0 * 0.511664 * x ); + + // band 2 + target.addScale( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548 + target.addScale( coeff[ 5 ], 2.0 * 0.429043 * y * z ); + target.addScale( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3 + target.addScale( coeff[ 7 ], 2.0 * 0.429043 * x * z ); + target.addScale( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274 + + return target; + + }, + + add: function ( sh ) { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].add( sh.coefficients[ i ] ); + + } + + return this; + + }, + + + scale: function ( s ) { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].multiplyScalar( s ); + + } + + return this; + + }, + + lerp: function ( sh, alpha ) { + + for ( var i = 0; i < 9; i ++ ) { + + this.coefficients[ i ].lerp( sh.coefficients[ i ], alpha ); + + } + + return this; + + }, + + equals: function ( sh ) { + + for ( var i = 0; i < 9; i ++ ) { + + if ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) { + + return false; + + } + + } + + return true; + + }, + + copy: function ( sh ) { + + return this.set( sh.coefficients ); + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + fromArray: function ( array, offset ) { + + if ( offset === undefined ) { offset = 0; } + + var coefficients = this.coefficients; + + for ( var i = 0; i < 9; i ++ ) { + + coefficients[ i ].fromArray( array, offset + ( i * 3 ) ); + + } + + return this; + + }, + + toArray: function ( array, offset ) { + + if ( array === undefined ) { array = []; } + if ( offset === undefined ) { offset = 0; } + + var coefficients = this.coefficients; + + for ( var i = 0; i < 9; i ++ ) { + + coefficients[ i ].toArray( array, offset + ( i * 3 ) ); + + } + + return array; + + } + + } ); + + Object.assign( SphericalHarmonics3, { + + // evaluate the basis functions + // shBasis is an Array[ 9 ] + getBasisAt: function ( normal, shBasis ) { + + // normal is assumed to be unit length + + var x = normal.x, y = normal.y, z = normal.z; + + // band 0 + shBasis[ 0 ] = 0.282095; + + // band 1 + shBasis[ 1 ] = 0.488603 * y; + shBasis[ 2 ] = 0.488603 * z; + shBasis[ 3 ] = 0.488603 * x; + + // band 2 + shBasis[ 4 ] = 1.092548 * x * y; + shBasis[ 5 ] = 1.092548 * y * z; + shBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 ); + shBasis[ 7 ] = 1.092548 * x * z; + shBasis[ 8 ] = 0.546274 * ( x * x - y * y ); + + } + + } ); + + /** + * @author WestLangley / http://github.com/WestLangley + * + * A LightProbe is a source of indirect-diffuse light + */ + + function LightProbe( sh, intensity ) { + + Light.call( this, undefined, intensity ); + + this.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3(); + + } + + LightProbe.prototype = Object.assign( Object.create( Light.prototype ), { + + constructor: LightProbe, + + isLightProbe: true, + + copy: function ( source ) { + + Light.prototype.copy.call( this, source ); + + this.sh.copy( source.sh ); + this.intensity = source.intensity; + + return this; + + }, + + toJSON: function ( meta ) { + + var data = Light.prototype.toJSON.call( this, meta ); + + // data.sh = this.sh.toArray(); // todo + + return data; + + } + + } ); + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function HemisphereLightProbe( skyColor, groundColor, intensity ) { + + LightProbe.call( this, undefined, intensity ); + + var color1 = new Color().set( skyColor ); + var color2 = new Color().set( groundColor ); + + var sky = new Vector3( color1.r, color1.g, color1.b ); + var ground = new Vector3( color2.r, color2.g, color2.b ); + + // without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI ); + var c0 = Math.sqrt( Math.PI ); + var c1 = c0 * Math.sqrt( 0.75 ); + + this.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 ); + this.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 ); + + } + + HemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), { + + constructor: HemisphereLightProbe, + + isHemisphereLightProbe: true, + + copy: function ( source ) { // modifying colors not currently supported + + LightProbe.prototype.copy.call( this, source ); + + return this; + + }, + + toJSON: function ( meta ) { + + var data = LightProbe.prototype.toJSON.call( this, meta ); + + // data.sh = this.sh.toArray(); // todo + + return data; + + } + + } ); + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function AmbientLightProbe( color, intensity ) { + + LightProbe.call( this, undefined, intensity ); + + var color1 = new Color().set( color ); + + // without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI ); + this.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) ); + + } + + AmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), { + + constructor: AmbientLightProbe, + + isAmbientLightProbe: true, + + copy: function ( source ) { // modifying color not currently supported + + LightProbe.prototype.copy.call( this, source ); + + return this; + + }, + + toJSON: function ( meta ) { + + var data = LightProbe.prototype.toJSON.call( this, meta ); + + // data.sh = this.sh.toArray(); // todo + + return data; + + } + + } ); + + var _eyeRight = new Matrix4(); + var _eyeLeft = new Matrix4(); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function StereoCamera() { + + this.type = 'StereoCamera'; + + this.aspect = 1; + + this.eyeSep = 0.064; + + this.cameraL = new PerspectiveCamera(); + this.cameraL.layers.enable( 1 ); + this.cameraL.matrixAutoUpdate = false; + + this.cameraR = new PerspectiveCamera(); + this.cameraR.layers.enable( 2 ); + this.cameraR.matrixAutoUpdate = false; + + this._cache = { + focus: null, + fov: null, + aspect: null, + near: null, + far: null, + zoom: null, + eyeSep: null + }; + + } + + Object.assign( StereoCamera.prototype, { + + update: function ( camera ) { + + var cache = this._cache; + + var needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov || + cache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near || + cache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep; + + if ( needsUpdate ) { + + cache.focus = camera.focus; + cache.fov = camera.fov; + cache.aspect = camera.aspect * this.aspect; + cache.near = camera.near; + cache.far = camera.far; + cache.zoom = camera.zoom; + cache.eyeSep = this.eyeSep; + + // Off-axis stereoscopic effect based on + // http://paulbourke.net/stereographics/stereorender/ + + var projectionMatrix = camera.projectionMatrix.clone(); + var eyeSepHalf = cache.eyeSep / 2; + var eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus; + var ymax = ( cache.near * Math.tan( _Math.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom; + var xmin, xmax; + + // translate xOffset + + _eyeLeft.elements[ 12 ] = - eyeSepHalf; + _eyeRight.elements[ 12 ] = eyeSepHalf; + + // for left eye + + xmin = - ymax * cache.aspect + eyeSepOnProjection; + xmax = ymax * cache.aspect + eyeSepOnProjection; + + projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin ); + projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraL.projectionMatrix.copy( projectionMatrix ); + + // for right eye + + xmin = - ymax * cache.aspect - eyeSepOnProjection; + xmax = ymax * cache.aspect - eyeSepOnProjection; + + projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin ); + projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin ); + + this.cameraR.projectionMatrix.copy( projectionMatrix ); + + } + + this.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft ); + this.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight ); + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function Clock( autoStart ) { + + this.autoStart = ( autoStart !== undefined ) ? autoStart : true; + + this.startTime = 0; + this.oldTime = 0; + this.elapsedTime = 0; + + this.running = false; + + } + + Object.assign( Clock.prototype, { + + start: function () { + + this.startTime = ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732 + + this.oldTime = this.startTime; + this.elapsedTime = 0; + this.running = true; + + }, + + stop: function () { + + this.getElapsedTime(); + this.running = false; + this.autoStart = false; + + }, + + getElapsedTime: function () { + + this.getDelta(); + return this.elapsedTime; + + }, + + getDelta: function () { + + var diff = 0; + + if ( this.autoStart && ! this.running ) { + + this.start(); + return 0; + + } + + if ( this.running ) { + + var newTime = ( typeof performance === 'undefined' ? Date : performance ).now(); + + diff = ( newTime - this.oldTime ) / 1000; + this.oldTime = newTime; + + this.elapsedTime += diff; + + } + + return diff; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var _position$2 = new Vector3(); + var _quaternion$3 = new Quaternion(); + var _scale$1 = new Vector3(); + var _orientation = new Vector3(); + + function AudioListener() { + + Object3D.call( this ); + + this.type = 'AudioListener'; + + this.context = AudioContext.getContext(); + + this.gain = this.context.createGain(); + this.gain.connect( this.context.destination ); + + this.filter = null; + + this.timeDelta = 0; + + // private + + this._clock = new Clock(); + + } + + AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: AudioListener, + + getInput: function () { + + return this.gain; + + }, + + removeFilter: function ( ) { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + this.gain.connect( this.context.destination ); + this.filter = null; + + } + + return this; + + }, + + getFilter: function () { + + return this.filter; + + }, + + setFilter: function ( value ) { + + if ( this.filter !== null ) { + + this.gain.disconnect( this.filter ); + this.filter.disconnect( this.context.destination ); + + } else { + + this.gain.disconnect( this.context.destination ); + + } + + this.filter = value; + this.gain.connect( this.filter ); + this.filter.connect( this.context.destination ); + + return this; + + }, + + getMasterVolume: function () { + + return this.gain.gain.value; + + }, + + setMasterVolume: function ( value ) { + + this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + + return this; + + }, + + updateMatrixWorld: function ( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + var listener = this.context.listener; + var up = this.up; + + this.timeDelta = this._clock.getDelta(); + + this.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 ); + + _orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 ); + + if ( listener.positionX ) { + + // code path for Chrome (see #14393) + + var endTime = this.context.currentTime + this.timeDelta; + + listener.positionX.linearRampToValueAtTime( _position$2.x, endTime ); + listener.positionY.linearRampToValueAtTime( _position$2.y, endTime ); + listener.positionZ.linearRampToValueAtTime( _position$2.z, endTime ); + listener.forwardX.linearRampToValueAtTime( _orientation.x, endTime ); + listener.forwardY.linearRampToValueAtTime( _orientation.y, endTime ); + listener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime ); + listener.upX.linearRampToValueAtTime( up.x, endTime ); + listener.upY.linearRampToValueAtTime( up.y, endTime ); + listener.upZ.linearRampToValueAtTime( up.z, endTime ); + + } else { + + listener.setPosition( _position$2.x, _position$2.y, _position$2.z ); + listener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z ); + + } + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Reece Aaron Lecrivain / http://reecenotes.com/ + */ + + function Audio( listener ) { + + Object3D.call( this ); + + this.type = 'Audio'; + + this.listener = listener; + this.context = listener.context; + + this.gain = this.context.createGain(); + this.gain.connect( listener.getInput() ); + + this.autoplay = false; + + this.buffer = null; + this.detune = 0; + this.loop = false; + this.startTime = 0; + this.offset = 0; + this.duration = undefined; + this.playbackRate = 1; + this.isPlaying = false; + this.hasPlaybackControl = true; + this.sourceType = 'empty'; + + this.filters = []; + + } + + Audio.prototype = Object.assign( Object.create( Object3D.prototype ), { + + constructor: Audio, + + getOutput: function () { + + return this.gain; + + }, + + setNodeSource: function ( audioNode ) { + + this.hasPlaybackControl = false; + this.sourceType = 'audioNode'; + this.source = audioNode; + this.connect(); + + return this; + + }, + + setMediaElementSource: function ( mediaElement ) { + + this.hasPlaybackControl = false; + this.sourceType = 'mediaNode'; + this.source = this.context.createMediaElementSource( mediaElement ); + this.connect(); + + return this; + + }, + + setMediaStreamSource: function ( mediaStream ) { + + this.hasPlaybackControl = false; + this.sourceType = 'mediaStreamNode'; + this.source = this.context.createMediaStreamSource( mediaStream ); + this.connect(); + + return this; + + }, + + setBuffer: function ( audioBuffer ) { + + this.buffer = audioBuffer; + this.sourceType = 'buffer'; + + if ( this.autoplay ) { this.play(); } + + return this; + + }, + + play: function () { + + if ( this.isPlaying === true ) { + + console.warn( 'THREE.Audio: Audio is already playing.' ); + return; + + } + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + var source = this.context.createBufferSource(); + + source.buffer = this.buffer; + source.loop = this.loop; + source.onended = this.onEnded.bind( this ); + this.startTime = this.context.currentTime; + source.start( this.startTime, this.offset, this.duration ); + + this.isPlaying = true; + + this.source = source; + + this.setDetune( this.detune ); + this.setPlaybackRate( this.playbackRate ); + + return this.connect(); + + }, + + pause: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + if ( this.isPlaying === true ) { + + this.source.stop(); + this.source.onended = null; + this.offset += ( this.context.currentTime - this.startTime ) * this.playbackRate; + this.isPlaying = false; + + } + + return this; + + }, + + stop: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.source.stop(); + this.source.onended = null; + this.offset = 0; + this.isPlaying = false; + + return this; + + }, + + connect: function () { + + if ( this.filters.length > 0 ) { + + this.source.connect( this.filters[ 0 ] ); + + for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].connect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].connect( this.getOutput() ); + + } else { + + this.source.connect( this.getOutput() ); + + } + + return this; + + }, + + disconnect: function () { + + if ( this.filters.length > 0 ) { + + this.source.disconnect( this.filters[ 0 ] ); + + for ( var i = 1, l = this.filters.length; i < l; i ++ ) { + + this.filters[ i - 1 ].disconnect( this.filters[ i ] ); + + } + + this.filters[ this.filters.length - 1 ].disconnect( this.getOutput() ); + + } else { + + this.source.disconnect( this.getOutput() ); + + } + + return this; + + }, + + getFilters: function () { + + return this.filters; + + }, + + setFilters: function ( value ) { + + if ( ! value ) { value = []; } + + if ( this.isPlaying === true ) { + + this.disconnect(); + this.filters = value; + this.connect(); + + } else { + + this.filters = value; + + } + + return this; + + }, + + setDetune: function ( value ) { + + this.detune = value; + + if ( this.source.detune === undefined ) { return; } // only set detune when available + + if ( this.isPlaying === true ) { + + this.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 ); + + } + + return this; + + }, + + getDetune: function () { + + return this.detune; + + }, + + getFilter: function () { + + return this.getFilters()[ 0 ]; + + }, + + setFilter: function ( filter ) { + + return this.setFilters( filter ? [ filter ] : [] ); + + }, + + setPlaybackRate: function ( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.playbackRate = value; + + if ( this.isPlaying === true ) { + + this.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 ); + + } + + return this; + + }, + + getPlaybackRate: function () { + + return this.playbackRate; + + }, + + onEnded: function () { + + this.isPlaying = false; + + }, + + getLoop: function () { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return false; + + } + + return this.loop; + + }, + + setLoop: function ( value ) { + + if ( this.hasPlaybackControl === false ) { + + console.warn( 'THREE.Audio: this Audio has no playback control.' ); + return; + + } + + this.loop = value; + + if ( this.isPlaying === true ) { + + this.source.loop = this.loop; + + } + + return this; + + }, + + getVolume: function () { + + return this.gain.gain.value; + + }, + + setVolume: function ( value ) { + + this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 ); + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + var _position$3 = new Vector3(); + var _quaternion$4 = new Quaternion(); + var _scale$2 = new Vector3(); + var _orientation$1 = new Vector3(); + + function PositionalAudio( listener ) { + + Audio.call( this, listener ); + + this.panner = this.context.createPanner(); + this.panner.panningModel = 'HRTF'; + this.panner.connect( this.gain ); + + } + + PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), { + + constructor: PositionalAudio, + + getOutput: function () { + + return this.panner; + + }, + + getRefDistance: function () { + + return this.panner.refDistance; + + }, + + setRefDistance: function ( value ) { + + this.panner.refDistance = value; + + return this; + + }, + + getRolloffFactor: function () { + + return this.panner.rolloffFactor; + + }, + + setRolloffFactor: function ( value ) { + + this.panner.rolloffFactor = value; + + return this; + + }, + + getDistanceModel: function () { + + return this.panner.distanceModel; + + }, + + setDistanceModel: function ( value ) { + + this.panner.distanceModel = value; + + return this; + + }, + + getMaxDistance: function () { + + return this.panner.maxDistance; + + }, + + setMaxDistance: function ( value ) { + + this.panner.maxDistance = value; + + return this; + + }, + + setDirectionalCone: function ( coneInnerAngle, coneOuterAngle, coneOuterGain ) { + + this.panner.coneInnerAngle = coneInnerAngle; + this.panner.coneOuterAngle = coneOuterAngle; + this.panner.coneOuterGain = coneOuterGain; + + return this; + + }, + + updateMatrixWorld: function ( force ) { + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + if ( this.hasPlaybackControl === true && this.isPlaying === false ) { return; } + + this.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 ); + + _orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 ); + + var panner = this.panner; + + if ( panner.positionX ) { + + // code path for Chrome and Firefox (see #14393) + + var endTime = this.context.currentTime + this.listener.timeDelta; + + panner.positionX.linearRampToValueAtTime( _position$3.x, endTime ); + panner.positionY.linearRampToValueAtTime( _position$3.y, endTime ); + panner.positionZ.linearRampToValueAtTime( _position$3.z, endTime ); + panner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime ); + panner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime ); + panner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime ); + + } else { + + panner.setPosition( _position$3.x, _position$3.y, _position$3.z ); + panner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z ); + + } + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function AudioAnalyser( audio, fftSize ) { + + this.analyser = audio.context.createAnalyser(); + this.analyser.fftSize = fftSize !== undefined ? fftSize : 2048; + + this.data = new Uint8Array( this.analyser.frequencyBinCount ); + + audio.getOutput().connect( this.analyser ); + + } + + Object.assign( AudioAnalyser.prototype, { + + getFrequencyData: function () { + + this.analyser.getByteFrequencyData( this.data ); + + return this.data; + + }, + + getAverageFrequency: function () { + + var value = 0, data = this.getFrequencyData(); + + for ( var i = 0; i < data.length; i ++ ) { + + value += data[ i ]; + + } + + return value / data.length; + + } + + } ); + + /** + * + * Buffered scene graph property that allows weighted accumulation. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function PropertyMixer( binding, typeName, valueSize ) { + + this.binding = binding; + this.valueSize = valueSize; + + var bufferType = Float64Array, + mixFunction; + + switch ( typeName ) { + + case 'quaternion': + mixFunction = this._slerp; + break; + + case 'string': + case 'bool': + bufferType = Array; + mixFunction = this._select; + break; + + default: + mixFunction = this._lerp; + + } + + this.buffer = new bufferType( valueSize * 4 ); + // layout: [ incoming | accu0 | accu1 | orig ] + // + // interpolators can use .buffer as their .result + // the data then goes to 'incoming' + // + // 'accu0' and 'accu1' are used frame-interleaved for + // the cumulative result and are compared to detect + // changes + // + // 'orig' stores the original state of the property + + this._mixBufferRegion = mixFunction; + + this.cumulativeWeight = 0; + + this.useCount = 0; + this.referenceCount = 0; + + } + + Object.assign( PropertyMixer.prototype, { + + // accumulate data in the 'incoming' region into 'accu' + accumulate: function ( accuIndex, weight ) { + + // note: happily accumulating nothing when weight = 0, the caller knows + // the weight and shouldn't have made the call in the first place + + var buffer = this.buffer, + stride = this.valueSize, + offset = accuIndex * stride + stride, + + currentWeight = this.cumulativeWeight; + + if ( currentWeight === 0 ) { + + // accuN := incoming * weight + + for ( var i = 0; i !== stride; ++ i ) { + + buffer[ offset + i ] = buffer[ i ]; + + } + + currentWeight = weight; + + } else { + + // accuN := accuN + incoming * weight + + currentWeight += weight; + var mix = weight / currentWeight; + this._mixBufferRegion( buffer, offset, 0, mix, stride ); + + } + + this.cumulativeWeight = currentWeight; + + }, + + // apply the state of 'accu' to the binding when accus differ + apply: function ( accuIndex ) { + + var stride = this.valueSize, + buffer = this.buffer, + offset = accuIndex * stride + stride, + + weight = this.cumulativeWeight, + + binding = this.binding; + + this.cumulativeWeight = 0; + + if ( weight < 1 ) { + + // accuN := accuN + original * ( 1 - cumulativeWeight ) + + var originalValueOffset = stride * 3; + + this._mixBufferRegion( + buffer, offset, originalValueOffset, 1 - weight, stride ); + + } + + for ( var i = stride, e = stride + stride; i !== e; ++ i ) { + + if ( buffer[ i ] !== buffer[ i + stride ] ) { + + // value has changed -> update scene graph + + binding.setValue( buffer, offset ); + break; + + } + + } + + }, + + // remember the state of the bound property and copy it to both accus + saveOriginalState: function () { + + var binding = this.binding; + + var buffer = this.buffer, + stride = this.valueSize, + + originalValueOffset = stride * 3; + + binding.getValue( buffer, originalValueOffset ); + + // accu[0..1] := orig -- initially detect changes against the original + for ( var i = stride, e = originalValueOffset; i !== e; ++ i ) { + + buffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ]; + + } + + this.cumulativeWeight = 0; + + }, + + // apply the state previously taken via 'saveOriginalState' to the binding + restoreOriginalState: function () { + + var originalValueOffset = this.valueSize * 3; + this.binding.setValue( this.buffer, originalValueOffset ); + + }, + + + // mix functions + + _select: function ( buffer, dstOffset, srcOffset, t, stride ) { + + if ( t >= 0.5 ) { + + for ( var i = 0; i !== stride; ++ i ) { + + buffer[ dstOffset + i ] = buffer[ srcOffset + i ]; + + } + + } + + }, + + _slerp: function ( buffer, dstOffset, srcOffset, t ) { + + Quaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t ); + + }, + + _lerp: function ( buffer, dstOffset, srcOffset, t, stride ) { + + var s = 1 - t; + + for ( var i = 0; i !== stride; ++ i ) { + + var j = dstOffset + i; + + buffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t; + + } + + } + + } ); + + /** + * + * A reference to a real property in the scene graph. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + // Characters [].:/ are reserved for track binding syntax. + var _RESERVED_CHARS_RE = '\\[\\]\\.:\\/'; + var _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' ); + + // Attempts to allow node names from any language. ES5's `\w` regexp matches + // only latin characters, and the unicode \p{L} is not yet supported. So + // instead, we exclude reserved characters and match everything else. + var _wordChar = '[^' + _RESERVED_CHARS_RE + ']'; + var _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\.', '' ) + ']'; + + // Parent directories, delimited by '/' or ':'. Currently unused, but must + // be matched to parse the rest of the track name. + var _directoryRe = /((?:WC+[\/:])*)/.source.replace( 'WC', _wordChar ); + + // Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'. + var _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot ); + + // Object on target node, and accessor. May not contain reserved + // characters. Accessor may contain any character except closing bracket. + var _objectRe = /(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace( 'WC', _wordChar ); + + // Property and accessor. May not contain reserved characters. Accessor may + // contain any non-bracket characters. + var _propertyRe = /\.(WC+)(?:\[(.+)\])?/.source.replace( 'WC', _wordChar ); + + var _trackRe = new RegExp( '' + + '^' + + _directoryRe + + _nodeRe + + _objectRe + + _propertyRe + + '$' + ); + + var _supportedObjectNames = [ 'material', 'materials', 'bones' ]; + + function Composite( targetGroup, path, optionalParsedPath ) { + + var parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path ); + + this._targetGroup = targetGroup; + this._bindings = targetGroup.subscribe_( path, parsedPath ); + + } + + Object.assign( Composite.prototype, { + + getValue: function ( array, offset ) { + + this.bind(); // bind all binding + + var firstValidIndex = this._targetGroup.nCachedObjects_, + binding = this._bindings[ firstValidIndex ]; + + // and only call .getValue on the first + if ( binding !== undefined ) { binding.getValue( array, offset ); } + + }, + + setValue: function ( array, offset ) { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].setValue( array, offset ); + + } + + }, + + bind: function () { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].bind(); + + } + + }, + + unbind: function () { + + var bindings = this._bindings; + + for ( var i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) { + + bindings[ i ].unbind(); + + } + + } + + } ); + + + function PropertyBinding( rootNode, path, parsedPath ) { + + this.path = path; + this.parsedPath = parsedPath || PropertyBinding.parseTrackName( path ); + + this.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode; + + this.rootNode = rootNode; + + } + + Object.assign( PropertyBinding, { + + Composite: Composite, + + create: function ( root, path, parsedPath ) { + + if ( ! ( root && root.isAnimationObjectGroup ) ) { + + return new PropertyBinding( root, path, parsedPath ); + + } else { + + return new PropertyBinding.Composite( root, path, parsedPath ); + + } + + }, + + /** + * Replaces spaces with underscores and removes unsupported characters from + * node names, to ensure compatibility with parseTrackName(). + * + * @param {string} name Node name to be sanitized. + * @return {string} + */ + sanitizeNodeName: function ( name ) { + + return name.replace( /\s/g, '_' ).replace( _reservedRe, '' ); + + }, + + parseTrackName: function ( trackName ) { + + var matches = _trackRe.exec( trackName ); + + if ( ! matches ) { + + throw new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName ); + + } + + var results = { + // directoryName: matches[ 1 ], // (tschw) currently unused + nodeName: matches[ 2 ], + objectName: matches[ 3 ], + objectIndex: matches[ 4 ], + propertyName: matches[ 5 ], // required + propertyIndex: matches[ 6 ] + }; + + var lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' ); + + if ( lastDot !== undefined && lastDot !== - 1 ) { + + var objectName = results.nodeName.substring( lastDot + 1 ); + + // Object names must be checked against a whitelist. Otherwise, there + // is no way to parse 'foo.bar.baz': 'baz' must be a property, but + // 'bar' could be the objectName, or part of a nodeName (which can + // include '.' characters). + if ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) { + + results.nodeName = results.nodeName.substring( 0, lastDot ); + results.objectName = objectName; + + } + + } + + if ( results.propertyName === null || results.propertyName.length === 0 ) { + + throw new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName ); + + } + + return results; + + }, + + findNode: function ( root, nodeName ) { + + if ( ! nodeName || nodeName === "" || nodeName === "root" || nodeName === "." || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) { + + return root; + + } + + // search into skeleton bones. + if ( root.skeleton ) { + + var bone = root.skeleton.getBoneByName( nodeName ); + + if ( bone !== undefined ) { + + return bone; + + } + + } + + // search into node subtree. + if ( root.children ) { + + var searchNodeSubtree = function ( children ) { + + for ( var i = 0; i < children.length; i ++ ) { + + var childNode = children[ i ]; + + if ( childNode.name === nodeName || childNode.uuid === nodeName ) { + + return childNode; + + } + + var result = searchNodeSubtree( childNode.children ); + + if ( result ) { return result; } + + } + + return null; + + }; + + var subTreeNode = searchNodeSubtree( root.children ); + + if ( subTreeNode ) { + + return subTreeNode; + + } + + } + + return null; + + } + + } ); + + Object.assign( PropertyBinding.prototype, { // prototype, continued + + // these are used to "bind" a nonexistent property + _getValue_unavailable: function () {}, + _setValue_unavailable: function () {}, + + BindingType: { + Direct: 0, + EntireArray: 1, + ArrayElement: 2, + HasFromToArray: 3 + }, + + Versioning: { + None: 0, + NeedsUpdate: 1, + MatrixWorldNeedsUpdate: 2 + }, + + GetterByBindingType: [ + + function getValue_direct( buffer, offset ) { + + buffer[ offset ] = this.node[ this.propertyName ]; + + }, + + function getValue_array( buffer, offset ) { + + var source = this.resolvedProperty; + + for ( var i = 0, n = source.length; i !== n; ++ i ) { + + buffer[ offset ++ ] = source[ i ]; + + } + + }, + + function getValue_arrayElement( buffer, offset ) { + + buffer[ offset ] = this.resolvedProperty[ this.propertyIndex ]; + + }, + + function getValue_toArray( buffer, offset ) { + + this.resolvedProperty.toArray( buffer, offset ); + + } + + ], + + SetterByBindingTypeAndVersioning: [ + + [ + // Direct + + function setValue_direct( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + + }, + + function setValue_direct_setNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + }, + + function setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.targetObject[ this.propertyName ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // EntireArray + + function setValue_array( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + }, + + function setValue_array_setNeedsUpdate( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.needsUpdate = true; + + }, + + function setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) { + + var dest = this.resolvedProperty; + + for ( var i = 0, n = dest.length; i !== n; ++ i ) { + + dest[ i ] = buffer[ offset ++ ]; + + } + + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // ArrayElement + + function setValue_arrayElement( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + + }, + + function setValue_arrayElement_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.needsUpdate = true; + + }, + + function setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty[ this.propertyIndex ] = buffer[ offset ]; + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ], [ + + // HasToFromArray + + function setValue_fromArray( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + + }, + + function setValue_fromArray_setNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.needsUpdate = true; + + }, + + function setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) { + + this.resolvedProperty.fromArray( buffer, offset ); + this.targetObject.matrixWorldNeedsUpdate = true; + + } + + ] + + ], + + getValue: function getValue_unbound( targetArray, offset ) { + + this.bind(); + this.getValue( targetArray, offset ); + + // Note: This class uses a State pattern on a per-method basis: + // 'bind' sets 'this.getValue' / 'setValue' and shadows the + // prototype version of these methods with one that represents + // the bound state. When the property is not found, the methods + // become no-ops. + + }, + + setValue: function getValue_unbound( sourceArray, offset ) { + + this.bind(); + this.setValue( sourceArray, offset ); + + }, + + // create getter / setter pair for a property in the scene graph + bind: function () { + + var targetObject = this.node, + parsedPath = this.parsedPath, + + objectName = parsedPath.objectName, + propertyName = parsedPath.propertyName, + propertyIndex = parsedPath.propertyIndex; + + if ( ! targetObject ) { + + targetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode; + + this.node = targetObject; + + } + + // set fail state so we can just 'return' on error + this.getValue = this._getValue_unavailable; + this.setValue = this._setValue_unavailable; + + // ensure there is a value node + if ( ! targetObject ) { + + console.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\'t found.' ); + return; + + } + + if ( objectName ) { + + var objectIndex = parsedPath.objectIndex; + + // special cases were we need to reach deeper into the hierarchy to get the face materials.... + switch ( objectName ) { + + case 'materials': + + if ( ! targetObject.material ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this ); + return; + + } + + if ( ! targetObject.material.materials ) { + + console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this ); + return; + + } + + targetObject = targetObject.material.materials; + + break; + + case 'bones': + + if ( ! targetObject.skeleton ) { + + console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this ); + return; + + } + + // potential future optimization: skip this if propertyIndex is already an integer + // and convert the integer string to a true integer. + + targetObject = targetObject.skeleton.bones; + + // support resolving morphTarget names into indices. + for ( var i = 0; i < targetObject.length; i ++ ) { + + if ( targetObject[ i ].name === objectIndex ) { + + objectIndex = i; + break; + + } + + } + + break; + + default: + + if ( targetObject[ objectName ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this ); + return; + + } + + targetObject = targetObject[ objectName ]; + + } + + + if ( objectIndex !== undefined ) { + + if ( targetObject[ objectIndex ] === undefined ) { + + console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject ); + return; + + } + + targetObject = targetObject[ objectIndex ]; + + } + + } + + // resolve property + var nodeProperty = targetObject[ propertyName ]; + + if ( nodeProperty === undefined ) { + + var nodeName = parsedPath.nodeName; + + console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName + + '.' + propertyName + ' but it wasn\'t found.', targetObject ); + return; + + } + + // determine versioning scheme + var versioning = this.Versioning.None; + + this.targetObject = targetObject; + + if ( targetObject.needsUpdate !== undefined ) { // material + + versioning = this.Versioning.NeedsUpdate; + + } else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform + + versioning = this.Versioning.MatrixWorldNeedsUpdate; + + } + + // determine how the property gets bound + var bindingType = this.BindingType.Direct; + + if ( propertyIndex !== undefined ) { + + // access a sub element of the property array (only primitives are supported right now) + + if ( propertyName === "morphTargetInfluences" ) { + + // potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer. + + // support resolving morphTarget names into indices. + if ( ! targetObject.geometry ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this ); + return; + + } + + if ( targetObject.geometry.isBufferGeometry ) { + + if ( ! targetObject.geometry.morphAttributes ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this ); + return; + + } + + for ( var i = 0; i < this.node.geometry.morphAttributes.position.length; i ++ ) { + + if ( targetObject.geometry.morphAttributes.position[ i ].name === propertyIndex ) { + + propertyIndex = i; + break; + + } + + } + + + } else { + + if ( ! targetObject.geometry.morphTargets ) { + + console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphTargets.', this ); + return; + + } + + for ( var i = 0; i < this.node.geometry.morphTargets.length; i ++ ) { + + if ( targetObject.geometry.morphTargets[ i ].name === propertyIndex ) { + + propertyIndex = i; + break; + + } + + } + + } + + } + + bindingType = this.BindingType.ArrayElement; + + this.resolvedProperty = nodeProperty; + this.propertyIndex = propertyIndex; + + } else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) { + + // must use copy for Object3D.Euler/Quaternion + + bindingType = this.BindingType.HasFromToArray; + + this.resolvedProperty = nodeProperty; + + } else if ( Array.isArray( nodeProperty ) ) { + + bindingType = this.BindingType.EntireArray; + + this.resolvedProperty = nodeProperty; + + } else { + + this.propertyName = propertyName; + + } + + // select getter / setter + this.getValue = this.GetterByBindingType[ bindingType ]; + this.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ]; + + }, + + unbind: function () { + + this.node = null; + + // back to the prototype version of getValue / setValue + // note: avoiding to mutate the shape of 'this' via 'delete' + this.getValue = this._getValue_unbound; + this.setValue = this._setValue_unbound; + + } + + } ); + + //!\ DECLARE ALIAS AFTER assign prototype ! + Object.assign( PropertyBinding.prototype, { + + // initial state of these methods that calls 'bind' + _getValue_unbound: PropertyBinding.prototype.getValue, + _setValue_unbound: PropertyBinding.prototype.setValue, + + } ); + + /** + * + * A group of objects that receives a shared animation state. + * + * Usage: + * + * - Add objects you would otherwise pass as 'root' to the + * constructor or the .clipAction method of AnimationMixer. + * + * - Instead pass this object as 'root'. + * + * - You can also add and remove objects later when the mixer + * is running. + * + * Note: + * + * Objects of this class appear as one object to the mixer, + * so cache control of the individual objects must be done + * on the group. + * + * Limitation: + * + * - The animated properties must be compatible among the + * all objects in the group. + * + * - A single property can either be controlled through a + * target group or directly, but not both. + * + * @author tschw + */ + + function AnimationObjectGroup() { + + this.uuid = _Math.generateUUID(); + + // cached objects followed by the active ones + this._objects = Array.prototype.slice.call( arguments ); + + this.nCachedObjects_ = 0; // threshold + // note: read by PropertyBinding.Composite + + var indices = {}; + this._indicesByUUID = indices; // for bookkeeping + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + indices[ arguments[ i ].uuid ] = i; + + } + + this._paths = []; // inside: string + this._parsedPaths = []; // inside: { we don't care, here } + this._bindings = []; // inside: Array< PropertyBinding > + this._bindingsIndicesByPath = {}; // inside: indices in these arrays + + var scope = this; + + this.stats = { + + objects: { + get total() { + + return scope._objects.length; + + }, + get inUse() { + + return this.total - scope.nCachedObjects_; + + } + }, + get bindingsPerObject() { + + return scope._bindings.length; + + } + + }; + + } + + Object.assign( AnimationObjectGroup.prototype, { + + isAnimationObjectGroup: true, + + add: function () { + + var objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + nBindings = bindings.length, + knownObject = undefined; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index === undefined ) { + + // unknown object -> add it to the ACTIVE region + + index = nObjects ++; + indicesByUUID[ uuid ] = index; + objects.push( object ); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + bindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) ); + + } + + } else if ( index < nCachedObjects ) { + + knownObject = objects[ index ]; + + // move existing object to the ACTIVE region + + var firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ]; + + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + indicesByUUID[ uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ], + binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = lastCached; + + if ( binding === undefined ) { + + // since we do not bother to create new bindings + // for objects that are cached, the binding may + // or may not exist + + binding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ); + + } + + bindingsForPath[ firstActiveIndex ] = binding; + + } + + } else if ( objects[ index ] !== knownObject ) { + + console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' + + 'detected. Clean the caches or recreate your infrastructure when reloading scenes.' ); + + } // else the object is already where we want it to be + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + remove: function () { + + var objects = this._objects, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined && index >= nCachedObjects ) { + + // move existing object into the CACHED region + + var lastCachedIndex = nCachedObjects ++, + firstActiveObject = objects[ lastCachedIndex ]; + + indicesByUUID[ firstActiveObject.uuid ] = index; + objects[ index ] = firstActiveObject; + + indicesByUUID[ uuid ] = lastCachedIndex; + objects[ lastCachedIndex ] = object; + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + firstActive = bindingsForPath[ lastCachedIndex ], + binding = bindingsForPath[ index ]; + + bindingsForPath[ index ] = firstActive; + bindingsForPath[ lastCachedIndex ] = binding; + + } + + } + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + // remove & forget + uncache: function () { + + var objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + indicesByUUID = this._indicesByUUID, + bindings = this._bindings, + nBindings = bindings.length; + + for ( var i = 0, n = arguments.length; i !== n; ++ i ) { + + var object = arguments[ i ], + uuid = object.uuid, + index = indicesByUUID[ uuid ]; + + if ( index !== undefined ) { + + delete indicesByUUID[ uuid ]; + + if ( index < nCachedObjects ) { + + // object is cached, shrink the CACHED region + + var firstActiveIndex = -- nCachedObjects, + lastCachedObject = objects[ firstActiveIndex ], + lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + // last cached object takes this object's place + indicesByUUID[ lastCachedObject.uuid ] = index; + objects[ index ] = lastCachedObject; + + // last object goes to the activated slot and pop + indicesByUUID[ lastObject.uuid ] = firstActiveIndex; + objects[ firstActiveIndex ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ], + lastCached = bindingsForPath[ firstActiveIndex ], + last = bindingsForPath[ lastIndex ]; + + bindingsForPath[ index ] = lastCached; + bindingsForPath[ firstActiveIndex ] = last; + bindingsForPath.pop(); + + } + + } else { + + // object is active, just swap with the last and pop + + var lastIndex = -- nObjects, + lastObject = objects[ lastIndex ]; + + indicesByUUID[ lastObject.uuid ] = index; + objects[ index ] = lastObject; + objects.pop(); + + // accounting is done, now do the same for all bindings + + for ( var j = 0, m = nBindings; j !== m; ++ j ) { + + var bindingsForPath = bindings[ j ]; + + bindingsForPath[ index ] = bindingsForPath[ lastIndex ]; + bindingsForPath.pop(); + + } + + } // cached or active + + } // if object is known + + } // for arguments + + this.nCachedObjects_ = nCachedObjects; + + }, + + // Internal interface used by befriended PropertyBinding.Composite: + + subscribe_: function ( path, parsedPath ) { + + // returns an array of bindings for the given path that is changed + // according to the contained objects in the group + + var indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[ path ], + bindings = this._bindings; + + if ( index !== undefined ) { return bindings[ index ]; } + + var paths = this._paths, + parsedPaths = this._parsedPaths, + objects = this._objects, + nObjects = objects.length, + nCachedObjects = this.nCachedObjects_, + bindingsForPath = new Array( nObjects ); + + index = bindings.length; + + indicesByPath[ path ] = index; + + paths.push( path ); + parsedPaths.push( parsedPath ); + bindings.push( bindingsForPath ); + + for ( var i = nCachedObjects, n = objects.length; i !== n; ++ i ) { + + var object = objects[ i ]; + bindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath ); + + } + + return bindingsForPath; + + }, + + unsubscribe_: function ( path ) { + + // tells the group to forget about a property path and no longer + // update the array previously obtained with 'subscribe_' + + var indicesByPath = this._bindingsIndicesByPath, + index = indicesByPath[ path ]; + + if ( index !== undefined ) { + + var paths = this._paths, + parsedPaths = this._parsedPaths, + bindings = this._bindings, + lastBindingsIndex = bindings.length - 1, + lastBindings = bindings[ lastBindingsIndex ], + lastBindingsPath = path[ lastBindingsIndex ]; + + indicesByPath[ lastBindingsPath ] = index; + + bindings[ index ] = lastBindings; + bindings.pop(); + + parsedPaths[ index ] = parsedPaths[ lastBindingsIndex ]; + parsedPaths.pop(); + + paths[ index ] = paths[ lastBindingsIndex ]; + paths.pop(); + + } + + } + + } ); + + /** + * + * Action provided by AnimationMixer for scheduling clip playback on specific + * objects. + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + * + */ + + function AnimationAction( mixer, clip, localRoot ) { + + this._mixer = mixer; + this._clip = clip; + this._localRoot = localRoot || null; + + var tracks = clip.tracks, + nTracks = tracks.length, + interpolants = new Array( nTracks ); + + var interpolantSettings = { + endingStart: ZeroCurvatureEnding, + endingEnd: ZeroCurvatureEnding + }; + + for ( var i = 0; i !== nTracks; ++ i ) { + + var interpolant = tracks[ i ].createInterpolant( null ); + interpolants[ i ] = interpolant; + interpolant.settings = interpolantSettings; + + } + + this._interpolantSettings = interpolantSettings; + + this._interpolants = interpolants; // bound by the mixer + + // inside: PropertyMixer (managed by the mixer) + this._propertyBindings = new Array( nTracks ); + + this._cacheIndex = null; // for the memory manager + this._byClipCacheIndex = null; // for the memory manager + + this._timeScaleInterpolant = null; + this._weightInterpolant = null; + + this.loop = LoopRepeat; + this._loopCount = - 1; + + // global mixer time when the action is to be started + // it's set back to 'null' upon start of the action + this._startTime = null; + + // scaled local time of the action + // gets clamped or wrapped to 0..clip.duration according to loop + this.time = 0; + + this.timeScale = 1; + this._effectiveTimeScale = 1; + + this.weight = 1; + this._effectiveWeight = 1; + + this.repetitions = Infinity; // no. of repetitions when looping + + this.paused = false; // true -> zero effective time scale + this.enabled = true; // false -> zero effective weight + + this.clampWhenFinished = false;// keep feeding the last frame? + + this.zeroSlopeAtStart = true;// for smooth interpolation w/o separate + this.zeroSlopeAtEnd = true;// clips for start, loop and end + + } + + Object.assign( AnimationAction.prototype, { + + // State & Scheduling + + play: function () { + + this._mixer._activateAction( this ); + + return this; + + }, + + stop: function () { + + this._mixer._deactivateAction( this ); + + return this.reset(); + + }, + + reset: function () { + + this.paused = false; + this.enabled = true; + + this.time = 0; // restart clip + this._loopCount = - 1;// forget previous loops + this._startTime = null;// forget scheduling + + return this.stopFading().stopWarping(); + + }, + + isRunning: function () { + + return this.enabled && ! this.paused && this.timeScale !== 0 && + this._startTime === null && this._mixer._isActiveAction( this ); + + }, + + // return true when play has been called + isScheduled: function () { + + return this._mixer._isActiveAction( this ); + + }, + + startAt: function ( time ) { + + this._startTime = time; + + return this; + + }, + + setLoop: function ( mode, repetitions ) { + + this.loop = mode; + this.repetitions = repetitions; + + return this; + + }, + + // Weight + + // set the weight stopping any scheduled fading + // although .enabled = false yields an effective weight of zero, this + // method does *not* change .enabled, because it would be confusing + setEffectiveWeight: function ( weight ) { + + this.weight = weight; + + // note: same logic as when updated at runtime + this._effectiveWeight = this.enabled ? weight : 0; + + return this.stopFading(); + + }, + + // return the weight considering fading and .enabled + getEffectiveWeight: function () { + + return this._effectiveWeight; + + }, + + fadeIn: function ( duration ) { + + return this._scheduleFading( duration, 0, 1 ); + + }, + + fadeOut: function ( duration ) { + + return this._scheduleFading( duration, 1, 0 ); + + }, + + crossFadeFrom: function ( fadeOutAction, duration, warp ) { + + fadeOutAction.fadeOut( duration ); + this.fadeIn( duration ); + + if ( warp ) { + + var fadeInDuration = this._clip.duration, + fadeOutDuration = fadeOutAction._clip.duration, + + startEndRatio = fadeOutDuration / fadeInDuration, + endStartRatio = fadeInDuration / fadeOutDuration; + + fadeOutAction.warp( 1.0, startEndRatio, duration ); + this.warp( endStartRatio, 1.0, duration ); + + } + + return this; + + }, + + crossFadeTo: function ( fadeInAction, duration, warp ) { + + return fadeInAction.crossFadeFrom( this, duration, warp ); + + }, + + stopFading: function () { + + var weightInterpolant = this._weightInterpolant; + + if ( weightInterpolant !== null ) { + + this._weightInterpolant = null; + this._mixer._takeBackControlInterpolant( weightInterpolant ); + + } + + return this; + + }, + + // Time Scale Control + + // set the time scale stopping any scheduled warping + // although .paused = true yields an effective time scale of zero, this + // method does *not* change .paused, because it would be confusing + setEffectiveTimeScale: function ( timeScale ) { + + this.timeScale = timeScale; + this._effectiveTimeScale = this.paused ? 0 : timeScale; + + return this.stopWarping(); + + }, + + // return the time scale considering warping and .paused + getEffectiveTimeScale: function () { + + return this._effectiveTimeScale; + + }, + + setDuration: function ( duration ) { + + this.timeScale = this._clip.duration / duration; + + return this.stopWarping(); + + }, + + syncWith: function ( action ) { + + this.time = action.time; + this.timeScale = action.timeScale; + + return this.stopWarping(); + + }, + + halt: function ( duration ) { + + return this.warp( this._effectiveTimeScale, 0, duration ); + + }, + + warp: function ( startTimeScale, endTimeScale, duration ) { + + var mixer = this._mixer, now = mixer.time, + interpolant = this._timeScaleInterpolant, + + timeScale = this.timeScale; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._timeScaleInterpolant = interpolant; + + } + + var times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; + times[ 1 ] = now + duration; + + values[ 0 ] = startTimeScale / timeScale; + values[ 1 ] = endTimeScale / timeScale; + + return this; + + }, + + stopWarping: function () { + + var timeScaleInterpolant = this._timeScaleInterpolant; + + if ( timeScaleInterpolant !== null ) { + + this._timeScaleInterpolant = null; + this._mixer._takeBackControlInterpolant( timeScaleInterpolant ); + + } + + return this; + + }, + + // Object Accessors + + getMixer: function () { + + return this._mixer; + + }, + + getClip: function () { + + return this._clip; + + }, + + getRoot: function () { + + return this._localRoot || this._mixer._root; + + }, + + // Interna + + _update: function ( time, deltaTime, timeDirection, accuIndex ) { + + // called by the mixer + + if ( ! this.enabled ) { + + // call ._updateWeight() to update ._effectiveWeight + + this._updateWeight( time ); + return; + + } + + var startTime = this._startTime; + + if ( startTime !== null ) { + + // check for scheduled start of action + + var timeRunning = ( time - startTime ) * timeDirection; + if ( timeRunning < 0 || timeDirection === 0 ) { + + return; // yet to come / don't decide when delta = 0 + + } + + // start + + this._startTime = null; // unschedule + deltaTime = timeDirection * timeRunning; + + } + + // apply time scale and advance time + + deltaTime *= this._updateTimeScale( time ); + var clipTime = this._updateTime( deltaTime ); + + // note: _updateTime may disable the action resulting in + // an effective weight of 0 + + var weight = this._updateWeight( time ); + + if ( weight > 0 ) { + + var interpolants = this._interpolants; + var propertyMixers = this._propertyBindings; + + for ( var j = 0, m = interpolants.length; j !== m; ++ j ) { + + interpolants[ j ].evaluate( clipTime ); + propertyMixers[ j ].accumulate( accuIndex, weight ); + + } + + } + + }, + + _updateWeight: function ( time ) { + + var weight = 0; + + if ( this.enabled ) { + + weight = this.weight; + var interpolant = this._weightInterpolant; + + if ( interpolant !== null ) { + + var interpolantValue = interpolant.evaluate( time )[ 0 ]; + + weight *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopFading(); + + if ( interpolantValue === 0 ) { + + // faded out, disable + this.enabled = false; + + } + + } + + } + + } + + this._effectiveWeight = weight; + return weight; + + }, + + _updateTimeScale: function ( time ) { + + var timeScale = 0; + + if ( ! this.paused ) { + + timeScale = this.timeScale; + + var interpolant = this._timeScaleInterpolant; + + if ( interpolant !== null ) { + + var interpolantValue = interpolant.evaluate( time )[ 0 ]; + + timeScale *= interpolantValue; + + if ( time > interpolant.parameterPositions[ 1 ] ) { + + this.stopWarping(); + + if ( timeScale === 0 ) { + + // motion has halted, pause + this.paused = true; + + } else { + + // warp done - apply final time scale + this.timeScale = timeScale; + + } + + } + + } + + } + + this._effectiveTimeScale = timeScale; + return timeScale; + + }, + + _updateTime: function ( deltaTime ) { + + var time = this.time + deltaTime; + var duration = this._clip.duration; + var loop = this.loop; + var loopCount = this._loopCount; + + var pingPong = ( loop === LoopPingPong ); + + if ( deltaTime === 0 ) { + + if ( loopCount === - 1 ) { return time; } + + return ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time; + + } + + if ( loop === LoopOnce ) { + + if ( loopCount === - 1 ) { + + // just started + + this._loopCount = 0; + this._setEndings( true, true, false ); + + } + + handle_stop: { + + if ( time >= duration ) { + + time = duration; + + } else if ( time < 0 ) { + + time = 0; + + } else { + + this.time = time; + + break handle_stop; + + } + + if ( this.clampWhenFinished ) { this.paused = true; } + else { this.enabled = false; } + + this.time = time; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime < 0 ? - 1 : 1 + } ); + + } + + } else { // repetitive Repeat or PingPong + + if ( loopCount === - 1 ) { + + // just started + + if ( deltaTime >= 0 ) { + + loopCount = 0; + + this._setEndings( true, this.repetitions === 0, pingPong ); + + } else { + + // when looping in reverse direction, the initial + // transition through zero counts as a repetition, + // so leave loopCount at -1 + + this._setEndings( this.repetitions === 0, true, pingPong ); + + } + + } + + if ( time >= duration || time < 0 ) { + + // wrap around + + var loopDelta = Math.floor( time / duration ); // signed + time -= duration * loopDelta; + + loopCount += Math.abs( loopDelta ); + + var pending = this.repetitions - loopCount; + + if ( pending <= 0 ) { + + // have to stop (switch state, clamp time, fire event) + + if ( this.clampWhenFinished ) { this.paused = true; } + else { this.enabled = false; } + + time = deltaTime > 0 ? duration : 0; + + this.time = time; + + this._mixer.dispatchEvent( { + type: 'finished', action: this, + direction: deltaTime > 0 ? 1 : - 1 + } ); + + } else { + + // keep running + + if ( pending === 1 ) { + + // entering the last round + + var atStart = deltaTime < 0; + this._setEndings( atStart, ! atStart, pingPong ); + + } else { + + this._setEndings( false, false, pingPong ); + + } + + this._loopCount = loopCount; + + this.time = time; + + this._mixer.dispatchEvent( { + type: 'loop', action: this, loopDelta: loopDelta + } ); + + } + + } else { + + this.time = time; + + } + + if ( pingPong && ( loopCount & 1 ) === 1 ) { + + // invert time for the "pong round" + + return duration - time; + + } + + } + + return time; + + }, + + _setEndings: function ( atStart, atEnd, pingPong ) { + + var settings = this._interpolantSettings; + + if ( pingPong ) { + + settings.endingStart = ZeroSlopeEnding; + settings.endingEnd = ZeroSlopeEnding; + + } else { + + // assuming for LoopOnce atStart == atEnd == true + + if ( atStart ) { + + settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingStart = WrapAroundEnding; + + } + + if ( atEnd ) { + + settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding; + + } else { + + settings.endingEnd = WrapAroundEnding; + + } + + } + + }, + + _scheduleFading: function ( duration, weightNow, weightThen ) { + + var mixer = this._mixer, now = mixer.time, + interpolant = this._weightInterpolant; + + if ( interpolant === null ) { + + interpolant = mixer._lendControlInterpolant(); + this._weightInterpolant = interpolant; + + } + + var times = interpolant.parameterPositions, + values = interpolant.sampleValues; + + times[ 0 ] = now; + values[ 0 ] = weightNow; + times[ 1 ] = now + duration; + values[ 1 ] = weightThen; + + return this; + + } + + } ); + + /** + * + * Player for AnimationClips. + * + * + * @author Ben Houston / http://clara.io/ + * @author David Sarno / http://lighthaus.us/ + * @author tschw + */ + + function AnimationMixer( root ) { + + this._root = root; + this._initMemoryManager(); + this._accuIndex = 0; + + this.time = 0; + + this.timeScale = 1.0; + + } + + AnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), { + + constructor: AnimationMixer, + + _bindAction: function ( action, prototypeAction ) { + + var root = action._localRoot || this._root, + tracks = action._clip.tracks, + nTracks = tracks.length, + bindings = action._propertyBindings, + interpolants = action._interpolants, + rootUuid = root.uuid, + bindingsByRoot = this._bindingsByRootAndName, + bindingsByName = bindingsByRoot[ rootUuid ]; + + if ( bindingsByName === undefined ) { + + bindingsByName = {}; + bindingsByRoot[ rootUuid ] = bindingsByName; + + } + + for ( var i = 0; i !== nTracks; ++ i ) { + + var track = tracks[ i ], + trackName = track.name, + binding = bindingsByName[ trackName ]; + + if ( binding !== undefined ) { + + bindings[ i ] = binding; + + } else { + + binding = bindings[ i ]; + + if ( binding !== undefined ) { + + // existing binding, make sure the cache knows + + if ( binding._cacheIndex === null ) { + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + } + + continue; + + } + + var path = prototypeAction && prototypeAction. + _propertyBindings[ i ].binding.parsedPath; + + binding = new PropertyMixer( + PropertyBinding.create( root, trackName, path ), + track.ValueTypeName, track.getValueSize() ); + + ++ binding.referenceCount; + this._addInactiveBinding( binding, rootUuid, trackName ); + + bindings[ i ] = binding; + + } + + interpolants[ i ].resultBuffer = binding.buffer; + + } + + }, + + _activateAction: function ( action ) { + + if ( ! this._isActiveAction( action ) ) { + + if ( action._cacheIndex === null ) { + + // this action has been forgotten by the cache, but the user + // appears to be still using it -> rebind + + var rootUuid = ( action._localRoot || this._root ).uuid, + clipUuid = action._clip.uuid, + actionsForClip = this._actionsByClip[ clipUuid ]; + + this._bindAction( action, + actionsForClip && actionsForClip.knownActions[ 0 ] ); + + this._addInactiveAction( action, clipUuid, rootUuid ); + + } + + var bindings = action._propertyBindings; + + // increment reference counts / sort out state + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( binding.useCount ++ === 0 ) { + + this._lendBinding( binding ); + binding.saveOriginalState(); + + } + + } + + this._lendAction( action ); + + } + + }, + + _deactivateAction: function ( action ) { + + if ( this._isActiveAction( action ) ) { + + var bindings = action._propertyBindings; + + // decrement reference counts / sort out state + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( -- binding.useCount === 0 ) { + + binding.restoreOriginalState(); + this._takeBackBinding( binding ); + + } + + } + + this._takeBackAction( action ); + + } + + }, + + // Memory manager + + _initMemoryManager: function () { + + this._actions = []; // 'nActiveActions' followed by inactive ones + this._nActiveActions = 0; + + this._actionsByClip = {}; + // inside: + // { + // knownActions: Array< AnimationAction > - used as prototypes + // actionByRoot: AnimationAction - lookup + // } + + + this._bindings = []; // 'nActiveBindings' followed by inactive ones + this._nActiveBindings = 0; + + this._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer > + + + this._controlInterpolants = []; // same game as above + this._nActiveControlInterpolants = 0; + + var scope = this; + + this.stats = { + + actions: { + get total() { + + return scope._actions.length; + + }, + get inUse() { + + return scope._nActiveActions; + + } + }, + bindings: { + get total() { + + return scope._bindings.length; + + }, + get inUse() { + + return scope._nActiveBindings; + + } + }, + controlInterpolants: { + get total() { + + return scope._controlInterpolants.length; + + }, + get inUse() { + + return scope._nActiveControlInterpolants; + + } + } + + }; + + }, + + // Memory management for AnimationAction objects + + _isActiveAction: function ( action ) { + + var index = action._cacheIndex; + return index !== null && index < this._nActiveActions; + + }, + + _addInactiveAction: function ( action, clipUuid, rootUuid ) { + + var actions = this._actions, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip === undefined ) { + + actionsForClip = { + + knownActions: [ action ], + actionByRoot: {} + + }; + + action._byClipCacheIndex = 0; + + actionsByClip[ clipUuid ] = actionsForClip; + + } else { + + var knownActions = actionsForClip.knownActions; + + action._byClipCacheIndex = knownActions.length; + knownActions.push( action ); + + } + + action._cacheIndex = actions.length; + actions.push( action ); + + actionsForClip.actionByRoot[ rootUuid ] = action; + + }, + + _removeInactiveAction: function ( action ) { + + var actions = this._actions, + lastInactiveAction = actions[ actions.length - 1 ], + cacheIndex = action._cacheIndex; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + action._cacheIndex = null; + + + var clipUuid = action._clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ], + knownActionsForClip = actionsForClip.knownActions, + + lastKnownAction = + knownActionsForClip[ knownActionsForClip.length - 1 ], + + byClipCacheIndex = action._byClipCacheIndex; + + lastKnownAction._byClipCacheIndex = byClipCacheIndex; + knownActionsForClip[ byClipCacheIndex ] = lastKnownAction; + knownActionsForClip.pop(); + + action._byClipCacheIndex = null; + + + var actionByRoot = actionsForClip.actionByRoot, + rootUuid = ( action._localRoot || this._root ).uuid; + + delete actionByRoot[ rootUuid ]; + + if ( knownActionsForClip.length === 0 ) { + + delete actionsByClip[ clipUuid ]; + + } + + this._removeInactiveBindingsForAction( action ); + + }, + + _removeInactiveBindingsForAction: function ( action ) { + + var bindings = action._propertyBindings; + for ( var i = 0, n = bindings.length; i !== n; ++ i ) { + + var binding = bindings[ i ]; + + if ( -- binding.referenceCount === 0 ) { + + this._removeInactiveBinding( binding ); + + } + + } + + }, + + _lendAction: function ( action ) { + + // [ active actions | inactive actions ] + // [ active actions >| inactive actions ] + // s a + // <-swap-> + // a s + + var actions = this._actions, + prevIndex = action._cacheIndex, + + lastActiveIndex = this._nActiveActions ++, + + firstInactiveAction = actions[ lastActiveIndex ]; + + action._cacheIndex = lastActiveIndex; + actions[ lastActiveIndex ] = action; + + firstInactiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = firstInactiveAction; + + }, + + _takeBackAction: function ( action ) { + + // [ active actions | inactive actions ] + // [ active actions |< inactive actions ] + // a s + // <-swap-> + // s a + + var actions = this._actions, + prevIndex = action._cacheIndex, + + firstInactiveIndex = -- this._nActiveActions, + + lastActiveAction = actions[ firstInactiveIndex ]; + + action._cacheIndex = firstInactiveIndex; + actions[ firstInactiveIndex ] = action; + + lastActiveAction._cacheIndex = prevIndex; + actions[ prevIndex ] = lastActiveAction; + + }, + + // Memory management for PropertyMixer objects + + _addInactiveBinding: function ( binding, rootUuid, trackName ) { + + var bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ], + + bindings = this._bindings; + + if ( bindingByName === undefined ) { + + bindingByName = {}; + bindingsByRoot[ rootUuid ] = bindingByName; + + } + + bindingByName[ trackName ] = binding; + + binding._cacheIndex = bindings.length; + bindings.push( binding ); + + }, + + _removeInactiveBinding: function ( binding ) { + + var bindings = this._bindings, + propBinding = binding.binding, + rootUuid = propBinding.rootNode.uuid, + trackName = propBinding.path, + bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ], + + lastInactiveBinding = bindings[ bindings.length - 1 ], + cacheIndex = binding._cacheIndex; + + lastInactiveBinding._cacheIndex = cacheIndex; + bindings[ cacheIndex ] = lastInactiveBinding; + bindings.pop(); + + delete bindingByName[ trackName ]; + + if ( Object.keys( bindingByName ).length === 0 ) { + + delete bindingsByRoot[ rootUuid ]; + + } + + }, + + _lendBinding: function ( binding ) { + + var bindings = this._bindings, + prevIndex = binding._cacheIndex, + + lastActiveIndex = this._nActiveBindings ++, + + firstInactiveBinding = bindings[ lastActiveIndex ]; + + binding._cacheIndex = lastActiveIndex; + bindings[ lastActiveIndex ] = binding; + + firstInactiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = firstInactiveBinding; + + }, + + _takeBackBinding: function ( binding ) { + + var bindings = this._bindings, + prevIndex = binding._cacheIndex, + + firstInactiveIndex = -- this._nActiveBindings, + + lastActiveBinding = bindings[ firstInactiveIndex ]; + + binding._cacheIndex = firstInactiveIndex; + bindings[ firstInactiveIndex ] = binding; + + lastActiveBinding._cacheIndex = prevIndex; + bindings[ prevIndex ] = lastActiveBinding; + + }, + + + // Memory management of Interpolants for weight and time scale + + _lendControlInterpolant: function () { + + var interpolants = this._controlInterpolants, + lastActiveIndex = this._nActiveControlInterpolants ++, + interpolant = interpolants[ lastActiveIndex ]; + + if ( interpolant === undefined ) { + + interpolant = new LinearInterpolant( + new Float32Array( 2 ), new Float32Array( 2 ), + 1, this._controlInterpolantsResultBuffer ); + + interpolant.__cacheIndex = lastActiveIndex; + interpolants[ lastActiveIndex ] = interpolant; + + } + + return interpolant; + + }, + + _takeBackControlInterpolant: function ( interpolant ) { + + var interpolants = this._controlInterpolants, + prevIndex = interpolant.__cacheIndex, + + firstInactiveIndex = -- this._nActiveControlInterpolants, + + lastActiveInterpolant = interpolants[ firstInactiveIndex ]; + + interpolant.__cacheIndex = firstInactiveIndex; + interpolants[ firstInactiveIndex ] = interpolant; + + lastActiveInterpolant.__cacheIndex = prevIndex; + interpolants[ prevIndex ] = lastActiveInterpolant; + + }, + + _controlInterpolantsResultBuffer: new Float32Array( 1 ), + + // return an action for a clip optionally using a custom root target + // object (this method allocates a lot of dynamic memory in case a + // previously unknown clip/root combination is specified) + clipAction: function ( clip, optionalRoot ) { + + var root = optionalRoot || this._root, + rootUuid = root.uuid, + + clipObject = typeof clip === 'string' ? + AnimationClip.findByName( root, clip ) : clip, + + clipUuid = clipObject !== null ? clipObject.uuid : clip, + + actionsForClip = this._actionsByClip[ clipUuid ], + prototypeAction = null; + + if ( actionsForClip !== undefined ) { + + var existingAction = + actionsForClip.actionByRoot[ rootUuid ]; + + if ( existingAction !== undefined ) { + + return existingAction; + + } + + // we know the clip, so we don't have to parse all + // the bindings again but can just copy + prototypeAction = actionsForClip.knownActions[ 0 ]; + + // also, take the clip from the prototype action + if ( clipObject === null ) + { clipObject = prototypeAction._clip; } + + } + + // clip must be known when specified via string + if ( clipObject === null ) { return null; } + + // allocate all resources required to run it + var newAction = new AnimationAction( this, clipObject, optionalRoot ); + + this._bindAction( newAction, prototypeAction ); + + // and make the action known to the memory manager + this._addInactiveAction( newAction, clipUuid, rootUuid ); + + return newAction; + + }, + + // get an existing action + existingAction: function ( clip, optionalRoot ) { + + var root = optionalRoot || this._root, + rootUuid = root.uuid, + + clipObject = typeof clip === 'string' ? + AnimationClip.findByName( root, clip ) : clip, + + clipUuid = clipObject ? clipObject.uuid : clip, + + actionsForClip = this._actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + return actionsForClip.actionByRoot[ rootUuid ] || null; + + } + + return null; + + }, + + // deactivates all previously scheduled actions + stopAllAction: function () { + + var actions = this._actions, + nActions = this._nActiveActions, + bindings = this._bindings, + nBindings = this._nActiveBindings; + + this._nActiveActions = 0; + this._nActiveBindings = 0; + + for ( var i = 0; i !== nActions; ++ i ) { + + actions[ i ].reset(); + + } + + for ( var i = 0; i !== nBindings; ++ i ) { + + bindings[ i ].useCount = 0; + + } + + return this; + + }, + + // advance the time and update apply the animation + update: function ( deltaTime ) { + + deltaTime *= this.timeScale; + + var actions = this._actions, + nActions = this._nActiveActions, + + time = this.time += deltaTime, + timeDirection = Math.sign( deltaTime ), + + accuIndex = this._accuIndex ^= 1; + + // run active actions + + for ( var i = 0; i !== nActions; ++ i ) { + + var action = actions[ i ]; + + action._update( time, deltaTime, timeDirection, accuIndex ); + + } + + // update scene graph + + var bindings = this._bindings, + nBindings = this._nActiveBindings; + + for ( var i = 0; i !== nBindings; ++ i ) { + + bindings[ i ].apply( accuIndex ); + + } + + return this; + + }, + + // Allows you to seek to a specific time in an animation. + setTime: function ( timeInSeconds ) { + + this.time = 0; // Zero out time attribute for AnimationMixer object; + for ( var i = 0; i < this._actions.length; i ++ ) { + + this._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects. + + } + + return this.update( timeInSeconds ); // Update used to set exact time. Returns "this" AnimationMixer object. + + }, + + // return this mixer's root target object + getRoot: function () { + + return this._root; + + }, + + // free all resources specific to a particular clip + uncacheClip: function ( clip ) { + + var actions = this._actions, + clipUuid = clip.uuid, + actionsByClip = this._actionsByClip, + actionsForClip = actionsByClip[ clipUuid ]; + + if ( actionsForClip !== undefined ) { + + // note: just calling _removeInactiveAction would mess up the + // iteration state and also require updating the state we can + // just throw away + + var actionsToRemove = actionsForClip.knownActions; + + for ( var i = 0, n = actionsToRemove.length; i !== n; ++ i ) { + + var action = actionsToRemove[ i ]; + + this._deactivateAction( action ); + + var cacheIndex = action._cacheIndex, + lastInactiveAction = actions[ actions.length - 1 ]; + + action._cacheIndex = null; + action._byClipCacheIndex = null; + + lastInactiveAction._cacheIndex = cacheIndex; + actions[ cacheIndex ] = lastInactiveAction; + actions.pop(); + + this._removeInactiveBindingsForAction( action ); + + } + + delete actionsByClip[ clipUuid ]; + + } + + }, + + // free all resources specific to a particular root target object + uncacheRoot: function ( root ) { + + var rootUuid = root.uuid, + actionsByClip = this._actionsByClip; + + for ( var clipUuid in actionsByClip ) { + + var actionByRoot = actionsByClip[ clipUuid ].actionByRoot, + action = actionByRoot[ rootUuid ]; + + if ( action !== undefined ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + + var bindingsByRoot = this._bindingsByRootAndName, + bindingByName = bindingsByRoot[ rootUuid ]; + + if ( bindingByName !== undefined ) { + + for ( var trackName in bindingByName ) { + + var binding = bindingByName[ trackName ]; + binding.restoreOriginalState(); + this._removeInactiveBinding( binding ); + + } + + } + + }, + + // remove a targeted clip from the cache + uncacheAction: function ( clip, optionalRoot ) { + + var action = this.existingAction( clip, optionalRoot ); + + if ( action !== null ) { + + this._deactivateAction( action ); + this._removeInactiveAction( action ); + + } + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Uniform( value ) { + + if ( typeof value === 'string' ) { + + console.warn( 'THREE.Uniform: Type parameter is no longer needed.' ); + value = arguments[ 1 ]; + + } + + this.value = value; + + } + + Uniform.prototype.clone = function () { + + return new Uniform( this.value.clone === undefined ? this.value : this.value.clone() ); + + }; + + /** + * @author benaadams / https://twitter.com/ben_a_adams + */ + + function InstancedInterleavedBuffer( array, stride, meshPerAttribute ) { + + InterleavedBuffer.call( this, array, stride ); + + this.meshPerAttribute = meshPerAttribute || 1; + + } + + InstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), { + + constructor: InstancedInterleavedBuffer, + + isInstancedInterleavedBuffer: true, + + copy: function ( source ) { + + InterleavedBuffer.prototype.copy.call( this, source ); + + this.meshPerAttribute = source.meshPerAttribute; + + return this; + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author bhouston / http://clara.io/ + * @author stephomi / http://stephaneginier.com/ + */ + + function Raycaster( origin, direction, near, far ) { + + this.ray = new Ray( origin, direction ); + // direction is assumed to be normalized (for accurate distance calculations) + + this.near = near || 0; + this.far = far || Infinity; + this.camera = null; + + this.params = { + Mesh: {}, + Line: {}, + LOD: {}, + Points: { threshold: 1 }, + Sprite: {} + }; + + Object.defineProperties( this.params, { + PointCloud: { + get: function () { + + console.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' ); + return this.Points; + + } + } + } ); + + } + + function ascSort( a, b ) { + + return a.distance - b.distance; + + } + + function intersectObject( object, raycaster, intersects, recursive ) { + + if ( object.visible === false ) { return; } + + object.raycast( raycaster, intersects ); + + if ( recursive === true ) { + + var children = object.children; + + for ( var i = 0, l = children.length; i < l; i ++ ) { + + intersectObject( children[ i ], raycaster, intersects, true ); + + } + + } + + } + + Object.assign( Raycaster.prototype, { + + linePrecision: 1, + + set: function ( origin, direction ) { + + // direction is assumed to be normalized (for accurate distance calculations) + + this.ray.set( origin, direction ); + + }, + + setFromCamera: function ( coords, camera ) { + + if ( ( camera && camera.isPerspectiveCamera ) ) { + + this.ray.origin.setFromMatrixPosition( camera.matrixWorld ); + this.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize(); + this.camera = camera; + + } else if ( ( camera && camera.isOrthographicCamera ) ) { + + this.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera + this.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ); + this.camera = camera; + + } else { + + console.error( 'THREE.Raycaster: Unsupported camera type.' ); + + } + + }, + + intersectObject: function ( object, recursive, optionalTarget ) { + + var intersects = optionalTarget || []; + + intersectObject( object, this, intersects, recursive ); + + intersects.sort( ascSort ); + + return intersects; + + }, + + intersectObjects: function ( objects, recursive, optionalTarget ) { + + var intersects = optionalTarget || []; + + if ( Array.isArray( objects ) === false ) { + + console.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' ); + return intersects; + + } + + for ( var i = 0, l = objects.length; i < l; i ++ ) { + + intersectObject( objects[ i ], this, intersects, recursive ); + + } + + intersects.sort( ascSort ); + + return intersects; + + } + + } ); + + /** + * @author bhouston / http://clara.io + * @author WestLangley / http://github.com/WestLangley + * + * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system + * + * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up. + * The azimuthal angle (theta) is measured from the positive z-axiz. + */ + + function Spherical( radius, phi, theta ) { + + this.radius = ( radius !== undefined ) ? radius : 1.0; + this.phi = ( phi !== undefined ) ? phi : 0; // polar angle + this.theta = ( theta !== undefined ) ? theta : 0; // azimuthal angle + + return this; + + } + + Object.assign( Spherical.prototype, { + + set: function ( radius, phi, theta ) { + + this.radius = radius; + this.phi = phi; + this.theta = theta; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( other ) { + + this.radius = other.radius; + this.phi = other.phi; + this.theta = other.theta; + + return this; + + }, + + // restrict phi to be betwee EPS and PI-EPS + makeSafe: function () { + + var EPS = 0.000001; + this.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) ); + + return this; + + }, + + setFromVector3: function ( v ) { + + return this.setFromCartesianCoords( v.x, v.y, v.z ); + + }, + + setFromCartesianCoords: function ( x, y, z ) { + + this.radius = Math.sqrt( x * x + y * y + z * z ); + + if ( this.radius === 0 ) { + + this.theta = 0; + this.phi = 0; + + } else { + + this.theta = Math.atan2( x, z ); + this.phi = Math.acos( _Math.clamp( y / this.radius, - 1, 1 ) ); + + } + + return this; + + } + + } ); + + /** + * @author Mugen87 / https://github.com/Mugen87 + * + * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system + * + */ + + function Cylindrical( radius, theta, y ) { + + this.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane + this.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis + this.y = ( y !== undefined ) ? y : 0; // height above the x-z plane + + return this; + + } + + Object.assign( Cylindrical.prototype, { + + set: function ( radius, theta, y ) { + + this.radius = radius; + this.theta = theta; + this.y = y; + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( other ) { + + this.radius = other.radius; + this.theta = other.theta; + this.y = other.y; + + return this; + + }, + + setFromVector3: function ( v ) { + + return this.setFromCartesianCoords( v.x, v.y, v.z ); + + }, + + setFromCartesianCoords: function ( x, y, z ) { + + this.radius = Math.sqrt( x * x + z * z ); + this.theta = Math.atan2( x, z ); + this.y = y; + + return this; + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + var _vector$6 = new Vector2(); + + function Box2( min, max ) { + + this.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity ); + this.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity ); + + } + + Object.assign( Box2.prototype, { + + set: function ( min, max ) { + + this.min.copy( min ); + this.max.copy( max ); + + return this; + + }, + + setFromPoints: function ( points ) { + + this.makeEmpty(); + + for ( var i = 0, il = points.length; i < il; i ++ ) { + + this.expandByPoint( points[ i ] ); + + } + + return this; + + }, + + setFromCenterAndSize: function ( center, size ) { + + var halfSize = _vector$6.copy( size ).multiplyScalar( 0.5 ); + this.min.copy( center ).sub( halfSize ); + this.max.copy( center ).add( halfSize ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( box ) { + + this.min.copy( box.min ); + this.max.copy( box.max ); + + return this; + + }, + + makeEmpty: function () { + + this.min.x = this.min.y = + Infinity; + this.max.x = this.max.y = - Infinity; + + return this; + + }, + + isEmpty: function () { + + // this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes + + return ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ); + + }, + + getCenter: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .getCenter() target is now required' ); + target = new Vector2(); + + } + + return this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 ); + + }, + + getSize: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .getSize() target is now required' ); + target = new Vector2(); + + } + + return this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min ); + + }, + + expandByPoint: function ( point ) { + + this.min.min( point ); + this.max.max( point ); + + return this; + + }, + + expandByVector: function ( vector ) { + + this.min.sub( vector ); + this.max.add( vector ); + + return this; + + }, + + expandByScalar: function ( scalar ) { + + this.min.addScalar( - scalar ); + this.max.addScalar( scalar ); + + return this; + + }, + + containsPoint: function ( point ) { + + return point.x < this.min.x || point.x > this.max.x || + point.y < this.min.y || point.y > this.max.y ? false : true; + + }, + + containsBox: function ( box ) { + + return this.min.x <= box.min.x && box.max.x <= this.max.x && + this.min.y <= box.min.y && box.max.y <= this.max.y; + + }, + + getParameter: function ( point, target ) { + + // This can potentially have a divide by zero if the box + // has a size dimension of 0. + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .getParameter() target is now required' ); + target = new Vector2(); + + } + + return target.set( + ( point.x - this.min.x ) / ( this.max.x - this.min.x ), + ( point.y - this.min.y ) / ( this.max.y - this.min.y ) + ); + + }, + + intersectsBox: function ( box ) { + + // using 4 splitting planes to rule out intersections + + return box.max.x < this.min.x || box.min.x > this.max.x || + box.max.y < this.min.y || box.min.y > this.max.y ? false : true; + + }, + + clampPoint: function ( point, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Box2: .clampPoint() target is now required' ); + target = new Vector2(); + + } + + return target.copy( point ).clamp( this.min, this.max ); + + }, + + distanceToPoint: function ( point ) { + + var clampedPoint = _vector$6.copy( point ).clamp( this.min, this.max ); + return clampedPoint.sub( point ).length(); + + }, + + intersect: function ( box ) { + + this.min.max( box.min ); + this.max.min( box.max ); + + return this; + + }, + + union: function ( box ) { + + this.min.min( box.min ); + this.max.max( box.max ); + + return this; + + }, + + translate: function ( offset ) { + + this.min.add( offset ); + this.max.add( offset ); + + return this; + + }, + + equals: function ( box ) { + + return box.min.equals( this.min ) && box.max.equals( this.max ); + + } + + } ); + + /** + * @author bhouston / http://clara.io + */ + + var _startP = new Vector3(); + var _startEnd = new Vector3(); + + function Line3( start, end ) { + + this.start = ( start !== undefined ) ? start : new Vector3(); + this.end = ( end !== undefined ) ? end : new Vector3(); + + } + + Object.assign( Line3.prototype, { + + set: function ( start, end ) { + + this.start.copy( start ); + this.end.copy( end ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + }, + + copy: function ( line ) { + + this.start.copy( line.start ); + this.end.copy( line.end ); + + return this; + + }, + + getCenter: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .getCenter() target is now required' ); + target = new Vector3(); + + } + + return target.addVectors( this.start, this.end ).multiplyScalar( 0.5 ); + + }, + + delta: function ( target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .delta() target is now required' ); + target = new Vector3(); + + } + + return target.subVectors( this.end, this.start ); + + }, + + distanceSq: function () { + + return this.start.distanceToSquared( this.end ); + + }, + + distance: function () { + + return this.start.distanceTo( this.end ); + + }, + + at: function ( t, target ) { + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .at() target is now required' ); + target = new Vector3(); + + } + + return this.delta( target ).multiplyScalar( t ).add( this.start ); + + }, + + closestPointToPointParameter: function ( point, clampToLine ) { + + _startP.subVectors( point, this.start ); + _startEnd.subVectors( this.end, this.start ); + + var startEnd2 = _startEnd.dot( _startEnd ); + var startEnd_startP = _startEnd.dot( _startP ); + + var t = startEnd_startP / startEnd2; + + if ( clampToLine ) { + + t = _Math.clamp( t, 0, 1 ); + + } + + return t; + + }, + + closestPointToPoint: function ( point, clampToLine, target ) { + + var t = this.closestPointToPointParameter( point, clampToLine ); + + if ( target === undefined ) { + + console.warn( 'THREE.Line3: .closestPointToPoint() target is now required' ); + target = new Vector3(); + + } + + return this.delta( target ).multiplyScalar( t ).add( this.start ); + + }, + + applyMatrix4: function ( matrix ) { + + this.start.applyMatrix4( matrix ); + this.end.applyMatrix4( matrix ); + + return this; + + }, + + equals: function ( line ) { + + return line.start.equals( this.start ) && line.end.equals( this.end ); + + } + + } ); + + /** + * @author alteredq / http://alteredqualia.com/ + */ + + function ImmediateRenderObject( material ) { + + Object3D.call( this ); + + this.material = material; + this.render = function ( /* renderCallback */ ) {}; + + } + + ImmediateRenderObject.prototype = Object.create( Object3D.prototype ); + ImmediateRenderObject.prototype.constructor = ImmediateRenderObject; + + ImmediateRenderObject.prototype.isImmediateRenderObject = true; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + var _v1$5 = new Vector3(); + var _v2$3 = new Vector3(); + var _normalMatrix$1 = new Matrix3(); + var _keys = [ 'a', 'b', 'c' ]; + + function VertexNormalsHelper( object, size, hex, linewidth ) { + + this.object = object; + + this.size = ( size !== undefined ) ? size : 1; + + var color = ( hex !== undefined ) ? hex : 0xff0000; + + var width = ( linewidth !== undefined ) ? linewidth : 1; + + // + + var nNormals = 0; + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + nNormals = objGeometry.faces.length * 3; + + } else if ( objGeometry && objGeometry.isBufferGeometry ) { + + nNormals = objGeometry.attributes.normal.count; + + } + + // + + var geometry = new BufferGeometry(); + + var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + + geometry.addAttribute( 'position', positions ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + + // + + this.matrixAutoUpdate = false; + + this.update(); + + } + + VertexNormalsHelper.prototype = Object.create( LineSegments.prototype ); + VertexNormalsHelper.prototype.constructor = VertexNormalsHelper; + + VertexNormalsHelper.prototype.update = function () { + + this.object.updateMatrixWorld( true ); + + _normalMatrix$1.getNormalMatrix( this.object.matrixWorld ); + + var matrixWorld = this.object.matrixWorld; + + var position = this.geometry.attributes.position; + + // + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + var vertices = objGeometry.vertices; + + var faces = objGeometry.faces; + + var idx = 0; + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + for ( var j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) { + + var vertex = vertices[ face[ _keys[ j ] ] ]; + + var normal = face.vertexNormals[ j ]; + + _v1$5.copy( vertex ).applyMatrix4( matrixWorld ); + + _v2$3.copy( normal ).applyMatrix3( _normalMatrix$1 ).normalize().multiplyScalar( this.size ).add( _v1$5 ); + + position.setXYZ( idx, _v1$5.x, _v1$5.y, _v1$5.z ); + + idx = idx + 1; + + position.setXYZ( idx, _v2$3.x, _v2$3.y, _v2$3.z ); + + idx = idx + 1; + + } + + } + + } else if ( objGeometry && objGeometry.isBufferGeometry ) { + + var objPos = objGeometry.attributes.position; + + var objNorm = objGeometry.attributes.normal; + + var idx = 0; + + // for simplicity, ignore index and drawcalls, and render every normal + + for ( var j = 0, jl = objPos.count; j < jl; j ++ ) { + + _v1$5.set( objPos.getX( j ), objPos.getY( j ), objPos.getZ( j ) ).applyMatrix4( matrixWorld ); + + _v2$3.set( objNorm.getX( j ), objNorm.getY( j ), objNorm.getZ( j ) ); + + _v2$3.applyMatrix3( _normalMatrix$1 ).normalize().multiplyScalar( this.size ).add( _v1$5 ); + + position.setXYZ( idx, _v1$5.x, _v1$5.y, _v1$5.z ); + + idx = idx + 1; + + position.setXYZ( idx, _v2$3.x, _v2$3.y, _v2$3.z ); + + idx = idx + 1; + + } + + } + + position.needsUpdate = true; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + var _vector$7 = new Vector3(); + + function SpotLightHelper( light, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + var geometry = new BufferGeometry(); + + var positions = [ + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 1, 0, 1, + 0, 0, 0, - 1, 0, 1, + 0, 0, 0, 0, 1, 1, + 0, 0, 0, 0, - 1, 1 + ]; + + for ( var i = 0, j = 1, l = 32; i < l; i ++, j ++ ) { + + var p1 = ( i / l ) * Math.PI * 2; + var p2 = ( j / l ) * Math.PI * 2; + + positions.push( + Math.cos( p1 ), Math.sin( p1 ), 1, + Math.cos( p2 ), Math.sin( p2 ), 1 + ); + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + var material = new LineBasicMaterial( { fog: false } ); + + this.cone = new LineSegments( geometry, material ); + this.add( this.cone ); + + this.update(); + + } + + SpotLightHelper.prototype = Object.create( Object3D.prototype ); + SpotLightHelper.prototype.constructor = SpotLightHelper; + + SpotLightHelper.prototype.dispose = function () { + + this.cone.geometry.dispose(); + this.cone.material.dispose(); + + }; + + SpotLightHelper.prototype.update = function () { + + this.light.updateMatrixWorld(); + + var coneLength = this.light.distance ? this.light.distance : 1000; + var coneWidth = coneLength * Math.tan( this.light.angle ); + + this.cone.scale.set( coneWidth, coneWidth, coneLength ); + + _vector$7.setFromMatrixPosition( this.light.target.matrixWorld ); + + this.cone.lookAt( _vector$7 ); + + if ( this.color !== undefined ) { + + this.cone.material.color.set( this.color ); + + } else { + + this.cone.material.color.copy( this.light.color ); + + } + + }; + + /** + * @author Sean Griffin / http://twitter.com/sgrif + * @author Michael Guerrero / http://realitymeltdown.com + * @author mrdoob / http://mrdoob.com/ + * @author ikerr / http://verold.com + * @author Mugen87 / https://github.com/Mugen87 + */ + + var _vector$8 = new Vector3(); + var _boneMatrix = new Matrix4(); + var _matrixWorldInv = new Matrix4(); + + function getBoneList( object ) { + + var boneList = []; + + if ( object && object.isBone ) { + + boneList.push( object ); + + } + + for ( var i = 0; i < object.children.length; i ++ ) { + + boneList.push.apply( boneList, getBoneList( object.children[ i ] ) ); + + } + + return boneList; + + } + + function SkeletonHelper( object ) { + + var bones = getBoneList( object ); + + var geometry = new BufferGeometry(); + + var vertices = []; + var colors = []; + + var color1 = new Color( 0, 0, 1 ); + var color2 = new Color( 0, 1, 0 ); + + for ( var i = 0; i < bones.length; i ++ ) { + + var bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + vertices.push( 0, 0, 0 ); + vertices.push( 0, 0, 0 ); + colors.push( color1.r, color1.g, color1.b ); + colors.push( color2.r, color2.g, color2.b ); + + } + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors, depthTest: false, depthWrite: false, transparent: true } ); + + LineSegments.call( this, geometry, material ); + + this.root = object; + this.bones = bones; + + this.matrix = object.matrixWorld; + this.matrixAutoUpdate = false; + + } + + SkeletonHelper.prototype = Object.create( LineSegments.prototype ); + SkeletonHelper.prototype.constructor = SkeletonHelper; + + SkeletonHelper.prototype.updateMatrixWorld = function ( force ) { + + var bones = this.bones; + + var geometry = this.geometry; + var position = geometry.getAttribute( 'position' ); + + _matrixWorldInv.getInverse( this.root.matrixWorld ); + + for ( var i = 0, j = 0; i < bones.length; i ++ ) { + + var bone = bones[ i ]; + + if ( bone.parent && bone.parent.isBone ) { + + _boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld ); + _vector$8.setFromMatrixPosition( _boneMatrix ); + position.setXYZ( j, _vector$8.x, _vector$8.y, _vector$8.z ); + + _boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld ); + _vector$8.setFromMatrixPosition( _boneMatrix ); + position.setXYZ( j + 1, _vector$8.x, _vector$8.y, _vector$8.z ); + + j += 2; + + } + + } + + geometry.getAttribute( 'position' ).needsUpdate = true; + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + */ + + function PointLightHelper( light, sphereSize, color ) { + + this.light = light; + this.light.updateMatrixWorld(); + + this.color = color; + + var geometry = new SphereBufferGeometry( sphereSize, 4, 2 ); + var material = new MeshBasicMaterial( { wireframe: true, fog: false } ); + + Mesh.call( this, geometry, material ); + + this.matrix = this.light.matrixWorld; + this.matrixAutoUpdate = false; + + this.update(); + + + /* + var distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 ); + var distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } ); + + this.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial ); + this.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial ); + + var d = light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.scale.set( d, d, d ); + + } + + this.add( this.lightDistance ); + */ + + } + + PointLightHelper.prototype = Object.create( Mesh.prototype ); + PointLightHelper.prototype.constructor = PointLightHelper; + + PointLightHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material.dispose(); + + }; + + PointLightHelper.prototype.update = function () { + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + this.material.color.copy( this.light.color ); + + } + + /* + var d = this.light.distance; + + if ( d === 0.0 ) { + + this.lightDistance.visible = false; + + } else { + + this.lightDistance.visible = true; + this.lightDistance.scale.set( d, d, d ); + + } + */ + + }; + + /** + * @author abelnation / http://github.com/abelnation + * @author Mugen87 / http://github.com/Mugen87 + * @author WestLangley / http://github.com/WestLangley + * + * This helper must be added as a child of the light + */ + + function RectAreaLightHelper( light, color ) { + + this.type = 'RectAreaLightHelper'; + + this.light = light; + + this.color = color; // optional hardwired color for the helper + + var positions = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, - 1, 0, 1, 1, 0 ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.computeBoundingSphere(); + + var material = new LineBasicMaterial( { fog: false } ); + + Line.call( this, geometry, material ); + + // + + var positions2 = [ 1, 1, 0, - 1, 1, 0, - 1, - 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ]; + + var geometry2 = new BufferGeometry(); + geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); + geometry2.computeBoundingSphere(); + + this.add( new Mesh( geometry2, new MeshBasicMaterial( { side: BackSide, fog: false } ) ) ); + + this.update(); + + } + + RectAreaLightHelper.prototype = Object.create( Line.prototype ); + RectAreaLightHelper.prototype.constructor = RectAreaLightHelper; + + RectAreaLightHelper.prototype.update = function () { + + this.scale.set( 0.5 * this.light.width, 0.5 * this.light.height, 1 ); + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + this.children[ 0 ].material.color.set( this.color ); + + } else { + + this.material.color.copy( this.light.color ).multiplyScalar( this.light.intensity ); + + // prevent hue shift + var c = this.material.color; + var max = Math.max( c.r, c.g, c.b ); + if ( max > 1 ) { c.multiplyScalar( 1 / max ); } + + this.children[ 0 ].material.color.copy( this.material.color ); + + } + + }; + + RectAreaLightHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material.dispose(); + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / https://github.com/Mugen87 + */ + + var _vector$9 = new Vector3(); + var _color1 = new Color(); + var _color2 = new Color(); + + function HemisphereLightHelper( light, size, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + var geometry = new OctahedronBufferGeometry( size ); + geometry.rotateY( Math.PI * 0.5 ); + + this.material = new MeshBasicMaterial( { wireframe: true, fog: false } ); + if ( this.color === undefined ) { this.material.vertexColors = VertexColors; } + + var position = geometry.getAttribute( 'position' ); + var colors = new Float32Array( position.count * 3 ); + + geometry.addAttribute( 'color', new BufferAttribute( colors, 3 ) ); + + this.add( new Mesh( geometry, this.material ) ); + + this.update(); + + } + + HemisphereLightHelper.prototype = Object.create( Object3D.prototype ); + HemisphereLightHelper.prototype.constructor = HemisphereLightHelper; + + HemisphereLightHelper.prototype.dispose = function () { + + this.children[ 0 ].geometry.dispose(); + this.children[ 0 ].material.dispose(); + + }; + + HemisphereLightHelper.prototype.update = function () { + + var mesh = this.children[ 0 ]; + + if ( this.color !== undefined ) { + + this.material.color.set( this.color ); + + } else { + + var colors = mesh.geometry.getAttribute( 'color' ); + + _color1.copy( this.light.color ); + _color2.copy( this.light.groundColor ); + + for ( var i = 0, l = colors.count; i < l; i ++ ) { + + var color = ( i < ( l / 2 ) ) ? _color1 : _color2; + + colors.setXYZ( i, color.r, color.g, color.b ); + + } + + colors.needsUpdate = true; + + } + + mesh.lookAt( _vector$9.setFromMatrixPosition( this.light.matrixWorld ).negate() ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function LightProbeHelper( lightProbe, size ) { + + this.lightProbe = lightProbe; + + this.size = size; + + var defines = {}; + defines[ 'GAMMA_OUTPUT' ] = ""; + + // material + var material = new ShaderMaterial( { + + defines: defines, + + uniforms: { + + sh: { value: this.lightProbe.sh.coefficients }, // by reference + + intensity: { value: this.lightProbe.intensity } + + }, + + vertexShader: [ + + 'varying vec3 vNormal;', + + 'void main() {', + + ' vNormal = normalize( normalMatrix * normal );', + + ' gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );', + + '}' ].join( '\n' ), + + fragmentShader: [ + + '#define RECIPROCAL_PI 0.318309886', + + 'vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {', + + ' // matrix is assumed to be orthogonal', + + ' return normalize( ( vec4( normal, 0.0 ) * matrix ).xyz );', + + '}', + + 'vec3 linearToOutput( in vec3 a ) {', + + ' #ifdef GAMMA_OUTPUT', + + ' return pow( a, vec3( 1.0 / float( GAMMA_FACTOR ) ) );', + + ' #else', + + ' return a;', + + ' #endif', + + '}', + + '// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf', + 'vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {', + + ' // normal is assumed to have unit length', + + ' float x = normal.x, y = normal.y, z = normal.z;', + + ' // band 0', + ' vec3 result = shCoefficients[ 0 ] * 0.886227;', + + ' // band 1', + ' result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;', + ' result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;', + ' result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;', + + ' // band 2', + ' result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;', + ' result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;', + ' result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );', + ' result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;', + ' result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );', + + ' return result;', + + '}', + + 'uniform vec3 sh[ 9 ]; // sh coefficients', + + 'uniform float intensity; // light probe intensity', + + 'varying vec3 vNormal;', + + 'void main() {', + + ' vec3 normal = normalize( vNormal );', + + ' vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );', + + ' vec3 irradiance = shGetIrradianceAt( worldNormal, sh );', + + ' vec3 outgoingLight = RECIPROCAL_PI * irradiance * intensity;', + + ' outgoingLight = linearToOutput( outgoingLight );', + + ' gl_FragColor = vec4( outgoingLight, 1.0 );', + + '}' + + ].join( '\n' ) + + } ); + + var geometry = new SphereBufferGeometry( 1, 32, 16 ); + + Mesh.call( this, geometry, material ); + + this.onBeforeRender(); + + } + + LightProbeHelper.prototype = Object.create( Mesh.prototype ); + LightProbeHelper.prototype.constructor = LightProbeHelper; + + LightProbeHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material.dispose(); + + }; + + LightProbeHelper.prototype.onBeforeRender = function () { + + this.position.copy( this.lightProbe.position ); + + this.scale.set( 1, 1, 1 ).multiplyScalar( this.size ); + + this.material.uniforms.intensity.value = this.lightProbe.intensity; + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function GridHelper( size, divisions, color1, color2 ) { + + size = size || 10; + divisions = divisions || 10; + color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); + color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + + var center = divisions / 2; + var step = size / divisions; + var halfSize = size / 2; + + var vertices = [], colors = []; + + for ( var i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) { + + vertices.push( - halfSize, 0, k, halfSize, 0, k ); + vertices.push( k, 0, - halfSize, k, 0, halfSize ); + + var color = i === center ? color1 : color2; + + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + color.toArray( colors, j ); j += 3; + + } + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + GridHelper.prototype = Object.assign( Object.create( LineSegments.prototype ), { + + constructor: GridHelper, + + copy: function ( source ) { + + LineSegments.prototype.copy.call( this, source ); + + this.geometry.copy( source.geometry ); + this.material.copy( source.material ); + + return this; + + }, + + clone: function () { + + return new this.constructor().copy( this ); + + } + + } ); + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / http://github.com/Mugen87 + * @author Hectate / http://www.github.com/Hectate + */ + + function PolarGridHelper( radius, radials, circles, divisions, color1, color2 ) { + + radius = radius || 10; + radials = radials || 16; + circles = circles || 8; + divisions = divisions || 64; + color1 = new Color( color1 !== undefined ? color1 : 0x444444 ); + color2 = new Color( color2 !== undefined ? color2 : 0x888888 ); + + var vertices = []; + var colors = []; + + var x, z; + var v, i, j, r, color; + + // create the radials + + for ( i = 0; i <= radials; i ++ ) { + + v = ( i / radials ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * radius; + z = Math.cos( v ) * radius; + + vertices.push( 0, 0, 0 ); + vertices.push( x, 0, z ); + + color = ( i & 1 ) ? color1 : color2; + + colors.push( color.r, color.g, color.b ); + colors.push( color.r, color.g, color.b ); + + } + + // create the circles + + for ( i = 0; i <= circles; i ++ ) { + + color = ( i & 1 ) ? color1 : color2; + + r = radius - ( radius / circles * i ); + + for ( j = 0; j < divisions; j ++ ) { + + // first vertex + + v = ( j / divisions ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * r; + z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + // second vertex + + v = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 ); + + x = Math.sin( v ) * r; + z = Math.cos( v ) * r; + + vertices.push( x, 0, z ); + colors.push( color.r, color.g, color.b ); + + } + + } + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + PolarGridHelper.prototype = Object.create( LineSegments.prototype ); + PolarGridHelper.prototype.constructor = PolarGridHelper; + + /** + * @author Mugen87 / http://github.com/Mugen87 + */ + + function PositionalAudioHelper( audio, range, divisionsInnerAngle, divisionsOuterAngle ) { + + this.audio = audio; + this.range = range || 1; + this.divisionsInnerAngle = divisionsInnerAngle || 16; + this.divisionsOuterAngle = divisionsOuterAngle || 2; + + var geometry = new BufferGeometry(); + var divisions = this.divisionsInnerAngle + this.divisionsOuterAngle * 2; + var positions = new Float32Array( ( divisions * 3 + 3 ) * 3 ); + geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); + + var materialInnerAngle = new LineBasicMaterial( { color: 0x00ff00 } ); + var materialOuterAngle = new LineBasicMaterial( { color: 0xffff00 } ); + + Line.call( this, geometry, [ materialOuterAngle, materialInnerAngle ] ); + + this.update(); + + } + + PositionalAudioHelper.prototype = Object.create( Line.prototype ); + PositionalAudioHelper.prototype.constructor = PositionalAudioHelper; + + PositionalAudioHelper.prototype.update = function () { + + var audio = this.audio; + var range = this.range; + var divisionsInnerAngle = this.divisionsInnerAngle; + var divisionsOuterAngle = this.divisionsOuterAngle; + + var coneInnerAngle = _Math.degToRad( audio.panner.coneInnerAngle ); + var coneOuterAngle = _Math.degToRad( audio.panner.coneOuterAngle ); + + var halfConeInnerAngle = coneInnerAngle / 2; + var halfConeOuterAngle = coneOuterAngle / 2; + + var start = 0; + var count = 0; + var i, stride; + + var geometry = this.geometry; + var positionAttribute = geometry.attributes.position; + + geometry.clearGroups(); + + // + + function generateSegment( from, to, divisions, materialIndex ) { + + var step = ( to - from ) / divisions; + + positionAttribute.setXYZ( start, 0, 0, 0 ); + count ++; + + for ( i = from; i < to; i += step ) { + + stride = start + count; + + positionAttribute.setXYZ( stride, Math.sin( i ) * range, 0, Math.cos( i ) * range ); + positionAttribute.setXYZ( stride + 1, Math.sin( Math.min( i + step, to ) ) * range, 0, Math.cos( Math.min( i + step, to ) ) * range ); + positionAttribute.setXYZ( stride + 2, 0, 0, 0 ); + + count += 3; + + } + + geometry.addGroup( start, count, materialIndex ); + + start += count; + count = 0; + + } + + // + + generateSegment( - halfConeOuterAngle, - halfConeInnerAngle, divisionsOuterAngle, 0 ); + generateSegment( - halfConeInnerAngle, halfConeInnerAngle, divisionsInnerAngle, 1 ); + generateSegment( halfConeInnerAngle, halfConeOuterAngle, divisionsOuterAngle, 0 ); + + // + + positionAttribute.needsUpdate = true; + + if ( coneInnerAngle === coneOuterAngle ) { this.material[ 0 ].visible = false; } + + }; + + PositionalAudioHelper.prototype.dispose = function () { + + this.geometry.dispose(); + this.material[ 0 ].dispose(); + this.material[ 1 ].dispose(); + + }; + + /** + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + var _v1$6 = new Vector3(); + var _v2$4 = new Vector3(); + var _normalMatrix$2 = new Matrix3(); + + function FaceNormalsHelper( object, size, hex, linewidth ) { + + // FaceNormalsHelper only supports THREE.Geometry + + this.object = object; + + this.size = ( size !== undefined ) ? size : 1; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var width = ( linewidth !== undefined ) ? linewidth : 1; + + // + + var nNormals = 0; + + var objGeometry = this.object.geometry; + + if ( objGeometry && objGeometry.isGeometry ) { + + nNormals = objGeometry.faces.length; + + } else { + + console.warn( 'THREE.FaceNormalsHelper: only THREE.Geometry is supported. Use THREE.VertexNormalsHelper, instead.' ); + + } + + // + + var geometry = new BufferGeometry(); + + var positions = new Float32BufferAttribute( nNormals * 2 * 3, 3 ); + + geometry.addAttribute( 'position', positions ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color, linewidth: width } ) ); + + // + + this.matrixAutoUpdate = false; + this.update(); + + } + + FaceNormalsHelper.prototype = Object.create( LineSegments.prototype ); + FaceNormalsHelper.prototype.constructor = FaceNormalsHelper; + + FaceNormalsHelper.prototype.update = function () { + + this.object.updateMatrixWorld( true ); + + _normalMatrix$2.getNormalMatrix( this.object.matrixWorld ); + + var matrixWorld = this.object.matrixWorld; + + var position = this.geometry.attributes.position; + + // + + var objGeometry = this.object.geometry; + + var vertices = objGeometry.vertices; + + var faces = objGeometry.faces; + + var idx = 0; + + for ( var i = 0, l = faces.length; i < l; i ++ ) { + + var face = faces[ i ]; + + var normal = face.normal; + + _v1$6.copy( vertices[ face.a ] ) + .add( vertices[ face.b ] ) + .add( vertices[ face.c ] ) + .divideScalar( 3 ) + .applyMatrix4( matrixWorld ); + + _v2$4.copy( normal ).applyMatrix3( _normalMatrix$2 ).normalize().multiplyScalar( this.size ).add( _v1$6 ); + + position.setXYZ( idx, _v1$6.x, _v1$6.y, _v1$6.z ); + + idx = idx + 1; + + position.setXYZ( idx, _v2$4.x, _v2$4.y, _v2$4.z ); + + idx = idx + 1; + + } + + position.needsUpdate = true; + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author mrdoob / http://mrdoob.com/ + * @author WestLangley / http://github.com/WestLangley + */ + + var _v1$7 = new Vector3(); + var _v2$5 = new Vector3(); + var _v3$1 = new Vector3(); + + function DirectionalLightHelper( light, size, color ) { + + Object3D.call( this ); + + this.light = light; + this.light.updateMatrixWorld(); + + this.matrix = light.matrixWorld; + this.matrixAutoUpdate = false; + + this.color = color; + + if ( size === undefined ) { size = 1; } + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( [ + - size, size, 0, + size, size, 0, + size, - size, 0, + - size, - size, 0, + - size, size, 0 + ], 3 ) ); + + var material = new LineBasicMaterial( { fog: false } ); + + this.lightPlane = new Line( geometry, material ); + this.add( this.lightPlane ); + + geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) ); + + this.targetLine = new Line( geometry, material ); + this.add( this.targetLine ); + + this.update(); + + } + + DirectionalLightHelper.prototype = Object.create( Object3D.prototype ); + DirectionalLightHelper.prototype.constructor = DirectionalLightHelper; + + DirectionalLightHelper.prototype.dispose = function () { + + this.lightPlane.geometry.dispose(); + this.lightPlane.material.dispose(); + this.targetLine.geometry.dispose(); + this.targetLine.material.dispose(); + + }; + + DirectionalLightHelper.prototype.update = function () { + + _v1$7.setFromMatrixPosition( this.light.matrixWorld ); + _v2$5.setFromMatrixPosition( this.light.target.matrixWorld ); + _v3$1.subVectors( _v2$5, _v1$7 ); + + this.lightPlane.lookAt( _v2$5 ); + + if ( this.color !== undefined ) { + + this.lightPlane.material.color.set( this.color ); + this.targetLine.material.color.set( this.color ); + + } else { + + this.lightPlane.material.color.copy( this.light.color ); + this.targetLine.material.color.copy( this.light.color ); + + } + + this.targetLine.lookAt( _v2$5 ); + this.targetLine.scale.z = _v3$1.length(); + + }; + + /** + * @author alteredq / http://alteredqualia.com/ + * @author Mugen87 / https://github.com/Mugen87 + * + * - shows frustum, line of sight and up of the camera + * - suitable for fast updates + * - based on frustum visualization in lightgl.js shadowmap example + * http://evanw.github.com/lightgl.js/tests/shadowmap.html + */ + + var _vector$a = new Vector3(); + var _camera = new Camera(); + + function CameraHelper( camera ) { + + var geometry = new BufferGeometry(); + var material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } ); + + var vertices = []; + var colors = []; + + var pointMap = {}; + + // colors + + var colorFrustum = new Color( 0xffaa00 ); + var colorCone = new Color( 0xff0000 ); + var colorUp = new Color( 0x00aaff ); + var colorTarget = new Color( 0xffffff ); + var colorCross = new Color( 0x333333 ); + + // near + + addLine( 'n1', 'n2', colorFrustum ); + addLine( 'n2', 'n4', colorFrustum ); + addLine( 'n4', 'n3', colorFrustum ); + addLine( 'n3', 'n1', colorFrustum ); + + // far + + addLine( 'f1', 'f2', colorFrustum ); + addLine( 'f2', 'f4', colorFrustum ); + addLine( 'f4', 'f3', colorFrustum ); + addLine( 'f3', 'f1', colorFrustum ); + + // sides + + addLine( 'n1', 'f1', colorFrustum ); + addLine( 'n2', 'f2', colorFrustum ); + addLine( 'n3', 'f3', colorFrustum ); + addLine( 'n4', 'f4', colorFrustum ); + + // cone + + addLine( 'p', 'n1', colorCone ); + addLine( 'p', 'n2', colorCone ); + addLine( 'p', 'n3', colorCone ); + addLine( 'p', 'n4', colorCone ); + + // up + + addLine( 'u1', 'u2', colorUp ); + addLine( 'u2', 'u3', colorUp ); + addLine( 'u3', 'u1', colorUp ); + + // target + + addLine( 'c', 't', colorTarget ); + addLine( 'p', 'c', colorCross ); + + // cross + + addLine( 'cn1', 'cn2', colorCross ); + addLine( 'cn3', 'cn4', colorCross ); + + addLine( 'cf1', 'cf2', colorCross ); + addLine( 'cf3', 'cf4', colorCross ); + + function addLine( a, b, color ) { + + addPoint( a, color ); + addPoint( b, color ); + + } + + function addPoint( id, color ) { + + vertices.push( 0, 0, 0 ); + colors.push( color.r, color.g, color.b ); + + if ( pointMap[ id ] === undefined ) { + + pointMap[ id ] = []; + + } + + pointMap[ id ].push( ( vertices.length / 3 ) - 1 ); + + } + + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + LineSegments.call( this, geometry, material ); + + this.camera = camera; + if ( this.camera.updateProjectionMatrix ) { this.camera.updateProjectionMatrix(); } + + this.matrix = camera.matrixWorld; + this.matrixAutoUpdate = false; + + this.pointMap = pointMap; + + this.update(); + + } + + CameraHelper.prototype = Object.create( LineSegments.prototype ); + CameraHelper.prototype.constructor = CameraHelper; + + CameraHelper.prototype.update = function () { + + var geometry = this.geometry; + var pointMap = this.pointMap; + + var w = 1, h = 1; + + // we need just camera projection matrix inverse + // world matrix must be identity + + _camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse ); + + // center / target + + setPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 ); + setPoint( 't', pointMap, geometry, _camera, 0, 0, 1 ); + + // near + + setPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 ); + setPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 ); + setPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 ); + setPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 ); + + // far + + setPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 ); + setPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 ); + setPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 ); + setPoint( 'f4', pointMap, geometry, _camera, w, h, 1 ); + + // up + + setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 ); + setPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 ); + setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 ); + + // cross + + setPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 ); + setPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 ); + setPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 ); + setPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 ); + + setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 ); + setPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 ); + setPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 ); + setPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 ); + + geometry.getAttribute( 'position' ).needsUpdate = true; + + }; + + function setPoint( point, pointMap, geometry, camera, x, y, z ) { + + _vector$a.set( x, y, z ).unproject( camera ); + + var points = pointMap[ point ]; + + if ( points !== undefined ) { + + var position = geometry.getAttribute( 'position' ); + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + position.setXYZ( points[ i ], _vector$a.x, _vector$a.y, _vector$a.z ); + + } + + } + + } + + /** + * @author mrdoob / http://mrdoob.com/ + * @author Mugen87 / http://github.com/Mugen87 + */ + + var _box$2 = new Box3(); + + function BoxHelper( object, color ) { + + this.object = object; + + if ( color === undefined ) { color = 0xffff00; } + + var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + var positions = new Float32Array( 8 * 3 ); + + var geometry = new BufferGeometry(); + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + geometry.addAttribute( 'position', new BufferAttribute( positions, 3 ) ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + this.matrixAutoUpdate = false; + + this.update(); + + } + + BoxHelper.prototype = Object.create( LineSegments.prototype ); + BoxHelper.prototype.constructor = BoxHelper; + + BoxHelper.prototype.update = function ( object ) { + + if ( object !== undefined ) { + + console.warn( 'THREE.BoxHelper: .update() has no longer arguments.' ); + + } + + if ( this.object !== undefined ) { + + _box$2.setFromObject( this.object ); + + } + + if ( _box$2.isEmpty() ) { return; } + + var min = _box$2.min; + var max = _box$2.max; + + /* + 5____4 + 1/___0/| + | 6__|_7 + 2/___3/ + + 0: max.x, max.y, max.z + 1: min.x, max.y, max.z + 2: min.x, min.y, max.z + 3: max.x, min.y, max.z + 4: max.x, max.y, min.z + 5: min.x, max.y, min.z + 6: min.x, min.y, min.z + 7: max.x, min.y, min.z + */ + + var position = this.geometry.attributes.position; + var array = position.array; + + array[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z; + array[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z; + array[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z; + array[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z; + array[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z; + array[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z; + array[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z; + array[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z; + + position.needsUpdate = true; + + this.geometry.computeBoundingSphere(); + + + }; + + BoxHelper.prototype.setFromObject = function ( object ) { + + this.object = object; + this.update(); + + return this; + + }; + + BoxHelper.prototype.copy = function ( source ) { + + LineSegments.prototype.copy.call( this, source ); + + this.object = source.object; + + return this; + + }; + + BoxHelper.prototype.clone = function () { + + return new this.constructor().copy( this ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function Box3Helper( box, color ) { + + this.type = 'Box3Helper'; + + this.box = box; + + color = color || 0xffff00; + + var indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] ); + + var positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ]; + + var geometry = new BufferGeometry(); + + geometry.setIndex( new BufferAttribute( indices, 1 ) ); + + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + + LineSegments.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + this.geometry.computeBoundingSphere(); + + } + + Box3Helper.prototype = Object.create( LineSegments.prototype ); + Box3Helper.prototype.constructor = Box3Helper; + + Box3Helper.prototype.updateMatrixWorld = function ( force ) { + + var box = this.box; + + if ( box.isEmpty() ) { return; } + + box.getCenter( this.position ); + + box.getSize( this.scale ); + + this.scale.multiplyScalar( 0.5 ); + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + */ + + function PlaneHelper( plane, size, hex ) { + + this.type = 'PlaneHelper'; + + this.plane = plane; + + this.size = ( size === undefined ) ? 1 : size; + + var color = ( hex !== undefined ) ? hex : 0xffff00; + + var positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( positions, 3 ) ); + geometry.computeBoundingSphere(); + + Line.call( this, geometry, new LineBasicMaterial( { color: color } ) ); + + // + + var positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ]; + + var geometry2 = new BufferGeometry(); + geometry2.addAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) ); + geometry2.computeBoundingSphere(); + + this.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false } ) ) ); + + } + + PlaneHelper.prototype = Object.create( Line.prototype ); + PlaneHelper.prototype.constructor = PlaneHelper; + + PlaneHelper.prototype.updateMatrixWorld = function ( force ) { + + var scale = - this.plane.constant; + + if ( Math.abs( scale ) < 1e-8 ) { scale = 1e-8; } // sign does not matter + + this.scale.set( 0.5 * this.size, 0.5 * this.size, scale ); + + this.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here + + this.lookAt( this.plane.normal ); + + Object3D.prototype.updateMatrixWorld.call( this, force ); + + }; + + /** + * @author WestLangley / http://github.com/WestLangley + * @author zz85 / http://github.com/zz85 + * @author bhouston / http://clara.io + * + * Creates an arrow for visualizing directions + * + * Parameters: + * dir - Vector3 + * origin - Vector3 + * length - Number + * color - color in hex value + * headLength - Number + * headWidth - Number + */ + + var _axis = new Vector3(); + var _lineGeometry, _coneGeometry; + + function ArrowHelper( dir, origin, length, color, headLength, headWidth ) { + + // dir is assumed to be normalized + + Object3D.call( this ); + + if ( dir === undefined ) { dir = new Vector3( 0, 0, 1 ); } + if ( origin === undefined ) { origin = new Vector3( 0, 0, 0 ); } + if ( length === undefined ) { length = 1; } + if ( color === undefined ) { color = 0xffff00; } + if ( headLength === undefined ) { headLength = 0.2 * length; } + if ( headWidth === undefined ) { headWidth = 0.2 * headLength; } + + if ( _lineGeometry === undefined ) { + + _lineGeometry = new BufferGeometry(); + _lineGeometry.addAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) ); + + _coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 ); + _coneGeometry.translate( 0, - 0.5, 0 ); + + } + + this.position.copy( origin ); + + this.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color } ) ); + this.line.matrixAutoUpdate = false; + this.add( this.line ); + + this.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color } ) ); + this.cone.matrixAutoUpdate = false; + this.add( this.cone ); + + this.setDirection( dir ); + this.setLength( length, headLength, headWidth ); + + } + + ArrowHelper.prototype = Object.create( Object3D.prototype ); + ArrowHelper.prototype.constructor = ArrowHelper; + + ArrowHelper.prototype.setDirection = function ( dir ) { + + // dir is assumed to be normalized + + if ( dir.y > 0.99999 ) { + + this.quaternion.set( 0, 0, 0, 1 ); + + } else if ( dir.y < - 0.99999 ) { + + this.quaternion.set( 1, 0, 0, 0 ); + + } else { + + _axis.set( dir.z, 0, - dir.x ).normalize(); + + var radians = Math.acos( dir.y ); + + this.quaternion.setFromAxisAngle( _axis, radians ); + + } + + }; + + ArrowHelper.prototype.setLength = function ( length, headLength, headWidth ) { + + if ( headLength === undefined ) { headLength = 0.2 * length; } + if ( headWidth === undefined ) { headWidth = 0.2 * headLength; } + + this.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458 + this.line.updateMatrix(); + + this.cone.scale.set( headWidth, headLength, headWidth ); + this.cone.position.y = length; + this.cone.updateMatrix(); + + }; + + ArrowHelper.prototype.setColor = function ( color ) { + + this.line.material.color.set( color ); + this.cone.material.color.set( color ); + + }; + + ArrowHelper.prototype.copy = function ( source ) { + + Object3D.prototype.copy.call( this, source, false ); + + this.line.copy( source.line ); + this.cone.copy( source.cone ); + + return this; + + }; + + ArrowHelper.prototype.clone = function () { + + return new this.constructor().copy( this ); + + }; + + /** + * @author sroucheray / http://sroucheray.org/ + * @author mrdoob / http://mrdoob.com/ + */ + + function AxesHelper( size ) { + + size = size || 1; + + var vertices = [ + 0, 0, 0, size, 0, 0, + 0, 0, 0, 0, size, 0, + 0, 0, 0, 0, 0, size + ]; + + var colors = [ + 1, 0, 0, 1, 0.6, 0, + 0, 1, 0, 0.6, 1, 0, + 0, 0, 1, 0, 0.6, 1 + ]; + + var geometry = new BufferGeometry(); + geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) ); + geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) ); + + var material = new LineBasicMaterial( { vertexColors: VertexColors } ); + + LineSegments.call( this, geometry, material ); + + } + + AxesHelper.prototype = Object.create( LineSegments.prototype ); + AxesHelper.prototype.constructor = AxesHelper; + + /** + * @author mrdoob / http://mrdoob.com/ + */ + + function Face4( a, b, c, d, normal, color, materialIndex ) { + + console.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' ); + return new Face3( a, b, c, normal, color, materialIndex ); + + } + + var LineStrip = 0; + + var LinePieces = 1; + + function MeshFaceMaterial( materials ) { + + console.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' ); + return materials; + + } + + function MultiMaterial( materials ) { + + if ( materials === undefined ) { materials = []; } + + console.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' ); + materials.isMultiMaterial = true; + materials.materials = materials; + materials.clone = function () { + + return materials.slice(); + + }; + return materials; + + } + + function PointCloud( geometry, material ) { + + console.warn( 'THREE.PointCloud has been renamed to THREE.Points.' ); + return new Points( geometry, material ); + + } + + function Particle( material ) { + + console.warn( 'THREE.Particle has been renamed to THREE.Sprite.' ); + return new Sprite( material ); + + } + + function ParticleSystem( geometry, material ) { + + console.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' ); + return new Points( geometry, material ); + + } + + function PointCloudMaterial( parameters ) { + + console.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function ParticleBasicMaterial( parameters ) { + + console.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function ParticleSystemMaterial( parameters ) { + + console.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' ); + return new PointsMaterial( parameters ); + + } + + function Vertex( x, y, z ) { + + console.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' ); + return new Vector3( x, y, z ); + + } + + // + + function DynamicBufferAttribute( array, itemSize ) { + + console.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setDynamic( true ) instead.' ); + return new BufferAttribute( array, itemSize ).setDynamic( true ); + + } + + function Int8Attribute( array, itemSize ) { + + console.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' ); + return new Int8BufferAttribute( array, itemSize ); + + } + + function Uint8Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' ); + return new Uint8BufferAttribute( array, itemSize ); + + } + + function Uint8ClampedAttribute( array, itemSize ) { + + console.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' ); + return new Uint8ClampedBufferAttribute( array, itemSize ); + + } + + function Int16Attribute( array, itemSize ) { + + console.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' ); + return new Int16BufferAttribute( array, itemSize ); + + } + + function Uint16Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' ); + return new Uint16BufferAttribute( array, itemSize ); + + } + + function Int32Attribute( array, itemSize ) { + + console.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' ); + return new Int32BufferAttribute( array, itemSize ); + + } + + function Uint32Attribute( array, itemSize ) { + + console.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' ); + return new Uint32BufferAttribute( array, itemSize ); + + } + + function Float32Attribute( array, itemSize ) { + + console.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' ); + return new Float32BufferAttribute( array, itemSize ); + + } + + function Float64Attribute( array, itemSize ) { + + console.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' ); + return new Float64BufferAttribute( array, itemSize ); + + } + + // + + Curve.create = function ( construct, getPoint ) { + + console.log( 'THREE.Curve.create() has been deprecated' ); + + construct.prototype = Object.create( Curve.prototype ); + construct.prototype.constructor = construct; + construct.prototype.getPoint = getPoint; + + return construct; + + }; + + // + + Object.assign( CurvePath.prototype, { + + createPointsGeometry: function ( divisions ) { + + console.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + // generate geometry from path points (for Line or Points objects) + + var pts = this.getPoints( divisions ); + return this.createGeometry( pts ); + + }, + + createSpacedPointsGeometry: function ( divisions ) { + + console.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + // generate geometry from equidistant sampling along the path + + var pts = this.getSpacedPoints( divisions ); + return this.createGeometry( pts ); + + }, + + createGeometry: function ( points ) { + + console.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' ); + + var geometry = new Geometry(); + + for ( var i = 0, l = points.length; i < l; i ++ ) { + + var point = points[ i ]; + geometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) ); + + } + + return geometry; + + } + + } ); + + // + + Object.assign( Path.prototype, { + + fromPoints: function ( points ) { + + console.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' ); + this.setFromPoints( points ); + + } + + } ); + + // + + function ClosedSplineCurve3( points ) { + + console.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + this.closed = true; + + } + + ClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + + // + + function SplineCurve3( points ) { + + console.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + + } + + SplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype ); + + // + + function Spline( points ) { + + console.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' ); + + CatmullRomCurve3.call( this, points ); + this.type = 'catmullrom'; + + } + + Spline.prototype = Object.create( CatmullRomCurve3.prototype ); + + Object.assign( Spline.prototype, { + + initFromArray: function ( /* a */ ) { + + console.error( 'THREE.Spline: .initFromArray() has been removed.' ); + + }, + getControlPointsArray: function ( /* optionalTarget */ ) { + + console.error( 'THREE.Spline: .getControlPointsArray() has been removed.' ); + + }, + reparametrizeByArcLength: function ( /* samplingCoef */ ) { + + console.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' ); + + } + + } ); + + // + + function AxisHelper( size ) { + + console.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' ); + return new AxesHelper( size ); + + } + + function BoundingBoxHelper( object, color ) { + + console.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' ); + return new BoxHelper( object, color ); + + } + + function EdgesHelper( object, hex ) { + + console.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' ); + return new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + + } + + GridHelper.prototype.setColors = function () { + + console.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' ); + + }; + + SkeletonHelper.prototype.update = function () { + + console.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' ); + + }; + + function WireframeHelper( object, hex ) { + + console.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' ); + return new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) ); + + } + + // + + Object.assign( Loader.prototype, { + + extractUrlBase: function ( url ) { + + console.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' ); + return LoaderUtils.extractUrlBase( url ); + + } + + } ); + + Loader.Handlers = { + + add: function ( /* regex, loader */ ) { + + console.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' ); + + }, + + get: function ( /* file */ ) { + + console.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' ); + + } + + }; + + function XHRLoader( manager ) { + + console.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' ); + return new FileLoader( manager ); + + } + + function BinaryTextureLoader( manager ) { + + console.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' ); + return new DataTextureLoader( manager ); + + } + + Object.assign( ObjectLoader.prototype, { + + setTexturePath: function ( value ) { + + console.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' ); + return this.setResourcePath( value ); + + } + + } ); + + // + + Object.assign( Box2.prototype, { + + center: function ( optionalTarget ) { + + console.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }, + empty: function () { + + console.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' ); + return this.isEmpty(); + + }, + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + size: function ( optionalTarget ) { + + console.warn( 'THREE.Box2: .size() has been renamed to .getSize().' ); + return this.getSize( optionalTarget ); + + } + } ); + + Object.assign( Box3.prototype, { + + center: function ( optionalTarget ) { + + console.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }, + empty: function () { + + console.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' ); + return this.isEmpty(); + + }, + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + isIntersectionSphere: function ( sphere ) { + + console.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); + return this.intersectsSphere( sphere ); + + }, + size: function ( optionalTarget ) { + + console.warn( 'THREE.Box3: .size() has been renamed to .getSize().' ); + return this.getSize( optionalTarget ); + + } + } ); + + Line3.prototype.center = function ( optionalTarget ) { + + console.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' ); + return this.getCenter( optionalTarget ); + + }; + + Object.assign( _Math, { + + random16: function () { + + console.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' ); + return Math.random(); + + }, + + nearestPowerOfTwo: function ( value ) { + + console.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' ); + return _Math.floorPowerOfTwo( value ); + + }, + + nextPowerOfTwo: function ( value ) { + + console.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' ); + return _Math.ceilPowerOfTwo( value ); + + } + + } ); + + Object.assign( Matrix3.prototype, { + + flattenToArrayOffset: function ( array, offset ) { + + console.warn( "THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); + return this.toArray( array, offset ); + + }, + multiplyVector3: function ( vector ) { + + console.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' ); + return vector.applyMatrix3( this ); + + }, + multiplyVector3Array: function ( /* a */ ) { + + console.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' ); + + }, + applyToBuffer: function ( buffer /*, offset, length */ ) { + + console.warn( 'THREE.Matrix3: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); + return this.applyToBufferAttribute( buffer ); + + }, + applyToVector3Array: function ( /* array, offset, length */ ) { + + console.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' ); + + } + + } ); + + Object.assign( Matrix4.prototype, { + + extractPosition: function ( m ) { + + console.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' ); + return this.copyPosition( m ); + + }, + flattenToArrayOffset: function ( array, offset ) { + + console.warn( "THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead." ); + return this.toArray( array, offset ); + + }, + getPosition: function () { + + console.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' ); + return new Vector3().setFromMatrixColumn( this, 3 ); + + }, + setRotationFromQuaternion: function ( q ) { + + console.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' ); + return this.makeRotationFromQuaternion( q ); + + }, + multiplyToArray: function () { + + console.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' ); + + }, + multiplyVector3: function ( vector ) { + + console.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + multiplyVector4: function ( vector ) { + + console.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + multiplyVector3Array: function ( /* a */ ) { + + console.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' ); + + }, + rotateAxis: function ( v ) { + + console.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' ); + v.transformDirection( this ); + + }, + crossVector: function ( vector ) { + + console.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' ); + return vector.applyMatrix4( this ); + + }, + translate: function () { + + console.error( 'THREE.Matrix4: .translate() has been removed.' ); + + }, + rotateX: function () { + + console.error( 'THREE.Matrix4: .rotateX() has been removed.' ); + + }, + rotateY: function () { + + console.error( 'THREE.Matrix4: .rotateY() has been removed.' ); + + }, + rotateZ: function () { + + console.error( 'THREE.Matrix4: .rotateZ() has been removed.' ); + + }, + rotateByAxis: function () { + + console.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' ); + + }, + applyToBuffer: function ( buffer /*, offset, length */ ) { + + console.warn( 'THREE.Matrix4: .applyToBuffer() has been removed. Use matrix.applyToBufferAttribute( attribute ) instead.' ); + return this.applyToBufferAttribute( buffer ); + + }, + applyToVector3Array: function ( /* array, offset, length */ ) { + + console.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' ); + + }, + makeFrustum: function ( left, right, bottom, top, near, far ) { + + console.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' ); + return this.makePerspective( left, right, top, bottom, near, far ); + + } + + } ); + + Plane.prototype.isIntersectionLine = function ( line ) { + + console.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' ); + return this.intersectsLine( line ); + + }; + + Quaternion.prototype.multiplyVector3 = function ( vector ) { + + console.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' ); + return vector.applyQuaternion( this ); + + }; + + Object.assign( Ray.prototype, { + + isIntersectionBox: function ( box ) { + + console.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' ); + return this.intersectsBox( box ); + + }, + isIntersectionPlane: function ( plane ) { + + console.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' ); + return this.intersectsPlane( plane ); + + }, + isIntersectionSphere: function ( sphere ) { + + console.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' ); + return this.intersectsSphere( sphere ); + + } + + } ); + + Object.assign( Triangle.prototype, { + + area: function () { + + console.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' ); + return this.getArea(); + + }, + barycoordFromPoint: function ( point, target ) { + + console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); + return this.getBarycoord( point, target ); + + }, + midpoint: function ( target ) { + + console.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' ); + return this.getMidpoint( target ); + + }, + normal: function ( target ) { + + console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); + return this.getNormal( target ); + + }, + plane: function ( target ) { + + console.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' ); + return this.getPlane( target ); + + } + + } ); + + Object.assign( Triangle, { + + barycoordFromPoint: function ( point, a, b, c, target ) { + + console.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' ); + return Triangle.getBarycoord( point, a, b, c, target ); + + }, + normal: function ( a, b, c, target ) { + + console.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' ); + return Triangle.getNormal( a, b, c, target ); + + } + + } ); + + Object.assign( Shape.prototype, { + + extractAllPoints: function ( divisions ) { + + console.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' ); + return this.extractPoints( divisions ); + + }, + extrude: function ( options ) { + + console.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' ); + return new ExtrudeGeometry( this, options ); + + }, + makeGeometry: function ( options ) { + + console.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' ); + return new ShapeGeometry( this, options ); + + } + + } ); + + Object.assign( Vector2.prototype, { + + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + distanceToManhattan: function ( v ) { + + console.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); + return this.manhattanDistanceTo( v ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + Object.assign( Vector3.prototype, { + + setEulerFromRotationMatrix: function () { + + console.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' ); + + }, + setEulerFromQuaternion: function () { + + console.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' ); + + }, + getPositionFromMatrix: function ( m ) { + + console.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' ); + return this.setFromMatrixPosition( m ); + + }, + getScaleFromMatrix: function ( m ) { + + console.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' ); + return this.setFromMatrixScale( m ); + + }, + getColumnFromMatrix: function ( index, matrix ) { + + console.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' ); + return this.setFromMatrixColumn( matrix, index ); + + }, + applyProjection: function ( m ) { + + console.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' ); + return this.applyMatrix4( m ); + + }, + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + distanceToManhattan: function ( v ) { + + console.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' ); + return this.manhattanDistanceTo( v ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + Object.assign( Vector4.prototype, { + + fromAttribute: function ( attribute, index, offset ) { + + console.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' ); + return this.fromBufferAttribute( attribute, index, offset ); + + }, + lengthManhattan: function () { + + console.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' ); + return this.manhattanLength(); + + } + + } ); + + // + + Object.assign( Geometry.prototype, { + + computeTangents: function () { + + console.error( 'THREE.Geometry: .computeTangents() has been removed.' ); + + }, + computeLineDistances: function () { + + console.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' ); + + } + + } ); + + Object.assign( Object3D.prototype, { + + getChildByName: function ( name ) { + + console.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' ); + return this.getObjectByName( name ); + + }, + renderDepth: function () { + + console.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' ); + + }, + translate: function ( distance, axis ) { + + console.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' ); + return this.translateOnAxis( axis, distance ); + + }, + getWorldRotation: function () { + + console.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' ); + + } + + } ); + + Object.defineProperties( Object3D.prototype, { + + eulerOrder: { + get: function () { + + console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + return this.rotation.order; + + }, + set: function ( value ) { + + console.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' ); + this.rotation.order = value; + + } + }, + useQuaternion: { + get: function () { + + console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + + }, + set: function () { + + console.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' ); + + } + } + + } ); + + Object.defineProperties( LOD.prototype, { + + objects: { + get: function () { + + console.warn( 'THREE.LOD: .objects has been renamed to .levels.' ); + return this.levels; + + } + } + + } ); + + Object.defineProperty( Skeleton.prototype, 'useVertexTexture', { + + get: function () { + + console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Skeleton: useVertexTexture has been removed.' ); + + } + + } ); + + SkinnedMesh.prototype.initBones = function () { + + console.error( 'THREE.SkinnedMesh: initBones() has been removed.' ); + + }; + + Object.defineProperty( Curve.prototype, '__arcLengthDivisions', { + + get: function () { + + console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + return this.arcLengthDivisions; + + }, + set: function ( value ) { + + console.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' ); + this.arcLengthDivisions = value; + + } + + } ); + + // + + PerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) { + + console.warn( "THREE.PerspectiveCamera.setLens is deprecated. " + + "Use .setFocalLength and .filmGauge for a photographic setup." ); + + if ( filmGauge !== undefined ) { this.filmGauge = filmGauge; } + this.setFocalLength( focalLength ); + + }; + + // + + Object.defineProperties( Light.prototype, { + onlyShadow: { + set: function () { + + console.warn( 'THREE.Light: .onlyShadow has been removed.' ); + + } + }, + shadowCameraFov: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' ); + this.shadow.camera.fov = value; + + } + }, + shadowCameraLeft: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' ); + this.shadow.camera.left = value; + + } + }, + shadowCameraRight: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' ); + this.shadow.camera.right = value; + + } + }, + shadowCameraTop: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' ); + this.shadow.camera.top = value; + + } + }, + shadowCameraBottom: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' ); + this.shadow.camera.bottom = value; + + } + }, + shadowCameraNear: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' ); + this.shadow.camera.near = value; + + } + }, + shadowCameraFar: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' ); + this.shadow.camera.far = value; + + } + }, + shadowCameraVisible: { + set: function () { + + console.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' ); + + } + }, + shadowBias: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' ); + this.shadow.bias = value; + + } + }, + shadowDarkness: { + set: function () { + + console.warn( 'THREE.Light: .shadowDarkness has been removed.' ); + + } + }, + shadowMapWidth: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' ); + this.shadow.mapSize.width = value; + + } + }, + shadowMapHeight: { + set: function ( value ) { + + console.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' ); + this.shadow.mapSize.height = value; + + } + } + } ); + + // + + Object.defineProperties( BufferAttribute.prototype, { + + length: { + get: function () { + + console.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' ); + return this.array.length; + + } + } + + } ); + + Object.assign( BufferAttribute.prototype, { + + copyIndicesArray: function ( /* indices */ ) { + + console.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' ); + + }, + setArray: function ( array ) { + + console.warn( 'THREE.BufferAttribute: .setArray has been deprecated. Use BufferGeometry .setAttribute to replace/resize attribute buffers' ); + + this.count = array !== undefined ? array.length / this.itemSize : 0; + this.array = array; + + return this; + + } + + } ); + + Object.assign( BufferGeometry.prototype, { + + addIndex: function ( index ) { + + console.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' ); + this.setIndex( index ); + + }, + addDrawCall: function ( start, count, indexOffset ) { + + if ( indexOffset !== undefined ) { + + console.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' ); + + } + console.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' ); + this.addGroup( start, count ); + + }, + clearDrawCalls: function () { + + console.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' ); + this.clearGroups(); + + }, + computeTangents: function () { + + console.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' ); + + }, + computeOffsets: function () { + + console.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' ); + + } + + } ); + + Object.defineProperties( BufferGeometry.prototype, { + + drawcalls: { + get: function () { + + console.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' ); + return this.groups; + + } + }, + offsets: { + get: function () { + + console.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' ); + return this.groups; + + } + } + + } ); + + Object.assign( InterleavedBuffer.prototype, { + + setArray: function ( array ) { + + console.warn( 'THREE.InterleavedBuffer: .setArray has been deprecated. Use BufferGeometry .setAttribute to replace/resize attribute buffers' ); + + this.count = array !== undefined ? array.length / this.stride : 0; + this.array = array; + + return this; + + } + + } ); + + // + + Object.assign( ExtrudeBufferGeometry.prototype, { + + getArrays: function () { + + console.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' ); + + }, + + addShapeList: function () { + + console.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' ); + + }, + + addShape: function () { + + console.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' ); + + } + + } ); + + // + + Object.defineProperties( Uniform.prototype, { + + dynamic: { + set: function () { + + console.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' ); + + } + }, + onUpdate: { + value: function () { + + console.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' ); + return this; + + } + } + + } ); + + // + + Object.defineProperties( Material.prototype, { + + wrapAround: { + get: function () { + + console.warn( 'THREE.Material: .wrapAround has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Material: .wrapAround has been removed.' ); + + } + }, + + overdraw: { + get: function () { + + console.warn( 'THREE.Material: .overdraw has been removed.' ); + + }, + set: function () { + + console.warn( 'THREE.Material: .overdraw has been removed.' ); + + } + }, + + wrapRGB: { + get: function () { + + console.warn( 'THREE.Material: .wrapRGB has been removed.' ); + return new Color(); + + } + }, + + shading: { + get: function () { + + console.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + + }, + set: function ( value ) { + + console.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' ); + this.flatShading = ( value === FlatShading ); + + } + }, + + stencilMask: { + get: function () { + + console.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' ); + return this.stencilFuncMask; + + }, + set: function ( value ) { + + console.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' ); + this.stencilFuncMask = value; + + } + } + + } ); + + Object.defineProperties( MeshPhongMaterial.prototype, { + + metal: { + get: function () { + + console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' ); + return false; + + }, + set: function () { + + console.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' ); + + } + } + + } ); + + Object.defineProperties( ShaderMaterial.prototype, { + + derivatives: { + get: function () { + + console.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + return this.extensions.derivatives; + + }, + set: function ( value ) { + + console.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' ); + this.extensions.derivatives = value; + + } + } + + } ); + + // + + Object.assign( WebGLRenderer.prototype, { + + clearTarget: function ( renderTarget, color, depth, stencil ) { + + console.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' ); + this.setRenderTarget( renderTarget ); + this.clear( color, depth, stencil ); + + }, + animate: function ( callback ) { + + console.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' ); + this.setAnimationLoop( callback ); + + }, + getCurrentRenderTarget: function () { + + console.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' ); + return this.getRenderTarget(); + + }, + getMaxAnisotropy: function () { + + console.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' ); + return this.capabilities.getMaxAnisotropy(); + + }, + getPrecision: function () { + + console.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' ); + return this.capabilities.precision; + + }, + resetGLState: function () { + + console.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' ); + return this.state.reset(); + + }, + supportsFloatTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \'OES_texture_float\' ).' ); + return this.extensions.get( 'OES_texture_float' ); + + }, + supportsHalfFloatTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \'OES_texture_half_float\' ).' ); + return this.extensions.get( 'OES_texture_half_float' ); + + }, + supportsStandardDerivatives: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \'OES_standard_derivatives\' ).' ); + return this.extensions.get( 'OES_standard_derivatives' ); + + }, + supportsCompressedTextureS3TC: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \'WEBGL_compressed_texture_s3tc\' ).' ); + return this.extensions.get( 'WEBGL_compressed_texture_s3tc' ); + + }, + supportsCompressedTexturePVRTC: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \'WEBGL_compressed_texture_pvrtc\' ).' ); + return this.extensions.get( 'WEBGL_compressed_texture_pvrtc' ); + + }, + supportsBlendMinMax: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \'EXT_blend_minmax\' ).' ); + return this.extensions.get( 'EXT_blend_minmax' ); + + }, + supportsVertexTextures: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' ); + return this.capabilities.vertexTextures; + + }, + supportsInstancedArrays: function () { + + console.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \'ANGLE_instanced_arrays\' ).' ); + return this.extensions.get( 'ANGLE_instanced_arrays' ); + + }, + enableScissorTest: function ( boolean ) { + + console.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' ); + this.setScissorTest( boolean ); + + }, + initMaterial: function () { + + console.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' ); + + }, + addPrePlugin: function () { + + console.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' ); + + }, + addPostPlugin: function () { + + console.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' ); + + }, + updateShadowMap: function () { + + console.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' ); + + }, + setFaceCulling: function () { + + console.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' ); + + }, + allocTextureUnit: function () { + + console.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' ); + + }, + setTexture: function () { + + console.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' ); + + }, + setTexture2D: function () { + + console.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' ); + + }, + setTextureCube: function () { + + console.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' ); + + }, + getActiveMipMapLevel: function () { + + console.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' ); + return this.getActiveMipmapLevel(); + + } + + } ); + + Object.defineProperties( WebGLRenderer.prototype, { + + shadowMapEnabled: { + get: function () { + + return this.shadowMap.enabled; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' ); + this.shadowMap.enabled = value; + + } + }, + shadowMapType: { + get: function () { + + return this.shadowMap.type; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' ); + this.shadowMap.type = value; + + } + }, + shadowMapCullFace: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function ( /* value */ ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' ); + + } + }, + context: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' ); + return this.getContext(); + + } + } + + } ); + + Object.defineProperties( WebGLShadowMap.prototype, { + + cullFace: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function ( /* cullFace */ ) { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' ); + + } + }, + renderReverseSided: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' ); + + } + }, + renderSingleSided: { + get: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); + return undefined; + + }, + set: function () { + + console.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' ); + + } + } + + } ); + + // + + Object.defineProperties( WebGLRenderTargetCube.prototype, { + + activeCubeFace: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebGLRenderTargetCube: .activeCubeFace has been removed. It is now the second parameter of WebGLRenderer.setRenderTarget().' ); + + } + }, + activeMipMapLevel: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebGLRenderTargetCube: .activeMipMapLevel has been removed. It is now the third parameter of WebGLRenderer.setRenderTarget().' ); + + } + } + + } ); + + // + + Object.defineProperties( WebGLRenderTarget.prototype, { + + wrapS: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + return this.texture.wrapS; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' ); + this.texture.wrapS = value; + + } + }, + wrapT: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + return this.texture.wrapT; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' ); + this.texture.wrapT = value; + + } + }, + magFilter: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + return this.texture.magFilter; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' ); + this.texture.magFilter = value; + + } + }, + minFilter: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + return this.texture.minFilter; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' ); + this.texture.minFilter = value; + + } + }, + anisotropy: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + return this.texture.anisotropy; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' ); + this.texture.anisotropy = value; + + } + }, + offset: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + return this.texture.offset; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' ); + this.texture.offset = value; + + } + }, + repeat: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + return this.texture.repeat; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' ); + this.texture.repeat = value; + + } + }, + format: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + return this.texture.format; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' ); + this.texture.format = value; + + } + }, + type: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + return this.texture.type; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' ); + this.texture.type = value; + + } + }, + generateMipmaps: { + get: function () { + + console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + return this.texture.generateMipmaps; + + }, + set: function ( value ) { + + console.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' ); + this.texture.generateMipmaps = value; + + } + } + + } ); + + // + + Object.defineProperties( WebVRManager.prototype, { + + standing: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebVRManager: .standing has been removed.' ); + + } + }, + userHeight: { + set: function ( /* value */ ) { + + console.warn( 'THREE.WebVRManager: .userHeight has been removed.' ); + + } + } + + } ); + + // + + Audio.prototype.load = function ( file ) { + + console.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' ); + var scope = this; + var audioLoader = new AudioLoader(); + audioLoader.load( file, function ( buffer ) { + + scope.setBuffer( buffer ); + + } ); + return this; + + }; + + AudioAnalyser.prototype.getData = function () { + + console.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' ); + return this.getFrequencyData(); + + }; + + // + + CubeCamera.prototype.updateCubeMap = function ( renderer, scene ) { + + console.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' ); + return this.update( renderer, scene ); + + }; + + // + + var GeometryUtils = { + + merge: function ( geometry1, geometry2, materialIndexOffset ) { + + console.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' ); + var matrix; + + if ( geometry2.isMesh ) { + + geometry2.matrixAutoUpdate && geometry2.updateMatrix(); + + matrix = geometry2.matrix; + geometry2 = geometry2.geometry; + + } + + geometry1.merge( geometry2, matrix, materialIndexOffset ); + + }, + + center: function ( geometry ) { + + console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' ); + return geometry.center(); + + } + + }; + + ImageUtils.crossOrigin = undefined; + + ImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) { + + console.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' ); + + var loader = new TextureLoader(); + loader.setCrossOrigin( this.crossOrigin ); + + var texture = loader.load( url, onLoad, undefined, onError ); + + if ( mapping ) { texture.mapping = mapping; } + + return texture; + + }; + + ImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) { + + console.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' ); + + var loader = new CubeTextureLoader(); + loader.setCrossOrigin( this.crossOrigin ); + + var texture = loader.load( urls, onLoad, undefined, onError ); + + if ( mapping ) { texture.mapping = mapping; } + + return texture; + + }; + + ImageUtils.loadCompressedTexture = function () { + + console.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' ); + + }; + + ImageUtils.loadCompressedTextureCube = function () { + + console.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' ); + + }; + + // + + function CanvasRenderer() { + + console.error( 'THREE.CanvasRenderer has been removed' ); + + } + + // + + function JSONLoader() { + + console.error( 'THREE.JSONLoader has been removed.' ); + + } + + // + + var SceneUtils = { + + createMultiMaterialObject: function ( /* geometry, materials */ ) { + + console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + + }, + + detach: function ( /* child, parent, scene */ ) { + + console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + + }, + + attach: function ( /* child, scene, parent */ ) { + + console.error( 'THREE.SceneUtils has been moved to /examples/js/utils/SceneUtils.js' ); + + } + + }; + + // + + function LensFlare() { + + console.error( 'THREE.LensFlare has been moved to /examples/js/objects/Lensflare.js' ); + + } + + if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) { + + /* eslint-disable no-undef */ + __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: { + revision: REVISION, + } } ) ); + /* eslint-enable no-undef */ + + } + + exports.ACESFilmicToneMapping = ACESFilmicToneMapping; + exports.AddEquation = AddEquation; + exports.AddOperation = AddOperation; + exports.AdditiveBlending = AdditiveBlending; + exports.AlphaFormat = AlphaFormat; + exports.AlwaysDepth = AlwaysDepth; + exports.AlwaysStencilFunc = AlwaysStencilFunc; + exports.AmbientLight = AmbientLight; + exports.AmbientLightProbe = AmbientLightProbe; + exports.AnimationClip = AnimationClip; + exports.AnimationLoader = AnimationLoader; + exports.AnimationMixer = AnimationMixer; + exports.AnimationObjectGroup = AnimationObjectGroup; + exports.AnimationUtils = AnimationUtils; + exports.ArcCurve = ArcCurve; + exports.ArrayCamera = ArrayCamera; + exports.ArrowHelper = ArrowHelper; + exports.Audio = Audio; + exports.AudioAnalyser = AudioAnalyser; + exports.AudioContext = AudioContext; + exports.AudioListener = AudioListener; + exports.AudioLoader = AudioLoader; + exports.AxesHelper = AxesHelper; + exports.AxisHelper = AxisHelper; + exports.BackSide = BackSide; + exports.BasicDepthPacking = BasicDepthPacking; + exports.BasicShadowMap = BasicShadowMap; + exports.BinaryTextureLoader = BinaryTextureLoader; + exports.Bone = Bone; + exports.BooleanKeyframeTrack = BooleanKeyframeTrack; + exports.BoundingBoxHelper = BoundingBoxHelper; + exports.Box2 = Box2; + exports.Box3 = Box3; + exports.Box3Helper = Box3Helper; + exports.BoxBufferGeometry = BoxBufferGeometry; + exports.BoxGeometry = BoxGeometry; + exports.BoxHelper = BoxHelper; + exports.BufferAttribute = BufferAttribute; + exports.BufferGeometry = BufferGeometry; + exports.BufferGeometryLoader = BufferGeometryLoader; + exports.ByteType = ByteType; + exports.Cache = Cache; + exports.Camera = Camera; + exports.CameraHelper = CameraHelper; + exports.CanvasRenderer = CanvasRenderer; + exports.CanvasTexture = CanvasTexture; + exports.CatmullRomCurve3 = CatmullRomCurve3; + exports.CineonToneMapping = CineonToneMapping; + exports.CircleBufferGeometry = CircleBufferGeometry; + exports.CircleGeometry = CircleGeometry; + exports.ClampToEdgeWrapping = ClampToEdgeWrapping; + exports.Clock = Clock; + exports.ClosedSplineCurve3 = ClosedSplineCurve3; + exports.Color = Color; + exports.ColorKeyframeTrack = ColorKeyframeTrack; + exports.CompressedTexture = CompressedTexture; + exports.CompressedTextureLoader = CompressedTextureLoader; + exports.ConeBufferGeometry = ConeBufferGeometry; + exports.ConeGeometry = ConeGeometry; + exports.CubeCamera = CubeCamera; + exports.CubeGeometry = BoxGeometry; + exports.CubeReflectionMapping = CubeReflectionMapping; + exports.CubeRefractionMapping = CubeRefractionMapping; + exports.CubeTexture = CubeTexture; + exports.CubeTextureLoader = CubeTextureLoader; + exports.CubeUVReflectionMapping = CubeUVReflectionMapping; + exports.CubeUVRefractionMapping = CubeUVRefractionMapping; + exports.CubicBezierCurve = CubicBezierCurve; + exports.CubicBezierCurve3 = CubicBezierCurve3; + exports.CubicInterpolant = CubicInterpolant; + exports.CullFaceBack = CullFaceBack; + exports.CullFaceFront = CullFaceFront; + exports.CullFaceFrontBack = CullFaceFrontBack; + exports.CullFaceNone = CullFaceNone; + exports.Curve = Curve; + exports.CurvePath = CurvePath; + exports.CustomBlending = CustomBlending; + exports.CylinderBufferGeometry = CylinderBufferGeometry; + exports.CylinderGeometry = CylinderGeometry; + exports.Cylindrical = Cylindrical; + exports.DataTexture = DataTexture; + exports.DataTexture2DArray = DataTexture2DArray; + exports.DataTexture3D = DataTexture3D; + exports.DataTextureLoader = DataTextureLoader; + exports.DecrementStencilOp = DecrementStencilOp; + exports.DecrementWrapStencilOp = DecrementWrapStencilOp; + exports.DefaultLoadingManager = DefaultLoadingManager; + exports.DepthFormat = DepthFormat; + exports.DepthStencilFormat = DepthStencilFormat; + exports.DepthTexture = DepthTexture; + exports.DirectionalLight = DirectionalLight; + exports.DirectionalLightHelper = DirectionalLightHelper; + exports.DirectionalLightShadow = DirectionalLightShadow; + exports.DiscreteInterpolant = DiscreteInterpolant; + exports.DodecahedronBufferGeometry = DodecahedronBufferGeometry; + exports.DodecahedronGeometry = DodecahedronGeometry; + exports.DoubleSide = DoubleSide; + exports.DstAlphaFactor = DstAlphaFactor; + exports.DstColorFactor = DstColorFactor; + exports.DynamicBufferAttribute = DynamicBufferAttribute; + exports.EdgesGeometry = EdgesGeometry; + exports.EdgesHelper = EdgesHelper; + exports.EllipseCurve = EllipseCurve; + exports.EqualDepth = EqualDepth; + exports.EqualStencilFunc = EqualStencilFunc; + exports.EquirectangularReflectionMapping = EquirectangularReflectionMapping; + exports.EquirectangularRefractionMapping = EquirectangularRefractionMapping; + exports.Euler = Euler; + exports.EventDispatcher = EventDispatcher; + exports.ExtrudeBufferGeometry = ExtrudeBufferGeometry; + exports.ExtrudeGeometry = ExtrudeGeometry; + exports.Face3 = Face3; + exports.Face4 = Face4; + exports.FaceColors = FaceColors; + exports.FaceNormalsHelper = FaceNormalsHelper; + exports.FileLoader = FileLoader; + exports.FlatShading = FlatShading; + exports.Float32Attribute = Float32Attribute; + exports.Float32BufferAttribute = Float32BufferAttribute; + exports.Float64Attribute = Float64Attribute; + exports.Float64BufferAttribute = Float64BufferAttribute; + exports.FloatType = FloatType; + exports.Fog = Fog; + exports.FogExp2 = FogExp2; + exports.Font = Font; + exports.FontLoader = FontLoader; + exports.FrontFaceDirectionCCW = FrontFaceDirectionCCW; + exports.FrontFaceDirectionCW = FrontFaceDirectionCW; + exports.FrontSide = FrontSide; + exports.Frustum = Frustum; + exports.GammaEncoding = GammaEncoding; + exports.Geometry = Geometry; + exports.GeometryUtils = GeometryUtils; + exports.GreaterDepth = GreaterDepth; + exports.GreaterEqualDepth = GreaterEqualDepth; + exports.GreaterEqualStencilFunc = GreaterEqualStencilFunc; + exports.GreaterStencilFunc = GreaterStencilFunc; + exports.GridHelper = GridHelper; + exports.Group = Group; + exports.HalfFloatType = HalfFloatType; + exports.HemisphereLight = HemisphereLight; + exports.HemisphereLightHelper = HemisphereLightHelper; + exports.HemisphereLightProbe = HemisphereLightProbe; + exports.IcosahedronBufferGeometry = IcosahedronBufferGeometry; + exports.IcosahedronGeometry = IcosahedronGeometry; + exports.ImageBitmapLoader = ImageBitmapLoader; + exports.ImageLoader = ImageLoader; + exports.ImageUtils = ImageUtils; + exports.ImmediateRenderObject = ImmediateRenderObject; + exports.IncrementStencilOp = IncrementStencilOp; + exports.IncrementWrapStencilOp = IncrementWrapStencilOp; + exports.InstancedBufferAttribute = InstancedBufferAttribute; + exports.InstancedBufferGeometry = InstancedBufferGeometry; + exports.InstancedInterleavedBuffer = InstancedInterleavedBuffer; + exports.InstancedMesh = InstancedMesh; + exports.Int16Attribute = Int16Attribute; + exports.Int16BufferAttribute = Int16BufferAttribute; + exports.Int32Attribute = Int32Attribute; + exports.Int32BufferAttribute = Int32BufferAttribute; + exports.Int8Attribute = Int8Attribute; + exports.Int8BufferAttribute = Int8BufferAttribute; + exports.IntType = IntType; + exports.InterleavedBuffer = InterleavedBuffer; + exports.InterleavedBufferAttribute = InterleavedBufferAttribute; + exports.Interpolant = Interpolant; + exports.InterpolateDiscrete = InterpolateDiscrete; + exports.InterpolateLinear = InterpolateLinear; + exports.InterpolateSmooth = InterpolateSmooth; + exports.InvertStencilOp = InvertStencilOp; + exports.JSONLoader = JSONLoader; + exports.KeepStencilOp = KeepStencilOp; + exports.KeyframeTrack = KeyframeTrack; + exports.LOD = LOD; + exports.LatheBufferGeometry = LatheBufferGeometry; + exports.LatheGeometry = LatheGeometry; + exports.Layers = Layers; + exports.LensFlare = LensFlare; + exports.LessDepth = LessDepth; + exports.LessEqualDepth = LessEqualDepth; + exports.LessEqualStencilFunc = LessEqualStencilFunc; + exports.LessStencilFunc = LessStencilFunc; + exports.Light = Light; + exports.LightProbe = LightProbe; + exports.LightProbeHelper = LightProbeHelper; + exports.LightShadow = LightShadow; + exports.Line = Line; + exports.Line3 = Line3; + exports.LineBasicMaterial = LineBasicMaterial; + exports.LineCurve = LineCurve; + exports.LineCurve3 = LineCurve3; + exports.LineDashedMaterial = LineDashedMaterial; + exports.LineLoop = LineLoop; + exports.LinePieces = LinePieces; + exports.LineSegments = LineSegments; + exports.LineStrip = LineStrip; + exports.LinearEncoding = LinearEncoding; + exports.LinearFilter = LinearFilter; + exports.LinearInterpolant = LinearInterpolant; + exports.LinearMipMapLinearFilter = LinearMipMapLinearFilter; + exports.LinearMipMapNearestFilter = LinearMipMapNearestFilter; + exports.LinearMipmapLinearFilter = LinearMipmapLinearFilter; + exports.LinearMipmapNearestFilter = LinearMipmapNearestFilter; + exports.LinearToneMapping = LinearToneMapping; + exports.Loader = Loader; + exports.LoaderUtils = LoaderUtils; + exports.LoadingManager = LoadingManager; + exports.LogLuvEncoding = LogLuvEncoding; + exports.LoopOnce = LoopOnce; + exports.LoopPingPong = LoopPingPong; + exports.LoopRepeat = LoopRepeat; + exports.LuminanceAlphaFormat = LuminanceAlphaFormat; + exports.LuminanceFormat = LuminanceFormat; + exports.MOUSE = MOUSE; + exports.Material = Material; + exports.MaterialLoader = MaterialLoader; + exports.Math = _Math; + exports.Matrix3 = Matrix3; + exports.Matrix4 = Matrix4; + exports.MaxEquation = MaxEquation; + exports.Mesh = Mesh; + exports.MeshBasicMaterial = MeshBasicMaterial; + exports.MeshDepthMaterial = MeshDepthMaterial; + exports.MeshDistanceMaterial = MeshDistanceMaterial; + exports.MeshFaceMaterial = MeshFaceMaterial; + exports.MeshLambertMaterial = MeshLambertMaterial; + exports.MeshMatcapMaterial = MeshMatcapMaterial; + exports.MeshNormalMaterial = MeshNormalMaterial; + exports.MeshPhongMaterial = MeshPhongMaterial; + exports.MeshPhysicalMaterial = MeshPhysicalMaterial; + exports.MeshStandardMaterial = MeshStandardMaterial; + exports.MeshToonMaterial = MeshToonMaterial; + exports.MinEquation = MinEquation; + exports.MirroredRepeatWrapping = MirroredRepeatWrapping; + exports.MixOperation = MixOperation; + exports.MultiMaterial = MultiMaterial; + exports.MultiplyBlending = MultiplyBlending; + exports.MultiplyOperation = MultiplyOperation; + exports.NearestFilter = NearestFilter; + exports.NearestMipMapLinearFilter = NearestMipMapLinearFilter; + exports.NearestMipMapNearestFilter = NearestMipMapNearestFilter; + exports.NearestMipmapLinearFilter = NearestMipmapLinearFilter; + exports.NearestMipmapNearestFilter = NearestMipmapNearestFilter; + exports.NeverDepth = NeverDepth; + exports.NeverStencilFunc = NeverStencilFunc; + exports.NoBlending = NoBlending; + exports.NoColors = NoColors; + exports.NoToneMapping = NoToneMapping; + exports.NormalBlending = NormalBlending; + exports.NotEqualDepth = NotEqualDepth; + exports.NotEqualStencilFunc = NotEqualStencilFunc; + exports.NumberKeyframeTrack = NumberKeyframeTrack; + exports.Object3D = Object3D; + exports.ObjectLoader = ObjectLoader; + exports.ObjectSpaceNormalMap = ObjectSpaceNormalMap; + exports.OctahedronBufferGeometry = OctahedronBufferGeometry; + exports.OctahedronGeometry = OctahedronGeometry; + exports.OneFactor = OneFactor; + exports.OneMinusDstAlphaFactor = OneMinusDstAlphaFactor; + exports.OneMinusDstColorFactor = OneMinusDstColorFactor; + exports.OneMinusSrcAlphaFactor = OneMinusSrcAlphaFactor; + exports.OneMinusSrcColorFactor = OneMinusSrcColorFactor; + exports.OrthographicCamera = OrthographicCamera; + exports.PCFShadowMap = PCFShadowMap; + exports.PCFSoftShadowMap = PCFSoftShadowMap; + exports.ParametricBufferGeometry = ParametricBufferGeometry; + exports.ParametricGeometry = ParametricGeometry; + exports.Particle = Particle; + exports.ParticleBasicMaterial = ParticleBasicMaterial; + exports.ParticleSystem = ParticleSystem; + exports.ParticleSystemMaterial = ParticleSystemMaterial; + exports.Path = Path; + exports.PerspectiveCamera = PerspectiveCamera; + exports.Plane = Plane; + exports.PlaneBufferGeometry = PlaneBufferGeometry; + exports.PlaneGeometry = PlaneGeometry; + exports.PlaneHelper = PlaneHelper; + exports.PointCloud = PointCloud; + exports.PointCloudMaterial = PointCloudMaterial; + exports.PointLight = PointLight; + exports.PointLightHelper = PointLightHelper; + exports.Points = Points; + exports.PointsMaterial = PointsMaterial; + exports.PolarGridHelper = PolarGridHelper; + exports.PolyhedronBufferGeometry = PolyhedronBufferGeometry; + exports.PolyhedronGeometry = PolyhedronGeometry; + exports.PositionalAudio = PositionalAudio; + exports.PositionalAudioHelper = PositionalAudioHelper; + exports.PropertyBinding = PropertyBinding; + exports.PropertyMixer = PropertyMixer; + exports.QuadraticBezierCurve = QuadraticBezierCurve; + exports.QuadraticBezierCurve3 = QuadraticBezierCurve3; + exports.Quaternion = Quaternion; + exports.QuaternionKeyframeTrack = QuaternionKeyframeTrack; + exports.QuaternionLinearInterpolant = QuaternionLinearInterpolant; + exports.REVISION = REVISION; + exports.RGBADepthPacking = RGBADepthPacking; + exports.RGBAFormat = RGBAFormat; + exports.RGBA_ASTC_10x10_Format = RGBA_ASTC_10x10_Format; + exports.RGBA_ASTC_10x5_Format = RGBA_ASTC_10x5_Format; + exports.RGBA_ASTC_10x6_Format = RGBA_ASTC_10x6_Format; + exports.RGBA_ASTC_10x8_Format = RGBA_ASTC_10x8_Format; + exports.RGBA_ASTC_12x10_Format = RGBA_ASTC_12x10_Format; + exports.RGBA_ASTC_12x12_Format = RGBA_ASTC_12x12_Format; + exports.RGBA_ASTC_4x4_Format = RGBA_ASTC_4x4_Format; + exports.RGBA_ASTC_5x4_Format = RGBA_ASTC_5x4_Format; + exports.RGBA_ASTC_5x5_Format = RGBA_ASTC_5x5_Format; + exports.RGBA_ASTC_6x5_Format = RGBA_ASTC_6x5_Format; + exports.RGBA_ASTC_6x6_Format = RGBA_ASTC_6x6_Format; + exports.RGBA_ASTC_8x5_Format = RGBA_ASTC_8x5_Format; + exports.RGBA_ASTC_8x6_Format = RGBA_ASTC_8x6_Format; + exports.RGBA_ASTC_8x8_Format = RGBA_ASTC_8x8_Format; + exports.RGBA_PVRTC_2BPPV1_Format = RGBA_PVRTC_2BPPV1_Format; + exports.RGBA_PVRTC_4BPPV1_Format = RGBA_PVRTC_4BPPV1_Format; + exports.RGBA_S3TC_DXT1_Format = RGBA_S3TC_DXT1_Format; + exports.RGBA_S3TC_DXT3_Format = RGBA_S3TC_DXT3_Format; + exports.RGBA_S3TC_DXT5_Format = RGBA_S3TC_DXT5_Format; + exports.RGBDEncoding = RGBDEncoding; + exports.RGBEEncoding = RGBEEncoding; + exports.RGBEFormat = RGBEFormat; + exports.RGBFormat = RGBFormat; + exports.RGBM16Encoding = RGBM16Encoding; + exports.RGBM7Encoding = RGBM7Encoding; + exports.RGB_ETC1_Format = RGB_ETC1_Format; + exports.RGB_PVRTC_2BPPV1_Format = RGB_PVRTC_2BPPV1_Format; + exports.RGB_PVRTC_4BPPV1_Format = RGB_PVRTC_4BPPV1_Format; + exports.RGB_S3TC_DXT1_Format = RGB_S3TC_DXT1_Format; + exports.RawShaderMaterial = RawShaderMaterial; + exports.Ray = Ray; + exports.Raycaster = Raycaster; + exports.RectAreaLight = RectAreaLight; + exports.RectAreaLightHelper = RectAreaLightHelper; + exports.RedFormat = RedFormat; + exports.ReinhardToneMapping = ReinhardToneMapping; + exports.RepeatWrapping = RepeatWrapping; + exports.ReplaceStencilOp = ReplaceStencilOp; + exports.ReverseSubtractEquation = ReverseSubtractEquation; + exports.RingBufferGeometry = RingBufferGeometry; + exports.RingGeometry = RingGeometry; + exports.Scene = Scene; + exports.SceneUtils = SceneUtils; + exports.ShaderChunk = ShaderChunk; + exports.ShaderLib = ShaderLib; + exports.ShaderMaterial = ShaderMaterial; + exports.ShadowMaterial = ShadowMaterial; + exports.Shape = Shape; + exports.ShapeBufferGeometry = ShapeBufferGeometry; + exports.ShapeGeometry = ShapeGeometry; + exports.ShapePath = ShapePath; + exports.ShapeUtils = ShapeUtils; + exports.ShortType = ShortType; + exports.Skeleton = Skeleton; + exports.SkeletonHelper = SkeletonHelper; + exports.SkinnedMesh = SkinnedMesh; + exports.SmoothShading = SmoothShading; + exports.Sphere = Sphere; + exports.SphereBufferGeometry = SphereBufferGeometry; + exports.SphereGeometry = SphereGeometry; + exports.Spherical = Spherical; + exports.SphericalHarmonics3 = SphericalHarmonics3; + exports.SphericalReflectionMapping = SphericalReflectionMapping; + exports.Spline = Spline; + exports.SplineCurve = SplineCurve; + exports.SplineCurve3 = SplineCurve3; + exports.SpotLight = SpotLight; + exports.SpotLightHelper = SpotLightHelper; + exports.SpotLightShadow = SpotLightShadow; + exports.Sprite = Sprite; + exports.SpriteMaterial = SpriteMaterial; + exports.SrcAlphaFactor = SrcAlphaFactor; + exports.SrcAlphaSaturateFactor = SrcAlphaSaturateFactor; + exports.SrcColorFactor = SrcColorFactor; + exports.StereoCamera = StereoCamera; + exports.StringKeyframeTrack = StringKeyframeTrack; + exports.SubtractEquation = SubtractEquation; + exports.SubtractiveBlending = SubtractiveBlending; + exports.TOUCH = TOUCH; + exports.TangentSpaceNormalMap = TangentSpaceNormalMap; + exports.TetrahedronBufferGeometry = TetrahedronBufferGeometry; + exports.TetrahedronGeometry = TetrahedronGeometry; + exports.TextBufferGeometry = TextBufferGeometry; + exports.TextGeometry = TextGeometry; + exports.Texture = Texture; + exports.TextureLoader = TextureLoader; + exports.TorusBufferGeometry = TorusBufferGeometry; + exports.TorusGeometry = TorusGeometry; + exports.TorusKnotBufferGeometry = TorusKnotBufferGeometry; + exports.TorusKnotGeometry = TorusKnotGeometry; + exports.Triangle = Triangle; + exports.TriangleFanDrawMode = TriangleFanDrawMode; + exports.TriangleStripDrawMode = TriangleStripDrawMode; + exports.TrianglesDrawMode = TrianglesDrawMode; + exports.TubeBufferGeometry = TubeBufferGeometry; + exports.TubeGeometry = TubeGeometry; + exports.UVMapping = UVMapping; + exports.Uint16Attribute = Uint16Attribute; + exports.Uint16BufferAttribute = Uint16BufferAttribute; + exports.Uint32Attribute = Uint32Attribute; + exports.Uint32BufferAttribute = Uint32BufferAttribute; + exports.Uint8Attribute = Uint8Attribute; + exports.Uint8BufferAttribute = Uint8BufferAttribute; + exports.Uint8ClampedAttribute = Uint8ClampedAttribute; + exports.Uint8ClampedBufferAttribute = Uint8ClampedBufferAttribute; + exports.Uncharted2ToneMapping = Uncharted2ToneMapping; + exports.Uniform = Uniform; + exports.UniformsLib = UniformsLib; + exports.UniformsUtils = UniformsUtils; + exports.UnsignedByteType = UnsignedByteType; + exports.UnsignedInt248Type = UnsignedInt248Type; + exports.UnsignedIntType = UnsignedIntType; + exports.UnsignedShort4444Type = UnsignedShort4444Type; + exports.UnsignedShort5551Type = UnsignedShort5551Type; + exports.UnsignedShort565Type = UnsignedShort565Type; + exports.UnsignedShortType = UnsignedShortType; + exports.VSMShadowMap = VSMShadowMap; + exports.Vector2 = Vector2; + exports.Vector3 = Vector3; + exports.Vector4 = Vector4; + exports.VectorKeyframeTrack = VectorKeyframeTrack; + exports.Vertex = Vertex; + exports.VertexColors = VertexColors; + exports.VertexNormalsHelper = VertexNormalsHelper; + exports.VideoTexture = VideoTexture; + exports.WebGLMultisampleRenderTarget = WebGLMultisampleRenderTarget; + exports.WebGLRenderTarget = WebGLRenderTarget; + exports.WebGLRenderTargetCube = WebGLRenderTargetCube; + exports.WebGLRenderer = WebGLRenderer; + exports.WebGLUtils = WebGLUtils; + exports.WireframeGeometry = WireframeGeometry; + exports.WireframeHelper = WireframeHelper; + exports.WrapAroundEnding = WrapAroundEnding; + exports.XHRLoader = XHRLoader; + exports.ZeroCurvatureEnding = ZeroCurvatureEnding; + exports.ZeroFactor = ZeroFactor; + exports.ZeroSlopeEnding = ZeroSlopeEnding; + exports.ZeroStencilOp = ZeroStencilOp; + exports.sRGBEncoding = sRGBEncoding; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); diff --git a/src/nodeschool/webgl/breakWall/src/operates.js b/src/nodeschool/webgl/breakWall/src/operates.js new file mode 100644 index 0000000..dad8827 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/operates.js @@ -0,0 +1,32 @@ +import { createText } from "./text.js"; + +export const randomColor = function (intersects) { + if (intersects.length > 0) { + intersects[0].object.material.color.setHex(Math.random() * 0xffffff); + } +} + +export const addToList = function (intersects, list = []) { + if (intersects.length > 0 && intersects[0].object.name === 'cube') { + list.push(intersects[0].object) + } +} + +export const addScore = function (scene) { + let score = 0 + let before = null + return function (intersects) { + if (intersects.length > 0 && intersects[0].object.name === 'cube') { + score += 10 + createText('$ ' + score).then(scoreInstance => { + scene.add(scoreInstance) + scoreInstance.position.set(220, 150, -200) + + if (before) { + scene.remove(before) + } + before = scoreInstance + }) + } + } +} diff --git a/src/nodeschool/webgl/breakWall/src/text.js b/src/nodeschool/webgl/breakWall/src/text.js new file mode 100644 index 0000000..174e526 --- /dev/null +++ b/src/nodeschool/webgl/breakWall/src/text.js @@ -0,0 +1,22 @@ +const loader = new THREE.FontLoader(); +const material = new THREE.MeshBasicMaterial({ color: 0x0000ff }) + +export const createText = function (text) { + return new Promise((res, rej) => { + loader.load('/src/assets/helvetiker_regular.typeface.json', font => { + const geometry = new THREE.TextGeometry(text, { + font: font, + size: 12, + height: 1, + curveSegments: 12, + bevelEnabled: true, + bevelThickness: 0.2, + bevelSize: 0.05, + bevelSegments: 1 + }) + + const textInstance = new THREE.Mesh(geometry, material) + res(textInstance) + }) + }) +} diff --git a/src/nodeschool/webgl/physics/index.js b/src/nodeschool/webgl/physics/index.js index 3e4869c..24fe271 100644 --- a/src/nodeschool/webgl/physics/index.js +++ b/src/nodeschool/webgl/physics/index.js @@ -21,8 +21,8 @@ window.onload = () => { scene.add(screen) - const axesHelper = new THREE.AxesHelper( 1000 ); - scene.add( axesHelper ); + // const axesHelper = new THREE.AxesHelper( 1000 ); + // scene.add( axesHelper ); const clickedList = [] addOnMouseDown(camera, scene, item => addToList(item, clickedList)) diff --git a/src/nodeschool/webgl/physics/package.json b/src/nodeschool/webgl/physics/package.json deleted file mode 100644 index 47f9915..0000000 --- a/src/nodeschool/webgl/physics/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "load3dTextures", - "version": "1.0.0", - "main": "index.js", - "source": { - - }, - "license": "MIT", - "browserslist": [], - "dependencies": { - "@babel/preset-env": "^7.6.3", - "three": "^0.109.0" - } -} diff --git a/src/nodeschool/webgl/physics/src/camera.js b/src/nodeschool/webgl/physics/src/camera.js index 5d877e8..c9bbe0a 100644 --- a/src/nodeschool/webgl/physics/src/camera.js +++ b/src/nodeschool/webgl/physics/src/camera.js @@ -1,6 +1,6 @@ const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000) camera.position.z = 120 -camera.position.x = - 20 +camera.position.x = - 10 camera.lookAt(0, 0, 0) export default camera diff --git a/src/nodeschool/webgl/physics/src/cube.js b/src/nodeschool/webgl/physics/src/cube.js index 2378dfa..5113bd4 100644 --- a/src/nodeschool/webgl/physics/src/cube.js +++ b/src/nodeschool/webgl/physics/src/cube.js @@ -9,6 +9,7 @@ export const randomCube = function () { const geometry = new THREE.BoxGeometry(10 * (random + 0.3), 10 * (random + 0.3), 10 * (random + 0.3)) const material = new THREE.MeshBasicMaterial({ color: 0xffffff * random }) const mesh = new Physijs.BoxMesh(geometry, material) + mesh.setAngularVelocity(new THREE.Vector3(100 * random, 100 * random, 100 * random)); mesh.position.y = (random - 0.5) * 70 return mesh }