/*! For license information please see viewer.min.js.LICENSE.txt */ (()=>{"use strict";var t,e;window.requestAnimFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t,e){window.setTimeout(t,1e3/60)},jQuery.support.cors=!0,$.ajaxTransport?($.ajaxSetup({flatOptions:{renderer:!0}}),$.ajaxTransport("+binary",(function(t,e,i){if(window.FormData&&(t.dataType&&"binary"==t.dataType||t.data&&(window.ArrayBuffer&&t.data instanceof ArrayBuffer||window.Blob&&t.data instanceof Blob)))return{send:function(e,i){var r=new XMLHttpRequest,s=t.url,n=t.type,a=t.responseType||"blob",o=t.data||null;t.renderer&&r.addEventListener("progress",(function(e){e.lengthComputable&&(t.renderer.downloads[this.responseURL]?t.renderer.downloads[this.responseURL].loaded=e.loaded:t.renderer.downloads[this.responseURL]={loaded:e.loaded,total:e.total},t.renderer.updateProgress())})),r.addEventListener("load",(function(){t.renderer&&(delete t.renderer.downloads[this.responseURL],t.renderer.updateProgress());var e={};e[t.dataType]=r.response,i(r.status,r.statusText,e,r.getAllResponseHeaders())})),r.open(n,s,!0),r.responseType=a,r.send(o)},abort:function(){i.abort()}}}))):(t=$.httpData,$.httpData=function(e,i,r){return"binary"==i?e.response:t(e,i,r)},$.ajaxSetup({beforeSend:function(t,e){"binary"==e.dataType&&(t.responseType=e.responseType||"arraybuffer",t.addEventListener("progress",(function(t){e.renderer&&t.lengthComputable&&(e.renderer.downloads[this.responseURL]?e.renderer.downloads[this.responseURL].loaded=t.loaded:e.renderer.downloads[this.responseURL]={loaded:t.loaded,total:t.total},e.renderer.updateProgress())}),!1),t.addEventListener("load",(function(){e.renderer&&(delete e.renderer.downloads[this.responseURL],e.renderer.updateProgress())}),!1))}})),Math.randomInt=Math.randomInt||function(t,e){return Math.floor(Math.random()*(e-t))+t},"function"!=typeof Object.create&&(Object.create=(e=function(){},function(t){if(arguments.length>1)throw Error("Second argument not supported");if("object"!=typeof t)throw TypeError("Argument must be an object");e.prototype=t;var i=new e;return e.prototype=null,i})),window.console=window.console||{log:function(){},error:function(){},warn:function(){}};let i=Float32Array;function r(t,e,r){const s=new i(3);return t&&(s[0]=t),e&&(s[1]=e),r&&(s[2]=r),s}function s(t,e,r){return(r=r||new i(3))[0]=t[0]+e[0],r[1]=t[1]+e[1],r[2]=t[2]+e[2],r}function n(t,e,r){return(r=r||new i(3))[0]=t[0]*e[0],r[1]=t[1]*e[1],r[2]=t[2]*e[2],r}let a=Float32Array;function o(t){return(t=t||new a(16))[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function h(t,e){e=e||new a(16);const i=t[0],r=t[1],s=t[2],n=t[3],o=t[4],h=t[5],l=t[6],u=t[7],c=t[8],d=t[9],f=t[10],b=t[11],g=t[12],_=t[13],p=t[14],m=t[15],x=f*m,v=p*b,T=l*m,w=p*u,y=l*b,A=f*u,E=s*m,M=p*n,C=s*b,S=f*n,k=s*u,F=l*n,D=c*_,R=g*d,B=o*_,I=g*h,U=o*d,O=c*h,P=i*_,z=g*r,N=i*d,G=c*r,L=i*h,V=o*r,H=x*h+w*d+y*_-(v*h+T*d+A*_),q=v*r+E*d+S*_-(x*r+M*d+C*_),X=T*r+M*h+k*_-(w*r+E*h+F*_),j=A*r+C*h+F*d-(y*r+S*h+k*d),W=1/(i*H+o*q+c*X+g*j);return e[0]=W*H,e[1]=W*q,e[2]=W*X,e[3]=W*j,e[4]=W*(v*o+T*c+A*g-(x*o+w*c+y*g)),e[5]=W*(x*i+M*c+C*g-(v*i+E*c+S*g)),e[6]=W*(w*i+E*o+F*g-(T*i+M*o+k*g)),e[7]=W*(y*i+S*o+k*c-(A*i+C*o+F*c)),e[8]=W*(D*u+I*b+U*m-(R*u+B*b+O*m)),e[9]=W*(R*n+P*b+G*m-(D*n+z*b+N*m)),e[10]=W*(B*n+z*u+L*m-(I*n+P*u+V*m)),e[11]=W*(O*n+N*u+V*b-(U*n+G*u+L*b)),e[12]=W*(B*f+O*p+R*l-(U*p+D*l+I*f)),e[13]=W*(N*p+D*s+z*f-(P*f+G*p+R*s)),e[14]=W*(P*l+V*p+I*s-(L*p+B*s+z*l)),e[15]=W*(L*f+U*s+G*l-(N*l+V*f+O*s)),e}function l(t,e,i){i=i||r();const s=e[0],n=e[1],a=e[2],o=s*t[3]+n*t[7]+a*t[11]+t[15];return i[0]=(s*t[0]+n*t[4]+a*t[8]+t[12])/o,i[1]=(s*t[1]+n*t[5]+a*t[9]+t[13])/o,i[2]=(s*t[2]+n*t[6]+a*t[10]+t[14])/o,i}function u(t,e,i){i=i||r();const s=e[0],n=e[1],a=e[2];return i[0]=s*t[0]+n*t[4]+a*t[8],i[1]=s*t[1]+n*t[5]+a*t[9],i[2]=s*t[2]+n*t[6]+a*t[10],i}const c=5120,d=5121,f=5122,b=5123,g=5124,_=5125,p=5126,m={};{const t=m;t[c]=Int8Array,t[d]=Uint8Array,t[f]=Int16Array,t[b]=Uint16Array,t[g]=Int32Array,t[_]=Uint32Array,t[p]=Float32Array,t[32819]=Uint16Array,t[32820]=Uint16Array,t[33635]=Uint16Array,t[5131]=Uint16Array,t[33640]=Uint32Array,t[35899]=Uint32Array,t[35902]=Uint32Array,t[36269]=Uint32Array,t[34042]=Uint32Array}function x(t){if(t instanceof Int8Array)return c;if(t instanceof Uint8Array)return d;if(t instanceof Uint8ClampedArray)return d;if(t instanceof Int16Array)return f;if(t instanceof Uint16Array)return b;if(t instanceof Int32Array)return g;if(t instanceof Uint32Array)return _;if(t instanceof Float32Array)return p;throw new Error("unsupported typed array type")}function v(t){if(t===Int8Array)return c;if(t===Uint8Array)return d;if(t===Uint8ClampedArray)return d;if(t===Int16Array)return f;if(t===Uint16Array)return b;if(t===Int32Array)return g;if(t===Uint32Array)return _;if(t===Float32Array)return p;throw new Error("unsupported typed array type")}function T(t){const e=m[t];if(!e)throw new Error("unknown gl type");return e}const w="undefined"!=typeof SharedArrayBuffer?function(t){return t&&t.buffer&&(t.buffer instanceof ArrayBuffer||t.buffer instanceof SharedArrayBuffer)}:function(t){return t&&t.buffer&&t.buffer instanceof ArrayBuffer};function y(...t){console.error(...t)}const A=new Map;function E(t,e){if(!t||"object"!=typeof t)return!1;let i=A.get(e);i||(i=new WeakMap,A.set(e,i));let r=i.get(t);if(void 0===r){const s=Object.prototype.toString.call(t);r=s.substring(8,s.length-1)===e,i.set(t,r)}return r}function M(t,e){return"undefined"!=typeof WebGLTexture&&E(e,"WebGLTexture")}const C=35044,S=34962,k=34963,F=34660,D=5120,R=5121,B=5122,I=5123,U=5124,O=5125,P=5126,z={attribPrefix:""};function N(t,e,i,r,s){t.bindBuffer(e,i),t.bufferData(e,r,s||C)}function G(t,e,i,r){if(s=e,"undefined"!=typeof WebGLBuffer&&E(s,"WebGLBuffer"))return e;var s;i=i||S;const n=t.createBuffer();return N(t,i,n,e,r),n}function L(t){return"indices"===t}function V(t){return t.length?t:t.data}const H=/coord|texture/i,q=/color|colour/i;function X(t,e,i){return t.numComponents||t.size||function(t,e){let i;if(i=H.test(t)?2:q.test(t)?4:3,e%i>0)throw new Error(`Can not guess numComponents for attribute '${t}'. Tried ${i} but ${e} values is not evenly divisible by ${i}. You should specify it.`);return i}(e,i||V(t).length)}function j(t,e){if(w(t))return t;if(w(t.data))return t.data;Array.isArray(t)&&(t={data:t});let i=t.type?W(t.type):void 0;return i||(i=L(e)?Uint16Array:Float32Array),new i(t.data)}function W(t){return"number"==typeof t?T(t):t||Float32Array}function Z(t,e){return{buffer:e.buffer,numValues:24,type:(i=e.type,"number"==typeof i?i:i?v(i):P),arrayType:W(e.type)};var i}function Y(t,e){const i=e.data||e,r=W(e.type),s=i*r.BYTES_PER_ELEMENT,n=t.createBuffer();return t.bindBuffer(S,n),t.bufferData(S,s,e.drawType||C),{buffer:n,numValues:i,type:v(r),arrayType:r}}function K(t,e,i){const r=j(e,i);return{arrayType:r.constructor,buffer:G(t,r,void 0,e.drawType),type:x(r),numValues:0}}function J(t,e){const i={};return Object.keys(e).forEach((function(r){if(!L(r)){const n=e[r],a=n.attrib||n.name||n.attribName||z.attribPrefix+r;if(n.value){if(!Array.isArray(n.value)&&!w(n.value))throw new Error("array.value is not array or typedarray");i[a]={value:n.value}}else{let e;e=n.buffer&&n.buffer instanceof WebGLBuffer?Z:"number"==typeof n||"number"==typeof n.data?Y:K;const{buffer:o,type:h,numValues:l,arrayType:u}=e(t,n,r),c=void 0!==n.normalize?n.normalize:(s=u)===Int8Array||s===Uint8Array,d=X(n,r,l);i[a]={buffer:o,numComponents:d,type:h,normalize:c,stride:n.stride||0,offset:n.offset||0,divisor:void 0===n.divisor?void 0:n.divisor,drawType:n.drawType}}}var s})),t.bindBuffer(S,null),i}const Q=["position","positions","a_position"];function tt(t,e){let i,r;for(r=0;r0)throw new Error(`numComponents ${n} not correct for length ${s}`);return a}(e),i}function st(t,e){let i=0;return t.push=function(){for(let e=0;e=0?ut(r,e):i.indexOf("tan")>=0||i.indexOf("binorm")>=0?ht(r,e):i.indexOf("norm")>=0&<(r,e)})),t}function dt(t,e,i){return t=t||2,{position:{numComponents:2,data:[(e=e||0)+-1*(t*=.5),(i=i||0)+-1*t,e+1*t,i+-1*t,e+-1*t,i+1*t,e+1*t,i+1*t]},normal:[0,0,1,0,0,1,0,0,1,0,0,1],texcoord:[0,0,1,0,0,1,1,1],indices:[0,1,2,2,1,3]}}function ft(t,e,i,r,s){t=t||1,e=e||1,i=i||1,r=r||1,s=s||o();const n=(i+1)*(r+1),a=nt(3,n),h=nt(3,n),l=nt(2,n);for(let s=0;s<=r;s++)for(let n=0;n<=i;n++){const o=n/i,u=s/r;a.push(t*o-.5*t,0,e*u-.5*e),h.push(0,1,0),l.push(o,u)}const u=i+1,c=nt(3,i*r*2,Uint16Array);for(let t=0;t 0");r=r||0,n=n||0;const o=(s=s||Math.PI)-r,h=(a=a||2*Math.PI)-n,l=(e+1)*(i+1),u=nt(3,l),c=nt(3,l),d=nt(2,l);for(let s=0;s<=i;s++)for(let a=0;a<=e;a++){const l=a/e,f=s/i,b=h*l+n,g=o*f+r,_=Math.sin(b),p=Math.cos(b),m=Math.sin(g),x=p*m,v=Math.cos(g),T=_*m;u.push(t*x,t*v,t*T),c.push(x,v,T),d.push(1-l,f)}const f=e+1,b=nt(3,e*i*2,Uint16Array);for(let t=0;ts?(h=i,o=1,a=e):a=t+n/s*(e-t),-2!==n&&n!==s+2||(a=0,o=0),h-=i/2;for(let t=0;ts?d.push(0,1,0):0===a?d.push(0,0,0):d.push(e*p,m,i*p),f.push(t/r,1-o)}}for(let t=0;t 0");const l=(h=h||1)-(o=o||0),u=2*(a+1)*4,c=nt(3,u),d=nt(3,u),f=nt(2,u);function b(t,e,i){return t+(e-t)*i}function g(e,i,h,u,g,_){for(let p=0;p<=a;p++){const m=i/1,x=p/a,v=2*(m-.5),T=(o+x*l)*Math.PI,w=Math.sin(T),y=Math.cos(T),A=b(t,e,w),E=v*r,M=y*t,C=w*A;c.push(E,M,C);const S=s(n([0,w,y],h),u);d.push(S),f.push(m*g+_,x)}}for(let t=0;t<2;t++){const r=2*(t/1-.5);g(e,t,[1,1,1],[0,0,0],1,0),g(e,t,[0,0,0],[r,0,0],0,0),g(i,t,[1,1,1],[0,0,0],1,0),g(i,t,[0,0,0],[r,0,0],0,1)}const _=nt(3,2*a*4,Uint16Array);function p(t,e){for(let i=0;i0&&r!==e){const t=u+(r+1),e=u+r,i=u+r-d,s=u+(r+1)-d;l.push(t,e,i),l.push(t,i,s)}}u+=e+1}return{position:a,normal:o,texcoord:h,indices:l}}function At(t){return function(e){return rt(e,t.apply(this,Array.prototype.slice.call(arguments,1)))}}function Et(t){return function(e){return et(e,t.apply(null,Array.prototype.slice.call(arguments,1)))}}Et(xt),At(xt),Et(_t),At(_t),Et(ft),At(ft),Et(bt),At(bt),Et(pt),At(pt),Et(dt),At(dt),Et(vt),At(vt),Et(Tt),At(Tt),Et(wt),At(wt),Et(yt),At(yt);function Mt(t){return!!t.texStorage2D}const Ct=function(){const t={},e={};return function(i,r){return function(i){const r=i.constructor.name;if(!t[r]){for(const t in i)if("number"==typeof i[t]){const r=e[i[t]];e[i[t]]=r?`${r} | ${t}`:t}t[r]=!0}}(i),e[r]||("number"==typeof r?`0x${r.toString(16)}`:r)}}();new Uint8Array([128,192,255,255]),function(){let t}();const St=6406,kt=6407,Ft=6408,Dt=6409,Rt=6410,Bt=6402,It=34041,Ut=33319,Ot=33320,Pt=6403,zt=36244,Nt=36248,Gt=36249,Lt={};{const t=Lt;t[St]={numColorComponents:1},t[Dt]={numColorComponents:1},t[Rt]={numColorComponents:2},t[kt]={numColorComponents:3},t[Ft]={numColorComponents:4},t[Pt]={numColorComponents:1},t[zt]={numColorComponents:1},t[Ut]={numColorComponents:2},t[Ot]={numColorComponents:2},t[kt]={numColorComponents:3},t[Nt]={numColorComponents:3},t[Ft]={numColorComponents:4},t[Gt]={numColorComponents:4},t[Bt]={numColorComponents:1},t[It]={numColorComponents:2}}const Vt=y;function Ht(t){return"undefined"!=typeof document&&document.getElementById?document.getElementById(t):null}const qt=33984,Xt=34962,jt=35713,Wt=35714,Zt=35632,Yt=35633,Kt=35981,Jt=35718,$t=35721,Qt=35971,te=35382,ee=35396,ie=35398,re=35392,se=35395,ne=5126,ae=5124,oe=5125,he=3553,le=34067,ue=32879,ce=35866,de={};function fe(t,e){return de[e].bindPoint}function be(t,e){return function(i){t.uniform1i(e,i)}}function ge(t,e){return function(i){t.uniform1iv(e,i)}}function _e(t,e){return function(i){t.uniform2iv(e,i)}}function pe(t,e){return function(i){t.uniform3iv(e,i)}}function me(t,e){return function(i){t.uniform4iv(e,i)}}function xe(t,e,i,r){const s=fe(0,e);return Mt(t)?function(e){let n,a;!e||M(0,e)?(n=e,a=null):(n=e.texture,a=e.sampler),t.uniform1i(r,i),t.activeTexture(qt+i),t.bindTexture(s,n),t.bindSampler(i,a)}:function(e){t.uniform1i(r,i),t.activeTexture(qt+i),t.bindTexture(s,e)}}function ve(t,e,i,r,s){const n=fe(0,e),a=new Int32Array(s);for(let t=0;t{t.callback(`${e}\n${t.errors.join("\n")}`)})),null}function Fe(t,e,i,r){r=r||Vt;if(!t.getShaderParameter(i,jt)){const s=t.getShaderInfoLog(i),{lineOffset:n,shaderSource:a}=Se(t.getShaderSource(i)),o=`${function(t,e="",i=0){const r=[...e.matchAll(Me)],s=new Map(r.map(((t,i)=>{const s=parseInt(t[1]),n=r[i+1],a=n?n.index:e.length;return[s-1,e.substring(t.index,a)]})));return t.split("\n").map(((t,e)=>{const r=s.get(e);return`${e+1+i}: ${t}${r?`\n\n^^^ ${r}`:""}`})).join("\n")}(a,s,n)}\nError compiling ${Ct(t,e)}: ${s}`;return r(o),o}return""}function De(t,e,i){let r,s,n;if("function"==typeof e&&(i=e,e=void 0),"function"==typeof t)i=t,t=void 0;else if(t&&!Array.isArray(t)){const e=t;i=e.errorCallback,t=e.attribLocations,r=e.transformFeedbackVaryings,s=e.transformFeedbackMode,n=e.callback}const a=i||Vt,o=[],h={errorCallback(t,...e){o.push(t),a(t,...e)},transformFeedbackVaryings:r,transformFeedbackMode:s,callback:n,errors:o};{let i={};Array.isArray(t)?t.forEach((function(t,r){i[t]=e?e[r]:r})):i=t||{},h.attribLocations=i}return h}const Re=["VERTEX_SHADER","FRAGMENT_SHADER"];const Be=(t=0)=>new Promise((e=>setTimeout(e,t)));function Ie(t,e,i){const r=t.createProgram(),{attribLocations:s,transformFeedbackVaryings:n,transformFeedbackMode:a}=De(i);for(let i=0;i=0?Zt:o.indexOf("vert")>=0?Yt:void 0)||a),s=t.createShader(a),t.shaderSource(s,Se(n).shaderSource),t.compileShader(s),t.attachShader(r,s)}}var o;Object.entries(s).forEach((([e,i])=>t.bindAttribLocation(r,i,e)));{let e=n;e&&(e.attribs&&(e=e.attribs),Array.isArray(e)||(e=Object.keys(e)),t.transformFeedbackVaryings(r,e,a||Kt))}return t.linkProgram(r),r}function Ue(t,e,i,r,s){const n=De(i,r,s),a=new Set(e),o=Ie(t,e,n);function h(t,e){const i=ze(t,e,n.errorCallback);return i&&function(t,e,i){const r=t.getAttachedShaders(e);for(const e of r)i.has(e)&&t.deleteShader(e);t.deleteProgram(e)}(t,e,a),i}if(!n.callback)return h(t,o)?void 0:o;Pe(t,o).then((()=>{const e=h(t,o);n.callback(e,e?void 0:o)}))}function Oe(t){return function(e,i,...r){return new Promise(((s,n)=>{const a=De(...r);a.callback=(t,e)=>{t?n(t):s(e)},t(e,i,a)}))}}Oe(Ue),Oe($e);async function Pe(t,e){const i=t.getExtension("KHR_parallel_shader_compile"),r=i?(t,e)=>t.getProgramParameter(e,i.COMPLETION_STATUS_KHR):()=>!0;let s=0;do{await Be(s),s=1e3/60}while(!r(t,e))}function ze(t,e,i){i=i||Vt;if(!t.getProgramParameter(e,Wt)){const r=t.getProgramInfoLog(e);i(`Error in program linking: ${r}`);return`${r}\n${t.getAttachedShaders(e).map((e=>Fe(t,t.getShaderParameter(e,t.SHADER_TYPE),e,i))).filter((t=>t)).join("\n")}`}}function Ne(t,e,i,r,s){return Ue(t,e,i,r,s)}function Ge(t){const e=t.name;return e.startsWith("gl_")||e.startsWith("webgl_")}const Le=/(\.|\[|]|\w+)/g,Ve=t=>t>="0"&&t<="9";function He(t,e,i,r){const s=t.split(Le).filter((t=>""!==t));let n=0,a="";for(;;){const t=s[n++];a+=t;const o=Ve(t[0]),h=o?parseInt(t):t;o&&(a+=s[n++]);if(n===s.length){i[h]=e;break}{const t=s[n++],e="["===t,o=i[h]||(e?[]:{});i[h]=o,i=o,r[a]=r[a]||function(t){return function(e){We(t,e)}}(o),a+=t}}}function qe(t,e){let i=0;function r(e,r,s){const n=r.name.endsWith("[0]"),a=r.type,o=de[a];if(!o)throw new Error(`unknown type: 0x${a.toString(16)}`);let h;if(o.bindPoint){const e=i;i+=r.size,h=n?o.arraySetter(t,a,e,s,r.size):o.setter(t,a,e,s,r.size)}else h=o.arraySetter&&n?o.arraySetter(t,s):o.setter(t,s);return h.location=s,h}const s={},n={},a=t.getProgramParameter(e,Jt);for(let i=0;i{o(e,e?void 0:Ke(t,i))});const h=Ne(t,e,n);return h?Ke(t,h):null}function Qe(t,e,i,r,s){for(const[n,a]of Object.entries(e)){const o={...s},h=i[n];Array.isArray(h)||Object.assign(o,h);const l=ze(t,a,o.errorCallback);if(l){for(const i of Object.values(e)){const e=t.getAttachedShaders(i);t.deleteProgram(i);for(const i of e)r.has(i)||t.deleteShader(i)}return l}}}function ti(t,e,i={}){const r=new Set,s=Object.fromEntries(Object.entries(e).map((([e,s])=>{const n={...i},a=Array.isArray(s)?s:s.shaders;return Array.isArray(s)||Object.assign(n,s),a.forEach(r.add,r),[e,Ie(t,a,n)]})));if(i.callback)return void async function(t,e){for(const i of Object.values(e))await Pe(t,i)}(t,s).then((()=>{const n=Qe(t,s,e,r,i);i.callback(n,n?void 0:s)}));return Qe(t,s,e,r,i)?void 0:s}function ei(t,e,i){function r(t,e){return Object.fromEntries(Object.entries(e).map((([e,i])=>[e,Ke(t,i)])))}const s=(i=De(i)).callback;s&&(i.callback=(e,i)=>{s(e,e?void 0:r(t,i))});const n=ti(t,e,i);if(!s&&n)return r(t,n)}Oe(ti),Oe(ei);const ii=36096,ri=33306,si={};si[34041]=ri,si[6401]=36128,si[36168]=36128,si[6402]=ii,si[33189]=ii,si[33190]=ii,si[36012]=ii,si[35056]=ri,si[36013]=ri;const ni={};ni[32854]=!0,ni[32855]=!0,ni[36194]=!0,ni[34041]=!0,ni[33189]=!0,ni[6401]=!0,ni[36168]=!0;var ai={};const oi={position:3,normal:3,tangent:3,texcoord:2,texcoord0:2,texcoord1:2,texcoord2:2};var hi={};class li{constructor(){this.attribs={}}disableAll(){for(let t in this.attribs)this.gl.disableVertexAttribArray(this.attribs[t]);this.attribs={}}enable(t,e){this.gl=t;var i={};for(let s in e){var r=e[s];void 0!==r.loc&&(void 0===this.attribs[r.loc]&&t.enableVertexAttribArray(r.loc),t.vertexAttribPointer(r.loc,r.size,r.type,!1,r.stride,r.offset),i[r.loc]=r.loc,this.attribs[s]=null)}for(let t in this.attribs);this.attribs=i}}class ui{static CreateProgramAttributes(t,e){var i={},r=0;for(let a in e){var s=e[a],n=oi[a];i[s]={type:t.FLOAT,size:n,offset:4*r},r+=n}for(let t in i)i[t].stride=4*r;return i}CleanUpPrograms(){hi={}}ReleaseProgram(t){}static _GetProgram(t){return hi[t]}static RegisterProgram(t,e){if(!hi[t]){var i=e.shaders;hi[t]={shaders:[i[0],i[1]],attributes:e.attributes}}return hi[t]}static GetProgram(t,e,i,r){var s=hi[e],n="";for(var a in i)n+=a+":"+i[a]+"-";if(!s){var o=e.split("."),h=ai[o[0]][o[1]];h&&(s=ui.RegisterProgram(e,h))}if(!s)throw"Program not registered: "+o;s.programInfo||(s.programInfo={}),s.programInfo[n]=ui.CompileProgram(t,s.shaders,i),r=r||s.attributes&&ui.CreateProgramAttributes(t,s.attributes);var l=s.programInfo[n];if(r)for(var a in r){var u=l.attribSetters[a];u&&(r[a]=r[a]||{},r[a].loc=u.location)}return l.attributes=r,l}static CompileProgram(t,e,i,r){var s="";for(var n in i){var a=i[n];s="#define "+n+" "+(null===a?"":a)+"\n"}var o={};const h=$e(t,[s+e[0],s+e[1]],null,null);if(r)for(var n in r){var l=h.attribSetters[n];l&&(r[n]=r[n]||{},r[n].loc=l.location)}for(var n in h.uniformSetters)o[n]=h.uniformSetters[n].location;return h.uniforms=o,h}}var ci=new ui,di=1e-6,fi="undefined"!=typeof Float32Array?Float32Array:Array;Math.random;Math.PI;function bi(){var t=new fi(3);return fi!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function gi(t){var e=t[0],i=t[1],r=t[2];return Math.hypot(e,i,r)}function _i(t,e,i){var r=new fi(3);return r[0]=t,r[1]=e,r[2]=i,r}function pi(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function mi(t,e,i,r){return t[0]=e,t[1]=i,t[2]=r,t}function xi(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2],t}function vi(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2],t}function Ti(t,e,i){return t[0]=e[0]*i[0],t[1]=e[1]*i[1],t[2]=e[2]*i[2],t}function wi(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t}function yi(t,e,i,r){return t[0]=e[0]+i[0]*r,t[1]=e[1]+i[1]*r,t[2]=e[2]+i[2]*r,t}function Ai(t){var e=t[0],i=t[1],r=t[2];return e*e+i*i+r*r}function Ei(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function Mi(t,e){var i=e[0],r=e[1],s=e[2],n=i*i+r*r+s*s;return n>0&&(n=1/Math.sqrt(n)),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function Ci(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Si(t,e,i){var r=e[0],s=e[1],n=e[2],a=i[0],o=i[1],h=i[2];return t[0]=s*h-n*o,t[1]=n*a-r*h,t[2]=r*o-s*a,t}function ki(t,e,i,r){var s=e[0],n=e[1],a=e[2];return t[0]=s+r*(i[0]-s),t[1]=n+r*(i[1]-n),t[2]=a+r*(i[2]-a),t}function Fi(t,e,i){var r=e[0],s=e[1],n=e[2],a=i[3]*r+i[7]*s+i[11]*n+i[15];return a=a||1,t[0]=(i[0]*r+i[4]*s+i[8]*n+i[12])/a,t[1]=(i[1]*r+i[5]*s+i[9]*n+i[13])/a,t[2]=(i[2]*r+i[6]*s+i[10]*n+i[14])/a,t}function Di(t,e,i){var r=e[0],s=e[1],n=e[2];return t[0]=r*i[0]+s*i[3]+n*i[6],t[1]=r*i[1]+s*i[4]+n*i[7],t[2]=r*i[2]+s*i[5]+n*i[8],t}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});var Ri,Bi=vi,Ii=gi;Ri=bi();function Ui(){var t=new fi(16);return fi!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function Oi(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Pi(t,e,i,r,s,n,a,o,h,l,u,c,d,f,b,g){var _=new fi(16);return _[0]=t,_[1]=e,_[2]=i,_[3]=r,_[4]=s,_[5]=n,_[6]=a,_[7]=o,_[8]=h,_[9]=l,_[10]=u,_[11]=c,_[12]=d,_[13]=f,_[14]=b,_[15]=g,_}function zi(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Ni(t,e){if(t===e){var i=e[1],r=e[2],s=e[3],n=e[6],a=e[7],o=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=i,t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=n,t[11]=e[14],t[12]=s,t[13]=a,t[14]=o}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function Gi(t,e){var i=e[0],r=e[1],s=e[2],n=e[3],a=e[4],o=e[5],h=e[6],l=e[7],u=e[8],c=e[9],d=e[10],f=e[11],b=e[12],g=e[13],_=e[14],p=e[15],m=i*o-r*a,x=i*h-s*a,v=i*l-n*a,T=r*h-s*o,w=r*l-n*o,y=s*l-n*h,A=u*g-c*b,E=u*_-d*b,M=u*p-f*b,C=c*_-d*g,S=c*p-f*g,k=d*p-f*_,F=m*k-x*S+v*C+T*M-w*E+y*A;return F?(F=1/F,t[0]=(o*k-h*S+l*C)*F,t[1]=(s*S-r*k-n*C)*F,t[2]=(g*y-_*w+p*T)*F,t[3]=(d*w-c*y-f*T)*F,t[4]=(h*M-a*k-l*E)*F,t[5]=(i*k-s*M+n*E)*F,t[6]=(_*v-b*y-p*x)*F,t[7]=(u*y-d*v+f*x)*F,t[8]=(a*S-o*M+l*A)*F,t[9]=(r*M-i*S-n*A)*F,t[10]=(b*w-g*v+p*m)*F,t[11]=(c*v-u*w-f*m)*F,t[12]=(o*E-a*C-h*A)*F,t[13]=(i*C-r*E+s*A)*F,t[14]=(g*x-b*T-_*m)*F,t[15]=(u*T-c*x+d*m)*F,t):null}function Li(t,e,i){var r=e[0],s=e[1],n=e[2],a=e[3],o=e[4],h=e[5],l=e[6],u=e[7],c=e[8],d=e[9],f=e[10],b=e[11],g=e[12],_=e[13],p=e[14],m=e[15],x=i[0],v=i[1],T=i[2],w=i[3];return t[0]=x*r+v*o+T*c+w*g,t[1]=x*s+v*h+T*d+w*_,t[2]=x*n+v*l+T*f+w*p,t[3]=x*a+v*u+T*b+w*m,x=i[4],v=i[5],T=i[6],w=i[7],t[4]=x*r+v*o+T*c+w*g,t[5]=x*s+v*h+T*d+w*_,t[6]=x*n+v*l+T*f+w*p,t[7]=x*a+v*u+T*b+w*m,x=i[8],v=i[9],T=i[10],w=i[11],t[8]=x*r+v*o+T*c+w*g,t[9]=x*s+v*h+T*d+w*_,t[10]=x*n+v*l+T*f+w*p,t[11]=x*a+v*u+T*b+w*m,x=i[12],v=i[13],T=i[14],w=i[15],t[12]=x*r+v*o+T*c+w*g,t[13]=x*s+v*h+T*d+w*_,t[14]=x*n+v*l+T*f+w*p,t[15]=x*a+v*u+T*b+w*m,t}function Vi(t,e,i){var r,s,n,a,o,h,l,u,c,d,f,b,g=i[0],_=i[1],p=i[2];return e===t?(t[12]=e[0]*g+e[4]*_+e[8]*p+e[12],t[13]=e[1]*g+e[5]*_+e[9]*p+e[13],t[14]=e[2]*g+e[6]*_+e[10]*p+e[14],t[15]=e[3]*g+e[7]*_+e[11]*p+e[15]):(r=e[0],s=e[1],n=e[2],a=e[3],o=e[4],h=e[5],l=e[6],u=e[7],c=e[8],d=e[9],f=e[10],b=e[11],t[0]=r,t[1]=s,t[2]=n,t[3]=a,t[4]=o,t[5]=h,t[6]=l,t[7]=u,t[8]=c,t[9]=d,t[10]=f,t[11]=b,t[12]=r*g+o*_+c*p+e[12],t[13]=s*g+h*_+d*p+e[13],t[14]=n*g+l*_+f*p+e[14],t[15]=a*g+u*_+b*p+e[15]),t}function Hi(t,e,i){var r=i[0],s=i[1],n=i[2];return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*s,t[5]=e[5]*s,t[6]=e[6]*s,t[7]=e[7]*s,t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11]*n,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function qi(t,e,i){var r=Math.sin(i),s=Math.cos(i),n=e[4],a=e[5],o=e[6],h=e[7],l=e[8],u=e[9],c=e[10],d=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=n*s+l*r,t[5]=a*s+u*r,t[6]=o*s+c*r,t[7]=h*s+d*r,t[8]=l*s-n*r,t[9]=u*s-a*r,t[10]=c*s-o*r,t[11]=d*s-h*r,t}function Xi(t,e,i){var r=Math.sin(i),s=Math.cos(i),n=e[0],a=e[1],o=e[2],h=e[3],l=e[8],u=e[9],c=e[10],d=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=n*s-l*r,t[1]=a*s-u*r,t[2]=o*s-c*r,t[3]=h*s-d*r,t[8]=n*r+l*s,t[9]=a*r+u*s,t[10]=o*r+c*s,t[11]=h*r+d*s,t}function ji(t,e,i){var r=Math.sin(i),s=Math.cos(i),n=e[0],a=e[1],o=e[2],h=e[3],l=e[4],u=e[5],c=e[6],d=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=n*s+l*r,t[1]=a*s+u*r,t[2]=o*s+c*r,t[3]=h*s+d*r,t[4]=l*s-n*r,t[5]=u*s-a*r,t[6]=c*s-o*r,t[7]=d*s-h*r,t}function Wi(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}function Zi(t,e,i){var r=e[0],s=e[1],n=e[2],a=e[3],o=r+r,h=s+s,l=n+n,u=r*o,c=r*h,d=r*l,f=s*h,b=s*l,g=n*l,_=a*o,p=a*h,m=a*l;return t[0]=1-(f+g),t[1]=c+m,t[2]=d-p,t[3]=0,t[4]=c-m,t[5]=1-(u+g),t[6]=b+_,t[7]=0,t[8]=d+p,t[9]=b-_,t[10]=1-(u+f),t[11]=0,t[12]=i[0],t[13]=i[1],t[14]=i[2],t[15]=1,t}function Yi(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function Ki(t,e){var i=e[0],r=e[1],s=e[2],n=e[4],a=e[5],o=e[6],h=e[8],l=e[9],u=e[10];return t[0]=Math.hypot(i,r,s),t[1]=Math.hypot(n,a,o),t[2]=Math.hypot(h,l,u),t}var Ji=function(t,e,i,r,s){var n,a=1/Math.tan(e/2);return t[0]=a/i,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=s&&s!==1/0?(n=1/(r-s),t[10]=(s+r)*n,t[14]=2*s*r*n):(t[10]=-1,t[14]=-2*r),t};var $i=Li;const Qi={147259:!0},tr={28060:!0,28063:!0,28082:!0,41903:!0,42147:!0,44808:!0,45271:!0},er={2:{GeosetType:15,Original:2,Override:11},3:{GeosetType:15,Original:3,Override:12},4:{GeosetType:15,Original:4,Override:13},5:{GeosetType:15,Original:5,Override:14},6:{GeosetType:15,Original:6,Override:15},7:{GeosetType:15,Original:7,Override:16},8:{GeosetType:15,Original:8,Override:17},9:{GeosetType:15,Original:9,Override:18},10:{GeosetType:15,Original:10,Override:19},11:{GeosetType:12,Original:2,Override:0},12:{GeosetType:12,Original:3,Override:0},13:{GeosetType:12,Original:1,Override:5},14:{GeosetType:12,Original:2,Override:3},15:{GeosetType:12,Original:2,Override:2},16:{GeosetType:22,Original:2,Override:1},17:{GeosetType:22,Original:1,Override:2},18:{GeosetType:22,Original:1,Override:3},19:{GeosetType:22,Original:2,Override:3},20:{GeosetType:12,Original:1,Override:1},21:{GeosetType:12,Original:1,Override:9},22:{GeosetType:12,Original:2,Override:10},23:{GeosetType:12,Original:2,Override:6},24:{GeosetType:12,Original:1,Override:5},25:{GeosetType:27,Original:0,Override:1},26:{GeosetType:27,Original:0,Override:1},27:{GeosetType:27,Original:0,Override:1},28:{GeosetType:13,Original:1,Override:0},31:{GeosetType:12,Original:1,Override:13},32:{GeosetType:12,Original:2,Override:14},33:{GeosetType:42,Original:11,Override:1},38:{GeosetType:20,Original:1,Override:9}},ir={ITEM:1,HELM:2,SHOULDER:4,NPC:8,CHARACTER:16,HUMANOIDNPC:32,OBJECT:64,ARMOR:128,PATH:256,ITEMVISUAL:512,COLLECTION:1024},rr=[0,1,0,3,4,5,6,7,8,9,10,0,0,21,22,22,16,21,0,19,5,21,22,22,0,21,21,27],sr=[0,16,0,15,1,7,10,5,6,6,8,0,0,17,18,19,14,20,0,9,7,21,22,23,0,24,25,0],nr=[0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,22,0,0,0,0,0,0,0,0,0,0],ar=[0,2,0,4,128,128,128,128,128,128,128,0,0,1,1,1,128,1,0,128,128,1,1,1,0,1,1,2],or=[13,14,15,16,17,88,89],hr=[8,9,10,11,12,86,87],lr={86:[4,0,4,1,4,0,4,1],85:[84,0,84,1,84,0,84,1],84:[3,0,3,1,3,0,3,1],77:[5,1,0,-1,5,0,0,-1],76:[10,0,1,1,10,0,1,1],75:[10,0,1,1,10,0,1,1],74:[5,1,0,-1,5,0,0,-1],73:[5,1,0,-1,5,0,0,-1],72:[5,1,0,-1,5,0,0,-1],71:[5,1,0,-1,5,0,0,-1],37:[7,0,7,1,7,0,7,1],36:[2,0,2,1,2,0,2,1],34:[3,0,3,1,3,0,3,1],33:[5,1,0,-1,5,0,0,-1],31:[0,-1,8,1,0,-1,8,1],30:[11,0,11,1,11,0,11,1],29:[10,0,10,1,10,0,10,1],28:[6,0,6,1,6,0,6,1],27:[4,0,4,1,4,0,4,1],26:[24,0,24,1,24,0,24,1],25:[24,0,24,1,24,0,24,1],23:[1,0,1,1,1,0,1,1],15:[5,0,5,1,5,0,5,1],1:[0,-1,0,-1,0,-1,0,3]},ur={21:26,22:27,15:28,17:26,25:32,13:32,23:33,14:28,26:26},cr={0:{21:26,22:27},1:{21:26,22:27},2:{21:30,22:31},3:{21:32,22:33},4:{21:26,22:27,15:28},5:{21:26},6:{21:26,22:27},7:{21:26,22:27},8:{21:26,22:27},9:{21:33,22:28}};function dr(){var t=new fi(4);return fi!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function fr(t,e,i,r){var s=new fi(4);return s[0]=t,s[1]=e,s[2]=i,s[3]=r,s}function br(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function gr(t,e,i,r,s){return t[0]=e,t[1]=i,t[2]=r,t[3]=s,t}function _r(t,e,i){return t[0]=e[0]+i[0],t[1]=e[1]+i[1],t[2]=e[2]+i[2],t[3]=e[3]+i[3],t}function pr(t,e,i){return t[0]=e[0]-i[0],t[1]=e[1]-i[1],t[2]=e[2]-i[2],t[3]=e[3]-i[3],t}function mr(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3]*i,t}function xr(t){var e=t[0],i=t[1],r=t[2],s=t[3];return Math.hypot(e,i,r,s)}function vr(t,e){var i=e[0],r=e[1],s=e[2],n=e[3],a=i*i+r*r+s*s+n*n;return a>0&&(a=1/Math.sqrt(a)),t[0]=i*a,t[1]=r*a,t[2]=s*a,t[3]=n*a,t}function Tr(t,e,i){var r=e[0],s=e[1],n=e[2],a=e[3];return t[0]=i[0]*r+i[4]*s+i[8]*n+i[12]*a,t[1]=i[1]*r+i[5]*s+i[9]*n+i[13]*a,t[2]=i[2]*r+i[6]*s+i[10]*n+i[14]*a,t[3]=i[3]*r+i[7]*s+i[11]*n+i[15]*a,t}var wr=xr;!function(){var t=dr()}();const yr=class{constructor(t){var e=this;e.a=_i(t.getFloat(),t.getFloat(),t.getFloat()),e.b=fr(t.getFloat(),t.getFloat(),t.getFloat(),0),e.c=t.getFloat(),e.d=t.getFloat(),e.e=t.getFloat(),e.f=t.getFloat(),e.g=[t.getUint8(),t.getUint8(),t.getUint8(),t.getUint8()],e.h=[t.getUint8(),t.getUint8(),t.getUint8(),t.getUint8()]}i(){var t=this;t.a=null,t.b=null,t.g=null,t.h=null}};const Ar=class{constructor(t){var e=this;e.a=t.getUint16(),e.b=t.getUint16(),e.i=t.getUint32(),e.c=t.getUint32(),e.d=t.getUint16(),e.e=t.getUint16(),e.f=t.getUint16(),e.g=_i(t.getFloat(),t.getFloat(),t.getFloat()),e.h=_i(t.getFloat(),t.getFloat(),t.getFloat()),e.j=t.getInt16(),e.k=t.getUint16(),t.getBool()&&(e.l=t.getString())}m(){}};function Er(){var t=new fi(2);return fi!=Float32Array&&(t[0]=0,t[1]=0),t}function Mr(t,e){var i=new fi(2);return i[0]=t,i[1]=e,i}function Cr(t,e,i){return t[0]=e,t[1]=i,t}function Sr(t,e,i){return t[0]=e[0]*i[0],t[1]=e[1]*i[1],t}function kr(t,e,i){return t[0]=e[0]*i,t[1]=e[1]*i,t}!function(){var t=Er()}();function Fr(){var t=new fi(9);return fi!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function Dr(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function Rr(t,e,i){var r=e[0],s=e[1],n=e[2],a=e[3],o=e[4],h=e[5],l=e[6],u=e[7],c=e[8],d=i[0],f=i[1],b=i[2],g=i[3],_=i[4],p=i[5],m=i[6],x=i[7],v=i[8];return t[0]=d*r+f*a+b*l,t[1]=d*s+f*o+b*u,t[2]=d*n+f*h+b*c,t[3]=g*r+_*a+p*l,t[4]=g*s+_*o+p*u,t[5]=g*n+_*h+p*c,t[6]=m*r+x*a+v*l,t[7]=m*s+x*o+v*u,t[8]=m*n+x*h+v*c,t}function Br(){var t=new fi(4);return fi!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function Ir(t,e,i){i*=.5;var r=Math.sin(i);return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=Math.cos(i),t}function Ur(t,e,i,r){var s,n,a,o,h,l=e[0],u=e[1],c=e[2],d=e[3],f=i[0],b=i[1],g=i[2],_=i[3];return(n=l*f+u*b+c*g+d*_)<0&&(n=-n,f=-f,b=-b,g=-g,_=-_),1-n>di?(s=Math.acos(n),a=Math.sin(s),o=Math.sin((1-r)*s)/a,h=Math.sin(r*s)/a):(o=1-r,h=r),t[0]=o*l+h*f,t[1]=o*u+h*b,t[2]=o*c+h*g,t[3]=o*d+h*_,t}var Or,Pr,zr,Nr,Gr,Lr,Vr=br,Hr=gr,qr=vr;Or=bi(),Pr=_i(1,0,0),zr=_i(0,1,0),Nr=Br(),Gr=Br(),Lr=Fr();class Xr{constructor(){this.a=-1,this.b=null,this.c=0,this.d=-1,this.e=!1}}class jr{constructor(){this.a=new Xr,this.b=new Xr,this.c=new Xr,this.d=0,this.e=1,this.f=!1}}class Wr{f(){var t=this;if(t.b)for(var e=0;e=0&&(t=this.d1){if(s.a.length>1){var n=s.a[s.a.length-1];n>0&&t>n&&this.d<0&&(t%=n);for(var a=0,o=s.a.length,h=0;h=s.a[h]&&t0?r=s.i(r,s.b[0]):i}return 0==s.b.length?r:r=s.i(r,s.b[0])}l(t){var e,i=this;i.c=t.getInt16(),i.d=t.getInt16(),i.e=t.getBool();var r=t.getInt32();for(i.a=new Array(r),e=0;e1&&s.a.length>1){var a=s.a[s.a.length-1];a>0&&t>a&&(t%=a);for(var o=0,h=s.a.length,l=0;ls.a[l]&&t<=s.a[l+1]){o=l;break}var u=s.a[o],c=s.a[o+1],d=0;return u!=c&&(d=(t-u)/(c-u)),s.f(n[o],n[o+1],d,i)}return n.length>0?i=s.g(i,n[0]):e}j(t){var e,i=this,r=t.getInt32();for(i.a=new Array(r),e=0;e=this.a.length&&(t=0),this.a[t].e)}d(t,e,i,r){if(!this.a||0==this.a.length)return i;let s=t.b.a;s>=this.a.length&&(s=0);let n=this.a[s].k(t.b.c,e,i,r);if(t.d>0&&t.d<1){let s=this.a[0].g(),a=t.c.a;a>=this.a.length&&(a=0);let o=this.a[a].k(t.c.c,e,i,s);o||(o=s),s=this.a[0].g(),n=this.a[0].h(o,n,t.d,s),r&&this.a[0].i(r,s)}if(t.e>0&&t.e<=1&&t.a.a!=t.b.a&&-1!=t.a.a){let s=this.a[0].g(),a=t.a.a;a>=this.a.length&&(a=0);let o=this.a[a].k(t.a.c,e,i,r);o||(o=s),s=this.a[0].g(),n=this.a[0].h(o,n,1-t.e,s)}return n}e(){if(this.a&&0!=this.a.length){for(var t=0;t-1){e.a.as[e.e].H(t);let i=this.C;if(Oi(i,e.a.as[e.e].m),Li(i,r,i),1&e.d||2&e.d||4&e.d){if(4&e.d&&2&e.d)ns(i,0,ss(r,0)),ns(i,1,ss(r,1)),ns(i,2,ss(r,2));else if(4&e.d){{let t=ss(r,0),e=xr(t);mr(t,t,xr(ss(i,0))/e),ns(i,0,t)}{let t=ss(r,1),e=xr(t);mr(t,t,xr(ss(i,1))/e),ns(i,1,t)}{let t=ss(r,2),e=xr(t);mr(t,t,xr(ss(i,2))/e),ns(i,2,t)}}else if(2&e.d){{let t=ss(r,0);mr(t,t,1/xr(ss(i,0))),mr(t,t,xr(ss(r,0))),ns(i,0,t)}{let t=ss(r,1);mr(t,t,1/xr(ss(i,1))),mr(t,t,xr(ss(r,1))),ns(i,1,t)}{let t=ss(r,2);mr(t,t,1/xr(ss(i,2))),mr(t,t,xr(ss(r,2))),ns(i,2,t)}}if(1&e.d)ns(i,3,ss(r,3));else{let t=fr(e.h[0],e.h[1],e.h[2],1),s=dr();br(s,t),s[3]=0;let n=dr(),a=dr();Tr(n,t,e.a.as[e.e].m),Tr(n,n,r),Tr(a,s,i),pr(n,n,a),n[3]=1,ns(i,3,n)}}let s=this.A;Gi(s,r),Li(i,s,i),Li(e.m,e.m,i)}let s=null;if(null!=this.v){let t=this.I(this.v);this.a.Y||(this.y=t),this.a.Z||(s=this.a.Y?this.y:t)}else{let t=this.I(i);this.a.Y||(this.y=t),this.a.Z||(s=this.a.Y?this.y:t)}let n=null;if(null!=this.w){let t=this.I(this.w);this.a.Y||(this.z=t),n=this.a.Y?this.z:t}let a=null!=s||null!=n,o=Ui();a&&(null!=s&&Li(o,o,s),null!=n&&Li(o,o,n)),null!=this.x&&(Vi(o,o,this.h),Li(o,o,this.x),Vi(o,o,Ei(this.p,this.h))),Li(e.m,e.m,o);let h=120&e.d;if(h){let t=Ui();Oi(t,e.m);let i=e.m,r=bi();Ki(r,e.m);let s=dr();if(16==h){let t=ss(e.m,0);mr(t,t,1/gi(t)),ns(e.m,0,t);let r=fr(i[4],-i[0],0,0);ns(i,1,vr(r,r)),Si(s,r,t),s[3]=0,ns(i,2,s)}else if(h>16){if(32==h){let t=ss(i,1);mr(t,t,1/xr(t)),ns(e.m,1,t);let r=fr(-i[5],i[1],0,0);ns(i,0,vr(r,r)),s[3]=0,ns(i,2,s)}else if(64==h){let t=ss(i,2);vr(t,t),ns(i,2,t);let e=fr(t[1],-t[0],0,0);vr(e,e),ns(i,1,e),Si(s,t,e),s[3]=0,ns(i,0,s)}}else if(8==h){let t=this.a.j;if(a){let e=ss(o,0);e=fr(e[1],e[2],-e[0],0),vr(e,e),ns(i,0,e);let r=ss(o,1);r=fr(t?-r[1]:r[1],t?-r[2]:r[2],t?r[0]:-r[0],0),vr(r,r),ns(i,1,r);let s=ss(o,2);s=fr(s[1],s[2],-s[0],0),vr(s,s),ns(i,2,s)}else{ns(i,0,fr(0,0,-1,0)),ns(i,1,fr(t?-1:1,0,0,0)),ns(i,2,fr(0,1,0,0))}}let n=fr(this.h[0],this.h[1],this.h[2],1),l=fr(this.h[0],this.h[1],this.h[2],0),u=ss(i,0),c=ss(i,1),d=ss(i,2);mr(u,u,r[0]),mr(c,c,r[1]),mr(d,d,r[2]),ns(i,0,u),ns(i,1,c),ns(i,2,d),Tr(n,n,t),Tr(l,l,i);let f=dr();pr(f,n,l),f[3]=1,ns(i,3,f)}Gi(r,r),Li(e.m,r,e.m),Gi(e.n,e.m),Ni(e.o,e.n),Fi(e.l,e.h,e.m)}I(t){var e=this.i.c(t.b.a),i=this.j.c(t.b.a),r=this.k.c(t.b.a);if(!!(640&this.d)){let w=Ui();return zi(w),Vi(w,w,this.h),e&&(this.p=this.i.d(t,this.a.bf),Vi(w,w,this.p)),i&&(this.q=this.j.d(t,this.a.bf,Br()),s=this.r,n=this.q,a=n[0],o=n[1],h=n[2],l=n[3],f=a*(u=a+a),b=o*u,g=o*(c=o+o),_=h*u,p=h*c,m=h*(d=h+h),x=l*u,v=l*c,T=l*d,s[0]=1-g-m,s[1]=b+T,s[2]=_-v,s[3]=0,s[4]=b-T,s[5]=1-f-m,s[6]=p+x,s[7]=0,s[8]=_+v,s[9]=p-x,s[10]=1-f-g,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1,Li(w,w,this.r)),r&&(this.p=this.k.d(t,this.a.bf),Hi(w,w,this.p)),Vi(w,w,Ei(this.p,this.h)),w}var s,n,a,o,h,l,u,c,d,f,b,g,_,p,m,x,v,T;return null}};const os=class{constructor(t){var e=this;e.a=t.getUint16(),e.b=t.getUint16(),e.c=t.getUint16(),e.d=t.getUint16(),e.e=t.getUint16()+65536*e.b,e.f=t.getUint16(),e.g=t.getUint16(),e.h=_i(t.getFloat(),t.getFloat(),t.getFloat()),e.i=_i(t.getFloat(),t.getFloat(),t.getFloat()),e.j=t.getFloat()}k(){this.h=null,this.i=null}};function hs(t){let e=t.length;for(;--e>=0;)t[e]=0}const ls=256,us=286,cs=30,ds=15,fs=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),bs=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),gs=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),_s=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ps=new Array(576);hs(ps);const ms=new Array(60);hs(ms);const xs=new Array(512);hs(xs);const vs=new Array(256);hs(vs);const Ts=new Array(29);hs(Ts);const ws=new Array(cs);function ys(t,e,i,r,s){this.static_tree=t,this.extra_bits=e,this.extra_base=i,this.elems=r,this.max_length=s,this.has_stree=t&&t.length}let As,Es,Ms;function Cs(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}hs(ws);const Ss=t=>t<256?xs[t]:xs[256+(t>>>7)],ks=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},Fs=(t,e,i)=>{t.bi_valid>16-i?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=i-16):(t.bi_buf|=e<{Fs(t,i[2*e],i[2*e+1])},Rs=(t,e)=>{let i=0;do{i|=1&t,t>>>=1,i<<=1}while(--e>0);return i>>>1},Bs=(t,e,i)=>{const r=new Array(16);let s,n,a=0;for(s=1;s<=ds;s++)a=a+i[s-1]<<1,r[s]=a;for(n=0;n<=e;n++){let e=t[2*n+1];0!==e&&(t[2*n]=Rs(r[e]++,e))}},Is=t=>{let e;for(e=0;e{t.bi_valid>8?ks(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},Os=(t,e,i,r)=>{const s=2*e,n=2*i;return t[s]{const r=t.heap[i];let s=i<<1;for(;s<=t.heap_len&&(s{let r,s,n,a,o=0;if(0!==t.sym_next)do{r=255&t.pending_buf[t.sym_buf+o++],r+=(255&t.pending_buf[t.sym_buf+o++])<<8,s=t.pending_buf[t.sym_buf+o++],0===r?Ds(t,s,e):(n=vs[s],Ds(t,n+ls+1,e),a=fs[n],0!==a&&(s-=Ts[n],Fs(t,s,a)),r--,n=Ss(r),Ds(t,n,i),a=bs[n],0!==a&&(r-=ws[n],Fs(t,r,a)))}while(o{const i=e.dyn_tree,r=e.stat_desc.static_tree,s=e.stat_desc.has_stree,n=e.stat_desc.elems;let a,o,h,l=-1;for(t.heap_len=0,t.heap_max=573,a=0;a>1;a>=1;a--)Ps(t,i,a);h=n;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],Ps(t,i,1),o=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=o,i[2*h]=i[2*a]+i[2*o],t.depth[h]=(t.depth[a]>=t.depth[o]?t.depth[a]:t.depth[o])+1,i[2*a+1]=i[2*o+1]=h,t.heap[1]=h++,Ps(t,i,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const i=e.dyn_tree,r=e.max_code,s=e.stat_desc.static_tree,n=e.stat_desc.has_stree,a=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,h=e.stat_desc.max_length;let l,u,c,d,f,b,g=0;for(d=0;d<=ds;d++)t.bl_count[d]=0;for(i[2*t.heap[t.heap_max]+1]=0,l=t.heap_max+1;l<573;l++)u=t.heap[l],d=i[2*i[2*u+1]+1]+1,d>h&&(d=h,g++),i[2*u+1]=d,u>r||(t.bl_count[d]++,f=0,u>=o&&(f=a[u-o]),b=i[2*u],t.opt_len+=b*(d+f),n&&(t.static_len+=b*(s[2*u+1]+f)));if(0!==g){do{for(d=h-1;0===t.bl_count[d];)d--;t.bl_count[d]--,t.bl_count[d+1]+=2,t.bl_count[h]--,g-=2}while(g>0);for(d=h;0!==d;d--)for(u=t.bl_count[d];0!==u;)c=t.heap[--l],c>r||(i[2*c+1]!==d&&(t.opt_len+=(d-i[2*c+1])*i[2*c],i[2*c+1]=d),u--)}})(t,e),Bs(i,l,t.bl_count)},Gs=(t,e,i)=>{let r,s,n=-1,a=e[1],o=0,h=7,l=4;for(0===a&&(h=138,l=3),e[2*(i+1)+1]=65535,r=0;r<=i;r++)s=a,a=e[2*(r+1)+1],++o{let r,s,n=-1,a=e[1],o=0,h=7,l=4;for(0===a&&(h=138,l=3),r=0;r<=i;r++)if(s=a,a=e[2*(r+1)+1],!(++o{Fs(t,0+(r?1:0),3),Us(t),ks(t,i),ks(t,~i),i&&t.pending_buf.set(t.window.subarray(e,e+i),t.pending),t.pending+=i};var qs=t=>{Vs||((()=>{let t,e,i,r,s;const n=new Array(16);for(i=0,r=0;r<28;r++)for(Ts[r]=i,t=0;t<1<>=7;r{let s,n,a=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(Gs(t,t.dyn_ltree,t.l_desc.max_code),Gs(t,t.dyn_dtree,t.d_desc.max_code),Ns(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*_s[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,n=t.static_len+3+7>>>3,n<=s&&(s=n)):s=n=i+5,i+4<=s&&-1!==e?Hs(t,e,i,r):4===t.strategy||n===s?(Fs(t,2+(r?1:0),3),zs(t,ps,ms)):(Fs(t,4+(r?1:0),3),((t,e,i,r)=>{let s;for(Fs(t,e-257,5),Fs(t,i-1,5),Fs(t,r-4,4),s=0;s(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=i,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(vs[i]+ls+1)]++,t.dyn_dtree[2*Ss(e)]++),t.sym_next===t.sym_end),Ws={_tr_init:qs,_tr_stored_block:Hs,_tr_flush_block:Xs,_tr_tally:js,_tr_align:t=>{Fs(t,2,3),Ds(t,256,ps),(t=>{16===t.bi_valid?(ks(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var Zs=(t,e,i,r)=>{let s=65535&t,n=t>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{s=s+e[r++]|0,n=n+s|0}while(--a);s%=65521,n%=65521}return s|n<<16};const Ys=new Uint32Array((()=>{let t,e=[];for(var i=0;i<256;i++){t=i;for(var r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;e[i]=t}return e})());var Ks=(t,e,i,r)=>{const s=Ys,n=r+i;t^=-1;for(let i=r;i>>8^s[255&(t^e[i])];return~t},Js={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},$s={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Qs,_tr_stored_block:tn,_tr_flush_block:en,_tr_tally:rn,_tr_align:sn}=Ws,{Z_NO_FLUSH:nn,Z_PARTIAL_FLUSH:an,Z_FULL_FLUSH:on,Z_FINISH:hn,Z_BLOCK:ln,Z_OK:un,Z_STREAM_END:cn,Z_STREAM_ERROR:dn,Z_DATA_ERROR:fn,Z_BUF_ERROR:bn,Z_DEFAULT_COMPRESSION:gn,Z_FILTERED:_n,Z_HUFFMAN_ONLY:pn,Z_RLE:mn,Z_FIXED:xn,Z_DEFAULT_STRATEGY:vn,Z_UNKNOWN:Tn,Z_DEFLATED:wn}=$s,yn=258,An=262,En=42,Mn=113,Cn=666,Sn=(t,e)=>(t.msg=Js[e],e),kn=t=>2*t-(t>4?9:0),Fn=t=>{let e=t.length;for(;--e>=0;)t[e]=0},Dn=t=>{let e,i,r,s=t.w_size;e=t.hash_size,r=e;do{i=t.head[--r],t.head[r]=i>=s?i-s:0}while(--e);e=s,r=e;do{i=t.prev[--r],t.prev[r]=i>=s?i-s:0}while(--e)};let Rn=(t,e,i)=>(e<{const e=t.state;let i=e.pending;i>t.avail_out&&(i=t.avail_out),0!==i&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+i),t.next_out),t.next_out+=i,e.pending_out+=i,t.total_out+=i,t.avail_out-=i,e.pending-=i,0===e.pending&&(e.pending_out=0))},In=(t,e)=>{en(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Bn(t.strm)},Un=(t,e)=>{t.pending_buf[t.pending++]=e},On=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Pn=(t,e,i,r)=>{let s=t.avail_in;return s>r&&(s=r),0===s?0:(t.avail_in-=s,e.set(t.input.subarray(t.next_in,t.next_in+s),i),1===t.state.wrap?t.adler=Zs(t.adler,e,s,i):2===t.state.wrap&&(t.adler=Ks(t.adler,e,s,i)),t.next_in+=s,t.total_in+=s,s)},zn=(t,e)=>{let i,r,s=t.max_chain_length,n=t.strstart,a=t.prev_length,o=t.nice_match;const h=t.strstart>t.w_size-An?t.strstart-(t.w_size-An):0,l=t.window,u=t.w_mask,c=t.prev,d=t.strstart+yn;let f=l[n+a-1],b=l[n+a];t.prev_length>=t.good_match&&(s>>=2),o>t.lookahead&&(o=t.lookahead);do{if(i=e,l[i+a]===b&&l[i+a-1]===f&&l[i]===l[n]&&l[++i]===l[n+1]){n+=2,i++;do{}while(l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&l[++n]===l[++i]&&na){if(t.match_start=e,a=r,r>=o)break;f=l[n+a-1],b=l[n+a]}}}while((e=c[e&u])>h&&0!=--s);return a<=t.lookahead?a:t.lookahead},Nn=t=>{const e=t.w_size;let i,r,s;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-An)&&(t.window.set(t.window.subarray(e,e+e-r),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),Dn(t),r+=e),0===t.strm.avail_in)break;if(i=Pn(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=i,t.lookahead+t.insert>=3)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=Rn(t,t.ins_h,t.window[s+1]);t.insert&&(t.ins_h=Rn(t,t.ins_h,t.window[s+3-1]),t.prev[s&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=s,s++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let i,r,s,n=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,a=0,o=t.strm.avail_in;do{if(i=65535,s=t.bi_valid+42>>3,t.strm.avail_outr+t.strm.avail_in&&(i=r+t.strm.avail_in),i>s&&(i=s),i>8,t.pending_buf[t.pending-2]=~i,t.pending_buf[t.pending-1]=~i>>8,Bn(t.strm),r&&(r>i&&(r=i),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+r),t.strm.next_out),t.strm.next_out+=r,t.strm.avail_out-=r,t.strm.total_out+=r,t.block_start+=r,i-=r),i&&(Pn(t.strm,t.strm.output,t.strm.next_out,i),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i)}while(0===a);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_waters&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,s+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),s>t.strm.avail_in&&(s=t.strm.avail_in),s&&(Pn(t.strm,t.window,t.strstart,s),t.strstart+=s,t.insert+=s>t.w_size-t.insert?t.w_size-t.insert:s),t.high_water>3,s=t.pending_buf_size-s>65535?65535:t.pending_buf_size-s,n=s>t.w_size?t.w_size:s,r=t.strstart-t.block_start,(r>=n||(r||e===hn)&&e!==nn&&0===t.strm.avail_in&&r<=s)&&(i=r>s?s:r,a=e===hn&&0===t.strm.avail_in&&i===r?1:0,tn(t,t.block_start,i,a),t.block_start+=i,Bn(t.strm)),a?3:1)},Ln=(t,e)=>{let i,r;for(;;){if(t.lookahead=3&&(t.ins_h=Rn(t,t.ins_h,t.window[t.strstart+3-1]),i=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==i&&t.strstart-i<=t.w_size-An&&(t.match_length=zn(t,i)),t.match_length>=3)if(r=rn(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Rn(t,t.ins_h,t.window[t.strstart+3-1]),i=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Rn(t,t.ins_h,t.window[t.strstart+1]);else r=rn(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(r&&(In(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===hn?(In(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(In(t,!1),0===t.strm.avail_out)?1:2},Vn=(t,e)=>{let i,r,s;for(;;){if(t.lookahead=3&&(t.ins_h=Rn(t,t.ins_h,t.window[t.strstart+3-1]),i=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==i&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){s=t.strstart+t.lookahead-3,r=rn(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=s&&(t.ins_h=Rn(t,t.ins_h,t.window[t.strstart+3-1]),i=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,r&&(In(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(r=rn(t,0,t.window[t.strstart-1]),r&&In(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(r=rn(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===hn?(In(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(In(t,!1),0===t.strm.avail_out)?1:2};function Hn(t,e,i,r,s){this.good_length=t,this.max_lazy=e,this.nice_length=i,this.max_chain=r,this.func=s}const qn=[new Hn(0,0,0,0,Gn),new Hn(4,4,8,4,Ln),new Hn(4,5,16,8,Ln),new Hn(4,6,32,32,Ln),new Hn(4,4,16,16,Vn),new Hn(8,16,32,32,Vn),new Hn(8,16,128,128,Vn),new Hn(8,32,128,256,Vn),new Hn(32,128,258,1024,Vn),new Hn(32,258,258,4096,Vn)];function Xn(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=wn,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Fn(this.dyn_ltree),Fn(this.dyn_dtree),Fn(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Fn(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Fn(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const jn=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==En&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==Mn&&e.status!==Cn?1:0},Wn=t=>{if(jn(t))return Sn(t,dn);t.total_in=t.total_out=0,t.data_type=Tn;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?En:Mn,t.adler=2===e.wrap?0:1,e.last_flush=-2,Qs(e),un},Zn=t=>{const e=Wn(t);var i;return e===un&&((i=t.state).window_size=2*i.w_size,Fn(i.head),i.max_lazy_match=qn[i.level].max_lazy,i.good_match=qn[i.level].good_length,i.nice_match=qn[i.level].nice_length,i.max_chain_length=qn[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=2,i.match_available=0,i.ins_h=0),e},Yn=(t,e,i,r,s,n)=>{if(!t)return dn;let a=1;if(e===gn&&(e=6),r<0?(a=0,r=-r):r>15&&(a=2,r-=16),s<1||s>9||i!==wn||r<8||r>15||e<0||e>9||n<0||n>xn||8===r&&1!==a)return Sn(t,dn);8===r&&(r=9);const o=new Xn;return t.state=o,o.strm=t,o.status=En,o.wrap=a,o.gzhead=null,o.w_bits=r,o.w_size=1<{if(jn(t)||e>ln||e<0)return t?Sn(t,dn):dn;const i=t.state;if(!t.output||0!==t.avail_in&&!t.input||i.status===Cn&&e!==hn)return Sn(t,0===t.avail_out?bn:dn);const r=i.last_flush;if(i.last_flush=e,0!==i.pending){if(Bn(t),0===t.avail_out)return i.last_flush=-1,un}else if(0===t.avail_in&&kn(e)<=kn(r)&&e!==hn)return Sn(t,bn);if(i.status===Cn&&0!==t.avail_in)return Sn(t,bn);if(i.status===En&&0===i.wrap&&(i.status=Mn),i.status===En){let e=wn+(i.w_bits-8<<4)<<8,r=-1;if(r=i.strategy>=pn||i.level<2?0:i.level<6?1:6===i.level?2:3,e|=r<<6,0!==i.strstart&&(e|=32),e+=31-e%31,On(i,e),0!==i.strstart&&(On(i,t.adler>>>16),On(i,65535&t.adler)),t.adler=1,i.status=Mn,Bn(t),0!==i.pending)return i.last_flush=-1,un}if(57===i.status)if(t.adler=0,Un(i,31),Un(i,139),Un(i,8),i.gzhead)Un(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Un(i,255&i.gzhead.time),Un(i,i.gzhead.time>>8&255),Un(i,i.gzhead.time>>16&255),Un(i,i.gzhead.time>>24&255),Un(i,9===i.level?2:i.strategy>=pn||i.level<2?4:0),Un(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Un(i,255&i.gzhead.extra.length),Un(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=Ks(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Un(i,0),Un(i,0),Un(i,0),Un(i,0),Un(i,0),Un(i,9===i.level?2:i.strategy>=pn||i.level<2?4:0),Un(i,3),i.status=Mn,Bn(t),0!==i.pending)return i.last_flush=-1,un;if(69===i.status){if(i.gzhead.extra){let e=i.pending,r=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+r>i.pending_buf_size;){let s=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+s),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>e&&(t.adler=Ks(t.adler,i.pending_buf,i.pending-e,e)),i.gzindex+=s,Bn(t),0!==i.pending)return i.last_flush=-1,un;e=0,r-=s}let s=new Uint8Array(i.gzhead.extra);i.pending_buf.set(s.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending+=r,i.gzhead.hcrc&&i.pending>e&&(t.adler=Ks(t.adler,i.pending_buf,i.pending-e,e)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let e,r=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(t.adler=Ks(t.adler,i.pending_buf,i.pending-r,r)),Bn(t),0!==i.pending)return i.last_flush=-1,un;r=0}e=i.gzindexr&&(t.adler=Ks(t.adler,i.pending_buf,i.pending-r,r)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let e,r=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(t.adler=Ks(t.adler,i.pending_buf,i.pending-r,r)),Bn(t),0!==i.pending)return i.last_flush=-1,un;r=0}e=i.gzindexr&&(t.adler=Ks(t.adler,i.pending_buf,i.pending-r,r))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(Bn(t),0!==i.pending))return i.last_flush=-1,un;Un(i,255&t.adler),Un(i,t.adler>>8&255),t.adler=0}if(i.status=Mn,Bn(t),0!==i.pending)return i.last_flush=-1,un}if(0!==t.avail_in||0!==i.lookahead||e!==nn&&i.status!==Cn){let r=0===i.level?Gn(i,e):i.strategy===pn?((t,e)=>{let i;for(;;){if(0===t.lookahead&&(Nn(t),0===t.lookahead)){if(e===nn)return 1;break}if(t.match_length=0,i=rn(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,i&&(In(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===hn?(In(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(In(t,!1),0===t.strm.avail_out)?1:2})(i,e):i.strategy===mn?((t,e)=>{let i,r,s,n;const a=t.window;for(;;){if(t.lookahead<=yn){if(Nn(t),t.lookahead<=yn&&e===nn)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(s=t.strstart-1,r=a[s],r===a[++s]&&r===a[++s]&&r===a[++s])){n=t.strstart+yn;do{}while(r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&r===a[++s]&&st.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(i=rn(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(i=rn(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),i&&(In(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===hn?(In(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(In(t,!1),0===t.strm.avail_out)?1:2})(i,e):qn[i.level].func(i,e);if(3!==r&&4!==r||(i.status=Cn),1===r||3===r)return 0===t.avail_out&&(i.last_flush=-1),un;if(2===r&&(e===an?sn(i):e!==ln&&(tn(i,0,0,!1),e===on&&(Fn(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Bn(t),0===t.avail_out))return i.last_flush=-1,un}return e!==hn?un:i.wrap<=0?cn:(2===i.wrap?(Un(i,255&t.adler),Un(i,t.adler>>8&255),Un(i,t.adler>>16&255),Un(i,t.adler>>24&255),Un(i,255&t.total_in),Un(i,t.total_in>>8&255),Un(i,t.total_in>>16&255),Un(i,t.total_in>>24&255)):(On(i,t.adler>>>16),On(i,65535&t.adler)),Bn(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?un:cn)},Jn=(t,e)=>{let i=e.length;if(jn(t))return dn;const r=t.state,s=r.wrap;if(2===s||1===s&&r.status!==En||r.lookahead)return dn;if(1===s&&(t.adler=Zs(t.adler,e,i,0)),r.wrap=0,i>=r.w_size){0===s&&(Fn(r.head),r.strstart=0,r.block_start=0,r.insert=0);let t=new Uint8Array(r.w_size);t.set(e.subarray(i-r.w_size,i),0),e=t,i=r.w_size}const n=t.avail_in,a=t.next_in,o=t.input;for(t.avail_in=i,t.next_in=0,t.input=e,Nn(r);r.lookahead>=3;){let t=r.strstart,e=r.lookahead-2;do{r.ins_h=Rn(r,r.ins_h,r.window[t+3-1]),r.prev[t&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=t,t++}while(--e);r.strstart=t,r.lookahead=2,Nn(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,t.next_in=a,t.input=o,t.avail_in=n,r.wrap=s,un},$n={deflateInit:(t,e)=>Yn(t,e,wn,15,8,vn),deflateInit2:Yn,deflateReset:Zn,deflateResetKeep:Wn,deflateSetHeader:(t,e)=>jn(t)||2!==t.state.wrap?dn:(t.state.gzhead=e,un),deflate:Kn,deflateEnd:t=>{if(jn(t))return dn;const e=t.state.status;return t.state=null,e===Mn?Sn(t,fn):un},deflateSetDictionary:Jn,deflateInfo:"pako deflate (from Nodeca project)"};const Qn=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var ta={assign:function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const i=e.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const e in i)Qn(i,e)&&(t[e]=i[e])}}return t},flattenChunks:t=>{let e=0;for(let i=0,r=t.length;i=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;ia[254]=ia[254]=1;var ra={string2buf:t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,i,r,s,n,a=t.length,o=0;for(s=0;s>>6,e[n++]=128|63&i):i<65536?(e[n++]=224|i>>>12,e[n++]=128|i>>>6&63,e[n++]=128|63&i):(e[n++]=240|i>>>18,e[n++]=128|i>>>12&63,e[n++]=128|i>>>6&63,e[n++]=128|63&i);return e},buf2string:(t,e)=>{const i=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let r,s;const n=new Array(2*i);for(s=0,r=0;r4)n[s++]=65533,r+=a-1;else{for(e&=2===a?31:3===a?15:7;a>1&&r1?n[s++]=65533:e<65536?n[s++]=e:(e-=65536,n[s++]=55296|e>>10&1023,n[s++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&ea)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let i="";for(let r=0;r{(e=e||t.length)>t.length&&(e=t.length);let i=e-1;for(;i>=0&&128==(192&t[i]);)i--;return i<0||0===i?e:i+ia[t[i]]>e?i:e}};var sa=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const na=Object.prototype.toString,{Z_NO_FLUSH:aa,Z_SYNC_FLUSH:oa,Z_FULL_FLUSH:ha,Z_FINISH:la,Z_OK:ua,Z_STREAM_END:ca,Z_DEFAULT_COMPRESSION:da,Z_DEFAULT_STRATEGY:fa,Z_DEFLATED:ba}=$s;function ga(t){this.options=ta.assign({level:da,method:ba,chunkSize:16384,windowBits:15,memLevel:8,strategy:fa},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new sa,this.strm.avail_out=0;let i=$n.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(i!==ua)throw new Error(Js[i]);if(e.header&&$n.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?ra.string2buf(e.dictionary):"[object ArrayBuffer]"===na.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,i=$n.deflateSetDictionary(this.strm,t),i!==ua)throw new Error(Js[i]);this._dict_set=!0}}function _a(t,e){const i=new ga(e);if(i.push(t,!0),i.err)throw i.msg||Js[i.err];return i.result}ga.prototype.push=function(t,e){const i=this.strm,r=this.options.chunkSize;let s,n;if(this.ended)return!1;for(n=e===~~e?e:!0===e?la:aa,"string"==typeof t?i.input=ra.string2buf(t):"[object ArrayBuffer]"===na.call(t)?i.input=new Uint8Array(t):i.input=t,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(r),i.next_out=0,i.avail_out=r),(n===oa||n===ha)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(s=$n.deflate(i,n),s===ca)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),s=$n.deflateEnd(this.strm),this.onEnd(s),this.ended=!0,s===ua;if(0!==i.avail_out){if(n>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ga.prototype.onData=function(t){this.chunks.push(t)},ga.prototype.onEnd=function(t){t===ua&&(this.result=ta.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var pa={Deflate:ga,deflate:_a,deflateRaw:function(t,e){return(e=e||{}).raw=!0,_a(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,_a(t,e)},constants:$s};const ma=16209;var xa=function(t,e){let i,r,s,n,a,o,h,l,u,c,d,f,b,g,_,p,m,x,v,T,w,y,A,E;const M=t.state;i=t.next_in,A=t.input,r=i+(t.avail_in-5),s=t.next_out,E=t.output,n=s-(e-t.avail_out),a=s+(t.avail_out-257),o=M.dmax,h=M.wsize,l=M.whave,u=M.wnext,c=M.window,d=M.hold,f=M.bits,b=M.lencode,g=M.distcode,_=(1<>>24,d>>>=x,f-=x,x=m>>>16&255,0===x)E[s++]=65535&m;else{if(!(16&x)){if(64&x){if(32&x){M.mode=16191;break t}t.msg="invalid literal/length code",M.mode=ma;break t}m=b[(65535&m)+(d&(1<>>=x,f-=x),f<15&&(d+=A[i++]<>>24,d>>>=x,f-=x,x=m>>>16&255,16&x){if(T=65535&m,x&=15,fo){t.msg="invalid distance too far back",M.mode=ma;break t}if(d>>>=x,f-=x,x=s-n,T>x){if(x=T-x,x>l&&M.sane){t.msg="invalid distance too far back",M.mode=ma;break t}if(w=0,y=c,0===u){if(w+=h-x,x2;)E[s++]=y[w++],E[s++]=y[w++],E[s++]=y[w++],v-=3;v&&(E[s++]=y[w++],v>1&&(E[s++]=y[w++]))}else{w=s-T;do{E[s++]=E[w++],E[s++]=E[w++],E[s++]=E[w++],v-=3}while(v>2);v&&(E[s++]=E[w++],v>1&&(E[s++]=E[w++]))}break}if(64&x){t.msg="invalid distance code",M.mode=ma;break t}m=g[(65535&m)+(d&(1<>3,i-=v,f-=v<<3,d&=(1<{const h=o.bits;let l,u,c,d,f,b,g=0,_=0,p=0,m=0,x=0,v=0,T=0,w=0,y=0,A=0,E=null;const M=new Uint16Array(16),C=new Uint16Array(16);let S,k,F,D=null;for(g=0;g<=va;g++)M[g]=0;for(_=0;_=1&&0===M[m];m--);if(x>m&&(x=m),0===m)return s[n++]=20971520,s[n++]=20971520,o.bits=1,0;for(p=1;p0&&(0===t||1!==m))return-1;for(C[1]=0,g=1;g852||2===t&&y>592)return 1;for(;;){S=g-T,a[_]+1=b?(k=D[a[_]-b],F=E[a[_]-b]):(k=96,F=0),l=1<>T)+u]=S<<24|k<<16|F}while(0!==u);for(l=1<>=1;if(0!==l?(A&=l-1,A+=l):A=0,_++,0==--M[g]){if(g===m)break;g=e[i+a[_]]}if(g>x&&(A&d)!==c){for(0===T&&(T=x),f+=p,v=g-T,w=1<852||2===t&&y>592)return 1;c=A&d,s[c]=x<<24|v<<16|f-n}}return 0!==A&&(s[f+A]=g-T<<24|64<<16),o.bits=x,0};const{Z_FINISH:Ma,Z_BLOCK:Ca,Z_TREES:Sa,Z_OK:ka,Z_STREAM_END:Fa,Z_NEED_DICT:Da,Z_STREAM_ERROR:Ra,Z_DATA_ERROR:Ba,Z_MEM_ERROR:Ia,Z_BUF_ERROR:Ua,Z_DEFLATED:Oa}=$s,Pa=16180,za=16190,Na=16191,Ga=16192,La=16194,Va=16199,Ha=16200,qa=16206,Xa=16209,ja=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Wa(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Za=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode16211?1:0},Ya=t=>{if(Za(t))return Ra;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Pa,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ka},Ka=t=>{if(Za(t))return Ra;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Ya(t)},Ja=(t,e)=>{let i;if(Za(t))return Ra;const r=t.state;return e<0?(i=0,e=-e):(i=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?Ra:(null!==r.window&&r.wbits!==e&&(r.window=null),r.wrap=i,r.wbits=e,Ka(t))},$a=(t,e)=>{if(!t)return Ra;const i=new Wa;t.state=i,i.strm=t,i.window=null,i.mode=Pa;const r=Ja(t,e);return r!==ka&&(t.state=null),r};let Qa,to,eo=!0;const io=t=>{if(eo){Qa=new Int32Array(512),to=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(Ea(1,t.lens,0,288,Qa,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;Ea(2,t.lens,0,32,to,0,t.work,{bits:5}),eo=!1}t.lencode=Qa,t.lenbits=9,t.distcode=to,t.distbits=5},ro=(t,e,i,r)=>{let s;const n=t.state;return null===n.window&&(n.wsize=1<=n.wsize?(n.window.set(e.subarray(i-n.wsize,i),0),n.wnext=0,n.whave=n.wsize):(s=n.wsize-n.wnext,s>r&&(s=r),n.window.set(e.subarray(i-r,i-r+s),n.wnext),(r-=s)?(n.window.set(e.subarray(i-r,i),0),n.wnext=r,n.whave=n.wsize):(n.wnext+=s,n.wnext===n.wsize&&(n.wnext=0),n.whave{let i,r,s,n,a,o,h,l,u,c,d,f,b,g,_,p,m,x,v,T,w,y,A=0;const E=new Uint8Array(4);let M,C;const S=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Za(t)||!t.output||!t.input&&0!==t.avail_in)return Ra;i=t.state,i.mode===Na&&(i.mode=Ga),a=t.next_out,s=t.output,h=t.avail_out,n=t.next_in,r=t.input,o=t.avail_in,l=i.hold,u=i.bits,c=o,d=h,y=ka;t:for(;;)switch(i.mode){case Pa:if(0===i.wrap){i.mode=Ga;break}for(;u<16;){if(0===o)break t;o--,l+=r[n++]<>>8&255,i.check=Ks(i.check,E,2,0),l=0,u=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&l)<<8)+(l>>8))%31){t.msg="incorrect header check",i.mode=Xa;break}if((15&l)!==Oa){t.msg="unknown compression method",i.mode=Xa;break}if(l>>>=4,u-=4,w=8+(15&l),0===i.wbits&&(i.wbits=w),w>15||w>i.wbits){t.msg="invalid window size",i.mode=Xa;break}i.dmax=1<>8&1),512&i.flags&&4&i.wrap&&(E[0]=255&l,E[1]=l>>>8&255,i.check=Ks(i.check,E,2,0)),l=0,u=0,i.mode=16182;case 16182:for(;u<32;){if(0===o)break t;o--,l+=r[n++]<>>8&255,E[2]=l>>>16&255,E[3]=l>>>24&255,i.check=Ks(i.check,E,4,0)),l=0,u=0,i.mode=16183;case 16183:for(;u<16;){if(0===o)break t;o--,l+=r[n++]<>8),512&i.flags&&4&i.wrap&&(E[0]=255&l,E[1]=l>>>8&255,i.check=Ks(i.check,E,2,0)),l=0,u=0,i.mode=16184;case 16184:if(1024&i.flags){for(;u<16;){if(0===o)break t;o--,l+=r[n++]<>>8&255,i.check=Ks(i.check,E,2,0)),l=0,u=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&(f=i.length,f>o&&(f=o),f&&(i.head&&(w=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(r.subarray(n,n+f),w)),512&i.flags&&4&i.wrap&&(i.check=Ks(i.check,r,f,n)),o-=f,n+=f,i.length-=f),i.length))break t;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===o)break t;f=0;do{w=r[n+f++],i.head&&w&&i.length<65536&&(i.head.name+=String.fromCharCode(w))}while(w&&f>9&1,i.head.done=!0),t.adler=i.check=0,i.mode=Na;break;case 16189:for(;u<32;){if(0===o)break t;o--,l+=r[n++]<>>=7&u,u-=7&u,i.mode=qa;break}for(;u<3;){if(0===o)break t;o--,l+=r[n++]<>>=1,u-=1,3&l){case 0:i.mode=16193;break;case 1:if(io(i),i.mode=Va,e===Sa){l>>>=2,u-=2;break t}break;case 2:i.mode=16196;break;case 3:t.msg="invalid block type",i.mode=Xa}l>>>=2,u-=2;break;case 16193:for(l>>>=7&u,u-=7&u;u<32;){if(0===o)break t;o--,l+=r[n++]<>>16^65535)){t.msg="invalid stored block lengths",i.mode=Xa;break}if(i.length=65535&l,l=0,u=0,i.mode=La,e===Sa)break t;case La:i.mode=16195;case 16195:if(f=i.length,f){if(f>o&&(f=o),f>h&&(f=h),0===f)break t;s.set(r.subarray(n,n+f),a),o-=f,n+=f,h-=f,a+=f,i.length-=f;break}i.mode=Na;break;case 16196:for(;u<14;){if(0===o)break t;o--,l+=r[n++]<>>=5,u-=5,i.ndist=1+(31&l),l>>>=5,u-=5,i.ncode=4+(15&l),l>>>=4,u-=4,i.nlen>286||i.ndist>30){t.msg="too many length or distance symbols",i.mode=Xa;break}i.have=0,i.mode=16197;case 16197:for(;i.have>>=3,u-=3}for(;i.have<19;)i.lens[S[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,M={bits:i.lenbits},y=Ea(0,i.lens,0,19,i.lencode,0,i.work,M),i.lenbits=M.bits,y){t.msg="invalid code lengths set",i.mode=Xa;break}i.have=0,i.mode=16198;case 16198:for(;i.have>>24,p=A>>>16&255,m=65535&A,!(_<=u);){if(0===o)break t;o--,l+=r[n++]<>>=_,u-=_,i.lens[i.have++]=m;else{if(16===m){for(C=_+2;u>>=_,u-=_,0===i.have){t.msg="invalid bit length repeat",i.mode=Xa;break}w=i.lens[i.have-1],f=3+(3&l),l>>>=2,u-=2}else if(17===m){for(C=_+3;u>>=_,u-=_,w=0,f=3+(7&l),l>>>=3,u-=3}else{for(C=_+7;u>>=_,u-=_,w=0,f=11+(127&l),l>>>=7,u-=7}if(i.have+f>i.nlen+i.ndist){t.msg="invalid bit length repeat",i.mode=Xa;break}for(;f--;)i.lens[i.have++]=w}}if(i.mode===Xa)break;if(0===i.lens[256]){t.msg="invalid code -- missing end-of-block",i.mode=Xa;break}if(i.lenbits=9,M={bits:i.lenbits},y=Ea(1,i.lens,0,i.nlen,i.lencode,0,i.work,M),i.lenbits=M.bits,y){t.msg="invalid literal/lengths set",i.mode=Xa;break}if(i.distbits=6,i.distcode=i.distdyn,M={bits:i.distbits},y=Ea(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,M),i.distbits=M.bits,y){t.msg="invalid distances set",i.mode=Xa;break}if(i.mode=Va,e===Sa)break t;case Va:i.mode=Ha;case Ha:if(o>=6&&h>=258){t.next_out=a,t.avail_out=h,t.next_in=n,t.avail_in=o,i.hold=l,i.bits=u,xa(t,d),a=t.next_out,s=t.output,h=t.avail_out,n=t.next_in,r=t.input,o=t.avail_in,l=i.hold,u=i.bits,i.mode===Na&&(i.back=-1);break}for(i.back=0;A=i.lencode[l&(1<>>24,p=A>>>16&255,m=65535&A,!(_<=u);){if(0===o)break t;o--,l+=r[n++]<>x)],_=A>>>24,p=A>>>16&255,m=65535&A,!(x+_<=u);){if(0===o)break t;o--,l+=r[n++]<>>=x,u-=x,i.back+=x}if(l>>>=_,u-=_,i.back+=_,i.length=m,0===p){i.mode=16205;break}if(32&p){i.back=-1,i.mode=Na;break}if(64&p){t.msg="invalid literal/length code",i.mode=Xa;break}i.extra=15&p,i.mode=16201;case 16201:if(i.extra){for(C=i.extra;u>>=i.extra,u-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;A=i.distcode[l&(1<>>24,p=A>>>16&255,m=65535&A,!(_<=u);){if(0===o)break t;o--,l+=r[n++]<>x)],_=A>>>24,p=A>>>16&255,m=65535&A,!(x+_<=u);){if(0===o)break t;o--,l+=r[n++]<>>=x,u-=x,i.back+=x}if(l>>>=_,u-=_,i.back+=_,64&p){t.msg="invalid distance code",i.mode=Xa;break}i.offset=m,i.extra=15&p,i.mode=16203;case 16203:if(i.extra){for(C=i.extra;u>>=i.extra,u-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){t.msg="invalid distance too far back",i.mode=Xa;break}i.mode=16204;case 16204:if(0===h)break t;if(f=d-h,i.offset>f){if(f=i.offset-f,f>i.whave&&i.sane){t.msg="invalid distance too far back",i.mode=Xa;break}f>i.wnext?(f-=i.wnext,b=i.wsize-f):b=i.wnext-f,f>i.length&&(f=i.length),g=i.window}else g=s,b=a-i.offset,f=i.length;f>h&&(f=h),h-=f,i.length-=f;do{s[a++]=g[b++]}while(--f);0===i.length&&(i.mode=Ha);break;case 16205:if(0===h)break t;s[a++]=i.length,h--,i.mode=Ha;break;case qa:if(i.wrap){for(;u<32;){if(0===o)break t;o--,l|=r[n++]<$a(t,15),inflateInit2:$a,inflate:so,inflateEnd:t=>{if(Za(t))return Ra;let e=t.state;return e.window&&(e.window=null),t.state=null,ka},inflateGetHeader:(t,e)=>{if(Za(t))return Ra;const i=t.state;return 2&i.wrap?(i.head=e,e.done=!1,ka):Ra},inflateSetDictionary:(t,e)=>{const i=e.length;let r,s,n;return Za(t)?Ra:(r=t.state,0!==r.wrap&&r.mode!==za?Ra:r.mode===za&&(s=1,s=Zs(s,e,i,0),s!==r.check)?Ba:(n=ro(t,e,i,i),n?(r.mode=16210,Ia):(r.havedict=1,ka)))},inflateInfo:"pako inflate (from Nodeca project)"};var ao=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const oo=Object.prototype.toString,{Z_NO_FLUSH:ho,Z_FINISH:lo,Z_OK:uo,Z_STREAM_END:co,Z_NEED_DICT:fo,Z_STREAM_ERROR:bo,Z_DATA_ERROR:go,Z_MEM_ERROR:_o}=$s;function po(t){this.options=ta.assign({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(15&e.windowBits||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new sa,this.strm.avail_out=0;let i=no.inflateInit2(this.strm,e.windowBits);if(i!==uo)throw new Error(Js[i]);if(this.header=new ao,no.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=ra.string2buf(e.dictionary):"[object ArrayBuffer]"===oo.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(i=no.inflateSetDictionary(this.strm,e.dictionary),i!==uo)))throw new Error(Js[i])}function mo(t,e){const i=new po(e);if(i.push(t),i.err)throw i.msg||Js[i.err];return i.result}po.prototype.push=function(t,e){const i=this.strm,r=this.options.chunkSize,s=this.options.dictionary;let n,a,o;if(this.ended)return!1;for(a=e===~~e?e:!0===e?lo:ho,"[object ArrayBuffer]"===oo.call(t)?i.input=new Uint8Array(t):i.input=t,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(r),i.next_out=0,i.avail_out=r),n=no.inflate(i,a),n===fo&&s&&(n=no.inflateSetDictionary(i,s),n===uo?n=no.inflate(i,a):n===go&&(n=fo));i.avail_in>0&&n===co&&i.state.wrap>0&&0!==t[i.next_in];)no.inflateReset(i),n=no.inflate(i,a);switch(n){case bo:case go:case fo:case _o:return this.onEnd(n),this.ended=!0,!1}if(o=i.avail_out,i.next_out&&(0===i.avail_out||n===co))if("string"===this.options.to){let t=ra.utf8border(i.output,i.next_out),e=i.next_out-t,s=ra.buf2string(i.output,t);i.next_out=e,i.avail_out=r-e,e&&i.output.set(i.output.subarray(t,t+e),0),this.onData(s)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(n!==uo||0!==o){if(n===co)return n=no.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},po.prototype.onData=function(t){this.chunks.push(t)},po.prototype.onEnd=function(t){t===uo&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=ta.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var xo={Inflate:po,inflate:mo,inflateRaw:function(t,e){return(e=e||{}).raw=!0,mo(t,e)},ungzip:mo,constants:$s};const{Deflate:vo,deflate:To,deflateRaw:wo,gzip:yo}=pa,{Inflate:Ao,inflate:Eo,inflateRaw:Mo,ungzip:Co}=xo;var So=Eo;const ko=class{constructor(t){this.a=t.getUint16(),this.b=t.getUint16()}static c(t){t.o.ay&&t.g-1&&1==this.o.az[e].type&&(this.c=-1e3,this.i=3);for(let e=0;e-1&&this.j-1&&i-1&&this.m-1&&t.aB&&i-1&&this.l-1&&i-1&&this.f0){let e=dr();r>0?mr(e,t,1/r):br(e,t),mr(e,e,gi(_i(i[8],i[9],i[10]))*this.p.j),1&this.a?pr(e,t,e):_r(e,t,e),r=xr(e)}return r}K(){this.o,this.o.renderer.context;const t=this.o.X;if(this.A[0]=this.A[1]=this.A[2]=this.A[3]=1,this.v&&this.v.g(t,this.o.bf,this.A),this.w[0]&&(this.A[3]*=this.w[0].d(t,this.o.bf)),this.A[3]*=this.o.ac[3],!(this.A[3]<=.001)){for(let e=0;e{if(!this.o.Y&&(zi(this.u[i]),this.t[i])){let e=!1,r=!1;this.t[i].a&&this.t[i].a.c(t.b.a)?(this.B=this.t[i].a.d(t,this.o.bf),r=!0):mi(this.B,0,0,0),this.t[i].b&&this.t[i].b.c(t.b.a)?(this.C=this.t[i].b.d(t,this.o.bf),e=!0):Hr(this.C,0,0,0,1);let s,n=!1;if(this.t[i].c&&this.t[i].c.c(t.b.a)&&(s=this.t[i].c.d(t,this.o.bf),n=!0),zi(this.u[i]),Vi(this.u[i],this.u[i],_i(.5,.5,0)),n&&Hi(this.u[i],this.u[i],s),e){let t=Ui();Zi(t,this.C,[0,0,0]),Li(this.u[i],this.u[i],t)}r&&Vi(this.u[i],this.u[i],this.B),Vi(this.u[i],this.u[i],_i(-.5,-.5,0))}})),this.E){(this.A[3]<1?this.G:this.F).g=this.J()}}}L(t,e){if(!this.F)return;const i=this.o.wowRenderer.getDevice();if(e)i.drawMesh(this.H);else{const e=this.F.b.getBlendMode()<=Ro.GxBlend_AlphaKey,r=null!=this.o.H,s=this.A[3]<1;t&&e&&(s||r)?(i.drawMesh(this.H),i.drawMesh(this.G)):(!t&&e||t&&!e)&&i.drawMesh(this.F)}}M(t,e){const i=this,r=t&&i.r.b<2?Ro.GxBlend_Alpha:i.r.b,s=[0,1,2,10,3,4,5,13],n=s[r],a=this.o.wowRenderer,o=this.o,h=Object.assign(Object.assign({},this.o.be),this.o.I);for(let t=0;t{let r=null;if(this.s[i]){if(-1e3==this.c){const t=this.o.aN[1];if(t?r={c:t.k(i),d:!this.o.y}:this.o.y&&(r={c:null,d:!1}),this.o.x){const t=this.o.x.aN[1];t?r={c:t.k(i),d:!this.o.y}:this.o.y&&(r={c:null,d:!1})}}else this.o.aO&&1==this.s[i].type?r=this.o.aO.a:this.s[i].f?r=this.s[i].f:this.o.F[this.s[i].type]?r=this.o.F[this.s[i].type]:this.o.y?r={c:null,d:!1}:this.o.aN[this.s[i].type]&&this.o.aN[this.s[i].type].a?r={c:this.o.aN[this.s[i].type].a}:this.o.x&&this.o.x.aN[this.s[i].type]&&this.o.x.aN[this.s[i].type].a&&(r={c:this.o.x.aN[this.s[i].type].a});r||(this.s[i].g||(WH.debug("can't find texture for material",i,"type",this.s[i].type,"index",this.s[i].b),this.s[i].g=!0),r={c:this.o.renderer.greenPixelTexture})}t[i]=r})),t}get show(){return this.n}set show(t){this.n=t}get meshId(){return this.q}P(){this.o=null,this.p=null,this.r=null,this.s=null,this.t=null,this.v=null,this.w=null,this.A=null,this.u=null,this.B=null,this.C=null}};const Go=class{constructor(t,e,i){this.a=t,this.b=e,this.c=i.getInt32(),this.d=i.getUint32(),this.e=i.getUint32(),this.f=null,this.g=!1,this.i()}h(){this.a=null,this.f&&this.f.i(),this.f=null}i(){0!=this.e&&(this.f=this.a.renderer.getTexture(this.e))}get type(){return this.c}};const Lo=class{constructor(t){this.a=new rs(t,Zr),this.b=new rs(t,Yr),this.c=new rs(t,Zr)}d(){var t=this;t.a&&(t.a.e(),t.a=null),t.b&&(t.b.e(),t.b=null),t.c&&(t.c.e(),t.c=null)}};const Vo=class{constructor(t){var e=this;e.a=t.getInt32(),e.b=t.getInt32(),e.c=_i(t.getFloat(),t.getFloat(),t.getFloat()),e.d=-1}e(){this.c=null}};const Ho=class{constructor(t){this.a=new rs(t,Zr),this.b=new rs(t,Kr)}c(){var t=this;t.a&&t.a.e(),t.b&&t.b.e()}d(t){return!!this.a&&this.a.c(t)}e(t){return!!this.b&&this.b.c(t)}f(t){return this.d(t)||this.e(t)}g(t,e,i){var r=this;i?i[0]=i[1]=i[2]=i[3]=1:i=fr(1,1,1,1);let s=_i(1,1,1);return r.d(t.b.a)&&r.a.d(t,e,s,s),r.e(t.b.a)&&(i[3]=r.b.d(t,e,i[3])/32767),i[0]=s[0],i[1]=s[1],i[2]=s[2],i}};const qo=class{constructor(t){this.a=new rs(t,Kr)}b(){this.a.e(),this.a=null}c(t){return this.a.c(t)}d(t,e){var i=1;this.c(t.b.a)&&(i=this.a.d(t,e,i)/32767);return i>1?i=1:i<0&&(i=0),i}};const Xo=class{constructor(){this.a=0,this.b=0,this.c=-1,this.d=null,this.e=null,this.f=null}};class jo extends Xo{}const Wo=class{constructor(t,e){this.d=!1,this.e=!1,this.a=t,this.b=e,this.c=new Array(e.length);for(let e=0;e>16&255)/255,(e>>8&255)/255,(255&e)/255,this.a.ac[3])}else if(14==this.b[t].ProcEffectType){let e=Math.min(Math.max(this.b[t].Value[0],0),1);this.a.ac[3]=e}else if(22==this.b[t].ProcEffectType){let e=this.b[t].Value[3];this.a.ac=fr((e>>16&255)/255,(e>>8&255)/255,(255&e)/255,this.a.ac[3])}break;case 2:this.i(t);break;case 6:case 7:case 11:case 12:case 13:break;case 16:this.j(t)}}i(t){if(!this.a)return;if(!this.a.d)return;if(!this.c[t]){let e=this.b[t].AttachmentID;this.b[t].Positioner>-1&&(e=this.b[t].Positioner),e<0&&(e=19);let i=this.a.cq(e);if(this.c[t]=new jo,this.c[t].d=i,this.c[t].c=i?i.b:-1,0==this.b[t].ModelType){let e={type:ir.PATH,id:this.b[t].Model,parent:this.a,shoulder:-1};const i=new Ih(this.a.renderer,this.a.wowRenderer,this.a.m,e,0,!1,!0,!1);0!=this.b[t].Texture&&(i.F[2]=i.renderer.getTexture(this.b[t].Texture)),this.c[t].e=i}else if(1==this.b[t].ModelType){let e=this.a.p>0?this.a.p:1,i=-1!=this.a.q?this.a.q:0;this.a.p=e,this.a.q=i,this.c[t].ba=new Ko(this.a,this.b[t].InvType,this.b[t].Model,e,i)}else if(2==this.b[t].ModelType){let e={type:ir.NPC,id:this.b[t].Model,parent:this.a,shoulder:-1};this.c[t].e=new Ih(this.a.renderer,this.a.wowRenderer,this.a.m,e,0,!1,!0,!1)}}if(!(0!=this.b[t].ModelType||this.c[t].e&&this.c[t].e.d))return;if(!(1!=this.b[t].ModelType||this.c[t].ba&&this.c[t].ba.n))return;if(!(2!=this.b[t].ModelType||this.c[t].e&&this.c[t].e.d))return;let e=Ui();ji(e,e,-this.b[t].Yaw),Xi(e,e,this.b[t].Pitch),qi(e,e,this.b[t].Roll),Hi(e,e,[this.b[t].Scale1,this.b[t].Scale1,this.b[t].Scale1]),Hi(e,e,[this.b[t].Scale2,this.b[t].Scale2,this.b[t].Scale2]);let i=Ui();if(this.c[t].d){let e=this.c[t].d.c;Li(i,i,this.a.as[this.c[t].c].m),Vi(i,i,_i(e[0],e[1],e[2]))}if(Vi(i,i,_i(this.b[t].Offset[0],-this.b[t].Offset[1],this.b[t].Offset[2])),Li(i,i,e),0==this.b[t].ModelType){let e=this.c[t].e;e.setAnimPaused(this.d),e.bH(this.a.ab,i,null,null),e.cr()}else if(1==this.b[t].ModelType)for(let e=0;e=5||e&&e.d&&(i=e.d.c),-1!=e.c){let t=this.a.as[e.c].m;e.e.bH(this.a.ab,t,i,e.f),e.e.cr()}}}}}};class Yo{static a(t,e,i,r,s){let n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];if(!e)return WH.debug("selectBestTexture:","textures are null"),null;for(let t=0;t1||o!=i){if(o<2)continue;c=0}else c=2;let d=1;if(r>0&&h==r)d=0;else if(h>0)continue;let f=1;if(s>0&&l==s)f=0;else if(l>0)continue;n[u+3*(f+2*(c+d))]=a.FileDataId}for(let t=0;t<2;t++)for(let e=0;e<2;e++)for(let i=0;i<2;i++){let r=3*(t+2*(e+2*i));if(n[r]>0){let t;return t={a:n[r],b:n[r+1],c:n[r+2]},t}}if(t){const n=t.cm(i,s,!0);if(n&&0!=n[0])return s=n[0],i=n[1],Yo.a(t,e,i,r,s)}return null}static b(t,e,i,r,s,n){let a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(let t=0;t1||h!=r){if(h<2)continue;d=0}else d=2;let f=1;if(s>0&&l==s)f=0;else if(l>0)continue;let b=1;if(n>0&&u==n)b=0;else if(u>0)continue;let g=1;if(-1==i||c!=i){if(-1!=c&&-1!=i)continue}else g=0;a[g+2*(b+2*(d+f))]=o.FileDataId}for(let t=0;t<2;t++)for(let e=0;e<2;e++)for(let i=0;i<2;i++)for(let r=0;r<2;r++){let s=r+2*(t+2*(e+2*i));if(a[s])return a[s]}if(t){const a=t.cm(r,n,!1);if(a&&0!=a[0])return n=a[0],r=a[1],Yo.b(t,e,i,r,s,n)}return 0}}const Ko=class{constructor(t,e,i,r,s){this.r=null,this.s=[],WH.debug("Creating item",i),this.a=t,this.b=e,this.t=i,this.u=r,this.v=s,this.e=rr[e],this.f=sr[e],this.i=null,this.j=null,this.k=null,this.l=null,this.g=0,this.h=0,this.n=!1,this.o=!1,this.p=0,this.q=3,this.m=0,i&&this.z()}y(){var t=this;if(t.i){for(let e=0;e0&&(this.f+=2);const i=0!=this.p?this.p:0!=t.Item.ItemVisual?t.Item.ItemVisual:0;if(0!=i){const t=2==this.c?this.d:-1;for(let e=0;e-1&&i.ce){let i=this.a.aE[t[e]];if(this.i[e].c=i.b,this.i[e].d=i,this.s[e]&&this.s[e].b){const t=this.i[e].e;for(let r=0;r-1&&r.c>17,t^=t<<5,this.b=t,t}e(){let t,e=this.d();return this.a.setInt32(0,1065353216|8388607&e),t=2147483648&e?2-this.a.getFloat32(0):this.a.getFloat32(0)-2,t}f(){let t=this.d();return this.a.setInt32(0,1065353216|8388607&t),this.a.getFloat32(0)-1}};const $o=class{constructor(){this.a=0,this.b=0,this.c=0,this.d=0,this.e=bi(),this.f=0,this.g=0,this.h=0,this.i=0,this.j=0}};const Qo=class{constructor(t,e){this.b=t,this.c=e,this.a=new $o}d(){return this.a.d+this.b.e()*this.c.u}e(){return this.a.d+this.c.u}f(){return this.a.c+this.c.s}g(t){return this.a.c+30518509e-12*t*this.c.s}h(){let t=this.a.a;return t*=1+this.a.b*this.b.e(),t}i(){return this.a}j(t){pi(t,this.a.e)}};const th=class extends Qo{k(t,e){let i,r=e*this.b.f(),s=this.b.e();i=s<1?s>-1?Math.trunc(32767*s+.5):-32767:32767,t.d=i;let n=this.g(i);n<.001&&(n=.001),t.b=function(t,e){let i=Math.abs(t),r=Math.abs(e);return Number((i-Math.floor(i/r)*r).toPrecision(8))*Math.sign(t)}(r,n),t.e=65535&this.b.d(),mi(t.a,this.b.e()*this.a.g*.5,this.b.e()*this.a.h*.5,0);let a=this.h(),o=this.a.f;if(o<.001){let e=this.a.i*this.b.e(),i=this.a.j*this.b.e(),r=Math.sin(e),s=Math.sin(i),n=Math.cos(e),o=Math.cos(i);mi(t.c,o*r*a,s*r*a,n*a)}else{let e=bi();pi(e,t.a),e[2]=e[2]-o,gi(e)>1e-4&&(Mi(e,e),wi(t.c,e,a))}}};const eh=class extends Qo{constructor(t,e,i){super(t,e),this.ba=i}k(t,e){let i,r=e*this.b.f(),s=this.b.e();i=s<1?s>-1?Math.trunc(32767*s+.5):-32767:32767,t.d=i;let n=this.g(i);n<.001&&(n=.001),t.b=function(t,e){let i=Math.abs(t),r=Math.abs(e);return Number((i-Math.floor(i/r)*r).toPrecision(8))*Math.sign(t)}(r,n),t.e=65535&this.b.d();let a=this.a.h-this.a.g,o=this.a.g+a*this.b.f(),h=this.a.i*this.b.e(),l=this.a.j*this.b.e(),u=Math.cos(h),c=_i(u*Math.cos(l),u*Math.sin(l),Math.sin(h));wi(t.a,c,o);let d=this.h(),f=this.a.f,b=_i(.5,.5,.5);0==f?this.ba?mi(b,0,0,1):mi(b,u*Math.cos(l),u*Math.sin(l),Math.sin(h)):(mi(b,0,0,f),vi(b,t.a,b),gi(b)>1e-4&&Mi(b,b)),wi(t.c,b,d)}};const ih=class{constructor(t){this.a=t.getInt32(),this.b=t.getUint32(),this.c=_i(t.getFloat(),t.getFloat(),t.getFloat()),this.d=t.getInt16(),this.e=t.getInt16(),268435456&this.b&&(this.f=[0,0,0],this.f[0]=31&this.e,this.f[1]=this.e>>5&31,this.f[2]=this.e>>10&31),this.g=t.getUint8(),this.h=t.getUint8(),this.i=t.getUint16(),this.j=t.getUint16(),this.k=t.getUint16(),this.l=t.getUint16(),this.m=new rs(t,Jr),this.n=new rs(t,Jr),this.o=new rs(t,Jr),this.p=new rs(t,Jr),this.q=new rs(t,Zr),this.r=new rs(t,Jr),this.s=t.getFloat(),this.t=new rs(t,Jr),this.u=t.getFloat(),this.v=new rs(t,Jr),this.w=new rs(t,Jr),this.x=new rs(t,Jr),this.y=new es(t),this.z=new is(t),this.A=new ts(t),this.B=[t.getFloat(),t.getFloat()],this.C=new is(t),this.D=new is(t),this.E=t.getFloat(),this.F=t.getFloat(),this.G=t.getFloat(),this.H=[t.getFloat(),t.getFloat()],this.I=t.getFloat(),this.J=t.getFloat(),this.K=t.getFloat(),this.L=t.getFloat(),this.M=t.getFloat(),this.N=t.getFloat(),this.O=_i(t.getFloat(),t.getFloat(),t.getFloat()),this.P=_i(t.getFloat(),t.getFloat(),t.getFloat()),this.Q=_i(t.getFloat(),t.getFloat(),t.getFloat()),this.R=t.getFloat(),this.S=t.getFloat(),this.T=t.getFloat(),this.U=t.getFloat(),this.V=t.getFloat();var e=t.getInt32();this.W=new Array(e);for(var i=0;i>16&255)/255,(t>>8&255)/255,(255&t)/255,(t>>24&255)/255)}const uh=[0,0,1,2,3,4];const ch=class{constructor(t,e){this.d=null,this.G=0,this.T=!0,this.V=null,this.a=(new Date).getTime(),this.b=t;let i=new ih(e);if(i.i>=11&&i.i<=13){let e;t.w.Item&&t.w.Item.ParticleColor?e=t.w.Item.ParticleColor:t.w.Creature&&t.w.Creature.ParticleColor&&(e=t.w.Creature.ParticleColor),e&&(this.J=[dr(),dr(),dr()],br(this.J[0],lh(e.Start[i.i-11])),br(this.J[1],lh(e.Mid[i.i-11])),br(this.J[2],lh(e.End[i.i-11])))}this.c=i,this.e=Ui(),this.f=Ui(),this.g=Ui(),this.h=Ui(),this.i=dr(),this.j=Fr(),this.k=bi(),this.l=1,this.m=bi(),this.n=0,this.o=bi(),this.p=bi(),this.q=[],this.r=bi(),this.s=0,this.u=0,this.v=0,this.w=0,this.x=bi(),this.y=bi(),this.z=0,this.A=0,this.B=0,this.C=0,this.D=0,this.E=0,this.F=0,this.H=[],this.I=[];for(let t=0;t>=1}while(a);if(this.C=o,this.D=s-1,this.B=0,(32768&this.c.b)>0){let t=(this.A+1)*this.L.d();this.B=t/4294967296|0}this.E=1/s,this.F=1/n;let h=!1;(269484032&this.c.b)>0?(h=!!(1&this.c.b>>28),this.s=h?2:3):this.s=0;let l=!1,u=!1;(268435456&this.c.b)>0?u=(1073741824&this.c.b)>0:1048576&this.c.b||(l=!(1&this.c.b)),2==this.s||4==this.s&&h?this.t=u?3:2:3==this.s?this.t=5:this.t=l?1:0,this.M=i.g>1,this.N=this.b.wowRenderer.createM2ParticleVertexBuffer(224e3),this.O=this.b.wowRenderer.createM2IndexBuffer(8e3),this.P=this.b.wowRenderer.createM2ParticleVAO(this.N,this.O)}W(){var t=this;t.b=null,t.c.c=null,t.c.O=null,t.c.P=null,t.c.m=t.c.m.e(),t.c.n=t.c.n.e(),t.c.o=t.c.o.e(),t.c.p=t.c.p.e(),t.c.q=t.c.q.e(),t.c.r=t.c.r.e(),t.c.t=t.c.t.e(),t.c.v=t.c.v.e(),t.c.w=t.c.w.e(),t.c.x=t.c.x.e(),t.c.X=t.c.X.e(),t.c.y=t.c.y.d(),t.c.z=t.c.z.d(),t.c.A=t.c.A.d(),t.c.C=t.c.C.d(),t.c.D=t.c.D.d(),t.q=null}X(t){this.d=t}Y(){if(this.V)return;this.b.renderer.context;if(!this.S)if(this.S=[null,null,null],268435456&this.c.b)for(let t=0;t-1&&e-1&&this.c.e1&&(n=1/255),r.uAlphaTreshold=n;const a=e.createM2ParticleMaterial(this.b.bd,new Fo(!1,!this.b.bg,i,!0,!1,15),new Uo(this.S.map((t=>t&&t.f)),r));this.V=e.createM2Mesh(new zo(this.P,0,0),a,0,this.c.j)}Z(t,e){if(!this.K)return;let i=Ui(),r=this.K.i(),s=!0;this.c.X.c(t.b.a)&&(s=this.c.X.d(t,this.b.bf)>0),this.U=s;const n=_i(0,0,0);s&&(r.a=this.c.m.d(t,this.b.bf,0),r.b=this.c.n.d(t,this.b.bf,0),r.i=this.c.o.d(t,this.b.bf,0),r.j=this.c.p.d(t,this.b.bf,0),this.c.q.d(t,this.b.bf,n,r.e),r.c=this.c.r.d(t,this.b.bf,0),r.d=this.c.t.d(t,this.b.bf,0),r.h=this.c.w.d(t,this.b.bf,0),r.g=this.c.v.d(t,this.b.bf,0),this.d?r.f=this.d.a:r.f=this.c.x.d(t,this.b.bf,0)),Li(i,i,this.b.ab),Li(i,i,this.b.as[this.c.d].m);let a=Ui();Wi(a,_i(this.c.c[0],this.c.c[1],this.c.c[2])),Li(i,i,a),Li(i,i,nh);let o=Ui(),h=bi();Gi(o,this.b.renderer.viewMatrix),Yi(h,o),this.ac(e,i,h,null,this.b.renderer.viewMatrix),this.am(this.b.renderer.viewMatrix),this.N.uploadData(new Float32Array(this.H)),this.O.uploadData(new Uint16Array(this.I)),this.V&&(this.V.d=6*this.G|0,this.V.e=0)}aa(t){if(this.q.length<=0)return;if(this.V||this.Y(),!this.V)return;if(!t&&this.V.b.getBlendMode()>Ro.GxBlend_AlphaKey)return;this.b.wowRenderer.getDevice().drawMesh(this.V)}ab(t,e){if(!(16&this.c.b))for(let i=0;i0){let e=bi();if(Yi(e,this.e),16384&this.c.b){vi(this.p,e,this.m);let i=this.u*(gi(this.p)/t)+this.v;i>=0&&(i=Math.min(i,1)),wi(this.o,this.p,i)}if(64&this.c.b){this.w+=t;let i=.03;if(this.w>i)if(this.w=0,0==this.q.length){let t=i/this.w,r=bi();vi(r,e,this.m);let s=t*this.c.I;Ti(this.x,r,_i(s,s,s))}else mi(this.x,0,0,0)}this.ae(t)}}ad(t,e,i){if(pi(this.y,e),null==i||16&this.c.b)Oi(this.e,t);else{let e=Ui();Gi(e,i),Li(this.e,e,t)}let r=bi();Ki(r,t),this.l=r[0]}ae(t){if((t=Math.max(t,0))<.1)pi(this.o,this.p);else{let e=Math.floor(t/.1);t=-.1*e+t;let i=Math.min(Math.floor(this.K.i().lifespan/.1),e),r=i+1,s=1;s=r<0?(1&r|r>>1)+(1&r|r>>1):r,wi(this.o,this.p,1/s);for(let t=0;tMath.max(this.K.g(r.e),.001)?(this.ak(i),i--):this.al(r,t,e)||(this.ak(i),i--),i++}}ag(t,e){t.a=bi(),t.b=bi(),t.c=bi(),t.d=0;let i=_i(e,e,e),r=e*e*.5,s=_i(r,r,r);Ti(t.a,this.c.Q,i);let n=bi();this.K.j(n),Ti(t.b,n,i),Ti(t.c,n,s),t.d=this.c.J*e}ah(t){if(!this.U&&this.T)return;let e=this.K.d();for(this.z=this.z+t*e;this.z>1;)this.ai(t),this.z-=1}ai(t){let e=this.aj();if(this.K.k(e,t),!(16&this.c.b)){let t=fr(e.a[0],e.a[1],e.a[2],1),i=fr(e.c[0],e.c[1],e.c[2],0);Tr(t,t,this.e),Tr(i,i,this.e),pi(e.a,t),pi(e.c,i),8192&this.c.b&&(e.a[2]=0)}if(64&this.c.b){let t=1+this.K.i().speedVariation*this.L.e(),i=bi();wi(i,this.x,t),xi(e.c,e.c,i)}if(this.s>=2)for(let t=0;t<2;t++){e.f[t][0]=this.L.f(),e.f[t][1]=this.L.f();let n=Er();kr(n,this.c.aa[t],this.L.e()),i=e.g[t],r=n,s=this.c.Z[t],i[0]=r[0]+s[0],i[1]=r[1]+s[1]}var i,r,s}aj(){let t=new rh;return this.q.push(t),t}ak(t){this.q.splice(t,1)}al(t,e,i){if(this.s>=2)for(let i=0;i<2;i++){let r=t.f[i][0]+e*t.g[i][0];t.f[i][0]=r-Math.floor(r),r=t.f[i][1]+e*t.g[i][1],t.f[i][1]=r-Math.floor(r)}xi(t.c,t.c,i.a),16384&this.c.b&&2*e0)return!1}else{let i=bi();if(Yi(i,this.e),vi(e,t.a,i),Ci(e,s)>0)return!1}}return!0}am(t){if(this.H.length=0,0==this.q.length&&null!=this.K)return;Gi(this.g,t),Dr(Fr(),t),this.an(null,t);let e=0;for(let t=0;t=ah)break}this.G=e}an(t,e){var i,r,s;16&this.c.b?Li(this.h,e,this.e):null!=t?Li(this.h,e,t):Oi(this.h,e),Yi(this.i,e),4096&this.c.b&&(Dr(this.j,this.h),16&this.c.b&&Math.abs(this.l)>0&&(i=this.j,r=this.j,s=1/this.l,i[0]=r[0]*s,i[1]=r[1]*s,i[2]=r[2]*s,i[3]=r[3]*s,i[4]=r[4]*s,i[5]=r[5]*s,i[6]=r[6]*s,i[7]=r[7]*s,i[8]=r[8]*s),mi(this.k,this.j[6],this.j[7],this.j[8]),Ai(this.k)<=2.3841858e-7?mi(this.k,0,0,1):Mi(this.k,this.k))}ao(t){let e=0,i=0;if(0!=this.c.K||0!=this.c.N){let r=new Jo(t.e);e=0==this.c.L?this.c.K:this.c.K+r.e()*this.c.L,i=0==this.c.N?this.c.M:this.c.M+r.e()*this.c.N}else e=this.c.K,i=this.c.M;return{deltaSpin:i,baseSpin:e}}ap(t,e){let i=this.c.G,r=this.c.H,s=r[0],n=r[1]-s,a=0,o=t.e,h=t.b;if((i<1||0!=n)&&(a=127&h*this.c.F+o),i=1&&(r=1);let n=_i(255,255,255),a=Mr(1,1),o=1,h=e.c;this.c.y.i(r,n,h.b,this.J),this.J||wi(h.b,h.b,1/255),this.c.A.i(r,a,h.a),h.e=this.c.z.i(r,32767)/32767,this.d?h.f=this.d.d.i(r,0)/32767:h.f=0;let l=0;this.c.C.a.length>0?(o=0,h.c=this.c.C.i(r,o),h.c=this.A&h.c+this.B):65536&this.c.b?(l=(this.A+1)*s.d(),h.c=l/4294967296|0):h.c=0,o=0,h.d=this.c.D.i(r,o),h.d=h.d+this.B&this.A;let u=1;524288&this.c.b?(u=Math.max(1+s.e()*this.c.B[1],99999997e-12),h.a[0]=Math.max(1+s.e()*this.c.B[0],99999997e-12)*h.a[0]):(u=Math.max(1+s.e()*this.c.B[0],99999997e-12),h.a[0]=u*h.a[0]),h.a[1]=u*h.a[1]}ar(t,e){let i=Mr((e.c.c&this.D)*this.E,(e.c.c>>this.C)*this.F),r=0,s=0,n=this.ao(t);r=n.baseSpin,s=n.deltaSpin;let a=0,o=_i(0,0,0),h=_i(0,0,0),l=!1,u=!1;if(4&this.c.b&&Ai(t.c)>2.3841858e-7)if(a=1,4096&this.c.b)l=!0;else{let i=fr(-t.c[0],-t.c[1],-t.c[2],0);Tr(i,i,this.h);let r=bi();pi(r,i);let s=0,n=Ai(r);s=n<=2.3841858e-7?0:1/Math.sqrt(n);let a=bi();pi(a,r),wi(a,a,s),pi(o,a),wi(o,o,e.c.a[0]),h=_i(a[1],-a[0],0),wi(h,h,e.c.a[1]),u=!0,l=!1}if((4096&this.c.b||l)&&!u){let i=Fr();c=i,d=this.j,c[0]=d[0],c[1]=d[1],c[2]=d[2],c[3]=d[3],c[4]=d[4],c[5]=d[5],c[6]=d[6],c[7]=d[7],c[8]=d[8];let n=e.c.a[0];if(a){let r=0,s=_i(-t.c[0],-t.c[1],-t.c[2]),a=Ai(s);r=a<=2.3841858e-7?0:1/Math.sqrt(a),Rr(i,this.j,function(t,e,i,r,s,n,a,o,h){var l=new fi(9);return l[0]=t,l[1]=e,l[2]=i,l[3]=r,l[4]=s,l[5]=n,l[6]=a,l[7]=o,l[8]=h,l}(s[0]*r,s[1]*r,0,-s[1]*r,s[0]*r,0,0,0,1)),r>2.3841858e-7&&(n=e.c.a[0]*(1/Math.sqrt(Ai(t.c))/r))}if(this.s,mi(o,i[0],i[1],i[2]),wi(o,o,n),mi(h,i[3],i[4],i[5]),wi(h,h,e.c.a[1]),s=h[0],u=!0,0!=this.c.M||0!=this.c.N){let e=r+s*t.b;512&this.c.b&&1&t.e&&(e=-e);let i=bi();pi(i,this.k),this.s;let n=Fr(),a=Br();Ir(a,i,e),function(t,e){var i=e[0],r=e[1],s=e[2],n=e[3],a=i+i,o=r+r,h=s+s,l=i*a,u=r*a,c=r*o,d=s*a,f=s*o,b=s*h,g=n*a,_=n*o,p=n*h;t[0]=1-c-b,t[3]=u-p,t[6]=d+_,t[1]=u+p,t[4]=1-l-b,t[7]=f-g,t[2]=d-_,t[5]=f+g,t[8]=1-l-c}(n,a),Di(o,o,n),mi(h,s,h[1],h[2]),Di(h,h,n)}}var c,d;if(!u)if(0!=this.c.M||0!=this.c.N){let i=r+s*t.b;512&this.c.b&&1&t.e&&(i=-i);let n=Math.cos(i),a=Math.sin(i);mi(o,n,a,0),wi(o,o,e.c.a[0]),mi(h,-a,n,0),wi(h,h,e.c.a[1]),134217728&this.c.b&&xi(e.a,e.a,_i(h[0],h[1],0))}else mi(o,e.c.a[0],0,0),mi(h,0,e.c.a[1],0);return this.at(o,h,e.a,e.c.b,e.c.e,e.c.f,i[0],i[1],t.f),0}as(t,e){let i=Mr((e.c.d&this.D)*this.E,(e.c.d>>this.C)*this.F),r=_i(0,0,0),s=_i(0,0,0),n=this.c.E;1024&this.c.b&&(n=Math.min(t.b,n));let a=dr();wi(a,t.c,-1),a[3]=0,Tr(a,a,this.h),wi(a,a,n);let o=_i(a[0],a[1],0);if(Ci(o,o)>1e-4){let t=1/gi(o);kr(e.c.a,e.c.a,t),Sr(o,o,e.c.a),s=_i(-o[1],o[0],0),wi(r,a,.5),xi(e.a,e.a,r)}else r=_i(.05*e.c.a[0],0,0),s=_i(0,.05*e.c.a[1],0);return this.at(r,s,e.a,e.c.b,e.c.e,e.c.f,i[0],i[1],t.f),1}at(t,e,i,r,s,n,a,o,h){const l=[-1,-1,1,1],u=[1,-1,1,-1],c=[0,0,1,1],d=[0,1,0,1];let f=bi(),b=Er(),g=Er(),_=Er();for(let p=0;p<4;p++)mi(f,0,0,0),yi(f,f,t,l[p]),yi(f,f,e,u[p]),xi(f,f,i),Cr(b,c[p]*this.E+a,d[p]*this.F+o),Cr(g,c[p]*this.c.Y[0]+h[0][0],d[p]*this.c.Y[0]+h[0][1]),Cr(_,c[p]*this.c.Y[1]+h[1][0],d[p]*this.c.Y[1]+h[1][1]),this.H.push(f[0]),this.H.push(f[1]),this.H.push(f[2]),this.H.push(r[0]),this.H.push(r[1]),this.H.push(r[2]),this.H.push(s),this.H.push(b[0]),this.H.push(b[1]),this.H.push(g[0]),this.H.push(g[1]),this.H.push(_[0]),this.H.push(_[1]),this.H.push(n)}};const dh=class{constructor(t){var e=this;e.a=t.getFloat(),e.b=t.getFloat(),e.c=t.getFloat(),e.d=new is(t)}};const fh=class{constructor(t){this.buffer=new DataView(t),this.position=0}getBool(){var t=0!=this.buffer.getUint8(this.position);return this.position+=1,t}getUint8(){var t=this.buffer.getUint8(this.position);return this.position+=1,t}getInt8(){var t=this.buffer.getInt8(this.position);return this.position+=1,t}getUint16(){var t=this.buffer.getUint16(this.position,!0);return this.position+=2,t}getInt16(){var t=this.buffer.getInt16(this.position,!0);return this.position+=2,t}getUint32(){var t=this.buffer.getUint32(this.position,!0);return this.position+=4,t}getInt32(){var t=this.buffer.getInt32(this.position,!0);return this.position+=4,t}getFloat(){var t=this.buffer.getFloat32(this.position,!0);return this.position+=4,t}getString(t){void 0===t&&(t=this.getUint16());for(var e="",i=0;i0){i.j=new Array(r);for(let t=0;t0){i.k=new Array(r);for(let t=0;t>1)+(1&e|e>>1));let r=i*this.l+this.G.b;this.p.b=r;let s=t/this.I,n=s;2147483648&s&&(s=1&s|s>>1,n=s+s,r=this.p.b);let a=n*this.m+this.G.a;this.p.a=a,this.p.d=r+this.l,this.p.c=a+this.m}}ao(t,e,i){let r,s=this.i[2*this.d],n=this.i[2*this.d+1],a=bi();wi(a,this.v,1-e),vi(a,this.x,a),wi(s.a,a,e),wi(a,this.u,e),xi(a,this.w,a),wi(a,a,1-e),xi(s.a,s.a,a),wi(a,this.v,1-e),vi(a,this.z,a),wi(n.a,a,e),wi(a,this.u,e),xi(a,this.y,a),wi(a,a,1-e),xi(n.a,n.a,a),this.c[this.d]=t,r=i,this.d=this.d+r,this.d>=this.c.length&&(this.d-=this.c.length)}ap(t,e){if(this.a.Y)return;let i=bi(),r=1;i=this.U.l.d(t,this.a.bf,i),r=this.U.m.d(t,this.a.bf),this.am(i[0],i[1],i[2]),this.ai(r/32767);let s=this.U.n.d(t,this.a.bf);this.ah(s);let n=this.U.o.d(t,this.a.bf);this.ag(n);let a=this.U.p.d(t,this.a.bf);this.an(a);let o=this.U.q.d(t,this.a.bf,1);this.ad(0!=o);let h=Ui();$i(h,this.a.ab,this.a.as[this.U.b].m),Vi(h,h,this.U.c);let l=bi();this.ak(h,l,null),this.aq(e,!1)}aq(t,e){let i,r,s,n,a,o,h,l,u,c,d,f,b,g,_,p,m,x,v,T,w,y,A,E,M,C,S,k,F,D,R,B,I,U,O,P,z,N,G,L,V,H,q,X,j,W,Z,Y;for(this.N||this.C>0&&(t=1/this.C+99999997e-12),t>=0?this.D<=t&&(t=this.D):t=0,x=this.e;x!=this.d&&!(t+this.c[x]<=this.D);x=this.e)this.e=this.ar(this.e,1);if(!e&&this.M&&this.L&&this.J){R=t*this.C+this.f,Y=this.F,this.aj();let e=!1;if(U=0,R<1?e=!0:(Z=this.f,I=1/(R-Z),m=Math.floor(R-1),U=Math.ceil(Math.max(m,0))),-1==U||e);else for(B=1,x=1;D=this.d,N=this.i.length,this.i[2*D].b=Y,v=2*this.d+1,G=this.i.length,this.i[v].b=Y,this.ao((x-Z)*I*-t,(x-Z)*I,1),-1!=--U;x=B)B+=1,Z=this.f;T=Math.floor(R),this.f=R-T,this.ao(0,1,0),F=this.d,L=this.i.length,w=this.i[2*F],y=this.p.b,w.c[1]=this.p.a,w.c[0]=y,A=2*this.d+1,V=this.i.length,E=this.i[A],M=this.p.b,E.c[1]=this.p.c,E.c[0]=M,k=this.d,H=this.i.length,this.i[2*k].b=Y,C=2*this.d+1,q=this.i.length,this.i[C].b=Y}this.A[2]=34028235e31,this.A[1]=34028235e31,this.A[0]=34028235e31,this.B[2]=-34028235e31,this.B[1]=-34028235e31,this.B[0]=-34028235e31,O=this.e;for(let e=this.e;e!=this.d;O=e)p=2*e,W=this.i.length,S=O,z=this.i[2*e],i=p+1,r=this.i[2*e+1],s=(this.S+this.S)*this.c[S]*t+t*this.S*t,z.a[2]=z.a[2]+s,r.a[2]=s+r.a[2],n=z.a[0],a=this.A[0],a>z.a[0]&&(a=z.a[0],this.A[0]=n,n=z.a[0]),o=z.a[1],h=this.A[1],h>o&&(h=z.a[1],this.A[1]=o,o=z.a[1]),l=z.a[2],u=this.A[2],u>l&&(u=z.a[2],this.A[2]=l,l=z.a[2]),n>this.B[0]&&(this.B[0]=n),o>this.B[1]&&(this.B[1]=o),l>this.B[2]&&(this.B[2]=l),c=r.a[0],a>r.a[0]&&(this.A[0]=c,c=r.a[0]),d=r.a[1],h>d&&(this.A[1]=d,d=r.a[1]),f=r.a[2],u>f&&(this.A[2]=f,f=r.a[2]),c>this.B[0]&&(this.B[0]=c),d>this.B[1]&&(this.B[1]=d),f>this.B[2]&&(this.B[2]=f),X=this.c.length,this.c[S]=t+this.c[S],b=this.l,j=this.c.length,g=b*this.c[S]*this.k+this.p.b,z.c[1]=this.p.a,z.c[0]=g,r.c[1]=this.p.c,r.c[0]=g,_=this.c.length,P=O+1,e=P-_,_>P&&(e=P);this.N=!0}ar(t,e){let i=e+t;t=i;let r=this.c.length;return i>=r&&(t=i-r),t}as(t,e,i,r,s,n){let a,o,h,l,u,c,d,f;d=Math.ceil(t),f=Math.max(.25,e),a=Math.ceil(f*d),o=Math.ceil(Math.max(a+1+1,0)),this.c=new Array(o),this.e=0,this.d=0,this.f=0,this.J=!1,this.i=new Array(2*o);for(let t=0;t>1)+(1&n|n>>1)),this.l=(r.d-r.b)/h,l=s,2147483648&s&&(l=(1&s|s>>1)+(1&s|s>>1)),this.m=(r.c-r.a)/l,this.n=1/this.l,this.o=1/this.m,this.C=d,this.D=f,mr(i,i,1/255),this.F=i,this.G=r,this.H=s,this.I=n,this.P=0,u=0*this.l+this.G.b,this.p.b=u,c=0*this.m+this.G.a,this.p.a=c,this.p.d=u+this.l,this.p.c=c+this.m,this.Q=10,this.R=10,this.S=0,this.M=!0,this.L=!0,this.K=!0,this.W=this.a.wowRenderer.createM2RibbonVertexBuffer(0),this.X=this.a.wowRenderer.createM2IndexBuffer(0),this.Y=this.a.wowRenderer.createM2RibbonVAO(this.W,this.X)}at(){let t=new Array(this.i.length);for(let e=0,i=0;ethis.a.az.length)return null;let r=this.a.az[i];if(!r.f||!r.f.d)return null;let s=t;s>=this.U.k.length&&(s=0);let n=this.a.ay[this.U.k[s]],a=Object.assign({},this.a.be);const o=e.createM2RibbonMaterial(this.a.bd,new Fo(!1,!this.a.bg,_h[n.b],!0,!1,15),new Oo([r.f],a));return e.createM2RibbonMesh(new zo(this.Y,0,0),o,0,0)}av(t){if(this.af())return;const e=this.a.wowRenderer.getDevice();for(let i=0;iRo.GxBlend_AlphaKey)continue;let r=this.d>this.e?2*(this.d-this.e)+2:2*(this.c.length+this.d-this.e)+2;this.Z[i].d=r,this.Z[i].e=2*this.e*2,e.drawMesh(this.Z[i])}}},vh="precision mediump float;\n\nuniform float x;\nuniform float y;\nuniform float width;\nuniform float height;\n\nattribute vec2 aTextCoord;\nvarying vec2 vTextCoords;\nvoid main() {\n vTextCoords = aTextCoord;\n\n vec2 pos = vec2(\n (x + aTextCoord.x*width)* 2.0 - 1.0,\n (y + aTextCoord.y*height)* 2.0 - 1.0\n );\n\n gl_Position = vec4(pos.x, pos.y, 0, 1);\n}";class Th{constructor(){this.a=null,this.b=null,this.c=null}d(){null!=this.a&&this.a.i(),null!=this.b&&this.b.i(),null!=this.c&&this.c.i()}e(){return!(this.a&&!this.a.h())&&(!(this.b&&!this.b.h())&&!(this.c&&!this.c.h()))}}class wh{constructor(){this.a=null,this.b=null,this.c=null,this.d={},this.i=new li,this.j=null,this.k=null}}const yh={uDiffuseTexture:null,uSpecularTexture:null,uEmissiveTexture:null};class Ah{constructor(t,e,i){this.width=e,this.height=i,this.a=null,this.b=null,this.c=null,this.d=null,this.e=null,this.g=!1,this.f=t,this.e=function(t){let e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,new Uint8Array([0,0,0,0])),t.bindTexture(t.TEXTURE_2D,null);let i=t.createTexture();t.bindTexture(t.TEXTURE_2D,i),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,new Uint8Array([0,0,0,255])),t.bindTexture(t.TEXTURE_2D,null);let r=new wh;return r.j=e,r.k=i,r.a=$e(t,[vh,"precision mediump float;\n\nvarying vec2 vTextCoords;\nuniform sampler2D uDiffuseTexture;\nuniform sampler2D uSpecularTexture;\nuniform sampler2D uEmissiveTexture;\nuniform sampler2D renderResultTexture;\nuniform int uBlendMode;\nuniform vec2 screenResolution;\nuniform int layer;\n\nuniform float diffuseTexWidth;\nuniform float diffuseTexHeight;\n\nfloat overlayBlend(float a, float b) {\n if (b > 0.5) {\n return (1.0 - (1.0 - 2.0 * (a - 0.5)) * (1.0 - b));\n } else {\n return ((2.0 * a) * b);\n }\n}\n\nfloat alphaStraightBlend(float a, float b, float alpha) {\n return (a * alpha) + (b * (1.0 - alpha));\n}\n\nvoid main() {\n vec2 l_texCoord = vTextCoords.xy;\n\n\n l_texCoord.x = max(min(l_texCoord.x, (diffuseTexWidth-0.5)/diffuseTexWidth), 0.5/diffuseTexWidth);\n l_texCoord.y = max(min(l_texCoord.y, (diffuseTexHeight-0.5)/diffuseTexHeight), 0.5/diffuseTexHeight);\n\n vec4 diffuse = texture2D( uDiffuseTexture, l_texCoord );\n vec4 backGround = texture2D( renderResultTexture, gl_FragCoord.xy / screenResolution );\n\n if (uBlendMode == 1) {\n // Blit (we do nothing?)\n //if (diffuse.a < 0.001) discard;\n\n //vec4 finalColor = diffuse;\n\n //diffuse = vec4(finalColor.rgb, finalColor.a);\n } else if (uBlendMode == 2) {\n // Multiply\n if (diffuse.a < 0.001) discard;\n\n vec4 multTexture = diffuse;\n vec3 finalColor = (backGround.rgb * multTexture.rgb);\n\n diffuse = vec4(finalColor.rgb, 1.0);\n } else if (uBlendMode == 3) {\n // Overlay\n if (diffuse.a < 0.001) discard;\n\n vec4 overlayTex = diffuse;\n\n vec3 finalColor = vec3(\n overlayBlend(overlayTex.r, backGround.r),\n overlayBlend(overlayTex.g, backGround.g),\n overlayBlend(overlayTex.b, backGround.b)\n );\n\n vec3 mainTexVisible = backGround.rgb * (1.0 - overlayTex.a);\n vec3 overlayTexVisible = finalColor.rgb * (overlayTex.a);\n finalColor = (mainTexVisible + overlayTexVisible);\n\n diffuse = vec4(finalColor, backGround.a);\n } else if (uBlendMode == 5) {\n // AlphaStraight\n vec4 overlayTex = diffuse;\n\n //float alphaMult = 1.0;\n //vec3 finalColor = vec3(\n // alphaStraightBlend(overlayTex.r, backGround.r, alphaMult*overlayTex.a),\n // alphaStraightBlend(overlayTex.g, backGround.g, alphaMult*overlayTex.a),\n // alphaStraightBlend(overlayTex.b, backGround.b, alphaMult*overlayTex.a)\n //);\n vec3 finalColor = overlayTex.rgb * overlayTex.a + backGround.rgb * (1.0 - overlayTex.a);\n\n diffuse = vec4(finalColor.rgb, 1.0);\n } else if (uBlendMode == 0 || uBlendMode == 4 || uBlendMode == 6 || uBlendMode == 7) {\n // default, Screen, InferAlphaBlend, Unknown1\n if (diffuse.a < 0.001) discard;\n\n vec3 finalColor = mix(backGround.rgb, diffuse.rgb, diffuse.a);\n\n diffuse = vec4(finalColor.rgb, 1.0);\n }\n\n gl_FragColor = diffuse;\n}"],null,null),r.b=$e(t,[vh,"precision mediump float;\n\nvarying vec2 vTextCoords;\nuniform sampler2D uDiffuseTexture;\nuniform sampler2D uSpecularTexture;\nuniform sampler2D uEmissiveTexture;\nuniform sampler2D renderResultTexture;\nuniform int uBlendMode;\n\nvoid main() {\n vec4 diffuse = texture2D( uDiffuseTexture, vTextCoords.xy );\n vec4 specular = texture2D( uSpecularTexture, vTextCoords.xy );\n if (diffuse.a < 0.001) discard;\n gl_FragColor = vec4(specular.rgb, 1.0);\n}"],null,null),r.c=$e(t,[vh,"precision mediump float;\n\nvarying vec2 vTextCoords;\nuniform sampler2D uDiffuseTexture;\nuniform sampler2D uSpecularTexture;\nuniform sampler2D uEmissiveTexture;\nuniform sampler2D renderResultTexture;\nuniform int uBlendMode;\nuniform vec2 screenResolution;\nuniform float emissiveAlphaOverride;\nuniform int layer;\n\nvoid main() {\n vec4 diffuse = texture2D( uDiffuseTexture, vTextCoords.xy );\n vec4 emissive = texture2D( uEmissiveTexture, vTextCoords.xy );\n vec4 backGround = texture2D( renderResultTexture, gl_FragCoord.xy / screenResolution );\n\n if (diffuse.a < 0.001) discard;\n// if (emissive.a < 0.001) discard;\n\n //TODO: This is a hack from what was observed in Nightborne texture customization with tatoos.\n //TODO: But Maybe switch should be over layer or something else instead of blend\n float alpha = 1.0;\n\n if (emissiveAlphaOverride > -1.0) {\n alpha = emissiveAlphaOverride;\n } else if (layer <= 1) {\n alpha = 0.0;\n } else {\n alpha = emissive.a;\n }\n\n gl_FragColor = vec4(emissive.rgb, alpha);\n}"],null,null),r.d={},r.f=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,r.f),t.bufferData(t.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,1,1]),t.STATIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),r.e=t.createBuffer(),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,r.e),t.bufferData(t.ELEMENT_ARRAY_BUFFER,new Int16Array([0,1,2,1,3,2]),t.STATIC_DRAW),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null),r.g=t.createFramebuffer(),r.h={loc:t.getAttribLocation(r.a.program,"aTextCoord"),type:t.FLOAT,size:2,offset:0,stride:0},r}(t)}h(){let t=this.f;this.d||(this.d=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.d),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR)),this.a||(this.a=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.a),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR)),this.b||(this.b=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.b),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR)),this.c||(this.c=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.c),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.width,this.height,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.bindTexture(t.TEXTURE_2D,null)),t.bindFramebuffer(t.FRAMEBUFFER,this.e.g),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.a,0),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.b,0),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.c,0),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT),t.useProgram(this.e.b.program),t.bindBuffer(t.ARRAY_BUFFER,this.e.f),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,this.e.e),this.e.i.disableAll(),this.e.i.enable(t,[this.e.h]),t.viewport(0,0,this.width,this.height)}i(t,e,i,r,s,n,a,o){let h=this.f;this.e.d.x=e,this.e.d.y=i,this.e.d.width=r,this.e.d.height=s,this.e.d.diffuseTexWidth=t.a.e,this.e.d.diffuseTexHeight=t.a.f,null==t.b&&null==t.c||(this.g=!0);let l=0;1==n?l=1:4==n?l=2:6==n?l=3:7==n?l=4:9==n?l=5:15==n?l=6:16==n&&(l=7),this.e.d.uBlendMode=l,this.e.d.screenResolution=new Float32Array([this.width,this.height]),this.e.d.uDiffuseTexture=null!=t.a?t.a.c:this.e.j,this.e.d.uSpecularTexture=null!=t.b?t.b.c:this.e.j,this.e.d.uEmissiveTexture=null!=t.c?t.c.c:this.e.k,this.e.d.renderResultTexture=null!=this.d?this.d:this.e.j,this.e.d.layer=a,this.e.d.emissiveAlphaOverride=o,h.disable(h.CULL_FACE),h.disable(h.DEPTH_TEST),h.disable(h.BLEND),h.useProgram(this.e.a.program),h.framebufferTexture2D(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_2D,this.a,0),h.bindTexture(h.TEXTURE_2D,this.d),h.copyTexImage2D(h.TEXTURE_2D,0,h.RGBA,0,0,this.width,this.height,0),h.bindTexture(h.TEXTURE_2D,null),Ze(this.e.a,this.e.d),h.drawElements(h.TRIANGLES,6,h.UNSIGNED_SHORT,0),Ze(this.e.a,yh),h.useProgram(this.e.b.program),h.framebufferTexture2D(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_2D,this.b,0),h.bindTexture(h.TEXTURE_2D,this.d),h.copyTexImage2D(h.TEXTURE_2D,0,h.RGBA,0,0,this.width,this.height,0),h.bindTexture(h.TEXTURE_2D,null),Ze(this.e.b,this.e.d),h.drawElements(h.TRIANGLES,6,h.UNSIGNED_SHORT,0),Ze(this.e.b,yh),h.useProgram(this.e.c.program),h.framebufferTexture2D(h.FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_2D,this.c,0),h.bindTexture(h.TEXTURE_2D,this.d),h.copyTexImage2D(h.TEXTURE_2D,0,h.RGBA,0,0,this.width,this.height,0),h.bindTexture(h.TEXTURE_2D,null),Ze(this.e.c,this.e.d),h.drawElements(h.TRIANGLES,6,h.UNSIGNED_SHORT,0),Ze(this.e.c,yh),h.useProgram(null)}j(){let t=this.f;t.bindFramebuffer(t.FRAMEBUFFER,null),t.bindTexture(t.TEXTURE_2D,null),t.enable(t.CULL_FACE),t.enable(t.DEPTH_TEST)}k(t){if(0==t)return this.a;if(1==t)return this.b;if(2==t)return this.c;throw new Error("unknown usage "+t)}l(){let t=this.f;this.d&&t.deleteTexture(this.d),this.a&&t.deleteTexture(this.a),this.b&&t.deleteTexture(this.b),this.c&&t.deleteTexture(this.c),this.a=null,this.b=null,this.c=null,this.d=null,this.e=null,this.f=null}}class Eh{constructor(t,e){this.a=t,this.b=e}}function Mh(t,e){return t==e||!!t&&(!!e&&(t.b==e.b&&(t.a==e.a||!!t.a&&(!!e.a&&(t.a.a==e.a.a&&(t.a.c==e.a.c&&t.a.b==e.a.b))))))}class Ch{constructor(t,e){this.a=t,this.b=e,this.c={},this.d={}}e(){const t=[];for(let e of this.b.Options)for(let i of e.Choices)for(let e of i.Elements)e.SkinnedModel&&t.push(e.SkinnedModel.CollectionFileDataID);const e=new Set(t),i=this.a.wowRenderer;if(0!=e.size)for(let t of e){let e={type:ir.PATH,id:t,parent:this.a,shoulder:0};this.a.D[t]=new Ih(this.a.renderer,i,this.a.m,e,0,!1,!1,!1)}}f(t){return Yo.a(this.a,this.b.TextureFiles[t],this.a.q,this.a.r,this.a.p)}g(t){WH.debug("applyCustomization options",t),this.a.R=[];for(let t=0;te.Id==t[s].optionId));if(WH.debug("option",n),n){let a=n.Choices.find((e=>e.Id==t[s].choiceId));if(WH.debug("choice",a),a){let s=a.Elements.filter((e=>e.BoneSet&&e.BoneSet.BoneFileDataID&&(0==e.VariationChoiceID||t.some((t=>t.choiceId==e.VariationChoiceID)))));s.length>0&&(e=s[0].BoneSet.BoneFileDataID);let o=a.Elements.filter((e=>e.Material&&(0==e.VariationChoiceID||t.some((t=>t.choiceId==e.VariationChoiceID)))));o.sort(((t,e)=>e.VariationChoiceID-t.VariationChoiceID)),o.forEach((t=>{WH.debug("element material",t);let e=this.f(t.Material.MaterialResourcesID);if(!e)return void WH.debug("element material: can't get texture files for material",t);let s=this.b.TextureLayers.find((e=>e.ChrModelTextureTargetID==t.Material.TextureTarget));if(!s)return void WH.debug("element material: can't get texture layer for material",t);const n=new Eh(e,s.TextureType);Mh(n,this.d[t.Material.TextureTarget])?(i[t.Material.TextureTarget]=this.c[t.Material.TextureTarget],r[t.Material.TextureTarget]=this.d[t.Material.TextureTarget]):(i[t.Material.TextureTarget]=this.a.bR(s.TextureType,e),r[t.Material.TextureTarget]=n)})),a.Elements.filter((e=>e.Geoset&&(0==e.VariationChoiceID||t.some((t=>t.choiceId==e.VariationChoiceID))))).sort(((t,e)=>t.Geoset.GeosetType-e.Geoset.GeosetType||t.Geoset.GeosetID-e.Geoset.GeosetID)).forEach((t=>{WH.debug("element geoset",t),this.a.bT(t.Geoset)})),a.Elements.filter((e=>e.SkinnedModel&&(0==e.VariationChoiceID||t.some((t=>t.choiceId==e.VariationChoiceID))))).forEach((t=>{WH.debug("element skinnedmodel",t);const e=this.a.D[t.SkinnedModel.CollectionFileDataID];e&&e.bU(t.SkinnedModel)}));let h=a.Elements.find((e=>0!=e.CondModelFileDataId&&(0==e.VariationChoiceID||t.some((t=>t.choiceId==e.VariationChoiceID)))));if(24==n.Id||353==n.Id)if(h&&!this.a.c){WH.debug("element condModel",h);const e=this.a.renderer,i=this.a.wowRenderer,r=this.a.a,s=e.models.indexOf(this.a);if(s>-1){e.models.splice(s,1),WH.debug("test 1!",t,e.options,r),e.options.charCustomization=this.a.s;let n=new Ih(e,i,e.options,r,s,!0,!1,!1,h.CondModelFileDataId);return n.s=this.a.s,e.models.push(n),this.a.bi(),void(this.a=n)}}else if(!h&&this.a.c){let e=this.a.renderer;const i=this.a.wowRenderer;let r=this.a.a,s=e.models.indexOf(this.a);if(s>-1){e.models.splice(s,1),WH.debug("test 2!",t,e.options,r),e.options.charCustomization=this.a.s;let n=new Ih(e,i,e.options,r,s,!0,!1,!1);return n.s=this.a.s,e.models.push(n),this.a.bi(),void(this.a=n)}}a.Elements.filter((e=>e.ChrCustItemGeoModifyID&&(0==e.VariationChoiceID||t.some((t=>t.choiceId==e.VariationChoiceID))))).forEach((t=>{WH.debug("element ChrCustItemGeoModify",t),this.a&&this.a.R.push(t.ChrCustItemGeoModifyID)}))}}}if(!this.c[10]){let e=this.b.Options.find((t=>t.Id==this.b.HairStyleOptionId));if(e){let s=e.Choices[1];if(s){let e=s.Elements.filter((e=>e.Material&&10==e.Material.TextureTarget&&(0==e.VariationChoiceID||t.some((t=>t.choiceId==e.VariationChoiceID)))));if(e.length>0){let t=this.f(e[0].Material.MaterialResourcesID);if(t){const s=new Eh(t,0);Mh(s,this.d[e[0].Material.TextureTarget])?(i[e[0].Material.TextureTarget]=this.c[e[0].Material.TextureTarget],r[e[0].Material.TextureTarget]=this.d[e[0].Material.TextureTarget]):(i[e[0].Material.TextureTarget]=this.a.bR(6,t),r[e[0].Material.TextureTarget]=s)}}}}}this.c=i,this.d=r,this.a.bJ(e)}h(){let t=[];for(let e=0;ee.optionId==t.Id))||e.options.push({optionId:t.Id,choiceId:t.Choices[0].Id});return e}}const Sh=function(t,e){const i=Math.abs(t),r=Math.abs(e);return Number((i-Math.floor(i/r)*r).toPrecision(8))*Math.sign(t)},kh=52,Fh=5300,Dh="DressingRoom",Rh="Stand";class Bh{constructor(t,e,i,r,s,n,a,o,h){this.renderer=t,this.wowRenderer=e,this.e=!1,this.g=!1,this.t=0,this.u=null,this.v=null,this.A=!1,this.G=[],this.H=null,this.I={},this.R=[],this.W=-1,this.X=new jr,this.Z=!1,this.aa=!1,this.aq=[],this.aJ=[],this.aK=[],this.aV=Ui(),this.aW=Ui(),this.aX=Ui(),this.aY=!1,this.bZ=null,this.ba=null,this.bb=new Set,this.bc=null,this.bf=[],this.bg=!1;var l=this;if(l.g=n,l.a=r,l.b=s,l.c=h,l.d=!1,l.h=!0,l.i=!0,this.j=!1,l.ae=a,l.m=i,"classic"==l.m.gameDataEnv?(rr[14]=14,rr[15]=15):(rr[14]=22,rr[15]=22),l.k=null,l.n=l.m.mount&&l.m.mount.type==ir.NPC&&l.m.mount.id==l.a.id,l.l=null,l.o=l.m.pet&&l.m.pet.type==ir.NPC&&l.m.pet.id==l.a.id,l.a.type==ir.CHARACTER&&l.m.mount&&l.m.mount.type==ir.NPC&&l.m.mount.id&&(l.m.mount.parent=l,l.k=new Bh(t,e,i,l.m.mount,0,!1,!1,!1)),l.a.type==ir.CHARACTER&&l.m.pet&&l.m.pet.type==ir.NPC&&l.m.pet.id&&(l.m.pet.parent=l,l.l=new Bh(t,e,i,l.m.pet,0,!1,!1,!1)),l.m.extraModels&&!l.a.parent){l.E=[];const r=l.m.extraModels;if(Array.isArray(r))for(let s=0;s{e.y(),t.B.set(i,null)})),t.k&&t.k.bi(),t.k=null,t.l&&t.l.bi(),t.l=null,t.D){for(const e in t.D)t.D[e].bi(),delete t.D[e];t.D=null}t.a=null,t.B=null,t.F=null,t.aN=null,t.N=null,t.ab=null,t.af=null,t.ag=null,t.ah=null,t.boundsSize=null,t.aQ=null,t.aR=null,t.aS=null,t.aT=null}getNumAnimations(){const t=this.k?this.k:this;return t.aq?t.aq.length+1:0}getAnimation(t){const e=this.k?this.k:this;return e.aq&&t>-1&&te.g(t)))}setTPose(t){var e;this.Z=t,null===(e=this.k)||void 0===e||e.setTPose(t)}setAnimNoSubAnim(t){this.aa=t}bp(t){var e;null===(e=this.l)||void 0===e||e.setAnimation(t)}setAnimation(t,e=!0){this.aq&&(this.k&&(this.k.setAnimation(t),t=tr[this.k.a.id]?"StealthStand":"Mount"),this.bI(t,this.X,e),this.B.forEach((e=>{if(e.i)for(let i=0;ie.f(t))))}setAnimationOverride(t,e){var i;if(!this.aq)return;let r=this.X.b.c,s=this.bI(t,this.X);this.X.f=!0,this.X.b.e=!0,s||e{t.q.length=0,t.w=0}))):(this.X.b.c=r,this.X.b.d=e-r)}resetAnimationOverride(t){this.aq&&(this.bI(t,this.X),this.X.f=!1,this.X.b.e=!1,this.X.b.c=0)}getAnimationDuration(t){if(!this.aq)return 0;for(let e=0;e{const e=[parseInt(t[0]),parseInt(t[1])];this.m.items.push(e)})),this.cf(e),this.y=!0}attachList(t){WH.debug("attachList",t);const e=t.split(","),i=[];for(let t=0;t{const e=[parseInt(t[0]),parseInt(t[1])];this.m.items.push(e)})),this.cf(i),this.y=!0}clearSlots(t){WH.debug("clearSlots",t);const e=t.split(",");for(let t=0;t{0!=this.m.items[t].indexOf(parseInt(e))&&i.push(e)})),this.m.items=i}this.ce(),this.y=!0}setShouldersOverride(t){if(WH.debug("setShouldersOverride",t),!t||2!=t.length)return;for(let t=0;t<2;t++){const e=this.C[t];e&&e.y(),this.C[t]=null}for(let e=0;e<2;e++)if(null!=t[e]){const i=new Ko(this,3,t[e],this.p,this.q);let r=0;r=0==e?1:2,i.C(r),this.C[e]=i}const e=this.B.get(3);if(e){let t=3;for(let e=0;e<2;e++)this.C[e]&&(t&=~(1<{if(e.i)for(let i=0;i0?1:0,.7,(4&t.gradFlags)>0?1:0,(8&t.gradFlags)>0?1:0]}bQ(){if(!this.H)return;this.H;const t=this.I;gr(this.aT,this.af[2],this.af[2],this.af[2],1),Tr(this.aT,this.aT,this.aV),gr(this.aU,0,0,1,0),Tr(this.aU,this.aU,this.aX),mi(this.aS,this.aU[0],this.aU[1],this.aU[2]),Mi(this.aS,this.aS),t.u_gradBoundingBox[0]=this.aT[0],t.u_gradBoundingBox[1]=this.aT[1],t.u_gradBoundingBox[2]=this.aT[2],t.u_gradBoundingBox[3]=1/(this.ag[2]-this.af[2]),t.u_gradUpVec[0]=this.aS[0],t.u_gradUpVec[1]=this.aS[1],t.u_gradUpVec[2]=this.aS[2]}bR(t,e){let i=new Th;return e.a>0&&(i.a=this.renderer.getTexture(e.a)),e.b>0&&(i.b=this.renderer.getTexture(e.b)),e.c>0&&(i.c=this.renderer.getTexture(e.c)),i}bS(){if(!this.aY)if(this.a.type!=ir.CHARACTER&&this.a.type!=ir.NPC&&this.a.type!=ir.HUMANOIDNPC||!this.w.Character){if(this.bW(),this.a.type==ir.HELM){const t=this.w;this.ca(t.Item.AttachGeosetGroup[0],27),this.ca(t.Item.AttachGeosetGroup[1],21)}if(this.a.type==ir.SHOULDER){const t=this.w;this.ca(t.Item.AttachGeosetGroup[0],26)}this.A=!1}else this.A=!0,this.aO||(this.y=!0)}bT(t){t&&(this.O[t.GeosetType]=100*t.GeosetType+t.GeosetID)}bU(t){t&&(this.O[t.GeosetType]=100*t.GeosetType+t.GeosetID,this.P[t.GeosetType]=!(1&t.Flags))}bV(t,e,i){if(!this.aw||0==this.aw.length)return!1;let r;for(let s=0;s=t&&r.meshId<=e&&(r.show=i);if(this.aM&&this.aM.length>0)for(let r=0;r=t&&s<=e&&(this.aJ[r].T=i)}return!0}bW(){if(this.bV(0,0,!0),0!=this.T&&(this.bV(1,1699,!1),this.S))for(let t of this.S){let e=100*(t.GeosetIndex+1),i=e+t.GeosetValue;this.bV(e,e+99,!1),this.bV(i,i,!0)}}bX(t){let e=[];for(let t=0;t0?e+t:-2==t?e+0:i,s=this.aw.some((t=>t.meshId==r));r=s||-2==t?r:i,this.bV(r,r,!0)}ca(t,e){if(!this.aw)return;let i=100*e,r=i+this.Q[e]+t,s=this.aw.some((t=>t.meshId==r));r=s?r:100*e+1,this.bV(i,i+99,!1),this.bV(r,r,!0)}cb(){if(!this.A)return;var t=this;if(!t.aw||0==t.aw.length)return;if(0!=this.T)return;for(let e=0;e{if(t&&t.r){let e=t.r;e.bV(0,Fh,!1),1==t.b?(e.cZ(t.k[0],2700),e.cZ(t.k[1],2100)):3==t.b?e.cZ(t.k[0],2600):4==t.b?(e.cZ(t.k[0],800),e.cZ(t.k[1],1e3)):5==t.b||20==t.b?(l&&l.k[0]?e.cZ(-2,800):e.cZ(t.k[0],800),e.cZ(t.k[1],1e3),b&&e.cZ(t.k[2],1300),e.cZ(t.k[3],2200),e.cZ(t.k[4],2800)):6==t.b?e.cZ(t.k[0],1800):7==t.b?(e.cZ(t.k[0],1100),e.cZ(t.k[1],900),b&&e.cZ(t.k[2],1300)):8==t.b?(e.cZ(t.k[0],500),e.cZ(t.k[1],2e3)):10==t.b?(0==t.k[0]&&s&&s.k[0]?e.cZ(-2,400):e.cZ(t.k[0],400),e.cZ(t.k[1],2300)):16==t.b?e.cZ(t.k[0],1500):19==t.b?e.cZ(t.k[0],1200):9==t.b&&e.cZ(t.k[0],2300)}})),t.C.forEach((t=>{if(t&&t.r){let e=t.r;e.bV(0,Fh,!1),e.cZ(t.k[0],2600)}})),t.B.forEach((t=>{if(t&&t.i)for(let e of t.i){if(!e)continue;let i=e.e;1==t.b?(i.ca(t.l[0],27),i.ca(t.l[1],21)):3==t.b?i.ca(t.l[0],26):4==t.b?(i.ca(t.l[0],8),i.ca(t.l[1],10)):5==t.b||20==t.b?(i.ca(t.l[0],8),i.ca(t.l[1],10),i.ca(t.l[2],13),i.ca(t.l[3],22),i.ca(t.l[4],28)):6==t.b?i.ca(t.l[0],18):7==t.b?(i.ca(t.l[0],11),i.ca(t.l[1],9),i.ca(t.l[2],13)):8==t.b?(i.ca(t.l[0],5),i.ca(t.l[1],20)):10==t.b?(i.ca(t.l[0],4),i.ca(t.l[1],23)):16==t.b?i.ca(t.l[0],15):19==t.b?i.ca(t.l[0],12):9==t.b&&i.ca(t.l[0],23)}})),t.C.forEach((t=>{if(t&&t.i)for(let e of t.i){let i=e.e;i.ca(t.l[0],26),t.m>0&&(i.bV(2600,2699,!1),i.ca(t.m,26))}}));if(e&&e.n){const i=e.r||e.i[0],r=t.p,s=0==t.q?e.w:e.x;if(i&&s)for(let e=0;e0)for(let t of e.i){let i=t.e;i.bV(2600,2799,!1),i.ca(e.m,27)}if(i&&i.i&&i.m>0)for(let t of i.i){let e=t.e;e.bV(2600,2699,!1),e.ca(i.m,26)}if(n&&n.i&&n.m>0)for(let t of n.i){let e=t.e;e.bV(1800,1899,!1),e.ca(n.m,18)}let g=0;if(u&&(g|=16),l&&l.k&&l.k[0]){let e=401+l.k[0];t.bV(401,499,!1),t.bV(e,e,!0)}else if(s&&s.k&&s.k[0]){let e=801+s.k[0];t.bV(e,e,!0),l&&l.k&&0==l.k[0]&&(l.f=7,s.f=8,WH.debug("updating sorting for chest/gloves"))}if(!(s||n||h)&&r&&r.k&&r.k[0]){let e=801+r.k[0];t.bV(e,e,!0)}if(u)1048576&u.h||(t.bV(2200,2299,!1),t.bV(2202,2202,!0));else if(s&&s.k&&s.k[3]){let e=2201+s.k[3];t.bV(2200,2299,!1),t.bV(e,e,!0)}let _,p=!1;if(n&&n.k&&n.k[0]&&(p=!!(512&n.h)),f){t.bV(501,599,!1),t.bV(902,999,!1),t.bV(1100,1199,!1),t.bV(1300,1399,!1);let e=1301+s.k[2];t.bV(e,e,!0)}else if(d){t.bV(501,599,!1),t.bV(902,999,!1),t.bV(1100,1199,!1),t.bV(1300,1399,!1);let e=1301+a.k[2];t.bV(e,e,!0)}else if(o&&o.k&&o.k[0]){t.bV(501,599,!1),t.bV(901,901,!0);let e=501+o.k[0];t.bV(e,e,!0)}else{let e;e=a&&a.k&&a.k[1]?901+a.k[1]:901,t.bV(e,e,!0)}_=o&&o.k&&o.k[1]?2e3+o.k[1]:!o||1048576&o.h?2001:2002,t.bV(2001,2099,!1),t.bV(_,_,!0);let m=!1;if(!b&&u&&u.k&&u.k[0]){let e;m=!1,p?(m=!0,e=1203):(m=!0,e=1201+u.k[0]),t.bV(e,e,!0)}else 16&g&&(t.bV(1201,1201,!0),b||(t.bV(1202,1202,!0),m=!0));if(!m&&!f)if(s&&s.k&&s.k[1]){let e=1001+s.k[1];t.bV(e,e,!0)}else if(r&&r.k&&r.k[1]){let e=1001+r.k[1];t.bV(e,e,!0)}if(!f&&a&&a.k&&a.k[0]){let e=a.k[0],i=1101+e,r=this.aw.some((t=>t.meshId==i));e>2?(t.bV(1300,1399,!1),r?t.bV(i,i,!0):t.bV(1301,1301,!0)):m||t.bV(i,i,!0)}if(u&&u.k&&u.k[0]&&this.R.length>0)for(let e of this.R){const i=er[e];if(i&&12==i.GeosetType&&i.Original==u.k[0]+1){t.bV(1200,1299,!1);let e=1200+i.Override;t.bV(e,e,!0);break}}if(c&&c.k&&c.k[0]){t.bV(1500,1599,!1);let e=1501+c.k[0];if(this.R.length>0)for(let t of this.R){const i=er[t];if(i&&15==i.GeosetType&&i.Original==c.k[0]+1){e=1500+i.Override;break}}t.bV(e,e,!0)}if(n&&n.k&&n.k[0]){t.bV(1800,1899,!1);let e=1801+n.k[0];t.bV(e,e,!0)}a||f||d||m||p?t.bV(1400,1499,!1):t.bV(1401,1401,!0);for(const e in this.D){const i=t.D[e];i.bV(0,Fh,!1);for(let t=0;tt.meshId==e))){const e=100*t;this.bV(e,e+99,!1)}}}this.A=!1}cc(){if(!this.y)return;let t=!1;if(this.B.forEach((e=>{if(e.n||e.o){if(e.j)for(let i=0;i{let e=t.e;4!=e&&5!=e&&19!=e||(s=!1,null==t.j&&(s=!0)),7==e&&(n=!1,null==t.j&&(n=!0))}));let a=-1;if(27==this.p)for(let t of i)9==t.BlendMode&&1==t.TextureType&&t.Layer>a&&(a=t.Layer);const o=(h=t=>t.TextureType,i.reduce(((t,e)=>{var i;return(t[i=h(e)]||(t[i]=[])).push(e),t}),{}));var h;for(const t in o){const e=o[t];for(const t of e){const e=this.J.c[t.ChrModelTextureTargetID];if(e&&!e.e())return}}for(const t in o){const i=o[t],h=i[0].TextureType;if(!this.aN[t]){const i=e.find((t=>t.TextureType==h));if(!i){WH.debug("unable to find material info",h);continue}this.aN[t]=new Ah(this.renderer.context,i.Width,i.Height)}const l=this.aN[t];l.h();for(const t of i){let e=-1;t.Layer==a&&(e=0);const i=this.J.c[t.ChrModelTextureTargetID];if(!i)continue;const o=t.TextureSection;if(3!=o&&5!=o||s&&3==o||n&&5==o){let s=0,n=0,a=1,h=1;if(-1!=o&&r){const t=r.find((t=>t.SectionType==o));if(!t){WH.debug("can't find texture section data",o);continue}s=t.X,n=t.Y,a=t.Width,h=t.Height}l.i(i,s,n,a,h,t.BlendMode,t.Layer,e)}}1==h&&52!=this.p&&70!=this.p&&this.cd(l),26!=h||52!=this.p&&70!=this.p||this.cd(l),l.j()}this.z=!0,this.y=!1}cd(t){const e=[];this.B.forEach((t=>{e.push(t)})),e.sort((function(t,e){return t.f-e.f}));const i=this.J.b.TextureSections;for(let r=0;rt.SectionType==r.region));if(!e){WH.debug("can't find texture section data",r.region);continue}const s=new Th;s.a=r.texture,t.i(s,e.X,e.Y,e.Width,e.Height,0,-1,-1)}}}}ce(){if(!this.d)return;let t=(-1==this.M||!this.M)&&null!=this.B.get(22),e=!(-1!=this.L&&this.L||null==this.B.get(13)&&null==this.B.get(21));for(let e of or){let i=this.au[e];i>0&&i0&&i[0],26:t=>2==t.c&&18==t.d?[1]:null};if(this.aE&&this.aF){const s={1:t=>[11],3:t=>[6,5],22:t=>{var e;return(null===(e=r[t.b])||void 0===e?void 0:e.call(r,t))||[2]},21:t=>[1],17:t=>[1],15:t=>[2],25:t=>[1],13:t=>[1],14:t=>[0],23:t=>[2],6:t=>[53],26:t=>[1],16:t=>[57],27:t=>[55]};if(s[t]){const r=s[t](e);for(let s=0;s=0||this.M>=0||this.k)&&ur[t]&&(n=ur[t]),this.L>=0&&21==t&&cr[this.L][t]&&(n=cr[this.L][t]),this.M>=0&&22==t&&cr[this.M][t]&&(n=cr[this.M][t]),15==e.g&&this.M>=0&&22==t&&cr[this.M][e.b]&&(n=cr[this.M][e.b]),n>=this.aF.length||-1==this.aF[n]||i.push(this.aF[n])}}}return i}cj(){var t;if(!this.aY){if(this.aw){for(let t=0;t0&&(null===(s=null===(r=n.w)||void 0===r?void 0:r.Creature)||void 0===s?void 0:s.CreatureCustomizations)){let t=n.J.i(n.w.Creature.CreatureCustomizations);n.setAppearance(t)}else n.J.h();n.y&&n.bS()})),n.w.Creature&&n.w.Creature.Texture&&(n.aO=this.bR(-1,Yo.a(null,n.w.TextureFiles[n.w.Creature.Texture],3,0,0))),n.cl(ir.PATH,e),n.w.Equipment&&n.cf(n.w.Equipment),n.m.items&&n.cf(n.m.items),n.m.shouldersOverride&&n.setShouldersOverride(n.m.shouldersOverride),(null===(i=n.a)||void 0===i?void 0:i.type)!=ir.CHARACTER&&n.w.Character.Race>0){if(n.J&&(null===(s=null===(r=n.w)||void 0===r?void 0:r.Creature)||void 0===s?void 0:s.CreatureCustomizations)){let t=n.J.i(n.w.Creature.CreatureCustomizations);n.s=t}}else n.m.charCustomization&&(n.s=n.m.charCustomization)}else if(e==ir.HELM){let e=1,i=0,r=1;if(n.x&&(e=n.x.p,i=n.x.q,r=n.x.r),t.ComponentModels){let s=t.ComponentModels[0];s&&t.ModelFiles&&t.ModelFiles[s]&&(27==t.Item.InventoryType?n.cl(ir.PATH,t.ModelFiles[s][0].FileDataId):(n.x||t.ModelFiles[s].some((t=>t.Race==e))||(e=t.ModelFiles[s][0].Race),n.cl(ir.PATH,Yo.b(n,t.ModelFiles[s],-1,i,r,e))))}if(t.Textures)for(let e in t.Textures)0!=t.Textures[e]&&(n.F[parseInt(e)]=n.renderer.getTexture(t.Textures[e]))}else if(e==ir.SHOULDER){let e=1,i=0,r=1;if(n.x&&(e=n.x.p,i=n.x.q,r=n.x.r),t.ComponentModels){let s=t.ComponentModels[0],a=t.ComponentModels[1];if(1==n.a.shoulder||void 0===n.a.shoulder&&s){if(s&&t.ModelFiles[s]&&n.cl(ir.PATH,Yo.b(n,t.ModelFiles[s],0,i,r,e)),t.Textures)for(let e in t.Textures)0!=t.Textures[e]&&(n.F[+e]=n.renderer.getTexture(t.Textures[e]))}else if((2==n.a.shoulder||void 0===n.a.shoulder&&a)&&(a&&t.ModelFiles[a]&&n.cl(ir.PATH,Yo.b(n,t.ModelFiles[a],1,i,r,e)),t.Textures2))for(let e in t.Textures2)0!=t.Textures2[e]&&(n.F[+e]=n.renderer.getTexture(t.Textures2[e]))}}else if(e==ir.ITEMVISUAL)n.cl(ir.PATH,t.Equipment[n.b]);else if(e==ir.ITEM){let e=1,i=0,r=1;if(n.x&&(e=n.x.p,i=n.x.q,r=n.x.r),t.ComponentModels){let s=t.ComponentModels[0];s&&t.ModelFiles&&t.ModelFiles[s]&&n.cl(ir.PATH,Yo.b(n,t.ModelFiles[s],-1,i,r,e))}if(t.Textures)for(let e in t.Textures)0!=t.Textures[e]&&(n.F[+e]=n.renderer.getTexture(t.Textures[e]))}else{if(t.StateKit&&this.G.push(new Wo(this,t.StateKit.effects)),t.Creature&&(n.S=t.Creature.CreatureGeosetData,n.T=t.Creature.CreatureGeosetDataID),t.Textures)for(let e in t.Textures)0!=t.Textures[e]&&(n.F[+e]=n.renderer.getTexture(t.Textures[e]));else if(t.ComponentTextures&&n.x){let e=n.x.q;for(let i in t.ComponentTextures){let r=t.TextureFiles[t.ComponentTextures[i]];for(let t=0;t0&&(n.p=t.Character.Race,n.q=t.Character.Gender,n.cl(ir.CHARACTER,t.Character.ChrModelId))}}}co(t){if(!t)return void console.error("Bad buffer for DataView");let e=this,i=new fh(t);if(604210112!=i.getUint32())return void console.log("Bad magic value");if(i.getUint32()<2e3)return void console.log("Bad version");e.am=i.getUint32();var r=i.getUint32(),s=i.getUint32(),n=i.getUint32(),a=i.getUint32(),o=i.getUint32(),h=i.getUint32(),l=i.getUint32(),u=i.getUint32(),c=i.getUint32(),d=i.getUint32(),f=i.getUint32(),b=i.getUint32(),g=i.getUint32(),_=i.getUint32(),p=i.getUint32(),m=i.getUint32(),x=i.getUint32(),v=i.getUint32(),T=i.getUint32(),w=i.getUint32(),y=i.getUint32(),A=i.getUint32(),E=i.getUint32(),M=i.getUint32(),C=i.getUint32(),S=i.getUint32(),k=i.getUint32();let F=new Uint8Array(t,i.position),D=null;try{D=So(F)}catch(t){return void console.log("Decompression error: "+t)}if(D.length0){e.an=new Array(R);for(let t=0;t0){e.ao=new Array(B);for(let t=0;t0){e.ap=new Array(I),e.bf=new Array(I);for(let t=0;t0){e.aq=new Array(U);for(let t=0;t0){e.ar=new Array(O);for(let t=0;t0){e.as=new Array(P);for(let t=0;t0){e.at=new Array(z);for(let t=0;t0){e.au=new Array(N);for(let t=0;t0){e.av=new Array(G);for(let t=0;t0){e.aw=new Array(L);for(let t=0;t0){e.ax=new Array(V);for(let t=0;t0){e.ay=new Array(H);for(let t=0;t0){e.az=new Array(q);for(let t=0;t0){e.aA=new Array(X);for(let t=0;t0){e.aB=new Array(j);for(let t=0;t0){e.aC=new Array(W);for(let t=0;t0){e.aD=new Array(Z);for(let t=0;t0){e.aE=new Array(Y);for(let t=0;t0){e.aF=new Array(K);for(let t=0;t0){e.aG=new Array(J);for(let t=0;t0){e.aH=new Array($);for(let t=0;t<$;++t)e.aH[t]=new qo(i)}i.position=A;var Q=i.getInt32();if(Q>0){e.aI=new Array(Q);for(let t=0;t0){e.aJ=new Array(tt);for(let t=0;t0){e.aL=new Array(et);for(let t=0;t0){e.aM=new Array(it);for(let t=0;t0){e.aK=new Array(rt);for(let t=0;t=0?this.X.b.d:0,e.renderer.delta=i),e.k&&e.k.cr(),Li(this.aV,e.renderer.viewMatrix,e.ab),Gi(this.aW,this.aV),Ni(this.aX,this.aW),e.l&&e.l.cr(),this.G&&this.G.forEach((t=>t.h())),e.V++,i>0&&(e.U=e.renderer.time),this.g&&this.X.b&&this.X.b.b){let t=bi();const r=[4,119,233,242,348,526,527,544,545];[5,143,234,524,525,540,541,556,557].indexOf(this.X.b.b.a)>-1?t=_i(0,-5*i/1e3,0):r.indexOf(this.X.b.b.a)>-1&&(t=_i(0,-3*i/1e3,0));let s=Ui();Wi(s,t),this.cp(s),this.k&&this.k.cp(s);for(const t in this.D){this.D[t].cp(s)}if(e.E)for(let t=0;t-1){let t=i;for(let e=0;e0&&(this.bf[e]%=this.ap[e]);this.cs(this.X,t)}let r=e.aw?e.aw.length:0;this.bb.clear();for(let t=0;tt.K())),e.aP&&e.aP.sort((function(t,e){return t.b!=e.b?t.b-e.b:t.meshId-e.meshId})),e.z=!1,e.aJ&&e.h)for(let t=0;t{if(t){if(2==t.c&&13==t.d){if(21==t.e&&-1!=e.L)return;if(22==t.e&&-1!=e.M)return}t.E()}})),e.C.forEach((t=>{t&&t.i&&t.E()})),e.E)for(let t=0;t{t&&t.r&&e.bX(t.r)})),this.X.b.d=-1,this.e=this.d&&!this.z&&!this.y&&!this.A}cs(t,e){if(t.b.c+=e,t.c.a<0&&!this.aa&&!t.f)if(t.b.b.j>-1){let e=32767*Math.random(),i=0,r=t.b.a,s=this.aq[r];for(i+=s.d;i-1;)r=s.j,s=this.aq[r],i+=s.d;t.c.a=r,t.c.b=this.aq[r],t.c.c=0}else{let e=this.aq.find((e=>e.a==t.b.b.a&&0==e.b));e&&(t.c.a=e.k,t.c.b=e,t.c.c=0)}let i=t.b,r=t.c,s=i.b.i-i.c,n=0,a=null;if(r.a>-1&&(a=this.aq[r.a],n=a.e),n>0&&s0){let i=e/1e3;t.a.c+=e,t.e-=i/this.renderer.crossFadeDuration}if(i.c>=i.b.i)if(r.a>-1&&!i.e){if(r.a>-1)for(;!(32&this.aq[r.a].c)&&(64&this.aq[r.a].c)>0&&(r.a=this.aq[r.a].k,r.b=this.aq[r.a],!(r.a<0)););t.b=r,t.c=new Xr,t.d=1}else i.b.i>0&&(i.c=Sh(i.c,i.b.i))}ct(t){if(!this.aY){var e=this;if(this.x?br(e.ac,this.x.ac):e.ac=fr(1,1,1,1),e.k&&e.k.ct(t),e.d){if(e.l&&e.l.ct(t),e.bZ&&e.aP)if(this.H){if(t)for(let t=0;t{if(i){if(2==i.c&&13==i.d){if(21==i.e&&-1!=e.L)return;if(22==i.e&&-1!=e.M)return}i.D(t)}})),e.C.forEach((e=>{e&&e.i&&e.D(t)})),e.E)for(let i=0;i{i&&i.r&&e.bY(i.r,t)})),this.G&&this.G.forEach((e=>e.k(t)))}}}}const Ih=Bh,Uh={2:"Wowhead",3:"LolKing",6:"HeroKing",7:"DestinyDB"};class Oh{constructor(t){if(!t.type||!Uh[t.type])throw"Viewer error: Bad viewer type given";if(!t.container)throw"Viewer error: Bad container given";if(!t.aspect)throw"Viewer error: Bad aspect ratio given";if(!t.contentPath)throw"Viewer error: No content path given";console.log("Creating viewer with options",t),this.type=t.type,this.container=t.container,this.aspect=parseFloat(t.aspect),this.renderer=null,this.options=t;const e=this.container.width(),i=Math.round(e/this.aspect);this.init(e,i)}destroy(){this.renderer&&this.renderer.destroy(),this.options=null,this.container=null}init(t,e){if(void 0!==typeof window.Uint8Array&&void 0!==typeof window.DataView)try{const t=document.createElement("canvas");if(!(t.getContext("webgl",{alpha:!1})||t.getContext("experimental-webgl",{alpha:!1})))return void console.log("viewer init failed")}catch(t){return void console.log("viewer init failed")}this.mode=1,this.renderer=new xl(this),this.renderer.resize(t,e),this.renderer.init()}setAdaptiveMode(t){this.renderer.setAdaptiveMode(t)}setZoom(t){this.renderer.zoom.target=t}setOffset(t,e){this.renderer.setTranslation(t,e,0)}setFullscreen(t){t?Oh.requestFullscreen(this.renderer.canvas[0]):Oh.exitFullscreen()}method(t,e){return void 0===e&&(e=[]),this.renderer?this.renderer.method(t,[].concat(e)):null}option(t,e){return void 0!==e&&(this.options[t]=e),this.options[t]}static isFullscreen(){return!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}static requestFullscreen(t){document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||(t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?t.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen())}static exitFullscreen(){(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)&&(document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen())}}const Ph=Oh;const zh=class{constructor(t,e,i){this.gl=t,this.size=e,this.canChange=i,this.uploadedOnce=!1,this.buffer=t.createBuffer(),this.size=0}uploadData(t){const e=this.gl;e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,this.buffer),!this.uploadedOnce||this.size 0.0) {\nboneTransformMat = mat4(0.0);\nfor (int i = 0; i < 4; i++) {\nboneTransformMat += getBoneMatrix(aBones[i]) * aBoneWeights[i];\n}\n}\nmat4 viewModelMat = uViewMatrix * uModelMatrix * boneTransformMat;\nmat4 invTranspViewModelMat = transpose(inverse(viewModelMat));\n":"mat4 viewModelMat = uViewMatrix * uModelMatrix;\nmat4 invTranspViewModelMat = uInvTranspViewModelMat;\n")+"vec4 pos = viewModelMat * vec4(aPosition, 1);\nvPosition = pos.rgb;\ngl_Position = uProjMatrix * pos;\nvTexCoord1 = aTexCoord0;\nvTexCoord2 = aTexCoord1;\nvNormal = normalize((invTranspViewModelMat * vec4(aNormal, 0.0)).xyz);\n}\n"}static h(t,e,i){let r=Yh[e];r||(WH.debug("Missing pixel shader def",e),r=Yh[e="PS_Combiners_Opaque_Mod"]);let s="\t\t"+r.slice(1,r.length).join("\n\t\t");for(let t=0;t midValue) {\nval0 = midValue;\nval1 = 1.0;\n}\nfloat lerpValue = clamp(((lum - val0) / (val1 - val0)), 0.0, 1.0);\nvec3 gradColor0 = u_gradGradientColors_0.xyz;\nvec3 gradColor1 = u_gradGradientColors_1.xyz;\nif (lum > midValue) {\ngradColor0 = u_gradGradientColors_1.xyz;\ngradColor1 = u_gradGradientColors_2.xyz;\n}\nvec3 gradientColor = mix(gradColor0, gradColor1, vec3(lerpValue));\nbool flipNormal = ((u_gradGradientColors_0.w > 0.0) && (vNormal.z > 0.0));\nvec3 normal = flipNormal ? -vNormal.xyz : vNormal.xyz;\nvec2 term = vec2(dot(-(vPosition.xyz), normal), dot(normalize(-(vPosition.xyz)), (normal * vec3(0.05, 0.05, 1.0))));\nvec2 invTerm = (vec2(1.0) - clamp(term, 0.0, 1.0));\nvec2 f = (invTerm * invTerm);\nfloat fresnel_rim = pow((f.x + f.y), power);\nbool disableHeightFade = bool(u_gradFlags.x);\nfloat visMod = 0.0;\nvec4 res = _output;\nvec3 distVecTest = vec3(0,0,0);\nif (!(disableHeightFade))\n{\nvec3 distVec = (vPosition - u_gradBoundingBox.xyz);\nfloat _dot = dot(distVec, u_gradUpVec.xyz);\nfloat relHeight = (_dot * u_gradBoundingBox.w);\nbool invertHeightFade = bool(u_gradFlags.w);\ndistVecTest = vec3(relHeight);\nrelHeight = invertHeightFade ? clamp((1.0 - relHeight), 0.0, 1.0) : relHeight;\nfloat visMod = clamp((relHeight * 1.66666663), 0.0, 0.899999976);\nvisMod = (visMod * visMod);\nres = vec4(_output.r, _output.g, _output.b, (_output.w * visMod));\n}\nvec3 lerp = mix(gradientColor, u_gradEdgeColor.xyz, vec3(fresnel_rim));\nfloat multiplyLum = u_mulLum_OpaqMat.x;\nif (bool(multiplyLum))\n{\nres = vec4(lerp.xyz, (res.w * lum));\n}\nelse\n{\nres = vec4(lerp.xyz, res.w);\n}\n_output = mix(_output, res, vec4(u_gradFlags.y));\n_output = vec4(_output.xyz, res.a * _output.a);\n":"")+"gl_FragColor = _output;\n}\n"}}const Zh=[["PS_Combiners_Opaque_Mod2xNA_Alpha","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_AddAlpha","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_AddAlpha_Alpha","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_Mod2xNA_Alpha_Add","VS_Diffuse_T1_Env_T1","HS_T1_T2_T3","DS_T1_T2_T3"],["PS_Combiners_Mod_AddAlpha","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_AddAlpha","VS_Diffuse_T1_T1","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Mod_AddAlpha","VS_Diffuse_T1_T1","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Mod_AddAlpha_Alpha","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_Alpha_Alpha","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_Mod2xNA_Alpha_3s","VS_Diffuse_T1_Env_T1","HS_T1_T2_T3","DS_T1_T2_T3"],["PS_Combiners_Opaque_AddAlpha_Wgt","VS_Diffuse_T1_T1","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Mod_Add_Alpha","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_ModNA_Alpha","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Mod_AddAlpha_Wgt","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Mod_AddAlpha_Wgt","VS_Diffuse_T1_T1","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_AddAlpha_Wgt","VS_Diffuse_T1_T2","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_Mod_Add_Wgt","VS_Diffuse_T1_Env","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_Mod2xNA_Alpha_UnshAlpha","VS_Diffuse_T1_Env_T1","HS_T1_T2_T3","DS_T1_T2_T3"],["PS_Combiners_Mod_Dual_Crossfade","VS_Diffuse_T1","HS_T1","DS_T1"],["PS_Combiners_Mod_Depth","VS_Diffuse_EdgeFade_T1","HS_T1","DS_T1"],["PS_Combiners_Opaque_Mod2xNA_Alpha_Alpha","VS_Diffuse_T1_Env_T2","HS_T1_T2_T3","DS_T1_T2_T3"],["PS_Combiners_Mod_Mod","VS_Diffuse_EdgeFade_T1_T2","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Mod_Masked_Dual_Crossfade","VS_Diffuse_T1_T2","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_Alpha","VS_Diffuse_T1_T1","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Opaque_Mod2xNA_Alpha_UnshAlpha","VS_Diffuse_T1_Env_T2","HS_T1_T2_T3","DS_T1_T2_T3"],["PS_Combiners_Mod_Depth","VS_Diffuse_EdgeFade_Env","HS_T1","DS_T1"],["PS_Guild","VS_Diffuse_T1_T2_T1","HS_T1_T2_T3","DS_T1_T2"],["PS_Guild_NoBorder","VS_Diffuse_T1_T2","HS_T1_T2","DS_T1_T2_T3"],["PS_Guild_Opaque","VS_Diffuse_T1_T2_T1","HS_T1_T2_T3","DS_T1_T2"],["PS_Illum","VS_Diffuse_T1_T1","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Mod_Mod_Mod_Const","VS_Diffuse_T1_T2_T3","HS_T1_T2_T3","DS_T1_T2_T3"],["PS_Combiners_Mod_Mod_Mod_Const","VS_Color_T1_T2_T3","HS_T1_T2_T3","DS_T1_T2_T3"],["PS_Combiners_Opaque","VS_Diffuse_T1","HS_T1","DS_T1"],["PS_Combiners_Mod_Mod2x","VS_Diffuse_EdgeFade_T1_T2","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Mod","VS_Diffuse_EdgeFade_T1","HS_T1_T2","DS_T1_T2"],["PS_Combiners_Mod_Mod_Depth","VS_Diffuse_EdgeFade_T1_T2","HS_T1_T2","DS_T1_T2"]],Yh={PS_Combiners_Add:[1,"_output.rgb = _input.rgb + tex0.rgb;","_output.a = _input.a + tex0.a;"],PS_Combiners_Decal:[1,"_output.rgb = mix(_input.rgb, tex0.rgb, _input.a);","_output.a = _input.a;"],PS_Combiners_Fade:[1,"_output.rgb = mix(tex0.rgb, _input.rgb, _input.a);","_output.a = _input.a;"],PS_Combiners_Mod:[1,"_output.rgb = _input.rgb * tex0.rgb;","_output.a = tex0.a;"],PS_Combiners_Mod2x:[1,"_output.rgb = _input.rgb * tex0.rgb * 2.0;","_output.a = tex0.a * 2.0;"],PS_Combiners_Opaque:[1,"_output.rgb = _input.rgb * tex0.rgb;","_output.a = 1.0;"],PS_Combiners_Add_Add:[2,"_output.rgb = (_input.rgb + tex0.rgb) + tex1.rgb;","_output.a = (_input.a + tex0.a) + tex1.a;"],PS_Combiners_Add_Mod:[2,"_output.rgb = (_input.rgb + tex0.rgb) * tex1.rgb;","_output.a = (_input.a + tex0.a) * tex1.a;"],PS_Combiners_Add_Mod2x:[2,"_output.rgb = (_input.rgb + tex0.rgb) * tex1.rgb * 2.0;","_output.a = (_input.a + tex0.a) * tex1.a * 2.0;"],PS_Combiners_Add_Opaque:[2,"_output.rgb = (_input.rgb + tex0.rgb) * tex1.rgb;","_output.a = _input.a + tex0.a;"],PS_Combiners_Mod_AddNA:[2,"_output.rgb = (_input.rgb * tex0.rgb);","_output.a = tex0.a;","_specular = tex1.rgb;"],PS_Combiners_Mod_Mod:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;","_output.a = tex0.a * tex1.a;"],PS_Combiners_Mod_Mod2x:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;","_output.a = tex0.a * tex1.a * 2.0;"],PS_Combiners_Mod_Add:[2,"_output.rgb = (_input.rgb * tex0.rgb);","_output.a = tex0.a + tex1.a;","_specular = tex1.rgb;"],PS_Combiners_Mod_Mod2xNA:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;","_output.a = tex0.a;"],PS_Combiners_Mod_Opaque:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;","_output.a = tex0.a;"],PS_Combiners_Mod2x_Add:[2,"_output.rgb = (_input.rgb * tex0.rgb) * 2.0 + tex1.rgb;","_output.a = (tex0.a) * 2.0 + tex1.a;"],PS_Combiners_Mod2x_Mod2x:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 4.0;","_output.a = (tex0.a) * tex1.a * 4.0;"],PS_Combiners_Mod2x_Opaque:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;","_output.a = tex0.a * 2.0;"],PS_Combiners_Opaque_Add:[2,"_output.rgb = (_input.rgb * tex0.rgb) + tex1.rgb;","_output.a = _input.a + tex1.a;"],PS_Combiners_Opaque_AddAlpha:[2,"_output.rgb = (_input.rgb * tex0.rgb);","_specular = (tex1.rgb * tex1.a);"],PS_Combiners_Opaque_AddAlpha_Wgt:[2,"_output.rgb = (_input.rgb * tex0.rgb);","_specular = (tex1.rgb * tex1.a) * uTexSampleAlpha.g;"],PS_Combiners_Opaque_AddAlpha_Alpha:[2,"_output.rgb = (_input.rgb * tex0.rgb);","_specular = (tex1.rgb * tex1.a * (1.0 - tex0.a));"],PS_Combiners_Opaque_AddNA:[2,"_output.rgb = (_input.rgb * tex0.rgb) + tex1.rgb;","_output.a = _input.a;"],PS_Combiners_Opaque_Mod:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;","_output.a = tex1.a;"],PS_Combiners_Opaque_Mod2x:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;","_output.a = tex1.a * 2.0;"],PS_Combiners_Opaque_Mod2xNA:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb * 2.0;",""],PS_Combiners_Opaque_Mod2xNA_Alpha:[2,"_output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb * 2.0, tex0.rgb, vec3(tex0.a));",""],PS_Combiners_Opaque_Opaque:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;",""],PS_Combiners_Opaque_Mod2xNA_Alpha_Add:[3,"_output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb * 2.0, tex0.rgb, vec3(tex0.a));","_specular = tex2.rgb * tex2.a * uTexSampleAlpha.b;"],PS_Combiners_Mod_Mod_Mod_Const:[3,"_output.rgb = _input.rgb * (tex0 * tex1 * tex2).rgb;","_output.a = (tex0 * tex1 * tex2).a;"],PS_Combiners_Mod_AddAlpha:[2,"_output.rgb = (_input.rgb * tex0.rgb);","_output.a = tex0.a;","_specular = tex1.rgb * tex1.a;"],PS_Combiners_Mod_AddAlpha_Wgt:[2,"_output.rgb = (_input.rgb * tex0.rgb);","_output.a = tex0.a;","_specular = tex1.rgb * tex1.a * uTexSampleAlpha.g;"],PS_Combiners_Mod_AddAlpha_Alpha:[2,"_output.rgb = _input.rgb * tex0.rgb;","_output.a = (tex0.a + tex1.a * (0.3 * tex1.r + 0.59 * tex1.g + 0.11 * tex1.b));","_specular = tex1.rgb * tex1.a * (1.0 - tex0.a);"],PS_Combiners_Opaque_Mod_Add_Wgt:[2,"_output.rgb = _input.rgb * mix(tex0.rgb, tex1.rgb, vec3(tex1.a));","_specular = (tex0.rgb * tex0.a) * uTexSampleAlpha.r;"],PS_Guild:[3,"_output.rgb = _input.rgb * mix(tex0.rgb * mix(vec3(1.0, 1.0, 1.0), tex1.rgb * vec3(1.0, 1.0, 1.0), vec3(tex1.a)), tex2.rgb * vec3(1.0, 1.0, 1.0), vec3(tex2.a));","_output.a = tex0.a;"],PS_Guild_Opaque:[3,"_output.rgb = _input.rgb * mix(tex0.rgb * mix(vec3(1.0, 1.0, 1.0), tex1.rgb * vec3(1.0, 1.0, 1.0), vec3(tex1.a)), tex2.rgb * vec3(1.0, 1.0, 1.0), vec3(tex2.a));",""],PS_Guild_NoBorder:[2,"_output.rgb = _input.rgb * tex0.rgb * mix(vec3(1.0, 1.0, 1.0), tex1.rgb * vec3(1.0, 1.0, 1.0), vec3(tex1.a));","_output.a = tex0.a;"],PS_Combiners_Opaque_Alpha_Alpha:[2,"_output.rgb = _input.rgb * mix(mix(tex0.rgb, tex1.rgb, vec3(tex1.a)), tex0.rgb, vec3(tex0.a));",""],PS_Combiners_Opaque_Mod2xNA_Alpha_3s:[3,"_output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb * 2.0, tex2.rgb, vec3(tex2.a));"],PS_Combiners_Mod_Add_Alpha:[2,"_output.rgb = _input.rgb * tex0.rgb;","_output.a = (tex0.a + tex1.a);","_specular = tex1.rgb * (1.0 - tex0.a);"],PS_Combiners_Opaque_ModNA_Alpha:[2,"_output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb, tex0.rgb, vec3(tex0.a));",""],PS_Combiners_Opaque_Mod2xNA_Alpha_UnshAlpha:[3,"float glowOpacity = clamp((tex2.a * vec4(1.0, 1.0, 1.0, 1.0).z), 0.0, 1.0); _output.rgb = _input.rgb * mix(tex0.rgb * tex1.rgb * 2.000000, tex0.rgb, vec3(tex0.a)) * (1.0 - glowOpacity);","_specular = tex2.rgb * glowOpacity;"],PS_Combiners_Opaque_Mod2xNA_Alpha_Alpha:[3,"_output.rgb = _input.rgb * mix(mix(tex0.rgb * tex1.rgb * 2.000000, tex2.rgb, vec3(tex2.a)), tex0.rgb, vec3(tex0.a));",""],PS_Combiners_Mod_Depth:[1,"_output.rgb = _input.rgb * tex0.rgb;","_output.a = tex0.a;"],PS_Combiners_Opaque_Alpha:[2,"_output.rgb = _input.rgb * mix(tex0.rgb, tex1.rgb, vec3(tex1.a));",""],Skin:[3,"//Fresnel Rim\nif (uHasSpecEmiss) {\n vec3 emissiveColor = tex2.rgb;\n vec3 emissiveTerm = tex2.rgb;\n if (uHasEmissiveGlowing) {\n vec3 eyeVec_120 = vPosition.xyz;\n vec3 t121 = -(eyeVec_120);\n vec2 term_126 = vec2(dot(t121, vNormal), dot(normalize(t121), (vNormal * vec3(0.0500000007, 0.0500000007, 1.0))));\n vec2 invTerm_128 = (vec2(1.0) - clamp(term_126, 0.0, 1.0));\n vec2 f_129 = (invTerm_128 * invTerm_128);\n float fresnel_rim_133 = pow((f_129.x + f_129.y), 0.600000024);\n vec3 t136 = (tex2.rgb /*+ ((vec3(0.0500000007, 0.0, 0.400000006) * 1.0) * fresnel_rim_133)*/);\n emissiveColor = vec3(t136.r, tex2.g, t136.b);\n\n float t267 = dot(normalize(vNormal), normalize(-(vPosition.xyz)));\n emissiveTerm = mix(vec3(0.0), 2.0*emissiveColor, vec3(pow(clamp(t267, 0.0, 1.0), (( 128.0 * (tex2.a)) + 9.99999975e-006))));\n }\n\n _output.rgb = _input.rgb * tex0.rgb + tex1.rgb + emissiveTerm.rgb;\n} else {\n _output.rgb = _input.rgb * tex0.rgb;\n}\n_output.a = tex0.a; //\n"],PS_Combiners_Mod_Dual_Crossfade:[3,"_output.rgb = _input.rgb * mix(mix(tex0, texture2D(uTexture2,vTexCoord1), vec4(clamp(uTexSampleAlpha.g, 0.000000, 1.000000))), texture2D(uTexture3,vTexCoord1), vec4(clamp(uTexSampleAlpha.b, 0.000000, 1.000000))).rgb;","_output.a = mix(mix(tex0, texture2D(uTexture2,vTexCoord1), vec4(clamp(uTexSampleAlpha.g, 0.000000, 1.000000))), texture2D(uTexture3,vTexCoord1), vec4(clamp(uTexSampleAlpha.b, 0.000000, 1.000000))).a;"],PS_Combiners_Mod_Masked_Dual_Crossfade:[4,"_output.rgb = _input.rgb * mix(mix(tex0, texture2D(uTexture2,texCoord), vec4(clamp(uTexSampleAlpha.g, 0.000000, 1.000000))), texture2D(uTexture3,texCoord), vec4(clamp(uTexSampleAlpha.b, 0.000000, 1.000000))).rgb;","_output.a = mix(mix(tex0, texture2D(uTexture2,texCoord), vec4(clamp(uTexSampleAlpha.g, 0.000000, 1.000000))), texture2D(uTexture3,texCoord), vec4(clamp(uTexSampleAlpha.b, 0.000000, 1.000000))).a * texture(uTexture4,texCoord2).a;"],PS_Combiners_Mod_Mod_Depth:[2,"_output.rgb = (_input.rgb * tex0.rgb) * tex1.rgb;","_output.a = tex0.a * tex1.a;"]},Kh=Wh;const Jh=class{constructor(t){this.gl=t,this.state=new Set}dropAttribState(){const t=this.state;return this.state=new Set,t}enableLocation(t){this.state.has(t)||(this.gl.enableVertexAttribArray(t),this.state.add(t))}disableOldLocations(t){const e=this.gl;[...t].filter((t=>!this.state.has(t))).forEach((t=>e.disableVertexAttribArray(t)))}};const $h=class{};const Qh=class extends Nh{constructor(t,e){super(t,40*e.length/4,!0),this.vertices=e,this.posXbone=bi(),this.posSkinned=_i(0,0,0),this.normalXBone=dr(),this.normalSkinned=fr(0,0,0,0),this.uploadVertexData(e)}doSkinning(t,e){const i=this.vbData;let r=this.vertices.length;for(let s=0;s0){const s=t[r.h[e]];Fi(this.posXbone,r.a,s.m),Tr(this.normalXBone,r.b,s.o),this.posSkinned[0]=this.posSkinned[0]+this.posXbone[0]*i,this.posSkinned[1]=this.posSkinned[1]+this.posXbone[1]*i,this.posSkinned[2]=this.posSkinned[2]+this.posXbone[2]*i,this.normalSkinned[0]=this.normalSkinned[0]+this.normalXBone[0]*i,this.normalSkinned[1]=this.normalSkinned[1]+this.normalXBone[1]*i,this.normalSkinned[2]=this.normalSkinned[2]+this.normalXBone[2]*i,n=!0}}if(n){let t=10*s;i[t++]=this.posSkinned[0],i[t++]=this.posSkinned[1],i[t++]=this.posSkinned[2],i[t++]=this.normalSkinned[0],i[t++]=this.normalSkinned[1],i[t++]=this.normalSkinned[2]}}super.uploadData(this.vbData)}uploadVertexData(t){const e=40*t.length/4;this.vbData=new Float32Array(e);const i=this.vbData,r=t;let s=0;for(let t=0;t0,(2&t)>0,(4&t)>0,(8&t)>0),this.m_colorMask=t)}setVertexBuffer(t){this.m_lastBindVertexBuffer!=t&&(t?t.bind():t.unbind(),this.m_lastBindVertexBuffer=t)}setIndexBuffer(t){this.m_lastBindIndexBuffer!=t&&(t?t.bind():t.unbind(),this.m_lastBindIndexBuffer=t)}setVAO(t){this.m_lastVertexBufferBindings!=t&&(t?t.bind():this.m_lastVertexBufferBindings.unbind(),this.m_lastVertexBufferBindings=t,this.m_lastBindIndexBuffer=null,this.m_lastBindVertexBuffer=null)}setProgram(t){t!=this.m_shaderProgram&&(t&&t.bind(),this.m_shaderProgram=t)}setBlendMode(t){const e=this.gl;switch(0==t?e.disable(e.BLEND):(e.enable(e.BLEND),e.blendEquation(e.FUNC_ADD)),t){case 0:break;case 1:e.blendFuncSeparate(e.ONE,e.ZERO,e.ONE,e.ONE);break;case 2:e.blendFuncSeparate(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE);break;case 3:e.blendFuncSeparate(e.SRC_ALPHA,e.ONE,e.ONE,e.ONE);break;case 4:e.blendFuncSeparate(e.DST_COLOR,e.ZERO,e.ONE,e.ONE);break;case 5:e.blendFuncSeparate(e.DST_COLOR,e.SRC_COLOR,e.ONE,e.ONE);break;case 6:e.blendFuncSeparate(e.DST_COLOR,e.ONE,e.ONE,e.ONE);break;case 10:e.blendFunc(e.ONE,e.ONE);break;case 7:e.blendFuncSeparate(e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE,e.ONE);break;case 8:e.blendFuncSeparate(e.ONE_MINUS_SRC_ALPHA,e.ZERO,e.ONE,e.ONE);break;case 13:e.blendFuncSeparate(e.ONE,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE);break;default:throw 3735927486}}setMaterial(t){this.m_lastMaterial!=t&&(t.bind(this),this.m_lastMaterial=t)}};const pl=class{constructor(t,e){this.gl=t,this.sceneUniforms=e,this.vertexTextureFetchSupported=!1,this.skinningInShaderSupported=!1,this.vaoExt=t.getExtension("OES_vertex_array_object"),this.texFilterAniExt=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),this.texFilterAniExt?(this.aniFilterMax=t.getParameter(this.texFilterAniExt.MAX_TEXTURE_MAX_ANISOTROPY_EXT),WH.debug("Texture anisotropy enabled",this.aniFilterMax)):WH.debug("Texture anisotropy disabled (not supported)"),this.vertexTextureFetchSupported=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0,this.floatTextEXT=t.getExtension("OES_texture_float"),this.skinningInShaderSupported=this.vertexTextureFetchSupported&&null!=this.floatTextEXT,this.skinningInShaderSupported?WH.debug("(float texture) Skinning in shader is supported"):WH.debug("(float texture) Skinning in shader is (not supported) "),this.renderer=new gl(this,e),this.stateTracker=new _l(t)}getContext(){return this.gl}getVaoExt(){return this.vaoExt}getRenderer(){return this.renderer}drawMesh(t){const e=this.stateTracker,i=this.getContext();e.setVAO(t.a),e.setMaterial(t.b),i.drawElements(t.c,t.d,i.UNSIGNED_SHORT,t.e)}beginFrame(){this.stateTracker.clearStates()}endFrame(){this.stateTracker.setVAO(null)}drawMeshes(t){this.beginFrame(),t.forEach((t=>{this.drawMesh(t)})),this.endFrame()}};const ml=class{constructor(t,e){this.renderer=t,this.file=e,this.c=null,this.d=!1,this.e=0,this.f=0,0!=e?(this.b=t.options.contentPath+"textures/"+e+WH.WebP.getImageExtension(),this.a=new Image,this.a.onload=()=>{this.j()},this.a.onerror=()=>{this.a=null},this.g(this.a,this.b)):console.log("Texture file is 0")}g(t,e){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=e=>{var r=new Blob([i.response]);t.src=window.URL.createObjectURL(r)},i.addEventListener("progress",(t=>{const i=this.renderer;i&&t.lengthComputable&&(i.downloads[e]?i.downloads[e].loaded=t.loaded:i.downloads[e]={loaded:t.loaded,total:t.total},i.updateProgress())})),i.addEventListener("load",(()=>{const t=this.renderer;t&&(delete t.downloads[e],t.updateProgress())})),i.send()}h(){return this.d}i(){this.c=null}j(){this.e=this.a.width,this.f=this.a.height,this.c=this.renderer.renderer.createTextureFromImage(this.a),this.d=!0,this.a=null}};const xl=class{constructor(t){this.currFrame=0,this.clearColor=_i(0,0,0),this.addedCss=!1,this.progressShown=!1,this.attributeState=new li,this.gxDevice=null,this.textureCache=new Map,this.crossFadeDuration=.3,this.onContextMenu=function(t){return!1};var e=this;e.viewer=t,e.options=t.options,e.downloads={},e.context=null,e.bgImgLoaded=!1,e.width=0,e.height=0,e.time=0,e.delta=0,e.models=[],e.screenshotDataURL=null,e.makeDataURL=!1,e.screenshotCallback=null,e.azimuth=1.5*Math.PI,e.zenith=Math.PI/2,e.distance=15,e.fov=30,e.zoom={rateStep:.1,rateAccelerationDecay:.4,interpolationRate:.3,range:[.3,4],rateCurrent:0,target:1,current:1},e.zoom.range=e.zoom.range.map((function(t){return Math.log(t)/Math.log(1+e.zoom.rateStep)})),e.translation=_i(0,0,0),e.target=_i(0,0,0),e.eye=_i(0,0,0),e.up=_i(0,0,1),e.lookDir=bi(),e.fullscreen=!1,e.projMatrix=Ui(),e.viewMatrix=Ui(),e.panningMatrix=Ui(),e.viewOffset=bi(),this.addedCss||(this.addedCss=!0,$("head").append(''))}updateProgress(){if(!this.stop){var t=this,e=0,i=0;for(var r in t.downloads)e+=t.downloads[r].total,i+=t.downloads[r].loaded;if(e<=0)t.progressShown&&(t.progressBg.hide(),t.progressBar.hide(),t.progressShown=!1);else{t.progressShown||(t.progressBg.show(),t.progressBar.show(),t.progressShown=!0);var s=i/e;t.progressBar.width(Math.round(t.width*s)+"px")}}}destroy(){var t=this;t.stop=!0,t.canvas&&(t.canvas.detach(),t.progressBg.detach(),t.progressBar.detach(),t.canvas=t.progressBg=t.progressBar=null),t.clearBackground();for(var e=0;e0&&this.models[0]){const i=this.models[0][t];return i?i.apply(this.models[0],e):void WH.debug("Unknown viewer method",t,"args",e)}}else this.setBackground(e[0])}getTime(){return window.performance&&window.performance.now?window.performance.now():Date.now()}draw(t){var e,i=this,r=i.context;for(i.delta=.001*(t-i.time),i.time=t,i.currFrame++,i.updateCamera(),r.bindFramebuffer(r.FRAMEBUFFER,null),r.viewport(0,0,i.width,i.height),r.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],0),r.clear(r.COLOR_BUFFER_BIT|r.DEPTH_BUFFER_BIT),i.bgTexture&&i.program&&(r.useProgram(i.program),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,i.bgTexture),r.uniform1i(i.uTexture,0),r.uniform4f(i.uBGTransform,i.viewer.options.bgPosition[0]||0,i.viewer.options.bgPosition[1]||0,i.viewer.options.bgScale[0]||1,i.viewer.options.bgScale[1]||1),i.options.backgroundRotatation&&(r.uniform1f(i.uRotation,i.options.backgroundRotatation),r.uniform2f(i.uResolution,i.width,i.height)),r.bindBuffer(r.ARRAY_BUFFER,i.vb),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,null),r.enableVertexAttribArray(i.aPosition),r.vertexAttribPointer(i.aPosition,2,r.FLOAT,!1,16,0),r.enableVertexAttribArray(i.aTexCoord),r.vertexAttribPointer(i.aTexCoord,2,r.FLOAT,!1,16,8),r.depthMask(!1),r.disable(r.CULL_FACE),r.blendFunc(r.ONE,r.ZERO),r.drawArrays(r.TRIANGLE_STRIP,0,4),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA),r.enable(r.CULL_FACE),r.depthMask(!0),r.disableVertexAttribArray(i.aPosition),r.disableVertexAttribArray(i.aTexCoord)),e=0;e0)for(t=0;t=0;u--)for(var c=0;c0?1:-1,t.preventDefault(),!1}onMouseUp(t){let e=this;(e.mouseDown||e.rightMouseDown)&&($("body").removeClass("unselectable"),e.mouseDown=!1,e.rightMouseDown=!1)}onMouseMove(t){let e=this;if((e.mouseDown||e.rightMouseDown)&&void 0!==e.mouseX){var i,r;"touchmove"==t.type?(i=t.originalEvent.touches[0].clientX,r=t.originalEvent.touches[0].clientY):(i=t.clientX,r=t.clientY);var s=(i-e.mouseX)/e.width*Math.PI*2,n=(r-e.mouseY)/e.width*Math.PI*2;if(e.mouseDown){1==e.up[2]?e.azimuth-=s:e.azimuth+=s,e.zenith+=n;for(var a=2*Math.PI;e.azimuth<0;)e.azimuth+=a;for(;e.azimuth>a;)e.azimuth-=a;e.zenith<1e-4&&(e.zenith=1e-4),e.zenith>=Math.PI&&(e.zenith=Math.PI-1e-4)}else e.translation[0]+=s,e.translation[1]+=n;e.mouseX=i,e.mouseY=r,t.stopPropagation()}}resize(t,e){var i=this;if(i.width!==t||i.height!==e){if(i.fullscreen||i.viewer.container.css({height:e+"px",position:"relative"}),i.width=t,i.height=e,i.canvas)i.canvas.attr({width:t,height:e}),i.canvas.css({width:t+"px",height:e+"px"}),i.context.viewport(0,0,i.width,i.height);else{if(i.canvas=$(""),i.canvas.attr({width:t,height:e}),i.viewer.container.append(i.canvas),i.context=i.canvas[0].getContext("webgl",{alpha:!0,premultipliedAlpha:!1})||i.canvas[0].getContext("experimental-webgl",{alpha:!0,premultipliedAlpha:!1}),i.progressBg=$("
",{css:{display:"none",position:"absolute",bottom:0,left:0,right:0,height:"10px",backgroundColor:"#000"}}),i.progressBar=$("
",{css:{display:"none",position:"absolute",bottom:0,left:0,width:0,height:"10px",backgroundColor:"#ccc"}}),i.viewer.container.append(i.progressBg),i.viewer.container.append(i.progressBar),!i.context)return alert("No WebGL support, sorry! You should totally use Chrome."),i.canvas.detach(),void(i.canvas=null);const r=[.35,.35,.35,1],s=[1,1,1,1],n=[.35,.35,.35,1],a=bi(),o=bi(),h=bi();Mi(a,[5,-3,3]),Mi(o,[5,5,5]),Mi(h,[-5,-5,-5]);const l={uCameraPos:i.eye,uViewMatrix:i.viewMatrix,uProjMatrix:i.projMatrix,uAmbientColor:r,uPrimaryColor:s,uSecondaryColor:n,uLightDir1:a,uLightDir2:o,uLightDir3:h};this.gxDevice=new pl(i.context,l),this.renderer=this.gxDevice.getRenderer(),i.canvas.on("mousedown touchstart",i.onMouseDown.bind(i)).on("wheel",i.onMouseWheel.bind(i)).on("dblclick",i.onDoubleClick.bind(i)).on("contextmenu",i.onContextMenu.bind(i)),$(window).on("resize",i.onFullscreen.bind(i)),$(document).on("mouseup touchend",i.onMouseUp.bind(i)).on("mousemove touchmove",i.onMouseMove.bind(i)),i.onFullscreen(null)}i.options.background&&i.loadBackground()}}loadBackground(){var t=this,e=t.context;const i=function(){t.vb=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,t.vb),e.bufferData(e.ARRAY_BUFFER,new Float32Array(16),e.DYNAMIC_DRAW);var i,r=t.compileShader(e.VERTEX_SHADER," attribute vec2 aPosition; attribute vec2 aTexCoord; varying vec2 vTexCoord; void main(void) { vTexCoord = aTexCoord; gl_Position = vec4(aPosition, 0, 1); } ");i=t.options.backgroundRotatation?t.compileShader(e.FRAGMENT_SHADER,"\tprecision mediump float; varying vec2 vTexCoord; uniform sampler2D uTexture; uniform vec2 uResolution; uniform vec4 uBGTransform; uniform float uRotation; mat3 getTransform(vec2 pos, vec2 scale, float rotation, vec2 center) { float c = cos(rotation); float s = sin(rotation); return mat3( scale.x * c, scale.x * s, - scale.x * ( c * center.x + s * center.y ) + center.x + pos.x, -scale.y * s, scale.y * c, - scale.y * ( - s * center.x + c * center.y ) + center.y + pos.y, 0.0, 0.0, 1.0 ); } void main(void) { vec2 uv = gl_FragCoord.xy / uResolution.xy; mat3 transform = getTransform(uBGTransform.xy, uBGTransform.zw, uRotation, vec2(0.5)); uv = (vec3(uv, 1.0) * transform).xy; gl_FragColor = texture2D(uTexture, uv);\t}"):t.compileShader(e.FRAGMENT_SHADER," precision mediump float; varying vec2 vTexCoord; uniform sampler2D uTexture; uniform vec4 uBGTransform; void main(void) { gl_FragColor = texture2D(uTexture, vTexCoord.xy * uBGTransform.zw + uBGTransform.xy); } ");var s=e.createProgram();e.attachShader(s,r),e.attachShader(s,i),e.linkProgram(s),e.getProgramParameter(s,e.LINK_STATUS)?(t.vs=r,t.fs=i,t.program=s,t.uTexture=e.getUniformLocation(s,"uTexture"),t.aPosition=e.getAttribLocation(s,"aPosition"),t.aTexCoord=e.getAttribLocation(s,"aTexCoord"),t.uBGTransform=e.getUniformLocation(s,"uBGTransform"),t.uRotation=e.getUniformLocation(s,"uRotation"),t.uResolution=e.getUniformLocation(s,"uResolution")):console.error("Error linking shaders")},r=function(){var i=t.width/t.bgImg.width,r=t.height/t.bgImg.height;const s=[-1,-1,0,r,1,-1,i,r,-1,1,0,0,1,1,i,0];e.bindBuffer(e.ARRAY_BUFFER,t.vb),e.bufferSubData(e.ARRAY_BUFFER,0,new Float32Array(s))};t.bgImg?t.bgImg.loaded&&(t.vb||i(),r()):(t.bgImg=new Image,t.bgImg.crossOrigin="",t.bgImg.onload=function(){var s;null===(s=t.bgImg)||void 0===s||(s.loaded=!0),t.bgImg&&(t.bgTexture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,t.bgTexture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t.bgImg),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),t.vb||i(),r(),t.bgImgLoaded=!0)},t.bgImg.onerror=function(){t.bgImg=null},t.bgImg.src=t.options.contentPath+t.options.background,t.viewer.options.bgPosition=t.options.bgPosition||[0,0],t.viewer.options.bgScale=t.options.bgScale||[1,1])}compileShader(t,e){var i=this.context,r=i.createShader(t);if(i.shaderSource(r,e),i.compileShader(r),!i.getShaderParameter(r,i.COMPILE_STATUS))throw"Shader compile error: "+i.getShaderInfoLog(r);return r}getTexture(t){if(this.textureCache.has(t)){var e=this.textureCache.get(t);if(e.a||e.c)return e}const i=new ml(this,t);return this.textureCache.set(t,i),i}};let vl={Types:ir};const Tl=Object.assign(Ph,{Tools:ci,WebGL:xl,WEBGL:1,WOW:2,FLASH:2,Wow:vl});window.ZamModelViewer=Tl})(); //# sourceMappingURL=viewer.min.js.map