try { (function() { var requirejs,require,define; (function(){function J(d){return ia.call(d)==="[object Function]"}function X(d){return ia.call(d)==="[object Array]"}function Y(d,f,l){for(var j in f)if(!(j in F)&&(!(j in d)||l))d[j]=f[j];return h}function K(d,f,l){d=new Error(f+"\nhttp://requirejs.org/docs/errors.html#"+d);if(l)d.originalError=l;return d}function ja(d,f,l){var j,q,o;for(j=0;o=f[j];j++){o=typeof o==="string"?{name:o}:o;q=o.location;if(l&&(!q||q.indexOf("/")!==0&&q.indexOf(":")===-1))q=l+"/"+(q||o.name);d[o.name]={name:o.name,location:q|| o.name,main:(o.main||"main").replace(ua,"").replace(ka,"")}}}function Z(d,f){if(d.holdReady)d.holdReady(f);else if(f)d.readyWait+=1;else d.ready(true)}function va(d){function f(a){var b,c;for(b=0;c=a[b];b++)if(c==="."){a.splice(b,1);b-=1}else if(c==="..")if(b===1&&(a[2]===".."||a[0]===".."))break;else if(b>0){a.splice(b-1,2);b-=2}}function l(a,b){var c;if(a.charAt(0)===".")if(b){if(r.pkgs[b])b=[b];else{b=b.split("/");b=b.slice(0,b.length-1)}a=b.concat(a.split("/"));f(a);c=r.pkgs[b=a[0]];a=a.join("/"); if(c&&a===b+"/"+c.main)a=b}return a}function j(a,b){var c=a?a.indexOf("!"):-1,e=null,g=b?b.name:null,k=a,n,m;if(c!==-1){e=a.substring(0,c);a=a.substring(c+1,a.length)}if(e)e=l(e,g);if(a){if(e)n=(c=p[e])?c.normalize?c.normalize(a,function(u){return l(u,g)}):l(a,g):"__$p"+g+"@"+a;else n=l(a,g);m=$[n];if(!m){m=h.toModuleUrl?h.toModuleUrl(i,n,b):i.nameToUrl(n,null,b);$[n]=m}}return{prefix:e,name:n,parentMap:b,url:m,originalName:k,fullName:e?e+"!"+n:n}}function q(){var a=true,b=r.priorityWait,c,e;if(b){for(e= 0;c=b[e];e++)if(!v[c]){a=false;break}a&&delete r.priorityWait}return a}function o(a){return function(b){a.exports=b}}function L(a,b,c){return function(){var e=[].concat(wa.call(arguments,0)),g;if(c&&J(g=e[e.length-1]))g.__requireJsBuild=true;e.push(b);return a.apply(null,e)}}function la(a,b){b=L(i.require,a,b);Y(b,{nameToUrl:L(i.nameToUrl,a),toUrl:L(i.toUrl,a),defined:L(i.requireDefined,a),specified:L(i.requireSpecified,a),ready:h.ready,isBrowser:h.isBrowser});if(h.paths)b.paths=h.paths;return b} function xa(a){var b,c,e,g,k,n,m,u=T[a];if(u)for(g=0;c=u[g];g++){b=c.fullName;c=j(c.originalName,c.parentMap);c=c.fullName;e=w[b]||[];k=w[c];if(c!==b){if(b in y){delete y[b];y[c]=true}w[c]=k?k.concat(e):e;delete w[b];for(k=0;k0)){if(r.priorityWait)if(q())C();else return;for(g in v)if(!(g in F)){c=true; if(!v[g])if(b)a+=g+" ";else{e=true;break}}if(c||i.waitCount){if(b&&a){g=K("timeout","Load timeout for modules: "+a);g.requireType="timeout";g.requireModules=a;return h.onError(g)}if(e||i.scriptCount){if((A||qa)&&!da)da=setTimeout(function(){da=0;ca()},50)}else{if(i.waitCount){for(D=0;a=ba[D];D++)pa(a,{});if(ea<5){ea+=1;ca()}}ea=0;h.checkReadyState()}}}}function ra(a,b){var c=b.name,e=b.fullName,g;if(!(e in p||e in v)){G[a]||(G[a]=p[a]);v[e]||(v[e]=false);g=function(k){h.onPluginLoad&&h.onPluginLoad(i, a,c,k);aa({prefix:b.prefix,name:b.name,fullName:b.fullName,callback:function(){return k}});v[e]=true};g.fromText=function(k,n){var m=N;i.loaded[k]=false;i.scriptCount+=1;if(m)N=false;h.exec(n);if(m)N=true;i.completeLoad(k)};G[a].load(c,la(b.parentMap,true),g,r)}}function Ba(a){if(a.prefix&&a.name.indexOf("__$p")===0&&p[a.prefix])a=j(a.originalName,a.parentMap);var b=a.prefix,c=a.fullName,e=i.urlFetched;if(!(y[c]||v[c])){y[c]=true;if(b)if(p[b])ra(b,a);else{if(!O[b]){O[b]=[];(w[b]||(w[b]=[])).push({onDep:function(g){if(g=== b){var k,n=O[b];for(g=0;g0;n--){k=c.slice(0,n).join("/");if(e[k]){c.splice(0,n,e[k]);break}else if(k=g[k]){a=a===k.name?k.location+"/"+k.main:k.location; c.splice(0,n,a);break}}b=c.join("/")+(b||".js");b=(b.charAt(0)==="/"||b.match(/^\w+:/)?"":m.baseUrl)+b}return m.urlArgs?b+((b.indexOf("?")===-1?"?":"&")+m.urlArgs):b}};i.jQueryCheck=U;i.resume=C;return i}function Da(){var d,f,l;if(Q&&Q.readyState==="interactive")return Q;d=document.getElementsByTagName("script");for(f=d.length-1;f>-1&&(l=d[f]);f--)if(l.readyState==="interactive")return Q=l;return null}var Ea=/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,Fa=/require\(["']([^'"\s]+)["']\)/g,ua=/^\.\//,ka=/\.js$/, ia=Object.prototype.toString,x=Array.prototype,wa=x.slice,Ca=x.splice,A=!!(typeof window!=="undefined"&&navigator&&document),qa=!A&&typeof importScripts!=="undefined",Ga=A&&navigator.platform==="PLAYSTATION 3"?/^complete$/:/^(complete|loaded)$/,sa=typeof opera!=="undefined"&&opera.toString()==="[object Opera]",ya="_r@@",F={},H={},V=[],Q=null,Ha=false,ea=0,N=false,h;x={};var ga,s,I,W,z,R,S,D,ha,ta,E,U,da;if(typeof define==="undefined"){if(typeof requirejs!=="undefined")if(J(requirejs))return;else{x= requirejs;requirejs=undefined}if(typeof require!=="undefined"&&!J(require)){x=require;require=undefined}h=requirejs=function(d,f,l){var j="_",q;if(!X(d)&&typeof d!=="string"){q=d;if(X(f)){d=f;f=l}else d=[]}if(q&&q.context)j=q.context;l=H[j]||(H[j]=va(j));q&&l.configure(q);return l.require(d,f)};if(typeof require==="undefined")require=h;h.toUrl=function(d){return H._.toUrl(d)};h.version="0.25.0";h.isArray=X;h.isFunction=J;h.mixin=Y;h.jsExtRegExp=/^\/|:|\?|\.js$/;s=h.s={contexts:H,skipAsync:{},isPageLoaded:!A, readyCalls:[]};if(h.isAsync=h.isBrowser=A){I=s.head=document.getElementsByTagName("head")[0];if(W=document.getElementsByTagName("base")[0])I=s.head=W.parentNode}h.onError=function(d){throw d;};h.load=function(d,f,l){var j=d.loaded;Ha=false;j[f]||(j[f]=false);d.scriptCount+=1;h.attach(l,d,f);if(d.jQuery&&!d.jQueryIncremented){Z(d.jQuery,true);d.jQueryIncremented=true}};define=h.def=function(d,f,l){var j;if(typeof d!=="string"){l=f;f=d;d=null}if(!h.isArray(f)){l=f;f=[]}if(!d&&!f.length&&h.isFunction(l))if(l.length){l.toString().replace(Ea, "").replace(Fa,function(q,o){f.push(o)});f=(l.length===1?["require"]:["require","exports","module"]).concat(f)}if(N){j=ga||Da();if(!j)return h.onError(K("interactive","No matching script interactive for "+l));d||(d=j.getAttribute("data-requiremodule"));j=H[j.getAttribute("data-requirecontext")]}(j?j.defQueue:V).push([d,f,l])};define.amd={multiversion:true,plugins:true,jQuery:true};h.exec=function(d){return eval(d)};h.execCb=function(d,f,l,j){return f.apply(j,l)};h.onScriptLoad=function(d){var f=d.currentTarget|| d.srcElement,l;if(d.type==="load"||Ga.test(f.readyState)){Q=null;d=f.getAttribute("data-requirecontext");l=f.getAttribute("data-requiremodule");H[d].completeLoad(l);f.detachEvent&&!sa?f.detachEvent("onreadystatechange",h.onScriptLoad):f.removeEventListener("load",h.onScriptLoad,false)}};h.attach=function(d,f,l,j,q){var o;if(A){j=j||h.onScriptLoad;o=f&&f.config&&f.config.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");o.type=q||"text/javascript"; o.charset="utf-8";o.async=!s.skipAsync[d];f&&o.setAttribute("data-requirecontext",f.contextName);o.setAttribute("data-requiremodule",l);if(o.attachEvent&&!sa){N=true;o.attachEvent("onreadystatechange",j)}else o.addEventListener("load",j,false);o.src=d;ga=o;W?I.insertBefore(o,W):I.appendChild(o);ga=null;return o}else if(qa){j=f.loaded;j[l]=false;importScripts(d);f.completeLoad(l)}return null};if(A){z=document.getElementsByTagName("script");for(D=z.length-1;D>-1&&(R=z[D]);D--){if(!I)I=R.parentNode; if(S=R.getAttribute("data-main")){if(!x.baseUrl){z=S.split("/");R=z.pop();z=z.length?z.join("/")+"/":"./";x.baseUrl=z;S=R.replace(ka,"")}x.deps=x.deps?x.deps.concat(S):[S];break}}}s.baseUrl=x.baseUrl;h.pageLoaded=function(){if(!s.isPageLoaded){s.isPageLoaded=true;ha&&clearInterval(ha);if(ta)document.readyState="complete";h.callReady()}};h.checkReadyState=function(){var d=s.contexts,f;for(f in d)if(!(f in F))if(d[f].waitCount)return;s.isDone=true;h.callReady()};h.callReady=function(){var d=s.readyCalls, f,l,j;if(s.isPageLoaded&&s.isDone){if(d.length){s.readyCalls=[];for(f=0;l=d[f];f++)l()}d=s.contexts;for(j in d)if(!(j in F)){f=d[j];if(f.jQueryIncremented){Z(f.jQuery,false);f.jQueryIncremented=false}}}};h.ready=function(d){s.isPageLoaded&&s.isDone?d():s.readyCalls.push(d);return h};if(A){if(document.addEventListener){document.addEventListener("DOMContentLoaded",h.pageLoaded,false);window.addEventListener("load",h.pageLoaded,false);if(!document.readyState){ta=true;document.readyState="loading"}}else if(window.attachEvent){window.attachEvent("onload", h.pageLoaded);if(self===self.top)ha=setInterval(function(){try{if(document.body){document.documentElement.doScroll("left");h.pageLoaded()}}catch(d){}},30)}document.readyState==="complete"&&h.pageLoaded()}h(x);if(h.isAsync&&typeof setTimeout!=="undefined"){E=s.contexts[x.context||"_"];E.requireWait=true;setTimeout(function(){E.requireWait=false;E.takeGlobalQueue();E.jQueryCheck();E.scriptCount||E.resume();h.checkReadyState()},0)}}})();/* jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ !function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"== typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e, t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+ M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>> 10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\x00"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length, r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1])if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else{if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n, e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r= [];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e? 1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o, le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&& (n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName), d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID= function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1=== n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length|| v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML=""; var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector|| a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1}, j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e, t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling", first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&& (t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n, r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&& 3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn, D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i; ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"], tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t, "handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&& (Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0=== i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i= N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t, e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&& (f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect(); else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent; return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"}, function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}), S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(e,n){S.fn[n]=function(e,t){return 0|=|<=|>=)\s*(\d+)\s*x\s*(\d+)\s*$/)){b=parseInt(d[2]);var f=parseInt(d[3]);switch(d[1]){case "<":var n=function(q,p){return q":n=function(q,p){return q>p};break;case "=":n=function(q,p){return q==p};break;case "<=":n=function(q,p){return q<=p};break;case ">=":n=function(q,p){return q>=p}}return n(screen.width,b)&&n(screen.height,f)||this.mobile&&n(screen.width, f)&&n(screen.height,b)}return!1}if(m(b)){for(d=0;dM;M++){var ca=G[M];if(b(ca)&&(r.isArray(ca)||r.isArguments(ca))){O||(ca=h(ca,O,S));var fa=0,ha=ca.length;for(Q.length+=ha;ha>fa;)Q[W++]= ca[fa++]}else S||(Q[W++]=ca)}return Q}function g(G){return function(O,S,M){var Q={};return S=q(S,M),r.each(O,function(W,ba){ba=S(W,ba,O);G(Q,W,ba)}),Q}}function b(G){G=X(G);return"number"==typeof G&&0<=G&&U>=G}function d(G){return function(O){return null==O?void 0:O[G]}}function f(G){if(!r.dL(G))return{};if(V)return V(G);t.prototype=G;G=new t;return t.prototype=null,G}function n(G,O){return function(S){var M=arguments.length;if(2>M||null==S)return S;for(var Q=1;M>Q;Q++)for(var W=arguments[Q],ba=G(W), ca=ba.length,fa=0;ca>fa;fa++){var ha=ba[fa];O&&void 0!==S[ha]||(S[ha]=W[ha])}return S}}function q(G,O,S){return null==G?r.identity:r.isFunction(G)?p(G,O,S):r.dL(G)?r.x6a(G):r.mGa(G)}function p(G,O,S){if(void 0===O)return G;switch(null==S?3:S){case 1:return function(M){return G.call(O,M)};case 2:return function(M,Q){return G.call(O,M,Q)};case 3:return function(M,Q,W){return G.call(O,M,Q,W)};case 4:return function(M,Q,W,ba){return G.call(O,M,Q,W,ba)}}return function(){return G.apply(O,arguments)}}function r(G){return G instanceof r?G:this instanceof r?void(this.hF=G):new r(G)}function t(){}function u(G){return function(O,S,M,Q){S=p(S,Q,4);var W=!b(O)&&r.keys(O),ba=(W||O).length,ca=0arguments.length&&(M=O[W?W[ca]:ca],ca+=G);for(var fa=S,ha=M;0<=ca&&ba>ca;ca+=G){var ia=W?W[ca]:ca;ha=fa(ha,O[ia],ia,O)}return ha}}function v(G){return function(O,S,M){S=q(S,M);M=X(O);for(var Q=0Q;Q+=G)if(S(O[Q],Q,O))return Q;return-1}}function w(G,O,S){return function(M,Q,W){var ba=0,ca=X(M);if("number"==typeof W)0< G?ba=0<=W?W:Math.max(W+ca,ba):ca=0<=W?Math.min(W+1,ca):W+ca+1;else if(S&&W&&ca)return W=S(M,Q),M[W]===Q?W:-1;if(Q!==Q)return W=O(A.call(M,ba,ca),r.isNaN),0<=W?W+ba:-1;for(W=0W;W+=G)if(M[W]===Q)return W;return-1}}function x(G,O){var S=L.length,M=G.constructor;M=r.isFunction(M)&&M.prototype||C;var Q="constructor";for(r.has(G,Q)&&!r.contains(O,Q)&&O.push(Q);S--;)Q=L[S],Q in G&&G[Q]!==M[Q]&&!r.contains(O,Q)&&O.push(Q)}var y=this,z=y._,D=Array.prototype,C=Object.prototype,E=D.push, A=D.slice,B=C.toString,J=C.hasOwnProperty,H=Array.isArray,P=Object.keys,T=Function.prototype.bind,V=Object.create;"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=r),exports._=r):y._=r;r.VERSION="1.8.3";var U=Math.pow(2,53)-1,X=d("length");r.each=r.forEach=function(G,O,S){O=p(O,S);var M;if(b(G))for(S=0,M=G.length;M>S;S++)O(G[S],S,G);else{var Q=r.keys(G);S=0;for(M=Q.length;M>S;S++)O(G[Q[S]],Q[S],G)}return G};r.map=function(G,O,S){O=q(O,S);S=!b(G)&&r.keys(G); for(var M=(S||G).length,Q=Array(M),W=0;M>W;W++){var ba=S?S[W]:W;Q[W]=O(G[ba],ba,G)}return Q};r.reduce=u(1);r.reduceRight=u(-1);r.find=r.detect=function(G,O,S){var M;return M=b(G)?r.findIndex(G,O,S):r.I3a(G,O,S),void 0!==M&&-1!==M?G[M]:void 0};r.filter=r.select=function(G,O,S){var M=[];return O=q(O,S),r.each(G,function(Q,W,ba){O(Q,W,ba)&&M.push(Q)}),M};r.reject=function(G,O,S){return r.filter(G,r.negate(q(O)),S)};r.every=r.all=function(G,O,S){O=q(O,S);S=!b(G)&&r.keys(G);for(var M=(S||G).length,Q=0;M> Q;Q++){var W=S?S[Q]:Q;if(!O(G[W],W,G))return!1}return!0};r.some=r.any=function(G,O,S){O=q(O,S);S=!b(G)&&r.keys(G);for(var M=(S||G).length,Q=0;M>Q;Q++){var W=S?S[Q]:Q;if(O(G[W],W,G))return!0}return!1};r.contains=r.includes=r.include=function(G,O,S,M){return b(G)||(G=r.values(G)),("number"!=typeof S||M)&&(S=0),0<=r.indexOf(G,O,S)};r.invoke=function(G,O){var S=A.call(arguments,2),M=r.isFunction(O);return r.map(G,function(Q){var W=M?O:Q[O];return null==W?W:W.apply(Q,S)})};r.pluck=function(G,O){return r.map(G, r.mGa(O))};r.max=function(G,O,S){var M,Q=-1/0,W=-1/0;if(null==O&&null!=G){G=b(G)?G:r.values(G);for(var ba=0,ca=G.length;ca>ba;ba++)S=G[ba],S>Q&&(Q=S)}else O=q(O,S),r.each(G,function(fa,ha,ia){M=O(fa,ha,ia);(M>W||M===-1/0&&Q===-1/0)&&(Q=fa,W=M)});return Q};r.min=function(G,O,S){var M,Q=1/0,W=1/0;if(null==O&&null!=G){G=b(G)?G:r.values(G);for(var ba=0,ca=G.length;ca>ba;ba++)S=G[ba],Q>S&&(Q=S)}else O=q(O,S),r.each(G,function(fa,ha,ia){M=O(fa,ha,ia);(W>M||1/0===M&&1/0===Q)&&(Q=fa,W=M)});return Q};r.K$a= function(G){for(var O=b(G)?G:r.values(G),S=O.length,M=Array(S),Q=0;S>Q;Q++)G=r.random(0,Q),G!==Q&&(M[Q]=M[G]),M[G]=O[Q];return M};r.sample=function(G,O,S){return null==O||S?(b(G)||(G=r.values(G)),G[r.random(G.length-1)]):r.K$a(G).slice(0,Math.max(0,O))};r.sortBy=function(G,O,S){return O=q(O,S),r.pluck(r.map(G,function(M,Q,W){return{value:M,index:Q,tBa:O(M,Q,W)}}).sort(function(M,Q){var W=M.tBa,ba=Q.tBa;if(W!==ba){if(W>ba||void 0===W)return 1;if(ba>W||void 0===ba)return-1}return M.index-Q.index}), "value")};r.groupBy=g(function(G,O,S){r.has(G,S)?G[S].push(O):G[S]=[O]});g(function(G,O,S){G[S]=O});g(function(G,O,S){r.has(G,S)?G[S]++:G[S]=1});r.toArray=function(G){return G?r.isArray(G)?A.call(G):b(G)?r.map(G,r.identity):r.values(G):[]};r.size=function(G){return null==G?0:b(G)?G.length:r.keys(G).length};r.first=r.head=function(G,O,S){return null==G?void 0:null==O||S?G[0]:r.initial(G,G.length-O)};r.initial=function(G,O,S){return A.call(G,0,Math.max(0,G.length-(null==O||S?1:O)))};r.last=function(G, O,S){return null==G?void 0:null==O||S?G[G.length-1]:r.rest(G,Math.max(0,G.length-O))};r.rest=function(G,O,S){return A.call(G,null==O||S?1:O)};r.compact=function(G){return r.filter(G,r.identity)};r.flatten=function(G,O){return h(G,O,!1)};r.without=function(G){return r.difference(G,A.call(arguments,1))};r.uniq=r.unique=function(G,O,S,M){r.isBoolean(O)||(M=S,S=O,O=!1);null!=S&&(S=q(S,M));M=[];for(var Q=[],W=0,ba=X(G);ba>W;W++){var ca=G[W],fa=S?S(ca,W,G):ca;O?(W&&Q===fa||M.push(ca),Q=fa):S?r.contains(Q, fa)||(Q.push(fa),M.push(ca)):r.contains(M,ca)||M.push(ca)}return M};r.union=function(){return r.uniq(h(arguments,!0,!0))};r.intersection=function(G){for(var O=[],S=arguments.length,M=0,Q=X(G);Q>M;M++){var W=G[M];if(!r.contains(O,W)){for(var ba=1;S>ba&&r.contains(arguments[ba],W);ba++);ba===S&&O.push(W)}}return O};r.difference=function(G){var O=h(arguments,!0,!0,1);return r.filter(G,function(S){return!r.contains(O,S)})};r.zip=function(){return r.Fab(arguments)};r.Fab=function(G){for(var O=G&&r.max(G, X).length||0,S=Array(O),M=0;O>M;M++)S[M]=r.pluck(G,M);return S};r.object=function(G,O){for(var S={},M=0,Q=X(G);Q>M;M++)O?S[G[M]]=O[M]:S[G[M][0]]=G[M][1];return S};r.findIndex=v(1);r.J3a=v(-1);r.sortedIndex=function(G,O,S,M){S=q(S,M,1);O=S(O);M=0;for(var Q=X(G);Q>M;){var W=Math.floor((M+Q)/2);S(G[W]) Q;Q++,G+=S)M[Q]=G;return M};r.bind=function(G,O){function S(){return c(G,S,O,this,M.concat(A.call(arguments)))}if(T&&G.bind===T)return T.apply(G,A.call(arguments,1));if(!r.isFunction(G))throw new TypeError("Bind must be called on a function");var M=A.call(arguments,2);return S};r.nja=function(G){function O(){for(var M=0,Q=S.length,W=Array(Q),ba=0;Q>ba;ba++)W[ba]=S[ba]===r?arguments[M++]:S[ba];for(;M=S)throw Error("bindAll must be passed function names");for(O=1;S>O;O++){var M=arguments[O];G[M]=r.bind(G[M],G)}return G};r.memoize=function(G,O){function S(M){var Q=S.cache,W=""+(O?O.apply(this,arguments):M);return r.has(Q,W)||(Q[W]=G.apply(this,arguments)),Q[W]}return S.cache={},S};r.delay=function(G,O){var S=A.call(arguments,2);return setTimeout(function(){return G.apply(null,S)},O)};r.defer=r.nja(r.delay,r,1);r.throttle=function(G,O,S){function M(){fa= !1===S.t6a?0:r.now();ca=null;ba=G.apply(Q,W);ca||(Q=W=null)}var Q,W,ba,ca=null,fa=0;S||(S={});return function(){var ha=r.now();fa||!1!==S.t6a||(fa=ha);var ia=O-(ha-fa);return Q=this,W=arguments,0>=ia||ia>O?(ca&&(clearTimeout(ca),ca=null),fa=ha,ba=G.apply(Q,W),ca||(Q=W=null)):ca||!1===S.$cb||(ca=setTimeout(M,ia)),ba}};r.debounce=function(G,O,S){function M(){var ha=r.now()-ca;O>ha&&0<=ha?Q=setTimeout(M,O-ha):(Q=null,S||(fa=G.apply(ba,W),Q||(ba=W=null)))}var Q,W,ba,ca,fa;return function(){ba=this;W= arguments;ca=r.now();var ha=S&&!Q;return Q||(Q=setTimeout(M,O)),ha&&(fa=G.apply(ba,W),ba=W=null),fa}};r.wrap=function(G,O){return r.nja(O,G)};r.negate=function(G){return function(){return!G.apply(this,arguments)}};r.compose=function(){var G=arguments,O=G.length-1;return function(){for(var S=O,M=G[O].apply(this,arguments);S--;)M=G[S].call(this,M);return M}};r.after=function(G,O){return function(){return 1>--G?O.apply(this,arguments):void 0}};r.before=function(G,O){var S;return function(){return 0< --G&&(S=O.apply(this,arguments)),1>=G&&(O=null),S}};r.once=r.nja(r.before,2);var K=!{toString:null}.propertyIsEnumerable("toString"),L="valueOf isPrototypeOf toString propertyIsEnumerable hasOwnProperty toLocaleString".split(" ");r.keys=function(G){if(!r.dL(G))return[];if(P)return P(G);var O=[],S;for(S in G)r.has(G,S)&&O.push(S);return K&&x(G,O),O};r.uga=function(G){if(!r.dL(G))return[];var O=[],S;for(S in G)O.push(S);return K&&x(G,O),O};r.values=function(G){for(var O=r.keys(G),S=O.length,M=Array(S), Q=0;S>Q;Q++)M[Q]=G[O[Q]];return M};r.invert=function(G){for(var O={},S=r.keys(G),M=0,Q=S.length;Q>M;M++)O[G[S[M]]]=S[M];return O};r.functions=r.methods=function(G){var O=[],S;for(S in G)r.isFunction(G[S])&&O.push(S);return O.sort()};r.extend=n(r.uga);r.PBa=r.assign=n(r.keys);r.I3a=function(G,O,S){O=q(O,S);var M;S=r.keys(G);for(var Q=0,W=S.length;W>Q;Q++)if(M=S[Q],O(G[M],M,G))return M};r.K3=function(G,O,S){var M,Q,W={},ba=G;if(null==ba)return W;r.isFunction(O)?(Q=r.uga(ba),M=p(O,S)):(Q=h(arguments, !1,!1,1),M=function(ja,ka,la){return ka in la},ba=Object(ba));for(var ca=0,fa=Q.length;fa>ca;ca++){var ha=Q[ca],ia=ba[ha];M(ia,ha,ba)&&(W[ha]=ia)}return W};r.defaults=n(r.uga,!0);r.create=function(G,O){G=f(G);return O&&r.PBa(G,O),G};r.clone=function(G){return r.dL(G)?r.isArray(G)?G.slice():r.extend({},G):G};r.tap=function(G,O){return O(G),G};r.d6a=function(G,O){var S=r.keys(O),M=S.length;if(null==G)return!M;G=Object(G);for(var Q=0;M>Q;Q++){var W=S[Q];if(O[W]!==G[W]||!(W in G))return!1}return!0};r.isEqual= function(G,O){return l(G,O)};r.isEmpty=function(G){return null==G?!0:b(G)&&(r.isArray(G)||r.isString(G)||r.isArguments(G))?0===G.length:0===r.keys(G).length};r.isElement=function(G){return!(!G||1!==G.nodeType)};r.isArray=H||function(G){return"[object Array]"===B.call(G)};r.dL=function(G){var O=typeof G;return"function"===O||"object"===O&&!!G};r.each("Arguments Function String Number Date RegExp Error".split(" "),function(G){r["is"+G]=function(O){return B.call(O)==="[object "+G+"]"}});r.isArguments(arguments)|| (r.isArguments=function(G){return r.has(G,"callee")});"function"!=typeof/./&&"object"!=typeof Int8Array&&(r.isFunction=function(G){return"function"==typeof G||!1});r.isFinite=function(G){return isFinite(G)&&!isNaN(parseFloat(G))};r.isNaN=function(G){return r.isNumber(G)&&G!==+G};r.isBoolean=function(G){return!0===G||!1===G||"[object Boolean]"===B.call(G)};r.isNull=function(G){return null===G};r.isUndefined=function(G){return void 0===G};r.has=function(G,O){return null!=G&&J.call(G,O)};r.noConflict= function(){return y._=z,this};r.identity=function(G){return G};r.constant=function(G){return function(){return G}};r.noop=function(){};r.mGa=d;r.x6a=r.matches=function(G){return G=r.PBa({},G),function(O){return r.d6a(O,G)}};r.times=function(G,O,S){var M=Array(Math.max(0,G));O=p(O,S,1);for(S=0;G>S;S++)M[S]=O(S);return M};r.random=function(G,O){return null==O&&(O=G,G=0),G+Math.floor(Math.random()*(O-G+1))};r.now=Date.now||function(){return(new Date).getTime()};H={"&":"&","<":"<",">":">",'"':""", "'":"'","`":"`"};var R=r.invert(H);r.escape=m(H);r.unescape=m(R);r.result=function(G,O,S){O=null==G?void 0:G[O];return void 0===O&&(O=S),r.isFunction(O)?O.call(G):O};var Z=0;r.uniqueId=function(G){var O=++Z+"";return G?G+O:O};r.qab={evaluate:/<%([\s\S]+?)%>/g,R5a:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var da=/(.)^/,aa={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},ea=/\\|'|\r|\n|\u2028|\u2029/g;r.template=function(G,O,S){function M(ca){return ba.call(this, ca,r)}!O&&S&&(O=S);O=r.defaults({},O,r.qab);var Q=0,W="__p+='";G.replace(RegExp([(O.escape||da).source,(O.R5a||da).source,(O.evaluate||da).source].join("|")+"|$","g"),function(ca,fa,ha,ia,ja){return W+=G.slice(Q,ja).replace(ea,k),Q=ja+ca.length,fa?W+="'+\n((__t=("+fa+"))==null?'':_.escape(__t))+\n'":ha?W+="'+\n((__t=("+ha+"))==null?'':__t)+\n'":ia&&(W+="';\n"+ia+"\n__p+='"),ca});W+="';\n";O.AJa||(W="with(obj||{}){\n"+W+"}\n");W="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+ W+"return __p;\n";try{var ba=new Function(O.AJa||"obj","_",W)}catch(ca){throw ca.source=W,ca;}return M.source="function("+(O.AJa||"obj")+"){\n"+W+"}",M};r.chain=function(G){G=r(G);return G.mOa=!0,G};r.mixin=function(G){r.each(r.functions(G),function(O){var S=r[O]=G[O];r.prototype[O]=function(){var M=[this.hF];return E.apply(M,arguments),e(this,S.apply(r,M))}})};r.mixin(r);r.each("pop push reverse shift sort splice unshift".split(" "),function(G){var O=D[G];r.prototype[G]=function(){var S=this.hF; return O.apply(S,arguments),"shift"!==G&&"splice"!==G||0!==S.length||delete S[0],e(this,S)}});r.each(["concat","join","slice"],function(G){var O=D[G];r.prototype[G]=function(){return e(this,O.apply(this.hF,arguments))}});r.prototype.value=function(){return this.hF};r.prototype.valueOf=r.prototype.toJSON=r.prototype.value;r.prototype.toString=function(){return""+this.hF};"function"==typeof define&&define.wcb&&define("pN",[],function(){return r})}).call(this)}).call(a)})();define("underscore-min",function(){}); define("es",["require","underscore-min"],function(a){a("underscore-min");return window.TDV._.noConflict()}); define("pu",["require","exports"],function(){return{F:function(a){return a+"_change"},Ee:"default",fb:"mouseDown",Xb:"mouseMove",Eb:"mouseUp",us:"mouseWheel",pa:"click",wl:"doubleClick",qd:"rollOver",fc:"rollOut",rC:"mouseEnter",Up:"mouseLeave",xl:"pointerOver",Jbb:"pointerOut",Sy:"pointerDown",iH:"pointerUp",Sf:"pointerClick",xKa:"focusIn",yKa:"focusOut",Hy:"gestureStart",j6:"gestureChange",YG:"gestureEnd",GKa:"gestureRotate",ZG:"gestureScale",kc:"progress",UG:"close",OPEN:"open",Zp:"select",uc:"resize", JU:"changing",ba:"change",ze:"stateChange",pk:"cueChange",uC:"preloaded",da:"loaded",xc:"loadingError",bo:"start",Tf:"stop",Ry:"play",hH:"pause",yla:"beforeFrame",Zi:"frame",hd:"ready",NKa:"instanceCreation",Gp:"begin",Gb:"end",vbb:"cancel",Fj:"press",zl:"release",zs:"repeatEnd",Yp:"scroll",nma:"movementChange",ubb:"beforeShow",WJa:"beforeHide",INIT:"init",jd:"show",Zc:"hide",wM:"showEnd",pM:"hideEnd",OKa:"loadingScript",qLa:"processingScript",WG:"enableCookies",SJa:"applicationSet",BC:"userInteraction", ona:"userInteractionStart",nna:"userInteractionEnd",N6:"transitionEnd",DLa:"toolTipShow",dna:"toolTipHide",yl:"positionSet",Yma:"sizeSet",Cla:"controllerConnected",Dla:"controllerDisconnected"}});define("cH",["require","exports"],function(){return function(){return function(a,e){void 0===e&&(e=void 0);this.name=a;this.data=e;this.source=void 0}}()}); define("bt",["require"],function(){return[123,34,70,97,100,101,73,110,69,102,102,101,99,116,34,58,32,256,112,114,111,112,101,114,116,105,101,115,270,272,125,44,32,34,112,97,114,101,110,269,271,34,264,266,268,34,286,288,77,111,260,108,51,68,68,105,115,112,108,97,121,298,267,295,272,289,291,293,319,34,66,97,115,101,79,98,106,318,301,287,34,80,104,111,116,111,65,108,98,117,109,80,314,121,76,311,116,73,116,101,109,284,273,275,277,279,281,283,271,256,109,101,100,105,97,357,34,116,121,277,284,336,338,340, 342,344,356,302,289,348,278,371,373,375,296,337,339,341,343,345,347,315,386,125,383,290,292,294,376,396,349,351,353,355,334,288,396,110,101,304,306,308,330,332,300,364,289,359,278,280,282,371,293,99,305,105,110,103,371,260,102,97,117,108,324,115,114,103,98,34,335,388,101,376,293,345,91,108,431,101,291,287,441,443,93,410,34,117,112,89,387,374,448,296,110,345,98,398,335,260,112,116,104,84,282,319,256,435,437,439,284,116,114,117,101,446,467,376,98,111,111,108,461,104,101,105,103,104,481,372,492,469, 471,473,288,119,105,100,477,466,389,288,470,109,472,114,461,463,90,515,468,517,508,521,383,463,88,525,376,518,520,461,99,327,116,83,104,259,111,119,533,296,494,496,461,97,116,116,97,99,478,111,80,322,403,421,483,438,319,436,108,328,491,516,34,548,497,383,110,111,114,109,97,108,532,421,447,534,528,461,574,576,578,465,581,506,527,519,509,34,586,577,108,524,590,569,535,594,115,512,526,482,101,436,563,376,102,275,403,568,526,34,450,109,91,100,111,117,98,108,490,32,612,111,294,287,98,554,107,460,399,335, 401,323,376,69,120,354,114,110,578,415,101,307,68,418,333,383,81,117,259,72,339,312,339,558,586,97,577,79,118,278,348,77,97,112,371,274,276,424,362,357,400,559,324,654,656,658,112,660,97,662,664,666,114,348,73,577,103,101,326,328,461,86,605,111,51,54,48,82,282,622,114,99,606,422,674,361,426,421,115,623,280,116,625,115,85,82,76,546,288,115,487,431,433,335,311,85,690,486,488,101,383,625,666,566,725,34,291,114,315,91,699,260,701,703,705,115,707,709,76,101,740,635,335,103,97,431,434,608,484,319,49,615, 583,593,529,335,542,115,65,117,368,111,764,609,485,271,487,489,769,547,495,572,678,402,324,748,101,750,704,706,117,708,101,756,740,461,405,632,99,107,326,521,421,673,360,425,363,320,632,114,326,806,103,275,117,110,100,67,496,575,310,292,268,105,629,742,618,91,338,114,105,122,629,553,108,287,689,280,538,108,759,726,354,112,541,543,545,600,616,571,461,328,625,268,367,83,850,852,621,854,320,582,787,549,400,348,499,259,818,107,820,622,823,825,108,575,82,551,831,814,256,869,288,744,746,602,114,848,34, 859,318,862,850,87,512,514,855,376,575,91,893,287,360,709,294,895,816,66,575,260,114,884,368,117,887,505,601,584,872,315,874,100,865,544,83,274,455,100,742,893,858,850,915,114,917,919,105,921,936,925,335,727,101,112,876,878,822,824,826,114,828,318,831,110,833,518,835,575,838,840,578,843,675,846,895,897,861,929,864,542,866,79,290,99,105,373,946,771,858,648,898,975,950,940,917,83,838,710,889,595,947,726,987,974,863,950,930,119,657,837,839,294,578,756,432,903,868,591,997,985,383,973,354,989,951,633, 953,880,956,884,280,111,922,996,891,121,907,528,895,100,798,885,832,904,507,1017,637,873,934,1004,979,554,982,121,984,536,1018,976,853,932,292,259,1052,603,1055,866,86,970,1010,293,103,1013,888,1015,937,1054,950,1048,981,983,1041,592,1053,1044,927,934,991,278,943,945,1078,1016,1080,288,313,1082,259,1004,881,575,742,429,882,772,999,860,1020,1002,851,977,544,66,108,798,1086,1030,1071,998,570,291,1084,114,1096,809,1014,569,1099,1097,926,121,928,1004,1064,361,846,1011,1068,104,1060,1101,896,1E3,1104, 939,916,278,1120,1098,956,938,1003,1107,1005,965,1008,841,1133,1069,923,616,1072,335,816,1075,1050,1136,461,1092,122,1127,1046,1149,1006,966,1009,108,1154,1135,1088,1158,849,950,901,513,1174,1122,616,906,908,32,910,323,895,1165,928,1118,1144,1088,1124,1137,1190,934,1179,1155,996,1184,528,909,278,911,116,913,1117,1142,114,993,122,995,1114,1043,288,914,1023,821,1025,1100,1027,886,742,1032,1034,771,1189,1045,875,1210,1212,1214,924,1216,1138,1103,899,950,1163,1073,1106,853,1193,1182,376,1195,986,1238, 1021,952,1220,955,1100,742,906,1226,1195,93,287,1259,461,1218,819,1253,1245,1070,569,1257,114,745,1033,1259,1261,956,972,939,1219,879,1254,1097,1088,1270,1272,91,1274,32,1262,1126,1128,1149,742,857,1290,934,72,500,502,504,1201,114,1227,520,1204,799,912,1147,1022,1265,1280,1120,1223,1029,1225,1271,892,1035,1308,1297,501,503,1256,1302,1185,1187,1307,1018,1139,1239,951,1210,1112,1241,948,1329,1251,1279,954,1120,958,830,1040,1246,296,834,836,1170,841,969,1131,578,1277,1148,853,1109,1111,259,944,1113, 1235,1090,896,1062,544,1161,1077,1344,1079,603,1336,1105,1004,1057,934,1334,1091,1230,100,1366,1051,1175,1115,1197,1094,1149,1356,918,1358,1087,1368,1089,1370,1250,1105,1320,1299,1323,1303,278,1305,1206,1229,1093,100,1252,1311,956,1341,1028,961,1088,1346,1151,967,842,32,844,105,971,1308,1192,1146,1194,1146,1242,1118,1233,1376,1237,988,1372,1149,1267,1156,1247,1425,1081,1166,875,1338,1221,1282,1391,1284,746,1287,1289,948,850,1360,1157,1115,1019,1330,1129,1065,1172,1067,1200,1215,1362,684,604,1410, 1429,1454,1021,1380,1241,790,639,296,85,73,825,109,684,413,403,383,793,795,752,754,800,757,648,672,423,713,887,1471,560,288,1482,1484,798,755,1487,572,335,405,350,727,408,356,421,1487,294,922,727,276,371,311,68,608,278,292,935,783,736,1054,291,504,1515,1517,1271,367,735,489,383,472,103,763,421,1526,266,1528,1520,32,784,737,335,293,1540,256,1537,1518,1529,1521,1531,1493,324,696,329,331,333,637,1490,813,371,366,368,370,1088,77,367,369,938,551,1234,616,834,1512,112,277,100,457,553,361,432,909,348,729, 1579,276,112,729,895,314,472,497,1088,727,837,432,301,636,288,932,499,292,647,649,651,420,320,811,675,714,320,1248,561,765,610,296,35,265,1619,102,445,288,996,1248,383,745,920,922,562,782,32,53,786,1369,1137,577,120,1333,1382,1236,475,477,479,727,780,766,1530,626,1435,870,1501,288,109,431,1639,1391,1072,1553,640,642,278,645,108,1604,417,1557,300,383,692,97,694,412,414,305,648,1666,419,504,1609,1491,1514,693,1572,376,1670,694,1497,799,461,428,430,1597,1614,781,440,442,444,1634,617,963,453,413,456, 32,458,98,635,1659,390,314,413,1665,650,1667,269,653,655,100,657,116,659,116,661,575,663,97,665,667,315,1489,712,1561,364,1709,288,1720,1722,1724,745,688,1729,1051,1717,682,1721,684,1723,686,1725,1741,690,315,1686,695,327,710,1509,1721,371,104,605,1514,115,1516,1538,1519,1648,1018,338,867,1547,1764,1527,1767,1551,737,1735,325,1756,1606,269,1559,1732,676,421,276,1049,1367,607,1695,284,768,1623,1461,594,368,727,686,709,1429,105,1683,742,1754,1688,1800,1126,805,107,80,1029,982,960,1451,376,1226,681, 100,1739,1726,1728,1752,121,804,633,1811,1464,960,895,1418,709,1815,296,1226,1820,577,1811,431,1207,1598,383,84,104,471,645,105,1172,351,427,666,1510,371,555,686,694,1763,1765,1549,1540,1542,1599,321,791,376,1474,1476,1478,639,1783,812,1785,320,275,108,108,1822,1506,558,100,368,432,84,1513,1640,1362,982,355,76,97,1592,70,840,87,1298,1322,1412,963,494,108,1578,32,1899,917,287,453,1299,1400,32,49,48,48,287,50,1911,287,51,1915,32,52,1918,53,1918,703,1912,32,55,1918,56,1918,57,1918,596,1352,461,1887, 346,259,1881,103,1883,671,1885,1393,988,1506,1406,1339,1026,1039,1833,890,1316,1033,893,895,1874,1876,689,1506,1889,1592,479,642,1047,980,1162,1943,1137,1936,1961,648,1963,540,1149,1130,845,1066,1012,1181,1268,1452,1236,1957,1877,354,109,1118,756,102,116,1656,1981,770,1362,1984,1959,1986,1118,915,552,111,109,82,1321,1991,1389,1951,1392,1137,348,622,1300,1015,834,1831,968,32,1347,1152,1934,383,1936,1118,2004,1299,1434,1624,1437,1102,1945,1998,1210,2E3,340,2003,2005,1992,1650,1635,461,1996,278,1960, 1890,1972,101,1964,1433,1423,1391,1625,1335,1250,1506,1843,1845,762,108,1965,1788,1381,1657,1453,1336,1946,1210,1941,2038,996,1176,1430,974,2066,941,1085,2005,2027,1015,2052,288,2042,114,2074,942,2005,1428,1968,1935,1986,1004,1293,788,2041,496,1958,2043,1998,1441,1281,1121,1993,296,1445,1273,1276,1275,1100,1956,2095,1985,355,1118,1941,2087,2063,1236,1970,2045,108,1973,2060,1076,2062,2102,2040,2022,1986,1879,1939,2025,1896,2116,1362,1467,2055,1844,519,1846,2059,1975,1457,1173,1429,2082,2084,278,1941, 1989,2006,1628,1466,2065,1986,1971,2120,2047,1974,853,1469,2088,1626,2110,1997,2112,1210,2149,2078,1123,2029,2072,1020,1878,1938,729,2149,1801,2032,2075,114,2114,994,2177,2112,2099,2168,1183,1302,1258,2106,1288,1276,2089,2165,2179,2034,2002,2186,1436,1255,1328,2054,2178,917,2068,2037,2007,2183,1987,2166,608,116,2198,296,2080,34,1936,2056,2138,2058,669,120,1396,2132,2125,2009,858,99,1957,808,2160,2133,603,2228,2095,808,1199,1980,2039,2226,2201,2031,355,2129,729,2196,1507,2232,1969,2203,278,2246,2115, 2225,2071,2135,2098,1310,1948,1100,1409,960,962,451,2019,1415,1350,1977,847,1164,348,1504,2013,569,1503,1849,2127,355,2218,98,2139,2223,2273,1982,1886,1986,2279,2139,1004,1169,2020,1458,1979,2144,2163,2097,2194,917,2149,2253,2239,2071,2023,1332,2086,2182,2161,2053,2242,2209,2179,2131,540,2306,2248,2193,1937,1880,2245,339,2035,2152,2202,2278,2137,2280,2058,1422,1255,1424,2200,731,2250,918,2206,2151,2307,2030,2073,2333,2213,288,2215,2118,1962,2157,2289,1414,1171,2143,2337,2171,367,2136,2057,1847,1373, 933,1059,2351,2145,2333,2300,2070,2064,2323,1987,2099,2231,2254,1115,2303,2195,2320,2002,2069,1795,2249,1888,2119,1827,1813,1343,2225,834,625,1990,287,340,112,287,837,1299,631,2374,109,972,2153,2324,2355,2140,853,2290,1415,2350,2315,2241,2339,355,2369,2301,2365,2309,1999,2395,2341,34,2343,2333,1941,2416,2215,2361,2399,2219,2356,1292,1088,1294,2332,355,1976,1419,578,342,501,1411,1391,834,494,2001,109,287,1654,1880,625,2388,276,2109,1875,2111,2310,917,2252,2314,2370,1236,115,2234,1875,808,2403,1171, 669,442,1535,2406,2430,109,2287,2058,2091,2428,2093,2277,2367,2258,823,2410,2364,2457,2398,109,2155,1892,294,2363,1015,1202,771,457,994,460,731,115,2115,1861,335,2423,2469,2325,2139,2479,2377,2094,2450,2164,2483,2119,2121,1168,2348,1153,1459,2238,2480,1362,1761,260,83,2459,108,66,117,2001,110,2008,2429,288,2372,2204,276,2149,2376,1361,594,2344,648,70,822,1342,2437,2225,42,2316,2470,1847,1427,2455,2411,2481,2366,2546,1876,1966,1789,2550,2285,2379,2345,2048,1244,2050,2225,2422,2295,2083,2154,2119,2485, 2212,2563,2239,2215,2016,108,2435,103,2542,2239,2439,2395,2443,512,100,2446,1541,2448,1249,2413,2067,2532,2211,2534,2284,2536,2340,2572,2028,2331,2529,2568,1592,2462,841,2577,2579,996,834,1206,1908,2386,116,2391,2005,895,2217,2501,2327,1332,2207,2351,2537,108,71,670,1466,2521,808,699,604,624,1684,1345,963,2082,287,578,119,315,115,2449,2096,2567,2297,1143,2598,2079,2170,2499,1947,1442,1388,1028,2008,1226,1955,2505,2643,2044,1891,1893,1895,2283,449,1898,496,1901,1903,2611,2005,1908,1910,1925,1914,1925, 1917,1925,1920,1925,1922,1925,1924,287,1927,1925,1929,1925,1931,1925,1933,2269,2162,2506,2296,2476,877,1266,1408,105,829,1465,1897,2264,2512,2017,2575,2616,2333,2246,2312,2594,1994,594,2499,2503,2535,2378,2508,2661,2486,373,625,2263,619,982,578,1419,287,2691,2708,2424,2326,2426,2159,2555,2124,2557,2714,2566,2173,2318,432,2246,2208,2553,2716,2595,2718,2553,2237,2322,2309,2553,1095,2647,2169,2600,34,2650,2620,2336,2467,2338,2172,2128,2174,1882,1884,2763,2352,100,2660,2538,840,2421,2170,344,2525,2520, 1957,85,1942,1444,2188,1953,91,906,1555,2523,2525,287,73,429,110,2790,340,110,93,1260,32,2788,1756,2796,629,2792,2794,2804,2798,2397,2366,2472,1391,2528,2216,2257,2697,1407,1222,1950,1315,1285,2657,2475,1988,2211,2487,2717,461,553,98,262,260,120,1429,2265,1171,2606,2724,1286,323,2611,2211,2614,1299,972,2628,291,2776,2758,2617,2400,2520,578,1674,260,2839,574,413,287,102,1847,1416,2861,116,95,431,604,260,2860,982,95,2012,2868,626,2864,95,340,95,511,1180,2870,2865,2878,499,2615,2589,2408,2452,2251,2395, 2827,2748,2887,2765,2645,114,2167,2756,616,2418,2896,2205,1299,2712,1042,1995,2740,2090,2427,2813,2474,2468,2024,2621,2770,2499,2754,1386,1110,1388,2762,2456,2134,2482,2414,2441,2533,2915,2923,2739,2694,2644,2889,817,2415,2899,2199,1125,2913,2591,112,2905,2126,2468,2155,1973,1516,429,745,2702,2438,963,954,667,454,287,111,689,1702,626,2960,45,477,821,502,2729,629,101,913,2524,2797,2780,2095,2312,1398,1226,2802,328,2808,2806,629,2808,2799,2957,1302,2789,2971,2805,32,2793,2982,2988,2809,461,761,2783, 2930,1137,2499,2244,432,2176,2360,2908,2559,2046,2561,1063,2142,2514,2752,2888,2553,2548,1213,2627,2229,291,2464,1534,2607,2504,2693,2659,2602,2774,2721,121,2723,2703,2725,841,2728,32,2730,2545,2618,2734,3009,1351,2292,1134,3012,2895,2719,3007,2158,866,1387,2943,2240,2468,647,1646,1616,517,575,597,1622,2580,963,2691,2388,3038,108,45,629,108,121,1905,2119,3067,110,3069,2731,2696,1024,2100,2261,2383,3061,2704,1007,2266,1417,1457,3076,2918,2562,2329,2051,2170,2256,3006,2156,3008,544,2604,1978,3043,2351, 3094,3077,2698,3091,2225,2104,1286,2190,1448,2601,2732,2139,2328,1443,2564,2649,3005,2934,2420,2937,2214,3118,2932,2146,2180,276,3051,2071,2760,2311,2335,1359,3017,2235,291,2432,846,3020,2466,2998,2658,2451,3001,103,2975,3102,2925,2210,1990,3129,1115,2917,3065,2357,1058,1546,2738,2999,3119,3014,1232,2549,2516,2931,3025,3095,2510,1355,2920,3152,2551,2590,2311,2929,3159,3143,2507,3089,978,2736,2208,2484,840,2892,905,1324,1203,1705,2492,3060,311,2496,1522,2498,3119,2926,2035,3172,2558,109,2747,2713, 3160,3125,2286,3065,3115,2101,2573,3093,3149,2179,2299,3164,3023,2468,2553,2221,2751,3148,2366,2024,3133,1390,3142,2824,3163,3016,2351,2794,354,294,1048,113,489,2092,871,2308,2888,3184,294,1894,2005,2839,1903,2394,1900,2670,1907,114,287,2673,1913,1918,2677,287,2679,287,2681,287,2683,1926,1928,1930,1932,3058,2021,2945,2569,840,258,1654,3069,742,1595,729,3178,2695,3224,2026,3122,2342,2170,2623,3169,3049,3171,3176,3165,1137,2778,2972,2521,3003,2784,91,2977,2986,2803,2993,2981,2795,2993,2984,2801,3300, 2979,3302,2990,2807,3305,2810,3174,2531,851,3216,2828,2407,3045,2113,276,2849,2939,2764,2353,3026,3096,3048,544,3324,3205,3167,2500,2852,2511,3084,2349,3011,3222,2309,3242,540,2722,2633,288,834,2726,453,99,2967,587,2692,3240,3045,2946,2157,2948,1725,2951,2384,2953,823,2955,2859,2801,2959,2956,32,2962,2964,622,2966,3035,2968,3314,2888,3145,3147,2770,3103,3180,544,3238,1652,2771,2354,2425,2401,3288,1357,2922,3177,2475,3343,3332,2316,3099,2576,1906,3022,569,2609,2841,3252,3370,2843,32,2392,503,2642, 2451,3357,642,3359,2950,2262,3031,91,2954,690,3369,2958,3365,2961,454,2963,104,2965,104,2967,413,3412,2507,3343,3186,2103,3188,2490,3190,1213,2493,2529,2495,2314,2497,1217,2993,2973,1875,68,544,3402,2187,3298,2786,2978,695,3310,2991,3304,2525,3306,3458,2980,3311,2992,3463,3076,3145,3296,3227,2940,2373,2927,2593,3290,3217,3326,2772,3328,3287,544,3138,3100,1460,3319,3196,3206,3113,2471,2141,3041,2405,3473,3112,3335,3389,3156,1375,2622,2333,2928,3393,3291,3279,2933,3383,119,3397,3024,2451,2651,1379, 3182,3341,2888,3198,2375,3478,3488,2081,3197,2033,2395,3504,3134,3502,3491,3039,1108,3289,3505,3479,2759,3524,2179,2903,503,3200,1944,3518,3229,3346,2240,1862,1836,97,67,663,278,1565,1608,1560,1872,123,1778,82,339,1039,1663,3550,366,745,803,378,557,2271,1849,810,3555,1611,1547,1986,2655,2786,391,340,2275,1505,1986,1708,637,679,404,3569,1645,383,825,111,107,362,1811,3350,2737,1680,1733,320,798,1593,1391,3277,1597,2494,733,3601,3447,34,694,111,820,670,1761,99,65,1058,2976,2786,3603,103,2800,3620,3583, 1091,3585,296,1555,1781,461,1737,1747,3548,1822,691,1803,3571,1784,3573,1778,3631,685,687,1727,2959,1753,1683,1555,803,1749,1740,97,1838,1494,358,3638,922,121,97,1771,3394,637,982,555,1470,3584,1864,3627,1780,1715,461,669,112,3580,352,1986,1731,1871,3573,34,1563,1569,1566,2626,1126,386,3683,3673,385,529,1778,3674,1506,698,700,67,3237,1508,1851,1759,421,1533,3141,2216,1773,1766,1550,1541,3195,3347,823,1857,1774,3707,1861,1778,3628,3670,1870,1610,922,1545,84,1802,3545,2255,1580,116,3723,366,1470,1481, 281,119,278,3616,455,1562,101,477,305,922,1165,677,3584,921,606,1054,2769,3557,2498,480,1524,677,1778,1866,2002,1868,614,1091,3572,1511,717,982,720,3483,3510,3283,2417,2170,1165,1809,808,80,275,820,282,115,3203,2906,594,109,1675,2120,557,3650,1726,84,745,115,314,1410,68,1038,3361,34,1630,767,3261,1794,3522,384,315,3772,291,2282,1398,1325,1205,1188,858,3763,719,282,2755,3106,3211,2758,487,686,1828,629,3054,3419,2632,823,1585,627,259,101,2872,2524,95,436,260,2866,2798,461,118,114,2625,1213,3653,643, 72,605,3729,3725,1383,3775,292,115,115,3514,3779,2944,288,1797,496,666,3788,3820,2382,110,3793,3417,3081,3506,400,3850,3777,3015,3848,1236,3293,629,752,3727,3618,1285,3465,3460,3312,3469,2985,91,2987,2791,3467,3462,2797,2799,1164,3870,3852,808,3514,2416,3108,1447,2192,1018,3812,720,2744,1283,3439,1304,1186,3809,1327,1438,3804,2897,105,666,68,745,103,3021,433,2473,3239,1377,3803,633,808,3559,2932,310,312,348,3385,3838,2180,2325,727,1419,107,3559,553,1410,1105,3055,1631,1925,3661,288,2861,114,727,3861, 2526,3863,3865,3561,1429,3771,3926,1117,2185,3768,3899,3110,3901,335,538,941,494,291,1819,111,1839,2646,3816,2599,3325,570,2993,405,558,3746,3879,746,3881,3888,3461,2983,2800,3985,2797,3303,3988,2270,3925,806,2461,1167,3170,3392,3528,2770,3958,3996,3805,1083,3961,3975,2488,2785,1285,3900,2108,3934,3843,278,83,1139,960,1434,3797,376,1618,102,54,1924,3060,3976,1196,348,3913,3472,2239,2489,3908,1326,1840,1808,3959,114,3774,3611,3851,3853,4007,827,2700,959,3867,2014,963,2836,1349,3086,3041,2970,2525, 1883,3919,625,83,3903,3679,1301,3456,3880,3308,3459,3986,3883,3891,3989,4067,3466,3987,3313,461,102,111,99,921,3736,97,2853,3030,320,4021,271,48,46,1633,3800,2893,3902,114,436,709,705,845,4060,4018,629,4020,1615,1631,34,4023,1620,4027,2648,2758,4003,807,291,4041,3776,3895,3544,1466,4062,3853,4118,2351,3875,110,405,3983,1033,3990,2989,4075,3884,3307,3886,3301,4069,3468,4071,3811,4095,554,101,4098,1419,625,2410,4087,32,4089,54,1699,2255,4120,3209,1145,2758,716,98,718,3765,3358,267,3360,3418,2952,451, 3421,2960,2957,3368,3366,3371,3429,3373,3431,3375,3433,3994,121,3913,3897,2699,2701,4164,3362,3083,1348,2706,3087,1263,3449,2389,4127,2787,4073,3882,4137,629,3464,4195,4136,3890,4198,1403,4179,4039,1297,1385,853,3933,4038,4004,114,4207,929,2049,4008,2757,3977,1797,1165,1883,496,280,112,262,4061,4140,709,4017,1103,4184,3796,4104,319,1542,1699,2814,4112,3896,2761,4001,3496,896,4120,3471,2211,3957,4030,4039,3380,3107,3907,1908,4036,972,4120,2812,2225,2814,97,97,69,645,2632,3158,4147,4236,4092,493,2912, 3760,4042,3777,3806,3906,1399,3406,4255,4178,3913,4115,4043,4181,2819,2654,2821,1317,1228,3811,4158,3764,282,4263,1890,625,4266,4234,1648,4237,4271,34,3839,4015,1119,2572,4147,4106,1620,265,4109,4218,1137,716,4228,4142,3739,4144,101,4230,4048,110,4146,4298,271,1793,3947,711,4116,115,4032,4064,3808,1306,4037,3912,4039,3905,3297,4333,1402,3893,4273,3895,3960,2477,2100,1313,3576,2822,1318,383,4303,3972,294,278,3930,553,110,1800,1694,1647,271,50,4151,1453,4245,2767,103,4338,4243,2157,1662,578,1825,4212, 742,4375,4113,4029,3995,4379,4214,2914,3534,3801,4239,4005,259,3221,4339,3189,4279,4211,4382,934,3855,3052,726,4120,3766,3050,3521,4093,1783,4329,4154,2330,3977,4353,3973,114,1822,4103,1791,1617,1911,55,554,99,4311,2900,3770,3894,4121,3175,4385,4404,3924,4205,4212,3854,3516,2770,4372,644,4374,4424,808,4377,4438,291,4280,4206,3998,866,3399,3495,4327,3839,1892,666,3956,4361,3056,3946,3868,3966,3970,3969,941,4304,4357,1799,3873,1462,4441,4412,4433,4243,4387,2935,2179,3437,3856,4302,4040,4354,643,4320, 2541,3847,3944,767,2675,4365,2457,4367,2742,1940,3749,4327,673,4406,4045,2653,1224,1088,2656,4351,4336,4212,4282,3871,4241,3226,4492,4249,4212,4390,4252,4277,1401,3810,4394,2230,4469,4327,4157,4159,3814,3337,4187,3042,3487,4428,4244,4291,3813,115,2625,2997,4327,340,117,555,1822,4082,4084,710,4147,4326,4457,1623,745,2526,3791,960,3952,3821,110,932,101,3707,4243,3967,100,4460,3971,4411,4480,1410,3511,948,4400,2346,4522,2291,4448,4543,4328,4283,1209,4426,4242,4518,4153,2368,4517,4570,4493,4572,4346, 1340,4047,2541,2839,4052,4188,4055,4290,4520,115,2570,3273,1847,2737,996,3620,4591,4292,2495,2919,4E3,4506,4570,4519,4601,4284,3116,3817,3977,4471,4383,1210,4563,4544,3820,4547,629,4549,3954,3794,4232,4580,3786,577,1883,1604,3861,3790,3561,3955,3795,4541,1911,4456,3535,4607,4529,4397,2071,4613,4006,4583,4182,4321,4587,2705,1416,2707,4443,4212,4214,1456,3494,3340,4002,4424,4641,1115,4124,86,82,699,101,3660,4064,3299,4134,3309,4201,3988,3885,3887,3991,3889,3993,4515,4114,4441,4645,4217,3455,2189,2108, 2107,575,4256,4528,720,4655,2268,4569,4638,4120,3485,3400,2436,2839,2389,2583,2445,626,2440,2035,4256,4315,4143,99,625,4414,4362,288,4107,1619,4421,2938,1137,4220,348,4222,439,105,4225,110,1883,4535,104,2780,4553,2526,4210,4405,4572,817,4495,3080,3454,2665,4186,2291,2267,2433,3354,4272,4329,4251,4033,4253,4278,3910,4335,3448,2525,3981,697,4276,4669,4675,4130,4070,4203,4674,4135,4676,4131,4138,4679,4213,1296,2663,3807,4392,4752,913,625,3826,1882,4545,4550,4633,4624,3535,3819,3953,3792,4623,4049,3801, 4639,4691,1149,4660,4487,4690,282,3399,2838,3419,2612,1261,3405,2844,3411,2829,4780,4619,4726,4780,3863,4294,4265,4733,4399,4796,115,3766,4794,1462,4508,107,863,1571,2839,1575,1577,1583,315,3827,290,3746,100,1036,622,2632,67,3350,107,65,4586,4454,4105,340,4059,3830,102,438,566,2228,4731,4717,2634,451,4844,103,625,3833,4848,2458,292,293,3432,2969,4600,4529,3379,3245,3102,4120,2570,4474,34,4034,1908,604,3442,4342,4494,4682,4610,4668,2786,4012,4688,4878,4735,4407,3092,4111,4821,3997,4208,866,1374,2359, 3381,4565,3097,119,4697,4694,4386,4438,2395,4773,3440,4393,4458,3968,111,3970,4304,4561,4548,3724,3957,4467,3872,4119,4816,2570,4616,3802,4430,4395,1440,4880,4496,1314,4498,2786,2823,4501,4926,1405,4122,4002,4891,4388,4215,2735,2061,4248,4381,3773,4904,2179,4923,4791,282,1941,4906,4035,4775,3838,3733,3823,4165,619,1798,823,3970,843,894,4865,720,2570,3244,1397,3824,2667,3248,1904,3370,2671,3406,3254,32,4485,32,3257,1919,1921,1923,1918,2685,287,2687,287,2689,3352,597,4689,4592,4871,3345,2839,3349,3034, 3036,4769,4888,3117,2200,1862,3723,4296,1805,797,799,801,1488,3637,3678,922,275,3767,822,2664,3780,1137,1099,825,5019,3665,3625,3667,288,5009,753,1498,1486,802,383,83,453,260,79,2524,317,1607,3655,5015,387,779,4800,3408,4701,3409,2005,2394,2441,3624,1863,1472,288,5041,1716,335,915,120,1713,3629,3698,323,3742,1812,3942,3739,3712,3706,1860,3709,896,994,4017,1525,3705,1859,1768,1778,641,643,1663,5063,3718,4272,5044,561,3918,761,2632,88,825,294,1874,115,4712,3056,4308,102,4636,48,4852,3284,2758,2960, 4510,4233,4415,1909,4486,1362,4096,101,5099,4105,4715,4310,1699,2215,1654,110,5109,4570,2960,4323,5111,4542,3535,5123,4275,2770,100,5091,4295,101,89,5095,487,496,5098,4306,4324,4714,1911,265,1911,5105,3769,2758,1642,478,480,4483,4299,4269,1651,461,5135,1671,5092,625,90,5140,5097,5117,324,35,5103,5120,5158,5106,4219,5136,2632,3616,5017,4448,4147,1922,5113,594,2880,1155,4541,5183,4719,950,5186,5145,5130,3801,5123,1516,476,2515,3535,2960,5168,4022,4309,1621,5121,2170,5161,3919,5137,1601,278,4142,3176, 5181,5188,498,4772,4842,767,5215,400,5068,960,3917,5162,5137,5156,271,565,567,5173,570,4301,4876,101,5224,5208,2632,5227,3828,566,1649,996,2814,5115,5128,4713,4637,3319,1862,3641,116,3672,3634,315,3672,3677,3720,3744,5027,5056,34,5251,5253,3645,121,1754,3648,383,1713,1806,710,3597,3556,289,5222,629,599,4086,5145,5248,4526,1463,3863,580,5279,5111,5281,3204,1164,5276,110,589,5286,5247,5220,3196,3941,960,5278,1790,5295,5231,3130,3560,1410,5293,5301,4455,5296,3523,5298,629,79,2179,5239,34,88,89,524,1699, 834,5318,90,287,88,90,89,287,89,5326,5329,90,88,287,5333,5328,32,5327,88,895,3600,3276,728,3604,3444,3606,1768,5297,3561,5285,5308,3945,5310,34,739,648,1629,5145,91,2800,2239,1226,5270,5010,1499,758,2227,2854,5239,5193,4526,431,844,5300,5110,4713,5229,5242,1015,2814,5373,424,5307,5376,3056,5378,4300,3923,2216,110,844,5351,5385,1631,5387,5231,2814,4785,4631,1410,5393,4147,5288,5021,4806,4618,3561,5384,5403,5354,5399,4808,5375,5410,5303,925,1778,5364,5031,5011,1500,461,5036,605,262,5058,5257,1681,421, 628,2247,4185,619,4801,2587,2390,5050,2393,1902,2395,5054,638,1494,297,265,652,335,70,3791,3633,5265,4378,2381,3795,5273,3679,1787,2123,1429,280,366,1798,1477,1429,3658,4667,3535,1957,3957,3663,5198,5249,3666,5261,3717,1678,461,5449,551,5251,5451,1742,5267,1756,1850,5066,1760,1762,1536,5079,1539,5348,726,1770,5071,5080,1776,1862,5443,1554,3669,5477,3719,5429,320,5458,1967,5294,3056,5371,5289,383,1797,4358,4360,3381,846,4540,5192,5354,4112,5454,1814,4287,1033,5479,1748,3643,5254,1824,4821,5523,4198, 1935,3636,1391,5030,1485,461,111,265,328,116,5393,4570,5541,102,5543,5384,4570,2885,4970,2770,4588,4698,2578,2839,2610,3406,5435,3410,4753,34,5185,5472,5282,5471,1429,2575,4799,4959,91,4705,2002,4702,2585,626,2389,2846,2854,4958,5433,91,2861,1875,2882,3836,2874,5587,2873,605,5587,2878,5565,5593,111,95,5552,503,4863,895,5466,2294,1875,3731,335,1818,5482,1823,5453,5291,5428,3598,256,5507,2556,4570,5461,3752,5464,2351,1831,4063,1015,1835,4626,3652,4478,5442,3626,288,5476,5447,411,5627,3563,3552,3930, 1165,5533,2579,5456,1492,5474,5444,3940,3561,578,5637,745,5639,348,5641,461,5314,98,982,350,5553,256,1758,5067,4550,5077,5496,5492,5498,1778,5659,1322,5504,5614,896,1149,1883,625,4545,5516,5352,319,4089,4091,4327,1613,5509,5118,5203,5150,2215,5603,5218,284,5404,4475,538,727,4258,5394,564,578,5230,2239,2814,115,1149,2038,4147,56,5354,3973,4786,2737,5187,5416,1641,311,1165,1297,108,360,5239,5396,5703,4301,3782,2856,5692,296,2861,120,367,2877,5597,1580,694,1782,5231,834,5730,5732,2878,538,3564,97,2870, 5731,100,5733,2877,291,5736,2109,5312,3864,5176,4085,5680,284,5723,5243,4301,1588,116,3664,5728,4148,5354,5705,1355,369,5358,5287,5768,1149,3672,2300,4147,1920,57,4150,5715,1053,1862,4463,4359,101,3548,5650,97,304,666,366,3654,711,5089,285,5645,324,5785,4097,5305,960,5649,3551,745,5791,355,639,383,1011,4593,314,292,5609,3932,5014,5258,421,5691,4002,5568,4123,625,554,1761,1693,5686,5681,5354,2632,5825,729,5800,5519,5287,46,52,5220,3691,5627,5530,3694,749,3548,5486,1852,1508,3711,5490,1858,5667,3708, 1531,3966,489,67,542,432,710,1548,5852,3715,5798,404,5627,3060,5643,1853,489,4349,746,1482,3696,4864,738,495,4532,4147,5760,5380,4301,437,2389,5816,5828,5157,5724,871,5250,683,339,5264,5483,3647,5485,5817,5505,256,5570,3401,5316,2444,5577,5150,2581,2441,5576,2586,5579,5535,1671,3545,5538,5032,5540,5542,3739,5402,5280,5354,5547,5549,5239,5694,4398,34,5599,504,5415,4327,5555,5571,5758,2214,3405,5905,963,5559,1905,3408,5562,895,5565,5924,5354,5713,5920,5782,594,2834,5766,5925,2255,5518,5582,5699,611, 2862,5937,451,2858,2875,2862,5587,2867,5592,627,2871,5591,2869,5968,2883,5597,5595,5972,5749,5928,5630,5028,1779,328,3629,383,1811,112,463,5815,1730,5897,5673,100,291,107,293,3514,5239,4268,5888,3386,5522,5291,5871,154,1033,5985,5987,5841,5452,5532,5291,2616,5536,2225,5914,1689,4352,311,105,5238,5766,5880,569,2814,118,700,742,1496,5365,448,400,5822,4002,276,463,5834,2294,5754,5375,4570,275,5754,5550,5468,5802,629,5545,3535,5820,4243,882,3591,65,2639,121,1883,3845,260,4482,5766,2675,5953,1453,3941, 5835,4713,1363,1587,1529,5321,963,4826,367,4828,121,4830,437,328,4833,5290,5986,112,2221,5133,4511,908,4908,288,2518,101,69,327,3278,5766,5355,454,4442,6069,451,2960,1704,3236,259,3836,287,6101,5748,2012,6104,1718,3836,3831,2613,1288,623,1419,6103,6113,5657,99,6111,1261,6114,6119,431,6120,32,6101,279,6116,6127,2865,6107,6126,655,6128,6124,6132,3236,1839,6129,117,6139,6137,6141,294,6110,2012,1590,495,4839,6053,6055,5489,5886,1776,5388,3386,5705,544,6090,604,5827,5934,288,6099,521,6097,5434,6095,3406, 6105,6140,6102,6143,6102,6136,2524,6121,6118,6116,4080,6179,6132,6181,6115,6176,6112,6130,6172,6128,6174,6135,110,6125,6138,6145,431,6108,6142,6177,6133,6139,6186,895,6088,4782,3081,4635,1918,4492,6033,6081,97,120,5125,4009,4512,6086,5674,544,6206,2579,6208,6061,1236,104,4078,118,1429,6050,4532,5761,5389,5883,276,5885,4259,2474,383,5662,5488,260,4263,3158,5861,1775,5853,1543,849,1571,5857,1855,5860,5491,6246,3608,1545,5666,6255,5074,4710,3938,6258,3707,5378,1769,6159,5849,320,6245,3714,1522,5840, 5529,5265,3060,366,3740,100,1511,4192,1734,1438,5259,321,3982,6282,6087,6153,3750,5494,3384,1734,1862,5210,837,99,3548,70,1740,5272,3761,371,312,1602,3545,906,6014,709,287,1482,702,796,5420,709,1353,292,111,6295,6306,1302,6308,626,6311,751,6028,5979,5261,6298,6300,3671,450,3693,5065,5847,1873,2110,2524,6263,5073,5854,3523,2932,6339,5493,2417,4838,6344,5228,5701,1777,5864,3668,5982,5087,5795,5818,1612,1761,1900,402,5525,91,1567,470,1506,1590,2119,5343,1596,433,399,5035,798,5115,4709,625,5086,5477, 5990,5274,5514,4464,5945,5949,1137,5555,5722,6350,6156,5160,5190,5154,1645,5766,5998,6232,789,6352,5057,1661,4436,1664,3783,1677,5634,34,932,339,5670,504,6240,810,5291,5665,5850,3713,6340,6351,5260,5444,6410,5867,6302,561,351,6383,5952,5521,5291,5236,5163,6064,5386,6389,5397,5882,432,5757,5957,271,703,5354,260,538,5947,5111,4364,6385,537,5144,5111,5101,4108,5205,2758,6048,6440,5767,6449,6030,5764,2238,5930,4606,5706,5213,5520,6460,948,1386,5771,6384,4327,5711,1464,6446,4713,5511,5405,5513,5717,348, 5719,5721,6020,6435,5999,461,5951,6154,6459,4327,6040,4632,5756,6433,5395,6487,6397,537,539,5698,5879,6499,5881,5389,6477,5309,6469,1091,618,98,3565,6428,6510,34,122,6473,6465,853,5776,2549,5778,48,5780,5839,5984,3567,776,778,5613,3556,5418,1568,97,6530,831,3566,392,5789,5654,6380,3679,4597,3535,6490,4243,839,2002,258,268,4881,3023,3716,5502,6406,5481,6007,1742,4082,5846,3700,320,3782,3746,756,97,666,6348,6247,383,6565,328,2782,6570,6265,335,6573,5235,3453,6576,6350,3512,6338,6416,5072,6345,2082, 6570,3608,6261,806,6582,5241,6572,622,328,4263,643,6590,6272,6399,5981,1556,5503,5088,6357,256,4080,3950,6553,3403,963,3797,287,3612,98,287,5858,1901,3782,666,1036,6482,315,4722,4224,262,4727,555,4730,293,5772,4713,6396,6506,3386,577,112,3898,1302,1195,44,3348,1683,44,5399,5500,44,686,121,3892,530,328,72,686,824,798,753,3210,6500,383,340,496,3723,6231,1015,4599,6372,5607,1718,6558,6274,5894,5912,6532,3639,6603,1818,6673,1750,3644,6675,694,5268,335,5656,982,1713,5789,6677,922,431,1813,578,6035,5766, 6479,4475,1637,6697,2770,5195,6426,5786,1429,621,623,4711,4838,4840,4634,5145,2417,5936,6167,2840,4355,3406,5962,6327,5444,6690,5805,370,5810,6368,6543,922,4078,3028,6439,2608,963,4999,3351,3375,3353,1830,1457,5933,3082,619,5049,5903,2586,5574,2396,2829,4161,2949,4453,5572,4167,3423,4170,3426,413,3428,3430,5601,4077,3272,663,4596,6369,3278,6663,2157,6767,1597,6769,4899,4901,4657,4243,354,4899,4402,4427,5512,773,4649,6742,6734,6098,3408,5939,5438,4805,383,6731,116,4969,2224,6743,5573,4972,5440,3249, 5560,4976,3253,1918,4980,4982,3259,1632,4985,1925,4987,32,4989,32,4991,6738,4993,6763,2486,3318,3455,1185,5234,3443,3704,3194,6341,372,4566,3090,6612,4422,3818,6830,3181,4943,2351,6793,4923,6778,3330,1150,3338,2513,2293,2161,3755,1475,3757,2968,1480,6687,1715,308,6562,922,882,3829,6244,6254,6271,1552,6603,3756,1477,6851,5737,6356,5898,34,612,3551,6003,91,6322,5602,3659,5606,288,5527,6681,3651,5842,6729,6284,5500,376,6882,1821,6275,1669,110,413,114,6378,333,6885,421,829,500,666,5698,6662,335,111,1715, 73,3158,4598,5344,6371,4458,5697,2910,6237,5889,6603,6896,1668,335,5893,1823,6692,6886,5631,6604,5983,5060,4765,3081,6412,3554,3777,6601,6828,292,5824,4757,6269,6861,6418,383,6592,107,6594,328,5499,6926,6865,3758,6868,5868,3571,3777,367,3928,2643,4609,957,4585,3795,6786,619,5555,4743,1420,3869,6955,100,3766,6775,6846,4658,6969,6957,1822,2947,4162,3866,4739,4853,619,6755,3366,3424,3422,4171,3427,3372,117,3374,6721,6750,4899,4923,933,3852,367,2155,6771,6912,6164,6728,3602,6911,3893,6975,2566,4871,6821, 3187,4512,3441,4864,2494,6827,6248,3536,2932,2122,5508,6049,315,2012,4648,6844,4589,2268,895,6841,3416,6753,5583,6984,626,6986,4168,4975,6759,6990,6992,3376,7007,6998,100,6976,689,4968,5217,5572,3247,6800,4974,1906,503,2672,6805,3256,1918,6808,3799,3263,6812,6814,6816,5001,3489,2643,4922,3768,2215,6997,6077,7047,2147,6835,3532,4604,2008,4642,4043,6956,2566,3519,109,6996,7082,100,4594,6765,3275,1594,7006,2022,2794,6215,1269,4750,4513,3911,3760,7008,2932,3281,503,4872,7081,6969,3461,6083,4749,7013, 6218,7073,862,6915,6488,6968,7045,7075,4472,3316,7107,3153,2566,4818,4579,3535,7115,4936,3538,276,7124,1236,6841,2347,7027,4524,5566,6782,7102,7120,2740,7096,902,7140,3438,7113,4955,7119,7074,7009,6764,3274,6545,569,6669,446,7077,119,6780,4575,6039,7153,6732,3545,3348,3033,6737,7067,7142,6077,4919,3004,7020,4216,6832,4718,461,5726,7167,963,5986,5705,2447,4845,1189,7088,7121,4692,4744,4902,4526,2082,7105,2571,4683,7179,3512,689,6903,6637,7044,7152,2932,6971,3010,6973,4470,7088,2825,1990,6840,7160, 4819,594,6839,7071,3124,2643,1004,7162,4605,7129,7189,7126,7215,7128,4903,7103,6958,2941,7087,7109,7145,1180,4953,4254,7150,7068,1822,6959,4348,6362,4933,7172,7083,3125,2794,7111,4332,4774,4334,7188,7231,7242,2304,3282,7198,3123,4111,7088,7049,4868,7051,6799,2669,6802,3251,6804,2674,7059,2678,4984,2682,4986,3265,2688,3267,6739,7204,367,7085,4923,6793,4872,4874,3406,6824,3192,3445,3230,6571,446,1890,2832,2047,4917,6969,3766,4447,6776,4492,7226,2932,4996,3029,7182,451,6736,4992,3269,7247,4941,866,7234, 7143,7104,3525,2441,7134,2907,7319,3214,2826,7011,6480,7241,689,7207,4656,7209,7304,7256,689,7212,2313,7293,4243,2082,7010,7339,7112,6823,3191,7016,3446,5074,7286,4997,3419,7311,6817,7313,422,7335,4016,7177,6661,4110,4612,7211,4578,6837,2770,6793,6795,5020,3710,451,7052,7268,1905,6803,1909,7058,2676,7060,7275,3262,7277,2686,3266,2690,3268,4745,7356,7045,7337,7322,594,7130,7121,7301,4649,7193,7141,7388,6077,7127,7365,7210,7357,4736,4928,7244,4931,4350,4289,7151,7283,4615,7219,7262,6969,7196,4923,2082, 7137,4523,7397,7328,7314,7070,7260,5174,1137,7136,3493,4693,7303,4580,7305,7221,4603,2921,7163,7225,7416,7320,2035,7391,3333,1822,7191,1132,7432,6043,7324,2453,2936,7426,5151,7362,7404,7425,7178,7261,7455,7318,7232,7325,7213,7414,3977,2082,7395,7138,7422,4475,7195,7441,2002,7443,498,6784,5901,3419,6789,5561,2886,7411,7131,2085,1299,7475,1532,2993,71,821,6667,7157,7094,1559,7404,6959,4193,4884,4965,7483,6978,6752,6962,4050,4166,3364,6987,7036,6757,7374,7040,4173,6991,4175,6993,7200,2251,7364,5459, 2351,7130,7243,2820,7408,4288,520,895,2996,7299,7461,7257,4473,7327,7471,7084,7233,7465,1196,7263,3185,7351,5572,7353,7171,4302,6741,7478,7266,5907,32,6746,5578,2588,7517,2083,7250,7050,6084,7253,4341,7483,7446,3486,7147,4475,7522,4737,6961,4783,6613,4741,3085,4651,7095,2982,608,575,800,7004,6916,6E3,7088,7222,3533,7438,7230,7531,7201,7117,6904,6342,2643,3766,7418,7227,3415,6979,7033,6797,7035,4169,3425,7511,101,6760,4174,6762,7483,4814,7019,7435,1056,2358,6909,7449,7462,2298,2211,7317,7205,7617, 3974,7458,7427,7282,7046,7596,6842,7595,7450,2147,7133,7534,5926,7130,7420,4568,7448,3801,6793,4595,7092,7005,6370,3507,5003,4611,7539,7300,7160,7620,7248,6958,7519,7022,7334,7045,4401,7585,7224,3801,7195,4495,7498,3964,4013,7555,7174,2916,7628,7584,7079,7530,6077,3500,4896,7403,7588,7358,7613,3157,7674,7653,1822,7216,7649,7045,7686,7626,7190,4567,2404,7639,5282,7363,4928,7665,4686,2191,7667,7495,7045,7021,5617,7616,7242,7568,4183,4789,1573,4051,4649,6966,7355,7393,2566,7704,7156,7194,7536,3132,7486, 7634,5304,7249,629,7097,6822,7560,4514,7702,6077,7342,6320,7013,7290,7347,7293,3608,7522,7537,7453,2565,7306,7154,6766,7093,7645,7575,110,7251,6216,4340,7731,7592,1822,7264,5660,6797,7372,2667,3250,7056,4977,7377,1916,7379,2680,6810,2684,7278,4990,7280,6818,6670,1495,2436,3739,354,1713,1827,116,673,1832,6161,3921,3554,3656,1853,6451,6065,5170,5103,5104,6455,3977,431,6894,5707,5280,46,55,5921,4517,5403,46,51,5921,2524,1085,6467,5129,5839,6918,6404,68,7782,7784,3777,6768,335,3917,276,3452,119,2579, 6932,6609,5858,1856,6586,5497,6571,6848,1867,6867,6423,7789,6899,7717,7590,7203,1126,2272,4377,3587,5059,4272,1477,7369,1363,7749,3355,367,5985,2782,7497,4408,1196,276,2782,3145,4952,7521,7861,1243,6836,7520,6032,112,2782,4531,7683,100,5178,3331,7538,6819,116,7642,7719,376,7158,1623,7651,7878,5221,7871,1309,2817,954,7689,383,744,1108,7577,292,7E3,3922,3386,7218,7743,3770,7866,4384,7586,5282,7866,7637,7693,7333,5618,7296,3364,6547,6493,7084,7664,4758,4883,7666,4885,6773,116,7032,7504,7571,6983,7507, 7038,7037,3369,4172,6761,4176,5875,637,7909,7436,3541,7444,7336,4495,7407,1391,4499,7410,7159,6774,7208,3101,2770,1591,5013,7644,7821,6087,7477,4699,5047,2387,1288,4803,6790,5563,684,7889,7858,4889,3977,7286,7634,7288,2491,4877,7738,526,7740,7434,4537,1271,7877,7903,2758,7895,119,7728,7398,7716,7104,7919,3297,4685,4688,4687,7500,7732,7283,7992,4511,7994,894,7996,1189,7939,4209,7900,6079,7862,4368,4748,5618,7228,7402,7657,7173,7944,7524,7946,4932,4500,1952,5017,7873,7521,7583,7842,6022,5762,8006,3040, 7431,7912,3535,7529,6838,2662,7265,5583,7761,6801,7374,7270,7376,7272,7378,7274,7769,7276,6811,7772,6815,7774,7355,1467,7856,112,7457,7360,4312,3507,8057,7969,5004,4612,8031,7983,7624,7454,7428,7160,7302,8034,7640,7541,7308,4998,7169,7312,7387,7967,8010,4489,4331,7129,7866,8059,4155,7460,7621,7445,8028,856,8030,7889,7676,7615,7662,2566,7876,3767,7984,3977,7429,3999,7437,7661,4526,7986,7752,3801,7986,7652,7627,7991,7406,8019,2225,7947,7527,8009,3673,4368,4370,7917,2932,8057,8088,7859,1841,335,5263, 670,5530,1754,6924,6287,5055,5444,8133,112,8135,5895,697,383,72,84,77,724,6898,320,7350,8077,7352,8079,7354,7387,7031,7598,7927,7711,7506,917,7931,7510,7039,7605,7041,7515,7043,6792,7746,7643,2225,7884,6829,7950,7332,7952,6777,7160,7223,7080,1115,3232,5056,8175,7494,3948,8038,7759,6963,6798,1900,4973,7763,643,7271,3255,8047,3258,7380,32,7063,8052,7066,7386,895,7972,7343,7252,3440,7737,3444,7017,7924,3815,8069,2215,8105,7868,7656,4570,7902,8219,2170,6841,6785,7505,619,6789,106,921,280,102,3070,3407, 7962,5942,6994,6842,8073,8180,3394,7835,6850,1479,7848,34,943,646,7816,5652,315,5427,8151,607,2526,101,3847,1516,6236,6458,51,46,6224,2134,401,328,258,260,6551,340,3210,7806,6699,5926,260,8259,8271,101,8273,4610,8276,5354,5123,1802,395,4478,5777,5145,50,8266,5768,277,367,8283,8275,7801,50,5683,3868,5418,8253,6625,316,5446,6920,288,1894,98,6299,3551,3738,6278,5016,608,3851,1980,6948,5980,6950,7837,5672,5274,5342,7748,3278,3605,734,5498,948,2521,4812,4296,7610,822,6858,100,87,499,7751,2584,293,7610, 2867,3739,1118,4210,1862,1482,6856,427,6268,1772,5851,6259,6828,4080,5116,7830,6253,8357,6862,6419,8139,324,1567,1564,7838,5796,256,5932,7548,6163,6715,6719,5960,8231,7964,7481,2845,537,5870,6362,5873,489,895,6610,791,6058,6703,7810,6388,5241,6390,6943,4173,4627,3429,282,338,1900,2835,7558,5684,8399,3549,7887,335,5944,3102,6063,2839,1165,6075,4832,1586,1576,367,1830,6025,1088,6027,6314,6029,1159,4777,1939,6519,3535,1037,6980,5569,7547,7960,6491,3680,2584,2723,6717,6748,5908,7553,112,5580,6377,1675, 5316,2876,5966,2856,6717,5962,5965,3953,5971,2876,5970,5963,5973,2879,7146,5596,5598,2663,895,6234,3743,6395,736,8397,335,6230,8395,5702,7591,2417,8408,83,3782,339,5826,7787,3227,1862,65,519,281,3234,99,4710,921,960,7781,1029,7783,275,7785,6092,7788,8372,896,5518,5370,6209,5546,2524,5986,5929,6714,4021,6717,6615,32,97,111,2616,4355,5712,5370,5830,6472,6515,4327,624,7673,5766,5838,6516,455,7786,6221,5239,3799,4327,5994,644,648,7800,6447,8302,5131,1655,706,1110,6713,5773,6460,8304,416,7817,8497,7819, 3852,7957,336,5636,6725,4017,3236,428,6301,7839,5797,6420,324,5647,1410,5804,5744,8561,489,6706,5984,5627,3692,3676,8257,3680,6535,4377,5866,6943,6725,8583,3643,6691,3685,8060,616,3548,405,398,3691,7847,3693,5035,574,119,5988,3596,6424,320,1798,279,8534,6059,5103,5768,2389,8608,6491,6060,8267,1061,4824,6093,8416,5345,6797,8620,103,8419,1577,8519,6695,2059,8414,8619,1584,8621,8193,8623,8625,8421,1570,279,4823,354,8415,8632,8624,1705,2389,8626,1935,8520,6476,5924,4090,8295,4553,4297,5836,8301,7814, 8567,5865,6674,6923,5810,8039,6869,5614,6555,6354,5477,383,6881,5891,5528,6682,5530,6561,8257,3640,8672,8602,6561,383,5834,8569,5803,108,5789,5807,5793,1679,8604,8373,6227,8262,553,5465,3659,8694,3553,4470,5471,8698,5026,8367,376,8684,629,8571,3552,8688,5809,5060,2993,8137,6336,7726,110,722,8150,7956,8621,732,8331,7294,2529,2794,8718,7001,7291,5347,8332,7314,3461,8727,8328,8721,721,8723,7979,7404,8733,723,8728,8330,3607,6602,8659,6353,4068,2797,3649,3643,6537,5046,8502,6608,6534,1564,8753,461,4082, 8141,6884,8755,5898,8678,1746,5892,8134,6891,335,3696,6118,6329,8314,8580,6181,5913,1683,5271,1263,4905,1088,6322,2829,4491,996,8784,1532,633,1804,8779,6028,1147,6317,8772,8778,5912,8780,1626,8664,8787,8792,8426,4077,613,7851,8788,8474,4247,8783,8803,5539,8321,6328,5627,8313,3730,5984,3689,6364,117,6333,320,7828,6346,6262,7832,5852,6265,8667,6605,1558,6607,6870,7954,3601,8188,7749,1862,1818,8817,5787,6559,6923,6334,6563,365,6597,1486,6568,8363,6417,6345,6088,6935,7018,6158,3660,6270,6942,335,4078, 4080,3778,6585,6940,8364,8861,7756,8866,8356,8853,8731,6871,4079,921,262,8856,7555,8879,3966,6347,8828,6246,6577,1653,8849,6599,3686,8867,8873,7834,6603,8602,8371,6608,4924,1809,5641,6874,5608,8844,5653,6009,4550,5341,6655,6657,3696,6611,8591,4270,5389,8412,2770,8327,8720,730,5346,8738,5074,4720,6626,788,6628,4726,622,6631,4850,6633,7610,293,5137,8655,6635,8472,6436,5389,5623,6874,8593,5629,8785,6665,4724,8728,383,5928,1801,6719,554,1410,8335,4554,6458,6636,8029,5389,8186,294,262,643,8952,3915,6497, 5700,8396,8938,3386,1802,6676,8811,8798,8793,6663,4780,6887,6486,8968,7118,3547,3567,8714,256,8915,4243,8971,7831,5537,8812,5915,8948,8406,8224,453,4225,1683,3399,8174,7118,474,4788,6981,4475,437,778,8941,6529,777,831,6722,8368,8582,1669,6012,617,3699,922,6944,6946,8366,8978,288,8323,8248,8896,6870,8374,8437,5583,7480,5941,7482,335,8917,8838,8329,8920,8745,6828,2458,5581,8449,3419,8455,5968,5586,5976,8452,8461,6111,5589,5976,5594,8464,9054,5597,5978,3838,8436,5557,4971,7550,7552,2447,8446,8131,288, 65,110,8971,2172,8991,1689,8580,292,277,551,8431,7640,6300,8613,4243,2861,1663,8842,5316,314,1645,6717,3949,727,3071,727,2109,5018,5794,4606,8630,8438,6071,935,6717,9102,6073,8417,6077,8389,496,5024,9098,3535,6024,2631,4145,4551,6281,6491,8957,8094,5389,6872,366,9111,7851,2071,8469,8263,4267,8937,8981,1544,9018,6303,3878,8884,8365,6239,8355,3704,8868,6588,950,455,116,6243,8879,1778,8784,6578,3739,338,6279,672,6236,678,6286,8566,6066,2997,7776,34,84,5751,3739,8706,3562,6725,8254,121,8710,5794,6953, 868,9165,3344,5211,4042,3613,1419,8298,5460,9176,72,6227,9183,442,3739,89,6878,7521,551,7565,1700,6787,8239,5051,1705,836,354,9093,3370,629,694,9095,8794,794,3612,112,3614,8298,4552,8955,7913,9188,1723,6031,8486,6603,9167,8708,5806,3424,8689,803,4467,8984,1116,7405,7891,2652,4738,7026,4523,7714,7387,1264,9231,2100,7698,7995,7700,7923,1159,4573,942,4403,7989,4752,1429,914,7413,8103,3292,291,7893,9245,7122,4016,7724,4661,4345,9239,1312,8118,5362,8021,7410,8246,6866,9026,8146,8148,76,1973,9228,4860, 3136,114,7988,7423,8504,3018,4305,9254,2227,9284,3140,9004,5926,9278,2460,9256,7229,4526,9292,2522,3137,6017,6019,5572,2636,8516,108,6053,2641,498,116,109,8837,2239,8176,9297,2629,1457,9289,1429,6986,102,882,5467,7928,91,9297,6619,8344,110,843,9300,625,2846,9284,3399,9317,6847,6864,6849,9271,8711,288,1818,1482,8895,8580,6001,4550,8901,1718,8602,5611,8906,1690,4264,5008,110,4663,5997,9131,8478,555,275,8400,8319,2667,6707,8306,6627,4724,6629,8928,4729,8930,4732,8008,6792,3829,5039,7925,9003,5239,4980, 4449,970,5624,569,5626,3643,3843,895,8933,4265,4226,4358,5992,941,9358,785,8969,4956,749,6026,700,8799,8428,1545,8501,6163,8616,5022,8385,7525,1033,8387,7937,288,6024,749,2630,6018,9116,863,8786,7843,3966,8408,4949,9100,8376,9102,8379,9324,8646,6072,1186,8643,909,6076,8637,2022,9016,8802,8974,8804,383,5616,6508,1631,8277,2071,6664,2120,8946,8735,7002,5390,8963,2541,8954,8935,3056,9120,8913,3386,9391,9355,3550,4910,3970,9397,5379,8958,3386,9361,2002,4083,8482,477,9407,4327,6382,6706,2351,3746,6656, 880,6659,8069,2814,9465,8955,9130,9398,9001,3948,3829,262,9083,6458,9382,5126,5877,7610,9128,5989,2911,6917,3347,9134,421,6579,6567,6569,9137,8869,1363,6250,8362,8881,6288,5727,8891,6587,8874,8858,9519,8875,8864,9378,9526,8606,5078,9142,8874,8360,6251,5859,9526,1984,8871,9141,8892,6256,9140,8860,6345,8863,8877,2579,9545,8874,6589,9514,6345,9020,9553,6349,6595,6578,8888,8378,9556,8893,8747,5635,8661,3932,9151,8316,9155,9505,6290,6285,6939,9572,1575,3754,8663,1712,7816,5064,8764,5673,9446,8522,6516, 5685,8376,5119,5204,5231,2215,5153,1644,8511,5111,9462,5159,383,8986,6458,9449,1115,5735,3739,5414,5948,4533,9176,5919,8549,9608,9216,5409,9607,8303,6603,5083,4373,6403,8552,6928,288,9164,9216,6724,5744,9172,8690,8565,888,9176,6702,6777,9176,9190,9322,4526,5466,558,5191,6452,6158,279,5155,6717,8382,5600,9199,575,9201,6112,882,5859,9206,6663,9176,6038,4784,9609,9187,5736,6042,3801,9604,7880,2958,9661,3739,80,9218,8245,7815,8552,8687,9224,9340,34,304,1410,1387,8496,727,8555,7786,9228,6475,7656,5714, 4518,663,313,3679,4147,1914,8658,8704,296,9682,8498,4079,7820,6772,8132,8672,6922,348,8676,8824,9509,8715,1876,9540,9550,8724,7611,1822,9526,9555,9522,7833,8830,6603,5633,300,8325,3679,6639,6641,3109,1100,6644,6735,6646,6648,679,6650,110,6652,8907,101,9485,6658,8911,7610,9451,6666,8947,8351,9403,6028,5012,9311,9174,256,9036,9312,7006,8744,6345,889,9037,9703,890,5720,542,3672,8734,8918,8729,8921,6828,1463,643,9768,9762,8919,3704,8730,9715,9123,3552,8641,3102,708,9581,2543,5216,8801,3535,9600,4570, 429,6444,4587,50,54,4091,104,9796,52,913,982,2950,4465,8595,9723,6556,8309,9678,7816,5789,8573,8563,9228,9077,9145,9585,4327,577,4962,8274,9447,8967,8477,9424,2081,3752,279,9628,79,8717,328,2083,8951,4841,6491,6021,9121,3386,3851,3727,9628,8262,9571,9819,9676,8961,7915,1429,6622,5808,6335,8119,2786,9626,8709,9847,4037,6239,9710,256,1798,354,9536,8989,8872,9523,9715,3702,9549,6941,6345,6257,9562,3608,9816,551,9147,9875,8746,9697,5632,9808,6868,6277,9153,3742,9156,3745,9574,3748,9161,5006,9176,5788, 6725,9628,8984,1778,9624,5736,9221,8686,9897,9858,461,4767,6931,9861,7399,9538,987,5896,9720,5862,6260,8883,9915,8885,6583,9270,6951,9027,5673,2145,8726,8742,9454,9770,9040,7018,7130,8741,8719,9776,9930,6345,5900,9030,7760,2582,7551,8440,8445,7255,7679,4468,8015,7433,8740,9927,9935,9757,7853,7958,7138,8229,9323,5435,6789,8240,7750,9775,9954,9038,9778,9771,7018,7181,8415,921,4175,4855,9331,4190,2525,7490,622,7492,616,8176,2830,7297,7916,7164,2932,9257,4617,2526,5443,99,121,6712,8965,7610,7130,9988, 7399,9214,7843,1862,8369,369,8759,8580,9504,7882,9598,1778,8759,383,9903,9675,5792,8187,9017,5487,5848,6860,9533,9563,9882,6927,6355,9754,3796,9380,2351,8532,9479,8193,6165,6108,6175,9328,6133,6173,6200,6171,6186,6178,6185,10036,6184,6119,6183,6122,6146,10039,6134,2865,6197,10037,6190,10050,1524,10049,6187,6144,10052,10036,6195,6131,10050,6202,6193,6147,461,5466,9213,8098,4526,6226,2958,10071,5470,6462,10076,6847,8576,9388,3689,9228,4124,4126,7920,4066,4670,8749,4761,4197,2809,4764,4671,4766,4762, 2994,7488,2525,9467,4557,4911,941,4665,9637,7012,4759,6930,10036,9908,10093,4133,4760,10110,10097,6653,335,7986,75,101,121,775,9836,8376,6494,8641,6717,10126,5578,4807,1571,7608,335,6024,4666,3735,3617,8424,3733,10137,3737,4094,5115,4914,629,4697,9070,4856,9805,3292,2993,90,495,109,8878,10087,3984,4200,10096,10092,4199,10089,4074,10116,4056,2797,5807,8012,6216,10108,10095,10091,4202,10112,4129,10115,10161,6624,3931,315,405,8763,6163,9838,9463,9976,2972,9118,8001,3457,10159,10173,4673,10113,10109, 3992,4076,8948,9186,4123,3979,9438,4193,10176,10197,4132,10205,4677,10198,10134,8423,1391,6324,5104,2162,5754,9459,9996,9671,4570,4124,3877,3753,10157,4128,10192,10177,10174,10162,10114,10206,4768,335,5994,4179,10103,6970,10131,354,10145,110,10148,6439,4147,1931,8286,670,8594,8912,7148,5363,10248,3689,2800,3672,10249,8422,4666,5956,8193,4961,9395,1901,4556,4558,4964,1590,8965,3548,9170,4378,808,1105,2527,4301,6549,109,10218,9375,7495,8339,10279,9119,9359,9826,3680,7816,10249,742,7781,10083,383,6457, 4570,9417,794,10270,8306,10272,4442,10280,4399,4315,10241,4798,6438,10150,550,268,655,108,72,70,79,86,1466,9428,6797,9105,9435,4829,1582,1186,9438,6078,8585,5744,8587,6682,8589,446,9371,5166,496,10260,8230,620,3918,95,4419,987,6980,287,5207,95,10126,1829,550,4262,9354,1E4,9472,461,453,666,10298,10180,5531,4945,10301,9506,3386,761,1213,647,10283,10184,6505,10353,7894,10310,578,86,10314,10316,2351,104,5135,10357,5640,4939,10250,1217,4301,6708,4836,6711,10124,6458,5390,1602,982,9431,9974,4846,4859,9373, 2388,10239,626,431,10392,5563,10364,2855,101,10120,121,825,9521,9936,383,103,121,275,2458,674,4697,6431,729,10367,9494,3978,4057,3611,10149,71,10415,1029,429,516,10190,10088,10231,10209,10207,10227,10232,4203,10187,629,405,10169,7098,4065,10158,10163,4196,10229,4072,10448,4672,10210,4754,2797,3980,10203,10225,4194,10452,10160,10450,10094,10090,10228,4678,8862,120,4261,10422,8478,8923,10359,4925,4439,10302,9516,279,8392,4555,798,8391,4916,10201,4755,348,7825,9290,3108,10208,10111,10230,10196,10436, 10233,10455,10442,348,6575,10459,10491,10165,10464,10164,10178,10441,4551,9373,6158,7851,10490,10438,10495,4763,10195,10172,10466,10454,4244,10304,4101,263,10351,10072,10186,6596,3746,10334,9620,7309,619,10345,10341,5677,3561,10344,10339,10347,5534,10099,10456,2271,8810,7993,10191,10461,10193,121,3313,10504,10449,10467,10497,8927,4845,5251,2008,10512,10547,10518,10437,10559,10439,10098,1159,2993,5807,8085,10445,10171,10465,10563,10493,10517,10572,10166,10146,4664,3733,10204,10513,10492,10451,10435, 10582,7476,8767,1721,10422,9492,9471,9839,537,10388,8548,6065,5962,9431,1165,95,4831,5230,7516,10565,2525,10153,2002,9529,10501,10581,10503,10516,10571,10514,10564,7592,9251,10566,3424,10500,10545,10434,10494,10582,10550,10453,3469,10507,4058,10427,97,10365,9044,10621,10447,10584,10611,10502,10506,10541,3822,3424,10488,10580,10562,10614,10573,10613,10585,678,3643,10329,3651,10628,10426,4060,6374,4141,10241,10644,10636,10178,10625,10462,10552,10287,10411,6797,436,9202,6101,453,373,8468,100,106,4141, 294,8942,9347,10471,10286,10414,10416,10431,6089,10524,7610,10378,4040,5627,10271,10382,10274,8350,9133,10018,320,10135,119,647,9865,8852,9868,3608,9851,8689,10702,9530,6063,10708,9880,6828,3681,97,6056,10703,7833,10705,6535,541,6292,9919,9138,9035,9833,8962,3552,9458,9544,9872,8874,933,8339,10003,4083,5495,10712,7018,5743,3552,5641,10711,10723,9515,8339,729,4503,3852,9526,3746,9834,9457,3942,9136,10744,5081,9807,8668,8833,8581,9569,9510,3424,1883,672,291,3551,643,814,91,3142,335,645,3730,296,5603, 302,10772,517,8775,1091,5568,10778,3177,10773,10781,7611,410,10779,595,10787,10074,6228,125,93,6596,3916,6581,8138,10277,10608,9159,9851,4251,1328,101,6945,810,10767,6277,278,10770,10790,10774,616,5283,1465,10795,9157,9891,9559,666,10620,9575,8851,6632,2526,378,6925,10528,8586,8138,8470,9159,5543,8842,9351,3863,10766,6300,10769,284,10771,10785,10780,10775,1091,5612,10819,1438,10805,1449,3749,1126,10824,1328,1723,5612,10809,10841,10812,10843,10814,10787,10777,287,10864,10847,289,10783,10867,10845, 10791,10869,5469,10784,3506,10786,10869,10793,301,10796,1335,7880,6300,4621,1410,6542,1608,10810,3739,10862,271,10844,10878,10846,10816,10849,10883,9827,9531,6284,9851,3472,10413,3739,10827,10889,256,292,116,798,9374,1623,115,58,123,120,271,1185,121,10920,528,125,47,10918,58,1925,10922,48,125,5867,10891,10842,10894,10868,616,10866,2315,10879,10816,10783,10900,4924,10905,760,9669,8577,10859,1873,3739,10913,814,372,10916,123,5466,10923,4907,5471,10959,520,10925,10957,3659,10928,909,10961,10931,10933, 10861,3950,10863,10873,10815,376,2834,10877,2504,10941,376,1743,10944,3851,212,345,5116,10832,9159,1165,10643,10800,10154,10156,285,8487,9010,111,8780,8580,4950,721,9928,9769,9759,8874,3834,329,2524,10480,6458,9409,2995,762,6222,6468,4327,10426,9779,9936,11005,9715,1477,51,11019,9965,8736,9779,5863,9564,10024,8669,1502,8903,10181,8905,10839,8580,9584,3004,6041,6036,5350,5460,3724,5463,9980,7398,10294,3535,10881,7521,10220,9113,10200,7670,5605,9336,11030,9724,8249,3674,8353,421,1854,432,9479,9714, 8886,8479,6252,9148,10758,8832,9725,8834,5673,2135,9849,3529,109,8941,8597,3582,9068,8558,8588,9905,10015,9173,8691,3558,6044,9168,9627,9906,3589,10248,11034,2737,8825,9511,455,99,9513,10756,9551,6337,9532,9542,5074,9552,11105,9715,9719,9867,9721,6583,9559,3746,8889,3210,9714,11029,10023,8895,9726,1629,6705,5679,7917,10318,6504,8980,8478,1855,10244,9615,3535,9484,8909,9487,10383,5232,5389,8988,8797,1687,8975,773,11055,8987,6894,280,8699,6458,10185,10009,5269,7816,9070,9072,4232,10026,431,2833,1429, 686,11161,629,9233,6093,2691,9431,3063,9304,5084,1571,895,10976,9929,6943,10482,323,11010,8224,431,578,9087,6093,9089,6868,8193,9092,9652,539,8389,11182,294,11170,5572,4078,114,2639,941,631,633,11203,10326,1449,8618,9101,9433,9103,5738,6070,11212,9106,10323,10601,9439,9002,8434,2351,8475,8979,9825,10370,10118,2524,6235,9845,11132,11226,10592,1862,8825,9863,8361,11071,9562,11069,9874,11112,11069,9877,9146,10730,10021,9722,11059,9884,6276,9152,3741,9570,2124,10820,3747,10853,9161,3751,689,9891,3547, 8559,5744,10909,8665,6533,9220,11093,9222,5628,4550,461,8256,9582,6381,10028,4434,6091,6162,6797,10033,10037,5748,10053,6171,6174,11286,10067,6200,10045,6180,10048,10047,6179,10041,10054,10061,10034,10055,10059,10057,11298,10063,6140,6199,10059,10066,6111,8468,9071,577,3792,7569,7710,4740,619,11174,578,11176,354,6148,9423,10370,9860,10697,9862,10755,11115,8829,11117,3948,6330,11240,11333,2759,1487,3950,10686,10020,8892,11241,11247,11343,11337,292,11262,4319,11330,9541,9868,11249,10023,11060,11252, 10762,1612,4464,8837,1126,6284,9576,8138,11348,10812,11258,288,5736,11267,10911,10953,5512,9749,749,6312,8578,409,8580,10714,9402,11376,703,6501,10328,1088,10013,8586,1523,10479,10484,4938,397,11142,8593,10292,8596,315,2272,8598,9704,10587,9706,9845,10026,6639,742,8762,5265,5256,7555,9170,8337,8908,9486,9744,11225,10591,10526,7329,2043,9441,1015,11409,6684,8427,7756,689,5256,1088,11425,1823,11411,731,11423,569,11432,3635,6676,3320,9491,5145,11156,10384,5389,9490,9460,1631,9597,11445,6157,2065,11436, 616,11438,3646,11440,7854,100,11430,1391,11456,9171,3684,10118,1058,6874,11463,4082,9012,376,11404,1743,335,3788,4724,305,3550,8123,9566,11405,11091,6603,11479,8895,1842,9176,11388,11095,11089,9629,8503,290,4525,11318,452,9033,5439,9643,9651,1905,9204,480,7030,9895,11053,9664,9184,11150,9612,9662,9191,2406,11092,5754,11272,9898,10081,6682,9228,6639,76,4079,3561,6634,3056,5360,1699,9387,6682,3672,11523,538,1410,895,7181,1172,11524,1410,11526,1631,11528,5231,11530,3651,1713,11533,3561,1189,1524,369, 9311,8478,10793,77,3703,8212,1304,7114,9671,6464,11050,11510,9792,4459,10237,8821,10290,450,550,10997,8941,5627,8753,1830,11564,3535,9781,11573,3643,8842,10674,10676,1206,3548,6874,65,10675,10677,8673,3651,6204,6227,2221,9366,4961,709,1883,5449,495,8299,5129,7802,5354,9320,9369,8998,4649,9E3,8478,3839,11568,1566,11570,9445,5265,11580,8674,5265,11471,9698,9014,335,9343,11099,9228,9346,3863,11618,6883,6008,4381,5641,9390,10524,262,9357,8471,9493,9360,8408,1843,9364,8404,2351,10473,9368,4725,6630,9372, 4861,10914,7581,1263,8429,9479,11562,7640,9377,2524,9498,9694,8507,11578,9496,3864,11279,6163,9500,3535,11447,9393,6657,9469,11639,11419,9598,10211,9401,10139,749,9404,10782,6462,2627,9043,10667,11192,5964,9049,8457,9051,8460,8465,5975,2876,2884,2663,10133,9416,11577,3801,8360,6874,9414,5753,5408,11042,5401,1801,11454,1685,9074,1807,11679,794,9419,2632,9831,9422,11047,11678,2342,9426,8410,6249,9783,11211,6067,11213,10319,11216,10321,6074,11218,10325,2642,9318,7805,11016,5618,788,9747,11180,731,9835, 8953,10687,11676,8473,3710,8934,262,10101,4558,9470,11751,8479,9362,9476,495,9478,11282,4570,9481,11129,4570,11139,11416,6660,8932,11749,10284,11640,10286,11051,2770,11049,3801,11224,10362,11571,71,5884,9845,6662,11327,9853,10287,6566,11103,10717,9916,9041,10710,9518,10738,8948,6289,11352,10718,5074,9525,11797,8862,8876,8865,11108,10704,11802,11351,11122,6260,5856,11796,11112,9876,11107,9526,11242,11331,8358,7018,9547,115,10994,11821,10724,11428,8890,11827,9515,11114,11800,11332,9558,8887,11119,9561, 11816,9881,9023,11086,11619,1742,11357,9887,11255,10830,10821,849,10854,11375,794,6312,9228,10296,8754,4511,10214,5271,2637,2786,11860,6326,8422,749,1002,6317,1398,11864,8426,11862,1285,11871,1485,6653,1778,11625,10651,5269,10253,11394,11521,2626,3687,10507,8569,5116,882,806,511,9574,7112,10570,10505,10463,10612,11896,10665,10706,323,10336,9323,2794,1595,11014,9434,612,4553,95,5207,2860,4861,11911,10339,6657,10346,11093,457,121,4359,8463,477,3833,281,1900,2872,102,95,10699,10576,110,11888,9125,1143, 11890,107,11892,7735,11895,10551,10549,11898,11942,10627,10640,110,10606,3202,9540,4882,10622,10574,10646,10583,10623,10165,10507,11949,11826,11894,10546,10661,11897,10638,10450,4956,10136,114,9708,2225,10105,10141,6726,11787,8847,10287,11491,10743,11831,10757,11250,10759,11075,10761,11847,421,10801,8871,383,10277,11826,9892,6284,10129,11935,1119,11937,11939,11995,5305,11889,4079,11938,311,3747,10002,11570,8846,5016,11818,11804,11829,11121,10731,11113,9918,11981,9557,6947,6534,6365,3676,11126,371, 11039,5134,11128,8966,284,6448,8126,7654,7697,8130,7555,8129,7970,1137,7641,7091,10008,849,9955,2771,8064,7648,1263,8E3,12048,7555,9998,1467,12038,8065,12040,2775,7887,5006,68,5007,282,5419,5539,8580,8339,993,624,729,11541,4235,10285,9472,455,961,6239,7982,2180,9176,5239,5781,4492,291,328,2221,74,6906,12071,284,7808,6516,108,488,3550,555,414,431,8291,5111,3263,4327,1518,575,11643,8402,9365,11223,12094,5825,414,6213,12099,4713,6814,9480,3453,10734,6213,12087,98,12089,6441,10247,120,5196,11495,6480, 8551,1676,68,11683,5262,8679,11626,12010,371,11824,11961,11812,6828,11824,10802,12019,10022,11842,11125,11076,5274,673,1678,11442,5111,11444,11143,9840,2566,11413,10477,11672,9356,82,8476,11677,11451,7180,670,12122,32,11543,9267,10088,8671,10587,8602,3672,287,6889,1751,668,670,287,6680,12134,11481,11464,8446,3076,12168,12170,1031,10546,12173,1738,11099,1754,12177,12184,11844,1823,12196,32,12183,12174,12195,1683,10117,11752,9392,4551,10657,4229,10522,11757,9399,1626,101,6138,6246,10368,11133,10286, 11447,12214,10423,608,299,7851,5427,7555,11276,2225,12229,8862,11666,11662,8292,11664,3801,12160,4823,4962,9396,11750,12215,11746,10753,960,10589,5145,11450,12155,3507,1506,12189,5361,12191,12172,3791,12178,6683,12200,6646,32,12260,8143,5912,12182,6672,12198,11631,11426,12207,462,11415,9743,11771,10477,5559,1822,12158,11782,9139,11753,110,11755,10237,12163,11758,11007,9378,12236,6447,12238,7720,2932,3672,12255,11529,12192,12259,12270,6890,1742,12176,12264,12302,12179,5255,12181,12202,12269,12204, 12185,3672,12273,322,327,5239,12190,5625,12300,5480,12307,12261,9707,1058,12197,12313,12199,12326,455,12268,1745,12194,12185,11470,1708,10012,11271,9904,8572,12217,8574,11129,10026,11245,9850,11674,9822,7610,9841,1524,9830,9832,2043,11747,7570,11234,3751,9531,9843,648,11785,5131,9858,9984,9850,9858,6874,11489,9857,11491,5054,8825,11820,11834,11822,12216,9078,11246,11342,11809,6863,11983,11074,9885,11253,9154,810,9889,3625,9158,3557,1862,12193,3632,11099,11461,5043,8756,6603,12396,3642,12330,11457, 6685,5485,11158,8552,4304,11063,6564,8849,5807,9526,6579,10991,11840,8359,12018,12377,11828,3796,4835,6710,8827,12419,9969,8849,10824,12422,6942,8831,3629,12025,1786,2392,431,9663,4526,965,3021,6046,3801,12442,431,9658,3801,368,7709,11948,9366,12451,12440,7398,12450,4321,12444,4093,5006,3065,7490,512,12412,7829,11239,12428,8814,5444,9025,1869,12148,3679,3E3,4368,7864,2770,2623,7758,6796,8193,8041,7054,7375,4978,6806,7768,3260,7770,3264,7383,7279,7385,7281,2475,7863,11325,9296,2925,8018,4286,9412, 4277,3434,2695,3414,6842,9998,3286,7160,6972,8244,9986,3334,7337,7941,12253,2709,2395,2711,9248,9282,2530,2076,7259,8226,4156,3213,7451,2441,12521,6781,9282,2499,12507,8218,11142,2215,3382,3155,4793,9295,7398,3103,3322,2942,12522,4475,12545,7258,503,7630,12515,12551,7338,10308,2475,7202,11227,12014,1946,12050,11952,1446,7922,7997,12561,2419,7633,8211,3535,12510,4899,12509,2766,4489,10444,12499,2552,12541,853,12512,12127,7535,3490,3120,2592,3151,12548,9291,2482,12536,12542,9949,7706,2507,7337,4949, 2482,4246,1990,2208,12546,7487,2913,12563,10170,7921,7699,3111,2815,2896,2246,12599,3223,2941,12532,7907,7398,12524,2897,7619,11726,12612,3498,2733,1664,6213,8111,9296,2847,9948,7869,7340,3161,12581,866,7610,9314,291,9281,12549,12600,8124,8782,12478,12519,7321,9261,3173,3518,7708,4647,3419,6965,4054,7029,4178,7845,1088,11062,2475,2553,12630,12620,3207,3336,2402,7396,7694,12666,355,12642,4873,7099,3909,7254,2316,7196,12605,3480,3126,2312,12681,12625,3145,8125,4606,2482,3162,4948,12624,12621,12618, 8108,12544,12529,7623,12538,3285,3482,8072,12670,8074,12579,2753,12637,931,7614,5604,12554,7533,12571,4790,12500,4346,12575,12613,12520,12590,2302,3328,11267,10032,5048,276,4804,6112,6748,3377,3045,3509,8243,12584,12591,2366,12053,12698,2935,2441,4923,12621,3121,9286,2475,11556,5124,7146,2208,10147,8375,9941,9064,9944,9066,12505,2933,7085,12685,12640,4213,4649,9335,12647,3530,3390,10722,11654,2824,7655,7705,12715,2366,3436,7973,12676,8214,6826,7348,6936,12636,2400,9998,12535,2509,12703,7469,12671, 9282,6088,3450,2522,2993,10275,11144,12569,112,3527,12696,12523,12667,3389,7669,4243,12540,12783,12543,12801,3168,7886,12745,11421,2933,3396,12624,9939,9062,7549,2035,8444,12756,2894,3327,2902,12588,2150,12619,12809,109,12665,7148,7754,7101,12625,7647,4028,2316,2155,4798,12752,8193,9032,9197,8383,12663,3208,4505,8184,2117,3328,8025,5517,9284,11718,6733,10337,9303,2638,2640,12757,3126,12553,3513,12501,4497,8020,7409,8121,7555,2773,108,12480,7851,2581,8195,7053,8197,7057,8046,7767,8048,12489,8050,7771, 12492,7773,12494,7775,12813,12562,4928,11199,5583,12656,7574,3474,12530,3199,3225,12849,7323,3334,12718,3046,12872,8076,12856,9323,7544,8208,3037,12668,8222,12772,12295,3334,12687,12646,8987,12802,12627,12904,2750,12749,3517,12732,12708,8102,12527,7466,3537,9247,12533,12643,2366,12497,11722,12935,3342,3271,294,4923,4124,12792,12431,12564,10226,10645,10624,11944,10626,10496,3387,2909,8007,12282,12606,8117,12502,12867,7526,278,3076,7390,12650,1362,9983,11079,5554,7959,12818,9031,8381,11498,6791,8333, 9284,12742,3328,3220,12925,12765,12626,2288,5955,10633,5583,9046,5585,2863,2871,9050,5590,2524,9053,11697,5974,9056,12997,8466,9034,12682,12648,7442,12966,3542,3321,3150,7197,12930,2718,12546,12695,12901,3166,2451,12559,12359,3497,7906,12800,12585,3334,3509,8183,3044,12824,2934,2246,12799,13015,7942,3280,7473,7086,12693,12797,12517,3395,12786,7597,7503,12358,11496,7601,3367,7603,8167,7606,7514,11700,12954,12766,7672,8107,13032,11013,12938,5926,12475,8084,10544,12635,12586,12593,12582,7951,12735,2255, 12690,12847,12713,12557,3053,12629,8994,12596,12506,12941,3344,8154,7543,8156,7545,9319,9321,4825,2521,9326,1880,4862,1417,9330,9415,12625,3509,12583,9194,13070,12774,13041,6842,13026,11080,11903,8162,11319,7386,3064,2400,3073,3069,3071,1592,13112,6652,12679,12653,10389,8193,12895,4189,12846,12913,8068,12700,12528,13101,2560,8242,12704,12513,4638,12716,9264,3962,4010,12565,12610,3965,3497,12691,917,12863,12597,7742,13011,12518,2896,3215,12714,12916,3513,12617,12721,7125,12586,7196,13039,3053,431, 12831,12549,12632,4697,12764,13064,12917,8011,9789,3801,1936,12981,7237,12926,13028,12516,13156,1983,12782,3499,1149,4895,10525,12534,13181,12627,12804,12033,3413,13102,13055,13160,13003,2896,13194,9716,3179,12928,12904,12775,13152,7012,7345,7976,8215,12780,7018,3131,12898,3520,12934,5926,1936,12784,13187,3114,9253,13148,11441,3481,13150,7326,13203,12829,3219,6213,12674,13100,3315,12525,3540,13179,3201,13189,9792,840,323,3235,3697,12957,13195,12905,12873,3246,7267,7762,7269,7764,8199,4979,7273,8202, 8049,7381,8051,12886,8053,12888,8055,12632,13167,6474,3328,7090,7155,8947,12890,2333,2312,12979,12810,6779,7660,13057,13221,3126,2181,13225,12939,3543,7132,6640,12624,3103,13066,7316,12624,3154,13125,6843,7421,12789,13281,3356,13080,863,13082,5583,12910,12495,11459,12871,7502,4163,11317,6982,3420,7930,6756,13048,7934,7607,7936,12731,13028,4867,8192,13134,12580,13291,8346,13265,12058,12812,3497,12840,9940,12842,12974,12844,12976,12568,13273,7925,8160,13044,13308,13046,7932,6988,7512,7935,10603,13334, 13244,3185,12776,7736,7346,13207,7739,5074,12944,2521,12418,10433,10635,11957,10662,12951,10664,10519,1936,12601,9126,2371,13004,2002,13031,13027,13222,12905,7331,8033,13133,8099,12586,13097,13068,13099,13368,13054,13183,12710,11080,13178,13213,7725,13024,12928,13145,3280,12771,12043,12736,13231,12740,3199,13234,13016,13146,3475,2035,13371,11080,13025,13275,12711,13154,13283,13014,13372,3126,7487,1862,350,10356,5866,8580,6694,11153,12872,6300,12367,6838,10886,4810,1410,11184,11578,9082,9367,11392, 9219,11030,5845,9015,9443,12065,11277,3679,5356,741,12503,6322,9752,11621,9883,11984,8249,9164,98,661,7955,5661,9910,11065,9866,12432,11982,10023,5140,11907,6166,12473,1511,1336,13453,7594,12624,2830,4593,13325,13220,11459,13453,12055,12051,3584,1672,12476,12498,7398,13473,7394,12811,13476,1623,1890,115,7121,7307,12908,13107,91,13301,12889,13490,12121,13487,13274,8528,2770,13473,13305,11222,6754,13310,6985,8166,13313,13051,13315,1164,5912,12918,2441,13372,13453,4432,12595,11508,13501,7671,12594,12634, 9608,12121,7468,13293,12705,13485,13491,7734,7238,7289,13351,12779,13353,6828,13486,7165,13010,13127,8104,13491,12724,10337,5435,5049,5562,5052,4706,2829,13491,13522,13528,12689,1250,13521,12607,10445,6643,8516,12609,4688,11505,13525,7206,12511,13381,9183,12121,13266,7747,9769,9656,13575,8191,12481,10337,12483,12878,7765,12880,4981,12488,6809,12884,12491,4988,7384,8080,13316,6970,1890,7523,12960,9854,12868,12963,13556,12121,12047,4064,13565,8002,12273,1467,13478,13348,13280,12675,13350,13206,13540, 7978,5074,13473,13599,12866,13601,12962,12567,2771,13470,6751,13306,9290,834,13340,13512,6989,7513,7042,4177,13579,7292,13074,13500,4817,13572,8179,13069,9603,13491,7659,13504,9634,13570,12034,13136,7453,906,13608,13567,894,13596,13628,12574,12808,4475,13506,8014,13559,13320,988,13612,3243,13077,9323,13584,13249,8198,8045,8200,12881,13254,12883,13256,12885,13593,12493,13595,13604,115,3145,13574,13492,7628,7926,13338,7370,7929,8164,13311,7508,7604,13050,13637,13095,290,13482,13062,12602,2351,13543, 7745,6820,13614,7974,7014,6825,3193,13208,13277,12969,13651,13474,7166,8078,2727,7170,12911,678,9205,6362,13453,13455,108,558,694,13569,13691,8116,9239,12738,13561,1890,13531,7638,13533,9282,13611,13741,13644,13376,13646,7135,13648,13488,13546,4313,13469,13747,13503,13056,13690,7121,13622,4930,12961,1954,8022,372,13491,12852,13720,13493,13581,12874,2666,12876,7373,4975,8044,12486,13253,4983,13255,8204,7382,13684,12887,13686,13727,8843,12577,13171,4526,13709,7593,12787,13532,13377,12706,974,13670, 13081,13495,11496,13498,7355,13473,9958,13496,11174,5382,11340,4802,6719,12338,11475,1890,13731,13733,8564,8503,8836,9748,11484,967,454,1137,3578,3568,11399,407,8579,13442,922,11381,12661,8983,10327,3552,4377,3567,8589,11398,406,3581,409,8682,12029,9856,9223,11491,9228,5466,8702,11646,12029,13853,7366,2958,13856,8700,6462,13859,4327,12125,648,8695,2351,122,13862,4570,121,13869,6554,9673,12130,10014,9852,8249,12403,11591,12303,12262,8972,13832,6925,5980,13879,8602,5484,8145,6921,8582,8580,477,2400, 11025,6910,7645,11021,3608,13821,11180,12434,3670,5035,274,1887,6919,11492,8897,5412,3561,350,413,5201,1617,5688,7796,7428,10239,960,13913,329,11740,7813,6516,10817,5223,6496,12288,12245,726,994,65,552,450,7599,11232,12164,12252,9139,9793,11657,6714,1706,9431,11284,1706,6011,13883,6013,11714,11427,3796,6496,13922,5109,9689,11765,6392,9594,12224,11554,13672,4526,5207,6432,13922,5246,5510,6443,6496,5094,840,5167,7791,5100,4023,5103,5689,3093,8505,6698,5411,13920,11169,13929,11418,11758,9791,8432,6496, 5165,13974,5142,13915,5146,4636,5172,13480,9989,5400,13921,454,12855,12030,12020,13939,2814,13966,5209,9210,5211,13996,6453,4716,13918,5160,13955,454,14014,9589,13980,3818,13985,110,13956,12982,6163,9602,1641,6496,5139,13994,566,14021,5147,5102,7795,9591,8227,14025,7470,8278,6496,6319,8541,4713,8543,9664,14025,9606,9611,5618,14025,9614,14053,4784,14025,9610,5302,4327,1799,836,14060,4455,8652,6516,14063,575,14056,5247,14067,9480,6496,8101,5180,5145,5182,6516,5234,6431,5226,13988,12215,11976,5663,3863, 6415,12468,948,5076,5070,11797,5082,6401,5085,9580,6355,9886,11254,421,11370,105,5731,2059,13982,10951,10912,644,10954,13713,2954,9085,9439,3547,6211,9350,11036,5455,8691,3536,6037,11709,960,12455,13186,5754,12459,13485,11045,553,5621,11778,11513,4243,11777,13860,5765,11514,11073,9622,11843,12271,8845,13884,10833,6926,11356,8670,6300,9344,9709,11328,11789,328,9512,11792,12378,773,11799,12140,8857,10737,14090,8190,9528,9713,12016,11817,2450,14168,10021,3608,12138,9871,14173,11110,2566,9718,12421,11068, 11337,6579,11120,11072,13437,11626,12436,10698,11702,5282,14119,5524,12503,14118,11633,6010,522,12275,8910,12277,13242,14122,11708,11040,11043,9483,8723,11020,9039,6588,2095,11596,4221,8925,9369,8927,4728,10827,12795,9464,11773,6163,12251,2814,14137,4533,11743,9453,13578,773,13964,12620,12357,629,12249,9596,12073,13019,5564,14028,4327,11779,5567,11685,3231,13238,9848,12247,11104,12220,11233,11420,2529,11712,296,8808,14001,9023,14252,14008,6238,3732,11383,48,10289,8677,8894,8577,10292,11624,700,14267, 14146,815,3979,8263,12947,10460,11964,10194,11966,10665,10473,10182,6275,14084,10423,10085,5653,10458,10634,12948,14281,11943,14283,10519,8390,11183,13435,5684,10594,4232,4307,10597,6717,10599,11219,13052,12944,10189,11962,11953,10648,10637,10610,10639,10604,10456,14292,13358,14294,13360,11965,14317,11967,1523,11728,5583,10320,8635,10324,4832,11866,794,11382,14336,6481,10358,10300,11142,2814,3746,1482,8842,1027,14006,6247,11758,10222,9828,10511,13138,14323,11954,12950,14297,11946,10211,11969,11971, 2239,11973,11970,3617,11235,9910,11237,11980,13461,8874,10714,10716,12416,10720,14164,12144,11123,11842,11356,9568,11987,8605,10189,11362,14147,12393,10806,10808,10890,10972,10813,10975,10787,13927,832,10850,10901,11330,9162,3548,11532,11539,11162,14121,13396,2071,11407,11886,7894,10307,1429,9985,9113,13094,10695,12385,14142,3548,83,645,112,10510,11627,10950,2225,9896,11266,10849,11435,13950,2239,8788,13903,11032,303,7816,5271,9752,9228,9756,13897,9966,8722,9931,9656,103,12298,5231,3108,834,3782, 5657,9331,2800,14452,6906,1847,2969,13449,11031,6406,13447,5422,13893,1671,10557,14354,91,834,10733,4911,1578,14453,14459,44,4724,259,673,44,8876,1110,115,103,111,44,14475,739,3252,14488,757,114,50,694,9328,629,260,9820,4833,14456,7183,6937,14473,14487,14458,2446,14478,100,14480,14482,921,14485,14505,14454,14492,14514,14459,3839,14494,4862,14497,355,6657,12273,14442,6668,9758,14211,8874,3612,10122,14107,12769,14232,13791,7398,13990,7230,109,563,4724,453,367,342,9210,11154,11786,14141,13904,8771,500, 1702,103,11485,12135,14275,9572,11842,14555,12185,3630,12131,5845,12066,345,11186,5786,10702,13431,5194,6213,8288,2483,14566,645,9482,6703,6213,76,14575,4464,10702,10079,6703,6694,14540,14574,5123,6427,14140,14187,11880,11402,12335,12405,12186,9899,6603,12265,5265,13889,13953,9699,9684,9479,10026,1797,8934,13930,10423,14608,2632,8341,14459,5791,13943,12153,10369,14240,12223,12244,14611,311,5137,14614,625,85,10726,12357,11282,13938,8397,14435,6406,4837,1029,10465,9686,2794,14027,13175,6974,7045,3461, 14641,13750,4466,9951,4102,12624,7990,2659,14640,454,13229,13157,14653,629,14646,13382,2117,2794,8114,3461,13393,7556,14650,12745,8831,2808,461,13464,13825,8315,14383,9862,2521,8962,111,10105,10840,10768,10893,12169,2225,12471,3759,10874,2900,6359,935,14398,9283,2095,10765,10860,14683,10973,10936,14394,10869,10978,10872,10896,14689,10982,10882,12469,324,14687,6952,14121,12761,14005,2839,12858,9305,12860,9287,9279,9334,5751,11557,5199,7024,11951,10337,13491,496,7810,9236,6619,4649,9332,9279,4923,8960, 116,13240,3545,2814,555,1847,5135,293,10727,745,10729,14609,10477,12761,14656,2457,13262,14723,9290,5954,9284,9998,8036,12970,9957,12841,10337,12843,6112,9962,82,10134,9061,13631,2666,12754,4703,12822,1018,13165,9316,14756,9318,689,9320,12768,10319,13089,2018,9327,9329,9115,13095,14743,6360,8345,12503,14711,8389,1058,10888,496,1419,13396,3348,10242,100,118,4464,10344,12363,121,14115,383,14711,12465,14155,8850,14251,14371,14349,5231,304,11119,3699,8944,9452,1106,14783,14162,11798,10667,14182,11836, 6219,8859,12016,11069,6579,12431,14162,1699,14820,6598,14822,6663,14229,112,14374,12013,5390,10393,14847,12417,10799,12428,14839,8888,14842,474,12425,11889,12427,14378,14239,11472,14855,9677,9539,11808,11801,11775,569,14840,6089,14856,12014,8856,14854,14821,9677,11833,14838,14819,14864,6852,10901,2549,14827,11118,6598,11839,14861,14869,616,14871,69,14842,14634,11985,10026,9746,4724,13318,13582,3801,494,13404,2375,12900,5460,14844,13649,13759,4123,12555,13197,14899,8123,4489,12688,3535,8952,10311, 13163,5926,1809,3078,1754,13896,14527,13898,14529,9715,14915,13536,4276,13205,7015,13352,13619,13542,14844,13245,4971,13775,13248,8043,13250,13677,13252,8201,13781,13681,13783,13257,13785,13259,13787,6578,431,14753,12967,14844,9170,14570,4526,5559,14129,9282,5559,14126,12549,8093,14254,743,10372,108,14959,594,14904,7618,7464,13326,372,14940,8173,13396,8176,14924,3105,4046,12451,9234,4742,12657,4744,913,4937,4243,14978,7632,12547,13389,1453,1770,12231,2239,12233,1623,14983,13722,8155,13724,14956,2081, 14536,12832,7730,12834,431,14681,14751,13385,7682,14912,14905,2483,3477,15001,3874,2941,12685,14998,12622,12589,15027,1362,6748,13537,7100,5563,14915,12937,3957,13483,13059,2071,15031,3539,12827,13022,9291,7359,8089,9255,12035,14293,9730,9242,12611,14915,13375,7192,13294,5926,14915,13328,198,12972,11283,6788,7964,14768,10384,7722,7106,13006,3292,13035,14914,14844,13268,15071,13211,109,12685,14915,13021,13276,1870,1671,6250,12421,8478,431,8493,260,262,1889,121,7025,10477,290,13706,13367,7135,14844, 12537,15052,858,7430,15061,13744,13664,14909,13795,13743,13797,13485,15104,15108,7447,15110,15050,4942,13667,14903,12848,9251,12555,4923,8949,14934,15016,5563,9114,9420,14741,4301,14932,13475,13754,12049,12717,13663,15063,15117,8106,13197,15031,6996,12645,13519,13708,13484,15015,4907,7240,510,14242,11558,7239,12678,14843,8945,7890,3078,9729,13565,834,9735,791,12273,2082,9998,5132,14233,12523,14235,10523,14750,14203,5769,4446,13132,14647,594,15084,14996,5684,11141,2839,8515,6620,7030,14844,12836,7361, 7428,15112,6995,13285,7940,13401,15075,13283,13406,5554,605,15004,996,15006,14982,15162,7910,3339,15120,9450,14983,1875,544,14871,7610,1637,14976,15053,13654,883,9266,12257,13625,14995,13283,6840,15193,13395,14908,15211,15021,3501,13505,14844,9998,12027,6777,15144,12914,14407,9603,14844,13366,15126,7463,12556,15249,15081,15231,15162,7401,15123,4526,1637,14922,4642,13170,13319,11780,13063,21,7344,15131,13814,288,4738,4374,11574,10997,13851,14135,9819,14572,14587,10243,13641,10870,14246,14591,11124, 15272,6531,12409,12130,14425,4781,13987,9837,14619,14972,1691,8430,6093,13945,9646,6169,457,1697,4707,6375,4317,4710,12097,11933,15201,15140,9239,3548,9964,14443,11027,9968,2022,4330,14473,12152,5377,15293,11723,1116,5994,6970,2157,798,9693,11443,15322,12165,14411,13423,5771,2175,14465,6491,11012,5513,11668,6210,4411,10290,10288,4478,2233,2854,14082,9301,14261,11758,6304,278,4744,6656,576,629,1419,115,2221,1516,3776,14348,15339,10332,15162,15079,6094,1299,6874,6410,1277,11210,9429,11212,10598,9436, 14333,6077,8636,11208,2342,10988,2225,13848,6726,1544,5391,2700,629,8689,10727,8521,13983,9586,6502,14971,15323,4078,103,1516,15394,15338,5768,12211,4319,10522,14237,15321,12221,12560,10520,10144,10522,825,608,5239,12091,4576,4708,15305,6377,6213,15146,13563,3455,15166,963,15168,1188,8209,6050,14911,6491,1910,5354,14805,837,686,7851,8176,6900,8965,13018,14972,11167,753,5141,1588,99,70,1847,643,15336,802,8525,11185,9086,11335,8438,11190,9431,11193,9094,5563,6906,1678,14449,12171,746,13908,8209,3611, 14021,13917,14040,2758,10539,5755,5225,15350,11155,15331,13940,10118,11313,11525,6362,1713,11160,11314,10348,6792,15433,7111,11658,13965,8306,15207,1015,1713,9170,15209,1588,14105,1313,12747,4539,9818,10221,2099,14926,11003,14210,9967,14446,5855,1528,294,14963,7398,14782,575,13969,9448,12124,78,455,9841,1781,115,14715,15457,9790,575,1900,85,9071,3728,111,1567,10935,6032,9683,8499,9702,8485,6458,12320,9386,9855,15345,15545,9701,8556,432,15303,4141,6376,5212,3393,13958,11671,15389,613,8689,15313,14928, 14444,8737,15517,3948,15433,15165,956,287,15167,8977,679,12273,11537,15344,8552,12132,684,4411,15469,15227,1033,8496,4411,11324,13059,4260,11229,10834,15351,14085,10696,11788,14879,14169,14862,9698,12414,7816,14894,9677,10386,12426,6593,10738,14876,12085,15607,14895,6918,8582,14382,14101,320,119,15536,100,4738,1883,11548,9311,11372,14110,376,1064,6552,114,51,10971,14698,14393,996,15633,8274,15636,10981,296,12457,4586,10979,14870,551,837,120,52,3060,11179,1653,15650,14104,87,15624,14708,6283,14387, 11850,5564,15624,5641,15627,11524,15629,10952,15631,296,15641,575,15643,5027,15638,10974,15640,318,15675,15654,14395,14430,1391,669,728,15652,15683,10869,11314,15651,15659,690,14692,10944,5736,10908,14426,11338,14109,10914,10955,10917,10919,3035,3189,10922,15707,3440,15133,2632,271,571,12075,125,124,470,5605,3666,15678,14700,15680,15634,15676,14706,296,14396,12076,14704,6216,3620,287,14113,454,6078,15644,288,15467,652,10944,11364,9159,5736,5834,11599,15433,371,15630,15703,14112,3364,14114,15737,15677, 10811,14699,14685,14363,15681,15635,15690,10898,11274,14693,15450,14390,10910,15671,15751,1302,1713,14871,14747,328,2541,15734,15753,15736,6825,401,15722,15759,14705,15655,34,14703,10940,10897,14707,14693,9651,15775,12654,14108,11373,7148,571,15778,435,15780,15637,15757,15639,1015,15674,15762,15738,5275,4550,49,10789,15760,15725,15763,376,15729,50,15661,11369,3739,15687,15693,15660,6899,15770,14111,15772,15657,15652,15800,608,15802,15721,15804,15679,15732,6911,15832,15754,6825,15786,12464,10819,1862, 5857,14744,13908,14813,15729,14089,14890,9022,6926,9618,6402,15849,14189,273,6430,15291,15598,10423,5123,15694,1900,1883,9670,14105,15509,6838,11186,13424,10781,8376,15462,9091,2700,9202,11190,2616,15318,6859,14610,8478,632,15325,1973,15328,12168,12154,14009,15341,4606,14533,9601,5354,15479,14052,14061,7164,11041,15534,8099,14128,9080,9296,11131,13944,15376,14307,15378,11219,1901,9102,15432,11601,14047,5510,15365,10848,4550,15900,6509,6210,4550,14065,5353,13926,5291,14071,15925,15895,15348,15862, 15483,15411,14240,15479,5314,917,5316,5330,5320,11214,451,5323,5325,5327,5329,5331,32,5319,5334,5338,5318,5335,5330,8389,15397,12956,14534,9416,291,369,9112,7493,12045,15740,268,15588,12321,1285,15472,2094,5754,15349,11136,14618,15938,15446,15487,11540,15489,11159,15983,15493,10118,552,5825,15868,5631,15863,8478,15523,4770,8664,15497,13485,14051,15907,16E3,5407,5306,16002,14967,11197,3728,14301,8995,11601,15525,5829,6516,13911,11710,15904,4526,11781,15963,3680,13228,15624,15868,14104,648,15871,6703, 3783,15583,12130,12132,15443,6902,15398,15332,11228,11784,9823,5759,15484,1294,1862,71,495,10149,12297,308,12062,15360,14438,8793,9345,12084,12111,120,12120,12168,15436,14068,1588,10408,15368,12103,12079,9216,9381,15921,5355,9204,982,777,15280,16065,12105,6158,11645,15435,16069,12093,117,12095,499,2221,12113,3056,2681,16080,885,10912,11688,8432,12117,14473,12086,12088,15418,16080,12109,12096,15508,6523,5145,2677,15339,9900,12061,14459,16051,15584,11148,288,12463,955,1009,14674,13421,1986,12747,15222, 14720,9293,12762,7138,13263,10295,14770,13246,14773,5577,14775,12977,14736,12624,14738,14740,7610,14791,14745,110,14747,8964,14236,14223,10423,14752,15157,12572,1986,14922,13713,6218,12761,16126,4638,12632,14760,11885,14762,4523,13807,11496,14766,12728,3076,12674,16152,15155,12625,6082,15174,4475,13173,13162,16172,9291,13165,14416,3419,14717,9306,14735,16123,13166,14779,2351,13086,14783,10261,14785,2518,8279,14788,15134,3076,13174,15183,5022,14691,6361,14794,9338,6951,14796,9145,960,3594,14800,4998, 14803,14805,5786,14807,385,10326,9922,7837,383,901,823,14783,10026,4710,14637,2808,3774,6969,9998,16224,10517,13762,6874,7246,6346,16225,3979,7211,13219,15139,8993,3829,9230,15164,13137,10446,2105,13140,7701,2342,882,10517,13518,2321,10377,934,7518,15141,13523,10073,16256,9259,13399,2197,16135,16251,10465,13761,13119,8161,11496,13122,4590,6663,4292,15368,16230,16267,7721,13144,13472,4292,13479,12837,16241,2453,16269,13694,9195,6964,7713,14993,6967,14769,1847,9265,13600,15470,13765,7948,16250,16236, 2525,15260,1115,928,2890,13073,8405,16242,15194,8061,6943,16266,2808,16268,15054,14322,15056,8003,9243,13626,494,100,121,12680,15074,8781,16324,13558,8223,11050,16261,12546,7285,11762,16307,7485,12552,16265,16302,10456,7696,15224,11142,3963,16248,9244,9416,14552,10716,15500,569,15209,16323,1824,15149,16254,13857,339,16337,2890,12741,12624,16355,7284,16364,305,16325,15426,10107,13658,2800,12611,16306,10690,13790,15263,14964,16314,16237,7416,16287,13307,13695,964,7138,9236,15473,16360,16243,14988,16345, 14469,7499,8389,16380,2525,7110,16176,2071,16375,16253,2002,1429,4078,16390,12965,13614,15045,16368,16311,6833,3977,16365,15029,16327,1532,16368,15041,13708,16282,13613,7735,14935,13715,13640,9554,16397,2797,3461,16121,16285,16361,15032,15251,8037,16407,16416,16409,8185,16429,629,14665,16367,16324,14901,15102,1362,16277,16226,4368,10568,4526,16365,12865,13763,13624,16299,12869,1159,16411,13035,15083,4292,15256,16331,3801,16402,15043,16309,7451,13283,12685,5726,578,7610,16415,15250,4923,666,16295, 4646,13120,10337,16272,12658,16313,16341,3876,7918,12959,13623,16298,12504,2829,16422,13671,15014,16385,13674,14945,13676,13779,14949,7061,12490,7064,13594,8157,16389,643,16326,16440,1236,16450,16381,7389,15186,10221,16462,16308,3231,16442,11933,16279,9260,16514,16449,16524,16420,5554,16333,12555,12685,16406,16512,13147,16240,8882,16489,4125,16343,16244,4285,16493,15589,16495,16488,16231,16239,15106,16433,16391,2818,15225,16297,16547,16234,4520,13507,7599,8193,13633,13312,13635,13344,8171,14232,16242, 16304,7135,4292,15065,14771,9196,6112,9961,13002,16235,16252,15262,14902,16379,16541,16432,446,16465,13753,16552,16461,16329,16538,16590,16349,16482,13655,16394,12566,14995,16592,15250,16535,16336,16262,2898,14981,16355,15248,14912,16601,16338,13545,16594,372,4292,16609,16532,16242,16617,4555,16530,7088,14645,14655,16148,9664,16616,16470,16421,3813,13742,7911,15115,14967,16524,15085,11044,16631,13748,15109,16634,5695,16636,16370,10251,16372,8004,6763,16407,15233,5622,14552,9998,4520,13494,10531,13497, 13084,13726,16587,16639,13758,14914,16628,14917,12919,5931,16533,15072,16613,12036,16569,917,12751,13329,13583,9942,9065,5436,16396,16541,16227,14644,14663,16340,10517,7121,16624,413,16586,16301,16687,16491,13738,15142,16410,16329,16383,16575,16290,16387,16292,7355,16516,2525,16688,16685,14981,16705,16430,14654,16690,16626,4526,16536,16434,14737,16622,16382,16258,15257,7398,16710,2982,16699,14991,7573,13123,16294,2140,6159,8308,12228,16733,16649,16537,15024,16603,16390,16571,16529,16541,7121,9998, 16375,12598,16686,10465,13236,16332,16310,16463,16417,16661,625,13576,11610,15569,9763,8875,16650,16492,16457,16494,16234,16716,16554,2259,14989,15795,12894,16291,12896,8190,16438,16522,13505,16665,2130,16499,5926,16724,4322,16696,16441,16541,16330,12915,11374,15600,11977,16277,9526,472,11201,9741,14161,15603,12384,13463,13824,6894,11846,15621,8373,6289,6266,3660,15782,15836,15723,1015,14673,16803,15809,6887,15648,10592,15809,5559,1529,15845,15287,1605,3670,12136,421,8855,14847,11803,14165,14814, 14837,16799,12429,3746,13357,14817,14170,9712,14867,11793,13209,14179,14847,15602,14177,16800,14380,11251,15859,4873,13924,6478,5521,14503,7677,15937,14253,15323,6088,1555,1379,3864,12029,15885,12222,11636,12161,13962,10286,15430,294,4082,9994,14816,14632,13931,12274,9741,11140,11417,11774,14262,11446,16145,10590,11758,12226,6897,1391,15209,2082,16352,616,15209,12240,9394,11675,16884,11758,6088,14626,1674,6024,14631,15330,15981,15323,1099,5037,14083,16901,16879,16903,6359,101,14628,12356,12247,16907, 15980,16860,16037,15007,15367,11745,12014,15409,9461,15604,16925,8826,806,16930,11449,16932,13940,1862,11356,8580,5992,13866,1391,2544,2022,13185,2529,8279,8235,281,3690,6528,392,380,345,14813,12376,14827,8757,1569,16852,1165,12660,1391,13827,12662,8474,9502,10477,9006,16546,15973,746,13827,16956,109,11575,11085,15856,14097,9621,16826,14557,34,16040,4088,5354,7916,15999,9282,6518,16018,7989,679,6908,13822,11030,15849,11158,11491,13827,6691,16942,15894,11671,11281,15548,10032,15300,11285,6172,6106, 10056,11290,6125,11293,10053,11293,11296,10043,6194,10051,6189,10064,11303,6192,17023,10066,6198,6145,6143,11310,10068,2022,15539,11552,13549,2274,13840,6725,5654,9656,9216,17039,8592,17041,14429,15765,3691,17048,13838,8146,2348,16114,15849,11038,16854,13970,6516,368,15133,629,16059,16069,9593,5155,14622,8478,820,512,15475,4309,14023,3977,5559,13922,5143,3816,4307,14022,14017,1018,16103,5129,16106,9617,14096,8252,16983,14436,34,8488,5657,323,6422,8776,13976,5687,17074,17083,12246,6633,9688,11741, 13873,11030,6422,8670,3069,1822,15386,9228,5994,950,15496,12250,16938,14009,16866,16994,9282,15173,16781,2071,15610,14859,806,9994,6207,6714,10277,9431,10277,7608,12129,649,10331,9565,6682,11188,16985,13894,3389,14927,15968,15570,11028,5074,7037,2640,6362,8602,972,14422,10510,11630,1726,14421,12167,378,14461,14149,335,11960,9016,8825,10751,16142,10729,12382,14868,7018,8339,8955,14886,1217,2185,14181,16835,6654,16920,10728,10754,10224,16832,9042,4711,11815,15853,14709,1865,16203,8324,13467,1682,5912, 16453,12544,15896,4570,11145,14201,8069,834,15190,14524,5911,13460,9442,11147,9444,5855,1512,12830,16176,7974,6218,8864,2035,16167,7099,6218,11145,16741,2536,1683,16691,2216,1683,12477,12805,12986,16092,9323,8451,11692,12994,1721,5967,13E3,11696,2871,11698,9198,17220,2002,15268,34,8425,13441,12400,6870,3734,98,109,17146,9981,14528,15516,6345,11001,15568,17147,15315,15572,3680,112,52,17258,7883,17260,14445,8854,327,10005,16914,10423,15129,2770,14538,12441,3919,17271,296,4599,13899,5074,13444,11705, 9750,8426,13448,11013,3703,15563,5473,14418,14550,288,884,431,14152,17253,9583,17059,3945,46,8657,14080,3727,12292,4713,8615,8611,7824,15341,11663,4636,5354,9587,10390,17082,15477,3977,11237,5316,8623,15377,10322,8644,15916,8648,8628,8640,14348,4924,9966,8634,15378,17333,11390,3344,15374,8622,17341,11212,8519,3233,8650,5952,14073,4606,8296,11448,5681,17353,17107,15284,14561,16824,308,17004,16985,1637,12448,15258,6213,14966,6700,6213,14969,13214,5577,9813,14577,15385,9811,8560,12343,9814,1328,8562, 5786,15972,15551,15974,17379,12342,17384,6315,7180,431,4451,11044,366,1883,6908,13802,9282,5763,14139,4243,1637,9670,15282,4243,120,114,16936,9824,16885,7901,9667,2351,14244,14234,17335,17381,17377,2239,15386,17376,11715,11727,17337,9430,15912,17331,9437,8418,8645,11730,8468,11229,15528,291,258,11602,15410,16924,15485,1653,431,17370,5926,5123,17373,14408,12447,5569,17410,16887,16908,17442,5398,14025,14584,14029,8286,17303,11507,15258,12439,15275,4570,1637,17395,2622,17037,11187,17415,6491,55,14049, 16715,10361,14029,12294,7398,6234,17437,114,17439,5676,3552,17421,16991,7535,5754,17459,15897,6516,13422,11552,15928,16014,6474,17471,108,15932,15929,17499,8628,15924,17503,4570,10235,4558,17411,5887,15091,17500,9636,16006,4475,11766,15280,17495,4374,11561,11137,5194,9560,15178,14224,17119,5725,17372,17466,3535,1703,17440,14066,48,14030,1362,15245,1236,14414,3801,16993,15283,8825,15851,14093,16832,17169,15176,9879,17548,14629,12247,629,4823,279,14186,11355,16851,1653,12388,13468,10858,11274,14697, 16811,15784,1015,2544,16816,10899,14386,10989,14321,11994,8138,5543,9422,1519,11267,16810,10892,15758,10895,17569,15816,15728,17572,1862,7110,9705,8769,11845,14268,11030,11463,3671,17389,12372,13877,14813,9781,11819,11345,12383,15854,5980,14381,17196,5819,17492,4570,120,17612,7129,5471,17615,11659,8272,9362,9498,8224,3829,1883,17622,3535,122,17618,16715,10075,17355,16405,17624,111,6996,15700,17489,8278,17006,12239,17008,2839,11284,10040,10062,6109,11289,10058,10042,6123,10044,11295,11292,10048,11305, 17024,11287,17024,6191,10061,17029,6196,17646,11308,17031,17661,17035,12234,17620,16264,14981,10070,17632,13854,11597,4319,17674,11514,17362,7817,11083,11379,17365,13892,15686,7816,4178,11830,17422,10288,11397,8894,17682,382,14272,5844,17694,11521,17685,11972,6025,17343,15521,17401,10083,11681,10297,17692,13437,17698,1744,1719,12324,8675,10138,14557,8766,14595,14144,12331,15387,17301,12340,6541,15700,10026,949,6317,9209,9211,8952,8069,2071,17417,12790,14191,7989,17463,16790,17299,17092,1567,327,15328, 17057,14153,11788,17518,14370,17177,10666,11238,9537,14094,17088,11176,10530,16825,6606,11268,3679,12317,13202,16424,3189,7290,738,2119,16013,1792,6443,12029,12815,14981,17518,2155,9998,17067,6394,15292,16909,16933,12317,17770,16988,15930,1839,2221,13197,17763,2119,13606,15195,5290,1839,17073,6454,17325,1137,17791,2720,7880,12042,15368,401,13423,5834,2155,17793,16312,11466,3737,17122,7566,11551,6696,17773,17769,16785,1236,5127,17307,5219,17787,11198,3918,15148,361,17817,17676,3343,7881,15368,822, 982,12168,10761,6296,9431,6277,6296,287,1802,360,11552,8005,1839,4413,13472,591,9429,729,8441,15946,4960,17853,626,14540,4723,9692,10179,5515,7579,17802,17833,16928,3796,10299,17816,108,17808,7580,8956,17528,6233,1058,17777,17820,1362,8836,14933,15435,12032,15158,13538,13617,13716,13541,17174,13080,17866,14231,1952,455,17774,13489,5275,17788,1655,15309,14339,17863,17809,16645,7625,5221,1839,13197,17806,11552,17872,17802,4923,17518,17516,5926,17881,15138,5316,17324,14E3,5355,17792,12050,17081,7794, 14039,17922,10473,17912,13456,17874,14891,15446,1058,17797,14016,17799,5160,8306,4082,7899,17781,17456,5762,17870,17931,12906,13711,17765,8213,3191,17907,17748,5359,12256,16974,15590,8532,17745,14098,1678,9389,7180,12987,6797,4850,10132,32,1568,6112,11931,10354,14020,17099,5169,15476,17929,17818,17802,7287,12777,17953,8474,16625,14642,17460,8550,17054,12329,17720,12406,1755,11893,8825,16829,17187,14377,16839,11841,14148,17560,17761,922,15241,17493,9480,17121,5517,5369,15395,4507,14197,9347,17153, 11099,10838,11535,15976,14205,7670,15906,2622,14256,5029,13952,498,17737,9282,17735,4475,9029,15066,13330,6719,5940,13332,7966,17739,9282,12817,16700,6798,16130,5909,7554,8333,11687,16657,12990,8456,12996,5969,12995,17241,17244,12998,2881,9057,13001,5439,13345,4302,18029,13023,6879,9678,16159,17305,5274,8287,14587,11949,9182,16187,11617,15489,17593,1823,8209,11926,1379,102,10105,8135,11692,9998,17282,17418,13423,18074,17732,11142,2302,18025,34,14258,5927,16400,1115,2861,648,18083,18085,5265,1112, 16028,9084,18082,79,18084,3733,18086,2874,7285,8996,1754,8999,13396,5244,18110,18112,4666,5530,9378,18115,13285,17234,16657,12989,12992,17238,5976,11694,18060,17243,8462,9059,6572,15277,345,18092,15634,16405,18122,18105,1742,18126,605,7893,16961,17722,377,16955,394,16978,15273,17595,10023,10735,10011,335,11588,11584,323,14564,17747,11977,1019,9021,17192,8748,12435,17610,4086,18009,4470,13420,16966,8584,15388,12284,4227,15414,4231,17131,14238,17934,15323,14621,17278,8478,18031,14923,11206,3970,17515, 10080,335,12371,5651,10299,17726,14713,643,9208,745,9210,9181,18093,8703,11842,18201,11273,10839,16954,379,18156,14274,18070,3679,14290,12364,10569,11963,14324,14282,14326,11900,8849,10887,16288,2439,11656,10323,9297,11932,15528,642,10660,18227,14296,18229,10519,18223,16356,12393,14313,13359,14356,14316,12949,11958,6016,14361,17716,17701,18256,10142,10332,4728,18232,16384,16289,5573,18235,17332,2521,11932,11721,18241,18251,13361,14358,12953,10085,14321,18249,14355,14315,18274,18244,14359,17426,4825, 11733,14332,15914,11536,18231,13429,5223,17640,16454,2993,10223,17557,10609,18253,18282,18300,14327,637,6529,18156,13839,18155,381,10507,16227,6024,6597,18272,18281,14325,18302,10665,4534,555,18263,11667,13508,13436,10017,11788,14369,17190,18E3,10713,6535,14846,16832,10714,10721,14833,16848,17607,5475,18003,14100,12389,1608,12391,9573,11368,9160,6284,413,18240,11365,14352,6886,11348,831,3226,14401,17052,6514,16985,17188,10406,2857,2968,18052,18056,17026,18053,8462,18137,5977,8467,1598,14549,17092, 17277,18221,6280,17345,4307,17428,17855,179,9432,11730,11217,8644,18289,11571,6531,1088,8753,12132,11001,14364,14362,15640,10140,14365,18260,6164,16970,17944,17413,18373,9508,14154,10902,16830,11795,12467,17191,15388,17172,16843,18172,13450,12386,16804,18342,273,18344,11219,11363,14385,12395,11660,9146,16735,18159,11842,15209,9343,1711,10406,17759,16891,13457,14154,16959,17181,5855,17753,13460,16960,17693,686,18434,6405,14897,14121,11704,8386,3695,8388,8384,15519,16009,10847,17404,8394,14288,15091, 18096,18098,15295,14617,6065,15298,18382,13947,15302,537,11642,8401,16077,16948,16782,11725,14981,17327,3419,18288,10325,15381,14335,11858,14363,17292,8813,9405,4778,15548,17638,17126,18294,17481,15596,9129,17455,18403,5876,4491,16878,10423,9474,577,8481,11762,8484,18067,18214,9228,6234,15492,99,9167,17492,4635,5710,17375,17420,11767,1015,18214,17424,13953,17520,13732,15700,996,18214,17043,11746,17419,17391,3545,18524,18521,13953,13966,729,18075,15435,17772,10358,9628,6874,9901,9166,17724,9169,8306, 9628,17435,2035,885,99,11949,18517,5192,17066,8306,5314,501,17303,18529,18523,18550,5744,10271,15685,1700,643,3843,729,6055,2348,16867,15412,9820,10311,18516,17678,14029,12115,17508,4553,4725,8628,5641,9831,4549,4808,18578,14240,328,18535,12370,18568,3552,18525,11536,686,10311,18558,18583,18007,5551,6986,18542,9408,5411,3724,17398,5904,11058,17559,13451,6331,17744,1603,17962,318,3843,13851,14413,1429,17543,18324,16850,18618,11519,11546,7816,11548,14120,9630,16986,17531,8075,799,1604,11523,1358,16922, 17441,18500,3662,17407,14243,18626,2351,15582,1566,17687,11991,18212,18002,18631,5448,15879,1723,10812,10641,9674,15384,18004,371,17115,14845,8406,16888,16879,1637,1395,18100,16515,2095,6017,11169,10892,10389,18672,14611,14858,4837,3938,17130,11015,6452,16016,448,6717,18691,13052,11937,15219,18461,10001,13874,17138,11389,1502,17706,6940,86,2727,7627,339,5887,10026,4353,3069,12990,18108,14228,4728,1516,6024,18522,15412,965,323,16562,10337,684,279,745,982,3071,823,9042,277,11932,15538,14540,14329,18279, 14280,18242,10561,14295,18284,3680,18460,14203,10265,10237,65,14805,1847,16913,16021,4847,1875,4860,4731,10681,15412,4314,18185,4321,18749,2058,18752,14289,10566,18745,16318,18275,10515,18770,10615,3769,3591,3593,14799,9992,4193,3590,3592,282,16208,9992,2800,18780,18776,3595,15192,4728,18758,14240,3839,10529,5677,18763,18751,15482,8478,5793,117,17153,8820,6332,11084,11947,10629,6377,18768,18738,18772,10647,11899,10519,866,3074,14473,17511,14007,14350,2099,16227,10282,17454,18188,18647,10553,11120, 2539,18755,9373,18314,18813,18741,18740,12953,10683,10430,674,18796,1591,17400,16933,311,304,14515,7610,3797,4663,12411,11189,1756,13466,6797,10405,9094,13603,8948,327,9194,8176,2639,643,577,114,15768,17933,18826,10287,14515,11556,112,6639,1588,432,18791,14972,11937,367,18563,18723,16270,13308,18726,3819,18729,3370,6657,18732,13095,4124,641,982,18829,4849,11652,18832,11945,4071,10663,10548,18743,4124,18807,8282,10397,18896,18299,18742,18899,13362,18901,12953,18754,18895,4731,258,1875,1809,5316,2012, 11928,3833,6330,6717,18921,5541,18923,3551,13052,3839,18840,18765,18799,6535,16876,3561,5956,4307,511,16221,545,6717,18940,866,631,3305,4077,18906,4731,18932,18798,10286,15801,17037,17064,6362,11060,6825,1210,5693,5513,282,107,2389,18871,18873,10421,16145,18799,8849,8341,4553,108,18818,14818,14611,4234,11613,13764,14470,963,18914,18756,13092,18736,626,15479,11877,16791,18378,18298,11243,11337,18722,1009,4562,18328,14830,6947,10725,17183,14748,3795,18999,7018,2867,17863,67,14797,4232,18444,11030,16814, 386,15620,18419,3609,3739,65,12121,14730,354,11025,15750,10954,17287,15756,17583,15805,17265,9777,15786,5342,14693,8964,14805,354,18376,1863,15783,17585,569,1721,58,40,41,32,61,62,1417,3972,11731,15786,846,343,8790,14693,17968,354,262,17676,15749,15827,376,17609,19040,17567,19042,17259,14929,15727,16250,327,115,78,8314,14693,311,19061,17863,18111,4837,19074,19063,15702,10954,857,15835,19029,15837,19031,17587,19073,3852,19076,8818,15731,569,19066,15843,2526,17863,15820,17868,659,328,19080,14590,273, 10934,14684,19069,19065,18003,19101,19062,14693,5736,66,10409,9089,19075,15875,15701,15797,8023,746,18958,15803,19090,16812,19092,16820,19122,19096,6029,10796,5784,8234,17304,18667,1786,17823,5693,46,17537,1796,18177,11011,17358,4790,8612,17318,12237,17320,17311,1524,17313,3056,17315,9586,17976,5202,17101,17939,14328,17337,17329,17429,11735,17332,17348,17334,13423,17336,17328,8643,17330,19171,18484,8638,17344,18737,17340,17430,17433,8420,15382,9456,17104,2556,8285,14080,18606,7806,17884,17359,12146, 11626,5984,275,12151,11460,1571,15439,17758,18448,13909,6870,8426,18198,3381,1485,14545,542,17916,9450,9176,8796,15889,292,742,16946,10773,15529,1673,18594,9463,12075,858,1485,17367,13534,9613,18639,13792,9176,19215,11154,18493,1453,1485,19220,15327,19222,1088,19224,13490,9216,19233,9282,9665,17446,19218,9613,1466,107,16325,111,16990,18499,6156,19230,1018,1485,19254,19242,5032,17449,5417,17756,9619,17E3,6921,17691,11883,8580,18246,18897,12952,18771,18283,18276,14277,10181,18278,14279,18811,11956, 18273,18303,10553,18904,1057,1887,14468,16246,18739,19291,18228,18317,14298,16008,17704,4475,14311,15152,15739,14469,19289,18900,10560,19284,4755,19287,12608,14314,18833,18910,19289,1570,19184,10337,14331,15913,11737,17940,14340,10382,12639,13906,9201,18975,14225,4301,14351,18407,15055,19311,18911,19313,10440,6596,306,16031,649,11968,3734,18398,14547,15806,18397,8681,14086,12137,15460,12144,11069,14472,259,10735,18335,10709,9517,18410,18329,9969,18331,16798,18337,6572,14376,14826,17181,14896,12387, 11358,18420,9571,11257,6284,5736,1604,15869,16027,15896,19025,12544,14385,4458,476,15328,17625,551,97,9964,19388,17286,8189,896,10826,10509,10829,18351,19338,12394,383,9070,15334,327,14604,15546,15556,15548,17727,115,4261,83,9691,625,14440,6059,8286,17966,18380,19417,370,9104,19427,44,102,10469,97,14461,19412,15555,9685,399,19184,14513,11528,910,15013,5749,14814,18133,10732,10295,10852]}); define("iK",["require","es","pu"],function(a){function e(f){var n=b[f];if(n)return n;if("string"!=typeof f)return b[f]=function(){return f};var q=(n=d.exec(f))&&parseFloat(n[1]);switch(n&&n[4]&&n[4].toLowerCase()){case "vw":return b[f]=function(p){return p*q};case "vh":return b[f]=function(p,r){return r*q};case "vmin":return b[f]=function(p,r,t){return t*q};case "vmax":return b[f]=function(p,r,t,u){return u*q};default:return b[f]=function(){return f}}}function k(f){this.kb=f;this.xK=this.xK.bind(this); this.kb.bind(c.uc,this.Lc,this,!0);this.bea=new Map;this.RV=[];this.Lc()}function m(f,n,q,p){var r={};r.instance=f;r.F$a=n;r.name=q;r.value=p;h.push(r);g||(g=setTimeout(function(){g=null;l()},100))}function l(){g&&(clearTimeout(g),g=null);var f=h;h=[];f.forEach(function(n){k.Z0(n.instance,n.F$a,n.name,n.value)})}a("es");var c=a("pu");k.prototype.Lc=function(){this.h1a();this.bea.forEach(function(f){for(var n in f)this.xK(f[n])}.bind(this));this.RV.forEach(this.xK)};k.prototype.h1a=function(){var f= this.kb.Cb();this.R0=.01*this.kb.Ya();this.L0=.01*f;this.eAa=Math.min(this.R0,this.L0);this.dAa=Math.max(this.R0,this.L0)};k.prototype.xK=function(f){f(this.R0,this.L0,this.eAa,this.dAa)};k.prototype.I1a=function(f){this.RV.push(f)};k.prototype.V7a=function(f){f=this.RV.indexOf(f);0<=f&&this.RV.splice(f,1)};k.prototype.Z0=function(f,n,q,p){function r(u,v,w,x){n.call(f,q,t(u,v,w,x))}var t=e(p);(p=this.bea.get(f))||this.bea.set(f,p={});p[q]=r;r(this.R0,this.L0,this.eAa,this.dAa)};k.ld=new Map;k.get= function(f){var n=k.ld.get(f);n||(n=new k(f),k.ld.set(f,n));return n};k.Z0=function(f,n,q,p){var r=f.get&&f.get("application")||f.Db&&f.Db();r?(l(),k.get(r).Z0(f,n,q,p)):m(f,n,q,p)};var h=[],g=null,b={},d=/^\s*((\+|\-)?(\d*\.)?\d+)\s*(vmin|vmax|vw|vh|px|%)?\s*$/i;return k}); define("mO",["require","exports"],function(){return function(){function a(){}a.kia=function(e){if(this.gg("crossorigin",!1))return!0;if(this.K2(e)){var k=window.location.protocol+"//"+window.location.hostname;window.location.port&&(k+=":"+window.location.port);return e.substring(0,k.length)!=k}return!1};a.my=function(e,k){if(this.o6a(e))e=window.location.protocol+e;else if(!this.K2(e)&&!this.eB(e)){if(k)if(0==e.indexOf("/")){var m=k.indexOf("//"),l="";0<=m&&(l=k.substr(0,m+2),k=k.substr(m+2));m=k.indexOf("/"); 0=k?!0:0==e.indexOf("filesystem:")};a.j6a=function(e){return e&&0<=e.indexOf("/pdfjs/")};a.getDirectory=function(e){e=this.my(e);e=e.split("?")[0];e=e.split("/");1d;d+=1)b[d]=String.fromCharCode(d);var f=256,n=String.fromCharCode(g[0]),q=n;for(d=1;dd;++b)g=h.charCodeAt(b),128>g?n[d>>2]|=g<g?n[d>>2]|=(192|g>>6)<g||57344<=g?n[d>> 2]|=(224|g>>12)<>2]|=(240|g>>18)<>2]|=(128|g>>12&63)<>2]|=(128|g>>6&63)<>2]|=(128|g&63)<> 2]|=k[g&3];this.block=h[16];56<=g&&(this.A2||this.hash(),h[0]=this.block,h[16]=h[1]=h[2]=h[3]=h[4]=h[5]=h[6]=h[7]=h[8]=h[9]=h[10]=h[11]=h[12]=h[13]=h[14]=h[15]=0);h[14]=this.Yha<<3|this.SA>>>29;h[15]=this.SA<<3;this.hash()}};a.prototype.hash=function(){var h=this.DS,g=this.ES,b=this.FS,d=this.HS,f=this.IS,n=this.JS,q=this.KS,p=this.LS,r=this.Gga,t;for(t=16;64>t;++t){var u=r[t-15];var v=(u>>>7|u<<25)^(u>>>18|u<<14)^u>>>3;u=r[t-2];u=(u>>>17|u<<15)^(u>>>19|u<<13)^u>>>10;r[t]=r[t-16]+v+r[t-7]+u<<0}var w= g&b;for(t=0;64>t;t+=4){if(this.first){var x=704751109;u=r[0]-210244248;p=u-1521486534<<0;d=u+143694565<<0;this.first=!1}else{v=(h>>>2|h<<30)^(h>>>13|h<<19)^(h>>>22|h<<10);u=(f>>>6|f<<26)^(f>>>11|f<<21)^(f>>>25|f<<7);x=h&g;var y=x^h&b^w;var z=f&n^~f&q;u=p+u+z+l[t]+r[t];v+=y;p=d+u<<0;d=u+v<<0}v=(d>>>2|d<<30)^(d>>>13|d<<19)^(d>>>22|d<<10);u=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7);w=d&h;y=w^d&g^x;z=p&f^~p&n;u=q+u+z+l[t+1]+r[t+1];v+=y;q=b+u<<0;b=u+v<<0;v=(b>>>2|b<<30)^(b>>>13|b<<19)^(b>>>22|b<<10); u=(q>>>6|q<<26)^(q>>>11|q<<21)^(q>>>25|q<<7);x=b&d;y=x^b&h^w;z=q&p^~q&f;u=n+u+z+l[t+2]+r[t+2];v+=y;n=g+u<<0;g=u+v<<0;v=(g>>>2|g<<30)^(g>>>13|g<<19)^(g>>>22|g<<10);u=(n>>>6|n<<26)^(n>>>11|n<<21)^(n>>>25|n<<7);w=g&b;y=w^g&d^x;z=n&q^~n&p;u=f+u+z+l[t+3]+r[t+3];v+=y;f=h+u<<0;h=u+v<<0}this.DS=this.DS+h<<0;this.ES=this.ES+g<<0;this.FS=this.FS+b<<0;this.HS=this.HS+d<<0;this.IS=this.IS+f<<0;this.JS=this.JS+n<<0;this.KS=this.KS+q<<0;this.LS=this.LS+p<<0};a.prototype.A5a=function(){this.SBa();var h=this.DS, g=this.ES,b=this.FS,d=this.HS,f=this.IS,n=this.JS,q=this.KS,p=this.LS;return e[h>>28&15]+e[h>>24&15]+e[h>>20&15]+e[h>>16&15]+e[h>>12&15]+e[h>>8&15]+e[h>>4&15]+e[h&15]+e[g>>28&15]+e[g>>24&15]+e[g>>20&15]+e[g>>16&15]+e[g>>12&15]+e[g>>8&15]+e[g>>4&15]+e[g&15]+e[b>>28&15]+e[b>>24&15]+e[b>>20&15]+e[b>>16&15]+e[b>>12&15]+e[b>>8&15]+e[b>>4&15]+e[b&15]+e[d>>28&15]+e[d>>24&15]+e[d>>20&15]+e[d>>16&15]+e[d>>12&15]+e[d>>8&15]+e[d>>4&15]+e[d&15]+e[f>>28&15]+e[f>>24&15]+e[f>>20&15]+e[f>>16&15]+e[f>>12&15]+e[f>> 8&15]+e[f>>4&15]+e[f&15]+e[n>>28&15]+e[n>>24&15]+e[n>>20&15]+e[n>>16&15]+e[n>>12&15]+e[n>>8&15]+e[n>>4&15]+e[n&15]+e[q>>28&15]+e[q>>24&15]+e[q>>20&15]+e[q>>16&15]+e[q>>12&15]+e[q>>8&15]+e[q>>4&15]+e[q&15]+e[p>>28&15]+e[p>>24&15]+e[p>>20&15]+e[p>>16&15]+e[p>>12&15]+e[p>>8&15]+e[p>>4&15]+e[p&15]};a.prototype.digest=function(){this.SBa();var h=this.DS,g=this.ES,b=this.FS,d=this.HS,f=this.IS,n=this.JS,q=this.KS,p=this.LS;return[h>>24&255,h>>16&255,h>>8&255,h&255,g>>24&255,g>>16&255,g>>8&255,g&255,b>> 24&255,b>>16&255,b>>8&255,b&255,d>>24&255,d>>16&255,d>>8&255,d&255,f>>24&255,f>>16&255,f>>8&255,f&255,n>>24&255,n>>16&255,n>>8&255,n&255,q>>24&255,q>>16&255,q>>8&255,q&255,p>>24&255,p>>16&255,p>>8&255,p&255]};return function(h){return(new a(!0)).update(h).A5a()}}); define("cc",["require","jh"],function(a){function e(){for(var c=[[256,"9799e3eb6096a48f515a94324200b7af24251a4131eccf9a2cd65d012a1f5c71"],[1024,"cbab1f6d618e723188cfdb1c7c3f47146e46da4da56030386d85055016afd5d9"],[1E4,"d9c4539649520e3f4a35e5a3331b0fbdc67958dd64ef65a83a75d545413643dd"]],h=0;hString.fromCharCode(d%256)).join("");if(l(g)!=c[h][1])return!1}return!0}function k(c){var h=Array.isArray(c)?"array":null===c?"null":typeof c;switch(h){case "array":return"["+ c.map(k).join(",")+"]";case "object":return"{"+Object.keys(c).sort().map(function(g){return k(g)+":"+k(c[g])}).join(",")+"}";case "boolean":return c?"true":"false";case "number":return c.toFixed(3);case "string":return'"'+c.split('"').join('\\"')+'"';case "null":case "undefined":return h;case "function":return"<"+h+">"}return""}function m(c){return c.map(function(h){return String.fromCharCode(h)}).join("")}var l=a("jh");return{validate:function(c){var h=[104,97,115,104],g=c[m(h)];delete c[m(h)];c= m([116,100,118])+k(c);return l(c)==g||!e()}}}); define("lR",["require","exports","lO"],function(a,e,k){function m(){var d=h.length,f=h.splice(0,d);c+=d;for(var n=0;n d)clearTimeout(-1-d);else{var f=d-c;if(0<=f){if(!h[f])throw"invalid async handle: "+d;h[f]=null}}}}}); define("gD",["require","exports","cH","lR","lO"],function(a,e,k,m,l){var c=function(){return function(){}}();return function(){function h(){this.Kc={}}h.prototype.l2a=function(g,b,d){this.Coa(g,b,d,!0,b,!0,!1)};h.prototype.bind=function(g,b,d,f,n,q){void 0===q&&(q=!1);return this.Coa(g,b,d,f,n||b,!1,q)};h.prototype.Coa=function(g,b,d,f,n,q,p){if(void 0===g)throw"Event name undefined";if(void 0===b)throw"Event handler undefined";d=d||this;f=f?!0:!1;g in this.Kc||(this.Kc[g]=[]);var r=new c;r.MS=b; r.f5a=n||b;r.context=d;r.BDa=f;r.X5a=p;g=this.Kc[g];q?g.unshift(r):g.push(r);return this};h.prototype.unbind=function(g,b,d){g in this.Kc&&(d=d||this,this.Kc[g]=this.Kc[g].filter(function(f){return f.MS!=b||f.context!=d}),0==this.Kc[g].length&&delete this.Kc[g]);return this};h.prototype.Dab=function(g){g in this.Kc&&delete this.Kc[g]};h.prototype.hla=function(){this.Kc={}};h.prototype.trigger=function(g,b){void 0===b&&(b=void 0);"string"==typeof g&&(g=new k(g,b));g.name in this.Kc&&(g.source=this, this.hz(g,!0),g.name in this.Kc&&this.XPa(g));return this};h.prototype.XPa=function(g){h.vW.push({caller:this,event:g});h.e9||(h.e9=!0,m.BB(h.Vpa))};h.Vpa=function(){for(var g=(new Date).getTime()+1E3;h.vW.length;){var b=h.vW.shift();h.prototype.hz.call(b.caller,b.event,!1);if((new Date).getTime()>g)break}0this.Gv;)this.Gv+=360}return this.Gv};a.prototype.n4a=function(){void 0===this.Xfa&&(this.Xfa=m.Ax(this.qra()*Math.PI/180,0));return this.Xfa};a.prototype.s2a=function(){return void 0!==this.get("yaw")&&void 0!==this.get("backwardYaw")}; a.prototype.qra=function(){return this.get("backwardYaw")-180};return a});define("ix",["require","ms","oh"],function(a){var e=a("ms");return a("oh").define("AmbientLight",e,function(){e.call(this)})}); define("ft",["require","ms","oh"],function(a){var e=a("ms");a=a("oh").define("Model3DPostprocessing",e,function(){e.call(this)});a.prototype.JB=function(k){this.fp!==k&&(this.fp=k,this.nza())};a.prototype.Vn=function(k){this.SI!==k&&(this.SI=k,this.nza())};a.prototype.nza=function(){this.set("disabled",this.SI&&this.get("disableWhileMoving")||this.fp&&this.get("disableWhileUserInteracting"))};return a}); define("op",["require","oh","ft"],function(a){var e=a("oh"),k=a("ft");return e.define("AmbientOcclusionModel3DPostprocessing",k,function(){k.call(this)})});define("lr",["require","exports"],function(){return{V:"stopped",PLAYING:"playing",Ob:"paused"}});define("fs",["require","ms","oh"],function(a){var e=a("ms");return a("oh").define("ImageResource",e,function(){e.call(this)})}); define("eC","require lO pu lr oh fs".split(" "),function(a){a("lO");var e=a("pu"),k=a("lr"),m=a("oh"),l=a("fs");a=m.define("AnimatedImageResource",l,function(){l.call(this)});a.prototype.play=a.prototype.play=function(){this.set("state",k.PLAYING)};a.prototype.pause=a.prototype.pause=function(){this.set("state",k.Ob)};a.prototype.stop=a.prototype.stop=function(){this.set("state",k.V)};a.prototype.set=function(c,h){switch(c){case "state":(this.get("state")||k.V)==k.V&&h==k.PLAYING&&this.trigger(e.bo)}l.prototype.set.call(this, c,h)};a.prototype.fk=function(c,h,g){h||(h=1);g||(g=1);return l.prototype.fk.call(this,c,h*this.get("colCount",1),g*this.get("rowCount",1))};return a});define("eo",["require","oh","ft"],function(a){var e=a("oh"),k=a("ft");return e.define("AntialiasModel3DPostprocessing",k,function(){k.call(this)})}); define("iL",["require","ms","oh"],function(a){var e=a("ms");a=a("oh").define("HotspotMapOverlay",e,function(k){e.call(this);this.CJ=void 0===k?!0:k;this.II=this.gr=this.fr=this.Ba=void 0});a.prototype.getItem=function(){if(void 0===this.Ba){var k=this.get("image");this.Ba=k?k.u1(this.CJ):null}return this.Ba};a.prototype.NCa=function(){if(void 0===this.fr){var k=this.get("rollOverImage");this.fr=k?k.u1(this.CJ):null}return this.fr};a.prototype.PCa=function(){if(void 0===this.gr){var k=this.get("selectedImage"); this.gr=k?k.u1(this.CJ):null}return this.gr};a.prototype.A4a=function(){if(void 0===this.II){this.II=[];var k=this.getItem();k&&this.II.push(k);(k=this.NCa())&&this.II.push(k);(k=this.PCa())&&this.II.push(k)}return this.II};return a});define("fc",["require","oh","iL"],function(a){var e=a("oh"),k=a("iL");return e.define("AreaHotspotMapOverlay",k,function(){k.call(this,!0)})});define("oT",["require","ms","oh"],function(a){var e=a("ms");return a("oh").define("AudioResource",e,function(){e.call(this)})}); define("cY",["require"],function(){return{pC:"inAdvance",Fla:"delayed"}}); define("bh",["require","exports"],function(){return function(){function a(){}a.Iy="grab";a.Nh="grabbing";a.oma="move";a.yma="move-n";a.zma="move-ne";a.pma="move-e";a.Cma="move-se";a.Bma="move-s";a.Dma="move-sw";a.Ema="move-w";a.Ama="move-nw";a.WKa="move-ew";a.YKa="move-ns";a.XKa="move-nesw";a.ZKa="move-nwse";a.rma="move-fast-n";a.sma="move-fast-ne";a.qma="move-fast-e";a.vma="move-fast-se";a.uma="move-fast-s";a.wma="move-fast-sw";a.xma="move-fast-w";a.tma="move-fast-nw";a.Fe="hand";a.zC="transparent"; a.Ee="default";a.Ou="inherit";return a}()}); define("hK",["require","pu"],function(a){function e(){this.cj=[]}var k=a("pu");e.prototype.register=function(m){this.rMa(m);this.cj.push(m);m.get("pressed")&&this.pxa(m)};e.prototype.unregister=function(m){this.WWa(m)};e.prototype.rMa=function(m){m.bind(k.Fj,this.Vta,this,!0)};e.prototype.WWa=function(m){m.unbind(k.Fj,this.Vta,this)};e.prototype.Vta=function(m){this.pxa(m.source)};e.prototype.pxa=function(m){this.cj.forEach(function(l){l.set("pressed",l==m)})};e.register=function(m,l){this.unregister(m); l=this.Ai(l);m.h7=l;l.register(m)};e.unregister=function(m){m.h7&&(m.h7.unregister(m),delete m.h7)};e.Ai=function(m){return this.osa[m]||(this.osa[m]=new e)};e.osa={};return e});define("ep",["require"],function(){return{Ge:"push",Ij:"toggle"}});define("ij",["require"],function(){return{kH:"visible",Wla:"hidden",Yp:"scroll"}});define("hf",["require"],function(){return{Ee:void 0,aa:"over",Ab:"pressed",jc:"pressedOver",ia:"selected"}}); define("w",["require","exports","lO","mO"],function(a,e,k,m){function l(g){return!!(window.location.hash&&0<=window.location.hash.indexOf("device="+g))}var c={};c.ui=TDV.xb.ZU;c.TB=TDV.xb.t6;c.T6=TDV.xb.Ima;c.$bb=TDV.xb.x6;c.n6=TDV.xb.u6;c.ama=TDV.xb.Hma;c.Mbb=TDV.xb.w6;c.v6=TDV.xb.v6;c.hM=TDV.xb.hM;c.l5=TDV.xb.l5;c.k5=TDV.xb.k5;c.j5=TDV.xb.j5;c.m5=TDV.xb.m5;c.nh=TDV.xb.nh;c.EU=TDV.xb.EU;c.Dj=TDV.xb.Dj;c.Lm=TDV.xb.Lm;c.QG=TDV.xb.QG;c.wy=TDV.xb.wy;c.DU=TDV.xb.DU;c.ls=TDV.xb.ls;c.h5=TDV.xb.h5;c.TG= TDV.xb.TG;c.Hp=TDV.xb.Hp;c.yy=TDV.xb.yy;c.IU=TDV.xb.IU;c.i5=TDV.xb.i5;c.fM=TDV.xb.fM;c.FU=TDV.xb.FU;c.SG=TDV.xb.SG;c.gM=TDV.xb.gM;c.zy=TDV.xb.zy;c.zla=TDV.xb.zla;c.xy=TDV.xb.xy;c.ms=TDV.xb.ms;c.Ay=TDV.xb.Ay;c.GU=TDV.xb.GU;c.HU=TDV.xb.HU;c.n5=TDV.xb.n5;c.q5=TDV.xb.q5;c.lM=TDV.xb.lM;c.r5=TDV.xb.r5;c.s5=TDV.xb.s5;c.Dz=function(g){g="force_"+g;if(m.wj("debug")&&m.wj(g))return m.getQueryParameter(g)};c.dRa=c.Dz("os");c.Fd=function(){return c.dRa||TDV.xb.Fd};c.ZQa=c.Dz("browser");c.browser=function(){return c.ZQa|| TDV.xb.browser};c.$Qa=c.Dz("browser_type");c.uK=function(){return c.$Qa||TDV.xb.uK};c.Lqa=c.Dz("browser_subtype");c.pc=function(){return c.Lqa?c.Lqa:TDV.xb.pc};c.aRa=c.Dz("browser_version");c.PAa=function(){return c.aRa||TDV.xb.PAa};c.cRa=c.Dz("device");c.uF=function(){return c.cRa||TDV.xb.uF};c.rb=function(){return TDV.xb.mobile};c.KQa=function(){for(var g=navigator.userAgent.toLowerCase(),b=["SM-G960","SM-G965"],d=0;dnavigator.userAgent.indexOf("; wv")?!1:!0;c.bRa=!!c.Dz("chromewebview");c.dBa=function(){return c.bRa||c.pOa}; c.Af=function(){return c.pc()==c.Hp||c.pc()==c.yy||c.pc()==c.IU||c.pc()==c.ms||c.pc()==c.Ay||c.pc()==c.xy};c.O2=function(){return c.PF()};c.N2=function(){return c.gL()||c.MDa()||c.UDa()||c.RDa()};c.mia=function(){return c.pc()==c.ms};c.ega=void 0;c.lbb=function(){if(void 0===c.ega){var g=void 0;c.Nr()&&(window.location.hash.split("&").forEach(function(b){"app-version"==b.split("=")[0]&&(g=b.split("=")[1])}),g&&(g=parseInt(g)));g=g||0;c.ega=g}return c.ega};c.Nr=function(){return c.iL()||c.mia()};c.iL= function(){return c.pc()==c.Ay};c.l6a=function(){return l("picog2")};c.e6a=function(){return l("piconeo2")};c.MDa=function(){return l("piconeo3")};c.k6a=function(){return c.pc()==c.yy&&0<=navigator.userAgent.toLowerCase().indexOf("pico 4")||c.pc()==c.Ay&&0<=navigator.userAgent.toLowerCase().indexOf("picoa8110")?!0:!1};c.QDa=function(){return c.pc()==c.yy&&0<=navigator.userAgent.toLowerCase().indexOf("pico g3")||c.pc()==c.Ay&&0<=navigator.userAgent.toLowerCase().indexOf("picoa7q10")?!0:!1};c.RDa=function(){return l("picoxr")}; c.UDa=function(){return l("vivefocus")};c.PF=function(){return l("oculusquest3")?!0:c.pc()==c.Hp&&0<=navigator.userAgent.indexOf("Quest 3")};c.gL=function(){return l("oculusquest")||l("oculusquest2")||l("other")?!0:c.pc()==c.Hp&&0<=navigator.userAgent.indexOf("Quest 2")};c.p6a=function(){return c.pc()==c.Hp&&0<=navigator.userAgent.indexOf("Quest")&&0>navigator.userAgent.indexOf("Quest 2")};c.Fcb=function(){return c.pc()==c.Hp&&0>navigator.userAgent.indexOf("Quest")};c.$5a=function(){return c.Af()&& c.nS()};c.sE=void 0;c.K7a=function(){void 0===c.sE&&(c.sE=parseInt(m.getQueryParameter("sts")),isNaN(c.sE)&&(c.Af()&&!c.KQa?c.sE=512:c.rb()&&c.Fd()==c.ui?c.sE=512:c.sE=c.rb()?256:1024));return c.sE};c.AXa=function(){if(c.browser()==c.Dj||c.browser()==c.nh)try{var g=/Version\/([0-9]+\.[0-9]+)/i.exec(navigator.userAgent);if(g)return parseFloat(g[1])}catch(b){}}();c.Pja=function(){return c.AXa};c.qTa=function(){try{var g=parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)|| [0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||!1}catch(b){}g||(g=c.Pja());return g}();c.cia=function(){return c.qTa};c.RMa=function(){if(c.Fd()==c.TB)try{var g=/Android ([0-9]+\.?[0-9]*)/i.exec(navigator.userAgent);if(g)return parseFloat(g[1])}catch(b){}}();c.b2a=function(){return c.RMa};c.Wra=function(){var g={ZCa:"unknown",y6a:1},b=document.createElement("canvas");if(b&&(b=b.getContext("webgl")||b.getContext("experimental-webgl"))){var d=b.getExtension("WEBGL_debug_renderer_info"); d&&(g.ZCa=b.getParameter(d.UNMASKED_RENDERER_WEBGL));g.maxTextureSize=b.getParameter(b.MAX_TEXTURE_SIZE);if(d=b.getExtension("EXT_texture_filter_anisotropic")||b.getExtension("MOZ_EXT_texture_filter_anisotropic")||b.getExtension("WEBKIT_EXT_texture_filter_anisotropic"))g.y6a=b.getParameter(d.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}return g}();c.c5a=function(){return c.Wra};c.TMa=function(){var g=c.Wra.ZCa.match(/Apple\s+(.+)\s+GPU/);return g?g[1].toUpperCase():"unknown"}();c.xcb=function(){return c.TMa}; c.cUa=c.uF()==c.lM?!0:!1;c.Hx=function(){return c.cUa};c.WAa=function(){return c.browser()==c.Dj&&14<=c.Pja()};var h=!1;try{h="true"==window.localStorage.getItem("tdvp_video_drift_2")}catch(g){}c.u5a=function(){return h};c.e$a=function(){h=!0;try{window.localStorage.setItem("tdvp_video_drift_2","true")}catch(g){}};c.lO="ontouchstart"in window||"undefined"!==typeof window.PointerEvent&&"undefined"!==typeof navigator.maxTouchPoints&&0a.indexOf("#")&&(a+="#"),a+="&tdvflipx");return a},L3a:function(a,e,k){var m=document.createElement("canvas");m.width=e;m.height=k;k=m.getContext("2d");k.translate(e,0);k.scale(-1,1);k.drawImage(a,0,0);a.src=m.toDataURL()}}}); define("J",["require","exports"],function(){return function(){function a(e,k,m,l,c,h){this.queue=e;this.url=k;this.priority=m;this.time=l;this.S$a=c;this.t2a=h}a.prototype.loaded=function(){this.queue.VT(this.url);this.queue.remove(this)};a.prototype.cancel=function(){this.queue.remove(this)};return a}()}); define("bz","require exports w mO lR J".split(" "),function(a,e,k,m,l,c){var h=k.pc()===k.zy,g=!(m.wj("debug")&&m.gg("disable-cache"));return function(){function b(){}b.add=function(d,f,n,q){d=new c(this,d,f,(new Date).getTime(),n,q);this.Kw.push(d);this.na();return d};b.dab=function(d){this.TJ.push(d);this.na()};b.cab=function(d){d=this.TJ.indexOf(d);0<=d&&this.TJ.splice(d,1);this.na()};b.nbb=function(d){var f;return h?!0:g?null!==(f=this.Rsa[d])&&void 0!==f?f:!1:!1};b.VT=function(d){h||g&&(this.Rsa[d]= !0)};b.na=function(){this.Lfa||(this.Lfa=l.BB(b.m0a.bind(this)))};b.m0a=function(){this.Lfa=null;for(var d=this.IXa(),f=0,n=this.ZX;fn&&nf&&n.splice(f,n.length-f);return n};return e}); define("eU",["require","jquery.mod","pU","gV"],function(a){function e(){this.lZ=this.nZ=this.oZ=this.mZ=this.kq=this.mq=this.nq=this.lq=0;this.IP=this.Bq=!0;this.aga=this.faa=0;this.Aa=!0;this.lQ=document.createElement("div");this.lQ.setAttribute("tdvlayer","content");this.gxa=k(this.lQ);l.css(this.lQ,{position:"absolute"});this.gN=document.createElement("div");this.z8=k(this.gN);l.css(this.gN,{position:"absolute"});this.gxa.append(this.z8)}var k=a("jquery.mod"),m=a("pU"),l=a("gV");e.prototype.append= function(c){this.z8.append(c)};e.prototype.prepend=function(c){this.z8.prepend(c)};e.prototype.vga=function(c){this.gN.appendChild(c)};e.prototype.Y7a=function(c){this.gN.removeChild(c)};e.prototype.fd=function(){return this.gxa};e.prototype.ie=function(){return this.lQ};e.prototype.i9a=function(c){this.faa!=c&&(this.faa=c,this.Aa=!0)};e.prototype.D$a=function(c){this.aga!=c&&(this.aga=c,this.Aa=!0)};e.prototype.UK=function(){return this.mZ+this.lq};e.prototype.WK=function(){return this.oZ+this.nq}; e.prototype.VK=function(){return this.nZ+this.mq};e.prototype.QK=function(){return this.lZ+this.kq};e.prototype.LL=function(c){this.IP!=c&&(this.IP=c,this.Aa=!0)};e.prototype.K9a=function(c){this.mZ!=c&&(this.mZ=c,this.Aa=!0)};e.prototype.M9a=function(c){this.oZ!=c&&(this.oZ=c,this.Aa=!0)};e.prototype.L9a=function(c){this.nZ!=c&&(this.nZ=c,this.Aa=!0)};e.prototype.J9a=function(c){this.lZ!=c&&(this.lZ=c,this.Aa=!0)};e.prototype.$ja=function(c){this.lq!=c&&(this.lq=c,this.Aa=!0)};e.prototype.dka=function(c){this.nq!= c&&(this.nq=c,this.Aa=!0)};e.prototype.aka=function(c){this.mq!=c&&(this.mq=c,this.Aa=!0)};e.prototype.Zja=function(c){this.kq!=c&&(this.kq=c,this.Aa=!0)};e.prototype.qHa=function(c){this.Bq!=c&&(this.Bq=c,this.Aa=!0)};e.prototype.mh=function(){this.Aa&&(this.na(),this.Aa=!1)};e.prototype.na=function(){l.css(this.lQ,{overflow:this.IP?"visible":"hidden","z-index":this.Bq?m.ZJa:m.YJa,left:this.UK()+"px",top:this.WK()+"px",right:this.VK()+"px",bottom:this.QK()+"px",cursor:"inherit"});l.css(this.gN,{left:-this.faa+ "px",top:-this.aga+"px",right:this.IP?0:"initial",bottom:this.IP?0:"initial",cursor:"inherit"})};return e}); define("kw","require es jquery.mod lO pU gV".split(" "),function(a){function e(){this.va=this.ra=this.Pa=this.Ma=void 0;this.sv=this.rv=this.vv=this.tv=0;this.Rb=!1;this.eaa=0;this.$fa=4;this.U7=6;this.nea=0;this.Fc="#000000";this.Lb=1;this.mc=document.createElement("div");this.mc.setAttribute("tdvlayer","shadow");this.wa=k(this.mc);l.css(this.mc,{position:"absolute",left:0,top:0,right:0,bottom:"0"});this.Aa=!1}a("es");var k=a("jquery.mod");a("lO");var m=a("pU"),l=a("gV");e.prototype.fd=function(){return this.wa}; e.prototype.ie=function(){return this.mc};e.prototype.bka=function(c){this.tv!=c&&(this.tv=c,this.Aa=!0)};e.prototype.cka=function(c){this.vv!=c&&(this.vv=c,this.Aa=!0)};e.prototype.Xja=function(c){this.rv!=c&&(this.rv=c,this.Aa=!0)};e.prototype.Yja=function(c){this.sv!=c&&(this.sv=c,this.Aa=!0)};e.prototype.Bj=function(c){this.Lb!=c&&(this.Lb=c,this.Aa=!0)};e.prototype.fl=function(){return this.Lb};e.prototype.Ef=function(c){this.Rb!=c&&(this.Rb=c,this.Aa=!0)};e.prototype.h9a=function(c){this.eaa!= c&&(this.eaa=c,this.Aa=!0)};e.prototype.C$a=function(c){this.$fa!=c&&(this.$fa=c,this.Aa=!0)};e.prototype.F8a=function(c){this.U7!=c&&(this.U7=c,this.Aa=!0)};e.prototype.f$a=function(c){this.nea!=c&&(this.nea=c,this.Aa=!0)};e.prototype.setColor=function(c){this.Fc!=c&&(this.Fc=c,this.Aa=!0)};e.prototype.RK=function(){return this.Fc};e.prototype.mh=function(){this.Aa&&(this.na(),this.Aa=!1)};e.prototype.na=function(){var c=this.eaa+"px "+this.$fa+"px "+this.U7+"px "+this.nea+"px "+this.Fc;this.mc.style.display= this.Rb?"block":"none";this.mc.style.boxShadow=c;this.mc.style["-webkit-box-shadow"]=c;this.mc.style["-moz-box-shadow"]=c;this.mc.style.borderTopLeftRadius=this.tv+"px";this.mc.style.borderTopRightRadius=this.vv+"px";this.mc.style.borderBottomLeftRadius=this.rv+"px";this.mc.style.borderBottomRightRadius=this.sv+"px";this.mc.style.filter="alpha(opacity="+Math.round(100*this.Lb)+")";this.mc.style["-ms-filter"]="alpha(opacity="+Math.round(100*this.Lb)+")";this.mc.style.opacity=this.Lb;this.mc.style.zIndex= m.wLa};return e}); define("nC","require jquery.mod es lO ms bh pu gO eU kw pU cH gV w".split(" "),function(a){var e=a("jquery.mod");a("es");var k=a("lO"),m=a("ms"),l=a("bh"),c=a("pu"),h=a("gO"),g=a("eU"),b=a("kw"),d=a("pU"),f=a("cH"),n=a("gV");a("w");var q=k.extend(m,function(){m.call(this);this.vI=q.vI++;this.y8=this.te=this.qca=this.HP=this.dea=this.wa=this.mc=null;this.$ya=this.tsa=!1;this.sa=this.kb=null;this.va=this.ra=this.mw=this.lw=0;this.Oz=this.Rb=!1;this.isa=!0;this.HO=this.IO=this.Sl=this.Tl=0;this.Lb=1; this.Xh=l.Ee;this.set("inView",!1);this.set("toolTip",void 0);this.JE(!0);this.Uda(!0)});q.prototype.Me=function(p){this.ZC=p};q.prototype.toString=function(){return"["+this.wa.attr("tdvclass")+"::"+this.vI+"]"};q.prototype.log=function(p){k.log(p+" "+this.toString()+" "+(new Date).getTime().toString())};q.prototype.Db=function(){return this.kb};q.prototype.xt=function(p){(this.kb=p)&&this.uaa();this.aK();this.trigger(c.SJa)};q.prototype.fd=function(){this.wa=e(this.ie());this.fd=function(){return this.wa}; return this.wa};q.prototype.LHa=function(p){(p=p||this.ZC)?this.mc.setAttribute("tdvclass",p):this.mc.removeAttribute("tdvclass")};q.prototype.r8a=function(){this.LHa()};q.prototype.ie=function(){this.mc=document.createElement("div");this.mc.setAttribute("id",this.vI);this.ZC&&this.mc.setAttribute("tdvclass",this.ZC);n.css(this.mc,{margin:0,padding:0,position:"absolute",overflow:"visible",display:"block"});this.ie=function(){return this.mc};return this.mc};q.prototype.Il=function(){this.dea=new b; this.Il=function(){return this.dea};return this.dea};q.prototype.$c=function(){this.te=new h;this.$c=function(){return this.te};return this.te};q.prototype.rI=function(){this.HP=document.createElement("div");this.HP.setAttribute("tdvlayer","overShadow");n.css(this.HP,{position:"absolute",left:0,top:0,cursor:"inherit"});this.rI=function(){return this.HP};return this.HP};q.prototype.A$=function(){this.qca=e(this.rI());this.A$=function(){return this.qca};return this.qca};q.prototype.Vb=function(){this.y8= new g;this.Vb=function(){return this.y8};return this.y8};q.prototype.getParent=function(){return this.sa};q.prototype.Ya=function(){return this.ra};q.prototype.Cb=function(){return this.va};q.prototype.h5a=function(){return void 0!==this.ra&&void 0!==this.va};q.prototype.wf=function(){return this.ra-this.Vb().UK()-this.Vb().VK()};q.prototype.vf=function(){return this.va-this.Vb().WK()-this.Vb().QK()};q.prototype.um=function(){return this.Vb().UK()};q.prototype.au=function(){return this.Vb().WK()}; q.prototype.$t=function(){return this.Vb().VK()};q.prototype.SK=function(){return this.Vb().QK()};q.prototype.Ef=function(p){this.Rb!=p&&(this.Rb=p,this.xe(),this.sa&&(this.sa.ec(),this.sa.Ud()),this.aK())};q.prototype.aK=function(){var p=!1;this.kb&&this.Rb&&0this.hI&&(this.Tl=this.hI);!isNaN(this.iI)&&this.Slthis.gI&&(this.Sl=this.gI)}; q.prototype.Ib=function(){if(!this.$ya){this.$ya=!0;var p=this.ie(),r=this.rI();p.appendChild(this.Il().ie());p.appendChild(r);r.appendChild(this.$c().ie());r.appendChild(this.Vb().ie())}};q.prototype.Pab=function(){this.O0a();var p=this.fu(),r=this.eu(),t=this.cu(),u=this.Cx();return p!=this.SUa||r!=this.RUa||t!=this.OUa||u!=this.NUa||this.Cn!=this.QUa||this.Bn!=this.PUa?(this.SUa=p,this.RUa=r,this.OUa=t,this.NUa=u,this.QUa=this.Cn,this.PUa=this.Bn,!0):!1};q.prototype.ab=function(){this.il()};q.prototype.mk= function(){};q.prototype.aHa=function(p,r,t,u){if(this.Ma!=p||this.Pa!=r||this.ra!=t||this.va!=u)this.Ma=p,this.Pa=r,this.ra=t,this.va=u,this.$c().setSize(this.ra,this.va),this.Ud(),this.il(),this.trigger(new f(c.uc))};q.prototype.mh=function(){var p=this.ie(),r=this.rI();this.Rb?(r.style.width=this.ra+"px",r.style.height=this.va+"px",p.style.left=this.Ma+this.lw+"px",p.style.top=this.Pa+this.mw+"px",p.style.width=this.ra+"px",p.style.height=this.va+"px",p.style.visibility="inherit",p.style.overflow= "visible",p.style.cursor=this.kb&&this.kb.a9.kCa(this.Xh),0===r.clientWidth&&0!==this.ra&&(p.style.width=0,p.style.width=this.ra+"px")):(p.style.visibility="hidden",p.style.width=0,p.style.height=0,p.style.overflow="hidden",r.style.width=0,r.style.height=0);this.Il().mh();this.$c().mh();this.Vb().mh();!this.tsa&&this.kb&&(this.tsa=!0,this.kb.uia()?this.vaa():this.kb.bind(c.bo,this.vaa,this,!0))};q.prototype.vaa=function(){this.trigger(c.INIT)};q.prototype.R4a=function(p){p=p.fd().offset();var r=this.fd().offset(), t={};t.left=r.left-p.left;t.top=r.top-p.top;this.kb&&(t.left/=this.kb.kA,t.top/=this.kb.kA);return t};q.vI=0;return q}); define("S","require es lO pu cH hf nC".split(" "),function(a){var e=a("es"),k=a("lO"),m=a("pu"),l=a("cH"),c=a("hf"),h=a("nC"),g=k.extend(h,function(){this.o={};this.Jw=this.Nqa=void 0;this.sA={};this.Jqa=!0;this.iya={};h.call(this);this.YPa();this.yb();this.Me("UICustomizable");this.xe()});g.Ec={ariaLabel:void 0,ariaRole:void 0,visible:!0,includeInLayout:!0,state:void 0,left:void 0,right:void 0,top:void 0,bottom:void 0,centerX:void 0,centerY:void 0,width:void 0,height:void 0,minWidth:void 0,minHeight:void 0, maxWidth:void 0,maxHeight:void 0,actualWidth:void 0,actualHeight:void 0,paddingLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,opacity:1,borderRadius:0,borderTopRadius:void 0,borderBottomRadius:void 0,borderLeftRadius:void 0,borderRightRadius:void 0,borderTopLeftRadius:void 0,borderTopRightRadius:void 0,borderBottomLeftRadius:void 0,borderBottomRightRadius:void 0,borderSize:0,borderLeftSize:void 0,borderTopSize:void 0,borderRightSize:void 0,borderBottomSize:void 0,borderColor:void 0,borderLeftColor:void 0, borderTopColor:void 0,borderRightColor:void 0,borderBottomColor:void 0,shadow:!1,shadowHorizontalLength:0,shadowVerticalLength:3,shadowBlurRadius:6,shadowSpread:0,shadowColor:"#000000",shadowOpacity:void 0,tabIndex:void 0,backgroundOpacity:1,backgroundColor:void 0,backgroundColorRatios:void 0,backgroundColorDirection:void 0,backgroundImageUrl:void 0,hideEffect:void 0,showEffect:void 0};g.prototype.YPa=function(){this.iya[c.jc]=c.Ab};g.prototype.yb=function(){this.so(g.Ec)};g.prototype.so=function(b){for(var d in b){var f= b[d],n=f&&f.length;n&&"string"!=typeof f?1==n?this.h(d,f[0]):2==n?this.A(d,f[0],f[1]):3==n&&this.A(d,f[0],f[1],f[2]):this.h(d,f)}};g.prototype.h=function(b,d){this.o[b]={i:!0,d}};g.prototype.FSa=function(){var b=[],d;for(d in this.o)b.push(d);return b};g.prototype.A=function(b,d,f,n){this.sA[d]||(this.sA[d]={});this.h(b,n);this.sA[d][f]=b};g.prototype.KJ=function(b,d){if(d)this.Nqa=b;else if(void 0!=this.Nqa)return;if(this.Jw!=b){if(d=this.sA[this.Jw])for(var f in d)(this.o[f]||(this.o[f]={})).i= !0;this.Jw=b;if(d=this.sA[this.Jw])for(f in d)(this.o[f]||(this.o[f]={})).i=!0;this.xe()}};g.prototype.qa=function(b){if(e(b).isString())this.set(b,void 0);else{var d=b;for(b in d)this.set(b,d[b])}};g.prototype.set=function(b,d){var f=this.o[b];f?(void 0==d&&(d=f.d),e.isEqual(this.get(b),d)||("state"==b&&this.KJ(d,!0),h.prototype.set.call(this,b,d),f.i=!0,this.xe())):h.prototype.set.call(this,b,d)};g.prototype.get=function(b,d){switch(b){case "actualWidth":return this.Ya();case "actualHeight":return this.Cb(); default:var f=h.prototype.get.call(this,b);void 0===f&&((b=this.o[b])&&(f=b.d),void 0===f&&(f=d));return f}};g.prototype.koa=function(){for(var b="paddingLeft paddingTop paddingRight paddingBottom borderRadius borderTopRadius borderBottomRadius borderLeftRadius borderRightRadius borderTopLeftRadius borderTopRightRadius borderBottomLeftRadius borderBottomRightRadius borderSize borderLeftSize borderTopSize borderRightSize borderBottomSize".split(" "),d=0;dr&& this.l0()}};n.prototype.q_a=function(p){this.UE&&(this.Pya(this.UE),p&&this.Qya(this.UE),this.l0())};n.prototype.l0=function(){this.UE&&(this.unbind(l.fc,this.Iya,this),this.UE=void 0)};n.prototype.Iya=function(){this.l0()};n.prototype.e$=function(p){this.dI(["gesturechange","gestureend"]);p.preventDefault();p.stopImmediatePropagation();this.cda(p)};n.prototype.cda=function(p){var r=this.r$(p);this.tJ=r;this.E_a(r.scale,r.rotation,r.coordinates);this.sa&&this.sa.cda(p)};n.prototype.Qqa=function(p){p.preventDefault(); p.stopImmediatePropagation();this.ada(p)};n.prototype.ada=function(p){var r=this.r$(p,this.tJ),t=r.rotation-this.tJ.rotation,u=r.scale/this.tJ.scale;this.tJ=r;this.Mc*=u;for(this.Uk+=t;180this.Uk;)this.Uk+=360;this.A_a(this.Mc,this.Uk,r.coordinates);0!=t&&this.C_a(this.Uk);1!=u&&this.D_a(this.Mc);this.l0();this.sa&&this.sa.ada(p)};n.prototype.Sqa=function(p){this.tN(["gesturechange","gestureend"]);p.preventDefault();p.stopImmediatePropagation();this.bda(p)};n.prototype.bda= function(p){var r=this.r$(p);this.B_a(this.Mc,this.Uk,r.coordinates);this.sa&&this.sa.bda(p)};n.prototype.wba=function(p){this.dI(["mouseup"]);p.stopImmediatePropagation();this.qwa(p,!0);q&&this.wUa(p.ctrlKey)};n.prototype.qwa=function(p,r){var t=this.Fz(p);r&&this.KOa(t);this.Sya(t,p);this.sa&&this.sa.qwa(p,r&&this.get("propagateClick"))};n.prototype.Aba=function(p){p.preventDefault();p.stopImmediatePropagation();this.Db().pG(this);this.rwa(p)};n.prototype.rwa=function(p){var r=this.Fz(p);this.JOa(r); this.Tya(r,p);this.sa&&this.sa.rwa(p)};n.prototype.oY=function(p){this.tN(["mouseup"]);p.preventDefault();p.stopImmediatePropagation();var r=this.Fz(p);this.swa(p,this.ysa(r));this.msa(r)};n.prototype.swa=function(p,r){var t=this.Fz(p);this.Uya(t);this.IOa(r);this.sa&&this.sa.swa(p,r)};n.prototype.KOa=function(p){this.bind(l.fc,this.opa,this,!0);this.cD=p};n.prototype.JOa=function(p){this.cD&&this.k$(this.cD,p)>n.ZLa&&this.n8()};n.prototype.IOa=function(p){this.cD&&(this.Pya(this.cD),p&&this.Qya(this.cD), this.n8())};n.prototype.n8=function(){this.cD&&(this.unbind(l.fc,this.opa,this),this.cD=void 0)};n.prototype.opa=function(){this.n8()};n.prototype.pta=function(p){this.kb.ota&&(p.preventDefault(),p.stopImmediatePropagation(),this.twa(p))};n.prototype.Voa=function(){return!1};n.prototype.twa=function(p){var r=this.Fz(p),t=this.oSa(p);this.sa&&!this.Voa(t.delta)&&this.sa.twa(p);this.H_a(r,t,p)};n.prototype.Fz=function(p){return this.bX(p.pageX,p.pageY)};n.prototype.oSa=function(p){p=window.event||p.originalEvent|| p;var r={};r.delta=Math.max(-1,Math.min(1,p.wheelDelta||-p.detail));r.aS=p.wheelDelta?.01*p.wheelDelta:r.delta;return r};n.prototype.zD=function(p){var r=this.p$(p);if(void 0===r){var t=void 0!==p.pageX?this.bX(p.pageX,p.pageY):this.bX(p.originalEvent.pageX,p.originalEvent.pageY);t.touches=[t]}else 0==r.length?t=this.JWa:(t={x:0,y:0,pageX:0,pageY:0,rB:0,sB:0,touches:[]},Array.from(r).forEach(function(u){u||(u=r[0]);u=this.bX(u.pageX,u.pageY);t.x+=u.x;t.y+=u.y;t.pageX+=u.pageX;t.pageY+=u.pageY;t.rB+= u.rB;t.sB+=u.sB;t.touches.push(u)}.bind(this)),t.x/=r.length,t.y/=r.length,t.pageX/=r.length,t.pageY/=r.length,t.rB/=r.length,t.sB/=r.length);return this.JWa=t};n.prototype.zsa=function(p){if((p=this.p$(p))&&1this.nQa||!this.Bba)return!1;p=this.k$(this.Bba,p);if(f.rb()){var r=this.Db(); r=.01*n.eMa*Math.min(r.Ya(),r.Cb())}else r=n.$La;return p>r?!1:!0};n.prototype.tN=function(p){this.JW=k(this.JW).difference(p);p=this.rra(p);for(var r=0;rc&&(c=this.PD,f=!0),f&&(c=Math.max(1,Math.floor((q+p)/(c+p))),c=(q-(c-1)*p)/c);else c=this.ew;c=Math.max(1,c);var r=Math.max(1,Math.floor(.001+(q+p)/(c+p)));f=r*c;var t=r*(c+p)-p,u=0;if(q>=t)switch(this.Ml){case k.sb:u=q-t;break;case k.Re:u=Math.round(.5*(q-t));break;default:u=0}q=[];t=[];for(var v= 0;vp&&(p=this.oO,f=!0),f&&(p=Math.max(1,Math.floor((u+v)/(p+v))),p=(u-(p-1)*v)/p);else p=this.dw;n=Math.max(1,Math.ceil(n/r));f=n*p;g=n*(p+v)-v;h=0;if(u>=g)switch(this.om){case k.wc:h=u-g;break; case k.se:h=Math.round(.5*(u-g))}u=[];g=[];for(var w=0;wu?(q.width=u,h-=q.width,c=!0):(f+=p.Cn,d.push(q))}n=d}while(c);for(g=0;g=d)switch(this.Ml){case k.sb:g-=d;break;case k.Re:g=Math.round(.5*(g-d));break;default:g=0}else g=0;for(n=0;n=q.height)switch(this.om){case k.wc:q.y=b-q.height;break;case k.se:q.y=Math.round(.5*(b-q.height));break;default:q.y=0}else q.y=0;q.x=g;g+=q.width+h}else q.x=0,q.y=0};return a}); define("dn",["require","lO","ny","cm","dR"],function(a){var e=a("lO"),k=a("ny"),m=a("cm"),l=a("dR");a=e.extend(m,function(){m.call(this)});a.prototype.measure=function(){for(var c=new l,h=this.eX(),g=0;gu?(q.height=u,h-=q.height,c=!0):(f+=p.Bn,d.push(q))}n=d}while(c);for(g=0;g g&&(g=q.width),f++)}d+=h*(f-1);if(b>=d)switch(this.om){case k.wc:b-=d;break;case k.se:b=Math.round(.5*(b-d));break;default:b=0}else b=0;for(n=0;nt)throw"Can't set index. This is not a child of this container";var u=this.Xd.slice();u.splice(t,1);u.splice(r,0,p);if(!k.isEqual(this.Xd,u)&&(this.Xd=u,!k(this.qq).contains(p))){r=this.Aha(p);p.fd().detach();u=t=null;for(var v=r-1;0<=v&&!t;v--)k(this.qq).contains(this.Xd[v])|| (t=this.Xd[v]);for(v=r+1;vthis.cb?this.cb=0:this.cb>c&&(this.cb=c)};e.Eg="horizontal";e.Rh="vertical";return e});define("kr",["require","lO","pw"],function(a){var e=a("lO"),k=a("pw");return e.extend(k,function(m){k.call(this,k.Eg,m)})});define("eE",["require","lO","pw"],function(a){var e=a("lO"),k=a("pw");return e.extend(k,function(m){k.call(this,k.Rh,m)})}); define("hA","require exports pu cH gD mO".split(" "),function(a,e,k,m,l,c){return new (function(h){function g(){var b=h.call(this)||this;b.visible=!0;b.qb=!1;b.Z4=!1;b.visible=!0;b.qb=!1;b.Z4=!1;b.nGa=c.getQueryParameter("redirect-when-hidden")||"";b.R7a=c.gg("reload-when-hidden",!1);document.addEventListener("visibilitychange",b.onChange.bind(b),!1);b.onChange();return b}Y(g,h);g.prototype.ey=function(b){if(this.qb=b)this.Z4=!1;this.onChange()};g.prototype.Gka=function(b){this.Z4=b;this.onChange()}; g.prototype.onChange=function(){var b=this.qb?!this.Z4:!document.hidden;this.visible!=b&&((this.visible=b)&&this.n7a(),this.trigger(new m(k.ba)))};g.prototype.n7a=function(){this.nGa?window.location.href=this.nGa:this.R7a&&window.location.reload()};return g}(l))}); define("nb",["require","exports","mO"],function(a,e,k){a={};a.kM=k.gg("debug",!1);a.JKa=k.wj("hqhls");a.wla=k.gg("audiocontext",!0);a.Tbb=k.gg("testhash",!1);a.wKa=k.gg("exitvronblur",!1);a.hKa=k.gg("download",!0);a.HLa=k.gg("updatewhilehidden",!1);a.CKa=k.gg("webgl2",!1);a.BKa=k.gg("webgl1",!1);a.zKa=k.gg("lowp",!1);a.Tla=k.gg("antialias");a.MLa=k.gg("unlimited-video-resolution",!1);return a}); define("bm",["require","exports","lO","hA","nb"],function(a,e,k,m,l){var c=window.requestAnimationFrame.bind(window),h=window.cancelAnimationFrame.bind(window),g=function(){function d(){}d.requestFrame=function(f,n,q){for(var p=0;pq?q:100:1;d.Ne=f;d.fCa=q;for(f=0;f< p.length;f++){var r=p[f];nd/n?0:1/(1-Math.pow((d-n)/d,1/b))}}function l(b){var d=new g;d.wha=function(f,n,q,p){return f+(n-f)*Math.pow(0>=q?0:q>=p?1:q/p,b)};d.Iia=m(b);return d}function c(b){var d=new g;d.wha=function(f,n,q,p){return f+(n-f)*(1-Math.pow(1-(0>=q?0:q>=p?1:q/p),b))};d.Iia=m(b);return d}function h(b){var d=new g;d.wha=function(f,n,q,p){q=0>=q?0:q>=p?1:q/p;.5>q?q=Math.pow(2*q,b):(q=1-Math.pow(1- (2*q-1),b),q+=1);return f+.5*(n-f)*q};d.Iia=m(b);return d}a=function(){function b(d,f,n){void 0===n&&(n=void 0);switch(d){case "quad_in":this.curve=l(2);break;case "quad_out":this.curve=c(2);break;case "quad_in_out":this.curve=h(2);break;case "cubic_in":this.curve=l(3);break;case "cubic_out":this.curve=c(3);break;case "cubic_in_out":this.curve=h(3);break;case "quart_in":this.curve=l(4);break;case "quart_out":this.curve=c(4);break;case "quart_in_out":this.curve=h(4);break;case "quint_in":this.curve= l(5);break;case "quint_out":this.curve=c(5);break;case "quint_in_out":this.curve=h(5);break;default:this.curve=l(1)}this.ux=f.slice();this.time=0;this.duration=this.RAa(f,n);this.cha={};for(d=0;d= this.duration};b.prototype.pi=function(){return this.duration};b.prototype.gl=function(){return this.time/this.duration};b.prototype.getTime=function(){return this.time};b.prototype.setTime=function(d){this.time=Math.min(Math.max(0,d),this.duration);for(d=0;dthis.jB.tabIndex&&(this.jB.tabIndex= g.tabIndex+1)}.bind(this));document.body.appendChild(this.jB);this.jB.focus();this.jB.blur();document.body.removeChild(this.jB);this.S1.trigger(k.ba)};h.blur=function(){document.activeElement.blur()};h.rga=function(g){this.bS.push(g)};h.Cja=function(g){g=this.bS.indexOf(g);-1!=g&&this.bS.splice(g,1)};h.Z1a=function(g){this.KT.push(g)};h.j8a=function(g){g=this.KT.indexOf(g);-1!=g&&this.KT.splice(g,1)};h.uAa=function(g,b){this.eka(g,b.map(function(d){return[d]}))};h.R1a=function(g,b){this.eka(g,[b])}; h.O1a=function(g,b,d,f){for(var n=[],q=0;qg||g>=this.EK.length||(b=b.N2a+d,0>b||b>=this.EK[g].length||this.EK[g][b].focus())}};return h}();return a}); define("oN","require es lO pu cH w ny ij fT n kr eE bm oW bK jr".split(" "),function(a){var e=a("es"),k=a("lO"),m=a("pu"),l=a("cH"),c=a("w"),h=a("ny"),g=a("ij"),b=a("fT"),d=a("n"),f=a("kr"),n=a("eE"),q=a("bm"),p=a("oW"),r=a("bK"),t=a("jr"),u=k.extend(d,function(){d.call(this);this.Me("Container");this.wd=this.Zd=this.eg=this.Lg=this.cc=this.Pb=this.Cpa=this.Bpa=0;this.Aaa=this.Iaa=this.Wl=this.Vl=!1;this.wpa=0;this.v8=this.u8=void 0;this.x8=this.w8=0;this.yA=null;this.rca=g.Wla;this.Jz=!1;this.iX= null;this.Mt=!1;this.H0=null;t.S1.bind(m.ba,this.jVa,this)});u.Ec={overflow:g.kH,scrollBarColor:"#000000",scrollBarWidth:10,scrollBarMargin:5,scrollBarHorizontalMargin:void 0,scrollBarVerticalMargin:void 0,scrollBarOpacity:.5,scrollBarVisible:b.qd};e.defaults(u.Ec,d.Ec);u.prototype.uo=function(){this.iX=new f(this.A$());this.iX.O7.bind("mousedown touchstart",e.bind(this.cTa,this));this.uo=function(){return this.iX};return this.iX};u.prototype.vo=function(){this.H0=new n(this.A$());this.H0.O7.bind("mousedown touchstart", e.bind(this.n1a,this));this.vo=function(){return this.H0};return this.H0};u.prototype.jVa=function(){if(t.np()){var v=this.nb().map(function(w){return w.ie()}).indexOf(t.r4a());-1!==v&&this.scrollIntoView(this.nb()[v])}};u.prototype.scrollIntoView=function(v){var w=v.Ma,x=v.Pa;this.scrollTo(Math.min(w,Math.max(w+v.Ya()-this.Lg,this.Zd)),Math.min(x,Math.max(x+v.Cb()-this.eg,this.wd)))};u.prototype.scrollTo=function(v,w){var x=this.Zd;v>this.Zd?this.XV()&&(x=Math.min(v,this.Pb-this.Lg)):vthis.wd?this.VV()&&(v=Math.min(w,this.cc-this.eg)):wthis.wd+this.eg&&D>=w&&D=v+this.eg&&zx+this.eg&&(x=z-this.eg)}this.MQ(this.Zd,x)}};u.prototype.YV=function(){return this.Toa()&&0this.Zd+this.Lg&&D>=w&&D=v+this.Lg&&zx+this.Lg&&(x=z-this.Lg)}this.MQ(x, this.wd)}};u.prototype.WV=function(){return this.Soa()&&0v&&this.wdthis.Zd||this.Zd>this.Pb-this.Lg)&&(this.Vl=!1),this.Wl&&(this.wd=this.yA.ib("vScrollPosition"), 0>this.wd||this.wd>this.cc-this.eg)&&(this.Wl=!1),this.jx(),q.requestFrame(this.v7,this)):(this.Wl=this.Vl=!1,this.yA=null,this.Kt())};u.prototype.jx=function(v){if(v){if(!this.Jz)switch(this.B("horizontalAlign")){case h.sb:this.Zd=this.Pb-this.Lg;break;case h.Re:this.Zd=(this.Pb-this.Lg)/2;break;default:this.Zd=0}if(!this.Mt)switch(this.B("verticalAlign")){case h.wc:this.wd=this.cc-this.eg;break;case h.se:this.wd=(this.cc-this.eg)/2;break;default:this.wd=0}}this.Zd=Math.max(0,Math.min(this.Pb-this.Lg, this.Zd));this.wd=Math.max(0,Math.min(this.cc-this.eg,this.wd));this.uo().setPosition(this.Zd);this.vo().setPosition(this.wd);this.Vb().i9a(this.Zd);this.Vb().D$a(this.wd);this.il();if(this.iwa!=this.Zd||this.jwa!=this.wd)void 0!==this.iwa&&void 0!==this.jwa&&this.trigger(new l(m.Yp)),this.iwa=this.Zd,this.jwa=this.wd};u.prototype.Kt=function(){var v=this.get("scrollBarVisible")==b.ALWAYS?!0:this.Ao?this.Vl||this.Wl||this.Aaa:this.Vl||this.Wl||this.Iaa;this.uo().Ef(this.Jz&&v);this.vo().Ef(this.Mt&& v);this.il()};u.prototype.Ib=function(){d.prototype.Ib.call(this);this.SOa||(this.SOa=!0,this.Ao?this.bind(m.fb,this.xpa,this):(this.bind(m.fb,this.ROa,this),this.bind(m.qd,this.VOa,this),this.bind(m.fc,this.UOa,this),this.bind(m.us,this.TOa,this)))};u.prototype.ab=function(){this.L("overflow")&&(this.rca=this.B("overflow"),this.T("overflow"),this.Ud());this.L("scrollBarColor")&&(this.uo().setColor(this.B("scrollBarColor")),this.vo().setColor(this.B("scrollBarColor")),this.T("scrollBarColor"));this.L("scrollBarWidth")&& (this.uo().dU(this.B("scrollBarWidth")),this.vo().dU(this.B("scrollBarWidth")),this.T("scrollBarWidth"));if(this.L("scrollBarMargin")||this.L("scrollBarVerticalMargin")||this.L("scrollBarHorizontalMargin")){var v=this.B("scrollBarHorizontalMargin","scrollBarMargin"),w=this.B("scrollBarVerticalMargin","scrollBarMargin");this.uo().nHa(v);this.uo().THa(w);this.vo().nHa(v);this.vo().THa(w);this.T("scrollBarMargin");this.T("scrollBarVerticalMargin");this.T("scrollBarHorizontalMargin")}this.L("scrollBarOpacity")&& (this.uo().Bj(this.B("scrollBarOpacity")),this.vo().Bj(this.B("scrollBarOpacity")),this.T("scrollBarOpacity"));d.prototype.ab.call(this)};u.prototype.mk=function(){d.prototype.mk.call(this);this.k0a();this.I0a();this.G0a();this.Kt();this.il()};u.prototype.k0a=function(){for(var v=0,w=0,x=0,y=0,z=this.nb(),D=0;Dthis.Bpa||0>this.Cpa||this.Pb>this.Lg||this.cc>this.eg;if(this.rca==g.Yp){this.Jz=this.Lg"));break;default:f["line-height"]="normal",this.Gn.text(this.B("text")), this.Gn.html(this.Gn.html().split(" ").join(" "))}this.T("direction");this.T("text");setTimeout(function(){this.ec();this.Ud()}.bind(this),0)}if(this.L("fontFamily")){var n=this.B("fontFamily");m(n).isString()||(n="");f.fontFamily=b.xx(n);this.T("fontFamily");this.ec();this.Ud()}this.L("fontSize")&&(n=this.B("fontSize"),m(n).isNumber()?n+="px":m(n).isString()||(n=""),f.fontSize=n,this.T("fontSize"),this.ec(),this.Ud());this.L("fontColor")&&(n=this.B("fontColor"),m(n).isString()||(n=""),f.color= n,this.T("fontColor"));if(this.L("fontWeight")){n=this.B("fontWeight");switch(n){case "bold":case "bolder":case "lighter":case "100":case "200":case "300":case "400":case "500":case "600":case "700":case "800":case "900":case "normal":break;default:n="normal"}f.fontWeight=n;this.T("fontWeight");this.ec();this.Ud()}if(this.L("fontStyle")){n=this.B("fontStyle");switch(n){case "italic":case "normal":break;default:n="normal"}f.fontStyle=n;this.T("fontStyle");this.ec();this.Ud()}if(this.L("textDecoration")){n= this.B("textDecoration");switch(n){case "underline":case "overline":case "line-through":case "none":break;default:n="none"}f.textDecoration=n;this.T("textDecoration");this.ec();this.Ud()}this.L("horizontalAlign")&&(this.Ud(),this.T("horizontalAlign"));this.L("verticalAlign")&&(this.Ud(),this.T("verticalAlign"));n=["textShadowColor","textShadowHorizontalLength","textShadowVerticalLength","textShadowBlurRadius","textShadowOpacity"];if(m(n).any(function(p){return this.L(p)},this)){var q={};m(n).each(function(p){q[p]= this.B(p);this.T(p)},this);f["-moz-text-shadow"]=f["-webkit-text-shadow"]=f["text-shadow"]=[q.textShadowHorizontalLength+"px",q.textShadowVerticalLength+"px",q.textShadowBlurRadius+"px","rgba("+parseInt("0x"+q.textShadowColor.substr(1,2))+", "+parseInt("0x"+q.textShadowColor.substr(3,2))+", "+parseInt("0x"+q.textShadowColor.substr(5,2))+", "+q.textShadowOpacity+")"].join(" ");n=0==q.textShadowVerticalLength&&0==this.B("textShadowHorizontalLength")?135:45*Math.round(4*Math.atan2(q.textShadowHorizontalLength, -q.textShadowVerticalLength)/Math.PI);f.filter="progid:DXImageTransform.Microsoft.Shadow(color=#"+("00"+(255*q.textShadowOpacity).toString(16)).slice(-2)+q.textShadowColor.substr(1,6)+",direction="+n+")";this.Vb().LL((0this.Zo.indexOf(d)?(this.C="playing",this.Zo.push(d),this.Te=0,this.Ub=Math.max(this.get("duration", 1E3),1),this.pg=new c(this.get("easing","linear"),[new h("pos",0,1)],this.Ub),this.pg.setTime(this.Te),this.NJ(),this.Vw(),this.VP()):this.C="playing")};b.prototype.reverse=function(d){d||(d=g);this.m6a(d)||("stopped"==this.C||0>this.Zo.indexOf(d)?(this.C="playingReverse",this.Zo.push(d),this.Te=this.Ub=Math.max(this.get("duration",1E3),0),this.pg=new c(this.get("easing","linear"),[new h("pos",0,1)],this.Ub),this.pg.setTime(this.Te),this.NJ(),this.Vw(),this.VP()):this.C="playingReverse")};b.prototype.stop= function(){"stopped"!=this.C&&(this.C="stopped",0!==this.Te&&(this.Te=0,this.pg.setTime(this.Te),this.Vw(),this.VP()))};b.prototype.end=function(){"stopped"!=this.C&&(this.Te=this.Ub,this.pg.setTime(this.Te),this.Vw(),this.VP())};b.prototype.cancel=function(){this.C="stopped";this.Te=0;this.Zo=[]};b.prototype.eL=function(d){return"playing"==this.C&&0<=this.Zo.indexOf(d)};b.prototype.m6a=function(d){return"playingReverse"==this.C&&0<=this.Zo.indexOf(d)};b.prototype.Xj=function(d){"stopped"!=this.C&& (this.Te="playing"==this.C?Math.min(this.Ub,this.Te+d):Math.max(0,this.Te-d),this.pg.setTime(this.Te),this.Vw(),this.VP())};b.prototype.gl=function(){return this.pg&&this.pg.ib("pos")||0};b.prototype.zz=function(d){if(this.Zo)for(var f=0;f=this.Te?(this.Te=0,this.MJ(),this.Zo=[],"stopped"!=this.C&&(this.C="stopped",this.get("loop")&&this.play())):"playing"==this.C&&this.Te>=this.Ub?(this.Te=this.Ub,this.LJ(),this.Zo=[],"stopped"!=this.C&&(this.C="stopped","alternate"==this.get("animationDirection")?this.reverse():this.get("loop")&&this.play())):"stopped"!=this.C&&l.requestFrame(this.Xj,this)};b.uKa="start";b.D5="frame";b.qk="end";b.sKa="reverseStart";b.Ju="reverseEnd";return b}); define("hc",["require","pu","eF"],function(a){var e=a("pu"),k=a("eF");return{zQa:function(){this.yk=this.Se=null;this.bind(e.jd,this.xqa,this,!0);this.bind(e.Zc,this.sqa,this,!0);this.bind(e.qd,this.uqa,this,!0);this.bind(e.fc,this.tqa,this,!0);this.bind(e.F("effect"),this.qqa,this,!0);this.bind(e.F("rollOverEffect"),this.vqa,this,!0);this.kD=!1},jcb:function(){this.unbind(e.jd,this.xqa,this,!0);this.unbind(e.Zc,this.sqa,this,!0);this.unbind(e.qd,this.uqa,this,!0);this.unbind(e.fc,this.tqa,this,!0); this.unbind(e.F("effect"),this.qqa,this,!0);this.unbind(e.F("rollOverEffect"),this.vqa,this,!0)},xqa:function(){this.Se&&this.Se.play()},sqa:function(){this.Se&&this.Se.stop();this.yk&&this.yk.stop();this.kD=!1},uqa:function(){this.kD||(this.kD=!0,this.yk&&(this.Se&&this.Se.get("loop")&&0this.a8;)this.zd.pop().cancel();if(t){var v=this.Fl,w=function(){t.call(u||window,v.xf(),v.qe(),v.Ze())};this.Fl.Fh()?w():this.Fl.bind(c.da,w)}};e.prototype.clear=function(){this.zd.forEach(function(r){r.cancel()});this.Fl=null};a=l.extend(f,function(r){f.call(this);this.Me("Image");this.a8=r||1;this.Pfa=!1;this.Ml=b.Za;this.lX=!1;this.om=b.Dc;this.K0=!1;this.Mf=d.NONE;this.Fda= !1;this.eJ=this.fJ=0;this.laa=this.oca=!1;this.cc=this.Pb=0;this.zv=!1;this.sd=this.Nl=this.hc=this.uX=this.tX=null;this.bind(c.uc,this.uTa,this);this.bind(c.jd,this.vTa,this)});a.prototype.y$=function(){this.sd=new e(this.a8);this.y$=function(){return this.sd};return this.sd};a.prototype.yb=function(){f.prototype.yb.call(this);this.h("horizontalAlign",b.Za);this.h("verticalAlign",b.Dc);this.h("scaleMode",d.NONE)};a.prototype.set=function(r,t){"url"==r&&this.get("url")!=t&&(this.Pfa=!0,this.xe()); f.prototype.set.call(this,r,t)};a.prototype.KL=function(r){this.Ml!=r&&(this.Ml=r,this.lX=!0,this.xe())};a.prototype.SL=function(r){this.om!=r&&(this.om=r,this.K0=!0,this.xe())};a.prototype.IB=function(r){this.Mf!=r&&(this.Mf=r,this.Fda=!0,this.xe(),this.ec())};a.prototype.uTa=function(){this.zv=!0;this.xe()};a.prototype.vTa=function(){this.Oza()};var p={position:"static",cursor:"inherit",display:"inline",verticalAlign:"top",visibility:"hidden","pointer-events":"none","user-select":"none","-ms-user-select":"none", "-moz-user-select":"none","-webkit-user-select":"none","touch-callout":"none","-webkit-touch-callout":"none"};g.browser()==g.Lm&&g.rb()&&(p.transform="translate3d(0,0,0)");a.prototype.roa=function(r,t,u){this.fJ=t?t:0;this.eJ=u?u:0;this.hc&&(this.hc.remove(),this.hc=null);if(this.Nl=r)this.hc=m(this.Nl),n.css(this.Nl,p),this.tX.append(this.hc);this.oca=this.laa=!0;this.xe();this.ec();this.hc&&this.trigger(c.da)};a.prototype.Ib=function(){f.prototype.Ib.call(this);this.tX||(this.uX=document.createElement("div"), this.tX=m(this.uX),n.css(this.uX,{position:"static",overflow:"hidden",cursor:"inherit"}),this.Vb().append(this.tX))};a.prototype.kw=function(){this.Tl=this.fJ+this.um()+this.$t();this.Sl=this.eJ+this.au()+this.SK();this.$sa=0==this.fJ&&0==this.eJ?0:this.fJ/this.eJ;this.HO=this.IO=0};a.prototype.ab=function(){this.L("scaleMode")&&(this.IB(this.B("scaleMode")),this.T("scaleMode"));this.L("horizontalAlign")&&(this.KL(this.B("horizontalAlign")),this.T("horizontalAlign"));this.L("verticalAlign")&&(this.SL(this.B("verticalAlign")), this.T("verticalAlign"));this.koa()&&(this.zv=!0);f.prototype.ab.call(this);this.Oza();if(this.h5a()){var r=!1;if(this.Fda||this.oca||this.zv){var t=this.wf(),u=this.vf(),v=this.fJ,w=this.eJ,x;if(0==v||0==w)var y=x=0;else switch(this.Mf){case d.NONE:x=v;y=w;break;case d.Gy:x=t;y=u;break;case d.Mh:v*u>w*t?(x=t,y=w*t/v):(x=v*u/w,y=u);break;case d.ns:v*u>w*t?(x=v*u/w,y=u):(x=t,y=w*t/v);break;case d.Qp:x=t;y=w*t/v;break;case d.sk:x=v*u/w,y=u}if(this.Pb!=x||this.cc!=y)this.Pb=x,this.cc=y,r=!0;this.oca= this.Fda=!1}if(r||this.zv||this.laa)this.K0=this.lX=!0,this.Nl&&n.css(this.Nl,{width:this.Pb+"px",height:this.cc+"px",visibility:"inherit"}),n.css(this.uX,{width:this.wf()+"px",height:this.vf()+"px","border-top-left-radius":this.gX(this.xRa(),this.dra(),this.bra())+"px","border-top-right-radius":this.gX(this.yRa(),this.dra(),this.cra())+"px","border-bottom-left-radius":this.gX(this.vRa(),this.ara(),this.bra())+"px","border-bottom-right-radius":this.gX(this.wRa(),this.ara(),this.cra())+"px"}),this.ec(), this.laa=this.zv=!1;if(this.lX&&this.Nl){switch(this.Ml){case b.Za:n.css(this.Nl,{"margin-left":0,"margin-right":this.wf()-this.Pb+"px"});break;case b.sb:n.css(this.Nl,{"margin-left":this.wf()-this.Pb+"px","margin-right":0});break;case b.Re:n.css(this.Nl,{"margin-left":Math.floor(.5*(this.wf()-this.Pb))+"px","margin-right":Math.ceil(.5*(this.wf()-this.Pb))+"px"})}this.lX=!1}if(this.K0&&this.Nl){switch(this.om){case b.Dc:n.css(this.Nl,{"margin-top":0,"margin-bottom":this.vf()-this.cc+"px"});break; case b.wc:n.css(this.Nl,{"margin-top":this.vf()-this.cc+"px","margin-bottom":0});break;case b.se:n.css(this.Nl,{"margin-top":Math.floor(.5*(this.vf()-this.cc))+"px","margin-bottom":Math.ceil(.5*(this.vf()-this.cc))+"px"})}this.K0=!1}}};a.prototype.Oza=function(){if(this.Pfa){var r=this.get("url");r?this.y$().load(r,this.roa,this):(this.y$().clear(),this.roa(null,0,0));this.Pfa=!1}};a.prototype.gX=function(r,t,u){if(!r)return 0;var v=0;t&&(v=Math.max(v,t));u&&(v=Math.max(v,u));return Math.max(0,r- v)};return a}); define("gj","require lO mG hf mp nd".split(" "),function(a){var e=a("lO"),k=a("mG"),m=a("hf"),l=a("mp"),c=a("nd");a=e.extend(l,function(){l.call(this)});a.prototype.yb=function(){l.prototype.yb.call(this);this.h("iconURL");this.A("rollOverIconURL",m.aa,"iconURL");this.A("pressedIconURL",m.Ab,"iconURL");this.A("pressedRollOverIconURL",m.jc,"iconURL")};a.prototype.I8=function(){var h=new c(3);h.set("scaleMode",k.Mh);return h};a.prototype.ab=function(){if(this.L("iconURL")){var h=this.B("iconURL");this.Bi.set("url", h);this.Bi.set("visible",h?!0:!1);this.T("iconURL")}l.prototype.ab.call(this)};return a});define("gi",["require","oh","gj"],function(a){var e=a("oh"),k=a("gj");return e.define("Button",k,function(){k.call(this)})});define("iA",["require","ms","oh"],function(a){var e=a("ms");return a("oh").define("CapPanoramaOverlay",e,function(){e.call(this)})});define("ip",["require","oh","iA"],function(a){var e=a("oh"),k=a("iA");return e.define("CeilingCapPanoramaOverlay",k,function(){k.call(this)})}); define("l",["require","oh","jb"],function(a){var e=a("oh"),k=a("jb");return e.define("ChildModel3DObject",k,function(){k.call(this);this.set("floorColor","transparent")})}); define("cG","require es jquery.mod lO pu cH e".split(" "),function(a){a("es");var e=a("jquery.mod"),k=a("lO"),m=a("pu"),l=a("cH"),c=a("e");a=k.extend(c,function(){c.call(this);this.Me("Canvas");this.y9=!0;this.S=null;this.bind(m.uc,this.lOa,this)});a.prototype.lOa=function(){this.G2()};a.prototype.G2=function(){this.y9=!0;this.il()};a.prototype.Ib=function(){c.prototype.Ib.call(this);this.S||(this.S=e(""),this.S.css({position:"absolute",left:0,top:0,cursor:"inherit"}),this.Vb().append(this.S))}; a.prototype.ab=function(){this.koa()&&this.G2();c.prototype.ab.call(this)};a.prototype.mh=function(){if(this.y9){this.y9=!1;var h=this.S.get(0);h.width=this.wf();h.height=this.vf();this.Lab()}c.prototype.mh.call(this)};a.prototype.m4a=function(){return this.S.get(0).width};a.prototype.l4a=function(){return this.S.get(0).height};a.prototype.k4a=function(){return this.S.get(0).getContext("2d")};a.prototype.Lab=function(){this.trigger(new l(m.ba))};return a}); define("kz","require lO pu hf mp cG".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("hf"),l=a("mp"),c=a("cG");a=e.extend(l,function(){l.call(this)});a.prototype.mk=function(){l.prototype.mk.call(this)};a.prototype.yb=function(){l.prototype.yb.call(this);this.h("iconColor");this.A("rollOverIconColor",m.aa,"iconColor");this.A("pressedIconColor",m.Ab,"iconColor");this.A("pressedRollOverIconColor",m.jc,"iconColor")};a.prototype.I8=function(){var h=new c;h.bind(k.ba,this.qJa,this,!0);return h};a.prototype.ab= function(){this.L("iconColor")&&(this.Bi.G2(),this.T("iconColor"));l.prototype.ab.call(this)};a.prototype.ZRa=function(){return this.B("iconColor")};a.prototype.$Ra=function(){return this.Bi.k4a()};a.prototype.bSa=function(){return this.Bi.m4a()};a.prototype.aSa=function(){return this.Bi.l4a()};a.prototype.qJa=function(){};return a}); define("gs","require lO pu kz ny hf jr".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("kz"),l=a("ny"),c=a("hf"),h=a("jr");a=e.extend(m,function(){m.call(this);this.qa({horizontalAlign:l.Re,verticalAlign:l.se});this.ow=this.ow.bind(this);this.bind(k.jd,this.mj,this,!0);this.bind(k.Zc,this.lj,this,!0)});a.prototype.yb=function(){m.prototype.yb.call(this);this.h("iconLineWidth");this.A("rollOverIconLineWidth",c.aa,"iconLineWidth");this.A("pressedIconLineWidth",c.Ab,"iconLineWidth");this.A("pressedRollOverIconLineWidth", c.jc,"iconLineWidth")};a.prototype.kSa=function(){return this.B("iconLineWidth")};a.prototype.ab=function(){this.L("iconLineWidth")&&(this.Bi.G2(),this.T("iconLineWidth"));m.prototype.ab.call(this)};a.prototype.qJa=function(){var g=this.$Ra(),b=this.ZRa(),d=this.bSa(),f=this.aSa(),n=this.kSa();g.clearRect(0,0,d,f);g.lineWidth=n||1;g.strokeStyle=b||"#000000";g.beginPath();g.moveTo(0,0);g.lineTo(d,f);g.moveTo(0,f);g.lineTo(d,0);g.closePath();g.stroke()};a.prototype.mj=function(){h.rga(this.ow)};a.prototype.lj= function(){h.Cja(this.ow)};a.prototype.ow=function(){this.trigger(k.pa)};return a});define("jN",["require","oh","gs"],function(a){var e=a("oh"),k=a("gs");return e.define("CloseButton",k,function(){k.call(this)})});define("kB",["require","ms","oh"],function(a){var e=a("ms");return a("oh").define("CookiesPolicy",e,function(){e.call(this)})}); define("mq",["require","lR","oh","oN"],function(a){var e=a("lR"),k=a("oh"),m=a("oN");a=k.define("Container",m,function(){m.call(this)});a.prototype.scrollTo=function(l,c){m.prototype.scrollTo.call(this,l,c)};a.prototype.scrollIntoView=function(l){e.BB(function(){m.prototype.scrollIntoView.call(this,l)}.bind(this))};return a}); define("lW",["require","ms","oh"],function(a){var e=a("ms"),k=a("oh");a=k.define("PanoramaFrame",e,function(){e.call(this);this.xa=null});a.prototype.get=function(m,l){switch(m){case "overlays":return this.B$();case "hfov":case "vfov":case "pitch":case "flipImageHorizontally":case "minFaceSize":if(this.xa)return this.xa.get(m,l)}return e.prototype.get.call(this,m,l)};a.prototype.B$=function(){var m=e.prototype.get.call(this,"overlays");m||(m=[]);return this.jea(m)};a.prototype.jea=function(m){if(void 0=== this.OJ||this.TX!=m){var l=function(h){return k.Ja("PopupPanoramaOverlay",h)},c=function(h){return k.Ja("LensFlarePanoramaOverlay",h)};this.TX=m;this.OJ=[].concat(m.filter(function(h){return!(l(h)||c(h))}),m.filter(c),m.filter(l))}return this.OJ};a.prototype.g2a=function(m){this.xa=m};a.prototype.aB=function(){return this.xa};a.prototype.xm=function(){return!1};return a});define("pc",["require","oh","lW"],function(a){var e=a("oh"),k=a("lW");return e.define("CubicPanoramaFrame",k,function(){k.call(this)})}); define("iN",["require"],function(){return{"bg-bg":{mute:"\u0417\u0430\u0433\u043b\u0443\u0448\u0430\u0432\u0430\u043d\u0435","cardboard-v1":"\u0410\u043a\u043e \u043d\u0435 \u0441\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0438 \u043a\u043e\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 Cardboard \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b \u043d\u0430 \u0445\u043e\u0442\u0441\u043f\u043e\u0442 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435. \u0421\u043b\u0435\u0434 \u0442\u043e\u0432\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0449\u0435 \u043f\u043e\u0433\u043b\u0435\u0434\u043d\u0435\u0442\u0435 \u0445\u043e\u0442\u0441\u043f\u043e\u0442\u0430 \u0438 \u0449\u0435 \u0438\u0437\u0447\u0430\u043a\u0430\u0442\u0435, \u0434\u043e\u043a\u0430\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u0442\u043e \u0441\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0430.", "download-tour":"\u0418\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0435 \u043d\u0430 \u0442\u0443\u0440\u0430 \u0437\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435 \u043e\u0444\u043b\u0430\u0439\u043d","change-to-drag-and-release":"\u041f\u0440\u043e\u043c\u0435\u043d\u0435\u0442\u0435 \u0440\u0435\u0436\u0438\u043c\u0430 \u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u041f\u043b\u044a\u0437\u0433\u0430\u043d\u0435 \u0438 \u041f\u0443\u0441\u043a\u0430\u043d\u0435", accept:"\u041f\u0440\u0438\u0435\u043c\u0435\u0442\u0435",cancel:"\u041e\u0442\u043a\u0430\u0437","storage-not-provided-bookmark":"\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0442\u043e \u0441\u044a\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0435 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e. \u041e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u0442\u0430\u0437\u0438 \u0443\u0435\u0431 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0432 \u043e\u0442\u043c\u0435\u0442\u043a\u0438 \u0438 \u0434\u0430 \u044f \u043f\u0440\u0435\u0437\u0430\u0440\u0435\u0434\u0438\u0442\u0435.", "dont-display-again":"\u041d\u0435 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0442\u0430\u0437\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442\u043d\u043e\u0432\u043e","web-server-required":"\u0422\u043e\u0437\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u0435\u043b\u0435\u043d \u0442\u0443\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043f\u0443\u0441\u043d\u0430\u0442 \u043e\u0442 \u043b\u043e\u043a\u0430\u043b\u043d\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e. \u041c\u043e\u043b\u044f, \u043a\u0430\u0447\u0435\u0442\u0435 \u0433\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u043e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e.\n\u0410\u043a\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0442\u0435, \u0438\u0437\u0442\u0435\u0433\u043b\u0435\u0442\u0435 htm \u0444\u0430\u0439\u043b\u0430 (\u0438\u043b\u0438 \u0446\u044f\u043b\u0430\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043d\u0430 \u0442\u0443\u0440\u0430) \u0432\u044a\u0440\u0445\u0443 \u0438\u043a\u043e\u043d\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e TourViewer.", download:"\u0418\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0435","change-to-click-and-move":"\u041f\u0440\u043e\u043c\u0435\u043d\u0435\u0442\u0435 \u0440\u0435\u0436\u0438\u043c\u0430 \u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u041a\u043b\u0438\u043a\u0432\u0430\u043d\u0435 \u0438 \u041f\u0440\u0435\u043c\u0435\u0441\u0442\u0432\u0430\u043d\u0435",yes:"\u0434\u0430","delete-downloaded":"\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435","use-safari-for-vr":"\u041f\u0440\u0435\u043f\u043e\u0440\u044a\u0447\u0432\u0430\u043c\u0435 Safari, \u0437\u0430 \u0434\u0430 \u0440\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0442\u0435 \u0442\u043e\u0437\u0438 \u0442\u0443\u0440 \u0432 \u0440\u0435\u0436\u0438\u043c VR", "exit-fullscreen":"\u0418\u0437\u043b\u0435\u0437\u0442\u0435 \u043e\u0442 \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d",no:"\u043d\u0435","download-failed":"\u0418\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0435\u0442\u043e \u0441\u0435 \u043f\u0440\u043e\u0432\u0430\u043b\u0438","giroscope-disabled-http":"\u0418\u043c\u0430\u0442\u0435 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0442\u0430\u0437\u0438 \u0443\u0435\u0431 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0447\u0440\u0435\u0437 http, \u0442\u0430\u043a\u0430 \u0447\u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u044a\u0442 \u0434\u043e \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 \u0432\u0430\u0448\u0435\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u0440\u0435\u0436\u0438\u043c\u044a\u0442 VR \u0441\u0430 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0438, \u043c\u043e\u043b\u044f, \u043e\u0442\u0432\u043e\u0440\u0435\u0442\u0435 \u0433\u043e \u0447\u0440\u0435\u0437 https, \u0437\u0430 \u0434\u0430 \u0433\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0442\u0435.", "cookies-notice":"\u0422\u0430\u0437\u0438 \u0443\u0435\u0431 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0431\u0438\u0441\u043a\u0432\u0438\u0442\u043a\u0438 \u0437\u0430 \u0441\u044a\u0431\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u0430\u043d\u043d\u0438 \u0437\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435\u0442\u043e. \u0417\u0430 \u043f\u043e\u0432\u0435\u0447\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043c\u043e\u043b\u044f, \u043f\u043e\u0441\u0435\u0442\u0435\u0442\u0435 \u041f\u0440\u0430\u0432\u0438\u043b\u0430\u0442\u0430 \u0437\u0430 \u0431\u0438\u0441\u043a\u0432\u0438\u0442\u043a\u0438\u0442\u0435 .", "use-cardboard":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439 Cardboard","launch-default-browser":"\u0421\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u044a\u0440\u0430 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435","rotate-device":"\u041c\u043e\u043b\u044f \u0437\u0430\u0432\u044a\u0440\u0442\u0435\u0442\u0435 \u0432\u0430\u0448\u0435\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e", "exit-vr":"\u0418\u0437\u043b\u0438\u0437\u0430\u043d\u0435 \u043e\u0442 \u0440\u0435\u0436\u0438\u043c VR","storage-not-provided-launch-from-desktop":"\u041c\u043e\u043b\u044f, \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439\u0442\u0435 \u043e\u0431\u0438\u043a\u043e\u043b\u043a\u0430\u0442\u0430 \u043e\u0442 \u0438\u043a\u043e\u043d\u0430\u0442\u0430 \u043d\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430, \u0437\u0430 \u0434\u0430 \u044f \u0438\u0437\u0442\u0435\u0433\u043b\u0438\u0442\u0435.", "disable-measure":"Stop measuring",downloading:"\u0418\u0437\u0442\u0435\u0433\u043b\u044f\u043d\u0435","cardboard-v2":"\u0410\u043a\u043e \u0438\u043c\u0430\u0442\u0435 \u043e\u0447\u0438\u043b\u0430 Cardboard v2, \u043a\u043e\u0438\u0442\u043e \u0440\u0430\u0437\u043f\u043e\u043b\u0430\u0433\u0430\u0442 \u0441 \u0431\u0443\u0442\u043e\u043d, \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u043f\u043e\u0433\u043b\u0435\u0434\u043d\u0435\u0442\u0435 \u0445\u043e\u0442\u0441\u043f\u043e\u0442\u0430 \u0438 \u0434\u0430 \u043d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 \u0431\u0443\u0442\u043e\u043d\u0430, \u0437\u0430 \u0434\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0442\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u0442\u043e \u043c\u0443.", "enable-video-audio-prompt":"\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0438 \u0430\u0443\u0434\u0438\u043e?",reject:"\u041e\u0442\u0445\u0432\u044a\u0440\u043b\u0435\u0442\u0435",downloaded:"\u0422\u043e\u0437\u0438 \u0442\u0443\u0440 \u0435 \u0438\u0437\u0442\u0435\u0433\u043b\u0435\u043d \u0437\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435 \u043e\u0444\u043b\u0430\u0439\u043d.","samsung-internet-vr-app-info":"\u0410\u043a\u043e \u0438\u043c\u0430\u0442\u0435 \u043e\u0447\u0438\u043b\u0430 Gear VR, \u0441\u044a\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0438 \u0441 \u0442\u043e\u0432\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0438 \u0441\u0442\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043b\u0438 Samsung Internet for VR, \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0433\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0438 \u0437\u0430 \u043f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0442\u043e\u0432\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u0432\u044a\u0432 VR. \u0422\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u0435 Samsung Internet \u0431\u0440\u0430\u0443\u0437\u044a\u0440 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435.", "samsung-internet-vr-info":"\u0410\u043a\u043e \u0438\u043c\u0430\u0442\u0435 \u043e\u0447\u0438\u043b\u0430 Gear VR, \u0441\u044a\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0438 \u0441 \u0442\u043e\u0432\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0438 \u0441\u0442\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043b\u0438 Samsung Internet for VR, \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0433\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0438 \u0437\u0430 \u043f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0442\u043e\u0432\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u0432\u044a\u0432 VR. \u0421\u0435\u0433\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u043b\u043e\u0436\u0438\u0442\u0435 \u043c\u043e\u0431\u0438\u043b\u043d\u0438\u044f \u0441\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0432 \u043e\u0447\u0438\u043b\u0430\u0442\u0430 \u0437\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043d\u0430 \u0440\u0435\u0430\u043b\u043d\u043e\u0441\u0442.", "enable-video-prompt":"\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e?","giroscope-disabled-safari-request-permission":["\u0414\u043e\u0441\u0442\u044a\u043f\u044a\u0442 \u0437\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u0440\u0435\u0436\u0438\u043c\u044a\u0442 VR \u0441\u0430 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0438 \u0437\u0430 \u0442\u043e\u0437\u0438 \u0441\u0430\u0439\u0442.", "\u0417\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043d\u043e \u0442\u0430\u0437\u0438 \u0443\u0435\u0431 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u043c\u043e\u043b\u044f, \u043a\u043b\u0438\u043a\u043d\u0435\u0442\u0435 \u0432\u044a\u0440\u0445\u0443 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438 \u0438 \u043f\u0440\u0438\u0435\u043c\u0435\u0442\u0435 \u0438\u0441\u043a\u0430\u043d\u0435\u0442\u043e \u0437\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435."], "storage-not-provided-launch-from-homescreen":"\u041c\u043e\u043b\u044f, \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439\u0442\u0435 \u043e\u0431\u0438\u043a\u043e\u043b\u043a\u0430\u0442\u0430 \u043e\u0442 \u0438\u043a\u043e\u043d\u0430\u0442\u0430 \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043d\u0438\u044f \u0435\u043a\u0440\u0430\u043d, \u0437\u0430 \u0434\u0430 \u044f \u0438\u0437\u0442\u0435\u0433\u043b\u0438\u0442\u0435.","enter-fullscreen":"\u0412\u043b\u0435\u0437\u0442\u0435 \u0432 \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d", "use-cardboard-v2":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439 Cardboard v2",unmute:"\u041f\u0443\u0441\u043a\u0430\u043d\u0435 \u0437\u0432\u0443\u043a","enter-vr":"\u0412\u043b\u0435\u0437 \u0432\u044a\u0432 VR \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435","enable-measure":"Start measuring","use-cardboard-info":"\u041c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u0432\u0441\u044f\u043a\u0430\u043a\u0432\u0438 \u0441\u044a\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0438 Google Cardboard \u043e\u0447\u0438\u043b\u0430, \u0437\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u043e\u0432\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u0432\u044a\u0432 VR.", "refresh-downloaded":"\u041e\u0431\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435","use-default-cardboard":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435","enable-audio-prompt":"\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0430\u0443\u0434\u0438\u043e?"},"fi-fi":{mute:"Poista \u00e4\u00e4ni k\u00e4yt\u00f6st\u00e4","cardboard-v1":"Mik\u00e4li et ole varma, mit\u00e4 Cardboard-versiota k\u00e4yt\u00e4t, valitse oletusarvoinen hotspot-hallinta. T\u00e4m\u00e4n j\u00e4lkeen katsomalla hotspotia, toiminto k\u00e4ynnistyy.", "download-tour":"Lataa t\u00e4m\u00e4 sis\u00e4lt\u00f6 offline-toistoa varten","change-to-drag-and-release":"Muuta ohjaustilaa vet\u00e4m\u00e4ll\u00e4 ja vapauttamalla",accept:"Hyv\u00e4ksy",download:"Lataa","storage-not-provided-bookmark":"Tallennus ep\u00e4onnistui. Kokeile lis\u00e4t\u00e4 t\u00e4m\u00e4 verkkosivu kirjanmerkkeihin ja suorita lataus uudelleen.","dont-display-again":"\u00c4l\u00e4 n\u00e4yt\u00e4 t\u00e4t\u00e4 ilmoitusta uudelleen","web-server-required":"T\u00e4t\u00e4 sis\u00e4lt\u00f6\u00e4 ei voi toistaa paikalliselta asemalta. Lataa sis\u00e4lt\u00f6 internet-palvelimelle ja yrit\u00e4 uudelleen.\nVoit my\u00f6s vet\u00e4\u00e4 htm-tiedoston (tai koko kansion) TourViewer-sovelluskuvakkeen p\u00e4\u00e4lle.", cancel:"Sulje","change-to-click-and-move":"Muuta ohjaustilaa klikkaamalla ja siirt\u00e4m\u00e4ll\u00e4",yes:"Kyll\u00e4","delete-downloaded":"Poista","use-safari-for-vr":"Suosittelemme Safari-selainta t\u00e4m\u00e4n sis\u00e4ll\u00f6n katseluun VR-tilassa.","exit-fullscreen":"Sulje koko n\u00e4yt\u00f6n n\u00e4kym\u00e4",no:"Ei","download-failed":"Lataus ep\u00e4onnistui","giroscope-disabled-http":"K\u00e4yt\u00e4t t\u00e4t\u00e4 verkkosivua http:n kautta, joten laitteesi liiketunnistimet sek\u00e4 VR-tila on poistettu k\u00e4yt\u00f6st\u00e4. Ota ne k\u00e4ytt\u00f6\u00f6n siirtym\u00e4ll\u00e4 sivulle https:n kautta.", "cookies-notice":"T\u00e4m\u00e4 verkkosivu k\u00e4ytt\u00e4\u00e4 ev\u00e4steit\u00e4 k\u00e4ytt\u00f6tilastojen ker\u00e4\u00e4miseen. Lis\u00e4tietoja ev\u00e4stek\u00e4yt\u00e4nn\u00f6st\u00e4.","use-cardboard":"K\u00e4yt\u00e4 Cardboardia","launch-default-browser":"K\u00e4ynnist\u00e4 oletusselaimessa","rotate-device":"K\u00e4\u00e4nn\u00e4 laitettasi","exit-vr":"Poistu VR-tilasta",reject:"Hylk\u00e4\u00e4","disable-measure":"Lopeta mittaaminen",downloading:"Ladataan","cardboard-v2":"Mik\u00e4li sinulla on Cardboard v2 -virtuaalilasit, joissa on painike, voit katsoa hotspotia ja aktivoida sen painamalla painiketta.", "enable-video-audio-prompt":"Otetaanko \u00e4\u00e4ni ja video k\u00e4ytt\u00f6\u00f6n?","storage-not-provided-launch-from-desktop":"Uudelleenk\u00e4ynnist\u00e4 t\u00e4m\u00e4 sis\u00e4lt\u00f6 ty\u00f6p\u00f6yd\u00e4n kuvakkeesta aloittaaksesi lataamisen.",downloaded:"T\u00e4m\u00e4 sis\u00e4lt\u00f6 on ladattu offline-toistoa varten","samsung-internet-vr-app-info":"Mik\u00e4li sinulla on t\u00e4m\u00e4n laitteen kanssa yhteensopivat Gear VR -virtuaalilasit ja olet asentanut Samsung Internet for VR:n, voit k\u00e4ytt\u00e4\u00e4 virtuaalilaseja t\u00e4m\u00e4n sis\u00e4ll\u00f6n katseluun VR-tilassa. Sinun on lis\u00e4ksi m\u00e4\u00e4ritett\u00e4v\u00e4 Samsung Internet oletusselaimeksi.", "samsung-internet-vr-info":"Mik\u00e4li sinulla on t\u00e4m\u00e4n laitteen kanssa yhteensopivat Gear VR -virtuaalilasit ja olet asentanut Samsung Internet for VR:n, voit k\u00e4ytt\u00e4\u00e4 virtuaalilaseja t\u00e4m\u00e4n sis\u00e4ll\u00f6n katseluun VR-tilassa. Aseta \u00e4lypuhelin virtuaalilaseihin aloittaaksesi.","enable-video-prompt":"Otetaanko video k\u00e4ytt\u00f6\u00f6n?","giroscope-disabled-safari-request-permission":["Laitteesi liiketunnistimen k\u00e4ytt\u00f6oikeus ja VR-tila on poistettu k\u00e4yt\u00f6st\u00e4 t\u00e4ll\u00e4 sivustolla.", "N\u00e4hd\u00e4ksesi t\u00e4m\u00e4n verkkosivun oikein, valitse jatka ja hyv\u00e4ksy lupapyynt\u00f6 pyydett\u00e4ess\u00e4."],"storage-not-provided-launch-from-homescreen":"Uudelleenk\u00e4ynnist\u00e4 t\u00e4m\u00e4 sis\u00e4lt\u00f6 kotin\u00e4yt\u00f6n kuvakkeesta aloittaaksesi lataamisen","enter-fullscreen":"Avaa koko n\u00e4yt\u00f6n n\u00e4kym\u00e4","use-cardboard-v2":"K\u00e4yt\u00e4 Cardboard v2:sta",unmute:"Ota \u00e4\u00e4ni k\u00e4ytt\u00f6\u00f6n","enter-vr":"Siirry VR-tilaan","enable-measure":"Aloita mittaaminen", "use-cardboard-info":"Voit k\u00e4ytt\u00e4\u00e4 mit\u00e4 tahansa yhteensopivia Google Cardboard -virtuaalilaseja katsellaksesi t\u00e4t\u00e4 sis\u00e4lt\u00f6\u00e4 VR-tilassa.","refresh-downloaded":"P\u00e4ivit\u00e4","use-default-cardboard":"K\u00e4yt\u00e4 oletuksena","enable-audio-prompt":"Otetaanko \u00e4\u00e4ni k\u00e4ytt\u00f6\u00f6n?"},"sk-sk":{mute:"St\u00ed\u0161i\u0165","cardboard-v1":"Ak ste si nie ist\u00ed, ktor\u00fa verziu Cardboardu pou\u017e\u00edvate, vyberte si predvolen\u00e9 ovl\u00e1danie hotspotu. Potom sa jednoducho pozriete na hotspot a po\u010dkajte, k\u00fdm sa akcia nespust\u00ed.", "download-tour":"Stiahnu\u0165 prehliadku na hranie v offline re\u017eime","change-to-drag-and-release":"Zmeni\u0165 re\u017eim ovl\u00e1dania na Presun\u00fa\u0165 a Uvo\u013eni\u0165",accept:"s\u00fahlasi\u0165",cancel:"Zru\u0161i\u0165","storage-not-provided-bookmark":"Trval\u00e9 \u00falo\u017eisko odmietnut\u00e9. Sk\u00faste si t\u00fato webov\u00fa str\u00e1nku ulo\u017ei\u0165 a na\u010d\u00edta\u0165 ju znova.","dont-display-again":"Tieto inform\u00e1cie u\u017e nezobrazova\u0165","web-server-required":"T\u00e1to virtu\u00e1lna prehliadka sa ned\u00e1 prehra\u0165 z lok\u00e1lneho disku. Nahrajte ju na internet a sk\u00faste to znova.\nAk chcete, potiahnite s\u00fabor htm (alebo cel\u00fd prie\u010dinok prehliadky) na ikonu aplik\u00e1cie TourViewer.", download:"Stiahnu\u0165","change-to-click-and-move":"Zmeni\u0165 re\u017eim ovl\u00e1dania na Klikn\u00fa\u0165 a Presun\u00fa\u0165",yes:"\u00e1no","delete-downloaded":"Zmaza\u0165","use-safari-for-vr":"Odpor\u00fa\u010dame pou\u017e\u00edva\u0165 Safari prehliada\u010d pre t\u00fato prehliadku v re\u017eime VR","exit-fullscreen":"Ukon\u010di\u0165 cel\u00fa obrazovku",no:"nie","download-failed":"S\u0165ahovanie zlyhalo","giroscope-disabled-http":"Na t\u00fato webov\u00fa str\u00e1nku pristupujete cez http protokol, preto pr\u00edstup k pohybu a orient\u00e1cii v\u00e1\u0161ho zariadenia a re\u017eim VR s\u00fa deaktivovan\u00e9. Ak ich chcete povoli\u0165, nav\u0161t\u00edvte str\u00e1nku cez https.", "cookies-notice":"T\u00e1to webov\u00e1 str\u00e1nka pou\u017e\u00edva s\u00fabory cookie na zhroma\u017e\u010fovanie \u0161tatist\u00edk pou\u017e\u00edvania. \u010eal\u0161ie inform\u00e1cie n\u00e1jdete v pravidl\u00e1ch pou\u017e\u00edvania s\u00faborov cookie .","use-cardboard":"Pou\u017eite Cardboard okuliare.","launch-default-browser":"Spusti\u0165 v predvolenom prehliada\u010di","rotate-device":"Oto\u010dte svoje zariadenie","exit-vr":"Ukon\u010denie VR","storage-not-provided-launch-from-desktop":"Znovu na\u010d\u00edtajte prehliadku pomocou desktop ikony pre jej stiahnite.", "disable-measure":"Ukon\u010di\u0165 meranie",downloading:"S\u0165ahovanie","cardboard-v2":"Ak m\u00e1te n\u00e1hlavn\u00fa s\u00fapravu Cardboard v2, ktor\u00e1 je dod\u00e1van\u00e1 s tla\u010didlom, m\u00f4\u017eete sa pozrie\u0165 na hotspot a stla\u010den\u00edm tla\u010didla spusti\u0165 akciu.","enable-video-audio-prompt":"Povoli\u0165 video a zvuk?",reject:"Odmietnu\u0165",downloaded:"T\u00e1to prehliadka je stiahnut\u00e1 na hranie v offline re\u017eime.","samsung-internet-vr-app-info":"Ak m\u00e1te Gear VR sl\u00fachadl\u00e1\u00e1 kompatibiln\u00e9 s t\u00fdmto zariaden\u00edm a m\u00e1te nain\u0161talovan\u00fd program Samsung Internet pre VR, m\u00f4\u017eete ho tie\u017e pou\u017ei\u0165 na prezeranie tohto obsahu vo VR. Mus\u00edte si nastavi\u0165 Samsung Internet ako predvolen\u00fd prehliada\u010d.", "samsung-internet-vr-info":"Ak m\u00e1te Gear VR sl\u00fachadl\u00e1 kompatibiln\u00e9 s t\u00fdmto zariaden\u00edm a m\u00e1te nain\u0161talovan\u00fd program Samsung Internet pre VR, m\u00f4\u017eete ho tie\u017e pou\u017ei\u0165 na prezeranie tohto obsahu vo VR. Sta\u010d\u00ed teraz vlo\u017ei\u0165 mobiln\u00fd telef\u00f3n do n\u00e1hlavnej s\u00fapravy.","enable-video-prompt":"Povoli\u0165 video?","giroscope-disabled-safari-request-permission":["Pre t\u00fato str\u00e1nku s\u00fa pr\u00edstup k pohybu a orient\u00e1cii v\u00e1\u0161ho zariadenia a re\u017eim VR deaktivovan\u00e9.", "Aby ste korektne videli t\u00fato webov\u00fa str\u00e1nku, pros\u00edm kliknite pokra\u010dova\u0165 a akceptujte po\u017eadovan\u00e9 povolenie."],"storage-not-provided-launch-from-homescreen":"Znovu na\u010d\u00edtajte prehliadku pomocou ikony na ploche pre jej stiahnite.","enter-fullscreen":"Prejs\u0165 na cel\u00fa obrazovku","use-cardboard-v2":"Pou\u017eite Cardboard v2",unmute:"Zapn\u00fa\u0165 zvuk","enter-vr":"Vlo\u017ei\u0165 VR obsah","enable-measure":"Za\u010da\u0165 meranie","use-cardboard-info":"Na zobrazenie tohto obsahu vo VR m\u00f4\u017eete pou\u017ei\u0165 \u013eubovo\u013en\u00fa kompatibiln\u00fa n\u00e1hlavn\u00fa s\u00fapravu Google Cardboard.", "refresh-downloaded":"Obnovi\u0165","use-default-cardboard":"Pou\u017ei\u0165 predvolen\u00e9","enable-audio-prompt":"Povoli\u0165 zvuk?"},"uk-ua":{mute:"\u0412\u0438\u043c\u043a\u043d\u0443\u0442\u0438 \u0437\u0432\u0443\u043a","cardboard-v1":"\u042f\u043a\u0449\u043e \u0432\u0438 \u043d\u0435 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u044f\u043a\u0443 \u0432\u0435\u0440\u0441\u0456\u044e Cardboard \u0432\u0438 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0454\u0442\u0435, \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c. \u041f\u043e\u0442\u0456\u043c \u0432\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u0438\u0432\u0438\u0442\u0435\u0441\u044f \u043d\u0430 \u0442\u043e\u0447\u043a\u0443 \u0442\u0430 \u043f\u043e\u0447\u0435\u043a\u0430\u0439\u0442\u0435, \u0434\u043e\u043a\u0438 \u0434\u0456\u044f \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f.", "download-tour":"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0442\u0435 \u0442\u0443\u0440 \u0434\u043b\u044f \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c\u0443 \u0440\u0435\u0436\u0438\u043c\u0456","change-to-drag-and-release":"\u0417\u043c\u0456\u043d\u0456\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043d\u0430 \u041f\u0435\u0440\u0435\u0442\u044f\u0433\u043d\u0456\u0442\u044c \u0456 \u0432\u0456\u0434\u043f\u0443\u0441\u0442\u0456\u0442\u044c", accept:"\u041f\u0440\u0438\u0439\u043c\u0456\u0442\u044c",cancel:"\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438","storage-not-provided-bookmark":"\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u0437\u0431\u0435\u0440\u0456\u0433\u0430\u043d\u043d\u044f \u0437\u0430\u0431\u043e\u0440\u043e\u043d\u0435\u043d\u043e. \u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u0446\u044e \u0432\u0435\u0431-\u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0443 \u0432 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0438 \u0442\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0457\u0457.", "dont-display-again":"\u041d\u0435 \u043f\u043e\u043a\u0430\u0437\u0443\u0439\u0442\u0435 \u0446\u044e \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044e \u0437\u043d\u043e\u0432\u0443","web-server-required":"\u0426\u0435\u0439 \u0432\u0456\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0438\u0439 \u0442\u0443\u0440 \u043d\u0435 \u043c\u043e\u0436\u043d\u0430 \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430. \u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0442\u0435 \u0439\u043e\u0433\u043e \u0432 \u0406\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0456 \u043f\u043e\u0432\u0442\u043e\u0440\u0456\u0442\u044c \u0441\u043f\u0440\u043e\u0431\u0443.\n\u042f\u043a\u0449\u043e \u0431\u0430\u0436\u0430\u0454\u0442\u0435, \u043f\u0435\u0440\u0435\u0442\u044f\u0433\u043d\u0456\u0442\u044c \u0444\u0430\u0439\u043b htm (\u0430\u0431\u043e \u0432\u0441\u044e \u043f\u0430\u043f\u043a\u0443 \u0442\u0443\u0440\u0443) \u043d\u0430 \u043f\u0456\u043a\u0442\u043e\u0433\u0440\u0430\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0438 TourViewer.", download:"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438","change-to-click-and-move":"\u0417\u043c\u0456\u043d\u0456\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u043a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f \u043d\u0430 \u041a\u043b\u0430\u0446\u043d\u0456\u0442\u044c \u0456 \u043f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0456\u0442\u044c",yes:"\u0442\u0430\u043a","delete-downloaded":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438","use-safari-for-vr":"\u041c\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0454\u043c\u043e Safari \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443 \u0446\u044c\u043e\u0433\u043e \u0442\u0443\u0440\u0443 \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 VR", "exit-fullscreen":"\u0412\u0438\u0439\u0442\u0438 \u0437 \u043f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0443",no:"\u043d\u0456","download-failed":"\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438","giroscope-disabled-http":"\u0412\u0438 \u043e\u0442\u0440\u0438\u043c\u0443\u0454\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0446\u0456\u0454\u0457 \u0432\u0435\u0431-\u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 http, \u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0440\u0443\u0445\u0443 \u0442\u0430 \u043e\u0440\u0456\u0454\u043d\u0442\u0430\u0446\u0456\u0457 \u0432\u0430\u0448\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e \u0442\u0430 \u0440\u0435\u0436\u0438\u043c VR \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e. \u0429\u043e\u0431 \u0443\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438 \u0457\u0445, \u043f\u0435\u0440\u0435\u0439\u0434\u0456\u0442\u044c \u0434\u043e \u043d\u0438\u0445 \u0447\u0435\u0440\u0435\u0437 https.", "cookies-notice":"\u0426\u044f \u0432\u0435\u0431-\u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0430 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0454 \u0444\u0430\u0439\u043b\u0438 cookie \u0434\u043b\u044f \u0437\u0431\u043e\u0440\u0443 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f. \u0414\u043b\u044f \u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043d\u044f \u0434\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e\u0457 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u0457 \u0432\u0456\u0434\u0432\u0456\u0434\u0430\u0439\u0442\u0435 \u041f\u043e\u043b\u0456\u0442\u0438\u043a\u0443 \u0449\u043e\u0434\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f \u0444\u0430\u0439\u043b\u0456\u0432 cookie.", "use-cardboard":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 Cardboard","launch-default-browser":"\u0417\u0430\u043f\u0443\u0441\u0442\u0456\u0442\u044c \u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0456 \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c","rotate-device":"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u043e\u0432\u0435\u0440\u043d\u0456\u0442\u044c \u0441\u0432\u0456\u0439 \u043f\u0440\u0438\u0441\u0442\u0440\u0456\u0439", "exit-vr":"\u0412\u0438\u0439\u0434\u0456\u0442\u044c \u0456\u0437 VR","storage-not-provided-launch-from-desktop":"\u0429\u043e\u0431 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0456\u0442\u044c \u043e\u0433\u043b\u044f\u0434 \u0456\u0437 \u0437\u043d\u0430\u0447\u043a\u0430 \u043d\u0430 \u0440\u043e\u0431\u043e\u0447\u043e\u043c\u0443 \u0441\u0442\u043e\u043b\u0456.","disable-measure":"\u041f\u0440\u0438\u043f\u0438\u043d\u0456\u0442\u044c \u0432\u0438\u043c\u0456\u0440\u044e\u0432\u0430\u043d\u043d\u044f", downloading:"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f","cardboard-v2":"\u042f\u043a\u0449\u043e \u0443 \u0432\u0430\u0441 \u0454 \u0433\u0430\u0440\u043d\u0456\u0442\u0443\u0440\u0430 Cardboard v2, \u044f\u043a\u0430 \u043f\u043e\u0441\u0442\u0430\u0447\u0430\u0454\u0442\u044c\u0441\u044f \u0437 \u043a\u043d\u043e\u043f\u043a\u043e\u044e, \u0432\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0434\u0438\u0432\u0438\u0442\u0438\u0441\u044f \u043d\u0430 \u0442\u043e\u0447\u043a\u0443 \u0442\u0430 \u043d\u0430\u0442\u0438\u0441\u043d\u0443\u0442\u0438 \u043a\u043d\u043e\u043f\u043a\u0443, \u0449\u043e\u0431 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u0457\u0457.", "enable-video-audio-prompt":"\u0423\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438 \u0432\u0456\u0434\u0435\u043e \u0442\u0430 \u0430\u0443\u0434\u0456\u043e?",reject:"\u0412\u0456\u0434\u0445\u0438\u043b\u0438\u0442\u0438",downloaded:"\u0426\u0435\u0439 \u0442\u0443\u0440 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043e \u0434\u043b\u044f \u0432\u0456\u0434\u0442\u0432\u043e\u0440\u0435\u043d\u043d\u044f \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c\u0443 \u0440\u0435\u0436\u0438\u043c\u0456.", "samsung-internet-vr-app-info":"\u042f\u043a\u0449\u043e \u0443 \u0432\u0430\u0441 \u0454 \u0433\u0430\u0440\u043d\u0456\u0442\u0443\u0440\u0430 Gear VR, \u0441\u0443\u043c\u0456\u0441\u043d\u0430 \u0437 \u0446\u0438\u043c \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u0454\u043c, \u0456 \u0432\u0438 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 Samsung Internet \u0434\u043b\u044f VR, \u0432\u0438 \u0442\u0430\u043a\u043e\u0436 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0457\u0457 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443 \u0446\u044c\u043e\u0433\u043e \u0432\u043c\u0456\u0441\u0442\u0443 \u0443 VR, \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u0437\u0440\u043e\u0431\u0438\u0442\u0438 Samsung Internet \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c.", "samsung-internet-vr-info":"\u042f\u043a\u0449\u043e \u0443 \u0432\u0430\u0441 \u0454 \u0433\u0430\u0440\u043d\u0456\u0442\u0443\u0440\u0430 Gear VR, \u0441\u0443\u043c\u0456\u0441\u043d\u0430 \u0437 \u0446\u0438\u043c \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u0454\u043c, \u0456 \u0432\u0438 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 Samsung Internet \u0434\u043b\u044f \u0432\u0456\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0457 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0456, \u0432\u0438 \u0442\u0430\u043a\u043e\u0436 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0457\u0457 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443 \u0446\u044c\u043e\u0433\u043e \u0432\u043c\u0456\u0441\u0442\u0443 \u0443 VR, \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0440\u0430\u0437 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u043f\u0456\u0434\u2019\u0454\u0434\u043d\u0430\u0442\u0438 \u043c\u043e\u0431\u0456\u043b\u044c\u043d\u0438\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0434\u043e \u0433\u0430\u0440\u043d\u0456\u0442\u0443\u0440\u0438.", "enable-video-prompt":"\u0423\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438 \u0432\u0456\u0434\u0435\u043e?","giroscope-disabled-safari-request-permission":["\u0414\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0440\u0443\u0445\u0443 \u0442\u0430 \u043e\u0440\u0456\u0454\u043d\u0442\u0430\u0446\u0456\u0457 \u0432\u0430\u0448\u043e\u0433\u043e \u043f\u0440\u0438\u0441\u0442\u0440\u043e\u044e, \u0430 \u0442\u0430\u043a\u043e\u0436 \u0440\u0435\u0436\u0438\u043c VR \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e \u0434\u043b\u044f \u0446\u044c\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0443.", "\u0429\u043e\u0431 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u043d\u0443\u0442\u0438 \u0446\u044e \u0432\u0435\u0431-\u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0443, \u043d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u00ab\u041f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438\u00bb \u0442\u0430 \u043f\u0440\u0438\u0439\u043c\u0456\u0442\u044c \u0437\u0430\u043f\u0438\u0442 \u043d\u0430 \u0434\u043e\u0437\u0432\u0456\u043b, \u044f\u043a\u0449\u043e \u0437\u2019\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0438\u0442."], "storage-not-provided-launch-from-homescreen":"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0456\u0442\u044c \u0442\u0443\u0440 \u0437\u0456 \u0437\u043d\u0430\u0447\u043a\u0430 \u0433\u043e\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u0435\u043a\u0440\u0430\u043d\u0430, \u0449\u043e\u0431 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438.","enter-fullscreen":"\u041f\u0435\u0440\u0435\u0439\u0434\u0456\u0442\u044c \u0443 \u043f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c", "use-cardboard-v2":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 Cardboard v2",unmute:"\u0423\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438 \u0437\u0432\u0443\u043a","enter-vr":"\u041e\u0431\u0435\u0440\u0456\u0442\u044c \u0432\u043c\u0456\u0441\u0442 VR","enable-measure":"\u041f\u043e\u0447\u043d\u0456\u0442\u044c \u0432\u0438\u043c\u0456\u0440\u044e\u0432\u0430\u0442\u0438","use-cardboard-info":"\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0431\u0443\u0434\u044c-\u044f\u043a\u0443 \u0441\u0443\u043c\u0456\u0441\u043d\u0443 \u0433\u0430\u0440\u043d\u0456\u0442\u0443\u0440\u0443 Google Cardboard \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443 \u0446\u044c\u043e\u0433\u043e \u0432\u043c\u0456\u0441\u0442\u0443 \u0443 VR.", "refresh-downloaded":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438","use-default-cardboard":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c","enable-audio-prompt":"\u0423\u0432\u0456\u043c\u043a\u043d\u0443\u0442\u0438 \u0430\u0443\u0434\u0456\u043e?"},"en-us":{mute:"Mute","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.", "download-tour":"Download Tour for offline playing","change-to-drag-and-release":"Change control mode to Drag and Release",accept:"Accept",cancel:"Cancel","storage-not-provided-bookmark":"Persistent storage denied. Try bookmarking this webpage and reloading it.","dont-display-again":"Don't display this info again","web-server-required":"This virtual tour cannot be played from a local drive. Please upload it to the internet and try again.\nIf you prefer, drag the htm file (or the entire folder of the tour) onto the icon of the TourViewer app.", download:"Download","change-to-click-and-move":"Change control mode to Click and Move",yes:"yes","delete-downloaded":"Delete","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"Exit fullscreen",no:"no","download-failed":"Download failed","giroscope-disabled-http":"You are accessing this webpage through http so your device's motion and orientation access and VR mode are disabled, please access it through https to enable them.","cookies-notice":"This web page uses cookies to collect usage statistics. For more information, please visit the Cookie Policy.", "use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR","storage-not-provided-launch-from-desktop":"Please relaunch the tour from the desktop icon to download.","disable-measure":"Stop measuring",downloading:"Downloading","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"Enable video and audio?", reject:"Reject",downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.","samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.", "enable-video-prompt":"Enable video?","giroscope-disabled-safari-request-permission":["Your device's motion and orientation access and VR mode are disabled for this site.","To properly see this webpage, please click continue and accept the permission request if prompted."],"storage-not-provided-launch-from-homescreen":"Please relaunch the tour from the home screen icon to download.","enter-fullscreen":"Enter fullscreen","use-cardboard-v2":"Use Cardboard v2",unmute:"Unmute","enter-vr":"Enter VR content", "enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"Refresh","use-default-cardboard":"Use Default","enable-audio-prompt":"Enable audio?"},"sv-se":{mute:"Inaktivera ljud","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.","download-tour":"Download Tour for offline playing", "change-to-drag-and-release":"\u00c4ndra kontrolll\u00e4ge f\u00f6r att dra och sl\u00e4ppa",accept:"Acceptera",download:"Download","storage-not-provided-bookmark":"Persistent storage denied. Try bookmarking this webpage and reloading it.","dont-display-again":"Don't display this info again","web-server-required":"This virtual tour cannot be played from a local drive. Please upload it to the internet and try again.\nIf you prefer, drag the htm file (or the entire folder of the tour) onto the icon of the TourViewer app.", cancel:"Cancel","change-to-click-and-move":"\u00c4ndra kontrolll\u00e4ge f\u00f6r att klicka och flytta",yes:"ja","delete-downloaded":"Delete","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"Avsluta fullsk\u00e4rmen",no:"Nej","download-failed":"Download failed","giroscope-disabled-http":"You are accessing this webpage through http so your device's motion and orientation access and VR mode are disabled, please access it through https to enable them.","cookies-notice":"Denna webbsida anv\u00e4nder cookies f\u00f6r att samla in anv\u00e4ndningsstatistik. F\u00f6r mer information, bes\u00f6k Cookie Policy.", "use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR",reject:"Avvisa","disable-measure":"Stop measuring",downloading:"Downloading","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"Aktivera ljud och video?","storage-not-provided-launch-from-desktop":"Please relaunch the tour from the desktop icon to download.", downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.","samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.", "enable-video-prompt":"Aktivera video?","giroscope-disabled-safari-request-permission":["Your device's motion and orientation access and VR mode are disabled for this site.","To properly see this webpage, please click continue and accept the permission request if prompted."],"storage-not-provided-launch-from-homescreen":"Please relaunch the tour from the home screen icon to download.","enter-fullscreen":"Ange fullsk\u00e4rm","use-cardboard-v2":"Use Cardboard v2",unmute:"Aktivera ljud","enter-vr":"Enter VR content", "enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"Refresh","use-default-cardboard":"Use Default","enable-audio-prompt":"Aktivera ljud?"},"id-id":{mute:"Mute","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.","download-tour":"Download Tour for offline playing", "change-to-drag-and-release":"Change control mode to Drag and Release",accept:"Menerima",cancel:"Cancel","storage-not-provided-bookmark":"Persistent storage denied. Try bookmarking this webpage and reloading it.","dont-display-again":"Don't display this info again","web-server-required":"This virtual tour cannot be played from a local drive. Please upload it to the internet and try again.\nIf you prefer, drag the htm file (or the entire folder of the tour) onto the icon of the TourViewer app.",download:"Download", "change-to-click-and-move":"Change control mode to Click and Move",yes:"yes","delete-downloaded":"Delete","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"Exit fullscreen",no:"no","download-failed":"Download failed","giroscope-disabled-http":"You are accessing this webpage through http so your device's motion and orientation access and VR mode are disabled, please access it through https to enable them.","cookies-notice":"Halaman web ini menggunakan cookie untuk mengumpulkan statistik penggunaan. Untuk informasi lebih lanjut, silakan kunjungi Kebijakan Cookie.", "use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR","storage-not-provided-launch-from-desktop":"Please relaunch the tour from the desktop icon to download.","disable-measure":"Stop measuring",downloading:"Downloading","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"Enable video and audio?", reject:"Menolak",downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.","samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.", "enable-video-prompt":"Enable video?","giroscope-disabled-safari-request-permission":["Your device's motion and orientation access and VR mode are disabled for this site.","To properly see this webpage, please click continue and accept the permission request if prompted."],"storage-not-provided-launch-from-homescreen":"Please relaunch the tour from the home screen icon to download.","enter-fullscreen":"Enter fullscreen","use-cardboard-v2":"Use Cardboard v2",unmute:"Unmute","enter-vr":"Enter VR content", "enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"Refresh","use-default-cardboard":"Use Default","enable-audio-prompt":"Enable audio?"},"pt-br":{mute:"Desativar som","cardboard-v1":"Se voc\u00ea n\u00e3o tiver certeza de qual vers\u00e3o do Cardboard est\u00e1 usando, selecione o controle de ponto de acesso padr\u00e3o. Voc\u00ea simplesmente olha para um ponto de acesso e espera at\u00e9 que a a\u00e7\u00e3o seja acionada.", "download-tour":"Download do Tour para reprodu\u00e7\u00e3o offline","change-to-drag-and-release":"Alterar controle para arrastar e soltar",accept:"Aceitar",cancel:"Cancelar","storage-not-provided-bookmark":"Armazenamento persistente negado. Tente marcar esta p\u00e1gina da Web e recarreg\u00e1-la.","dont-display-again":"N\u00e3o exibir essas informa\u00e7\u00f5es novamente","web-server-required":"Este passeio virtual n\u00e3o pode ser reproduzido a partir de uma unidade local. Envie-o para a Internet e tente novamente.\nSe preferir, arraste o arquivo htm (ou toda a pasta do tour) para o \u00edcone do aplicativo TourViewer.", download:"Download","change-to-click-and-move":"Alterar controle para clicar e mover",yes:"sim","delete-downloaded":"Apagar","use-safari-for-vr":"Recomendamos o Safari para ver este passeio no modo VR","exit-fullscreen":"Sair da tela cheia",no:"n\u00e3o","download-failed":"Falha no Download","giroscope-disabled-http":"Voc\u00ea est\u00e1 acessando esta p\u00e1gina da Web por meio do http, para que o acesso \u00e0 orienta\u00e7\u00e3o e movimento do dispositivo e o modo VR sejam desativados, acesse-o atrav\u00e9s de https para ativ\u00e1-los.", "cookies-notice":"Esta p\u00e1gina da web usa cookies para coletar estat\u00edsticas de uso. Para obter mais informa\u00e7\u00f5es, visite a Pol\u00edtica de cookies.","use-cardboard":"Use Cardboard","launch-default-browser":"Iniciar no navegador padr\u00e3o","rotate-device":"Por favor, gire seu dispositivo","exit-vr":"Sair do VR","storage-not-provided-launch-from-desktop":"Por favor, reinicie o tour no \u00edcone da \u00e1rea de trabalho para fazer o download.","disable-measure":"Stop measuring", downloading:"Baixando","cardboard-v2":"Se voc\u00ea tiver um fone de ouvido Cardboard v2, que vem com um bot\u00e3o, poder\u00e1 observar um ponto de acesso e pressionar o bot\u00e3o para acionar sua a\u00e7\u00e3o.","enable-video-audio-prompt":"Ativar \u00e1udio e v\u00eddeo?",reject:"Rejeitar",downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"Se voc\u00ea possui um fone de ouvido Gear VR compat\u00edvel com este dispositivo e instalou o Samsung Internet for VR, tamb\u00e9m pode us\u00e1-lo para visualizar esse conte\u00fado em VR. Voc\u00ea precisa tornar o Samsung Internet o seu padr\u00e3o. browser.", "samsung-internet-vr-info":"Se voc\u00ea possui um fone de ouvido Gear VR compat\u00edvel com este dispositivo e instalou o Samsung Internet for VR, tamb\u00e9m pode us\u00e1-lo para visualizar esse conte\u00fado em VR. Basta colocar o celular no fone de ouvido agora.","enable-video-prompt":"Ativar v\u00eddeo?","giroscope-disabled-safari-request-permission":["O acesso a movimento e orienta\u00e7\u00e3o do dispositivo e o modo VR est\u00e3o desativados para este site.","Para ver corretamente esta p\u00e1gina da web, clique em continuar e aceite a solicita\u00e7\u00e3o de permiss\u00e3o, se solicitado."], "storage-not-provided-launch-from-homescreen":"Reinicie o tour no \u00edcone da tela inicial para fazer o download.","enter-fullscreen":"Entrar em tela cheia","use-cardboard-v2":"Use Cardboard v2",unmute:"Ativar som","enter-vr":"Inserir conte\u00fado VR","enable-measure":"Start measuring","use-cardboard-info":"Voc\u00ea pode usar qualquer fone de ouvido compat\u00edvel do Google Cardboard para visualizar este conte\u00fado em VR","refresh-downloaded":"Atualizar","use-default-cardboard":"Use o padr\u00e3o", "enable-audio-prompt":"Ativar \u00e1udio?"},"it-it":{mute:"Disabilita audio","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.","download-tour":"Download Tour for offline playing","change-to-drag-and-release":"Cambia la modalit\u00e0 di controllo per trascinare e rilasciare",accept:"Accettare",download:"Download","storage-not-provided-bookmark":"Persistent storage denied. Try bookmarking this webpage and reloading it.", "dont-display-again":"Don't display this info again","web-server-required":"This virtual tour cannot be played from a local drive. Please upload it to the internet and try again.\nIf you prefer, drag the htm file (or the entire folder of the tour) onto the icon of the TourViewer app.",cancel:"Cancel","change-to-click-and-move":"Cambia la modalit\u00e0 di controllo per fare clic e spostare",yes:"s\u00ec","delete-downloaded":"Delete","use-safari-for-vr":"We recommend Safari to view this tour in VR mode", "exit-fullscreen":"Esci dalla modalit\u00e0 schermo intero",no:"no","download-failed":"Download failed","giroscope-disabled-http":"You are accessing this webpage through http so your device's motion and orientation access and VR mode are disabled, please access it through https to enable them.","cookies-notice":"Questa pagina web utilizza i cookie per raccogliere statistiche sull'utilizzo. Per ulteriori informazioni, visita la Cookie Policy.","use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser", "rotate-device":"Please rotate your device","exit-vr":"Exit VR",reject:"Rifiutare","disable-measure":"Stop measuring",downloading:"Downloading","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"Abilita audio e video?","storage-not-provided-launch-from-desktop":"Please relaunch the tour from the desktop icon to download.",downloaded:"This tour is downloaded for offline playing.", "samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.","samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.","enable-video-prompt":"Abilita il video?", "giroscope-disabled-safari-request-permission":["Your device's motion and orientation access and VR mode are disabled for this site.","To properly see this webpage, please click continue and accept the permission request if prompted."],"storage-not-provided-launch-from-homescreen":"Please relaunch the tour from the home screen icon to download.","enter-fullscreen":"Entra a schermo intero","use-cardboard-v2":"Use Cardboard v2",unmute:"Abilita audio","enter-vr":"Enter VR content","enable-measure":"Start measuring", "use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"Refresh","use-default-cardboard":"Use Default","enable-audio-prompt":"Abilita l'audio?"},"zh-tw":{mute:"\u975c\u97f3","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.","download-tour":"\u4e0b\u8f09\u865b\u64ec\u5c0e\u89bd\uff0c\u4ee5\u9032\u884c\u96e2\u7dda\u64ad\u653e", "change-to-drag-and-release":"\u5c07\u63a7\u5236\u6a21\u5f0f\u66f4\u6539\u70ba\u201c\u62d6\u653e\u6a21\u5f0f\u201c",accept:"\u63a5\u53d7",cancel:"\u53d6\u6d88","storage-not-provided-bookmark":"\u88dd\u7f6e\u5167\u6c38\u4e45\u5b58\u5132\u88ab\u62d2\u7d55\u3002\u8acb\u5617\u8a66\u5c07\u6b64\u7db2\u9801\u65b0\u589e\u70ba\u66f8\u7c64\uff0c\u4e26\u91cd\u65b0\u8f09\u5165\u3002","dont-display-again":"\u4e0d\u518d\u986f\u793a\u672c\u8a0a\u606f","web-server-required":"\u672c\u865b\u64ec\u5c0e\u89bd\u7121\u6cd5\u5728\u672c\u5730\u96fb\u8166\u4e0a\u64ad\u653e\u3002 \u8acb\u5c07\u5176\u4e0a\u50b3\u5230\u7db2\u969b\u7db2\u8def\u4f3a\u670d\u5668\uff0c\u7136\u5f8c\u91cd\u8a66\u3002\n\u5982\u679c\u9700\u8981\u672c\u5730\u9810\u89bd\uff0c\u8acb\u5c07htm\u6a94\u6848\uff08\u6216\u865b\u64ec\u5c0e\u89bd\u7684\u6574\u500b\u8cc7\u6599\u593e\uff09\u62d6\u653e\u5230TourViewer\u61c9\u7528\u7a0b\u793a\u7684\u5716\u793a\u4e0a\u3002", download:"\u4e0b\u8f09","change-to-click-and-move":"\u5c07\u63a7\u5236\u6a21\u5f0f\u66f4\u6539\u70ba\u201c\u9ede\u64ca\u4e26\u79fb\u52d5\u201d",yes:"\u662f","delete-downloaded":"\u522a\u9664","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"\u9000\u51fa\u5168\u87a2\u5e55",no:"\u5426","download-failed":"\u4e0b\u8f09\u5931\u6557","giroscope-disabled-http":"\u60a8\u6b63\u5728\u901a\u904ehttp(\u672a\u52a0\u5bc6)\u700f\u89bd\u672c\u7db2\u9801\uff0c\u56e0\u6b64\u8a2d\u5099\u7684\u904b\u52d5\u548c\u65b9\u5411\u53d6\u7528\u6b0a\u9650\uff0c\u4ee5\u53caVR\u6a21\u5f0f\u5747\u5df2\u7981\u7528\uff0c\u8acb\u53e6\u901a\u904ehttps(\u52a0\u5bc6)\u7db2\u5740\u5c0d\u5176\u9032\u884c\u555f\u7528\u3002", "cookies-notice":"\u8a72\u7db2\u9801\u4f7f\u7528cookie\u4f86\u6536\u96c6\u4f7f\u7528\u60c5\u6cc1\u7d71\u8a08\u4fe1\u606f\u3002 \u6709\u95dc\u66f4\u591a\u4fe1\u606f\uff0c\u8acb\u8a2a\u554f Cookie\u653f\u7b56\u3002","use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR","storage-not-provided-launch-from-desktop":"\u8acb\u5f9e\u684c\u9762\u9ede\u64ca\u5716\u793a\uff0c\u91cd\u65b0\u555f\u52d5\u865b\u64ec\u5c0e\u89bd\uff0c\u4ee5\u9032\u884c\u4e0b\u8f09\u3002", "disable-measure":"Stop measuring",downloading:"\u6b63\u5728\u4e0b\u8f09","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"\u5141\u8a31\u5f71\u7247\u53ca\u8072\u97f3\u64ad\u653e?",reject:"\u62d2\u7d55",downloaded:"\u865b\u64ec\u5c0e\u89bd\u5df2\u4e0b\u8f09\uff0c\u53ef\u9032\u884c\u96e2\u7dda\u64ad\u653e\u3002","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.", "samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.","enable-video-prompt":"\u5141\u8a31\u5f71\u7247\u64ad\u653e?","giroscope-disabled-safari-request-permission":["\u8a72\u7db2\u7ad9\u5df2\u7981\u7528\u60a8\u8a2d\u5099\u7684\u904b\u52d5\u548c\u65b9\u5411\u53d6\u7528\u6b0a\u9650\uff0cVR\u6a21\u5f0f\u4e5f\u88ab\u7981\u7528\u3002", "\u8981\u6b63\u78ba\u67e5\u770b\u672c\u7db2\u9801\uff0c\u8acb\u55ae\u64ca\u7e7c\u7e8c\uff0c\u4e26\u5728\u51fa\u73fe\u63d0\u793a\u6642\u63a5\u53d7\u8a31\u53ef\u8acb\u6c42\u3002"],"storage-not-provided-launch-from-homescreen":"\u8acb\u4e3b\u9801\u9762\u87a2\u5e55\u9ede\u64ca\u5716\u793a\uff0c\u91cd\u65b0\u555f\u52d5\u865b\u64ec\u5c0e\u89bd\uff0c\u4ee5\u9032\u884c\u4e0b\u8f09\u3002","enter-fullscreen":"\u9032\u5165\u5168\u87a2\u5e55","use-cardboard-v2":"Use Cardboard v2",unmute:"\u53d6\u6d88\u975c\u97f3", "enter-vr":"Enter VR content","enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"\u91cd\u65b0\u6574\u7406","use-default-cardboard":"Use Default","enable-audio-prompt":"\u5141\u8a31\u8072\u97f3\u64ad\u653e?"},"nb-no":{mute:"Skru av lyd","cardboard-v1":"Hvis du ikke er sikker, hvilken Cardboard versjon du bruker, velger du standard hotspot-kontrollen. Du vil da bare se p\u00e5 et hotspot og vente til handlingen utl\u00f8ses.", "download-tour":"Last ned visningen, s\u00e5 den kan bli sett uten internett","change-to-drag-and-release":"Endre kontrollmodus til Trekk og Slipp",accept:"Aksepterer",cancel:"Avbryt","storage-not-provided-bookmark":"Vedvarende lagring nektet. Pr\u00f8v \u00e5 bokmerke denne nettsiden og laste den inn p\u00e5 nytt.","dont-display-again":"Ikke vis denne informasjonen igjen","web-server-required":"Denne virtuelle visningen kan ikke spilles av lokalt. Vennligst last den opp til internett, og fors\u00f8k igjen.\ndersom du prefererer det, kan du dra htm filen (eller hele mappen som inneholder visningen) over 'TourViewer' appen.", download:"Last ned","change-to-click-and-move":"Endre kontrollmodus til Klikk og Flytt",yes:"Ja","delete-downloaded":"Slett","use-safari-for-vr":"Vi anbefaler Safari for \u00e5 se p\u00e5 venne visningen i VR modus","exit-fullscreen":"G\u00e5 ut av full skjerm",no:"Nei","download-failed":"Nedlastning feilet","giroscope-disabled-http":"Du er koblet til denne nettsiden via http. Dermed er enhetens bevegelses- og orienteringstilgang og VR-modus deaktivert. Koble til via https for \u00e5 aktivere denne.", "cookies-notice":"Denne websiden bruker informasjonskapsler for \u00e5 samle inn bruksstatistikk. For mer informasjon, bes\u00f8k retningslinjer for informasjonskapsler.","use-cardboard":"Bruk Cardboard","launch-default-browser":"\u00c5pne i standard nettleser","rotate-device":"Vennligst roter enheten","exit-vr":"G\u00e5 ut av VR","storage-not-provided-launch-from-desktop":"Start turen p\u00e5 nytt fra skrivebordsikonet for \u00e5 laste ned.","disable-measure":"Stop measuring",downloading:"Laster ned", "cardboard-v2":"Dersom du har Cardboard versjon 2, hvilket kommer med en knapp, kan du kikke p\u00e5 en klikkbar ting i visningen, og bruke knappen for \u00e5 bruke disse tingene, p\u00e5 samme m\u00e5te som p\u00e5 en laptop eller telefon.","enable-video-audio-prompt":"Aktivere video og lyd?",reject:"Avvis",downloaded:"Denne visningen er lastet ned, s\u00e5 den kan bli sett uten internett.","samsung-internet-vr-app-info":"Hvis du har et Gear VR-headset som er kompatibelt med denne enheten og har installert Samsung Internet for VR, kan du ogs\u00e5 bruke det til \u00e5 se dette innholdet i VR, du m\u00e5 ogs\u00e5 gj\u00f8re Samsung Internet til standard nettleser.", "samsung-internet-vr-info":"Hvis du har et Gear VR-headset som er kompatibelt med denne enheten, og du har installert Samsung Internet for VR, kan du ogs\u00e5 bruke det til \u00e5 se dette innholdet i VR, du trenger bare \u00e5 sette mobiltelefonen p\u00e5 headsettet n\u00e5.","enable-video-prompt":"Aktivere video?","giroscope-disabled-safari-request-permission":["Din enhet sin bevegelses- og orienterings tilgang, samt VR modus er deaktivert for denne nettsiden.","For \u00e5 se denne siden korrekt, vennligst klikk p\u00e5 fortsett og godta tillatelsesforesp\u00f8rselen hvis du blir bedt om dette."], "storage-not-provided-launch-from-homescreen":"Start turen p\u00e5 nytt fra startskjermikonet for \u00e5 laste ned.","enter-fullscreen":"G\u00e5 til full skjerm","use-cardboard-v2":"Bruk Cardboard Versjon 2",unmute:"Skru p\u00e5 lyd","enter-vr":"\u00c5pne VR Modus","enable-measure":"Start measuring","use-cardboard-info":"Du kan bruke hvilke some helst Google Cardboard kompatible headsett for \u00e5 se denne visningen i VR.","refresh-downloaded":"Last inn p\u00e5 nytt","use-default-cardboard":"Bruk Standard", "enable-audio-prompt":"Aktivere audio?"},"pt-pt":{mute:"Desativar som","cardboard-v1":"Se voc\u00ea n\u00e3o tiver certeza de qual vers\u00e3o do Cardboard est\u00e1 usando, selecione o controle de ponto de acesso padr\u00e3o. Voc\u00ea simplesmente olha para um ponto de acesso e espera at\u00e9 que a a\u00e7\u00e3o seja acionada.","download-tour":"Download do Tour para reprodu\u00e7\u00e3o offline","change-to-drag-and-release":"Alterar controle para arrastar e soltar",accept:"Aceitar",cancel:"Cancelar", "storage-not-provided-bookmark":"Armazenamento persistente negado. Tente marcar esta p\u00e1gina da Web e recarreg\u00e1-la.","dont-display-again":"N\u00e3o exibir essas informa\u00e7\u00f5es novamente","web-server-required":"Este passeio virtual n\u00e3o pode ser reproduzido a partir de uma unidade local. Envie-o para a Internet e tente novamente.\nSe preferir, arraste o arquivo htm (ou toda a pasta do tour) para o \u00edcone do aplicativo TourViewer.",download:"Download","change-to-click-and-move":"Alterar controle para clicar e mover", yes:"sim","delete-downloaded":"Apagar","use-safari-for-vr":"Recomendamos o Safari para ver este passeio no modo VR","exit-fullscreen":"Sair da tela cheia",no:"n\u00e3o","download-failed":"Falha no Download","giroscope-disabled-http":"Voc\u00ea est\u00e1 acessando esta p\u00e1gina da Web por meio do http, para que o acesso \u00e0 orienta\u00e7\u00e3o e movimento do dispositivo e o modo VR sejam desativados, acesse-o atrav\u00e9s de https para ativ\u00e1-los.","cookies-notice":"Esta p\u00e1gina da web usa cookies para coletar estat\u00edsticas de uso. Para obter mais informa\u00e7\u00f5es, visite a Pol\u00edtica de cookies.", "use-cardboard":"Use Cardboard","launch-default-browser":"Iniciar no navegador padr\u00e3o","rotate-device":"Por favor, gire seu dispositivo","exit-vr":"Sair do VR","storage-not-provided-launch-from-desktop":"Por favor, reinicie o tour no \u00edcone da \u00e1rea de trabalho para fazer o download.","disable-measure":"Stop measuring",downloading:"Baixando","cardboard-v2":"Se voc\u00ea tiver um fone de ouvido Cardboard v2, que vem com um bot\u00e3o, poder\u00e1 observar um ponto de acesso e pressionar o bot\u00e3o para acionar sua a\u00e7\u00e3o.", "enable-video-audio-prompt":"Ativar \u00e1udio e v\u00eddeo?",reject:"Rejeitar",downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"Se voc\u00ea possui um fone de ouvido Gear VR compat\u00edvel com este dispositivo e instalou o Samsung Internet for VR, tamb\u00e9m pode us\u00e1-lo para visualizar esse conte\u00fado em VR. Voc\u00ea precisa tornar o Samsung Internet o seu padr\u00e3o. browser.","samsung-internet-vr-info":"Se voc\u00ea possui um fone de ouvido Gear VR compat\u00edvel com este dispositivo e instalou o Samsung Internet for VR, tamb\u00e9m pode us\u00e1-lo para visualizar esse conte\u00fado em VR. Basta colocar o celular no fone de ouvido agora.", "enable-video-prompt":"Ativar v\u00eddeo?","giroscope-disabled-safari-request-permission":["O acesso a movimento e orienta\u00e7\u00e3o do dispositivo e o modo VR est\u00e3o desativados para este site.","Para ver corretamente esta p\u00e1gina da web, clique em continuar e aceite a solicita\u00e7\u00e3o de permiss\u00e3o, se solicitado."],"storage-not-provided-launch-from-homescreen":"Reinicie o tour no \u00edcone da tela inicial para fazer o download.","enter-fullscreen":"Entrar em tela cheia","use-cardboard-v2":"Use Cardboard v2", unmute:"Ativar som","enter-vr":"Inserir conte\u00fado VR","enable-measure":"Start measuring","use-cardboard-info":"Voc\u00ea pode usar qualquer fone de ouvido compat\u00edvel do Google Cardboard para visualizar este conte\u00fado em VR","refresh-downloaded":"Atualizar","use-default-cardboard":"Use o padr\u00e3o","enable-audio-prompt":"Ativar \u00e1udio?"},"hr-hr":{mute:"nijem","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.", "download-tour":"Download Tour for offline playing","change-to-drag-and-release":"Promijenite na\u010din upravljanja u povla\u010denje i otpu\u0161tanje",accept:"Prihvatiti",download:"Download","storage-not-provided-bookmark":"Persistent storage denied. Try bookmarking this webpage and reloading it.","dont-display-again":"Don't display this info again","web-server-required":"This virtual tour cannot be played from a local drive. Please upload it to the internet and try again.\nIf you prefer, drag the htm file (or the entire folder of the tour) onto the icon of the TourViewer app.", cancel:"Cancel","change-to-click-and-move":"Promijenite na\u010din upravljanja na Klik i Premjesti",yes:"Da","delete-downloaded":"Delete","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"Iza\u0111ite s punog zaslona",no:"Ne","download-failed":"Download failed","giroscope-disabled-http":"You are accessing this webpage through http so your device's motion and orientation access and VR mode are disabled, please access it through https to enable them.","cookies-notice":"Ova web stranica koristi kola\u010di\u0107e za prikupljanje statistike upotrebe. Za vi\u0161e informacija posjetite Pravila o kola\u010di\u0107ima.", "use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR",reject:"Odbiti","disable-measure":"Stop measuring",downloading:"Downloading","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"Omogu\u0107iti videozapis i zvuk?","storage-not-provided-launch-from-desktop":"Please relaunch the tour from the desktop icon to download.", downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.","samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.", "enable-video-prompt":"Omogu\u0107ite videozapis?","giroscope-disabled-safari-request-permission":["Your device's motion and orientation access and VR mode are disabled for this site.","To properly see this webpage, please click continue and accept the permission request if prompted."],"storage-not-provided-launch-from-homescreen":"Please relaunch the tour from the home screen icon to download.","enter-fullscreen":"Unesite cijeli zaslon","use-cardboard-v2":"Use Cardboard v2",unmute:"Uklju\u010di mikrofon", "enter-vr":"Enter VR content","enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"Refresh","use-default-cardboard":"Use Default","enable-audio-prompt":"\u017delite li omogu\u0107iti zvuk?"},"ja-jp":{mute:"\u30df\u30e5\u30fc\u30c8","cardboard-v1":"\u4f7f\u7528\u3057\u3066\u3044\u308bCardboard\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u308f\u304b\u3089\u306a\u3044\u5834\u5408\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30db\u30c3\u30c8\u30b9\u30dd\u30c3\u30c8\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3092\u9078\u629e\u3057\u307e\u3059\u3002\u6b21\u306b\u3001\u30db\u30c3\u30c8\u30b9\u30dd\u30c3\u30c8\u3092\u6ce8\u8996\u3057\u3001\u30a2\u30af\u30b7\u30e7\u30f3\u304c\u52d5\u4f5c\u3059\u308b\u307e\u3067\u5f85\u6a5f\u3057\u307e\u3059\u3002\uff08\u4e00\u90e8\u52d5\u4f5c\u3057\u306a\u3044\u30a2\u30af\u30b7\u30e7\u30f3\u6709\u308a\uff09", "download-tour":"\u30aa\u30d5\u30e9\u30a4\u30f3\u518d\u751f\u7528\u30c4\u30a2\u30fc\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b","change-to-drag-and-release":"\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e2\u30fc\u30c9\u3092\u30c9\u30e9\u30c3\u30b0\uff06\u30ea\u30ea\u30fc\u30b9\u306b\u5909\u66f4",accept:"\u53d7\u3051\u5165\u308c\u308b",cancel:"\u30ad\u30e3\u30f3\u30bb\u30eb","storage-not-provided-bookmark":"\u6c38\u7d9a\u7684\u306a\u4fdd\u5b58\u304c\u62d2\u5426\u3055\u308c\u305f\u3002\u3053\u306eWeb\u30da\u30fc\u30b8\u3092\u30d6\u30c3\u30af\u30de\u30fc\u30af\u3057\u3001\u66f4\u65b0\u3057\u3066\u304f\u3060\u3055\u3044", "dont-display-again":"\u4eca\u5f8c\u3053\u306e\u60c5\u5831\u3092\u8868\u793a\u3057\u306a\u3044","web-server-required":"\u3053\u306e\u30d0\u30fc\u30c1\u30e3\u30eb\u30c4\u30a2\u30fc\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u30c9\u30e9\u30a4\u30d6\u304b\u3089\u518d\u751f\u3067\u304d\u307e\u305b\u3093\u3002\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u306b\u63a5\u7d9a\u3057\u3001\u3082\u3046\u4e00\u5ea6\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3092\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\n\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001htm\u30d5\u30a1\u30a4\u30eb\uff08\u307e\u305f\u306f\u30c4\u30a2\u30fc\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u5168\u4f53\uff09\u3092\u300eTourViewer\u300f\u30a2\u30d7\u30ea\u306e\u30a2\u30a4\u30b3\u30f3\u306b\u30c9\u30e9\u30c3\u30b0\u3057\u307e\u3059", download:"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","change-to-click-and-move":"\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u30e2\u30fc\u30c9\u3092\u30af\u30ea\u30c3\u30af\uff06\u30e0\u30fc\u30d6\u306b\u5909\u66f4",yes:"\u306f\u3044","delete-downloaded":"\u524a\u9664","use-safari-for-vr":"\u3053\u306e\u30c4\u30a2\u30fc\u3092VR\u30d3\u30e5\u30fc\u3067\u8868\u793a\u3059\u308b\u306b\u306f\u3001Safari\u30d6\u30e9\u30a6\u30b6\u306e\u5229\u7528\u3092\u304a\u52e7\u3081\u3057\u307e\u3059","exit-fullscreen":"\u30d5\u30eb\u30b9\u30af\u30ea\u30fc\u30f3\u3092\u7d42\u4e86\u3059\u308b", no:"\u3044\u3044\u3048","download-failed":"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u5931\u6557\u3057\u307e\u3057\u305f","giroscope-disabled-http":"\u3053\u306eWeb\u30da\u30fc\u30b8\u306b\u300ehttp\u300f\u7d4c\u7531\u3067\u30a2\u30af\u30bb\u30b9\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u3054\u5229\u7528\u7aef\u672b\u306e\u30e2\u30fc\u30b7\u30e7\u30f3\u3068\u753b\u9762\u306e\u5411\u304d\u3078\u30a2\u30af\u30bb\u30b9\u304c\u3067\u304d\u305a\u3001VR\u30e2\u30fc\u30c9\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u300ehttps\u300f\u7d4c\u7531\u3067\u30a2\u30af\u30bb\u30b9\u3057\u6709\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044", "cookies-notice":"\u3053\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306fCookie\u3092\u4f7f\u7528\u3057\u3066\u4f7f\u7528\u7d71\u8a08\u3092\u53ce\u96c6\u3057\u307e\u3059\u3002 \u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001Cookie\u30dd\u30ea\u30b7\u30fc\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002","use-cardboard":"Cardboard\u5229\u7528","launch-default-browser":"\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u8d77\u52d5","rotate-device":"\u7aef\u672b\u3092\u56de\u8ee2\u3055\u305b\u3066\u304f\u3060\u3055\u3044", "exit-vr":"VR\u30d3\u30e5\u30fc \u7d42\u4e86","storage-not-provided-launch-from-desktop":"\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u306e\u30a2\u30a4\u30b3\u30f3\u304b\u3089\u30c4\u30a2\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3001\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044","disable-measure":"Stop measuring",downloading:"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u4e2d","cardboard-v2":"\u30dc\u30bf\u30f3\u304c\u4ed8\u5c5e\u3057\u3066\u3044\u308bCardboard v2\u30d8\u30c3\u30c9\u30bb\u30c3\u30c8\u3092\u304a\u6301\u3061\u306e\u5834\u5408\u306f\u3053\u3061\u3089\u3002", "enable-video-audio-prompt":"\u30d3\u30c7\u30aa\u3068\u97f3\u58f0\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u304b\uff1f",reject:"\u62d2\u5426\u3059\u308b",downloaded:"\u3053\u306e\u30c4\u30a2\u30fc\u306f\u3001\u30aa\u30d5\u30e9\u30a4\u30f3\u3067\u518d\u751f\u3059\u308b\u305f\u3081\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u3059\u308b","samsung-internet-vr-app-info":"\u3053\u306e\u7aef\u672b\u3068\u4e92\u63db\u6027\u306e\u3042\u308bVR\u30d8\u30c3\u30c9\u30bb\u30c3\u30c8\u6a5f\u5668\u3092\u304a\u6301\u3061\u3067\u3001VR\u7528\u306e\u300eSamsung Internet\u300f\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u308b\u5834\u5408\u3002VR\u30d3\u30e5\u30fc\u3067\u3053\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u969b\u3001\u300eSamsung Internet\u300f\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d6\u30e9\u30a6\u30b6\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059", "samsung-internet-vr-info":"\u3053\u306e\u7aef\u672b\u3068\u4e92\u63db\u6027\u306e\u3042\u308bVR\u30d8\u30c3\u30c9\u30bb\u30c3\u30c8\u6a5f\u5668\u3092\u304a\u6301\u3061\u3067\u3001VR\u7528\u306e\u300eSamsung Internet\u300f\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u308b\u5834\u5408\u3002VR\u30d3\u30e5\u30fc\u3067\u3053\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u969b\u3001\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u3092\u30d8\u30c3\u30c9\u30bb\u30c3\u30c8\u306b\u88c5\u7740\u3059\u308b\u3060\u3051\u3067\u3059", "enable-video-prompt":"\u30d3\u30c7\u30aa\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u304b\uff1f","giroscope-disabled-safari-request-permission":["\u3054\u5229\u7528\u7aef\u672b\u306e\u30e2\u30fc\u30b7\u30e7\u30f3\u3068\u753b\u9762\u306e\u5411\u304d\u3078\u30a2\u30af\u30bb\u30b9\u304c\u3067\u304d\u305a\u3001VR\u30e2\u30fc\u30c9\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002","\u3053\u306eWeb\u30da\u30fc\u30b8\u3092\u6b63\u3057\u304f\u8868\u793a\u3059\u308b\u306b\u306f\u3001\u300eOK\u300f\u3092\u30af\u30ea\u30c3\u30af\u3057\u300e\u8a31\u53ef\u300f\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u53d7\u3051\u5165\u308c\u3066\u304f\u3060\u3055\u3044"], "storage-not-provided-launch-from-homescreen":"\u30db\u30fc\u30e0\u753b\u9762\u306e\u30a2\u30a4\u30b3\u30f3\u304b\u3089\u30c4\u30a2\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3001\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044","enter-fullscreen":"\u30d5\u30eb\u30b9\u30af\u30ea\u30fc\u30f3\u3067\u5165\u529b\u3059\u308b","use-cardboard-v2":"Cardboard v2\u5229\u7528",unmute:"\u30df\u30e5\u30fc\u30c8\u89e3\u9664","enter-vr":"VR\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u5165\u529b","enable-measure":"Start measuring", "use-cardboard-info":"\u3053\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092VR\u30d3\u30e5\u30fc\u3067\u8868\u793a\u3059\u308b\u306b\u306f\u3001\u4e92\u63db\u6027\u306e\u3042\u308b\u4efb\u610f\u306eGoogle Cardboard\u30d8\u30c3\u30c9\u30bb\u30c3\u30c8\u3092\u5229\u7528\u3067\u304d\u307e\u3059","refresh-downloaded":"\u66f4\u65b0","use-default-cardboard":"\u30c7\u30d5\u30a9\u30eb\u30c8\u5229\u7528","enable-audio-prompt":"\u97f3\u58f0\u3092\u6709\u52b9\u306b\u3057\u307e\u3059\u304b\uff1f"},"zh-cn":{mute:"\u9759\u97f3", "cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.","download-tour":"\u4e0b\u8f7d\u5168\u666f\u6f2b\u6e38\uff0c\u4ee5\u8fdb\u884c\u79bb\u7ebf\u64ad\u653e","change-to-drag-and-release":"\u5c06\u63a7\u5236\u6a21\u5f0f\u66f4\u6539\u4e3a\u201c\u62d6\u653e\u201d",accept:"\u63a5\u53d7",cancel:"\u53d6\u6d88","storage-not-provided-bookmark":"\u88c5\u7f6e\u5185\u6c38\u4e45\u5b58\u50a8\u88ab\u62d2\u7edd\u3002\u5c1d\u8bd5\u5c06\u6b64\u7f51\u9875\u6dfb\u52a0\u4e3a\u4e66\u7b7e\uff0c \u5e76\u91cd\u65b0\u52a0\u8f7d\u3002", "dont-display-again":"\u4e0d\u518d\u663e\u793a\u6b64\u4fe1\u606f","web-server-required":"\u6b64\u5168\u666f\u6f2b\u6e38\u65e0\u6cd5\u4ece\u672c\u5730\u9a71\u52a8\u5668\u4e0a\u64ad\u653e\u3002 \u8bf7\u5c06\u5176\u4e0a\u4f20\u5230\u4e92\u8054\u7f51\u670d\u52a1\u5668\uff0c\u7136\u540e\u91cd\u8bd5\u3002\n\u5982\u679c\u9700\u8981\u672c\u5730\u9884\u89c8\uff0c\u53ef\u4ee5\u5c06htm\u6587\u4ef6\uff08\u6216\u5168\u666f\u6f2b\u6e38\u7684\u6574\u4e2a\u6587\u4ef6\u5939\uff09\u62d6\u5230TourViewer\u5e94\u7528\u7a0b\u5e8f\u7684\u56fe\u6807\u4e0a\u3002", download:"\u4e0b\u8f7d","change-to-click-and-move":"\u5c06\u63a7\u5236\u6a21\u5f0f\u66f4\u6539\u4e3a\u201c\u5355\u51fb\u5e76\u79fb\u52a8\u201d",yes:"\u662f","delete-downloaded":"\u5220\u9664","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"\u9000\u51fa\u5168\u5c4f",no:"\u5426","download-failed":"\u4e0b\u8f7d\u5931\u8d25","giroscope-disabled-http":"\u60a8\u6b63\u5728\u901a\u8fc7http(\u672a\u52a0\u5bc6)\u8bbf\u95ee\u6b64\u7f51\u9875\uff0c\u56e0\u6b64\u8bbe\u5907\u7684\u8fd0\u52a8\u548c\u65b9\u5411\u8bbf\u95ee\u6743\u9650\u4ee5\u53caVR\u6a21\u5f0f\u5747\u5df2\u7981\u7528\uff0c\u8bf7\u901a\u8fc7https(\u52a0\u5bc6)\u5bf9\u5176\u8fdb\u884c\u542f\u7528\u3002", "cookies-notice":"\u8be5\u7f51\u9875\u4f7f\u7528cookie\u6765\u6536\u96c6\u4f7f\u7528\u60c5\u51b5\u7edf\u8ba1\u4fe1\u606f\u3002 \u6709\u5173\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u8bbf\u95eeCookie\u653f\u7b56\u3002","use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR","storage-not-provided-launch-from-desktop":"\u8bf7\u4ece\u684c\u9762\u70b9\u51fb\u56fe\u6807\uff0c\u91cd\u65b0\u542f\u52a8\u5168\u666f\u6f2b\u6e38\uff0c\u4ee5\u8fdb\u884c\u4e0b\u8f7d\u3002", "disable-measure":"Stop measuring",downloading:"\u6b63\u5728\u4e0b\u8f7d","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"\u542f\u7528\u89c6\u9891\u548c\u97f3\u9891\uff1f",reject:"\u62d2\u7edd",downloaded:"\u6b64\u5168\u666f\u6f2b\u6e38\u5df2\u4e0b\u8f7d\uff0c\u53ef\u8fdb\u884c\u79bb\u7ebf\u64ad\u653e\u3002","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.", "samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.","enable-video-prompt":"\u542f\u7528\u89c6\u9891\uff1f","giroscope-disabled-safari-request-permission":["\u8be5\u7ad9\u70b9\u5df2\u7981\u7528\u8bbe\u5907\u7684\u8fd0\u52a8\u548c\u65b9\u5411\u8bbf\u95ee\u6743\u9650\uff0cVR\u6a21\u5f0f\u4e5f\u88ab\u7981\u7528\u3002", "\u8981\u6b63\u786e\u67e5\u770b\u6b64\u7f51\u9875\uff0c\u8bf7\u5355\u51fb\u7ee7\u7eed\uff0c\u5e76\u5728\u51fa\u73b0\u63d0\u793a\u65f6\u63a5\u53d7\u8bb8\u53ef\u8bf7\u6c42"],"storage-not-provided-launch-from-homescreen":"\u8bf7\u4ece\u4e3b\u5c4f\u5e55\u70b9\u51fb\u56fe\u6807\uff0c\u91cd\u65b0\u542f\u52a8\u5168\u666f\u6f2b\u6e38\uff0c\u4ee5\u8fdb\u884c\u4e0b\u8f7d\u3002","enter-fullscreen":"\u8fdb\u5165\u5168\u5c4f","use-cardboard-v2":"Use Cardboard v2",unmute:"\u53d6\u6d88\u9759\u97f3","enter-vr":"Enter VR content", "enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"\u5237\u65b0","use-default-cardboard":"Use Default","enable-audio-prompt":"\u542f\u7528\u97f3\u9891\uff1f"},"nl-nl":{mute:"Schakel audio uit","cardboard-v1":"Als u niet weet wat voor versie van Cardboard u gebruikt, selecteer dan de default hotspot control. Dan zult u moeten wachten op een hotspot tot er een bepaald actie is gestart.","download-tour":"Download Tour voor offline afspelen", "change-to-drag-and-release":"Verander de besturingsmodus om te slepen en los te laten",accept:"Aanvaarden",download:"Download","storage-not-provided-bookmark":"Aanhoudende inhoud geweigerd. Probeer deze pagina als bookmark op te slaan en te verversen.","dont-display-again":"Niet meer laten zien","web-server-required":"Deze virtuele tour kan niet worden afgespeeld vanaf een lokale schijf. Upload dit alstublieft op het internet. Je kan ook de htm bestand slepen naar het icoon van de TourViewer app.", cancel:"Annuleren","change-to-click-and-move":"Verander de bedieningsmodus om te klikken en te verplaatsen",yes:"Ja","delete-downloaded":"Verwijderen","use-safari-for-vr":"We raden aan om in Safari deze tour te bekijken in VR mode","exit-fullscreen":"Volledig scherm verlaten",no:"Nee","download-failed":"Download mislukt","giroscope-disabled-http":"Jij betreedt deze pagina door http, dus uw toestel's motion en orientation access en VR modus zijn uitgeschakeld. Betreed deze pagina door https om ze weer aan te schakelen.", "cookies-notice":"Deze webpagina maakt gebruik van cookies om gebruiksstatistieken te verzamelen. Raadpleeg het Cookiebeleid voor meer informatie.","use-cardboard":"Gebruik Cardboard","launch-default-browser":"Start op in standaard browser","rotate-device":"Draai uw toestel om, alstublieft","exit-vr":"VR verlaten",reject:"Weigeren","disable-measure":"Stop meten",downloading:"Downloaden","cardboard-v2":"Als u een Cardboard v2 headset heeft, wat met een knop komt, kunt u wachten op een hotspot en een op een knop drukken om een actie te starten.", "enable-video-audio-prompt":"Audio en video inschakelen?","storage-not-provided-launch-from-desktop":"Start de tour alstublieft opnieuw up vanaf het bureaublad om te kunnen downloaden.",downloaded:"Deze tour is gedownload voor offline afspelen.","samsung-internet-vr-app-info":"Als u een Gear VR headset heeft dat werkt met dit toestel en u Samsung Internet voor VR heeft ge\u00efnstalleerd, kunt u dit ook bekijken in VR. U moet alleen Samsung Internet instellen als uw standaard browser.","samsung-internet-vr-info":"Als u een Gear VR headset heeft dat werkt met dit toestel en u Samsung Internet voor VR heeft ge\u00efnstalleerd, kunt u dit ook bekijken in VR, u moet alleen uw mobiele toestel op uw headset zetten.", "enable-video-prompt":"Video inschakelen?","giroscope-disabled-safari-request-permission":["Uw toestel's motion en orientation access en VR modus zijn uitgeschakeld voor deze site..","Om deze pagina goed te kunnen zien, druk op doorgaan en geef toestemming als dat gevraagd wordt."],"storage-not-provided-launch-from-homescreen":"Start de tour alstublieft opnieuw up vanaf het homescherm om te kunnen downloaden.","enter-fullscreen":"Volledig scherm inschakelen","use-cardboard-v2":"Gebruik Cardboard v2", unmute:"Schakel audio in","enter-vr":"Voer VR inhoud in","enable-measure":"Begin meten","use-cardboard-info":"U kunt elk werkend Google Cardboard headset gebruiken om dit te bekijken.","refresh-downloaded":"Verversen","use-default-cardboard":"Standaard gebruiken","enable-audio-prompt":"Audio inschakelen?"},"hu-hu":{mute:"N\u00e9m\u00edt\u00e1s","cardboard-v1":"Ha nem vagy biztos benne, hogy milyen VR eszk\u00f6zt haszn\u00e1lsz, akkor v\u00e1laszd az alap\u00e9rtelmezettet \u00e9s az egyes hotspot-ok megtekint\u00e9s\u00e9hez csak tartsd ott a jel\u00f6l\u0151t.", "download-tour":"T\u00fara let\u00f6lt\u00e9se offline megtekint\u00e9shez","change-to-drag-and-release":"Ir\u00e1ny\u00edt\u00e1s \u00e1t\u00e1ll\u00edt\u00e1sa: megfog \u00e9s mozgat m\u00f3dra",accept:"Elfogad",cancel:"M\u00e9gsem","storage-not-provided-bookmark":"Pr\u00f3b\u00e1lja meg az oldalt megjel\u00f6lni \u00e9s \u00fajrat\u00f6lteni!","dont-display-again":"Ne mutasd \u00fajra","web-server-required":"Ez a t\u00fara nem j\u00e1tszat\u00f3 le helyi futtat\u00e1ssal, k\u00e9rlek t\u00f6lsd fel az internetre \u00e9s pr\u00f3b\u00e1ld meg \u00fajra\nM\u00e1sik megold\u00e1s, ha a Tourviewer applik\u00e1ci\u00f3ra h\u00fazod a t\u00fara f\u00e1jlt, vagy az azt tartalmaz\u00f3 t\u00fara mapp\u00e1t.", download:"Let\u00f6lt\u00e9s","change-to-click-and-move":"Ir\u00e1ny\u00edt\u00e1s \u00e1t\u00e1ll\u00edt\u00e1sa kattint \u00e9s k\u00f6rben\u00e9z m\u00f3dra",yes:"igen","delete-downloaded":"T\u00f6rl\u00e9s","use-safari-for-vr":"Azt javasoljuk, hogy haszn\u00e1lj Safari b\u00f6ng\u00e9sz\u0151t a VR n\u00e9zet megtekint\u00e9s\u00e9hez","exit-fullscreen":"Kil\u00e9p\u00e9s a teljesk\u00e9perny\u0151 m\u00f3db\u00f3l",no:"nem","download-failed":"Let\u00f6lt\u00e9s sikertelen","giroscope-disabled-http":"Az oldalt https el\u0151taggal sz\u00fcks\u00e9ges megnyitnod ahhoz, hogy a k\u00e9sz\u00fcl\u00e9ked mozg\u00e1s\u00e1t \u00e9rz\u00e9kelni tudja.", "cookies-notice":"Ez a weboldal s\u00fctiket haszn\u00e1l a haszn\u00e1lati statisztik\u00e1k gy\u0171jt\u00e9s\u00e9hez. Tov\u00e1bbi inform\u00e1ci\u00f3\u00e9rt l\u00e1togasson el a s\u00fctikre vonatkoz\u00f3 ir\u00e1nyelvekbe.","use-cardboard":"Cardboard haszn\u00e1lata","launch-default-browser":"Futtat\u00e1s az alap\u00e9rtelmezett b\u00f6ng\u00e9sz\u0151ben","rotate-device":"Forgasd el a telefont!","exit-vr":"Kil\u00e9p\u00e9s a VR m\u00f3db\u00f3l","storage-not-provided-launch-from-desktop":"K\u00e9rlek ind\u00edtsd \u00fajra az oldalt az asztalon tal\u00e1lhat\u00f3 iconra kattintva.", "disable-measure":"Stop measuring",downloading:"Let\u00f6lt\u00e9s","cardboard-v2":"Ha Cardboard 2.0 t\u00edpus\u00fa eszk\u00f6zt haszn\u00e1lsz, akkor a kapcsol\u00f3kkal ir\u00e1ny\u00edthatod a t\u00far\u00e1t, kattinthatsz az egyes hotspotokra","enable-video-audio-prompt":"Hang \u00e9s vide\u00f3 enged\u00e9lyez\u00e9se",reject:"Elutas\u00edt",downloaded:"Let\u00f6ltve offline megtekint\u00e9shez","samsung-internet-vr-app-info":"Ha Samsung Gear VR szem\u00fcveget szeretn\u00e9l haszn\u00e1lni, akkor nyisd meg a Samsung internetb\u00f6ng\u00e9sz\u0151ben a t\u00far\u00e1t.", "samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.","enable-video-prompt":"Vide\u00f3 enged\u00e9lyez\u00e9se","giroscope-disabled-safari-request-permission":["A megjelen\u00edt\u0151 eszk\u00f6z\u00f6d nem adott hozz\u00e1f\u00e9r\u00e9st a mozg\u00e1s \u00e9rz\u00e9kel\u00e9s\u00e9hez ezen az oldalon.","Ahhoz hogy megfelel\u0151en l\u00e1sd az oldalt k\u00e9rlek enged\u00e9lyezd a hozz\u00e1f\u00e9r\u00e9st."], "storage-not-provided-launch-from-homescreen":"Ind\u00edtsd \u00fajra a t\u00far\u00e1t a home ikonra kattintva.","enter-fullscreen":"Teljesk\u00e9perny\u0151","use-cardboard-v2":"Cardboard 2.0 haszn\u00e1lata",unmute:"N\u00e9m\u00edt\u00e1s kikapcsol\u00e1sa","enter-vr":"VR tartalom megtekint\u00e9se","enable-measure":"Start measuring","use-cardboard-info":"Haszn\u00e1lhatsz b\u00e1rmilyen google cardboard-ot ahhoz, hogy VR m\u00f3dban l\u00e1sd a t\u00far\u00e1t.","refresh-downloaded":"Friss\u00edt\u00e9s", "use-default-cardboard":"Alap\u00e9rtelmezett haszn\u00e1lata","enable-audio-prompt":"Hang enged\u00e9lyez\u00e9se"},"ar-ar":{mute:"\u062a\u0639\u0637\u064a\u0644 \u0627\u0644\u0635\u0648\u062a","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.","download-tour":"Download Tour for offline playing","change-to-drag-and-release":"\u062a\u063a\u064a\u064a\u0631 \u0648\u0636\u0639 \u0627\u0644\u062a\u062d\u0643\u0645 \u0644\u0644\u0633\u062d\u0628 \u0648\u0627\u0644\u0625\u0641\u0631\u0627\u062c", accept:"\u0642\u0628\u0648\u0644",download:"Download","storage-not-provided-bookmark":"Persistent storage denied. Try bookmarking this webpage and reloading it.","dont-display-again":"Don't display this info again","web-server-required":"This virtual tour cannot be played from a local drive. Please upload it to the internet and try again.\nIf you prefer, drag the htm file (or the entire folder of the tour) onto the icon of the TourViewer app.",cancel:"Cancel","change-to-click-and-move":"\u062a\u063a\u064a\u064a\u0631 \u0648\u0636\u0639 \u0627\u0644\u062a\u062d\u0643\u0645 \u0644\u0644\u0646\u0642\u0631 \u0648\u0627\u0644\u062a\u062d\u0631\u0643", yes:"\u0646\u0639\u0645 \u0641\u0639\u0644\u0627","delete-downloaded":"Delete","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"\u0627\u0644\u062e\u0631\u0648\u062c \u0645\u0646 \u0648\u0636\u0639 \u0645\u0644\u0626 \u0644\u0644\u0634\u0627\u0634\u0629",no:"\u0644\u0627","download-failed":"Download failed","giroscope-disabled-http":"You are accessing this webpage through http so your device's motion and orientation access and VR mode are disabled, please access it through https to enable them.", "cookies-notice":"\u062a\u0633\u062a\u062e\u062f\u0645 \u0635\u0641\u062d\u0629 \u0627\u0644\u0648\u064a\u0628 \u0647\u0630\u0647 \u0645\u0644\u0641\u0627\u062a \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0627\u0631\u062a\u0628\u0627\u0637 \u0644\u062c\u0645\u0639 \u0625\u062d\u0635\u0627\u0626\u064a\u0627\u062a \u0627\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645. \u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u060c \u064a\u0631\u062c\u0649 \u0632\u064a\u0627\u0631\u0629 \u0633\u064a\u0627\u0633\u0629 \u0645\u0644\u0641\u0627\u062a \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0627\u0631\u062a\u0628\u0627\u0637 .", "use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR",reject:"\u064a\u0631\u0641\u0636","disable-measure":"Stop measuring",downloading:"Downloading","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0635\u0648\u062a \u0648\u0627\u0644\u0641\u064a\u062f\u064a\u0648\u061f", "storage-not-provided-launch-from-desktop":"Please relaunch the tour from the desktop icon to download.",downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.","samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.", "enable-video-prompt":"\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0641\u064a\u062f\u064a\u0648\u061f","giroscope-disabled-safari-request-permission":["Your device's motion and orientation access and VR mode are disabled for this site.","To properly see this webpage, please click continue and accept the permission request if prompted."],"storage-not-provided-launch-from-homescreen":"Please relaunch the tour from the home screen icon to download.","enter-fullscreen":"\u0623\u062f\u062e\u0644 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629", "use-cardboard-v2":"Use Cardboard v2",unmute:"\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0635\u0648\u062a","enter-vr":"Enter VR content","enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"Refresh","use-default-cardboard":"Use Default","enable-audio-prompt":"\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0635\u0648\u062a\u061f"},"ca-es":{mute:"Silenciar","cardboard-v1":"Si no esteu segurs de quina versi\u00f3 de cartr\u00f3 utilitzeu, seleccioneu el control de punt d'acc\u00e9s per defecte. Despr\u00e9s, simplement veureu un punt d'acc\u00e9s i espereu fins que s'activi l'acci\u00f3.", "download-tour":"Descarregueu la visita virtual per a jugar fora de l\u00ednia","change-to-drag-and-release":"Canvieu el mode de control a Arrossegar i deixeu anar",accept:"Accepta",cancel:"Cancel\u00b7lar","storage-not-provided-bookmark":"S'ha denegat l'emmagatzematge persistent. Proveu de marcar aquesta p\u00e0gina web i torneu-la a carregar.","dont-display-again":"No tornis a mostrar aquesta informaci\u00f3","web-server-required":"Aquesta visita virtual no es pot reproduir des d'una unitat local. Carregueu-lo a Internet i torneu-ho a provar.\nSi ho preferiu, arrossegueu el fitxer htm (o tota la carpeta de la visita virtual) a la icona de l'aplicaci\u00f3 TourViewer.", download:"Descarregar","change-to-click-and-move":"Canvieu el mode de control a Fer clic i desplaceu",yes:"s\u00ed","delete-downloaded":"Suprimeix","use-safari-for-vr":"Recomanem Safari per a visualitzar aquesta visita virtual en mode VR","exit-fullscreen":"Surt de pantalla completa",no:"no","download-failed":"Error de desc\u00e0rrega","giroscope-disabled-http":"Accediu a aquesta p\u00e0gina web a trav\u00e9s de http de manera que el moviment i l\u2019orientaci\u00f3 del dispositiu i el mode VR estan desactivats, accediu-hi mitjan\u00e7ant https per habilitar-les.", "cookies-notice":"Aquesta p\u00e0gina web utilitza cookies per recopilar estad\u00edstiques d\u2019\u00fas. Per obtenir m\u00e9s informaci\u00f3, visiteu la Pol\u00edtica de cookies.","use-cardboard":"Utilitzeu Cardboard","launch-default-browser":"Inicieu el navegador per defecte","rotate-device":"Gireu el dispositiu","exit-vr":"Surt de VR","storage-not-provided-launch-from-desktop":"Torneu a iniciar la visita virtual des de la icona de l'escriptori per a descarregar-la.","disable-measure":"Stop measuring", downloading:"Baixant","cardboard-v2":"Si teniu unes Cardboard v2, que venen amb un bot\u00f3, podeu mirar cap a un punt de vista i pr\u00e9mer el bot\u00f3 per activar-lo.","enable-video-audio-prompt":"Habilitar v\u00eddeo i \u00e0udio?",reject:"Rebutjar",downloaded:"Aquesta visita virtual es descarrega per a reproduir-la fora de l\u00ednia.","samsung-internet-vr-app-info":"Si teniu un auricular Gear VR compatible amb aquest dispositiu i heu instal\u00b7lat Samsung Internet per a VR, tamb\u00e9 podeu utilitzar-lo per visualitzar aquest contingut en VR, heu de fer que Samsung Internet sigui el vostre navegador predeterminat.", "samsung-internet-vr-info":"Si teniu un auricular Gear VR compatible amb aquest dispositiu i heu instal\u00b7lat Samsung Internet per a VR, tamb\u00e9 podeu utilitzar-lo per visualitzar aquest contingut en VR, nom\u00e9s heu de posar el tel\u00e8fon m\u00f2bil als auriculars.","enable-video-prompt":"Activar v\u00eddeo?","giroscope-disabled-safari-request-permission":["Aquest lloc web est\u00e0 desactivat en el moviment i en la direcci\u00f3 o en mode VR del dispositiu.","Per veure correctament aquesta p\u00e0gina web, feu clic a Continuar i accepteu la sol\u00b7licitud de perm\u00eds si se us demana."], "storage-not-provided-launch-from-homescreen":"Torneu a iniciar la visita virtual des de la icona de la pantalla inicial.","enter-fullscreen":"Entra a pantalla completa","use-cardboard-v2":"Utilitzeu Cardboard v2",unmute:"No activa","enter-vr":"Introdu\u00efu contingut de VR","enable-measure":"Start measuring","use-cardboard-info":"Podeu utilitzar qualsevol auricular de Google Cardboard compatible per a visualitzar aquest contingut en VR.","refresh-downloaded":"Actualitzaci\u00f3","use-default-cardboard":"\u00das per defecte", "enable-audio-prompt":"Activar \u00e0udio?"},"ru-ru":{mute:"\u0411\u0435\u0437 \u0437\u0432\u0443\u043a\u0430","cardboard-v1":"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u043a\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Cardboard \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0445\u043e\u0442\u0441\u043f\u043e\u0442 \u043a\u0430\u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u0445\u043e\u0442\u0441\u043f\u043e\u0442 \u0438 \u0434\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.", "download-tour":"\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0442\u0443\u0440 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f","change-to-drag-and-release":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0440\u0435\u0436\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0435", accept:"\u041f\u0440\u0438\u043d\u044f\u0442\u044c",download:"\u0421\u043a\u0430\u0447\u0430\u0442\u044c","storage-not-provided-bookmark":"\u0412 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043e\u0442\u043a\u0430\u0437\u0430\u043d\u043e. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0435.", "dont-display-again":"\u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u044d\u0442\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e","web-server-required":"\u042d\u0442\u043e\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0443\u0440 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0430. \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0435\u0433\u043e \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437.\n\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435, \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 htm-\u0444\u0430\u0439\u043b (\u0438\u043b\u0438 \u0432\u0441\u044e \u043f\u0430\u043f\u043a\u0443 \u0442\u0443\u0440\u0430) \u043d\u0430 \u0437\u043d\u0430\u0447\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f TourViewer.", cancel:"\u041e\u0442\u043c\u0435\u043d\u0430","change-to-click-and-move":"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u0435 \u0440\u0435\u0436\u0438\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u043d\u0430\u0436\u0430\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435",yes:"\u0434\u0430","delete-downloaded":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c","use-safari-for-vr":"\u041c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c Safari \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0440\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 VR.", "exit-fullscreen":"\u0412\u044b\u0439\u0442\u0438 \u0438\u0437 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430",no:"\u043d\u0435\u0442","download-failed":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","giroscope-disabled-http":"\u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u043e\u0439 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0447\u0435\u0440\u0435\u0437 http, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0440\u0435\u0436\u0438\u043c VR \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u043e\u0439\u0434\u0438\u0442\u0435 \u043d\u0430 \u043d\u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 https, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0445.", "cookies-notice":"\u042d\u0442\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0430\u0439\u043b\u044b cookie \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441\u043c. \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 cookie.", "use-cardboard":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Cardboard","launch-default-browser":"\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","rotate-device":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0432\u0435\u0440\u043d\u0438\u0442\u0435 \u0432\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e", "exit-vr":"\u0412\u044b\u0439\u0442\u0438 \u0438\u0437 VR",reject:"\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c","disable-measure":"\u041f\u0440\u0435\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f",downloading:"\u0421\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435","cardboard-v2":"\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0430 Cardboard v2 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u0445\u043e\u0442\u0441\u043f\u043e\u0442 \u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.", "enable-video-audio-prompt":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0438 \u0430\u0443\u0434\u0438\u043e?","storage-not-provided-launch-from-desktop":"\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0443\u0440 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0441\u0442\u043e\u043b\u0435..", downloaded:"\u042d\u0442\u043e\u0442 \u0442\u0443\u0440 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.","samsung-internet-vr-app-info":"\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0430 Gear VR, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430\u044f \u0441 \u044d\u0442\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 Samsung Internet \u0434\u043b\u044f VR, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 VR, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c Samsung Internet \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.", "samsung-internet-vr-info":"\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0430 Gear VR, \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430\u044f \u0441 \u044d\u0442\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c, \u0438 \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438 Samsung Internet \u0434\u043b\u044f VR, \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 VR, \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0434\u0435\u0442\u044c \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0443 \u0441\u0435\u0439\u0447\u0430\u0441.", "enable-video-prompt":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e?","giroscope-disabled-safari-request-permission":["\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0436\u0438\u043c VR \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430.", "\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u044d\u0442\u0443 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u00ab\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c\u00bb \u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043e."], "storage-not-provided-launch-from-homescreen":"\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c, \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0443\u0440 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u0430 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435.","enter-fullscreen":"\u0412\u043e\u0439\u0442\u0438 \u0432 \u043f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c", "use-cardboard-v2":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Cardboard v2",unmute:"\u0421\u043e \u0437\u0432\u0443\u043a\u043e\u043c","enter-vr":"\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c VR \u043a\u043e\u043d\u0442\u0435\u043d\u0442","enable-measure":"\u041d\u0430\u0447\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f","use-cardboard-info":"\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0443\u044e \u0433\u0430\u0440\u043d\u0438\u0442\u0443\u0440\u0443 Google Cardboard \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 VR.", "refresh-downloaded":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c","use-default-cardboard":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e","enable-audio-prompt":"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0443\u0434\u0438\u043e?"},"nn-no":{mute:"Skru av lyd","cardboard-v1":"Hvis du ikke er sikker, hvilken Cardboard versjon du bruker, velger du standard hotspot-kontrollen. Du vil da bare se p\u00e5 et hotspot og vente til handlingen utl\u00f8ses.", "download-tour":"Last ned visningen, s\u00e5 den kan bli sett uten internett","change-to-drag-and-release":"Endre kontrollmodus til Trekk og Slipp",accept:"Aksepterer",cancel:"Avbryt","storage-not-provided-bookmark":"Vedvarende lagring nektet. Pr\u00f8v \u00e5 bokmerke denne nettsiden og laste den inn p\u00e5 nytt.","dont-display-again":"Ikke vis denne informasjonen igjen","web-server-required":"Denne virtuelle visningen kan ikke spilles av lokalt. Vennligst last den opp til internett, og fors\u00f8k igjen.\ndersom du prefererer det, kan du dra htm filen (eller hele mappen som inneholder visningen) over 'TourViewer' appen.", download:"Last ned","change-to-click-and-move":"Endre kontrollmodus til Klikk og Flytt",yes:"Ja","delete-downloaded":"Slett","use-safari-for-vr":"Vi anbefaler Safari for \u00e5 se p\u00e5 venne visningen i VR modus","exit-fullscreen":"G\u00e5 ut av full skjerm",no:"Nei","download-failed":"Nedlastning feilet","giroscope-disabled-http":"Du er koblet til denne nettsiden via http. Dermed er enhetens bevegelses- og orienteringstilgang og VR-modus deaktivert. Koble til via https for \u00e5 aktivere denne.", "cookies-notice":"Denne websiden bruker informasjonskapsler for \u00e5 samle inn bruksstatistikk. For mer informasjon, bes\u00f8k retningslinjer for informasjonskapsler.","use-cardboard":"Bruk Cardboard","launch-default-browser":"\u00c5pne i standard nettleser","rotate-device":"Vennligst roter enheten","exit-vr":"G\u00e5 ut av VR","storage-not-provided-launch-from-desktop":"Start turen p\u00e5 nytt fra skrivebordsikonet for \u00e5 laste ned.","disable-measure":"Stop measuring",downloading:"Laster ned", "cardboard-v2":"Dersom du har Cardboard versjon 2, hvilket kommer med en knapp, kan du kikke p\u00e5 en klikkbar ting i visningen, og bruke knappen for \u00e5 bruke disse tingene, p\u00e5 samme m\u00e5te som p\u00e5 en laptop eller telefon.","enable-video-audio-prompt":"Aktivere video og lyd?",reject:"Avvis",downloaded:"Denne visningen er lastet ned, s\u00e5 den kan bli sett uten internett.","samsung-internet-vr-app-info":"Hvis du har et Gear VR-headset som er kompatibelt med denne enheten og har installert Samsung Internet for VR, kan du ogs\u00e5 bruke det til \u00e5 se dette innholdet i VR, du m\u00e5 ogs\u00e5 gj\u00f8re Samsung Internet til standard nettleser.", "samsung-internet-vr-info":"Hvis du har et Gear VR-headset som er kompatibelt med denne enheten, og du har installert Samsung Internet for VR, kan du ogs\u00e5 bruke det til \u00e5 se dette innholdet i VR, du trenger bare \u00e5 sette mobiltelefonen p\u00e5 headsettet n\u00e5.","enable-video-prompt":"Aktivere video?","giroscope-disabled-safari-request-permission":["Din enhet sin bevegelses- og orienterings tilgang, samt VR modus er deaktivert for denne nettsiden.","For \u00e5 se denne siden korrekt, vennligst klikk p\u00e5 fortsett og godta tillatelsesforesp\u00f8rselen hvis du blir bedt om dette."], "storage-not-provided-launch-from-homescreen":"Start turen p\u00e5 nytt fra startskjermikonet for \u00e5 laste ned.","enter-fullscreen":"G\u00e5 til full skjerm","use-cardboard-v2":"Bruk Cardboard Versjon 2",unmute:"Skru p\u00e5 lyd","enter-vr":"\u00c5pne VR Modus","enable-measure":"Start measuring","use-cardboard-info":"Du kan bruke hvilke some helst Google Cardboard kompatible headsett for \u00e5 se denne visningen i VR.","refresh-downloaded":"Last inn p\u00e5 nytt","use-default-cardboard":"Bruk Standard", "enable-audio-prompt":"Aktivere audio?"},"es-es":{mute:"Silenciar","cardboard-v1":"Si no esta seguro de que versi\u00f3n de Cardboard debe usar escoja la selecci\u00f3n de hotspot por defecto. Solo tendr\u00e1 que apuntar al hotspot y esperar para que se ejecute la acci\u00f3n.","download-tour":"Descargar el tour para reproducirlo sin conexi\u00f3n","change-to-drag-and-release":"Cambiar el modo de control a arrastrar y soltar",accept:"Aceptar","use-cardboard-v2":"Usar Cardboard v2","storage-not-provided-bookmark":"Almacenamiento persistente denagado. Intente a\u00f1adir la p\u00e1gina a los marcadores y recargarla.", "dont-display-again":"No volver a mostrar esta informaci\u00f3n","web-server-required":"Este tour virtual no puede reproducirse desde una unidad local. Por favor s\u00fabalo a internet y pruebe de nuevo.\nSi lo prefiere puede arrastrar el archivo html o la carpeta con el tour sobre el icono de la aplicaci\u00f3n Tour Viewer de su escritorio.",download:"Descargar","change-to-click-and-move":"Cambiar el modo de control a pulsar y mover",yes:"si","delete-downloaded":"Borrar","use-safari-for-vr":"Recomendamos Safari para ver este tour en modo VR", "exit-fullscreen":"Salir de pantalla completa",no:"no","download-failed":"La descarga ha fallado","giroscope-disabled-http":"Est\u00e1 accediendo a esta p\u00e1gina web por http por lo que el acceso al movimiento y la orientaci\u00f3n del dispositivo est\u00e1 deshabilitado, por favor acceda por https.","cookies-notice":"Esta p\u00e1gina usa cookies para recolectar estad\u00edsticas de uso. Para m\u00e1s informaci\u00f3n, visite la Pol\u00edtica de Cookies.","use-cardboard":"Usar Cardboard", "launch-default-browser":"Lanzar en el navegador por defecto","rotate-device":"Por favor, gire el dispositivo","exit-vr":"Salir de VR","storage-not-provided-launch-from-desktop":"Por favor lance el tour desde el escritorio para descargarlo.","disable-measure":"Stop measuring",cancel:"Cancel",downloading:"Descargando","cardboard-v2":"Si tiene unas gafas Cardboard v2, que vienen con un bot\u00f3n, puede apuntar al hotspot y pulsar el bot\u00f3n para que se ejecute su acci\u00f3n.","enable-video-audio-prompt":"\u00bfActivar v\u00eddeo y audio?", reject:"Rechazar",downloaded:"Este tour esta descargado para reproducirlo sin conexi\u00f3n.","samsung-internet-vr-app-info":"Si tiene unas gafas Gear VR compatibles con este dispositivo y tiene instalado Samsung Internet for VR puede usarlo para ver este contenido en VR, necesita hacer Samsung Internet su navegador por defecto.","samsung-internet-vr-info":"Si tiene unas gafas Gear VR compatibles con este dispositivo y tiene instalado Samsung Internet for VR puede usarlo para ver este contenido en VR, solo tiene que poner ahora el dispositivo en las gafas.", "enable-video-prompt":"\u00bfActivar v\u00eddeo?","giroscope-disabled-safari-request-permission":["El acceso al movimiento y la orientaci\u00f3n del dispositivo est\u00e1 deshabiltado para este sitio.","Para ver correctamente la p\u00e1gina por favor pulse Continuar y acepte la petici\u00f3n de permiso si se muestra."],"storage-not-provided-launch-from-homescreen":"Por favor lance el tour desde el icono de la pantalla de inicio para descargarlo.","enter-fullscreen":"Mostrar en pantalla completa", unmute:"Habilitar sonido","enter-vr":"Entrar al contenido VR","enable-measure":"Start measuring","use-cardboard-info":"Puede usar unas gafas compatibles con Google Cardboard para ver este contenido en VR.","refresh-downloaded":"Actualizar","use-default-cardboard":"Usar versi\u00f3n por defecto","enable-audio-prompt":"\u00bfActivar audio?"},"el-gr":{mute:"\u0391\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ae\u03c7\u03bf","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.", "download-tour":"Download Tour for offline playing","change-to-drag-and-release":"\u0391\u03bb\u03bb\u03ac\u03be\u03c4\u03b5 \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c3\u03cd\u03c1\u03b5\u03c4\u03b5 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b1\u03c0\u03b5\u03bb\u03b5\u03c5\u03b8\u03b5\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5",accept:"\u0391\u03c0\u03bf\u03b4\u03ad\u03c7\u03bf\u03bc\u03b1\u03b9",download:"Download", "storage-not-provided-bookmark":"Persistent storage denied. Try bookmarking this webpage and reloading it.","dont-display-again":"Don't display this info again","web-server-required":"This virtual tour cannot be played from a local drive. Please upload it to the internet and try again.\nIf you prefer, drag the htm file (or the entire folder of the tour) onto the icon of the TourViewer app.",cancel:"Cancel","change-to-click-and-move":"\u0391\u03bb\u03bb\u03ac\u03be\u03c4\u03b5 \u03c4\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03bc\u03b5\u03c4\u03b1\u03ba\u03b9\u03bd\u03b7\u03b8\u03b5\u03af\u03c4\u03b5", yes:"\u039d\u03b1\u03af","delete-downloaded":"Delete","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"\u0388\u03be\u03bf\u03b4\u03bf\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c0\u03bb\u03ae\u03c1\u03b7 \u03bf\u03b8\u03cc\u03bd\u03b7",no:"\u03cc\u03c7\u03b9","download-failed":"Download failed","giroscope-disabled-http":"You are accessing this webpage through http so your device's motion and orientation access and VR mode are disabled, please access it through https to enable them.", "cookies-notice":"\u0391\u03c5\u03c4\u03ae \u03b7 \u03b9\u03c3\u03c4\u03bf\u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af cookie \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03c3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae \u03c3\u03c4\u03b1\u03c4\u03b9\u03c3\u03c4\u03b9\u03ba\u03ce\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd \u03c7\u03c1\u03ae\u03c3\u03b7\u03c2. \u0393\u03b9\u03b1 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2, \u03b5\u03c0\u03b9\u03c3\u03ba\u03b5\u03c6\u03b8\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03a0\u03bf\u03bb\u03b9\u03c4\u03b9\u03ba\u03ae cookie .", "use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR",reject:"\u0391\u03c0\u03bf\u03c1\u03c1\u03af\u03c0\u03c4\u03c9","disable-measure":"Stop measuring",downloading:"Downloading","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03ae\u03c7\u03bf\u03c5 \u03ba\u03b1\u03b9 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf;", "storage-not-provided-launch-from-desktop":"Please relaunch the tour from the desktop icon to download.",downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.","samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.", "enable-video-prompt":"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf;","giroscope-disabled-safari-request-permission":["Your device's motion and orientation access and VR mode are disabled for this site.","To properly see this webpage, please click continue and accept the permission request if prompted."],"storage-not-provided-launch-from-homescreen":"Please relaunch the tour from the home screen icon to download.","enter-fullscreen":"\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03bb\u03ae\u03c1\u03b7 \u03bf\u03b8\u03cc\u03bd\u03b7", "use-cardboard-v2":"Use Cardboard v2",unmute:"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03ae\u03c7\u03bf\u03c5","enter-vr":"Enter VR content","enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"Refresh","use-default-cardboard":"Use Default","enable-audio-prompt":"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03ae\u03c7\u03bf\u03c5;"}, "da-dk":{mute:"Deaktiver lyd","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.","download-tour":"Download Tour for offline playing","change-to-drag-and-release":"Skift kontroltilstand for at tr\u00e6kke og slippe",accept:"Acceptere",download:"Download","storage-not-provided-bookmark":"Persistent storage denied. Try bookmarking this webpage and reloading it.","dont-display-again":"Don't display this info again", "web-server-required":"This virtual tour cannot be played from a local drive. Please upload it to the internet and try again.\nIf you prefer, drag the htm file (or the entire folder of the tour) onto the icon of the TourViewer app.",cancel:"Cancel","change-to-click-and-move":"Skift kontroltilstand for at klikke og flytte",yes:"Ja","delete-downloaded":"Delete","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"Afslut fuldsk\u00e6rm",no:"ingen","download-failed":"Download failed", "giroscope-disabled-http":"You are accessing this webpage through http so your device's motion and orientation access and VR mode are disabled, please access it through https to enable them.","cookies-notice":"Denne webside bruger cookies til at indsamle brugsstatistikker. For mere information, se venligst Cookiepolitik .","use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR",reject:"Afvise","disable-measure":"Stop measuring", downloading:"Downloading","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.","enable-video-audio-prompt":"Aktiv\u00e9r lyd og video?","storage-not-provided-launch-from-desktop":"Please relaunch the tour from the desktop icon to download.",downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.", "samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.","enable-video-prompt":"Aktiv\u00e9r video?","giroscope-disabled-safari-request-permission":["Your device's motion and orientation access and VR mode are disabled for this site.","To properly see this webpage, please click continue and accept the permission request if prompted."], "storage-not-provided-launch-from-homescreen":"Please relaunch the tour from the home screen icon to download.","enter-fullscreen":"Indtast fuldsk\u00e6rm","use-cardboard-v2":"Use Cardboard v2",unmute:"Aktiv\u00e9r lyd","enter-vr":"Enter VR content","enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"Refresh","use-default-cardboard":"Use Default","enable-audio-prompt":"Aktiv\u00e9r lyd?"},"pl-pl":{mute:"Wycisz", "cardboard-v1":"Je\u015bli nie masz pewno\u015bci, kt\u00f3rej wersji Cardboard u\u017cywasz, wybierz domy\u015blne sterowanie hotspotem. Nast\u0119pnie skieruj wzrok na hotspot i poczekaj na uruchomienie ich dzia\u0142ania.","download-tour":"Pobierz spacer do odtwarzania w trybie offline","change-to-drag-and-release":"Zmie\u0144 tryb na Przeci\u0105gnij i Upu\u015b\u0107",accept:"Zaakceptowa\u0107",cancel:"Anuluj","storage-not-provided-bookmark":"Odmowa zapisu w pami\u0119ci sta\u0142ej. Spr\u00f3buj doda\u0107 stron\u0119 do zak\u0142adek i za\u0142aduj j\u0105 ponownie.", "dont-display-again":"Nie wy\u015bwietlaj tego ponownie","web-server-required":"Nie mo\u017cna odtworzy\u0107 tego spaceru z dysku lokalnego. Prze\u015blij go do internetu i spr\u00f3buj ponownie.\nMo\u017cesz te\u017c przeci\u0105gn\u0105\u0107 plik htm (lub ca\u0142y folder spaceru) na ikon\u0119 aplikacji TourViewer.",download:"Pobierz","change-to-click-and-move":"Zmie\u0144 tryb na to Kliknij i Przenie\u015b",yes:"tak","delete-downloaded":"Usu\u0144","use-safari-for-vr":"Zalecamy Safari, jako przegl\u0105dark\u0119 spacer\u00f3w w trybie VR", "exit-fullscreen":"Wyjd\u017a z trybu pe\u0142nego ekranu",no:"nie","download-failed":"Pobieranie nie powiod\u0142o si\u0119","giroscope-disabled-http":"To jest dost\u0119p za po\u015brednictwem protoko\u0142u http, wi\u0119c dost\u0119p do ruchu i orientacji oraz tryb VR s\u0105 wy\u0142\u0105czone. Prze\u0142\u0105cz si\u0119\u00a0na protok\u00f3\u0142 https, aby je w\u0142\u0105czy\u0107.","cookies-notice":"Ta strona u\u017cywa plik\u00f3w cookie do zbierania statystyk u\u017cytkowania. Aby uzyska\u0107 wi\u0119cej informacji, odwied\u017a Zasady dotycz\u0105ce plik\u00f3w cookie.", "use-cardboard":"U\u017cyj Cardboard","launch-default-browser":"Uruchom w domy\u015blnej przegl\u0105darce","rotate-device":"Obr\u00f3\u0107 urz\u0105dzenie","exit-vr":"Wyjd\u017a z VR","storage-not-provided-launch-from-desktop":"Aby pobra\u0107, uruchom ponownie spacer klikaj\u0105c ikon\u0119 pulpitu.","disable-measure":"Stop measuring",downloading:"Pobieranie","cardboard-v2":"Je\u015bli masz okulary Cardboard v2, kt\u00f3re maj\u0105 przycisk, mo\u017cesz spojrze\u0107 na hotspot i nacisn\u0105\u0107 przycisk, aby uruchomi\u0107 ich dzia\u0142anie.", "enable-video-audio-prompt":"W\u0142\u0105czy\u0107 video i d\u017awi\u0119k?",reject:"Odrzuca\u0107",downloaded:"Spacer jest pobierany do odtwarzania w trybie offline.","samsung-internet-vr-app-info":"Je\u015bli masz okulary zgodne z Gear VR i zainstalowa\u0142e\u015b Samsung Internet for VR, mo\u017cesz je u\u017cy\u0107 do przegl\u0105dania zawarto\u015bci w VR. Musisz w tym przypadku ustawi\u0107 Samsung Internet jako domy\u015bln\u0105 przegl\u0105dark\u0119.","samsung-internet-vr-info":"Je\u015bli masz okulary Gear VR i zainstalowa\u0142e\u015b Samsung Internet for VR, to mo\u017cesz u\u017cy\u0107 ich do przegl\u0105dania zawarto\u015bci w VR. Umie\u015b\u0107 teraz telefon w okularach Gear VR.", "enable-video-prompt":"W\u0142\u0105czy\u0107 video?","giroscope-disabled-safari-request-permission":["Dost\u0119p do funkcji ruchu i orientacji oraz tryb VR s\u0105 wy\u0142\u0105czone dla tej strony.","Aby poprawnie wy\u015bwietli\u0107 stron\u0119, kliknij kontynuuj i zaakceptuj wszystkie zgody."],"storage-not-provided-launch-from-homescreen":"Aby pobra\u0107, uruchom ponownie spacer klikaj\u0105c ikon\u0119 strony g\u0142\u00f3wnej.","enter-fullscreen":"Uruchom pe\u0142ny ekran","use-cardboard-v2":"U\u017cyj Cardboard v2", unmute:"Wy\u0142\u0105cz Wycisz","enter-vr":"Wejd\u017a do VR","enable-measure":"Start measuring","use-cardboard-info":"Do wy\u015bwietlania w VR mo\u017cesz u\u017cy\u0107 oklular\u00f3w zgodnych z Google Cardboard.","refresh-downloaded":"Od\u015bwie\u017c","use-default-cardboard":"U\u017cyj Domy\u015blnych","enable-audio-prompt":"W\u0142\u0105czy\u0107 d\u017awi\u0119k?"},"fr-fr":{mute:"Couper le son","cardboard-v1":"Si vous n'\u00eates pas s\u00fbr de la version de votre Cardboard, s\u00e9lectionnez le contr\u00f4le de hotspot par d\u00e9faut. Ensuite, vous n'aurez qu'\u00e0 fixer un hotspot du regard et attendre que l'action se d\u00e9clenche.", "download-tour":"T\u00e9l\u00e9charger la visite pour jouer hors ligne","change-to-drag-and-release":"Changer le mode de contr\u00f4le en glisser-d\u00e9poser",accept:"Accepter",cancel:"Annuler","storage-not-provided-bookmark":"Stockage persistant refus\u00e9. Essayez de mettre cette page Web en signet et de la recharger.","dont-display-again":"Ne plus afficher ces informations","web-server-required":"Cette visite virtuelle ne peut pas \u00eatre lue \u00e0 partir d'un lecteur local. Veuillez la t\u00e9l\u00e9charger sur Internet et r\u00e9essayer.\nSi vous pr\u00e9f\u00e9rez, faites glisser le fichier htm (ou l'int\u00e9gralit\u00e9 du dossier de la visite) sur l'ic\u00f4ne de l'application TourViewer.", download:"T\u00e9l\u00e9charger","change-to-click-and-move":"Changer le mode de contr\u00f4le pour cliquer et d\u00e9placer",yes:"Oui","delete-downloaded":"Supprimer","use-safari-for-vr":"Nous recommandons Safari pour visionner cette visite en mode VR","exit-fullscreen":"Quitter le mode plein \u00e9cran",no:"Non","download-failed":"\u00c9chec du t\u00e9l\u00e9chargement","giroscope-disabled-http":"Vous acc\u00e9dez \u00e0 cette page Web via http, donc l'acc\u00e8s au mouvement et \u00e0 l'orientation de votre appareil et le mode VR sont d\u00e9sactiv\u00e9s, veuillez y acc\u00e9der via https pour les activer.", "cookies-notice":"Cette page Web utilise des cookies pour collecter des statistiques d'utilisation. Pour plus d'informations, veuillez consulter la Politique en mati\u00e8re de cookies.","use-cardboard":"Utiliser le Cardboard","launch-default-browser":"Lancer dans le navigateur par d\u00e9faut","rotate-device":"Veuillez faire pivoter votre appareil","exit-vr":"Quitter la r\u00e9alit\u00e9 virtuelle","storage-not-provided-launch-from-desktop":"Veuillez relancer la visite \u00e0 partir de l'ic\u00f4ne du bureau pour t\u00e9l\u00e9charger.", "disable-measure":"Arr\u00eatez de mesurer",downloading:"T\u00e9l\u00e9chargement","cardboard-v2":"Si vous disposez d'un casque Cardboard v2, qui est \u00e9quip\u00e9 d'un bouton, vous pouvez fixer un hotspot du regard et appuyer sur le bouton pour d\u00e9clencher son action.","enable-video-audio-prompt":"Activer la vid\u00e9o et l'audio?",reject:"Rejeter",downloaded:"Cette visite est t\u00e9l\u00e9charg\u00e9e pour jouer hors ligne.","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.", "samsung-internet-vr-info":"Si vous disposez d'un casque Gear VR compatible avec cet appareil et que vous avez install\u00e9 Samsung Internet pour VR, vous pouvez \u00e9galement l'utiliser pour visualiser ce contenu en r\u00e9alit\u00e9 virtuelle. Il vous suffit de placer maintenant le t\u00e9l\u00e9phone mobile sur le casque.","enable-video-prompt":"Activer la vid\u00e9o?","giroscope-disabled-safari-request-permission":["L'acc\u00e8s au mouvement et \u00e0 l'orientation de votre appareil et le mode VR sont d\u00e9sactiv\u00e9s pour ce site.", "Pour voir correctement cette page Web, veuillez cliquer sur Continuer et accepter la demande d'autorisation si vous y \u00eates invit\u00e9."],"storage-not-provided-launch-from-homescreen":"Veuillez relancer la visite \u00e0 partir de l'ic\u00f4ne de l'\u00e9cran d'accueil pour t\u00e9l\u00e9charger.","enter-fullscreen":"Passer en mode plein \u00e9cran","use-cardboard-v2":"Utiliser le Cardboard v2",unmute:"R\u00e9tablir le son","enter-vr":"Entrez le contenu VR","enable-measure":"Commencer \u00e0 mesurer", "use-cardboard-info":"Vous pouvez utiliser n'importe quel casque Google Cardboard compatible pour visualiser ce contenu en r\u00e9alit\u00e9 virtuelle.","refresh-downloaded":"Rafra\u00eechir","use-default-cardboard":"Utiliser par d\u00e9faut","enable-audio-prompt":"Activer le son?"},"de-de":{mute:"Deaktiviere Audio","cardboard-v1":"Wenn Sie sich nicht sicher sind, welche Cardboard-Version Sie verwenden, w\u00e4hlen Sie die Standard-Hotspot-Steuerung. Sie schauen dann einfach auf einen Hotspot und warten, bis die jeweilige Aktion ausgel\u00f6st wird.", "download-tour":"Tour zum Offline-Abspielen herunterladen","giroscope-disabled-safari-request-permission":["Der Bewegungs- und Orientierungszugriff, sowie VR Modus Ihres Ger\u00e4ts ist f\u00fcr diese Seite deaktiviert.","Um diese Webseite korrekt anzuzeigen, klicken Sie auf Weiter und akzeptieren Sie die Erlaubnisanfrage, wenn Sie dazu aufgefordert werden."],accept:"Akzeptieren",download:"Download",downloading:"Downloading","dont-display-again":"Diese Info nicht mehr anzeigen","web-server-required":"Diese Virtual Tour kann nicht von einem lokalen Laufwerk abgespielt werden. Laden Sie Ihre Tour ins Internet und versuchen Sie es erneut.\nAlternativ, ziehen Sie die htm Datei (oder den ganzen Tour Ordner) auf das Icon der Tour Viewer App, um die Tour direkt lokal abzuspielen.", cancel:"Abbrechen","change-to-click-and-move":"\u00c4ndern Sie den Steuerungsmodus, um zu klicken und zu drehen",yes:"ja","delete-downloaded":"L\u00f6schen","use-safari-for-vr":"Wir empfehlen Safari, um diese Tour im VR-Modus zu sehen","exit-fullscreen":"Vollbild verlassen",no:"nein","storage-not-provided-bookmark":"Dauerhafte Speicherung verweigert. Versuchen Sie, diese Seite als Lesezeichen zu speichern und erneut zu laden.","download-failed":"Download fehlgeschlagen","giroscope-disabled-http":"Der Bewegungs- und Ausrichtungsszugriff Ihres Ger\u00e4ts ist f\u00fcr diese Webseite deaktiviert. Greifen Sie bitte \u00fcber https darauf zu.", "cookies-notice":"Diese Webseite verwendet Cookies, um Nutzungsstatistiken zu sammeln. Weitere Informationen finden Sie in der Cookie-Richtlinie.","use-cardboard":"Cardboard verwenden","launch-default-browser":"Im Standardbrowser starten","rotate-device":"Bitte drehen Sie Ihr Ger\u00e4t","exit-vr":"VR verlassen",reject:"Ablehnen","disable-measure":"Messung beenden","change-to-drag-and-release":"\u00c4ndern Sie den Steuerungsmodus zu Ziehen und Loslassen","cardboard-v2":"Wenn Sie ein Cardboard v2-Headset haben, das mit einer Taste ausgestattet ist, k\u00f6nnen Sie auf einen Hotspot blicken und die Taste dr\u00fccken, um dessen Aktion auszul\u00f6sen.", "enable-video-audio-prompt":"Video und Audio aktivieren?","storage-not-provided-launch-from-desktop":"Bitte starten Sie die Tour erneut \u00fcber das Desktop-Symbol, um sie herunterzuladen.",downloaded:"Diese Tour ist zum Offline-Abspielen heruntergeladen.","samsung-internet-vr-app-info":"Wenn Sie ein Gear VR-Headset haben, das mit diesem Ger\u00e4t kompatibel ist, und Sie Samsung Internet f\u00fcr VR installiert haben, k\u00f6nnen Sie es auch verwenden, um diese Inhalte in VR anzusehen. Machen Sie dazu Samsung Internet zu Ihrem Standardbrowser.", "samsung-internet-vr-info":"Wenn Sie ein Gear VR-Headset haben, das mit diesem Ger\u00e4t kompatibel ist, und Sie Samsung Internet f\u00fcr VR installiert haben, k\u00f6nnen Sie es auch verwenden, um diese Inhalte in VR zu sehen. Setzen Sie dazu nun das Mobiltelefon auf das Headset.","enable-video-prompt":"Video aktivieren?","storage-not-provided-launch-from-homescreen":"Bitte starten Sie die Tour erneut \u00fcber das Symbol auf dem Startbildschirm, um sie herunterzuladen.","enter-fullscreen":"Vollbildmodus aktivieren", "use-cardboard-v2":"Cardboard v2 verwenden",unmute:"Audio aktivieren","enter-vr":"VR Inhalt eingeben","enable-measure":"Messung beginnen","use-cardboard-info":"Sie k\u00f6nnen jedes kompatible Google Cardboard-Headset verwenden, um diese Inhalte in VR zu sehen.","refresh-downloaded":"Aktualisieren","use-default-cardboard":"Standard verwenden","enable-audio-prompt":"Audio aktivieren?"},"tr-tr":{mute:"Sesi devre d\u0131s\u0131 b\u0131rakmak","cardboard-v1":"If you are not sure, which Cardboard version you're using, select the default hotspot control. You'll then simply gaze at a hotspot and wait until the action is triggered.", "download-tour":"Download Tour for offline playing","change-to-drag-and-release":"S\u00fcr\u00fckleyip b\u0131rakmak i\u00e7in kontrol modunu de\u011fi\u015ftirin",accept:"Kabul etmek",download:"Download","storage-not-provided-bookmark":"Persistent storage denied. Try bookmarking this webpage and reloading it.","dont-display-again":"Don't display this info again","web-server-required":"This virtual tour cannot be played from a local drive. Please upload it to the internet and try again.\nIf you prefer, drag the htm file (or the entire folder of the tour) onto the icon of the TourViewer app.", cancel:"Cancel","change-to-click-and-move":"T\u0131klamak ve ta\u015f\u0131mak i\u00e7in kontrol modunu de\u011fi\u015ftirin",yes:"evet","delete-downloaded":"Delete","use-safari-for-vr":"We recommend Safari to view this tour in VR mode","exit-fullscreen":"Tam ekrandan \u00e7\u0131k",no:"hay\u0131r","download-failed":"Download failed","giroscope-disabled-http":"You are accessing this webpage through http so your device's motion and orientation access and VR mode are disabled, please access it through https to enable them.", "cookies-notice":"Bu web sayfas\u0131, kullan\u0131m istatistiklerini toplamak i\u00e7in tan\u0131mlama bilgileri kullan\u0131r. Daha fazla bilgi i\u00e7in l\u00fctfen \u00c7erez Politikas\u0131n\u0131 ziyaret edin.","use-cardboard":"Use Cardboard","launch-default-browser":"Launch in default browser","rotate-device":"Please rotate your device","exit-vr":"Exit VR",reject:"Reddet","disable-measure":"Stop measuring",downloading:"Downloading","cardboard-v2":"If you have a Cardboard v2 headset, which comes with a button, you can gaze at a hotspot and press the button to trigger its action.", "enable-video-audio-prompt":"Ses ve video etkinle\u015ftirilsin mi?","storage-not-provided-launch-from-desktop":"Please relaunch the tour from the desktop icon to download.",downloaded:"This tour is downloaded for offline playing.","samsung-internet-vr-app-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you need to make Samsung Internet your default browser.","samsung-internet-vr-info":"If you have a Gear VR headset compatible with this device and you have installed Samsung Internet for VR you can also use it to view this content in VR, you just need to put the mobile phone on the headset now.", "enable-video-prompt":"Video aktif edilsin mi?","giroscope-disabled-safari-request-permission":["Your device's motion and orientation access and VR mode are disabled for this site.","To properly see this webpage, please click continue and accept the permission request if prompted."],"storage-not-provided-launch-from-homescreen":"Please relaunch the tour from the home screen icon to download.","enter-fullscreen":"Tam ekran yap","use-cardboard-v2":"Use Cardboard v2",unmute:"Sesi etkinle\u015ftir","enter-vr":"Enter VR content", "enable-measure":"Start measuring","use-cardboard-info":"You can use any compatible Google Cardboard headset to view this content in VR.","refresh-downloaded":"Refresh","use-default-cardboard":"Use Default","enable-audio-prompt":"Ses aktif edilsin mi?"}}}); define("ps",["require","lO","iN","mO"],function(a){function e(d){return m[b][d]||m.en[d]||d}var k=a("lO"),m=a("iN"),l=a("mO"),c;for(c in m)m[c.substr(0,2)]=m[c];m.en["giroscope-disabled-safari-toggle-on"]='
Your device\'s motion and orientation access and VR mode are disabled for this site.
\n
To properly see this webpage, please enable it:
\n
    \n
  • Access you device\'s settings: "Settings > Safari > Privacy & Security" and toggle on: "Motion & Orientation Access".
  • \n
  • Refresh the browser.
  • \n
';m["zh-hk"]= m["zh-mo"]=m["zh-tw"];m.no=m.nn;var h=function(){var d=window.navigator,f=["language","browserLanguage","systemLanguage","userLanguage"],n,q,p=[];(n=l.getQueryParameter("language"))&&p.push(n.toLowerCase());var r=d.languages;if(Array.isArray(r))for(n=0;ng&&this.Txa();this.Cz?(this.Cz.gain.value=g,this.U.volume=1):this.U.volume=g;this.U.muted=0==g};e.prototype.Gz=function(){var g=this.U.currentSrc||this.U.children.length&&this.U.children[0].src||"";l.eB(g)&&(g=void 0);return g};return e});define("io",["require"],function(){return{eo:"video",TJa:"audio"}}); define("nJ","require lO pu lr iv cH gD w mO bz hA".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("lr"),l=a("iv"),c=a("cH"),h=a("gD"),g=a("w"),b=a("mO"),d=a("bz"),f=a("hA"),n=e.extend(h,function(q){h.call(this);this.U=q;this.$D=this.$D.bind(this);this.nw=this.nw.bind(this);this.Xl=this.Xl.bind(this);this.dE=this.dE.bind(this);this.Yj=this.Yj.bind(this);this.Zl=this.Zl.bind(this);this.Gi=this.Gi.bind(this);this.ht=this.ht.bind(this);this.oR=this.oR.bind(this);this.U.addEventListener("ended",this.Xl, !0);this.U.addEventListener("pause",this.Zl,!1);this.U.addEventListener("stalled",this.Zl,!1);this.U.addEventListener("waiting",this.Zl,!1);this.U.addEventListener("canplay",this.$D,!0);this.U.addEventListener("canplaythrough",this.nw,!1);this.U.addEventListener("loadedmetadata",this.Yj,!0);this.U.addEventListener("play",this.Gi,!1);this.U.addEventListener("playing",this.ht,!1);this.U.addEventListener("error",this.dE,!1);this.u9=!1;this.C=m.V;this.lJ=this.mi=null;f.bind(k.ba,this.s1a,this)});n.prototype.clear= function(){this.U&&(this.U.removeEventListener("ended",this.Xl,!0),this.U.removeEventListener("pause",this.Zl,!1),this.U.removeEventListener("stalled",this.Zl,!1),this.U.removeEventListener("waiting",this.Zl,!1),this.U.removeEventListener("canplay",this.$D,!0),this.U.removeEventListener("canplaythrough",this.nw,!1),this.U.removeEventListener("loadedmetadata",this.Yj,!0),this.U.removeEventListener("play",this.Gi,!1),this.U.removeEventListener("error",this.dE,!1),this.U=null)};n.prototype.play=function(){this.U.log("PlaybackController", "play");this.lJ=m.PLAYING;this.$P()};n.prototype.stop=function(){this.U.log("PlaybackController","stop");this.lJ=m.V;this.$P()};n.prototype.getState=function(){return this.mi||this.C};n.prototype.JF=function(){return this.U.readyState==this.U.HAVE_NOTHING||this.U.readyState==this.U.HAVE_METADATA||0===this.U.currentTime?!1:!0};n.prototype.$P=function(){!this.mi&&this.lJ&&(this.mi=this.lJ,this.lJ=null,this.mi==m.PLAYING?this.qea():this.pea())};n.prototype.s1a=function(){if(f.visible)this.U.log("PlaybackController", "visibile changed to true, setting state to "+this.C),this.mi=this.C,this.mi==m.PLAYING?this.qea():this.pea();else if(!this.U.paused){this.U.log("PlaybackController","paused by visibile changed to false");var q=this.U.pause();q&&q["catch"](this.dE)}};n.prototype.Gz=function(){return this.U.currentSrc||this.U.children.length&&this.U.children[0].src||""};n.prototype.qea=function(){var q=this.Gz();this.w_(q&&!b.eB(q));this.zV=g.browser()==g.nh;this.U.paused?(this.U.log("PlaybackController","startPlaying calling play"), this.U.muted=!0,this.U.log("PlaybackController","this._media.play()"),(q=this.U.play())&&q["catch"](this.dE)):(this.U.log("PlaybackController","startPlaying already playing"),this.Gi())};n.prototype.ht=function(){this.U.log("PlaybackController","onPlaying event received. Visible: "+f.visible)};n.prototype.Gi=function(){this.mi==m.PLAYING?(this.U.log("PlaybackController","onPlay event received when waiting to play"),this.mi=null,this.C=m.PLAYING,this.trigger(new c(n.Y5)),this.$P()):this.U.log("PlaybackController", "onPlay event received. Visible: "+f.visible)};n.prototype.pea=function(){this.w_(!1);this.zV=!1;if(this.U.paused)this.U.log("PlaybackController","startPausing already paused"),this.Zl();else{this.U.log("PlaybackController","startPausing calling pause");var q=this.U.pause();q&&q["catch"](this.dE)}};n.prototype.Zl=function(){this.mi==m.V?(this.U.log("PlaybackController","onPause event received when waiting to stop"),this.mi=null,this.C=m.V,this.$P()):f.visible?(this.U.log("PlaybackController","onPause event received without calling to pause"), (this.C==m.PLAYING&&!this.mi||this.mi==m.PLAYING)&&!this.U.hasAttribute("loop")&&!isNaN(this.U.duration)&&this.U.currentTime==this.U.duration&&0=this.U.HAVE_ENOUGH_DATA&&void 0!==this.TI){this.U.log("TimeController","updateCurrentTime when can play through set time to: "+this.TI);try{this.U.currentTime=this.TI}catch(g){}this.TI=void 0}};h.prototype.jf=function(){this.trigger(new k(h.Rf))}; h.prototype.eZ=function(){if(l.WAa()&&!l.u5a()&&!this.U.paused&&this.U.readyState>=this.U.HAVE_ENOUGH_DATA){var g=(new Date).getTime();this.UX||(this.UX=g);this.aba&&500this.NM){this.NM=void 0;try{this.U.currentTime-=.01}catch(b){}}this.jf()};h.prototype.Yda=function(g){!!this.SE!=g&&(this.SE?(clearInterval(this.SE),this.SE=null):this.SE=setInterval(this.jf,16))};h.prototype.Gz=function(){return this.U.currentSrc|| this.U.children.length&&this.U.children[0].src||""};h.Rf="time update";h.Wi="duration update";return h}); define("mj","require jquery.mod lO gn w nb mO".split(" "),function(a){function e(){}a("jquery.mod");var k=a("lO"),m=a("gn"),l=a("w"),c=a("nb");a=a("mO");e.fga=!1;e.A$a=function(){e.fga=!0};e.hTa=function(){window.MediaSource=window.MediaSource||window.acb;return window.MediaSource&&"function"===typeof window.MediaSource.isTypeSupported&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')};e.rTa=function(){if(l.browser()==l.nh){var b=l.cia();if(10<=b&&11>b||11.3<=b)return!0}return!1}; e.iTa=function(){return l.browser()==l.Dj||l.browser()==l.nh?!0:!1};var h;e.ZAa=function(b){try{return h||(h=document.createElement("audio")),!!h.canPlayType(b).replace(/^no$/,"")}catch(d){}return!1};var g;e.yK=function(b){try{return g||(g=document.createElement("video"),g.setAttribute("webkit-playsinline","true"),g.setAttribute("playsinline","true")),!!g.canPlayType(b).replace(/^no$/,"")}catch(d){}return!1};e.o2a=function(){return l.browser()==l.nh?15<=l.cia()||m?!0:!1:!0};e.jTa=function(){try{if(document.createElement("canvas").getContext("webgl"))return!0}catch(b){}try{if(document.createElement("canvas").getContext("experimental-webgl"))return!0}catch(b){}return!1}; e.HIa=function(b,d,f,n){if(c.MLa)return!0;if(l.Fd()==l.ui)if(!f||30=b&&1584>=d)return!0}else{if(4096>=b&&2048>=d)return!0}else if((l.gL()||l.PF())&&!l.Nr())if("h264"==n){if(4400>=b&&4400>=d||6200>=b&&3100>=d)return!0}else{if(5760>=b&&5760>=d||8192>=b&&4096>=d)return!0}else if(l.p6a()&&!l.Nr())if(!f||30=b&&2880>=d||4096>=b&&2048>=d)return!0}else{if(4096>=b&&4096>=d||5760>=b&&2880>=d||2880>=b&&5760>=d)return!0}else if((l.gL()||l.PF())&&l.mia()){if("h264"==n&&(5760>=b&&5760>= d||7680>=b&&3840>=d)||3840>=b&&2160>=d)return!0}else if(l.iL())if("h264"==n){if(5760>=b&&5760>=d||7680>=b&&3840>=d)return!0}else{if(4400>=b&&2200>=d)return!0}else if(l.rb()){if(3840>=b&&2160>=d)return!0}else if(4096>=b&&2048>=d)return!0;return!1};e.q2a=function(){return l.iL()||(l.gL()||l.PF())&&l.pc()==l.Hp||!l.rb()&&e.fga&&l.browser()==l.Lm?!0:!1};e.GIa=function(b){return e.HIa(b.get("width"),b.get("height"),b.get("framerate"),b.get("codec"))};e.p2a=function(){return e.fga?!0:!1};e.aGa=!c.CKa&& c.BKa?1:2;e.r2a=function(){return void 0!==c.Tla?c.Tla:l.PF()||l.iL()||l.k6a()||l.QDa()||l.gL()&&!l.Nr()||!l.Af()&&l.Fd()!=l.TB&&l.Fd()!=l.ui?!0:!1};e.sab=function(b,d){return e.HIa(b,d,30)};e.log=function(){k.log("webgl: "+e.ks);k.log("html5 audio: "+e.xDa);k.log("html5 video: "+e.ADa)};e.XZa=function(){return["webgl:"+e.ks,"html5audio:"+e.xDa,"html5video:"+e.ADa].join(" ")};e.zDa=e.ZAa('audio/ogg; codecs="vorbis"');e.yDa=e.ZAa("audio/mpeg");e.xDa=e.zDa||e.yDa;e.aia=e.yK('video/ogg; codecs="theora"'); e.yK('video/mp4; codecs="avc1.42E01E"');e.bia=e.yK('video/webm; codecs="vp8, vorbis"');e.E5a=e.yK('video/mp4; codecs="hev1"');e.B2=e.yK("video/mp4");e.F5a=e.yK("video/quicktime");e.G5a=e.rTa();e.kDa=e.iTa();e.m5a=e.kDa||e.B2&&e.hTa();e.ADa=e.aia||e.B2||e.bia;e.ks=e.jTa();a.wj("debug")&&a.wj("capabilities")&&e.log();e.summary=e.XZa();return e}); define("cE",["require","exports","mO"],function(a,e,k){e=function(){function l(){this.X2=null;this.h1=[]}l.prototype.initialize=function(c){this.X2=k.my(c);this.yU=this.yU.bind(this);this.update()};l.prototype.load=function(c,h){this.h1.push({call:c,context:h||window});this.lL||(this.lL=this.O1());this.update()};l.prototype.Fh=function(){return void 0!==this.lL};l.prototype.update=function(){0u.indexOf(v.item())&&v.R3a()});this.Cd(0=Math.abs(x-this.aW)};w.prototype.i8=function(){this.LH&&(this.aW=void 0,this.LH=!1,d.browser()!=d.Dj&&(this.S.width=0,this.S.height=0,this.S=null))};w.prototype.wn=function(){this.Ub=this.ac.pi();this.Vea()};w.prototype.jf=function(){var x=this.ac.pi();0!==x&&(this.Ub!= x&&this.wn(),this.Hf=this.ac.getCurrentTime(),d.Fd()==d.ui&&0this.Ub-.15&&!this.hO()&&!this.Ek?this.AN():d.browser()==d.Dj&&0this.Ub-.05&&!this.hO()&&!this.Ek?this.AN():d.browser()==d.Lm&&0this.Ub-.05&&!this.hO()&&this.Ek&&this.AN(),this.gR())};w.prototype.Ei=function(){this.ho=this.ac.oS().map(function(x){for(var y=null,z=0;z"),this.S.css({position:"absolute",left:0, top:0}),this.Vb().append(this.S))};c.prototype.ab=function(){var h=!1;this.L("color")&&(h=!0,this.T("color"));this.L("direction")&&(h=!0,this.T("direction"));this.zv&&(h=!0,this.zv=!1);if(h){h=this.wf();var g=this.vf(),b=this.B("color"),d=this.B("direction"),f=[.5*h,0,h];d=d==c.t5?[g,0,0]:[0,g,g];var n=this.S.get(0);n.width=h;n.height=g;n=n.getContext("2d");n.clearRect(0,0,h,g);n.beginPath();n.moveTo(f[0],d[0]);n.lineTo(f[1],d[1]);n.lineTo(f[2],d[2]);n.fillStyle=b;n.fill()}l.prototype.ab.call(this)}; c.t5="down";c.Abb="up";return c}); define("ic","require lO cH ny bh pu d hf oN pQ dE".split(" "),function(a){var e=a("lO"),k=a("cH"),m=a("ny"),l=a("bh"),c=a("pu"),h=a("d"),g=a("hf"),b=a("oN"),d=a("pQ"),f=a("dE");a=e.extend(b,function(){b.call(this);this.Me("DropDownButton");this.Xy=this.Oa=null;this.Waa=!0;this.set("ariaRole","dropdown");this.set("autoRolledOver",!0);this.set("autoPressed",!0);this.set("childrenInteractionEnabled",!1);this.set("contentOpaque",!0);this.set("cursor",l.Fe);this.bind(c.pa,this.z9,this)});a.prototype.yb= function(){b.prototype.yb.call(this);this.h("arrowColor","#000000");this.h("arrowBeforeLabel");this.h("arrowWidth",9);this.h("arrowHeight",5);this.h("arrowGap",5);this.h("shadow",!1);this.h("layout",h.Eg);this.h("verticalAlign",m.se);this.h("borderRadius",5);this.h("borderColor","#AAAAAA");this.h("borderSize",1);this.h("backgroundColor",["#FAFAFA","#E5E5E5"]);this.h("backgroundColorRatios",[0,1]);this.h("backgroundColorDirection","vertical");this.h("paddingLeft",5);this.h("paddingTop",5);this.h("paddingRight", 5);this.h("paddingBottom",5);this.h("fontFamily");this.h("fontSize");this.h("fontColor","#555555");this.h("fontWeight");this.h("fontStyle");this.h("textDecoration");this.h("textShadowColor");this.h("textShadowHorizontalLength");this.h("textShadowVerticalLength");this.h("textShadowBlurRadius");this.h("textShadowOpacity");this.A("rollOverBorderColor",g.aa,"borderColor");this.A("rollOverArrowColor",g.aa,"arrowColor");this.A("rollOverBackgroundColor",g.aa,"backgroundColor");this.A("rollOverBackgroundColorRatios", g.aa,"backgroundColorRatios");this.A("rollOverShadow",g.aa,"shadow");this.A("pressedBorderColor",g.Ab,"borderColor");this.A("pressedArrowColor",g.Ab,"arrowColor");this.A("pressedBackgroundColor",g.Ab,"backgroundColor");this.A("pressedBackgroundColorRatios",g.Ab,"backgroundColorRatios");this.A("pressedShadow",g.Ab,"shadow");this.A("pressedRollOverBorderColor",g.jc,"borderColor");this.A("pressedRollOverArrowColor",g.jc,"arrowColor");this.A("pressedRollOverBackgroundColor",g.jc,"backgroundColor");this.A("pressedRollOverBackgroundColorRatios", g.jc,"backgroundColorRatios");this.A("pressedRollOverShadow",g.jc,"shadow");this.A("pressedBorderColor",g.ia,"borderColor");this.A("pressedArrowColor",g.ia,"arrowColor");this.A("pressedBackgroundColor",g.ia,"backgroundColor");this.A("pressedBackgroundColorRatios",g.ia,"backgroundColorRatios");this.A("pressedShadow",g.ia,"shadow")};a.prototype.set=function(n,q){"label"==n&&this.get("label")!=q&&(this.Waa=!0,this.xe());b.prototype.set.call(this,n,q)};a.prototype.Ib=function(){b.prototype.Ib.call(this); this.Oa||(this.Oa=new f,this.Oa.set("width","100%"),this.Xa(this.Oa));this.Xy||(this.Xy=new d,this.Xy.set("direction",d.t5),this.Xa(this.Xy))};a.prototype.z9=function(){this.open();this.trigger(new k(c.OPEN))};a.prototype.open=function(){this.unbind(c.pa,this.z9,this);this.vQ(!0)};a.prototype.close=function(){this.bind(c.pa,this.z9,this);this.vQ(!1)};a.prototype.nv=function(){return this.Oa&&this.Oa.get("text")||b.prototype.nv.call(this)};a.prototype.ab=function(){if(this.Waa){var n=this.get("label"); this.Oa.set("text",n);this.Waa=!1}this.vc("horizontalAlign fontFamily fontSize fontColor fontWeight fontStyle textDecoration textShadowColor textShadowHorizontalLength textShadowVerticalLength textShadowBlurRadius textShadowOpacity".split(" "),{},[this.Oa],!0,!0);this.L("arrowGap")&&(this.set("gap",this.B("arrowGap")),this.T("arrowGap"));this.L("arrowColor")&&(this.Xy.set("color",this.B("arrowColor")),this.T("arrowColor"));this.L("arrowBeforeLabel")&&(1==this.B("arrowBeforeLabel")?this.Un(this.Xy, 0):this.Un(this.Oa,0),this.T("arrowBeforeLabel"));this.L("arrowWidth")&&(this.Xy.set("width",this.B("arrowWidth")),this.T("arrowWidth"));this.L("arrowHeight")&&(this.Xy.set("height",this.B("arrowHeight")),this.T("arrowHeight"));b.prototype.ab.call(this)};return a});define("hN",["require","es","lO","oN","d"],function(a){var e=a("es"),k=a("lO"),m=a("oN");a=a("d");var l=k.extend(m,function(){m.call(this)});l.Ec={layout:a.Rh};e.defaults(l.Ec,m.Ec);l.prototype.yb=function(){this.so(l.Ec)};return l}); define("lV","require lO cH ny bh ij pu oN hN dE".split(" "),function(a){var e=a("lO"),k=a("cH"),m=a("ny"),l=a("bh"),c=a("ij"),h=a("pu"),g=a("oN"),b=a("hN"),d=a("dE");a=e.extend(g,function(){g.call(this);this.Me("DropDownPopup");this.set("ariaRole","listbox");this.yd=null;this.HV=!1;this.Fb=null;this.vO=[];this.FA=!0});a.prototype.ACa=function(){return this.Fb.nb().map(function(f){return f.ie()})};a.prototype.open=function(f){this.yd=f;this.HV=!0;this.Db().Un(this,this.Db().nb().length-1);this.set("overIndex", -1);this.set("visible",!0);this.bind(h.fb,this.$d,this);this.Db().bind(h.Eb,this.et,this);this.Db().bind(h.uc,this.Lc,this)};a.prototype.close=function(){this.yd=null;this.HV=!0;this.set("visible",!1);this.Fb.set("overflow",c.kH);this.Fb.set("contentOpaque",!0);this.unbind(h.fb,this.$d,this);this.Db().unbind(h.Eb,this.et,this);this.Db().bind(h.uc,this.Lc,this)};a.prototype.Ib=function(){g.prototype.Ib.call(this);this.Fb||(this.Fb=new b,this.Fb.set("overflow",c.kH),this.Fb.bind(h.uc,this.Lc,this), this.Fb.bind(h.Yp,this.xA,this),this.Xa(this.Fb))};a.prototype.Lc=function(){this.Cza()};a.prototype.$d=function(){this.Hda=!1};a.prototype.xA=function(){this.Hda=!0};a.prototype.et=function(){-1!=this.get("overIndex")||this.Hda&&this.Ao||this.trigger(new k(h.UG));this.Hda=!1};a.prototype.mVa=function(f){this.set("overIndex",this.x$(f.source))};a.prototype.nVa=function(f){f=this.x$(f.source);this.get("overIndex")==f&&this.set("overIndex",-1)};a.prototype.lVa=function(f){f=this.x$(f.source);this.set("overIndex", f);this.set("selectedIndex",f);this.trigger(new k(h.Zp))};a.prototype.x$=function(f){for(var n=0;n=w?(this.FA=!0, this.Fb.set("top",n.top+p+r),this.Fb.set("maxHeight",v)):(this.FA=!1,this.Fb.set("top",n.top-w+r),this.Fb.set("maxHeight",w)),this.Fb.set("overflow",c.Yp));p=x==m.Re?n.left+Math.round(.5*(q-t)):x==m.sb?n.left+q-t:n.left;0>p?p=n.left:n.left+t>f.Ya()&&(p=n.left+q-t);this.Fb.set("left",p);this.hza()}};a.prototype.hza=function(){var f=this.B("popUpBorderRadius");this.Fb.qa({borderTopRadius:this.FA?0:f,borderBottomRadius:this.FA?f:0});for(var n=this.Fb.nb(),q=0;q=f.length&&(d=-1);this.set("selectedIndex", d);this.Ki.set("items",this.B("items"));this.Ki.set("selectedIndex",this.B("selectedIndex"));this.T("items");this.T("selectedIndex");this.cp&&(this.cp=!1,this.trigger(new k(m.ba)))}b&&(b=this.B("label"),b||(d=this.B("selectedIndex"),b=0>d?this.B("prompt"):this.B("items")[d]),this.yd.set("label",b));this.$xa&&(this.Ki.set("minWidth",this.yd.Ya()),this.Ki.set("buttonWidth",this.yd.Ya()));this.vc("fontFamily fontSize fontColor fontWeight fontStyle tabIndex textDecoration horizontalAlign textShadowColor textShadowHorizontalLength textShadowVerticalLength textShadowBlurRadius textShadowOpacity".split(" "), {},[this.yd,this.Ki],!0,!0);this.vc("popUpBorderRadius popUpGap popUpPaddingBottom popUpPaddingLeft popUpPaddingRight popUpPaddingTop popUpBackgroundColor popUpBackgroundOpacity rollOverPopUpBackgroundColor selectedPopUpBackgroundColor popUpFontColor rollOverPopUpFontColor selectedPopUpFontColor popUpShadow popUpShadowBlurRadius popUpShadowColor popUpShadowHorizontalLength popUpShadowOpacity popUpShadowSpread popUpShadowVerticalLength".split(" "),{},[this.Ki],!0,!0);this.vc("arrowBeforeLabel arrowWidth arrowHeight arrowColor rollOverArrowColor pressedArrowColor pressedRollOverArrowColor arrowGap shadow shadowBlurRadius shadowColor shadowHorizontalLength shadowOpacity shadowSpread shadowVerticalLength borderRadius borderTopRadius borderBottomRadius borderLeftRadius borderRightRadius borderTopLeftRadius borderTopRightRadius borderBottomLeftRadius borderBottomRightRadius borderSize borderLeftSize borderTopSize borderRightSize borderBottomSize borderColor borderLeftColor borderTopColor borderRightColor borderBottomColor rollOverBorderColor pressedBorderColor pressedRollOverBorderColor backgroundColor backgroundColorRatios backgroundColorDirection backgroundOpacity rollOverBackgroundColor rollOverBackgroundColorRatios rollOverShadow pressedBackgroundColor pressedBackgroundColorRatios pressedShadow pressedRollOverBackgroundColor pressedRollOverBackgroundColorRatios pressedRollOverShadow paddingLeft paddingTop paddingRight paddingBottom".split(" "), {},[this.yd],!0,!0);l.prototype.ab.call(this)};return a}); define("fZ",["require","z","pu","oh","pH"],function(a){var e=a("z"),k=a("pu"),m=a("oh"),l=a("pH");a=m.define("DropDown",l,function(){l.call(this);this.Bd=null;this.Gsa=[];this.bind(k.ba,this.dVa,this)});a.prototype.set=function(c,h){if("playList"==c){if(this.Bd)for(this.Bd.unbind("change",this.yw,this);this.Gsa.length;)this.Gsa.shift().NB();(this.Bd=h)?(e.Au(this.Bd,"items.label",this.v0,this),e.Au(this.Bd,"items.media.label",this.v0,this),this.v0(),this.Bd.bind("change",this.yw,this),this.yw()): this.v0()}l.prototype.set.call(this,c,h)};a.prototype.v0=function(){this.Bd?this.set("items",this.Bd.get("items").map(function(c){return c.get("label")||c.get("media")&&c.get("media").get("label")})):this.set("items",[])};a.prototype.yw=function(){this.set("selectedIndex",this.Bd.get("selectedIndex"))};a.prototype.dVa=function(){this.Bd&&this.Bd.set("selectedIndex",this.get("selectedIndex"))};return a}); define("dA",["require","ms","oh"],function(a){var e=a("ms");a=a("oh").define("DustPanoramaOverlay",e,function(){e.call(this)});a.prototype.get=function(k,m){"startState"==k&&void 0===m&&(m=this.get("initialState"));return e.prototype.get.call(this,k,m)};return a}); define("bF",["require","oh","eF"],function(a){var e=a("oh"),k=a("eF");a=e.define("Effect",k,function(){k.call(this)});a.prototype.cancel=function(){return k.prototype.cancel.apply(this,arguments)};a.prototype.getPosition=function(){return k.prototype.gl.apply(this,arguments)};a.prototype.play=function(){return k.prototype.play.apply(this,arguments)};a.prototype.reverse=function(){return k.prototype.reverse.apply(this,arguments)};a.prototype.stop=function(){return k.prototype.stop.apply(this,arguments)}; return a});define("ko",["require","oh","jb"],function(a){var e=a("oh"),k=a("jb");return e.define("ExternalModel3DObject",k,function(){k.call(this)})}); define("bs",["require","lO","eF"],function(a){var e=a("lO"),k=a("eF");a=e.extend(k,function(){k.call(this);this.r7=this.p7=null});a.prototype.NJ=function(){k.prototype.NJ.call(this);this.p7=[];this.r7=[];this.zz(function(m){this.p7.push(this.get("alphaFrom",m.fl()));this.r7.push(this.get("alphaTo",m.fl()))});this.b_()};a.prototype.Vw=function(){k.prototype.Vw.call(this);this.b_()};a.prototype.b_=function(){this.zz(function(m,l){var c=this.p7[l];l=c+(this.r7[l]-c)*this.gl();!(0this.wi.indexOf(c.source)&&(this.wi.push(c.source),1==this.wi.length&&this.ZY())};a.prototype.Rta=function(c){c=this.wi.indexOf(c.source);0<=c&&(this.wi.splice(c,1),0==this.wi.length&&this.Pq())};a.prototype.ZY=function(){var c=this.get("effect"),h=this.get("rollOverEffect");h&&(c&&0this.items.indexOf(p)&&(this.items.push(p),p.oL(this.priority),p.Lia(1))}.bind(this))};k.prototype.b8a=function(q){var p=this.items;this.items=[];p.forEach(function(r){0>q.indexOf(r)?this.items.push(r):(r.oL(-this.priority),r.Lia(-1))}.bind(this))};k.prototype.S7a=function(){this.items.forEach(function(q){q.oL(-this.priority); q.Lia(-1)}.bind(this));this.items=[];this.priority=0};k.prototype.oL=function(q){this.priority+=q;this.items.forEach(function(p){p.oL(q)})};e.me=[];e.Cwa=[];e.eRa=0;e.tAa=function(q,p){this.VZ(q).T1a(p.map(function(r){return this.Ba(r)}.bind(this)));this.N_();this.na()};e.k8a=function(q,p){this.VZ(q).b8a(p.map(function(r){return this.Ba(r)}.bind(this)));this.N_();this.na()};e.T7a=function(q){this.VZ(q).S7a();this.N_();this.na()};e.e3=function(q,p){this.VZ(q).oL(p);this.N_();this.na()};e.N_=function(){this.me.sort(function(q, p){return p.priority-q.priority})};e.na=function(q){if(this.enabled()&&(q||!this.Lt))if(q){this.Lt&&clearTimeout(this.Lt);this.Lt=null;q=this.eSa();var p=this.fSa();m(q).difference(p).forEach(function(r){r.stop()});m(p).difference(q).forEach(function(r){r.start()})}else this.Lt=setTimeout(function(){this.Lt=null;this.na(!0)}.bind(this),1E3)};e.Lt=null;e.eSa=function(){return this.me.filter(function(q){return q.status==n.eV})};e.fSa=function(){for(var q=this.gSa(),p=[],r=0;rthis.get("hfov"))return!0}return k.prototype.get.call(this,m,l)};a.prototype.set=function(m,l){switch(m){case "cardboardMenu":this.set("vrMenu",l)}k.prototype.set.call(this,m,l)};a.prototype.B$=function(){var m= k.prototype.get.call(this,"overlays");m||(m=[]);return this.jea(m)};a.prototype.jea=function(m){if(void 0===this.OJ||this.TX!=m){var l=function(h){return e.Ja("PopupPanoramaOverlay",h)},c=function(h){return e.Ja("LensFlarePanoramaOverlay",h)};this.TX=m;this.OJ=[].concat(m.filter(function(h){return!(l(h)||c(h))}),m.filter(c),m.filter(l))}return this.OJ};a.prototype.rDa=function(){return 0m.indexOf(k.Es)&&e.prototype.get.call(this,"grayscale")&&(m=m.concat([k.Es])),m}return e.prototype.get.call(this,m,l)};k.prototype.qDa=function(m){return 0<=this.get("tags").indexOf(m)};k.Es="preload";k.fV="mobile";k.bna="ipadpro";k.gV="mobilevr";k.K6= "mobilevr2gen";k.L6="ondemand";return k}); define("gv",["require","mB","w","mO"],function(a){var e=a("mB"),k=a("w"),m=a("mO");return{Jr:function(l){return this.fk(l,"load")},GF:function(l){return this.fk(l,"preload")},ZK:function(l){return this.Jr(l)!=this.GF(l)},fk:function(l,c){l=l.get("levels")||[];var h=this.pRa(l);h=this.CSa(c,h);l=this.QQa(l,c);(c=this.Fra(l,h[0],h[1],this.BSa(c)))||(c=this.Fra(l,h[0],h[1],void 0));return c},QQa:function(l,c){"preload"==c?l=this.HN(l,e.Es):"load"==c&&(l=this.PQa(l,e.Es));k.Hx()&&(l=this.HN(l,e.bna)); if(k.N2()||k.O2())l=this.HN(l,e.K6);k.Af()&&(l=this.HN(l,e.gV));k.rb()&&(l=this.HN(l,e.fV));return l},pRa:function(l){if(0==l.length)return 1;l.sort(function(c,h){return h.get("width")-c.get("width")});return l[0].get("width")/l[0].get("height")},CSa:function(l,c){if("preload"==l)return[0,0];l=1E4;this.YQa()||(k.Af()?l=2048:k.Hx()?l=2048:k.rb()&&(l=1024));return 1>c?[l*c,l]:[l,l/c]},BSa:function(l){if("load"==l)return!1},YQa:function(){return k.Hx()&&m.gg("recent_ipad_use_max_res",!1)},HN:function(l, c){var h=l.filter(function(g){return g.qDa(c)});0==h.length&&(h=l);return h},PQa:function(l,c){var h=l.filter(function(g){return!g.qDa(c)});0==h.length&&(h=l);return h},Fra:function(l,c,h,g){function b(d){return Math.abs(d.get("width")*d.get("height")-c*h)}l=l.filter(function(d){return void 0!==g&&g!=d.get("grayscale",!1)?!1:!0});if(0==l.length)return null;l.sort(function(d,f){return b(d)-b(f)});return l[0]}}}); define("L",["require","ms","oh","gv"],function(a){var e=a("ms"),k=a("oh"),m=a("gv");a=k.define("HotspotMapOverlayImageBase",e,function(){e.call(this)});a.prototype.Jr=function(){return this.get("image")?m.Jr(this.get("image")):null};a.prototype.GF=function(){return this.get("image")?m.GF(this.get("image")):null};return a});define("lP",["require","lO","cH"],function(a){var e=a("lO"),k=a("cH");return e.extend(k,function(m,l){k.call(this,m);this.Sg=l})}); define("cz",["require","lO","ms","pu","lP"],function(a){var e=a("lO"),k=a("ms"),m=a("pu"),l=a("lP");a=e.extend(k,function(){k.call(this);this.sR=[];this.fg=void 0;this.C="initial"});a.prototype.iu=function(){return this.sR};a.prototype.QL=function(c){this.sR!=c&&(this.sR=c,this.Vz=this.fg=void 0)};a.prototype.B9a=function(c){this.fg!==c&&(this.C="loading",this.fg=c,this.trigger(new l(m.kc,this.fg)))};a.prototype.VT=function(){"loaded"!==this.C&&(this.C="loaded",this.trigger(m.da))};a.prototype.X8a= function(){"loaded"!==this.C&&(this.C="error",this.trigger(m.xc))};return a});define("dG",["require","lO","cz"],function(a){var e=a("lO"),k=a("cz");a=e.extend(k,function(m){k.call(this);this.mf=m;this.v=void 0});a.prototype.getType=function(){return this.mf};a.prototype.t5a=function(m){return void 0!==this.v&&this.v===m.v};a.lna="map";a.mna="overlay";return a}); define("kt",["require","lO","dG"],function(a){var e=a("lO"),k=a("dG");a=e.extend(k,function(m,l,c){k.call(this,k.mna);this.lWa=m;this.Ma=l;this.Pa=c});a.prototype.getX=function(){return this.Ma};a.prototype.getY=function(){return this.Pa};a.jna="image";a.ina="fov";return a}); define("mv",["require","lO","kt"],function(a){var e=a("lO"),k=a("kt");a=e.extend(k,function(m,l,c,h,g,b,d,f,n,q,p,r){k.call(this,k.jna,c,h);this.v=m;this.Td=l;this.axa=g;this.lw=b;this.mw=d;this.ra=f;this.va=n;this.Mf=q;this.Ml=p;this.om=r;this.sR=[l]});a.prototype.Si=function(){return this.Td};a.prototype.qe=function(){return this.ra};a.prototype.Ze=function(){return this.va};return a}); define("hB",["require","oh","L","gv","mv"],function(a){var e=a("oh"),k=a("L"),m=a("gv"),l=a("mv");a=e.define("HotspotMapOverlayImage",k,function(){k.call(this);this.hw=void 0});a.prototype.getItem=function(){return this.gk()};a.prototype.gk=function(){void 0===this.hw&&(this.hw=this.u1());return this.hw};a.prototype.u1=function(c){var h=this.get("image");return h?(h=m.Jr(h),new l(this,h.get("url"),this.get("x"),this.get("y"),c,this.get("offsetX"),this.get("offsetY"),this.get("width"),this.get("height"), this.get("scaleMode"),this.get("horizontalAlign"),this.get("verticalAlign"))):null};return a});define("O",["require","oh","L"],function(a){var e=a("oh"),k=a("L");return e.define("HotspotMapOverlayMap",k,function(){k.call(this)})}); define("gB",["require","ms","pu","oh","kN"],function(a){var e=a("ms"),k=a("pu"),m=a("oh"),l=a("kN");a=m.define("HotspotPanoramaOverlayImageBase",e,function(){e.call(this);this.td=void 0});a.prototype.get=function(c,h){switch(c){case "playbackPositions":return void 0===this.td&&(this.td=l.Sha(this)),this.td}return e.prototype.get.call(this,c,h)};a.prototype.set=function(c,h){var g=!1;switch(c){case "distance":case "hfov":case "vfov":case "pitch":case "rotationX":case "rotationY":case "roll":case "yaw":case "opacity":case "playbackPositions":this.td= void 0,g=!0}e.prototype.set.call(this,c,h);g&&"playbackPositions"!=c&&this.trigger(k.F("playbackPositions"))};return a});define("md",["require","oh","gB"],function(a){var e=a("oh"),k=a("gB");return e.define("HotspotPanoramaOverlayImage",k,function(){k.call(this)})});define("Y",["require","oh","gB"],function(a){var e=a("oh"),k=a("gB");return e.define("HotspotPanoramaOverlayMap",k,function(){k.call(this)})}); define("lQ",["require"],function(){function a(f){var n={};f=f.split(",");for(var q=0;q\s]+))?)*)\s*(\/?)>/,k=/^<\/([-A-Za-z0-9_]+:?[-A-Za-z0-9_]*)[^>]*>/,m=/([-A-Za-z0-9_]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g,l=a("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"),c=a("address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul"), h=a("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),g=a("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"),b=a("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),d=a("script,style");return function(f,n){function q(w,x,y,z){x=x.toLowerCase();if(c[x])for(;r.last()&&h[r.last()];)p("",r.last());g[x]&& r.last()==x&&p("",x);(z=l[x]||!!z)||r.push(x);if(n.start){var D=[];y.replace(m,function(C,E,A,B,J){C=A?A:B?B:J?J:b[E]?E:"";D.push({name:E,value:C,pha:C.replace(/(^|[^\\])"/g,'$1\\"')})});n.start&&n.start(x,D,z)}}function p(w,x){if(x)for(x=x.toLowerCase(),w=r.length-1;0<=w&&r[w]!=x;w--);else w=0;if(0<=w){for(x=r.length-1;x>=w;x--)n.end&&n.end(r[x]);r.length=w}}var r=[],t=f;for(r.last=function(){return this[this.length-1]};f;){var u=!0;if(r.last()&&d[r.last()])f=f.replace(new RegExp("(.*?)]*>"),function(w,x){x=x.replace(/\x3c!--(.*?)--\x3e/g,"$1").replace(/v?f:f.substring(0,v),f=0> v?"":f.substring(v),n.RR&&n.RR(u))}if(f==t)throw"Parse Error: "+f;t=f}p()}}); define("fJ","require jquery.mod es lO pu cH gD w lQ".split(" "),function(a){var e=a("jquery.mod");a("es");var k=a("lO"),m=a("pu"),l=a("cH"),c=a("gD"),h=a("w"),g=a("lQ"),b=k.extend(c,function(d){c.call(this);this.Gf=e(d);this.kQ=[];this.sz=null});b.prototype.Q5a=function(d){d&&0<=d.toLowerCase().indexOf("");t.attr(x);f.append(t);u?n=t:(f=t,n=null)}},RR:function(r){p?p.content+=r:f.append(r)},end:function(r){"script"==r?(q.push(p),p=null):(n=f,f=f.parent())}});this.kQ=q;this.YX()};b.prototype.ATa=function(d){function f(){q++;return n+ q}this.Gf.empty();var n="fragment_"+k.O7a(6)+"_",q=0,p=f(),r=[p],t=void 0,u=[],v=null,w="";new g(d,{start:function(z,D,C){if("script"==z){C=void 0;for(z=0;z",r.push(A),t=void 0)}},RR:function(z){v? v.content+=z:w+=z},end:function(z){"script"==z?(u.push(v),v=null):(t=r[r.length-1],r.pop())}});this.Gf.get(0).innerHTML=w;this.Gf.addClass(p);for(d=0;df.kMa?this.oQ(f.YLa):q>f.jMa&&this.oQ(f.XLa))};f.prototype.wXa=function(){this.aya=(new Date).getTime()};f.prototype.oQ=function(q){this.YC==f.xbb&&this.wXa();this.YC!=q&&(this.YC!=f.lV&&f.epa[this.YC].unbind(l.Ee,this.Xta,this),this.YC=q,this.YC!=f.lV&&f.epa[this.YC].bind(l.Ee,this.Xta,this,!0))};f.prototype.m9=function(q){var p=this.Mj.style,r;for(r in q)p[r]=q[r]};var n=/[^\d]((\d*\.)?\d+)\s*(vmin|vmax|vw|vh)/i; f.lV="stopped";f.YLa="slow";f.XLa="normal";f.vna="fast";f.kMa=3E4;f.jMa=5E3;f.epa={slow:new a(2E3,!0),normal:new a(500,!0),fast:new a(100,!0)};return f});define("kH",["require","lN","oh"],function(a){var e=a("lN");return a("oh").define("HTML",e,function(){e.call(this)})});define("b",["require","es","lO","oN","d"],function(a){var e=a("es"),k=a("lO"),m=a("oN");a=a("d");var l=k.extend(m,function(){m.call(this)});l.Ec={layout:a.CU};e.defaults(l.Ec,m.Ec);l.prototype.yb=function(){this.so(l.Ec)};return l}); define("jn",["require","lO","ij","b","lN"],function(a){var e=a("lO"),k=a("ij"),m=a("b"),l=a("lN");a=e.extend(m,function(){m.call(this);this.Lz=null;this.set("contentOpaque",!0)});a.prototype.yb=function(){m.prototype.yb.call(this);this.h("overflow",k.Yp);this.h("html")};a.prototype.Ib=function(){m.prototype.Ib.call(this);null==this.Lz&&(this.Lz=new l,this.Lz.qa({left:0,toolTipDisabled:!0}),this.Xa(this.Lz))};a.prototype.ab=function(){this.L("html")&&(this.Lz.set("content",this.B("html")),this.T("html")); this.vc(["paddingLeft","paddingTop","paddingRight","paddingBottom"],{},[this.Lz],!0,!0);this.vc(["cursor"],{},[this.Lz],!0,!1);m.prototype.ab.call(this);this.Lz.set("width",this.Q$()?void 0:"100%")};return a});define("bB",["require","jn","oh"],function(a){var e=a("jn");return a("oh").define("HTMLText",e,function(){e.call(this)})}); define("mr","require jquery.mod lO pu cH mO hK bh mG hf ep nd".split(" "),function(a){function e(r,t,u){return function(v){var w="mouse"==t?this.Fz(v):this.zD(v);this.xsa(w)?r.call(this,v):"release"==u?r.call(this,v):this.fRa(w,v)}}var k=a("jquery.mod"),m=a("lO"),l=a("pu"),c=a("cH"),h=a("mO"),g=a("hK"),b=a("bh"),d=a("mG"),f=a("hf"),n=a("ep"),q=a("nd"),p=h.wj("debug");a=m.extend(q,function(){this.Me("Button");q.call(this,3);this.set("ariaRole","button");this.set("autoRolledOver",!0);this.set("autoPressed", !0);this.set("cursor",b.Fe);this.set("scaleMode",d.Mh);this.q8=document.createElement("canvas");this.q8.width=1;this.q8.height=1;this.r8=this.q8.getContext("2d");this.r8.globalCompositeOperation="copy";this.W9=!1;this.bind(l.fc,this.sTa,this)});a.prototype.yb=function(){q.prototype.yb.call(this);this.h("buttonGroup");this.h("mode",n.Ge);this.h("pressed");this.h("iconURL");this.h("transparencyActive");this.A("rollOverOpacity",f.aa,"opacity");this.A("rollOverIconURL",f.aa,"iconURL");this.A("pressedOpacity", f.Ab,"opacity");this.A("pressedIconURL",f.Ab,"iconURL");this.A("pressedRollOverOpacity",f.jc,"opacity");this.A("pressedRollOverIconURL",f.jc,"iconURL")};a.prototype.e$=e(q.prototype.e$,"touch","capture");a.prototype.Qqa=e(q.prototype.kRa,"touch");a.prototype.Sqa=e(q.prototype.kRa,"touch","release");a.prototype.Oea=e(q.prototype.Oea,"touch","capture");a.prototype.Nea=e(q.prototype.Nea,"touch");a.prototype.GA=e(q.prototype.GA,"touch","release");a.prototype.wba=e(q.prototype.wba,"mouse","capture");a.prototype.Aba= function(r){var t=this.Fz(r);if(this.xsa(t)||this.W9)q.prototype.Aba.call(this,r),q.prototype.set.call(this,"cursor",this.Upa);else{this.W9=!0;if(t=this.wra(t))k(t).trigger(this.ppa(r)),r.preventDefault(),r.stopImmediatePropagation();"pointer"==this.pra(t)?q.prototype.set.call(this,"cursor",b.Fe):q.prototype.set.call(this,"cursor",b.Ee);this.W9=!1}};a.prototype.sTa=function(){q.prototype.set.call(this,"cursor",this.Upa)};a.prototype.oY=e(q.prototype.oY,"mouse","release");a.prototype.xsa=function(r){if(!this.hc)return!1; if(this.get("transparencyActive"))return!0;var t=this.kb?this.kb.kA:1,u=this.hc.offset(),v=(r.rB-u.left)/t,w=this.hc.width();r=(r.sB-u.top)/t;t=this.hc.height();if(0<=v&&0<=r&&vthis.UC.indexOf(b)&&b.set("state",g.Ab)}.bind(this))};return a}); define("lb",["require","exports","lO","z"],function(a,e,k,m){var l=function(){return function(){}}();return function(){function c(){}c.ea=function(h,g,b,d){this.aoa(h,g,b,d,!1)};c.Rt=function(h,g,b,d){this.aoa(h,g,b,d,!0)};c.aoa=function(h,g,b,d,f){function n(){for(var r=[],t=0;tn;)this.$Pa(this.bh.pop());for(;this.bh.length< n;)this.bh.push(this.RPa());this.vc(d.Sna,d.d7,this.bh,!1,!0);this.Jza();this.Ffa();this.Un(this.dm,this.nb().length-1)}};d.prototype.RPa=function(){var n=new f;n.qa({cursor:h.Fe});n.bind(m.pa,this.jya,this,!0);n.bind(m.uc,this.kya,this,!0);this.Xa(n);return n};d.prototype.$Pa=function(n){n.unbind(m.pa,this.jya,this,!0);n.unbind(m.uc,this.kya,this,!0);this.removeChild(n)};d.prototype.ab=function(){var n=!1;if(this.L("position")||this.L("duration"))this.T("position"),this.T("duration"),n=!0;this.L("selectedStep")&& (this.T("selectedStep"),this.Jza());this.L("steps")&&(this.T("steps"),this.RS());this.vc(d.W6,d.DM,[this.fg],!0,!0);this.vc(d.gMa,d.Ona,[this.dm],!0,!0);this.vc(d.Sna,d.d7,this.bh,!0,!0);g.prototype.ab.call(this);n&&this.C0()};d.prototype.Jza=function(){var n=this.get("selectedStep");this.bh.forEach(function(q,p){q.cU(p===n)});this.dm.set("visible",void 0===n)};d.prototype.C0=function(){var n=this.Ya(),q=this.dm.Ya(),p=this.dm.Cb(),r=this.LN(),t=this.xq(),u=t*n/r;n=Math.round((this.JZ?this.qE:t)* n/r-.5*q);n=Math.max(0,Math.min(n,this.wf()-q));q=Math.round(.5*this.vf()-.5*p);this.dm.qa({left:n,top:q});this.fg.set("width",Math.round(u))};d.prototype.AWa=function(){this.C0()};d.prototype.yWa=function(n){this.JZ=!0;this.Mca=n.pageX;this.qE=this.B("position")};d.prototype.ewa=function(n){if(this.JZ){var q=n.pageX-this.Mca;this.Mca=n.pageX;n=this.Ya();var p=this.LN();this.qE=Math.max(0,Math.min(p,this.qE+p*q/n));this.C0();this.get("liveDragging")&&(this.set("position",this.qE),this.trigger(new l(m.ba)))}}; d.prototype.zWa=function(n){this.ewa(n);this.JZ=!1;this.get("liveDragging")||(this.set("position",this.qE),this.trigger(new l(m.ba)));this.qE=void 0};d.prototype.vWa=function(n){if(!this.tea){var q=this.Ya(),p=this.LN();this.set("position",p*n.x/q);this.trigger(new l(m.ba))}};d.prototype.kya=function(){this.Ffa()};d.prototype.xWa=function(){this.Ffa();this.C0()};d.prototype.Ffa=function(){for(var n=this.Ya(),q=this.Cb(),p=this.Ma,r=this.getParent().Ya()-(p+n),t=0,u=this.bh.length;tk.b2a();c.CJa=function(d){return b||h&&d&&.2>d.currentTime?!0:!1};c.uDa=function(){return c.JDa()||c.lp()};c.tDa=function(){return c.lp()&&e.G5a&&11>k.cia()};var g=!1;c.GDa=function(){g=!1};c.U5a=function(){return g};c.L8a=function(){g=!0};var b=l.wj("vic");c.A7a=function(){c.lp()&&(b=!0)};c.MCa=function(d){return{alpha:!0,depth:!0,stencil:!1,antialias:e.r2a()?d||!1:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default", failIfMajorPerformanceCaveat:!1,xrCompatible:!c.JDa()}};c.k3a=function(d,f){if(2==e.aGa){var n=c.MCa(f);n=d.getContext("webgl2",n)}n||(f=c.MCa(f),n=d.getContext("webgl",f)||d.getContext("experimental-webgl",f));return n};c.Xga=function(d,f){f||(f=d.getSize(new THREE.Vector2));d=new THREE.WebGLRenderTarget(f.width,f.height,{minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,format:THREE.RGBAFormat,type:THREE.HalfFloatType,samples:d.capabilities.isWebGL2?k.rb()?2:8:0});d.depthTexture=new THREE.DepthTexture; return d};c.j3a=function(d){return new THREE.WebGLCubeRenderTarget(d,{minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,format:THREE.RGBAFormat,type:THREE.HalfFloatType})};c.getPixelRatio=function(){if(k.rb()){var d=0,f=0;try{d=window.top.innerWidth,f=window.top.innerHeight}catch(q){if(k.Fd()==k.TB&&1g?(this.w=-e.w,this.x=-e.x,this.y=-e.y,this.z=-e.z,g=-g):this.copy(e);if(1<=g)return this.w=h,this.x=m,this.y=l,this.z=c,this;e=Math.acos(g);var b=Math.sqrt(1-g*g);if(.001>Math.abs(b))return this.w=.5*(h+this.w),this.x=.5*(m+this.x),this.y=.5*(l+this.y),this.z=.5*(c+this.z),this;g=Math.sin((1-k)*e)/b;k=Math.sin(k*e)/b;this.w=h*g+this.w*k;this.x=m*g+this.x*k;this.y=l*g+this.y*k;this.z=c*g+this.z*k;return this},setFromUnitVectors:function(){var e,k;return function(m,l){void 0=== e&&(e=new a.Vector3);k=m.dot(l)+1;1E-6>k?(k=0,Math.abs(m.x)>Math.abs(m.z)?e.set(-m.y,m.x,0):e.set(0,-m.z,m.y)):e.crossVectors(m,l);this.x=e.x;this.y=e.y;this.z=e.z;this.w=k;this.normalize();return this}}()};return a}); define("fE",["require","pu","cH","gD","oq"],function(a){function e(){d||(d=!0,p=new b.Vector3(0,0,1),r=new b.Quaternion,t=new b.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5)),u=new b.Quaternion,m(),window.addEventListener("orientationchange",m,!1),window.addEventListener("deviceorientation",l,!1),k())}function k(){if(v&&void 0!==n&&void 0!==q){v=!1;var y=b.degToRad*q;u.lHa(b.degToRad*n.beta,b.degToRad*n.alpha,-(b.degToRad*n.gamma));u.multiply(t);u.multiply(r.setFromAxisAngle(p,-y));w||(x++,5<=x&&(w= !0,f.trigger(new h(c.hd))));f.trigger(new h(c.ba))}}function m(){q=window.orientation||0;v=!0;k()}function l(y){n=y;v=!0;k()}var c=a("pu"),h=a("cH"),g=a("gD"),b=a("oq"),d=!1,f=new g,n,q,p,r,t,u,v,w=!1,x=0;e.prototype.Kr=function(){k();return u};e.prototype.bind=function(){f.bind.apply(f,arguments)};e.prototype.unbind=function(){f.unbind.apply(f,arguments)};e.prototype.stop=function(){window.removeEventListener("orientationchange",m,!1);window.removeEventListener("deviceorientation",l,!1)};return e}); define("ju","require pu cH gD w oq".split(" "),function(a){function e(q){this.r6a=q;this.Yga=new l;this.w1=new l;this.yja=new l;this.BF=new d.Quaternion;this.xja=new d.Quaternion;this.kAa=new d.Quaternion;this.ODa=!1;this.I1=new d.Vector3;this.Gia=new d.Vector3;this.d5a=new d.Quaternion}function k(){this.deviceId="webvr-polyfill:fused";this.AEa=!1;this.zEa=0;this.FR=new d.Vector3;this.v2=new d.Vector3;this.filter=new e(.98);this.I7a=new m(.04);this.bL=n.bL();this.lp=n.lp();n.Bha();this.via=n.W5a(); this.N1=new d.Quaternion;n.lp()?this.N1.setFromAxisAngle(new d.Vector3(1,0,0),Math.PI/2):this.N1.setFromAxisAngle(new d.Vector3(1,0,0),-Math.PI/2);this.J2=new d.Quaternion;this.dM=new d.Quaternion;this.AFa=new d.Quaternion;this.AFa.setFromAxisAngle(new d.Vector3(0,0,1),-window.orientation*Math.PI/180);this.KHa();n.LDa()&&this.N1.multiply(this.J2);this.vu=new d.Quaternion;this.bL=n.bL();this.lp=n.lp();this.V5a=66<=n.Bha();this.ZF=this.ZF.bind(this);this.kT=this.kT.bind(this);this.jT=this.jT.bind(this); screen&&screen.orientation&&screen.orientation.addEventListener?screen.orientation.addEventListener("change",this.ZF):window.addEventListener("orientationchange",this.ZF);this.via?window.addEventListener("deviceorientation",this.kT):window.addEventListener("devicemotion",this.jT)}function m(q){this.J7a=q;this.P3=new d.Quaternion;this.CL=null;this.vBa=new d.Quaternion;this.oT=new d.Quaternion}function l(q,p){this.set(q,p)}var c=a("pu"),h=a("cH"),g=a("gD"),b=a("w"),d=a("oq"),f=new g;e.prototype.H1a= function(q,p){this.Yga.set(q,p)};e.prototype.P1a=function(q,p){this.w1.set(q,p);n.q6a(p-this.yja.L4)&&this.v8a();this.yja.copy(this.w1)};e.prototype.v8a=function(){if(this.ODa){var q=this.e5a(this.w1.sample,this.w1.L4-this.yja.L4);this.d5a.multiply(q);this.BF.copy(this.xja);this.BF.multiply(q);q=new d.Quaternion;q.copy(this.BF);q.inverse();this.I1.set(0,0,-1);this.I1.applyQuaternion(q);this.I1.normalize();this.Gia.copy(this.Yga.sample);this.Gia.normalize();q=new d.Quaternion;q.setFromUnitVectors(this.I1, this.Gia);q.inverse();var p=new d.Quaternion;p.copy(this.BF);p.multiply(q);this.BF.slerp(p,1-this.r6a);this.xja.copy(this.BF)}else this.kAa=this.G1a(this.Yga.sample),this.xja.copy(this.kAa),this.ODa=!0};e.prototype.Kr=function(){return this.BF};e.prototype.G1a=function(q){var p=new d.Vector3;p.copy(q);p.normalize();q=new d.Quaternion;q.setFromUnitVectors(new d.Vector3(0,0,-1),p);q.inverse();return q};e.prototype.e5a=function(q,p){var r=new d.Quaternion,t=new d.Vector3;t.copy(q);t.normalize();r.setFromAxisAngle(t, q.length()*p);return r};k.prototype.stop=function(){screen&&screen.orientation&&screen.orientation.addEventListener&&screen.orientation.removeEventListener("change",this.ZF);window.removeEventListener("orientationchange",this.ZF);window.removeEventListener("deviceorientation",this.kT);window.removeEventListener("devicemotion",this.jT)};k.prototype.gl=function(){return null};k.prototype.Kr=function(){var q=void 0;if(this.via&&this.wW){this.xBa=this.xBa||function(){var r=(new d.Quaternion).setFromAxisAngle(new d.Vector3(0, 0,-1),0),t=new d.Quaternion;"landscape-secondary"==this.s_?t.setFromAxisAngle(new d.Vector3(0,1,0),Math.PI/-2):t.setFromAxisAngle(new d.Vector3(0,1,0),Math.PI/2);return r.multiply(t)}();this.wBa=this.wBa||function(){var r=new d.Quaternion;r.setFromAxisAngle(new d.Vector3(1,0,0),-Math.PI/2);return r}();q=this.wW;var p=new d.Quaternion;p.copy(q);p.multiply(this.wBa);p.multiply(this.vu);p.multiply(this.dM);p.multiplyQuaternions(this.xBa,p);this.bdb&&(p.x=0,p.z=0,p.normalize());this.G3[0]=p.x;this.G3[1]= p.y;this.G3[2]=p.z;this.G3[3]=p.w;return this.G3}q=this.filter.Kr();q=this.I7a.O4a(q,this.v2,this.CL);p=new d.Quaternion;p.copy(this.N1);p.multiply(this.vu);p.multiply(q);p.multiply(this.dM);return p};k.prototype.resetPose=function(){this.vu.copy(this.filter.Kr());this.vu.x=0;this.vu.y=0;this.vu.z*=-1;this.vu.normalize();n.LDa()&&this.vu.multiply(this.J2);this.vu.multiply(this.AFa)};k.prototype.kT=function(q){this.wW=this.wW||new d.Quaternion;var p=q.alpha,r=q.beta;q=q.gamma;p=(p||0)*Math.PI/180; r=(r||0)*Math.PI/180;q=(q||0)*Math.PI/180;this.wW.lHa(r,p,-q)};k.prototype.jT=function(q){var p=q.rotationRate;if(p){var r=q.accelerationIncludingGravity;q=q.timeStamp/1E3;this.bL&&(q/=1E3);var t=q-this.CL;t<=n.ima||t>n.ema?this.CL=q:(this.FR.set(-r.x,-r.y,-r.z),this.v2.set(p.alpha,p.beta,p.gamma),(this.lp||this.bL||this.V5a)&&this.v2.multiplyScalar(Math.PI/180),this.filter.H1a(this.FR,q),this.filter.P1a(this.v2,q),this.CL=q,this.AEa||(this.zEa++,5<=this.zEa&&(this.AEa=!0,f.trigger(new h(c.hd)))), this.s_!=this.lCa()&&this.ZF(),f.trigger(new h(c.ba)))}else this.via=!0,window.addEventListener("deviceorientation",this.kT),window.removeEventListener("devicemotion",this.jT)};k.prototype.bind=function(){f.bind.apply(f,arguments)};k.prototype.unbind=function(){f.unbind.apply(f,arguments)};k.prototype.ZF=function(){this.KHa();f.trigger(new h(c.ba))};k.prototype.KHa=function(){this.dM.set(0,0,0,1);this.s_=this.lCa();switch(this.s_){case "landscape-primary":this.dM.setFromAxisAngle(new d.Vector3(0, 0,1),-Math.PI/2);break;case "landscape-secondary":this.dM.setFromAxisAngle(new d.Vector3(0,0,1),Math.PI/2)}this.J2.copy(this.dM);this.J2.inverse()};k.prototype.lCa=function(){var q=screen.orientation&&screen.orientation.type;if(!q)switch(window.orientation){case 0:q="portrait-primary";break;case 90:q="landscape-primary";break;case -90:q="landscape-secondary";break;case 180:q="portrait-secondary"}"landscape-primary"==q&&(4.9this.FR.z?q=this.s_||q:0n.ema?!1:!0}};n.lp=function(){var q=/iPad|iPhone|iPod/.test(navigator.platform);return function(){return q}}();n.Mcb=function(){var q=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);return function(){return q}}();n.bL=function(){var q=-1!==navigator.userAgent.indexOf("Firefox")&&-1!==navigator.userAgent.indexOf("Android");return function(){return q}}();n.Bha=function(){var q=navigator.userAgent.match(/.*Chrome\/([0-9]+)/),p=q?parseInt(q[1],10):null;return function(){return p}}();n.W5a= function(){var q=!1;if(65===n.Bha()){var p=navigator.userAgent.match(/.*Chrome\/([0-9\.]*)/);if(p){p=p[1].split(".");var r=p[3];q=3325===parseInt(p[2],10)&&148>parseInt(r,10)}}else"getVRDisplays"in navigator&&b.browser()==b.Lm&&b.nS()&&b.pc()==b.HU&&(q=!0);return function(){return q}}();n.LDa=function(){return 90==window.orientation||-90==window.orientation};return k}); define("ih","require lO pu cH gD od w fE ju mO".split(" "),function(a){function e(){function w(){q=!0;f.trigger(new m(k.ba))}function x(){var A;!E||!y&&D?D&&(A=z):A=C;p!=A&&(p&&(p.unbind(k.ba,w),p.stop()),p=A)&&(p.bind(k.ba,w,this,!0),w())}var y=h.Fd()==h.ui||d.wj("debug")&&"deviceorientation"==d.getQueryParameter("sensor"),z=new b,D=!1;z.bind(k.hd,function(){D=!0;x()},this,!0);var C=new g,E=!1;C.bind(k.hd,function(){E=!0;x()},this,!0)}a("lO");var k=a("pu"),m=a("cH"),l=a("gD"),c=a("od"),h=a("w"), g=a("fE"),b=a("ju"),d=a("mO"),f=new l,n={},q=!1,p,r=[],t=!1,u=!1;n.Ija=function(w){w&&r.push(w);if(!n.disabled)for(;r.length;)r.pop()();else if(h.Fd()==h.ui&&window.DeviceMotionEvent&&DeviceMotionEvent.requestPermission){DeviceOrientationEvent.requestPermission().then(function(y){"granted"===y&&(u=!0,x())})["catch"](function(){});DeviceMotionEvent.requestPermission().then(function(y){"granted"===y&&(t=!0,x())})["catch"](function(){});var x=function(){if(n.disabled&&t&&u)for(n.disabled=!1,e();r.length;)r.pop()()}; x()}};n.bind=function(w,x){f.bind(k.ba,w,x)};n.unbind=function(w,x){f.unbind(k.ba,w,x)};n.o7a=function(){return q};n.Kr=function(){q=!1;if(p){var w=p.Kr();w=c.M4(w);return{yaw:w.Sa,pitch:w.pitch,roll:w.Bg}}return{yaw:0,pitch:0,roll:0}};if(h.Fd()==h.T6||h.Fd()==h.n6||h.Fd()==h.ama)n.ck=!1,n.disabled=!1;else if(h.Fd()==h.TB&&h.browser()==h.Lm&&"https:"!=window.location.protocol&&"localhost"!=window.location.hostname)n.ck=!0,n.disabled=!0;else if(h.Fd()==h.ui)if(n.ck=!0,n.disabled=!0,window.DeviceMotionEvent&& DeviceMotionEvent.requestPermission)n.Ija();else{var v=function(){window.removeEventListener("deviceorientation",v,!1);n.disabled=!1;e()};window.addEventListener("deviceorientation",v,!1)}else n.ck=void 0!=window.DeviceMotionEvent,n.disabled=!1;n.ck&&!n.disabled&&e();return n}); define("bg","require exports w mj ih cE mO".split(" "),function(a,e,k,m,l,c,h){return function(){function g(){}g.initialize=function(b){this.hia||(this.hia=this.rab().then(function(d){this.XR.KG=d;this.XR.DJa=d&&(k.Af()||!k.rb());d&&m.A$a();return d}.bind(this)).catch(function(){this.XR.KG=!1;return this.XR.DJa=!1}.bind(this)));this.hia.then(function(){b()})};g.rab=function(){return this.tab().then(function(b){return b?Promise.resolve(!0):this.uab()}.bind(this))};g.tab=function(){return navigator.xr&& "cardboard"!=h.getQueryParameter("vr_mode")?this.vab():Promise.resolve(!1)};g.uab=function(){return this.n2a()?this.d2a():Promise.resolve(!1)};g.vab=function(){return navigator.xr&&navigator.xr.isSessionSupported?navigator.xr.isSessionSupported("immersive-vr"):navigator.xr&&navigator.xr.supportsSession?navigator.xr.supportsSession("immersive-vr"):Promise.reject()};g.n2a=function(){return l.ck&&k.rb()&&k.uF()!=k.lM};g.d2a=function(){var b=this;return new Promise(function(d){c.qna.load(function(){var f; b.G7a=new window.WebXRPolyfill({overwriteNativeXR:!0,cardboardConfig:{DPDB_URL:"https://raw.githubusercontent.com/immersive-web/webvr-polyfill-dpdb/refs/heads/main/dpdb.json",BUFFER_SCALE:null===(f=b.XR)||void 0===f?void 0:f.O3,CARDBOARD_UI_DISABLED:!1,ROTATE_INSTRUCTIONS_DISABLED:!0,MOBILE_WAKE_LOCK:!1}});b.XR.fL=!0;d(!0)})})};g.hia=null;g.G7a=null;return g}()});define("three.mod",["require","exports"],function(){return window.THREE}); define("pW",["require","exports","pu","three.mod"],function(a,e,k,m){var l=function(){function r(){}r.initialize=function(){this.XR.tj=new m.Group;this.XR.tj.matrixAutoUpdate=!1;this.XR.Nn=new m.Group;this.XR.Nn.matrixAutoUpdate=!1;this.XR.tj.add(this.XR.Nn);this.XR.O.bind(k.yla,this.I6a,this,!0);this.XR.O.bind(k.ba,this.bf,this,!0)};r.setScale=function(t){this.bg!==t&&(this.bg=t,this.XR.qm=1/t,this.setPosition({x:this.XR.Ic.x,y:this.XR.Ic.y,z:this.XR.Ic.z,Sa:-b.setFromQuaternion(this.XR.xg,"YXZ").y* p}))};r.IL=function(t){var u,v;this.b3(this.QB,h);this.b3(n.copy(this.QB).premultiply(this.XR.tj.matrixWorld),c);var w=this.XR.tj.matrix;w.identity();w.multiply(n.makeRotationY(void 0===t?c.yaw:-t*q));w.multiply(n.makeRotationY(-h.yaw));w.multiply(n.makeScale(this.XR.qm,this.XR.qm,this.XR.qm));w.multiply(n.makeTranslation(-h.x,-h.y,-h.z));void 0!==t&&(w=this.XR.Nn.matrix,w.identity(),w.multiply(n.makeTranslation(h.x,h.y,h.z)),w.multiply(n.makeRotationY(-h.yaw*q)));this.XR.tj.updateMatrixWorld(!0); null===(u=this.camera)||void 0===u?void 0:u.updateMatrixWorld(!0);null===(v=this.nk)||void 0===v?void 0:v.updateMatrixWorld(!0);this.qla()};r.setPosition=function(t){var u,v;this.b3(this.QB,h);this.b3(n.copy(this.QB).premultiply(this.XR.tj.matrixWorld),c);var w=this.XR.tj.matrix;w.identity();w.multiply(n.makeTranslation(void 0===t.x?c.x:t.x,void 0===t.y?c.y:t.y,void 0===t.z?c.z:t.z));w.multiply(n.makeRotationY(void 0===t.yaw?c.yaw:-t.yaw*q));w.multiply(n.makeRotationX(void 0===t.pitch?c.pitch:t.pitch* q));w.multiply(n.makeRotationZ(void 0===t.roll?c.roll:t.roll*q));w.multiply(n.makeRotationZ(-h.roll));w.multiply(n.makeRotationX(-h.pitch));w.multiply(n.makeRotationY(-h.yaw));w.multiply(n.makeScale(this.XR.qm,this.XR.qm,this.XR.qm));w.multiply(n.makeTranslation(-h.x,-h.y,-h.z));if(void 0!==t.yaw||void 0!==t.pitch||void 0!==t.roll)w=this.XR.Nn.matrix,w.identity(),w.multiply(n.makeTranslation(h.x,h.y,h.z)),w.multiply(n.makeRotationY(-h.yaw*q)),w.multiply(n.makeRotationX(h.pitch*q)),w.multiply(n.makeRotationX(h.roll* q));this.XR.tj.updateMatrixWorld(!0);null===(u=this.camera)||void 0===u?void 0:u.updateMatrixWorld(!0);null===(v=this.nk)||void 0===v?void 0:v.updateMatrixWorld(!0);this.qla()};r.I6a=function(){var t,u,v,w;this.zu(this.XR.BL);this.WHa((null===(t=this.XR.hh)||void 0===t?void 0:t.xr.getCamera())||null);this.setCamera(this.XR.Wx);if(u=(u=(t=null===(u=this.XR.hh)||void 0===u?void 0:u.xr.getFrame())&&this.XR.referenceSpace&&t.getViewerPose(this.XR.referenceSpace))&&u.transform)this.XR.SAa=u.position.y, this.QB.fromArray(u.matrix),this.QB.decompose(this.XR.ibb,this.XR.X4,f),null===(v=this.camera)||void 0===v?void 0:v.updateMatrixWorld(!0),null===(w=this.nk)||void 0===w?void 0:w.updateMatrixWorld(!0),this.qla()};r.bf=function(){this.XR.isPresenting?this.scene&&this.camera&&(this.XR.BL!=this.scene||this.XR.Wx!=this.camera)&&(this.zu(this.XR.BL),this.setCamera(this.XR.Wx),this.XR.hh.xr.updateCamera(this.XR.Wx),this.setPosition({x:this.XR.Ic.x,y:this.XR.Ic.y,z:this.XR.Ic.z,Sa:-b.setFromQuaternion(this.XR.xg, "YXZ").y*p})):(this.zu(null),this.WHa(null),this.setCamera(null))};r.qla=function(){n.copy(this.QB).premultiply(this.XR.tj.matrixWorld).decompose(this.XR.Ic,this.XR.xg,f);b.setFromRotationMatrix(this.XR.Nn.matrix,"YXZ");d.setFromMatrixPosition(this.QB);this.XR.Nn.matrix.identity();this.XR.Nn.matrix.multiply(n.makeTranslation(d.x,d.y,d.z));this.XR.Nn.matrix.multiply(n.makeRotationFromEuler(b));this.XR.Nn.updateMatrixWorld(!0)};r.zu=function(t){this.scene!==t&&(this.scene&&this.scene.remove(this.XR.tj), null==t&&(this.AGa(),this.CGa()),(this.scene=t)&&this.scene.add(this.XR.tj))};r.setCamera=function(t){this.camera!==t&&(this.AGa(),(this.camera=t)&&this.XR.tj.add(this.camera))};r.WHa=function(t){this.nk!==t&&(this.CGa(),(this.nk=t)&&this.XR.tj.add(this.nk))};r.AGa=function(){this.scene&&this.camera&&this.camera.parent===this.XR.tj&&(this.scene.add(this.camera),this.camera=null)};r.CGa=function(){this.nk&&this.nk.parent===this.XR.tj&&(this.nk.parent.remove(this.nk),this.nk=null)};r.b3=function(t, u){t.decompose(d,g,f);b.setFromQuaternion(g,"YXZ");u.yaw=b.y;u.pitch=b.x;u.roll=b.z;u.x=d.x;u.y=d.y;u.z=d.z};r.QB=new m.Matrix4;r.bg=1;r.scene=null;r.camera=null;r.nk=null;return r}(),c={x:void 0,y:void 0,z:void 0,Sa:void 0},h={x:void 0,y:void 0,z:void 0,Sa:void 0},g=new m.Quaternion,b=new m.Euler,d=new m.Vector3,f=new m.Vector3,n=new m.Matrix4,q=Math.PI/180,p=180/Math.PI;window.Hm=function(r){l.setPosition({x:void 0,y:void 0,z:void 0,Sa:r})};return l}); define("bS",["require","exports"],function(){return{XG:"gaze",qM:"laser"}}); define("jk",["require","exports","pu"],function(a,e,k){return function(){function m(){}m.n9a=function(l,c,h){var g=this.XR.Em.indexOf(l);-1=b)return g}return l};m.d2=function(l,c){return m.DGa(m.Sr(l),m.Sr(c))};m.SDa=function(l){return!!l&&0===l.indexOf("#")};m.Sr=function(l){return[parseInt(l.substr(1,2),16),parseInt(l.substr(3,2),16),parseInt(l.substr(5,2),16)]};m.DGa=function(l,c){return Math.max(Math.abs(l[0]- c[0]),Math.abs(l[1]-c[1]),Math.abs(l[2]-c[2]))};m.zab=function(l){l=m.Sr(l);return l[0]<<16|l[1]<<8|l[2]<<0};m.Dp=function(l){return new k.Color(m.zab(l))};return m}()}); define("fY",["require","exports","oj","three.mod"],function(a,e,k,m){a=function(){function g(b,d){this.dot=this.ray=this.ta=null;this.ta=new m.Group;this.ray=new l(b,d);this.ta.add(this.ray.ta);this.dot=new c(b,d);this.ta.add(this.dot.ta)}g.prototype.update=function(){this.ray.update();this.dot.update()};g.prototype.dispose=function(){var b;this.ta&&(this.ray.dispose(),this.ray=null,this.dot.dispose(),this.dot=null,null===(b=this.ta.parent)||void 0===b?void 0:b.remove(this.ta),this.ta=null)};return g}(); var l=function(){function g(b,d){this.qp=this.material=this.ta=null;this.color="#ffffff";this.qc=b;this.sl=d;this.Bka();this.ta=new m.Mesh(new m.CylinderGeometry(5E-4,5E-4,.35,8),this.material);this.ta.renderOrder=999;this.ta.position.z=-.175;this.ta.position.y=-.001;this.ta.rotation.copy(new m.Euler(-Math.PI/2,0,0,"YXZ"));this.ta.updateMatrix()}g.prototype.update=function(){this.rU();this.pla()};g.prototype.dispose=function(){var b;this.ta&&(this.ta.geometry.dispose(),this.Tka(),null===(b=this.ta.parent)|| void 0===b?void 0:b.remove(this.ta),this.ta=null)};g.prototype.Bka=function(){if(!this.material){var b=document.createElement("canvas");b.width=b.height=256;this.qp=b.getContext("2d");this.material=new m.MeshBasicMaterial;this.material.map=new m.Texture(b);this.material.map.colorSpace=m.SRGBColorSpace;this.material.transparent=!0;this.rU()}};g.prototype.Tka=function(){var b,d;if(this.material){var f=null===(b=this.material.map)||void 0===b?void 0:b.image;f.width=f.height=1;null===(d=this.material.map)|| void 0===d?void 0:d.dispose();this.material.map=null;this.material.dispose();this.qp=this.material=null}};g.prototype.rU=function(){var b=this.RK();if(this.color!==b){this.color=b;b=k.Sr(this.color).join(", ");var d=this.material.map.image,f=this.qp.createLinearGradient(0,0,0,d.height);f.addColorStop(0,"rgba("+b+", 0)");f.addColorStop(.5,"rgba("+b+", 1)");f.addColorStop(1,"rgba("+b+", 1)");this.qp.fillStyle=f;this.qp.clearRect(0,0,d.width,d.height);this.qp.fillRect(0,0,d.width,d.height);this.material.map.needsUpdate= !0;this.material.needsUpdate=!0}};g.prototype.pla=function(){this.ta.visible=!this.qc.disabled&&!this.qc.hidden};g.prototype.RK=function(){return this.qc.pressed?this.sl.sja:this.qc.tL?this.sl.TFa:this.sl.qja};return g}(),c=function(){function g(b,d){this.qp=this.St=this.material=this.border=this.dot=this.ta=null;this.color="#ffffff";this.qc=b;this.sl=d;this.n$a();this.Bka();this.ta=new m.Group;this.ta.renderOrder=999;this.border=new m.Mesh(new m.SphereGeometry(.0046,32,32),this.St);this.dot=new m.Mesh(new m.SphereGeometry(.004, 32,32),this.material);this.ta.add(this.dot);this.ta.add(this.border);this.mJa()}g.prototype.update=function(){this.rU();this.mJa();this.pla()};g.prototype.dispose=function(){var b;this.ta&&(this.ta.remove(this.dot),this.dot.geometry.dispose(),this.Tka(),this.ta.remove(this.border),this.border.geometry.dispose(),this.kab(),null===(b=this.ta.parent)||void 0===b?void 0:b.remove(this.ta),this.ta=null)};g.prototype.n$a=function(){if(!this.St){var b=document.createElement("canvas");b.width=b.height=256; var d=b.getContext("2d");d.fillStyle="rgba(0, 0, 0, 0.75)";d.clearRect(0,0,b.width,b.height);d.fillRect(0,0,b.width,b.height);d=new m.MeshBasicMaterial;d.map=new m.Texture(b);d.map.colorSpace=m.SRGBColorSpace;d.map.needsUpdate=!0;d.transparent=!0;d.depthTest=!1;d.side=m.BackSide;this.St=d;this.St.needsUpdate=!0}};g.prototype.kab=function(){var b,d;if(this.St){var f=null===(b=this.St.map)||void 0===b?void 0:b.image;f.width=f.height=1;null===(d=this.St.map)||void 0===d?void 0:d.dispose();this.St.map= null;this.St.dispose();this.St=null}};g.prototype.Bka=function(){if(!this.material){var b=document.createElement("canvas");b.width=b.height=256;this.qp=b.getContext("2d");var d=new m.MeshBasicMaterial;d.map=new m.Texture(b);d.map.colorSpace=m.SRGBColorSpace;d.transparent=!0;d.depthTest=!1;this.material=d;this.rU()}};g.prototype.Tka=function(){var b,d;if(this.material){var f=null===(b=this.material.map)||void 0===b?void 0:b.image;f.width=f.height=1;null===(d=this.material.map)||void 0===d?void 0:d.dispose(); this.material.map=null;this.material.dispose();this.qp=this.material=null}};g.prototype.pla=function(){this.ta.visible=!this.qc.hidden&&!this.qc.disabled&&void 0!==this.qc.lu};g.prototype.mJa=function(){var b,d=this.ta.parent?h.setFromMatrixScale(null===(b=this.ta)||void 0===b?void 0:b.parent.matrixWorld).x:1;b=(this.qc.lu||500)/d;this.ta.position.z=-b;this.ta.scale.set(b,b,b);this.ta.updateMatrix()};g.prototype.rU=function(){var b=this.RK();this.color!==b&&(this.color=b,b=this.material.map.image, this.qp.fillStyle=this.color,this.qp.clearRect(0,0,b.width,b.height),this.qp.fillRect(0,0,b.width,b.height),this.material.map.needsUpdate=!0,this.material.needsUpdate=!0)};g.prototype.RK=function(){return this.qc.pressed?this.sl.sja:this.qc.tL?this.sl.TFa:this.sl.qja};return g}();new m.Matrix4;var h=new m.Vector3;return a}); define("jv",["require","exports","three.mod"],function(a,e,k){return function(){function m(){this.id=0;this.ray=new k.Ray;this.matrixWorld=new k.Matrix4;this.disabled=!1;this.handedness="";this.Sn=this.tL=!1;this.IFa=0;this.lu=void 0;this.hidden=this.yr=this.pressed=!1;this.Tb=new k.Vector2;this.IG=!1;this.id=m.eT++}m.eT=0;return m}()}); define("hO","require exports pu w fY jv three.mod".split(" "),function(a,e,k,m,l,c,h){var g=[0,1];a=function(){function b(){}b.initialize=function(){this.XR.O.bind(k.ba,this.bf.bind(this),this,!0);this.XR.O.bind(k.Zi,this.pB.bind(this),this,!0);this.Qx=this.Qx.bind(this);this.Px=this.Px.bind(this);this.o3=this.o3.bind(this);this.r3=this.r3.bind(this);this.p3=this.p3.bind(this)};b.ob=function(d){this.enabled=d};b.isConnected=function(){return this.q1.some(function(d){return d})};b.AHa=function(d){var f; if(0Date.now()&&this.XR.O.trigger(k.Sf,{pointerState:f})};b.o3=function(d){var f,n;if("gaze"!=d.data.targetRayMode){var q=this.b2(d.target);this.r$a(q);null===(f=this.Dm)||void 0===f?void 0:f.add(this.controllers[q]);null===(n=this.Dm)||void 0===n?void 0:n.add(this.pF[q]);this.q1[q]=!0;this.lBa[q]=d.data.gamepad;this.qF[q].handedness=d.data.handedness;this.XR.O.trigger(k.Cla)}};b.oia=function(d){return d.profiles.some(function(f){return 0<=f.indexOf("hand")})};b.r3=function(d){var f,n; d=this.b2(d.target);null===(f=this.Dm)||void 0===f?void 0:f.remove(this.controllers[d]);null===(n=this.Dm)||void 0===n?void 0:n.remove(this.pF[d]);this.q1[d]=!1;this.lBa[d]=null;this.XR.O.trigger(k.Dla)};b.p3=function(d){var f=this.f4a(d.target),n=this.tx[f];this.v$a();n.setEnvironmentMap(this.oha);this.P4?this.yEa(n):this.BGa(n);n.userData.oia=this.oia(d.target.motionController.xrInputSource);n.userData.Fh=!0;this.kJa(f)};b.kJa=function(d){var f=this.tx[d];f.userData.Fh&&(d=this.qF[d],f.visible= f.userData.oia||d.hidden?!1:!0)};b.yEa=function(d){d&&d.traverse(function(f){if("isMesh"in f&&f.material){var n=f.material;if(!n.userData.Rr){var q=n.userData.D6a;q||(q=n.clone(),n.userData.D6a=q,q.userData.Rr=n,q.transparent||(q.transparent=!0,q.opacity=1,"map"in q&&q.map&&(q.map=this.R2a(q.map)),q.needsUpdate=!0));f.material=q}void 0===f.userData.ija&&(f.userData.ija=f.renderOrder);f.renderOrder=1E3}}.bind(this))};b.BGa=function(d){d&&d.traverse(function(f){if("isMesh"in f&&f.material){var n=f.material; n.userData.Rr&&(f.material=n.userData.Rr);void 0==f.userData.ija&&(f.renderOrder=f.userData.ija)}}.bind(this))};b.R2a=function(d){if(!d)return null;var f=document.createElement("canvas");f.width=d.image.width;f.height=d.image.height;var n=f.getContext("2d");n.drawImage(d.image,0,0);for(var q=n.getImageData(0,0,f.width,f.height),p=q.data,r=0;rthis.w7;)this.LC-=this.w7;this.nOa(this.LC/this.w7);this.HI=a.JU;return!0};a.prototype.nqa=function(e,k){this.Nj(this.hqa*k+this.To,0,this.bx,this.H_,0,2*Math.PI);this.Nj(this.hqa*k,0,this.bx,e,0,2*Math.PI)};a.prototype.vQa=function(e){this.Nj(this.dW-.5*(this.El+this.To),this.El+this.To,this.H_,this.bx,0,2*Math.PI);this.Nj(this.dW-.5*this.El,this.El,this.sOa,this.bx,0,2*Math.PI); this.Nj(this.dW-.5*this.El,this.El,this.tOa,this.bx,.5*Math.PI,(.5+2*e)*Math.PI)};a.prototype.qQa=function(e,k){this.Nj(this.fpa-.5*(this.El+this.To),this.El+this.To,this.H_,this.bx,0,2*Math.PI);this.Nj(this.fpa-.5*this.El,this.El,this.qOa,this.bx,0,2*Math.PI);e=(.5+2*e)*Math.PI;for(k=(.5+2*k)*Math.PI;ke){var k=e/.25;e=.5*k}else.5>e?(k=(e-.25)/.25,e=.5+k,k=1+.5*k):.75>e?(k=(e-.5)/.25,e=.5+.5*k,k=.5+k):(e=k=(e-.75)/.25,k=.5+ .5*k);this.qQa(e,k)};a.prototype.kWa=function(e){this.NH();this.vQa(e)};a.$la="initial";a.JU="changing";a.aa="over";return a}()});define("nl",["require"],function(){return{Sbb:"single",FRONT:"front",Za:"left",BACK:"back",sb:"right",Dc:"top",wc:"bottom"}}); define("jF",["require","nl"],function(a){a=a("nl");var e={},k=Math.PI/180,m=new THREE.Matrix4;new THREE.Matrix4;var l=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];e.Dg=500;e.p5=.5*e.Dg;e.xLa=e.Dg;e.cna=[a.FRONT,a.sb,a.BACK,a.Za,a.Dc,a.wc];e.rBa=function(c,h){for(var g=e.Dg,b=e.p5,d=c*h,f=this.Av(),n=[],q=0,p=6*d;q=v||(t=g.origin.x+g.direction.x*v-f.x,u=g.origin.y+ g.direction.y*v-f.y,f=g.origin.z+g.direction.z*v-f.z,g=(h*t+d*u+p*f)/(h*h+d*d+p*p),f=(n*t+r*u+q*f)/(n*n+r*r+q*q),h=c.faceVertexUvs[0][0][0],d=c.faceVertexUvs[0][1][2],c=c.faceVertexUvs[0][0][1],0>g||1f||1=w))){u=b.origin.x+b.direction.x*w-f.x;v=b.origin.y+b.direction.y*w-f.y;b=b.origin.z+b.direction.z*w-f.z;if(0!=(f=t*g-n*p))g=(v*g-u*p)/f,p=(v*n-u*t)/-f;else if(0!=(f=q*g-n*r))g=(v*g-u*p)/f,p=(v*n-u*t)/-f;else if(0!=(f=q*p-t*r))g=(b*p-v*r)/f,p=(b*t-v*q)/-f;else return;if(!(0> p||1g||1c;c++){d=l[(c+3)%4];f=l[c];var q=l[(c+1)%4];if(0>=f.z)n[g++]=f;else{if(0>=d.z){var p=l[b++],r=d.z/(d.z-f.z);p.x=d.x+(f.x-d.x)*r;p.y=d.y+(f.y-d.y)*r;p.z=-1E-5;n[g++]=p}0>=q.z&&(p=l[b++],r=f.z/(f.z-q.z),p.x=f.x+(q.x-f.x)*r,p.y=f.y+(q.y-f.y)*r,p.z=-1E-5,n[g++]=p)}}if(2g.x&&-1>b.x&&-1>d.x||1g.y&&-1>b.y&&-1>d.y))return!0}return!1};e.sBa=function(c,h,g,b,d,f,n,q,p){var r=c*k,t=.5*-r+.5*Math.PI,u=h*k,v=.5*(Math.PI-u)-g*k,w=.5*e.xLa,x=64/Math.PI,y=Math.max(2,Math.ceil(r/b*x));x=Math.max(2,Math.ceil(u/d*x));for(var z=b*y,D=d*x,C=this.Av(),E=0,A=[],B=0;B<=D;B++){for(var J=[],H=v+B*u/D,P=0;P<=z;P++){var T=-(t+P*r/z);C.vertices.push(new THREE.Vector3(-w*Math.cos(T)*Math.sin(H),+w*Math.cos(H), +w*Math.sin(T)*Math.sin(H)));J.push(E++)}A.push(J)}for(t=r=0;t=u&&this.XR.O.trigger(k.Sf,{pointerState:this.qc});this.HFa=t;null===(f=this.Pe)||void 0===f?void 0:f.vG(this.Sn&& this.qc.tL,Math.min(1,t/u))}else null===(t=this.Pe)||void 0===t?void 0:t.vG(this.qc.tL);this.qc.Sn||this.qc.yr?this.OS=void 0:void 0==this.OS&&(f=this.XR.sl.U3a,void 0!==f&&(this.OS=r+f));r=(void 0!==this.OS?this.OS:Infinity)-r;null===(n=this.Pe)||void 0===n?void 0:n.ef(this.qc.hidden?0:Math.max(.01,Math.min(1,r/500)));null===(q=this.Pe)||void 0===q?void 0:q.by(this.qc.yr);null===(p=this.Pe)||void 0===p?void 0:p.update()}};d.Qx=function(){this.qc.pressed=!0;this.XR.O.trigger(k.Sy,{pointerState:this.qc})}; d.Px=function(){this.qc.pressed=!1;this.XR.O.trigger(k.Sy,{pointerState:this.qc});this.XR.O.trigger(k.Sf,{pointerState:this.qc})};d.qc=new m;d.enabled=!1;d.camera=null;d.Pe=null;d.Sn=!1;d.sIa=0;d.HFa=0;d.OS=void 0;d.controller=null;return d}();var g=new h.Matrix4,b=new h.Vector3(1,1,1);return a}); define("kD","require exports pu bS hO jy".split(" "),function(a,e,k,m,l,c){return function(){function h(){}h.Y9a=function(g){this.$Fa=g};h.initialize=function(){this.XR.O.bind(k.ba,this.bf.bind(this),this,!0);this.XR.O.bind(k.Zi,this.pB.bind(this),this,!0);this.XR.O.bind(k.Cla,this.O6a.bind(this),this,!0);this.XR.O.bind(k.Dla,this.P6a.bind(this),this,!0)};h.bf=function(){this.nla()};h.pB=function(){};h.O6a=function(){this.nla()};h.P6a=function(){this.nla()};h.nla=function(){var g=this.XR.isPresenting? this.$Fa===m.qM&&l.isConnected()?m.qM:m.XG:null;this.pointerType!==g&&(this.pointerType=g,l.ob(g===m.qM),c.ob(g===m.XG))};h.$Fa=m.qM;h.pointerType=null;return h}()});define("cM",["require","exports"],function(){return function(){return function(){}}()}); define("ck",["require"],function(){return{tl:"data:image/png;base64,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",FKa:"data:image/png;base64,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", sLa:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUsAAAFLCAMAAABoaV6sAAADAFBMVEUAAAAJCQkDAwMDAwMLCwsFBQXb29qgoKDg4ODy8vJRUVHBwcH19fWXl5fZ2djW1tX5+fny8vLY2Njp6el5eXnV1dSwsK/v7+/Ly8vu7u6goKDu7u7ExMO1tbTOzs10dHO6urnJycnAwL/Z2djQ0dDIyMja2tktnuotmez09PQso+koYMf8/Pwule3v7+8sp+cvke/6UFPOFR4nZcWsrKwrr+Urq+br7OwqtOMvi/EnasQncMfn6Ocoe8zj4+MqueLDw8QndckoeMongMwnbMYog8/d3dwojtModM3g4OAohtApktUomNUni9ApndgpsOAofNApptspq94qqOEocMssmOUqmdowh/EpcdEpodkpd9Eqf9cqitgqj9kro+MqdNYpidQpldkrnuMretgse90rbdUpbMwqa9Epf9MoZ8krmd8qhtsqg9kqnd4qot4tlegrkt8theUqZ88skeQrjd0pZMwtf+QugOkteOIsjeIphdUshuAsgd4ti+YrcNktkOgsdN4uiesqetQsdtru8vUujusvgu7Hx8jR0tMog9MveufMzc0snecrgdsWQG8sieEolNEqktvg6/UrleHM4fXn7/UobMnX5/W7v8Z3uPIqitwaS4AuhenA3PRcqfCcyvMgd6ao0PSEvvJPp+9Hm++11fORxfNts/FskMk5mO8caI9lr/Cwucijs8sklcOEn8mZq8hTne8ecZo2bsgwaMcbXIQ7n+1EpO5GeMo/cshhicmvv9SaueSpwuNnldXGzNMkhMEnoM4/gdl1pOZlnOfM1d9Vg8shYaq1yeNNfMdAhuV4l8kdUpTe5OrS3OeOpcpAju62trcghq3gMDY4d9IkY7gijrcifLRUkOhKjdmBrd0fWp+8xdKJsejAzd7E0+aTsNZ5oNTwVlrDHid8hZ4wWX1bjtVCpdSpqquINUgldb2sJTOipaqIlaFefZfMZXNrjLRLaoo1aI1kRl6an6W5b3s+UnLdWmPlu7ybdpBVmr+yhYlYU3CLmraxbYKtSmBvYR20AAAAJnRSTlMADRUdLSTtHFmoOi7dUODF681AbUnWbL+wlWSAmnm8NIajjKeLetZ4Pp0AAF5LSURBVHja7JpLbuJAEIbDChBeGHuBEAdIWspIs+UkuVCf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", vM:"data:image/png;base64,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", CLa:"data:image/png;base64,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", o5:"data:image/png;base64,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", Ry:"data:image/png;base64,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", z6:115,nLa:115,hH:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHMAAAB0CAMAAACBmP1sAAAAllBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRkZEAAAAAAAAAAAAAAAAAAAAAAABOTk48PDzz8/Pu7u78/PygoKBmZmbLy8soKCjz8/M7OzsUFBSvr69wcHDo6Oi8vLz4+Pi9vb1fX1/h4eHm5uasrKzZ2dnT09OGhobi4uKAgICBgYHb29vQ0NDKysqampqgoKDIyMj///9mvEG6AAAAMXRSTlO0AMC6Bw4XI+EpHjIsLzTRQvvO82ZP8Mjaz8fp2sGC5+3Wtfh29Jtatd7dqJ2NauWP5Mh4/QAABn9JREFUaN681ulW4zAMBWBPU5hQN2na0J2u7Dt6/5cb20py6+iQnOAp4g+Y5eNKilv15/frR2b/5KOhAk1gsmAHmO3eRVkeHGpKENjlBeqSvwIbagKE52pQfbi6EGygiYBOGwz++mVOSpfVEBMRC4+5K1tDLvc5yydsmNmHaD1rJYnWj9dlTbXWSWJwsO2qasvIoPOs9v46yem0dpPX7TTV7A5YRYc75zwRLTh93zAnK3/aZqku1EtWu5v9SmQwe1+UwHi2j8uazSp3s810YtgBo6a6mkwWYnr9VHD7eLTq+TU/xAWcH02TobaYMiWLAyPq9G5Ctm4/l73v6rAec9gPo5oOM9rF5N2xczTihxPH6xoYRVGN3Tt1Mk2TKmqTKUfJIZN06sTbmxWseqHLsQv7mnGDEbXdLEgX8i13ogC/cVdOze+KqECbTIzShVzYrsY1UEWqqkjV1U831sxOFWiL6Uju69aG3BddhSfLY5d2i3ePNiqG2mT2K1KnRxvyANHjJAv12Ubdcn8FKs2SHOrMLs9s1SqioC7vieiYaofK9io/JUg7yliI7SpPdW3RTLv2SrO+sSDHvK4Qu6ixQRdAhYmYHrkE2aFK9MahZqZypMqP6R4SkN1EPD0lukkT7BHM2v4EkGCBHvVQ7pESZJJuAkiOCvTBoBipMHmYSfpGRCMmIXYMCvROjlTVhjnUH0R0I1L+rL1ronxqRypMr7NZTrRGykD0nmgiuqv8zrph3oemxEznYzNSdBcmYg71XbE/EMOCHohoyrsL04+Z7Yie0dmgYnRvu+sHVd4CpW9FZyGGoqux3V0vqPJiTovHBCnD2/tCtEPQU5OneeSdFWRQd2+Jtl5QVY85/5+msugIQWGeJya6O0PQ0sTS5iJmeFB+XhYICtO+nnxxTCGGBeWJXp9cRgqtTRdtSxvZajqVVa7uk7mMKhOtfSS69Un56/L78lQGXRHlelg1V6G1r0QvTb89H3HNo6j5VP6ne+9eUNjandmgBjKKiSuOouZTaR5Mc+0WwbT3nns475ti9qq/3osaTkWVzU2r5qpqnFt+PwuywYzKQ3kqyaK5j4nZXJhunBu7tTJm81//3kQVm/vFA/VMM86mmD/JiYEuiTbVQFW5QhnRrOlJ+VFOoO7OhckvnddEn2fJqco7NxvC5BV6J3rhmGfJuXbXHy+uKtf2oVghdZac9se2bnFhXiUT3AjhOSU6InowiyvM3ply+mafTfteegHzHDnnRJPkqmYSzc6QEwPtZIbvrarMv7+eU9dM/a94M+hpGIbB6GFFYyvNhQPiAEhIoCEQ4v//Ouic7C39WrI2LviCVAk9HKVpbD/Wz1OZ/5Bn96d58q6smeedMjkTNmvkaWdCy7vC2bf2OTRg2hm/znnLGc95K98y1zz5lsXvCt9PvtmOeeo325jxqhnvJv55cjfhnpCqlSc2rlOebCG9gzVHJndN/3uf3TV3+8ikEuRO7Zsnd2rutxT2LzCraweQWjtQfq5TI6VK+5kaiVowvFs7aoo5WvVtLq8F08kHc79rnWte0rSltRMhr+07avspZozCU/1D3/rJh72dkz0Mfl+xvz7VSF2pT5Z2olfj1zdJvRp2bd6TCs9+zRrStJ4Uu/bIZHHpvXkhU+8t0MGAabtotR6j9PtIlF6qH/KNNJXZJ+rRMyZOPeNTmjBJ1HrjrK5Pb5w0hdlvXWYA1UhmAGzabG1HZh21yDTr+Aj0NEdnOi0znVpomukEjqDB2p5Wl9lVDfRsdhU7mk1pRndfCT2b0TG6Eiarez6LXEpkFhkYgAqTvZvNXCuRh58sWVmYMkEP2aC3BvkAUpgkGqG3Al02Qxek5GnQ7dZME1yBBcjriJxyBQigOBFzoJkTcUjI35i8pf3ymvsxh5q7H4dWkMIUdwjH5aKh79BxUSTMUei+h+LylKUTdXkEKUwiumDiLG2msPXOEpbdTtysTQraExNulukXZTdL1b6bhQ5a6IoOmgZ2X6euHeAJ187WFaQwyxZj+zjTKRS9r8hE8YM6y50kyQJTYokjGokgS0xNFaq5sF8FF7aDCLLAVO7AwG3DmPP72ju/BhTibGaTqFemNpvZ3JNxm8Oo3FzpjedG9Tbq212Ko8i9HdrUTQWTXFHHNXJZ3cfJz5V8Q8dQKb/OjwcJ9sg1cqLBg1bJJOQfLMBFYOPNbBJXA5YjE679SGweEJ5MwlDQ5sY3+a5XYx8CGgsAAAAASUVORK5CYII=", jLa:115,iLa:115,NLa:"data:image/png;base64,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", PLa:115,Xbb:117,RLa:"data:image/png;base64,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", zC:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"}}); define("nH","require jquery.mod lO pu cH gD w".split(" "),function(a){var e=a("jquery.mod"),k=a("lO"),m=a("pu"),l=a("cH"),c=a("gD");a=a("w");if(a.pc()!=a.gM){var h=function(r){return r.requestFullscreen||r.msRequestFullscreen||r.mozRequestFullScreen||r.webkitRequestFullscreen},g=function(){return document.exitFullscreen||document.msExitFullscreen||document.mozCancelFullScreen||document.webkitExitFullscreen},b=document.createElement("div");if(!(a=!(!h(b)&&!g())))try{a=window.self===window.top}catch(r){a= !1}if(a){var d=k.extend(c,function(r){c.call(this);this.wa=r;this.st=h(r);this.VC=g(r);this.W=this.l$();var t=this;e(document).bind("msfullscreenchange webkitfullscreenchange mozfullscreenchange fullscreenchange",function(){t.Dea()});e(window).bind("resize",function(){t.Dea()})});d.gka=function(){};d.prototype.ck=function(){return!(!h(this.wa||b)&&!g())};d.prototype.E1=function(){this.enabled()||this.toggle()};d.prototype.Dr=function(){this.enabled()&&this.toggle()};d.prototype.toggle=function(){this.enabled()? this.VC.call(document):this.st.call(this.wa);this.Dea()};d.prototype.enabled=function(){return this.W&&this.l$()};d.prototype.l$=function(){return this.wa===d.fullscreenElement()};d.prototype.Dea=function(){var r=this.l$();this.W!=r&&(this.W=r,this.trigger(new l(m.ba)))};d.enabled=function(){return!!d.fullscreenElement()};d.fullscreenElement=function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement};d.Dr=function(){d.enabled()&& g().call(document)}}else{d=k.extend(c,function(r){c.call(this);this.wa=r});var f=!0;d.gka=function(r){f="out_of_frame"==r};d.prototype.ck=function(){return f};d.prototype.E1=function(){this.toggle()};d.prototype.Dr=function(){};d.prototype.toggle=function(){f&&window.open(window.self.location.href,"_blank")};d.prototype.enabled=function(){return d.enabled()};d.enabled=function(){return!1};d.fullscreenElement=function(){return null};d.Dr=function(){}}}else{d=k.extend(c,function(r){c.call(this);this.wa= r});d.prototype.ck=function(){return!0};d.prototype.E1=function(){this.enabled()||this.toggle()};d.prototype.Dr=function(){this.enabled()&&this.toggle()};d.prototype.toggle=function(){if(this.enabled())n("fullscreen"),d.Bz=null;else{d.Bz&&d.Bz.Dr();n("fullscreen");var r=q();r.push("fullscreen");p(r);d.Bz=this}this.trigger(new l(m.ba))};d.prototype.enabled=function(){return this==d.Bz};d.enabled=function(){return!!d.fullscreenElement()};d.fullscreenElement=function(){return d.Bz&&d.Bz.wa};d.Dr=function(){d.enabled()&& d.Bz.Dr()};d.gka=function(){};d.Bz=null;var n=function(r){for(var t=q(),u=[],v=0;v',w='',x='',y='',z='';c.rb()?(t+=" margin:0 1vmin; min-width:20vmin; padding:2.2vmin 4vmin; font-size:3.6vmin; font-weight:bold; min-width:30vmin;",n+=" font-size:3.6vmin; line-height:4.3vmin;",q+=" margin:5vmin 0;",p+=" margin:5vmin 0;",r+=" margin:3vmin 0;", u+=" height:4vmin; margin:0 1vmin 0 0; width:4vmin;"):t+=" font-size:19px; padding:17px 34px;";q+=n;e.prototype.H8=function(){this.Jj||(this.Jj=k("
"),this.Jj.css({position:"fixed","z-index":g.MKa,left:0,top:0,margin:0,padding:0,height:"100%",width:"100%","background-color":"rgba(255, 255, 255, 0.99)"}),this.Jj.html(this.WOa),k(this.Jj).find("button").on("click",function(U){this.ZUa(k(U.currentTarget).attr("id"))}.bind(this)))};e.prototype.Nda=function(U,X){var K={},L;for(L in X)K[L]=U.css(L); this.yea.push({$el:U,css:K});U.css(X)};e.prototype.xXa=function(){for(;this.yea.length;){var U=this.yea.pop();U.$el.css(U.css)}};e.prototype.show=function(U,X,K){U||(U=function(){});X||(X=function(){});if(this.CQ){var L=this.kW;this.kW=function(){L();U()};var R=this.ZV;this.ZV=function(){R();X()}}else{this.H8();this.kW=U;this.ZV=X;var Z=this.ORa();if(void 0===Z){this.CQ=!0;var da=this;Z=d.fullscreenElement()||document.body;Z=k(Z);!0!==K?Z.children().each(function(){da.Nda(k(this),{visibility:"hidden"})}): (this.Nda(Z,{overflow:"hidden"}),Z.children().each(function(){da.Nda(k(this),{position:"absolute","z-index":0})}));Z.append(this.Jj)}else this.CQ=!1,Z?this.kW():this.ZV()}};e.prototype.hide=function(){this.CQ&&(this.CQ=!1,this.Jj.detach(),this.xXa())};e.prototype.ORa=function(){var U=f.getItem(this.nra());if("true"==U)return!0;if("false"==U)return!1};e.prototype.sxa=function(U){f.setItem(this.nra(),U?"true":"false")};e.prototype.nra=function(){return this.y1a+"DontDisplay:"+window.location.pathname}; e.prototype.ZUa=function(U){var X=k("#tdvvriw_dontdisplay").is(":checked");this.hide();"tdvvriw_continue"==U?(this.kW(),X&&this.sxa(!0)):"tdvvriw_cancel"==U&&(this.ZV(),X&&this.sxa(!1))};a=m.extend(e,function(){var U=['
\n
',v,'
'+l("use-cardboard-info")+"
",'
","
",'
',"
",'
','
'+l("samsung-internet-vr-app-info")+"
",'
","
",y,"
\n
",'
','","
"].join("\n");e.call(this,"ChromeAppInfoWindow",U)});var D=m.extend(e,function(){var U=['
\n
',v,'
'+l("use-cardboard-info")+"
",'
',"
",'
',"
",'
', '
'+l("samsung-internet-vr-info")+"
","
",y,"
\n
",'
','","
"].join("\n");e.call(this,"SamsungInternetInfoWindow",U)}),C=m.extend(e,function(){e.call(this,"SamsungInternetForGearVRInfoWindow", ['
\n
',y,'
This content requires access to the WebVR API.
To enable WebVR open the "More" menu you\'ll find above this window and then click on the "Labs" item.
','
',"
\n
"].join("\n"))}),E=m.extend(e,function(){var U= ['
','
','
","
"].join("\n");e.call(this,"ExternalVRDisplayVRInfoWindow",U)});E.prototype.H8=function(){e.prototype.H8.call(this);!0===h.gg("vrv")&& this.Jj.css({background:"none"})};var A=m.extend(e,function(){var U=c.browser()==c.nh?"https:"!=window.location.protocol&&"localhost"!=window.location.hostname?"
"+l("giroscope-disabled-http")+"
":l("giroscope-disabled-safari-request-permission").map(function(X){return"
"+X+"
"}).join("\n"):"
"+l("giroscope-disabled-http")+"
";U=['
\n
', '
',U,"
",'
',"
\n
",'
','","
"].join("\n");e.call(this,"GiroscopeDisabledInfoWindow",U)}),B=m.extend(e,function(){var U=['
\n
', v,'
'+l("use-cardboard-info")+'
","
",'
',"
",y,'
It looks like this device is compatible with Gear VR. If you have a Gear VR headset you can view this content using the Carmel Web Browser (by Oculus).
','
',"
\n
"].join("\n");e.call(this,"CarmelInstallationPromptVRInfoWindow", U)}),J=m.extend(e,function(){var U=['
\n
',v,'
'+l("cardboard-v1")+"
",'
","
",'
',"
",'
'+l("cardboard-v2")+"
",'
",x,"
\n
",'
','","
"].join("\n");e.call(this,"CardboardV2InfoWindow",U)}),H=m.extend(e,function(){var U=['
', '
','
","
"].join("\n");e.call(this,"EnterVRInfoWindow",U)}),P=m.extend(e,function(){e.call(this,"PreparingVRInfoWindow",['
','
Preparing VR...
',"
"].join("\n"))}), T=m.extend(e,function(){var U=['
',w,'
\n
',z,'
'+l("use-safari-for-vr")+"
",'
',"
",'
','","
"].join("\n");e.call(this,"UseSafariVRInfoWindow",U)});m=m.extend(e,function(){var U=['
','','
\n
\n
', '','
'+l("rotate-device")+"
","
\n
"].join("\n");e.call(this,"RotateVRInfoWindow",U)});var V={};V.tLa=new D;V.Rbb=new C;V.Qla=new E;V.wbb=new B;V.Bbb=new H;V.Lbb=new P;V.pna=new T;V.vM=new m;V.Vla=new A;V.XJa=new a;V.o5=new J;return V}); define("ed","require lO jquery.mod es ps ck pu w e nZ ou".split(" "),function(a){function e(){this.Rb=!1;this.VQ=null;this.va=this.ra=100;this.haa=this.Bi=void 0;this.iaa=100;this.wa=document.createElement("div");this.wa.style.opacity=0;this.wa.style.display="none";this.wa.style.transition="opacity 0.3s";this.wa.addEventListener("transitionend",this.Sea.bind(this));this.te=document.createElement("div");this.YGa(!0);this.te.style.position="absolute";this.te.style.left=0;this.te.style.top=0;this.te.style.right= 0;this.te.style.bottom=0;this.wa.appendChild(this.te);this.hc=document.createElement("img");this.hc.style.cursor="pointer";this.hc.style.position="absolute";this.hc.style.left="50%";this.hc.style.top="50%";this.hc.style.transform="translate(-50%, -50%)";this.wa.appendChild(this.hc);this.U6=l(this.wa)}function k(t,u){this.reason=t;this.ip=u}var m=a("lO"),l=a("jquery.mod");a("es");a("ps");var c=a("ck"),h=a("pu"),g=a("w"),b=a("e"),d=a("nZ"),f=a("ou"),n=m.extend(b,function(){b.call(this);this.Me("UserInteractionWindow"); this.oc=null;this.tt=[];var t=new d;t.set("duration",500);t.set("easing","cubic_in");var u=new f;u.set("duration",500);u.set("easing","cubic_out");this.qa({contentOpaque:!0,left:0,top:0,right:0,bottom:0,hideEffect:u,showEffect:t,visible:!1});this.bind(h.uc,this.Tfa,this,!0);this.bind(h.pa,this.m1a,this,!0)});n.prototype.Tfa=function(){this.oc&&this.oc.setSize(this.wf(),this.vf())};n.prototype.m1a=function(){var t=this.tt.slice();this.tt=[];this.D0();t.forEach(function(u){u.ip.call(u.context)})};n.prototype.Ib= function(){b.prototype.Ib.call(this);this.oc||(this.oc=new e,this.oc.setSize(this.wf(),this.vf()),this.oc.Ef(!0),this.Vb().append(this.oc.fd().css({position:"absolute",left:0,top:0,right:0,bottom:0,overflow:"hidden"})),this.D0())};n.prototype.gq=function(){b.prototype.gq.call(this);this.getParent().bind(h.uc,this.Tfa,this,!0);n.zMa(this)};n.prototype.En=function(){this.getParent().unbind(h.uc,this.Tfa,this,!0);b.prototype.En.call(this);n.cXa(this)};n.prototype.m8a=function(t){this.st(p,t)};n.prototype.DT= function(t){this.st(q,t)};n.prototype.st=function(t,u){this.tt.push(new k(t,u));this.tt.sort(function(v,w){return r[v.reason]-r[w.reason]});this.D0()};n.prototype.x2a=function(t){this.cancel(p,t)};n.prototype.u2a=function(){this.cancel(q,void 0)};n.prototype.cancel=function(t,u){t=this.HSa(t,u);0<=t&&this.nXa(t)};n.prototype.FH=function(){this.yV(!0)};n.prototype.ez=function(){this.yV(!1)};n.prototype.HSa=function(t,u){for(var v=0;v").css({position:"fixed",bottom:0,left:0,height:"100vh",width:"100vw"}),g=l("
"),b=null,d=null,f=null,n=[],q=null;m.request=function(p){if(p!==b){m.cancel();b=p;var r=c.fullscreenElement()||document.body;d=l(p);f=l(r);g.insertAfter(d);d.appendTo(h);f.children().each(function(){k(l(this),{visibility:"hidden"})});k(d,{position:"absolute",left:0,top:0,width:"100%",height:"100%"});r==document.body?k(h,{position:"fixed",left:0,top:"",right:"",bottom:0,height:"100vh",width:"100vw",margin:0, padding:0}):k(h,{position:"absolute",left:0,top:0,right:"",bottom:"",width:"100%",height:"100%",margin:0,padding:0});h.appendTo(f);e();q=setInterval(e,300)}};m.cancel=function(){if(b){h.detach();d.insertBefore(g);for(g.detach();n.length;){var p=n.pop();p.$el.css(p.css)}f=d=b=null;n=[];clearInterval(q)}};m.enabled=function(p){return b==p};return m}); define("lH","require lO pu cH gD ps ck".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("cH"),l=a("gD"),c=a("ps");a=a("ck");var h=['
','','
\n
\n
'].join("\n"),g=h+['','
'+ c("rotate-device")+"
"].join("\n")+"
\n
",b=h+['','
Please, swipe up to
enter Fullscreen Mode
'].join("\n")+"
\n
";e=e.extend(l,function(){l.call(this);this.$l=this.qo=this.ro=this.wO=this.xO=this.Yaa=this.Zaa= void 0;this.yX=!1;this.xA=this.Nca=this.Xaa=this.Gf=null;this.Pqa=[];this.vaa=this.er=!1;this.Lc=this.Lc.bind(this)});e.prototype.request=function(){this.er||(this.er=!0,this.G8(),window.addEventListener("resize",this.Lc),document.body.appendChild(this.Gf),document.body.appendChild(this.xA),this.VZa=document.documentElement.style.overflow,this.UZa=document.body.style.overflow,document.documentElement.style.overflow="auto",document.body.style.overflow="auto",this.zP())};e.prototype.cancel=function(){this.er&& (this.er=!1,window.removeEventListener("resize",this.Lc),document.body.style.overflow=this.UZa,document.documentElement.style.overflow=this.VZa,document.body.removeChild(this.Gf),document.body.removeChild(this.xA),this.wxa(!1))};e.prototype.enabled=function(){return this.yX};e.prototype.G8=function(){this.Gf||(this.Gf=this.oW({position:"fixed",top:0,left:0,zIndex:9999998},!0),this.Gf.id="tdvminuictr",this.Nca=this.oW({position:"fixed",backgroundColor:"#fff",top:0,left:0,textAlign:"center"},!0,g), this.Gf.appendChild(this.Nca),this.Xaa=this.oW({position:"fixed",backgroundColor:"#fff",top:0,left:0,textAlign:"center"},!0,b),this.Gf.appendChild(this.Xaa),this.xA=this.oW({position:"absolute",top:0,left:0,right:0,height:"999999999vmax",zIndex:9999999},!1),this.xA.id="tdvminuiscrl",this.xA.addEventListener("touchend",this.Lc))};e.prototype.oW=function(d,f,n){var q=document.createElement("div");this.pQ(q,d);void 0!==n&&this.CYa(q,n);f&&this.Pqa.push(q);return q};e.prototype.Lc=function(){[0,250,1E3, 2E3].forEach(function(d){setTimeout(this.dca.bind(this),d)}.bind(this))};e.prototype.dca=function(){this.ro==window.innerWidth&&this.qo==window.innerHeight||this.zP()};e.prototype.zP=function(){this.ro=window.innerWidth;this.qo=window.innerHeight;this.$l=this.ro>this.qo?"landscape":"portrait";if("landscape"==this.$l){this.Zaa&&this.Yaa&&this.gUa(this.Zaa,this.Yaa)&&(!this.xO&&!this.wO||this.hUa(this.xO,this.wO))&&(this.xO=this.ro,this.wO=this.qo);this.bUa()&&(this.xO=this.ro,this.wO=this.qo);this.Zaa= this.ro;this.Yaa=this.qo;var d=this.xO==this.ro&&this.wO==this.qo}else d=!1;this.Pqa.forEach(function(p){p.style.height=this.qo+"px";p.style.width=this.ro+"px"}.bind(this));var f=this.er&&"portrait"==this.$l,n=this.er&&"landscape"==this.$l&&!d,q=this.er&&"landscape"==this.$l;this.pQ(this.Gf,{display:f||n?"block":"none"});this.pQ(this.Nca,{display:f?"block":"none"});this.pQ(this.Xaa,{display:n?"block":"none"});this.pQ(this.xA,{display:q?"block":"none",right:n?0:"99.9%"});this.wxa(d)};e.prototype.wxa= function(d){null!=this.x_&&(clearTimeout(this.x_),this.x_=null);this.yX!=d&&(this.x_=setTimeout(function(){this.x_=null;(this.yX=d)?this.trigger(new m(k.Gp)):this.trigger(new m(k.Gb));this.trigger(new m(k.ba))}.bind(this),d?1E3:0))};e.prototype.bUa=function(){var d=window.innerWidth,f=window.innerHeight,n=Infinity;[[480,320],[960,640],[1136,640],[1334,750],[1920,1080],[2001,1125],[2048,1536],[2172,1125],[2208,1242],[2732,2048],[2436,1125]].forEach(function(q){n=Math.min(n,Math.abs(100-100*d*q[1]/ (f*q[0])))});return 1>=n?!0:!1};e.prototype.gUa=function(d,f){return d*window.innerHeight>f*window.innerWidth};e.prototype.hUa=function(d,f){return d*window.innerHeight>=f*window.innerWidth};e.prototype.pQ=function(d,f){for(var n in f)d.style[n]=f[n]};e.prototype.CYa=function(d,f){d.innerHTML=f};return new e}); define("pz",["require","exports"],function(){return function(){function a(){}a.enable=function(){null===this.wakeLock&&navigator.wakeLock&&navigator.wakeLock.request("screen").then(function(e){this.wakeLock=e}.bind(this))};a.disable=function(){null!==this.wakeLock&&(this.wakeLock.release(),this.wakeLock=null)};a.wakeLock=null;return a}()}); define("kU",["require","jquery.mod","ps","ck"],function(a){function e(){this.Jj=null;this.W=!1;this.Lc=this.Lc.bind(this);this.qo=this.ro=this.$l=void 0}var k=a("jquery.mod"),m=a("ps"),l=a("ck");e.prototype.Av=function(){this.Jj||(this.Jj=k("
"),this.Jj.css({position:"fixed","z-index":1E6,left:0,top:0,margin:0,padding:0,height:"100%",width:"100%","background-color":"rgba(255, 255, 255, 0.99)"}),this.Jj.html(['
','','
\n
\n
','','
'+m("rotate-device")+"
","
\n
"].join("\n")))};e.prototype.show=function(c){this.W||(this.W=!0,this.Av(), k(c).append(this.Jj),k(window).on("resize",this.Lc),this.zP())};e.prototype.hide=function(){this.W&&(this.W=!1,k(window).off("resize",this.Lc),this.Jj.detach())};e.prototype.Lc=function(){[0,250,1E3,2E3].forEach(function(c){setTimeout(this.dca.bind(this),c)}.bind(this))};e.prototype.dca=function(){this.ro==window.innerWidth&&this.qo==window.innerHeight||this.zP()};e.prototype.zP=function(){this.ro=window.innerWidth;this.qo=window.innerHeight;this.$l=this.ro>this.qo?"landscape":"portrait";this.Jj.toggle("landscape"!= this.$l)};return new e}); define("hS","require exports pu w jp di nH u lH pz kU bm".split(" "),function(a,e,k,m,l,c,h,g,b,d,f,n){function q(p,r){p?setTimeout(r,200):r()}return function(){function p(){}p.request=function(r,t){this.XR.isPresenting||this.XR.VS||(this.ol=r,this.Jja=t,this.ol&&(this.XR.VS=!0,this.J6a(),this.requestSession().then(function(u){this.g7a(u);this.ol.xr.setReferenceSpaceType("local-floor");this.ol.xr.setFoveation(this.Jja.O3a);return this.ol.xr.setSession(u)}.bind(this)).then(function(){this.XR.referenceSpace=this.ol.xr.getReferenceSpace(); this.XR.VS=!1;this.h7a()}.bind(this)).catch(function(u){console.error(u);this.XR.VS=!1;this.f7a()}.bind(this))))};p.end=function(){this.XR.session&&this.XR.session.end()};p.requestSession=function(){var r,t=["local-floor","bounded-floor","hand-tracking"];(null===(r=this.ol)||void 0===r?0:r.capabilities.isWebGL2)&&t.push("layers");return navigator.xr.requestSession("immersive-vr",{optionalFeatures:t})};p.J6a=function(){n.ML(!0);this.d9a(this.ol);this.G$a()};p.g7a=function(r){this.fja||(this.fja=this.e7a.bind(this)); this.gja||(this.gja=this.i7a.bind(this));r.addEventListener("end",p.fja);r.addEventListener("select",p.gja)};p.f7a=function(){n.ML(!1);this.DIa()};p.h7a=function(){var r;null===(r=this.ol)||void 0===r?void 0:r.xr.setAnimationLoop(this.Ox.bind(this));n.JHa(this.requestFrame.bind(this),this.y2a.bind(this));n.ML(!1);this.GHa(this.ol,this.Jja);this.ol=null;m.pc()!=m.fM&&f.show(h.fullscreenElement());m.rb()||l.Qla.show(this.XR.qha.bind(this.XR))};p.e7a=function(){var r;this.XR.session&&(this.XR.session.removeEventListener("end", p.fja),this.XR.session.removeEventListener("select",p.gja),null===(r=this.ol)||void 0===r?void 0:r.xr.setAnimationLoop(null),n.q8a(),this.DIa(),this.GHa(null,null))};p.i7a=function(){this.XR.O.trigger(k.Zp)};p.GHa=function(r,t){this.XR.hh!==r&&(this.XR.hh=r,this.XR.sl=t,this.XR.session=r?r.xr.getSession():null,this.XR.isPresenting=!!r,this.XR.BL=r?this.XR.Gja.get(r)||null:null,this.XR.Wx=r?this.XR.Fja.get(r)||null:null,this.pJa(),q(!this.XR.isPresenting,function(){this.XR.O.trigger(k.ba)}.bind(this)))}; p.d9a=function(r){var t=void 0;m.$5a()?t=1:m.PF()?t=1.2545454545454546:m.Af()?t=1.4222222222:m.rb()&&this.XR.fL&&(t=this.XR.O3);t&&r.xr.setFramebufferScaleFactor(t)};p.G$a=function(){var r;g.request(null===(r=this.ol)||void 0===r?void 0:r.domElement);this.XR.fL&&(this.ol.domElement.width=this.ol.domElement.height=100,m.pc()==m.gM?c.addParameter("vr"):d.enable(),m.pc()==m.fM&&b.request())};p.DIa=function(){g.cancel();f.hide();m.rb()||l.Qla.hide();this.XR.fL&&(c.removeParameter("vr"),b.cancel(),d.disable())}; p.Ox=function(r){var t;null!==(t=this.XR.hh)&&void 0!==t&&t.xr.getFrame()&&(this.pJa(),t=this.X1,this.X1=null,this.XR.O.trigger(k.yla),t&&t(r),this.XR.O.trigger(k.Zi))};p.pJa=function(){if(this.XR.session&&this.XR.session.renderState)if(this.XR.session.renderState.baseLayer)this.XR.framebufferWidth=this.XR.session.renderState.baseLayer.framebufferWidth,this.XR.framebufferHeight=this.XR.session.renderState.baseLayer.framebufferHeight;else{var r=this.XR.session.renderState.layers;r&&0=this.Aj&&this.ob(!1)};h.prototype.ob=function(g){this.enabled!=g&&((this.enabled= g)?(this.sc.LHa("Button"),this.a2a()):(this.sc.r8a(),this.Qga(),this.stop(),this.l8a()))};h.prototype.getX=function(){return this.h3};h.prototype.getY=function(){return this.i3};h.prototype.Qr=function(g){this.gh(g);this.enabled&&(this.Qia=this.Oia=g.x,this.Ria=this.Pia=g.y,this.g$a())};h.prototype.lT=function(g){this.Qia=g.x;this.Ria=g.y;this.XL?this.wab():this.Qi&&this.uJa()};h.prototype.gh=function(){this.Qga();this.stop()};h.prototype.WEa=function(){this.gh()};h.prototype.YF=function(){this.Y4= Math.min(this.sc.Ya(),this.sc.Cb())/100};h.prototype.start=function(){this.V2a();this.trigger(k.bo);this.uJa()};h.prototype.stop=function(){this.Qi&&(this.s3a(),this.trigger(k.Tf))};h.prototype.wab=function(){var g=this.Qia-this.Oia,b=this.Ria-this.Pia;Math.sqrt(g*g+b*b)>this.Y4*h.fKa&&this.Qga()};h.prototype.g$a=function(){this.XL=window.setTimeout(this.X$a.bind(this),h.gKa)};h.prototype.Qga=function(){this.XL&&(clearTimeout(this.XL),this.XL=null)};h.prototype.V2a=function(){this.Qi=document.createElement("div"); this.Qi.setAttribute("tdvclass","Button");this.Qi.style.position="absolute";this.Qi.style.width=this.Qi.style.height=Math.round(2*h.Bla*this.Y4)+"px";this.Qi.style.borderRadius="50%";this.Qi.style.backgroundColor="rgba(255, 255, 255, 0.5)";this.Qi.style.transform="translate(-50%, -50%)";this.Qi.style.zIndex="1000";this.Qi.style.left=this.Oia+"px";this.Qi.style.top=this.Pia+"px";this.parentElement.appendChild(this.Qi);this.nl=document.createElement("div");this.nl.setAttribute("tdvclass","Button"); this.nl.style.position="absolute";this.nl.style.width=this.nl.style.height=Math.round(2*h.pLa*this.Y4)+"px";this.nl.style.borderRadius="50%";this.nl.style.backgroundColor="rgba(255, 255, 255, 0.5)";this.nl.style.transform="translate(-50%, -50%)";this.nl.style.zIndex="1000";this.Qi.appendChild(this.nl)};h.prototype.uJa=function(){var g=this.Qia-this.Oia,b=this.Ria-this.Pia;if(0==g&&0==b)this.i3=this.h3=0;else{var d=Math.atan2(-b,g);g=Math.min(Math.sqrt(g*g+b*b)/(this.Y4*h.Bla),h.QKa);this.h3=Math.cos(d)* g;this.i3=Math.sin(d)*g}this.nl.style.left=(50+50*this.h3).toFixed(2)+"%";this.nl.style.top=(50-50*this.i3).toFixed(2)+"%";this.trigger(k.ba)};h.prototype.s3a=function(){var g,b;null===(g=this.nl.parentNode)||void 0===g?void 0:g.removeChild(this.nl);this.nl=null;null===(b=this.Qi.parentNode)||void 0===b?void 0:b.removeChild(this.Qi);this.Qi=null};h.prototype.X$a=function(){this.XL=null;this.start()};h.prototype.a2a=function(){this.sc.bind(k.fb,this.Qr,this,!0);this.sc.bind(k.Xb,this.lT,this,!0);this.sc.bind(k.Eb, this.gh,this,!0);this.sc.bind(k.uc,this.YF,this,!0);this.sc.bind(k.Hy,this.WEa,this,!0);this.YF()};h.prototype.l8a=function(){this.sc.unbind(k.fb,this.Qr,this);this.sc.unbind(k.Xb,this.lT,this);this.sc.unbind(k.Eb,this.gh,this);this.sc.unbind(k.uc,this.YF,this);this.sc.unbind(k.Hy,this.WEa,this)};h.fKa=l.rb()?5:.5;h.gKa=l.rb()?300:600;h.Bla=l.rb()?10:6.6;h.pLa=l.rb()?5:3.3;h.QKa=6;return h}(m)}); define("dN","require jquery.mod es pu ny bm hR".split(" "),function(a){function e(n){this.Pka=n;this.element=document.createElement("div");this.Zka=document.createElement("span");this.element.appendChild(this.Zka);this.Zka.innerHTML=n.text.split("
").join("\n").split("\n").map(m).join("
");this.n1=!1}function k(n){this.M=n;this.kR=c.throttle(this.kR.bind(this),100);this.lR=c.throttle(this.lR.bind(this),100);this.wa=document.createElement("div");this.wa.style.position="absolute";this.wa.style.left= 0;this.wa.style.top=0;this.wa.style.right=0;this.wa.style.bottom=0;this.wa.style.zIndex=1;this.wa.style.cursor="inherit";this.wa.style.display="none";this.U6=l(this.wa);this.am=document.createElement("div");this.am.style.position="absolute";this.am.style.left=0;this.am.style.right=0;this.am.style.zIndex=1;this.am.style.cursor="inherit";this.wa.appendChild(this.am);this.EQ=[];this.PQ=[];this.ei=[];this.wca={};this.gK=g.wc;this.M.bind(h.F("subtitlesEnabled"),this.hx,this);k.Kma.forEach(function(q){this.M.bind(h.F(q), this.kR,this)}.bind(this));k.Lma.forEach(function(q){this.M.bind(h.F(q),this.lR,this)}.bind(this));this.hx();this.kR();this.lR()}function m(n){f.innerHTML=n;return f.innerText}var l=a("jquery.mod"),c=a("es"),h=a("pu"),g=a("ny"),b=a("bm"),d=a("hR");k.prototype.clear=function(){this.Xcb(null);this.M&&(this.M.unbind(h.F("subtitlesEnabled"),this.hx,this),k.Kma.forEach(function(n){this.M.unbind(h.F(n),this.kR,this)}.bind(this)),k.Lma.forEach(function(n){this.M.unbind(h.F(n),this.lR,this)}.bind(this)), this.M=null)};k.prototype.fd=function(){return this.U6};k.prototype.ie=function(){return this.wa};k.prototype.tga=function(n){0>this.EQ.indexOf(n)&&(this.EQ.push(n),n.bind(h.F("activeSubtitles"),this.xY,this,!0),this.xY())};k.prototype.Eja=function(n){var q=this.EQ.indexOf(n);0<=q&&(this.EQ.splice(q,1),n.unbind(h.F("activeSubtitles"),this.xY,this,!0),this.xY())};k.prototype.xY=function(){var n=[];this.EQ.forEach(function(q){n=n.concat(q.get("activeSubtitles")||[])});this.cZa(n)};k.prototype.hx=function(){this.W= this.M.get("subtitlesEnabled");this.Gfa()};k.prototype.kR=function(){this.gK=this.NN("subtitlesVerticalAlign",[g.Dc,g.se,g.wc],g.wc);this.am.style["text-align"]=this.NN("subtitlesHorizontalAlign",[g.Za,g.sb,g.Re],g.Re);this.am.style.bottom=this.gK==g.wc?this.Bk("subtitlesBottom",0):"";this.am.style.top=this.gK==g.Dc?this.Bk("subtitlesTop",0):this.gK==g.se?"50%":"";this.am.style.transform=this.gK==g.se?"translate(0, -50%)":"";this.Gfa()};k.prototype.lR=function(){var n={};n["background-color"]=this.I$("subtitlesBackgroundColor", "subtitlesBackgroundOpacity");n.border=[this.Bk("subtitlesBorderSize"),"solid",this.Ai("subtitlesBorderColor")].join(" ");n["box-shadow"]=this.Ai("subtitlesShadow",!1)?[this.Bk("subtitlesShadowHorizontalLength"),this.Bk("subtitlesShadowVerticalLength"),this.Bk("subtitlesShadowBlurRadius"),this.I$("subtitlesShadowColor","subtitlesShadowOpacity","#000000",0)].join(" "):"";n.display="inline-block";n["font-family"]=d.xx(this.Ai("subtitlesFontFamily"));n["font-size"]=this.Bk("subtitlesFontSize");n.color= this.Ai("subtitlesFontColor");n["font-weight"]=this.NN("subtitlesFontWeight","bold bolder lighter 100 200 300 400 500 600 700 800 900 normal".split(" "),"normal");n["font-style"]=this.NN("subtitlesFontStyle",["italic","normal"],"normal");n["margin-bottom"]=this.Bk("subtitlesGap");n.opacity=this.Ai("subtitlesOpacity");n["padding-top"]=this.Bk("subtitlesPaddingTop");n["padding-bottom"]=this.Bk("subtitlesPaddingBottom");n["padding-left"]=this.Bk("subtitlesPaddingLeft");n["padding-right"]=this.Bk("subtitlesPaddingRight"); n.position="relative";n["text-align"]=this.NN("subtitlesHorizontalAlign",["left","right","center"],"center");n["text-decoration"]=this.Ai("subtitlesTextDecoration",["underline","overline","line-through","none"],"none");n["text-shadow"]=[this.Bk("subtitlesTextShadowHorizontalLength"),this.Bk("subtitlesTextShadowVerticalLength"),this.Bk("subtitlesTextShadowBlurRadius"),this.I$("subtitlesTextShadowColor","subtitlesTextShadowOpacity","#000000",0)].join(" ");this.wca=n;this.oNa()};k.prototype.cZa=function(n){this.PQ= n;this.Gfa()};k.prototype.Gfa=function(){for(var n=this.W?this.PQ:[],q=this.ei.length-1;0<=q;q--){var p=this.ei[q];if(0<=n.indexOf(p.Pka))break;this.am.removeChild(p.element)}for(var r=[],t=!1;0<=q;q--)p=this.ei[q],!p.n1&&0>n.indexOf(p.Pka)&&(p.n1=!0,p.element.style.visibility="hidden",t=!0),r.splice(0,0,p);t&&b.requestFrame(this.spa,this);this.ei=r;var u=this.ei.filter(function(v){return!v.n1}).map(function(v){return v.Pka});n.filter(function(v){return 0>u.indexOf(v)}).forEach(function(v){v=new e(v); this.toa(v);this.gK==g.wc&&0=r.element.clientHeight)n-=r.element.clientHeight,this.am.removeChild(r.element),this.ei.splice(p,1),p--;else{r.element.style.height=r.element.clientHeight- n+"px";break}}q&&b.requestFrame(this.spa,this)};k.prototype.oNa=function(){this.ei.forEach(this.toa.bind(this))};k.prototype.toa=function(n){for(var q in this.wca)n.Zka.style[q]=this.wca[q]};k.prototype.Ai=function(n,q){return this.M.get(n,q)};k.prototype.Bk=function(n,q){n=this.M.get(n,q);isNaN(n)||(n=Math.round(n)+"px");return n};k.prototype.NN=function(n,q,p){n=this.M.get(n);return 0>q.indexOf(n)?p:n};k.prototype.I$=function(n,q,p,r){n=this.M.get(n,p);q=this.M.get(q,r);return"rgba("+parseInt("0x"+ n.substr(1,2))+", "+parseInt("0x"+n.substr(3,2))+", "+parseInt("0x"+n.substr(5,2))+", "+q+")"};k.Kma=["subtitlesHorizontalAlign","subtitlesVerticalAlign","subtitlesTop","subtitlesBottom"];k.Lma="subtitlesBackgroundColor subtitlesBackgroundOpacity subtitlesBorderColor subtitlesBorderSize subtitlesFontFamily subtitlesFontColor subtitlesFontSize subtitlesFontStyle subtitlesFontWeight subtitlesGap subtitlesOpacity subtitlesPaddingTop subtitlesPaddingBottom subtitlesPaddingLeft subtitlesPaddingRight subtitlesShadow subtitlesShadowBlurRadius subtitlesShadowHorizontalLength subtitlesShadowVerticalLength subtitlesShadowColor subtitlesTextDecoration subtitlesTextShadowBlurRadius subtitlesTextShadowColor subtitlesTextShadowHorizontalLength subtitlesTextShadowOpacity subtitlesTextShadowVerticalLength".split(" "); var f=document.createElement("div");return k}); define("me","require exports lb pu lr oh".split(" "),function(a,e,k,m,l,c){a=function(){function n(q){this.VL=new Map;this.pl=q}n.prototype.add=function(q){c.Ja("PanoramaPlayer",q)?this.VL.set(q,new h(this.pl,q)):c.Ja("VideoPlayer",q)?this.VL.set(q,new g(this.pl,q)):c.Ja("PhotoAlbumPlayer",q)?this.VL.set(q,new b(this.pl,q)):c.Ja("Audio",q)&&this.VL.set(q,new f(this.pl,q))};n.prototype.remove=function(q){var p=this.VL.get(q);p&&(p.clear(),this.VL.delete(q))};return n}();e=function(){function n(q,p){this.pl= q;this.source=p}n.prototype.clear=function(){};return n}();var h=function(n){function q(p,r){p=n.call(this,p,r)||this;p.nF=new d(p.pl);p.Bf=null;p.source.bind(m.F("panorama"),p.cja,p,!0);p.cja();return p}Y(q,n);q.prototype.clear=function(){this.source&&(this.source.unbind(m.F("panorama"),this.cja,this),this.source=null,this.pf(null),this.nF.clear(),this.nF=null)};q.prototype.cja=function(){this.pf(this.source.get("panorama"))};q.prototype.pf=function(p){if(this.Bf!=p){this.Bf&&(this.Bf.unbind(m.F("audios"), this.VF,this),this.pl.Eja(this.Bf));if(this.Bf=p)this.pl.tga(this.Bf),this.Bf.bind(m.F("audios"),this.VF,this,!0);this.VF()}};q.prototype.VF=function(){this.nF.Wja(this.Bf&&this.Bf.get("audios")||[])};return q}(e),g=function(n){function q(p,r){p=n.call(this,p,r)||this;p.video=null;p.source.bind(m.F("video"),p.aG,p,!0);p.source.bind(m.ze,p.aG,p,!0);p.aG();return p}Y(q,n);q.prototype.clear=function(){this.source&&(this.source.unbind(m.F("video"),this.aG,this),this.source.unbind(m.ze,this.aG,this),this.source= null,this.p4(null))};q.prototype.aG=function(){var p;this.p4((null===(p=this.source)||void 0===p?void 0:p.get("state"))!=l.V?this.source.get("video"):null)};q.prototype.p4=function(p){this.video!=p&&(this.video&&this.pl.Eja(this.video),(this.video=p)&&this.pl.tga(this.video))};return q}(e),b=function(n){function q(p,r){p=n.call(this,p,r)||this;p.XF=p.XF.bind(p);p.nF=new d(p.pl);p.vB=null;k.Rt(p.source,"photoAlbum.playList.items",p.XF,!1);k.Rt(p.source,"photoAlbum.playList.selectedIndex",p.XF,!1); p.XF();return p}Y(q,n);q.prototype.clear=function(){this.source&&(k.ca(this.source,"photoAlbum.playList.items",this.XF),k.ca(this.source,"photoAlbum.playList.selectedIndex",this.XF),this.source=null,this.CHa(null),this.nF.clear(),this.nF=null)};q.prototype.XF=function(){var p=this.source.get("photoAlbum");p=(p=p?p.get("playList"):null)&&0<=p.get("selectedIndex")?p.get("items")[p.get("selectedIndex")]:null;this.CHa(p?p.get("media"):null)};q.prototype.CHa=function(p){this.vB!=p&&(this.vB&&this.vB.unbind(m.F("audios"), this.VF,this),(this.vB=p)&&this.vB.bind(m.F("audios"),this.VF,this,!0),this.VF())};q.prototype.VF=function(){this.nF.Wja(this.vB&&this.vB.get("audios")||[])};return q}(e),d=function(){function n(q){this.f1=[];this.e1=new Map;this.pl=q}n.prototype.clear=function(){this.Wja([])};n.prototype.Wja=function(q){this.f1!=q&&(this.f1.forEach(function(p){0<=q.indexOf(p)||(this.e1.get(p).clear(),this.e1.delete(p))}.bind(this)),this.f1=q,this.f1.forEach(function(p){this.e1.has(p)||this.e1.set(p,new f(this.pl, p))}.bind(this)))};return n}(),f=function(n){function q(p,r){p=n.call(this,p,r)||this;p.xB=!1;p.source.bind(m.F("state"),p.Xia,p,!0);p.Xia();return p}Y(q,n);q.prototype.clear=function(){this.source&&(this.XGa(!1),this.source.unbind(m.F("state"),this.Xia,this),this.source=null)};q.prototype.Xia=function(){this.XGa(this.source.get("state")!=l.V)};q.prototype.XGa=function(p){this.xB!=p&&(this.xB&&this.pl.Eja(this.source),(this.xB=p)&&this.pl.tga(this.source))};return q}(e);return a}); define("bD","require es lO lb pu lr cH oh kh gI B fU gk dN me w oO ep bh cY hf oN e".split(" "),function(a){var e=a("es"),k=a("lO"),m=a("lb"),l=a("pu"),c=a("lr"),h=a("cH"),g=a("oh"),b=a("kh"),d=a("gI"),f=a("B"),n=a("fU"),q=a("gk"),p=a("dN"),r=a("me"),t=a("w"),u=a("oO"),v=a("ep"),w=a("bh"),x=a("cY"),y=a("hf"),z=a("oN"),D=a("e"),C=g.define("ViewerArea",z,function(){z.call(this);this.set("childrenInteractionEnabled",!0);this.set("contentOpaque",!0);this.set("creationPolicy",x.pC);this.set("subtitlesEnabled", !0);this.set("checkToolTipOcclusion",!0);this.set("isKeyboardTarget",!1);this.vA=this.Us=this.be=this.MW=this.hi=null;this.ic=new n(this);this.Ft=this.sO=this.Cq=null;this.PQ=new p(this);this.d0=new r(this.PQ);this.Jca=this.mt=!1;this.Ji=c.V;this.Sm=this.vk=null;this.zo=!1;this.eQ=[];this.bind(C.Oma,this.IVa,this,!0);this.bind(C.Nma,this.HVa,this,!0);this.bind(l.fb,this.Zua,this);this.bind(l.fb,this.Zua,this);this.bind(l.qd,this.bWa,this);this.bind(l.fc,this.aWa,this);this.bind(l.jd,this.hZ,this, !0);this.bind(l.Zc,this.ZVa,this,!0);this.GH=new b(this,"buttonPause",v.Ij);this.GH.bind(l.pa,this.jE,this);this.GH.set("state",y.Ee);this.HH=new b(this,"buttonPlay",v.Ij);this.HH.bind(l.pa,this.kE,this);this.HH.set("state",y.Ee);this.SC=new b(this,"buttonPlayPause",v.Ij);this.SC.bind(l.pa,this.EVa,this);this.SC.set("state",y.Ee);this.JH=new b(this,"buttonStop",v.Ij);this.JH.bind(l.pa,this.hA,this);this.JH.set("state",y.Ab);this.ZNa=new b(this,"buttonRestart",v.Ge);this.ZNa.bind(l.pa,this.gA,this); this.NV=new b(this,"buttonToggleSubtitles",v.Ij);this.NV.bind(l.Fj,function(){this.set("subtitlesEnabled",!0)},this,!0);this.NV.bind(l.zl,function(){this.set("subtitlesEnabled",!1)},this,!0);this.bind(l.F("subtitlesEnabled"),function(){this.NV.set("pressed",this.get("subtitlesEnabled"))},this);this.NV.set("pressed",this.get("subtitlesEnabled"));(new b(this,"buttonVRView",v.Ge)).bind(l.pa,function(){this.set("viewMode","vr")},this,!0);this.NTa=k.tp(this.k1a,this);this.bind(l.wl,this.YVa,this,!0);this.bind(C.cV, this.$Va,this,!0);u.O.bind(l.ba,function(){this.set("viewMode",u.isPresenting?"vr":"standard");this.trigger(C.g6)},this,!0)});C.prototype.play=function(){this.kE()};C.prototype.pause=function(){this.jE()};C.prototype.stop=function(){this.hA()};C.prototype.restart=function(){this.gA()};C.Ec={progressBackgroundColor:void 0,progressBackgroundColorDirection:void 0,progressBackgroundColorRatios:void 0,progressBackgroundOpacity:void 0,progressBarBackgroundColor:void 0,progressBarBackgroundColorDirection:void 0, progressBarBackgroundColorRatios:void 0,progressBarBorderColor:void 0,progressBarBorderRadius:void 0,progressBarBorderSize:void 0,progressBarOpacity:void 0,progressBorderColor:void 0,progressBorderRadius:void 0,progressBorderSize:void 0,progressBottom:0,progressHeight:20,progressLeft:0,progressOpacity:void 0,progressPercent:0,progressRight:0,progressVisible:!1,externalPlaybackBar:void 0,externalProgressBar:void 0,playbackBarBackgroundColor:void 0,playbackBarBackgroundColorDirection:void 0,playbackBarBackgroundOpacity:void 0, playbackBarBorderColor:void 0,playbackBarBorderRadius:void 0,playbackBarBorderSize:void 0,playbackBarBottom:10,playbackBarHeight:void 0,playbackBarWidth:void 0,playbackBarLeft:void 0,playbackBarOpacity:void 0,playbackBarRight:void 0,playbackBarLiveDragging:void 0,playbackBarDuration:100,playbackBarPosition:0,playbackBarRollOverDisplay:!1,plabackBarSteps:void 0,plabackBarSelectedStep:void 0,playbackBarVisible:!1,playbackBarProgressBackgroundColor:void 0,playbackBarProgressBackgroundColorDirection:void 0, playbackBarProgressBackgroundColorRatios:void 0,playbackBarProgressBorderColor:void 0,playbackBarProgressBorderRadius:void 0,playbackBarProgressBorderSize:void 0,playbackBarProgressOpacity:void 0,playbackBarHeadBackgroundColor:void 0,playbackBarHeadBackgroundColorDirection:void 0,playbackBarHeadBackgroundColorRatios:void 0,playbackBarHeadBorderColor:void 0,playbackBarHeadBorderRadius:void 0,playbackBarHeadBorderSize:void 0,playbackBarHeadOpacity:void 0,playbackBarHeadWidth:void 0,playbackBarHeadHeight:void 0, playbackBarHeadShadow:void 0,playbackBarHeadShadowBlurRadius:void 0,playbackBarHeadShadowColor:void 0,playbackBarHeadShadowHorizontalLength:void 0,playbackBarHeadShadowOpacity:void 0,playbackBarHeadShadowSpread:void 0,playbackBarHeadShadowVerticalLength:void 0,playbackBarStepBackgroundColor:void 0,playbackBarStepBackgroundColorDirection:void 0,playbackBarStepBackgroundColorRatios:void 0,playbackBarStepBorderColor:void 0,playbackBarStepBorderRadius:void 0,playbackBarStepBorderSize:void 0,playbackBarStepOpacity:void 0, playbackBarStepWidth:void 0,playbackBarStepHeight:void 0,playbackBarStepShadow:void 0,playbackBarStepShadowBlurRadius:void 0,playbackBarStepShadowColor:void 0,playbackBarStepShadowHorizontalLength:void 0,playbackBarStepShadowOpacity:void 0,playbackBarStepShadowSpread:void 0,playbackBarStepShadowVerticalLength:void 0,playbackBarStepSelectedBackgroundColor:void 0,playbackBarStepSelectedBackgroundColorDirection:void 0,playbackBarStepSelectedBackgroundColorRatios:void 0,playbackBarStepSelectedBorderColor:void 0, playbackBarStepSelectedBorderRadius:void 0,playbackBarStepSelectedBorderSize:void 0,playbackBarStepSelectedOpacity:void 0,playbackBarStepSelectedWidth:void 0,playbackBarStepSelectedHeight:void 0,playbackBarStepSelectedShadow:void 0,playbackBarStepSelectedShadowBlurRadius:void 0,playbackBarStepSelectedShadowColor:void 0,playbackBarStepSelectedShadowHorizontalLength:void 0,playbackBarStepSelectedShadowOpacity:void 0,playbackBarStepSelectedShadowSpread:void 0,playbackBarStepSelectedShadowVerticalLength:void 0, subtitlesBackgroundColor:"#000000",subtitlesBackgroundOpacity:1,subtitlesBorderColor:void 0,subtitlesBorderSize:0,subtitlesBottom:"10%",subtitlesFontFamily:void 0,subtitlesFontColor:"#ffffff",subtitlesFontSize:"12px",subtitlesFontStyle:void 0,subtitlesFontWeight:void 0,subtitlesGap:10,subtitlesHorizontalAlign:"center",subtitlesOpacity:1,subtitlesPaddingTop:5,subtitlesPaddingBottom:5,subtitlesPaddingLeft:5,subtitlesPaddingRight:5,subtitlesShadow:!1,subtitlesShadowBlurRadius:void 0,subtitlesShadowHorizontalLength:0, subtitlesShadowVerticalLength:0,subtitlesShadowColor:"#000000",subtitlesShadowOpacity:0,subtitlesTextDecoration:void 0,subtitlesTextShadowBlurRadius:void 0,subtitlesTextShadowColor:"#000000",subtitlesTextShadowHorizontalLength:0,subtitlesTextShadowOpacity:0,subtitlesTextShadowVerticalLength:0,subtitlesTop:void 0,subtitlesVerticalAlign:"bottom",transitionDuration:500,blendingTransitionDuration:void 0,disolveTransitionDuration:void 0,translationTransitionDuration:void 0,translationTransitionEnabled:!0, toolTipEnabled:!0};e.defaults(C.Ec,z.Ec);C.prototype.get=function(E,A){switch(E){case "viewMode":return u.isPresenting?"vr":"standard"}return z.prototype.get.call(this,E,A)};C.prototype.set=function(E,A){"playbackState"==E&&(A=this.Ji,this.get(E)!=A&&(this.Jca=!0,this.NTa()));switch(E){case "toolTipEnabled":this.set("toolTipDisabled",!1===A);break;case "cardboardPointerDistance":this.set("vrPointerDistance",A);break;case "cardboardPointerColor":this.set("vrPointerColor",A);break;case "cardboardPointerSelectionColor":this.set("vrPointerSelectionColor", A);break;case "cardboardPointerSelectionTime":this.set("vrPointerSelectionTime",A);break;case "playbackBarVisible":case "playbackBarRollOverDisplay":this.nR();break;case "viewMode":this.ic.s5a()&&("vr"!=A||u.isPresenting?"vr"!=A&&u.isPresenting&&u.qha():u.F1(this.ic.cB(),this.Vha())),A=u.isPresenting?"vr":"standard"}z.prototype.set.call(this,E,A)};C.prototype.yb=function(){this.so(C.Ec)};C.prototype.Ib=function(){z.prototype.Ib.call(this);null==this.vA&&(this.vA=new D,this.vA.set("width","100%"), this.vA.set("height","100%"),this.vA.set("interactionEnabled",!1),this.vA.set("toolTipDisabled",!0),this.Xa(this.vA),this.vA.Vb().ie().appendChild(this.ic.fd()));null==this.Cq&&(this.Cq=new D,this.Cq.set("width","100%"),this.Cq.set("height","100%"),this.Cq.set("toolTipDisabled",!0),this.Cq.set("interactionEnabled",!1),this.Xa(this.Cq),k.defer(function(){this.Cq.set("cursor",w.Ou)}.bind(this)),this.sO=new q(this,this.Cq.Vb().ie()),this.sO.ob(!1));null==this.Ft&&(this.Ft=new D,this.Ft.set("width","100%"), this.Ft.set("height","100%"),this.Ft.set("toolTipDisabled",!0),this.Ft.set("interactionEnabled",!1),this.Xa(this.Ft),this.Ft.Vb().ie().appendChild(this.PQ.ie()));null==this.hi&&(this.hi=new f,this.Xa(this.hi));null==this.be&&(this.be=new d,this.be.bind(l.ba,this.Gca,this,!0),this.Xa(this.be),this.nR())};C.prototype.Vha=function(){if(this.gAa)return this.gAa;var E=new u.OLa;m.ea(this,"vrGazePointerHideTime vrFoveation vrPointerColor vrPointerDistance vrPointerOverColor vrPointerSelectionColor vrPointerSelectionTime".split(" "), function(){E.U3a=this.get("vrGazePointerHideTime");E.O3a=this.get("vrFoveation");E.qja=this.get("vrPointerColor");E.B7a=this.get("vrPointerDistance");E.TFa=this.get("vrPointerOverColor");E.sja=this.get("vrPointerSelectionColor");E.E7a=this.get("vrPointerSelectionTime")}.bind(this),!0);return this.gAa=E};C.prototype.w4a=function(){return this.be};C.prototype.mk=function(){z.prototype.mk.call(this);for(var E=[],A=this.eQ.length-1;0<=A;A--)E.push(this.eQ[A].j);this.Ft&&E.push(this.Ft);this.Cq&&E.push(this.Cq); this.be&&E.push(this.be);this.hi&&E.push(this.hi);var B=this.nb();E=E.filter(function(J){return 0<=B.indexOf(J)});B=B.filter(function(J){return-1==E.indexOf(J)}).concat(E);B.forEach(function(J,H){J&&this.Aha(J)!=H&&this.Un(J,H)}.bind(this))};C.prototype.ab=function(){this.L("externalProgressBar")&&((this.MW=this.B("externalProgressBar"))?this.removeChild(this.hi):this.Xa(this.hi),this.T("externalProgressBar"),e(C.Qna).each(function(A){this.LE(A)},this));this.vc(C.bMa,C.Fna,[this.hi],!0,!0);var E= [this.hi];this.MW&&E.push(this.MW);this.vc(C.Qna,C.Rna,E,!0,!0);this.L("externalPlaybackBar")&&(this.Us&&this.Us.unbind(l.ba,this.Gca,this,!0),(this.Us=this.B("externalPlaybackBar"))?this.removeChild(this.be):this.Xa(this.be),this.nR(),this.Us&&this.Us.bind(l.ba,this.Gca,this,!0),this.T("externalPlaybackBar"),e(C.Mna).each(function(A){this.LE(A)},this));this.vc(C.aMa,C.Ena,[this.be],!0,!0);E=[this.be];this.Us&&E.push(this.Us);this.vc(C.Mna,C.Nna,E,!0,!0);z.prototype.ab.call(this)};C.prototype.k1a= function(){this.Jca&&(this.Jca=!1,this.GH.set("state",this.Ji==c.Ob?y.Ab:y.Ee),this.HH.set("state",this.Ji==c.PLAYING||this.Ji==c.Ob?y.Ab:y.Ee),this.SC.set("state",this.Ji==c.PLAYING?y.Ab:y.Ee),this.JH.set("state",this.Ji==c.V?y.Ab:y.Ee))};C.prototype.Cd=function(E){this.Ji=E;this.set("playbackState",E)};C.prototype.hZ=function(){C.mj(this)};C.prototype.ZVa=function(){C.lj(this)};C.prototype.jE=function(){this.Ji==c.Ob?this.Nk():this.Vq()};C.prototype.kE=function(){this.Nk()};C.prototype.EVa=function(){this.Ji== c.PLAYING?this.Vq():this.Nk()};C.prototype.hA=function(){this.Wo()};C.prototype.gA=function(){this.Wo();this.Nk()};C.prototype.YVa=function(){if(!this.vk||!this.vk.Oga())switch(this.get("doubleClickAction")){case "toggle_fullscreen":var E=this.Db().jj;E&&E.ck()&&E.toggle()}};C.prototype.$Va=function(E){this.eQ.forEach(function(A){this.d0.remove(A)}.bind(this));this.eQ=E.data.players;this.eQ.forEach(function(A){this.d0.add(A)}.bind(this));this.Ud()};C.prototype.Nk=function(){this.Sm&&this.Sm.play()}; C.prototype.Vq=function(){this.Sm&&this.Sm.pause()};C.prototype.Wo=function(){this.Sm&&this.Sm.stop()};C.prototype.IVa=function(E){this.mxa(E.data.player)};C.prototype.HVa=function(E){this.vk==E.data.player&&this.mxa(null)};C.prototype.Zua=function(){C.zp(this)};C.prototype.bWa=function(){this.zo=!0;this.nR()};C.prototype.aWa=function(){this.zo=!1;this.nR()};C.prototype.nR=function(){this.be&&this.be.set("visible",this.get("playbackBarVisible")&&(this.zo||!this.get("playbackBarRollOverDisplay")|| t.N4()))};C.prototype.mxa=function(E){this.vk!=E&&(this.set("playbackBarVisible",!1),this.vk&&this.vk.zp(!1),this.Sm&&this.Sm.unbind(l.F("state"),this.j7,this),this.HWa=this.vk,(this.vk=E)&&this.vk.zp(!!this.mn),(this.Sm=this.vk&&this.vk.gOa?this.vk:null)&&this.Sm.bind(l.F("state"),this.j7,this,!0),this.j7())};C.prototype.zp=function(E){this.mn=E;this.set("isKeyboardTarget",E);this.vk&&this.vk.zp(!!this.mn)};C.prototype.mbb=function(){return!this.HWa};C.prototype.j7=function(){this.Sm?this.Cd(this.Sm.get("state")): this.Cd(c.V)};C.prototype.Gca=function(){var E=(this.Us?this.Us:this.be).get("position");this.trigger(new h(C.Z5,{position:E}))};C.Fna={progressBackgroundColor:"backgroundColor",progressBackgroundColorDirection:"backgroundColorDirection",progressBackgroundColorRatios:"backgroundColorRatios",progressBackgroundOpacity:"backgroundOpacity",progressBarBackgroundColor:"barBackgroundColor",progressBarBackgroundColorDirection:"barBackgroundColorDirection",progressBarBackgroundColorRatios:"barBackgroundColorRatios", progressBarBorderColor:"barBorderColor",progressBarBorderRadius:"barBorderRadius",progressBarBorderSize:"barBorderSize",progressBarOpacity:"barOpacity",progressBorderColor:"borderColor",progressBorderRadius:"borderRadius",progressBorderSize:"borderSize",progressHeight:"height",progressOpacity:"opacity",progressBottom:"bottom",progressLeft:"left",progressRight:"right"};C.bMa=e(C.Fna).keys();C.Rna={progressPercent:"percent",progressVisible:"visible"};C.Qna=e(C.Rna).keys();C.Ena={playbackBarBackgroundColor:"backgroundColor", playbackBarBackgroundColorDirection:"backgroundColorDirection",playbackBarBackgroundOpacity:"backgroundOpacity",playbackBarBorderColor:"borderColor",playbackBarBorderRadius:"borderRadius",playbackBarBorderSize:"borderSize",playbackBarBottom:"bottom",playbackBarHeight:"height",playbackBarWidth:"width",playbackBarLeft:"left",playbackBarOpacity:"opacity",playbackBarRight:"right",playbackBarLiveDragging:"liveDragging",playbackBarProgressBackgroundColor:"barBackgroundColor",playbackBarProgressBackgroundColorDirection:"barBackgroundColorDirection", playbackBarProgressBackgroundColorRatios:"barBackgroundColorRatios",playbackBarProgressBorderColor:"barBorderColor",playbackBarProgressBorderRadius:"barBorderRadius",playbackBarProgressBorderSize:"barBorderSize",playbackBarProgressOpacity:"barOpacity",playbackBarHeadBackgroundColor:"playheadBackgroundColor",playbackBarHeadBackgroundColorDirection:"playheadBackgroundColorDirection",playbackBarHeadBackgroundColorRatios:"playheadBackgroundColorRatios",playbackBarHeadBorderColor:"playheadBorderColor", playbackBarHeadBorderRadius:"playheadBorderRadius",playbackBarHeadBorderSize:"playheadBorderSize",playbackBarHeadOpacity:"playheadOpacity",playbackBarHeadWidth:"playheadWidth",playbackBarHeadHeight:"playheadHeight",playbackBarHeadShadow:"playheadShadow",playbackBarHeadShadowBlurRadius:"playheadShadowBlurRadius",playbackBarHeadShadowColor:"playheadShadowColor",playbackBarHeadShadowHorizontalLength:"playheadShadowHorizontalLength",playbackBarHeadShadowOpacity:"playheadShadowOpacity",playbackBarHeadShadowSpread:"playheadShadowSpread", playbackBarHeadShadowVerticalLength:"playheadShadowVerticalLength",playbackBarStepBackgroundColor:"stepBackgroundColor",playbackBarStepBackgroundColorDirection:"stepBackgroundColorDirection",playbackBarStepBackgroundColorRatios:"stepBackgroundColorRatios",playbackBarStepBorderColor:"stepBorderColor",playbackBarStepBorderRadius:"stepBorderRadius",playbackBarStepBorderSize:"stepBorderSize",playbackBarStepOpacity:"stepOpacity",playbackBarStepWidth:"stepWidth",playbackBarStepHeight:"stepHeight",playbackBarStepShadow:"stepShadow", playbackBarStepShadowBlurRadius:"stepShadowBlurRadius",playbackBarStepShadowColor:"stepShadowColor",playbackBarStepShadowHorizontalLength:"stepShadowHorizontalLength",playbackBarStepShadowOpacity:"stepShadowOpacity",playbackBarStepShadowSpread:"stepShadowSpread",playbackBarStepShadowVerticalLength:"stepShadowVerticalLength",playbackBarSelectedStepBackgroundColor:"selectedStepBackgroundColor",playbackBarSelectedStepBackgroundColorDirection:"selectedStepBackgroundColorDirection",playbackBarSelectedStepBackgroundColorRatios:"selectedStepBackgroundColorRatios", playbackBarSelectedStepBorderColor:"selectedStepBorderColor",playbackBarSelectedStepBorderRadius:"selectedStepBorderRadius",playbackBarSelectedStepBorderSize:"selectedStepBorderSize",playbackBarSelectedStepOpacity:"selectedStepOpacity",playbackBarSelectedStepWidth:"selectedStepWidth",playbackBarSelectedStepHeight:"selectedStepHeight",playbackBarSelectedStepShadow:"selectedStepShadow",playbackBarSelectedStepShadowBlurRadius:"selectedStepShadowBlurRadius",playbackBarSelectedStepShadowColor:"selectedStepShadowColor", playbackBarSelectedStepShadowHorizontalLength:"selectedStepShadowHorizontalLength",playbackBarSelectedStepShadowOpacity:"selectedStepShadowOpacity",playbackBarSelectedStepShadowSpread:"selectedStepShadowSpread",playbackBarSelectedStepShadowVerticalLength:"selectedStepShadowVerticalLength"};C.aMa=e(C.Ena).keys();C.Nna={playbackBarDuration:"duration",playbackBarPosition:"position",playbackBarSteps:"steps",playbackBarSelectedStep:"selectedStep",playbackBarVisible:"visible"};C.Mna=e(C.Nna).keys();C.cV= "requestByPlayer";C.Oma="playerShow";C.Nma="playerHide";C.Z5="playbackBarPositionChange";C.g6="viewModeChange";C.RD=null;C.zp=function(E){C.RD!=E&&(C.RD&&C.RD.zp(!1),C.RD=E,C.RD&&C.RD.zp(!0))};C.MA=[];C.mj=function(E){var A=C.MA.indexOf(E);-1h.data.players.indexOf(this)&&this.SJ()};c.prototype.PP=function(){};c.prototype.SJ=function(){};c.prototype.KO=function(h){this.trigger(new m(c.oh,{media:h}));this.DQ=this.Yz;this.DQ.trigger(new m(l.Oma,{player:this}))};c.prototype.JO=function(h){this.trigger(new m(c.Nm,{media:h}));this.DQ&&(this.DQ.trigger(new m(l.Nma,{player:this})),this.DQ=null)};return c}); define("kx",["require"],function(){return{XB:"constrained",DKa:"free_drag",Ebb:"free_drag_and_rotation",H6:"sync_with_field_of_view"}}); define("lc",["require","lO","kx","mG"],function(a){function e(){this.Aa=!0;this.Pa=this.Ma=.5;this.rd=0;this.mb=1;this.Mf=m.Mh;this.vn=k.XB;this.pba=this.sba=1;this.Ke=this.Le=this.Tm=this.Um=100;this.Fn=e.DC}a("lO");var k=a("kx"),m=a("mG");e.prototype.nDa=function(){return this.Fn!==e.DC};e.prototype.mDa=function(){return this.Fn&e.qH?!0:!1};e.prototype.oDa=function(){return this.Fn&e.rH?!0:!1};e.prototype.pDa=function(){return this.Fn&e.GC?!0:!1};e.prototype.lDa=function(){return this.Fn&e.CC?!0: !1};e.prototype.getX=function(){this.Ln();return this.Ma};e.prototype.getY=function(){this.Ln();return this.Pa};e.prototype.Lr=function(){this.Ln();return this.mb};e.prototype.OK=function(){this.Ln();return this.rd};e.prototype.setConfiguration=function(l,c,h,g,b){this.Le=l;this.Ke=c;this.Mf=h;this.sba=g;this.pba=b;this.Pa=this.Ma=.5;this.rd=0;this.mb=g;this.Aa=!0};e.prototype.setPosition=function(l,c,h,g){this.Ma=l;this.Pa=c;this.rd=h;this.mb=g;this.Aa=!0};e.prototype.ds=function(l){this.vn=l;this.Aa= !0};e.prototype.setSize=function(l,c){this.Um=l;this.Tm=c;this.Aa=!0};e.prototype.Ln=function(){if(this.Aa){this.Aa=!1;var l=e.DC;this.mb>this.pba?(this.mb=this.pba,l|=e.cMa):this.mbthis.Ke*this.Um?(c=this.Le*this.Tm/this.Ke,h=this.Tm):(c=this.Um,h=this.Ke* this.Um/this.Le);break;default:case m.Mh:this.Le*this.Tm>this.Ke*this.Um?(c=this.Um,h=this.Ke*this.Um/this.Le):(c=this.Le*this.Tm/this.Ke,h=this.Tm)}c*=this.mb;h*=this.mb;var g=Math.min(.5*this.Um/c,.5);c=Math.max(1-.5*this.Um/c,.5);var b=Math.min(.5*this.Tm/h,.5);h=Math.max(1-.5*this.Tm/h,.5)}else g=0,c=1,b=0,h=1;this.Mac&&(this.Ma=c,l|=e.rH);this.Pah&&(this.Pa=h,l|=e.CC);this.vn!=k.XB&&this.vn!=k.DKa||0==this.rd||(this.rd=0,l|=e.iMa); this.Fn=l}};e.DC=0;e.qH=1;e.rH=2;e.GC=4;e.CC=8;e.dMa=16;e.cMa=32;e.iMa=64;return e}); define("gH",["require"],function(){function a(){this.BN=.1;this.tW=this.N8=this.Q8=this.P8=this.Y8=this.M8=this.W8=this.V8=this.ER=this.pga=this.JC=this.u7=this.CR=this.mga=this.BR=this.lga=0}a.prototype.c4=function(e){this.BN=e};a.prototype.yHa=function(e,k,m,l,c,h,g,b){this.lga=e;this.mga=k;this.u7=m;this.pga=l;this.BR+=c;this.CR+=h;this.JC+=g;this.ER+=b};a.prototype.nf=function(){return 0!=this.V8||0!=this.W8||0!=this.M8||0!=this.Y8||0!=this.lga||0!=this.mga||0!=this.u7||0!=this.pga||0!=this.BR|| 0!=this.CR||0!=this.JC||0!=this.ER};a.prototype.Hb=function(e){e=1E3/e;this.P8=this.HW(this.V8/e,this.lga/e+this.BR,this.BN);this.Q8=this.HW(this.W8/e,this.mga/e+this.CR,this.BN);this.N8=this.HW(this.M8/e,this.u7/e+this.JC,this.BN);this.tW=this.HW(this.Y8/e,this.pga/e+this.ER,this.BN);this.V8=this.P8*e;this.W8=this.Q8*e;this.M8=this.N8*e;this.Y8=this.tW*e;this.ER=this.JC=this.CR=this.BR=0};a.prototype.HW=function(e,k,m){return 0==k?this.pg(e,k,m):k};a.prototype.pg=function(e,k,m){e=(k-e)*(1-m);.01> Math.abs(e)&&(e=0);return k-e};return a}); define("gM","require lO pu cH gD mG".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("cH"),l=a("gD");a("mG");var c=e.extend(l,function(){l.call(this);this.zN=7;this.rY=this.Haa=!1;this.tY=void 0;this.rd=0;this.mb=1;this.Ke=this.Le=100;this.RX=1;this.Oca=!0;this.Pca=!1;this.F1a=!0;this.oga=!1;this.gb=null});c.prototype.MT=function(h){this.zN=h};c.prototype.Rc=function(h,g,b,d){this.rd=h;this.mb=g;this.Le=b;this.Ke=d};c.prototype.X9a=function(h){this.Oca=h;this.B_(this.Oca&&!!this.gb)};c.prototype.$r= function(h){this.gb!=h&&(this.B_(!1),this.aea(!1),this.rm(),this.gb=h,this.B_(this.Oca&&!!this.gb),this.aea(this.F1a&&!!this.gb))};c.prototype.rm=function(){this.B_(!1);this.aea(!1);this.gb=null};c.prototype.B_=function(h){this.Pca!=h&&((this.Pca=h)?this.HNa():this.T_a())};c.prototype.aea=function(h){this.oga!=h&&((this.oga=h)?this.KNa():this.V_a())};c.prototype.HNa=function(){this.gb.bind(k.fb,this.$d,this,!0);this.gb.bind(k.Xb,this.Tj,this,!0);this.gb.bind(k.Eb,this.Uj,this,!0)};c.prototype.T_a= function(){this.gb.unbind(k.fb,this.$d,this);this.gb.unbind(k.Xb,this.Tj,this);this.gb.unbind(k.Eb,this.Uj,this)};c.prototype.KNa=function(){this.gb.bind(k.us,this.YD,this,!0);this.gb.bind(k.ZG,this.vD,this,!0)};c.prototype.V_a=function(){this.gb.unbind(k.us,this.YD,this);this.gb.unbind(k.ZG,this.vD,this)};c.prototype.$d=function(h){this.CZa(h)};c.prototype.Tj=function(h){this.Bza(h)};c.prototype.Uj=function(){this.G9()};c.prototype.YD=function(h){this.Nfa(h)};c.prototype.vD=function(h){this.Ofa(h)}; c.prototype.CZa=function(h){this.Haa=!0;this.rY=!1;this.tY=h;this.Bza(h)};c.prototype.Bza=function(h){if(this.Haa){var g=h.pageX-this.tY.pageX,b=h.pageY-this.tY.pageY;this.rY||(Math.sqrt(g*g+b*b)>this.zN?this.rY=!0:g=b=0);this.rY&&(this.tY=h);h=this.rd*Math.PI/180;this.trigger(new m(c.Lp,{xDelta:-((g*Math.cos(h)+b*Math.sin(h))/this.Le),yDelta:-((b*Math.cos(h)-g*Math.sin(h))/this.Ke)}))}};c.prototype.G9=function(){this.Haa=!1};c.prototype.Ofa=function(h){if(this.RX!=h.scale){this.G9();var g=this.RX; this.RX=h.scale;this.trigger(new m(c.Pp,{zoomDelta:this.mb*this.RX/g-this.mb}))}};c.prototype.Nfa=function(h){0!=h.delta&&(this.G9(),this.trigger(new m(c.Pp,{zoomDelta:this.mb*h.aS*.1})))};c.Lp="position change";c.Pp="zoom change";c.Qbb="vieport navigation";c.Pbb="relative navigation";c.Obb="relative exponential navigation";c.Nbb="dragging";return c});define("kg",["require"],function(){return{A6:"rotateClockwise",B6:"rotateCounterClockwise",dv:"zoomIn",ev:"zoomOut",Tf:"stop"}}); define("oe","require lO cH gD mG gH gM kg pu".split(" "),function(a){var e=a("lO"),k=a("cH"),m=a("gD"),l=a("mG"),c=a("gH"),h=a("gM"),g=a("kg");a("pu");var b=e.extend(m,function(d,f){m.call(this);this.j=d;this.oa=f;this.$s=this.UZ=this.W=!1;this.Pa=this.Ma=.5;this.rd=0;this.mb=1;this.Ke=this.Le=100;this.Mf=l.XB;this.nc=new c;this.tb=new h;this.j.Ao?(this.tb.MT(b.e7),this.nc.c4(b.f7)):(this.tb.MT(0),this.nc.c4(1));this.tb.bind(h.Lp,this.uVa,this,!0);this.tb.bind(h.Pp,this.cA,this,!0)});b.prototype.clear= function(){this.tb.unbind(h.Lp,this.Vcb,this,!0);this.tb.unbind(h.Pp,this.cA,this,!0);this.tb.rm();this.j=this.oa=this.nc=this.tb=null};b.prototype.kk=function(d){switch(d){case g.A6:this.Sc(0,0,+b.Z6,0,0,0,0,0);break;case g.B6:this.Sc(0,0,-b.Z6,0,0,0,0,0);break;case g.dv:this.Sc(0,0,0,+b.EM,0,0,0,0);break;case g.ev:this.Sc(0,0,0,-b.EM,0,0,0,0);break;case g.Tf:this.Sc(0,0,0,0,0,0,0,0)}};b.prototype.setPosition=function(d,f,n,q,p,r){this.Ma=d;this.Pa=f;this.rd=n;this.mb=q;this.Le=p;this.Ke=r;this.tb.Rc(this.rd, this.mb,this.Le,this.Ke)};b.prototype.nf=function(){return this.W&&this.nc.nf()};b.prototype.Hb=function(d){this.nc.Hb(d);this.oa.setPosition(this.Ma+this.nc.P8,this.Pa+this.nc.Q8,this.rd+this.nc.N8,this.mb+this.nc.tW);this.Ma=this.oa.getX();this.Pa=this.oa.getY();this.rd=this.oa.OK();this.mb=this.oa.Lr()};b.prototype.QT=function(d){this.$s=d;this.tb.X9a(!this.$s)};b.prototype.ob=function(d){(this.W=d)?this.tb.$r(this.j.getParent()):this.tb.rm()};b.prototype.uVa=function(d){this.Sc(0,0,0,0,d.data.xDelta, d.data.yDelta,0,0)};b.prototype.cA=function(d){this.Sc(0,0,0,0,0,0,0,d.data.zoomDelta)};b.prototype.Sc=function(d,f,n,q,p,r,t,u){this.nc.yHa(d,f,n,q,p,r,t,u);this.ki()};b.prototype.ki=function(){this.trigger(new k(b.Lh))};b.Lh="position change request";b.e7=7;b.f7=.2;b.EM=.5;b.Z6=30;return b}); define("nr","require lO cH gD oW bK gH gM kg pu".split(" "),function(a){var e=a("lO"),k=a("cH"),m=a("gD"),l=a("oW"),c=a("bK"),h=a("gH"),g=a("gM"),b=a("kg");a("pu");var d=e.extend(m,function(f,n){m.call(this);this.j=f;this.oa=n;this.W=!1;this.Pa=this.Ma=.5;this.rd=0;this.mb=1;this.Ke=this.Le=100;this.fa=null;this.B9=!0;this.bd=null;this.rZ=0;this.Ht=this.Xk=this.$w=void 0;this.nc=new h;this.tb=new g;this.j.Ao?(this.tb.MT(d.e7),this.nc.c4(d.f7)):(this.tb.MT(0),this.nc.c4(1));this.tb.bind(g.Pp,this.cA, this,!0)});d.prototype.D9a=function(f,n){this.Le=f;this.Ke=n;this.cK()};d.prototype.iy=function(f){this.bd!=f&&(this.bd=f,this.rZ=void 0,this.cK())};d.prototype.Ap=function(f,n){this.bd==f&&(this.rZ=n,this.cK())};d.prototype.cK=function(){if(this.bd&&void 0!=this.rZ){var f=this.bd.get("x",0)/this.Le;var n=this.bd.get("y",0)/this.Ke;var q=-(this.rZ+this.bd.get("angle",0))}else q=n=f=void 0;this.Ht!=q&&(this.Ht=q,this.ki());if(this.$w!=f||this.Xk!=n)this.$w=f,this.Xk=n,this.MTa(),this.ki()};d.prototype.MTa= function(){this.B9=!0;this.ki()};d.prototype.XE=function(){if(this.B9||this.fa&&this.fa.$e())if(this.B9=!1,this.fa=null,void 0!=this.$w&&void 0!=this.Xk&&void 0!=this.Ht){for(var f=this.Ht-this.rd;180f;)f+=360;this.Ma!=this.$w||this.Pa!=this.Xk?this.fa=new l("quad_in_out",[new c("x",this.Ma,this.$w,1),new c("y",this.Pa,this.Xk,1),new c("angleDif",f,f,360)],500):this.Ht!=this.rd&&(this.fa=new l("quad_in_out",[new c("x",this.Ma,this.Ma,1),new c("y",this.Pa,this.Pa,1),new c("angleDif", f,0,360)],500))}};d.prototype.clear=function(){this.tb.unbind(g.Pp,this.cA,this,!0);this.tb.rm();this.j=this.oa=this.fa=this.nc=this.tb=null};d.prototype.kk=function(f){switch(f){case b.dv:this.Sc(+d.EM,0);break;case b.ev:this.Sc(-d.EM,0);break;case b.Tf:this.Sc(0,0)}};d.prototype.setPosition=function(f,n,q,p,r,t){this.Ma=f;this.Pa=n;this.rd=q;this.mb=p;this.tb.Rc(this.rd,this.mb,r,t)};d.prototype.nf=function(){return this.W&&(this.fa||this.nc.nf()||void 0!=this.$w&&this.Ma!=this.$w||void 0!=this.Xk&& this.Pa!=this.Xk||void 0!=this.Ht&&this.rd!=this.Ht)?!0:!1};d.prototype.Hb=function(f){this.XE();this.fa?(this.fa.Hb(f),this.Ma=this.fa.ib("x"),this.Pa=this.fa.ib("y"),this.rd=this.Ht-this.fa.ib("angleDif")):(void 0!=this.$w&&(this.Ma=this.$w),void 0!=this.Xk&&(this.Pa=this.Xk),void 0!=this.Ht&&(this.rd=this.Ht));this.nc.Hb(f);this.oa.setPosition(this.Ma,this.Pa,this.rd,this.mb+this.nc.tW);this.Ma=this.oa.getX();this.Pa=this.oa.getY();this.rd=this.oa.OK();this.mb=this.oa.Lr()};d.prototype.ob=function(f){(this.W= f)?(this.tb.$r(this.j.getParent()),this.cK()):this.tb.rm()};d.prototype.cA=function(f){this.Sc(0,f.data.zoomDelta)};d.prototype.Sc=function(f,n){this.nc.yHa(0,0,0,f,0,0,0,n);this.ki()};d.prototype.ki=function(){this.trigger(new k(d.Lh))};d.Lh="position change request";d.e7=7;d.f7=.2;d.EM=.5;d.Z6=30;return d}); define("oC","require lO cH gD kx mG lc oe nr pu".split(" "),function(a){var e=a("lO"),k=a("cH"),m=a("gD"),l=a("kx"),c=a("mG"),h=a("lc"),g=a("oe"),b=a("nr"),d=a("pu"),f=e.extend(m,function(n){m.call(this);this.j=n;this.j.bind(d.uc,this.Lc,this);this.vn=l.XB;this.bd=null;this.Pa=this.Ma=.5;this.rd=0;this.mb=1;this.Ta=null;this.l_=this.k_=this.Qt=this.Pt=!1;this.Hn=!0;this.W=!1;this.oa=new h;this.oa.ds(this.vn);this.dc=new g(this.j,this.oa);this.dc.bind(g.Lh,this.Oq,this,!0);this.Oi=new b(this.j,this.oa); this.Oi.bind(b.Lh,this.Oq,this,!0);this.WZ()});f.prototype.clear=function(){this.dc.unbind(g.Lh,this.Oq,this);this.dc.clear();this.dc=null;this.Oi.unbind(b.Lh,this.Oq,this);this.Oi.clear();this.Ta=this.oa=this.Oi=null;this.j.unbind(d.uc,this.Lc,this);this.j=null};f.prototype.stop=function(){this.oe=this.Ta=null;this.W=!1;this.dc.ob(!1);this.Oi.ob(!1);this.Sw(0,0,0)};f.prototype.start=function(n){var q=n.Ta,p=q.get("width",100),r=q.get("height",100),t=q.get("scaleMode",c.Mh),u=q.get("minimumZoomFactor", 1),v=q.get("maximumZoomFactor",1),w=q.get("initialZoomFactor",1);this.Ta=q;this.W=!0;this.oe=n.getItem();this.Sw(0,0,0);this.Oi.D9a(p,r);this.oa.setConfiguration(p,r,t,u,v);this.oa.setPosition(.5,.5,0,w);this.j.ST(this.oe,this.oa.getX(),this.oa.getY(),this.oa.OK(),this.oa.Lr());this.WZ()};f.prototype.kk=function(n){this.dc.kk(n);this.Oi.kk(n)};f.prototype.ds=function(n){this.vn!=n&&(this.vn=n,this.oa.ds(n),this.WZ())};f.prototype.iy=function(n){this.bd!=n&&(this.bd=n,this.Oi.iy(n),this.WZ())};f.prototype.QT= function(n){this.dc&&this.dc.QT(n)};f.prototype.Ap=function(n,q,p,r){this.Oi.Ap(n,q,p,r)};f.prototype.Xx=function(n){this.W&&(this.Oi.nf()?(this.Oi.Hb(n),this.fm(this.Oi.Ma,this.Oi.Pa,this.Oi.rd,this.Oi.mb),this.Qa()):this.dc.nf()?(this.dc.Hb(n),this.fm(this.dc.Ma,this.dc.Pa,this.dc.rd,this.dc.mb),this.Qa()):this.Sw(0,0,0))};f.prototype.Md=function(){if(this.oe){var n=this.j.wS(this.oe),q=this.j.xS(this.oe),p=this.j.h2(this.oe),r=this.j.zCa(this.oe),t=this.j.vS(this.oe),u=this.j.uS(this.oe),v=n-this.Ma, w=q-this.Pa,x=r-this.mb;this.Ma=n;this.Pa=q;this.rd=p;this.mb=r;this.Sw(v,w,x);this.Oi.setPosition(n,q,p,r,t,u);this.dc.setPosition(n,q,p,r,t,u)}};f.prototype.WZ=function(){this.vn==l.H6&&null!=this.bd&&this.bd.get("map")==this.Ta?(this.dc.ob(!1),this.Oi.ob(!0)):(this.dc.ob(!0),this.Oi.ob(!1))};f.prototype.Oq=function(){this.Qa()};f.prototype.Lc=function(){this.oa.setSize(this.j.Ya(),this.j.Cb());this.Qa()};f.prototype.Qa=function(){this.trigger(new k(f.Nb))};f.prototype.fm=function(n,q,p,r){this.j.ST(this.oe, n,q,p,r)};f.prototype.Sw=function(n,q,p){n=!1;this.Qt!=0>p&&(this.Qt=!this.Qt,n=!0);this.Pt!=0this.JC&&(this.l_=!this.l_,n=!0);this.Hn!=(0==p)&&(this.Hn=!this.Hn,n=!0);n&&this.trigger(new k(f.rk,{rotatingClockwise:this.k_,rotatingCounterClockwise:this.l_,zoomingIn:this.Pt,zoomingOut:this.Qt,stopped:this.Hn}))};f.Nb="request frame";f.rk="movement change";return f}); define("kk","require lO cH gD mG lc".split(" "),function(a){var e=a("lO"),k=a("cH"),m=a("gD"),l=a("mG"),c=a("lc"),h=e.extend(m,function(g,b){m.call(this);this.M=g;this.j=b;this.oa=new c;this.Mg=[];this.ua=h.Sh;this.uq=this.Kj=this.Gl=null;this.dh=this.M.get("transitionDuration");this.lm=void 0});h.prototype.ds=function(g){this.oa.ds(g)};h.prototype.dS=function(g){g.TS()&&this.l8();this.Mg.push(g);this.UY()};h.prototype.hide=function(){this.l8();this.Mg.push(null);this.UY()};h.prototype.clear=function(){this.ua= h.Sh;this.l8();this.XWa();this.nda();this.j=null};h.prototype.Md=function(g){this.ua==h.Sh||this.ua!=h.Bl&&this.ua!=h.Gs||(this.lm+=g,g=Math.min(1,this.lm/this.dh),this.ua==h.Bl?this.j.cs(this.uq,g):this.j.cs(this.xW,1-g),this.lmg.length;)g="0"+g;return g};return e}); define("lw","require es lO pu cH gD oj mP bh oW bK".split(" "),function(a){var e=a("es"),k=a("lO"),m=a("pu"),l=a("cH"),c=a("gD"),h=a("oj"),g=a("mP"),b=a("bh"),d=a("oW"),f=a("bK"),n=k.extend(c,function(q,p,r){c.call(this);this.j=q;this.Ta=p;this.oc=r;this.Ba=this.oc.getItem();this.fr=this.oc.NCa();this.gr=this.oc.PCa();this.cw=this.zo=void 0;this.M=this.j.getParent();this.M.bind(m.Xb,this.Kf,this);this.M.bind(m.fc,this.mP,this);this.M.bind(m.fb,this.Fo,this);this.M.bind(m.Eb,this.tw,this);this.M.bind(m.pa, this.sw,this);r.bind(m.F("selected"),this.tva,this);r.bind(m.F("enabled"),this.Lq,this);this.aY=new g(this.j,this.Ta,this.oc,this.oc.get("map",null));this.cY=new g(this.j,this.Ta,this.oc,this.oc.get("rollOverMap",this.oc.get("map",null)));this.dY=new g(this.j,this.Ta,this.oc,this.oc.get("selectedMap",this.oc.get("rollOverMap",this.oc.get("map",null))));this.pX=new g(this.j,this.Ta,this.oc,this.oc.get("image",null));this.qX=new g(this.j,this.Ta,this.oc,this.oc.get("rollOverImage",this.oc.get("image", null)));this.rX=new g(this.j,this.Ta,this.oc,this.oc.get("selectedImage",this.oc.get("rollOverImage",this.oc.get("image",null))));this.nd=this.md=void 0;this.YJ=null;this.mv=[];this.Js=[];this.cN=[];this.Th={};this.Wsa=[];this.Xv=!1;this.Qfa=this.oc.get("useHandCursor");this.fa=null;this.RJ=void 0;this.u_=this.i_=this.JX=0;q=this.oc.get("areas",[]);for(p=0;pp.indexOf(t)&&p.push(t)}return p};n.prototype.Uea=function(q,p){if(q)for(var r= 0;rd&&m.log("Unloading item not loaded");this.me.splice(d,1);this.dXa(g,b)};e.prototype.xf= function(g,b){return this.zd[g].xf(b)};e.prototype.AMa=function(g,b){this.Xz.push(g);g=g.iu();for(var d=0,f=g.length;d");this.S=this.wa.get(0);this.Ca=this.S.getContext("2d")}var k=a("jquery.mod");a=a("w");e.prototype.getItem=function(){return this.Ba};e.prototype.iS=function(m){return this.Ba==m?this:null};e.prototype.P1=function(m){return this.Ba==m?[this]:[]};e.prototype.Dh=function(){this.sa&& this.sa.Jga(this)};e.prototype.ef=function(m){this.IYa(m)};e.prototype.zxa=function(m){this.zO!=m&&(this.zO=m,this.sa&&this.sa.I2())};e.prototype.IYa=function(m){this.Lb!=m&&(this.Lb=m,this.H2())};e.prototype.C_=function(m){this.Uk!=m&&(this.Uk=m,this.H2())};e.prototype.xQ=function(m,l){if(this.ra!=m||this.va!=l)this.ra=m,this.va=l,this.E2()};e.prototype.fm=function(m,l){if(this.gw!=m||this.kr!=l)this.gw=m,this.kr=l,this.H2()};e.prototype.H2=function(){this.sa&&this.sa.F2()};e.prototype.xe=function(){this.EX= !0};e.prototype.ab=function(){this.EX&&(this.EX=!1,this.eh())};e.prototype.eh=function(){};e.prototype.E2=function(){this.CX=!0;this.H2()};e.prototype.R4=function(){if(this.CX){this.CX=!1;if(this.S.width!=this.ra||this.S.height!=this.va)this.S.width=Math.round(this.ra),this.S.height=Math.round(this.va);this.Ca.clearRect(0,0,this.S.width,this.S.height);this.tg()}};e.prototype.tg=function(){};e.prototype.x3a=function(m){if(0this.cc*this.Hd?this.Pd/this.cc:this.Hd/this.Pb;break;default:this.tf=this.Pb*this.Pd>this.cc*this.Hd?this.Hd/this.Pb:this.Pd/ this.cc}this.UP=!0}if(this.UP){this.UP=!1;var d=this.Ya(),f=this.Cb(),n=Math.cos(this.rd*Math.PI/180),q=Math.sin(this.rd*Math.PI/180);this.fm(.5*this.Hd-this.vt*d+(this.vt-this.Ma)*n*d-(this.wt-this.Pa)*q*f,.5*this.Pd-this.wt*f+(this.wt-this.Pa)*n*f+(this.vt-this.Ma)*q*d);this.C_(this.rd);this.xQ(d,f);for(d=0;d");this.wa.css({position:"absolute",left:0,top:0,right:0,bottom:0,"z-index":0,"pointer-events":"none","background-color":"#ffffff"});this.wa.hide()}var k=a("jquery.mod"),m=a("w");e.prototype.fd=function(){return this.wa};e.prototype.trigger=function(){m.browser()!=m.nh&&this.wa.fadeIn(100).fadeOut(100)};return e}); define("my",["require","exports"],function(){return function(){function a(e,k){this.R=e;this.tag=k||"Entity";this.id=this.tag+"_"+a.eT++;this.components={};this.BT={};this.Qka=0}a.prototype.getComponent=function(e){return this.components[e.id]};a.prototype.K=function(e,k){void 0===k&&(k=!1);var m=this.components[e.id];m?this.R.C2a(this,e):k&&(m=this.J(e));return m};a.prototype.J=function(e){if(e.id in this.components)return this.components[e.id];e.P2&&this.Qka++;var k=this.components[e.id]=new e; this.R.M1a(this,e);return k};a.prototype.ha=function(e){var k;void 0===k&&(k=!1);e.id in this.components&&(e.P2&&this.Qka--,k?this.components[e.id].clear():this.BT[e.id]=this.components[e.id],delete this.components[e.id],this.R.uGa(this,e,k))};a.prototype.G2a=function(){for(var e in this.BT)this.BT[e].clear(),delete this.BT[e]};a.prototype.U7a=function(){for(var e in this.components){var k=this.components[e].constructor;k.P2||(this.BT[e]=this.components[e],delete this.components[e],this.R.uGa(this, k,!1))}};a.eT=0;return a}()});define("ch",["require","exports"],function(){return function(){function a(){this.id=a.KUa++;this.u=[]}a.KUa=0;return a}()});define("ll",["require","exports"],function(){return function(){function a(e,k){this.id=a.eT++;this.name=k;this.u=e.u;this.Ld=e.u.slice();this.Da=[];this.kg=[]}a.prototype.D2a=function(){this.Ld.length&&(this.Ld=[]);this.Da.length&&(this.Da=[]);this.kg.length&&(this.kg=[])};a.eT=0;return a}()}); define("bu",["require","exports","ch","ll"],function(a,e,k,m){function l(g){return"string"==typeof g?g:g.id}function c(g,b){0>g.indexOf(b)&&g.push(b);return g}function h(g,b){b=g.indexOf(b);0<=b&&g.splice(b,1);return g}return function(){function g(){this.y5a={};this.G={};this.jG={};this.GK={};this.yx={};this.hG={};this.VR={};this.gG={}}g.prototype.ka=function(b){this.VR[b.id]={};this.VR[b.not]={}};g.prototype.d3a=function(b,d){b=this.GSa(b);d=new m(b,d);this.jG[b.id].push(d);return d};g.prototype.GSa= function(b){var d=this.Q4a(b);if(d=this.y5a[d])return d;d=new k;this.G[d.id]=d;b=b.map(l);this.gG[d.id]={};for(var f=0;fthis.Ub)this.o.get("loop")?this.o.set("currentTime",l%this.Ub):(this.Bb=!0,this.o.trigger(k.Gb),this.o.set("state",m.V));else{for(var c=this.Cl||0;l>this.Wy[c].end;)c++;for(;l c;h--)g=this.mg[h],b=this.KC[h],g.set("currentTime",0),b.stop();this.Cl=c}else b=this.KC[this.Cl],lg;this.mg[this.Cl].set("currentTime",c?2*g-l:l);this.mg[this.Cl].set("currentDirection",c?"backward":"forward");this.o.set("currentTime",this.qh.time);this.Ha()}};return e}); define("jZ",["require","pu","lr"],function(a){function e(l,c,h,g,b){this.o=l;this.pe=c;this.mg=h;this.wk=g;this.Ha=b;this.Yba=this.Yba.bind(this);this.Sba=this.Sba.bind(this);this.F_()}var k=a("pu"),m=a("lr");e.prototype.dispose=function(){this.h0();this.Ha=this.wk=this.mg=this.pe=this.o=null};e.prototype.getAnimations=function(){return this.mg};e.prototype.pS=function(){return this.wk};e.prototype.frame=function(l){0d||(b.splice(d,1),h.remove(g))}};c.Q4=function(h){var g=h.userData.Nka;if(g){var b=.99*-h.far;g.forEach(function(d){d.position.z=b})}};c.L1a=function(h,g){var b=h.userData.Kka|| (h.userData.Kka=[]);0<=b.indexOf(g)||(b.push(g),h.add(g),this.jJa(h))};c.rGa=function(h,g){var b=h.userData.Kka;if(b){var d=b.indexOf(g);0>d||(b.splice(d,1),h.remove(g))}};c.jJa=function(h){var g=h.userData.Kka;if(g){var b=.99*h.far;g.forEach(function(d){d.scale.x=d.scale.y=d.scale.z=b})}};c.K1a=function(h,g){var b=h.userData.Sia||(h.userData.Sia=[]);0<=b.indexOf(g)||(b.push(g),h.add(g),this.iJa(h))};c.qGa=function(h,g){var b=h.userData.Sia;if(b){var d=b.indexOf(g);0>d||(b.splice(d,1),h.remove(g))}}; c.iJa=function(h){var g=h.userData.Sia;if(g){var b=1.001*h.near;g.forEach(function(d){d.position.z=-b;d.scale.x=d.scale.y=d.scale.z=2*Math.tan((1=w;z-=y)D=r(z,v[z],v[z+1],D);D&&b(D,D.next)&&(t(D),D=D.next);return D}function e(v,w){if(!v)return v;w||(w=v);do{var x=!1;if(v.uIa||!b(v,v.next)&&0!==g(v.prev,v,v.next))v=v.next;else{t(v);v=w=v.prev;if(v===v.next)break;x=!0}}while(x||v!==w);return w}function k(v,w,x,y,z,D,C){if(v){if(!C&&D){var E=v,A=E;do 0=== A.z&&(A.z=c(A.x,A.y,y,z,D)),A.Xr=A.prev,A=A.Cm=A.next;while(A!==E);A.Xr.Cm=null;A.Xr=null;E=A;var B,J,H,P,T=1;do{A=E;var V=E=null;for(J=0;A;){J++;var U=A;for(B=H=0;BH?J>T?J:T:H>T?H:T,da=B>X?B>K?B:K:X>K?X:K;for(P=P.next;P!==V;){if(P.x>=L&&P.x<=Z&&P.y>=R&&P.y<=da&&h(J,B,H,X,T,K,P.x,P.y)&&0<=g(P.prev,P,P.next)){V=!1;break a}P=P.next}V=!0}}if(V)w.push(A.Pg/x|0),w.push(v.Pg/x|0),w.push(U.Pg/x|0),t(v),E=v=U.next;else if(v=U,v===E){if(C)if(1===C){v=e(v);C=w;E=x;A=v;do U=A.prev,V=A.next.next,!b(U,V)&&d(U,A,A.next,V)&&q(U,V)&&q(V,U)&&(C.push(U.Pg/E|0),C.push(A.Pg/E|0),C.push(V.Pg/E|0),t(A),t(A.next),A=v=V),A=A.next;while(A!==v);v=e(A); k(v,w,x,y,z,D,2)}else{if(2===C)a:{C=v;do{for(E=C.next.next;E!==C.prev;){if(A=C.Pg!==E.Pg){A=C;U=E;if(V=A.next.Pg!==U.Pg&&A.prev.Pg!==U.Pg){b:{V=A;do{if(V.Pg!==A.Pg&&V.next.Pg!==A.Pg&&V.Pg!==U.Pg&&V.next.Pg!==U.Pg&&d(V,V.next,A,U)){V=!0;break b}V=V.next}while(V!==A);V=!1}V=!V}if(V){if(V=q(A,U)&&q(U,A)){V=A;J=!1;H=(A.x+U.x)/2;T=(A.y+U.y)/2;do V.y>T!==V.next.y>T&&V.next.y!==V.y&&H<(V.next.x-V.x)*(T-V.y)/(V.next.y-V.y)+V.x&&(J=!J),V=V.next;while(V!==A);V=J}V=V&&(g(A.prev,A,U.prev)||g(A,U.prev,U))||b(A, U)&&0E?C>A?C:A:E>A?E:A,U=B>J?B>H?B:H:J>H?J:H,X=c(P,T,w,x,y);w=c(V,U,w,x,y);x=v.Xr;for(v=v.Cm;x&&x.z>=X&&v&&v.z<=w;){if(x.x>=P&&x.x<=V&&x.y>=T&&x.y<=U&& x!==z&&x!==D&&h(C,B,E,J,A,H,x.x,x.y)&&0<=g(x.prev,x,x.next))return!1;x=x.Xr;if(v.x>=P&&v.x<=V&&v.y>=T&&v.y<=U&&v!==z&&v!==D&&h(C,B,E,J,A,H,v.x,v.y)&&0<=g(v.prev,v,v.next))return!1;v=v.Cm}for(;x&&x.z>=X;){if(x.x>=P&&x.x<=V&&x.y>=T&&x.y<=U&&x!==z&&x!==D&&h(C,B,E,J,A,H,x.x,x.y)&&0<=g(x.prev,x,x.next))return!1;x=x.Xr}for(;v&&v.z<=w;){if(v.x>=P&&v.x<=V&&v.y>=T&&v.y<=U&&v!==z&&v!==D&&h(C,B,E,J,A,H,v.x,v.y)&&0<=g(v.prev,v,v.next))return!1;v=v.Cm}return!0}function l(v,w){return v.x-w.x}function c(v,w,x,y, z){v=(v-x)*z|0;w=(w-y)*z|0;v=(v|v<<8)&16711935;v=(v|v<<4)&252645135;v=(v|v<<2)&858993459;w=(w|w<<8)&16711935;w=(w|w<<4)&252645135;w=(w|w<<2)&858993459;return(v|v<<1)&1431655765|((w|w<<1)&1431655765)<<1}function h(v,w,x,y,z,D,C,E){return(z-C)*(w-E)>=(v-C)*(D-E)&&(v-C)*(y-E)>=(x-C)*(w-E)&&(x-C)*(D-E)>=(z-C)*(y-E)}function g(v,w,x){return(w.y-v.y)*(x.x-w.x)-(w.x-v.x)*(x.y-w.y)}function b(v,w){return v.x===w.x&&v.y===w.y}function d(v,w,x,y){var z=n(g(v,w,x)),D=n(g(v,w,y)),C=n(g(x,y,v)),E=n(g(x,y,w)); return z!==D&&C!==E||0===z&&f(v,x,w)||0===D&&f(v,y,w)||0===C&&f(x,v,y)||0===E&&f(x,w,y)?!0:!1}function f(v,w,x){return w.x<=Math.max(v.x,x.x)&&w.x>=Math.min(v.x,x.x)&&w.y<=Math.max(v.y,x.y)&&w.y>=Math.min(v.y,x.y)}function n(v){return 0v?-1:0}function q(v,w){return 0>g(v.prev,v,v.next)?0<=g(v,w,v.next)&&0<=g(v,v.prev,w):0>g(v,w,v.prev)||0>g(v,v.next,w)}function p(v,w){var x=new u(v.Pg,v.x,v.y),y=new u(w.Pg,w.x,w.y),z=v.next,D=w.prev;v.next=w;w.prev=v;x.next=z;z.prev=x;y.next=x;x.prev=y;D.next= y;y.prev=D;return y}function r(v,w,x,y){v=new u(v,w,x);y?(v.next=y.next,v.prev=y,y.next.prev=v,y.next=v):(v.prev=v,v.next=v);return v}function t(v){v.next.prev=v.prev;v.prev.next=v.next;v.Xr&&(v.Xr.Cm=v.Cm);v.Cm&&(v.Cm.Xr=v.Xr)}function u(v,w,x){this.Pg=v;this.x=w;this.y=x;this.next=this.prev=null;this.z=0;this.Cm=this.Xr=null;this.uIa=!1}return function(v,w,x){x=x||2;var y=w&&w.length,z=y?w[0]*x:v.length,D=a(v,0,z,x,!0),C=[];if(!D||D.next===D.prev)return C;var E;if(y){var A=D;var B=x;D=[];var J; y=0;for(J=w.length;y=J.next.y&&J.next.y!==J.y&&(V=J.x+(P-J.y)*(J.next.x-J.x)/(J.next.y-J.y),V<=H&&V>T&&(T=V,B=J.x= J.x&&J.x>=X&&H!==J.x&&h(PB.x)&&(R=J.x===B.x)){R=B;var Z=J;R=0>g(R.prev,R,Z.prev)&&0>g(Z.next,R,R.next)}R&&(B=J,L=V)}J=J.next}while(J!==U)}else B=null}B&&(w=p(B,w),e(w,w.next),A=e(B,B.next))}D=A}if(v.length>80*x){var da=E=v[0];var aa=y=v[1];for(A=x;AE&&(E=w),B>y&&(y=B);E=Math.max(E-da,y-aa);E=0!==E?32767/E:0}k(D,C,x,da,aa,E,0);return C}}); define("oo",["require","exports"],function(){return function(){function a(){}a.G4a=function(e){return e.userData.Rr||e.material};a.PA=function(e,k){if(e.material!=k&&e.userData.Rr!=k){var m=e.userData.aT;this.Mja(e);e.material=k;m&&this.mha(e);e.needsUpdate=!0}};a.mha=function(e){e.userData.aT||(e.userData.aT=!0,e.userData.Rr=e.material,e.material=this.M2a(e.material))};a.Mja=function(e){e.userData.aT&&(this.t3a(e.material),e.material=e.userData.Rr,delete e.userData.Rr,delete e.userData.aT)};a.Iab= function(e){if(e.userData.aT){var k=e.userData.Rr;e=e.material;e.side=k.side;e.depthTest=k.depthTest;e.map&&k.map&&(e.map.colorSpace=k.map.colorSpace);e.emissiveMap&&k.emissiveMap&&(e.emissiveMap.colorSpace=k.emissiveMap.colorSpace)}};a.M2a=function(e){return Array.isArray(e)?e.map(function(k){return k.clone()}):e?e.clone():e};a.t3a=function(e){Array.isArray(e)?e.forEach(function(k){k.dispose()}):e&&e.dispose()};return a}()}); define("p","require lO pu fo lY fS cu oo".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("fo"),l=a("lY"),c=a("fS"),h=a("cu"),g=a("oo");a=e.extend(l,function(){l.apply(this,arguments);this.Sb=this.Sb.bind(this);this.Jb=this.Jb.bind(this);this.jb=this.jb.bind(this);this.S4=this.S4.bind(this)});a.prototype.Wc=function(){this.BAa.u.length&&this.BAa.u.slice().forEach(this.Sb);this.AAa.Da.length&&this.Hab(this.AAa.Da.slice());this.areas.Da.length&&this.areas.Da.slice().forEach(this.Jb);this.CAa.u.length&& this.CAa.u.slice().forEach(this.jb);this.DAa.u.length&&this.DAa.u.slice().forEach(this.jb)};a.prototype.Sb=function(H){H.J(c.vy);this.Jb(H)};a.prototype.Jb=function(H){this.Oab(H);this.sU(H)};a.prototype.Hab=function(H){var P=[];H.forEach(function(T){T.getComponent(c.WB).d1.forEach(function(V){-1===P.indexOf(V)&&P.push(V)})});P.forEach(this.S4)};a.prototype.Oab=function(H){this.Uab(H);this.S4(H)};a.prototype.Uab=function(H){var P=H.getComponent(c.Km),T=P&&P.u||[],V=(P=H.getComponent(c.vy))&&P.u|| [];V.forEach(function(U){if(-1===T.indexOf(U)){var X=U.getComponent(c.WB).d1.filter(function(K){return K!==K});0==X.length?U.ha(c.WB):U.K(c.WB).d1=X}});T.forEach(function(U){-1===V.indexOf(U)&&U.K(c.WB,!0).d1.push(H)})};var b=new THREE.Matrix4,d=[];a.prototype.S4=function(H){var P=H.getComponent(c.Km);for(P=P&&P.u||[];d.lengthH.length)return[];var P=H[0];for(var T=Number.NEGATIVE_INFINITY,V=1;V=T)return[];r.set(P,X);T=Number.NEGATIVE_INFINITY;for(V=0;V=T)return[];f.setFromCoplanarPoints(P,X,K);for(V=0;V.5*Math.PI&&(T=Math.PI-T);if(T>y)return[]}q.copy(H[1]).sub(H[0]).normalize();p.copy(f.normal).cross(q).normalize();P=[];for(V= 0;Vg.indexOf(h)&&g.push(h);h.getComponent(l.$n).qS=this.X3a(h)};a.prototype.H4=function(h){var g=this.g1.get(h.R),b=g.indexOf(h);0<=b&&g.splice(b,1);this.LEa["delete"](h);h.ha(l.Du)}; a.prototype.zka=function(h){h.J(l.Cy).position=new THREE.Vector3;this.KEa.set(h,c.Qc(h));var g=this.OR.get(h.R);g||this.OR.set(h.R,g=[]);0>g.indexOf(h)&&g.push(h)};a.prototype.G4=function(h){var g=this.OR.get(h.R),b=g.indexOf(h);0<=b&&g.splice(b,1);this.KEa["delete"](h);h.ha(l.Cy)};return a}); define("iu","require lO pu lY fS lt oO cu".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("lY"),l=a("fS"),c=a("lt"),h=a("oO"),g=a("cu");a=e.extend(m,function(){m.apply(this,arguments);this.Cka=this.Cka.bind(this);this.Dka=this.Dka.bind(this);this.T4=this.T4.bind(this);this.U4=this.U4.bind(this);this.Uka=this.Uka.bind(this);this.Vka=this.Vka.bind(this);h.O.bind(k.ba,this.bf,this,!0)});a.prototype.Wc=function(){this.EFa.u.length&&this.EFa.u.slice().forEach(this.Cka);this.KFa.u.length&&this.KFa.u.slice().forEach(this.Dka); this.bG.Da.length&&this.bG.Da.slice().forEach(this.T4);this.Vr.Da.length&&this.Vr.Da.slice().forEach(this.U4);this.FFa.u.length&&this.FFa.u.slice().forEach(this.Uka);this.LFa.u.length&&this.LFa.u.slice().forEach(this.Vka)};a.prototype.bf=function(){this.Vr.u.forEach(function(p){p.K(l.PerspectiveCamera)})};a.prototype.Cka=function(p){var r=p.K(l.OrthographicCamera),t=p.J(l.ws);p.J(l.Object3D).ta=t.camera=r.camera=new THREE.OrthographicCamera;this.T4(p)};a.prototype.Dka=function(p){var r=p.K(l.PerspectiveCamera), t=p.J(l.Gj);t.boundingBox=new THREE.Box3;t.I3=!0;p.J(l.Object3D).ta=t.camera=r.camera=new THREE.PerspectiveCamera;this.U4(p)};a.prototype.T4=function(p){var r=p.getComponent(l.OrthographicCamera);p=p.getComponent(l.ws);p.width=r.width;p.height=r.height;p=p.camera;p.left=-.5*r.width;p.right=.5*r.width;p.top=.5*r.height;p.bottom=-.5*r.height;p.updateProjectionMatrix()};a.prototype.U4=function(p){var r=p.getComponent(l.PerspectiveCamera),t=p.getComponent(l.Gj);r.wm?(p.J(l.uk),t.width=h.framebufferWidth? .5*h.framebufferWidth:r.width,t.height=h.framebufferHeight||r.height,p=t.nk=h.hh.xr.getCamera(),p.aspect=t.width/t.height,p.fov=t.fov=p&&p.cameras.length?2*Math.atan2(1,p.cameras[0].projectionMatrix.elements[5])*f:r.fov,p.near=t.near=.1,p.far=t.far=1E3,g.Q4(p)):(p.ha(l.uk),t.fov=r.fov,t.width=r.width,t.height=r.height,t.nk=null,p=t.camera,p.aspect=t.width/t.height,p.fov=t.width>t.height?c.vm(t.fov,t.width,t.height):t.fov,p.near=t.near=r.near,p.far=t.far=r.far,g.Q4(p),t.camera.updateProjectionMatrix())}; a.prototype.Uka=function(p){var r=p.getComponent(l.ws);r.camera.parent&&r.camera.parent.remove(r.camera);r.camera=null;p.ha(l.ws);p.ha(l.Object3D)};a.prototype.Vka=function(p){var r=p.getComponent(l.Gj),t=r.camera;h.Lcb&&t.parent&&t.parent.remove(t);r.camera=null;p.ha(l.Gj);p.ha(l.Object3D)};a.G={};a.G.EFa=[l.OrthographicCamera,l.ws.not];a.G.FFa=[l.OrthographicCamera.not,l.ws];a.G.KFa=[l.PerspectiveCamera,l.Gj.not];a.G.LFa=[l.PerspectiveCamera.not,l.Gj];a.G.bG=[l.OrthographicCamera,l.ws];a.G.Vr=[l.PerspectiveCamera, l.Gj];a.PG=e.extend(m,function(){m.apply(this,arguments);this.pja=this.pja.bind(this)});a.PG.prototype.Wc=function(){this.Vr.u.length&&this.Vr.u.slice().forEach(this.pja)};a.PG.prototype.pja=function(p){var r=p.getComponent(l.PerspectiveCamera);if(r.FAa){var t=p.getComponent(l.Gj),u=t.scene||g.zf(p),v=t.camera;if(u&&v&&g.zS(v)===u){var w=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(r.wm)w=.1,x=1E3;else{var y=!1;t.I3&&(t.boundingBox=this.QOa(u,t.boundingBox),t.I3=!1,y=!0);u=t.boundingBox; u=[[u.min.x,u.max.x],[u.min.y,u.max.y],[u.min.z,u.max.z]];for(var z=0;2>z;z++)for(var D=0;2>D;D++)for(var C=0;2>C;C++)q.set(u[0][z],u[1][D],u[2][C]).applyMatrix4(v.matrixWorldInverse),-q.z>x&&(x=-q.z),-q.zd||Math.abs(r.far-x)>d)v.far=t.far=r.far=x,v.near=t.near=r.near=w,g.Q4(v),g.jJa(v),g.iJa(v),v.updateProjectionMatrix();y||t.Iga||(t.Iga=setTimeout(function(){t.Iga= null;t.I3=!0;p.R&&p.R.Ra()},b))}}};a.PG.prototype.QOa=function(p,r){r||(r=new THREE.Box3);r.makeEmpty();p.traverse(function(t){if(t.boundingBox)var u=t.boundingBox;else{if(!t.geometry||t.isSprite||t.mu||t.material&&!t.material.visible)return;t.updateWorldMatrix(!1,!1);u=t.geometry;null===u.boundingBox&&u.computeBoundingBox();u=u.boundingBox}n.copy(u);n.applyMatrix4(t.matrixWorld);r.union(n)});return r};var b=500,d=1E-4,f=180/Math.PI,n=new THREE.Box3,q=new THREE.Vector3;a.PG.G={};a.PG.G.Vr=[l.PerspectiveCamera, l.Gj];return a}); define("hn",["require","exports","three.mod","fS","cu"],function(a,e,k,m,l){a=function(){function d(){}d.yga=function(f,n,q){f.camera=n;n=q.getComponent(m.Cc);q=(q=l.Qc(q))&&q.matrixWorld;q||(q=n.matrixWorld);q?(f.ray.origin.copy(n.origin).applyMatrix4(q),f.ray.direction.copy(n.origin).add(n.direction).applyMatrix4(q).sub(f.ray.origin).normalize()):(f.ray.origin.copy(n.origin),f.ray.direction.copy(n.direction).normalize());return f};d.intersect=function(f,n){c.length=0;n.forEach(function(q){this.cGa(q);q.isSkinnedMesh&& !q.userData.Dga&&(q.userData.Dga=q.geometry.boundingBox,q.geometry.boundingBox=g,q.userData.QAa=q.geometry.boundingSphere,q.geometry.boundingSphere=b,c.push(q))}.bind(this));f.firstHitOnly=!0;n=n.filter(function(q){return(q.isScene||q.parent)&&(!q.isMesh||q.geometry)});h.length=0;h=f.intersectObjects(n,!1,h);c.forEach(function(q){q.geometry.boundingBox=q.userData.Dga;delete q.userData.Dga;q.geometry.boundingSphere=q.userData.QAa;delete q.userData.QAa});h=h.filter(function(q){return q.object.isLine? !1:!0});h.sort(function(q,p){var r=-q.object.renderOrder,t=-p.object.renderOrder;r==t&&(r=q.object.material&&!q.object.material.depthTest?0:1,t=p.object.material&&!p.object.material.depthTest?0:1);r==t&&(r=q.distance,t=p.distance);return r-t});return h};d.cGa=function(f){if(f.isMesh&&f.geometry&&f.geometry.attributes&&f.geometry.attributes.position&&!f.geometry.userData.OAa&&!f.isSkinnedMesh){try{f.geometry.computeBoundsTree()}catch(n){}f.geometry.userData.OAa=!0}};return d}();var c=[],h=[],g=new k.Box3; g.min.x=g.min.y=g.min.z=-Infinity;g.max.x=g.max.y=g.max.z=Infinity;var b=new k.Sphere;b.center.x=b.center.y=b.center.z=0;b.radius=Infinity;return a}); define("mA",["require","exports","cu","hn","three.mod"],function(a,e,k,m,l){a=function(){function b(d){this.oG=null;this.zBa=new l.Vector3;this.eha=void 0;this.$a=d}b.prototype.refresh=function(){this.oG=null};b.prototype.FG=function(d,f){return 0d?(n.HK=this.tha,n.gS=f):(n.HK=this.sha,n.gS=d):(n.HK="#000000",n.gS=0)}}};b.prototype.vGa=function(){var d=this.I.getComponent(c.pb);if(d=d&&d.I)d.K(c.Scene).gS=0};b.prototype.dispose=function(){this.m1();this.jh.unbind(k.F("state"), this.$F,this);this.jh.unbind(k.F("movementIndex"),this.dFa,this);this.Rc(m.V)};b.prototype.$F=function(){var d=this.jh.get("state");this.state!=d&&(d==m.Ob&&this.state==m.V?this.jh.set("state",m.V):this.Rc(d))};b.prototype.Rc=function(d,f){void 0===f&&(f=void 0);this.state!=d&&(this.state=d,this.state==m.PLAYING?(this.m1(),this.H3=!1,this.nBa(),this.E2a()):this.state==m.Ob?(this.H3=!!f,this.wIa()):this.state==m.V&&(this.H3=!1,this.m1(),this.Hja=0,d=this.oi.getTime(),f=this.oi.pi(),0=p?this.yB(y,p-360,p):this.yB(y,p,p+360);break;default:y=this.yB(y,p-180,p+180)}}else l.Ja("DistanceModel3DCameraMovement", d)&&(v=f+d.get("xDelta",0),w=n+d.get("yDelta",0),x=q+d.get("zDelta",0),y=p+d.get("yawDelta",0),z=r+d.get("pitchDelta",0),D=u+d.get("fovDelta",0),C=t+d.get("distanceDelta",0));this.oi=new h(d.get("easing"),[new g("x",f,v,d.get("xSpeed")),new g("y",n,w,d.get("ySpeed")),new g("z",q,x,d.get("zSpeed")),new g("yaw",p,y,d.get("yawSpeed")),new g("pitch",r,z,d.get("pitchSpeed")),new g("fov",u,D,d.get("fovSpeed")),new g("distance",t,C,d.get("distanceSpeed"))],d.get("duration"));this.J1=d.get("fadeFromDuration"); this.sha=d.get("fadeFromColor");this.L1=d.get("fadeToDuration");this.tha=d.get("fadeToColor")};b.prototype.E2a=function(){this.cG=void 0};b.prototype.wIa=function(){if(this.oi){this.cG=void 0;var d=this.oi&&this.oi.Dha("yaw");d&&(d.to>d.from?this.cG="right":d.ton;)d-=n-f;return d};return b}()}); define("kJ","require exports lb pu lr dZ cu".split(" "),function(a,e,k,m,l,c,h){return function(){function g(b,d){this.I=b;this.properties=d;this.D3=this.D3.bind(this);this.A3=this.A3.bind(this);this.$F=this.$F.bind(this);this.hl=this.ku=null;this.HL=[];this.yg=null;this.OB=!1;this.sx=new Map;k.ea(this.properties,["userInteracting"],this.D3,!0);k.ea(this.properties,["initialSequence","idleSequence","sequences.movements"],this.A3,!0);k.ea(this.properties,["state"],this.$F,!0);this.ready=!1}g.prototype.frame= function(b){if(!this.ready){var d=h.zf(this.I),f=0;d&&d.traverse(function(n){(n.isMesh||n.isSprite)&&f++});if(0d.indexOf(n)&&this.CK(n)}.bind(this));var f=this.HL; this.HL=d;this.HL.forEach(function(n){0>f.indexOf(n)&&this.Wga(n)}.bind(this));this.yg||!this.hl||this.MF||this.iU()};g.prototype.Qja=function(b){var d=b&&b.get("movements");return d&&0!=d.length?b:null};g.prototype.rFa=function(b){b=b.source;var d=b.get("state");d==l.PLAYING?(this.w4(),d=this.yg,this.yg=b,d&&d!=this.yg&&d.set("state",l.V),this.properties.set("state",l.PLAYING),this.properties.set("inMandatorySequence",b.get("mandatory")),this.I.R.Ra()):d==l.Ob?b==this.yg&&this.properties.set("state", l.Ob):d==l.V&&b==this.yg&&(this.properties.set("state",l.V),this.properties.set("inMandatorySequence",!1),this.yg=null,b!=this.hl&&this.iU())};g.prototype.Wga=function(b){if(this.sx.has(b))this.sx.get(b);else{b.set("state",l.V);b.bind(m.F("state"),this.rFa,this,!0);var d=new c(this.I,this.properties,b);this.sx.set(b,d)}};g.prototype.CK=function(b){this.sx.has(b)&&(b.set("state",l.V),b.unbind(m.F("state"),this.rFa,this),this.sx.get(b).dispose(),this.sx["delete"](b))};return g}()}); define("fh",["require","exports","kJ","fS"],function(a,e,k,m){return function(){function l(c){this.LT=this.properties=null;this.I=c;this.update()}l.prototype.update=function(){var c=this.I.getComponent(m.VG);this.NL(c&&c.properties)};l.prototype.NL=function(c){var h;this.properties&&(null===(h=this.LT)||void 0===h?void 0:h.dispose(),this.LT=null);if(this.properties=c)this.LT=new k(this.I,this.properties)};l.prototype.frame=function(c){this.LT&&this.LT.frame(c)};l.prototype.dispose=function(){this.NL(null)}; l.eb=function(c){c.J(m.Eu).manager=new l(c)};l.update=function(c){c.getComponent(m.Eu).manager.update()};l.frame=function(c,h,g){c.getComponent(m.Eu).manager.frame(h,g)};l.Fa=function(c){c.getComponent(m.Eu).manager.dispose();c.ha(m.Eu)};return l}()});define("pf",["require","exports"],function(){return function(){function a(){}a.lia=function(e){return 0<=this.c5.indexOf(e)};a.fka=function(e){this.c5=[];e.forEach(function(k){k=k.R;0>this.c5.indexOf(k)&&this.c5.push(k)}.bind(this))};a.c5=[];return a}()}); define("lE",["require"],function(){return{gcb:function(){},hcb:function(){},FX:function(){return this.o&&this.o.get("inMandatorySequence")||this.o&&!this.o.get("keyboardEnabled")?!0:!1},yo:function(){return this.o&&this.o.get("inMandatorySequence")||this.o&&(!this.o.get("mouseEnabled")||this.o.get("mouseDisabled"))?!0:!1},ssa:function(){return this.o&&this.o.get("doubleClickDisabled")?!0:!1},oua:function(){this.CI()||this.Rv||this.Wza()},nua:function(){this.CI()||this.Rv||this.Vza()},bJ:function(){this.usa()|| this.Wza()},aJ:function(){this.usa()||this.Vza()},Wza:function(){this.o&&this.o.set("userInteracting",!0)},Vza:function(){this.o&&this.o.set("userInteracting",!1)}}}); define("fG",["require","exports","cu","three.mod"],function(a,e,k,m){return function(){function l(c){this.matrixWorld=new m.Matrix4;this.nB=!1;this.timeout=null;this.I=c}l.prototype.NL=function(c,h){if(this.EG!=c||this.propertyName!=h)this.EG&&this.EG.set(this.propertyName,!1),this.EG=c,this.propertyName=h,this.EG&&this.EG.set(this.propertyName,this.nB)};l.prototype.kla=function(){var c=k.Qc(this.I),h=!!c&&!c.matrixWorld.equals(this.matrixWorld);h&&this.matrixWorld.copy(c.matrixWorld);this.Vn(h); this.timeout&&(clearTimeout(this.timeout),this.timeout=null);h&&(this.timeout=setTimeout(function(){this.timeout=null;this.Vn(!1)}.bind(this),l.$Ka))};l.prototype.Fa=function(){this.Vn(!1);this.timeout&&clearTimeout(this.timeout)};l.prototype.Vn=function(c){this.nB!=c&&(this.nB=c,this.EG&&this.EG.set(this.propertyName,c))};l.$Ka=100;return l}()}); define("oH",["require","exports"],function(){return function(){function a(e){this.properties=e}a.prototype.jHa=function(e){this.properties.set("fov",this.mL(e,this.properties.get("minFov",.1),this.properties.get("maxFov",180)))};a.prototype.Hm=function(e){this.properties.set("yaw",this.a4(this.u6a(e,this.properties.get("minYaw"),this.properties.get("maxYaw"),this.properties.get("yaw"))))};a.prototype.jy=function(e){this.properties.set("pitch",this.mL(e,this.properties.get("minPitch",-90),this.properties.get("maxPitch", 90)))};a.prototype.setX=function(e){this.properties.set("x",this.mL(e,this.properties.get("minX"),this.properties.get("maxX")))};a.prototype.setY=function(e){this.properties.set("y",this.mL(e,this.properties.get("minY"),this.properties.get("maxY")))};a.prototype.setZ=function(e){this.properties.set("z",this.mL(e,this.properties.get("minZ"),this.properties.get("maxZ")))};a.prototype.rG=function(e){this.properties.set("distance",this.mL(e,this.properties.get("minDistance"),this.properties.get("maxDistance")))}; a.prototype.Vi=function(e){this.properties.set("easing",e)};a.prototype.u6a=function(e,k,m,l){if(void 0!==k||void 0!==m){var c=this.a4(e-l);if(void 0!==k&&0>c){if(this.a4(l)+cm)return m}return e};a.prototype.mL=function(e,k,m){if(isNaN(e))throw"invalid value";void 0!==k&&em&&(e=m);return e};a.prototype.a4=function(e){for(;-180>e;)e+=360;for(;180c.indexOf(g)&&c.push(g)})});return c}; l.prototype.kr=function(){for(var c,h=this.ld.length-1;0<=h&&void 0===c;h--)c=this.ld[h].top();return c};l.get=function(c){var h=this.Ta.get(c);h||this.Ta.set(c,h=new l(c));return h};l.clear=function(c){this.Ta["delete"](c)};l.Ta=new Map;return l}();return a}); define("jS",["require","exports","pu","gD"],function(a,e,k,m){return function(l){function c(h){var g=l.call(this)||this;if(h instanceof HTMLElement)g.f3=h;else if("function"===typeof h.fd)g.f3=h.fd().get(0);else if(h.length&&h.get)g.f3=h.get(0);else throw Error("invalid element");g.x3=g.x3.bind(g);document.addEventListener("pointerlockchange",g.x3.bind(g),!1);return g}Y(c,l);c.prototype.dispose=function(){document.removeEventListener("pointerlockchange",this.x3)};c.prototype.lock=function(){if(!this.mp())return this.f3.requestPointerLock()}; c.prototype.unlock=function(){this.mp()&&document.exitPointerLock()};c.prototype.mp=function(){return document.pointerLockElement===this.f3};c.prototype.x3=function(){this.trigger(k.ba)};c.mp=function(){return null!==document.pointerLockElement};return c}(m)}); define("iw",["require","pu","kj","jS"],function(a){function e(h,g){var b=g.x-h.x;h=g.y-h.y;return Math.sqrt(b*b+h*h)}var k=a("pu"),m=a("kj"),l=a("jS"),c=180/Math.PI;return{yba:function(){this.pY=this.NO=this.Rv=this.et=!1;this.OZ=this.Ae=null;this.AX=new m;this.PO=null;this.wVa=this.GUa.bind(this)},zba:function(){this.y_(null);this.AX.dispose()},ita:function(h){this.Xo(h);if(!this.yo||!this.yo()){var g=this.BI();this.et||(this.et=!0,g||this.bJ&&this.bJ());this.NO=!h.originalEvent||!h.originalEvent.buttons|| 0===(h.originalEvent.buttons&2);this.OZ=h;this.Fo&&this.Fo(h.x,h.y);this.OY&&this.OY(h.x,h.y)}},BI:function(){return this.et||this.Rv||this.pY},CI:function(){return this.et},lcb:function(){return this.Rv},mcb:function(){return this.NO},ncb:function(){return this.pY},kta:function(h){this.Xo(h);this.Kf&&this.Kf(h.x,h.y);if(this.et||this.NI.mp()){var g=void 0!==h.movementX?h.movementX:h.x-this.OZ.x,b=void 0!==h.movementY?h.movementY:h.y-this.OZ.y;this.NI.mp()&&(g*=-1,b*=-1);this.OZ=h;this.NY&&this.NY(g, b,h.x,h.y)}},nY:function(h){this.et&&(h&&this.Xo(h),this.NO=this.et=!1,this.tw&&this.tw(this.md,this.nd),this.gE&&this.gE(),this.BI()||this.aJ&&this.aJ())},eta:function(h){this.yo&&this.yo()||(this.Xo(h),this.sw&&this.sw(h.x,h.y))},fta:function(h){this.yo&&this.yo()||this.ssa&&this.ssa()||(this.Xo(h),this.$I&&this.$I(h.x,h.y))},lta:function(h){this.Xo(h);if(!this.yo||!this.yo()){h=h.aS/10;var g=this.BI();this.PO||(this.pY=!0,this.xVa&&this.xVa(),g||this.bJ&&this.bJ());this.PY&&this.PY(h);this.PO&& clearTimeout(this.PO);this.PO=setTimeout(this.wVa,100)}},GUa:function(){this.PO=null;this.vVa&&this.vVa();this.pY=!1;this.BI()||this.aJ&&this.aJ()},hta:function(h){if(!(this.yo&&this.yo()||2>h.touches.length)){var g=this.BI();this.Rv||(this.Rv=!0,this.HUa(h.touches),g||this.bJ&&this.bJ());this.gua&&this.gua();this.nY()}},gta:function(h){this.yo&&this.yo()||2>h.touches.length||!this.Rv||(this.mta(h.touches),this.Uba&&this.Uba(this.u_a,this.v_a,this.Qea,this.w_a),this.fua&&this.fua(this.saa,this.taa, this.bR,this.cR,1,this.Qea,this.fO,this.Pea,this.raa,this.aR))},xba:function(){this.Rv&&(this.Rv=!1,this.Vba&&this.Vba());this.BI()||this.aJ&&this.aJ()},HUa:function(h){this.raa=this.taa=this.saa=this.fO=this.Qea=this.cR=this.bR=this.Pea=this.aR=void 0;this.$Q=h;this.mta(h)},mta:function(h){e(h[0],this.$Q[0])+e(h[1],this.$Q[1])>e(h[0],this.$Q[1])+e(h[1],this.$Q[0])&&(h=[h[1],h[0]]);var g=h[0];var b=h[1];g=Math.atan2(-(b.y-g.y),b.x-g.x)*c;b=e(h[0],h[1]);var d=(h[0].x+h[1].x)/2,f=(h[0].y+h[1].y)/2; this.Qea=void 0!==this.fO?b/this.fO:1;this.w_a=void 0!==this.aR?g-this.aR:0;this.aR=g;this.Pea=b;this.u_a=void 0!==this.bR?d-this.bR:0;this.v_a=void 0!==this.cR?f-this.cR:0;this.bR=d;this.cR=f;void 0!==this.saa||(this.saa=this.bR);void 0!==this.taa||(this.taa=this.cR);void 0!==this.raa||(this.raa=this.aR);void 0!==this.fO||(this.fO=this.Pea);this.$Q=h},jta:function(){},EQa:function(){this.nY();this.xba()},QN:function(){return this.Ae?this.Ae.Ya():100},xD:function(){return this.Ae?this.Ae.Cb():100}, Uv:function(){return this.Ae?Math.max(this.Ae.Ya(),this.Ae.Cb()):100},y_:function(h){this.Ae!=h&&(this.Ae&&(this.Ae.unbind(k.fb,this.ita,this,!0),this.Ae.unbind(k.Xb,this.kta,this,!0),this.Ae.unbind(k.Eb,this.nY,this,!0),this.Ae.unbind(k.pa,this.eta,this,!0),this.Ae.unbind(k.wl,this.fta,this,!0),this.Ae.unbind(k.us,this.lta,this,!0),this.Ae.unbind(k.j6,this.gta,this,!0),this.Ae.unbind(k.Hy,this.hta,this,!0),this.Ae.unbind(k.YG,this.xba,this,!0),this.NI.unbind(k.ba,this.jta,this,!0),this.NI.dispose(), this.NI=null),this.Ae=h,this.AX.$r(this.Ae),this.Ae&&(this.Ae.bind(k.fb,this.ita,this,!0),this.Ae.bind(k.Xb,this.kta,this,!0),this.Ae.bind(k.Eb,this.nY,this,!0),this.Ae.bind(k.pa,this.eta,this,!0),this.Ae.bind(k.wl,this.fta,this,!0),this.Ae.bind(k.us,this.lta,this,!0),this.Ae.bind(k.j6,this.gta,this,!0),this.Ae.bind(k.Hy,this.hta,this,!0),this.Ae.bind(k.YG,this.xba,this,!0),this.NI=new l(this.Ae),this.NI.bind(k.ba,this.jta,this,!0)))},OO:function(h){h.x=-1+2*h.x/this.QN();h.y=1-2*h.y/this.xD();return h}, Xo:function(h){this.md=h.x;this.nd=h.y;this.OI=h.pageX;this.QI=h.pageY},wE:function(h){this.AX.push(h)},LZ:function(h){this.AX.pop(h)}}}); define("kR",["require","pu"],function(a){var e=a("pu");return{EXa:function(){this.r_=!1;this.Ro=null;this.QD=this.FI=0;this.EE=!1;this.exa(!0)},FXa:function(){this.exa(!1);this.Nxa(null)},exa:function(k){this.r_!=k&&((this.r_=k)||this.q_())},Nxa:function(k){this.Ro!=k&&(this.q_(),this.Ro&&(this.Ro.unbind(e.bo,this.fxa,this,!0),this.Ro.unbind(e.Tf,this.q_,this,!0),this.Ro.unbind(e.ba,this.dxa,this,!0),this.QD=this.FI=0),this.Ro=k)&&(this.Ro.bind(e.bo,this.fxa,this,!0),this.Ro.bind(e.Tf,this.q_,this, !0),this.Ro.bind(e.ba,this.dxa,this,!0))},fxa:function(){!this.EE&&this.r_&&(this.EE=!0,this.sva&&this.sva())},dxa:function(){this.EE&&(this.FI=this.Ro.getX(),this.QD=this.Ro.getY(),this.qva&&this.qva())},q_:function(){this.EE&&(this.EE=!1,this.QD=this.FI=0,this.rva&&this.rva())},ocb:function(){return this.EE}}}); define("dY","require lO pu br fS lE mA pf fG oH pI iw kR bh oW bK".split(" "),function(a){function e(L){this.wN=!1;this.s9=0;this.iqa=!1;this.jqa=L}function k(L){this.m=L;this.Hq=new f(L);this.Taa(y);this.yba();this.EXa();this.OE=.025;this.Ul=.25;this.kY=this.lY=this.mY=this.$W=0;this.Ga=null;this.TV=this.n0=!1;this.va=void 0;this.Jsa=new THREE.Vector3(void 0,void 0,void 0);this.Ws=[];this.BUa=5;this.yUa=10;this.yv=new b(this.m);this.wE(t.Iy);this.GI={};[c.la.$i,c.la.Kh,c.la.Za,c.la.sb].forEach(function(R){this.GI[R]= new e(300)}.bind(this));[c.la.Yn,c.la.Xu,c.la.Fu,c.la.cv,c.la.Q,c.la.E].forEach(function(R){this.GI[R]=new e(300)}.bind(this));this.update()}var m=a("lO"),l=a("pu"),c=a("br"),h=a("fS"),g=a("lE"),b=a("mA"),d=a("pf"),f=a("fG"),n=a("oH"),q=a("pI"),p=a("iw"),r=a("kR"),t=a("bh"),u=a("oW"),v=a("bK");m.c1(k,[g,q,p,r]);k.prototype.update=function(){var L=this.m.getComponent(h.nC);this.gm(L&&L.properties);this.Hq.NL(L&&L.properties,"moving");var R=(!L.AK||!d.lia(this.m.R))&&L.enabled;this.y_(L&&(R?L.wg:null)); this.uO(!!L&&R&&L.fB);this.Nxa(!!L&&R&&L.KGa);R||this.gE();R&&L.fB||(this.sn=this.rn=this.Ck=this.Qj=this.Dk=0)};k.prototype.frame=function(L){this.RTa()?this.eTa(L):this.fTa(L);this.SQa()};k.prototype.RTa=function(){return this.properties&&this.properties.get("playingSequence")||this.Yh};k.prototype.eTa=function(L){this.properties&&this.properties.get("playingSequence")||this.UMa(L)};k.prototype.UMa=function(L){this.Yh&&(this.Yh.Hb(L),this.Ga.setX(this.Yh.ib("x")),this.Ga.setY(this.Yh.ib("y")),this.Ga.setZ(this.Yh.ib("z")), this.Ga.Vi(0),this.Yh.$e()&&(this.Yh=null),this.m.R.Ra())};var w=1E3/3600*8/1.7;k.prototype.fTa=function(L){J.set(this.o.get("x"),this.o.get("y"),this.o.get("z"));this.hSa(L,T,U);this.sSa(J,T,H);this.Ga.setX(H.x);this.Ga.setY(H.y);this.Ga.setZ(H.z);this.Ga.Hm(this.o.get("yaw")+U.x);this.Ga.jy(this.o.get("pitch")+U.y);this.Ga.Vi(this.Ul);0==T.x&&0==T.y&&0==T.z&&0==U.x&&0==U.y||this.m.R.Ra()};k.prototype.SQa=function(){this.g1a();this.f0a();this.Hq.kla();this.EE&&this.m.R.Ra();this.yv.refresh()};k.prototype.hSa= function(L,R,Z){L/=1E3;var da=this.qj?.2:1,aa=1.7*w;aa*=this.o.get("translationSpeed")*da;var ea=this.o.get("rotationSpeed")*da;da=this.kY;var G=this.lY,O=this.mY,S=this.$W;this.kY=this.lY=this.mY=this.$W=0;var M=(da*da+G*G)/x;M=1(da?ea:this.jSa(L))+this.o.get("maxStepHeight",.25*aa)){Z.copy(L);return}Z.y=(da?ea:this.qSa(ea))+aa}if(this.o.get("collisionDetection")&&(V.copy(R).normalize().multiplyScalar(.1).add(Z), this.yv.FG(L,V))){Z.copy(L);return}void 0!==ea&&this.wMa(ea);this.Jsa.copy(Z)}};k.prototype.AOa=function(){this.Ws=[]};k.prototype.jSa=function(L){return 0==this.Ws.length?L:this.Ws[this.Ws.length-1]};k.prototype.qSa=function(L){return this.Ws.lengthR+Z,0)/this.Ws.length};k.prototype.wMa=function(L){this.Ws.push(L);this.Ws.length>this.yUa&&this.Ws.shift()};k.prototype.sza=function(L,R){if(void 0===this.va||R)L=this.yv.eS(L),Infinity!==L&&(this.va=L)};k.prototype.ON= function(){return void 0===this.va?1.7:this.va};k.prototype.fE=function(L){this.m.R.Ra();this.GI[L].aja()};k.prototype.Eo=function(L){this.GI[L].bja()};k.prototype.OY=function(){this.zi=!0;this.wE(t.Nh)};k.prototype.$I=function(L,R){if("translate"==this.o.get("doubleClickAction")&&(this.OO(K.set(L,R)),L=this.yv.S5a(K),0!=L.length)){var Z=L[0];if(Z.face&&Z.face.normal){var da=J.set(this.o.get("x"),this.o.get("y"),this.o.get("z"));L=H.copy(Z.point);this.sza(da);R=this.ON();Z=P.copy(Z.face.normal).applyMatrix4(Z.object.matrixWorld).normalize(); if(Math.abs(Math.acos(Z.dot(X)))<.25*Math.PI)L.y+=R;else{T.copy(L).sub(da);da=T.length();Z=2*R;if(da.05*R||(this.Yh=new u("cubic_in_out",[new v("x",J.x,H.x),new v("y",J.y,H.y),new v("z",J.z,H.z)],1500),this.m.R.Ra())}}};var x=2500;k.prototype.NY=function(L,R){this.zi&&(this.kY+=L,this.lY+=R,this.m.R.Ra())};k.prototype.gE=function(){this.zi=!1;this.LZ(t.Nh);this.m.R.Ra()};k.prototype.PY=function(L){this.mY+= L;this.m.R.Ra()};k.prototype.Uba=function(L,R){this.$W+=R;this.m.R.Ra()};k.prototype.sva=function(){this.EQa();this.wE(t.Nh)};k.prototype.qva=function(){this.m.R.Ra()};k.prototype.rva=function(){this.LZ(t.Nh)};k.prototype.gm=function(L){this.o!=L&&(this.o&&(this.Ga=null,z.forEach(function(R){this.o.unbind(l.F(R),this.kca,this,!0)}.bind(this)),D.forEach(function(R){this.o.unbind(l.F(R),this.Lba,this,!0)}.bind(this)),this.o.set("userInteracting",!1)),this.o=L)&&(this.Ga=new n(this.o),z.forEach(function(R){this.o.bind(l.F(R), this.kca,this,!0)}.bind(this)),this.kca(),D.forEach(function(R){this.o.bind(l.F(R),this.Lba,this,!0)}.bind(this)),this.Lba(),this.o.set("userInteracting",!1))};k.prototype.kca=function(){this.n0||(this.n0=!0,this.m.R.Ra())};k.prototype.g1a=function(){if(this.n0&&this.m&&this.o){this.n0=!1;var L=this.m.K(h.za,!0);L.translationX=this.o.get("x");L.translationY=this.o.get("y");L.Qe=this.o.get("z");L.Gd=-this.o.get("yaw");L.ke=this.o.get("pitch");L.df=0;L.cf="YXZ";L.positionX=0;L.positionY=0;L.positionZ= 0;L.easing=this.o.get("easing")}};k.prototype.Lba=function(){this.TV||(this.TV=!0,this.m.R.Ra())};k.prototype.f0a=function(){this.TV&&this.m&&this.o&&(this.TV=!1,this.m.K(h.PerspectiveCamera,!0).fov=this.o.get("fov"))};var y=[c.la.$i,c.la.Kh,c.la.Za,c.la.sb,c.la.Yn,c.la.Xu,c.la.Fu,c.la.cv,c.la.Q,c.la.E],z="minYaw maxYaw yaw minPitch maxPitch pitch minX maxX x minY maxY y minZ maxZ z distance easingSpeed".split(" "),D=["minFov","maxFov","fov"],C=Math.PI/180,E=180/Math.PI,A=new THREE.Matrix4,B=new THREE.Euler, J=new THREE.Vector3,H=new THREE.Vector3,P=new THREE.Vector3,T=new THREE.Vector3,V=new THREE.Vector3,U=new THREE.Vector2,X=new THREE.Vector3(0,1,0),K=new THREE.Vector2;k.prototype.dispose=function(){this.gm(null);this.Uaa();this.zba();this.FXa();this.Hq.Fa();this.yv=null};k.eb=function(L){L.J(h.ps).manager=new k(L)};k.Fa=function(L){var R=L.getComponent(h.ps);R.manager.dispose();R.manager=null;L.ha(h.ps)};k.update=function(L){L.getComponent(h.ps).manager.update()};k.frame=function(L,R,Z){L.getComponent(h.ps).manager.frame(R, Z)};e.prototype.aja=function(){this.wN||(this.wN=!0,this.iqa=Date.now()-this.s9M&&(M+=360);return M}function m(){return(new Date).getTime()}var l=a("lO"),c=a("pu"),h=a("br");a("lt");var g=a("cu"),b=a("fS"),d=a("lE"),f=a("pf"),n=a("fG"),q=a("oH");a("kJ");var p=a("pI"),r=a("iw"),t=a("bh"),u=a("oW"),v=a("bK");l.c1(e,[d,p,r]);e.prototype.update=function(){var M=this.m.getComponent(b.oC);this.gm(M&&M.properties);this.Hq.NL(M&&M.properties,"moving");var Q=(!M.AK||!f.lia(this.m.R))&&M.enabled;this.y_(M&&(Q?M.wg:null));this.uO(!!M&&Q&&M.fB);Q||this.gE();Q&&M.fB||(this.sn=this.rn= this.Ck=this.Qj=this.Dk=0)};e.prototype.frame=function(M){this.Yh&&(this.Yh.Hb(M),this.Ga.setX(this.Yh.ib("x")),this.Ga.setY(this.Yh.ib("y")),this.Ga.setZ(this.Yh.ib("z")),this.Ga.rG(this.Yh.ib("distance")),this.Ga.Vi(0),this.Yh.$e()&&(this.Yh=null));this.Fg&&(this.Fg=Math.max(0,this.Fg-M/this.paa),this.Ga.setX(this.o.get("x")+this.JD*this.Fg),this.Ga.setY(this.o.get("y")+this.KD*this.Fg),this.Ga.setZ(this.o.get("z")+this.LD*this.Fg),this.Ga.Hm(this.o.get("yaw")+this.HD*this.Fg),this.Ga.jy(this.o.get("pitch")+ this.GD*this.Fg),this.Ga.Vi(0),this.m.R.Ra(),0==this.Fg&&this.bQ());if(this.sn||this.rn||this.Ck||this.Qj||this.Dk){var Q=M/1E3;this.Dba(this.Ck*Q,this.Qj*Q,this.Dk*Q,this.sn*Q,this.rn*Q)}if(this.ad==w&&void 0!==this.Xk&&!this.Qj&&this.o.get("keepHeight")&&void 0!==this.YN&&Math.abs(this.Xk-this.o.get("y"))>Z){this.tI=Math.max(this.tI-M,0);Q=this.o.get("y");var W=this.Xk-Q;this.Ga.setY(Q+Math.min(M*this.YN,Math.abs(W))*(0.02*this.xD(),ja=10>Math.min(Math.abs(ja),180-Math.abs(ja),Math.abs(ka),180-Math.abs(ka)),ha=.2>ha/this.Uv(),(M||Q)&&(ja||ha)?(this.ad=A,this.IZa()):!W&&!M||ja&&ha||(this.ad=E,this.KZa())):this.ad==E?this.W0a(ca,fa,ja,ka):this.ad==A&&this.U0a(Q,ba,ca,fa)};e.prototype.Vba=function(){this.ij= null;this.ad==E&&this.eya();this.ad=w;this.Tqa=m();this.kda();this.jsa();this.m.R.Ra()};e.prototype.$I=function(M,Q){if("zoom"==this.o.get("doubleClickAction")){var W=g.zf(this.m),ba=g.Fr(this.m);ba&&W&&(G.set(M,Q),this.OO(G),M=this.gO(G,ba),0!=M.length&&(this.ut(),this.aD(),M=M[0].point,B.setFromMatrixPosition(ba.matrixWorld),this.Yh=new u("quad_in_out",[new v("x",B.x,.5*(M.x+B.x)),new v("y",B.y,.5*(M.y+B.y)),new v("z",B.z,.5*(M.z+B.z)),new v("distance",0,0)],500)))}};e.prototype.nSa=function(){return this.NO? this.qj?y:x:this.CI()?this.qj?C:z:w};e.prototype.vZa=function(M,Q){this.yJ();this.aD();this.aNa(M,Q);this.o.get("keepHeight")&&this.a0();this.m.R.Ra()};e.prototype.o0a=function(M,Q,W,ba){var ca=g.Fr(this.m);ca&&(B.setFromMatrixPosition(ca.matrixWorld),this.ij?(J.set(W,ba,0),this.OO(J),J.unproject(ca),M=this.ij.x-B.x,Q=this.ij.z-B.z,-2Z&&(M.translationY=this.o.get("y"),this.ad!=w||this.Ck||this.Qj||this.Dk||this.sn||this.rn||this.Yh||this.Fg||this.ut());M.Qe=this.o.get("z");M.Gd=-this.o.get("yaw");M.ke=this.o.get("pitch");M.df=0;M.cf="YXZ";M.positionX=0;M.positionY=0;M.positionZ=this.o.get("distance"); M.easing=this.o.get("easing");(void 0!==this.o.get("minHeight")||this.o.get("keepHeight"))&&this.Kza()}};e.prototype.nr=function(){this.m&&this.o&&(this.m.K(b.PerspectiveCamera,!0).fov=this.o.get("fov"))};e.prototype.Dba=function(M,Q,W,ba,ca){var fa=this.m.getComponent(b.za);fa&&(da.makeRotationFromEuler(O.set(0,fa.Gd*L,0,fa.cf)),aa.set(M,Q,W).applyMatrix4(da).multiplyScalar(this.PE),void 0!==this.ji&&(this.ji+=aa.y,this.bQ()),this.Ga.setX(this.o.get("x")+aa.x),this.Ga.setY(this.o.get("y")+aa.y), this.Ga.setZ(this.o.get("z")+aa.z),this.Ga.Hm(this.o.get("yaw")+ba),this.Ga.jy(this.o.get("pitch")+ca),this.Ga.Vi(this.Ul))};e.prototype.AYa=function(M){var Q=this.m.getComponent(b.za);Q&&(da.makeRotationFromEuler(O.set(Q.ke*L,Q.Gd*L,Q.df*L,Q.cf)),M.set(0,0,1).applyMatrix4(da))};e.prototype.yJ=function(){this.yz=m();this.hj=1;this.Kv=this.Lv=this.Nv=this.Mv=this.Jv=0;this.Fg=this.JD=this.KD=this.LD=this.HD=this.GD=void 0};e.prototype.$J=function(M,Q,W,ba,ca){var fa=m();this.hj=fa-this.yz;this.yz= fa;this.Kv=M;this.Lv=Q;this.Nv=W;this.Mv=ba;this.Jv=ca};e.prototype.eya=function(){this.hj&&(this.JD=this.Kv/this.hj,this.KD=this.Lv/this.hj,this.LD=this.Nv/this.hj,this.HD=this.Mv/this.hj,this.GD=this.Jv/this.hj,this.Fg=1)};e.prototype.zza=function(){void 0!==this.o.get("minHeight")&&(void 0===this.ji&&this.a0(),void 0!==this.ji&&this.ji.75*Math.PI;return 0!==this.lk&&.95Date.now()-this.LB?(this.js=!0,z=this.lk*(D?-1:1),z=-g.setFromQuaternion(m.xg,"YXZ").y*w+z,m.setPosition({yaw:z}),!0):!1};y.prototype.LR=function(z){if(!this.ye||0===this.ye.Tb.y&&0===this.ye.Tb.x)return!1;z=4E3/3600/this.bg*this.properties.get("translationSpeed",1)*(this.ye.IG?3:1)*z/1E3;var D=d.set(0,0,-1).applyQuaternion(m.xg),C=f.set(1,0,0).applyQuaternion(m.xg);D.normalize().multiplyScalar(-this.ye.Tb.y* z);C.normalize().multiplyScalar(this.ye.Tb.x*z);this.ud.set(m.Ic.x+D.x+C.x,m.Ic.y+D.y+C.y,m.Ic.z+D.z+C.z);return!0};y.prototype.wga=function(z){if(!this.dl)return!1;this.xga(z);z=n.copy(this.D1);var D=q.copy(this.dl.matrixWorld);D=r.copy(p.compose(m.Ic,m.xg,v)).invert().multiply(D);t.copy(z).multiply(D.invert()).decompose(this.ud,this.g3,d);return!0};y.prototype.xga=function(z){if(!this.dl||0===this.dl.Tb.y&&0===this.dl.Tb.x)return!1;z=90*z/1E3*this.properties.get("rotationSpeed",1);var D=p.makeRotationFromQuaternion(b.setFromRotationMatrix(this.D1)), C=r.copy(D).invert(),E=q.identity();E.multiply(n.makeTranslation(this.xF.x,this.xF.y,this.xF.z));E.multiply(D);E.multiply(n.makeRotationFromEuler(g.set(this.dl.Tb.y*z*x,this.dl.Tb.x*z*x,0,"YXZ")));E.multiply(C);E.multiply(n.makeTranslation(-this.xF.x,-this.xF.y,-this.xF.z));this.D1.premultiply(E);return!0};y.prototype.wU=function(){this.properties.get("inMandatorySequence")?this.properties.set("userInteracting",!1):this.dl?this.properties.set("userInteracting",!0):this.uj?this.properties.set("userInteracting", !0):!this.ye||0===this.ye.Tb.y&&0===this.ye.Tb.x?this.properties.set("userInteracting",!1):this.properties.set("userInteracting",!0)};y.xG=function(z,D){this.RB.set(z,D)};y.eb=function(z){z.J(c.aq).manager=new y(z)};y.update=function(z){z.getComponent(c.aq).manager.update()};y.frame=function(z,D,C){z.getComponent(c.aq).manager.frame(D,C)};y.Fa=function(z){var D=z.getComponent(c.aq);D.manager.dispose();D.manager=null;z.ha(c.aq)};y.RB=new Map;y.My="minX maxX minY maxY minZ maxZ".split(" ");return y}(); var g=new h.Euler(0,0,0,"YXZ"),b=new h.Quaternion,d=new h.Vector3,f=new h.Vector3,n=new h.Matrix4,q=new h.Matrix4,p=new h.Matrix4,r=new h.Matrix4,t=new h.Matrix4,u=new h.Vector3(0,0,1),v=new h.Vector3(1,1,1),w=180/Math.PI,x=Math.PI/180;return a}); define("hu","require exports pu oO mA fS three.mod".split(" "),function(a,e,k,m,l,c,h){a=function(){function x(y){this.locked=!0;this.op=!1;this.Ui=this.HT=this.ye=null;this.Nia=new h.Matrix4;this.eG=[];this.bg=1;this.LB=0;this.js=!1;this.lk=0;this.uj=null;this.ula=!1;this.ud=new h.Vector3;this.xT=this.yT=this.zT=this.gGa=this.fGa=this.eGa=0;this.px=new h.Box3(new h.Vector3(-Infinity,-Infinity,-Infinity),new h.Vector3(Infinity,Infinity,Infinity));this.I=y;this.xj=this.xj.bind(this);this.zr=new l(this.I); m.O.bind(k.ba,this.bf,this,!0);this.update()}x.prototype.update=function(){var y=this.I.getComponent(c.oH),z=(null===y||void 0===y?void 0:y.locked)||!1;!z&&this.locked&&(this.op=!0);this.locked=z;this.bg=(null===y||void 0===y?void 0:y.bg)||1;this.lk=null===y||void 0===y?void 0:y.lk;this.MB();this.properties=y.properties;this.locked||(m.setScale(this.bg),this.PR(),this.xj());this.op&&(g.setFromQuaternion(m.X4),m.setPosition({pitch:g.x*v,roll:g.z*v}),this.mF(!0))};x.prototype.frame=function(y){if(!this.locked){this.gs(); this.wU();this.mF(!1);if(!this.properties.get("controllingPosition")){this.ud.copy(m.Ic);var z=this.oB=-g.setFromQuaternion(m.xg).y*v;var D=this.IR();this.ula&&this.Ui&&this.Nia.copy(this.Ui.matrixWorld);this.ula=!1;D||(D=this.ula=this.xga(y));D||(D=this.wga(y));D||(D=this.JR(y));D&&(y={},m.Ic.equals(this.ud)||(y.x=this.ud.x,y.y=this.ud.y,y.z=this.ud.z),this.oB!=z&&(y.yaw=this.oB),m.setPosition(y))}this.NR();this.tK();this.op=!1}};x.prototype.dispose=function(){m.O.unbind(k.ba,this.bf,this);this.properties.set("userInteracting", !1);this.MB();this.gh();this.aU([])};x.prototype.MB=function(){x.My.forEach(function(y){var z;null===(z=this.properties)||void 0===z?void 0:z.unbind(k.F(y),this.xj,this)}.bind(this))};x.prototype.PR=function(){x.My.forEach(function(y){var z;null===(z=this.properties)||void 0===z?void 0:z.bind(k.F(y),this.xj,this,!0)}.bind(this))};x.prototype.xj=function(){this.px.min.set(this.properties.get("minX",-Infinity),this.properties.get("minY",-Infinity),this.properties.get("minZ",-Infinity));this.px.max.set(this.properties.get("maxX", Infinity),this.properties.get("maxY",Infinity),this.properties.get("maxZ",Infinity))};x.prototype.mF=function(y){var z=this.properties.get("x"),D=this.properties.get("y"),C=this.properties.get("z"),E=this.properties.get("controllingPosition"),A=this.properties.get("yaw"),B=this.properties.get("pitch"),J=this.properties.get("distance");if(z!==this.eGa||D!==this.fGa||C!==this.gGa||A!==this.zT||B!==this.yT||J!==this.xT)n.identity(),n.multiply(q.makeTranslation(z,D,C)),n.multiply(q.makeRotationFromEuler(g.set(B* w,-A*w,0,"YXZ"))),n.multiply(q.makeTranslation(0,0,J)),n.decompose(d,b,f),g.setFromQuaternion(b,"YXZ"),m.setPosition({x:d.x,y:d.y,z:d.z,yaw:!y||E?void 0:-g.y*v})};x.prototype.NR=function(){this.properties.set("x",m.Ic.x);this.properties.set("y",m.Ic.y);this.properties.set("z",m.Ic.z);g.setFromQuaternion(m.xg);this.properties.set("yaw",-g.y*v);this.properties.set("pitch",g.x*v);this.properties.set("roll",g.z*v);this.properties.set("distance",0)};x.prototype.tK=function(){this.eGa=this.properties.get("x"); this.fGa=this.properties.get("y");this.gGa=this.properties.get("z");this.zT=this.properties.get("yaw");this.yT=this.properties.get("pitch");this.xT=this.properties.get("distance")};x.prototype.gs=function(){this.aU((x.RB.get(this.I.R)||[]).map(function(y){return y.getComponent(c.Cc)}))};x.prototype.aU=function(y){var z=[],D=[];this.eG.forEach(function(C){-1===y.indexOf(C)&&z.push(C)}.bind(this));y.forEach(function(C){-1===this.eG.indexOf(C)&&D.push(C)}.bind(this));this.Ui&&-1===y.indexOf(this.Ui)&& this.gh();z.forEach(function(C){this.AT(C);this.eG.splice(this.eG.indexOf(C),1)}.bind(this));D.forEach(function(C){this.GR(C);this.eG.push(C)}.bind(this));this.ye=y.find(function(C){return C.Ti})||null;this.HT=y.find(function(C){return!C.Ti})||this.ye};x.prototype.GR=function(y){y.O.bind(k.fb,this.Qr,this,!0);y.O.bind(k.pa,this.Pr,this,!0)};x.prototype.AT=function(y){y.O.unbind(k.fb,this.Qr,this);y.O.unbind(k.pa,this.Pr,this)};x.prototype.bf=function(){this.I.K(c.bq)};x.prototype.Pr=function(y){if(!(this.properties.get("inMandatorySequence")|| y.data.NS||"other"==y.data.type||this.properties.get("clickTranslationDisabled"))){var z=this.eG.find(function(D){return y.source===D.O});z&&(z=this.zr.QS(z),0!=z.length&&(this.uj=z[0].point))}};x.prototype.Qr=function(y){if(!this.properties.get("inMandatorySequence")){this.gh();var z=this.eG.find(function(D){return y.source===D.O});z&&(this.Ui=z,this.Ui.O.bind(k.Eb,this.gh,this,!0),this.Nia.copy(this.Ui.matrixWorld),z=this.zr.QS(z),0!=z.length&&(this.mB=(new h.Vector3).copy(z[0].point)))}};x.prototype.gh= function(){this.Ui&&(this.Ui.O.unbind(k.Eb,this.gh,this),this.mB=this.Ui=null)};x.prototype.IR=function(){if(!this.uj)return!1;this.ud.copy(this.uj).sub(m.Ic).multiplyScalar(.5).add(m.Ic);this.uj=null;return!0};x.prototype.JR=function(y){return this.KR()?!0:this.LR(y)?!0:!1};x.prototype.KR=function(){var y=this.HT;if(!y)return!1;if(0===y.Tb.y&&0===y.Tb.x)return this.LB=Date.now(),this.js=!1;if(this.js)return!0;var z=Math.sqrt(y.Tb.y*y.Tb.y+y.Tb.x*y.Tb.x),D=Math.atan2(-y.Tb.y,y.Tb.x);y=Math.abs(D)< .25*Math.PI;D=Math.abs(D)>.75*Math.PI;return 0!==this.lk&&.95Date.now()-this.LB?(this.js=!0,this.oB+=this.lk*(D?-1:1),!0):!1};x.prototype.LR=function(y){if(!this.ye||0===this.ye.Tb.y&&0===this.ye.Tb.x)return!1;y=1E4/3600/this.bg*this.properties.get("translationSpeed",1)*(this.ye.IG?3:1)*y/1E3;this.ye.matrixWorld.decompose(d,b,f);var z=d.set(0,0,-1).applyQuaternion(b),D=f.set(1,0,0).applyQuaternion(b);z.normalize().multiplyScalar(-this.ye.Tb.y*y);D.normalize().multiplyScalar(this.ye.Tb.x* y);this.ud.set(m.Ic.x+z.x+D.x,m.Ic.y+z.y+D.y,m.Ic.z+z.z+D.z);return!0};x.prototype.wga=function(){if(!this.Ui)return!1;var y=this.hBa(n.copy(this.Nia)),z=this.hBa(q.copy(this.Ui.matrixWorld));z=r.copy(p.compose(m.Ic,m.xg,u)).invert().multiply(z);t.copy(y).multiply(z.invert()).decompose(this.ud,b,d);this.oB=-g.setFromQuaternion(b).y*v;return!0};x.prototype.hBa=function(y){return y.decompose(d,b,f).compose(d,b.identity(),f)};x.prototype.xga=function(y){if(!this.Ui||!this.mB||0===this.Ui.Tb.y&&0===this.Ui.Tb.x)return!1; y=90*y/1E3;var z=n.compose(m.Ic,m.xg,u),D=q.identity();D.multiply(p.makeTranslation(this.mB.x,this.mB.y,this.mB.z));D.multiply(p.makeRotationY(-this.oB*w));D.multiply(p.makeRotationFromEuler(g.set(this.Ui.Tb.y*y*w,this.Ui.Tb.x*y*w,0,"YXZ")));D.multiply(p.makeRotationY(this.oB*w));D.multiply(p.makeTranslation(-this.mB.x,-this.mB.y,-this.mB.z));z.premultiply(D);z.decompose(this.ud,b,d);this.oB=-g.setFromQuaternion(b).y*v;return!0};x.prototype.wU=function(){this.properties.get("inMandatorySequence")? this.properties.set("userInteracting",!1):this.Ui?this.properties.set("userInteracting",!0):this.uj?this.properties.set("userInteracting",!0):!this.ye||0===this.ye.Tb.y&&0===this.ye.Tb.x?this.properties.set("userInteracting",!1):this.properties.set("userInteracting",!0)};x.xG=function(y,z){this.RB.set(y,z)};x.eb=function(y){y.J(c.bq).manager=new x(y)};x.update=function(y){y.getComponent(c.bq).manager.update()};x.frame=function(y,z,D){y.getComponent(c.bq).manager.frame(z,D)};x.Fa=function(y){var z= y.getComponent(c.bq);z.manager.dispose();z.manager=null;y.ha(c.bq)};x.RB=new Map;x.My="minX maxX minY maxY minZ maxZ".split(" ");return x}();var g=new h.Euler(0,0,0,"YXZ");new h.Euler(0,0,0,"YXZ");var b=new h.Quaternion,d=new h.Vector3,f=new h.Vector3,n=new h.Matrix4,q=new h.Matrix4,p=new h.Matrix4,r=new h.Matrix4,t=new h.Matrix4,u=new h.Vector3(1,1,1),v=180/Math.PI,w=Math.PI/180;return a}); define("dQ","require exports pu oO mA fS three.mod".split(" "),function(a,e,k,m,l,c,h){a=function(){function t(u){this.locked=!0;this.op=!1;this.HT=this.Vx=this.wp=null;this.bg=1;this.LB=0;this.js=!1;this.lk=0;this.uj=null;this.ud=new h.Vector3;this.kS=[];this.Yr=new h.Vector3;this.px=new h.Box3(new h.Vector3(-Infinity,-Infinity,-Infinity),new h.Vector3(Infinity,Infinity,Infinity));this.I=u;this.xj=this.xj.bind(this);this.zr=new l(this.I);m.O.bind(k.ba,this.bf,this,!0);this.update()}t.prototype.update= function(){var u=this.I.getComponent(c.pH),v=(null===u||void 0===u?void 0:u.locked)||!1;!v&&this.locked&&(this.op=!0);this.locked=v;this.bg=(null===u||void 0===u?void 0:u.bg)||1;this.lk=null===u||void 0===u?void 0:u.lk;this.MB();this.properties=u.properties;this.locked||(m.setScale(this.bg),this.PR(),this.xj());this.op&&(g.setFromQuaternion(m.X4),m.setPosition({x:this.properties.get("x"),y:this.properties.get("y"),z:this.properties.get("z"),yaw:this.properties.get("yaw"),pitch:g.x*r,roll:g.z*r}))}; t.prototype.MB=function(){t.My.forEach(function(u){var v;null===(v=this.properties)||void 0===v?void 0:v.unbind(k.F(u),this.xj,this)}.bind(this))};t.prototype.PR=function(){t.My.forEach(function(u){var v;null===(v=this.properties)||void 0===v?void 0:v.bind(k.F(u),this.xj,this,!0)}.bind(this))};t.prototype.xj=function(){this.px.min.set(this.properties.get("minX",-Infinity),this.properties.get("minY",-Infinity),this.properties.get("minZ",-Infinity));this.px.max.set(this.properties.get("maxX",Infinity), this.properties.get("maxY",Infinity),this.properties.get("maxZ",Infinity))};t.prototype.frame=function(u){this.locked||(this.gs(),this.wU(),this.mF(),this.properties.get("controllingPosition")||(this.ud.copy(m.Ic),this.IR()||this.JR(u),this.ud.y=this.zAa(this.Yr.y,this.n2(this.ud.x,this.ud.y,this.ud.z),u),this.n3a()&&(this.ud.copy(this.Yr),this.ud.y=this.zAa(this.Yr.y,this.n2(this.ud.x,this.ud.y,this.ud.z),u)),this.px.clampPoint(this.ud,this.ud),m.Ic.equals(this.ud)||m.setPosition({x:this.ud.x,y:this.ud.y, z:this.ud.z,Sa:void 0})),this.NR(),this.tK(),this.o8a(),this.op=!1)};t.prototype.o8a=function(){this.zr.refresh();this.kS.forEach(function(u){u.y=NaN})};t.prototype.dispose=function(){m.O.unbind(k.ba,this.bf,this);this.properties.set("userInteracting",!1);this.MB()};t.prototype.mF=function(){var u=this.properties.get("x"),v=this.properties.get("y"),w=this.properties.get("z");if(this.Yr.x!==u||this.Yr.y!==v||this.Yr.z!==w)this.properties.get("controllingPosition")||(v=this.n2(u,v,w)),m.setPosition({x:u, y:v,z:w,yaw:void 0}),this.tK()};t.prototype.NR=function(){this.properties.set("x",m.Ic.x);this.properties.set("y",m.Ic.y);this.properties.set("z",m.Ic.z);g.setFromQuaternion(m.xg);this.properties.set("yaw",-g.y*r);this.properties.set("pitch",g.x*r);this.properties.set("roll",g.z*r)};t.prototype.tK=function(){this.Yr.copy(m.Ic);this.dGa=this.Fha(this.Yr)};t.prototype.gs=function(){var u=null,v=null;(t.RB.get(this.I.R)||[]).forEach(function(w){w=w.getComponent(c.Cc);w.Ti?u=w:v=w});this.V9a(u,v)};t.prototype.V9a= function(u,v){this.wp=u;this.HT=v;u=u?u.O:null;this.Vx!==u&&(this.Vx&&this.AT(this.Vx),(this.Vx=u)&&this.GR(this.Vx))};t.prototype.GR=function(u){u.bind(k.pa,this.Pr,this,!0)};t.prototype.AT=function(u){u.unbind(k.pa,this.Pr,this)};t.prototype.bf=function(){this.I.K(c.cq)};t.prototype.Pr=function(u){if(this.wp&&this.properties&&!this.properties.get("inMandatorySequence")&&!u.data.NS&&"other"!=u.data.type&&!this.properties.get("clickTranslationDisabled")&&"translate"==this.properties.get("doubleClickAction")&& (u=this.zr.QS(this.wp),0!=u.length)){var v=u[0];if(v.face&&v.face.normal){u=b.copy(m.Ic);var w=d.copy(v.point);v=f.copy(v.face.normal).applyMatrix4(v.object.matrixWorld).sub(n.setFromMatrixPosition(v.object.matrixWorld)).normalize();if(Math.abs(Math.acos(v.dot(p)))<.25*Math.PI)w.y+=this.e2();else{v=q.copy(w).sub(u);var x=v.length(),y=.5*this.e2();if(x.75*Math.PI;return 0!==this.lk&&.95Date.now()-this.LB?(this.js=!0,v=this.lk*(w?-1:1),v=-g.setFromQuaternion(m.xg,"YXZ").y*r+ v,m.setPosition({x:void 0,y:void 0,z:void 0,yaw:v}),!0):!1};t.prototype.LR=function(u){if(!this.wp||0===this.wp.Tb.y&&0===this.wp.Tb.x)return!1;u=4E3/3600/this.bg*this.properties.get("translationSpeed",1)*(this.wp.IG?3:1)*u/1E3;var v=b.set(0,0,-1).applyQuaternion(m.xg),w=d.crossVectors(v,p);v.y=0;w.y=0;v.normalize().multiplyScalar(-this.wp.Tb.y*u);w.normalize().multiplyScalar(this.wp.Tb.x*u);this.ud.set(m.Ic.x+v.x+w.x,m.Ic.y,m.Ic.z+v.z+w.z);return!0};t.prototype.wU=function(){this.properties.get("inMandatorySequence")? this.properties.set("userInteracting",!1):this.uj?this.properties.set("userInteracting",!0):!this.wp||0===this.wp.Tb.y&&0===this.wp.Tb.x?this.properties.set("userInteracting",!1):this.properties.set("userInteracting",!0)};t.prototype.n3a=function(){if(!this.properties.get("collisionDetection"))return!1;var u=b,v=d;u.copy(this.ud).sub(this.Yr);v.copy(this.Yr).add(u.setLength(u.length()+.2/this.bg));if(this.zr.FG(this.Yr,v))return!0;u=this.properties.get("maxStepHeight");void 0===u&&(u=.25*this.e2()); v=this.Fha(this.ud);return-Infinityy?v:u+x*w/y};t.prototype.n2=function(u,v,w){u=this.op?-Infinity:this.Fha(b.set(u,v,w));return-Infinity===u?v:u+this.e2()};t.prototype.Fha=function(u){var v=this.kS.findIndex(function(x){return x.x==u.x&&x.z==u.z&&!isNaN(x.y)});if(-1!==v)return this.kS[v].y;v=this.zr.eS(u);var w=this.kS.find(function(x){return isNaN(x.y)});w||this.kS.push(w= new h.Vector3);w.set(u.x,u.y-v,u.z);return w.y};t.prototype.e2=function(){return m.SAa/this.bg};t.xG=function(u,v){this.RB.set(u,v)};t.eb=function(u){u.J(c.cq).manager=new t(u)};t.update=function(u){u.getComponent(c.cq).manager.update()};t.frame=function(u,v,w){u.getComponent(c.cq).manager.frame(v,w)};t.Fa=function(u){var v=u.getComponent(c.cq);v.manager.dispose();v.manager=null;u.ha(c.cq)};t.RB=new Map;t.My="minX maxX minY maxY minZ maxZ".split(" ");return t}();var g=new h.Euler(0,0,0,"YXZ"),b=new h.Vector3, d=new h.Vector3,f=new h.Vector3,n=new h.Vector3,q=new h.Vector3,p=new h.Vector3(0,1,0),r=180/Math.PI;return a}); define("hx","require lO lY fS mA fh pf dY ce oQ ib kP hu dQ".split(" "),function(a){var e=a("lO"),k=a("lY"),m=a("fS"),l=a("mA"),c=a("fh"),h=a("pf"),g=a("dY"),b=a("ce"),d=a("oQ"),f=a("ib"),n=a("kP"),q=a("hu"),p=a("dQ");a=e.extend(k,function(){k.apply(this,arguments)});a.prototype.Wc=function(r,t){(this.Uia.Ld.length||this.Uia.kg.length)&&l.I9a(this.Uia.u);this.UAa.u.length&&this.UAa.u.slice().forEach(c.eb);this.j1.Da.length&&this.j1.Da.slice().forEach(c.update);this.j1.u.length&&this.j1.u.slice().forEach(function(u){c.frame(u, r,t)});this.VAa.u.length&&this.VAa.u.slice().forEach(c.Fa);this.aCa.u.length&&this.aCa.u.slice().forEach(b.eb);this.lS.Da.length&&this.lS.Da.slice().forEach(b.update);this.lS.u.length&&this.lS.u.slice().forEach(function(u){b.frame(u,r,t)});this.bCa.u.length&&this.bCa.u.slice().forEach(b.Fa);this.TBa.u.length&&this.TBa.u.slice().forEach(g.eb);this.jS.Da.length&&this.jS.Da.slice().forEach(g.update);this.jS.u.length&&this.jS.u.slice().forEach(function(u){g.frame(u,r,t)});this.UBa.u.length&&this.UBa.u.slice().forEach(g.Fa); this.VBa.u.length&&this.VBa.u.slice().forEach(g.Fa);this.xFa.u.length&&this.xFa.u.slice().forEach(d.eb);this.nT.Da.length&&this.nT.Da.slice().forEach(d.update);this.nT.u.length&&this.nT.u.slice().forEach(function(u){d.frame(u,r,t)});this.yFa.u.length&&this.yFa.u.slice().forEach(d.Fa);p.xG(this.R,this.zj.u.slice());this.OJa.u.length&&this.OJa.u.slice().forEach(p.eb);this.BU.Da.length&&this.BU.Da.slice().forEach(p.update);this.BU.u.length&&this.BU.u.slice().forEach(function(u){p.frame(u,r,t)});this.PJa.u.length&& this.PJa.u.slice().forEach(p.Fa);this.QJa.u.length&&this.QJa.u.slice().forEach(p.Fa);n.xG(this.R,this.zj.u.slice());this.HJa.u.length&&this.HJa.u.slice().forEach(n.eb);this.zU.Da.length&&this.zU.Da.slice().forEach(n.update);this.zU.u.length&&this.zU.u.slice().forEach(function(u){n.frame(u,r,t)});this.IJa.u.length&&this.IJa.u.slice().forEach(n.Fa);this.JJa.u.length&&this.JJa.u.slice().forEach(n.Fa);q.xG(this.R,this.zj.u.slice());this.KJa.u.length&&this.KJa.u.slice().forEach(q.eb);this.AU.Da.length&& this.AU.Da.slice().forEach(q.update);this.AU.u.length&&this.AU.u.slice().forEach(function(u){q.frame(u,r,t)});this.LJa.u.length&&this.LJa.u.slice().forEach(q.Fa);this.MJa.u.length&&this.MJa.u.slice().forEach(q.Fa);this.VIa.u.length&&this.VIa.u.slice().forEach(f.eb);this.YL.Da.length&&this.YL.Da.slice().forEach(f.update);this.YL.Ld.length&&this.YL.Ld.slice().forEach(f.update);this.YL.u.length&&this.YL.u.slice().forEach(function(u){f.frame(u,r,t)});this.WIa.u.length&&this.WIa.u.slice().forEach(f.Fa); this.XIa.u.length&&this.XIa.u.slice().forEach(f.Fa);if(this.wF.Ld.length||this.wF.kg.length)h.fka(this.wF.u),this.jS.u.slice().forEach(g.update),this.lS.u.slice().forEach(b.update),this.nT.u.slice().forEach(d.update),this.zU.u.slice().forEach(n.update),this.AU.u.slice().forEach(q.update),this.BU.u.slice().forEach(p.update)};a.G={};a.G.zj=[m.Cc];a.G.wF=[m.Mm];a.G.Uia=[m.fH];a.G.TBa=[m.nC,m.uk.not,m.ps.not];a.G.jS=[m.nC,m.uk.not,m.ps];a.G.UBa=[m.nC.not,m.ps];a.G.VBa=[m.uk,m.ps];a.G.VIa=[m.$u,m.Gj,m.Fs.not]; a.G.YL=[m.$u,m.Gj,m.Fs];a.G.WIa=[m.Gj.not,m.Fs];a.G.XIa=[m.$u.not,m.Fs];a.G.OJa=[m.uk,m.pH,m.cq.not];a.G.BU=[m.uk,m.pH,m.cq];a.G.PJa=[m.pH.not,m.cq];a.G.QJa=[m.uk.not,m.cq];a.G.HJa=[m.uk,m.nH,m.aq.not];a.G.zU=[m.uk,m.nH,m.aq];a.G.IJa=[m.nH.not,m.aq];a.G.JJa=[m.uk.not,m.aq];a.G.KJa=[m.uk,m.oH,m.bq.not];a.G.AU=[m.uk,m.oH,m.bq];a.G.LJa=[m.oH.not,m.bq];a.G.MJa=[m.uk.not,m.bq];a.G.aCa=[m.oC,m.Nu.not];a.G.lS=[m.oC,m.Nu];a.G.bCa=[m.oC.not,m.Nu];a.G.xFa=[m.tC,m.Tu.not];a.G.nT=[m.tC,m.Tu];a.G.yFa=[m.tC.not, m.Tu];a.G.UAa=[m.VG,m.Eu.not];a.G.j1=[m.VG,m.Eu];a.G.VAa=[m.VG.not,m.Eu];return a}); define("jl",["require","fS"],function(a){function e(m){this.m=m;this.cya=this.ya=null;this.va=this.ra=void 0;this.update()}var k=a("fS");e.prototype.update=function(){var m=this.m.getComponent(k.si),l=m.source&&m.source.width||0,c=m.source&&m.source.height||0;!this.ya||!!this.ya.Ncb==m.isSprite&&this.ra==l&&this.va==c||(this.ya.map.dispose(),this.ya.dispose(),this.ya=null);this.ra=l;this.va=c;this.ya||(m.isSprite?(this.ya=new THREE.SpriteMaterial,this.ya.sizeAttenuation=!1):this.ya=new THREE.MeshBasicMaterial, this.ya.map=new THREE.Texture,this.ya.transparent=!0,this.m.J(k.Material).material=this.ya);this.ya.map.image!=m.source&&(this.ya.map.image=m.source,this.ya.map.needsUpdate=!0);this.cya!=m.gU&&(this.cya=m.gU,this.ya.map.needsUpdate=!0);this.ya.opacity=m.opacity||0;this.ya.depthTest=!!m.depthTest;this.ya.visible=0C;C++)for(var E=0;2>E;E++)for(var A=0;2>A;A++)f.set(0==C?v.min.x:v.max.x,0==E?v.min.y:v.max.y,0==A?v.min.z:v.max.z).applyMatrix4(u.matrixWorldInverse),f.xw&&(w=f.x),f.y>x&&(x=f.y),f.yD&&(D=-f.z),-f.zn.copy(f).sub(D.min).dot(D.direction)&&f.copy(D.min),f.applyMatrix4(q.copy(E.parent.matrixWorld).invert()),z=z.K(m.za),p.multiply(q.makeTranslation(z.translationX,z.translationY,z.Qe).invert()),p.multiply(q.makeRotationFromEuler(r.set(z.ke* u,z.Gd*u,z.df*u,z.cf)).invert()),f.applyMatrix4(q),z.positionX=f.x,z.positionY=f.y,z.positionZ=f.z)}}};e.prototype.txa=function(x){this.yN!=x&&(this.yN=x,this.ue&&(this.yN?this.ue.push(c.Nh):this.ue.pop(c.Nh)))};e.prototype.pSa=function(x,y,z,D,C){t.copy(x).sub(z);z=y.dot(D);var E=D.dot(D),A=y.dot(y);D=t.dot(D);var B=t.dot(y);C.copy(x);x=z*z-E*A;0!=x&&C.addScaledVector(y,(E*B-D*z)/x)};var h=new THREE.Vector3,g=new THREE.Vector3,b=new THREE.Vector3,d=new THREE.Vector3,f=new THREE.Vector3,n=new THREE.Vector3, q=new THREE.Matrix4,p=new THREE.Matrix4,r=new THREE.Euler,t=new THREE.Vector3,u=Math.PI/180;e.prototype.dispose=function(){this.txa(!1);this.rQ(null);this.qQ(null);this.m=null};e.Eka=function(x){x.J(m.Vu).manager=new e(x)};e.Wka=function(x){var y=x.getComponent(m.Vu);y.manager.dispose();y.manager=null;x.ha(m.Vu)};e.gs=function(x){x.getComponent(m.Vu).manager.update()};e.frame=function(x){x.getComponent(m.Vu).manager.frame()};var v=new Map,w=new Map;e.u$a=function(x){x.J(m.Ey);x.J(m.Mm);e.nJa(x)}; e.nJa=function(x){var y=l.Qc(x);w.set(x,y);var z=v.get(x.R);z||v.set(x.R,z=[]);y&&(y=z,0>y.indexOf(x)&&y.push(x))};e.AIa=function(x){var y=v.get(x.R),z=y.indexOf(x);0<=z&&y.splice(z,1);w["delete"](x);x.ha(m.Ey);x.ha(m.Mm)};return e}); define("lz",["require","lO","lY","fS","em"],function(a){var e=a("lO"),k=a("lY"),m=a("fS"),l=a("em");a=e.extend(k,function(){k.apply(this,arguments)});a.prototype.Wc=function(){this.rT.u.length&&this.rT.u.slice().forEach(l.Eka);this.zj.Da.length&&this.zj.Da.slice().forEach(l.gs);this.zj.u.length&&this.zj.u.slice().forEach(l.frame);this.sT.u.length&&this.sT.u.slice().forEach(l.Wka);this.BBa.u.length&&this.BBa.u.slice().forEach(l.u$a);this.ABa.u.length&&this.ABa.u.slice().forEach(l.nJa);this.DBa.u.length&& this.DBa.u.slice().forEach(l.AIa);this.EBa.u.length&&this.EBa.u.slice().forEach(l.AIa)};a.G={};a.G.rT=[m.Cc,m.Vu.not];a.G.zj=[m.Cc,m.Vu];a.G.sT=[m.Cc.not,m.Vu];a.G.BBa=[m.Object3D,m.Hu,m.Ey.not];a.G.ABa=[m.Object3D,m.Hu,m.Ey];a.G.DBa=[m.Object3D.not,m.Ey];a.G.EBa=[m.Hu.not,m.Ey];return a}); define("gN","require exports three.mod oj fS lY".split(" "),function(a,e,k,m,l,c){a=function(b){function d(){var f=b.call(this)||this;f.Sb=f.Sb.bind(f);f.Jb=f.Jb.bind(f);f.jb=f.jb.bind(f);f.zg=f.zg.bind(f);return f}Y(d,b);d.prototype.Wc=function(){this.ZBa.u.length&&this.ZBa.u.slice().forEach(this.Sb);this.$Ba.u.length&&this.$Ba.u.slice().forEach(this.jb);this.R1.Da.length&&this.R1.Da.slice().forEach(this.Jb);this.R1.u.length&&this.R1.u.slice().forEach(this.zg)};d.prototype.Sb=function(f){var n=f.J(l.Lu), q=f.J(l.Object3D);n.floor=q.ta=this.W2a();this.sU(f,!0)};d.prototype.Jb=function(f){this.sU(f)};d.prototype.jb=function(f){var n=f.getComponent(l.Lu).floor;n.parent&&n.parent.remove(n);n.geometry.dispose();n.material.dispose();f.ha(l.Lu);f.ha(l.Object3D)};d.prototype.zg=function(f){this.$8a(f)};d.prototype.$8a=function(f){var n=f.getComponent(l.Rp),q=(f=(f=f.getComponent(l.Lu))&&f.floor)&&f.parent&&f.parent.matrixWorld;if(q){g.setFromMatrixScale(q);var p=Math.max(Math.abs(g.x),Math.abs(g.y),Math.abs(g.z)); f.matrix.identity();f.matrix.multiply(h.makeScale(n.radius/p,n.radius/p,n.radius/p));f.matrix.multiply(h.extractRotation(q).invert());f.matrix.multiply(h.makeTranslation(0,n.height/n.radius,0));f.matrix.multiply(h.makeRotationX(.5*-Math.PI));f.updateMatrixWorld(!0)}};d.prototype.W2a=function(){var f=new k.CircleGeometry(1,128);f=new k.Mesh(f);f.receiveShadow=!0;f.needsUpdate=!0;f.matrixAutoUpdate=!1;f.castShadow=!1;return f};d.prototype.sU=function(f,n){void 0===n&&(n=!1);var q=f.getComponent(l.Rp); f=f.getComponent(l.Lu).floor;var p="transparent"==q.color,r=f.material&&f.material.isShadowMaterial||!1;f.material&&(n||r!=p)&&(f.material.dispose(),f.material=null);p?f.material||(f.material=new k.ShadowMaterial):(f.material||(f.material=new k.MeshStandardMaterial,f.material.defines.USE_UV="",f.material.onBeforeCompile=function(t){var u=t.fragmentShader.lastIndexOf("}");t.fragmentShader=t.fragmentShader.substring(0,u)+"float uvCenterCoef = 2.0 * length(vUv - 0.5);\nfloat uvAlphaCoef = 1.0 - smoothstep(0.97, 1.0, uvCenterCoef);\ngl_FragColor.a = uvAlphaCoef * gl_FragColor.a;\n"+ t.fragmentShader.substring(u,t.fragmentShader.length)},f.material.roughness=1,f.material.metalness=0,f.material.envMapIntensity=0,f.material.transparent=!0),f.material.color=m.Dp(q.color));f.material.needsUpdate=!0;f.material.opacity=q.opacity;f.renderOrder=0};d.G={};return d}(c);a.G={};a.G.ZBa=[l.Rp,l.Lu.not];a.G.R1=[l.Rp,l.Lu];a.G.$Ba=[l.Rp.not,l.Lu];var h=new k.Matrix4,g=new k.Vector3;return a}); define("lo",["require","fS","cu"],function(a){function e(w){this.m=w;this.Sca=!1}var k=a("fS"),m=a("cu");e.prototype.update=function(){this.Sca=!1};e.prototype.frame=function(){this.uf()};e.prototype.uf=function(){if(!this.Sca&&(this.Ua=this.Ua||m.zf(this.m))){var w=m.Qc(this.m),x=w&&w.parent;if(x&&x.matrixWorld){var y=[];this.Ua.traverse(function(E){E.isSprite||E.isLine||E==w||y.push(E)});var z=this.m.K(k.Mu);f.set(z.x,z.y,z.z).applyMatrix4(x.matrixWorld);d.ray.origin.set(f.x,f.y,f.z);d.ray.direction.set(0, -1,0);var D=d.intersectObjects(y,!1);if(0!=D.length){var C=D[0];h.copy(x.matrixWorld).invert();D=this.m.K(k.za,!0);g.setFromMatrixPosition(x.matrixWorld);l.copy(C.object.matrixWorld);b.setFromMatrixPosition(l);c.copy(l).invert();!z.PS&&C.face&&C.face.normal?p.copy(C.face.normal).applyMatrix4(l).sub(b).add(g):p.copy(g).add(r);p.applyMatrix4(h).normalize();u.setFromUnitVectors(q,p);t.setFromQuaternion(u,D.cf);D.ke=t.x*v;D.Gd=t.y*v;D.df=t.z*v;f.copy(C.point).applyMatrix4(h);D.translationX=f.x;D.translationY= f.y;D.Qe=f.z;n.setFromMatrixScale(h);x=Math.max(n.x,n.y,n.z);D.positionX=0;D.positionY=0;D.positionZ=x*z.distance;this.Sca=!0}}}};e.prototype.dispose=function(){};var l=new THREE.Matrix4,c=new THREE.Matrix4,h=new THREE.Matrix4,g=new THREE.Vector3,b=new THREE.Vector3,d=new THREE.Raycaster,f=new THREE.Vector3,n=new THREE.Vector3;new THREE.Matrix4;new THREE.Matrix4;var q=new THREE.Vector3(0,0,1),p=new THREE.Vector3,r=new THREE.Vector3(0,1,0),t=new THREE.Euler,u=new THREE.Quaternion,v=180/Math.PI;e.eb= function(w){w.J(k.qs).manager=new e(w)};e.Fa=function(w){var x=w.getComponent(k.qs);x.manager.dispose();x.manager=null;w.ha(k.qs)};e.frame=function(w){w.getComponent(k.qs).manager.frame()};e.update=function(w){w.getComponent(k.qs).manager.update()};return e}); define("ik",["require","lO","lY","fS","lo"],function(a){var e=a("lO"),k=a("lY"),m=a("fS"),l=a("lo");a=e.extend(k,function(){k.apply(this,arguments)});a.prototype.Wc=function(){this.WBa.u.length&&this.WBa.u.slice().forEach(l.eb);this.Q1.Da.length&&this.Q1.u.slice().forEach(l.update);this.Q1.u.length&&this.Q1.u.slice().forEach(l.frame);this.XBa.u.length&&this.XBa.u.slice().forEach(l.Fa);this.YBa.u.length&&this.YBa.u.slice().forEach(l.Fa)};a.G={};a.G.WBa=[m.Object3D,m.Mu,m.qs.not];a.G.Q1=[m.Object3D, m.Mu,m.qs];a.G.XBa=[m.Object3D.not,m.qs];a.G.YBa=[m.Mu.not,m.qs];return a});define("gF",["require","fS"],function(a){var e=a("fS");return{eb:function(k){var m=k.J(e.$G),l=k.J(e.Object3D);k.J(e.za);k=k.K(e.Group);l.ta=m.group=k.group=new THREE.Group},Fa:function(k){k.getComponent(e.$G).group=null;k.ha(e.$G);k.ha(e.Object3D)}}}); define("lT",["require","lO","lY","fS","gF"],function(a){var e=a("lO"),k=a("lY"),m=a("fS"),l=a("gF");a=e.extend(k,function(){k.apply(this,arguments)});a.prototype.Wc=function(){this.eDa.u.length&&this.eDa.u.slice().forEach(l.eb);this.fDa.u.length&&this.fDa.u.slice().forEach(l.Fa)};a.G={};a.G.eDa=[m.Group,m.$G.not];a.G.fDa=[m.Group.not,m.$G];return a}); define("mF","require lO oj lY fS cu oo".split(" "),function(a){var e=a("lO"),k=a("oj"),m=a("lY"),l=a("fS");a("cu");a("oo");a=e.extend(m,function(){m.apply(this,arguments);this.Sb=this.Sb.bind(this);this.Jb=this.Jb.bind(this);this.jb=this.jb.bind(this)});a.prototype.Wc=function(){this.bDa.u.length&&this.bDa.u.slice().forEach(this.Sb);this.aDa.Da.length&&this.aDa.Da.slice().forEach(this.Jb);this.cDa.u.length&&this.cDa.u.slice().forEach(this.jb)};a.prototype.Sb=function(c){var h=c.getComponent(l.rs); h=new THREE.LineSegments(this.oBa(h),this.Br(h));c.J(l.Object3D).ta=c.J(l.Ky).grid=h};a.prototype.Jb=function(c){var h=c.getComponent(l.rs);c=c.getComponent(l.Ky).grid;c.geometry=this.oBa(h);c.material=this.Br(h)};a.prototype.jb=function(c){var h=c.getComponent(l.Ky).grid;h.material.dispose();h.geometry.dispose();c.ha(l.Object3D);c.ha(l.Ky)};a.prototype.oBa=function(c){var h=k.Dp(c.aBa),g=k.Dp(c.$Ca),b=c.A1/2,d=c.size/c.A1,f=c.size/2,n=[],q=[];for(let r=0,t=0,u=-f;r<=c.A1;r++,u+=d){n.push(-f,0,u, f,0,u);n.push(u,0,-f,u,0,f);var p=r===b?h:g;p.toArray(q,t);t+=3;p.toArray(q,t);t+=3;p.toArray(q,t);t+=3;p.toArray(q,t);t+=3}c=new THREE.BufferGeometry;c.setAttribute("position",new THREE.Float32BufferAttribute(n,3));c.setAttribute("color",new THREE.Float32BufferAttribute(q,3));return c};a.prototype.Br=function(c){var h=new THREE.LineBasicMaterial;h.depthTest=c.depthTest;h.toneMapped=!1;h.vertexColors=!0;return h};a.G={};a.G.bDa=[l.rs,l.Ky.not];a.G.aDa=[l.rs,l.Ky];a.G.cDa=[l.rs.not,l.Ky];return a}); define("bl","require lO pu lr cH gD bm".split(" "),function(a){function e(f,n,q,p){this.eia=f;this.src=f.src;this.W3=n;this.UR=q;this.V1=p;this.frameWidth=this.eia.width/this.UR;this.frameHeight=this.eia.height/this.W3}var k=a("lO"),m=a("pu"),l=a("lr");a("cH");var c=a("gD"),h=a("bm");a=k.extend(c,function(f,n,q,p,r,t,u){c.call(this);this.jn=r;this.uh=new e(f,n,q,r);this.Lwa=t;this.hka(p);this.P9=u;this.S=document.createElement("canvas");this.S.width=this.uh.frameWidth;this.S.height=this.uh.frameHeight; this.Ca=this.S.getContext("2d");this.Ca.globalCompositeOperation="copy";this.C=l.V;this.d_=this.$m=0;this.L8=void 0;this.$h=g.request(this.uh);this.$h.bind(m.ba,this.Nj,this,!0);this.Nj()});a.prototype.hka=function(f){if(this.Te!==f){var n=this.ZQ;this.Te=f;this.ZQ=this.Te*this.uh.V1;this.Q9=this.ZQ-.1*this.Te;void 0!==n&&(this.$m=this.$m/n*this.ZQ)}};a.prototype.iHa=function(f){this.P9!==f&&(this.P9=f,this.Nj())};a.prototype.Rc=function(f){if(this.C!=f){if(f==l.Ob){if(this.C!=l.PLAYING)return}else f== l.PLAYING?this.C==l.V&&(this.$m=this.d_=0,this.Nj()):f!=l.V||0==this.$m&&0!=this.d_||(this.$m=this.Q9,this.Nj());this.C=f;h.requestFrame(this.Xj,this);this.trigger(m.ze)}};a.prototype.getState=function(){return this.C};a.prototype.Xj=function(f){this.C==l.PLAYING&&(this.$m=Math.min(this.$m+f,this.$h.$h.length*this.Te),this.$m>=this.ZQ&&(this.d_++,this.Lwa&&this.d_==this.Lwa?(this.Rc(l.V),this.$m=this.Q9,this.trigger(m.Gb)):(this.$m%=this.ZQ,this.trigger(m.zs))),this.Nj(),this.C==l.PLAYING&&h.requestFrame(this.Xj, this))};a.prototype.clear=function(){this.Rc(l.V);this.S.width=this.S.height=0;this.S=null;g.release(this.uh);this.uh=null};a.prototype.hg=function(){return this.S};a.prototype.Nj=function(){var f=this.P9&&this.$m>=this.Q9?0:Math.floor(this.$m/this.Te);this.L8!=f&&fh?(p.oy=h/p.width, p.pU=n==k.Za?0:n==k.sb?1-p.oy:.5*(1-p.oy),p.width=h):(p.pU=0,p.oy=1);p.height>g?(p.py=g/p.height,p.xU=q==k.Dc?1-p.py:q==k.wc?0:.5*(1-p.py),p.height=g):(p.xU=0,p.py=1);return p},Pha:function(h,g,b,d,f,n,q,p){g||(g=e.vm(h,b,d));f||(f=m.Gy);n||(n=4096/360);var r={};switch(f){case m.Gy:r.Oe=h;r.hs=g;break;case m.NONE:r.Oe=2*Math.atan2(.5*b,45*n)*l;r.hs=e.vm(r.Oe,b,d);break;case m.Mh:r.Oe=Math.min(e.Fp(g,b,d),h);r.hs=Math.min(e.vm(h,b,d),g);break;case m.ns:r.Oe=Math.max(e.Fp(g,b,d),h);r.hs=Math.max(e.vm(h, b,d),g);break;case m.Qp:r.Oe=h;r.hs=e.vm(h,b,d);break;case m.sk:r.Oe=e.Fp(g,b,d),r.hs=g}r.Oe>h?(r.oy=Math.tan(.5*h*c)*b/Math.tan(.5*r.Oe*c)/b,r.pU=q==k.Za?0:q==k.sb?1-r.oy:.5*(1-r.oy),r.Oe=h):(r.pU=0,r.oy=1);r.hs>g?(r.py=Math.tan(.5*g*c)*d/Math.tan(.5*r.hs*c)/d,r.xU=p==k.Dc?1-r.py:p==k.wc?0:.5*(1-r.py),r.hs=g):(r.xU=0,r.py=1);return r}}}); define("kv","require lb pu cH oh cz lL eQ eV fS oW bK kO".split(" "),function(a){function e(v){this.m=v;this.GE=this.GE.bind(this);this.Ha=this.Ha.bind(this);this.Pi=this.Pi.bind(this);v=v.getComponent(f.Om);this.$g=v.pp;this.le=v.O;this.o=v.properties;this.Ie=v.dia;this.eUa=v.isSprite;this.ug=!1;this.bn=this.bb=null;this.Ov=0;this.gea=this.f9=this.Lb=this.KW=this.W=void 0;k.ea(this.o,r,this.GE,!1);k.ea(this.Ie,t,this.GE,!1);k.ea(this.o,u,this.Pi,!1);this.GE()}var k=a("lb"),m=a("pu"),l=a("cH"),c= a("oh"),h=a("cz"),g=a("lL"),b=a("eQ"),d=a("eV"),f=a("fS"),n=a("oW"),q=a("bK"),p=a("kO"),r=["height","scaleMode","width"],t=["levels.url","levels.width","levels.height"],u="depthTest enabled encoding hidden side opacity".split(" ");e.prototype.frame=function(v){this.bn&&(this.bn.Hb(v),this.Ov=this.bn.ib("alpha"),this.wfa(),this.bn.$e()&&(this.bn=null),this.m.R.Ra());this.ug&&(this.ug=!1)};e.prototype.GE=function(){var v=this.Ie&&this.Ie.get("levels")||[];v=v.filter(function(B){return!!B.get("url")}); var w=1,x=1;c.Ja("AnimatedImageResource",this.Ie)&&(w=this.Ie.get("rowCount"),x=this.Ie.get("colCount"));var y=null;if(0J.get("width")&&J.get("width")/x>=A.width&&J.get("height")/w>=A.height?J:B})}this.sQ(y)};e.prototype.sQ=function(v){this.bb!= v&&(this.bb&&(this.iQa(),this.i9(),this.zW(),this.vq(),this.ug=!1),this.bb=v)&&(this.pq(),this.Cv(),this.oN(),this.ug=!1,this.Ha())};e.prototype.oN=function(){this.Kd||(this.Kd=new h,this.Kd.QL([this.bb.get("url")]),this.Kd.bind(m.da,this.Ad,this,!0),this.Kd.bind(m.kc,this.yua,this,!0),this.Kd.bind(m.xc,this.Zf,this,!0),this.pt=this.m.getComponent(f.Om).priority,g.Rn(this.Kd,this.pt))};e.prototype.vq=function(){this.Kd&&(this.Kd.unbind(m.da,this.Ad,this,!0),this.Kd.unbind(m.kc,this.yua,this,!0),this.Kd.unbind(m.xc, this.Zf,this,!0),g.Cj(this.Kd,this.pt),this.Kd=null)};e.prototype.Ad=function(){this.SPa();this.Xea(new l(m.da))};e.prototype.yua=function(v){this.Xea(new l(m.kc,{percent:v.Sg}))};e.prototype.Zf=function(){this.Xea(new l(m.xc))};e.prototype.Xea=function(v){this.$g&&this.$g.trigger(v)};e.prototype.Ha=function(){this.ug||(this.ug=!0,this.m.R.Ra())};e.prototype.pq=function(){this.Ia=new THREE.Texture;this.Ia.image=d.oCa();this.Ia.generateMipmaps=!0;this.Ia.minFilter=THREE.LinearMipMapLinearFilter};e.prototype.zW= function(){this.Ia&&(this.Ia.dispose(),this.Ia=null)};e.prototype.Cv=function(){this.eUa?(this.ya=new THREE.SpriteMaterial({map:this.Ia}),this.ya.sizeAttenuation=!0):this.ya=new THREE.MeshBasicMaterial({map:this.Ia});this.ya.transparent=!0;this.ya.needsUpdate=!0;this.m.J(f.Material).material=this.ya;this.soa(0);this.m.K(f.Ph,!0);this.Pi(!0)};e.prototype.Pi=function(v){var w=this.o.get("enabled")&&!this.o.get("hidden")&&!!this.$o,x=this.W!==w;if(x||v){this.W=w;w=this.Ov;var y=this.W?1:0,z=this.o.get("hidden")? 0:200;this.bn=w!==y?new n("linear",[new q("alpha",w,y,void 0)],Math.abs(w-y)*z):null;this.wfa()}w=this.o.get("encoding");if(this.KW!==w||v)this.KW=w,this.d1a();w=this.o.get("depthTest");if(this.f9!==w||v)this.f9=w,this.B0a();w=this.o.get("opacity");if(this.Lb!==w||v)this.Lb=w,this.wfa();w=this.o.get("side");if(this.gea!==w||v)this.gea=w,this.C0a();x&&this.le&&this.le.trigger(this.W?m.jd:m.Zc)};e.prototype.d1a=function(){if(this.ya&&(this.ya.map||this.ya.emissiveMap)){var v="srgb"==this.KW?THREE.SRGBColorSpace: THREE.LinearSRGBColorSpace;this.ya.map&&(this.ya.map.colorSpace=v);this.ya.emissiveMap&&(this.ya.emissiveMap.colorSpace=v);this.ya.needsUpdate=!0}this.m.K(f.Ph,!0);this.Ha()};e.prototype.B0a=function(){this.ya&&(this.ya.depthTest=this.f9);this.m.K(f.Ph,!0);this.Ha()};e.prototype.wfa=function(){this.ya&&this.soa((this.Lb||0)*this.Ov);this.$o&&this.$o.Ef(0t?!0:r.transparent;if(b.material.opacity!==t|| b.material.visible!==u||b.material.transparent!==v)g.mha(b),b.material.opacity=t,b.material.transparent=v,b.material.visible=u,b.material.needsUpdate=!0}void 0!==r.envMapIntensity&&(r=r.envMapIntensity*(void 0===f?1:f),b.material.envMapIntensity!==r&&(g.mha(b),b.material.envMapIntensity=r,b.material.needsUpdate=!0));g.Iab(b)}var w=this.lRa(n);(null==b.material.map?[]:Array.isArray(b.material.map)?b.material.map:[b.material.map]).forEach(function(x){x.anisotropy!==w&&(x.anisotropy=w,x.needsUpdate= !0)})}b.isMesh&&(void 0!==q&&b.castShadow!==q&&(b.castShadow=q),void 0!==p&&b.receiveShadow!==p&&(b.receiveShadow=p));b.children&&b.children.forEach(function(x){x.userData.M5a=d;x.userData.L5a=f;x.userData.J5a=n;x.userData.K5a=q;x.userData.N5a=p;this.RZ(x)}.bind(this))}};a.prototype.lRa=function(b){return 1+Math.round((b||0)*(h.qCa().capabilities.getMaxAnisotropy()-1))};a.prototype.fra=function(b){var d=b.userData.wFa;b=b.userData.M5a;if(void 0!==b||void 0!==d)if(d=(void 0!==b?b:1)*(void 0!==d?d: 1),1!==d)return d};a.prototype.BRa=function(b){var d=b.userData.envMapIntensity;b=b.userData.L5a;if(void 0!==b||void 0!==d)if(d=(void 0!==b?b:1)*(void 0!==d?d:1),1!==d)return d};a.prototype.zRa=function(b){var d=b.userData.HR;if(void 0!==d)return d;b=b.userData.J5a;if(void 0!==b)return b};a.prototype.ARa=function(b){var d=b.userData.castShadow;if(void 0!==d)return d;b=b.userData.K5a;if(void 0!==b)return b};a.prototype.CRa=function(b){var d=b.userData.receiveShadow;if(void 0!==d)return d;b=b.userData.N5a; if(void 0!==b)return b};a.prototype.fe=function(b,d){var f=this.fra(b);void 0!==f&&(f=0this.lEa?(this.lEa++,this.BIa(),this.QHa(),this.Er.start()):this.trigger(m.xc)};r.prototype.eja=function(t){f.kM&&t&&t.message&&console.error(t.message); this.trigger(m.xc)};r.prototype.dja=function(t){this.XK&&(this.dG=[],this.uB=[],t.scene.traverse(function(u){if(u.isMesh){var v=u.material;v&&(1==b.aGa&&v.Icb&&(u.material=v=(new k.MeshStandardMaterial).copy(v)),v.depthWrite=!v.transparent,v=this.D4a(v),this.uB=this.uB.concat(v))}this.dG.push(u)}.bind(this)),this.Jl=t,0==this.dG.length&&0==this.uB.length?this.cJa():this.I.R.Ra())};r.prototype.cJa=function(){this.trigger(m.INIT);this.trigger(m.da)};r.prototype.D4a=function(t){var u=[];t.Jcb?(t.alphaMap&& u.push(t.alphaMap),t.aoMap&&u.push(t.aoMap),t.bumpMap&&u.push(t.bumpMap),t.displacementMap&&u.push(t.displacementMap),t.emissiveMap&&u.push(t.emissiveMap),t.envMap&&u.push(t.envMap),t.lightMap&&u.push(t.lightMap),t.map&&u.push(t.map),t.metalnessMap&&u.push(t.metalnessMap),t.normalMap&&u.push(t.normalMap),t.roughnessMap&&u.push(t.roughnessMap)):t.isMeshBasicMaterial&&(t.alphaMap&&u.push(t.alphaMap),t.envMap&&u.push(t.envMap),t.map&&u.push(t.map));return u};r.TYPE="gltf";return r}(c)}); define("ci",["require","exports","pu","gD","cE"],function(a,e,k,m,l){return function(c){function h(g){var b=c.call(this)||this;b.type=h.TYPE;b.vj=null;b.CS=null;b.url="";b.VA=null;b.tm=null;b.kF=null;b.BG=null;b.properties=g;b.pL=b.pL.bind(b);b.rL=b.rL.bind(b);b.qL=b.qL.bind(b);b.mT=b.mT.bind(b);return b}Y(h,c);h.prototype.Hha=function(){return this.vj};h.prototype.start=function(g){this.url=g;l.GS.Fh()?this.qIa():l.GS.load(this.V6a,this)};h.prototype.update=function(){(!this.CS||this.tm&&this.tm.state== TDV.GS.StateFx.PLAYING)&&this.trigger(k.ba)};h.prototype.dispose=function(){this.kF&&(this.properties.unbind(k.F("antialiasingLevel"),this.Wia,this),this.kF.dispose(),this.kF=null);this.BG&&(this.properties.unbind(k.F("sphericalHarmonicsMaxDegree"),this.hja,this),this.BG.dispose(),this.BG=null);this.properties.unbind(k.F("displayEffect"),this.Zia,this);this.CS&&(this.vj.remove(this.CS),this.CS=null);this.vj&&(this.vj.removeEventListener("refresh",this.mT),this.vj.dispose(),this.vj=null);this.url= ""};h.prototype.V6a=function(){this.url&&this.qIa()};h.prototype.qIa=function(){this.vj=new TDV.GS.GaussianSplattingGroup;this.vj.addEventListener("refresh",this.mT);this.vj.renderOrder=0;this.vj.mu=!0;this.kF=new TDV.GS.AntialiasingFx;this.BG=new TDV.GS.SphericalHarmonicsFx;this.vj.fx=(this.vj.fx||[]).concat([this.kF,this.BG]);this.properties.bind(k.F("antialiasingLevel"),this.Wia,this,!1);this.properties.bind(k.F("sphericalHarmonicsMaxDegree"),this.hja,this,!1);this.properties.bind(k.F("displayEffect"), this.Zia,this,!1);this.Wia();this.hja();this.Zia();(new TDV.GS.GaussianCloudLoader).load(this.url,this.pL,this.rL,this.qL)};h.prototype.pL=function(g){this.vj&&(this.CS=g,this.vj.add(g),this.trigger(k.INIT),this.trigger(k.da))};h.prototype.rL=function(g){var b=g.total;g=g.loaded;this.trigger(k.kc,{totalBytes:b,bytesLoaded:g,percent:g=.98*d||!f.object.visible)return!1;f=Array.isArray(f.object.material)&&f.face?f.object.material[f.face.materialIndex]:f.object.material; return!f||f.visible}).length};e.prototype.j4a=function(g){m.ray.origin.copy(g);m.ray.direction.copy(c);g=this.yD();var b=k.intersect(m,g);if(0v.indexOf(x)&&v.push(x)}var v=[];u(t.material);u(t.userData.Rr);if(t.userData.PB)for(var w in t.userData.PB)u(t.userData.PB[w]);v.forEach(function(x){x.dispose();Object.keys(x).forEach(function(y){(y=x[y])&&"object"===typeof y&&"minFilter"in y&&y.dispose()})});t.geometry&&t.geometry.userData.OAa&&t.geometry.disposeBoundsTree(); t.geometry&&t.geometry.dispose()}),this.Ea=null,this.wo.ha(q.Object3D));this.sd&&(this.fXa(),this.sd.dispose(),this.sd=null);this.le&&(this.Je.DL(this.le),this.Mi.DL(this.le),this.Je=this.le=null);this.o&&(this.o.set("geometryQuery",null),this.o.set("objectQuery",null),this.o.set("isLoaded",!1),this.o=null)};return e}); define("o","require lb pu gD fS cu".split(" "),function(a){function e(p,r,t){this.lb=p;this.m=r;this.H=t;this.Gk=this.Gk.bind(this);this.Kg=this.Kg.bind(this);this.uw=this.uw.bind(this);this.we=null;this.W=!1;this.TZ=[1,1,1,1,1,1];this.Pv=[];this.og=[this.kK=this.oq(),this.jK=this.oq(),this.mK=this.oq(),this.lK=this.oq(),this.oK=this.oq(),this.nK=this.oq()];this.og.forEach(function(u){u=u.K(c.kd);u.opacity=.5;u.depthTest=!1}.bind(this));k.ea(this.H,f,this.Kg,!0);k.ea(this.H,n,this.Gk,!0);k.ea(this.H, q,this.uw,!0)}var k=a("lb"),m=a("pu"),l=a("gD"),c=a("fS"),h=a("cu");e.prototype.frame=function(){if(this.W&&(this.KYa(this.og.map(function(A){return h.FF(A)||1})),this.we)){var p=h.Qc(this.m),r=h.Qc(this.pI(this.we));if(p&&r){b.copy(p.matrixWorld).invert();g.setFromMatrixPosition(r.matrixWorld).applyMatrix4(b);p=this.H.get("x");r=this.H.get("y");var t=this.H.get("z"),u=this.H.get("width"),v=this.H.get("height"),w=this.H.get("depth"),x=0,y=0,z=0,D=0,C=0,E=0;switch(this.we){case this.kK:D=g.x-.5*u; x=.5*D;break;case this.jK:D=-g.x-.5*u;x=.5*-D;break;case this.mK:C=g.y-.5*v;y=.5*C;break;case this.lK:C=-g.y-.5*v;y=.5*-C;break;case this.oK:E=g.z-.5*w;z=.5*E;break;case this.nK:E=-g.z-.5*w,z=.5*-E}this.H.set("x",p+x);this.H.set("width",u+D);this.H.set("y",r+y);this.H.set("height",v+C);this.H.set("z",t+z);this.H.set("depth",w+E)}}};var g=new THREE.Vector3,b=new THREE.Matrix4;e.prototype.oq=function(){var p=this.lb.R.Vc("DraggingSphere");this.Pv.push(p);p.J(c.Mesh).renderOrder=2;p.J(c.Geometry).geometry= new THREE.SphereGeometry;p.J(c.kd);return p};e.prototype.Kg=function(){this.kK.K(c.kd).color=this.H.get("draggableXControlsColor");this.jK.K(c.kd).color=this.H.get("draggableXControlsColor");this.mK.K(c.kd).color=this.H.get("draggableYControlsColor");this.lK.K(c.kd).color=this.H.get("draggableYControlsColor");this.oK.K(c.kd).color=this.H.get("draggableZControlsColor");this.nK.K(c.kd).color=this.H.get("draggableZControlsColor");var p=this.H.get("draggableSphereRadius");this.og.forEach(function(r,t){r.K(c.za, !0).scale=p*this.TZ[t]}.bind(this))};e.prototype.Gk=function(){this.kK.K(c.za,!0).positionX=this.H.get("width")/2;this.jK.K(c.za,!0).positionX=-this.H.get("width")/2;this.mK.K(c.za,!0).positionY=this.H.get("height")/2;this.lK.K(c.za,!0).positionY=-this.H.get("height")/2;this.oK.K(c.za,!0).positionZ=this.H.get("depth")/2;this.nK.K(c.za,!0).positionZ=-this.H.get("depth")/2};e.prototype.uw=function(){var p=this.H.get("sizeDraggable");this.W!=p&&(this.W=p,this.og.forEach(function(r){p?(r.J(c.pb).I=this.m, this.og.forEach(function(t){t=t.J(c.Vd);t.zB=!0;t.TA=!0;t.O=new l;t.O.bind(m.qd,this.UI,this,!0);t.O.bind(m.fc,this.Pba,this,!0);t.O.bind(m.fb,this.Nba,this,!0);t.O.bind(m.Eb,this.Oba,this,!0)}.bind(this))):(r.ha(c.pb),this.og.forEach(function(t){t.ha(c.Vd)}.bind(this)))}.bind(this)))};e.prototype.KYa=function(p){for(var r=!1,t=0;tx)?E>A?D=E/z:C=A/(1-x):this.jda===this.we&&(1>z||1>x)?B>A?D=B/(1-z):C=A/(1-x):this.kba===this.we&&(0J?D=E/z:C=J/x:this.Dda===this.we&&(1>z||0J?D=B/(1-z):C=J/x);void 0!== C&&void 0===D?D=C*this.noa:void 0!==D&&void 0===C&&(C=D/this.noa);void 0!==D&&void 0!==C&&(z=this.H.get("sizeAttenuation")?this.qt/this.kV:1,this.H.set("width",this.ra=D*z),this.H.set("height",this.va=C*z))}D=this.Ps.getComponent(c.za);g.copy(w.parent.matrixWorld).invert().multiply(y.matrixWorld).decompose(b,f,d);p.setFromQuaternion(f,D.cf);p.x*=r;p.y*=r;p.z*=r;if(D.ke!=p.x||D.Gd!=p.y||D.df!=p.z)D=this.Ps.K(c.za),D.ke=p.x,D.Gd=p.y,D.df=p.z;w.parent.getWorldScale(b);this.MXa(1/Math.max(b.x,b.y,b.z)); this.Tda(h.FF(this.Ps)||1)}}};e.prototype.c0a=function(w,x){null!=this.ffa&&clearTimeout(this.ffa);this.ffa=setTimeout(function(){this.ffa=null;if(this.ra!==w||this.va!==x)this.ra=w,this.va=x,this.noa=this.ra/this.va}.bind(this),100)};e.prototype.oq=function(){var w=this.lb.R.Vc("DraggingSphere");w.J(c.Mesh).renderOrder=2;w.J(c.Geometry).geometry=new THREE.SphereGeometry;w.J(c.kd);return w};e.prototype.B8=function(){var w=this.lb.R.Vc("BoxBorder");w.J(c.Line);w.J(c.Geometry).geometry=this.QPa();var x= w.J(c.ph);x.color="#0000ff";x.depthTest=!1;x.width=1;return w};e.prototype.QPa=function(){var w=[new THREE.Vector3(-.5,-.5,0),new THREE.Vector3(.5,-.5,0),new THREE.Vector3(.5,-.5,0),new THREE.Vector3(.5,.5,0),new THREE.Vector3(.5,.5,0),new THREE.Vector3(-.5,.5,0),new THREE.Vector3(-.5,.5,0),new THREE.Vector3(-.5,-.5,0)];return(new THREE.BufferGeometry).setFromPoints(w)};e.prototype.Kg=function(){var w=this.Ms.K(c.ph);w.color=this.H.get("draggableLineColor");w.opacity=this.H.get("draggableLineOpacity"); w.width=this.H.get("draggableLineWidth");this.og.forEach(function(x){x.K(c.kd).color=this.H.get("draggableSphereColor");x.K(c.za).scale=this.H.get("draggableSphereRadius")*this.qt}.bind(this))};e.prototype.Tda=function(w){this.qt!=w&&(this.qt=w,this.hE(),this.Kg())};e.prototype.MXa=function(w){this.kV!=w&&(this.kV=w,this.hE(),this.Kg())};e.prototype.hE=function(){var w=this.H.get("anchorX"),x=this.H.get("anchorY"),y=this.H.get("width"),z=this.H.get("height"),D=this.H.get("sizeAttenuation")?this.kV: this.qt,C=this.kba.K(c.za,!0);C.positionX=-w*y*D;C.positionY=x*z*D;C=this.Dda.K(c.za,!0);C.positionX=(1-w)*y*D;C.positionY=x*z*D;C=this.dba.K(c.za,!0);C.positionX=-w*y*D;C.positionY=(x-1)*z*D;C=this.jda.K(c.za,!0);C.positionX=(1-w)*y*D;C.positionY=(x-1)*z*D;C=this.Ms.K(c.za,!0);C.positionX=(.5-w)*y*D;C.positionY=(x-.5)*z*D;C.Cf=y*D;C.Pf=z*D;this.c0a(y,z)};e.prototype.uw=function(){var w=this.H.get("sizeDraggable");this.W!=w&&((this.W=w)?(this.Ps.J(c.pb).I=this.m,this.og.forEach(function(x){x=x.J(c.Vd); x.zB=!0;x.TA=!0;x.O=new l;x.O.bind(m.qd,this.UI,this,!0);x.O.bind(m.fc,this.Pba,this,!0);x.O.bind(m.fb,this.Nba,this,!0);x.O.bind(m.Eb,this.Oba,this,!0)}.bind(this))):(this.Ps.ha(c.pb),this.og.forEach(function(x){x.ha(c.Vd)}.bind(this))))};e.prototype.UI=function(w){(w=this.Sv(w))&&w!=this.we&&(w.K(c.kd).opacity=1)};e.prototype.Pba=function(w){(w=this.Sv(w))&&w!=this.we&&(w.K(c.kd).opacity=.5)};e.prototype.Nba=function(w){w=this.Sv(w);this.wQ(w)};e.prototype.Oba=function(w){(w=this.Sv(w))&&w==this.we&& (this.wQ(null),this.hE(),(w=-1!=this.og.indexOf(w))&&this.H.trigger(m.yl),w&&this.H.trigger(m.Yma))};e.prototype.Sv=function(w){w=this.og.map(function(x){return x.getComponent(c.Vd).O}).indexOf(w.source);if(-1==w)return null;w=this.og[w];return this.ZTa(w)?w:null};e.prototype.ZTa=function(w){var x=this.H.get("anchorX"),y=this.H.get("anchorY");return this.dba===w&&(0x||0y)||this.Dda===w&&(1>x||1>y)?!0:!1};e.prototype.wQ=function(w){this.we&&(this.we.K(c.kd).opacity= .5,this.pI(this.we).ha(c.Hu));if(this.we=w){this.we.K(c.kd).opacity=1;var x=this.pI(this.we).J(c.Hu),y=h.getWorldPosition(this.m);w=h.getWorldPosition(w);w=(new THREE.Vector3).copy(w).sub(y);var z=Math.min(w.length(),10*this.qt);y=(new THREE.Vector3).copy(y).add(b.copy(w).setLength(z));x.direction=w;x.min=y}};e.prototype.pI=function(w){return-1!=this.og.indexOf(w)?w:null};e.prototype.dispose=function(){k.ca(this.H,u,this.hE);k.ca(this.H,t,this.Kg);k.ca(this.H,v,this.uw);var w=this.lb.R;this.Pv.forEach(function(x){w.he(x)}); this.H=this.lb=this.og=this.m=this.Pv=null};var t=["draggableLineColor","draggableLineOpacity","draggableLineWidth","draggableSphereColor","draggableSphereRadius"],u="anchorX anchorY height sizeAttenuation x y z width".split(" "),v=["sizeDraggable"];return e}); define("iB","require lb pu iv gD fS cR cu".split(" "),function(a){function e(x,y,z,D,C){this.lb=x;this.Je=z;this.Mi=D;this.H=C;this.Gk=this.Gk.bind(this);this.pP=this.pP.bind(this);this.Kg=this.Kg.bind(this);this.SY=this.SY.bind(this);this.vw=this.vw.bind(this);this.$g=this.Je.Xt(1);this.Roa=new THREE.Vector3;this.QV=new THREE.Euler;this.H.get("preload")&&this.Mi.pK(this.$g);this.m=this.lb.R.Vc("SpriteContainer");this.m.J(h.Group);x=this.m.J(h.pb);x.I=this.lb;x.id=this.H.get("parentId");this.eR=this.lb.R.Vc("TranslationSpriteContainer"); this.eR.J(h.Group);this.eR.J(h.pb).I=this.m;this.Bt=this.lb.R.Vc("Sprite");this.Bt.J(h.pb).I=this.eR;x=this.Bt.J(h.Om);x.properties=this.H;x.dia=this.H.get("image");x.O=this.H;x.pp=this.$g;x.isSprite=!0;x.priority=this.H.get("preload")?l.qC:l.kma;this.Bt.J(h.Vd).O=this.H;this.Bt.J(h.By);this.Bt.J(h.nM).object=this.H;this.eba=!1;this.qt=1E-4;this.Uz=this.m.R.Vc("TranslationLine");this.Uz.J(h.Line).renderOrder=1;this.Uz.J(h.ph);this.w9=new g(this.lb,this.eR,this.H);k.ea(this.H,w,this.vw,!0);k.ea(this.H, r,this.Gk,!0);k.ea(this.H,u,this.pP,!0);k.ea(this.H,v,this.Kg,!0);k.ea(this.H,t,this.SY,!0)}var k=a("lb"),m=a("pu"),l=a("iv"),c=a("gD"),h=a("fS"),g=a("cR"),b=a("cu");e.prototype.frame=function(){this.w9.frame();this.Tda(b.FF(this.m)||1E-4)};e.prototype.Gk=function(){this.m.J(h.pb).id!=this.H.get("parentId")&&(this.m.K(h.pb).id=this.H.get("parentId"));var x=this.m.K(h.za,!0);x.translationX=this.H.get("x");x.translationY=this.H.get("y");x.Qe=this.H.get("z")};e.prototype.Tda=function(x){this.qt!=x&& (this.qt=x,this.H.set("worldPixelScale",b.XCa(this.m)),this.pP())};e.prototype.pP=function(){var x=this.m.K(h.za,!0),y=this.eR.K(h.za,!0),z=this.Uz.K(h.za,!0),D=this.H.get("translationLength");n.set(this.H.get("translationX"),this.H.get("translationY"),this.H.get("translationZ"));D=void 0!==D?D*this.qt:n.length();if(this.Roa.equals(n)){var C=this.QV.x;var E=this.QV.y;var A=this.QV.z}else d.setFromUnitVectors(q,n.normalize()),E=Math.atan2(n.x,n.z),C=-Math.atan2(n.y,Math.sqrt(n.x*n.x+n.z*n.z)),A=0; y.translationX=0;y.translationX=0;y.translationY=0;y.Qe=D;z.scale=D;x.ke=C*p;x.Gd=E*p;x.df=A*p;x.cf="YXZ";this.vza()};var d=new THREE.Quaternion,f=new THREE.Euler,n=new THREE.Vector3,q=new THREE.Vector3(0,0,1),p=180/Math.PI;e.prototype.Kg=function(){var x=this.Bt.K(h.Vd,!0);x.bM=this.H.get("useHandCursor");x.oU=this.H.get("transparentAreaActive");x.TA=this.H.get("clickEnabled");x.zB=this.H.get("rollOverEnabled");x=this.Uz.K(h.ph);x.color=this.H.get("translationLineColor");x.depthTest=this.H.get("depthTest"); x.opacity=this.H.get("hidden")?0:this.H.get("translationLineOpacity");x.width=this.H.get("translationLineWidth");this.vza();this.Bt.J(h.Sprite).renderOrder=this.H.get("depthTest")?0:2};e.prototype.SY=function(){var x=this.Bt.K(h.Sprite,!0);x.qK=this.H.get("anchorX");x.rK=this.H.get("anchorY");x.width=this.H.get("width");x.height=this.H.get("height");x.scale=this.H.get("scale");x.sizeAttenuation=this.H.get("sizeAttenuation")};e.prototype.vw=function(){if(this.H.get("positionDraggable")||this.H.get("translationDraggable")){var x= this.m.K(h.Ug,!0);x.O||(x.O=new c,x.O.bind(m.ba,this.ll,this,!0));x.translate=this.H.get("positionDraggable")||!1;x.rotate=this.H.get("translationDraggable")||!1;x.scale=!1}else(x=this.m.getComponent(h.Ug))&&x.O.unbind(m.ba,this.ll,this),this.m.ha(h.Ug)};e.prototype.ll=function(x){var y=n.set(this.H.get("translationX"),this.H.get("translationY"),this.H.get("translationZ")).length();f.setFromQuaternion(x.data.quaternion,this.m.getComponent(h.za).cf);n.copy(q).setLength(y).applyQuaternion(x.data.quaternion); this.Roa.copy(n);this.QV.copy(f);this.H.set({x:x.data.position.x,y:x.data.position.y,z:x.data.position.z,translationX:n.x,translationY:n.y,translationZ:n.z});this.H.trigger(m.yl)};e.prototype.vza=function(){var x=this.H.get("translationLineVisible")&&0
"})};e.prototype.FQa=function(b){e.Tna.nodeValue=b;(b=e.Pna.innerHTML)||(b=" ");return b};e.eKa=g;e.Pna=document.createElement("pre");e.Tna=document.createTextNode("");e.Pna.appendChild(e.Tna);return e}); define("da",["require","bp","bX","hR"],function(a){function e(c,h){this.M=c;this.km=h;this.jZa()}var k=a("bp"),m=a("bX"),l=a("hR");e.prototype.hg=function(){return this.S};e.prototype.qe=function(){return this.S.width};e.prototype.Ze=function(){return this.S.height};e.prototype.jZa=function(){this.S=document.createElement("canvas");var c=this.km.split("\n"),h=this.Yg("toolTipBackgroundColor"),g=this.Yg("toolTipBackgroundOpacity"),b=this.Yg("toolTipBorderRadius"),d=this.Yg("toolTipBorderColor"),f= this.Yg("toolTipBorderSize");this.Yg("toolTipDisplayTime");var n=this.Yg("toolTipFontFamily"),q=this.Yg("toolTipFontSize"),p=this.Yg("toolTipFontColor"),r=this.Yg("toolTipFontWeight"),t=this.Yg("toolTipFontStyle"),u=this.Yg("toolTipPaddingBottom"),v=this.Yg("toolTipPaddingLeft"),w=this.Yg("toolTipPaddingTop"),x=this.Yg("toolTipPaddingRight"),y=this.Yg("toolTipOpacity"),z=this.Yg("toolTipTextShadowBlurRadius"),D=this.Yg("toolTipTextShadowColor"),C=this.Yg("toolTipTextShadowHorizontalLength"),E=this.Yg("toolTipTextShadowVerticalLength"), A=this.Yg("toolTipTextShadowOpacity"),B=new m.J6;B.fontFamily=n;B.fontSize=q+(isNaN(q)?"":"px");B.fontWeight=r;B.fontStyle=t;this.S=document.createElement("canvas");var J=this.S.getContext("2d"),H=c.map(function(R){return m(R,B,J)}),P=0,T=0;H.forEach(function(R){P=Math.max(R.width,P);T+=R.height});var V=1c)&&(this.l9=c)};l.prototype.lu=function(){return this.l9};l.prototype.$0=function(c,h){if(""==this.Zb||this.EA>h)this.Zb=c,this.EA=h};l.prototype.ny=function(){return this.Zb};l.prototype.bs=function(c){this.Xoa=void 0===c?[]:Array.isArray(c)?c:[c]};l.prototype.cl=function(){return 0n.indexOf(f[q])){f=!1;break a}for(q=0;qf.indexOf(n[q])){f= !1;break a}f=!0}f||(this.KE(!1),this.Kk=d.Kk,this.Kk.length&&this.KE(!0,d.V4()))};a.prototype.oYa=function(d){this.xv!=d&&(this.xv=d,this.ve.set("changing",this.xv),this.ofa(),this.Kfa())};a.prototype.KE=function(d,f){this.od!=d&&(this.od=d,this.ve.set("over",this.od&&f),this.ofa(),this.Kfa())};a.prototype.Uw=function(d){this.bp!=d&&(this.bp=d,this.Zb.set("text",this.bp),this.Zb.set("alpha",this.bp?1:0),this.bp&&this.Zb.Dh())};a.prototype.Vk=function(d){this.j.AS().sort(function(f,n){return n.get("index")- f.get("index")}).forEach(function(f){f.Fm(d)}.bind(this))};a.prototype.Ak=function(d){this.$j=this.tCa(this.C);return new h(this,this.$j?[this.$j]:[],this.$j,d)};a.prototype.Kfa=function(){!this.od||this.xv||void 0===this.Jda?this.xea():this.od&&!this.mQ&&this.MZa()};a.prototype.ofa=function(){this.od||this.xv||void 0===this.Zra?(this.ve.set("alpha",1),this.rya()):1!=this.ve.get("alpha")||this.$N||this.yZa()};a.prototype.xea=function(){this.mQ&&(clearInterval(this.mQ),this.mQ=null)};a.prototype.MZa= function(){this.ve.set("overProgress",0);this.Mva=(new Date).getTime();this.mQ=setInterval(this.QVa.bind(this),100)};a.prototype.QVa=function(){var d=(new Date).getTime()-this.Mva;d>=this.Jda?(this.xea(),this.OH()):this.ve.set("overProgress",d/this.Jda)};a.prototype.rya=function(){this.$N&&(clearInterval(this.$N),this.$N=null)};a.prototype.yZa=function(){this.Yra=(new Date).getTime();this.$N=setInterval(this.iVa.bind(this),10)};a.prototype.iVa=function(){var d=this.Zra-((new Date).getTime()-this.Yra); this.ve.set("alpha",Math.max(.01,Math.min(1,d/500)));0>=d&&this.rya()};return a}); define("le","require lO jF cC eB fr h oj".split(" "),function(a){var e=a("lO"),k=a("jF"),m=a("cC"),l=a("eB"),c=a("fr"),h=a("h"),g=a("oj"),b=new THREE.Matrix4,d=Math.PI/180;a=e.extend(h,function(){h.call(this);this.set("tag","Laser");this.set("matrix",null);this.set("over",!1);this.set("pressed",!1);this.set("intersectionDistance",0);this.set("visible",!1);this.set("attachToCamera",!1);this.set("dotVisible",!0);this.gda=this.aQ=this.rt=this.fda=null;new THREE.Matrix4;this.hda=new THREE.Matrix4;this.hda.multiply(b.makeRotationX(-90* d));this.hda.multiply(b.makeTranslation(0,.5*f,0));this.FW=this.EW=this.DW=this.Iv=this.p9=null;new THREE.Matrix4;this.q9=new THREE.Matrix4;this.jN=this.BW=this.o9=null;new THREE.Matrix4;this.fD=[new THREE.Matrix4,new THREE.Matrix4,new THREE.Matrix4];this.fD[0].multiply(b.makeRotationX(-90*d));this.fD[0].multiply(b.makeTranslation(0,.5*-q,0));this.fD[1].multiply(b.makeRotationX(-90*d));this.fD[1].multiply(b.makeTranslation(0,.5*-q,.5*-n));this.fD[2].multiply(b.makeRotationX(-90*d));this.fD[2].multiply(b.makeTranslation(0, .5*-q,-n))});a.prototype.na=function(p){h.prototype.na.call(this,p);this.Mfa();this.LA()};a.prototype.Mfa=function(){this.P("visible")&&(this.get("meshGroup").visible=this.get("visible"));this.P("dotVisible")&&l.ef([this.EW,this.BW],this.get("dotVisible")?1:0)};a.prototype.LA=function(){this.P("over","pressed")&&(this.oza(),this.Hza())};var f=.35,n=.012,q=.1;a.prototype.mo=function(){this.BW=l.create(new THREE.SphereGeometry(2.3,32,32),this.mPa());this.EW=l.create(new THREE.SphereGeometry(2,32,32), this.nPa());this.gda=l.create(new THREE.CylinderGeometry(.003,.003,f,8),this.NPa());this.SH=[];this.SH.push(l.create(new THREE.CylinderGeometry(n,n,q,32),this.E8()));this.SH.push(l.create(new THREE.BoxGeometry(2*n,q,n),this.E8()));this.SH.push(l.create(new THREE.CylinderGeometry(n,n,q,32),this.E8()));return[this.BW,this.EW,this.gda].concat(this.SH)};a.prototype.mPa=function(){if(null==this.o9){var p=document.createElement("canvas");p.width=p.height=256;var r=p.getContext("2d"),t=new c;t.Gm(p);this.o9= m.Br(t.texture(),new m.ao);r.fillStyle="rgba(0, 0, 0, 0.75)";r.clearRect(0,0,p.width,p.height);r.fillRect(0,0,p.width,p.height)}return this.o9};a.prototype.nPa=function(){null==this.p9&&(this.Iv=document.createElement("canvas"),this.Iv.width=this.Iv.height=256,this.DW=this.Iv.getContext("2d"),this.FW=new c,this.FW.Gm(this.Iv),this.p9=m.Br(this.FW.texture(),new m.ao),this.oza());return this.p9};a.prototype.oza=function(){this.DW.fillStyle=this.j$();this.DW.clearRect(0,0,this.Iv.width,this.Iv.height); this.DW.fillRect(0,0,this.Iv.width,this.Iv.height);this.FW.update()};a.prototype.NPa=function(){null==this.fda&&(this.rt=document.createElement("canvas"),this.rt.width=this.rt.height=256,this.aQ=this.rt.getContext("2d"),this.ida=new c,this.ida.Gm(this.rt),this.fda=m.Br(this.ida.texture(),new m.ao),this.Hza());return[this.fda]};a.prototype.Hza=function(){var p=g.Sr(this.j$()).join(", "),r=this.aQ.createLinearGradient(0,0,0,this.rt.height);r.addColorStop(0,"rgba("+p+", 0)");r.addColorStop(.5,"rgba("+ p+", 1)");r.addColorStop(1,"rgba("+p+", 1)");this.aQ.fillStyle=r;this.aQ.clearRect(0,0,this.rt.width,this.rt.height);this.aQ.fillRect(0,0,this.rt.width,this.rt.height);this.ida.update()};a.prototype.E8=function(){if(null==this.jN){var p=document.createElement("canvas");p.width=p.height=256;var r=p.getContext("2d"),t=new c;t.Gm(p);this.jN=m.Br(t.texture(),new m.ao);r.fillStyle="rgba(64, 64, 64, 1)";r.clearRect(0,0,p.width,p.height);r.fillRect(0,0,p.width,p.height)}return[this.jN,this.jN,this.jN]}; a.prototype.qr=function(){var p=!1,r=!1,t=!1;if(this.P("intersectionDistance")){r=(r=this.get("intersectionDistance"))?k.du(r):k.Ir();var u=r/k.Ir();this.q9.makeTranslation(0,0,-r);this.q9.multiply(b.makeScale(u,u,u));r=!0}this.P("matrix")&&(t=r=p=!0);r&&(b.identity(),(r=this.get("matrix"))&&b.multiply(r),b.multiply(this.q9),l.Ar(this.EW,b),l.Ar(this.BW,b));p&&(b.identity(),(r=this.get("matrix"))&&b.multiply(r),b.multiply(this.hda),l.Ar(this.gda,b));if(t)for(r=this.get("matrix"),p=0;pu.indexOf(t[v])){t=!1;break a}for(v=0;vt.indexOf(u[v])){t=!1;break a}t=!0}t||!r.V4()&&!this.Rj.get("over")||(this.Kk=r.Kk,d.Ti());this.Rj.set("over", r.V4());this.Rj.set("intersectionDistance",r.lu());this.Rj.set("dotVisible",!r.l3a())};a.prototype.Uw=function(r){this.bp!=r&&(this.bp&&this.j.remove(this.Zb),this.bp=r)&&(this.Zb=new h(this.bp),this.Zb.set("text",this.bp),this.Zb.set("matrix",null),this.Zb.set("matrix",this.Hl),this.j.add(this.Zb))};a.prototype.Vk=function(r){this.j.AS().sort(function(t,u){return u.get("index")-t.get("index")}).forEach(function(t){t.Fm(r)}.bind(this))};a.prototype.Ak=function(r){this.$j=m.s4a(this.Hl,this.$j);return new g(this, [this.$j],this.tCa(this.C),r)};return a}); define("jD","require lO pu cr V fw oF bh".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("cr"),l=a("V"),c=a("fw"),h=a("oF"),g=a("bh");a=e.extend(h,function(b){h.call(this,h.AM,b);this.j.M.bind(k.Xb,this.Tj,this,!0);this.j.M.bind(k.Up,this.dta,this,!0);this.j.M.bind(k.fc,this.zXa,this,!0);this.j.M.bind(k.fb,this.$d,this,!0);this.j.M.bind(k.Eb,this.Uj,this,!0);this.Cw=this.Bw=this.Gw=this.Dn=this.nd=this.md=void 0;this.$j=this.C=null;this.PJ=void 0;this.Zb=""});a.prototype.clear=function(){this.j.M.unbind(k.Xb, this.Tj,this,!0);this.j.M.unbind(k.Up,this.dta,this,!0);this.j.M.unbind(k.fb,this.$d,this,!0);this.j.M.unbind(k.Eb,this.Uj,this,!0);this.Qfa&&(this.j.zL(g.Fe),this.Qfa=!1);this.Uw("")};a.prototype.update=function(b){this.C=b;this.xfa()};a.prototype.HCa=function(){return{x:this.md,y:this.nd,pageX:this.Bw,pageY:this.Cw}};a.prototype.Tj=function(b){this.md=b.x;this.nd=b.y;this.Bw=b.pageX;this.Cw=b.pageY;this.B0()};a.prototype.dta=function(){this.Cw=this.Bw=this.nd=this.md=void 0;this.B0()};a.prototype.zXa= function(){this.Cw=this.Bw=this.nd=this.md=void 0;this.B0()};a.prototype.$d=function(b){this.md=this.Dn=b.x;this.nd=this.Gw=b.y;this.Bw=b.pageX;this.Cw=b.pageY;this.Vk(this.Ak(k.Sy))};a.prototype.Uj=function(b){this.md=b.x;this.nd=b.y;this.Bw=b.pageX;this.Cw=b.pageY;this.Vk(this.Ak(k.iH));this.Laa(this.Dn,this.Gw,this.md,this.nd)&&this.Vk(this.Ak(k.Sf))};a.prototype.xfa=function(){this.rr||(this.rr=setTimeout(function(){this.rr=null;this.$k()}.bind(this),300))};a.prototype.B0=function(){this.rr&& (clearTimeout(this.rr),this.rr=null);this.$k()};a.prototype.$k=function(){var b=this.Ak(k.xl);this.Vk(b);this.Uw(b.ny());b=b.gIa();this.PJ!=b&&(this.PJ&&this.j.zL(this.PJ),(this.PJ=b)&&this.j.S3(this.PJ))};a.prototype.Uw=function(b){this.Zb!=b&&(this.Zb=b,this.j.M.set("toolTip",this.Zb))};a.prototype.Vk=function(b){this.j.AS().sort(function(d,f){return f.get("index")-d.get("index")}).forEach(function(d){d.Fm(b)}.bind(this))};a.prototype.Ak=function(b){return new c(this,this.hX(),null,b)};a.prototype.hX= function(){if(void 0!==this.md&&void 0!==this.nd&&this.C.Cg){var b=l.getCamera(this.C.Cg);if(b)return this.$j=m.ICa(b,this.md,this.nd,this.C.width,this.C.height,this.$j),[this.$j]}return[]};a.prototype.Laa=function(b,d,f,n){b=f-b;d=n-d;return 5>=Math.sqrt(b*b+d*d)};return a}); define("gS","require lO pu cr V fw oF".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("cr"),l=a("V"),c=a("fw"),h=a("oF");a=e.extend(h,function(b){h.call(this,h.BM,b);this.M=this.j.M;this.M.bind(k.fb,this.$d,this,!0);this.M.bind(k.Eb,this.Uj,this,!0);this.M.bind(k.F("touchOverAreaScale"),this.jca,this,!0);this.Gw=this.Dn=this.nd=this.md=void 0;this.$oa=this.C=null;this.jca();this.CWa=Array(g.length);this.Zb="";this.$k=this.$k.bind(this)});a.prototype.clear=function(){this.M.unbind(k.fb,this.$d, this,!0);this.M.unbind(k.Eb,this.Uj,this,!0);this.M.unbind(k.F("touchOverAreaScale"),this.jca,this,!0);this.Uw("")};a.prototype.update=function(b){this.C=b;this.xfa()};a.prototype.$d=function(b){this.md=this.Dn=b.x;this.nd=this.Gw=b.y;this.Vk(this.Ak(k.Sy))};a.prototype.Uj=function(b){this.md=b.x;this.nd=b.y;this.Vk(this.Ak(k.iH));this.Laa(this.Dn,this.Gw,this.md,this.nd)&&this.Vk(this.Ak(k.Sf))};a.prototype.xfa=function(){this.rr||(this.rr=setTimeout(this.$k,300))};a.prototype.B0=function(){this.rr&& (clearTimeout(this.rr),this.rr=null);this.$k()};a.prototype.$k=function(){this.rr=null;var b=this.Ak(k.xl);this.Vk(b);this.Uw(b.ny())};a.prototype.Uw=function(b){if(this.Zb!=b&&(this.Zb=b,b=this.j.M,b.set("toolTip",this.Zb),!b.get("toolTipDisabled"))){var d=b.Db().Zb;this.Zb?d.J$a(b,this.Zb):d.hide()}};a.prototype.Vk=function(b){this.j.AS().sort(function(d,f){return f.get("index")-d.get("index")}).forEach(function(d){d.Fm(b)}.bind(this))};a.prototype.Ak=function(b){var d=b==k.xl?this.hX(.5*this.C.width, .5*this.C.height,this.Yoa,this.$oa):this.hX(this.md,this.nd,g,this.CWa);return new c(this,d,null,b)};a.prototype.hX=function(b,d,f,n){var q=this.C.Cg&&l.getCamera(this.C.Cg);if(q){var p=this.C.width,r=this.C.height,t=Math.min(p,r)/100;f.forEach(function(u,v){n[v]=m.ICa(q,b+u[0]*t,d+u[1]*t,p,r,n[v])});return n}return[]};a.prototype.Laa=function(b,d,f,n){b=f-b;d=n-d;return Math.sqrt(b*b+d*d)<=4*Math.round(1*Math.min(window.screen.width,window.screen.height)/100)};a.prototype.jca=function(){this.Yoa= this.ERa(this.M.get("touchOverAreaScale"));this.$oa=Array(this.Yoa.length)};a.prototype.ERa=function(b){var d=[],f=Math.min(50,Math.ceil(5*b)),n=Math.min(50,Math.ceil(30*b));b=Math.min(50,Math.ceil(15*b));for(var q=-f;q<=f;q++)for(var p=-f;p<=f;p++){var r=Math.sqrt(p*p+q*q);r<=f&&d.push([p,q,r])}for(p=-n;p<-f;p++)d.push([p,0,Math.sqrt(p*p)]);for(p=f+1;p<=n;p++)d.push([p,0,Math.sqrt(p*p)]);for(q=-b;q<-f;q++)d.push([0,q,Math.sqrt(q*q)]);for(q=f+1;q<=b;q++)d.push([0,q,Math.sqrt(q*q)]);d.sort(function(t, u){return t[2]-u[2]});return d.map(function(t){return[t[0],t[1]]})};var g=function(){for(var b=[],d=0;5>d;d++)for(var f=-2+4*d/4,n=0;5>n;n++){var q=-2+4*n/4,p=Math.sqrt(q*q+f*f);2>=p&&b.push([q,f,p])}b.sort(function(r,t){return r[2]-t[2]});return b.map(function(r){return[r[0],r[1]]})}();return a}); define("pA","require exports pu po fw oF jF oO three.mod".split(" "),function(a,e,k,m,l,c,h,g,b){function d(r,t){for(var u=0;ut.indexOf(r[u]))return!1;for(u=0;ur.indexOf(t[u]))return!1;return!0}a=function(r){function t(u){u=r.call(this,c.CM,u)||this;u.yr=!1;u.XFa=new Map;u.yL=new Map;u.YS=null;u.cla=u.cla.bind(u);document.body.addEventListener("touchend",u.cla);g.O.bind(k.Sf,u.Pr,u,!0);return u}Y(t,r);t.prototype.clear=function(){g.O.unbind(k.Sf,this.Pr,this); this.yL.forEach(function(u,v,w){w.delete(v)})};t.prototype.update=function(u){this.state=u;this.Kab();this.by(u.yr);this.Qab()};t.prototype.Pr=function(u){this.YS=u=u.data.pointerState;this.UGa(u)};t.prototype.cla=function(){var u=g.jg[0]||null;u&&this.UGa(u)};t.prototype.UGa=function(u){f.copy(u.ray).applyMatrix4(u.matrixWorld);var v=new l(this,[f],g.LK,k.Sf,this.YS==u);this.TGa(v);g.rka(u,!1,!1,u.lu);g.VGa(u);this.Bab()};t.prototype.by=function(u){this.yr!==u&&(this.yr=u,g.jg.forEach(function(v){g.U9a(v, u)}))};t.prototype.Kab=function(){this.yL.forEach(function(u,v){g.jg.includes(v)||this.yL.delete(v)}.bind(this));g.jg.forEach(function(u){if(!this.yL.has(u)){var v=new m;v.set("alpha",0);this.j.add(v);this.yL.set(u,v)}g.EHa(u,!1)}.bind(this))};t.prototype.Qab=function(){this.YS=this.YS||(g.jg.length?g.jg.find(function(z){return"right"==z.handedness})||g.jg[0]:null);for(var u=0;uw;)u-=w-v;t=t.pitch;return n<=u&&u<=q&&p<=t&&t<=r}.bind(this));if(0==b.length)return null;b.sort(function(t,u){t=this.xq(t);u=this.xq(u);return(g-t.Sa)*(g-t.Sa)+(d-t.pitch)*(d-t.pitch)-((g-u.Sa)*(g-u.Sa)+(d-u.pitch)*(d-u.pitch))}.bind(this));return b[0]};a.prototype.xq=function(g){var b=g.get("yaw"); g=g.get("distance");if(void 0===b||void 0===g)return null;var d=this.xa.get("distanceToFloor");return{Sa:b,pitch:-90+Math.atan2(g,d)*h}};var h=180/Math.PI;return a}); define("ml","require lO pu cH gD nM bx pF y mY ku gc dD jg fH".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("cH"),l=a("gD"),c=a("nM"),h=a("bx"),g=a("pF"),b=a("y"),d=a("mY"),f=a("ku"),n=a("gc"),q=a("dD"),p=a("jg"),r=a("fH"),t=e.extend(l,function(u,v){l.call(this);this.M=u;this.j=v;this.j.set("visible",!1);this.Pc=new q;this.sg=new n(this.j);this.ne=new d(this.j);this.Qb=new g(this.M,this.j,this.Pc);this.hb=new h(this.j,this.Pc);this.If=new b(this.j);this.jw=new f(this.j);this.Wd=new c(this.j); this.p0=new p(this.j);this.sg.bind(n.Mp,this.eA,this,!0);this.sg.bind(n.Np,this.fA,this,!0);this.ne.bind(k.hd,this.zua,this,!0);this.ne.bind(k.Tf,this.iP,this,!0);this.ne.bind(k.kc,this.Fi,this,!0);this.Qb.bind(g.Nb,this.Ve,this,!0);this.Qb.bind(g.c6,this.Aua,this,!0);this.Qb.bind(g.T5,this.Sua,this,!0);this.Qb.bind(g.z5,this.Ita,this,!0);this.Qb.bind(g.A5,this.Jta,this,!0);this.Qb.bind(g.hC,this.rP,this,!0);this.Qb.bind(g.fC,this.dA,this,!0);this.Qb.bind(g.gC,this.xw,this,!0);this.Qb.bind(g.eC,this.qP, this,!0);this.Qb.bind(g.Op,this.iA,this,!0);this.hb.bind(h.Nb,this.Ve,this,!0);this.hb.bind(h.rk,this.Mq,this);this.hb.bind(h.Lp,this.xn,this);this.hb.bind(h.Nc,this.hf,this,!0);this.hb.bind(h.Yi,this.Sq,this,!0);this.hb.bind(h.Xi,this.Rq,this,!0);this.If.bind(b.Nb,this.Ve,this,!0);this.If.bind(b.Ej,this.Qq,this,!0);this.If.bind(b.Nc,this.hf,this,!0);this.jw.bind(f.ti,this.Gua,this,!0)});t.prototype.clear=function(){this.ne.clear();this.sg.clear();this.hb.clear();this.Qb.clear();this.If.clear();this.jw.clear(); this.Wd.clear();this.ne.unbind(k.hd,this.zua,this);this.ne.unbind(k.Tf,this.iP,this);this.ne.unbind(k.kc,this.Fi,this);this.sg.unbind(n.Mp,this.eA,this);this.sg.unbind(n.Np,this.fA,this);this.Qb.unbind(g.Nb,this.Ve,this);this.Qb.unbind(g.c6,this.Aua,this);this.Qb.unbind(g.T5,this.Sua,this);this.Qb.unbind(g.z5,this.Ita,this);this.Qb.unbind(g.A5,this.Jta,this);this.Qb.unbind(g.hC,this.rP,this);this.Qb.unbind(g.fC,this.dA,this);this.Qb.unbind(g.gC,this.xw,this);this.Qb.unbind(g.eC,this.qP,this);this.Qb.unbind(g.Op, this.iA,this);this.hb.unbind(h.vKa,this.Ve,this);this.hb.unbind(h.rk,this.Mq,this);this.hb.unbind(h.Lp,this.xn,this);this.hb.unbind(h.Nc,this.hf,this,!0);this.hb.unbind(h.Yi,this.Sq,this);this.hb.unbind(h.Xi,this.Rq,this);this.If.unbind(b.Nb,this.Ve,this);this.If.unbind(b.Ej,this.Qq,this);this.If.unbind(b.Nc,this.hf,this);this.jw.unbind(f.ti,this.Gua,this);this.M=this.j=this.p0=this.Wd=this.jw=this.If=this.Qb=this.hb=this.sg=this.ne=null};t.prototype.g4=function(u){this.jw.g4(u)};t.prototype.nka= function(u){this.Qb.nka(u)};t.prototype.pf=function(u,v,w){this.j.set("visible",!0);this.If.x4();u.set("currentTime",w);this.Qb.start(u,v)};t.prototype.aB=function(){return this.ne.xa||this.Qb.i4a()||this.Qb.Rs};t.prototype.ay=function(){this.ne.stop();this.If.end();this.hb.end();this.Qb.hide();this.jw.stop();this.Wd.end();this.p0.end()};t.prototype.EL=function(){this.hb.resume();this.If.EL()};t.prototype.uL=function(){this.hb.pause();this.If.uL()};t.prototype.play=function(){this.hb.play();this.Wd.play(); this.If.play()};t.prototype.pause=function(){this.hb.pause();this.Wd.pause();this.If.pause()};t.prototype.stop=function(){this.hb.stop();this.Wd.stop();this.If.stop()};t.prototype.DB=function(u){this.hb.DB(u);this.p0.DB(u)};t.prototype.getTime=function(){return this.If.getTime()};t.prototype.moveTo=function(u,v,w,x,y){this.hb.moveTo(u,v,w,x,y)};t.prototype.Yc=function(){return this.j?this.j.Yc():void 0};t.prototype.Xc=function(){return this.j?this.j.Xc():void 0};t.prototype.$f=function(){return this.j? this.j.$f():void 0};t.prototype.Og=function(){return this.j?this.Pc.z4a(this.j.Og()):void 0};t.prototype.MK=function(){return this.j?this.j.MK():void 0};t.prototype.NK=function(){return this.j?this.j.NK():void 0};t.prototype.hf=function(){var u=this.If.hk()||this.hb.hk();this.trigger(new m(t.Nc,{state:u}))};t.prototype.kk=function(u){this.hb.kk(u)};t.prototype.OT=function(u){this.hb.OT(u)};t.prototype.EB=function(u){this.hb.EB(u)};t.prototype.PT=function(u){this.hb.PT(u)};t.prototype.Qf=function(u){this.If.Qf(u)}; t.prototype.zG=function(u){this.hb.zG(u)};t.prototype.Uha=function(u,v){return(u=r.get(u,v,this.j.Yc(),this.j.Xc(),this.j.$f(),this.j.Og(),this.j.Ya(),this.j.Cb()))?{x:u.x,y:u.y}:null};t.prototype.H4a=function(u,v){return(u=r.jbb(u,v,this.j))?{yaw:u.Sa,pitch:u.pitch}:null};t.prototype.mG=function(){this.j.mG()};t.prototype.gia=function(){return this.Qb.gia()};t.prototype.Aua=function(u){this.ne.start(u.data.panorama)};t.prototype.Fi=function(u){this.j.by(100>u.Sg);this.trigger(new m(t.Iu,{percent:u.Sg}))}; t.prototype.zua=function(u){this.If.end();this.p0.pf(u.data.panorama)};t.prototype.iP=function(){this.j.by(!1);this.trigger(new m(t.ZB))};t.prototype.Ve=function(){this.sg.requestFrame()};t.prototype.eA=function(u){u=u.data.frameTime;this.Pc.setSize(this.j.Ya(),this.j.Cb());this.Qb.Xx(u);this.hb.Xx(u)};t.prototype.fA=function(u){u=u.data.frameTime;this.Qb.Md(u);this.hb.Md(u);this.If.Md(u);this.jw.Md(u);this.Wd.Md(u)};t.prototype.rP=function(u){this.jw.display(u.data.panorama);this.If.$K(u.data.panorama); this.trigger(new m(t.hC,{panorama:u.data.panorama}))};t.prototype.Sua=function(u){this.jw.hide(u.data.panorama)};t.prototype.Ita=function(u){this.If.start(u.data.panorama);this.Wd.start(u.data.panorama)};t.prototype.Jta=function(){this.If.end();this.j.set("visible",!1)};t.prototype.qP=function(u){this.hb.end();this.Wd.end(u.data.nextPanorama);this.trigger(new m(t.eC,{panorama:u.data.panorama}))};t.prototype.xw=function(u){this.hb.start(u.data.panorama,u.data.camera);this.trigger(new m(t.gC,{panorama:u.data.panorama}))}; t.prototype.dA=function(u){this.trigger(new m(t.fC,{panorama:u.data.panorama}))};t.prototype.Gua=function(u){this.hb.wka(u.data.yawDelta,0)};t.prototype.Mq=function(u){this.trigger(new m(t.rk,u.data))};t.prototype.xn=function(u){this.trigger(new m(t.Lp,u.data))};t.prototype.iA=function(u){this.trigger(new m(t.Op,u.data))};t.prototype.Sq=function(){this.If.cM();this.trigger(new m(t.Yi))};t.prototype.Rq=function(){this.trigger(new m(t.Xi))};t.prototype.kHa=function(u){this.If.wG(u)};t.prototype.CB= function(u){this.If.CB(u)};t.prototype.Qq=function(u){this.trigger(new m(t.Ej,u.data))};t.Iu="loadingProgress";t.ZB="loadingEnd";t.rk="movementChange";t.Lp="positionChange";t.hC="panoramaStart";t.eC="panoramaEnd";t.gC="panoramaShow";t.fC="panoramaHide";t.Nc="playbackStateChange";t.Yi="userInteractionStart";t.Xi="userInteractionEnd";t.Ej="timeChange";t.Op="transitionEnd";return t}); define("oZ","require lO pu cH lr pK oh kh iW hJ ml ew mz ih jp oO ep hf jr".split(" "),function(a){var e=a("lO"),k=a("pu"),m=a("cH"),l=a("lr"),c=a("pK"),h=a("oh"),g=a("kh"),b=a("iW"),d=a("hJ"),f=a("ml"),n=a("ew"),q=a("mz"),p=a("ih"),r=a("jp"),t=a("oO"),u=a("ep"),v=a("hf"),w=a("jr"),x=h.define("PanoramaPlayer",b,function(){b.call(this,"panorama");b.prototype.set.call(this,"rotationEnabled",!0);b.prototype.set.call(this,"zoomEnabled",!0);b.prototype.set.call(this,"surfaceSelectionEnabled",!1);b.prototype.set.call(this, "surfaceSelectionHorizontalAngle",90);b.prototype.set.call(this,"surfaceSelectionVerticalAngle",180);b.prototype.set.call(this,"adjacentPanoramaPositionsEnabled",!1);b.prototype.set.call(this,"fxaaEnabled",!1);b.prototype.set.call(this,"aaEnabled",!1);this.zea=this.gaa=this.Hz=this.YW=this.iY=this.bY=this.b8=this.mA=this.li=this.y7=!1;this.J$=!0;this.M_=this.QX=this.mn=this.lW=!1;this.iea=w.np();w.S1.bind(k.ba,this.kVa,this,!0);this.tq=!1;this.VW=this.a$=this.lf=this.Ub=0;this.Ica=this.Kca=void 0; this.Eba=!0;this.Ji=l.V;this.Eo=this.Eo.bind(this);this.N=this.j=null;this.rta={};for(var y in x.fv)this.rta[y]=this.HPa(y);this.KV=new g(this,"buttonToggleGyroscope",u.Ij);this.KV.bind(k.Fj,function(){this.set("gyroscopeEnabled",!0)},this);this.KV.bind(k.zl,function(){this.set("gyroscopeEnabled",!1)},this);this.KV.set("pressed",this.get("gyroscopeEnabled")&&p.ck);(new g(this,"buttonCardboardView",u.Ge)).bind(k.pa,function(){this.set("viewMode",x.HC)},this,!0);(new g(this,"buttonVRView",u.Ge)).bind(k.pa, function(){this.set("viewMode",x.HC)},this,!0);t.O.bind(k.ba,function(){this.Zea("viewMode");this.trigger(x.g6)},this,!0);this.JV=new g(this,"buttonToggleGazeMode",u.Ij);this.JV.bind(k.Fj,function(){this.set("gazeModeEnabled",!0)},this);this.JV.bind(k.zl,function(){this.set("gazeModeEnabled",!1)},this);this.JV.set("pressed",this.get("gazeModeEnabled"));this.LV=new g(this,"buttonToggleHotspots",u.Ij);this.LV.bind(k.Fj,function(){this.set("hotspotsEnabled",!0)},this);this.LV.bind(k.zl,function(){this.set("hotspotsEnabled", !1)},this);this.LV.set("pressed",this.get("hotspotsEnabled"));this.OV=new g(this,"buttonToggleSurfaceSelection",u.Ij);this.OV.bind(k.Fj,function(){this.set("surfaceSelectionEnabled",!0)},this);this.OV.bind(k.zl,function(){this.set("surfaceSelectionEnabled",!1)},this);this.OV.set("pressed",this.get("surfaceSelectionEnabled"));this.aOa=new g(this,"buttonScreenshot",u.Ge);this.aOa.bind(k.pa,this.$wa,this,!0);this.Id=e.tp(this.eh,this)});x.kKa="cameraPositionChange";x.Iu="loadingProgress";x.rKa="preloadMediaShow"; x.g6="viewModeChange";x.prototype.moveLeft=function(){this.Sc(n.cH)};x.prototype.moveRight=function(){this.Sc(n.dH)};x.prototype.moveUp=function(){this.Sc(n.eH)};x.prototype.moveDown=function(){this.Sc(n.bH)};x.prototype.playLeft=function(){this.Sc([n.cH,n.PLAYING])};x.prototype.playRight=function(){this.Sc([n.dH,n.PLAYING])};x.prototype.playUp=function(){this.Sc([n.eH,n.PLAYING])};x.prototype.playDown=function(){this.Sc([n.bH,n.PLAYING])};x.prototype.play=function(){this.Nk()};x.prototype.pause= function(){this.Vq()};x.prototype.stop=function(){this.hA()};x.prototype.seek=function(y){this.FE(y)};x.prototype.setFramePlaybackPosition=function(y){this.xYa(y)};x.prototype.setFrameTransitionPosition=function(y){this.yYa(y)};x.prototype.restart=function(){this.gA()};x.prototype.zoomIn=function(){this.Sc(n.dv)};x.prototype.zoomOut=function(){this.Sc(n.ev)};x.prototype.resumeCamera=function(){this.yXa()};x.prototype.pauseCamera=function(){this.pWa()};x.prototype.moveTo=function(y,z,D,C){this.qta(y, z,D,C,!1)};x.prototype.setPosition=function(y,z,D,C){this.qta(y,z,D,C,!0)};x.prototype.getScreenPosition=function(y,z){return this.KSa(y,z)};x.prototype.getPanoramaPosition=function(y,z){return this.vSa(y,z)};x.prototype.saveScreenshot=function(){return this.$wa()};x.prototype.get=function(y,z){switch(y){case "currentTime":return this.N&&this.N.getTime()||0;case "viewMode":return t.isPresenting?x.HC:x.g7;case "video":y="panorama";break;case "rendererPanorama":return this.N&&this.N.aB()}if(!z)switch(y){case "mouseControlMode":z= c.lma;break;case "touchControlMode":z=c.ena}return b.prototype.get.call(this,y,z)};x.prototype.set=function(y,z){if(this.get(y)!=z){switch(y){case "application":this.y7=!0;this.Id();break;case "startTime":this.mA=!0;this.Id();break;case "video":case "panorama":y="panorama";this.mA=!0;this.Id();break;case "camera":this.b8=!0;this.Id();break;case "viewerArea":this.li=!0;this.Id();break;case "displayPlaybackBar":case "hdrPanoramaDisplayPlaybackBarSteps":case "livePanoramaDisplayPlaybackBarSteps":case "buttonPlay":case "buttonPlayPause":this.tq= !0;this.Id();break;case "mapPlayer":this.bY=!0;this.Id();break;case "model3DPlayer":this.iY=!0;this.Id();break;case "gazeModeEnabled":this.YW=!0;this.Id();break;case "gyroscopeEnabled":this.Hz=!0;this.Id();break;case "gyroscopeVerticalDraggingEnabled":this.J$=!0;this.Id();break;case "viewMode":"vr"==z&&(z=x.HC);z==x.HC?this.get("viewerArea").set("viewMode","vr"):this.get("viewerArea").set("viewMode","standard");z=t.isPresenting?x.HC:x.g7;break;case "hotspotsEnabled":this.gaa=!0;this.Id();break;case "mouseControlMode":case "touchControlMode":this.lW= !0;this.Id();break;case "surfaceSelectionEnabled":this.zea=!0,this.Id()}b.prototype.set.call(this,y,z)}};x.prototype.zp=function(y){this.mn!=y&&((this.mn=y)?document.addEventListener("keyup",this.Eo,!0):document.removeEventListener("keyup",this.Eo,!0),this.N&&this.N.DB(this.mn),this.QX=!0,this.Id())};x.prototype.kVa=function(){var y=w.np();this.iea!==y&&(this.M_=!0,this.iea=y,this.Id())};x.prototype.Eo=function(y){var z=this.get("gazeModeKeyCode");z&&!w.np()&&y.code==z&&this.set("gazeModeEnabled", !this.get("gazeModeEnabled"))};x.prototype.Oga=function(){return"inherit"!=this.get("doubleClickAction")};x.prototype.Eab=function(){this.kG([this])};x.prototype.S7=function(y){b.prototype.S7.call(this,y);y.bind(k.wl,this.bAa,this,!0)};x.prototype.dfa=function(y){b.prototype.dfa.call(this,y);y.unbind(k.wl,this.bAa,this,!0)};x.prototype.bAa=function(){switch(this.get("doubleClickAction")){case "toggle_fullscreen":var y=this.get("application").jj;y&&y.ck()&&y.toggle()}};x.prototype.HPa=function(y){var z= x.fv[y];y=new g(this,y,u.Ge);y.bind(k.fb,function(){this.Sc(z.movement)},this);z.stopOnRelease&&y.bind(k.Eb,function(){this.Sc(n.Tf)},this);return y};x.prototype.eh=function(){if(this.li||this.y7)this.li=this.y7=!1,this.M_=this.QX=this.lW=this.Hz=this.YW=this.iY=this.bY=!0,this.Fv(),this.get("viewerArea")&&this.get("application")&&this.Dv(),this.zQ(this.get("viewerArea"));var y=!1;if(this.j){this.bY&&(this.bY=!1,this.N.g4(this.get("mapPlayer")));this.iY&&(this.iY=!1,this.N.nka(this.get("model3DPlayer"))); this.lW&&(this.lW=!1,this.N.EB(this.get("mouseControlMode")),this.N.zG(this.get("touchControlMode")));if(this.mA||this.b8)this.VW=this.a$=this.Ub=this.lf=0,this.Ica=this.Kca=void 0,y=!0,this.b8=this.mA=!1,this.get("panorama")?(this.get("viewerArea").ic.U$a(),this.N.pf(this.get("panorama"),this.get("camera",new d),this.get("startTime"))):(this.N.ay(),this.Eba=!0,this.Ji=l.V,this.Cd(l.V));if(this.YW||this.QX||this.M_){this.QX=this.M_=this.YW=!1;var z=this.get("gazeModeEnabled");this.j.e9a(z&&this.mn&& !this.iea);this.JV.set("pressed",z)}this.J$&&(this.J$=!1,this.N.PT(this.get("gyroscopeVerticalDraggingEnabled",!0)));this.Hz&&(this.Hz=!1,(z=this.get("gyroscopeEnabled")&&p.ck)&&p.disabled&&(z=!1,r.Vla.show(function(){p.Ija(function(){this.set("gyroscopeEnabled",!0)}.bind(this))}.bind(this))),this.set("gyroscopeEnabled",z),this.N.OT(z),this.KV.set("pressed",z));this.gaa&&(this.gaa=!1,this.LV.set("pressed",this.get("hotspotsEnabled")));this.tq&&(this.tq=!1,y=!0);this.zea&&(this.zea=!1,this.OV.set("pressed", this.get("surfaceSelectionEnabled")));y&&this.kx()}};x.prototype.SJ=function(){this.N.gia()||this.set("panorama",null)};x.prototype.Dv=function(){var y=this.get("viewerArea"),z=this.get("application");this.j=new q(z,y,this);this.j.qa({left:0,top:0,bottom:0,right:0});y.Xa(this.j);this.N=new f(y,this.j);this.N.bind(f.rk,this.Mq,this);this.N.bind(f.Lp,this.Wta,this);this.N.bind(f.Iu,this.Fi,this);this.N.bind(f.ZB,this.ZI,this);this.N.bind(f.gC,this.xw,this,!0);this.N.bind(f.fC,this.dA,this,!0);this.N.bind(f.hC, this.rP,this,!0);this.N.bind(f.eC,this.qP,this,!0);this.N.bind(f.Nc,this.hf,this);this.N.bind(f.Yi,this.Sq,this);this.N.bind(f.Xi,this.Rq,this);this.N.bind(f.Ej,this.Qq,this);this.N.bind(f.Op,this.iA,this,!0);this.get("application").bind(k.F("mute"),this.oP,this);this.get("application").get("mute",!1)&&this.N.Qf(!0);this.N.DB(this.mn);t.O.bind(k.ba,this.Ho,this,!0);this.A8();this.BA(!0)};x.prototype.Fv=function(){this.j&&(this.N.unbind(f.rk,this.Mq,this),this.N.unbind(f.Lp,this.Wta,this),this.N.unbind(f.Iu, this.Fi,this),this.N.unbind(f.ZB,this.ZI,this),this.N.unbind(f.gC,this.xw,this,!0),this.N.unbind(f.fC,this.dA,this,!0),this.N.unbind(f.hC,this.rP,this,!0),this.N.unbind(f.eC,this.qP,this,!0),this.N.unbind(f.Nc,this.hf,this),this.N.unbind(f.Yi,this.Sq,this),this.N.unbind(f.Xi,this.Rq,this),this.N.unbind(f.Ej,this.Qq,this),this.N.unbind(f.Op,this.iA,this),this.N.clear(),this.N=null,this.get("application").unbind(k.F("mute"),this.oP,this),this.j.getParent().removeChild(this.j),this.j=null,t.O.unbind(k.ba, this.Ho,this,!0),this.BA(!1))};x.prototype.oP=function(){this.j&&this.N.Qf(this.get("application").get("mute",!1))};x.prototype.hf=function(y){this.Ji=y.data.state;this.vg()};x.prototype.vg=function(){this.Cd(this.Eba||t.isPresenting?this.Ji:l.PLAYING)};x.prototype.Sq=function(){this.trigger(new m(k.ona))};x.prototype.Rq=function(){this.trigger(new m(k.nna))};x.prototype.rP=function(y){this.trigger(new m(x.rKa,{panorama:y.data.panorama}))};x.prototype.qP=function(){};x.prototype.xw=function(y){this.A8(); this.KO(y.data.panorama)};x.prototype.dA=function(y){this.JO(y.data.panorama)};x.prototype.Mq=function(y){for(var z in x.fv)this.rta[z].set("state",y.data[x.fv[z].pressedOn]?v.Ab:v.Ee);this.Eba=y.data.stopped;this.vg();this.trigger(new m(k.nma,y.data))};x.prototype.Wta=function(y){this.A8();this.trigger(new m(x.kKa,y.data))};x.prototype.A8=function(){this.N&&(this.set("yaw",this.N.Yc()),this.set("pitch",this.N.Xc()),this.set("roll",this.N.$f()),this.set("hfov",this.N.Og()),this.set("actualHFOV",this.N.MK()), this.set("actualVFOV",this.N.NK()))};x.prototype.Fi=function(y){this.j.getParent().qa({progressPercent:y.data.percent,progressVisible:!0});this.trigger(new m(x.Iu,y.data))};x.prototype.ZI=function(){this.j.getParent().set("progressVisible",!1)};x.prototype.iA=function(){this.trigger(k.N6)};x.prototype.Ho=function(){this.set("viewMode",t.isPresenting?x.HC:x.g7);this.vg()};x.prototype.qta=function(y,z,D,C,E){this.N&&this.N.moveTo(y,z,D,C,E)};x.prototype.Sc=function(y){this.N&&this.N.kk(y)};x.prototype.Nk= function(){this.N&&this.N.play()};x.prototype.Wo=function(){this.N&&this.N.stop()};x.prototype.Vq=function(){this.N&&this.N.pause()};x.prototype.FE=function(y){this.N&&(this.lra()?this.N.CB(y):this.N.kHa(y))};x.prototype.xYa=function(y){this.N&&this.N.kHa(y)};x.prototype.yYa=function(y){this.N&&this.N.CB(y)};x.prototype.pWa=function(){this.N&&this.N.uL()};x.prototype.yXa=function(){this.N&&this.N.EL()};x.prototype.KSa=function(y,z){if(this.N)return this.N.Uha(y,z)};x.prototype.vSa=function(y,z){if(this.N)return this.N.H4a(y, z)};x.prototype.$wa=function(){this.N&&this.N.mG()};x.prototype.PP=function(y){this.FE(y.data.position)};x.prototype.Qq=function(y){this.lf=y.data.time;this.Ub=y.data.duration;this.a$=y.data.transitionPosition;this.VW=y.data.transitionLength;this.Kca=y.data.steps;this.Ica=y.data.selectedStep;this.kx()};x.prototype.kx=function(){var y=this.j.getParent(),z=!1;if(this.LRa()){var D=this.lra(),C=this.xSa();D?0this.mb&&(this.mb=1);var m=Math.min(.5/this.mb,.5),l=Math.max(1-.5/this.mb,.5);this.Mal&&(this.Ma=l);m=Math.min(.5/this.mb,.5);l=Math.max(1-.5/this.mb,.5);this.Pal&&(this.Pa=l)}};return e}); define("bH",["require"],function(){function a(e,k){this.j=e;this.oa=k;this.Pa=this.Ma=.5;this.mb=1;this.f_=!1}a.prototype.start=function(){this.Pa=this.Ma=.5;this.mb=1;this.f_=!0};a.prototype.clear=function(){this.oa=this.j=null};a.prototype.setPosition=function(e,k,m){this.Ma=e;this.Pa=k;this.mb=m};a.prototype.nf=function(){return this.f_};a.prototype.Hb=function(){this.f_=!1};return a}); define("il",["require","ms","oh"],function(a){var e=a("ms");return a("oh").define("PhotoCameraPosition",e,function(k,m,l){e.call(this);void 0!=k&&this.set("x",k);void 0!=m&&this.set("y",m);void 0!=l&&this.set("zoomFactor",l)})}); define("i","require lO bH il oW bK".split(" "),function(a){var e=a("lO"),k=a("bH"),m=a("il"),l=a("oW"),c=a("bK");a=e.extend(k,function(h,g){k.call(this,h,g);this.fa=null});a.prototype.start=function(h){var g=h.get("initialPosition",new m(.5,.5,1)),b=h.get("targetPosition",new m(.5,.5,1)),d=h.get("duration",1E3);0==d?(this.Ma=g.get("x"),this.Pa=g.get("y"),this.mb=g.get("zoomFactor")):this.fa=new l(h.get("easing","linear"),[new c("x",g.get("x",.5),b.get("x",.5)),new c("y",g.get("y",.5),b.get("y",.5)), new c("zoom",g.get("zoomFactor",1),b.get("zoomFactor",1))],d);this.Hb(0)};a.prototype.clear=function(){this.fa=null;k.prototype.clear.call(this)};a.prototype.nf=function(){return null!=this.fa};a.prototype.Hb=function(h){this.fa&&(this.fa.Hb(h),this.oa.setPosition(this.fa.ib("x"),this.fa.ib("y"),this.fa.ib("zoom")),this.Ma=this.oa.getX(),this.Pa=this.oa.getY(),this.mb=this.oa.Lr(),this.fa.$e()&&(this.fa=null))};return a}); define("cU","require lO cH gD oh lr mG bP bH i pu".split(" "),function(a){var e=a("lO"),k=a("cH"),m=a("gD"),l=a("oh"),c=a("lr"),h=a("mG"),g=a("bP"),b=a("bH"),d=a("i"),f=a("pu"),n=e.extend(m,function(q,p){m.call(this);this.j=q;this.ee=p;this.j.bind(f.uc,this.Lc,this);this.C=c.V;this.cm=this.FZ=this.Kb=this.Ba=null;this.oa=new g});n.prototype.clear=function(){this.end();this.oa=null;this.j.unbind(f.uc,this.Lc,this);this.j=null};n.prototype.end=function(q){if(this.Ba==q||"undefined"==typeof q)this.Xpa(), this.Kb=this.FZ=this.Ba=null};n.prototype.start=function(q){if(this.Ba!=q){this.end(this.Ba);var p=q.get("media"),r=q.get("camera"),t=p.get("width",100),u=p.get("height",100),v=r?r.get("scaleMode",h.Mh):h.Mh;this.Ba=q;this.Kb=r;this.FZ=p;p.gk();this.W=!0;this.oa.setConfiguration(t,u,v);this.JPa(r);this.Qa()}};n.prototype.stop=function(){this.C!=c.V&&(this.C=c.V,this.cm&&(this.cm.start(this.Kb),this.Qa()))};n.prototype.play=function(){if(this.C==c.V||this.C==c.Ob)this.C=c.PLAYING,this.Qa()};n.prototype.pause= function(){this.C==c.PLAYING&&(this.C=c.Ob)};n.prototype.Xx=function(q){this.cm&&this.cm.nf()&&(this.C==c.PLAYING&&(this.cm.Hb(q),this.Qa()),this.fm(this.cm.Ma,this.cm.Pa,this.cm.mb))};n.prototype.JPa=function(q){this.Xpa();l.Ja("MovementPhotoCamera",q)?this.cm=new d(this.j,this.oa):this.cm=new b(this.j,this.oa);this.cm.start(q)};n.prototype.Xpa=function(){this.cm&&(this.cm.clear(),this.cm=null)};n.prototype.Lc=function(){this.oa.setSize(this.j.Ya(),this.j.Cb());this.Qa()};n.prototype.Qa=function(){this.trigger(new k(n.Nb))}; n.prototype.fm=function(q,p,r){this.ee.setPosition(this.Ba,q,p,r)};n.Nb="request frame";return n}); define("iz","require es lO cH gD pu iv mG".split(" "),function(a){var e=a("es"),k=a("lO"),m=a("cH"),l=a("gD"),c=a("pu");a("iv");var h=a("mG"),g=k.extend(l,function(d,f){l.call(this);this.JQ=[];this.M=d;this.j=f});g.prototype.preload=function(d){this.Ez(d).preload();return this};g.prototype.ef=function(d,f){this.Ez(d).ef(f);return this};g.prototype.Wn=function(d,f){this.Ez(d).Wn(f);return this};g.prototype.setPosition=function(d,f,n,q){this.Ez(d).setPosition(f,n,q);return this};g.prototype.Dh=function(d){this.Ez(d).Dh()}; g.prototype.stop=function(){this.pqa(function(d){d.clear()});this.JQ=[]};g.prototype.clear=function(){this.stop();this.j=this.M=this.JQ=null};g.prototype.Md=function(){this.pqa(function(d){d.update()})};g.prototype.Ez=function(d){var f=this.UQa(d);f||(f=new b(d,this.j),f.bind(b.Wma,this.mUa,this),f.bind(b.Pma,this.lUa,this),this.JQ.push(f));return f};g.prototype.pqa=function(d){e(this.JQ).each(d,this)};g.prototype.UQa=function(d){return e(this.JQ).find(function(f){return f.getItem()==d})};g.prototype.mUa= function(){this.Qa()};g.prototype.lUa=function(d){this.trigger(new m(g.X5,{item:d.source.getItem()}))};g.prototype.Qa=function(){this.trigger(new m(g.Nb))};g.Nb="request frame";g.X5="photo preload end";var b=k.extend(l,function(d,f){l.call(this);this.Ba=d;this.j=f;this.Mf=(f=d.get("camera"))?f.get("scaleMode",h.Mh):h.Mh;this.oj=d.get("media").gk();this.oj.bind(c.da,this.Ad,this);this.oj.bind(c.xc,this.Zf,this);this.ua=b.LM;this.Pa=this.Ma=.5;this.mb=1;this.jo=0;this.EH=!1;this.Jg=0;this.Aa=!1});b.prototype.getItem= function(){return this.Ba};b.prototype.preload=function(){this.ua==b.LM?this.MZ():this.Wya()};b.prototype.ef=function(d){this.jo!=d&&(this.jo=d,this.gf())};b.prototype.Wn=function(d){this.Jg!=d&&(this.Jg=d,this.gf())};b.prototype.setPosition=function(d,f,n){if(this.Ma!=d||this.Pa!=f||this.mb!=n)this.Ma=d,this.Pa=f,this.mb=n,this.gf()};b.prototype.Dh=function(){this.EH||(this.EH=!0,this.gf())};b.prototype.clear=function(){this.ua==b.nV&&this.Dwa();this.ua!=b.IM&&this.ua!=b.KM&&this.ua!=b.JM||this.JA(); this.oj.unbind(c.da,this.Ad);this.oj.unbind(c.xc,this.Zf);this.oj=null};b.prototype.update=function(){this.Aa&&(this.Aa=!1,-1this.Jg&&0=d?1:this.Kn/d,this.ua==b.oV?this.r0a(d):this.ua==b.pV?this.s0a(d):this.dR==g.Zn?this.e0a(d):this.$0a(d),1>d?this.Qa():this.Az())};b.prototype.r0a=function(d){this.ee.ef(this.th.item,d).Wn(this.th.item,0)};b.prototype.s0a=function(d){this.ee.ef(this.Vf.item,1-d).Wn(this.Vf.item,0)};b.prototype.e0a=function(d){this.ee.ef(this.th.item,Math.min(1,2*d)).Wn(this.th.item,0);this.ee.ef(this.Vf.item, Math.min(1,2*(1-d))).Wn(this.Vf.item,0)};b.prototype.$0a=function(d){var f=this.Vf.Mn!=this.th.Mn||this.Vf.indexthis.Q_?(p="quad_out",r=this.hY):(p="quad_in_out",r=-.5>this.Jg?this.hY:.5this.Jg?this.Po:0");var g={position:"absolute",left:"0",top:"0",width:this.Hd+ "px",height:this.Pd+"px",overflow:"hidden","-webkit-transform":"translateZ(0)"};g["-moz-transform-origin"]=g["-webkit-transform-origin"]=g["transform-origin"]="0 0 0";g["-ms-transform-origin"]="0 0";this.jV.css(g);this.V6=k(c.xf(this.Ba.Si(),!0));g={display:"block",position:"absolute",left:"0",top:"0",width:this.Pb+"px",height:this.cc+"px"};g["-moz-transform-origin"]=g["-webkit-transform-origin"]=g["transform-origin"]="0 0 0";g["-ms-transform-origin"]="0 0";this.V6.css(g);this.jV.append(this.V6)}; e.prototype.fd=function(){return this.jV};e.prototype.getItem=function(){return this.Ba};e.prototype.getX=function(){return this.Ma};e.prototype.getY=function(){return this.Pa};e.prototype.Lr=function(){return this.mb};e.prototype.Ya=function(){return Math.round(this.Pb*this.mb*this.tf)};e.prototype.Cb=function(){return Math.round(this.cc*this.mb*this.tf)};e.prototype.ef=function(g){this.jo!=g&&(this.jo=g,this.Aa=!0)};e.prototype.a2=function(){return this.jo};e.prototype.IB=function(g){this.Mf!=g&& (this.Mf=g,this.Aa=!0)};e.prototype.qG=function(g,b){if(this.Hd!=g||this.Pd!=b)this.Hd=g,this.Pd=b,this.Aa=!0};e.prototype.setPosition=function(g,b,d){if(this.Ma!=g||this.Pa!=b||this.mb!=d)this.Ma=g,this.Pa=b,this.mb=d,this.Aa=!0};e.prototype.Wn=function(g){this.Jg!=g&&(this.Jg=g,this.Aa=!0)};e.prototype.W8a=function(g){this.nga!=g&&(this.nga=g,this.Aa=!0)};e.prototype.render=function(){if(this.Aa){this.Aa=!1;switch(this.Mf){case l.NONE:this.tf=1;break;case l.Qp:this.tf=this.Hd/this.Pb;break;case l.sk:this.tf= this.Pd/this.cc;break;case l.ns:this.tf=this.Pb*this.Pd>this.cc*this.Hd?this.Pd/this.cc:this.Hd/this.Pb;break;default:this.tf=this.Pb*this.Pd>this.cc*this.Hd?this.Hd/this.Pb:this.Pd/this.cc}var g=this.mb*this.tf,b=.5*this.Hd-this.Ma*this.Pb*g,d=.5*this.Pd-this.Pa*this.cc*g,f=this.Hd*this.Jg,n=function(p,r){return Math.round(p*Math.pow(10,r))*Math.pow(10,-r)},q={};q.width=n(this.Hd,0)+"px";q.height=n(this.Pd,0)+"px";q.transform=this.Tza?"translate3d("+n(f,2)+"px, 0px, 0px)":"translate("+n(f,2)+"px, 0px)"; q["-moz-transform"]=q["-webkit-transform"]=q["-ms-transform"]=q.transform;q["z-index"]=this.nga;0==this.jo?q.display="none":(q.display="block",1==this.jo?(q.filter=q["-ms-filter"]="",q.opacity=""):(q.filter=q["-ms-filter"]="alpha(opacity="+Math.round(100*this.jo)+")",q.opacity=this.jo));f=[];this.Tza?(f.push("translate3d("+n(b,2)+"px, "+n(d,2)+"px, 0px)"),f.push("scale3d("+g+", "+g+", "+g+")"),this.OW&&(f.push("translate3d("+this.Pb+"px, 0, 0)"),f.push("scale3d(-1, 1, 1)"))):(f.push("translate("+ n(b,2)+"px, "+n(d,2)+"px)"),f.push("scale("+g+", "+g+")"),this.OW&&(f.push("translate("+this.Pb+"px, 0)"),f.push("scale(-1, 1)")));g={};g["-moz-transform"]=g["-webkit-transform"]=g["-ms-transform"]=g.transform=f.join(" ");m.isEqual(this.yqa,q)||(this.yqa=q,this.jV.css(q));m.isEqual(this.fsa,g)||(this.fsa=g,this.V6.css(g))}};return e}); define("iy","require jquery.mod es lO pu iv lL id bh e".split(" "),function(a){var e=a("jquery.mod"),k=a("es"),m=a("lO"),l=a("pu"),c=a("iv"),h=a("lL"),g=a("id"),b=a("bh"),d=a("e");a=m.extend(d,function(){d.call(this);this.Me("Renderer");this.set("toolTipDisabled",!0);this.set("cursor",b.Ou);this.bind(l.uc,this.Lc,this,!0);this.bind(l.jd,this.mj,this,!0);this.bind(l.Zc,this.lj,this,!0);this.BE=!1;this.yc=[];this.K_=this.nx=!1;this.Cca=e("
");this.Cca.css({position:"absolute",left:0,top:0,right:0, bottom:0,overflow:"hidden","-webkit-transform":"translateZ(0)"});this.Vb().append(this.Cca)});a.prototype.Rn=function(f){h.Rn(f,c.ul)};a.prototype.Cj=function(f){h.Cj(f,c.ul)};a.prototype.KDa=function(f){return h.J4(f)};a.prototype.sga=function(f){f=new g(f,this);f.qG(this.Ya(),this.Cb());f.setPosition(.5,.5,0,1);this.Cca.append(f.fd());this.yc.push(f);this.nx=!0};a.prototype.removeItem=function(f){if(f=this.wq(f))this.yc=k.without(this.yc,f),f.fd().detach(),this.nx=!0};a.prototype.Kga=function(f){if(f= this.wq(f))this.yc=k.without(this.yc,f),this.yc.push(f),this.nx=!0};a.prototype.z9a=function(f,n){this.wq(f).IB(n)};a.prototype.cs=function(f,n){this.wq(f).ef(n)};a.prototype.w9a=function(f,n){this.wq(f).Wn(n)};a.prototype.ST=function(f,n,q,p){this.wq(f).setPosition(n,q,p)};a.prototype.wS=function(f){return this.wq(f).getX()};a.prototype.xS=function(f){return this.wq(f).getY()};a.prototype.zCa=function(f){return this.wq(f).Lr()};a.prototype.vS=function(f){return this.wq(f).Ya()};a.prototype.uS=function(f){return this.wq(f).Cb()}; a.prototype.render=function(){if(this.BE){this.R0a();this.rZa();for(var f=0;fv.Ya(),y=Math.min(v.Ya(),v.Cb())/100;v=function(z){return Math.round(z*y)};this.qa({gap:w?v(4.63):20,paddingLeft:w?v(4.63): 20,paddingRight:w?v(4.63):20,paddingTop:w?v(4.63):14,paddingBottom:w?v(4.63):14,layout:w&&x?f.Rh:f.Eg});this.km&&this.km.qa({fontSize:w?v(3.15):14,textAlign:w&&x?"center":"left"});this.gz&&this.gz.qa({gap:w?0:13});this.OC&&this.OC.qa({borderRadius:w?v(4.63):15,fontSize:w?v(3.15):14,height:w?v(9.26):30,paddingLeft:w?v(6):20,paddingRight:w?v(6):20});this.IH&&this.IH.qa({borderRadius:w?v(4.63):15,fontSize:w?v(3.15):14,height:w?v(9.26):30,paddingLeft:w?v(6):20,paddingRight:w?v(6):20});this.Ud()}};a.prototype.Epa= function(){var v=m.toArray(this.Sd.get("cookiesPolicy"));this.TP!=v&&(this.TP=v,this.HXa())};a.prototype.HXa=function(){if(0==this.TP.length)this.Vda(null);else{var v=this.TP[0];0==m.toArray(v.get("geographicArea")).length?this.Vda(v):this.VRa(function(w){for(var x=null,y=0;y=E?y(E):w==navigator.webkitPersistentStorage|| w==navigator.persistentStorage?(console.log("requestQuota:",E),w.requestQuota(E,function(){console.log("Granted bytes:",E);y(E)},function(A){console.log("Not granted bytes:",E,A);z("not enough free space granted")})):(console.log("Not enough temporary free space."),z("not enough free space granted"))},function(D){console.log("Query quota error:",D);D&&D.message&&(D=D.message);z("not enough free space granted: "+D)})}):Promise.reject("unknown free space")}function m(){return(navigator.storage&&navigator.storage.persist? navigator.storage.persist():Promise.resolve(!1)).then(function(w){console.log("Persistence granted:",w);return w?navigator.webkitPersistentStorage||navigator.persistentStorage:navigator.webkitTemporaryStorage||navigator.temporaryStorage})}function l(){return navigator.storage&&navigator.storage.persisted?navigator.storage.persisted():Promise.resolve(!1)}function c(){return v?Promise.resolve(v):Promise.reject("files uninitialized, no space was requested")}function h(w){w.length&&"/"==w[0]&&(w=w.substr(1)); return w.split("/").filter(function(x){return""!=x})}function g(w){return new Promise(function(x,y){w.remove(function(){x()},function(z){y("can't remove entry"+(z&&z.message?": "+z.message:"")+".")})})}function b(w){return d(w).then(function(x){return Promise.all(x.map(function(y){return y.isDirectory?b(y):g(y)}))}).then(function(){return g(w).then(function(){return Promise.resolve()},function(){return Promise.resolve()})})}function d(w){return new Promise(function(x,y){w.createReader().readEntries(function(z){x(z)}, function(){y("can't list directory")})})}function f(w,x,y){return new Promise(function(z,D){w.getDirectory(x,y,function(C){z(C)},function(){D("can't get directory entry: "+x)})})}function n(w,x){return new Promise(function(y,z){f(w,x,{create:!1}).then(function(D){y(D)})["catch"](function(){f(w,x,{create:!0}).then(function(D){y(D)})["catch"](function(D){console.log("Can't create directory entry: "+x,D);z("can't create directory entry: "+x)})})})}function q(w,x){return 0==x.length?w:n(w,x[0]).then(function(y){return q(y, x.slice(1))})}function p(w,x){return 0==x.length?w:f(w,x[0]).then(function(y){return p(y,x.slice(1))})}function r(w,x,y){return new Promise(function(z,D){w.getFile(x,y,function(C){z(C)},function(){D("can't get file entry: "+x)})})}function t(w){return new Promise(function(x,y){w.createWriter(function(z){x(z)},function(){y("can't create File for writing")})})}function u(w){var x=w.lastIndexOf(".");switch((0>x?"":w.substr(x)).toLowerCase()){case ".bmp":return"image/bmp";case ".eot":return"application/vnd.ms-fontobject"; case ".gif":return"image/gif";case ".glb":return"model/gltf-binary";case ".htm":case ".html":return"text/html";case ".jpeg":case ".jpg":return"image/jpeg";case ".js":return"text/javascript";case ".json":return"application/json";case ".m3u8":return"application/vnd.apple.mpegurl";case ".m4a":return"audio/mp4";case ".m4v":return"video/mp4";case ".mp3":return"audio/mpeg";case ".mp4":return"video/mp4";case ".ogg":return"audio/ogg";case ".ogv":return"video/ogg";case ".otf":return"font/otf";case ".png":return"image/png"; case ".svg":return"image/svg+xml";case ".tif":return"image/tiff";case ".tiff":return"image/tiff";case ".ts":return"video/vnd.dlna.mpeg-tts";case ".ttf":return"application/font-sfnt";case ".tts":return"video/vnd.dlna.mpeg-tts";case ".txt":return"text/plain";case ".webm":return"video/webm";case ".woff":return"font/x-woff";case ".woff2":return"font/woff2";case ".xml":return"text/xml";default:return"application/octet-stream"}}var v=null;return{J3:function(){return l()},toURL:function(w,x){return a(w).then(function(y){y= new window.URL(y);var z=x?"persistent":"temporary",D=y.pathname.split("/").map(encodeURIComponent).join("/");return"filesystem:"+y.origin+"/"+z+D})},n8a:function(w){return m().then(function(x){return k(x,w)}).then(function(x){return e(x)}).then(function(x){v=x})},Z7a:function(w){w=h(w);var x=w[w.length-1],y=w.slice(0,-1);return c().then(function(z){return p(z.root,y)}).then(function(z){return r(z,x,{create:!0})},function(){return Promise.resolve(null)}).then(function(z){return z&&g(z)})},tGa:function(w, x){var y=h(w);return e(1024,x).then(function(z){return p(z.root,y)}).then(function(z){return b(z)},function(){return Promise.resolve()})},FJa:function(w,x,y){var z=h(w),D=z[z.length-1],C=z.slice(0,-1);return c().then(function(E){return q(E.root,C)}).then(function(E){return r(E,D,{create:!1}).then(function(A){return Promise.resolve(A)},function(){return r(E,D,{create:!0})})}).then(function(E){return t(E)}).then(function(E){E.seek(E.length);return new Promise(function(A,B){E.onwriteend=function(){A()}; E.onerror=function(J){console.log("Error writing file:",w,J);B("error writing file: "+w)};E.write(new Blob([x],{type:y||u(D)}))})})}}}); define("cF",["require","mD","mO","w"],function(a){function e(b,d){this.st=b;this.iz=!1;this.No=null;this.Aw=d||function(){}}function k(b){return 1048576<=b.JG}var m=a("mD"),l=a("mO"),c=a("w").Af()?3:5;a={File:function(b,d){this.url=b;this.JG=d;this.GT=this.wK=0}};var h=a.Files=function(b,d,f,n){this.Qoa=this.xNa=b;this.lt=d.slice();this.Hqa=[];var q=0;this.lt.sort(function(p,r){return p.JG-r.JG});this.lt.forEach(function(p){q+=p.JG});this.Hya=q;this.jD=[];this.PV=void 0;this.Vs=[];this.e8=!1;this.fg= f||function(){};this.CN=n||function(){}};h.prototype.Wt=function(){return this.uOa().then(function(){return this.vOa()}.bind(this))};h.prototype.uOa=function(){return self.caches["delete"](this.Qoa)};h.prototype.vOa=function(){var b=(new window.URL(this.xNa)).pathname;return m.tGa(b,!1).then(function(){return m.tGa(b,!0)})};h.prototype.requestStorage=function(){return m.n8a(Math.round(1.1*this.Hya+10485760)).then(function(){return m.J3()})};h.prototype.download=function(){this.e8=!1;this.PV=0;this.Wt().then(function(){this.xN()}.bind(this))["catch"](function(b){console.log("error cleaning storage", b);m.J3().then(function(d){this.CN(!1,d)}.bind(this))}.bind(this))};h.prototype.cancelDownload=function(){this.e8=!0;this.Vs.forEach(function(b){b.cancel()});this.Wt()};h.prototype.xN=function(){if(!(this.e8||this.Vs.length>=c))if(0=this.Hqa.length;m.J3().then(function(q){this.CN(n,q)}.bind(this))}};h.prototype.mqa=function(b,d,f){f?(this.jD.splice(this.jD.indexOf(b),1),this.Vs.splice(this.Vs.indexOf(d),1),this.PV+=b.JG,this.sj(),this.xN()): (b.wK=0,b.GT+=1,this.sj(),20<=b.GT?(console.log("Error downloading file: "+b.url+" after "+b.GT+" retries."),this.wsa(b.url)?(this.Hqa.push(b),this.Vs.splice(this.Vs.indexOf(d),1),this.xN()):(this.cancelDownload(),m.J3().then(function(n){this.CN(!1,n)}.bind(this)))):(console.log("Error downloading file: "+b.url+" attempt "+b.GT+" of 20. Will retry in 2000ms."),setTimeout(function(){this.jD.splice(this.jD.indexOf(b),1);this.Vs.splice(this.Vs.indexOf(d),1);k(b)?this.lt.push(b):this.lt.splice(0,0,b); this.xN()}.bind(this),2E3)))};h.prototype.RZa=function(b,d){return this.TZa(b,d).then(function(){if(this.l1a(b))return this.SZa(b,d)}.bind(this))};h.prototype.SZa=function(b,d){d=d.clone();return 200!=d.status?Promise.reject("response status: "+d.status):self.caches.open(this.Qoa).then(function(f){return f.put(b,d)})};h.prototype.TZa=function(b,d){d=d.clone();if(200!=d.status)return Promise.reject("response status: "+d.status);var f=(new window.URL(b)).pathname;return f.lastIndexOf("/")==f.length- 1?Promise.resolve():new Promise(function(n,q){function p(){x.read().then(function(y){var z=y.value,D=[];if(z){for(;10485760<=z.length+w;){var C=z.slice(0,10485760-w);v.push(C);D.push(r(v));v=[];w=0;z=z.slice(C.length,z.length)}0b.indexOf("loading/")};h.prototype.l1a=function(b){var d=(new window.URL(b)).pathname;return 0<=d.indexOf("files/")||0<=d.indexOf("pdfjs/")?!0:this.wsa(b)?!1:!0};h.prototype.sj=function(){var b=this.PV;this.jD.forEach(function(d){b+=d.wK});this.fg(100*b/this.Hya)};e.prototype.fetch=function(){return fetch(this.st).then(function(b){if(this.iz)return b.body.getReader().cancel(),Promise.reject("cancel requested before server responded."); if(!b.ok)return Promise.resolve(b);var d=b.headers.get("content-length"),f=void 0,n=0;null!==d&&(f=parseInt(d,10));this.No=b.body.getReader();var q=!1,p=function(u){this.iz?u.close():q=!0}.bind(this),r=function(u){return this.No.read().then(function(v){var w=v.value;w&&(n+=w.byteLength,u.enqueue(w));v.done&&(f=n,t(u));this.Aw({JG:f,wK:n})}.bind(this))["catch"](function(v){console.log("Error reading response",v);u.error(v)}.bind(this))}.bind(this),t=function(u){q&&(u.close(),q=!1,this.No=null)}.bind(this); return new Response(new ReadableStream({start:function(u){return p(u)},pull:function(u){return r(u)},cancel:function(){t()}}))}.bind(this))};e.prototype.cancel=function(){this.iz=!0;this.No&&this.No.cancel()};a.Wt=function(b){return(new h(b,[])).Wt()};return a}); define("fe","require lO jquery.mod pu gD w cF mD nb mO lP dF".split(" "),function(a){function e(u){p=u}var k=a("lO"),m=a("jquery.mod"),l=a("pu"),c=a("gD"),h=a("w"),g=a("cF"),b=a("mD"),d=a("nb"),f=a("mO"),n=a("lP"),q=a("dF"),p=null;window.addEventListener("beforeinstallprompt",e);var r=k.extend(c,function(u){c.call(this);this.Sd=u;this.C="initial";this.Lda=this.G_=this.Pj=null;this.Lw=!1;this.rD=null;this.J0=void 0;this.hD=p;this.VX=r.ZDa();this.cba=f.wj("vr");this.hD||this.VX||(window.removeEventListener("beforeinstallprompt", e),window.addEventListener("beforeinstallprompt",this.YUa.bind(this)));this.VX||window.addEventListener("appinstalled",this.SMa.bind(this))});r.prototype.yka=function(u){this.G_=u;this.Xm=f.my(this.G_.get(TDV.PlayerSettings.BASE_DIR_URL)||f.getDirectory(this.G_.get(TDV.PlayerSettings.SELECTED_SCRIPT_URL)));"/"!=this.Xm[this.Xm.length-1]&&(this.Xm+="/");this.Pj=new t(this.Xm);this.J0=this.zwa=u.get(TDV.PlayerSettings.QUERY_STRING_PARAMETERS);this.nTa=f.parse(f.getDirectory(window.location.href)).pathname; this.NQa=f.OA(f.my("files.json",this.Xm),this.zwa);u=TDV.xb.WCa();this.Lda=f.OA(this.G_.get(TDV.PlayerSettings.SERVICE_WORKER_URL),"swv="+u.MAJOR+"."+u.MINOR);this.Pj=new t(this.Xm);this.Pj.bind(l.da,this.j_a,this,!0);this.Pj.load()};r.prototype.aL=function(){return this.Pj.state==t.mM};r.prototype.YAa=function(){return"can_install"==this.C&&!this.cba};r.prototype.$Aa=function(){return this.aL()&&this.J0!=this.Pj.version&&!this.cba};r.prototype.XAa=function(){return this.Pj.state!=t.Gla&&!this.cba}; r.prototype.FDa=function(){"can_install"==this.C&&(this.hD?(this.hD.userChoice.then(function(u){"accepted"!=u.outcome&&this.Cd("unavailable")}.bind(this)),this.hD.prompt().then(function(){this.hD=null}.bind(this))):this.t9())};r.prototype.cancel=function(){"downloading"==this.C&&(this.rD&&(this.rD.cancelDownload(),this.rD=null),this.Pj.Wt(),this.Cd("unavailable"))};r.prototype.Wt=function(){g.Wt(this.Xm);this.Pj.Wt()};r.prototype.j_a=function(){!0!==this.Sd.get("downloadEnabled")?this.Cd("unavailable"): !0!==d.hKa?this.Cd("unavailable"):h.browser()!=h.Lm||h.pc()==h.zy||h.pc()==h.SG?this.Cd("unavailable"):this.Lda?"serviceWorker"in navigator?this.aL()&&!this.$Aa()?this.Cd("unavailable"):navigator.onLine?this.VWa():this.Cd("unavailable"):this.Cd("unavailable"):this.Cd("unavailable")};r.prototype.Cd=function(u){this.C!=u&&(this.C=u,u=0<=["can_install","unavailable"].indexOf(this.C),this.Lw!=u&&(this.Lw=u)&&this.trigger(l.hd))};r.prototype.VWa=function(){this.Cd("registering_sw");navigator.serviceWorker.register(this.Lda, {scope:this.nTa}).then(function(){this.kxa(!0)}.bind(this))["catch"](function(){this.kxa(!1)}.bind(this))};r.prototype.kxa=function(u){u?h.Af()?this.Cd("can_install"):this.VX&&this.Pj.state==t.u5?(this.Cd("can_install"),this.t9()):this.hD?this.Cd("can_install"):(this.Cd("sw_registered"),setTimeout(function(){"sw_registered"==this.C&&this.Cd("can_install")}.bind(this),3E3)):this.Cd("unavailable")};r.prototype.YUa=function(u){this.hD=u;"sw_registered"==this.C&&this.Cd("can_install")};r.prototype.SMa= function(){"sw_registered"==this.C&&this.Cd("can_install");this.t9()};r.prototype.t9=function(){this.Cd("downloading");this.trigger(l.Gp);this.Yya(0);this.pUa()};r.prototype.pUa=function(){var u=f.OA(this.NQa,"nc="+(new Date).getTime());m.getJSON(u,function(v){if("downloading"==this.C){var w=[],x;for(x in v){var y=v[x].tags;if(y){Array.isArray(y)||(y=[y]);for(var z=0;zw.indexOf(y[z])&&w.push(y[z])}}var D=[];0<=w.indexOf("mobilevr2gen")&&(h.N2()||h.O2())?D.push("mobilevr2gen"):0<=w.indexOf("mobilevr")&& h.Af()?D.push("mobilevr"):0<=w.indexOf("mobile")&&h.rb()?D.push("mobile"):0<=w.indexOf("desktop")&&!h.rb()&&D.push("desktop");w=[];for(x in v)if(!(-1u.text.length?(this.CD.set("visible",!1),this.Oa.set("text",u.text),this.Oa.set("visible",!0)):(this.Oa.set("visible",!1),this.CD.set("html", this.WRa(u.text)),this.CD.set("visible",!0)),this.bj.set("visible",u.ip?!0:!1),this.set("visible",!0),t.Z1a(this.FH),t.rga(this.ez)):this.set("visible",!1)}};a.prototype.WRa=function(u){return"
'+u+"
"};a.prototype.yV=function(u){var v=this.Sra();v&&(v=this.lSa(v.text),this.hXa(v),m(v).each(function(w){w.ip&&w.ip.call(this,u)},this))};a.prototype.MWa= function(u){this.Gq.push(u);this.z0()};a.prototype.lSa=function(u){return m(this.Gq).filter(function(v){return v.text==u})};a.prototype.hXa=function(u){this.Gq=m(this.Gq).filter(function(v){return!m(u).contains(v)});this.z0()};a.prototype.Hwa=function(u){this.Gq.splice(u,1);u==this.Gq.length&&this.z0()};a.prototype.Sra=function(){return 0Math.abs(v-t)+Math.abs(w-u))&&d.forEach(function(T){T(H)});t=u=v=w=void 0},P)}H.preventDefault();H.stopImmediatePropagation()},!0);var t,u,v,w;document.addEventListener("mousedown",function(H){v=t=H.screenX;w=u=H.screenY},!0);document.addEventListener("mousemove",function(H){v= H.screenX;w=H.screenY},!0);var x=1;m=m.extend(h,function(H,P){h.call(this);this.kb=H;this.dSa=P;this.AY=this.AY.bind(this);this.$d=this.$d.bind(this);this.Raa=!1;this.Oaa=this.Oaa.bind(this);this.Paa=this.Paa.bind(this);this.Naa=this.Naa.bind(this);this.Qaa=this.Qaa.bind(this);this.wa=document.createElement("div");this.wa.style.setProperty("z-index",x,J[B]);for(var T in J[y])this.wa.style.setProperty(T,J[y][T],J[B]);d.push(this.AY)});m.prototype.clear=function(){this.kUa()&&this.$$();this.wa=null; d.splice(d.indexOf(this.AY),1)};m.prototype.AY=function(H){var P=this.dSa();if(0!=P.length){this.wa.replaceChildren();this.Raa=!1;var T=0;P.forEach(function(V){var U=document.createElement("div");if(V){U.textContent=V;for(var X in J[D])U.style.setProperty(X,J[D][X],J[B]);var K=T;T++;U.addEventListener(p,function(L){this.Oaa(L,K)}.bind(this));U.addEventListener(q,function(L){this.Paa(L,K)}.bind(this));U.addEventListener(f,function(L){this.Naa(L,K)}.bind(this));U.addEventListener(n,function(L){this.Qaa(L, K)}.bind(this))}else for(X in J[C])U.style.setProperty(X,J[C][X],J[B]);for(X in J[z])U.style.setProperty(X,J[z][X],J[B]);this.wa.appendChild(U)}.bind(this));(b.fullscreenElement()||document.body).appendChild(this.wa);this.wa.style.setProperty("display","block",J[B]);P=H.pageX;H=H.pageY;P+this.wa.clientWidth>document.body.clientWidth-5&&(P=document.body.clientWidth-this.wa.clientWidth-5);H+this.wa.clientHeight>document.body.clientHeight-5&&(H=document.body.clientHeight-this.wa.clientHeight-5);this.wa.style.setProperty("left", P+"px",J[B]);this.wa.style.setProperty("top",H+"px",J[B]);this.kb.bind(l.fb,this.$d,this);document.addEventListener("mousedown",this.$d);this.D1a=setInterval(this.C1a.bind(this),200)}};m.prototype.kUa=function(){return!!this.wa&&!!this.wa.parentNode};m.prototype.$$=function(){clearInterval(this.D1a);this.wa.parentNode.removeChild(this.wa);document.removeEventListener("mousedown",this.$d);this.kb.unbind(l.fb,this.$d,this);this.wa.style.setProperty("display","none",J[B])};m.prototype.C1a=function(){this.wa.contains(document.elementFromPoint(this.wa.offsetLeft+ .5*this.wa.clientWidth,this.wa.offsetTop+.5*this.wa.clientHeight))||this.wa.style.setProperty("z-index",x*=10,J[B])};m.prototype.$d=function(){this.$$()};m.prototype.Naa=function(H){this.Raa=!0;H.preventDefault();H.stopImmediatePropagation()};m.prototype.Qaa=function(H,P){this.Raa&&(this.$$(),H.preventDefault(),H.stopImmediatePropagation(),this.trigger(new c(l.Zp,{index:P})))};m.prototype.Oaa=function(H){for(var P in J[E])H.currentTarget.style.setProperty(P,J[E][P],J[B])};m.prototype.Paa=function(H){for(var P in J[A])H.currentTarget.style.setProperty(P, J[A][P],J[B])};var y="0",z="1",D="2",C="3",E="4",A="5",B="6",J=function(H){return JSON.parse(H.map(function(P){return String.fromCharCode(P)}).join(""))}([123,34,48,34,58,123,34,98,111,114,100,101,114,34,58,34,49,112,120,32,115,111,108,105,100,32,35,98,98,98,34,44,34,98,111,114,100,101,114,45,114,97,100,105,117,115,34,58,34,51,112,120,34,44,34,112,111,115,105,116,105,111,110,34,58,34,97,98,115,111,108,117,116,101,34,44,34,100,105,115,112,108,97,121,34,58,34,110,111,110,101,34,44,34,98,97,99,107,103, 114,111,117,110,100,45,99,111,108,111,114,34,58,34,35,101,53,101,53,101,53,34,44,34,111,112,97,99,105,116,121,34,58,49,44,34,112,97,100,100,105,110,103,34,58,48,44,34,109,97,114,103,105,110,34,58,48,44,34,112,111,105,110,116,101,114,45,101,118,101,110,116,115,34,58,34,97,108,108,34,44,34,116,101,120,116,45,97,108,105,103,110,34,58,34,108,101,102,116,34,44,34,98,111,120,45,115,104,97,100,111,119,34,58,34,49,112,120,32,49,112,120,32,51,112,120,32,114,103,98,97,40,48,44,32,48,44,32,48,44,32,48,46,50, 41,34,125,44,34,49,34,58,123,34,102,111,110,116,45,102,97,109,105,108,121,34,58,34,65,114,105,97,108,34,44,34,102,111,110,116,45,115,105,122,101,34,58,34,49,51,112,120,34,44,34,99,111,108,111,114,34,58,34,35,48,48,48,48,48,48,34,44,34,111,112,97,99,105,116,121,34,58,49,44,34,100,105,115,112,108,97,121,34,58,34,98,108,111,99,107,34,44,34,112,111,105,110,116,101,114,45,101,118,101,110,116,115,34,58,34,97,108,108,34,125,44,34,50,34,58,123,34,99,117,114,115,111,114,34,58,34,112,111,105,110,116,101,114, 34,44,34,98,111,114,100,101,114,45,114,97,100,105,117,115,34,58,34,51,112,120,34,44,34,112,97,100,100,105,110,103,34,58,34,55,112,120,32,50,48,112,120,34,44,34,119,104,105,116,101,45,115,112,97,99,101,34,58,34,110,111,119,114,97,112,34,125,44,34,51,34,58,123,34,109,97,114,103,105,110,34,58,34,55,112,120,32,53,112,120,34,44,34,98,111,114,100,101,114,45,116,111,112,34,58,34,49,112,120,32,115,111,108,105,100,32,35,97,97,97,34,44,34,98,111,114,100,101,114,45,98,111,116,116,111,109,34,58,34,49,112,120, 32,115,111,108,105,100,32,35,102,102,102,34,125,44,34,52,34,58,123,34,99,111,108,111,114,34,58,34,35,102,102,102,102,102,102,34,44,34,98,97,99,107,103,114,111,117,110,100,45,99,111,108,111,114,34,58,34,114,103,98,97,40,48,44,32,48,44,32,48,44,32,48,46,55,41,34,125,44,34,53,34,58,123,34,99,111,108,111,114,34,58,34,35,48,48,48,48,48,48,34,44,34,98,97,99,107,103,114,111,117,110,100,45,99,111,108,111,114,34,58,34,34,125,44,34,54,34,58,34,105,109,112,111,114,116,97,110,116,34,125]);return m}); define("mS",["require","mO","bh","ck"],function(a){function e(c){this.kb=c;this.Ct={};this.Ct[m.oma]="move";this.Ct[m.WKa]="ew-resize";this.Ct[m.YKa]="ns-resize";this.Ct[m.XKa]="nesw-resize";this.Ct[m.ZKa]="nwse-resize";this.Ct[m.Fe]="pointer";this.Ct[m.Ou]="inherit";this.Ct[m.Ee]="default";this.sh={};this.sh[m.Iy]="grab.cur";this.sh[m.Nh]="grabbing.cur";this.sh[m.yma]="N.cur";this.sh[m.zma]="NE.cur";this.sh[m.pma]="E.cur";this.sh[m.Cma]="SE.cur";this.sh[m.Bma]="S.cur";this.sh[m.Dma]="SW.cur";this.sh[m.Ema]= "W.cur";this.sh[m.Ama]="NW.cur";this.sh[m.rma]="FN.cur";this.sh[m.sma]="FNE.cur";this.sh[m.qma]="FE.cur";this.sh[m.vma]="FSE.cur";this.sh[m.uma]="FS.cur";this.sh[m.wma]="FSW.cur";this.sh[m.xma]="FW.cur";this.sh[m.tma]="FNW.cur";this.F7={};this.F7[m.zC]=l.zC;this.Poa={}}var k=a("mO"),m=a("bh"),l=a("ck");e.prototype.kCa=function(c){return this.fUa(c)?this.Pra(c):this.WTa(c)?this.JRa(c):this.PTa(c)?this.qRa(c):this.Pra(m.Ee)};e.prototype.cOa=function(c){if(!(c in this.Poa)){var h=new Image;h.src=this.kra(c); this.Poa[c]=h}};e.prototype.fUa=function(c){return c in this.Ct};e.prototype.Pra=function(c){return this.Ct[c]};e.prototype.WTa=function(c){return this.sh[c]};e.prototype.JRa=function(c){this.cOa(c);return"url("+this.kra(c)+"), default"};e.prototype.kra=function(c){return k.my(this.kb.get("settings").get(TDV.PlayerSettings.CURSORS_DIR_URL))+"/"+this.sh[c]};e.prototype.PTa=function(c){return c in this.F7};e.prototype.qRa=function(c){return"url("+this.F7[c]+"), auto"};return e}); define("cB",["require","es"],function(a){function e(){this.Iw={};this.ar=[];this.kN=0}var k=a("es");e.prototype.push=function(m,l){void 0==this.Iw[l]?(this.Iw[l]=[m],this.ar.push(l),this.ar.sort(function(c,h){return c-h}),this.kN++):(l=this.Iw[l],k(l).contains(m)||(l.push(m),this.kN++))};e.prototype.mCa=function(){return this.kN};e.prototype.isEmpty=function(){return 0==this.ar.length};e.prototype.YFa=function(){if(!this.isEmpty()){var m=this.ar[0],l=this.Iw[m].pop();0==this.Iw[m].length&&(delete this.Iw[m], this.ar=this.ar.slice(1));this.kN--;return l}};e.prototype.tja=function(){if(!this.isEmpty()){var m=this.ar[this.ar.length-1],l=this.Iw[m].pop();0==this.Iw[m].length&&(delete this.Iw[m],this.ar=this.ar.slice(0,this.ar.length-1));this.kN--;return l}};return e}); define("jj","require es lO gV cB bm lR".split(" "),function(a){function e(){this.AZ=!1;this.$va=void 0;this.W=!0;this.gZ=this.gZ.bind(this);this.bW=new m;this.SZ=new m;this.L_=new m;this.WX=new m;this.n9=new m;l.requestFrame(this.Xj,this)}a("es");a("lO");var k=a("gV"),m=a("cB"),l=a("bm"),c=a("lR");e.prototype.clear=function(){this.W=!1};e.prototype.RS=function(h){this.bW.push(h,this.qI(h));this.Qw()};e.prototype.xe=function(h){this.SZ.push(h,this.qI(h));this.Qw()};e.prototype.ec=function(h){this.L_.push(h, this.qI(h));this.Qw()};e.prototype.Ud=function(h){this.WX.push(h,this.qI(h));this.Qw()};e.prototype.il=function(h){this.n9.push(h,this.qI(h));this.Qw()};e.prototype.na=function(){this.j0a();this.a1a();this.l0a()};e.prototype.j0a=function(){do{for(;!this.bW.isEmpty();)this.bW.tja().Ib();this.SZ.isEmpty()||this.SZ.tja().ab()}while(!this.SZ.isEmpty()||!this.bW.isEmpty())};e.prototype.a1a=function(){for(;!this.L_.isEmpty()||!this.WX.isEmpty();)this.E0(),this.tfa()};e.prototype.E0=function(){for(;!this.L_.isEmpty();){var h= this.L_.tja();if(h.Pab()){var g=h.getParent();g?(g.ec(),g.Ud()):h.aHa(0,0,h.fu(),h.eu())}}};e.prototype.tfa=function(){for(;!this.WX.isEmpty();)this.WX.YFa().mk()};e.prototype.l0a=function(){for(;!this.n9.isEmpty();)this.n9.YFa().mh();k.process()};e.prototype.Qw=function(){this.AZ||(this.AZ=!0,this.$va=(new Date).getTime()+500,c.BB(this.gZ))};e.prototype.gZ=function(){this.AZ=!1;this.W&&this.na()};e.prototype.qI=function(h){return(h=h.getParent())?this.qI(h)+1:0};e.prototype.Xj=function(){this.AZ&& (new Date).getTime()>=this.$va&&this.gZ();l.requestFrame(this.Xj,this)};return e}); define("hV","require jquery.mod es lO pu oN jI mS bp jj nH w jr".split(" "),function(a){var e=a("jquery.mod"),k=a("es"),m=a("lO"),l=a("pu"),c=a("oN"),h=a("jI"),g=a("mS"),b=a("bp"),d=a("jj"),f=a("nH"),n=a("w"),q=a("jr");a=m.extend(c,function(p,r){this.wH=new d;c.call(this);this.xt(this);this.Me("Application");this.Gf=e(p);this.Ufa=r;this.Gf.css({overflow:"hidden","user-select":"none","-ms-user-select":"none","-moz-user-select":"none","-webkit-user-select":"none","-ms-touch-action":"none","touch-action":"none", visibility:"visible","-webkit-tap-highlight-color":"rgba(255, 255, 255, 0)"});this.Yw=e(document.createElement("div"));this.Yw.css({position:"absolute",left:0,top:0,right:0,bottom:0,width:"auto",height:"auto",margin:0});this.Gf.append(this.Yw);this.Yw.append(this.fd());this.xya=this.Yw.get(0);this.Pd=this.Hd=void 0;this.LTa=10;this.oOa=500;this.gQ=null;this.a9=new g(this);this.Zb=new b(this);this.wa.append(this.Zb.fd());this.jW=new h(this,this.hra.bind(this));this.jW.bind(l.Zp,this.Ch(this.Yta),this, !0);this.ota=!0;this.set("contentOpaque",!0);this.eD=null;this.eN=[];this.dI(["globalmousemove"]);this.yNa();this.P0=this.Q0=0;this.kA=1;try{this.Q0=window.top.innerWidth,this.P0=window.top.innerHeight,this.T$=!0}catch(t){this.T$=!1}this.Qza();this.jj=new f(p);this.jj.bind(l.ba,function(){this.c$(this.jj.enabled())},this);q.eb()});a.prototype.start=function(){this.hr||(this.hr=!0,this.trigger(l.bo))};a.prototype.uia=function(){return this.hr};a.prototype.Qza=function(){this.T$&&!f.enabled()&&(this.Q0= window.top.innerWidth,this.P0=window.top.innerHeight)};a.prototype.clear=function(){this.pG(null);this.sya();this.BQa();this.wH.clear();this.Gf&&(this.fd().remove(),this.Yw.remove(),this.Gf=null);this.a9=null;this.jj.hla();this.jj=null;this.jW&&(this.jW.clear(),this.jW=null)};a.prototype.H9a=function(p){this.ota=p};a.prototype.c$=function(p){p?this.qxa():this.zOa()};a.prototype.kw=function(){this.IO=this.Tl=this.Yw.width();this.HO=this.Sl=this.Yw.height()};a.prototype.pG=function(p){if(this.eD!=p){null!= this.eD&&this.eD.G_a();this.eD=p;for(var r=[];null!=p;)r=[p].concat(r),p=p.getParent();p=this.eN.length-1;for(var t=!0;0<=p&&t;p--)k(r).contains(this.eN[p])?t=!1:this.eN.pop().J_a();for(p=0;pp?r:p)/(this.Q0>this.P0? this.Q0:this.P0),u=Math.round(r/t),v=Math.round(p/t);this.kA=t;r={left:Math.round(.5*(r-u))+"px",top:Math.round(.5*(p-v))+"px",right:"auto",bottom:"auto",width:u+"px",height:v+"px",transform:"scale("+[t,t].join(", ")+")",position:"absolute"}}else r={position:"absolute",left:0,top:0,right:"auto",bottom:"auto",width:document.body.clientWidth+"px",height:document.body.clientHeight+"px"},this.kA=1;this.Yw.css(r)};a.prototype.zOa=function(){this.Yw.css({position:"abolute",left:0,top:0,right:0,bottom:0, width:"auto",height:"auto",transform:""});this.kA=1};a.prototype.FZa=function(){this.sya();var p=this;this.gQ=setTimeout(function(){p.gQ=null;p.ec()},this.LTa)};a.prototype.sya=function(){this.gQ&&(this.gQ=null,clearTimeout(this.gQ))};a.prototype.ZSa=function(){this.dpa()};a.prototype.o$=function(){return k(c.prototype.o$.call(this)).defaults({globaltouchmove:[{target:e(document),name:"touchmove",handler:this.Ch(this.$Sa)}],globalmousemove:[{target:e(document),name:"mousemove",handler:this.Ch(this.Vra)}, {target:e(window),name:"mouseout",handler:this.Ch(this.Vra)}],globalresize:[{target:e(window),name:"resize",handler:this.Ch(this.ZSa)}]})};return a}); define("gT","require jquery.mod pU ck nH pu gD ps w".split(" "),function(a){function e(){p=TDV.xb.Kr();var v=q||p;n!=v&&(n=v,f.trigger(h.ba));v=!!q&&p!=q&&d.rb();r!=v&&(t||(t=k("
"),t.css({position:"fixed","z-index":m.AKa,left:0,top:0,margin:0,padding:0,height:"100%",width:"100%","background-color":"rgba(255, 255, 255, 0.99)"}),t.html(['
\n
','','
'+b("rotate-device")+"
","
\n
"].join("\n")),u=t.find("img")),r&&t.detach(),(r=v)&&(c.enabled()?k(c.fullscreenElement()):k("body")).append(t));r&&u.css("transform",n==f.oLa?"translate(-11%, 0) rotate(-90deg)":"none")}var k=a("jquery.mod"),m=a("pU"),l=a("ck"),c=a("nH"),h=a("pu"),g=a("gD"),b=a("ps"),d=a("w"),f=new g;f.Fbb=TDV.xb.r6; f.oLa=TDV.xb.s6;f.yu=function(v){q!=v&&(q=v,e())};f.BCa=function(){return q};f.get=function(){return n};var n=void 0,q=void 0,p=void 0,r=!1,t=null,u=null;window.addEventListener("resize",function(){e();setTimeout(e,500)},!0);try{window.screen.orientation.addEventListener("change",e)}catch(v){window.addEventListener("orientationchange",e,!1)}e();return f}); define("jf","require lO es pu cH pK oh nD ps kh I bf nW ed mz oi mj w ih fe cE jT mO oO ep hV oN dn nH bJ gT mw dF".split(" "),function(a){var e=a("lO"),k=a("es"),m=a("pu"),l=a("cH"),c=a("pK"),h=a("oh"),g=a("nD"),b=a("ps"),d=a("kh"),f=a("I"),n=a("bf"),q=a("nW"),p=a("ed");a("mz");var r=a("oi"),t=a("mj"),u=a("w"),v=a("ih"),w=a("fe"),x=a("cE"),y=a("jT"),z=a("mO"),D=a("oO"),C=a("ep"),E=a("hV"),A=a("oN"),B=a("dn"),J=a("nH"),H=a("bJ"),P=a("gT"),T=a("mw"),V=a("dF"),U=h.define("Player",E,function(){E.apply(this, arguments);this.rg=new w(this);this.kqa=new n(this,this.rg);this.Ls=new A;this.Ls.qa({backgroundOpacity:0,visible:!0,width:"100%",height:"100%"});this.MI=new q;this.eK=new p;this.mW=new f(this);var L=new B;L.o4(0);this.TT(L);this.Ef(!0);this.bind(m.F("settings"),this.RVa,this,!0);this.J0=TDV.xb.WCa();P.bind(m.ba,this.CVa,this,!0);H.xab();this.UNa=new d(this,"buttonMute",C.Ge);this.UNa.bind(m.pa,this.Oua,this,!0);this.bOa=new d(this,"buttonUnmute",C.Ge);this.bOa.bind(m.pa,this.Cva,this,!0);this.MV= new d(this,"buttonToggleMute",C.Ij);this.MV.bind(m.Fj,this.Oua,this,!0);this.MV.bind(m.zl,this.Cva,this,!0);this.bind(m.F("mute"),this.zVa,this);this.MV.set("pressed",this.get("mute"));this.SNa=new d(this,"buttonEnterFullscreen",C.Ge);this.SNa.bind(m.pa,this.dua,this,!0);this.TNa=new d(this,"buttonExitFullscreen",C.Ge);this.TNa.bind(m.pa,this.eua,this,!0);this.IV=new d(this,"buttonToggleFullscreen",C.Ij);this.IV.bind(m.Fj,this.dua,this,!0);this.IV.bind(m.zl,this.eua,this,!0);this.IV.set("pressed", this.get("fullscreenEnabled"));this.bind(m.F("fullscreenEnabled"),this.gVa,this,!0);this.set("fullscreenEnabled",this.jj.enabled());this.set("defaultMenu",["fullscreen","mute","rotation"]);this.bind(m.bo,this.UVa,this,!0);[m.fb,m.Eb,m.us,m.Hy,m.YG].forEach(function(R){this.bind(R,function(Z){this.trigger(new l(m.BC,{UL:Z}))},this,!0)}.bind(this));["keydown","keyup"].forEach(function(R){document.addEventListener(R,function(Z){this.trigger(new l(m.BC,{UL:Z}))}.bind(this))}.bind(this));D.O.bind(m.ba, function(){D.isPresenting?P.yu():P.yu(E.prototype.get.call(this,"lockedOrientation"))},this);this.jj.bind(m.ba,function(){var R=P.BCa();P.yu();P.yu(R)},this)});U.qKa="orientationChange";U.prototype.logCapabilities=function(){this.xUa()};U.prototype.activateAudio=function(L){this.nMa(L)};U.prototype.c$=function(L){E.prototype.c$.apply(this,arguments);this.set("fullscreenEnabled",L)};U.prototype.yb=function(){E.prototype.yb.call(this);this.h("mute",!1);this.h("fullscreenEnabled",!1)};U.prototype.Ib= function(){E.prototype.Ib.call(this);this.kqa.getParent()!=this&&this.Xa(this.kqa);this.Ls.getParent()!=this&&(this.Xa(this.Ls),this.Ls.Xa(this.mW),this.Ls.Xa(this.MI),this.Ls.Xa(this.eK))};U.prototype.BXa=function(L){var R=[];this.MI&&R.push(this.MI);this.eK&&R.push(this.eK);this.mW&&R.push(this.mW);for(var Z=!0,da=0;da<=R.length&&Z;da++)Z=L.indexOf(R[da]),Z=L.length-(R.length-da)==Z;return Z?L:L.filter(function(aa){return 0>R.indexOf(aa)}).concat(R)};U.prototype.ab=function(){this.ywa||(this.ywa= k.difference(this.FSa(),"backgroundOpacity visible includeInLayout state left right top bottom centerX centerY width height minWidth minHeight maxWidth maxHeight actualWidth actualHeight paddingLeft paddingTop paddingRight paddingBottom".split(" ")));this.vc(this.ywa,{},[this.Ls],!0,!0);E.prototype.ab.call(this);!0===this.scb&&this.rcb()};U.prototype.set=function(L,R){switch(L){case "children":this.Ls.set(L,this.BXa(R));return;case "creationPolicy":this.Ls.set(L,R);return;case "fullscreenAvailable":case "gyroscopeAvailable":case "cardboardAvailable":case "isMobile":case "orientation":case "surfaceSelectionAvailable":case "touchEnabled":case "touchDevice":case "vrControllerAvailable":case "vrAvailable":R= this.get(L);break;case "fullscreenEnabled":R=this.jj.ck()&&R;break;case "fullscreenFallback":J.gka(R);break;case "lockedOrientation":u.Af()&&(R=void 0);P.yu(R);break;case "installAvailable":R=this.rg.ready();break;case "mouseWheelEnabled":this.H9a(z.gg("mousewheelenabled",R));break;case "backgroundPreloadEnabled":this.UXa(R);break;case "vrPolyfillScale":D.O3=R;break;case "desktopMipmappingEnabled":r.T8a(R);break;case "mobileMipmappingEnabled":r.F9a(R);break;case "defaultVRPointer":"gaze"==R?D.UHa(D.Rma.XG): D.UHa(D.Rma.qM)}E.prototype.set.call(this,L,R)};U.prototype.get=function(L,R){switch(L){case "children":case "creationPolicy":return this.Ls.get(L,R);case "touchEnabled":return this.Ao;case "touchDevice":return u.bla();case "isMobile":return u.rb();case "orientation":return P.get();case "lockedOrientation":return P.BCa();case "gyroscopeAvailable":return v.ck;case "cardboardAvailable":case "vrAvailable":return D.KG;case "vrControllerAvailable":return D.DJa;case "fullscreenAvailable":return this.jj.ck(); case "vrPolyfillScale":return D.O3;case "installAvailable":return this.rg.ready();case "surfaceSelectionAvailable":return!0;case "pageScale":return this.kA;case K:return this.Ufa?E.prototype.get.apply(this,arguments):!0;default:return E.prototype.get.apply(this,arguments)}};U.prototype.Oua=function(){this.set("mute",!0)};U.prototype.Cva=function(){this.set("mute",!1)};U.prototype.zVa=function(){this.MV.set("pressed",this.get("mute"))};U.prototype.dua=function(){this.set("fullscreenEnabled",!0)};U.prototype.eua= function(){this.set("fullscreenEnabled",!1)};U.prototype.gVa=function(){this.get("fullscreenEnabled")?this.jj.E1():this.jj.Dr();this.IV.set("pressed",this.get("fullscreenEnabled"));this.set("fullscreenEnabled",this.jj.enabled())};U.prototype.RVa=function(){var L=this.get("settings");L&&(x.initialize(L),y.yka(L),THREE.VJa=L.get(TDV.PlayerSettings.xla),THREE.iKa=L.get(TDV.PlayerSettings.Hla),THREE.mH=L.get(TDV.PlayerSettings.mH),this.rg.yka(L))};U.prototype.UXa=function(L){y.enabled(L)};U.prototype.hra= function(){var L=[];this.RH=[];(this.get("menu")||[]).forEach(function(da){var aa=da.get("label");L.push(da.get("label"));aa&&this.RH.push(function(){da.trigger("click")})}.bind(this));var R=this.get("defaultMenu",[]);if(0<=R.indexOf("rotation")){var Z=this.Ri("PanoramaPlayer");Z.length&&(L.push(Z[0].get("mouseControlMode")==c.YB?b("change-to-drag-and-release"):b("change-to-click-and-move")),this.RH.push(this.o_a.bind(this)))}0<=R.indexOf("fullscreen")&&this.jj.ck()&&(L.push(this.jj.enabled()?b("exit-fullscreen"): b("enter-fullscreen")),this.RH.push(this.m_a.bind(this)));0<=R.indexOf("mute")&&(L.push(this.get("mute")?b("unmute"):b("mute")),this.RH.push(this.n_a.bind(this)));R=[].concat(g.name?[g.name]:[],"false"!=g.q3a?g.ZS?["v:"+g.ZS+"."+g.dT]:["v:"+g.dT]:[]).join(" ");""!=R&&(0p.length){for(t=p.length;t r.length){for(u=r.length;uf&&(this.He=[],this.Zm=0);f=0<=f&&2>f;this.VH=d;var n;for(n=this.Zm;nd);n++);for(;this.Zmthis.YSa(d)?2:void 0);this.mR()};a.prototype.wGa=function(d){d=this.O0.indexOf(d);0>d||(this.O0.splice(d,1),this.xd&&this.fQa(this.xR[d]))};a.prototype.fQa=function(d){var f=this.xR.indexOf(d);0>f||(this.xR.splice(f,1),this.xd.he(d),this.mR())};a.prototype.pka=function(d){this.HZ=d;this.mR()}; a.prototype.mR=function(){this.oc&&this.oc.pka(this.HZ&&0this.lf);this.Cd(f)};a.prototype.yn=function(f){var n=this.get("viewerArea");(this.be=n&&n.be)&&this.be.bind(k.pa,this.Jva,this,!0);this.Hca=!1;this.KO(f.data.video)};a.prototype.Tq=function(f){this.be&&this.be.unbind(k.pa,this.Jva,this,!0);this.be=null;this.JO(f.data.video)};a.prototype.FP=function(f){this.lf=f.data.time;this.Ub=f.data.duration;this.kx()};a.prototype.Iva=function(){if(this.Hca)this.Hca= !1;else switch(this.get("clickAction")){case "play_pause":this.get("state")!=h.PLAYING?this.N.play():this.N.pause()}};a.prototype.Jva=function(){this.Hca=!0};a.prototype.PP=function(f){this.FE(f.data.position)};a.prototype.Nk=function(){this.N.play()};a.prototype.Wo=function(){this.N.stop()};a.prototype.Vq=function(){this.N.pause()};a.prototype.FE=function(f){this.N&&this.N.setTime(f)};a.prototype.kx=function(){if(this.j){var f=this.j.getParent();0
"),this.ge.css({position:"absolute",left:0,top:0,width:"100%",height:"100%"}),this.Vb().append(this.ge));this.Gc||(this.Gc=e(""),this.Gc.css({position:"absolute",left:0,top:0}),this.Gc.attr("allowfullscreen","true"),this.Gc.attr("allow","fullscreen; accelerometer; gyroscope; magnetometer; vr; autoplay; camera; microphone; display-capture; xr-spatial-tracking"), this.ge.append(this.Gc));this.nD||(this.nD=e("
"),this.nD.css({"text-shadow":"0 0 5px rgba(255,255,255,0.5)",display:"none",color:"#000000","font-weight":"300","font-family":"Tahoma, Geneva, sans-serif","font-size":l.rb()?"5vmin":"20px",position:"absolute",top:"50%",left:"50%","text-align":"center",transform:"translate(-50%, -50%)",width:"90%"}),this.ge.append(this.nD))};a.prototype.ab=function(){if(this.L("url")){var b=this.B("url");b&&this.Oz?this.vxa(b):(!b||this.get("unloadWhenHidden"))&& this.vxa("");this.T("url")}this.L("insetBorder")&&(this.B("insetBorder")?this.Gc.attr("frameborder","1"):this.Gc.attr("frameborder","0"),this.T("insetBorder"));this.L("scrollEnabled")&&(this.B("scrollEnabled")?(this.Gc.attr("scrolling","auto"),this.ge.css({overflow:"auto","-webkit-overflow-scrolling":"touch"})):(this.Gc.attr("scrolling","no"),this.ge.css({overflow:"hidden","-webkit-overflow-scrolling":"auto"})),this.T("scrollEnabled"));h.prototype.ab.call(this)};a.prototype.mh=function(){this.Gc&& g.css(this.Gc.get(0),{width:this.ra+"px",height:this.va+"px"});h.prototype.mh.call(this)};a.prototype.refresh=function(){this.B("url")&&this.Oz&&(this.caa(),this.lz(),this.bfa(),this.Gc.attr("src",""),setTimeout(function(){this.fya();this.Eoa();this.Gc.attr("src",this.B("url"))}.bind(this),30))};a.prototype.vxa=function(b){this.Gc.attr("src")!=b&&(this.caa(),b?(this.fya(),this.Eoa()):(this.lz(),this.bfa()),this.Gc.attr("src",b))};a.prototype.Xba=function(){this.BO=null;this.$Ta()&&this.oZa()};a.prototype.JY= function(){this.caa();this.lz();this.bfa()};a.prototype.Eoa=function(){this.Gc.on("load",this.JY)};a.prototype.bfa=function(){this.Gc.off("load",this.JY)};a.prototype.lz=function(){this.BO&&(clearTimeout(this.BO),this.BO=null)};a.prototype.fya=function(){this.lz();this.BO=setTimeout(this.Xba.bind(this),3E3)};a.prototype.$Ta=function(){if("https:"==window.location.protocol){var b=this.Gc.attr("src");if("https:"!=c.parse(b).protocol)return!0}return!1};a.prototype.oZa=function(){this.nD.text("A secure web page served over HTTPS can not display insecure content served over HTTP."); this.nD.show()};a.prototype.caa=function(){this.nD.hide()};return a});define("cw",["require","dW","oh"],function(a){var e=a("dW");a=a("oh").define("WebFrame",e,function(){e.call(this)});a.prototype.refresh=function(){e.prototype.refresh.call(this)};return a});define("mk",["require","es","lO","oN","d"],function(a){var e=a("es"),k=a("lO"),m=a("oN");a=a("d");var l=k.extend(m,function(){m.call(this)});l.Ec={layout:a.Eg};e.defaults(l.Ec,m.Ec);l.prototype.yb=function(){this.so(l.Ec)};return l}); define("na","require es lO pu cH ny d oN mk hN gs dE".split(" "),function(a){var e=a("es"),k=a("lO"),m=a("pu"),l=a("cH"),c=a("ny"),h=a("d"),g=a("oN"),b=a("mk"),d=a("hN"),f=a("gs"),n=a("dE"),q=k.extend(d,function(){d.call(this);this.Me("Window");this.cz=this.PH=this.XQ=this.Ll=null;this.V7=new g;this.mI=null;this.W$=this.V$=0;this.eea=this.Vxa=!1;this.jga=this.kga=void 0;for(var p in q.bcb)this.LE(p);this.bind(m.uc,this.z1a,this);this.bind(m.pM,this.x1a,this);this.bind(m.wM,this.A1a,this);this.bind(m.pa, this.w1a,this);this.I0=0;this.Nf=new g;this.Nf.qa({visible:!1,includeInLayout:!1,layout:"absolute",height:"100%",width:"100%",backgroundOpacity:0,contentOpaque:!1});this.Nf.bind(m.uc,this.Xza,this);this.Nf.bind(m.wM,this.q1a,this);this.Nf.bind(m.pM,this.p1a,this);this.Nf.bind(m.pa,this.o1a,this);this.Nf.Xa(this)});q.prototype.set=function(p,r){switch(p){case "maxWidth":this.kga=r;this.y0();break;case "maxHeight":this.jga=r;this.y0();break;case "children":this.V7.set(p,r);break;case "shadow":this.Vxa= r;this.Sza();break;default:d.prototype.set.call(this,p,r)}};q.prototype.show=function(p,r){this.y0(p);this.set("visible",!1);this.Nf.set("visible",!1);this.uNa();r&&this.B2a();r=p.get("children");p.set("children",r.concat([this.Nf]));k.defer(function(){this.Nf.set("visible",!0)}.bind(this))};q.prototype.uNa=function(){var p=this.B("modal"),r=this.B("veilShowEffect"),t=this.B("veilHideEffect");p&&r?this.Nf.set("showEffect",r):this.Nf.set("showEffect",null);p&&t?this.Nf.set("hideEffect",t):this.Nf.set("hideEffect", null)};q.prototype.hide=function(){this.get("visible")&&this.trigger(m.WJa);this.I0=0;this.E_(!1);this.set("visible",!1)};q.prototype.B2a=function(){this.set("centerX",0);this.set("centerY",0)};q.prototype.get=function(p,r){return"children"==p?this.V7.get(p,r):d.prototype.get.call(this,p,r)};q.Dna={headerBackgroundOpacity:"backgroundOpacity",headerBackgroundColor:"backgroundColor",headerBackgroundColorRatios:"backgroundColorRatios",headerBackgroundColorDirection:"backgroundColorDirection",headerBorderSize:"borderSize", headerBorderLeftSize:"borderLeftSize",headerBorderTopSize:"borderTopSize",headerBorderRightSize:"borderRightSize",headerBorderBottomSize:"borderBottomSize",headerBorderColor:"borderColor",headerBorderLeftColor:"borderLeftColor",headerBorderTopColor:"borderTopColor",headerBorderRightColor:"borderRightColor",headerBorderBottomColor:"borderBottomColor",headerHeight:"height",headerPaddingLeft:"paddingLeft",headerPaddingTop:"paddingTop",headerPaddingRight:"paddingRight",headerPaddingBottom:"paddingBottom", headerVerticalAlign:"verticalAlign"};q.Cna=Object.keys(q.Dna);q.Y6={borderRadius:"borderTopRadius",borderTopRadius:"borderTopRadius",borderLeftRadius:"borderTopLeftRadius",borderRightRadius:"borderTopRightRadius",borderTopLeftRadius:"borderTopLeftRadius",borderTopRightRadius:"borderTopRightRadius"};q.X6="borderLeftRadius borderRightRadius borderTopLeftRadius borderTopRightRadius borderTopRadius borderRadius".split(" ");q.Vna={title:"text",titleFontFamily:"fontFamily",titleFontSize:"fontSize",titleFontColor:"fontColor", titleFontWeight:"fontWeight",titleFontStyle:"fontStyle",titleHorizontalAlign:"horizontalAlign",titlePaddingLeft:"paddingLeft",titlePaddingTop:"paddingTop",titlePaddingRight:"paddingRight",titlePaddingBottom:"paddingBottom",titleTextDecoration:"textDecoration",titleTextShadowColor:"textShadowColor",titleTextShadowHorizontalLength:"textShadowHorizontalLength",titleTextShadowVerticalLength:"textShadowVerticalLength",titleTextShadowBlurRadius:"textShadowBlurRadius",titleTextShadowOpacity:"textShadowOpacity"}; q.Una=Object.keys(q.Vna);q.xna={closeButtonBackgroundColor:"backgroundColor",closeButtonBackgroundColorDirection:"backgroundColorDirection",closeButtonBackgroundColorRatios:"backgroundColorRatios",closeButtonBackgroundOpacity:"backgroundOpacity",closeButtonBorderColor:"borderColor",closeButtonBorderRadius:"borderRadius",closeButtonBorderSize:"borderSize",closeButtonHeight:"height",closeButtonIconColor:"iconColor",closeButtonIconHeight:"iconHeight",closeButtonIconLineWidth:"iconLineWidth",closeButtonIconWidth:"iconWidth", closeButtonOpacity:"opacity",closeButtonWidth:"width",closeButtonPaddingBottom:"paddingBottom",closeButtonPaddingLeft:"paddingLeft",closeButtonPaddingRight:"paddingRight",closeButtonPaddingTop:"paddingTop",closeButtonRollOverBackgroundColor:"rollOverBackgroundColor",closeButtonRollOverBackgroundColorDirection:"rollOverBackgroundColorDirection",closeButtonRollOverBackgroundColorRatios:"rollOverBackgroundColorRatios",closeButtonRollOverBackgroundOpacity:"rollOverBackgroundOpacity",closeButtonRollOverBorderColor:"rollOverBorderColor", closeButtonRollOverBorderSize:"rollOverBorderSize",closeButtonRollOverIconColor:"rollOverIconColor",closeButtonRollOverIconLineWidth:"rollOverIconLineWidth",closeButtonRollOverOpacity:"rollOverOpacity",closeButtonPressedBackgroundColor:"pressedBackgroundColor",closeButtonPressedBackgroundColorDirection:"pressedBackgroundColorDirection",closeButtonPressedBackgroundColorRatios:"pressedBackgroundColorRatios",closeButtonPressedBackgroundOpacity:"pressedBackgroundOpacity",closeButtonPressedBorderColor:"pressedBorderColor", closeButtonPressedBorderSize:"pressedBorderSize",closeButtonPressedIconColor:"pressedIconColor",closeButtonPressedIconLineWidth:"pressedIconLineWidth",closeButtonPressedOpacity:"pressedOpacity"};q.wna=Object.keys(q.xna);q.zna={footerBackgroundOpacity:"backgroundOpacity",footerBackgroundColor:"backgroundColor",footerBackgroundColorRatios:"backgroundColorRatios",footerBackgroundColorDirection:"backgroundColorDirection",footerBorderSize:"borderSize",footerBorderLeftSize:"borderLeftSize",footerBorderTopSize:"borderTopSize", footerBorderRightSize:"borderRightSize",footerBorderBottomSize:"borderBottomSize",footerBorderColor:"borderColor",footerBorderLeftColor:"borderLeftColor",footerBorderTopColor:"borderTopColor",footerBorderRightColor:"borderRightColor",footerBorderBottomColor:"borderBottomColor",footerHeight:"height"};q.yna=Object.keys(q.zna);q.Bna={borderRadius:"borderBottomRadius",borderBottomRadius:"borderBottomRadius",borderLeftRadius:"borderBottomLeftRadius",borderRightRadius:"borderBottomRightRadius",borderBottomLeftRadius:"borderBottomLeftRadius", borderBottomRightRadius:"borderBottomRightRadius"};q.Ana="borderLeftRadius borderRightRadius borderBottomLeftRadius borderBottomRightRadius borderBottomRadius borderRadius".split(" ");q.tna={bodyBackgroundOpacity:"backgroundOpacity",bodyBackgroundColor:"backgroundColor",bodyBackgroundColorRatios:"backgroundColorRatios",bodyBackgroundColorDirection:"backgroundColorDirection",bodyBorderSize:"borderSize",bodyBorderLeftSize:"borderLeftSize",bodyBorderTopSize:"borderTopSize",bodyBorderRightSize:"borderRightSize", bodyBorderBottomSize:"borderBottomSize",bodyBorderColor:"borderColor",bodyBorderLeftColor:"borderLeftColor",bodyBorderTopColor:"borderTopColor",bodyBorderRightColor:"borderRightColor",bodyBorderBottomColor:"borderBottomColor",bodyPaddingLeft:"paddingLeft",bodyPaddingTop:"paddingTop",bodyPaddingRight:"paddingRight",bodyPaddingBottom:"paddingBottom",overflow:"overflow",scrollBarColor:"scrollBarColor",scrollBarWidth:"scrollBarWidth",scrollBarMargin:"scrollBarMargin",scrollBarHorizontalMargin:"scrollBarHorizontalMargin", scrollBarVerticalMargin:"scrollBarVerticalMargin",scrollBarOpacity:"scrollBarOpacity",gap:"gap"};q.sna=Object.keys(q.tna);q.una={layout:"layout",horizontalAlign:"horizontalAlign",verticalAlign:"verticalAlign"};q.WLa=Object.keys(q.una);q.Xna={veilOpacity:"backgroundOpacity",veilColor:"backgroundColor",veilColorRatios:"backgroundColorRatios",veilColorDirection:"backgroundColorDirection"};q.Wna=Object.keys(q.Xna);q.Ec=function(){var p={modal:!1,visible:!1,centerX:0,centerY:0,veilShowEffect:void 0,veilHideEffect:void 0}; e.defaults(p,g.Ec);for(var r=[].concat(q.Cna,q.Una,q.wna,q.sna,q.yna,q.Wna),t=0;tp&&this.set("centerX",t-(r-p));p=this.Nf.Cb();r=this.Cb();t=this.get("centerY");r=.5*p+t-.5*r;u=this.Ll.au();v=this.Ll.Cb();w=Math.min(v,5);p=p-u-w;u=-(u+ v-w);rp&&this.set("centerY",t-(r-p))};q.prototype.ab=function(){this.vc(q.Cna,q.Dna,[this.Ll],!0,!0);this.vc(q.X6,q.Y6,[this.Ll],!0,!1);0===this.get("headerHeight")?this.vc(q.X6,q.Y6,[this.cz],!0,!1):this.vc(q.X6,q.Y6,[this.Ll],!0,!1);this.vc(q.Una,q.Vna,[this.XQ],!0,!0);this.vc(q.wna,q.xna,[this.PH],!0,!0);this.vc(q.sna,q.tna,[this.cz],!0,!0);this.vc(q.WLa,q.una,[this.cz],!0,!1);this.vc(q.yna,q.zna,[this.mI],!0,!0);0===this.get("footerHeight")?this.vc(q.Ana,q.Bna, [this.cz],!0,!1):this.vc(q.Ana,q.Bna,[this.mI],!0,!1);this.B("modal")?(this.vc(q.Wna,q.Xna,[this.Nf],!0,!0),this.Nf.set("contentOpaque",!0)):(this.Nf.set("backgroundOpacity",0),this.Nf.set("contentOpaque",!1));this.qa({layout:h.Rh,horizontalAlign:c.Re,verticalAlign:c.se});d.prototype.ab.call(this);this.Pl.o4(0)};return q}); define("et",["require","na","oh"],function(a){var e=a("na");a=a("oh").define("Window",e,function(){e.call(this)});a.prototype.show=a.prototype.show;a.prototype.hide=a.prototype.hide;return a}); define("nB","require jquery.mod es lb pu iv cH gD bm oW bK hh mG w lO".split(" "),function(a){function e(v){this.source=v;this.width=this.source.get("width");this.height=this.source.get("height");this.url=this.source.get("url");this.YK=this.source.get("grayscale");this.Ix=new q(h.ul)}var k=a("jquery.mod"),m=a("es"),l=a("lb"),c=a("pu"),h=a("iv"),g=a("cH"),b=a("gD"),d=a("bm"),f=a("oW"),n=a("bK"),q=a("hh"),p=a("mG"),r=a("w"),t=a("lO"),u=t.extend(b,function(){b.call(this);this.IY=this.IY.bind(this);this.Wg= null;this.Ie=[];this.tn=[];this.cc=this.Pb=this.Pd=this.Hd=100;this.tf=1;this.kz=this.jz=.5;this.Mc=1;this.Lj=this.kj=null;this.zZ=!1;this.J8={};this.UH={};this.UH.low={};this.UH.hight={};r.uK()==r.hM&&(this.UH.low.transform="translateZ(0)",this.UH.hight.transform="");this.W=!1;this.Xh="inherit";this.wa=k("
").css({position:"absolute",left:0,top:0,right:0,bottom:0,overflow:"hidden"});this.aO=null;this.gf=t.tp(this.na,this)});u.prototype.fd=function(){return this.wa};u.prototype.IB=function(v){this.Mf!= v&&(this.Mf=v,this.K7(1),this.gf())};u.prototype.b4=function(v){this.Xh!=v&&(this.Xh=v,this.Lj&&this.Lj.css("cursor",this.Xh),this.kj&&this.kj.css("cursor",this.Xh))};u.prototype.k9a=function(v){this.Ie!=v&&(this.Ie&&l.ca(this.Ie,["levels.url"],this.IY),(this.Ie=v)&&l.ea(this.Ie,["levels.url"],this.IY,!0))};u.prototype.IY=function(){this.k8();this.Wg=null;this.kj&&(this.kj.detach(),this.kj=null);this.Lj&&(this.Lj.detach(),this.Lj=null);this.pg&&(this.pg=null);this.k8();this.zZ=!1;m(this.tn).each(function(w){w.Ix.cancel(); w.Ix.unbind(c.da,this.Msa,this)},this);var v=(this.Ie&&this.Ie.get("levels")||[]).filter(function(w){return w.get("url")});this.tn=m(v).map(function(w){w=new e(w);w.Ix.bind(c.da,this.Msa,this);return w},this);(v=this.iSa())?(this.Pb=v.width,this.cc=v.height):this.cc=this.Pb=100;this.kz=this.jz=.5;this.K7(1);this.gf()};u.prototype.qG=function(v,w){if(this.Hd!=v||this.Pd!=w)this.Hd=v,this.Pd=w,this.gf()};u.prototype.S8a=function(v,w){if(this.Tpa!=v||this.Spa!=w)this.Tpa=v,this.Spa=w,this.gf()};u.prototype.ob= function(v){this.W!=v&&(this.W=v,this.gf())};u.prototype.move=function(v,w){var x=this.tf*this.Mc;this.jz+=v/(this.Pb*x);this.kz+=w/(this.cc*x);this.e_()};u.prototype.Ex=function(){return this.Mc};u.prototype.setScale=function(v){this.K7(Math.max(1,Math.min(1/this.tf,v)));this.Wg&&this.Wg.widththis.cc*this.Hd?this.Pd/this.cc:this.Hd/this.Pb;break;case p.aKa:v=Math.min(this.Tpa/this.Pb,this.Spa/this.cc);break;default:v=this.Pb*this.Pd>this.cc* this.Hd?this.Hd/this.Pb:this.Pd/this.cc}this.pNa(v)};u.prototype.Msa=function(){this.gf()};u.prototype.dQa=function(v){this.Lj&&(this.Rda(this.Lj,1),this.kj&&this.kj.detach(),this.kj=this.Lj);this.Lj=this.xPa(v);this.Rda(this.Lj,0);this.wa.append(this.Lj);this.pg=this.pPa();this.J8={}};u.prototype.rSa=function(){return this.Wg?this.uRa(this.Mc*this.tf*this.Pb):this.NSa()};u.prototype.Axa=function(v){m(this.tn).each(function(w){w==v?w.Ix.Si()!=w.url&&w.Ix.load(w.url):w.Ix.Fh()||w.Ix.cancel()})};u.prototype.iSa= function(){return m(this.tn).reduce(function(v,w){v||(v=w);if(w.width>v.width||w.width==v.width&&!w.YK&&v.YK)v=w;return v},null)};u.prototype.NSa=function(){return m(this.tn).reduce(function(v,w){v||(v=w);if(w.width=v&&w.width=v&&x.widthw.width||!x.YK&&w.YK)w=x;return w},null)};u.prototype.xPa=function(v){v=k(v.Ix.xf(!0)); v.css({position:"absolute",cursor:this.Xh,"pointer-events":"none"});return v};u.prototype.pPa=function(){return new f("linear",[new n("alpha",0,1)],200)};u.prototype.e_=function(){d.requestFrame(function(v){this.$Z(v,"low")},this)};u.prototype.Jha=function(){return this.Pb*this.Mc*this.tf};u.prototype.Iha=function(){return this.cc*this.Mc*this.tf};u.prototype.uCa=function(){var v=this.Jha();return v>this.Hd?Math.max(this.Hd-v,Math.min(0,.5*this.Hd-v*this.jz)):.5*(this.Hd-v)};u.prototype.vCa=function(){var v= this.Iha();return v>this.Pd?Math.max(this.Pd-v,Math.min(0,.5*this.Pd-v*this.kz)):.5*(this.Pd-v)};u.prototype.$Z=function(v,w){w=w||"low";var x=this.Jha(),y=this.uCa(),z=this.Iha(),D=this.vCa();this.jz=(.5*this.Hd-y)/x;this.kz=(.5*this.Pd-D)/z;x={left:Math.round(y)+"px",top:Math.round(D)+"px",width:Math.round(x)+"px",height:Math.round(z)+"px",display:"block"};for(var C in this.UH[w])x[C]=this.UH[w][C];this.J8!=x&&(this.kj&&this.kj.css(x),this.Lj&&this.Lj.css(x),this.J8=x);this.k8();this.pg?(this.pg.Hb(v), this.Rda(this.Lj,this.pg.ib("alpha")),this.pg.$e()&&(this.pg=null,this.kj&&this.kj.detach(),this.kj=this.Lj,this.Lj=null),this.e_()):"low"==w&&this.zZa();!this.pg&&this.zZ&&(this.zZ=!1,this.trigger(new g(c.da)))};u.prototype.Rda=function(v,w){v.css({opacity:w,filter:"alpha(opacity="+Math.round(100*w)+")","-ms-filter":"alpha(opacity="+Math.round(100*w)+")"})};u.prototype.k8=function(){null!=this.aO&&(clearTimeout(this.aO),this.aO=null)};u.prototype.zZa=function(){var v=this;this.aO=setTimeout(function(){v.aO= null;v.$Z(50,"hight")},50)};u.prototype.K7=function(v){this.Mc!=v&&(this.Mc=v,this.L_a())};u.prototype.pNa=function(v){this.tf!=v&&(this.tf=v)};u.prototype.L_a=function(){this.trigger(new g(u.QU,{scale:this.Mc}))};u.QU="scaleChange";return u}); define("kM","require jquery.mod pu cH nB lO e S".split(" "),function(a){a("jquery.mod");var e=a("pu"),k=a("cH"),m=a("nB"),l=a("lO"),c=a("e"),h=a("S"),g=l.extend(c,function(){c.call(this);this.Me("ZoomImage");this.Gw=this.Dn=void 0;this.Qk=!1;this.hwa=void 0;this.lsa=this.Mc;this.uR=null;this.j=new m;this.j.bind(e.da,this.LVa,this);this.j.bind(m.QU,this.MVa,this);this.Vb().append(this.j.fd());this.bind(e.uc,this.Lc,this,!0);this.bind(e.jd,this.mj,this,!0);this.bind(e.Zc,this.lj,this,!0);this.bind(e.fb, this.$d,this,!0);this.bind(e.Xb,this.Tj,this,!0);this.bind(e.Eb,this.Uj,this,!0);this.bind(e.us,this.YD,this,!0);this.bind(e.ZG,this.vD,this,!0)});g.prototype.set=function(b,d){switch(b){case "scale":this.j.setScale(d);d=this.j.Ex();break;case "imageLeft":case "imageTop":case "imageWidth":case "imageHeight":return}c.prototype.set.call(this,b,d)};g.prototype.get=function(b,d){switch(b){case "scale":return this.j.Ex();case "imageLeft":return this.j.uCa();case "imageTop":return this.j.vCa();case "imageWidth":return this.j.Jha(); case "imageHeight":return this.j.Iha()}return c.prototype.get.call(this,b,d)};g.prototype.yb=function(){c.prototype.yb.call(this);this.h("image");this.h("scaleMode");this.h("customHeight");this.h("customWidth");this.h("imageCursor");this.h("imageLeft");this.h("imageTop");this.h("imageWidth");this.h("imageHeight")};g.prototype.ab=function(){this.L("scaleMode")&&(this.j.IB(this.B("scaleMode")),this.T("scaleMode"));this.L("image")&&(this.j.k9a(this.B("image")),this.T("image"),this.lsa=this.Mc);if(this.L("customHeight")|| this.L("customWidth"))this.T("customHeight"),this.T("customWidth"),this.Lc();this.L("imageCursor")&&(this.T("imageCursor"),this.j.b4(this.kb.a9.kCa(this.get("imageCursor"))));c.prototype.ab.call(this)};g.prototype.Lc=function(){var b=this.Ya(),d=this.Cb(),f=this.get("customWidth","100%"),n=h.vp(f);f=void 0!==n?b*n/100:f;n=this.get("customHeight","100%");var q=h.vp(n);this.j.S8a(f,void 0!==q?d*q/100:n);this.j.qG(b,d)};g.prototype.mj=function(){this.j.ob(!0)};g.prototype.lj=function(){this.j.ob(!1)}; g.prototype.$d=function(b){this.Dn=b.x;this.Gw=b.y;this.Qk=!0;this.hwa=this.j.PDa(b)};g.prototype.Tj=function(b){this.Qk&&(this.Sfa(),this.j.move(-(b.x-this.Dn),-(b.y-this.Gw)),this.Dn=b.x,this.Gw=b.y)};g.prototype.Uj=function(b){this.Qk=!1;this.hwa||this.j.PDa(b)||this.trigger(new k(g.jKa))};g.prototype.YD=function(b){this.Sfa();this.j.setScale((1+b.delta/20)*this.j.Ex())};g.prototype.vD=function(b){this.Sfa();this.j.setScale(b.scale/this.lsa)};g.prototype.LVa=function(){this.trigger(new k(e.da))}; g.prototype.MVa=function(){c.prototype.set.call(this,"scale",this.j.Ex());this.trigger(new k(g.QU))};g.prototype.Sfa=function(){this.uR?(clearTimeout(this.uR),this.uR=null):this.trigger(new k(g.Yi));this.uR=setTimeout(function(){this.uR=null;this.trigger(new k(g.Xi))}.bind(this),300)};g.jKa="backgroundClick";g.QU="scaleChange";g.Yi="userInteractionStart";g.Xi="userInteractionEnd";return g});define("ow",["require","kM","oh"],function(a){var e=a("kM");return a("oh").define("ZoomImage",e,function(){e.call(this)})}); define("jE","require oh jO ix op eC eo fc oT kf jQ gz gi ip l jN kB mq pc hF iG lx hi fZ dA bF ko ol ki li nf fR r jK ei en pj nu de kn nP bb iL mx hB O cV v md gB Y kH bB bq nO oL jB fs mB ma jG bQ cQ oU jU nK lA R qb gt dv ez jt cb bj gq fy hk Z jb bM pO qa ft kq mQ iY q dU kZ mR ja eq fn pY hJ lq fl mV bT lW iX bo pM gC oZ cJ cL lS pt jY gW kF hq mc nY il kQ lf pP eL jf nV fb iJ T pv ea gP bL jo fL bc pD fg cW nh mh fx hb fd cs iP ox mE fN pV pa lZ oD hl fz gR dy nv cx ir nt kC hQ cd iT dL bU ky ka pi gg hv cn iq lI ls eH hW dH bD cw et ow".split(" "), function(a){a("oh");a("jO");a("ix");a("op");a("eC");a("eo");a("fc");a("oT");a("kf");a("jQ");a("gz");a("gi");a("ip");a("l");a("jN");a("kB");a("mq");a("pc");a("hF");a("iG");a("lx");a("hi");a("fZ");a("dA");a("bF");a("ko");a("ol");a("ki");a("li");a("nf");a("fR");a("r");a("jK");a("ei");a("en");a("pj");a("nu");a("de");a("kn");a("nP");a("bb");a("iL");a("mx");a("hB");a("O");a("cV");a("v");a("md");a("gB");a("Y");a("kH");a("bB");a("bq");a("nO");a("oL");a("jB");a("fs");a("mB");a("ma");a("jG");a("bQ");a("cQ"); a("oU");a("jU");a("nK");a("lA");a("R");a("qb");a("gt");a("dv");a("ez");a("jt");a("cb");a("bj");a("gq");a("fy");a("hk");a("Z");a("jb");a("bM");a("pO");a("qa");a("ft");a("kq");a("mQ");a("iY");a("q");a("dU");a("kZ");a("mR");a("ja");a("eq");a("fn");a("pY");a("hJ");a("lq");a("fl");a("mV");a("bT");a("lW");a("iX");a("bo");a("pM");a("gC");a("oZ");a("cJ");a("cL");a("lS");a("pt");a("jY");a("gW");a("kF");a("hq");a("mc");a("nY");a("il");a("kQ");a("lf");a("pP");a("eL");a("jf");a("nV");a("fb");a("iJ");a("T");a("pv"); a("ea");a("gP");a("bL");a("jo");a("fL");a("bc");a("pD");a("fg");a("cW");a("nh");a("mh");a("fx");a("hb");a("fd");a("cs");a("iP");a("ox");a("mE");a("fN");a("pV");a("pa");a("lZ");a("oD");a("hl");a("fz");a("gR");a("dy");a("nv");a("cx");a("ir");a("nt");a("kC");a("hQ");a("cd");a("iT");a("dL");a("bU");a("ky");a("ka");a("pi");a("gg");a("hv");a("cn");a("iq");a("lI");a("ls");a("eH");a("hW");a("dH");a("bD");a("cw");a("et");a("ow");return!0}); define("gJ","require es jquery.mod lO oh cc jE mO".split(" "),function(a){function e(p,r){this.type=p;this.stack=r}function k(){}var m=a("es"),l=a("jquery.mod"),c=a("lO"),h=a("oh"),g=a("cc");a("jE");a("mO");k.prototype.u7a=function(p,r,t,u){this.K9=[];this.wA=this.wJ(p);this.ID=void 0;this.wA.Vt.yCa()?(this.Ufa=g.validate(p),this.ID=this.Wqa(this.wA,b.TYPE),this.APa(this.ID,this.wA,r,t,u),this.kNa(this.wA),this.iNa(this.wA,this.ID),this.lNa(this.ID,this.wA),this.ENa(this.ID,this.wA)):this.io("Invalid root class", []);return 0==this.K9.length};k.prototype.Db=function(){return this.wA.instance};k.prototype.wJ=function(p,r){r=r||[];return m(p).isArray()?this.PWa(p,r):l.isPlainObject(p)&&p["class"]?this.SWa(p,r):l.isPlainObject(p)?this.QWa(p,r):m(p).isFunction()?this.RWa(p,r):this.TWa(p,r)};k.prototype.PWa=function(p,r){for(var t=[],u=0;u> ")+": "+p)};e.prototype.nb=function(){return[]};e.prototype.ju=function(){};var b=c.extend(e,function(p,r,t,u,v,w){e.call(this,b.TYPE,p);this.Vt=r;this.id=t;this.attributes=u;this.AF=v;this.scripts=w;this.instance=null});b.prototype.nb=function(){var p=this.Vt.JCa(),r=[],t=m(this.attributes).clone();if(p)for(var u=0;uw||(u={},this.qW.splice(w,1),v.hla(),v.dispose&&v.dispose())};e.prototype.Ira=function(){for(var v=this.Lk.K9,w=["Errors parsing script file:"], x=0;x>8&255]+_lut[d0>>16&255]+_lut[d0>>24&255]+"-"+_lut[d1&255]+_lut[d1>>8&255]+"-"+_lut[d1>>16&15|64]+_lut[d1>>24&255]+"-"+_lut[d2&63|128]+_lut[d2>>8&255]+"-"+_lut[d2>>16&255]+_lut[d2>>24&255]+_lut[d3&255]+_lut[d3>>8&255]+_lut[d3>>16&255]+_lut[d3>>24&255];return uuid.toLowerCase()}function clamp(value,min,max){return Math.max(min,Math.min(max,value))}function euclideanModulo(n,m){return(n%m+m)%m}function mapLinear(x,a1,a2,b1,b2){return b1+(x-a1)*(b2-b1)/(a2-a1)}function inverseLerp(x,y,value){if(x!==y){return(value-x)/(y-x)}else{return 0}}function lerp(x,y,t){return(1-t)*x+t*y}function damp(x,y,lambda,dt){return lerp(x,y,1-Math.exp(-lambda*dt))}function pingpong(x,length=1){return length-Math.abs(euclideanModulo(x,length*2)-length)}function smoothstep(x,min,max){if(x<=min)return 0;if(x>=max)return 1;x=(x-min)/(max-min);return x*x*(3-2*x)}function smootherstep(x,min,max){if(x<=min)return 0;if(x>=max)return 1;x=(x-min)/(max-min);return x*x*x*(x*(x*6-15)+10)}function randInt(low,high){return low+Math.floor(Math.random()*(high-low+1))}function randFloat(low,high){return low+Math.random()*(high-low)}function randFloatSpread(range){return range*(0.5-Math.random())}function seededRandom(s){if(s!==undefined)_seed=s;let t=_seed+=1831565813;t=Math.imul(t^t>>>15,t|1);t^=t+Math.imul(t^t>>>7,t|61);return((t^t>>>14)>>>0)/4294967296}function degToRad(degrees){return degrees*DEG2RAD}function radToDeg(radians){return radians*RAD2DEG}function isPowerOfTwo(value){return(value&value-1)===0&&value!==0}function ceilPowerOfTwo(value){return Math.pow(2,Math.ceil(Math.log(value)/Math.LN2))}function floorPowerOfTwo(value){return Math.pow(2,Math.floor(Math.log(value)/Math.LN2))}function setQuaternionFromProperEuler(q,a,b,c,order){const cos=Math.cos;const sin=Math.sin;const c2=cos(b/2);const s2=sin(b/2);const c13=cos((a+c)/2);const s13=sin((a+c)/2);const c1_3=cos((a-c)/2);const s1_3=sin((a-c)/2);const c3_1=cos((c-a)/2);const s3_1=sin((c-a)/2);switch(order){case"XYX":q.set(c2*s13,s2*c1_3,s2*s1_3,c2*c13);break;case"YZY":q.set(s2*s1_3,c2*s13,s2*c1_3,c2*c13);break;case"ZXZ":q.set(s2*c1_3,s2*s1_3,c2*s13,c2*c13);break;case"XZX":q.set(c2*s13,s2*s3_1,s2*c3_1,c2*c13);break;case"YXY":q.set(s2*c3_1,c2*s13,s2*s3_1,c2*c13);break;case"ZYZ":q.set(s2*s3_1,s2*c3_1,c2*s13,c2*c13);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+order);}}function denormalize(value,array){switch(array.constructor){case Float32Array:return value;case Uint32Array:return value/4294967295;case Uint16Array:return value/65535;case Uint8Array:return value/255;case Int32Array:return Math.max(value/2147483647,-1);case Int16Array:return Math.max(value/32767,-1);case Int8Array:return Math.max(value/127,-1);default:throw new Error("Invalid component type.");}}function normalize(value,array){switch(array.constructor){case Float32Array:return value;case Uint32Array:return Math.round(value*4294967295);case Uint16Array:return Math.round(value*65535);case Uint8Array:return Math.round(value*255);case Int32Array:return Math.round(value*2147483647);case Int16Array:return Math.round(value*32767);case Int8Array:return Math.round(value*127);default:throw new Error("Invalid component type.");}}const MathUtils={DEG2RAD:DEG2RAD,RAD2DEG:RAD2DEG,generateUUID:generateUUID,clamp:clamp,euclideanModulo:euclideanModulo,mapLinear:mapLinear,inverseLerp:inverseLerp,lerp:lerp,damp:damp,pingpong:pingpong,smoothstep:smoothstep,smootherstep:smootherstep,randInt:randInt,randFloat:randFloat,randFloatSpread:randFloatSpread,seededRandom:seededRandom,degToRad:degToRad,radToDeg:radToDeg,isPowerOfTwo:isPowerOfTwo,ceilPowerOfTwo:ceilPowerOfTwo,floorPowerOfTwo:floorPowerOfTwo,setQuaternionFromProperEuler:setQuaternionFromProperEuler,normalize:normalize,denormalize:denormalize};class Vector2{constructor(x=0,y=0){Vector2.prototype.isVector2=true;this.x=x;this.y=y}get width(){return this.x}set width(value){this.x=value}get height(){return this.y}set height(value){this.y=value}set(x,y){this.x=x;this.y=y;return this}setScalar(scalar){this.x=scalar;this.y=scalar;return this}setX(x){this.x=x;return this}setY(y){this.y=y;return this}setComponent(index,value){switch(index){case 0:this.x=value;break;case 1:this.y=value;break;default:throw new Error("index is out of range: "+index);}return this}getComponent(index){switch(index){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+index);}}clone(){return new this.constructor(this.x,this.y)}copy(v){this.x=v.x;this.y=v.y;return this}add(v){this.x+=v.x;this.y+=v.y;return this}addScalar(s){this.x+=s;this.y+=s;return this}addVectors(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this}addScaledVector(v,s){this.x+=v.x*s;this.y+=v.y*s;return this}sub(v){this.x-=v.x;this.y-=v.y;return this}subScalar(s){this.x-=s;this.y-=s;return this}subVectors(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this}multiply(v){this.x*=v.x;this.y*=v.y;return this}multiplyScalar(scalar){this.x*=scalar;this.y*=scalar;return this}divide(v){this.x/=v.x;this.y/=v.y;return this}divideScalar(scalar){return this.multiplyScalar(1/scalar)}applyMatrix3(m){const x=this.x,y=this.y;const e=m.elements;this.x=e[0]*x+e[3]*y+e[6];this.y=e[1]*x+e[4]*y+e[7];return this}min(v){this.x=Math.min(this.x,v.x);this.y=Math.min(this.y,v.y);return this}max(v){this.x=Math.max(this.x,v.x);this.y=Math.max(this.y,v.y);return this}clamp(min,max){this.x=Math.max(min.x,Math.min(max.x,this.x));this.y=Math.max(min.y,Math.min(max.y,this.y));return this}clampScalar(minVal,maxVal){this.x=Math.max(minVal,Math.min(maxVal,this.x));this.y=Math.max(minVal,Math.min(maxVal,this.y));return this}clampLength(min,max){const length=this.length();return this.divideScalar(length||1).multiplyScalar(Math.max(min,Math.min(max,length)))}floor(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this}ceil(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this}round(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this}roundToZero(){this.x=Math.trunc(this.x);this.y=Math.trunc(this.y);return this}negate(){this.x=-this.x;this.y=-this.y;return this}dot(v){return this.x*v.x+this.y*v.y}cross(v){return this.x*v.y-this.y*v.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){const angle=Math.atan2(-this.y,-this.x)+Math.PI;return angle}angleTo(v){const denominator=Math.sqrt(this.lengthSq()*v.lengthSq());if(denominator===0)return Math.PI/2;const theta=this.dot(v)/denominator;return Math.acos(clamp(theta,-1,1))}distanceTo(v){return Math.sqrt(this.distanceToSquared(v))}distanceToSquared(v){const dx=this.x-v.x,dy=this.y-v.y;return dx*dx+dy*dy}manhattanDistanceTo(v){return Math.abs(this.x-v.x)+Math.abs(this.y-v.y)}setLength(length){return this.normalize().multiplyScalar(length)}lerp(v,alpha){this.x+=(v.x-this.x)*alpha;this.y+=(v.y-this.y)*alpha;return this}lerpVectors(v1,v2,alpha){this.x=v1.x+(v2.x-v1.x)*alpha;this.y=v1.y+(v2.y-v1.y)*alpha;return this}equals(v){return v.x===this.x&&v.y===this.y}fromArray(array,offset=0){this.x=array[offset];this.y=array[offset+1];return this}toArray(array=[],offset=0){array[offset]=this.x;array[offset+1]=this.y;return array}fromBufferAttribute(attribute,index){this.x=attribute.getX(index);this.y=attribute.getY(index);return this}rotateAround(center,angle){const c=Math.cos(angle),s=Math.sin(angle);const x=this.x-center.x;const y=this.y-center.y;this.x=x*c-y*s+center.x;this.y=x*s+y*c+center.y;return this}random(){this.x=Math.random();this.y=Math.random();return this}*[Symbol.iterator](){yield this.x;yield this.y}}class Matrix3{constructor(n11,n12,n13,n21,n22,n23,n31,n32,n33){Matrix3.prototype.isMatrix3=true;this.elements=[1,0,0,0,1,0,0,0,1];if(n11!==undefined){this.set(n11,n12,n13,n21,n22,n23,n31,n32,n33)}}set(n11,n12,n13,n21,n22,n23,n31,n32,n33){const te=this.elements;te[0]=n11;te[1]=n21;te[2]=n31;te[3]=n12;te[4]=n22;te[5]=n32;te[6]=n13;te[7]=n23;te[8]=n33;return this}identity(){this.set(1,0,0,0,1,0,0,0,1);return this}copy(m){const te=this.elements;const me=m.elements;te[0]=me[0];te[1]=me[1];te[2]=me[2];te[3]=me[3];te[4]=me[4];te[5]=me[5];te[6]=me[6];te[7]=me[7];te[8]=me[8];return this}extractBasis(xAxis,yAxis,zAxis){xAxis.setFromMatrix3Column(this,0);yAxis.setFromMatrix3Column(this,1);zAxis.setFromMatrix3Column(this,2);return this}setFromMatrix4(m){const me=m.elements;this.set(me[0],me[4],me[8],me[1],me[5],me[9],me[2],me[6],me[10]);return this}multiply(m){return this.multiplyMatrices(this,m)}premultiply(m){return this.multiplyMatrices(m,this)}multiplyMatrices(a,b){const ae=a.elements;const be=b.elements;const te=this.elements;const a11=ae[0],a12=ae[3],a13=ae[6];const a21=ae[1],a22=ae[4],a23=ae[7];const a31=ae[2],a32=ae[5],a33=ae[8];const b11=be[0],b12=be[3],b13=be[6];const b21=be[1],b22=be[4],b23=be[7];const b31=be[2],b32=be[5],b33=be[8];te[0]=a11*b11+a12*b21+a13*b31;te[3]=a11*b12+a12*b22+a13*b32;te[6]=a11*b13+a12*b23+a13*b33;te[1]=a21*b11+a22*b21+a23*b31;te[4]=a21*b12+a22*b22+a23*b32;te[7]=a21*b13+a22*b23+a23*b33;te[2]=a31*b11+a32*b21+a33*b31;te[5]=a31*b12+a32*b22+a33*b32;te[8]=a31*b13+a32*b23+a33*b33;return this}multiplyScalar(s){const te=this.elements;te[0]*=s;te[3]*=s;te[6]*=s;te[1]*=s;te[4]*=s;te[7]*=s;te[2]*=s;te[5]*=s;te[8]*=s;return this}determinant(){const te=this.elements;const a=te[0],b=te[1],c=te[2],d=te[3],e=te[4],f=te[5],g=te[6],h=te[7],i=te[8];return a*e*i-a*f*h-b*d*i+b*f*g+c*d*h-c*e*g}invert(){const te=this.elements,n11=te[0],n21=te[1],n31=te[2],n12=te[3],n22=te[4],n32=te[5],n13=te[6],n23=te[7],n33=te[8],t11=n33*n22-n32*n23,t12=n32*n13-n33*n12,t13=n23*n12-n22*n13,det=n11*t11+n21*t12+n31*t13;if(det===0)return this.set(0,0,0,0,0,0,0,0,0);const detInv=1/det;te[0]=t11*detInv;te[1]=(n31*n23-n33*n21)*detInv;te[2]=(n32*n21-n31*n22)*detInv;te[3]=t12*detInv;te[4]=(n33*n11-n31*n13)*detInv;te[5]=(n31*n12-n32*n11)*detInv;te[6]=t13*detInv;te[7]=(n21*n13-n23*n11)*detInv;te[8]=(n22*n11-n21*n12)*detInv;return this}transpose(){let tmp;const m=this.elements;tmp=m[1];m[1]=m[3];m[3]=tmp;tmp=m[2];m[2]=m[6];m[6]=tmp;tmp=m[5];m[5]=m[7];m[7]=tmp;return this}getNormalMatrix(matrix4){return this.setFromMatrix4(matrix4).invert().transpose()}transposeIntoArray(r){const m=this.elements;r[0]=m[0];r[1]=m[3];r[2]=m[6];r[3]=m[1];r[4]=m[4];r[5]=m[7];r[6]=m[2];r[7]=m[5];r[8]=m[8];return this}setUvTransform(tx,ty,sx,sy,rotation,cx,cy){const c=Math.cos(rotation);const s=Math.sin(rotation);this.set(sx*c,sx*s,-sx*(c*cx+s*cy)+cx+tx,-sy*s,sy*c,-sy*(-s*cx+c*cy)+cy+ty,0,0,1);return this}scale(sx,sy){this.premultiply(_m3.makeScale(sx,sy));return this}rotate(theta){this.premultiply(_m3.makeRotation(-theta));return this}translate(tx,ty){this.premultiply(_m3.makeTranslation(tx,ty));return this}makeTranslation(x,y){if(x.isVector2){this.set(1,0,x.x,0,1,x.y,0,0,1)}else{this.set(1,0,x,0,1,y,0,0,1)}return this}makeRotation(theta){const c=Math.cos(theta);const s=Math.sin(theta);this.set(c,-s,0,s,c,0,0,0,1);return this}makeScale(x,y){this.set(x,0,0,0,y,0,0,0,1);return this}equals(matrix){const te=this.elements;const me=matrix.elements;for(let i=0;i<9;i++){if(te[i]!==me[i])return false}return true}fromArray(array,offset=0){for(let i=0;i<9;i++){this.elements[i]=array[i+offset]}return this}toArray(array=[],offset=0){const te=this.elements;array[offset]=te[0];array[offset+1]=te[1];array[offset+2]=te[2];array[offset+3]=te[3];array[offset+4]=te[4];array[offset+5]=te[5];array[offset+6]=te[6];array[offset+7]=te[7];array[offset+8]=te[8];return array}clone(){return new this.constructor().fromArray(this.elements)}}const _m3=new Matrix3;function arrayNeedsUint32(array){for(let i=array.length-1;i>=0;--i){if(array[i]>=65535)return true}return false}const TYPED_ARRAYS={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function getTypedArray(type,buffer){return new TYPED_ARRAYS[type](buffer)}function createElementNS(name){return document.createElementNS("http://www.w3.org/1999/xhtml",name)}function createCanvasElement(){const canvas=createElementNS("canvas");canvas.style.display="block";return canvas}const _cache={};function warnOnce(message){if(message in _cache)return;_cache[message]=true;console.warn(message)}const LINEAR_SRGB_TO_LINEAR_DISPLAY_P3=new Matrix3().set(0.8224621,0.177538,0,0.0331941,0.9668058,0,0.0170827,0.0723974,0.9105199);const LINEAR_DISPLAY_P3_TO_LINEAR_SRGB=new Matrix3().set(1.2249401,-0.2249404,0,-0.0420569,1.0420571,0,-0.0196376,-0.0786361,1.0982735);const COLOR_SPACES={[LinearSRGBColorSpace]:{transfer:LinearTransfer,primaries:Rec709Primaries,toReference:color=>color,fromReference:color=>color},[SRGBColorSpace]:{transfer:SRGBTransfer,primaries:Rec709Primaries,toReference:color=>color.convertSRGBToLinear(),fromReference:color=>color.convertLinearToSRGB()},[LinearDisplayP3ColorSpace]:{transfer:LinearTransfer,primaries:P3Primaries,toReference:color=>color.applyMatrix3(LINEAR_DISPLAY_P3_TO_LINEAR_SRGB),fromReference:color=>color.applyMatrix3(LINEAR_SRGB_TO_LINEAR_DISPLAY_P3)},[DisplayP3ColorSpace]:{transfer:SRGBTransfer,primaries:P3Primaries,toReference:color=>color.convertSRGBToLinear().applyMatrix3(LINEAR_DISPLAY_P3_TO_LINEAR_SRGB),fromReference:color=>color.applyMatrix3(LINEAR_SRGB_TO_LINEAR_DISPLAY_P3).convertLinearToSRGB()}};const SUPPORTED_WORKING_COLOR_SPACES=new Set([LinearSRGBColorSpace,LinearDisplayP3ColorSpace]);const ColorManagement={enabled:true,_workingColorSpace:LinearSRGBColorSpace,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(colorSpace){if(!SUPPORTED_WORKING_COLOR_SPACES.has(colorSpace)){throw new Error(`Unsupported working color space, "${colorSpace}".`)}this._workingColorSpace=colorSpace},convert:function(color,sourceColorSpace,targetColorSpace){if(this.enabled===false||sourceColorSpace===targetColorSpace||!sourceColorSpace||!targetColorSpace){return color}const sourceToReference=COLOR_SPACES[sourceColorSpace].toReference;const targetFromReference=COLOR_SPACES[targetColorSpace].fromReference;return targetFromReference(sourceToReference(color))},fromWorkingColorSpace:function(color,targetColorSpace){return this.convert(color,this._workingColorSpace,targetColorSpace)},toWorkingColorSpace:function(color,sourceColorSpace){return this.convert(color,sourceColorSpace,this._workingColorSpace)},getPrimaries:function(colorSpace){return COLOR_SPACES[colorSpace].primaries},getTransfer:function(colorSpace){if(colorSpace===NoColorSpace)return LinearTransfer;return COLOR_SPACES[colorSpace].transfer}};function SRGBToLinear(c){return c<0.04045?c*0.0773993808:Math.pow(c*0.9478672986+0.0521327014,2.4)}function LinearToSRGB(c){return c<0.0031308?c*12.92:1.055*Math.pow(c,0.41666)-0.055}let _canvas;class ImageUtils{static getDataURL(image){if(/^data:/i.test(image.src)){return image.src}if(typeof HTMLCanvasElement==="undefined"){return image.src}let canvas;if(image instanceof HTMLCanvasElement){canvas=image}else{if(_canvas===undefined)_canvas=createElementNS("canvas");_canvas.width=image.width;_canvas.height=image.height;const context=_canvas.getContext("2d");if(image instanceof ImageData){context.putImageData(image,0,0)}else{context.drawImage(image,0,0,image.width,image.height)}canvas=_canvas}if(canvas.width>2048||canvas.height>2048){console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",image);return canvas.toDataURL("image/jpeg",0.6)}else{return canvas.toDataURL("image/png")}}static sRGBToLinear(image){if(typeof HTMLImageElement!=="undefined"&&image instanceof HTMLImageElement||typeof HTMLCanvasElement!=="undefined"&&image instanceof HTMLCanvasElement||typeof ImageBitmap!=="undefined"&&image instanceof ImageBitmap){const canvas=createElementNS("canvas");canvas.width=image.width;canvas.height=image.height;const context=canvas.getContext("2d");context.drawImage(image,0,0,image.width,image.height);const imageData=context.getImageData(0,0,image.width,image.height);const data=imageData.data;for(let i=0;i0)output.userData=this.userData;if(!isRootObject){meta.textures[this.uuid]=output}return output}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(uv){if(this.mapping!==UVMapping)return uv;uv.applyMatrix3(this.matrix);if(uv.x<0||uv.x>1){switch(this.wrapS){case RepeatWrapping:uv.x=uv.x-Math.floor(uv.x);break;case ClampToEdgeWrapping:uv.x=uv.x<0?0:1;break;case MirroredRepeatWrapping:if(Math.abs(Math.floor(uv.x)%2)===1){uv.x=Math.ceil(uv.x)-uv.x}else{uv.x=uv.x-Math.floor(uv.x)}break;}}if(uv.y<0||uv.y>1){switch(this.wrapT){case RepeatWrapping:uv.y=uv.y-Math.floor(uv.y);break;case ClampToEdgeWrapping:uv.y=uv.y<0?0:1;break;case MirroredRepeatWrapping:if(Math.abs(Math.floor(uv.y)%2)===1){uv.y=Math.ceil(uv.y)-uv.y}else{uv.y=uv.y-Math.floor(uv.y)}break;}}if(this.flipY){uv.y=1-uv.y}return uv}set needsUpdate(value){if(value===true){this.version++;this.source.needsUpdate=true}}set needsPMREMUpdate(value){if(value===true){this.pmremVersion++}}}Texture.DEFAULT_IMAGE=null;Texture.DEFAULT_MAPPING=UVMapping;Texture.DEFAULT_ANISOTROPY=1;class Vector4{constructor(x=0,y=0,z=0,w=1){Vector4.prototype.isVector4=true;this.x=x;this.y=y;this.z=z;this.w=w}get width(){return this.z}set width(value){this.z=value}get height(){return this.w}set height(value){this.w=value}set(x,y,z,w){this.x=x;this.y=y;this.z=z;this.w=w;return this}setScalar(scalar){this.x=scalar;this.y=scalar;this.z=scalar;this.w=scalar;return this}setX(x){this.x=x;return this}setY(y){this.y=y;return this}setZ(z){this.z=z;return this}setW(w){this.w=w;return this}setComponent(index,value){switch(index){case 0:this.x=value;break;case 1:this.y=value;break;case 2:this.z=value;break;case 3:this.w=value;break;default:throw new Error("index is out of range: "+index);}return this}getComponent(index){switch(index){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+index);}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(v){this.x=v.x;this.y=v.y;this.z=v.z;this.w=v.w!==undefined?v.w:1;return this}add(v){this.x+=v.x;this.y+=v.y;this.z+=v.z;this.w+=v.w;return this}addScalar(s){this.x+=s;this.y+=s;this.z+=s;this.w+=s;return this}addVectors(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this}addScaledVector(v,s){this.x+=v.x*s;this.y+=v.y*s;this.z+=v.z*s;this.w+=v.w*s;return this}sub(v){this.x-=v.x;this.y-=v.y;this.z-=v.z;this.w-=v.w;return this}subScalar(s){this.x-=s;this.y-=s;this.z-=s;this.w-=s;return this}subVectors(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this}multiply(v){this.x*=v.x;this.y*=v.y;this.z*=v.z;this.w*=v.w;return this}multiplyScalar(scalar){this.x*=scalar;this.y*=scalar;this.z*=scalar;this.w*=scalar;return this}applyMatrix4(m){const x=this.x,y=this.y,z=this.z,w=this.w;const e=m.elements;this.x=e[0]*x+e[4]*y+e[8]*z+e[12]*w;this.y=e[1]*x+e[5]*y+e[9]*z+e[13]*w;this.z=e[2]*x+e[6]*y+e[10]*z+e[14]*w;this.w=e[3]*x+e[7]*y+e[11]*z+e[15]*w;return this}divideScalar(scalar){return this.multiplyScalar(1/scalar)}setAxisAngleFromQuaternion(q){this.w=2*Math.acos(q.w);const s=Math.sqrt(1-q.w*q.w);if(s<0.0001){this.x=1;this.y=0;this.z=0}else{this.x=q.x/s;this.y=q.y/s;this.z=q.z/s}return this}setAxisAngleFromRotationMatrix(m){let angle,x,y,z;const epsilon=0.01,epsilon2=0.1,te=m.elements,m11=te[0],m12=te[4],m13=te[8],m21=te[1],m22=te[5],m23=te[9],m31=te[2],m32=te[6],m33=te[10];if(Math.abs(m12-m21)yy&&xx>zz){if(xxzz){if(yy=0?1:-1,sqrSin=1-cos*cos;if(sqrSin>Number.EPSILON){const sin=Math.sqrt(sqrSin),len=Math.atan2(sin,cos*dir);s=Math.sin(s*len)/sin;t=Math.sin(t*len)/sin}const tDir=t*dir;x0=x0*s+x1*tDir;y0=y0*s+y1*tDir;z0=z0*s+z1*tDir;w0=w0*s+w1*tDir;if(s===1-t){const f=1/Math.sqrt(x0*x0+y0*y0+z0*z0+w0*w0);x0*=f;y0*=f;z0*=f;w0*=f}}dst[dstOffset]=x0;dst[dstOffset+1]=y0;dst[dstOffset+2]=z0;dst[dstOffset+3]=w0}static multiplyQuaternionsFlat(dst,dstOffset,src0,srcOffset0,src1,srcOffset1){const x0=src0[srcOffset0];const y0=src0[srcOffset0+1];const z0=src0[srcOffset0+2];const w0=src0[srcOffset0+3];const x1=src1[srcOffset1];const y1=src1[srcOffset1+1];const z1=src1[srcOffset1+2];const w1=src1[srcOffset1+3];dst[dstOffset]=x0*w1+w0*x1+y0*z1-z0*y1;dst[dstOffset+1]=y0*w1+w0*y1+z0*x1-x0*z1;dst[dstOffset+2]=z0*w1+w0*z1+x0*y1-y0*x1;dst[dstOffset+3]=w0*w1-x0*x1-y0*y1-z0*z1;return dst}get x(){return this._x}set x(value){this._x=value;this._onChangeCallback()}get y(){return this._y}set y(value){this._y=value;this._onChangeCallback()}get z(){return this._z}set z(value){this._z=value;this._onChangeCallback()}get w(){return this._w}set w(value){this._w=value;this._onChangeCallback()}set(x,y,z,w){this._x=x;this._y=y;this._z=z;this._w=w;this._onChangeCallback();return this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(quaternion){this._x=quaternion.x;this._y=quaternion.y;this._z=quaternion.z;this._w=quaternion.w;this._onChangeCallback();return this}setFromEuler(euler,update=true){const x=euler._x,y=euler._y,z=euler._z,order=euler._order;const cos=Math.cos;const sin=Math.sin;const c1=cos(x/2);const c2=cos(y/2);const c3=cos(z/2);const s1=sin(x/2);const s2=sin(y/2);const s3=sin(z/2);switch(order){case"XYZ":this._x=s1*c2*c3+c1*s2*s3;this._y=c1*s2*c3-s1*c2*s3;this._z=c1*c2*s3+s1*s2*c3;this._w=c1*c2*c3-s1*s2*s3;break;case"YXZ":this._x=s1*c2*c3+c1*s2*s3;this._y=c1*s2*c3-s1*c2*s3;this._z=c1*c2*s3-s1*s2*c3;this._w=c1*c2*c3+s1*s2*s3;break;case"ZXY":this._x=s1*c2*c3-c1*s2*s3;this._y=c1*s2*c3+s1*c2*s3;this._z=c1*c2*s3+s1*s2*c3;this._w=c1*c2*c3-s1*s2*s3;break;case"ZYX":this._x=s1*c2*c3-c1*s2*s3;this._y=c1*s2*c3+s1*c2*s3;this._z=c1*c2*s3-s1*s2*c3;this._w=c1*c2*c3+s1*s2*s3;break;case"YZX":this._x=s1*c2*c3+c1*s2*s3;this._y=c1*s2*c3+s1*c2*s3;this._z=c1*c2*s3-s1*s2*c3;this._w=c1*c2*c3-s1*s2*s3;break;case"XZY":this._x=s1*c2*c3-c1*s2*s3;this._y=c1*s2*c3-s1*c2*s3;this._z=c1*c2*s3+s1*s2*c3;this._w=c1*c2*c3+s1*s2*s3;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+order);}if(update===true)this._onChangeCallback();return this}setFromAxisAngle(axis,angle){const halfAngle=angle/2,s=Math.sin(halfAngle);this._x=axis.x*s;this._y=axis.y*s;this._z=axis.z*s;this._w=Math.cos(halfAngle);this._onChangeCallback();return this}setFromRotationMatrix(m){const te=m.elements,m11=te[0],m12=te[4],m13=te[8],m21=te[1],m22=te[5],m23=te[9],m31=te[2],m32=te[6],m33=te[10],trace=m11+m22+m33;if(trace>0){const s=0.5/Math.sqrt(trace+1);this._w=0.25/s;this._x=(m32-m23)*s;this._y=(m13-m31)*s;this._z=(m21-m12)*s}else if(m11>m22&&m11>m33){const s=2*Math.sqrt(1+m11-m22-m33);this._w=(m32-m23)/s;this._x=0.25*s;this._y=(m12+m21)/s;this._z=(m13+m31)/s}else if(m22>m33){const s=2*Math.sqrt(1+m22-m11-m33);this._w=(m13-m31)/s;this._x=(m12+m21)/s;this._y=0.25*s;this._z=(m23+m32)/s}else{const s=2*Math.sqrt(1+m33-m11-m22);this._w=(m21-m12)/s;this._x=(m13+m31)/s;this._y=(m23+m32)/s;this._z=0.25*s}this._onChangeCallback();return this}setFromUnitVectors(vFrom,vTo){let r=vFrom.dot(vTo)+1;if(rMath.abs(vFrom.z)){this._x=-vFrom.y;this._y=vFrom.x;this._z=0;this._w=r}else{this._x=0;this._y=-vFrom.z;this._z=vFrom.y;this._w=r}}else{this._x=vFrom.y*vTo.z-vFrom.z*vTo.y;this._y=vFrom.z*vTo.x-vFrom.x*vTo.z;this._z=vFrom.x*vTo.y-vFrom.y*vTo.x;this._w=r}return this.normalize()}angleTo(q){return 2*Math.acos(Math.abs(clamp(this.dot(q),-1,1)))}rotateTowards(q,step){const angle=this.angleTo(q);if(angle===0)return this;const t=Math.min(1,step/angle);this.slerp(q,t);return this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){this._x*=-1;this._y*=-1;this._z*=-1;this._onChangeCallback();return this}dot(v){return this._x*v._x+this._y*v._y+this._z*v._z+this._w*v._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let l=this.length();if(l===0){this._x=0;this._y=0;this._z=0;this._w=1}else{l=1/l;this._x=this._x*l;this._y=this._y*l;this._z=this._z*l;this._w=this._w*l}this._onChangeCallback();return this}multiply(q){return this.multiplyQuaternions(this,q)}premultiply(q){return this.multiplyQuaternions(q,this)}multiplyQuaternions(a,b){const qax=a._x,qay=a._y,qaz=a._z,qaw=a._w;const qbx=b._x,qby=b._y,qbz=b._z,qbw=b._w;this._x=qax*qbw+qaw*qbx+qay*qbz-qaz*qby;this._y=qay*qbw+qaw*qby+qaz*qbx-qax*qbz;this._z=qaz*qbw+qaw*qbz+qax*qby-qay*qbx;this._w=qaw*qbw-qax*qbx-qay*qby-qaz*qbz;this._onChangeCallback();return this}slerp(qb,t){if(t===0)return this;if(t===1)return this.copy(qb);const x=this._x,y=this._y,z=this._z,w=this._w;let cosHalfTheta=w*qb._w+x*qb._x+y*qb._y+z*qb._z;if(cosHalfTheta<0){this._w=-qb._w;this._x=-qb._x;this._y=-qb._y;this._z=-qb._z;cosHalfTheta=-cosHalfTheta}else{this.copy(qb)}if(cosHalfTheta>=1){this._w=w;this._x=x;this._y=y;this._z=z;return this}const sqrSinHalfTheta=1-cosHalfTheta*cosHalfTheta;if(sqrSinHalfTheta<=Number.EPSILON){const s=1-t;this._w=s*w+t*this._w;this._x=s*x+t*this._x;this._y=s*y+t*this._y;this._z=s*z+t*this._z;this.normalize();return this}const sinHalfTheta=Math.sqrt(sqrSinHalfTheta);const halfTheta=Math.atan2(sinHalfTheta,cosHalfTheta);const ratioA=Math.sin((1-t)*halfTheta)/sinHalfTheta,ratioB=Math.sin(t*halfTheta)/sinHalfTheta;this._w=w*ratioA+this._w*ratioB;this._x=x*ratioA+this._x*ratioB;this._y=y*ratioA+this._y*ratioB;this._z=z*ratioA+this._z*ratioB;this._onChangeCallback();return this}slerpQuaternions(qa,qb,t){return this.copy(qa).slerp(qb,t)}random(){const theta1=2*Math.PI*Math.random();const theta2=2*Math.PI*Math.random();const x0=Math.random();const r1=Math.sqrt(1-x0);const r2=Math.sqrt(x0);return this.set(r1*Math.sin(theta1),r1*Math.cos(theta1),r2*Math.sin(theta2),r2*Math.cos(theta2))}equals(quaternion){return quaternion._x===this._x&&quaternion._y===this._y&&quaternion._z===this._z&&quaternion._w===this._w}fromArray(array,offset=0){this._x=array[offset];this._y=array[offset+1];this._z=array[offset+2];this._w=array[offset+3];this._onChangeCallback();return this}toArray(array=[],offset=0){array[offset]=this._x;array[offset+1]=this._y;array[offset+2]=this._z;array[offset+3]=this._w;return array}fromBufferAttribute(attribute,index){this._x=attribute.getX(index);this._y=attribute.getY(index);this._z=attribute.getZ(index);this._w=attribute.getW(index);this._onChangeCallback();return this}toJSON(){return this.toArray()}_onChange(callback){this._onChangeCallback=callback;return this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x;yield this._y;yield this._z;yield this._w}}class Vector3{constructor(x=0,y=0,z=0){Vector3.prototype.isVector3=true;this.x=x;this.y=y;this.z=z}set(x,y,z){if(z===undefined)z=this.z;this.x=x;this.y=y;this.z=z;return this}setScalar(scalar){this.x=scalar;this.y=scalar;this.z=scalar;return this}setX(x){this.x=x;return this}setY(y){this.y=y;return this}setZ(z){this.z=z;return this}setComponent(index,value){switch(index){case 0:this.x=value;break;case 1:this.y=value;break;case 2:this.z=value;break;default:throw new Error("index is out of range: "+index);}return this}getComponent(index){switch(index){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+index);}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(v){this.x=v.x;this.y=v.y;this.z=v.z;return this}add(v){this.x+=v.x;this.y+=v.y;this.z+=v.z;return this}addScalar(s){this.x+=s;this.y+=s;this.z+=s;return this}addVectors(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this}addScaledVector(v,s){this.x+=v.x*s;this.y+=v.y*s;this.z+=v.z*s;return this}sub(v){this.x-=v.x;this.y-=v.y;this.z-=v.z;return this}subScalar(s){this.x-=s;this.y-=s;this.z-=s;return this}subVectors(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this}multiply(v){this.x*=v.x;this.y*=v.y;this.z*=v.z;return this}multiplyScalar(scalar){this.x*=scalar;this.y*=scalar;this.z*=scalar;return this}multiplyVectors(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this}applyEuler(euler){return this.applyQuaternion(_quaternion$4.setFromEuler(euler))}applyAxisAngle(axis,angle){return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis,angle))}applyMatrix3(m){const x=this.x,y=this.y,z=this.z;const e=m.elements;this.x=e[0]*x+e[3]*y+e[6]*z;this.y=e[1]*x+e[4]*y+e[7]*z;this.z=e[2]*x+e[5]*y+e[8]*z;return this}applyNormalMatrix(m){return this.applyMatrix3(m).normalize()}applyMatrix4(m){const x=this.x,y=this.y,z=this.z;const e=m.elements;const w=1/(e[3]*x+e[7]*y+e[11]*z+e[15]);this.x=(e[0]*x+e[4]*y+e[8]*z+e[12])*w;this.y=(e[1]*x+e[5]*y+e[9]*z+e[13])*w;this.z=(e[2]*x+e[6]*y+e[10]*z+e[14])*w;return this}applyQuaternion(q){const vx=this.x,vy=this.y,vz=this.z;const qx=q.x,qy=q.y,qz=q.z,qw=q.w;const tx=2*(qy*vz-qz*vy);const ty=2*(qz*vx-qx*vz);const tz=2*(qx*vy-qy*vx);this.x=vx+qw*tx+qy*tz-qz*ty;this.y=vy+qw*ty+qz*tx-qx*tz;this.z=vz+qw*tz+qx*ty-qy*tx;return this}project(camera){return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix)}unproject(camera){return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld)}transformDirection(m){const x=this.x,y=this.y,z=this.z;const e=m.elements;this.x=e[0]*x+e[4]*y+e[8]*z;this.y=e[1]*x+e[5]*y+e[9]*z;this.z=e[2]*x+e[6]*y+e[10]*z;return this.normalize()}divide(v){this.x/=v.x;this.y/=v.y;this.z/=v.z;return this}divideScalar(scalar){return this.multiplyScalar(1/scalar)}min(v){this.x=Math.min(this.x,v.x);this.y=Math.min(this.y,v.y);this.z=Math.min(this.z,v.z);return this}max(v){this.x=Math.max(this.x,v.x);this.y=Math.max(this.y,v.y);this.z=Math.max(this.z,v.z);return this}clamp(min,max){this.x=Math.max(min.x,Math.min(max.x,this.x));this.y=Math.max(min.y,Math.min(max.y,this.y));this.z=Math.max(min.z,Math.min(max.z,this.z));return this}clampScalar(minVal,maxVal){this.x=Math.max(minVal,Math.min(maxVal,this.x));this.y=Math.max(minVal,Math.min(maxVal,this.y));this.z=Math.max(minVal,Math.min(maxVal,this.z));return this}clampLength(min,max){const length=this.length();return this.divideScalar(length||1).multiplyScalar(Math.max(min,Math.min(max,length)))}floor(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);return this}ceil(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this}round(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this}roundToZero(){this.x=Math.trunc(this.x);this.y=Math.trunc(this.y);this.z=Math.trunc(this.z);return this}negate(){this.x=-this.x;this.y=-this.y;this.z=-this.z;return this}dot(v){return this.x*v.x+this.y*v.y+this.z*v.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(length){return this.normalize().multiplyScalar(length)}lerp(v,alpha){this.x+=(v.x-this.x)*alpha;this.y+=(v.y-this.y)*alpha;this.z+=(v.z-this.z)*alpha;return this}lerpVectors(v1,v2,alpha){this.x=v1.x+(v2.x-v1.x)*alpha;this.y=v1.y+(v2.y-v1.y)*alpha;this.z=v1.z+(v2.z-v1.z)*alpha;return this}cross(v){return this.crossVectors(this,v)}crossVectors(a,b){const ax=a.x,ay=a.y,az=a.z;const bx=b.x,by=b.y,bz=b.z;this.x=ay*bz-az*by;this.y=az*bx-ax*bz;this.z=ax*by-ay*bx;return this}projectOnVector(v){const denominator=v.lengthSq();if(denominator===0)return this.set(0,0,0);const scalar=v.dot(this)/denominator;return this.copy(v).multiplyScalar(scalar)}projectOnPlane(planeNormal){_vector$c.copy(this).projectOnVector(planeNormal);return this.sub(_vector$c)}reflect(normal){return this.sub(_vector$c.copy(normal).multiplyScalar(2*this.dot(normal)))}angleTo(v){const denominator=Math.sqrt(this.lengthSq()*v.lengthSq());if(denominator===0)return Math.PI/2;const theta=this.dot(v)/denominator;return Math.acos(clamp(theta,-1,1))}distanceTo(v){return Math.sqrt(this.distanceToSquared(v))}distanceToSquared(v){const dx=this.x-v.x,dy=this.y-v.y,dz=this.z-v.z;return dx*dx+dy*dy+dz*dz}manhattanDistanceTo(v){return Math.abs(this.x-v.x)+Math.abs(this.y-v.y)+Math.abs(this.z-v.z)}setFromSpherical(s){return this.setFromSphericalCoords(s.radius,s.phi,s.theta)}setFromSphericalCoords(radius,phi,theta){const sinPhiRadius=Math.sin(phi)*radius;this.x=sinPhiRadius*Math.sin(theta);this.y=Math.cos(phi)*radius;this.z=sinPhiRadius*Math.cos(theta);return this}setFromCylindrical(c){return this.setFromCylindricalCoords(c.radius,c.theta,c.y)}setFromCylindricalCoords(radius,theta,y){this.x=radius*Math.sin(theta);this.y=y;this.z=radius*Math.cos(theta);return this}setFromMatrixPosition(m){const e=m.elements;this.x=e[12];this.y=e[13];this.z=e[14];return this}setFromMatrixScale(m){const sx=this.setFromMatrixColumn(m,0).length();const sy=this.setFromMatrixColumn(m,1).length();const sz=this.setFromMatrixColumn(m,2).length();this.x=sx;this.y=sy;this.z=sz;return this}setFromMatrixColumn(m,index){return this.fromArray(m.elements,index*4)}setFromMatrix3Column(m,index){return this.fromArray(m.elements,index*3)}setFromEuler(e){this.x=e._x;this.y=e._y;this.z=e._z;return this}setFromColor(c){this.x=c.r;this.y=c.g;this.z=c.b;return this}equals(v){return v.x===this.x&&v.y===this.y&&v.z===this.z}fromArray(array,offset=0){this.x=array[offset];this.y=array[offset+1];this.z=array[offset+2];return this}toArray(array=[],offset=0){array[offset]=this.x;array[offset+1]=this.y;array[offset+2]=this.z;return array}fromBufferAttribute(attribute,index){this.x=attribute.getX(index);this.y=attribute.getY(index);this.z=attribute.getZ(index);return this}random(){this.x=Math.random();this.y=Math.random();this.z=Math.random();return this}randomDirection(){const theta=Math.random()*Math.PI*2;const u=Math.random()*2-1;const c=Math.sqrt(1-u*u);this.x=c*Math.cos(theta);this.y=u;this.z=c*Math.sin(theta);return this}*[Symbol.iterator](){yield this.x;yield this.y;yield this.z}}const _vector$c=new Vector3;const _quaternion$4=new Quaternion;class Box3{constructor(min=new Vector3(+Infinity,+Infinity,+Infinity),max=new Vector3(-Infinity,-Infinity,-Infinity)){this.isBox3=true;this.min=min;this.max=max}set(min,max){this.min.copy(min);this.max.copy(max);return this}setFromArray(array){this.makeEmpty();for(let i=0,il=array.length;ithis.max.x||point.ythis.max.y||point.zthis.max.z?false:true}containsBox(box){return this.min.x<=box.min.x&&box.max.x<=this.max.x&&this.min.y<=box.min.y&&box.max.y<=this.max.y&&this.min.z<=box.min.z&&box.max.z<=this.max.z}getParameter(point,target){return target.set((point.x-this.min.x)/(this.max.x-this.min.x),(point.y-this.min.y)/(this.max.y-this.min.y),(point.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(box){return box.max.xthis.max.x||box.max.ythis.max.y||box.max.zthis.max.z?false:true}intersectsSphere(sphere){this.clampPoint(sphere.center,_vector$b);return _vector$b.distanceToSquared(sphere.center)<=sphere.radius*sphere.radius}intersectsPlane(plane){let min,max;if(plane.normal.x>0){min=plane.normal.x*this.min.x;max=plane.normal.x*this.max.x}else{min=plane.normal.x*this.max.x;max=plane.normal.x*this.min.x}if(plane.normal.y>0){min+=plane.normal.y*this.min.y;max+=plane.normal.y*this.max.y}else{min+=plane.normal.y*this.max.y;max+=plane.normal.y*this.min.y}if(plane.normal.z>0){min+=plane.normal.z*this.min.z;max+=plane.normal.z*this.max.z}else{min+=plane.normal.z*this.max.z;max+=plane.normal.z*this.min.z}return min<=-plane.constant&&max>=-plane.constant}intersectsTriangle(triangle){if(this.isEmpty()){return false}this.getCenter(_center);_extents.subVectors(this.max,_center);_v0$2.subVectors(triangle.a,_center);_v1$7.subVectors(triangle.b,_center);_v2$4.subVectors(triangle.c,_center);_f0.subVectors(_v1$7,_v0$2);_f1.subVectors(_v2$4,_v1$7);_f2.subVectors(_v0$2,_v2$4);let axes=[0,-_f0.z,_f0.y,0,-_f1.z,_f1.y,0,-_f2.z,_f2.y,_f0.z,0,-_f0.x,_f1.z,0,-_f1.x,_f2.z,0,-_f2.x,-_f0.y,_f0.x,0,-_f1.y,_f1.x,0,-_f2.y,_f2.x,0];if(!satForAxes(axes,_v0$2,_v1$7,_v2$4,_extents)){return false}axes=[1,0,0,0,1,0,0,0,1];if(!satForAxes(axes,_v0$2,_v1$7,_v2$4,_extents)){return false}_triangleNormal.crossVectors(_f0,_f1);axes=[_triangleNormal.x,_triangleNormal.y,_triangleNormal.z];return satForAxes(axes,_v0$2,_v1$7,_v2$4,_extents)}clampPoint(point,target){return target.copy(point).clamp(this.min,this.max)}distanceToPoint(point){return this.clampPoint(point,_vector$b).distanceTo(point)}getBoundingSphere(target){if(this.isEmpty()){target.makeEmpty()}else{this.getCenter(target.center);target.radius=this.getSize(_vector$b).length()*0.5}return target}intersect(box){this.min.max(box.min);this.max.min(box.max);if(this.isEmpty())this.makeEmpty();return this}union(box){this.min.min(box.min);this.max.max(box.max);return this}applyMatrix4(matrix){if(this.isEmpty())return this;_points[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(matrix);_points[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(matrix);_points[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(matrix);_points[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(matrix);_points[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(matrix);_points[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(matrix);_points[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(matrix);_points[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(matrix);this.setFromPoints(_points);return this}translate(offset){this.min.add(offset);this.max.add(offset);return this}equals(box){return box.min.equals(this.min)&&box.max.equals(this.max)}}const _points=[new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3];const _vector$b=new Vector3;const _box$4=new Box3;const _v0$2=new Vector3;const _v1$7=new Vector3;const _v2$4=new Vector3;const _f0=new Vector3;const _f1=new Vector3;const _f2=new Vector3;const _center=new Vector3;const _extents=new Vector3;const _triangleNormal=new Vector3;const _testAxis=new Vector3;function satForAxes(axes,v0,v1,v2,extents){for(let i=0,j=axes.length-3;i<=j;i+=3){_testAxis.fromArray(axes,i);const r=extents.x*Math.abs(_testAxis.x)+extents.y*Math.abs(_testAxis.y)+extents.z*Math.abs(_testAxis.z);const p0=v0.dot(_testAxis);const p1=v1.dot(_testAxis);const p2=v2.dot(_testAxis);if(Math.max(-Math.max(p0,p1,p2),Math.min(p0,p1,p2))>r){return false}}return true}const _box$3=new Box3;const _v1$6=new Vector3;const _v2$3=new Vector3;class Sphere{constructor(center=new Vector3,radius=-1){this.isSphere=true;this.center=center;this.radius=radius}set(center,radius){this.center.copy(center);this.radius=radius;return this}setFromPoints(points,optionalCenter){const center=this.center;if(optionalCenter!==undefined){center.copy(optionalCenter)}else{_box$3.setFromPoints(points).getCenter(center)}let maxRadiusSq=0;for(let i=0,il=points.length;ithis.radius*this.radius){target.sub(this.center).normalize();target.multiplyScalar(this.radius).add(this.center)}return target}getBoundingBox(target){if(this.isEmpty()){target.makeEmpty();return target}target.set(this.center,this.center);target.expandByScalar(this.radius);return target}applyMatrix4(matrix){this.center.applyMatrix4(matrix);this.radius=this.radius*matrix.getMaxScaleOnAxis();return this}translate(offset){this.center.add(offset);return this}expandByPoint(point){if(this.isEmpty()){this.center.copy(point);this.radius=0;return this}_v1$6.subVectors(point,this.center);const lengthSq=_v1$6.lengthSq();if(lengthSq>this.radius*this.radius){const length=Math.sqrt(lengthSq);const delta=(length-this.radius)*0.5;this.center.addScaledVector(_v1$6,delta/length);this.radius+=delta}return this}union(sphere){if(sphere.isEmpty()){return this}if(this.isEmpty()){this.copy(sphere);return this}if(this.center.equals(sphere.center)===true){this.radius=Math.max(this.radius,sphere.radius)}else{_v2$3.subVectors(sphere.center,this.center).setLength(sphere.radius);this.expandByPoint(_v1$6.copy(sphere.center).add(_v2$3));this.expandByPoint(_v1$6.copy(sphere.center).sub(_v2$3))}return this}equals(sphere){return sphere.center.equals(this.center)&&sphere.radius===this.radius}clone(){return new this.constructor().copy(this)}}const _vector$a=new Vector3;const _segCenter=new Vector3;const _segDir=new Vector3;const _diff=new Vector3;const _edge1=new Vector3;const _edge2=new Vector3;const _normal$1=new Vector3;class Ray{constructor(origin=new Vector3,direction=new Vector3(0,0,-1)){this.origin=origin;this.direction=direction}set(origin,direction){this.origin.copy(origin);this.direction.copy(direction);return this}copy(ray){this.origin.copy(ray.origin);this.direction.copy(ray.direction);return this}at(t,target){return target.copy(this.origin).addScaledVector(this.direction,t)}lookAt(v){this.direction.copy(v).sub(this.origin).normalize();return this}recast(t){this.origin.copy(this.at(t,_vector$a));return this}closestPointToPoint(point,target){target.subVectors(point,this.origin);const directionDistance=target.dot(this.direction);if(directionDistance<0){return target.copy(this.origin)}return target.copy(this.origin).addScaledVector(this.direction,directionDistance)}distanceToPoint(point){return Math.sqrt(this.distanceSqToPoint(point))}distanceSqToPoint(point){const directionDistance=_vector$a.subVectors(point,this.origin).dot(this.direction);if(directionDistance<0){return this.origin.distanceToSquared(point)}_vector$a.copy(this.origin).addScaledVector(this.direction,directionDistance);return _vector$a.distanceToSquared(point)}distanceSqToSegment(v0,v1,optionalPointOnRay,optionalPointOnSegment){_segCenter.copy(v0).add(v1).multiplyScalar(0.5);_segDir.copy(v1).sub(v0).normalize();_diff.copy(this.origin).sub(_segCenter);const segExtent=v0.distanceTo(v1)*0.5;const a01=-this.direction.dot(_segDir);const b0=_diff.dot(this.direction);const b1=-_diff.dot(_segDir);const c=_diff.lengthSq();const det=Math.abs(1-a01*a01);let s0,s1,sqrDist,extDet;if(det>0){s0=a01*b1-b0;s1=a01*b0-b1;extDet=segExtent*det;if(s0>=0){if(s1>=-extDet){if(s1<=extDet){const invDet=1/det;s0*=invDet;s1*=invDet;sqrDist=s0*(s0+a01*s1+2*b0)+s1*(a01*s0+s1+2*b1)+c}else{s1=segExtent;s0=Math.max(0,-(a01*s1+b0));sqrDist=-s0*s0+s1*(s1+2*b1)+c}}else{s1=-segExtent;s0=Math.max(0,-(a01*s1+b0));sqrDist=-s0*s0+s1*(s1+2*b1)+c}}else{if(s1<=-extDet){s0=Math.max(0,-(-a01*segExtent+b0));s1=s0>0?-segExtent:Math.min(Math.max(-segExtent,-b1),segExtent);sqrDist=-s0*s0+s1*(s1+2*b1)+c}else if(s1<=extDet){s0=0;s1=Math.min(Math.max(-segExtent,-b1),segExtent);sqrDist=s1*(s1+2*b1)+c}else{s0=Math.max(0,-(a01*segExtent+b0));s1=s0>0?segExtent:Math.min(Math.max(-segExtent,-b1),segExtent);sqrDist=-s0*s0+s1*(s1+2*b1)+c}}}else{s1=a01>0?-segExtent:segExtent;s0=Math.max(0,-(a01*s1+b0));sqrDist=-s0*s0+s1*(s1+2*b1)+c}if(optionalPointOnRay){optionalPointOnRay.copy(this.origin).addScaledVector(this.direction,s0)}if(optionalPointOnSegment){optionalPointOnSegment.copy(_segCenter).addScaledVector(_segDir,s1)}return sqrDist}intersectSphere(sphere,target){_vector$a.subVectors(sphere.center,this.origin);const tca=_vector$a.dot(this.direction);const d2=_vector$a.dot(_vector$a)-tca*tca;const radius2=sphere.radius*sphere.radius;if(d2>radius2)return null;const thc=Math.sqrt(radius2-d2);const t0=tca-thc;const t1=tca+thc;if(t1<0)return null;if(t0<0)return this.at(t1,target);return this.at(t0,target)}intersectsSphere(sphere){return this.distanceSqToPoint(sphere.center)<=sphere.radius*sphere.radius}distanceToPlane(plane){const denominator=plane.normal.dot(this.direction);if(denominator===0){if(plane.distanceToPoint(this.origin)===0){return 0}return null}const t=-(this.origin.dot(plane.normal)+plane.constant)/denominator;return t>=0?t:null}intersectPlane(plane,target){const t=this.distanceToPlane(plane);if(t===null){return null}return this.at(t,target)}intersectsPlane(plane){const distToPoint=plane.distanceToPoint(this.origin);if(distToPoint===0){return true}const denominator=plane.normal.dot(this.direction);if(denominator*distToPoint<0){return true}return false}intersectBox(box,target){let tmin,tmax,tymin,tymax,tzmin,tzmax;const invdirx=1/this.direction.x,invdiry=1/this.direction.y,invdirz=1/this.direction.z;const origin=this.origin;if(invdirx>=0){tmin=(box.min.x-origin.x)*invdirx;tmax=(box.max.x-origin.x)*invdirx}else{tmin=(box.max.x-origin.x)*invdirx;tmax=(box.min.x-origin.x)*invdirx}if(invdiry>=0){tymin=(box.min.y-origin.y)*invdiry;tymax=(box.max.y-origin.y)*invdiry}else{tymin=(box.max.y-origin.y)*invdiry;tymax=(box.min.y-origin.y)*invdiry}if(tmin>tymax||tymin>tmax)return null;if(tymin>tmin||isNaN(tmin))tmin=tymin;if(tymax=0){tzmin=(box.min.z-origin.z)*invdirz;tzmax=(box.max.z-origin.z)*invdirz}else{tzmin=(box.max.z-origin.z)*invdirz;tzmax=(box.min.z-origin.z)*invdirz}if(tmin>tzmax||tzmin>tmax)return null;if(tzmin>tmin||tmin!==tmin)tmin=tzmin;if(tzmax=0?tmin:tmax,target)}intersectsBox(box){return this.intersectBox(box,_vector$a)!==null}intersectTriangle(a,b,c,backfaceCulling,target){_edge1.subVectors(b,a);_edge2.subVectors(c,a);_normal$1.crossVectors(_edge1,_edge2);let DdN=this.direction.dot(_normal$1);let sign;if(DdN>0){if(backfaceCulling)return null;sign=1}else if(DdN<0){sign=-1;DdN=-DdN}else{return null}_diff.subVectors(this.origin,a);const DdQxE2=sign*this.direction.dot(_edge2.crossVectors(_diff,_edge2));if(DdQxE2<0){return null}const DdE1xQ=sign*this.direction.dot(_edge1.cross(_diff));if(DdE1xQ<0){return null}if(DdQxE2+DdE1xQ>DdN){return null}const QdN=-sign*_diff.dot(_normal$1);if(QdN<0){return null}return this.at(QdN/DdN,target)}applyMatrix4(matrix4){this.origin.applyMatrix4(matrix4);this.direction.transformDirection(matrix4);return this}equals(ray){return ray.origin.equals(this.origin)&&ray.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Matrix4{constructor(n11,n12,n13,n14,n21,n22,n23,n24,n31,n32,n33,n34,n41,n42,n43,n44){Matrix4.prototype.isMatrix4=true;this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];if(n11!==undefined){this.set(n11,n12,n13,n14,n21,n22,n23,n24,n31,n32,n33,n34,n41,n42,n43,n44)}}set(n11,n12,n13,n14,n21,n22,n23,n24,n31,n32,n33,n34,n41,n42,n43,n44){const te=this.elements;te[0]=n11;te[4]=n12;te[8]=n13;te[12]=n14;te[1]=n21;te[5]=n22;te[9]=n23;te[13]=n24;te[2]=n31;te[6]=n32;te[10]=n33;te[14]=n34;te[3]=n41;te[7]=n42;te[11]=n43;te[15]=n44;return this}identity(){this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return this}clone(){return new Matrix4().fromArray(this.elements)}copy(m){const te=this.elements;const me=m.elements;te[0]=me[0];te[1]=me[1];te[2]=me[2];te[3]=me[3];te[4]=me[4];te[5]=me[5];te[6]=me[6];te[7]=me[7];te[8]=me[8];te[9]=me[9];te[10]=me[10];te[11]=me[11];te[12]=me[12];te[13]=me[13];te[14]=me[14];te[15]=me[15];return this}copyPosition(m){const te=this.elements,me=m.elements;te[12]=me[12];te[13]=me[13];te[14]=me[14];return this}setFromMatrix3(m){const me=m.elements;this.set(me[0],me[3],me[6],0,me[1],me[4],me[7],0,me[2],me[5],me[8],0,0,0,0,1);return this}extractBasis(xAxis,yAxis,zAxis){xAxis.setFromMatrixColumn(this,0);yAxis.setFromMatrixColumn(this,1);zAxis.setFromMatrixColumn(this,2);return this}makeBasis(xAxis,yAxis,zAxis){this.set(xAxis.x,yAxis.x,zAxis.x,0,xAxis.y,yAxis.y,zAxis.y,0,xAxis.z,yAxis.z,zAxis.z,0,0,0,0,1);return this}extractRotation(m){const te=this.elements;const me=m.elements;const scaleX=1/_v1$5.setFromMatrixColumn(m,0).length();const scaleY=1/_v1$5.setFromMatrixColumn(m,1).length();const scaleZ=1/_v1$5.setFromMatrixColumn(m,2).length();te[0]=me[0]*scaleX;te[1]=me[1]*scaleX;te[2]=me[2]*scaleX;te[3]=0;te[4]=me[4]*scaleY;te[5]=me[5]*scaleY;te[6]=me[6]*scaleY;te[7]=0;te[8]=me[8]*scaleZ;te[9]=me[9]*scaleZ;te[10]=me[10]*scaleZ;te[11]=0;te[12]=0;te[13]=0;te[14]=0;te[15]=1;return this}makeRotationFromEuler(euler){const te=this.elements;const x=euler.x,y=euler.y,z=euler.z;const a=Math.cos(x),b=Math.sin(x);const c=Math.cos(y),d=Math.sin(y);const e=Math.cos(z),f=Math.sin(z);if(euler.order==="XYZ"){const ae=a*e,af=a*f,be=b*e,bf=b*f;te[0]=c*e;te[4]=-c*f;te[8]=d;te[1]=af+be*d;te[5]=ae-bf*d;te[9]=-b*c;te[2]=bf-ae*d;te[6]=be+af*d;te[10]=a*c}else if(euler.order==="YXZ"){const ce=c*e,cf=c*f,de=d*e,df=d*f;te[0]=ce+df*b;te[4]=de*b-cf;te[8]=a*d;te[1]=a*f;te[5]=a*e;te[9]=-b;te[2]=cf*b-de;te[6]=df+ce*b;te[10]=a*c}else if(euler.order==="ZXY"){const ce=c*e,cf=c*f,de=d*e,df=d*f;te[0]=ce-df*b;te[4]=-a*f;te[8]=de+cf*b;te[1]=cf+de*b;te[5]=a*e;te[9]=df-ce*b;te[2]=-a*d;te[6]=b;te[10]=a*c}else if(euler.order==="ZYX"){const ae=a*e,af=a*f,be=b*e,bf=b*f;te[0]=c*e;te[4]=be*d-af;te[8]=ae*d+bf;te[1]=c*f;te[5]=bf*d+ae;te[9]=af*d-be;te[2]=-d;te[6]=b*c;te[10]=a*c}else if(euler.order==="YZX"){const ac=a*c,ad=a*d,bc=b*c,bd=b*d;te[0]=c*e;te[4]=bd-ac*f;te[8]=bc*f+ad;te[1]=f;te[5]=a*e;te[9]=-b*e;te[2]=-d*e;te[6]=ad*f+bc;te[10]=ac-bd*f}else if(euler.order==="XZY"){const ac=a*c,ad=a*d,bc=b*c,bd=b*d;te[0]=c*e;te[4]=-f;te[8]=d*e;te[1]=ac*f+bd;te[5]=a*e;te[9]=ad*f-bc;te[2]=bc*f-ad;te[6]=b*e;te[10]=bd*f+ac}te[3]=0;te[7]=0;te[11]=0;te[12]=0;te[13]=0;te[14]=0;te[15]=1;return this}makeRotationFromQuaternion(q){return this.compose(_zero,q,_one)}lookAt(eye,target,up){const te=this.elements;_z.subVectors(eye,target);if(_z.lengthSq()===0){_z.z=1}_z.normalize();_x.crossVectors(up,_z);if(_x.lengthSq()===0){if(Math.abs(up.z)===1){_z.x+=0.0001}else{_z.z+=0.0001}_z.normalize();_x.crossVectors(up,_z)}_x.normalize();_y.crossVectors(_z,_x);te[0]=_x.x;te[4]=_y.x;te[8]=_z.x;te[1]=_x.y;te[5]=_y.y;te[9]=_z.y;te[2]=_x.z;te[6]=_y.z;te[10]=_z.z;return this}multiply(m){return this.multiplyMatrices(this,m)}premultiply(m){return this.multiplyMatrices(m,this)}multiplyMatrices(a,b){const ae=a.elements;const be=b.elements;const te=this.elements;const a11=ae[0],a12=ae[4],a13=ae[8],a14=ae[12];const a21=ae[1],a22=ae[5],a23=ae[9],a24=ae[13];const a31=ae[2],a32=ae[6],a33=ae[10],a34=ae[14];const a41=ae[3],a42=ae[7],a43=ae[11],a44=ae[15];const b11=be[0],b12=be[4],b13=be[8],b14=be[12];const b21=be[1],b22=be[5],b23=be[9],b24=be[13];const b31=be[2],b32=be[6],b33=be[10],b34=be[14];const b41=be[3],b42=be[7],b43=be[11],b44=be[15];te[0]=a11*b11+a12*b21+a13*b31+a14*b41;te[4]=a11*b12+a12*b22+a13*b32+a14*b42;te[8]=a11*b13+a12*b23+a13*b33+a14*b43;te[12]=a11*b14+a12*b24+a13*b34+a14*b44;te[1]=a21*b11+a22*b21+a23*b31+a24*b41;te[5]=a21*b12+a22*b22+a23*b32+a24*b42;te[9]=a21*b13+a22*b23+a23*b33+a24*b43;te[13]=a21*b14+a22*b24+a23*b34+a24*b44;te[2]=a31*b11+a32*b21+a33*b31+a34*b41;te[6]=a31*b12+a32*b22+a33*b32+a34*b42;te[10]=a31*b13+a32*b23+a33*b33+a34*b43;te[14]=a31*b14+a32*b24+a33*b34+a34*b44;te[3]=a41*b11+a42*b21+a43*b31+a44*b41;te[7]=a41*b12+a42*b22+a43*b32+a44*b42;te[11]=a41*b13+a42*b23+a43*b33+a44*b43;te[15]=a41*b14+a42*b24+a43*b34+a44*b44;return this}multiplyScalar(s){const te=this.elements;te[0]*=s;te[4]*=s;te[8]*=s;te[12]*=s;te[1]*=s;te[5]*=s;te[9]*=s;te[13]*=s;te[2]*=s;te[6]*=s;te[10]*=s;te[14]*=s;te[3]*=s;te[7]*=s;te[11]*=s;te[15]*=s;return this}determinant(){const te=this.elements;const n11=te[0],n12=te[4],n13=te[8],n14=te[12];const n21=te[1],n22=te[5],n23=te[9],n24=te[13];const n31=te[2],n32=te[6],n33=te[10],n34=te[14];const n41=te[3],n42=te[7],n43=te[11],n44=te[15];return n41*(+n14*n23*n32-n13*n24*n32-n14*n22*n33+n12*n24*n33+n13*n22*n34-n12*n23*n34)+n42*(+n11*n23*n34-n11*n24*n33+n14*n21*n33-n13*n21*n34+n13*n24*n31-n14*n23*n31)+n43*(+n11*n24*n32-n11*n22*n34-n14*n21*n32+n12*n21*n34+n14*n22*n31-n12*n24*n31)+n44*(-n13*n22*n31-n11*n23*n32+n11*n22*n33+n13*n21*n32-n12*n21*n33+n12*n23*n31)}transpose(){const te=this.elements;let tmp;tmp=te[1];te[1]=te[4];te[4]=tmp;tmp=te[2];te[2]=te[8];te[8]=tmp;tmp=te[6];te[6]=te[9];te[9]=tmp;tmp=te[3];te[3]=te[12];te[12]=tmp;tmp=te[7];te[7]=te[13];te[13]=tmp;tmp=te[11];te[11]=te[14];te[14]=tmp;return this}setPosition(x,y,z){const te=this.elements;if(x.isVector3){te[12]=x.x;te[13]=x.y;te[14]=x.z}else{te[12]=x;te[13]=y;te[14]=z}return this}invert(){const te=this.elements,n11=te[0],n21=te[1],n31=te[2],n41=te[3],n12=te[4],n22=te[5],n32=te[6],n42=te[7],n13=te[8],n23=te[9],n33=te[10],n43=te[11],n14=te[12],n24=te[13],n34=te[14],n44=te[15],t11=n23*n34*n42-n24*n33*n42+n24*n32*n43-n22*n34*n43-n23*n32*n44+n22*n33*n44,t12=n14*n33*n42-n13*n34*n42-n14*n32*n43+n12*n34*n43+n13*n32*n44-n12*n33*n44,t13=n13*n24*n42-n14*n23*n42+n14*n22*n43-n12*n24*n43-n13*n22*n44+n12*n23*n44,t14=n14*n23*n32-n13*n24*n32-n14*n22*n33+n12*n24*n33+n13*n22*n34-n12*n23*n34;const det=n11*t11+n21*t12+n31*t13+n41*t14;if(det===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const detInv=1/det;te[0]=t11*detInv;te[1]=(n24*n33*n41-n23*n34*n41-n24*n31*n43+n21*n34*n43+n23*n31*n44-n21*n33*n44)*detInv;te[2]=(n22*n34*n41-n24*n32*n41+n24*n31*n42-n21*n34*n42-n22*n31*n44+n21*n32*n44)*detInv;te[3]=(n23*n32*n41-n22*n33*n41-n23*n31*n42+n21*n33*n42+n22*n31*n43-n21*n32*n43)*detInv;te[4]=t12*detInv;te[5]=(n13*n34*n41-n14*n33*n41+n14*n31*n43-n11*n34*n43-n13*n31*n44+n11*n33*n44)*detInv;te[6]=(n14*n32*n41-n12*n34*n41-n14*n31*n42+n11*n34*n42+n12*n31*n44-n11*n32*n44)*detInv;te[7]=(n12*n33*n41-n13*n32*n41+n13*n31*n42-n11*n33*n42-n12*n31*n43+n11*n32*n43)*detInv;te[8]=t13*detInv;te[9]=(n14*n23*n41-n13*n24*n41-n14*n21*n43+n11*n24*n43+n13*n21*n44-n11*n23*n44)*detInv;te[10]=(n12*n24*n41-n14*n22*n41+n14*n21*n42-n11*n24*n42-n12*n21*n44+n11*n22*n44)*detInv;te[11]=(n13*n22*n41-n12*n23*n41-n13*n21*n42+n11*n23*n42+n12*n21*n43-n11*n22*n43)*detInv;te[12]=t14*detInv;te[13]=(n13*n24*n31-n14*n23*n31+n14*n21*n33-n11*n24*n33-n13*n21*n34+n11*n23*n34)*detInv;te[14]=(n14*n22*n31-n12*n24*n31-n14*n21*n32+n11*n24*n32+n12*n21*n34-n11*n22*n34)*detInv;te[15]=(n12*n23*n31-n13*n22*n31+n13*n21*n32-n11*n23*n32-n12*n21*n33+n11*n22*n33)*detInv;return this}scale(v){const te=this.elements;const x=v.x,y=v.y,z=v.z;te[0]*=x;te[4]*=y;te[8]*=z;te[1]*=x;te[5]*=y;te[9]*=z;te[2]*=x;te[6]*=y;te[10]*=z;te[3]*=x;te[7]*=y;te[11]*=z;return this}getMaxScaleOnAxis(){const te=this.elements;const scaleXSq=te[0]*te[0]+te[1]*te[1]+te[2]*te[2];const scaleYSq=te[4]*te[4]+te[5]*te[5]+te[6]*te[6];const scaleZSq=te[8]*te[8]+te[9]*te[9]+te[10]*te[10];return Math.sqrt(Math.max(scaleXSq,scaleYSq,scaleZSq))}makeTranslation(x,y,z){if(x.isVector3){this.set(1,0,0,x.x,0,1,0,x.y,0,0,1,x.z,0,0,0,1)}else{this.set(1,0,0,x,0,1,0,y,0,0,1,z,0,0,0,1)}return this}makeRotationX(theta){const c=Math.cos(theta),s=Math.sin(theta);this.set(1,0,0,0,0,c,-s,0,0,s,c,0,0,0,0,1);return this}makeRotationY(theta){const c=Math.cos(theta),s=Math.sin(theta);this.set(c,0,s,0,0,1,0,0,-s,0,c,0,0,0,0,1);return this}makeRotationZ(theta){const c=Math.cos(theta),s=Math.sin(theta);this.set(c,-s,0,0,s,c,0,0,0,0,1,0,0,0,0,1);return this}makeRotationAxis(axis,angle){const c=Math.cos(angle);const s=Math.sin(angle);const t=1-c;const x=axis.x,y=axis.y,z=axis.z;const tx=t*x,ty=t*y;this.set(tx*x+c,tx*y-s*z,tx*z+s*y,0,tx*y+s*z,ty*y+c,ty*z-s*x,0,tx*z-s*y,ty*z+s*x,t*z*z+c,0,0,0,0,1);return this}makeScale(x,y,z){this.set(x,0,0,0,0,y,0,0,0,0,z,0,0,0,0,1);return this}makeShear(xy,xz,yx,yz,zx,zy){this.set(1,yx,zx,0,xy,1,zy,0,xz,yz,1,0,0,0,0,1);return this}compose(position,quaternion,scale){const te=this.elements;const x=quaternion._x,y=quaternion._y,z=quaternion._z,w=quaternion._w;const x2=x+x,y2=y+y,z2=z+z;const xx=x*x2,xy=x*y2,xz=x*z2;const yy=y*y2,yz=y*z2,zz=z*z2;const wx=w*x2,wy=w*y2,wz=w*z2;const sx=scale.x,sy=scale.y,sz=scale.z;te[0]=(1-(yy+zz))*sx;te[1]=(xy+wz)*sx;te[2]=(xz-wy)*sx;te[3]=0;te[4]=(xy-wz)*sy;te[5]=(1-(xx+zz))*sy;te[6]=(yz+wx)*sy;te[7]=0;te[8]=(xz+wy)*sz;te[9]=(yz-wx)*sz;te[10]=(1-(xx+yy))*sz;te[11]=0;te[12]=position.x;te[13]=position.y;te[14]=position.z;te[15]=1;return this}decompose(position,quaternion,scale){const te=this.elements;let sx=_v1$5.set(te[0],te[1],te[2]).length();const sy=_v1$5.set(te[4],te[5],te[6]).length();const sz=_v1$5.set(te[8],te[9],te[10]).length();const det=this.determinant();if(det<0)sx=-sx;position.x=te[12];position.y=te[13];position.z=te[14];_m1$4.copy(this);const invSX=1/sx;const invSY=1/sy;const invSZ=1/sz;_m1$4.elements[0]*=invSX;_m1$4.elements[1]*=invSX;_m1$4.elements[2]*=invSX;_m1$4.elements[4]*=invSY;_m1$4.elements[5]*=invSY;_m1$4.elements[6]*=invSY;_m1$4.elements[8]*=invSZ;_m1$4.elements[9]*=invSZ;_m1$4.elements[10]*=invSZ;quaternion.setFromRotationMatrix(_m1$4);scale.x=sx;scale.y=sy;scale.z=sz;return this}makePerspective(left,right,top,bottom,near,far,coordinateSystem=WebGLCoordinateSystem){const te=this.elements;const x=2*near/(right-left);const y=2*near/(top-bottom);const a=(right+left)/(right-left);const b=(top+bottom)/(top-bottom);let c,d;if(coordinateSystem===WebGLCoordinateSystem){c=-(far+near)/(far-near);d=-2*far*near/(far-near)}else if(coordinateSystem===WebGPUCoordinateSystem){c=-far/(far-near);d=-far*near/(far-near)}else{throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+coordinateSystem)}te[0]=x;te[4]=0;te[8]=a;te[12]=0;te[1]=0;te[5]=y;te[9]=b;te[13]=0;te[2]=0;te[6]=0;te[10]=c;te[14]=d;te[3]=0;te[7]=0;te[11]=-1;te[15]=0;return this}makeOrthographic(left,right,top,bottom,near,far,coordinateSystem=WebGLCoordinateSystem){const te=this.elements;const w=1/(right-left);const h=1/(top-bottom);const p=1/(far-near);const x=(right+left)*w;const y=(top+bottom)*h;let z,zInv;if(coordinateSystem===WebGLCoordinateSystem){z=(far+near)*p;zInv=-2*p}else if(coordinateSystem===WebGPUCoordinateSystem){z=near*p;zInv=-1*p}else{throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+coordinateSystem)}te[0]=2*w;te[4]=0;te[8]=0;te[12]=-x;te[1]=0;te[5]=2*h;te[9]=0;te[13]=-y;te[2]=0;te[6]=0;te[10]=zInv;te[14]=-z;te[3]=0;te[7]=0;te[11]=0;te[15]=1;return this}equals(matrix){const te=this.elements;const me=matrix.elements;for(let i=0;i<16;i++){if(te[i]!==me[i])return false}return true}fromArray(array,offset=0){for(let i=0;i<16;i++){this.elements[i]=array[i+offset]}return this}toArray(array=[],offset=0){const te=this.elements;array[offset]=te[0];array[offset+1]=te[1];array[offset+2]=te[2];array[offset+3]=te[3];array[offset+4]=te[4];array[offset+5]=te[5];array[offset+6]=te[6];array[offset+7]=te[7];array[offset+8]=te[8];array[offset+9]=te[9];array[offset+10]=te[10];array[offset+11]=te[11];array[offset+12]=te[12];array[offset+13]=te[13];array[offset+14]=te[14];array[offset+15]=te[15];return array}}const _v1$5=new Vector3;const _m1$4=new Matrix4;const _zero=new Vector3(0,0,0);const _one=new Vector3(1,1,1);const _x=new Vector3;const _y=new Vector3;const _z=new Vector3;const _matrix$2=new Matrix4;const _quaternion$3=new Quaternion;class Euler{constructor(x=0,y=0,z=0,order=Euler.DEFAULT_ORDER){this.isEuler=true;this._x=x;this._y=y;this._z=z;this._order=order}get x(){return this._x}set x(value){this._x=value;this._onChangeCallback()}get y(){return this._y}set y(value){this._y=value;this._onChangeCallback()}get z(){return this._z}set z(value){this._z=value;this._onChangeCallback()}get order(){return this._order}set order(value){this._order=value;this._onChangeCallback()}set(x,y,z,order=this._order){this._x=x;this._y=y;this._z=z;this._order=order;this._onChangeCallback();return this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(euler){this._x=euler._x;this._y=euler._y;this._z=euler._z;this._order=euler._order;this._onChangeCallback();return this}setFromRotationMatrix(m,order=this._order,update=true){const te=m.elements;const m11=te[0],m12=te[4],m13=te[8];const m21=te[1],m22=te[5],m23=te[9];const m31=te[2],m32=te[6],m33=te[10];switch(order){case"XYZ":this._y=Math.asin(clamp(m13,-1,1));if(Math.abs(m13)<0.9999999){this._x=Math.atan2(-m23,m33);this._z=Math.atan2(-m12,m11)}else{this._x=Math.atan2(m32,m22);this._z=0}break;case"YXZ":this._x=Math.asin(-clamp(m23,-1,1));if(Math.abs(m23)<0.9999999){this._y=Math.atan2(m13,m33);this._z=Math.atan2(m21,m22)}else{this._y=Math.atan2(-m31,m11);this._z=0}break;case"ZXY":this._x=Math.asin(clamp(m32,-1,1));if(Math.abs(m32)<0.9999999){this._y=Math.atan2(-m31,m33);this._z=Math.atan2(-m12,m22)}else{this._y=0;this._z=Math.atan2(m21,m11)}break;case"ZYX":this._y=Math.asin(-clamp(m31,-1,1));if(Math.abs(m31)<0.9999999){this._x=Math.atan2(m32,m33);this._z=Math.atan2(m21,m11)}else{this._x=0;this._z=Math.atan2(-m12,m22)}break;case"YZX":this._z=Math.asin(clamp(m21,-1,1));if(Math.abs(m21)<0.9999999){this._x=Math.atan2(-m23,m22);this._y=Math.atan2(-m31,m11)}else{this._x=0;this._y=Math.atan2(m13,m33)}break;case"XZY":this._z=Math.asin(-clamp(m12,-1,1));if(Math.abs(m12)<0.9999999){this._x=Math.atan2(m32,m22);this._y=Math.atan2(m13,m11)}else{this._x=Math.atan2(-m23,m33);this._y=0}break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+order);}this._order=order;if(update===true)this._onChangeCallback();return this}setFromQuaternion(q,order,update){_matrix$2.makeRotationFromQuaternion(q);return this.setFromRotationMatrix(_matrix$2,order,update)}setFromVector3(v,order=this._order){return this.set(v.x,v.y,v.z,order)}reorder(newOrder){_quaternion$3.setFromEuler(this);return this.setFromQuaternion(_quaternion$3,newOrder)}equals(euler){return euler._x===this._x&&euler._y===this._y&&euler._z===this._z&&euler._order===this._order}fromArray(array){this._x=array[0];this._y=array[1];this._z=array[2];if(array[3]!==undefined)this._order=array[3];this._onChangeCallback();return this}toArray(array=[],offset=0){array[offset]=this._x;array[offset+1]=this._y;array[offset+2]=this._z;array[offset+3]=this._order;return array}_onChange(callback){this._onChangeCallback=callback;return this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x;yield this._y;yield this._z;yield this._order}}Euler.DEFAULT_ORDER="XYZ";class Layers{constructor(){this.mask=1|0}set(channel){this.mask=(1<>>0}enable(channel){this.mask|=1<1){for(let i=0;i1){for(let i=0;i0)object.userData=this.userData;object.layers=this.layers.mask;object.matrix=this.matrix.toArray();object.up=this.up.toArray();if(this.matrixAutoUpdate===false)object.matrixAutoUpdate=false;if(this.isInstancedMesh){object.type="InstancedMesh";object.count=this.count;object.instanceMatrix=this.instanceMatrix.toJSON();if(this.instanceColor!==null)object.instanceColor=this.instanceColor.toJSON()}if(this.isBatchedMesh){object.type="BatchedMesh";object.perObjectFrustumCulled=this.perObjectFrustumCulled;object.sortObjects=this.sortObjects;object.drawRanges=this._drawRanges;object.reservedRanges=this._reservedRanges;object.visibility=this._visibility;object.active=this._active;object.bounds=this._bounds.map(bound=>({boxInitialized:bound.boxInitialized,boxMin:bound.box.min.toArray(),boxMax:bound.box.max.toArray(),sphereInitialized:bound.sphereInitialized,sphereRadius:bound.sphere.radius,sphereCenter:bound.sphere.center.toArray()}));object.maxGeometryCount=this._maxGeometryCount;object.maxVertexCount=this._maxVertexCount;object.maxIndexCount=this._maxIndexCount;object.geometryInitialized=this._geometryInitialized;object.geometryCount=this._geometryCount;object.matricesTexture=this._matricesTexture.toJSON(meta);if(this.boundingSphere!==null){object.boundingSphere={center:object.boundingSphere.center.toArray(),radius:object.boundingSphere.radius}}if(this.boundingBox!==null){object.boundingBox={min:object.boundingBox.min.toArray(),max:object.boundingBox.max.toArray()}}}function serialize(library,element){if(library[element.uuid]===undefined){library[element.uuid]=element.toJSON(meta)}return element.uuid}if(this.isScene){if(this.background){if(this.background.isColor){object.background=this.background.toJSON()}else if(this.background.isTexture){object.background=this.background.toJSON(meta).uuid}}if(this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==true){object.environment=this.environment.toJSON(meta).uuid}}else if(this.isMesh||this.isLine||this.isPoints){object.geometry=serialize(meta.geometries,this.geometry);const parameters=this.geometry.parameters;if(parameters!==undefined&¶meters.shapes!==undefined){const shapes=parameters.shapes;if(Array.isArray(shapes)){for(let i=0,l=shapes.length;i0){object.children=[];for(let i=0;i0){object.animations=[];for(let i=0;i0)output.geometries=geometries;if(materials.length>0)output.materials=materials;if(textures.length>0)output.textures=textures;if(images.length>0)output.images=images;if(shapes.length>0)output.shapes=shapes;if(skeletons.length>0)output.skeletons=skeletons;if(animations.length>0)output.animations=animations;if(nodes.length>0)output.nodes=nodes}output.object=object;return output;function extractFromCache(cache){const values=[];for(const key in cache){const data=cache[key];delete data.metadata;values.push(data)}return values}}clone(recursive){return new this.constructor().copy(this,recursive)}copy(source,recursive=true){this.name=source.name;this.up.copy(source.up);this.position.copy(source.position);this.rotation.order=source.rotation.order;this.quaternion.copy(source.quaternion);this.scale.copy(source.scale);this.matrix.copy(source.matrix);this.matrixWorld.copy(source.matrixWorld);this.matrixAutoUpdate=source.matrixAutoUpdate;this.matrixWorldAutoUpdate=source.matrixWorldAutoUpdate;this.matrixWorldNeedsUpdate=source.matrixWorldNeedsUpdate;this.layers.mask=source.layers.mask;this.visible=source.visible;this.castShadow=source.castShadow;this.receiveShadow=source.receiveShadow;this.frustumCulled=source.frustumCulled;this.renderOrder=source.renderOrder;this.animations=source.animations.slice();this.userData=JSON.parse(JSON.stringify(source.userData));if(recursive===true){for(let i=0;i0){return target.multiplyScalar(1/Math.sqrt(targetLengthSq))}return target.set(0,0,0)}static getBarycoord(point,a,b,c,target){_v0$1.subVectors(c,a);_v1$3.subVectors(b,a);_v2$2.subVectors(point,a);const dot00=_v0$1.dot(_v0$1);const dot01=_v0$1.dot(_v1$3);const dot02=_v0$1.dot(_v2$2);const dot11=_v1$3.dot(_v1$3);const dot12=_v1$3.dot(_v2$2);const denom=dot00*dot11-dot01*dot01;if(denom===0){target.set(0,0,0);return null}const invDenom=1/denom;const u=(dot11*dot02-dot01*dot12)*invDenom;const v=(dot00*dot12-dot01*dot02)*invDenom;return target.set(1-u-v,v,u)}static containsPoint(point,a,b,c){if(this.getBarycoord(point,a,b,c,_v3$2)===null){return false}return _v3$2.x>=0&&_v3$2.y>=0&&_v3$2.x+_v3$2.y<=1}static getInterpolation(point,p1,p2,p3,v1,v2,v3,target){if(this.getBarycoord(point,p1,p2,p3,_v3$2)===null){target.x=0;target.y=0;if("z"in target)target.z=0;if("w"in target)target.w=0;return null}target.setScalar(0);target.addScaledVector(v1,_v3$2.x);target.addScaledVector(v2,_v3$2.y);target.addScaledVector(v3,_v3$2.z);return target}static isFrontFacing(a,b,c,direction){_v0$1.subVectors(c,b);_v1$3.subVectors(a,b);return _v0$1.cross(_v1$3).dot(direction)<0?true:false}set(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this}setFromPointsAndIndices(points,i0,i1,i2){this.a.copy(points[i0]);this.b.copy(points[i1]);this.c.copy(points[i2]);return this}setFromAttributeAndIndices(attribute,i0,i1,i2){this.a.fromBufferAttribute(attribute,i0);this.b.fromBufferAttribute(attribute,i1);this.c.fromBufferAttribute(attribute,i2);return this}clone(){return new this.constructor().copy(this)}copy(triangle){this.a.copy(triangle.a);this.b.copy(triangle.b);this.c.copy(triangle.c);return this}getArea(){_v0$1.subVectors(this.c,this.b);_v1$3.subVectors(this.a,this.b);return _v0$1.cross(_v1$3).length()*0.5}getMidpoint(target){return target.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(target){return Triangle.getNormal(this.a,this.b,this.c,target)}getPlane(target){return target.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(point,target){return Triangle.getBarycoord(point,this.a,this.b,this.c,target)}getInterpolation(point,v1,v2,v3,target){return Triangle.getInterpolation(point,this.a,this.b,this.c,v1,v2,v3,target)}containsPoint(point){return Triangle.containsPoint(point,this.a,this.b,this.c)}isFrontFacing(direction){return Triangle.isFrontFacing(this.a,this.b,this.c,direction)}intersectsBox(box){return box.intersectsTriangle(this)}closestPointToPoint(p,target){const a=this.a,b=this.b,c=this.c;let v,w;_vab.subVectors(b,a);_vac.subVectors(c,a);_vap.subVectors(p,a);const d1=_vab.dot(_vap);const d2=_vac.dot(_vap);if(d1<=0&&d2<=0){return target.copy(a)}_vbp.subVectors(p,b);const d3=_vab.dot(_vbp);const d4=_vac.dot(_vbp);if(d3>=0&&d4<=d3){return target.copy(b)}const vc=d1*d4-d3*d2;if(vc<=0&&d1>=0&&d3<=0){v=d1/(d1-d3);return target.copy(a).addScaledVector(_vab,v)}_vcp.subVectors(p,c);const d5=_vab.dot(_vcp);const d6=_vac.dot(_vcp);if(d6>=0&&d5<=d6){return target.copy(c)}const vb=d5*d2-d1*d6;if(vb<=0&&d2>=0&&d6<=0){w=d2/(d2-d6);return target.copy(a).addScaledVector(_vac,w)}const va=d3*d6-d5*d4;if(va<=0&&d4-d3>=0&&d5-d6>=0){_vbc.subVectors(c,b);w=(d4-d3)/(d4-d3+(d5-d6));return target.copy(b).addScaledVector(_vbc,w)}const denom=1/(va+vb+vc);v=vb*denom;w=vc*denom;return target.copy(a).addScaledVector(_vab,v).addScaledVector(_vac,w)}equals(triangle){return triangle.a.equals(this.a)&&triangle.b.equals(this.b)&&triangle.c.equals(this.c)}}const _colorKeywords={"aliceblue":15792383,"antiquewhite":16444375,"aqua":65535,"aquamarine":8388564,"azure":15794175,"beige":16119260,"bisque":16770244,"black":0,"blanchedalmond":16772045,"blue":255,"blueviolet":9055202,"brown":10824234,"burlywood":14596231,"cadetblue":6266528,"chartreuse":8388352,"chocolate":13789470,"coral":16744272,"cornflowerblue":6591981,"cornsilk":16775388,"crimson":14423100,"cyan":65535,"darkblue":139,"darkcyan":35723,"darkgoldenrod":12092939,"darkgray":11119017,"darkgreen":25600,"darkgrey":11119017,"darkkhaki":12433259,"darkmagenta":9109643,"darkolivegreen":5597999,"darkorange":16747520,"darkorchid":10040012,"darkred":9109504,"darksalmon":15308410,"darkseagreen":9419919,"darkslateblue":4734347,"darkslategray":3100495,"darkslategrey":3100495,"darkturquoise":52945,"darkviolet":9699539,"deeppink":16716947,"deepskyblue":49151,"dimgray":6908265,"dimgrey":6908265,"dodgerblue":2003199,"firebrick":11674146,"floralwhite":16775920,"forestgreen":2263842,"fuchsia":16711935,"gainsboro":14474460,"ghostwhite":16316671,"gold":16766720,"goldenrod":14329120,"gray":8421504,"green":32768,"greenyellow":11403055,"grey":8421504,"honeydew":15794160,"hotpink":16738740,"indianred":13458524,"indigo":4915330,"ivory":16777200,"khaki":15787660,"lavender":15132410,"lavenderblush":16773365,"lawngreen":8190976,"lemonchiffon":16775885,"lightblue":11393254,"lightcoral":15761536,"lightcyan":14745599,"lightgoldenrodyellow":16448210,"lightgray":13882323,"lightgreen":9498256,"lightgrey":13882323,"lightpink":16758465,"lightsalmon":16752762,"lightseagreen":2142890,"lightskyblue":8900346,"lightslategray":7833753,"lightslategrey":7833753,"lightsteelblue":11584734,"lightyellow":16777184,"lime":65280,"limegreen":3329330,"linen":16445670,"magenta":16711935,"maroon":8388608,"mediumaquamarine":6737322,"mediumblue":205,"mediumorchid":12211667,"mediumpurple":9662683,"mediumseagreen":3978097,"mediumslateblue":8087790,"mediumspringgreen":64154,"mediumturquoise":4772300,"mediumvioletred":13047173,"midnightblue":1644912,"mintcream":16121850,"mistyrose":16770273,"moccasin":16770229,"navajowhite":16768685,"navy":128,"oldlace":16643558,"olive":8421376,"olivedrab":7048739,"orange":16753920,"orangered":16729344,"orchid":14315734,"palegoldenrod":15657130,"palegreen":10025880,"paleturquoise":11529966,"palevioletred":14381203,"papayawhip":16773077,"peachpuff":16767673,"peru":13468991,"pink":16761035,"plum":14524637,"powderblue":11591910,"purple":8388736,"rebeccapurple":6697881,"red":16711680,"rosybrown":12357519,"royalblue":4286945,"saddlebrown":9127187,"salmon":16416882,"sandybrown":16032864,"seagreen":3050327,"seashell":16774638,"sienna":10506797,"silver":12632256,"skyblue":8900331,"slateblue":6970061,"slategray":7372944,"slategrey":7372944,"snow":16775930,"springgreen":65407,"steelblue":4620980,"tan":13808780,"teal":32896,"thistle":14204888,"tomato":16737095,"turquoise":4251856,"violet":15631086,"wheat":16113331,"white":16777215,"whitesmoke":16119285,"yellow":16776960,"yellowgreen":10145074};const _hslA={h:0,s:0,l:0};const _hslB={h:0,s:0,l:0};function hue2rgb(p,q,t){if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*6*(2/3-t);return p}class Color{constructor(r,g,b){this.isColor=true;this.r=1;this.g=1;this.b=1;return this.set(r,g,b)}set(r,g,b){if(g===undefined&&b===undefined){const value=r;if(value&&value.isColor){this.copy(value)}else if(typeof value==="number"){this.setHex(value)}else if(typeof value==="string"){this.setStyle(value)}}else{this.setRGB(r,g,b)}return this}setScalar(scalar){this.r=scalar;this.g=scalar;this.b=scalar;return this}setHex(hex,colorSpace=SRGBColorSpace){hex=Math.floor(hex);this.r=(hex>>16&255)/255;this.g=(hex>>8&255)/255;this.b=(hex&255)/255;ColorManagement.toWorkingColorSpace(this,colorSpace);return this}setRGB(r,g,b,colorSpace=ColorManagement.workingColorSpace){this.r=r;this.g=g;this.b=b;ColorManagement.toWorkingColorSpace(this,colorSpace);return this}setHSL(h,s,l,colorSpace=ColorManagement.workingColorSpace){h=euclideanModulo(h,1);s=clamp(s,0,1);l=clamp(l,0,1);if(s===0){this.r=this.g=this.b=l}else{const p=l<=0.5?l*(1+s):l+s-l*s;const q=2*l-p;this.r=hue2rgb(q,p,h+1/3);this.g=hue2rgb(q,p,h);this.b=hue2rgb(q,p,h-1/3)}ColorManagement.toWorkingColorSpace(this,colorSpace);return this}setStyle(style,colorSpace=SRGBColorSpace){function handleAlpha(string){if(string===undefined)return;if(parseFloat(string)<1){console.warn("THREE.Color: Alpha component of "+style+" will be ignored.")}}let m;if(m=/^(\w+)\(([^\)]*)\)/.exec(style)){let color;const name=m[1];const components=m[2];switch(name){case"rgb":case"rgba":if(color=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)){handleAlpha(color[4]);return this.setRGB(Math.min(255,parseInt(color[1],10))/255,Math.min(255,parseInt(color[2],10))/255,Math.min(255,parseInt(color[3],10))/255,colorSpace)}if(color=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)){handleAlpha(color[4]);return this.setRGB(Math.min(100,parseInt(color[1],10))/100,Math.min(100,parseInt(color[2],10))/100,Math.min(100,parseInt(color[3],10))/100,colorSpace)}break;case"hsl":case"hsla":if(color=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(components)){handleAlpha(color[4]);return this.setHSL(parseFloat(color[1])/360,parseFloat(color[2])/100,parseFloat(color[3])/100,colorSpace)}break;default:console.warn("THREE.Color: Unknown color model "+style);}}else if(m=/^\#([A-Fa-f\d]+)$/.exec(style)){const hex=m[1];const size=hex.length;if(size===3){return this.setRGB(parseInt(hex.charAt(0),16)/15,parseInt(hex.charAt(1),16)/15,parseInt(hex.charAt(2),16)/15,colorSpace)}else if(size===6){return this.setHex(parseInt(hex,16),colorSpace)}else{console.warn("THREE.Color: Invalid hex color "+style)}}else if(style&&style.length>0){return this.setColorName(style,colorSpace)}return this}setColorName(style,colorSpace=SRGBColorSpace){const hex=_colorKeywords[style.toLowerCase()];if(hex!==undefined){this.setHex(hex,colorSpace)}else{console.warn("THREE.Color: Unknown color "+style)}return this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(color){this.r=color.r;this.g=color.g;this.b=color.b;return this}copySRGBToLinear(color){this.r=SRGBToLinear(color.r);this.g=SRGBToLinear(color.g);this.b=SRGBToLinear(color.b);return this}copyLinearToSRGB(color){this.r=LinearToSRGB(color.r);this.g=LinearToSRGB(color.g);this.b=LinearToSRGB(color.b);return this}convertSRGBToLinear(){this.copySRGBToLinear(this);return this}convertLinearToSRGB(){this.copyLinearToSRGB(this);return this}getHex(colorSpace=SRGBColorSpace){ColorManagement.fromWorkingColorSpace(_color.copy(this),colorSpace);return Math.round(clamp(_color.r*255,0,255))*65536+Math.round(clamp(_color.g*255,0,255))*256+Math.round(clamp(_color.b*255,0,255))}getHexString(colorSpace=SRGBColorSpace){return("000000"+this.getHex(colorSpace).toString(16)).slice(-6)}getHSL(target,colorSpace=ColorManagement.workingColorSpace){ColorManagement.fromWorkingColorSpace(_color.copy(this),colorSpace);const r=_color.r,g=_color.g,b=_color.b;const max=Math.max(r,g,b);const min=Math.min(r,g,b);let hue,saturation;const lightness=(min+max)/2;if(min===max){hue=0;saturation=0}else{const delta=max-min;saturation=lightness<=0.5?delta/(max+min):delta/(2-max-min);switch(max){case r:hue=(g-b)/delta+(g0!==value>0){this.version++}this._alphaTest=value}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(values){if(values===undefined)return;for(const key in values){const newValue=values[key];if(newValue===undefined){console.warn(`THREE.Material: parameter '${key}' has value of undefined.`);continue}const currentValue=this[key];if(currentValue===undefined){console.warn(`THREE.Material: '${key}' is not a property of THREE.${this.type}.`);continue}if(currentValue&¤tValue.isColor){currentValue.set(newValue)}else if(currentValue&¤tValue.isVector3&&newValue&&newValue.isVector3){currentValue.copy(newValue)}else{this[key]=newValue}}}toJSON(meta){const isRootObject=meta===undefined||typeof meta==="string";if(isRootObject){meta={textures:{},images:{}}}const data={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};data.uuid=this.uuid;data.type=this.type;if(this.name!=="")data.name=this.name;if(this.color&&this.color.isColor)data.color=this.color.getHex();if(this.roughness!==undefined)data.roughness=this.roughness;if(this.metalness!==undefined)data.metalness=this.metalness;if(this.sheen!==undefined)data.sheen=this.sheen;if(this.sheenColor&&this.sheenColor.isColor)data.sheenColor=this.sheenColor.getHex();if(this.sheenRoughness!==undefined)data.sheenRoughness=this.sheenRoughness;if(this.emissive&&this.emissive.isColor)data.emissive=this.emissive.getHex();if(this.emissiveIntensity!==undefined&&this.emissiveIntensity!==1)data.emissiveIntensity=this.emissiveIntensity;if(this.specular&&this.specular.isColor)data.specular=this.specular.getHex();if(this.specularIntensity!==undefined)data.specularIntensity=this.specularIntensity;if(this.specularColor&&this.specularColor.isColor)data.specularColor=this.specularColor.getHex();if(this.shininess!==undefined)data.shininess=this.shininess;if(this.clearcoat!==undefined)data.clearcoat=this.clearcoat;if(this.clearcoatRoughness!==undefined)data.clearcoatRoughness=this.clearcoatRoughness;if(this.clearcoatMap&&this.clearcoatMap.isTexture){data.clearcoatMap=this.clearcoatMap.toJSON(meta).uuid}if(this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture){data.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(meta).uuid}if(this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture){data.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(meta).uuid;data.clearcoatNormalScale=this.clearcoatNormalScale.toArray()}if(this.iridescence!==undefined)data.iridescence=this.iridescence;if(this.iridescenceIOR!==undefined)data.iridescenceIOR=this.iridescenceIOR;if(this.iridescenceThicknessRange!==undefined)data.iridescenceThicknessRange=this.iridescenceThicknessRange;if(this.iridescenceMap&&this.iridescenceMap.isTexture){data.iridescenceMap=this.iridescenceMap.toJSON(meta).uuid}if(this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture){data.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(meta).uuid}if(this.anisotropy!==undefined)data.anisotropy=this.anisotropy;if(this.anisotropyRotation!==undefined)data.anisotropyRotation=this.anisotropyRotation;if(this.anisotropyMap&&this.anisotropyMap.isTexture){data.anisotropyMap=this.anisotropyMap.toJSON(meta).uuid}if(this.map&&this.map.isTexture)data.map=this.map.toJSON(meta).uuid;if(this.matcap&&this.matcap.isTexture)data.matcap=this.matcap.toJSON(meta).uuid;if(this.alphaMap&&this.alphaMap.isTexture)data.alphaMap=this.alphaMap.toJSON(meta).uuid;if(this.lightMap&&this.lightMap.isTexture){data.lightMap=this.lightMap.toJSON(meta).uuid;data.lightMapIntensity=this.lightMapIntensity}if(this.aoMap&&this.aoMap.isTexture){data.aoMap=this.aoMap.toJSON(meta).uuid;data.aoMapIntensity=this.aoMapIntensity}if(this.bumpMap&&this.bumpMap.isTexture){data.bumpMap=this.bumpMap.toJSON(meta).uuid;data.bumpScale=this.bumpScale}if(this.normalMap&&this.normalMap.isTexture){data.normalMap=this.normalMap.toJSON(meta).uuid;data.normalMapType=this.normalMapType;data.normalScale=this.normalScale.toArray()}if(this.displacementMap&&this.displacementMap.isTexture){data.displacementMap=this.displacementMap.toJSON(meta).uuid;data.displacementScale=this.displacementScale;data.displacementBias=this.displacementBias}if(this.roughnessMap&&this.roughnessMap.isTexture)data.roughnessMap=this.roughnessMap.toJSON(meta).uuid;if(this.metalnessMap&&this.metalnessMap.isTexture)data.metalnessMap=this.metalnessMap.toJSON(meta).uuid;if(this.emissiveMap&&this.emissiveMap.isTexture)data.emissiveMap=this.emissiveMap.toJSON(meta).uuid;if(this.specularMap&&this.specularMap.isTexture)data.specularMap=this.specularMap.toJSON(meta).uuid;if(this.specularIntensityMap&&this.specularIntensityMap.isTexture)data.specularIntensityMap=this.specularIntensityMap.toJSON(meta).uuid;if(this.specularColorMap&&this.specularColorMap.isTexture)data.specularColorMap=this.specularColorMap.toJSON(meta).uuid;if(this.envMap&&this.envMap.isTexture){data.envMap=this.envMap.toJSON(meta).uuid;if(this.combine!==undefined)data.combine=this.combine}if(this.envMapRotation!==undefined)data.envMapRotation=this.envMapRotation.toArray();if(this.envMapIntensity!==undefined)data.envMapIntensity=this.envMapIntensity;if(this.reflectivity!==undefined)data.reflectivity=this.reflectivity;if(this.refractionRatio!==undefined)data.refractionRatio=this.refractionRatio;if(this.gradientMap&&this.gradientMap.isTexture){data.gradientMap=this.gradientMap.toJSON(meta).uuid}if(this.transmission!==undefined)data.transmission=this.transmission;if(this.transmissionMap&&this.transmissionMap.isTexture)data.transmissionMap=this.transmissionMap.toJSON(meta).uuid;if(this.thickness!==undefined)data.thickness=this.thickness;if(this.thicknessMap&&this.thicknessMap.isTexture)data.thicknessMap=this.thicknessMap.toJSON(meta).uuid;if(this.attenuationDistance!==undefined&&this.attenuationDistance!==Infinity)data.attenuationDistance=this.attenuationDistance;if(this.attenuationColor!==undefined)data.attenuationColor=this.attenuationColor.getHex();if(this.size!==undefined)data.size=this.size;if(this.shadowSide!==null)data.shadowSide=this.shadowSide;if(this.sizeAttenuation!==undefined)data.sizeAttenuation=this.sizeAttenuation;if(this.blending!==NormalBlending)data.blending=this.blending;if(this.side!==FrontSide)data.side=this.side;if(this.vertexColors===true)data.vertexColors=true;if(this.opacity<1)data.opacity=this.opacity;if(this.transparent===true)data.transparent=true;if(this.blendSrc!==SrcAlphaFactor)data.blendSrc=this.blendSrc;if(this.blendDst!==OneMinusSrcAlphaFactor)data.blendDst=this.blendDst;if(this.blendEquation!==AddEquation)data.blendEquation=this.blendEquation;if(this.blendSrcAlpha!==null)data.blendSrcAlpha=this.blendSrcAlpha;if(this.blendDstAlpha!==null)data.blendDstAlpha=this.blendDstAlpha;if(this.blendEquationAlpha!==null)data.blendEquationAlpha=this.blendEquationAlpha;if(this.blendColor&&this.blendColor.isColor)data.blendColor=this.blendColor.getHex();if(this.blendAlpha!==0)data.blendAlpha=this.blendAlpha;if(this.depthFunc!==LessEqualDepth)data.depthFunc=this.depthFunc;if(this.depthTest===false)data.depthTest=this.depthTest;if(this.depthWrite===false)data.depthWrite=this.depthWrite;if(this.colorWrite===false)data.colorWrite=this.colorWrite;if(this.stencilWriteMask!==255)data.stencilWriteMask=this.stencilWriteMask;if(this.stencilFunc!==AlwaysStencilFunc)data.stencilFunc=this.stencilFunc;if(this.stencilRef!==0)data.stencilRef=this.stencilRef;if(this.stencilFuncMask!==255)data.stencilFuncMask=this.stencilFuncMask;if(this.stencilFail!==KeepStencilOp)data.stencilFail=this.stencilFail;if(this.stencilZFail!==KeepStencilOp)data.stencilZFail=this.stencilZFail;if(this.stencilZPass!==KeepStencilOp)data.stencilZPass=this.stencilZPass;if(this.stencilWrite===true)data.stencilWrite=this.stencilWrite;if(this.rotation!==undefined&&this.rotation!==0)data.rotation=this.rotation;if(this.polygonOffset===true)data.polygonOffset=true;if(this.polygonOffsetFactor!==0)data.polygonOffsetFactor=this.polygonOffsetFactor;if(this.polygonOffsetUnits!==0)data.polygonOffsetUnits=this.polygonOffsetUnits;if(this.linewidth!==undefined&&this.linewidth!==1)data.linewidth=this.linewidth;if(this.dashSize!==undefined)data.dashSize=this.dashSize;if(this.gapSize!==undefined)data.gapSize=this.gapSize;if(this.scale!==undefined)data.scale=this.scale;if(this.dithering===true)data.dithering=true;if(this.alphaTest>0)data.alphaTest=this.alphaTest;if(this.alphaHash===true)data.alphaHash=true;if(this.alphaToCoverage===true)data.alphaToCoverage=true;if(this.premultipliedAlpha===true)data.premultipliedAlpha=true;if(this.forceSinglePass===true)data.forceSinglePass=true;if(this.wireframe===true)data.wireframe=true;if(this.wireframeLinewidth>1)data.wireframeLinewidth=this.wireframeLinewidth;if(this.wireframeLinecap!=="round")data.wireframeLinecap=this.wireframeLinecap;if(this.wireframeLinejoin!=="round")data.wireframeLinejoin=this.wireframeLinejoin;if(this.flatShading===true)data.flatShading=true;if(this.visible===false)data.visible=false;if(this.toneMapped===false)data.toneMapped=false;if(this.fog===false)data.fog=false;if(Object.keys(this.userData).length>0)data.userData=this.userData;function extractFromCache(cache){const values=[];for(const key in cache){const data=cache[key];delete data.metadata;values.push(data)}return values}if(isRootObject){const textures=extractFromCache(meta.textures);const images=extractFromCache(meta.images);if(textures.length>0)data.textures=textures;if(images.length>0)data.images=images}return data}clone(){return new this.constructor().copy(this)}copy(source){this.name=source.name;this.blending=source.blending;this.side=source.side;this.vertexColors=source.vertexColors;this.opacity=source.opacity;this.transparent=source.transparent;this.blendSrc=source.blendSrc;this.blendDst=source.blendDst;this.blendEquation=source.blendEquation;this.blendSrcAlpha=source.blendSrcAlpha;this.blendDstAlpha=source.blendDstAlpha;this.blendEquationAlpha=source.blendEquationAlpha;this.blendColor.copy(source.blendColor);this.blendAlpha=source.blendAlpha;this.depthFunc=source.depthFunc;this.depthTest=source.depthTest;this.depthWrite=source.depthWrite;this.stencilWriteMask=source.stencilWriteMask;this.stencilFunc=source.stencilFunc;this.stencilRef=source.stencilRef;this.stencilFuncMask=source.stencilFuncMask;this.stencilFail=source.stencilFail;this.stencilZFail=source.stencilZFail;this.stencilZPass=source.stencilZPass;this.stencilWrite=source.stencilWrite;const srcPlanes=source.clippingPlanes;let dstPlanes=null;if(srcPlanes!==null){const n=srcPlanes.length;dstPlanes=new Array(n);for(let i=0;i!==n;++i){dstPlanes[i]=srcPlanes[i].clone()}}this.clippingPlanes=dstPlanes;this.clipIntersection=source.clipIntersection;this.clipShadows=source.clipShadows;this.shadowSide=source.shadowSide;this.colorWrite=source.colorWrite;this.precision=source.precision;this.polygonOffset=source.polygonOffset;this.polygonOffsetFactor=source.polygonOffsetFactor;this.polygonOffsetUnits=source.polygonOffsetUnits;this.dithering=source.dithering;this.alphaTest=source.alphaTest;this.alphaHash=source.alphaHash;this.alphaToCoverage=source.alphaToCoverage;this.premultipliedAlpha=source.premultipliedAlpha;this.forceSinglePass=source.forceSinglePass;this.visible=source.visible;this.toneMapped=source.toneMapped;this.userData=JSON.parse(JSON.stringify(source.userData));return this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(value){if(value===true)this.version++}}class MeshBasicMaterial extends Material{constructor(parameters){super();this.isMeshBasicMaterial=true;this.type="MeshBasicMaterial";this.color=new Color(16777215);this.map=null;this.lightMap=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.specularMap=null;this.alphaMap=null;this.envMap=null;this.envMapRotation=new Euler;this.combine=MultiplyOperation;this.reflectivity=1;this.refractionRatio=0.98;this.wireframe=false;this.wireframeLinewidth=1;this.wireframeLinecap="round";this.wireframeLinejoin="round";this.fog=true;this.setValues(parameters)}copy(source){super.copy(source);this.color.copy(source.color);this.map=source.map;this.lightMap=source.lightMap;this.lightMapIntensity=source.lightMapIntensity;this.aoMap=source.aoMap;this.aoMapIntensity=source.aoMapIntensity;this.specularMap=source.specularMap;this.alphaMap=source.alphaMap;this.envMap=source.envMap;this.envMapRotation.copy(source.envMapRotation);this.combine=source.combine;this.reflectivity=source.reflectivity;this.refractionRatio=source.refractionRatio;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.wireframeLinecap=source.wireframeLinecap;this.wireframeLinejoin=source.wireframeLinejoin;this.fog=source.fog;return this}}const _tables=_generateTables();function _generateTables(){const buffer=new ArrayBuffer(4);const floatView=new Float32Array(buffer);const uint32View=new Uint32Array(buffer);const baseTable=new Uint32Array(512);const shiftTable=new Uint32Array(512);for(let i=0;i<256;++i){const e=i-127;if(e<-27){baseTable[i]=0;baseTable[i|256]=32768;shiftTable[i]=24;shiftTable[i|256]=24}else if(e<-14){baseTable[i]=1024>>-e-14;baseTable[i|256]=1024>>-e-14|32768;shiftTable[i]=-e-1;shiftTable[i|256]=-e-1}else if(e<=15){baseTable[i]=e+15<<10;baseTable[i|256]=e+15<<10|32768;shiftTable[i]=13;shiftTable[i|256]=13}else if(e<128){baseTable[i]=31744;baseTable[i|256]=64512;shiftTable[i]=24;shiftTable[i|256]=24}else{baseTable[i]=31744;baseTable[i|256]=64512;shiftTable[i]=13;shiftTable[i|256]=13}}const mantissaTable=new Uint32Array(2048);const exponentTable=new Uint32Array(64);const offsetTable=new Uint32Array(64);for(let i=1;i<1024;++i){let m=i<<13;let e=0;while((m&8388608)===0){m<<=1;e-=8388608}m&=~8388608;e+=947912704;mantissaTable[i]=m|e}for(let i=1024;i<2048;++i){mantissaTable[i]=939524096+(i-1024<<13)}for(let i=1;i<31;++i){exponentTable[i]=i<<23}exponentTable[31]=1199570944;exponentTable[32]=2147483648;for(let i=33;i<63;++i){exponentTable[i]=2147483648+(i-32<<23)}exponentTable[63]=3347054592;for(let i=1;i<64;++i){if(i!==32){offsetTable[i]=1024}}return{floatView:floatView,uint32View:uint32View,baseTable:baseTable,shiftTable:shiftTable,mantissaTable:mantissaTable,exponentTable:exponentTable,offsetTable:offsetTable}}function toHalfFloat(val){if(Math.abs(val)>65504)console.warn("THREE.DataUtils.toHalfFloat(): Value out of range.");val=clamp(val,-65504,65504);_tables.floatView[0]=val;const f=_tables.uint32View[0];const e=f>>23&511;return _tables.baseTable[e]+((f&8388607)>>_tables.shiftTable[e])}function fromHalfFloat(val){const m=val>>10;_tables.uint32View[0]=_tables.mantissaTable[_tables.offsetTable[m]+(val&1023)]+_tables.exponentTable[m];return _tables.floatView[0]}const DataUtils={toHalfFloat:toHalfFloat,fromHalfFloat:fromHalfFloat};const _vector$9=new Vector3;const _vector2$1=new Vector2;class BufferAttribute{constructor(array,itemSize,normalized=false){if(Array.isArray(array)){throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.")}this.isBufferAttribute=true;this.name="";this.array=array;this.itemSize=itemSize;this.count=array!==undefined?array.length/itemSize:0;this.normalized=normalized;this.usage=StaticDrawUsage;this._updateRange={offset:0,count:-1};this.updateRanges=[];this.gpuType=FloatType;this.version=0}onUploadCallback(){}set needsUpdate(value){if(value===true)this.version++}get updateRange(){warnOnce("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.");return this._updateRange}setUsage(value){this.usage=value;return this}addUpdateRange(start,count){this.updateRanges.push({start,count})}clearUpdateRanges(){this.updateRanges.length=0}copy(source){this.name=source.name;this.array=new source.array.constructor(source.array);this.itemSize=source.itemSize;this.count=source.count;this.normalized=source.normalized;this.usage=source.usage;this.gpuType=source.gpuType;return this}copyAt(index1,attribute,index2){index1*=this.itemSize;index2*=attribute.itemSize;for(let i=0,l=this.itemSize;i0)data.userData=this.userData;if(this.parameters!==undefined){const parameters=this.parameters;for(const key in parameters){if(parameters[key]!==undefined)data[key]=parameters[key]}return data}data.data={attributes:{}};const index=this.index;if(index!==null){data.data.index={type:index.array.constructor.name,array:Array.prototype.slice.call(index.array)}}const attributes=this.attributes;for(const key in attributes){const attribute=attributes[key];data.data.attributes[key]=attribute.toJSON(data.data)}const morphAttributes={};let hasMorphAttributes=false;for(const key in this.morphAttributes){const attributeArray=this.morphAttributes[key];const array=[];for(let i=0,il=attributeArray.length;i0){morphAttributes[key]=array;hasMorphAttributes=true}}if(hasMorphAttributes){data.data.morphAttributes=morphAttributes;data.data.morphTargetsRelative=this.morphTargetsRelative}const groups=this.groups;if(groups.length>0){data.data.groups=JSON.parse(JSON.stringify(groups))}const boundingSphere=this.boundingSphere;if(boundingSphere!==null){data.data.boundingSphere={center:boundingSphere.center.toArray(),radius:boundingSphere.radius}}return data}clone(){return new this.constructor().copy(this)}copy(source){this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingBox=null;this.boundingSphere=null;const data={};this.name=source.name;const index=source.index;if(index!==null){this.setIndex(index.clone(data))}const attributes=source.attributes;for(const name in attributes){const attribute=attributes[name];this.setAttribute(name,attribute.clone(data))}const morphAttributes=source.morphAttributes;for(const name in morphAttributes){const array=[];const morphAttribute=morphAttributes[name];for(let i=0,l=morphAttribute.length;i0){const morphAttribute=morphAttributes[keys[0]];if(morphAttribute!==undefined){this.morphTargetInfluences=[];this.morphTargetDictionary={};for(let m=0,ml=morphAttribute.length;m(raycaster.far-raycaster.near)**2)return}_inverseMatrix$3.copy(matrixWorld).invert();_ray$3.copy(raycaster.ray).applyMatrix4(_inverseMatrix$3);if(geometry.boundingBox!==null){if(_ray$3.intersectsBox(geometry.boundingBox)===false)return}this._computeIntersections(raycaster,intersects,_ray$3)}_computeIntersections(raycaster,intersects,rayLocalSpace){let intersection;const geometry=this.geometry;const material=this.material;const index=geometry.index;const position=geometry.attributes.position;const uv=geometry.attributes.uv;const uv1=geometry.attributes.uv1;const normal=geometry.attributes.normal;const groups=geometry.groups;const drawRange=geometry.drawRange;if(index!==null){if(Array.isArray(material)){for(let i=0,il=groups.length;iraycaster.far)return null;return{distance:distance,point:_intersectionPointWorld.clone(),object:object}}function checkGeometryIntersection(object,material,raycaster,ray,uv,uv1,normal,a,b,c){object.getVertexPosition(a,_vA$1);object.getVertexPosition(b,_vB$1);object.getVertexPosition(c,_vC$1);const intersection=checkIntersection(object,material,raycaster,ray,_vA$1,_vB$1,_vC$1,_intersectionPoint);if(intersection){if(uv){_uvA$1.fromBufferAttribute(uv,a);_uvB$1.fromBufferAttribute(uv,b);_uvC$1.fromBufferAttribute(uv,c);intersection.uv=Triangle.getInterpolation(_intersectionPoint,_vA$1,_vB$1,_vC$1,_uvA$1,_uvB$1,_uvC$1,new Vector2)}if(uv1){_uvA$1.fromBufferAttribute(uv1,a);_uvB$1.fromBufferAttribute(uv1,b);_uvC$1.fromBufferAttribute(uv1,c);intersection.uv1=Triangle.getInterpolation(_intersectionPoint,_vA$1,_vB$1,_vC$1,_uvA$1,_uvB$1,_uvC$1,new Vector2)}if(normal){_normalA.fromBufferAttribute(normal,a);_normalB.fromBufferAttribute(normal,b);_normalC.fromBufferAttribute(normal,c);intersection.normal=Triangle.getInterpolation(_intersectionPoint,_vA$1,_vB$1,_vC$1,_normalA,_normalB,_normalC,new Vector3);if(intersection.normal.dot(ray.direction)>0){intersection.normal.multiplyScalar(-1)}}const face={a:a,b:b,c:c,normal:new Vector3,materialIndex:0};Triangle.getNormal(_vA$1,_vB$1,_vC$1,face.normal);intersection.face=face}return intersection}class BoxGeometry extends BufferGeometry{constructor(width=1,height=1,depth=1,widthSegments=1,heightSegments=1,depthSegments=1){super();this.type="BoxGeometry";this.parameters={width:width,height:height,depth:depth,widthSegments:widthSegments,heightSegments:heightSegments,depthSegments:depthSegments};const scope=this;widthSegments=Math.floor(widthSegments);heightSegments=Math.floor(heightSegments);depthSegments=Math.floor(depthSegments);const indices=[];const vertices=[];const normals=[];const uvs=[];let numberOfVertices=0;let groupStart=0;buildPlane("z","y","x",-1,-1,depth,height,width,depthSegments,heightSegments,0);buildPlane("z","y","x",1,-1,depth,height,-width,depthSegments,heightSegments,1);buildPlane("x","z","y",1,1,width,depth,height,widthSegments,depthSegments,2);buildPlane("x","z","y",1,-1,width,depth,-height,widthSegments,depthSegments,3);buildPlane("x","y","z",1,-1,width,height,depth,widthSegments,heightSegments,4);buildPlane("x","y","z",-1,-1,width,height,-depth,widthSegments,heightSegments,5);this.setIndex(indices);this.setAttribute("position",new Float32BufferAttribute(vertices,3));this.setAttribute("normal",new Float32BufferAttribute(normals,3));this.setAttribute("uv",new Float32BufferAttribute(uvs,2));function buildPlane(u,v,w,udir,vdir,width,height,depth,gridX,gridY,materialIndex){const segmentWidth=width/gridX;const segmentHeight=height/gridY;const widthHalf=width/2;const heightHalf=height/2;const depthHalf=depth/2;const gridX1=gridX+1;const gridY1=gridY+1;let vertexCounter=0;let groupCount=0;const vector=new Vector3;for(let iy=0;iy0?1:-1;normals.push(vector.x,vector.y,vector.z);uvs.push(ix/gridX);uvs.push(1-iy/gridY);vertexCounter+=1}}for(let iy=0;iy0)data.defines=this.defines;data.vertexShader=this.vertexShader;data.fragmentShader=this.fragmentShader;data.lights=this.lights;data.clipping=this.clipping;const extensions={};for(const key in this.extensions){if(this.extensions[key]===true)extensions[key]=true}if(Object.keys(extensions).length>0)data.extensions=extensions;return data}}class Camera extends Object3D{constructor(){super();this.isCamera=true;this.type="Camera";this.matrixWorldInverse=new Matrix4;this.projectionMatrix=new Matrix4;this.projectionMatrixInverse=new Matrix4;this.coordinateSystem=WebGLCoordinateSystem}copy(source,recursive){super.copy(source,recursive);this.matrixWorldInverse.copy(source.matrixWorldInverse);this.projectionMatrix.copy(source.projectionMatrix);this.projectionMatrixInverse.copy(source.projectionMatrixInverse);this.coordinateSystem=source.coordinateSystem;return this}getWorldDirection(target){return super.getWorldDirection(target).negate()}updateMatrixWorld(force){super.updateMatrixWorld(force);this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(updateParents,updateChildren){super.updateWorldMatrix(updateParents,updateChildren);this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const _v3$1=new Vector3;const _minTarget=new Vector2;const _maxTarget=new Vector2;class PerspectiveCamera extends Camera{constructor(fov=50,aspect=1,near=0.1,far=2000){super();this.isPerspectiveCamera=true;this.type="PerspectiveCamera";this.fov=fov;this.zoom=1;this.near=near;this.far=far;this.focus=10;this.aspect=aspect;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}copy(source,recursive){super.copy(source,recursive);this.fov=source.fov;this.zoom=source.zoom;this.near=source.near;this.far=source.far;this.focus=source.focus;this.aspect=source.aspect;this.view=source.view===null?null:Object.assign({},source.view);this.filmGauge=source.filmGauge;this.filmOffset=source.filmOffset;return this}setFocalLength(focalLength){const vExtentSlope=0.5*this.getFilmHeight()/focalLength;this.fov=RAD2DEG*2*Math.atan(vExtentSlope);this.updateProjectionMatrix()}getFocalLength(){const vExtentSlope=Math.tan(DEG2RAD*0.5*this.fov);return 0.5*this.getFilmHeight()/vExtentSlope}getEffectiveFOV(){return RAD2DEG*2*Math.atan(Math.tan(DEG2RAD*0.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(distance,minTarget,maxTarget){_v3$1.set(-1,-1,0.5).applyMatrix4(this.projectionMatrixInverse);minTarget.set(_v3$1.x,_v3$1.y).multiplyScalar(-distance/_v3$1.z);_v3$1.set(1,1,0.5).applyMatrix4(this.projectionMatrixInverse);maxTarget.set(_v3$1.x,_v3$1.y).multiplyScalar(-distance/_v3$1.z)}getViewSize(distance,target){this.getViewBounds(distance,_minTarget,_maxTarget);return target.subVectors(_maxTarget,_minTarget)}setViewOffset(fullWidth,fullHeight,x,y,width,height){this.aspect=fullWidth/fullHeight;if(this.view===null){this.view={enabled:true,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}}this.view.enabled=true;this.view.fullWidth=fullWidth;this.view.fullHeight=fullHeight;this.view.offsetX=x;this.view.offsetY=y;this.view.width=width;this.view.height=height;this.updateProjectionMatrix()}clearViewOffset(){if(this.view!==null){this.view.enabled=false}this.updateProjectionMatrix()}updateProjectionMatrix(){const near=this.near;let top=near*Math.tan(DEG2RAD*0.5*this.fov)/this.zoom;let height=2*top;let width=this.aspect*height;let left=-0.5*width;const view=this.view;if(this.view!==null&&this.view.enabled){const fullWidth=view.fullWidth,fullHeight=view.fullHeight;left+=view.offsetX*width/fullWidth;top-=view.offsetY*height/fullHeight;width*=view.width/fullWidth;height*=view.height/fullHeight}const skew=this.filmOffset;if(skew!==0)left+=near*skew/this.getFilmWidth();this.projectionMatrix.makePerspective(left,left+width,top,top-height,near,this.far,this.coordinateSystem);this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(meta){const data=super.toJSON(meta);data.object.fov=this.fov;data.object.zoom=this.zoom;data.object.near=this.near;data.object.far=this.far;data.object.focus=this.focus;data.object.aspect=this.aspect;if(this.view!==null)data.object.view=Object.assign({},this.view);data.object.filmGauge=this.filmGauge;data.object.filmOffset=this.filmOffset;return data}}const fov=-90;const aspect=1;class CubeCamera extends Object3D{constructor(near,far,renderTarget){super();this.type="CubeCamera";this.renderTarget=renderTarget;this.coordinateSystem=null;this.activeMipmapLevel=0;const cameraPX=new PerspectiveCamera(fov,aspect,near,far);cameraPX.layers=this.layers;this.add(cameraPX);const cameraNX=new PerspectiveCamera(fov,aspect,near,far);cameraNX.layers=this.layers;this.add(cameraNX);const cameraPY=new PerspectiveCamera(fov,aspect,near,far);cameraPY.layers=this.layers;this.add(cameraPY);const cameraNY=new PerspectiveCamera(fov,aspect,near,far);cameraNY.layers=this.layers;this.add(cameraNY);const cameraPZ=new PerspectiveCamera(fov,aspect,near,far);cameraPZ.layers=this.layers;this.add(cameraPZ);const cameraNZ=new PerspectiveCamera(fov,aspect,near,far);cameraNZ.layers=this.layers;this.add(cameraNZ)}updateCoordinateSystem(){const coordinateSystem=this.coordinateSystem;const cameras=this.children.concat();const[cameraPX,cameraNX,cameraPY,cameraNY,cameraPZ,cameraNZ]=cameras;for(const camera of cameras)this.remove(camera);if(coordinateSystem===WebGLCoordinateSystem){cameraPX.up.set(0,1,0);cameraPX.lookAt(1,0,0);cameraNX.up.set(0,1,0);cameraNX.lookAt(-1,0,0);cameraPY.up.set(0,0,-1);cameraPY.lookAt(0,1,0);cameraNY.up.set(0,0,1);cameraNY.lookAt(0,-1,0);cameraPZ.up.set(0,1,0);cameraPZ.lookAt(0,0,1);cameraNZ.up.set(0,1,0);cameraNZ.lookAt(0,0,-1)}else if(coordinateSystem===WebGPUCoordinateSystem){cameraPX.up.set(0,-1,0);cameraPX.lookAt(-1,0,0);cameraNX.up.set(0,-1,0);cameraNX.lookAt(1,0,0);cameraPY.up.set(0,0,1);cameraPY.lookAt(0,1,0);cameraNY.up.set(0,0,-1);cameraNY.lookAt(0,-1,0);cameraPZ.up.set(0,-1,0);cameraPZ.lookAt(0,0,1);cameraNZ.up.set(0,-1,0);cameraNZ.lookAt(0,0,-1)}else{throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+coordinateSystem)}for(const camera of cameras){this.add(camera);camera.updateMatrixWorld()}}update(renderer,scene){if(this.parent===null)this.updateMatrixWorld();const{renderTarget,activeMipmapLevel}=this;if(this.coordinateSystem!==renderer.coordinateSystem){this.coordinateSystem=renderer.coordinateSystem;this.updateCoordinateSystem()}const[cameraPX,cameraNX,cameraPY,cameraNY,cameraPZ,cameraNZ]=this.children;const currentRenderTarget=renderer.getRenderTarget();const currentActiveCubeFace=renderer.getActiveCubeFace();const currentActiveMipmapLevel=renderer.getActiveMipmapLevel();const currentXrEnabled=renderer.xr.enabled;renderer.xr.enabled=false;const generateMipmaps=renderTarget.texture.generateMipmaps;renderTarget.texture.generateMipmaps=false;renderer.setRenderTarget(renderTarget,0,activeMipmapLevel);renderer.render(scene,cameraPX);renderer.setRenderTarget(renderTarget,1,activeMipmapLevel);renderer.render(scene,cameraNX);renderer.setRenderTarget(renderTarget,2,activeMipmapLevel);renderer.render(scene,cameraPY);renderer.setRenderTarget(renderTarget,3,activeMipmapLevel);renderer.render(scene,cameraNY);renderer.setRenderTarget(renderTarget,4,activeMipmapLevel);renderer.render(scene,cameraPZ);renderTarget.texture.generateMipmaps=generateMipmaps;renderer.setRenderTarget(renderTarget,5,activeMipmapLevel);renderer.render(scene,cameraNZ);renderer.setRenderTarget(currentRenderTarget,currentActiveCubeFace,currentActiveMipmapLevel);renderer.xr.enabled=currentXrEnabled;renderTarget.texture.needsPMREMUpdate=true}}class CubeTexture extends Texture{constructor(images,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy,colorSpace){images=images!==undefined?images:[];mapping=mapping!==undefined?mapping:CubeReflectionMapping;super(images,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy,colorSpace);this.isCubeTexture=true;this.flipY=false}get images(){return this.image}set images(value){this.image=value}}class WebGLCubeRenderTarget extends WebGLRenderTarget{constructor(size=1,options={}){super(size,size,options);this.isWebGLCubeRenderTarget=true;const image={width:size,height:size,depth:1};const images=[image,image,image,image,image,image];this.texture=new CubeTexture(images,options.mapping,options.wrapS,options.wrapT,options.magFilter,options.minFilter,options.format,options.type,options.anisotropy,options.colorSpace);this.texture.isRenderTargetTexture=true;this.texture.generateMipmaps=options.generateMipmaps!==undefined?options.generateMipmaps:false;this.texture.minFilter=options.minFilter!==undefined?options.minFilter:LinearFilter}fromEquirectangularTexture(renderer,texture){this.texture.type=texture.type;this.texture.colorSpace=texture.colorSpace;this.texture.generateMipmaps=texture.generateMipmaps;this.texture.minFilter=texture.minFilter;this.texture.magFilter=texture.magFilter;const shader={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; vec3 transformDirection( in vec3 dir, in mat4 matrix ) { return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); } void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include } `,fragmentShader:` uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { vec3 direction = normalize( vWorldDirection ); vec2 sampleUV = equirectUv( direction ); gl_FragColor = texture2D( tEquirect, sampleUV ); } `};const geometry=new BoxGeometry(5,5,5);const material=new ShaderMaterial({name:"CubemapFromEquirect",uniforms:cloneUniforms(shader.uniforms),vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader,side:BackSide,blending:NoBlending});material.uniforms.tEquirect.value=texture;const mesh=new Mesh(geometry,material);const currentMinFilter=texture.minFilter;if(texture.minFilter===LinearMipmapLinearFilter)texture.minFilter=LinearFilter;const camera=new CubeCamera(1,10,this);camera.update(renderer,mesh);texture.minFilter=currentMinFilter;mesh.geometry.dispose();mesh.material.dispose();return this}clear(renderer,color,depth,stencil){const currentRenderTarget=renderer.getRenderTarget();for(let i=0;i<6;i++){renderer.setRenderTarget(this,i);renderer.clear(color,depth,stencil)}renderer.setRenderTarget(currentRenderTarget)}}const _vector1=new Vector3;const _vector2=new Vector3;const _normalMatrix=new Matrix3;class Plane{constructor(normal=new Vector3(1,0,0),constant=0){this.isPlane=true;this.normal=normal;this.constant=constant}set(normal,constant){this.normal.copy(normal);this.constant=constant;return this}setComponents(x,y,z,w){this.normal.set(x,y,z);this.constant=w;return this}setFromNormalAndCoplanarPoint(normal,point){this.normal.copy(normal);this.constant=-point.dot(this.normal);return this}setFromCoplanarPoints(a,b,c){const normal=_vector1.subVectors(c,b).cross(_vector2.subVectors(a,b)).normalize();this.setFromNormalAndCoplanarPoint(normal,a);return this}copy(plane){this.normal.copy(plane.normal);this.constant=plane.constant;return this}normalize(){const inverseNormalLength=1/this.normal.length();this.normal.multiplyScalar(inverseNormalLength);this.constant*=inverseNormalLength;return this}negate(){this.constant*=-1;this.normal.negate();return this}distanceToPoint(point){return this.normal.dot(point)+this.constant}distanceToSphere(sphere){return this.distanceToPoint(sphere.center)-sphere.radius}projectPoint(point,target){return target.copy(point).addScaledVector(this.normal,-this.distanceToPoint(point))}intersectLine(line,target){const direction=line.delta(_vector1);const denominator=this.normal.dot(direction);if(denominator===0){if(this.distanceToPoint(line.start)===0){return target.copy(line.start)}return null}const t=-(line.start.dot(this.normal)+this.constant)/denominator;if(t<0||t>1){return null}return target.copy(line.start).addScaledVector(direction,t)}intersectsLine(line){const startSign=this.distanceToPoint(line.start);const endSign=this.distanceToPoint(line.end);return startSign<0&&endSign>0||endSign<0&&startSign>0}intersectsBox(box){return box.intersectsPlane(this)}intersectsSphere(sphere){return sphere.intersectsPlane(this)}coplanarPoint(target){return target.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(matrix,optionalNormalMatrix){const normalMatrix=optionalNormalMatrix||_normalMatrix.getNormalMatrix(matrix);const referencePoint=this.coplanarPoint(_vector1).applyMatrix4(matrix);const normal=this.normal.applyMatrix3(normalMatrix).normalize();this.constant=-referencePoint.dot(normal);return this}translate(offset){this.constant-=offset.dot(this.normal);return this}equals(plane){return plane.normal.equals(this.normal)&&plane.constant===this.constant}clone(){return new this.constructor().copy(this)}}const _sphere$5=new Sphere;const _vector$7=new Vector3;class Frustum{constructor(p0=new Plane,p1=new Plane,p2=new Plane,p3=new Plane,p4=new Plane,p5=new Plane){this.planes=[p0,p1,p2,p3,p4,p5]}set(p0,p1,p2,p3,p4,p5){const planes=this.planes;planes[0].copy(p0);planes[1].copy(p1);planes[2].copy(p2);planes[3].copy(p3);planes[4].copy(p4);planes[5].copy(p5);return this}copy(frustum){const planes=this.planes;for(let i=0;i<6;i++){planes[i].copy(frustum.planes[i])}return this}setFromProjectionMatrix(m,coordinateSystem=WebGLCoordinateSystem){const planes=this.planes;const me=m.elements;const me0=me[0],me1=me[1],me2=me[2],me3=me[3];const me4=me[4],me5=me[5],me6=me[6],me7=me[7];const me8=me[8],me9=me[9],me10=me[10],me11=me[11];const me12=me[12],me13=me[13],me14=me[14],me15=me[15];planes[0].setComponents(me3-me0,me7-me4,me11-me8,me15-me12).normalize();planes[1].setComponents(me3+me0,me7+me4,me11+me8,me15+me12).normalize();planes[2].setComponents(me3+me1,me7+me5,me11+me9,me15+me13).normalize();planes[3].setComponents(me3-me1,me7-me5,me11-me9,me15-me13).normalize();planes[4].setComponents(me3-me2,me7-me6,me11-me10,me15-me14).normalize();if(coordinateSystem===WebGLCoordinateSystem){planes[5].setComponents(me3+me2,me7+me6,me11+me10,me15+me14).normalize()}else if(coordinateSystem===WebGPUCoordinateSystem){planes[5].setComponents(me2,me6,me10,me14).normalize()}else{throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+coordinateSystem)}return this}intersectsObject(object){if(object.boundingSphere!==undefined){if(object.boundingSphere===null)object.computeBoundingSphere();_sphere$5.copy(object.boundingSphere).applyMatrix4(object.matrixWorld)}else{const geometry=object.geometry;if(geometry.boundingSphere===null)geometry.computeBoundingSphere();_sphere$5.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld)}return this.intersectsSphere(_sphere$5)}intersectsSprite(sprite){_sphere$5.center.set(0,0,0);_sphere$5.radius=0.7071067811865476;_sphere$5.applyMatrix4(sprite.matrixWorld);return this.intersectsSphere(_sphere$5)}intersectsSphere(sphere){const planes=this.planes;const center=sphere.center;const negRadius=-sphere.radius;for(let i=0;i<6;i++){const distance=planes[i].distanceToPoint(center);if(distance0?box.max.x:box.min.x;_vector$7.y=plane.normal.y>0?box.max.y:box.min.y;_vector$7.z=plane.normal.z>0?box.max.z:box.min.z;if(plane.distanceToPoint(_vector$7)<0){return false}}return true}containsPoint(point){const planes=this.planes;for(let i=0;i<6;i++){if(planes[i].distanceToPoint(point)<0){return false}}return true}clone(){return new this.constructor().copy(this)}}function WebGLAnimation(){let context=null;let isAnimating=false;let animationLoop=null;let requestId=null;function onAnimationFrame(time,frame){animationLoop(time,frame);requestId=context.requestAnimationFrame(onAnimationFrame)}return{start:function(){if(isAnimating===true)return;if(animationLoop===null)return;requestId=context.requestAnimationFrame(onAnimationFrame);isAnimating=true},stop:function(){context.cancelAnimationFrame(requestId);isAnimating=false},setAnimationLoop:function(callback){animationLoop=callback},setContext:function(value){context=value}}}function WebGLAttributes(gl){const buffers=new WeakMap;function createBuffer(attribute,bufferType){const array=attribute.array;const usage=attribute.usage;const size=array.byteLength;const buffer=gl.createBuffer();gl.bindBuffer(bufferType,buffer);gl.bufferData(bufferType,array,usage);attribute.onUploadCallback();let type;if(array instanceof Float32Array){type=gl.FLOAT}else if(array instanceof Uint16Array){if(attribute.isFloat16BufferAttribute){type=gl.HALF_FLOAT}else{type=gl.UNSIGNED_SHORT}}else if(array instanceof Int16Array){type=gl.SHORT}else if(array instanceof Uint32Array){type=gl.UNSIGNED_INT}else if(array instanceof Int32Array){type=gl.INT}else if(array instanceof Int8Array){type=gl.BYTE}else if(array instanceof Uint8Array){type=gl.UNSIGNED_BYTE}else if(array instanceof Uint8ClampedArray){type=gl.UNSIGNED_BYTE}else{throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+array)}return{buffer:buffer,type:type,bytesPerElement:array.BYTES_PER_ELEMENT,version:attribute.version,size:size}}function updateBuffer(buffer,attribute,bufferType){const array=attribute.array;const updateRange=attribute._updateRange;const updateRanges=attribute.updateRanges;gl.bindBuffer(bufferType,buffer);if(updateRange.count===-1&&updateRanges.length===0){gl.bufferSubData(bufferType,0,array)}if(updateRanges.length!==0){for(let i=0,l=updateRanges.length;i0;background=(usePMREM?cubeuvmaps:cubemaps).get(background)}if(background===null){setClear(clearColor,clearAlpha)}else if(background&&background.isColor){setClear(background,1);forceClear=true}const environmentBlendMode=renderer.xr.getEnvironmentBlendMode();if(environmentBlendMode==="additive"){state.buffers.color.setClear(0,0,0,1,premultipliedAlpha)}else if(environmentBlendMode==="alpha-blend"){state.buffers.color.setClear(0,0,0,0,premultipliedAlpha)}if(renderer.autoClear||forceClear){renderer.clear(renderer.autoClearColor,renderer.autoClearDepth,renderer.autoClearStencil)}if(background&&(background.isCubeTexture||background.mapping===CubeUVReflectionMapping)){if(boxMesh===undefined){boxMesh=new Mesh(new BoxGeometry(1,1,1),new ShaderMaterial({name:"BackgroundCubeMaterial",uniforms:cloneUniforms(ShaderLib.backgroundCube.uniforms),vertexShader:ShaderLib.backgroundCube.vertexShader,fragmentShader:ShaderLib.backgroundCube.fragmentShader,side:BackSide,depthTest:false,depthWrite:false,fog:false}));boxMesh.geometry.deleteAttribute("normal");boxMesh.geometry.deleteAttribute("uv");boxMesh.onBeforeRender=function(renderer,scene,camera){this.matrixWorld.copyPosition(camera.matrixWorld)};Object.defineProperty(boxMesh.material,"envMap",{get:function(){return this.uniforms.envMap.value}});objects.update(boxMesh)}_e1$1.copy(scene.backgroundRotation);_e1$1.x*=-1;_e1$1.y*=-1;_e1$1.z*=-1;if(background.isCubeTexture&&background.isRenderTargetTexture===false){_e1$1.y*=-1;_e1$1.z*=-1}boxMesh.material.uniforms.envMap.value=background;boxMesh.material.uniforms.flipEnvMap.value=background.isCubeTexture&&background.isRenderTargetTexture===false?-1:1;boxMesh.material.uniforms.backgroundBlurriness.value=scene.backgroundBlurriness;boxMesh.material.uniforms.backgroundIntensity.value=scene.backgroundIntensity;boxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4(_m1$1.makeRotationFromEuler(_e1$1));boxMesh.material.toneMapped=ColorManagement.getTransfer(background.colorSpace)!==SRGBTransfer;if(currentBackground!==background||currentBackgroundVersion!==background.version||currentTonemapping!==renderer.toneMapping){boxMesh.material.needsUpdate=true;currentBackground=background;currentBackgroundVersion=background.version;currentTonemapping=renderer.toneMapping}boxMesh.layers.enableAll();renderList.unshift(boxMesh,boxMesh.geometry,boxMesh.material,0,0,null)}else if(background&&background.isTexture){if(planeMesh===undefined){planeMesh=new Mesh(new PlaneGeometry(2,2),new ShaderMaterial({name:"BackgroundMaterial",uniforms:cloneUniforms(ShaderLib.background.uniforms),vertexShader:ShaderLib.background.vertexShader,fragmentShader:ShaderLib.background.fragmentShader,side:FrontSide,depthTest:false,depthWrite:false,fog:false}));planeMesh.geometry.deleteAttribute("normal");Object.defineProperty(planeMesh.material,"map",{get:function(){return this.uniforms.t2D.value}});objects.update(planeMesh)}planeMesh.material.uniforms.t2D.value=background;planeMesh.material.uniforms.backgroundIntensity.value=scene.backgroundIntensity;planeMesh.material.toneMapped=ColorManagement.getTransfer(background.colorSpace)!==SRGBTransfer;if(background.matrixAutoUpdate===true){background.updateMatrix()}planeMesh.material.uniforms.uvTransform.value.copy(background.matrix);if(currentBackground!==background||currentBackgroundVersion!==background.version||currentTonemapping!==renderer.toneMapping){planeMesh.material.needsUpdate=true;currentBackground=background;currentBackgroundVersion=background.version;currentTonemapping=renderer.toneMapping}planeMesh.layers.enableAll();renderList.unshift(planeMesh,planeMesh.geometry,planeMesh.material,0,0,null)}}function setClear(color,alpha){color.getRGB(_rgb,getUnlitUniformColorSpace(renderer));state.buffers.color.setClear(_rgb.r,_rgb.g,_rgb.b,alpha,premultipliedAlpha)}return{getClearColor:function(){return clearColor},setClearColor:function(color,alpha=1){clearColor.set(color);clearAlpha=alpha;setClear(clearColor,clearAlpha)},getClearAlpha:function(){return clearAlpha},setClearAlpha:function(alpha){clearAlpha=alpha;setClear(clearColor,clearAlpha)},render:render}}function WebGLBindingStates(gl,attributes){const maxVertexAttributes=gl.getParameter(gl.MAX_VERTEX_ATTRIBS);const bindingStates={};const defaultState=createBindingState(null);let currentState=defaultState;let forceUpdate=false;function setup(object,material,program,geometry,index){let updateBuffers=false;const state=getBindingState(geometry,program,material);if(currentState!==state){currentState=state;bindVertexArrayObject(currentState.object)}updateBuffers=needsUpdate(object,geometry,program,index);if(updateBuffers)saveCache(object,geometry,program,index);if(index!==null){attributes.update(index,gl.ELEMENT_ARRAY_BUFFER)}if(updateBuffers||forceUpdate){forceUpdate=false;setupVertexAttributes(object,material,program,geometry);if(index!==null){gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,attributes.get(index).buffer)}}}function createVertexArrayObject(){return gl.createVertexArray()}function bindVertexArrayObject(vao){return gl.bindVertexArray(vao)}function deleteVertexArrayObject(vao){return gl.deleteVertexArray(vao)}function getBindingState(geometry,program,material){const wireframe=material.wireframe===true;let programMap=bindingStates[geometry.id];if(programMap===undefined){programMap={};bindingStates[geometry.id]=programMap}let stateMap=programMap[program.id];if(stateMap===undefined){stateMap={};programMap[program.id]=stateMap}let state=stateMap[wireframe];if(state===undefined){state=createBindingState(createVertexArrayObject());stateMap[wireframe]=state}return state}function createBindingState(vao){const newAttributes=[];const enabledAttributes=[];const attributeDivisors=[];for(let i=0;i=0){const cachedAttribute=cachedAttributes[name];let geometryAttribute=geometryAttributes[name];if(geometryAttribute===undefined){if(name==="instanceMatrix"&&object.instanceMatrix)geometryAttribute=object.instanceMatrix;if(name==="instanceColor"&&object.instanceColor)geometryAttribute=object.instanceColor}if(cachedAttribute===undefined)return true;if(cachedAttribute.attribute!==geometryAttribute)return true;if(geometryAttribute&&cachedAttribute.data!==geometryAttribute.data)return true;attributesNum++}}if(currentState.attributesNum!==attributesNum)return true;if(currentState.index!==index)return true;return false}function saveCache(object,geometry,program,index){const cache={};const attributes=geometry.attributes;let attributesNum=0;const programAttributes=program.getAttributes();for(const name in programAttributes){const programAttribute=programAttributes[name];if(programAttribute.location>=0){let attribute=attributes[name];if(attribute===undefined){if(name==="instanceMatrix"&&object.instanceMatrix)attribute=object.instanceMatrix;if(name==="instanceColor"&&object.instanceColor)attribute=object.instanceColor}const data={};data.attribute=attribute;if(attribute&&attribute.data){data.data=attribute.data}cache[name]=data;attributesNum++}}currentState.attributes=cache;currentState.attributesNum=attributesNum;currentState.index=index}function initAttributes(){const newAttributes=currentState.newAttributes;for(let i=0,il=newAttributes.length;i=0){let geometryAttribute=geometryAttributes[name];if(geometryAttribute===undefined){if(name==="instanceMatrix"&&object.instanceMatrix)geometryAttribute=object.instanceMatrix;if(name==="instanceColor"&&object.instanceColor)geometryAttribute=object.instanceColor}if(geometryAttribute!==undefined){const normalized=geometryAttribute.normalized;const size=geometryAttribute.itemSize;const attribute=attributes.get(geometryAttribute);if(attribute===undefined)continue;const buffer=attribute.buffer;const type=attribute.type;const bytesPerElement=attribute.bytesPerElement;const integer=type===gl.INT||type===gl.UNSIGNED_INT||geometryAttribute.gpuType===IntType;if(geometryAttribute.isInterleavedBufferAttribute){const data=geometryAttribute.data;const stride=data.stride;const offset=geometryAttribute.offset;if(data.isInstancedInterleavedBuffer){for(let i=0;i0&&gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER,gl.HIGH_FLOAT).precision>0){return"highp"}precision="mediump"}if(precision==="mediump"){if(gl.getShaderPrecisionFormat(gl.VERTEX_SHADER,gl.MEDIUM_FLOAT).precision>0&&gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER,gl.MEDIUM_FLOAT).precision>0){return"mediump"}}return"lowp"}let precision=parameters.precision!==undefined?parameters.precision:"highp";const maxPrecision=getMaxPrecision(precision);if(maxPrecision!==precision){console.warn("THREE.WebGLRenderer:",precision,"not supported, using",maxPrecision,"instead.");precision=maxPrecision}const logarithmicDepthBuffer=parameters.logarithmicDepthBuffer===true;const maxTextures=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);const maxVertexTextures=gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);const maxTextureSize=gl.getParameter(gl.MAX_TEXTURE_SIZE);const maxCubemapSize=gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);const maxAttributes=gl.getParameter(gl.MAX_VERTEX_ATTRIBS);const maxVertexUniforms=gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);const maxVaryings=gl.getParameter(gl.MAX_VARYING_VECTORS);const maxFragmentUniforms=gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);const vertexTextures=maxVertexTextures>0;const maxSamples=gl.getParameter(gl.MAX_SAMPLES);return{isWebGL2:true,getMaxAnisotropy:getMaxAnisotropy,getMaxPrecision:getMaxPrecision,precision:precision,logarithmicDepthBuffer:logarithmicDepthBuffer,maxTextures:maxTextures,maxVertexTextures:maxVertexTextures,maxTextureSize:maxTextureSize,maxCubemapSize:maxCubemapSize,maxAttributes:maxAttributes,maxVertexUniforms:maxVertexUniforms,maxVaryings:maxVaryings,maxFragmentUniforms:maxFragmentUniforms,vertexTextures:vertexTextures,maxSamples:maxSamples}}function WebGLClipping(properties){const scope=this;let globalState=null,numGlobalPlanes=0,localClippingEnabled=false,renderingShadows=false;const plane=new Plane,viewNormalMatrix=new Matrix3,uniform={value:null,needsUpdate:false};this.uniform=uniform;this.numPlanes=0;this.numIntersection=0;this.init=function(planes,enableLocalClipping){const enabled=planes.length!==0||enableLocalClipping||numGlobalPlanes!==0||localClippingEnabled;localClippingEnabled=enableLocalClipping;numGlobalPlanes=planes.length;return enabled};this.beginShadows=function(){renderingShadows=true;projectPlanes(null)};this.endShadows=function(){renderingShadows=false};this.setGlobalState=function(planes,camera){globalState=projectPlanes(planes,camera,0)};this.setState=function(material,camera,useCache){const planes=material.clippingPlanes,clipIntersection=material.clipIntersection,clipShadows=material.clipShadows;const materialProperties=properties.get(material);if(!localClippingEnabled||planes===null||planes.length===0||renderingShadows&&!clipShadows){if(renderingShadows){projectPlanes(null)}else{resetGlobalState()}}else{const nGlobal=renderingShadows?0:numGlobalPlanes,lGlobal=nGlobal*4;let dstArray=materialProperties.clippingState||null;uniform.value=dstArray;dstArray=projectPlanes(planes,camera,lGlobal,useCache);for(let i=0;i!==lGlobal;++i){dstArray[i]=globalState[i]}materialProperties.clippingState=dstArray;this.numIntersection=clipIntersection?this.numPlanes:0;this.numPlanes+=nGlobal}};function resetGlobalState(){if(uniform.value!==globalState){uniform.value=globalState;uniform.needsUpdate=numGlobalPlanes>0}scope.numPlanes=numGlobalPlanes;scope.numIntersection=0}function projectPlanes(planes,camera,dstOffset,skipTransform){const nPlanes=planes!==null?planes.length:0;let dstArray=null;if(nPlanes!==0){dstArray=uniform.value;if(skipTransform!==true||dstArray===null){const flatSize=dstOffset+nPlanes*4,viewMatrix=camera.matrixWorldInverse;viewNormalMatrix.getNormalMatrix(viewMatrix);if(dstArray===null||dstArray.length0){const renderTarget=new WebGLCubeRenderTarget(image.height);renderTarget.fromEquirectangularTexture(renderer,texture);cubemaps.set(texture,renderTarget);texture.addEventListener("dispose",onTextureDispose);return mapTextureMapping(renderTarget.texture,texture.mapping)}else{return null}}}}return texture}function onTextureDispose(event){const texture=event.target;texture.removeEventListener("dispose",onTextureDispose);const cubemap=cubemaps.get(texture);if(cubemap!==undefined){cubemaps.delete(texture);cubemap.dispose()}}function dispose(){cubemaps=new WeakMap}return{get:get,dispose:dispose}}class OrthographicCamera extends Camera{constructor(left=-1,right=1,top=1,bottom=-1,near=0.1,far=2000){super();this.isOrthographicCamera=true;this.type="OrthographicCamera";this.zoom=1;this.view=null;this.left=left;this.right=right;this.top=top;this.bottom=bottom;this.near=near;this.far=far;this.updateProjectionMatrix()}copy(source,recursive){super.copy(source,recursive);this.left=source.left;this.right=source.right;this.top=source.top;this.bottom=source.bottom;this.near=source.near;this.far=source.far;this.zoom=source.zoom;this.view=source.view===null?null:Object.assign({},source.view);return this}setViewOffset(fullWidth,fullHeight,x,y,width,height){if(this.view===null){this.view={enabled:true,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}}this.view.enabled=true;this.view.fullWidth=fullWidth;this.view.fullHeight=fullHeight;this.view.offsetX=x;this.view.offsetY=y;this.view.width=width;this.view.height=height;this.updateProjectionMatrix()}clearViewOffset(){if(this.view!==null){this.view.enabled=false}this.updateProjectionMatrix()}updateProjectionMatrix(){const dx=(this.right-this.left)/(2*this.zoom);const dy=(this.top-this.bottom)/(2*this.zoom);const cx=(this.right+this.left)/2;const cy=(this.top+this.bottom)/2;let left=cx-dx;let right=cx+dx;let top=cy+dy;let bottom=cy-dy;if(this.view!==null&&this.view.enabled){const scaleW=(this.right-this.left)/this.view.fullWidth/this.zoom;const scaleH=(this.top-this.bottom)/this.view.fullHeight/this.zoom;left+=scaleW*this.view.offsetX;right=left+scaleW*this.view.width;top-=scaleH*this.view.offsetY;bottom=top-scaleH*this.view.height}this.projectionMatrix.makeOrthographic(left,right,top,bottom,this.near,this.far,this.coordinateSystem);this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(meta){const data=super.toJSON(meta);data.object.zoom=this.zoom;data.object.left=this.left;data.object.right=this.right;data.object.top=this.top;data.object.bottom=this.bottom;data.object.near=this.near;data.object.far=this.far;if(this.view!==null)data.object.view=Object.assign({},this.view);return data}}const LOD_MIN=4;const EXTRA_LOD_SIGMA=[0.125,0.215,0.35,0.446,0.526,0.582];const MAX_SAMPLES=20;const _flatCamera=new OrthographicCamera;const _clearColor=new Color;let _oldTarget=null;let _oldActiveCubeFace=0;let _oldActiveMipmapLevel=0;let _oldXrEnabled=false;const PHI=(1+Math.sqrt(5))/2;const INV_PHI=1/PHI;const _axisDirections=[new Vector3(1,1,1),new Vector3(-1,1,1),new Vector3(1,1,-1),new Vector3(-1,1,-1),new Vector3(0,PHI,INV_PHI),new Vector3(0,PHI,-INV_PHI),new Vector3(INV_PHI,0,PHI),new Vector3(-INV_PHI,0,PHI),new Vector3(PHI,INV_PHI,0),new Vector3(-PHI,INV_PHI,0)];class PMREMGenerator{constructor(renderer){this._renderer=renderer;this._pingPongRenderTarget=null;this._lodMax=0;this._cubeSize=0;this._lodPlanes=[];this._sizeLods=[];this._sigmas=[];this._blurMaterial=null;this._cubemapMaterial=null;this._equirectMaterial=null;this._compileMaterial(this._blurMaterial)}fromScene(scene,sigma=0,near=0.1,far=100){_oldTarget=this._renderer.getRenderTarget();_oldActiveCubeFace=this._renderer.getActiveCubeFace();_oldActiveMipmapLevel=this._renderer.getActiveMipmapLevel();_oldXrEnabled=this._renderer.xr.enabled;this._renderer.xr.enabled=false;this._setSize(256);const cubeUVRenderTarget=this._allocateTargets();cubeUVRenderTarget.depthBuffer=true;this._sceneToCubeUV(scene,near,far,cubeUVRenderTarget);if(sigma>0){this._blur(cubeUVRenderTarget,0,0,sigma)}this._applyPMREM(cubeUVRenderTarget);this._cleanup(cubeUVRenderTarget);return cubeUVRenderTarget}fromEquirectangular(equirectangular,renderTarget=null){return this._fromTexture(equirectangular,renderTarget)}fromCubemap(cubemap,renderTarget=null){return this._fromTexture(cubemap,renderTarget)}compileCubemapShader(){if(this._cubemapMaterial===null){this._cubemapMaterial=_getCubemapMaterial();this._compileMaterial(this._cubemapMaterial)}}compileEquirectangularShader(){if(this._equirectMaterial===null){this._equirectMaterial=_getEquirectMaterial();this._compileMaterial(this._equirectMaterial)}}dispose(){this._dispose();if(this._cubemapMaterial!==null)this._cubemapMaterial.dispose();if(this._equirectMaterial!==null)this._equirectMaterial.dispose()}_setSize(cubeSize){this._lodMax=Math.floor(Math.log2(cubeSize));this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){if(this._blurMaterial!==null)this._blurMaterial.dispose();if(this._pingPongRenderTarget!==null)this._pingPongRenderTarget.dispose();for(let i=0;i2?size:0,size,size);renderer.setRenderTarget(cubeUVRenderTarget);if(useSolidColor){renderer.render(backgroundBox,cubeCamera)}renderer.render(scene,cubeCamera)}backgroundBox.geometry.dispose();backgroundBox.material.dispose();renderer.toneMapping=toneMapping;renderer.autoClear=originalAutoClear;scene.background=background}_textureToCubeUV(texture,cubeUVRenderTarget){const renderer=this._renderer;const isCubeTexture=texture.mapping===CubeReflectionMapping||texture.mapping===CubeRefractionMapping;if(isCubeTexture){if(this._cubemapMaterial===null){this._cubemapMaterial=_getCubemapMaterial()}this._cubemapMaterial.uniforms.flipEnvMap.value=texture.isRenderTargetTexture===false?-1:1}else{if(this._equirectMaterial===null){this._equirectMaterial=_getEquirectMaterial()}}const material=isCubeTexture?this._cubemapMaterial:this._equirectMaterial;const mesh=new Mesh(this._lodPlanes[0],material);const uniforms=material.uniforms;uniforms["envMap"].value=texture;const size=this._cubeSize;_setViewport(cubeUVRenderTarget,0,0,3*size,2*size);renderer.setRenderTarget(cubeUVRenderTarget);renderer.render(mesh,_flatCamera)}_applyPMREM(cubeUVRenderTarget){const renderer=this._renderer;const autoClear=renderer.autoClear;renderer.autoClear=false;for(let i=1;iMAX_SAMPLES){console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`)}const weights=[];let sum=0;for(let i=0;i_lodMax-LOD_MIN?lodOut-_lodMax+LOD_MIN:0);const y=4*(this._cubeSize-outputSize);_setViewport(targetOut,x,y,3*outputSize,2*outputSize);renderer.setRenderTarget(targetOut);renderer.render(blurMesh,_flatCamera)}}function _createPlanes(lodMax){const lodPlanes=[];const sizeLods=[];const sigmas=[];let lod=lodMax;const totalLods=lodMax-LOD_MIN+1+EXTRA_LOD_SIGMA.length;for(let i=0;ilodMax-LOD_MIN){sigma=EXTRA_LOD_SIGMA[i-lodMax+LOD_MIN-1]}else if(i===0){sigma=0}sigmas.push(sigma);const texelSize=1/(sizeLod-2);const min=-texelSize;const max=1+texelSize;const uv1=[min,min,max,min,max,max,min,min,max,max,min,max];const cubeFaces=6;const vertices=6;const positionSize=3;const uvSize=2;const faceIndexSize=1;const position=new Float32Array(positionSize*vertices*cubeFaces);const uv=new Float32Array(uvSize*vertices*cubeFaces);const faceIndex=new Float32Array(faceIndexSize*vertices*cubeFaces);for(let face=0;face2?0:-1;const coordinates=[x,y,0,x+2/3,y,0,x+2/3,y+1,0,x,y,0,x+2/3,y+1,0,x,y+1,0];position.set(coordinates,positionSize*vertices*face);uv.set(uv1,uvSize*vertices*face);const fill=[face,face,face,face,face,face];faceIndex.set(fill,faceIndexSize*vertices*face)}const planes=new BufferGeometry;planes.setAttribute("position",new BufferAttribute(position,positionSize));planes.setAttribute("uv",new BufferAttribute(uv,uvSize));planes.setAttribute("faceIndex",new BufferAttribute(faceIndex,faceIndexSize));lodPlanes.push(planes);if(lod>LOD_MIN){lod--}}return{lodPlanes,sizeLods,sigmas}}function _createRenderTarget(width,height,params){const cubeUVRenderTarget=new WebGLRenderTarget(width,height,params);cubeUVRenderTarget.texture.mapping=CubeUVReflectionMapping;cubeUVRenderTarget.texture.name="PMREM.cubeUv";cubeUVRenderTarget.scissorTest=true;return cubeUVRenderTarget}function _setViewport(target,x,y,width,height){target.viewport.set(x,y,width,height);target.scissor.set(x,y,width,height)}function _getBlurShader(lodMax,width,height){const weights=new Float32Array(MAX_SAMPLES);const poleAxis=new Vector3(0,1,0);const shaderMaterial=new ShaderMaterial({name:"SphericalGaussianBlur",defines:{"n":MAX_SAMPLES,"CUBEUV_TEXEL_WIDTH":1/width,"CUBEUV_TEXEL_HEIGHT":1/height,"CUBEUV_MAX_MIP":`${lodMax}.0`},uniforms:{"envMap":{value:null},"samples":{value:1},"weights":{value:weights},"latitudinal":{value:false},"dTheta":{value:0},"mipInt":{value:0},"poleAxis":{value:poleAxis}},vertexShader:_getCommonVertexShader(),fragmentShader:` precision mediump float; precision mediump int; varying vec3 vOutputDirection; uniform sampler2D envMap; uniform int samples; uniform float weights[ n ]; uniform bool latitudinal; uniform float dTheta; uniform float mipInt; uniform vec3 poleAxis; #define ENVMAP_TYPE_CUBE_UV #include vec3 getSample( float theta, vec3 axis ) { float cosTheta = cos( theta ); // Rodrigues' axis-angle rotation vec3 sampleDirection = vOutputDirection * cosTheta + cross( axis, vOutputDirection ) * sin( theta ) + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); return bilinearCubeUV( envMap, sampleDirection, mipInt ); } void main() { vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); if ( all( equal( axis, vec3( 0.0 ) ) ) ) { axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); } axis = normalize( axis ); gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); for ( int i = 1; i < n; i++ ) { if ( i >= samples ) { break; } float theta = dTheta * float( i ); gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); } } `,blending:NoBlending,depthTest:false,depthWrite:false});return shaderMaterial}function _getEquirectMaterial(){return new ShaderMaterial({name:"EquirectangularToCubeUV",uniforms:{"envMap":{value:null}},vertexShader:_getCommonVertexShader(),fragmentShader:` precision mediump float; precision mediump int; varying vec3 vOutputDirection; uniform sampler2D envMap; #include void main() { vec3 outputDirection = normalize( vOutputDirection ); vec2 uv = equirectUv( outputDirection ); gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } `,blending:NoBlending,depthTest:false,depthWrite:false})}function _getCubemapMaterial(){return new ShaderMaterial({name:"CubemapToCubeUV",uniforms:{"envMap":{value:null},"flipEnvMap":{value:-1}},vertexShader:_getCommonVertexShader(),fragmentShader:` precision mediump float; precision mediump int; uniform float flipEnvMap; varying vec3 vOutputDirection; uniform samplerCube envMap; void main() { gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); } `,blending:NoBlending,depthTest:false,depthWrite:false})}function _getCommonVertexShader(){return` precision mediump float; precision mediump int; attribute float faceIndex; varying vec3 vOutputDirection; // RH coordinate system; PMREM face-indexing convention vec3 getDirection( vec2 uv, float face ) { uv = 2.0 * uv - 1.0; vec3 direction = vec3( uv, 1.0 ); if ( face == 0.0 ) { direction = direction.zyx; // ( 1, v, u ) pos x } else if ( face == 1.0 ) { direction = direction.xzy; direction.xz *= -1.0; // ( -u, 1, -v ) pos y } else if ( face == 2.0 ) { direction.x *= -1.0; // ( -u, v, 1 ) pos z } else if ( face == 3.0 ) { direction = direction.zyx; direction.xz *= -1.0; // ( -1, v, -u ) neg x } else if ( face == 4.0 ) { direction = direction.xzy; direction.xy *= -1.0; // ( -u, -1, v ) neg y } else if ( face == 5.0 ) { direction.z *= -1.0; // ( u, v, -1 ) neg z } return direction; } void main() { vOutputDirection = getDirection( uv, faceIndex ); gl_Position = vec4( position, 1.0 ); } `}function WebGLCubeUVMaps(renderer){let cubeUVmaps=new WeakMap;let pmremGenerator=null;function get(texture){if(texture&&texture.isTexture){const mapping=texture.mapping;const isEquirectMap=mapping===EquirectangularReflectionMapping||mapping===EquirectangularRefractionMapping;const isCubeMap=mapping===CubeReflectionMapping||mapping===CubeRefractionMapping;if(isEquirectMap||isCubeMap){let renderTarget=cubeUVmaps.get(texture);const currentPMREMVersion=renderTarget!==undefined?renderTarget.texture.pmremVersion:0;if(texture.isRenderTargetTexture&&texture.pmremVersion!==currentPMREMVersion){if(pmremGenerator===null)pmremGenerator=new PMREMGenerator(renderer);renderTarget=isEquirectMap?pmremGenerator.fromEquirectangular(texture,renderTarget):pmremGenerator.fromCubemap(texture,renderTarget);renderTarget.texture.pmremVersion=texture.pmremVersion;cubeUVmaps.set(texture,renderTarget);return renderTarget.texture}else{if(renderTarget!==undefined){return renderTarget.texture}else{const image=texture.image;if(isEquirectMap&&image&&image.height>0||isCubeMap&&image&&isCubeTextureComplete(image)){if(pmremGenerator===null)pmremGenerator=new PMREMGenerator(renderer);renderTarget=isEquirectMap?pmremGenerator.fromEquirectangular(texture):pmremGenerator.fromCubemap(texture);renderTarget.texture.pmremVersion=texture.pmremVersion;cubeUVmaps.set(texture,renderTarget);texture.addEventListener("dispose",onTextureDispose);return renderTarget.texture}else{return null}}}}}return texture}function isCubeTextureComplete(image){let count=0;const length=6;for(let i=0;icapabilities.maxTextureSize){height=Math.ceil(width/capabilities.maxTextureSize);width=capabilities.maxTextureSize}const buffer=new Float32Array(width*height*4*morphTargetsCount);const texture=new DataArrayTexture(buffer,width,height,morphTargetsCount);texture.type=FloatType;texture.needsUpdate=true;const vertexDataStride=vertexDataCount*4;for(let i=0;i0)return array;const n=nBlocks*blockSize;let r=arrayCacheF32[n];if(r===undefined){r=new Float32Array(n);arrayCacheF32[n]=r}if(nBlocks!==0){firstElem.toArray(r,0);for(let i=1,offset=0;i!==nBlocks;++i){offset+=blockSize;array[i].toArray(r,offset)}}return r}function arraysEqual(a,b){if(a.length!==b.length)return false;for(let i=0,l=a.length;i":" "} ${line}: ${lines[i]}`)}return lines2.join("\n")}function getEncodingComponents(colorSpace){const workingPrimaries=ColorManagement.getPrimaries(ColorManagement.workingColorSpace);const encodingPrimaries=ColorManagement.getPrimaries(colorSpace);let gamutMapping;if(workingPrimaries===encodingPrimaries){gamutMapping=""}else if(workingPrimaries===P3Primaries&&encodingPrimaries===Rec709Primaries){gamutMapping="LinearDisplayP3ToLinearSRGB"}else if(workingPrimaries===Rec709Primaries&&encodingPrimaries===P3Primaries){gamutMapping="LinearSRGBToLinearDisplayP3"}switch(colorSpace){case LinearSRGBColorSpace:case LinearDisplayP3ColorSpace:return[gamutMapping,"LinearTransferOETF"];case SRGBColorSpace:case DisplayP3ColorSpace:return[gamutMapping,"sRGBTransferOETF"];default:console.warn("THREE.WebGLProgram: Unsupported color space:",colorSpace);return[gamutMapping,"LinearTransferOETF"];}}function getShaderErrors(gl,shader,type){const status=gl.getShaderParameter(shader,gl.COMPILE_STATUS);const errors=gl.getShaderInfoLog(shader).trim();if(status&&errors==="")return"";const errorMatches=/ERROR: 0:(\d+)/.exec(errors);if(errorMatches){const errorLine=parseInt(errorMatches[1]);return type.toUpperCase()+"\n\n"+errors+"\n\n"+handleSource(gl.getShaderSource(shader),errorLine)}else{return errors}}function getTexelEncodingFunction(functionName,colorSpace){const components=getEncodingComponents(colorSpace);return`vec4 ${functionName}( vec4 value ) { return ${components[0]}( ${components[1]}( value ) ); }`}function getToneMappingFunction(functionName,toneMapping){let toneMappingName;switch(toneMapping){case LinearToneMapping:toneMappingName="Linear";break;case ReinhardToneMapping:toneMappingName="Reinhard";break;case CineonToneMapping:toneMappingName="OptimizedCineon";break;case ACESFilmicToneMapping:toneMappingName="ACESFilmic";break;case AgXToneMapping:toneMappingName="AgX";break;case NeutralToneMapping:toneMappingName="Neutral";break;case CustomToneMapping:toneMappingName="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",toneMapping);toneMappingName="Linear";}return"vec3 "+functionName+"( vec3 color ) { return "+toneMappingName+"ToneMapping( color ); }"}function generateVertexExtensions(parameters){const chunks=[parameters.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",parameters.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""];return chunks.filter(filterEmptyLine).join("\n")}function generateDefines(defines){const chunks=[];for(const name in defines){const value=defines[name];if(value===false)continue;chunks.push("#define "+name+" "+value)}return chunks.join("\n")}function fetchAttributeLocations(gl,program){const attributes={};const n=gl.getProgramParameter(program,gl.ACTIVE_ATTRIBUTES);for(let i=0;i/gm;function resolveIncludes(string){return string.replace(includePattern,includeReplacer)}const shaderChunkMap=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function includeReplacer(match,include){let string=ShaderChunk[include];if(string===undefined){const newInclude=shaderChunkMap.get(include);if(newInclude!==undefined){string=ShaderChunk[newInclude];console.warn("THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.",include,newInclude)}else{throw new Error("Can not resolve #include <"+include+">")}}return resolveIncludes(string)}const unrollLoopPattern=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function unrollLoops(string){return string.replace(unrollLoopPattern,loopReplacer)}function loopReplacer(match,start,end,snippet){let string="";for(let i=parseInt(start);i0){prefixVertex+="\n"}prefixFragment=["#define SHADER_TYPE "+parameters.shaderType,"#define SHADER_NAME "+parameters.shaderName,customDefines].filter(filterEmptyLine).join("\n");if(prefixFragment.length>0){prefixFragment+="\n"}}else{prefixVertex=[generatePrecision(parameters),"#define SHADER_TYPE "+parameters.shaderType,"#define SHADER_NAME "+parameters.shaderName,customDefines,parameters.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",parameters.batching?"#define USE_BATCHING":"",parameters.instancing?"#define USE_INSTANCING":"",parameters.instancingColor?"#define USE_INSTANCING_COLOR":"",parameters.instancingMorph?"#define USE_INSTANCING_MORPH":"",parameters.useFog&¶meters.fog?"#define USE_FOG":"",parameters.useFog&¶meters.fogExp2?"#define FOG_EXP2":"",parameters.map?"#define USE_MAP":"",parameters.envMap?"#define USE_ENVMAP":"",parameters.envMap?"#define "+envMapModeDefine:"",parameters.lightMap?"#define USE_LIGHTMAP":"",parameters.aoMap?"#define USE_AOMAP":"",parameters.bumpMap?"#define USE_BUMPMAP":"",parameters.normalMap?"#define USE_NORMALMAP":"",parameters.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",parameters.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",parameters.displacementMap?"#define USE_DISPLACEMENTMAP":"",parameters.emissiveMap?"#define USE_EMISSIVEMAP":"",parameters.anisotropy?"#define USE_ANISOTROPY":"",parameters.anisotropyMap?"#define USE_ANISOTROPYMAP":"",parameters.clearcoatMap?"#define USE_CLEARCOATMAP":"",parameters.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",parameters.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",parameters.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",parameters.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",parameters.specularMap?"#define USE_SPECULARMAP":"",parameters.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",parameters.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",parameters.roughnessMap?"#define USE_ROUGHNESSMAP":"",parameters.metalnessMap?"#define USE_METALNESSMAP":"",parameters.alphaMap?"#define USE_ALPHAMAP":"",parameters.alphaHash?"#define USE_ALPHAHASH":"",parameters.transmission?"#define USE_TRANSMISSION":"",parameters.transmissionMap?"#define USE_TRANSMISSIONMAP":"",parameters.thicknessMap?"#define USE_THICKNESSMAP":"",parameters.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",parameters.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",parameters.mapUv?"#define MAP_UV "+parameters.mapUv:"",parameters.alphaMapUv?"#define ALPHAMAP_UV "+parameters.alphaMapUv:"",parameters.lightMapUv?"#define LIGHTMAP_UV "+parameters.lightMapUv:"",parameters.aoMapUv?"#define AOMAP_UV "+parameters.aoMapUv:"",parameters.emissiveMapUv?"#define EMISSIVEMAP_UV "+parameters.emissiveMapUv:"",parameters.bumpMapUv?"#define BUMPMAP_UV "+parameters.bumpMapUv:"",parameters.normalMapUv?"#define NORMALMAP_UV "+parameters.normalMapUv:"",parameters.displacementMapUv?"#define DISPLACEMENTMAP_UV "+parameters.displacementMapUv:"",parameters.metalnessMapUv?"#define METALNESSMAP_UV "+parameters.metalnessMapUv:"",parameters.roughnessMapUv?"#define ROUGHNESSMAP_UV "+parameters.roughnessMapUv:"",parameters.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+parameters.anisotropyMapUv:"",parameters.clearcoatMapUv?"#define CLEARCOATMAP_UV "+parameters.clearcoatMapUv:"",parameters.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+parameters.clearcoatNormalMapUv:"",parameters.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+parameters.clearcoatRoughnessMapUv:"",parameters.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+parameters.iridescenceMapUv:"",parameters.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+parameters.iridescenceThicknessMapUv:"",parameters.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+parameters.sheenColorMapUv:"",parameters.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+parameters.sheenRoughnessMapUv:"",parameters.specularMapUv?"#define SPECULARMAP_UV "+parameters.specularMapUv:"",parameters.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+parameters.specularColorMapUv:"",parameters.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+parameters.specularIntensityMapUv:"",parameters.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+parameters.transmissionMapUv:"",parameters.thicknessMapUv?"#define THICKNESSMAP_UV "+parameters.thicknessMapUv:"",parameters.vertexTangents&¶meters.flatShading===false?"#define USE_TANGENT":"",parameters.vertexColors?"#define USE_COLOR":"",parameters.vertexAlphas?"#define USE_COLOR_ALPHA":"",parameters.vertexUv1s?"#define USE_UV1":"",parameters.vertexUv2s?"#define USE_UV2":"",parameters.vertexUv3s?"#define USE_UV3":"",parameters.pointsUvs?"#define USE_POINTS_UV":"",parameters.flatShading?"#define FLAT_SHADED":"",parameters.skinning?"#define USE_SKINNING":"",parameters.morphTargets?"#define USE_MORPHTARGETS":"",parameters.morphNormals&¶meters.flatShading===false?"#define USE_MORPHNORMALS":"",parameters.morphColors?"#define USE_MORPHCOLORS":"",parameters.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE":"",parameters.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+parameters.morphTextureStride:"",parameters.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+parameters.morphTargetsCount:"",parameters.doubleSided?"#define DOUBLE_SIDED":"",parameters.flipSided?"#define FLIP_SIDED":"",parameters.shadowMapEnabled?"#define USE_SHADOWMAP":"",parameters.shadowMapEnabled?"#define "+shadowMapTypeDefine:"",parameters.sizeAttenuation?"#define USE_SIZEATTENUATION":"",parameters.numLightProbes>0?"#define USE_LIGHT_PROBES":"",parameters.useLegacyLights?"#define LEGACY_LIGHTS":"",parameters.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH","\tuniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1","\tattribute vec2 uv1;","#endif","#ifdef USE_UV2","\tattribute vec2 uv2;","#endif","#ifdef USE_UV3","\tattribute vec2 uv3;","#endif","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(filterEmptyLine).join("\n");prefixFragment=[generatePrecision(parameters),"#define SHADER_TYPE "+parameters.shaderType,"#define SHADER_NAME "+parameters.shaderName,customDefines,parameters.useFog&¶meters.fog?"#define USE_FOG":"",parameters.useFog&¶meters.fogExp2?"#define FOG_EXP2":"",parameters.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",parameters.map?"#define USE_MAP":"",parameters.matcap?"#define USE_MATCAP":"",parameters.envMap?"#define USE_ENVMAP":"",parameters.envMap?"#define "+envMapTypeDefine:"",parameters.envMap?"#define "+envMapModeDefine:"",parameters.envMap?"#define "+envMapBlendingDefine:"",envMapCubeUVSize?"#define CUBEUV_TEXEL_WIDTH "+envMapCubeUVSize.texelWidth:"",envMapCubeUVSize?"#define CUBEUV_TEXEL_HEIGHT "+envMapCubeUVSize.texelHeight:"",envMapCubeUVSize?"#define CUBEUV_MAX_MIP "+envMapCubeUVSize.maxMip+".0":"",parameters.lightMap?"#define USE_LIGHTMAP":"",parameters.aoMap?"#define USE_AOMAP":"",parameters.bumpMap?"#define USE_BUMPMAP":"",parameters.normalMap?"#define USE_NORMALMAP":"",parameters.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",parameters.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",parameters.emissiveMap?"#define USE_EMISSIVEMAP":"",parameters.anisotropy?"#define USE_ANISOTROPY":"",parameters.anisotropyMap?"#define USE_ANISOTROPYMAP":"",parameters.clearcoat?"#define USE_CLEARCOAT":"",parameters.clearcoatMap?"#define USE_CLEARCOATMAP":"",parameters.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",parameters.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",parameters.iridescence?"#define USE_IRIDESCENCE":"",parameters.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",parameters.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",parameters.specularMap?"#define USE_SPECULARMAP":"",parameters.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",parameters.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",parameters.roughnessMap?"#define USE_ROUGHNESSMAP":"",parameters.metalnessMap?"#define USE_METALNESSMAP":"",parameters.alphaMap?"#define USE_ALPHAMAP":"",parameters.alphaTest?"#define USE_ALPHATEST":"",parameters.alphaHash?"#define USE_ALPHAHASH":"",parameters.sheen?"#define USE_SHEEN":"",parameters.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",parameters.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",parameters.transmission?"#define USE_TRANSMISSION":"",parameters.transmissionMap?"#define USE_TRANSMISSIONMAP":"",parameters.thicknessMap?"#define USE_THICKNESSMAP":"",parameters.vertexTangents&¶meters.flatShading===false?"#define USE_TANGENT":"",parameters.vertexColors||parameters.instancingColor?"#define USE_COLOR":"",parameters.vertexAlphas?"#define USE_COLOR_ALPHA":"",parameters.vertexUv1s?"#define USE_UV1":"",parameters.vertexUv2s?"#define USE_UV2":"",parameters.vertexUv3s?"#define USE_UV3":"",parameters.pointsUvs?"#define USE_POINTS_UV":"",parameters.gradientMap?"#define USE_GRADIENTMAP":"",parameters.flatShading?"#define FLAT_SHADED":"",parameters.doubleSided?"#define DOUBLE_SIDED":"",parameters.flipSided?"#define FLIP_SIDED":"",parameters.shadowMapEnabled?"#define USE_SHADOWMAP":"",parameters.shadowMapEnabled?"#define "+shadowMapTypeDefine:"",parameters.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",parameters.numLightProbes>0?"#define USE_LIGHT_PROBES":"",parameters.useLegacyLights?"#define LEGACY_LIGHTS":"",parameters.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",parameters.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",parameters.toneMapping!==NoToneMapping?"#define TONE_MAPPING":"",parameters.toneMapping!==NoToneMapping?ShaderChunk["tonemapping_pars_fragment"]:"",parameters.toneMapping!==NoToneMapping?getToneMappingFunction("toneMapping",parameters.toneMapping):"",parameters.dithering?"#define DITHERING":"",parameters.opaque?"#define OPAQUE":"",ShaderChunk["colorspace_pars_fragment"],getTexelEncodingFunction("linearToOutputTexel",parameters.outputColorSpace),parameters.useDepthPacking?"#define DEPTH_PACKING "+parameters.depthPacking:"","\n"].filter(filterEmptyLine).join("\n")}vertexShader=resolveIncludes(vertexShader);vertexShader=replaceLightNums(vertexShader,parameters);vertexShader=replaceClippingPlaneNums(vertexShader,parameters);fragmentShader=resolveIncludes(fragmentShader);fragmentShader=replaceLightNums(fragmentShader,parameters);fragmentShader=replaceClippingPlaneNums(fragmentShader,parameters);vertexShader=unrollLoops(vertexShader);fragmentShader=unrollLoops(fragmentShader);if(parameters.isRawShaderMaterial!==true){versionString="#version 300 es\n";prefixVertex=[customVertexExtensions,"#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+prefixVertex;prefixFragment=["#define varying in",parameters.glslVersion===GLSL3?"":"layout(location = 0) out highp vec4 pc_fragColor;",parameters.glslVersion===GLSL3?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+prefixFragment}const vertexGlsl=versionString+prefixVertex+vertexShader;const fragmentGlsl=versionString+prefixFragment+fragmentShader;const glVertexShader=WebGLShader(gl,gl.VERTEX_SHADER,vertexGlsl);const glFragmentShader=WebGLShader(gl,gl.FRAGMENT_SHADER,fragmentGlsl);gl.attachShader(program,glVertexShader);gl.attachShader(program,glFragmentShader);if(parameters.index0AttributeName!==undefined){gl.bindAttribLocation(program,0,parameters.index0AttributeName)}else if(parameters.morphTargets===true){gl.bindAttribLocation(program,0,"position")}gl.linkProgram(program);function onFirstUse(self){if(renderer.debug.checkShaderErrors){const programLog=gl.getProgramInfoLog(program).trim();const vertexLog=gl.getShaderInfoLog(glVertexShader).trim();const fragmentLog=gl.getShaderInfoLog(glFragmentShader).trim();let runnable=true;let haveDiagnostics=true;if(gl.getProgramParameter(program,gl.LINK_STATUS)===false){runnable=false;if(typeof renderer.debug.onShaderError==="function"){renderer.debug.onShaderError(gl,program,glVertexShader,glFragmentShader)}else{const vertexErrors=getShaderErrors(gl,glVertexShader,"vertex");const fragmentErrors=getShaderErrors(gl,glFragmentShader,"fragment");console.error("THREE.WebGLProgram: Shader Error "+gl.getError()+" - "+"VALIDATE_STATUS "+gl.getProgramParameter(program,gl.VALIDATE_STATUS)+"\n\n"+"Material Name: "+self.name+"\n"+"Material Type: "+self.type+"\n\n"+"Program Info Log: "+programLog+"\n"+vertexErrors+"\n"+fragmentErrors)}}else if(programLog!==""){console.warn("THREE.WebGLProgram: Program Info Log:",programLog)}else if(vertexLog===""||fragmentLog===""){haveDiagnostics=false}if(haveDiagnostics){self.diagnostics={runnable:runnable,programLog:programLog,vertexShader:{log:vertexLog,prefix:prefixVertex},fragmentShader:{log:fragmentLog,prefix:prefixFragment}}}}gl.deleteShader(glVertexShader);gl.deleteShader(glFragmentShader);cachedUniforms=new WebGLUniforms(gl,program);cachedAttributes=fetchAttributeLocations(gl,program)}let cachedUniforms;this.getUniforms=function(){if(cachedUniforms===undefined){onFirstUse(this)}return cachedUniforms};let cachedAttributes;this.getAttributes=function(){if(cachedAttributes===undefined){onFirstUse(this)}return cachedAttributes};let programReady=parameters.rendererExtensionParallelShaderCompile===false;this.isReady=function(){if(programReady===false){programReady=gl.getProgramParameter(program,COMPLETION_STATUS_KHR)}return programReady};this.destroy=function(){bindingStates.releaseStatesOfProgram(this);gl.deleteProgram(program);this.program=undefined};this.type=parameters.shaderType;this.name=parameters.shaderName;this.id=programIdCount++;this.cacheKey=cacheKey;this.usedTimes=1;this.program=program;this.vertexShader=glVertexShader;this.fragmentShader=glFragmentShader;return this}let _id$1=0;class WebGLShaderCache{constructor(){this.shaderCache=new Map;this.materialCache=new Map}update(material){const vertexShader=material.vertexShader;const fragmentShader=material.fragmentShader;const vertexShaderStage=this._getShaderStage(vertexShader);const fragmentShaderStage=this._getShaderStage(fragmentShader);const materialShaders=this._getShaderCacheForMaterial(material);if(materialShaders.has(vertexShaderStage)===false){materialShaders.add(vertexShaderStage);vertexShaderStage.usedTimes++}if(materialShaders.has(fragmentShaderStage)===false){materialShaders.add(fragmentShaderStage);fragmentShaderStage.usedTimes++}return this}remove(material){const materialShaders=this.materialCache.get(material);for(const shaderStage of materialShaders){shaderStage.usedTimes--;if(shaderStage.usedTimes===0)this.shaderCache.delete(shaderStage.code)}this.materialCache.delete(material);return this}getVertexShaderID(material){return this._getShaderStage(material.vertexShader).id}getFragmentShaderID(material){return this._getShaderStage(material.fragmentShader).id}dispose(){this.shaderCache.clear();this.materialCache.clear()}_getShaderCacheForMaterial(material){const cache=this.materialCache;let set=cache.get(material);if(set===undefined){set=new Set;cache.set(material,set)}return set}_getShaderStage(code){const cache=this.shaderCache;let stage=cache.get(code);if(stage===undefined){stage=new WebGLShaderStage(code);cache.set(code,stage)}return stage}}class WebGLShaderStage{constructor(code){this.id=_id$1++;this.code=code;this.usedTimes=0}}function WebGLPrograms(renderer,cubemaps,cubeuvmaps,extensions,capabilities,bindingStates,clipping){const _programLayers=new Layers;const _customShaders=new WebGLShaderCache;const _activeChannels=new Set;const programs=[];const logarithmicDepthBuffer=capabilities.logarithmicDepthBuffer;const SUPPORTS_VERTEX_TEXTURES=capabilities.vertexTextures;let precision=capabilities.precision;const shaderIDs={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function getChannel(value){_activeChannels.add(value);if(value===0)return"uv";return`uv${value}`}function getParameters(material,lights,shadows,scene,object){const fog=scene.fog;const geometry=object.geometry;const environment=material.isMeshStandardMaterial?scene.environment:null;const envMap=(material.isMeshStandardMaterial?cubeuvmaps:cubemaps).get(material.envMap||environment);const envMapCubeUVHeight=!!envMap&&envMap.mapping===CubeUVReflectionMapping?envMap.image.height:null;const shaderID=shaderIDs[material.type];if(material.precision!==null){precision=capabilities.getMaxPrecision(material.precision);if(precision!==material.precision){console.warn("THREE.WebGLProgram.getParameters:",material.precision,"not supported, using",precision,"instead.")}}const morphAttribute=geometry.morphAttributes.position||geometry.morphAttributes.normal||geometry.morphAttributes.color;const morphTargetsCount=morphAttribute!==undefined?morphAttribute.length:0;let morphTextureStride=0;if(geometry.morphAttributes.position!==undefined)morphTextureStride=1;if(geometry.morphAttributes.normal!==undefined)morphTextureStride=2;if(geometry.morphAttributes.color!==undefined)morphTextureStride=3;let vertexShader,fragmentShader;let customVertexShaderID,customFragmentShaderID;if(shaderID){const shader=ShaderLib[shaderID];vertexShader=shader.vertexShader;fragmentShader=shader.fragmentShader}else{vertexShader=material.vertexShader;fragmentShader=material.fragmentShader;_customShaders.update(material);customVertexShaderID=_customShaders.getVertexShaderID(material);customFragmentShaderID=_customShaders.getFragmentShaderID(material)}const currentRenderTarget=renderer.getRenderTarget();const IS_INSTANCEDMESH=object.isInstancedMesh===true;const IS_BATCHEDMESH=object.isBatchedMesh===true;const HAS_MAP=!!material.map;const HAS_MATCAP=!!material.matcap;const HAS_ENVMAP=!!envMap;const HAS_AOMAP=!!material.aoMap;const HAS_LIGHTMAP=!!material.lightMap;const HAS_BUMPMAP=!!material.bumpMap;const HAS_NORMALMAP=!!material.normalMap;const HAS_DISPLACEMENTMAP=!!material.displacementMap;const HAS_EMISSIVEMAP=!!material.emissiveMap;const HAS_METALNESSMAP=!!material.metalnessMap;const HAS_ROUGHNESSMAP=!!material.roughnessMap;const HAS_ANISOTROPY=material.anisotropy>0;const HAS_CLEARCOAT=material.clearcoat>0;const HAS_IRIDESCENCE=material.iridescence>0;const HAS_SHEEN=material.sheen>0;const HAS_TRANSMISSION=material.transmission>0;const HAS_ANISOTROPYMAP=HAS_ANISOTROPY&&!!material.anisotropyMap;const HAS_CLEARCOATMAP=HAS_CLEARCOAT&&!!material.clearcoatMap;const HAS_CLEARCOAT_NORMALMAP=HAS_CLEARCOAT&&!!material.clearcoatNormalMap;const HAS_CLEARCOAT_ROUGHNESSMAP=HAS_CLEARCOAT&&!!material.clearcoatRoughnessMap;const HAS_IRIDESCENCEMAP=HAS_IRIDESCENCE&&!!material.iridescenceMap;const HAS_IRIDESCENCE_THICKNESSMAP=HAS_IRIDESCENCE&&!!material.iridescenceThicknessMap;const HAS_SHEEN_COLORMAP=HAS_SHEEN&&!!material.sheenColorMap;const HAS_SHEEN_ROUGHNESSMAP=HAS_SHEEN&&!!material.sheenRoughnessMap;const HAS_SPECULARMAP=!!material.specularMap;const HAS_SPECULAR_COLORMAP=!!material.specularColorMap;const HAS_SPECULAR_INTENSITYMAP=!!material.specularIntensityMap;const HAS_TRANSMISSIONMAP=HAS_TRANSMISSION&&!!material.transmissionMap;const HAS_THICKNESSMAP=HAS_TRANSMISSION&&!!material.thicknessMap;const HAS_GRADIENTMAP=!!material.gradientMap;const HAS_ALPHAMAP=!!material.alphaMap;const HAS_ALPHATEST=material.alphaTest>0;const HAS_ALPHAHASH=!!material.alphaHash;const HAS_EXTENSIONS=!!material.extensions;let toneMapping=NoToneMapping;if(material.toneMapped){if(currentRenderTarget===null||currentRenderTarget.isXRRenderTarget===true){toneMapping=renderer.toneMapping}}const parameters={shaderID:shaderID,shaderType:material.type,shaderName:material.name,vertexShader:vertexShader,fragmentShader:fragmentShader,defines:material.defines,customVertexShaderID:customVertexShaderID,customFragmentShaderID:customFragmentShaderID,isRawShaderMaterial:material.isRawShaderMaterial===true,glslVersion:material.glslVersion,precision:precision,batching:IS_BATCHEDMESH,instancing:IS_INSTANCEDMESH,instancingColor:IS_INSTANCEDMESH&&object.instanceColor!==null,instancingMorph:IS_INSTANCEDMESH&&object.morphTexture!==null,supportsVertexTextures:SUPPORTS_VERTEX_TEXTURES,outputColorSpace:currentRenderTarget===null?renderer.outputColorSpace:currentRenderTarget.isXRRenderTarget===true?currentRenderTarget.texture.colorSpace:LinearSRGBColorSpace,alphaToCoverage:!!material.alphaToCoverage,map:HAS_MAP,matcap:HAS_MATCAP,envMap:HAS_ENVMAP,envMapMode:HAS_ENVMAP&&envMap.mapping,envMapCubeUVHeight:envMapCubeUVHeight,aoMap:HAS_AOMAP,lightMap:HAS_LIGHTMAP,bumpMap:HAS_BUMPMAP,normalMap:HAS_NORMALMAP,displacementMap:SUPPORTS_VERTEX_TEXTURES&&HAS_DISPLACEMENTMAP,emissiveMap:HAS_EMISSIVEMAP,normalMapObjectSpace:HAS_NORMALMAP&&material.normalMapType===ObjectSpaceNormalMap,normalMapTangentSpace:HAS_NORMALMAP&&material.normalMapType===TangentSpaceNormalMap,metalnessMap:HAS_METALNESSMAP,roughnessMap:HAS_ROUGHNESSMAP,anisotropy:HAS_ANISOTROPY,anisotropyMap:HAS_ANISOTROPYMAP,clearcoat:HAS_CLEARCOAT,clearcoatMap:HAS_CLEARCOATMAP,clearcoatNormalMap:HAS_CLEARCOAT_NORMALMAP,clearcoatRoughnessMap:HAS_CLEARCOAT_ROUGHNESSMAP,iridescence:HAS_IRIDESCENCE,iridescenceMap:HAS_IRIDESCENCEMAP,iridescenceThicknessMap:HAS_IRIDESCENCE_THICKNESSMAP,sheen:HAS_SHEEN,sheenColorMap:HAS_SHEEN_COLORMAP,sheenRoughnessMap:HAS_SHEEN_ROUGHNESSMAP,specularMap:HAS_SPECULARMAP,specularColorMap:HAS_SPECULAR_COLORMAP,specularIntensityMap:HAS_SPECULAR_INTENSITYMAP,transmission:HAS_TRANSMISSION,transmissionMap:HAS_TRANSMISSIONMAP,thicknessMap:HAS_THICKNESSMAP,gradientMap:HAS_GRADIENTMAP,opaque:material.transparent===false&&material.blending===NormalBlending&&material.alphaToCoverage===false,alphaMap:HAS_ALPHAMAP,alphaTest:HAS_ALPHATEST,alphaHash:HAS_ALPHAHASH,combine:material.combine,mapUv:HAS_MAP&&getChannel(material.map.channel),aoMapUv:HAS_AOMAP&&getChannel(material.aoMap.channel),lightMapUv:HAS_LIGHTMAP&&getChannel(material.lightMap.channel),bumpMapUv:HAS_BUMPMAP&&getChannel(material.bumpMap.channel),normalMapUv:HAS_NORMALMAP&&getChannel(material.normalMap.channel),displacementMapUv:HAS_DISPLACEMENTMAP&&getChannel(material.displacementMap.channel),emissiveMapUv:HAS_EMISSIVEMAP&&getChannel(material.emissiveMap.channel),metalnessMapUv:HAS_METALNESSMAP&&getChannel(material.metalnessMap.channel),roughnessMapUv:HAS_ROUGHNESSMAP&&getChannel(material.roughnessMap.channel),anisotropyMapUv:HAS_ANISOTROPYMAP&&getChannel(material.anisotropyMap.channel),clearcoatMapUv:HAS_CLEARCOATMAP&&getChannel(material.clearcoatMap.channel),clearcoatNormalMapUv:HAS_CLEARCOAT_NORMALMAP&&getChannel(material.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:HAS_CLEARCOAT_ROUGHNESSMAP&&getChannel(material.clearcoatRoughnessMap.channel),iridescenceMapUv:HAS_IRIDESCENCEMAP&&getChannel(material.iridescenceMap.channel),iridescenceThicknessMapUv:HAS_IRIDESCENCE_THICKNESSMAP&&getChannel(material.iridescenceThicknessMap.channel),sheenColorMapUv:HAS_SHEEN_COLORMAP&&getChannel(material.sheenColorMap.channel),sheenRoughnessMapUv:HAS_SHEEN_ROUGHNESSMAP&&getChannel(material.sheenRoughnessMap.channel),specularMapUv:HAS_SPECULARMAP&&getChannel(material.specularMap.channel),specularColorMapUv:HAS_SPECULAR_COLORMAP&&getChannel(material.specularColorMap.channel),specularIntensityMapUv:HAS_SPECULAR_INTENSITYMAP&&getChannel(material.specularIntensityMap.channel),transmissionMapUv:HAS_TRANSMISSIONMAP&&getChannel(material.transmissionMap.channel),thicknessMapUv:HAS_THICKNESSMAP&&getChannel(material.thicknessMap.channel),alphaMapUv:HAS_ALPHAMAP&&getChannel(material.alphaMap.channel),vertexTangents:!!geometry.attributes.tangent&&(HAS_NORMALMAP||HAS_ANISOTROPY),vertexColors:material.vertexColors,vertexAlphas:material.vertexColors===true&&!!geometry.attributes.color&&geometry.attributes.color.itemSize===4,pointsUvs:object.isPoints===true&&!!geometry.attributes.uv&&(HAS_MAP||HAS_ALPHAMAP),fog:!!fog,useFog:material.fog===true,fogExp2:!!fog&&fog.isFogExp2,flatShading:material.flatShading===true,sizeAttenuation:material.sizeAttenuation===true,logarithmicDepthBuffer:logarithmicDepthBuffer,skinning:object.isSkinnedMesh===true,morphTargets:geometry.morphAttributes.position!==undefined,morphNormals:geometry.morphAttributes.normal!==undefined,morphColors:geometry.morphAttributes.color!==undefined,morphTargetsCount:morphTargetsCount,morphTextureStride:morphTextureStride,numDirLights:lights.directional.length,numPointLights:lights.point.length,numSpotLights:lights.spot.length,numSpotLightMaps:lights.spotLightMap.length,numRectAreaLights:lights.rectArea.length,numHemiLights:lights.hemi.length,numDirLightShadows:lights.directionalShadowMap.length,numPointLightShadows:lights.pointShadowMap.length,numSpotLightShadows:lights.spotShadowMap.length,numSpotLightShadowsWithMaps:lights.numSpotLightShadowsWithMaps,numLightProbes:lights.numLightProbes,numClippingPlanes:clipping.numPlanes,numClipIntersection:clipping.numIntersection,dithering:material.dithering,shadowMapEnabled:renderer.shadowMap.enabled&&shadows.length>0,shadowMapType:renderer.shadowMap.type,toneMapping:toneMapping,useLegacyLights:renderer._useLegacyLights,decodeVideoTexture:HAS_MAP&&material.map.isVideoTexture===true&&ColorManagement.getTransfer(material.map.colorSpace)===SRGBTransfer,premultipliedAlpha:material.premultipliedAlpha,doubleSided:material.side===DoubleSide,flipSided:material.side===BackSide,useDepthPacking:material.depthPacking>=0,depthPacking:material.depthPacking||0,index0AttributeName:material.index0AttributeName,extensionClipCullDistance:HAS_EXTENSIONS&&material.extensions.clipCullDistance===true&&extensions.has("WEBGL_clip_cull_distance"),extensionMultiDraw:HAS_EXTENSIONS&&material.extensions.multiDraw===true&&extensions.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:extensions.has("KHR_parallel_shader_compile"),customProgramCacheKey:material.customProgramCacheKey()};parameters.vertexUv1s=_activeChannels.has(1);parameters.vertexUv2s=_activeChannels.has(2);parameters.vertexUv3s=_activeChannels.has(3);_activeChannels.clear();return parameters}function getProgramCacheKey(parameters){const array=[];if(parameters.shaderID){array.push(parameters.shaderID)}else{array.push(parameters.customVertexShaderID);array.push(parameters.customFragmentShaderID)}if(parameters.defines!==undefined){for(const name in parameters.defines){array.push(name);array.push(parameters.defines[name])}}if(parameters.isRawShaderMaterial===false){getProgramCacheKeyParameters(array,parameters);getProgramCacheKeyBooleans(array,parameters);array.push(renderer.outputColorSpace)}array.push(parameters.customProgramCacheKey);return array.join()}function getProgramCacheKeyParameters(array,parameters){array.push(parameters.precision);array.push(parameters.outputColorSpace);array.push(parameters.envMapMode);array.push(parameters.envMapCubeUVHeight);array.push(parameters.mapUv);array.push(parameters.alphaMapUv);array.push(parameters.lightMapUv);array.push(parameters.aoMapUv);array.push(parameters.bumpMapUv);array.push(parameters.normalMapUv);array.push(parameters.displacementMapUv);array.push(parameters.emissiveMapUv);array.push(parameters.metalnessMapUv);array.push(parameters.roughnessMapUv);array.push(parameters.anisotropyMapUv);array.push(parameters.clearcoatMapUv);array.push(parameters.clearcoatNormalMapUv);array.push(parameters.clearcoatRoughnessMapUv);array.push(parameters.iridescenceMapUv);array.push(parameters.iridescenceThicknessMapUv);array.push(parameters.sheenColorMapUv);array.push(parameters.sheenRoughnessMapUv);array.push(parameters.specularMapUv);array.push(parameters.specularColorMapUv);array.push(parameters.specularIntensityMapUv);array.push(parameters.transmissionMapUv);array.push(parameters.thicknessMapUv);array.push(parameters.combine);array.push(parameters.fogExp2);array.push(parameters.sizeAttenuation);array.push(parameters.morphTargetsCount);array.push(parameters.morphAttributeCount);array.push(parameters.numDirLights);array.push(parameters.numPointLights);array.push(parameters.numSpotLights);array.push(parameters.numSpotLightMaps);array.push(parameters.numHemiLights);array.push(parameters.numRectAreaLights);array.push(parameters.numDirLightShadows);array.push(parameters.numPointLightShadows);array.push(parameters.numSpotLightShadows);array.push(parameters.numSpotLightShadowsWithMaps);array.push(parameters.numLightProbes);array.push(parameters.shadowMapType);array.push(parameters.toneMapping);array.push(parameters.numClippingPlanes);array.push(parameters.numClipIntersection);array.push(parameters.depthPacking)}function getProgramCacheKeyBooleans(array,parameters){_programLayers.disableAll();if(parameters.supportsVertexTextures)_programLayers.enable(0);if(parameters.instancing)_programLayers.enable(1);if(parameters.instancingColor)_programLayers.enable(2);if(parameters.instancingMorph)_programLayers.enable(3);if(parameters.matcap)_programLayers.enable(4);if(parameters.envMap)_programLayers.enable(5);if(parameters.normalMapObjectSpace)_programLayers.enable(6);if(parameters.normalMapTangentSpace)_programLayers.enable(7);if(parameters.clearcoat)_programLayers.enable(8);if(parameters.iridescence)_programLayers.enable(9);if(parameters.alphaTest)_programLayers.enable(10);if(parameters.vertexColors)_programLayers.enable(11);if(parameters.vertexAlphas)_programLayers.enable(12);if(parameters.vertexUv1s)_programLayers.enable(13);if(parameters.vertexUv2s)_programLayers.enable(14);if(parameters.vertexUv3s)_programLayers.enable(15);if(parameters.vertexTangents)_programLayers.enable(16);if(parameters.anisotropy)_programLayers.enable(17);if(parameters.alphaHash)_programLayers.enable(18);if(parameters.batching)_programLayers.enable(19);array.push(_programLayers.mask);_programLayers.disableAll();if(parameters.fog)_programLayers.enable(0);if(parameters.useFog)_programLayers.enable(1);if(parameters.flatShading)_programLayers.enable(2);if(parameters.logarithmicDepthBuffer)_programLayers.enable(3);if(parameters.skinning)_programLayers.enable(4);if(parameters.morphTargets)_programLayers.enable(5);if(parameters.morphNormals)_programLayers.enable(6);if(parameters.morphColors)_programLayers.enable(7);if(parameters.premultipliedAlpha)_programLayers.enable(8);if(parameters.shadowMapEnabled)_programLayers.enable(9);if(parameters.useLegacyLights)_programLayers.enable(10);if(parameters.doubleSided)_programLayers.enable(11);if(parameters.flipSided)_programLayers.enable(12);if(parameters.useDepthPacking)_programLayers.enable(13);if(parameters.dithering)_programLayers.enable(14);if(parameters.transmission)_programLayers.enable(15);if(parameters.sheen)_programLayers.enable(16);if(parameters.opaque)_programLayers.enable(17);if(parameters.pointsUvs)_programLayers.enable(18);if(parameters.decodeVideoTexture)_programLayers.enable(19);if(parameters.alphaToCoverage)_programLayers.enable(20);array.push(_programLayers.mask)}function getUniforms(material){const shaderID=shaderIDs[material.type];let uniforms;if(shaderID){const shader=ShaderLib[shaderID];uniforms=UniformsUtils.clone(shader.uniforms)}else{uniforms=material.uniforms}return uniforms}function acquireProgram(parameters,cacheKey){let program;for(let p=0,pl=programs.length;p0){transmissive.push(renderItem)}else if(material.transparent===true){transparent.push(renderItem)}else{opaque.push(renderItem)}}function unshift(object,geometry,material,groupOrder,z,group){const renderItem=getNextRenderItem(object,geometry,material,groupOrder,z,group);if(material.transmission>0){transmissive.unshift(renderItem)}else if(material.transparent===true){transparent.unshift(renderItem)}else{opaque.unshift(renderItem)}}function sort(customOpaqueSort,customTransparentSort){if(opaque.length>1)opaque.sort(customOpaqueSort||painterSortStable);if(transmissive.length>1)transmissive.sort(customTransparentSort||reversePainterSortStable);if(transparent.length>1)transparent.sort(customTransparentSort||reversePainterSortStable)}function finish(){for(let i=renderItemsIndex,il=renderItems.length;i=listArray.length){list=new WebGLRenderList;listArray.push(list)}else{list=listArray[renderCallDepth]}}return list}function dispose(){lists=new WeakMap}return{get:get,dispose:dispose}}function UniformsCache(){const lights={};return{get:function(light){if(lights[light.id]!==undefined){return lights[light.id]}let uniforms;switch(light.type){case"DirectionalLight":uniforms={direction:new Vector3,color:new Color};break;case"SpotLight":uniforms={position:new Vector3,direction:new Vector3,color:new Color,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":uniforms={position:new Vector3,color:new Color,distance:0,decay:0};break;case"HemisphereLight":uniforms={direction:new Vector3,skyColor:new Color,groundColor:new Color};break;case"RectAreaLight":uniforms={color:new Color,position:new Vector3,halfWidth:new Vector3,halfHeight:new Vector3};break;}lights[light.id]=uniforms;return uniforms}}}function ShadowUniformsCache(){const lights={};return{get:function(light){if(lights[light.id]!==undefined){return lights[light.id]}let uniforms;switch(light.type){case"DirectionalLight":uniforms={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Vector2};break;case"SpotLight":uniforms={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Vector2};break;case"PointLight":uniforms={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Vector2,shadowCameraNear:1,shadowCameraFar:1000};break;}lights[light.id]=uniforms;return uniforms}}}let nextVersion=0;function shadowCastingAndTexturingLightsFirst(lightA,lightB){return(lightB.castShadow?2:0)-(lightA.castShadow?2:0)+(lightB.map?1:0)-(lightA.map?1:0)}function WebGLLights(extensions){const cache=new UniformsCache;const shadowCache=ShadowUniformsCache();const state={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let i=0;i<9;i++)state.probe.push(new Vector3);const vector3=new Vector3;const matrix4=new Matrix4;const matrix42=new Matrix4;function setup(lights,useLegacyLights){let r=0,g=0,b=0;for(let i=0;i<9;i++)state.probe[i].set(0,0,0);let directionalLength=0;let pointLength=0;let spotLength=0;let rectAreaLength=0;let hemiLength=0;let numDirectionalShadows=0;let numPointShadows=0;let numSpotShadows=0;let numSpotMaps=0;let numSpotShadowsWithMaps=0;let numLightProbes=0;lights.sort(shadowCastingAndTexturingLightsFirst);const scaleFactor=useLegacyLights===true?Math.PI:1;for(let i=0,l=lights.length;i0){if(extensions.has("OES_texture_float_linear")===true){state.rectAreaLTC1=UniformsLib.LTC_FLOAT_1;state.rectAreaLTC2=UniformsLib.LTC_FLOAT_2}else{state.rectAreaLTC1=UniformsLib.LTC_HALF_1;state.rectAreaLTC2=UniformsLib.LTC_HALF_2}}state.ambient[0]=r;state.ambient[1]=g;state.ambient[2]=b;const hash=state.hash;if(hash.directionalLength!==directionalLength||hash.pointLength!==pointLength||hash.spotLength!==spotLength||hash.rectAreaLength!==rectAreaLength||hash.hemiLength!==hemiLength||hash.numDirectionalShadows!==numDirectionalShadows||hash.numPointShadows!==numPointShadows||hash.numSpotShadows!==numSpotShadows||hash.numSpotMaps!==numSpotMaps||hash.numLightProbes!==numLightProbes){state.directional.length=directionalLength;state.spot.length=spotLength;state.rectArea.length=rectAreaLength;state.point.length=pointLength;state.hemi.length=hemiLength;state.directionalShadow.length=numDirectionalShadows;state.directionalShadowMap.length=numDirectionalShadows;state.pointShadow.length=numPointShadows;state.pointShadowMap.length=numPointShadows;state.spotShadow.length=numSpotShadows;state.spotShadowMap.length=numSpotShadows;state.directionalShadowMatrix.length=numDirectionalShadows;state.pointShadowMatrix.length=numPointShadows;state.spotLightMatrix.length=numSpotShadows+numSpotMaps-numSpotShadowsWithMaps;state.spotLightMap.length=numSpotMaps;state.numSpotLightShadowsWithMaps=numSpotShadowsWithMaps;state.numLightProbes=numLightProbes;hash.directionalLength=directionalLength;hash.pointLength=pointLength;hash.spotLength=spotLength;hash.rectAreaLength=rectAreaLength;hash.hemiLength=hemiLength;hash.numDirectionalShadows=numDirectionalShadows;hash.numPointShadows=numPointShadows;hash.numSpotShadows=numSpotShadows;hash.numSpotMaps=numSpotMaps;hash.numLightProbes=numLightProbes;state.version=nextVersion++}}function setupView(lights,camera){let directionalLength=0;let pointLength=0;let spotLength=0;let rectAreaLength=0;let hemiLength=0;const viewMatrix=camera.matrixWorldInverse;for(let i=0,l=lights.length;i=renderStateArray.length){renderState=new WebGLRenderState(extensions);renderStateArray.push(renderState)}else{renderState=renderStateArray[renderCallDepth]}}return renderState}function dispose(){renderStates=new WeakMap}return{get:get,dispose:dispose}}class MeshDepthMaterial extends Material{constructor(parameters){super();this.isMeshDepthMaterial=true;this.type="MeshDepthMaterial";this.depthPacking=BasicDepthPacking;this.map=null;this.alphaMap=null;this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=false;this.wireframeLinewidth=1;this.setValues(parameters)}copy(source){super.copy(source);this.depthPacking=source.depthPacking;this.map=source.map;this.alphaMap=source.alphaMap;this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;return this}}class MeshDistanceMaterial extends Material{constructor(parameters){super();this.isMeshDistanceMaterial=true;this.type="MeshDistanceMaterial";this.map=null;this.alphaMap=null;this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.setValues(parameters)}copy(source){super.copy(source);this.map=source.map;this.alphaMap=source.alphaMap;this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;return this}}const vertex="void main() {\n\tgl_Position = vec4( position, 1.0 );\n}";const fragment="uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}";function WebGLShadowMap(_renderer,_objects,_capabilities){let _frustum=new Frustum;const _shadowMapSize=new Vector2,_viewportSize=new Vector2,_viewport=new Vector4,_depthMaterial=new MeshDepthMaterial({depthPacking:RGBADepthPacking}),_distanceMaterial=new MeshDistanceMaterial,_materialCache={},_maxTextureSize=_capabilities.maxTextureSize;const shadowSide={[FrontSide]:BackSide,[BackSide]:FrontSide,[DoubleSide]:DoubleSide};const shadowMaterialVertical=new ShaderMaterial({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Vector2},radius:{value:4}},vertexShader:vertex,fragmentShader:fragment});const shadowMaterialHorizontal=shadowMaterialVertical.clone();shadowMaterialHorizontal.defines.HORIZONTAL_PASS=1;const fullScreenTri=new BufferGeometry;fullScreenTri.setAttribute("position",new BufferAttribute(new Float32Array([-1,-1,0.5,3,-1,0.5,-1,3,0.5]),3));const fullScreenMesh=new Mesh(fullScreenTri,shadowMaterialVertical);const scope=this;this.enabled=false;this.autoUpdate=true;this.needsUpdate=false;this.type=PCFShadowMap;let _previousType=this.type;this.render=function(lights,scene,camera){if(scope.enabled===false)return;if(scope.autoUpdate===false&&scope.needsUpdate===false)return;if(lights.length===0)return;const currentRenderTarget=_renderer.getRenderTarget();const activeCubeFace=_renderer.getActiveCubeFace();const activeMipmapLevel=_renderer.getActiveMipmapLevel();const _state=_renderer.state;_state.setBlending(NoBlending);_state.buffers.color.setClear(1,1,1,1);_state.buffers.depth.setTest(true);_state.setScissorTest(false);const toVSM=_previousType!==VSMShadowMap&&this.type===VSMShadowMap;const fromVSM=_previousType===VSMShadowMap&&this.type!==VSMShadowMap;for(let i=0,il=lights.length;i_maxTextureSize||_shadowMapSize.y>_maxTextureSize){if(_shadowMapSize.x>_maxTextureSize){_viewportSize.x=Math.floor(_maxTextureSize/shadowFrameExtents.x);_shadowMapSize.x=_viewportSize.x*shadowFrameExtents.x;shadow.mapSize.x=_viewportSize.x}if(_shadowMapSize.y>_maxTextureSize){_viewportSize.y=Math.floor(_maxTextureSize/shadowFrameExtents.y);_shadowMapSize.y=_viewportSize.y*shadowFrameExtents.y;shadow.mapSize.y=_viewportSize.y}}if(shadow.map===null||toVSM===true||fromVSM===true){const pars=this.type!==VSMShadowMap?{minFilter:NearestFilter,magFilter:NearestFilter}:{};if(shadow.map!==null){shadow.map.dispose()}shadow.map=new WebGLRenderTarget(_shadowMapSize.x,_shadowMapSize.y,pars);shadow.map.texture.name=light.name+".shadowMap";shadow.camera.updateProjectionMatrix()}_renderer.setRenderTarget(shadow.map);_renderer.clear();const viewportCount=shadow.getViewportCount();for(let vp=0;vp0||material.map&&material.alphaTest>0){const keyA=result.uuid,keyB=material.uuid;let materialsForVariant=_materialCache[keyA];if(materialsForVariant===undefined){materialsForVariant={};_materialCache[keyA]=materialsForVariant}let cachedMaterial=materialsForVariant[keyB];if(cachedMaterial===undefined){cachedMaterial=result.clone();materialsForVariant[keyB]=cachedMaterial;material.addEventListener("dispose",onMaterialDispose)}result=cachedMaterial}}result.visible=material.visible;result.wireframe=material.wireframe;if(type===VSMShadowMap){result.side=material.shadowSide!==null?material.shadowSide:material.side}else{result.side=material.shadowSide!==null?material.shadowSide:shadowSide[material.side]}result.alphaMap=material.alphaMap;result.alphaTest=material.alphaTest;result.map=material.map;result.clipShadows=material.clipShadows;result.clippingPlanes=material.clippingPlanes;result.clipIntersection=material.clipIntersection;result.displacementMap=material.displacementMap;result.displacementScale=material.displacementScale;result.displacementBias=material.displacementBias;result.wireframeLinewidth=material.wireframeLinewidth;result.linewidth=material.linewidth;if(light.isPointLight===true&&result.isMeshDistanceMaterial===true){const materialProperties=_renderer.properties.get(result);materialProperties.light=light}return result}function renderObject(object,camera,shadowCamera,light,type){if(object.visible===false)return;const visible=object.layers.test(camera.layers);if(visible&&(object.isMesh||object.isLine||object.isPoints)){if((object.castShadow||object.receiveShadow&&type===VSMShadowMap)&&(!object.frustumCulled||_frustum.intersectsObject(object))){object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse,object.matrixWorld);const geometry=_objects.update(object);const material=object.material;if(Array.isArray(material)){const groups=geometry.groups;for(let k=0,kl=groups.length;k=1}else if(glVersion.indexOf("OpenGL ES")!==-1){version=parseFloat(/^OpenGL ES (\d)/.exec(glVersion)[1]);lineWidthAvailable=version>=2}let currentTextureSlot=null;let currentBoundTextures={};const scissorParam=gl.getParameter(gl.SCISSOR_BOX);const viewportParam=gl.getParameter(gl.VIEWPORT);const currentScissor=new Vector4().fromArray(scissorParam);const currentViewport=new Vector4().fromArray(viewportParam);function createTexture(type,target,count,dimensions){const data=new Uint8Array(4);const texture=gl.createTexture();gl.bindTexture(type,texture);gl.texParameteri(type,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(type,gl.TEXTURE_MAG_FILTER,gl.NEAREST);for(let i=0;imaxSize||dimensions.height>maxSize){scale=maxSize/Math.max(dimensions.width,dimensions.height)}if(scale<1){if(typeof HTMLImageElement!=="undefined"&&image instanceof HTMLImageElement||typeof HTMLCanvasElement!=="undefined"&&image instanceof HTMLCanvasElement||typeof ImageBitmap!=="undefined"&&image instanceof ImageBitmap||typeof VideoFrame!=="undefined"&&image instanceof VideoFrame){const width=Math.floor(scale*dimensions.width);const height=Math.floor(scale*dimensions.height);if(_canvas===undefined)_canvas=createCanvas(width,height);const canvas=needsNewCanvas?createCanvas(width,height):_canvas;canvas.width=width;canvas.height=height;const context=canvas.getContext("2d");context.drawImage(image,0,0,width,height);console.warn("THREE.WebGLRenderer: Texture has been resized from ("+dimensions.width+"x"+dimensions.height+") to ("+width+"x"+height+").");return canvas}else{if("data"in image){console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+dimensions.width+"x"+dimensions.height+").")}return image}}return image}function textureNeedsGenerateMipmaps(texture){return texture.generateMipmaps&&texture.minFilter!==NearestFilter&&texture.minFilter!==LinearFilter}function generateMipmap(target){_gl.generateMipmap(target)}function getInternalFormat(internalFormatName,glFormat,glType,colorSpace,forceLinearTransfer=false){if(internalFormatName!==null){if(_gl[internalFormatName]!==undefined)return _gl[internalFormatName];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+internalFormatName+"'")}let internalFormat=glFormat;if(glFormat===_gl.RED){if(glType===_gl.FLOAT)internalFormat=_gl.R32F;if(glType===_gl.HALF_FLOAT)internalFormat=_gl.R16F;if(glType===_gl.UNSIGNED_BYTE)internalFormat=_gl.R8}if(glFormat===_gl.RED_INTEGER){if(glType===_gl.UNSIGNED_BYTE)internalFormat=_gl.R8UI;if(glType===_gl.UNSIGNED_SHORT)internalFormat=_gl.R16UI;if(glType===_gl.UNSIGNED_INT)internalFormat=_gl.R32UI;if(glType===_gl.BYTE)internalFormat=_gl.R8I;if(glType===_gl.SHORT)internalFormat=_gl.R16I;if(glType===_gl.INT)internalFormat=_gl.R32I}if(glFormat===_gl.RG){if(glType===_gl.FLOAT)internalFormat=_gl.RG32F;if(glType===_gl.HALF_FLOAT)internalFormat=_gl.RG16F;if(glType===_gl.UNSIGNED_BYTE)internalFormat=_gl.RG8}if(glFormat===_gl.RG_INTEGER){if(glType===_gl.UNSIGNED_BYTE)internalFormat=_gl.RG8UI;if(glType===_gl.UNSIGNED_SHORT)internalFormat=_gl.RG16UI;if(glType===_gl.UNSIGNED_INT)internalFormat=_gl.RG32UI;if(glType===_gl.BYTE)internalFormat=_gl.RG8I;if(glType===_gl.SHORT)internalFormat=_gl.RG16I;if(glType===_gl.INT)internalFormat=_gl.RG32I}if(glFormat===_gl.RGB){if(glType===_gl.UNSIGNED_INT_5_9_9_9_REV)internalFormat=_gl.RGB9_E5}if(glFormat===_gl.RGBA){const transfer=forceLinearTransfer?LinearTransfer:ColorManagement.getTransfer(colorSpace);if(glType===_gl.FLOAT)internalFormat=_gl.RGBA32F;if(glType===_gl.HALF_FLOAT)internalFormat=_gl.RGBA16F;if(glType===_gl.UNSIGNED_BYTE)internalFormat=transfer===SRGBTransfer?_gl.SRGB8_ALPHA8:_gl.RGBA8;if(glType===_gl.UNSIGNED_SHORT_4_4_4_4)internalFormat=_gl.RGBA4;if(glType===_gl.UNSIGNED_SHORT_5_5_5_1)internalFormat=_gl.RGB5_A1}if(internalFormat===_gl.R16F||internalFormat===_gl.R32F||internalFormat===_gl.RG16F||internalFormat===_gl.RG32F||internalFormat===_gl.RGBA16F||internalFormat===_gl.RGBA32F){extensions.get("EXT_color_buffer_float")}return internalFormat}function getMipLevels(texture,image){if(textureNeedsGenerateMipmaps(texture)===true||texture.isFramebufferTexture&&texture.minFilter!==NearestFilter&&texture.minFilter!==LinearFilter){return Math.log2(Math.max(image.width,image.height))+1}else if(texture.mipmaps!==undefined&&texture.mipmaps.length>0){return texture.mipmaps.length}else if(texture.isCompressedTexture&&Array.isArray(texture.image)){return image.mipmaps.length}else{return 1}}function onTextureDispose(event){const texture=event.target;texture.removeEventListener("dispose",onTextureDispose);deallocateTexture(texture);if(texture.isVideoTexture){_videoTextures.delete(texture)}}function onRenderTargetDispose(event){const renderTarget=event.target;renderTarget.removeEventListener("dispose",onRenderTargetDispose);deallocateRenderTarget(renderTarget)}function deallocateTexture(texture){const textureProperties=properties.get(texture);if(textureProperties.__webglInit===undefined)return;const source=texture.source;const webglTextures=_sources.get(source);if(webglTextures){const webglTexture=webglTextures[textureProperties.__cacheKey];webglTexture.usedTimes--;if(webglTexture.usedTimes===0){deleteTexture(texture)}if(Object.keys(webglTextures).length===0){_sources.delete(source)}}properties.remove(texture)}function deleteTexture(texture){const textureProperties=properties.get(texture);_gl.deleteTexture(textureProperties.__webglTexture);const source=texture.source;const webglTextures=_sources.get(source);delete webglTextures[textureProperties.__cacheKey];info.memory.textures--}function deallocateRenderTarget(renderTarget){const renderTargetProperties=properties.get(renderTarget);if(renderTarget.depthTexture){renderTarget.depthTexture.dispose()}if(renderTarget.isWebGLCubeRenderTarget){for(let i=0;i<6;i++){if(Array.isArray(renderTargetProperties.__webglFramebuffer[i])){for(let level=0;level=capabilities.maxTextures){console.warn("THREE.WebGLTextures: Trying to use "+textureUnit+" texture units while this GPU supports only "+capabilities.maxTextures)}textureUnits+=1;return textureUnit}function getTextureCacheKey(texture){const array=[];array.push(texture.wrapS);array.push(texture.wrapT);array.push(texture.wrapR||0);array.push(texture.magFilter);array.push(texture.minFilter);array.push(texture.anisotropy);array.push(texture.internalFormat);array.push(texture.format);array.push(texture.type);array.push(texture.generateMipmaps);array.push(texture.premultiplyAlpha);array.push(texture.flipY);array.push(texture.unpackAlignment);array.push(texture.colorSpace);return array.join()}function setTexture2D(texture,slot){const textureProperties=properties.get(texture);if(texture.isVideoTexture)updateVideoTexture(texture);if(texture.isRenderTargetTexture===false&&texture.version>0&&textureProperties.__version!==texture.version){const image=texture.image;if(image===null){console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.")}else if(image.complete===false){console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}else{uploadTexture(textureProperties,texture,slot);return}}state.bindTexture(_gl.TEXTURE_2D,textureProperties.__webglTexture,_gl.TEXTURE0+slot)}function setTexture2DArray(texture,slot){const textureProperties=properties.get(texture);if(texture.version>0&&textureProperties.__version!==texture.version){uploadTexture(textureProperties,texture,slot);return}state.bindTexture(_gl.TEXTURE_2D_ARRAY,textureProperties.__webglTexture,_gl.TEXTURE0+slot)}function setTexture3D(texture,slot){const textureProperties=properties.get(texture);if(texture.version>0&&textureProperties.__version!==texture.version){uploadTexture(textureProperties,texture,slot);return}state.bindTexture(_gl.TEXTURE_3D,textureProperties.__webglTexture,_gl.TEXTURE0+slot)}function setTextureCube(texture,slot){const textureProperties=properties.get(texture);if(texture.version>0&&textureProperties.__version!==texture.version){uploadCubeTexture(textureProperties,texture,slot);return}state.bindTexture(_gl.TEXTURE_CUBE_MAP,textureProperties.__webglTexture,_gl.TEXTURE0+slot)}const wrappingToGL={[RepeatWrapping]:_gl.REPEAT,[ClampToEdgeWrapping]:_gl.CLAMP_TO_EDGE,[MirroredRepeatWrapping]:_gl.MIRRORED_REPEAT};const filterToGL={[NearestFilter]:_gl.NEAREST,[NearestMipmapNearestFilter]:_gl.NEAREST_MIPMAP_NEAREST,[NearestMipmapLinearFilter]:_gl.NEAREST_MIPMAP_LINEAR,[LinearFilter]:_gl.LINEAR,[LinearMipmapNearestFilter]:_gl.LINEAR_MIPMAP_NEAREST,[LinearMipmapLinearFilter]:_gl.LINEAR_MIPMAP_LINEAR};const compareToGL={[NeverCompare]:_gl.NEVER,[AlwaysCompare]:_gl.ALWAYS,[LessCompare]:_gl.LESS,[LessEqualCompare]:_gl.LEQUAL,[EqualCompare]:_gl.EQUAL,[GreaterEqualCompare]:_gl.GEQUAL,[GreaterCompare]:_gl.GREATER,[NotEqualCompare]:_gl.NOTEQUAL};function setTextureParameters(textureType,texture){if(texture.type===FloatType&&extensions.has("OES_texture_float_linear")===false&&(texture.magFilter===LinearFilter||texture.magFilter===LinearMipmapNearestFilter||texture.magFilter===NearestMipmapLinearFilter||texture.magFilter===LinearMipmapLinearFilter||texture.minFilter===LinearFilter||texture.minFilter===LinearMipmapNearestFilter||texture.minFilter===NearestMipmapLinearFilter||texture.minFilter===LinearMipmapLinearFilter)){console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.")}_gl.texParameteri(textureType,_gl.TEXTURE_WRAP_S,wrappingToGL[texture.wrapS]);_gl.texParameteri(textureType,_gl.TEXTURE_WRAP_T,wrappingToGL[texture.wrapT]);if(textureType===_gl.TEXTURE_3D||textureType===_gl.TEXTURE_2D_ARRAY){_gl.texParameteri(textureType,_gl.TEXTURE_WRAP_R,wrappingToGL[texture.wrapR])}_gl.texParameteri(textureType,_gl.TEXTURE_MAG_FILTER,filterToGL[texture.magFilter]);_gl.texParameteri(textureType,_gl.TEXTURE_MIN_FILTER,filterToGL[texture.minFilter]);if(texture.compareFunction){_gl.texParameteri(textureType,_gl.TEXTURE_COMPARE_MODE,_gl.COMPARE_REF_TO_TEXTURE);_gl.texParameteri(textureType,_gl.TEXTURE_COMPARE_FUNC,compareToGL[texture.compareFunction])}if(extensions.has("EXT_texture_filter_anisotropic")===true){if(texture.magFilter===NearestFilter)return;if(texture.minFilter!==NearestMipmapLinearFilter&&texture.minFilter!==LinearMipmapLinearFilter)return;if(texture.type===FloatType&&extensions.has("OES_texture_float_linear")===false)return;if(texture.anisotropy>1||properties.get(texture).__currentAnisotropy){const extension=extensions.get("EXT_texture_filter_anisotropic");_gl.texParameterf(textureType,extension.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(texture.anisotropy,capabilities.getMaxAnisotropy()));properties.get(texture).__currentAnisotropy=texture.anisotropy}}}function initTexture(textureProperties,texture){let forceUpload=false;if(textureProperties.__webglInit===undefined){textureProperties.__webglInit=true;texture.addEventListener("dispose",onTextureDispose)}const source=texture.source;let webglTextures=_sources.get(source);if(webglTextures===undefined){webglTextures={};_sources.set(source,webglTextures)}const textureCacheKey=getTextureCacheKey(texture);if(textureCacheKey!==textureProperties.__cacheKey){if(webglTextures[textureCacheKey]===undefined){webglTextures[textureCacheKey]={texture:_gl.createTexture(),usedTimes:0};info.memory.textures++;forceUpload=true}webglTextures[textureCacheKey].usedTimes++;const webglTexture=webglTextures[textureProperties.__cacheKey];if(webglTexture!==undefined){webglTextures[textureProperties.__cacheKey].usedTimes--;if(webglTexture.usedTimes===0){deleteTexture(texture)}}textureProperties.__cacheKey=textureCacheKey;textureProperties.__webglTexture=webglTextures[textureCacheKey].texture}return forceUpload}function uploadTexture(textureProperties,texture,slot){let textureType=_gl.TEXTURE_2D;if(texture.isDataArrayTexture||texture.isCompressedArrayTexture)textureType=_gl.TEXTURE_2D_ARRAY;if(texture.isData3DTexture)textureType=_gl.TEXTURE_3D;const forceUpload=initTexture(textureProperties,texture);const source=texture.source;state.bindTexture(textureType,textureProperties.__webglTexture,_gl.TEXTURE0+slot);const sourceProperties=properties.get(source);if(source.version!==sourceProperties.__version||forceUpload===true){state.activeTexture(_gl.TEXTURE0+slot);const workingPrimaries=ColorManagement.getPrimaries(ColorManagement.workingColorSpace);const texturePrimaries=texture.colorSpace===NoColorSpace?null:ColorManagement.getPrimaries(texture.colorSpace);const unpackConversion=texture.colorSpace===NoColorSpace||workingPrimaries===texturePrimaries?_gl.NONE:_gl.BROWSER_DEFAULT_WEBGL;_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL,texture.flipY);_gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,texture.premultiplyAlpha);_gl.pixelStorei(_gl.UNPACK_ALIGNMENT,texture.unpackAlignment);_gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL,unpackConversion);let image=resizeImage(texture.image,false,capabilities.maxTextureSize);image=verifyColorSpace(texture,image);const glFormat=utils.convert(texture.format,texture.colorSpace);const glType=utils.convert(texture.type);let glInternalFormat=getInternalFormat(texture.internalFormat,glFormat,glType,texture.colorSpace,texture.isVideoTexture);setTextureParameters(textureType,texture);let mipmap;const mipmaps=texture.mipmaps;const useTexStorage=texture.isVideoTexture!==true&&glInternalFormat!==RGB_ETC1_Format;const allocateMemory=sourceProperties.__version===undefined||forceUpload===true;const dataReady=source.dataReady;const levels=getMipLevels(texture,image);if(texture.isDepthTexture){glInternalFormat=_gl.DEPTH_COMPONENT16;if(texture.type===FloatType){glInternalFormat=_gl.DEPTH_COMPONENT32F}else if(texture.type===UnsignedIntType){glInternalFormat=_gl.DEPTH_COMPONENT24}else if(texture.type===UnsignedInt248Type){glInternalFormat=_gl.DEPTH24_STENCIL8}if(allocateMemory){if(useTexStorage){state.texStorage2D(_gl.TEXTURE_2D,1,glInternalFormat,image.width,image.height)}else{state.texImage2D(_gl.TEXTURE_2D,0,glInternalFormat,image.width,image.height,0,glFormat,glType,null)}}}else if(texture.isDataTexture){if(mipmaps.length>0){if(useTexStorage&&allocateMemory){state.texStorage2D(_gl.TEXTURE_2D,levels,glInternalFormat,mipmaps[0].width,mipmaps[0].height)}for(let i=0,il=mipmaps.length;i>=1;height>>=1}}}}else{if(mipmaps.length>0){if(useTexStorage&&allocateMemory){const dimensions=getDimensions(mipmaps[0]);state.texStorage2D(_gl.TEXTURE_2D,levels,glInternalFormat,dimensions.width,dimensions.height)}for(let i=0,il=mipmaps.length;i0)levels++;const dimensions=getDimensions(cubeImage[0]);state.texStorage2D(_gl.TEXTURE_CUBE_MAP,levels,glInternalFormat,dimensions.width,dimensions.height)}for(let i=0;i<6;i++){if(isDataTexture){if(useTexStorage){if(dataReady){state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,0,0,cubeImage[i].width,cubeImage[i].height,glFormat,glType,cubeImage[i].data)}}else{state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,glInternalFormat,cubeImage[i].width,cubeImage[i].height,0,glFormat,glType,cubeImage[i].data)}for(let j=0;j>level);const height=Math.max(1,renderTarget.height>>level);if(textureTarget===_gl.TEXTURE_3D||textureTarget===_gl.TEXTURE_2D_ARRAY){state.texImage3D(textureTarget,level,glInternalFormat,width,height,renderTarget.depth,0,glFormat,glType,null)}else{state.texImage2D(textureTarget,level,glInternalFormat,width,height,0,glFormat,glType,null)}}state.bindFramebuffer(_gl.FRAMEBUFFER,framebuffer);if(useMultisampledRTT(renderTarget)){multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER,attachment,textureTarget,properties.get(texture).__webglTexture,0,getRenderTargetSamples(renderTarget))}else if(textureTarget===_gl.TEXTURE_2D||textureTarget>=_gl.TEXTURE_CUBE_MAP_POSITIVE_X&&textureTarget<=_gl.TEXTURE_CUBE_MAP_NEGATIVE_Z){_gl.framebufferTexture2D(_gl.FRAMEBUFFER,attachment,textureTarget,properties.get(texture).__webglTexture,level)}state.bindFramebuffer(_gl.FRAMEBUFFER,null)}function setupRenderBufferStorage(renderbuffer,renderTarget,isMultisample){_gl.bindRenderbuffer(_gl.RENDERBUFFER,renderbuffer);if(renderTarget.depthBuffer&&!renderTarget.stencilBuffer){let glInternalFormat=_gl.DEPTH_COMPONENT24;if(isMultisample||useMultisampledRTT(renderTarget)){const depthTexture=renderTarget.depthTexture;if(depthTexture&&depthTexture.isDepthTexture){if(depthTexture.type===FloatType){glInternalFormat=_gl.DEPTH_COMPONENT32F}else if(depthTexture.type===UnsignedIntType){glInternalFormat=_gl.DEPTH_COMPONENT24}}const samples=getRenderTargetSamples(renderTarget);if(useMultisampledRTT(renderTarget)){multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER,samples,glInternalFormat,renderTarget.width,renderTarget.height)}else{_gl.renderbufferStorageMultisample(_gl.RENDERBUFFER,samples,glInternalFormat,renderTarget.width,renderTarget.height)}}else{_gl.renderbufferStorage(_gl.RENDERBUFFER,glInternalFormat,renderTarget.width,renderTarget.height)}_gl.framebufferRenderbuffer(_gl.FRAMEBUFFER,_gl.DEPTH_ATTACHMENT,_gl.RENDERBUFFER,renderbuffer)}else if(renderTarget.depthBuffer&&renderTarget.stencilBuffer){const samples=getRenderTargetSamples(renderTarget);if(isMultisample&&useMultisampledRTT(renderTarget)===false){_gl.renderbufferStorageMultisample(_gl.RENDERBUFFER,samples,_gl.DEPTH24_STENCIL8,renderTarget.width,renderTarget.height)}else if(useMultisampledRTT(renderTarget)){multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER,samples,_gl.DEPTH24_STENCIL8,renderTarget.width,renderTarget.height)}else{_gl.renderbufferStorage(_gl.RENDERBUFFER,_gl.DEPTH_STENCIL,renderTarget.width,renderTarget.height)}_gl.framebufferRenderbuffer(_gl.FRAMEBUFFER,_gl.DEPTH_STENCIL_ATTACHMENT,_gl.RENDERBUFFER,renderbuffer)}else{const textures=renderTarget.textures;for(let i=0;i1;if(!isMultipleRenderTargets){if(textureProperties.__webglTexture===undefined){textureProperties.__webglTexture=_gl.createTexture()}textureProperties.__version=texture.version;info.memory.textures++}if(isCube){renderTargetProperties.__webglFramebuffer=[];for(let i=0;i<6;i++){if(texture.mipmaps&&texture.mipmaps.length>0){renderTargetProperties.__webglFramebuffer[i]=[];for(let level=0;level0){renderTargetProperties.__webglFramebuffer=[];for(let level=0;level0&&useMultisampledRTT(renderTarget)===false){renderTargetProperties.__webglMultisampledFramebuffer=_gl.createFramebuffer();renderTargetProperties.__webglColorRenderbuffer=[];state.bindFramebuffer(_gl.FRAMEBUFFER,renderTargetProperties.__webglMultisampledFramebuffer);for(let i=0;i0){for(let level=0;level0){for(let level=0;level0&&useMultisampledRTT(renderTarget)===false){const textures=renderTarget.textures;const width=renderTarget.width;const height=renderTarget.height;let mask=_gl.COLOR_BUFFER_BIT;const invalidationArray=[];const depthStyle=renderTarget.stencilBuffer?_gl.DEPTH_STENCIL_ATTACHMENT:_gl.DEPTH_ATTACHMENT;const renderTargetProperties=properties.get(renderTarget);const isMultipleRenderTargets=textures.length>1;if(isMultipleRenderTargets){for(let i=0;i0&&extensions.has("WEBGL_multisampled_render_to_texture")===true&&renderTargetProperties.__useRenderToTexture!==false}function updateVideoTexture(texture){const frame=info.render.frame;if(_videoTextures.get(texture)!==frame){_videoTextures.set(texture,frame);texture.update()}}function verifyColorSpace(texture,image){const colorSpace=texture.colorSpace;const format=texture.format;const type=texture.type;if(texture.isCompressedTexture===true||texture.isVideoTexture===true)return image;if(colorSpace!==LinearSRGBColorSpace&&colorSpace!==NoColorSpace){if(ColorManagement.getTransfer(colorSpace)===SRGBTransfer){if(format!==RGBAFormat||type!==UnsignedByteType){console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.")}}else{console.error("THREE.WebGLTextures: Unsupported texture color space:",colorSpace)}}return image}function getDimensions(image){if(typeof HTMLImageElement!=="undefined"&&image instanceof HTMLImageElement){_imageDimensions.width=image.naturalWidth||image.width;_imageDimensions.height=image.naturalHeight||image.height}else if(typeof VideoFrame!=="undefined"&&image instanceof VideoFrame){_imageDimensions.width=image.displayWidth;_imageDimensions.height=image.displayHeight}else{_imageDimensions.width=image.width;_imageDimensions.height=image.height}return _imageDimensions}this.allocateTextureUnit=allocateTextureUnit;this.resetTextureUnits=resetTextureUnits;this.setTexture2D=setTexture2D;this.setTexture2DArray=setTexture2DArray;this.setTexture3D=setTexture3D;this.setTextureCube=setTextureCube;this.rebindTextures=rebindTextures;this.setupRenderTarget=setupRenderTarget;this.updateRenderTargetMipmap=updateRenderTargetMipmap;this.updateMultisampleRenderTarget=updateMultisampleRenderTarget;this.setupDepthRenderbuffer=setupDepthRenderbuffer;this.setupFrameBufferTexture=setupFrameBufferTexture;this.useMultisampledRTT=useMultisampledRTT}function WebGLUtils(gl,extensions){function convert(p,colorSpace=NoColorSpace){let extension;const transfer=ColorManagement.getTransfer(colorSpace);if(p===UnsignedByteType)return gl.UNSIGNED_BYTE;if(p===UnsignedShort4444Type)return gl.UNSIGNED_SHORT_4_4_4_4;if(p===UnsignedShort5551Type)return gl.UNSIGNED_SHORT_5_5_5_1;if(p===UnsignedInt5999Type)return gl.UNSIGNED_INT_5_9_9_9_REV;if(p===ByteType)return gl.BYTE;if(p===ShortType)return gl.SHORT;if(p===UnsignedShortType)return gl.UNSIGNED_SHORT;if(p===IntType)return gl.INT;if(p===UnsignedIntType)return gl.UNSIGNED_INT;if(p===FloatType)return gl.FLOAT;if(p===HalfFloatType)return gl.HALF_FLOAT;if(p===AlphaFormat)return gl.ALPHA;if(p===RGBFormat)return gl.RGB;if(p===RGBAFormat)return gl.RGBA;if(p===LuminanceFormat)return gl.LUMINANCE;if(p===LuminanceAlphaFormat)return gl.LUMINANCE_ALPHA;if(p===DepthFormat)return gl.DEPTH_COMPONENT;if(p===DepthStencilFormat)return gl.DEPTH_STENCIL;if(p===RedFormat)return gl.RED;if(p===RedIntegerFormat)return gl.RED_INTEGER;if(p===RGFormat)return gl.RG;if(p===RGIntegerFormat)return gl.RG_INTEGER;if(p===RGBAIntegerFormat)return gl.RGBA_INTEGER;if(p===RGB_S3TC_DXT1_Format||p===RGBA_S3TC_DXT1_Format||p===RGBA_S3TC_DXT3_Format||p===RGBA_S3TC_DXT5_Format){if(transfer===SRGBTransfer){extension=extensions.get("WEBGL_compressed_texture_s3tc_srgb");if(extension!==null){if(p===RGB_S3TC_DXT1_Format)return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(p===RGBA_S3TC_DXT1_Format)return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(p===RGBA_S3TC_DXT3_Format)return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(p===RGBA_S3TC_DXT5_Format)return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else{return null}}else{extension=extensions.get("WEBGL_compressed_texture_s3tc");if(extension!==null){if(p===RGB_S3TC_DXT1_Format)return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;if(p===RGBA_S3TC_DXT1_Format)return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(p===RGBA_S3TC_DXT3_Format)return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(p===RGBA_S3TC_DXT5_Format)return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT}else{return null}}}if(p===RGB_PVRTC_4BPPV1_Format||p===RGB_PVRTC_2BPPV1_Format||p===RGBA_PVRTC_4BPPV1_Format||p===RGBA_PVRTC_2BPPV1_Format){extension=extensions.get("WEBGL_compressed_texture_pvrtc");if(extension!==null){if(p===RGB_PVRTC_4BPPV1_Format)return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(p===RGB_PVRTC_2BPPV1_Format)return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(p===RGBA_PVRTC_4BPPV1_Format)return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(p===RGBA_PVRTC_2BPPV1_Format)return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else{return null}}if(p===RGB_ETC1_Format){extension=extensions.get("WEBGL_compressed_texture_etc1");if(extension!==null){return extension.COMPRESSED_RGB_ETC1_WEBGL}else{return null}}if(p===RGB_ETC2_Format||p===RGBA_ETC2_EAC_Format){extension=extensions.get("WEBGL_compressed_texture_etc");if(extension!==null){if(p===RGB_ETC2_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ETC2:extension.COMPRESSED_RGB8_ETC2;if(p===RGBA_ETC2_EAC_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:extension.COMPRESSED_RGBA8_ETC2_EAC}else{return null}}if(p===RGBA_ASTC_4x4_Format||p===RGBA_ASTC_5x4_Format||p===RGBA_ASTC_5x5_Format||p===RGBA_ASTC_6x5_Format||p===RGBA_ASTC_6x6_Format||p===RGBA_ASTC_8x5_Format||p===RGBA_ASTC_8x6_Format||p===RGBA_ASTC_8x8_Format||p===RGBA_ASTC_10x5_Format||p===RGBA_ASTC_10x6_Format||p===RGBA_ASTC_10x8_Format||p===RGBA_ASTC_10x10_Format||p===RGBA_ASTC_12x10_Format||p===RGBA_ASTC_12x12_Format){extension=extensions.get("WEBGL_compressed_texture_astc");if(extension!==null){if(p===RGBA_ASTC_4x4_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:extension.COMPRESSED_RGBA_ASTC_4x4_KHR;if(p===RGBA_ASTC_5x4_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:extension.COMPRESSED_RGBA_ASTC_5x4_KHR;if(p===RGBA_ASTC_5x5_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:extension.COMPRESSED_RGBA_ASTC_5x5_KHR;if(p===RGBA_ASTC_6x5_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:extension.COMPRESSED_RGBA_ASTC_6x5_KHR;if(p===RGBA_ASTC_6x6_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:extension.COMPRESSED_RGBA_ASTC_6x6_KHR;if(p===RGBA_ASTC_8x5_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:extension.COMPRESSED_RGBA_ASTC_8x5_KHR;if(p===RGBA_ASTC_8x6_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:extension.COMPRESSED_RGBA_ASTC_8x6_KHR;if(p===RGBA_ASTC_8x8_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:extension.COMPRESSED_RGBA_ASTC_8x8_KHR;if(p===RGBA_ASTC_10x5_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:extension.COMPRESSED_RGBA_ASTC_10x5_KHR;if(p===RGBA_ASTC_10x6_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:extension.COMPRESSED_RGBA_ASTC_10x6_KHR;if(p===RGBA_ASTC_10x8_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:extension.COMPRESSED_RGBA_ASTC_10x8_KHR;if(p===RGBA_ASTC_10x10_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:extension.COMPRESSED_RGBA_ASTC_10x10_KHR;if(p===RGBA_ASTC_12x10_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:extension.COMPRESSED_RGBA_ASTC_12x10_KHR;if(p===RGBA_ASTC_12x12_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:extension.COMPRESSED_RGBA_ASTC_12x12_KHR}else{return null}}if(p===RGBA_BPTC_Format||p===RGB_BPTC_SIGNED_Format||p===RGB_BPTC_UNSIGNED_Format){extension=extensions.get("EXT_texture_compression_bptc");if(extension!==null){if(p===RGBA_BPTC_Format)return transfer===SRGBTransfer?extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(p===RGB_BPTC_SIGNED_Format)return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(p===RGB_BPTC_UNSIGNED_Format)return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else{return null}}if(p===RED_RGTC1_Format||p===SIGNED_RED_RGTC1_Format||p===RED_GREEN_RGTC2_Format||p===SIGNED_RED_GREEN_RGTC2_Format){extension=extensions.get("EXT_texture_compression_rgtc");if(extension!==null){if(p===RGBA_BPTC_Format)return extension.COMPRESSED_RED_RGTC1_EXT;if(p===SIGNED_RED_RGTC1_Format)return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(p===RED_GREEN_RGTC2_Format)return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;if(p===SIGNED_RED_GREEN_RGTC2_Format)return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else{return null}}if(p===UnsignedInt248Type)return gl.UNSIGNED_INT_24_8;return gl[p]!==undefined?gl[p]:null}return{convert:convert}}class ArrayCamera extends PerspectiveCamera{constructor(array=[]){super();this.isArrayCamera=true;this.cameras=array}}class Group extends Object3D{constructor(){super();this.isGroup=true;this.type="Group"}}const _moveEvent={type:"move"};class WebXRController{constructor(){this._targetRay=null;this._grip=null;this._hand=null}getHandSpace(){if(this._hand===null){this._hand=new Group;this._hand.matrixAutoUpdate=false;this._hand.visible=false;this._hand.joints={};this._hand.inputState={pinching:false}}return this._hand}getTargetRaySpace(){if(this._targetRay===null){this._targetRay=new Group;this._targetRay.matrixAutoUpdate=false;this._targetRay.visible=false;this._targetRay.hasLinearVelocity=false;this._targetRay.linearVelocity=new Vector3;this._targetRay.hasAngularVelocity=false;this._targetRay.angularVelocity=new Vector3}return this._targetRay}getGripSpace(){if(this._grip===null){this._grip=new Group;this._grip.matrixAutoUpdate=false;this._grip.visible=false;this._grip.hasLinearVelocity=false;this._grip.linearVelocity=new Vector3;this._grip.hasAngularVelocity=false;this._grip.angularVelocity=new Vector3}return this._grip}dispatchEvent(event){if(this._targetRay!==null){this._targetRay.dispatchEvent(event)}if(this._grip!==null){this._grip.dispatchEvent(event)}if(this._hand!==null){this._hand.dispatchEvent(event)}return this}connect(inputSource){if(inputSource&&inputSource.hand){const hand=this._hand;if(hand){for(const inputjoint of inputSource.hand.values()){this._getHandJoint(hand,inputjoint)}}}this.dispatchEvent({type:"connected",data:inputSource});return this}disconnect(inputSource){this.dispatchEvent({type:"disconnected",data:inputSource});if(this._targetRay!==null){this._targetRay.visible=false}if(this._grip!==null){this._grip.visible=false}if(this._hand!==null){this._hand.visible=false}return this}update(inputSource,frame,referenceSpace){let inputPose=null;let gripPose=null;let handPose=null;const targetRay=this._targetRay;const grip=this._grip;const hand=this._hand;if(inputSource&&frame.session.visibilityState!=="visible-blurred"){if(hand&&inputSource.hand){handPose=true;for(const inputjoint of inputSource.hand.values()){const jointPose=frame.getJointPose(inputjoint,referenceSpace);const joint=this._getHandJoint(hand,inputjoint);if(jointPose!==null){joint.matrix.fromArray(jointPose.transform.matrix);joint.matrix.decompose(joint.position,joint.rotation,joint.scale);joint.matrixWorldNeedsUpdate=true;joint.jointRadius=jointPose.radius}joint.visible=jointPose!==null}const indexTip=hand.joints["index-finger-tip"];const thumbTip=hand.joints["thumb-tip"];const distance=indexTip.position.distanceTo(thumbTip.position);const distanceToPinch=0.02;const threshold=0.005;if(hand.inputState.pinching&&distance>distanceToPinch+threshold){hand.inputState.pinching=false;this.dispatchEvent({type:"pinchend",handedness:inputSource.handedness,target:this})}else if(!hand.inputState.pinching&&distance<=distanceToPinch-threshold){hand.inputState.pinching=true;this.dispatchEvent({type:"pinchstart",handedness:inputSource.handedness,target:this})}}else{if(grip!==null&&inputSource.gripSpace){gripPose=frame.getPose(inputSource.gripSpace,referenceSpace);if(gripPose!==null){grip.matrix.fromArray(gripPose.transform.matrix);grip.matrix.decompose(grip.position,grip.rotation,grip.scale);grip.matrixWorldNeedsUpdate=true;if(gripPose.linearVelocity){grip.hasLinearVelocity=true;grip.linearVelocity.copy(gripPose.linearVelocity)}else{grip.hasLinearVelocity=false}if(gripPose.angularVelocity){grip.hasAngularVelocity=true;grip.angularVelocity.copy(gripPose.angularVelocity)}else{grip.hasAngularVelocity=false}}}}if(targetRay!==null){inputPose=frame.getPose(inputSource.targetRaySpace,referenceSpace);if(inputPose===null&&gripPose!==null){inputPose=gripPose}if(inputPose!==null){targetRay.matrix.fromArray(inputPose.transform.matrix);targetRay.matrix.decompose(targetRay.position,targetRay.rotation,targetRay.scale);targetRay.matrixWorldNeedsUpdate=true;if(inputPose.linearVelocity){targetRay.hasLinearVelocity=true;targetRay.linearVelocity.copy(inputPose.linearVelocity)}else{targetRay.hasLinearVelocity=false}if(inputPose.angularVelocity){targetRay.hasAngularVelocity=true;targetRay.angularVelocity.copy(inputPose.angularVelocity)}else{targetRay.hasAngularVelocity=false}this.dispatchEvent(_moveEvent)}}}if(targetRay!==null){targetRay.visible=inputPose!==null}if(grip!==null){grip.visible=gripPose!==null}if(hand!==null){hand.visible=handPose!==null}return this}_getHandJoint(hand,inputjoint){if(hand.joints[inputjoint.jointName]===undefined){const joint=new Group;joint.matrixAutoUpdate=false;joint.visible=false;hand.joints[inputjoint.jointName]=joint;hand.add(joint)}return hand.joints[inputjoint.jointName]}}const _occlusion_vertex=` void main() { gl_Position = vec4( position, 1.0 ); }`;const _occlusion_fragment=` uniform sampler2DArray depthColor; uniform float depthWidth; uniform float depthHeight; void main() { vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); if ( coord.x >= 1.0 ) { gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; } else { gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; } }`;class WebXRDepthSensing{constructor(){this.texture=null;this.mesh=null;this.depthNear=0;this.depthFar=0}init(renderer,depthData,renderState){if(this.texture===null){const texture=new Texture;const texProps=renderer.properties.get(texture);texProps.__webglTexture=depthData.texture;if(depthData.depthNear!=renderState.depthNear||depthData.depthFar!=renderState.depthFar){this.depthNear=depthData.depthNear;this.depthFar=depthData.depthFar}this.texture=texture}}render(renderer,cameraXR){if(this.texture!==null){if(this.mesh===null){const viewport=cameraXR.cameras[0].viewport;const material=new ShaderMaterial({vertexShader:_occlusion_vertex,fragmentShader:_occlusion_fragment,uniforms:{depthColor:{value:this.texture},depthWidth:{value:viewport.z},depthHeight:{value:viewport.w}}});this.mesh=new Mesh(new PlaneGeometry(20,20),material)}renderer.render(this.mesh,cameraXR)}}reset(){this.texture=null;this.mesh=null}}class WebXRManager extends EventDispatcher{constructor(renderer,gl){super();const scope=this;let session=null;let framebufferScaleFactor=1;let referenceSpace=null;let referenceSpaceType="local-floor";let foveation=1;let customReferenceSpace=null;let pose=null;let glBinding=null;let glProjLayer=null;let glBaseLayer=null;let xrFrame=null;const depthSensing=new WebXRDepthSensing;const attributes=gl.getContextAttributes();let initialRenderTarget=null;let newRenderTarget=null;const controllers=[];const controllerInputSources=[];const currentSize=new Vector2;let currentPixelRatio=null;const cameraL=new PerspectiveCamera;cameraL.layers.enable(1);cameraL.viewport=new Vector4;const cameraR=new PerspectiveCamera;cameraR.layers.enable(2);cameraR.viewport=new Vector4;const cameras=[cameraL,cameraR];const cameraXR=new ArrayCamera;cameraXR.layers.enable(1);cameraXR.layers.enable(2);let _currentDepthNear=null;let _currentDepthFar=null;this.cameraAutoUpdate=true;this.enabled=false;this.isPresenting=false;this.getController=function(index){let controller=controllers[index];if(controller===undefined){controller=new WebXRController;controllers[index]=controller}return controller.getTargetRaySpace()};this.getControllerGrip=function(index){let controller=controllers[index];if(controller===undefined){controller=new WebXRController;controllers[index]=controller}return controller.getGripSpace()};this.getHand=function(index){let controller=controllers[index];if(controller===undefined){controller=new WebXRController;controllers[index]=controller}return controller.getHandSpace()};function onSessionEvent(event){const controllerIndex=controllerInputSources.indexOf(event.inputSource);if(controllerIndex===-1){return}const controller=controllers[controllerIndex];if(controller!==undefined){controller.update(event.inputSource,event.frame,customReferenceSpace||referenceSpace);controller.dispatchEvent({type:event.type,data:event.inputSource})}}function onSessionEnd(){session.removeEventListener("select",onSessionEvent);session.removeEventListener("selectstart",onSessionEvent);session.removeEventListener("selectend",onSessionEvent);session.removeEventListener("squeeze",onSessionEvent);session.removeEventListener("squeezestart",onSessionEvent);session.removeEventListener("squeezeend",onSessionEvent);session.removeEventListener("end",onSessionEnd);session.removeEventListener("inputsourceschange",onInputSourcesChange);for(let i=0;i=0){controllerInputSources[index]=null;controllers[index].disconnect(inputSource)}}for(let i=0;i=controllerInputSources.length){controllerInputSources.push(inputSource);controllerIndex=i;break}else if(controllerInputSources[i]===null){controllerInputSources[i]=inputSource;controllerIndex=i;break}}if(controllerIndex===-1)break}const controller=controllers[controllerIndex];if(controller){controller.connect(inputSource)}}}const cameraLPos=new Vector3;const cameraRPos=new Vector3;function setProjectionFromUnion(camera,cameraL,cameraR){cameraLPos.setFromMatrixPosition(cameraL.matrixWorld);cameraRPos.setFromMatrixPosition(cameraR.matrixWorld);const ipd=cameraLPos.distanceTo(cameraRPos);const projL=cameraL.projectionMatrix.elements;const projR=cameraR.projectionMatrix.elements;const near=projL[14]/(projL[10]-1);const far=projL[14]/(projL[10]+1);const topFov=(projL[9]+1)/projL[5];const bottomFov=(projL[9]-1)/projL[5];const leftFov=(projL[8]-1)/projL[0];const rightFov=(projR[8]+1)/projR[0];const left=near*leftFov;const right=near*rightFov;const zOffset=ipd/(-leftFov+rightFov);const xOffset=zOffset*-leftFov;cameraL.matrixWorld.decompose(camera.position,camera.quaternion,camera.scale);camera.translateX(xOffset);camera.translateZ(zOffset);camera.matrixWorld.compose(camera.position,camera.quaternion,camera.scale);camera.matrixWorldInverse.copy(camera.matrixWorld).invert();const near2=near+zOffset;const far2=far+zOffset;const left2=left-xOffset;const right2=right+(ipd-xOffset);const top2=topFov*far/far2*near2;const bottom2=bottomFov*far/far2*near2;camera.projectionMatrix.makePerspective(left2,right2,top2,bottom2,near2,far2);camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert()}function updateCamera(camera,parent){if(parent===null){camera.matrixWorld.copy(camera.matrix)}else{camera.matrixWorld.multiplyMatrices(parent.matrixWorld,camera.matrix)}camera.matrixWorldInverse.copy(camera.matrixWorld).invert()}this.updateCamera=function(camera){if(session===null)return;if(depthSensing.texture!==null){camera.near=depthSensing.depthNear;camera.far=depthSensing.depthFar}cameraXR.near=cameraR.near=cameraL.near=camera.near;cameraXR.far=cameraR.far=cameraL.far=camera.far;if(_currentDepthNear!==cameraXR.near||_currentDepthFar!==cameraXR.far){session.updateRenderState({depthNear:cameraXR.near,depthFar:cameraXR.far});_currentDepthNear=cameraXR.near;_currentDepthFar=cameraXR.far;cameraL.near=_currentDepthNear;cameraL.far=_currentDepthFar;cameraR.near=_currentDepthNear;cameraR.far=_currentDepthFar;cameraL.updateProjectionMatrix();cameraR.updateProjectionMatrix();camera.updateProjectionMatrix()}const parent=camera.parent;const cameras=cameraXR.cameras;updateCamera(cameraXR,parent);for(let i=0;i0){uniforms.alphaTest.value=material.alphaTest}const materialProperties=properties.get(material);const envMap=materialProperties.envMap;const envMapRotation=materialProperties.envMapRotation;if(envMap){uniforms.envMap.value=envMap;_e1.copy(envMapRotation);_e1.x*=-1;_e1.y*=-1;_e1.z*=-1;if(envMap.isCubeTexture&&envMap.isRenderTargetTexture===false){_e1.y*=-1;_e1.z*=-1}uniforms.envMapRotation.value.setFromMatrix4(_m1.makeRotationFromEuler(_e1));uniforms.flipEnvMap.value=envMap.isCubeTexture&&envMap.isRenderTargetTexture===false?-1:1;uniforms.reflectivity.value=material.reflectivity;uniforms.ior.value=material.ior;uniforms.refractionRatio.value=material.refractionRatio}if(material.lightMap){uniforms.lightMap.value=material.lightMap;const scaleFactor=renderer._useLegacyLights===true?Math.PI:1;uniforms.lightMapIntensity.value=material.lightMapIntensity*scaleFactor;refreshTransformUniform(material.lightMap,uniforms.lightMapTransform)}if(material.aoMap){uniforms.aoMap.value=material.aoMap;uniforms.aoMapIntensity.value=material.aoMapIntensity;refreshTransformUniform(material.aoMap,uniforms.aoMapTransform)}}function refreshUniformsLine(uniforms,material){uniforms.diffuse.value.copy(material.color);uniforms.opacity.value=material.opacity;if(material.map){uniforms.map.value=material.map;refreshTransformUniform(material.map,uniforms.mapTransform)}}function refreshUniformsDash(uniforms,material){uniforms.dashSize.value=material.dashSize;uniforms.totalSize.value=material.dashSize+material.gapSize;uniforms.scale.value=material.scale}function refreshUniformsPoints(uniforms,material,pixelRatio,height){uniforms.diffuse.value.copy(material.color);uniforms.opacity.value=material.opacity;uniforms.size.value=material.size*pixelRatio;uniforms.scale.value=height*0.5;if(material.map){uniforms.map.value=material.map;refreshTransformUniform(material.map,uniforms.uvTransform)}if(material.alphaMap){uniforms.alphaMap.value=material.alphaMap;refreshTransformUniform(material.alphaMap,uniforms.alphaMapTransform)}if(material.alphaTest>0){uniforms.alphaTest.value=material.alphaTest}}function refreshUniformsSprites(uniforms,material){uniforms.diffuse.value.copy(material.color);uniforms.opacity.value=material.opacity;uniforms.rotation.value=material.rotation;if(material.map){uniforms.map.value=material.map;refreshTransformUniform(material.map,uniforms.mapTransform)}if(material.alphaMap){uniforms.alphaMap.value=material.alphaMap;refreshTransformUniform(material.alphaMap,uniforms.alphaMapTransform)}if(material.alphaTest>0){uniforms.alphaTest.value=material.alphaTest}}function refreshUniformsPhong(uniforms,material){uniforms.specular.value.copy(material.specular);uniforms.shininess.value=Math.max(material.shininess,1e-4)}function refreshUniformsToon(uniforms,material){if(material.gradientMap){uniforms.gradientMap.value=material.gradientMap}}function refreshUniformsStandard(uniforms,material){uniforms.metalness.value=material.metalness;if(material.metalnessMap){uniforms.metalnessMap.value=material.metalnessMap;refreshTransformUniform(material.metalnessMap,uniforms.metalnessMapTransform)}uniforms.roughness.value=material.roughness;if(material.roughnessMap){uniforms.roughnessMap.value=material.roughnessMap;refreshTransformUniform(material.roughnessMap,uniforms.roughnessMapTransform)}if(material.envMap){uniforms.envMapIntensity.value=material.envMapIntensity}}function refreshUniformsPhysical(uniforms,material,transmissionRenderTarget){uniforms.ior.value=material.ior;if(material.sheen>0){uniforms.sheenColor.value.copy(material.sheenColor).multiplyScalar(material.sheen);uniforms.sheenRoughness.value=material.sheenRoughness;if(material.sheenColorMap){uniforms.sheenColorMap.value=material.sheenColorMap;refreshTransformUniform(material.sheenColorMap,uniforms.sheenColorMapTransform)}if(material.sheenRoughnessMap){uniforms.sheenRoughnessMap.value=material.sheenRoughnessMap;refreshTransformUniform(material.sheenRoughnessMap,uniforms.sheenRoughnessMapTransform)}}if(material.clearcoat>0){uniforms.clearcoat.value=material.clearcoat;uniforms.clearcoatRoughness.value=material.clearcoatRoughness;if(material.clearcoatMap){uniforms.clearcoatMap.value=material.clearcoatMap;refreshTransformUniform(material.clearcoatMap,uniforms.clearcoatMapTransform)}if(material.clearcoatRoughnessMap){uniforms.clearcoatRoughnessMap.value=material.clearcoatRoughnessMap;refreshTransformUniform(material.clearcoatRoughnessMap,uniforms.clearcoatRoughnessMapTransform)}if(material.clearcoatNormalMap){uniforms.clearcoatNormalMap.value=material.clearcoatNormalMap;refreshTransformUniform(material.clearcoatNormalMap,uniforms.clearcoatNormalMapTransform);uniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale);if(material.side===BackSide){uniforms.clearcoatNormalScale.value.negate()}}}if(material.iridescence>0){uniforms.iridescence.value=material.iridescence;uniforms.iridescenceIOR.value=material.iridescenceIOR;uniforms.iridescenceThicknessMinimum.value=material.iridescenceThicknessRange[0];uniforms.iridescenceThicknessMaximum.value=material.iridescenceThicknessRange[1];if(material.iridescenceMap){uniforms.iridescenceMap.value=material.iridescenceMap;refreshTransformUniform(material.iridescenceMap,uniforms.iridescenceMapTransform)}if(material.iridescenceThicknessMap){uniforms.iridescenceThicknessMap.value=material.iridescenceThicknessMap;refreshTransformUniform(material.iridescenceThicknessMap,uniforms.iridescenceThicknessMapTransform)}}if(material.transmission>0){uniforms.transmission.value=material.transmission;uniforms.transmissionSamplerMap.value=transmissionRenderTarget.texture;uniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width,transmissionRenderTarget.height);if(material.transmissionMap){uniforms.transmissionMap.value=material.transmissionMap;refreshTransformUniform(material.transmissionMap,uniforms.transmissionMapTransform)}uniforms.thickness.value=material.thickness;if(material.thicknessMap){uniforms.thicknessMap.value=material.thicknessMap;refreshTransformUniform(material.thicknessMap,uniforms.thicknessMapTransform)}uniforms.attenuationDistance.value=material.attenuationDistance;uniforms.attenuationColor.value.copy(material.attenuationColor)}if(material.anisotropy>0){uniforms.anisotropyVector.value.set(material.anisotropy*Math.cos(material.anisotropyRotation),material.anisotropy*Math.sin(material.anisotropyRotation));if(material.anisotropyMap){uniforms.anisotropyMap.value=material.anisotropyMap;refreshTransformUniform(material.anisotropyMap,uniforms.anisotropyMapTransform)}}uniforms.specularIntensity.value=material.specularIntensity;uniforms.specularColor.value.copy(material.specularColor);if(material.specularColorMap){uniforms.specularColorMap.value=material.specularColorMap;refreshTransformUniform(material.specularColorMap,uniforms.specularColorMapTransform)}if(material.specularIntensityMap){uniforms.specularIntensityMap.value=material.specularIntensityMap;refreshTransformUniform(material.specularIntensityMap,uniforms.specularIntensityMapTransform)}}function refreshUniformsMatcap(uniforms,material){if(material.matcap){uniforms.matcap.value=material.matcap}}function refreshUniformsDistance(uniforms,material){const light=properties.get(material).light;uniforms.referencePosition.value.setFromMatrixPosition(light.matrixWorld);uniforms.nearDistance.value=light.shadow.camera.near;uniforms.farDistance.value=light.shadow.camera.far}return{refreshFogUniforms:refreshFogUniforms,refreshMaterialUniforms:refreshMaterialUniforms}}function WebGLUniformsGroups(gl,info,capabilities,state){let buffers={};let updateList={};let allocatedBindingPoints=[];const maxBindingPoints=gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS);function bind(uniformsGroup,program){const webglProgram=program.program;state.uniformBlockBinding(uniformsGroup,webglProgram)}function update(uniformsGroup,program){let buffer=buffers[uniformsGroup.id];if(buffer===undefined){prepareUniformsGroup(uniformsGroup);buffer=createBuffer(uniformsGroup);buffers[uniformsGroup.id]=buffer;uniformsGroup.addEventListener("dispose",onUniformsGroupsDispose)}const webglProgram=program.program;state.updateUBOMapping(uniformsGroup,webglProgram);const frame=info.render.frame;if(updateList[uniformsGroup.id]!==frame){updateBufferData(uniformsGroup);updateList[uniformsGroup.id]=frame}}function createBuffer(uniformsGroup){const bindingPointIndex=allocateBindingPointIndex();uniformsGroup.__bindingPointIndex=bindingPointIndex;const buffer=gl.createBuffer();const size=uniformsGroup.__size;const usage=uniformsGroup.usage;gl.bindBuffer(gl.UNIFORM_BUFFER,buffer);gl.bufferData(gl.UNIFORM_BUFFER,size,usage);gl.bindBuffer(gl.UNIFORM_BUFFER,null);gl.bindBufferBase(gl.UNIFORM_BUFFER,bindingPointIndex,buffer);return buffer}function allocateBindingPointIndex(){for(let i=0;i0)offset+=chunkSize-chunkOffset;uniformsGroup.__size=offset;uniformsGroup.__cache={};return this}function getUniformSize(value){const info={boundary:0,storage:0};if(typeof value==="number"||typeof value==="boolean"){info.boundary=4;info.storage=4}else if(value.isVector2){info.boundary=8;info.storage=8}else if(value.isVector3||value.isColor){info.boundary=16;info.storage=12}else if(value.isVector4){info.boundary=16;info.storage=16}else if(value.isMatrix3){info.boundary=48;info.storage=48}else if(value.isMatrix4){info.boundary=64;info.storage=64}else if(value.isTexture){console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.")}else{console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",value)}return info}function onUniformsGroupsDispose(event){const uniformsGroup=event.target;uniformsGroup.removeEventListener("dispose",onUniformsGroupsDispose);const index=allocatedBindingPoints.indexOf(uniformsGroup.__bindingPointIndex);allocatedBindingPoints.splice(index,1);gl.deleteBuffer(buffers[uniformsGroup.id]);delete buffers[uniformsGroup.id];delete updateList[uniformsGroup.id]}function dispose(){for(const id in buffers){gl.deleteBuffer(buffers[id])}allocatedBindingPoints=[];buffers={};updateList={}}return{bind:bind,update:update,dispose:dispose}}class WebGLRenderer{constructor(parameters={}){const{canvas=createCanvasElement(),context=null,depth=true,stencil=false,alpha=false,antialias=false,premultipliedAlpha=true,preserveDrawingBuffer=false,powerPreference="default",failIfMajorPerformanceCaveat=false}=parameters;this.isWebGLRenderer=true;let _alpha;if(context!==null){if(typeof WebGLRenderingContext!=="undefined"&&context instanceof WebGLRenderingContext){throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.")}_alpha=context.getContextAttributes().alpha}else{_alpha=alpha}const uintClearColor=new Uint32Array(4);const intClearColor=new Int32Array(4);let currentRenderList=null;let currentRenderState=null;const renderListStack=[];const renderStateStack=[];this.domElement=canvas;this.debug={checkShaderErrors:true,onShaderError:null};this.autoClear=true;this.autoClearColor=true;this.autoClearDepth=true;this.autoClearStencil=true;this.sortObjects=true;this.clippingPlanes=[];this.localClippingEnabled=false;this._outputColorSpace=SRGBColorSpace;this._useLegacyLights=false;this.toneMapping=NoToneMapping;this.toneMappingExposure=1;const _this=this;let _isContextLost=false;let _currentActiveCubeFace=0;let _currentActiveMipmapLevel=0;let _currentRenderTarget=null;let _currentMaterialId=-1;let _currentCamera=null;const _currentViewport=new Vector4;const _currentScissor=new Vector4;let _currentScissorTest=null;const _currentClearColor=new Color(0);let _currentClearAlpha=0;let _width=canvas.width;let _height=canvas.height;let _pixelRatio=1;let _opaqueSort=null;let _transparentSort=null;const _viewport=new Vector4(0,0,_width,_height);const _scissor=new Vector4(0,0,_width,_height);let _scissorTest=false;const _frustum=new Frustum;let _clippingEnabled=false;let _localClippingEnabled=false;const _projScreenMatrix=new Matrix4;const _vector2=new Vector2;const _vector3=new Vector3;const _emptyScene={background:null,fog:null,environment:null,overrideMaterial:null,isScene:true};function getTargetPixelRatio(){return _currentRenderTarget===null?_pixelRatio:1}let _gl=context;function getContext(contextName,contextAttributes){const context=canvas.getContext(contextName,contextAttributes);if(context!==null)return context;return null}try{const contextAttributes={alpha:true,depth,stencil,antialias,premultipliedAlpha,preserveDrawingBuffer,powerPreference,failIfMajorPerformanceCaveat};if("setAttribute"in canvas)canvas.setAttribute("data-engine",`three.js r${REVISION}`);canvas.addEventListener("webglcontextlost",onContextLost,false);canvas.addEventListener("webglcontextrestored",onContextRestore,false);canvas.addEventListener("webglcontextcreationerror",onContextCreationError,false);if(_gl===null){const contextName="webgl2";_gl=getContext(contextName,contextAttributes);if(_gl===null){if(getContext(contextName)){throw new Error("Error creating WebGL context with your selected attributes.")}else{throw new Error("Error creating WebGL context.")}}}}catch(error){console.error("THREE.WebGLRenderer: "+error.message);throw error}let extensions,capabilities,state,info;let properties,textures,cubemaps,cubeuvmaps,attributes,geometries,objects;let programCache,materials,renderLists,renderStates,clipping,shadowMap;let background,morphtargets,bufferRenderer,indexedBufferRenderer;let utils,bindingStates,uniformsGroups;function initGLContext(){extensions=new WebGLExtensions(_gl);extensions.init();capabilities=new WebGLCapabilities(_gl,extensions,parameters);utils=new WebGLUtils(_gl,extensions);state=new WebGLState(_gl);info=new WebGLInfo(_gl);properties=new WebGLProperties;textures=new WebGLTextures(_gl,extensions,state,properties,capabilities,utils,info);cubemaps=new WebGLCubeMaps(_this);cubeuvmaps=new WebGLCubeUVMaps(_this);attributes=new WebGLAttributes(_gl);bindingStates=new WebGLBindingStates(_gl,attributes);geometries=new WebGLGeometries(_gl,attributes,info,bindingStates);objects=new WebGLObjects(_gl,geometries,attributes,info);morphtargets=new WebGLMorphtargets(_gl,capabilities,textures);clipping=new WebGLClipping(properties);programCache=new WebGLPrograms(_this,cubemaps,cubeuvmaps,extensions,capabilities,bindingStates,clipping);materials=new WebGLMaterials(_this,properties);renderLists=new WebGLRenderLists;renderStates=new WebGLRenderStates(extensions);background=new WebGLBackground(_this,cubemaps,cubeuvmaps,state,objects,_alpha,premultipliedAlpha);shadowMap=new WebGLShadowMap(_this,objects,capabilities);uniformsGroups=new WebGLUniformsGroups(_gl,info,capabilities,state);bufferRenderer=new WebGLBufferRenderer(_gl,extensions,info);indexedBufferRenderer=new WebGLIndexedBufferRenderer(_gl,extensions,info);info.programs=programCache.programs;_this.capabilities=capabilities;_this.extensions=extensions;_this.properties=properties;_this.renderLists=renderLists;_this.shadowMap=shadowMap;_this.state=state;_this.info=info}initGLContext();const xr=new WebXRManager(_this,_gl);this.xr=xr;this.getContext=function(){return _gl};this.getContextAttributes=function(){return _gl.getContextAttributes()};this.forceContextLoss=function(){const extension=extensions.get("WEBGL_lose_context");if(extension)extension.loseContext()};this.forceContextRestore=function(){const extension=extensions.get("WEBGL_lose_context");if(extension)extension.restoreContext()};this.getPixelRatio=function(){return _pixelRatio};this.setPixelRatio=function(value){if(value===undefined)return;_pixelRatio=value;this.setSize(_width,_height,false)};this.getSize=function(target){return target.set(_width,_height)};this.setSize=function(width,height,updateStyle=true){if(xr.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}_width=width;_height=height;canvas.width=Math.floor(width*_pixelRatio);canvas.height=Math.floor(height*_pixelRatio);if(updateStyle===true){canvas.style.width=width+"px";canvas.style.height=height+"px"}this.setViewport(0,0,width,height)};this.getDrawingBufferSize=function(target){return target.set(_width*_pixelRatio,_height*_pixelRatio).floor()};this.setDrawingBufferSize=function(width,height,pixelRatio){_width=width;_height=height;_pixelRatio=pixelRatio;canvas.width=Math.floor(width*pixelRatio);canvas.height=Math.floor(height*pixelRatio);this.setViewport(0,0,width,height)};this.getCurrentViewport=function(target){return target.copy(_currentViewport)};this.getViewport=function(target){return target.copy(_viewport)};this.setViewport=function(x,y,width,height){if(x.isVector4){_viewport.set(x.x,x.y,x.z,x.w)}else{_viewport.set(x,y,width,height)}state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).round())};this.getScissor=function(target){return target.copy(_scissor)};this.setScissor=function(x,y,width,height){if(x.isVector4){_scissor.set(x.x,x.y,x.z,x.w)}else{_scissor.set(x,y,width,height)}state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).round())};this.getScissorTest=function(){return _scissorTest};this.setScissorTest=function(boolean){state.setScissorTest(_scissorTest=boolean)};this.setOpaqueSort=function(method){_opaqueSort=method};this.setTransparentSort=function(method){_transparentSort=method};this.getClearColor=function(target){return target.copy(background.getClearColor())};this.setClearColor=function(){background.setClearColor.apply(background,arguments)};this.getClearAlpha=function(){return background.getClearAlpha()};this.setClearAlpha=function(){background.setClearAlpha.apply(background,arguments)};this.clear=function(color=true,depth=true,stencil=true){let bits=0;if(color){let isIntegerFormat=false;if(_currentRenderTarget!==null){const targetFormat=_currentRenderTarget.texture.format;isIntegerFormat=targetFormat===RGBAIntegerFormat||targetFormat===RGIntegerFormat||targetFormat===RedIntegerFormat}if(isIntegerFormat){const targetType=_currentRenderTarget.texture.type;const isUnsignedType=targetType===UnsignedByteType||targetType===UnsignedIntType||targetType===UnsignedShortType||targetType===UnsignedInt248Type||targetType===UnsignedShort4444Type||targetType===UnsignedShort5551Type;const clearColor=background.getClearColor();const a=background.getClearAlpha();const r=clearColor.r;const g=clearColor.g;const b=clearColor.b;if(isUnsignedType){uintClearColor[0]=r;uintClearColor[1]=g;uintClearColor[2]=b;uintClearColor[3]=a;_gl.clearBufferuiv(_gl.COLOR,0,uintClearColor)}else{intClearColor[0]=r;intClearColor[1]=g;intClearColor[2]=b;intClearColor[3]=a;_gl.clearBufferiv(_gl.COLOR,0,intClearColor)}}else{bits|=_gl.COLOR_BUFFER_BIT}}if(depth)bits|=_gl.DEPTH_BUFFER_BIT;if(stencil){bits|=_gl.STENCIL_BUFFER_BIT;this.state.buffers.stencil.setMask(4294967295)}_gl.clear(bits)};this.clearColor=function(){this.clear(true,false,false)};this.clearDepth=function(){this.clear(false,true,false)};this.clearStencil=function(){this.clear(false,false,true)};this.dispose=function(){canvas.removeEventListener("webglcontextlost",onContextLost,false);canvas.removeEventListener("webglcontextrestored",onContextRestore,false);canvas.removeEventListener("webglcontextcreationerror",onContextCreationError,false);renderLists.dispose();renderStates.dispose();properties.dispose();cubemaps.dispose();cubeuvmaps.dispose();objects.dispose();bindingStates.dispose();uniformsGroups.dispose();programCache.dispose();xr.dispose();xr.removeEventListener("sessionstart",onXRSessionStart);xr.removeEventListener("sessionend",onXRSessionEnd);animation.stop()};function onContextLost(event){event.preventDefault();console.log("THREE.WebGLRenderer: Context Lost.");_isContextLost=true}function onContextRestore(){console.log("THREE.WebGLRenderer: Context Restored.");_isContextLost=false;const infoAutoReset=info.autoReset;const shadowMapEnabled=shadowMap.enabled;const shadowMapAutoUpdate=shadowMap.autoUpdate;const shadowMapNeedsUpdate=shadowMap.needsUpdate;const shadowMapType=shadowMap.type;initGLContext();info.autoReset=infoAutoReset;shadowMap.enabled=shadowMapEnabled;shadowMap.autoUpdate=shadowMapAutoUpdate;shadowMap.needsUpdate=shadowMapNeedsUpdate;shadowMap.type=shadowMapType}function onContextCreationError(event){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",event.statusMessage)}function onMaterialDispose(event){const material=event.target;material.removeEventListener("dispose",onMaterialDispose);deallocateMaterial(material)}function deallocateMaterial(material){releaseMaterialProgramReferences(material);properties.remove(material)}function releaseMaterialProgramReferences(material){const programs=properties.get(material).programs;if(programs!==undefined){programs.forEach(function(program){programCache.releaseProgram(program)});if(material.isShaderMaterial){programCache.releaseShaderCache(material)}}}this.renderBufferDirect=function(camera,scene,geometry,material,object,group){if(scene===null)scene=_emptyScene;const frontFaceCW=object.isMesh&&object.matrixWorld.determinant()<0;const program=setProgram(camera,scene,geometry,material,object);state.setMaterial(material,frontFaceCW);let index=geometry.index;let rangeFactor=1;if(material.wireframe===true){index=geometries.getWireframeAttribute(geometry);if(index===undefined)return;rangeFactor=2}const drawRange=geometry.drawRange;const position=geometry.attributes.position;let drawStart=drawRange.start*rangeFactor;let drawEnd=(drawRange.start+drawRange.count)*rangeFactor;if(group!==null){drawStart=Math.max(drawStart,group.start*rangeFactor);drawEnd=Math.min(drawEnd,(group.start+group.count)*rangeFactor)}if(index!==null){drawStart=Math.max(drawStart,0);drawEnd=Math.min(drawEnd,index.count)}else if(position!==undefined&&position!==null){drawStart=Math.max(drawStart,0);drawEnd=Math.min(drawEnd,position.count)}const drawCount=drawEnd-drawStart;if(drawCount<0||drawCount===Infinity)return;bindingStates.setup(object,material,program,geometry,index);let attribute;let renderer=bufferRenderer;if(index!==null){attribute=attributes.get(index);renderer=indexedBufferRenderer;renderer.setIndex(attribute)}if(object.isMesh){if(material.wireframe===true){state.setLineWidth(material.wireframeLinewidth*getTargetPixelRatio());renderer.setMode(_gl.LINES)}else{renderer.setMode(_gl.TRIANGLES)}}else if(object.isLine){let lineWidth=material.linewidth;if(lineWidth===undefined)lineWidth=1;state.setLineWidth(lineWidth*getTargetPixelRatio());if(object.isLineSegments){renderer.setMode(_gl.LINES)}else if(object.isLineLoop){renderer.setMode(_gl.LINE_LOOP)}else{renderer.setMode(_gl.LINE_STRIP)}}else if(object.isPoints){renderer.setMode(_gl.POINTS)}else if(object.isSprite){renderer.setMode(_gl.TRIANGLES)}if(object.isBatchedMesh){renderer.renderMultiDraw(object._multiDrawStarts,object._multiDrawCounts,object._multiDrawCount)}else if(object.isInstancedMesh){renderer.renderInstances(drawStart,drawCount,object.count)}else if(geometry.isInstancedBufferGeometry){const maxInstanceCount=geometry._maxInstanceCount!==undefined?geometry._maxInstanceCount:Infinity;const instanceCount=Math.min(geometry.instanceCount,maxInstanceCount);renderer.renderInstances(drawStart,drawCount,instanceCount)}else{renderer.render(drawStart,drawCount)}};function prepareMaterial(material,scene,object){if(material.transparent===true&&material.side===DoubleSide&&material.forceSinglePass===false){material.side=BackSide;material.needsUpdate=true;getProgram(material,scene,object);material.side=FrontSide;material.needsUpdate=true;getProgram(material,scene,object);material.side=DoubleSide}else{getProgram(material,scene,object)}}this.compile=function(scene,camera,targetScene=null){if(targetScene===null)targetScene=scene;currentRenderState=renderStates.get(targetScene);currentRenderState.init();renderStateStack.push(currentRenderState);targetScene.traverseVisible(function(object){if(object.isLight&&object.layers.test(camera.layers)){currentRenderState.pushLight(object);if(object.castShadow){currentRenderState.pushShadow(object)}}});if(scene!==targetScene){scene.traverseVisible(function(object){if(object.isLight&&object.layers.test(camera.layers)){currentRenderState.pushLight(object);if(object.castShadow){currentRenderState.pushShadow(object)}}})}currentRenderState.setupLights(_this._useLegacyLights);const materials=new Set;scene.traverse(function(object){const material=object.material;if(material){if(Array.isArray(material)){for(let i=0;i{function checkMaterialsReady(){materials.forEach(function(material){const materialProperties=properties.get(material);const program=materialProperties.currentProgram;if(program.isReady()){materials.delete(material)}});if(materials.size===0){resolve(scene);return}setTimeout(checkMaterialsReady,10)}if(extensions.get("KHR_parallel_shader_compile")!==null){checkMaterialsReady()}else{setTimeout(checkMaterialsReady,10)}})};let onAnimationFrameCallback=null;function onAnimationFrame(time){if(onAnimationFrameCallback)onAnimationFrameCallback(time)}function onXRSessionStart(){animation.stop()}function onXRSessionEnd(){animation.start()}const animation=new WebGLAnimation;animation.setAnimationLoop(onAnimationFrame);if(typeof self!=="undefined")animation.setContext(self);this.setAnimationLoop=function(callback){onAnimationFrameCallback=callback;xr.setAnimationLoop(callback);callback===null?animation.stop():animation.start()};xr.addEventListener("sessionstart",onXRSessionStart);xr.addEventListener("sessionend",onXRSessionEnd);this.render=function(scene,camera){if(camera!==undefined&&camera.isCamera!==true){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(_isContextLost===true)return;if(scene.matrixWorldAutoUpdate===true)scene.updateMatrixWorld();if(camera.parent===null&&camera.matrixWorldAutoUpdate===true)camera.updateMatrixWorld();if(xr.enabled===true&&xr.isPresenting===true){if(xr.cameraAutoUpdate===true)xr.updateCamera(camera);camera=xr.getCamera()}if(scene.isScene===true)scene.onBeforeRender(_this,scene,camera,_currentRenderTarget);currentRenderState=renderStates.get(scene,renderStateStack.length);currentRenderState.init();renderStateStack.push(currentRenderState);_projScreenMatrix.multiplyMatrices(camera.projectionMatrix,camera.matrixWorldInverse);_frustum.setFromProjectionMatrix(_projScreenMatrix);_localClippingEnabled=this.localClippingEnabled;_clippingEnabled=clipping.init(this.clippingPlanes,_localClippingEnabled);currentRenderList=renderLists.get(scene,renderListStack.length);currentRenderList.init();renderListStack.push(currentRenderList);projectObject(scene,camera,0,_this.sortObjects);currentRenderList.finish();if(_this.sortObjects===true){currentRenderList.sort(_opaqueSort,_transparentSort)}this.info.render.frame++;if(_clippingEnabled===true)clipping.beginShadows();const shadowsArray=currentRenderState.state.shadowsArray;shadowMap.render(shadowsArray,scene,camera);if(_clippingEnabled===true)clipping.endShadows();if(this.info.autoReset===true)this.info.reset();if(xr.enabled===false||xr.isPresenting===false||xr.hasDepthSensing()===false){background.render(currentRenderList,scene)}currentRenderState.setupLights(_this._useLegacyLights);if(camera.isArrayCamera){const cameras=camera.cameras;for(let i=0,l=cameras.length;i0){currentRenderState=renderStateStack[renderStateStack.length-1]}else{currentRenderState=null}renderListStack.pop();if(renderListStack.length>0){currentRenderList=renderListStack[renderListStack.length-1]}else{currentRenderList=null}};function projectObject(object,camera,groupOrder,sortObjects){if(object.visible===false)return;const visible=object.layers.test(camera.layers);if(visible){if(object.isGroup){groupOrder=object.renderOrder}else if(object.isLOD){if(object.autoUpdate===true)object.update(camera)}else if(object.isLight){currentRenderState.pushLight(object);if(object.castShadow){currentRenderState.pushShadow(object)}}else if(object.isSprite){if(!object.frustumCulled||_frustum.intersectsSprite(object)){if(sortObjects){_vector3.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix)}const geometry=objects.update(object);const material=object.material;if(material.visible){currentRenderList.push(object,geometry,material,groupOrder,_vector3.z,null)}}}else if(object.isMesh||object.isLine||object.isPoints){if(!object.frustumCulled||_frustum.intersectsObject(object)){const geometry=objects.update(object);const material=object.material;if(sortObjects){if(object.boundingSphere!==undefined){if(object.boundingSphere===null)object.computeBoundingSphere();_vector3.copy(object.boundingSphere.center)}else{if(geometry.boundingSphere===null)geometry.computeBoundingSphere();_vector3.copy(geometry.boundingSphere.center)}_vector3.applyMatrix4(object.matrixWorld).applyMatrix4(_projScreenMatrix)}if(Array.isArray(material)){const groups=geometry.groups;for(let i=0,l=groups.length;i0)renderTransmissionPass(opaqueObjects,transmissiveObjects,scene,camera);if(viewport)state.viewport(_currentViewport.copy(viewport));if(opaqueObjects.length>0)renderObjects(opaqueObjects,scene,camera);if(transmissiveObjects.length>0)renderObjects(transmissiveObjects,scene,camera);if(transparentObjects.length>0)renderObjects(transparentObjects,scene,camera);state.buffers.depth.setTest(true);state.buffers.depth.setMask(true);state.buffers.color.setMask(true);state.setPolygonOffset(false)}function renderTransmissionPass(opaqueObjects,transmissiveObjects,scene,camera){const overrideMaterial=scene.isScene===true?scene.overrideMaterial:null;if(overrideMaterial!==null){return}if(currentRenderState.state.transmissionRenderTarget===null){currentRenderState.state.transmissionRenderTarget=new WebGLRenderTarget(1,1,{generateMipmaps:true,type:extensions.has("EXT_color_buffer_half_float")||extensions.has("EXT_color_buffer_float")?HalfFloatType:UnsignedByteType,minFilter:LinearMipmapLinearFilter,samples:4,stencilBuffer:stencil});const renderTargetProperties=properties.get(currentRenderState.state.transmissionRenderTarget);renderTargetProperties.__isTransmissionRenderTarget=true}const transmissionRenderTarget=currentRenderState.state.transmissionRenderTarget;_this.getDrawingBufferSize(_vector2);transmissionRenderTarget.setSize(_vector2.x,_vector2.y);const currentRenderTarget=_this.getRenderTarget();_this.setRenderTarget(transmissionRenderTarget);_this.getClearColor(_currentClearColor);_currentClearAlpha=_this.getClearAlpha();if(_currentClearAlpha<1)_this.setClearColor(16777215,0.5);_this.clear();const currentToneMapping=_this.toneMapping;_this.toneMapping=NoToneMapping;renderObjects(opaqueObjects,scene,camera);textures.updateMultisampleRenderTarget(transmissionRenderTarget);textures.updateRenderTargetMipmap(transmissionRenderTarget);let renderTargetNeedsUpdate=false;for(let i=0,l=transmissiveObjects.length;i0);const morphTargets=!!geometry.morphAttributes.position;const morphNormals=!!geometry.morphAttributes.normal;const morphColors=!!geometry.morphAttributes.color;let toneMapping=NoToneMapping;if(material.toneMapped){if(_currentRenderTarget===null||_currentRenderTarget.isXRRenderTarget===true){toneMapping=_this.toneMapping}}const morphAttribute=geometry.morphAttributes.position||geometry.morphAttributes.normal||geometry.morphAttributes.color;const morphTargetsCount=morphAttribute!==undefined?morphAttribute.length:0;const materialProperties=properties.get(material);const lights=currentRenderState.state.lights;if(_clippingEnabled===true){if(_localClippingEnabled===true||camera!==_currentCamera){const useCache=camera===_currentCamera&&material.id===_currentMaterialId;clipping.setState(material,camera,useCache)}}let needsProgramChange=false;if(material.version===materialProperties.__version){if(materialProperties.needsLights&&materialProperties.lightsStateVersion!==lights.state.version){needsProgramChange=true}else if(materialProperties.outputColorSpace!==colorSpace){needsProgramChange=true}else if(object.isBatchedMesh&&materialProperties.batching===false){needsProgramChange=true}else if(!object.isBatchedMesh&&materialProperties.batching===true){needsProgramChange=true}else if(object.isInstancedMesh&&materialProperties.instancing===false){needsProgramChange=true}else if(!object.isInstancedMesh&&materialProperties.instancing===true){needsProgramChange=true}else if(object.isSkinnedMesh&&materialProperties.skinning===false){needsProgramChange=true}else if(!object.isSkinnedMesh&&materialProperties.skinning===true){needsProgramChange=true}else if(object.isInstancedMesh&&materialProperties.instancingColor===true&&object.instanceColor===null){needsProgramChange=true}else if(object.isInstancedMesh&&materialProperties.instancingColor===false&&object.instanceColor!==null){needsProgramChange=true}else if(object.isInstancedMesh&&materialProperties.instancingMorph===true&&object.morphTexture===null){needsProgramChange=true}else if(object.isInstancedMesh&&materialProperties.instancingMorph===false&&object.morphTexture!==null){needsProgramChange=true}else if(materialProperties.envMap!==envMap){needsProgramChange=true}else if(material.fog===true&&materialProperties.fog!==fog){needsProgramChange=true}else if(materialProperties.numClippingPlanes!==undefined&&(materialProperties.numClippingPlanes!==clipping.numPlanes||materialProperties.numIntersection!==clipping.numIntersection)){needsProgramChange=true}else if(materialProperties.vertexAlphas!==vertexAlphas){needsProgramChange=true}else if(materialProperties.vertexTangents!==vertexTangents){needsProgramChange=true}else if(materialProperties.morphTargets!==morphTargets){needsProgramChange=true}else if(materialProperties.morphNormals!==morphNormals){needsProgramChange=true}else if(materialProperties.morphColors!==morphColors){needsProgramChange=true}else if(materialProperties.toneMapping!==toneMapping){needsProgramChange=true}else if(materialProperties.morphTargetsCount!==morphTargetsCount){needsProgramChange=true}}else{needsProgramChange=true;materialProperties.__version=material.version}let program=materialProperties.currentProgram;if(needsProgramChange===true){program=getProgram(material,scene,object)}let refreshProgram=false;let refreshMaterial=false;let refreshLights=false;const p_uniforms=program.getUniforms(),m_uniforms=materialProperties.uniforms;if(state.useProgram(program.program)){refreshProgram=true;refreshMaterial=true;refreshLights=true}if(material.id!==_currentMaterialId){_currentMaterialId=material.id;refreshMaterial=true}if(refreshProgram||_currentCamera!==camera){p_uniforms.setValue(_gl,"projectionMatrix",camera.projectionMatrix);p_uniforms.setValue(_gl,"viewMatrix",camera.matrixWorldInverse);const uCamPos=p_uniforms.map.cameraPosition;if(uCamPos!==undefined){uCamPos.setValue(_gl,_vector3.setFromMatrixPosition(camera.matrixWorld))}if(capabilities.logarithmicDepthBuffer){p_uniforms.setValue(_gl,"logDepthBufFC",2/(Math.log(camera.far+1)/Math.LN2))}if(material.isMeshPhongMaterial||material.isMeshToonMaterial||material.isMeshLambertMaterial||material.isMeshBasicMaterial||material.isMeshStandardMaterial||material.isShaderMaterial){p_uniforms.setValue(_gl,"isOrthographic",camera.isOrthographicCamera===true)}if(_currentCamera!==camera){_currentCamera=camera;refreshMaterial=true;refreshLights=true}}if(object.isSkinnedMesh){p_uniforms.setOptional(_gl,object,"bindMatrix");p_uniforms.setOptional(_gl,object,"bindMatrixInverse");const skeleton=object.skeleton;if(skeleton){if(skeleton.boneTexture===null)skeleton.computeBoneTexture();p_uniforms.setValue(_gl,"boneTexture",skeleton.boneTexture,textures)}}if(object.isBatchedMesh){p_uniforms.setOptional(_gl,object,"batchingTexture");p_uniforms.setValue(_gl,"batchingTexture",object._matricesTexture,textures)}const morphAttributes=geometry.morphAttributes;if(morphAttributes.position!==undefined||morphAttributes.normal!==undefined||morphAttributes.color!==undefined){morphtargets.update(object,geometry,program)}if(refreshMaterial||materialProperties.receiveShadow!==object.receiveShadow){materialProperties.receiveShadow=object.receiveShadow;p_uniforms.setValue(_gl,"receiveShadow",object.receiveShadow)}if(material.isMeshGouraudMaterial&&material.envMap!==null){m_uniforms.envMap.value=envMap;m_uniforms.flipEnvMap.value=envMap.isCubeTexture&&envMap.isRenderTargetTexture===false?-1:1}if(material.isMeshStandardMaterial&&material.envMap===null&&scene.environment!==null){m_uniforms.envMapIntensity.value=scene.environmentIntensity}if(refreshMaterial){p_uniforms.setValue(_gl,"toneMappingExposure",_this.toneMappingExposure);if(materialProperties.needsLights){markUniformsLightsNeedsUpdate(m_uniforms,refreshLights)}if(fog&&material.fog===true){materials.refreshFogUniforms(m_uniforms,fog)}materials.refreshMaterialUniforms(m_uniforms,material,_pixelRatio,_height,currentRenderState.state.transmissionRenderTarget);WebGLUniforms.upload(_gl,getUniformList(materialProperties),m_uniforms,textures)}if(material.isShaderMaterial&&material.uniformsNeedUpdate===true){WebGLUniforms.upload(_gl,getUniformList(materialProperties),m_uniforms,textures);material.uniformsNeedUpdate=false}if(material.isSpriteMaterial){p_uniforms.setValue(_gl,"center",object.center)}p_uniforms.setValue(_gl,"modelViewMatrix",object.modelViewMatrix);p_uniforms.setValue(_gl,"normalMatrix",object.normalMatrix);p_uniforms.setValue(_gl,"modelMatrix",object.matrixWorld);if(material.isShaderMaterial||material.isRawShaderMaterial){const groups=material.uniformsGroups;for(let i=0,l=groups.length;i0&&textures.useMultisampledRTT(renderTarget)===false){framebuffer=properties.get(renderTarget).__webglMultisampledFramebuffer}else{if(Array.isArray(__webglFramebuffer)){framebuffer=__webglFramebuffer[activeMipmapLevel]}else{framebuffer=__webglFramebuffer}}_currentViewport.copy(renderTarget.viewport);_currentScissor.copy(renderTarget.scissor);_currentScissorTest=renderTarget.scissorTest}else{_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor();_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor();_currentScissorTest=_scissorTest}const framebufferBound=state.bindFramebuffer(_gl.FRAMEBUFFER,framebuffer);if(framebufferBound&&useDefaultFramebuffer){state.drawBuffers(renderTarget,framebuffer)}state.viewport(_currentViewport);state.scissor(_currentScissor);state.setScissorTest(_currentScissorTest);if(isCube){const textureProperties=properties.get(renderTarget.texture);_gl.framebufferTexture2D(_gl.FRAMEBUFFER,_gl.COLOR_ATTACHMENT0,_gl.TEXTURE_CUBE_MAP_POSITIVE_X+activeCubeFace,textureProperties.__webglTexture,activeMipmapLevel)}else if(isRenderTarget3D){const textureProperties=properties.get(renderTarget.texture);const layer=activeCubeFace||0;_gl.framebufferTextureLayer(_gl.FRAMEBUFFER,_gl.COLOR_ATTACHMENT0,textureProperties.__webglTexture,activeMipmapLevel||0,layer)}_currentMaterialId=-1};this.readRenderTargetPixels=function(renderTarget,x,y,width,height,buffer,activeCubeFaceIndex){if(!(renderTarget&&renderTarget.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let framebuffer=properties.get(renderTarget).__webglFramebuffer;if(renderTarget.isWebGLCubeRenderTarget&&activeCubeFaceIndex!==undefined){framebuffer=framebuffer[activeCubeFaceIndex]}if(framebuffer){state.bindFramebuffer(_gl.FRAMEBUFFER,framebuffer);try{const texture=renderTarget.texture;const textureFormat=texture.format;const textureType=texture.type;if(textureFormat!==RGBAFormat&&utils.convert(textureFormat)!==_gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const halfFloatSupportedByExt=textureType===HalfFloatType&&(extensions.has("EXT_color_buffer_half_float")||extensions.has("EXT_color_buffer_float"));if(textureType!==UnsignedByteType&&utils.convert(textureType)!==_gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_TYPE)&&textureType!==FloatType&&!halfFloatSupportedByExt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}if(x>=0&&x<=renderTarget.width-width&&y>=0&&y<=renderTarget.height-height){_gl.readPixels(x,y,width,height,utils.convert(textureFormat),utils.convert(textureType),buffer)}}finally{const framebuffer=_currentRenderTarget!==null?properties.get(_currentRenderTarget).__webglFramebuffer:null;state.bindFramebuffer(_gl.FRAMEBUFFER,framebuffer)}}};this.copyFramebufferToTexture=function(position,texture,level=0){const levelScale=Math.pow(2,-level);const width=Math.floor(texture.image.width*levelScale);const height=Math.floor(texture.image.height*levelScale);textures.setTexture2D(texture,0);_gl.copyTexSubImage2D(_gl.TEXTURE_2D,level,0,0,position.x,position.y,width,height);state.unbindTexture()};this.copyTextureToTexture=function(position,srcTexture,dstTexture,level=0){const width=srcTexture.image.width;const height=srcTexture.image.height;const glFormat=utils.convert(dstTexture.format);const glType=utils.convert(dstTexture.type);textures.setTexture2D(dstTexture,0);_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL,dstTexture.flipY);_gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,dstTexture.premultiplyAlpha);_gl.pixelStorei(_gl.UNPACK_ALIGNMENT,dstTexture.unpackAlignment);if(srcTexture.isDataTexture){_gl.texSubImage2D(_gl.TEXTURE_2D,level,position.x,position.y,width,height,glFormat,glType,srcTexture.image.data)}else{if(srcTexture.isCompressedTexture){_gl.compressedTexSubImage2D(_gl.TEXTURE_2D,level,position.x,position.y,srcTexture.mipmaps[0].width,srcTexture.mipmaps[0].height,glFormat,srcTexture.mipmaps[0].data)}else{_gl.texSubImage2D(_gl.TEXTURE_2D,level,position.x,position.y,glFormat,glType,srcTexture.image)}}if(level===0&&dstTexture.generateMipmaps)_gl.generateMipmap(_gl.TEXTURE_2D);state.unbindTexture()};this.copyTextureToTexture3D=function(sourceBox,position,srcTexture,dstTexture,level=0){const width=Math.round(sourceBox.max.x-sourceBox.min.x);const height=Math.round(sourceBox.max.y-sourceBox.min.y);const depth=sourceBox.max.z-sourceBox.min.z+1;const glFormat=utils.convert(dstTexture.format);const glType=utils.convert(dstTexture.type);let glTarget;if(dstTexture.isData3DTexture){textures.setTexture3D(dstTexture,0);glTarget=_gl.TEXTURE_3D}else if(dstTexture.isDataArrayTexture||dstTexture.isCompressedArrayTexture){textures.setTexture2DArray(dstTexture,0);glTarget=_gl.TEXTURE_2D_ARRAY}else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}_gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL,dstTexture.flipY);_gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,dstTexture.premultiplyAlpha);_gl.pixelStorei(_gl.UNPACK_ALIGNMENT,dstTexture.unpackAlignment);const unpackRowLen=_gl.getParameter(_gl.UNPACK_ROW_LENGTH);const unpackImageHeight=_gl.getParameter(_gl.UNPACK_IMAGE_HEIGHT);const unpackSkipPixels=_gl.getParameter(_gl.UNPACK_SKIP_PIXELS);const unpackSkipRows=_gl.getParameter(_gl.UNPACK_SKIP_ROWS);const unpackSkipImages=_gl.getParameter(_gl.UNPACK_SKIP_IMAGES);const image=srcTexture.isCompressedTexture?srcTexture.mipmaps[level]:srcTexture.image;_gl.pixelStorei(_gl.UNPACK_ROW_LENGTH,image.width);_gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT,image.height);_gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS,sourceBox.min.x);_gl.pixelStorei(_gl.UNPACK_SKIP_ROWS,sourceBox.min.y);_gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES,sourceBox.min.z);if(srcTexture.isDataTexture||srcTexture.isData3DTexture){_gl.texSubImage3D(glTarget,level,position.x,position.y,position.z,width,height,depth,glFormat,glType,image.data)}else{if(dstTexture.isCompressedArrayTexture){_gl.compressedTexSubImage3D(glTarget,level,position.x,position.y,position.z,width,height,depth,glFormat,image.data)}else{_gl.texSubImage3D(glTarget,level,position.x,position.y,position.z,width,height,depth,glFormat,glType,image)}}_gl.pixelStorei(_gl.UNPACK_ROW_LENGTH,unpackRowLen);_gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT,unpackImageHeight);_gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS,unpackSkipPixels);_gl.pixelStorei(_gl.UNPACK_SKIP_ROWS,unpackSkipRows);_gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES,unpackSkipImages);if(level===0&&dstTexture.generateMipmaps)_gl.generateMipmap(glTarget);state.unbindTexture()};this.initTexture=function(texture){if(texture.isCubeTexture){textures.setTextureCube(texture,0)}else if(texture.isData3DTexture){textures.setTexture3D(texture,0)}else if(texture.isDataArrayTexture||texture.isCompressedArrayTexture){textures.setTexture2DArray(texture,0)}else{textures.setTexture2D(texture,0)}state.unbindTexture()};this.resetState=function(){_currentActiveCubeFace=0;_currentActiveMipmapLevel=0;_currentRenderTarget=null;state.reset();bindingStates.reset()};if(typeof __THREE_DEVTOOLS__!=="undefined"){__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}}get coordinateSystem(){return WebGLCoordinateSystem}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(colorSpace){this._outputColorSpace=colorSpace;const gl=this.getContext();gl.drawingBufferColorSpace=colorSpace===DisplayP3ColorSpace?"display-p3":"srgb";gl.unpackColorSpace=ColorManagement.workingColorSpace===LinearDisplayP3ColorSpace?"display-p3":"srgb"}get useLegacyLights(){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.");return this._useLegacyLights}set useLegacyLights(value){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.");this._useLegacyLights=value}}class FogExp2{constructor(color,density=0.00025){this.isFogExp2=true;this.name="";this.color=new Color(color);this.density=density}clone(){return new FogExp2(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class Fog{constructor(color,near=1,far=1000){this.isFog=true;this.name="";this.color=new Color(color);this.near=near;this.far=far}clone(){return new Fog(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Scene extends Object3D{constructor(){super();this.isScene=true;this.type="Scene";this.background=null;this.environment=null;this.fog=null;this.backgroundBlurriness=0;this.backgroundIntensity=1;this.backgroundRotation=new Euler;this.environmentIntensity=1;this.environmentRotation=new Euler;this.overrideMaterial=null;if(typeof __THREE_DEVTOOLS__!=="undefined"){__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}}copy(source,recursive){super.copy(source,recursive);if(source.background!==null)this.background=source.background.clone();if(source.environment!==null)this.environment=source.environment.clone();if(source.fog!==null)this.fog=source.fog.clone();this.backgroundBlurriness=source.backgroundBlurriness;this.backgroundIntensity=source.backgroundIntensity;this.backgroundRotation.copy(source.backgroundRotation);this.environmentIntensity=source.environmentIntensity;this.environmentRotation.copy(source.environmentRotation);if(source.overrideMaterial!==null)this.overrideMaterial=source.overrideMaterial.clone();this.matrixAutoUpdate=source.matrixAutoUpdate;return this}toJSON(meta){const data=super.toJSON(meta);if(this.fog!==null)data.object.fog=this.fog.toJSON();if(this.backgroundBlurriness>0)data.object.backgroundBlurriness=this.backgroundBlurriness;if(this.backgroundIntensity!==1)data.object.backgroundIntensity=this.backgroundIntensity;data.object.backgroundRotation=this.backgroundRotation.toArray();if(this.environmentIntensity!==1)data.object.environmentIntensity=this.environmentIntensity;data.object.environmentRotation=this.environmentRotation.toArray();return data}}class InterleavedBuffer{constructor(array,stride){this.isInterleavedBuffer=true;this.array=array;this.stride=stride;this.count=array!==undefined?array.length/stride:0;this.usage=StaticDrawUsage;this._updateRange={offset:0,count:-1};this.updateRanges=[];this.version=0;this.uuid=generateUUID()}onUploadCallback(){}set needsUpdate(value){if(value===true)this.version++}get updateRange(){warnOnce("THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.");return this._updateRange}setUsage(value){this.usage=value;return this}addUpdateRange(start,count){this.updateRanges.push({start,count})}clearUpdateRanges(){this.updateRanges.length=0}copy(source){this.array=new source.array.constructor(source.array);this.count=source.count;this.stride=source.stride;this.usage=source.usage;return this}copyAt(index1,attribute,index2){index1*=this.stride;index2*=attribute.stride;for(let i=0,l=this.stride;iraycaster.far)return;intersects.push({distance:distance,point:_intersectPoint.clone(),uv:Triangle.getInterpolation(_intersectPoint,_vA,_vB,_vC,_uvA,_uvB,_uvC,new Vector2),face:null,object:this})}copy(source,recursive){super.copy(source,recursive);if(source.center!==undefined)this.center.copy(source.center);this.material=source.material;return this}}function transformVertex(vertexPosition,mvPosition,center,scale,sin,cos){_alignedPosition.subVectors(vertexPosition,center).addScalar(0.5).multiply(scale);if(sin!==undefined){_rotatedPosition.x=cos*_alignedPosition.x-sin*_alignedPosition.y;_rotatedPosition.y=sin*_alignedPosition.x+cos*_alignedPosition.y}else{_rotatedPosition.copy(_alignedPosition)}vertexPosition.copy(mvPosition);vertexPosition.x+=_rotatedPosition.x;vertexPosition.y+=_rotatedPosition.y;vertexPosition.applyMatrix4(_viewWorldMatrix)}const _v1$2=new Vector3;const _v2$1=new Vector3;class LOD extends Object3D{constructor(){super();this._currentLevel=0;this.type="LOD";Object.defineProperties(this,{levels:{enumerable:true,value:[]},isLOD:{value:true}});this.autoUpdate=true}copy(source){super.copy(source,false);const levels=source.levels;for(let i=0,l=levels.length;i0){let i,l;for(i=1,l=levels.length;i0){_v1$2.setFromMatrixPosition(this.matrixWorld);const distance=raycaster.ray.origin.distanceTo(_v1$2);this.getObjectForDistance(distance).raycast(raycaster,intersects)}}update(camera){const levels=this.levels;if(levels.length>1){_v1$2.setFromMatrixPosition(camera.matrixWorld);_v2$1.setFromMatrixPosition(this.matrixWorld);const distance=_v1$2.distanceTo(_v2$1)/camera.zoom;levels[0].object.visible=true;let i,l;for(i=1,l=levels.length;i=levelDistance){levels[i-1].object.visible=false;levels[i].object.visible=true}else{break}}this._currentLevel=i-1;for(;i=pool.length){pool.push({start:-1,count:-1,z:-1})}const item=pool[this.index];list.push(item);this.index++;item.start=drawRange.start;item.count=drawRange.count;item.z=z}reset(){this.list.length=0;this.index=0}}const ID_ATTR_NAME="batchId";const _matrix$1=new Matrix4;const _invMatrixWorld=new Matrix4;const _identityMatrix=new Matrix4;const _projScreenMatrix$2=new Matrix4;const _frustum=new Frustum;const _box$1=new Box3;const _sphere$2=new Sphere;const _vector$5=new Vector3;const _renderList=new MultiDrawRenderList;const _mesh=new Mesh;const _batchIntersects=[];function copyAttributeData(src,target,targetOffset=0){const itemSize=target.itemSize;if(src.isInterleavedBufferAttribute||src.array.constructor!==target.array.constructor){const vertexCount=src.count;for(let i=0;i65536?new Uint32Array(maxIndexCount):new Uint16Array(maxIndexCount);geometry.setIndex(new BufferAttribute(indexArray,1))}const idArray=maxGeometryCount>65536?new Uint32Array(maxVertexCount):new Uint16Array(maxVertexCount);geometry.setAttribute(ID_ATTR_NAME,new BufferAttribute(idArray,1));this._geometryInitialized=true}}_validateGeometry(geometry){if(geometry.getAttribute(ID_ATTR_NAME)){throw new Error(`BatchedMesh: Geometry cannot use attribute "${ID_ATTR_NAME}"`)}const batchGeometry=this.geometry;if(Boolean(geometry.getIndex())!==Boolean(batchGeometry.getIndex())){throw new Error("BatchedMesh: All geometries must consistently have \"index\".")}for(const attributeName in batchGeometry.attributes){if(attributeName===ID_ATTR_NAME){continue}if(!geometry.hasAttribute(attributeName)){throw new Error(`BatchedMesh: Added geometry missing "${attributeName}". All geometries must have consistent attributes.`)}const srcAttribute=geometry.getAttribute(attributeName);const dstAttribute=batchGeometry.getAttribute(attributeName);if(srcAttribute.itemSize!==dstAttribute.itemSize||srcAttribute.normalized!==dstAttribute.normalized){throw new Error("BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}}setCustomSort(func){this.customSort=func;return this}computeBoundingBox(){if(this.boundingBox===null){this.boundingBox=new Box3}const geometryCount=this._geometryCount;const boundingBox=this.boundingBox;const active=this._active;boundingBox.makeEmpty();for(let i=0;i=this._maxGeometryCount){throw new Error("BatchedMesh: Maximum geometry count reached.")}const reservedRange={vertexStart:-1,vertexCount:-1,indexStart:-1,indexCount:-1};let lastRange=null;const reservedRanges=this._reservedRanges;const drawRanges=this._drawRanges;const bounds=this._bounds;if(this._geometryCount!==0){lastRange=reservedRanges[reservedRanges.length-1]}if(vertexCount===-1){reservedRange.vertexCount=geometry.getAttribute("position").count}else{reservedRange.vertexCount=vertexCount}if(lastRange===null){reservedRange.vertexStart=0}else{reservedRange.vertexStart=lastRange.vertexStart+lastRange.vertexCount}const index=geometry.getIndex();const hasIndex=index!==null;if(hasIndex){if(indexCount===-1){reservedRange.indexCount=index.count}else{reservedRange.indexCount=indexCount}if(lastRange===null){reservedRange.indexStart=0}else{reservedRange.indexStart=lastRange.indexStart+lastRange.indexCount}}if(reservedRange.indexStart!==-1&&reservedRange.indexStart+reservedRange.indexCount>this._maxIndexCount||reservedRange.vertexStart+reservedRange.vertexCount>this._maxVertexCount){throw new Error("BatchedMesh: Reserved space request exceeds the maximum buffer size.")}const visibility=this._visibility;const active=this._active;const matricesTexture=this._matricesTexture;const matricesArray=this._matricesTexture.image.data;visibility.push(true);active.push(true);const geometryId=this._geometryCount;this._geometryCount++;_identityMatrix.toArray(matricesArray,geometryId*16);matricesTexture.needsUpdate=true;reservedRanges.push(reservedRange);drawRanges.push({start:hasIndex?reservedRange.indexStart:reservedRange.vertexStart,count:-1});bounds.push({boxInitialized:false,box:new Box3,sphereInitialized:false,sphere:new Sphere});const idAttribute=this.geometry.getAttribute(ID_ATTR_NAME);for(let i=0;i=this._geometryCount){throw new Error("BatchedMesh: Maximum geometry count reached.")}this._validateGeometry(geometry);const batchGeometry=this.geometry;const hasIndex=batchGeometry.getIndex()!==null;const dstIndex=batchGeometry.getIndex();const srcIndex=geometry.getIndex();const reservedRange=this._reservedRanges[id];if(hasIndex&&srcIndex.count>reservedRange.indexCount||geometry.attributes.position.count>reservedRange.vertexCount){throw new Error("BatchedMesh: Reserved space not large enough for provided geometry.")}const vertexStart=reservedRange.vertexStart;const vertexCount=reservedRange.vertexCount;for(const attributeName in batchGeometry.attributes){if(attributeName===ID_ATTR_NAME){continue}const srcAttribute=geometry.getAttribute(attributeName);const dstAttribute=batchGeometry.getAttribute(attributeName);copyAttributeData(srcAttribute,dstAttribute,vertexStart);const itemSize=srcAttribute.itemSize;for(let i=srcAttribute.count,l=vertexCount;i=active.length||active[geometryId]===false){return this}active[geometryId]=false;this._visibilityChanged=true;return this}getBoundingBoxAt(id,target){const active=this._active;if(active[id]===false){return null}const bound=this._bounds[id];const box=bound.box;const geometry=this.geometry;if(bound.boxInitialized===false){box.makeEmpty();const index=geometry.index;const position=geometry.attributes.position;const drawRange=this._drawRanges[id];for(let i=drawRange.start,l=drawRange.start+drawRange.count;i=geometryCount||active[geometryId]===false){return this}matrix.toArray(matricesArray,geometryId*16);matricesTexture.needsUpdate=true;return this}getMatrixAt(geometryId,matrix){const active=this._active;const matricesArray=this._matricesTexture.image.data;const geometryCount=this._geometryCount;if(geometryId>=geometryCount||active[geometryId]===false){return null}return matrix.fromArray(matricesArray,geometryId*16)}setVisibleAt(geometryId,value){const visibility=this._visibility;const active=this._active;const geometryCount=this._geometryCount;if(geometryId>=geometryCount||active[geometryId]===false||visibility[geometryId]===value){return this}visibility[geometryId]=value;this._visibilityChanged=true;return this}getVisibleAt(geometryId){const visibility=this._visibility;const active=this._active;const geometryCount=this._geometryCount;if(geometryId>=geometryCount||active[geometryId]===false){return false}return visibility[geometryId]}raycast(raycaster,intersects){const visibility=this._visibility;const active=this._active;const drawRanges=this._drawRanges;const geometryCount=this._geometryCount;const matrixWorld=this.matrixWorld;const batchGeometry=this.geometry;_mesh.material=this.material;_mesh.geometry.index=batchGeometry.index;_mesh.geometry.attributes=batchGeometry.attributes;if(_mesh.geometry.boundingBox===null){_mesh.geometry.boundingBox=new Box3}if(_mesh.geometry.boundingSphere===null){_mesh.geometry.boundingSphere=new Sphere}for(let i=0;i({...range}));this._reservedRanges=source._reservedRanges.map(range=>({...range}));this._visibility=source._visibility.slice();this._active=source._active.slice();this._bounds=source._bounds.map(bound=>({boxInitialized:bound.boxInitialized,box:bound.box.clone(),sphereInitialized:bound.sphereInitialized,sphere:bound.sphere.clone()}));this._maxGeometryCount=source._maxGeometryCount;this._maxVertexCount=source._maxVertexCount;this._maxIndexCount=source._maxIndexCount;this._geometryInitialized=source._geometryInitialized;this._geometryCount=source._geometryCount;this._multiDrawCounts=source._multiDrawCounts.slice();this._multiDrawStarts=source._multiDrawStarts.slice();this._matricesTexture=source._matricesTexture.clone();this._matricesTexture.image.data=this._matricesTexture.image.slice();return this}dispose(){this.geometry.dispose();this._matricesTexture.dispose();this._matricesTexture=null;return this}onBeforeRender(renderer,scene,camera,geometry,material){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects){return}const index=geometry.getIndex();const bytesPerElement=index===null?1:index.array.BYTES_PER_ELEMENT;const active=this._active;const visibility=this._visibility;const multiDrawStarts=this._multiDrawStarts;const multiDrawCounts=this._multiDrawCounts;const drawRanges=this._drawRanges;const perObjectFrustumCulled=this.perObjectFrustumCulled;if(perObjectFrustumCulled){_projScreenMatrix$2.multiplyMatrices(camera.projectionMatrix,camera.matrixWorldInverse).multiply(this.matrixWorld);_frustum.setFromProjectionMatrix(_projScreenMatrix$2,renderer.coordinateSystem)}let count=0;if(this.sortObjects){_invMatrixWorld.copy(this.matrixWorld).invert();_vector$5.setFromMatrixPosition(camera.matrixWorld).applyMatrix4(_invMatrixWorld);for(let i=0,l=visibility.length;ilocalThresholdSq)continue;interRay.applyMatrix4(this.matrixWorld);const distance=raycaster.ray.origin.distanceTo(interRay);if(distanceraycaster.far)continue;intersects.push({distance:distance,point:interSegment.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else{const start=Math.max(0,drawRange.start);const end=Math.min(positionAttribute.count,drawRange.start+drawRange.count);for(let i=start,l=end-1;ilocalThresholdSq)continue;interRay.applyMatrix4(this.matrixWorld);const distance=raycaster.ray.origin.distanceTo(interRay);if(distanceraycaster.far)continue;intersects.push({distance:distance,point:interSegment.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const geometry=this.geometry;const morphAttributes=geometry.morphAttributes;const keys=Object.keys(morphAttributes);if(keys.length>0){const morphAttribute=morphAttributes[keys[0]];if(morphAttribute!==undefined){this.morphTargetInfluences=[];this.morphTargetDictionary={};for(let m=0,ml=morphAttribute.length;m0){const morphAttribute=morphAttributes[keys[0]];if(morphAttribute!==undefined){this.morphTargetInfluences=[];this.morphTargetDictionary={};for(let m=0,ml=morphAttribute.length;mraycaster.far)return;intersects.push({distance:distance,distanceToRay:Math.sqrt(rayPointDistanceSq),point:intersectPoint,index:index,face:null,object:object})}}class VideoTexture extends Texture{constructor(video,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy){super(video,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy);this.isVideoTexture=true;this.minFilter=minFilter!==undefined?minFilter:LinearFilter;this.magFilter=magFilter!==undefined?magFilter:LinearFilter;this.generateMipmaps=false;const scope=this;function updateVideo(){scope.needsUpdate=true;video.requestVideoFrameCallback(updateVideo)}if("requestVideoFrameCallback"in video){video.requestVideoFrameCallback(updateVideo)}}clone(){return new this.constructor(this.image).copy(this)}update(){const video=this.image;const hasVideoFrameCallback=("requestVideoFrameCallback"in video);if(hasVideoFrameCallback===false&&video.readyState>=video.HAVE_CURRENT_DATA){this.needsUpdate=true}}}class FramebufferTexture extends Texture{constructor(width,height){super({width,height});this.isFramebufferTexture=true;this.magFilter=NearestFilter;this.minFilter=NearestFilter;this.generateMipmaps=false;this.needsUpdate=true}}class CompressedTexture extends Texture{constructor(mipmaps,width,height,format,type,mapping,wrapS,wrapT,magFilter,minFilter,anisotropy,colorSpace){super(null,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy,colorSpace);this.isCompressedTexture=true;this.image={width:width,height:height};this.mipmaps=mipmaps;this.flipY=false;this.generateMipmaps=false}}class CompressedArrayTexture extends CompressedTexture{constructor(mipmaps,width,height,depth,format,type){super(mipmaps,width,height,format,type);this.isCompressedArrayTexture=true;this.image.depth=depth;this.wrapR=ClampToEdgeWrapping}}class CompressedCubeTexture extends CompressedTexture{constructor(images,format,type){super(undefined,images[0].width,images[0].height,format,type,CubeReflectionMapping);this.isCompressedCubeTexture=true;this.isCubeTexture=true;this.image=images}}class CanvasTexture extends Texture{constructor(canvas,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy){super(canvas,mapping,wrapS,wrapT,magFilter,minFilter,format,type,anisotropy);this.isCanvasTexture=true;this.needsUpdate=true}}class Curve{constructor(){this.type="Curve";this.arcLengthDivisions=200}getPoint(){console.warn("THREE.Curve: .getPoint() not implemented.");return null}getPointAt(u,optionalTarget){const t=this.getUtoTmapping(u);return this.getPoint(t,optionalTarget)}getPoints(divisions=5){const points=[];for(let d=0;d<=divisions;d++){points.push(this.getPoint(d/divisions))}return points}getSpacedPoints(divisions=5){const points=[];for(let d=0;d<=divisions;d++){points.push(this.getPointAt(d/divisions))}return points}getLength(){const lengths=this.getLengths();return lengths[lengths.length-1]}getLengths(divisions=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===divisions+1&&!this.needsUpdate){return this.cacheArcLengths}this.needsUpdate=false;const cache=[];let current,last=this.getPoint(0);let sum=0;cache.push(0);for(let p=1;p<=divisions;p++){current=this.getPoint(p/divisions);sum+=current.distanceTo(last);cache.push(sum);last=current}this.cacheArcLengths=cache;return cache}updateArcLengths(){this.needsUpdate=true;this.getLengths()}getUtoTmapping(u,distance){const arcLengths=this.getLengths();let i=0;const il=arcLengths.length;let targetArcLength;if(distance){targetArcLength=distance}else{targetArcLength=u*arcLengths[il-1]}let low=0,high=il-1,comparison;while(low<=high){i=Math.floor(low+(high-low)/2);comparison=arcLengths[i]-targetArcLength;if(comparison<0){low=i+1}else if(comparison>0){high=i-1}else{high=i;break}}i=high;if(arcLengths[i]===targetArcLength){return i/(il-1)}const lengthBefore=arcLengths[i];const lengthAfter=arcLengths[i+1];const segmentLength=lengthAfter-lengthBefore;const segmentFraction=(targetArcLength-lengthBefore)/segmentLength;const t=(i+segmentFraction)/(il-1);return t}getTangent(t,optionalTarget){const delta=0.0001;let t1=t-delta;let t2=t+delta;if(t1<0)t1=0;if(t2>1)t2=1;const pt1=this.getPoint(t1);const pt2=this.getPoint(t2);const tangent=optionalTarget||(pt1.isVector2?new Vector2:new Vector3);tangent.copy(pt2).sub(pt1).normalize();return tangent}getTangentAt(u,optionalTarget){const t=this.getUtoTmapping(u);return this.getTangent(t,optionalTarget)}computeFrenetFrames(segments,closed){const normal=new Vector3;const tangents=[];const normals=[];const binormals=[];const vec=new Vector3;const mat=new Matrix4;for(let i=0;i<=segments;i++){const u=i/segments;tangents[i]=this.getTangentAt(u,new Vector3)}normals[0]=new Vector3;binormals[0]=new Vector3;let min=Number.MAX_VALUE;const tx=Math.abs(tangents[0].x);const ty=Math.abs(tangents[0].y);const tz=Math.abs(tangents[0].z);if(tx<=min){min=tx;normal.set(1,0,0)}if(ty<=min){min=ty;normal.set(0,1,0)}if(tz<=min){normal.set(0,0,1)}vec.crossVectors(tangents[0],normal).normalize();normals[0].crossVectors(tangents[0],vec);binormals[0].crossVectors(tangents[0],normals[0]);for(let i=1;i<=segments;i++){normals[i]=normals[i-1].clone();binormals[i]=binormals[i-1].clone();vec.crossVectors(tangents[i-1],tangents[i]);if(vec.length()>Number.EPSILON){vec.normalize();const theta=Math.acos(clamp(tangents[i-1].dot(tangents[i]),-1,1));normals[i].applyMatrix4(mat.makeRotationAxis(vec,theta))}binormals[i].crossVectors(tangents[i],normals[i])}if(closed===true){let theta=Math.acos(clamp(normals[0].dot(normals[segments]),-1,1));theta/=segments;if(tangents[0].dot(vec.crossVectors(normals[0],normals[segments]))>0){theta=-theta}for(let i=1;i<=segments;i++){normals[i].applyMatrix4(mat.makeRotationAxis(tangents[i],theta*i));binormals[i].crossVectors(tangents[i],normals[i])}}return{tangents:tangents,normals:normals,binormals:binormals}}clone(){return new this.constructor().copy(this)}copy(source){this.arcLengthDivisions=source.arcLengthDivisions;return this}toJSON(){const data={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};data.arcLengthDivisions=this.arcLengthDivisions;data.type=this.type;return data}fromJSON(json){this.arcLengthDivisions=json.arcLengthDivisions;return this}}class EllipseCurve extends Curve{constructor(aX=0,aY=0,xRadius=1,yRadius=1,aStartAngle=0,aEndAngle=Math.PI*2,aClockwise=false,aRotation=0){super();this.isEllipseCurve=true;this.type="EllipseCurve";this.aX=aX;this.aY=aY;this.xRadius=xRadius;this.yRadius=yRadius;this.aStartAngle=aStartAngle;this.aEndAngle=aEndAngle;this.aClockwise=aClockwise;this.aRotation=aRotation}getPoint(t,optionalTarget=new Vector2){const point=optionalTarget;const twoPi=Math.PI*2;let deltaAngle=this.aEndAngle-this.aStartAngle;const samePoints=Math.abs(deltaAngle)twoPi)deltaAngle-=twoPi;if(deltaAngle0?0:(Math.floor(Math.abs(intPoint)/l)+1)*l}else if(weight===0&&intPoint===l-1){intPoint=l-2;weight=1}let p0,p3;if(this.closed||intPoint>0){p0=points[(intPoint-1)%l]}else{tmp.subVectors(points[0],points[1]).add(points[0]);p0=tmp}const p1=points[intPoint%l];const p2=points[(intPoint+1)%l];if(this.closed||intPoint+2points.length-2?points.length-1:intPoint+1];const p3=points[intPoint>points.length-3?points.length-1:intPoint+2];point.set(CatmullRom(weight,p0.x,p1.x,p2.x,p3.x),CatmullRom(weight,p0.y,p1.y,p2.y,p3.y));return point}copy(source){super.copy(source);this.points=[];for(let i=0,l=source.points.length;i=d){const diff=curveLengths[i]-d;const curve=this.curves[i];const segmentLength=curve.getLength();const u=segmentLength===0?0:1-diff/segmentLength;return curve.getPointAt(u,optionalTarget)}i++}return null}getLength(){const lens=this.getCurveLengths();return lens[lens.length-1]}updateArcLengths(){this.needsUpdate=true;this.cacheLengths=null;this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length){return this.cacheLengths}const lengths=[];let sums=0;for(let i=0,l=this.curves.length;i1&&!points[points.length-1].equals(points[0])){points.push(points[0])}return points}copy(source){super.copy(source);this.curves=[];for(let i=0,l=source.curves.length;i0){const firstPoint=curve.getPoint(0);if(!firstPoint.equals(this.currentPoint)){this.lineTo(firstPoint.x,firstPoint.y)}}this.curves.push(curve);const lastPoint=curve.getPoint(1);this.currentPoint.copy(lastPoint);return this}copy(source){super.copy(source);this.currentPoint.copy(source.currentPoint);return this}toJSON(){const data=super.toJSON();data.currentPoint=this.currentPoint.toArray();return data}fromJSON(json){super.fromJSON(json);this.currentPoint.fromArray(json.currentPoint);return this}}class LatheGeometry extends BufferGeometry{constructor(points=[new Vector2(0,-0.5),new Vector2(0.5,0),new Vector2(0,0.5)],segments=12,phiStart=0,phiLength=Math.PI*2){super();this.type="LatheGeometry";this.parameters={points:points,segments:segments,phiStart:phiStart,phiLength:phiLength};segments=Math.floor(segments);phiLength=clamp(phiLength,0,Math.PI*2);const indices=[];const vertices=[];const uvs=[];const initNormals=[];const normals=[];const inverseSegments=1/segments;const vertex=new Vector3;const uv=new Vector2;const normal=new Vector3;const curNormal=new Vector3;const prevNormal=new Vector3;let dx=0;let dy=0;for(let j=0;j<=points.length-1;j++){switch(j){case 0:dx=points[j+1].x-points[j].x;dy=points[j+1].y-points[j].y;normal.x=dy*1;normal.y=-dx;normal.z=dy*0;prevNormal.copy(normal);normal.normalize();initNormals.push(normal.x,normal.y,normal.z);break;case points.length-1:initNormals.push(prevNormal.x,prevNormal.y,prevNormal.z);break;default:dx=points[j+1].x-points[j].x;dy=points[j+1].y-points[j].y;normal.x=dy*1;normal.y=-dx;normal.z=dy*0;curNormal.copy(normal);normal.x+=prevNormal.x;normal.y+=prevNormal.y;normal.z+=prevNormal.z;normal.normalize();initNormals.push(normal.x,normal.y,normal.z);prevNormal.copy(curNormal);}}for(let i=0;i<=segments;i++){const phi=phiStart+i*inverseSegments*phiLength;const sin=Math.sin(phi);const cos=Math.cos(phi);for(let j=0;j<=points.length-1;j++){vertex.x=points[j].x*sin;vertex.y=points[j].y;vertex.z=points[j].x*cos;vertices.push(vertex.x,vertex.y,vertex.z);uv.x=i/segments;uv.y=j/(points.length-1);uvs.push(uv.x,uv.y);const x=initNormals[3*j+0]*sin;const y=initNormals[3*j+1];const z=initNormals[3*j+0]*cos;normals.push(x,y,z)}}for(let i=0;i0)generateCap(true);if(radiusBottom>0)generateCap(false)}this.setIndex(indices);this.setAttribute("position",new Float32BufferAttribute(vertices,3));this.setAttribute("normal",new Float32BufferAttribute(normals,3));this.setAttribute("uv",new Float32BufferAttribute(uvs,2));function generateTorso(){const normal=new Vector3;const vertex=new Vector3;let groupCount=0;const slope=(radiusBottom-radiusTop)/height;for(let y=0;y<=heightSegments;y++){const indexRow=[];const v=y/heightSegments;const radius=v*(radiusBottom-radiusTop)+radiusTop;for(let x=0;x<=radialSegments;x++){const u=x/radialSegments;const theta=u*thetaLength+thetaStart;const sinTheta=Math.sin(theta);const cosTheta=Math.cos(theta);vertex.x=radius*sinTheta;vertex.y=-v*height+halfHeight;vertex.z=radius*cosTheta;vertices.push(vertex.x,vertex.y,vertex.z);normal.set(sinTheta,slope,cosTheta).normalize();normals.push(normal.x,normal.y,normal.z);uvs.push(u,1-v);indexRow.push(index++)}indexArray.push(indexRow)}for(let x=0;x0.9&&min<0.1){if(x0<0.2)uvBuffer[i+0]+=1;if(x1<0.2)uvBuffer[i+2]+=1;if(x2<0.2)uvBuffer[i+4]+=1}}}function pushVertex(vertex){vertexBuffer.push(vertex.x,vertex.y,vertex.z)}function getVertexByIndex(index,vertex){const stride=index*3;vertex.x=vertices[stride+0];vertex.y=vertices[stride+1];vertex.z=vertices[stride+2]}function correctUVs(){const a=new Vector3;const b=new Vector3;const c=new Vector3;const centroid=new Vector3;const uvA=new Vector2;const uvB=new Vector2;const uvC=new Vector2;for(let i=0,j=0;i80*dim){minX=maxX=data[0];minY=maxY=data[1];for(let i=dim;imaxX)maxX=x;if(y>maxY)maxY=y}invSize=Math.max(maxX-minX,maxY-minY);invSize=invSize!==0?32767/invSize:0}earcutLinked(outerNode,triangles,dim,minX,minY,invSize,0);return triangles}};function linkedList(data,start,end,dim,clockwise){let i,last;if(clockwise===signedArea(data,start,end,dim)>0){for(i=start;i=start;i-=dim)last=insertNode(i,data[i],data[i+1],last)}if(last&&equals(last,last.next)){removeNode(last);last=last.next}return last}function filterPoints(start,end){if(!start)return start;if(!end)end=start;let p=start,again;do{again=false;if(!p.steiner&&(equals(p,p.next)||area(p.prev,p,p.next)===0)){removeNode(p);p=end=p.prev;if(p===p.next)break;again=true}else{p=p.next}}while(again||p!==end);return end}function earcutLinked(ear,triangles,dim,minX,minY,invSize,pass){if(!ear)return;if(!pass&&invSize)indexCurve(ear,minX,minY,invSize);let stop=ear,prev,next;while(ear.prev!==ear.next){prev=ear.prev;next=ear.next;if(invSize?isEarHashed(ear,minX,minY,invSize):isEar(ear)){triangles.push(prev.i/dim|0);triangles.push(ear.i/dim|0);triangles.push(next.i/dim|0);removeNode(ear);ear=next.next;stop=next.next;continue}ear=next;if(ear===stop){if(!pass){earcutLinked(filterPoints(ear),triangles,dim,minX,minY,invSize,1)}else if(pass===1){ear=cureLocalIntersections(filterPoints(ear),triangles,dim);earcutLinked(ear,triangles,dim,minX,minY,invSize,2)}else if(pass===2){splitEarcut(ear,triangles,dim,minX,minY,invSize)}break}}}function isEar(ear){const a=ear.prev,b=ear,c=ear.next;if(area(a,b,c)>=0)return false;const ax=a.x,bx=b.x,cx=c.x,ay=a.y,by=b.y,cy=c.y;const x0=axbx?ax>cx?ax:cx:bx>cx?bx:cx,y1=ay>by?ay>cy?ay:cy:by>cy?by:cy;let p=c.next;while(p!==a){if(p.x>=x0&&p.x<=x1&&p.y>=y0&&p.y<=y1&&pointInTriangle(ax,ay,bx,by,cx,cy,p.x,p.y)&&area(p.prev,p,p.next)>=0)return false;p=p.next}return true}function isEarHashed(ear,minX,minY,invSize){const a=ear.prev,b=ear,c=ear.next;if(area(a,b,c)>=0)return false;const ax=a.x,bx=b.x,cx=c.x,ay=a.y,by=b.y,cy=c.y;const x0=axbx?ax>cx?ax:cx:bx>cx?bx:cx,y1=ay>by?ay>cy?ay:cy:by>cy?by:cy;const minZ=zOrder(x0,y0,minX,minY,invSize),maxZ=zOrder(x1,y1,minX,minY,invSize);let p=ear.prevZ,n=ear.nextZ;while(p&&p.z>=minZ&&n&&n.z<=maxZ){if(p.x>=x0&&p.x<=x1&&p.y>=y0&&p.y<=y1&&p!==a&&p!==c&&pointInTriangle(ax,ay,bx,by,cx,cy,p.x,p.y)&&area(p.prev,p,p.next)>=0)return false;p=p.prevZ;if(n.x>=x0&&n.x<=x1&&n.y>=y0&&n.y<=y1&&n!==a&&n!==c&&pointInTriangle(ax,ay,bx,by,cx,cy,n.x,n.y)&&area(n.prev,n,n.next)>=0)return false;n=n.nextZ}while(p&&p.z>=minZ){if(p.x>=x0&&p.x<=x1&&p.y>=y0&&p.y<=y1&&p!==a&&p!==c&&pointInTriangle(ax,ay,bx,by,cx,cy,p.x,p.y)&&area(p.prev,p,p.next)>=0)return false;p=p.prevZ}while(n&&n.z<=maxZ){if(n.x>=x0&&n.x<=x1&&n.y>=y0&&n.y<=y1&&n!==a&&n!==c&&pointInTriangle(ax,ay,bx,by,cx,cy,n.x,n.y)&&area(n.prev,n,n.next)>=0)return false;n=n.nextZ}return true}function cureLocalIntersections(start,triangles,dim){let p=start;do{const a=p.prev,b=p.next.next;if(!equals(a,b)&&intersects(a,p,p.next,b)&&locallyInside(a,b)&&locallyInside(b,a)){triangles.push(a.i/dim|0);triangles.push(p.i/dim|0);triangles.push(b.i/dim|0);removeNode(p);removeNode(p.next);p=start=b}p=p.next}while(p!==start);return filterPoints(p)}function splitEarcut(start,triangles,dim,minX,minY,invSize){let a=start;do{let b=a.next.next;while(b!==a.prev){if(a.i!==b.i&&isValidDiagonal(a,b)){let c=splitPolygon(a,b);a=filterPoints(a,a.next);c=filterPoints(c,c.next);earcutLinked(a,triangles,dim,minX,minY,invSize,0);earcutLinked(c,triangles,dim,minX,minY,invSize,0);return}b=b.next}a=a.next}while(a!==start)}function eliminateHoles(data,holeIndices,outerNode,dim){const queue=[];let i,len,start,end,list;for(i=0,len=holeIndices.length;i=p.next.y&&p.next.y!==p.y){const x=p.x+(hy-p.y)*(p.next.x-p.x)/(p.next.y-p.y);if(x<=hx&&x>qx){qx=x;m=p.x=p.x&&p.x>=mx&&hx!==p.x&&pointInTriangle(hym.x||p.x===m.x&§orContainsSector(m,p)))){m=p;tanMin=tan}}p=p.next}while(p!==stop);return m}function sectorContainsSector(m,p){return area(m.prev,m,p.prev)<0&&area(p.next,m,m.next)<0}function indexCurve(start,minX,minY,invSize){let p=start;do{if(p.z===0)p.z=zOrder(p.x,p.y,minX,minY,invSize);p.prevZ=p.prev;p.nextZ=p.next;p=p.next}while(p!==start);p.prevZ.nextZ=null;p.prevZ=null;sortLinked(p)}function sortLinked(list){let i,p,q,e,tail,numMerges,pSize,qSize,inSize=1;do{p=list;list=null;tail=null;numMerges=0;while(p){numMerges++;q=p;pSize=0;for(i=0;i0||qSize>0&&q){if(pSize!==0&&(qSize===0||!q||p.z<=q.z)){e=p;p=p.nextZ;pSize--}else{e=q;q=q.nextZ;qSize--}if(tail)tail.nextZ=e;else list=e;e.prevZ=tail;tail=e}p=q}tail.nextZ=null;inSize*=2}while(numMerges>1);return list}function zOrder(x,y,minX,minY,invSize){x=(x-minX)*invSize|0;y=(y-minY)*invSize|0;x=(x|x<<8)&16711935;x=(x|x<<4)&252645135;x=(x|x<<2)&858993459;x=(x|x<<1)&1431655765;y=(y|y<<8)&16711935;y=(y|y<<4)&252645135;y=(y|y<<2)&858993459;y=(y|y<<1)&1431655765;return x|y<<1}function getLeftmost(start){let p=start,leftmost=start;do{if(p.x=(ax-px)*(cy-py)&&(ax-px)*(by-py)>=(bx-px)*(ay-py)&&(bx-px)*(cy-py)>=(cx-px)*(by-py)}function isValidDiagonal(a,b){return a.next.i!==b.i&&a.prev.i!==b.i&&!intersectsPolygon(a,b)&&(locallyInside(a,b)&&locallyInside(b,a)&&middleInside(a,b)&&(area(a.prev,a,b.prev)||area(a,b.prev,b))||equals(a,b)&&area(a.prev,a,a.next)>0&&area(b.prev,b,b.next)>0)}function area(p,q,r){return(q.y-p.y)*(r.x-q.x)-(q.x-p.x)*(r.y-q.y)}function equals(p1,p2){return p1.x===p2.x&&p1.y===p2.y}function intersects(p1,q1,p2,q2){const o1=sign(area(p1,q1,p2));const o2=sign(area(p1,q1,q2));const o3=sign(area(p2,q2,p1));const o4=sign(area(p2,q2,q1));if(o1!==o2&&o3!==o4)return true;if(o1===0&&onSegment(p1,p2,q1))return true;if(o2===0&&onSegment(p1,q2,q1))return true;if(o3===0&&onSegment(p2,p1,q2))return true;if(o4===0&&onSegment(p2,q1,q2))return true;return false}function onSegment(p,q,r){return q.x<=Math.max(p.x,r.x)&&q.x>=Math.min(p.x,r.x)&&q.y<=Math.max(p.y,r.y)&&q.y>=Math.min(p.y,r.y)}function sign(num){return num>0?1:num<0?-1:0}function intersectsPolygon(a,b){let p=a;do{if(p.i!==a.i&&p.next.i!==a.i&&p.i!==b.i&&p.next.i!==b.i&&intersects(p,p.next,a,b))return true;p=p.next}while(p!==a);return false}function locallyInside(a,b){return area(a.prev,a,a.next)<0?area(a,b,a.next)>=0&&area(a,a.prev,b)>=0:area(a,b,a.prev)<0||area(a,a.next,b)<0}function middleInside(a,b){let p=a,inside=false;const px=(a.x+b.x)/2,py=(a.y+b.y)/2;do{if(p.y>py!==p.next.y>py&&p.next.y!==p.y&&px<(p.next.x-p.x)*(py-p.y)/(p.next.y-p.y)+p.x)inside=!inside;p=p.next}while(p!==a);return inside}function splitPolygon(a,b){const a2=new Node(a.i,a.x,a.y),b2=new Node(b.i,b.x,b.y),an=a.next,bp=b.prev;a.next=b;b.prev=a;a2.next=an;an.prev=a2;b2.next=a2;a2.prev=b2;bp.next=b2;b2.prev=bp;return b2}function insertNode(i,x,y,last){const p=new Node(i,x,y);if(!last){p.prev=p;p.next=p}else{p.next=last.next;p.prev=last;last.next.prev=p;last.next=p}return p}function removeNode(p){p.next.prev=p.prev;p.prev.next=p.next;if(p.prevZ)p.prevZ.nextZ=p.nextZ;if(p.nextZ)p.nextZ.prevZ=p.prevZ}function Node(i,x,y){this.i=i;this.x=x;this.y=y;this.prev=null;this.next=null;this.z=0;this.prevZ=null;this.nextZ=null;this.steiner=false}function signedArea(data,start,end,dim){let sum=0;for(let i=start,j=end-dim;i2&&points[l-1].equals(points[0])){points.pop()}}function addContour(vertices,contour){for(let i=0;iNumber.EPSILON){const v_prev_len=Math.sqrt(v_prev_lensq);const v_next_len=Math.sqrt(v_next_x*v_next_x+v_next_y*v_next_y);const ptPrevShift_x=inPrev.x-v_prev_y/v_prev_len;const ptPrevShift_y=inPrev.y+v_prev_x/v_prev_len;const ptNextShift_x=inNext.x-v_next_y/v_next_len;const ptNextShift_y=inNext.y+v_next_x/v_next_len;const sf=((ptNextShift_x-ptPrevShift_x)*v_next_y-(ptNextShift_y-ptPrevShift_y)*v_next_x)/(v_prev_x*v_next_y-v_prev_y*v_next_x);v_trans_x=ptPrevShift_x+v_prev_x*sf-inPt.x;v_trans_y=ptPrevShift_y+v_prev_y*sf-inPt.y;const v_trans_lensq=v_trans_x*v_trans_x+v_trans_y*v_trans_y;if(v_trans_lensq<=2){return new Vector2(v_trans_x,v_trans_y)}else{shrink_by=Math.sqrt(v_trans_lensq/2)}}else{let direction_eq=false;if(v_prev_x>Number.EPSILON){if(v_next_x>Number.EPSILON){direction_eq=true}}else{if(v_prev_x<-Number.EPSILON){if(v_next_x<-Number.EPSILON){direction_eq=true}}else{if(Math.sign(v_prev_y)===Math.sign(v_next_y)){direction_eq=true}}}if(direction_eq){v_trans_x=-v_prev_y;v_trans_y=v_prev_x;shrink_by=Math.sqrt(v_prev_lensq)}else{v_trans_x=v_prev_x;v_trans_y=v_prev_y;shrink_by=Math.sqrt(v_prev_lensq/2)}}return new Vector2(v_trans_x/shrink_by,v_trans_y/shrink_by)}const contourMovements=[];for(let i=0,il=contour.length,j=il-1,k=i+1;i=0;b--){const t=b/bevelSegments;const z=bevelThickness*Math.cos(t*Math.PI/2);const bs=bevelSize*Math.sin(t*Math.PI/2)+bevelOffset;for(let i=0,il=contour.length;i=0){const j=i;let k=i-1;if(k<0)k=contour.length-1;for(let s=0,sl=steps+bevelSegments*2;s0)indices.push(a,b,d);if(iy!==heightSegments-1||thetaEnd0!==value>0){this.version++}this._anisotropy=value}get clearcoat(){return this._clearcoat}set clearcoat(value){if(this._clearcoat>0!==value>0){this.version++}this._clearcoat=value}get iridescence(){return this._iridescence}set iridescence(value){if(this._iridescence>0!==value>0){this.version++}this._iridescence=value}get sheen(){return this._sheen}set sheen(value){if(this._sheen>0!==value>0){this.version++}this._sheen=value}get transmission(){return this._transmission}set transmission(value){if(this._transmission>0!==value>0){this.version++}this._transmission=value}copy(source){super.copy(source);this.defines={"STANDARD":"","PHYSICAL":""};this.anisotropy=source.anisotropy;this.anisotropyRotation=source.anisotropyRotation;this.anisotropyMap=source.anisotropyMap;this.clearcoat=source.clearcoat;this.clearcoatMap=source.clearcoatMap;this.clearcoatRoughness=source.clearcoatRoughness;this.clearcoatRoughnessMap=source.clearcoatRoughnessMap;this.clearcoatNormalMap=source.clearcoatNormalMap;this.clearcoatNormalScale.copy(source.clearcoatNormalScale);this.ior=source.ior;this.iridescence=source.iridescence;this.iridescenceMap=source.iridescenceMap;this.iridescenceIOR=source.iridescenceIOR;this.iridescenceThicknessRange=[...source.iridescenceThicknessRange];this.iridescenceThicknessMap=source.iridescenceThicknessMap;this.sheen=source.sheen;this.sheenColor.copy(source.sheenColor);this.sheenColorMap=source.sheenColorMap;this.sheenRoughness=source.sheenRoughness;this.sheenRoughnessMap=source.sheenRoughnessMap;this.transmission=source.transmission;this.transmissionMap=source.transmissionMap;this.thickness=source.thickness;this.thicknessMap=source.thicknessMap;this.attenuationDistance=source.attenuationDistance;this.attenuationColor.copy(source.attenuationColor);this.specularIntensity=source.specularIntensity;this.specularIntensityMap=source.specularIntensityMap;this.specularColor.copy(source.specularColor);this.specularColorMap=source.specularColorMap;return this}}class MeshPhongMaterial extends Material{constructor(parameters){super();this.isMeshPhongMaterial=true;this.type="MeshPhongMaterial";this.color=new Color(16777215);this.specular=new Color(1118481);this.shininess=30;this.map=null;this.lightMap=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.emissive=new Color(0);this.emissiveIntensity=1;this.emissiveMap=null;this.bumpMap=null;this.bumpScale=1;this.normalMap=null;this.normalMapType=TangentSpaceNormalMap;this.normalScale=new Vector2(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.specularMap=null;this.alphaMap=null;this.envMap=null;this.envMapRotation=new Euler;this.combine=MultiplyOperation;this.reflectivity=1;this.refractionRatio=0.98;this.wireframe=false;this.wireframeLinewidth=1;this.wireframeLinecap="round";this.wireframeLinejoin="round";this.flatShading=false;this.fog=true;this.setValues(parameters)}copy(source){super.copy(source);this.color.copy(source.color);this.specular.copy(source.specular);this.shininess=source.shininess;this.map=source.map;this.lightMap=source.lightMap;this.lightMapIntensity=source.lightMapIntensity;this.aoMap=source.aoMap;this.aoMapIntensity=source.aoMapIntensity;this.emissive.copy(source.emissive);this.emissiveMap=source.emissiveMap;this.emissiveIntensity=source.emissiveIntensity;this.bumpMap=source.bumpMap;this.bumpScale=source.bumpScale;this.normalMap=source.normalMap;this.normalMapType=source.normalMapType;this.normalScale.copy(source.normalScale);this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.specularMap=source.specularMap;this.alphaMap=source.alphaMap;this.envMap=source.envMap;this.envMapRotation.copy(source.envMapRotation);this.combine=source.combine;this.reflectivity=source.reflectivity;this.refractionRatio=source.refractionRatio;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.wireframeLinecap=source.wireframeLinecap;this.wireframeLinejoin=source.wireframeLinejoin;this.flatShading=source.flatShading;this.fog=source.fog;return this}}class MeshToonMaterial extends Material{constructor(parameters){super();this.isMeshToonMaterial=true;this.defines={"TOON":""};this.type="MeshToonMaterial";this.color=new Color(16777215);this.map=null;this.gradientMap=null;this.lightMap=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.emissive=new Color(0);this.emissiveIntensity=1;this.emissiveMap=null;this.bumpMap=null;this.bumpScale=1;this.normalMap=null;this.normalMapType=TangentSpaceNormalMap;this.normalScale=new Vector2(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.alphaMap=null;this.wireframe=false;this.wireframeLinewidth=1;this.wireframeLinecap="round";this.wireframeLinejoin="round";this.fog=true;this.setValues(parameters)}copy(source){super.copy(source);this.color.copy(source.color);this.map=source.map;this.gradientMap=source.gradientMap;this.lightMap=source.lightMap;this.lightMapIntensity=source.lightMapIntensity;this.aoMap=source.aoMap;this.aoMapIntensity=source.aoMapIntensity;this.emissive.copy(source.emissive);this.emissiveMap=source.emissiveMap;this.emissiveIntensity=source.emissiveIntensity;this.bumpMap=source.bumpMap;this.bumpScale=source.bumpScale;this.normalMap=source.normalMap;this.normalMapType=source.normalMapType;this.normalScale.copy(source.normalScale);this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.alphaMap=source.alphaMap;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.wireframeLinecap=source.wireframeLinecap;this.wireframeLinejoin=source.wireframeLinejoin;this.fog=source.fog;return this}}class MeshNormalMaterial extends Material{constructor(parameters){super();this.isMeshNormalMaterial=true;this.type="MeshNormalMaterial";this.bumpMap=null;this.bumpScale=1;this.normalMap=null;this.normalMapType=TangentSpaceNormalMap;this.normalScale=new Vector2(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=false;this.wireframeLinewidth=1;this.flatShading=false;this.setValues(parameters)}copy(source){super.copy(source);this.bumpMap=source.bumpMap;this.bumpScale=source.bumpScale;this.normalMap=source.normalMap;this.normalMapType=source.normalMapType;this.normalScale.copy(source.normalScale);this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.flatShading=source.flatShading;return this}}class MeshLambertMaterial extends Material{constructor(parameters){super();this.isMeshLambertMaterial=true;this.type="MeshLambertMaterial";this.color=new Color(16777215);this.map=null;this.lightMap=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.emissive=new Color(0);this.emissiveIntensity=1;this.emissiveMap=null;this.bumpMap=null;this.bumpScale=1;this.normalMap=null;this.normalMapType=TangentSpaceNormalMap;this.normalScale=new Vector2(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.specularMap=null;this.alphaMap=null;this.envMap=null;this.envMapRotation=new Euler;this.combine=MultiplyOperation;this.reflectivity=1;this.refractionRatio=0.98;this.wireframe=false;this.wireframeLinewidth=1;this.wireframeLinecap="round";this.wireframeLinejoin="round";this.flatShading=false;this.fog=true;this.setValues(parameters)}copy(source){super.copy(source);this.color.copy(source.color);this.map=source.map;this.lightMap=source.lightMap;this.lightMapIntensity=source.lightMapIntensity;this.aoMap=source.aoMap;this.aoMapIntensity=source.aoMapIntensity;this.emissive.copy(source.emissive);this.emissiveMap=source.emissiveMap;this.emissiveIntensity=source.emissiveIntensity;this.bumpMap=source.bumpMap;this.bumpScale=source.bumpScale;this.normalMap=source.normalMap;this.normalMapType=source.normalMapType;this.normalScale.copy(source.normalScale);this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.specularMap=source.specularMap;this.alphaMap=source.alphaMap;this.envMap=source.envMap;this.envMapRotation.copy(source.envMapRotation);this.combine=source.combine;this.reflectivity=source.reflectivity;this.refractionRatio=source.refractionRatio;this.wireframe=source.wireframe;this.wireframeLinewidth=source.wireframeLinewidth;this.wireframeLinecap=source.wireframeLinecap;this.wireframeLinejoin=source.wireframeLinejoin;this.flatShading=source.flatShading;this.fog=source.fog;return this}}class MeshMatcapMaterial extends Material{constructor(parameters){super();this.isMeshMatcapMaterial=true;this.defines={"MATCAP":""};this.type="MeshMatcapMaterial";this.color=new Color(16777215);this.matcap=null;this.map=null;this.bumpMap=null;this.bumpScale=1;this.normalMap=null;this.normalMapType=TangentSpaceNormalMap;this.normalScale=new Vector2(1,1);this.displacementMap=null;this.displacementScale=1;this.displacementBias=0;this.alphaMap=null;this.flatShading=false;this.fog=true;this.setValues(parameters)}copy(source){super.copy(source);this.defines={"MATCAP":""};this.color.copy(source.color);this.matcap=source.matcap;this.map=source.map;this.bumpMap=source.bumpMap;this.bumpScale=source.bumpScale;this.normalMap=source.normalMap;this.normalMapType=source.normalMapType;this.normalScale.copy(source.normalScale);this.displacementMap=source.displacementMap;this.displacementScale=source.displacementScale;this.displacementBias=source.displacementBias;this.alphaMap=source.alphaMap;this.flatShading=source.flatShading;this.fog=source.fog;return this}}class LineDashedMaterial extends LineBasicMaterial{constructor(parameters){super();this.isLineDashedMaterial=true;this.type="LineDashedMaterial";this.scale=1;this.dashSize=3;this.gapSize=1;this.setValues(parameters)}copy(source){super.copy(source);this.scale=source.scale;this.dashSize=source.dashSize;this.gapSize=source.gapSize;return this}}function convertArray(array,type,forceClone){if(!array||!forceClone&&array.constructor===type)return array;if(typeof type.BYTES_PER_ELEMENT==="number"){return new type(array)}return Array.prototype.slice.call(array)}function isTypedArray(object){return ArrayBuffer.isView(object)&&!(object instanceof DataView)}function getKeyframeOrder(times){function compareTime(i,j){return times[i]-times[j]}const n=times.length;const result=new Array(n);for(let i=0;i!==n;++i)result[i]=i;result.sort(compareTime);return result}function sortedArray(values,stride,order){const nValues=values.length;const result=new values.constructor(nValues);for(let i=0,dstOffset=0;dstOffset!==nValues;++i){const srcOffset=order[i]*stride;for(let j=0;j!==stride;++j){result[dstOffset++]=values[srcOffset+j]}}return result}function flattenJSON(jsonKeys,times,values,valuePropertyName){let i=1,key=jsonKeys[0];while(key!==undefined&&key[valuePropertyName]===undefined){key=jsonKeys[i++]}if(key===undefined)return;let value=key[valuePropertyName];if(value===undefined)return;if(Array.isArray(value)){do{value=key[valuePropertyName];if(value!==undefined){times.push(key.time);values.push.apply(values,value)}key=jsonKeys[i++]}while(key!==undefined)}else if(value.toArray!==undefined){do{value=key[valuePropertyName];if(value!==undefined){times.push(key.time);value.toArray(values,values.length)}key=jsonKeys[i++]}while(key!==undefined)}else{do{value=key[valuePropertyName];if(value!==undefined){times.push(key.time);values.push(value)}key=jsonKeys[i++]}while(key!==undefined)}}function subclip(sourceClip,name,startFrame,endFrame,fps=30){const clip=sourceClip.clone();clip.name=name;const tracks=[];for(let i=0;i=endFrame)continue;times.push(track.times[j]);for(let k=0;kclip.tracks[i].times[0]){minStartTime=clip.tracks[i].times[0]}}for(let i=0;i=referenceTrack.times[lastIndex]){const startIndex=lastIndex*referenceValueSize+referenceOffset;const endIndex=startIndex+referenceValueSize-referenceOffset;referenceValue=referenceTrack.values.slice(startIndex,endIndex)}else{const interpolant=referenceTrack.createInterpolant();const startIndex=referenceOffset;const endIndex=referenceValueSize-referenceOffset;interpolant.evaluate(referenceTime);referenceValue=interpolant.resultBuffer.slice(startIndex,endIndex)}if(referenceTrackType==="quaternion"){const referenceQuat=new Quaternion().fromArray(referenceValue).normalize().conjugate();referenceQuat.toArray(referenceValue)}const numTimes=targetTrack.times.length;for(let j=0;j=t0)){const t1global=pp[1];if(t=t0){break seek}}right=i1;i1=0;break linear_scan}break validate_interval}while(i1>>1;if(tendTime){--to}++to;if(from!==0||to!==nKeys){if(from>=to){to=Math.max(to,1);from=to-1}const stride=this.getValueSize();this.times=times.slice(from,to);this.values=this.values.slice(from*stride,to*stride)}return this}validate(){let valid=true;const valueSize=this.getValueSize();if(valueSize-Math.floor(valueSize)!==0){console.error("THREE.KeyframeTrack: Invalid value size in track.",this);valid=false}const times=this.times,values=this.values,nKeys=times.length;if(nKeys===0){console.error("THREE.KeyframeTrack: Track is empty.",this);valid=false}let prevTime=null;for(let i=0;i!==nKeys;i++){const currTime=times[i];if(typeof currTime==="number"&&isNaN(currTime)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,i,currTime);valid=false;break}if(prevTime!==null&&prevTime>currTime){console.error("THREE.KeyframeTrack: Out of order keys.",this,i,currTime,prevTime);valid=false;break}prevTime=currTime}if(values!==undefined){if(isTypedArray(values)){for(let i=0,n=values.length;i!==n;++i){const value=values[i];if(isNaN(value)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,i,value);valid=false;break}}}}return valid}optimize(){const times=this.times.slice(),values=this.values.slice(),stride=this.getValueSize(),smoothInterpolation=this.getInterpolation()===InterpolateSmooth,lastIndex=times.length-1;let writeIndex=1;for(let i=1;i0){times[writeIndex]=times[lastIndex];for(let readOffset=lastIndex*stride,writeOffset=writeIndex*stride,j=0;j!==stride;++j){values[writeOffset+j]=values[readOffset+j]}++writeIndex}if(writeIndex!==times.length){this.times=times.slice(0,writeIndex);this.values=values.slice(0,writeIndex*stride)}else{this.times=times;this.values=values}return this}clone(){const times=this.times.slice();const values=this.values.slice();const TypedKeyframeTrack=this.constructor;const track=new TypedKeyframeTrack(this.name,times,values);track.createInterpolant=this.createInterpolant;return track}}KeyframeTrack.prototype.TimeBufferType=Float32Array;KeyframeTrack.prototype.ValueBufferType=Float32Array;KeyframeTrack.prototype.DefaultInterpolation=InterpolateLinear;class BooleanKeyframeTrack extends KeyframeTrack{}BooleanKeyframeTrack.prototype.ValueTypeName="bool";BooleanKeyframeTrack.prototype.ValueBufferType=Array;BooleanKeyframeTrack.prototype.DefaultInterpolation=InterpolateDiscrete;BooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear=undefined;BooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=undefined;class ColorKeyframeTrack extends KeyframeTrack{}ColorKeyframeTrack.prototype.ValueTypeName="color";class NumberKeyframeTrack extends KeyframeTrack{}NumberKeyframeTrack.prototype.ValueTypeName="number";class QuaternionLinearInterpolant extends Interpolant{constructor(parameterPositions,sampleValues,sampleSize,resultBuffer){super(parameterPositions,sampleValues,sampleSize,resultBuffer)}interpolate_(i1,t0,t,t1){const result=this.resultBuffer,values=this.sampleValues,stride=this.valueSize,alpha=(t-t0)/(t1-t0);let offset=i1*stride;for(let end=offset+stride;offset!==end;offset+=4){Quaternion.slerpFlat(result,0,values,offset-stride,values,offset,alpha)}return result}}class QuaternionKeyframeTrack extends KeyframeTrack{InterpolantFactoryMethodLinear(result){return new QuaternionLinearInterpolant(this.times,this.values,this.getValueSize(),result)}}QuaternionKeyframeTrack.prototype.ValueTypeName="quaternion";QuaternionKeyframeTrack.prototype.DefaultInterpolation=InterpolateLinear;QuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=undefined;class StringKeyframeTrack extends KeyframeTrack{}StringKeyframeTrack.prototype.ValueTypeName="string";StringKeyframeTrack.prototype.ValueBufferType=Array;StringKeyframeTrack.prototype.DefaultInterpolation=InterpolateDiscrete;StringKeyframeTrack.prototype.InterpolantFactoryMethodLinear=undefined;StringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=undefined;class VectorKeyframeTrack extends KeyframeTrack{}VectorKeyframeTrack.prototype.ValueTypeName="vector";class AnimationClip{constructor(name="",duration=-1,tracks=[],blendMode=NormalAnimationBlendMode){this.name=name;this.tracks=tracks;this.duration=duration;this.blendMode=blendMode;this.uuid=generateUUID();if(this.duration<0){this.resetDuration()}}static parse(json){const tracks=[],jsonTracks=json.tracks,frameTime=1/(json.fps||1);for(let i=0,n=jsonTracks.length;i!==n;++i){tracks.push(parseKeyframeTrack(jsonTracks[i]).scale(frameTime))}const clip=new this(json.name,json.duration,tracks,json.blendMode);clip.uuid=json.uuid;return clip}static toJSON(clip){const tracks=[],clipTracks=clip.tracks;const json={"name":clip.name,"duration":clip.duration,"tracks":tracks,"uuid":clip.uuid,"blendMode":clip.blendMode};for(let i=0,n=clipTracks.length;i!==n;++i){tracks.push(KeyframeTrack.toJSON(clipTracks[i]))}return json}static CreateFromMorphTargetSequence(name,morphTargetSequence,fps,noLoop){const numMorphTargets=morphTargetSequence.length;const tracks=[];for(let i=0;i1){const name=parts[1];let animationMorphTargets=animationToMorphTargets[name];if(!animationMorphTargets){animationToMorphTargets[name]=animationMorphTargets=[]}animationMorphTargets.push(morphTarget)}}const clips=[];for(const name in animationToMorphTargets){clips.push(this.CreateFromMorphTargetSequence(name,animationToMorphTargets[name],fps,noLoop))}return clips}static parseAnimation(animation,bones){if(!animation){console.error("THREE.AnimationClip: No animation in JSONLoader data.");return null}const addNonemptyTrack=function(trackType,trackName,animationKeys,propertyName,destTracks){if(animationKeys.length!==0){const times=[];const values=[];flattenJSON(animationKeys,times,values,propertyName);if(times.length!==0){destTracks.push(new trackType(trackName,times,values))}}};const tracks=[];const clipName=animation.name||"default";const fps=animation.fps||30;const blendMode=animation.blendMode;let duration=animation.length||-1;const hierarchyTracks=animation.hierarchy||[];for(let h=0;h{if(onLoad)onLoad(cached);this.manager.itemEnd(url)},0);return cached}if(loading[url]!==undefined){loading[url].push({onLoad:onLoad,onProgress:onProgress,onError:onError});return}loading[url]=[];loading[url].push({onLoad:onLoad,onProgress:onProgress,onError:onError});const req=new Request(url,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"});const mimeType=this.mimeType;const responseType=this.responseType;fetch(req).then(response=>{if(response.status===200||response.status===0){if(response.status===0){console.warn("THREE.FileLoader: HTTP Status 0 received.")}if(typeof ReadableStream==="undefined"||response.body===undefined||response.body.getReader===undefined){return response}const callbacks=loading[url];const reader=response.body.getReader();const contentLength=response.headers.get("Content-Length")||response.headers.get("X-File-Size");const total=contentLength?parseInt(contentLength):0;const lengthComputable=total!==0;let loaded=0;const stream=new ReadableStream({start(controller){readData();function readData(){reader.read().then(({done,value})=>{if(done){controller.close()}else{loaded+=value.byteLength;const event=new ProgressEvent("progress",{lengthComputable,loaded,total});for(let i=0,il=callbacks.length;i{switch(responseType){case"arraybuffer":return response.arrayBuffer();case"blob":return response.blob();case"document":return response.text().then(text=>{const parser=new DOMParser;return parser.parseFromString(text,mimeType)});case"json":return response.json();default:if(mimeType===undefined){return response.text()}else{const re=/charset="?([^;"\s]*)"?/i;const exec=re.exec(mimeType);const label=exec&&exec[1]?exec[1].toLowerCase():undefined;const decoder=new TextDecoder(label);return response.arrayBuffer().then(ab=>decoder.decode(ab))}}}).then(data=>{Cache.add(url,data);const callbacks=loading[url];delete loading[url];for(let i=0,il=callbacks.length;i{const callbacks=loading[url];if(callbacks===undefined){this.manager.itemError(url);throw err}delete loading[url];for(let i=0,il=callbacks.length;i{this.manager.itemEnd(url)});this.manager.itemStart(url)}setResponseType(value){this.responseType=value;return this}setMimeType(value){this.mimeType=value;return this}}class AnimationLoader extends Loader{constructor(manager){super(manager)}load(url,onLoad,onProgress,onError){const scope=this;const loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setRequestHeader(this.requestHeader);loader.setWithCredentials(this.withCredentials);loader.load(url,function(text){try{onLoad(scope.parse(JSON.parse(text)))}catch(e){if(onError){onError(e)}else{console.error(e)}scope.manager.itemError(url)}},onProgress,onError)}parse(json){const animations=[];for(let i=0;i0?true:false}else{material.vertexColors=json.vertexColors}}if(json.uniforms!==undefined){for(const name in json.uniforms){const uniform=json.uniforms[name];material.uniforms[name]={};switch(uniform.type){case"t":material.uniforms[name].value=getTexture(uniform.value);break;case"c":material.uniforms[name].value=new Color().setHex(uniform.value);break;case"v2":material.uniforms[name].value=new Vector2().fromArray(uniform.value);break;case"v3":material.uniforms[name].value=new Vector3().fromArray(uniform.value);break;case"v4":material.uniforms[name].value=new Vector4().fromArray(uniform.value);break;case"m3":material.uniforms[name].value=new Matrix3().fromArray(uniform.value);break;case"m4":material.uniforms[name].value=new Matrix4().fromArray(uniform.value);break;default:material.uniforms[name].value=uniform.value;}}}if(json.defines!==undefined)material.defines=json.defines;if(json.vertexShader!==undefined)material.vertexShader=json.vertexShader;if(json.fragmentShader!==undefined)material.fragmentShader=json.fragmentShader;if(json.glslVersion!==undefined)material.glslVersion=json.glslVersion;if(json.extensions!==undefined){for(const key in json.extensions){material.extensions[key]=json.extensions[key]}}if(json.lights!==undefined)material.lights=json.lights;if(json.clipping!==undefined)material.clipping=json.clipping;if(json.size!==undefined)material.size=json.size;if(json.sizeAttenuation!==undefined)material.sizeAttenuation=json.sizeAttenuation;if(json.map!==undefined)material.map=getTexture(json.map);if(json.matcap!==undefined)material.matcap=getTexture(json.matcap);if(json.alphaMap!==undefined)material.alphaMap=getTexture(json.alphaMap);if(json.bumpMap!==undefined)material.bumpMap=getTexture(json.bumpMap);if(json.bumpScale!==undefined)material.bumpScale=json.bumpScale;if(json.normalMap!==undefined)material.normalMap=getTexture(json.normalMap);if(json.normalMapType!==undefined)material.normalMapType=json.normalMapType;if(json.normalScale!==undefined){let normalScale=json.normalScale;if(Array.isArray(normalScale)===false){normalScale=[normalScale,normalScale]}material.normalScale=new Vector2().fromArray(normalScale)}if(json.displacementMap!==undefined)material.displacementMap=getTexture(json.displacementMap);if(json.displacementScale!==undefined)material.displacementScale=json.displacementScale;if(json.displacementBias!==undefined)material.displacementBias=json.displacementBias;if(json.roughnessMap!==undefined)material.roughnessMap=getTexture(json.roughnessMap);if(json.metalnessMap!==undefined)material.metalnessMap=getTexture(json.metalnessMap);if(json.emissiveMap!==undefined)material.emissiveMap=getTexture(json.emissiveMap);if(json.emissiveIntensity!==undefined)material.emissiveIntensity=json.emissiveIntensity;if(json.specularMap!==undefined)material.specularMap=getTexture(json.specularMap);if(json.specularIntensityMap!==undefined)material.specularIntensityMap=getTexture(json.specularIntensityMap);if(json.specularColorMap!==undefined)material.specularColorMap=getTexture(json.specularColorMap);if(json.envMap!==undefined)material.envMap=getTexture(json.envMap);if(json.envMapRotation!==undefined)material.envMapRotation.fromArray(json.envMapRotation);if(json.envMapIntensity!==undefined)material.envMapIntensity=json.envMapIntensity;if(json.reflectivity!==undefined)material.reflectivity=json.reflectivity;if(json.refractionRatio!==undefined)material.refractionRatio=json.refractionRatio;if(json.lightMap!==undefined)material.lightMap=getTexture(json.lightMap);if(json.lightMapIntensity!==undefined)material.lightMapIntensity=json.lightMapIntensity;if(json.aoMap!==undefined)material.aoMap=getTexture(json.aoMap);if(json.aoMapIntensity!==undefined)material.aoMapIntensity=json.aoMapIntensity;if(json.gradientMap!==undefined)material.gradientMap=getTexture(json.gradientMap);if(json.clearcoatMap!==undefined)material.clearcoatMap=getTexture(json.clearcoatMap);if(json.clearcoatRoughnessMap!==undefined)material.clearcoatRoughnessMap=getTexture(json.clearcoatRoughnessMap);if(json.clearcoatNormalMap!==undefined)material.clearcoatNormalMap=getTexture(json.clearcoatNormalMap);if(json.clearcoatNormalScale!==undefined)material.clearcoatNormalScale=new Vector2().fromArray(json.clearcoatNormalScale);if(json.iridescenceMap!==undefined)material.iridescenceMap=getTexture(json.iridescenceMap);if(json.iridescenceThicknessMap!==undefined)material.iridescenceThicknessMap=getTexture(json.iridescenceThicknessMap);if(json.transmissionMap!==undefined)material.transmissionMap=getTexture(json.transmissionMap);if(json.thicknessMap!==undefined)material.thicknessMap=getTexture(json.thicknessMap);if(json.anisotropyMap!==undefined)material.anisotropyMap=getTexture(json.anisotropyMap);if(json.sheenColorMap!==undefined)material.sheenColorMap=getTexture(json.sheenColorMap);if(json.sheenRoughnessMap!==undefined)material.sheenRoughnessMap=getTexture(json.sheenRoughnessMap);return material}setTextures(value){this.textures=value;return this}static createMaterialFromType(type){const materialLib={ShadowMaterial,SpriteMaterial,RawShaderMaterial,ShaderMaterial,PointsMaterial,MeshPhysicalMaterial,MeshStandardMaterial,MeshPhongMaterial,MeshToonMaterial,MeshNormalMaterial,MeshLambertMaterial,MeshDepthMaterial,MeshDistanceMaterial,MeshBasicMaterial,MeshMatcapMaterial,LineDashedMaterial,LineBasicMaterial,Material};return new materialLib[type]}}class LoaderUtils{static decodeText(array){if(typeof TextDecoder!=="undefined"){return new TextDecoder().decode(array)}let s="";for(let i=0,il=array.length;i0){const manager=new LoadingManager(onLoad);loader=new ImageLoader(manager);loader.setCrossOrigin(this.crossOrigin);for(let i=0,il=json.length;i0){loader=new ImageLoader(this.manager);loader.setCrossOrigin(this.crossOrigin);for(let i=0,il=json.length;i{const box=new Box3;box.min.fromArray(bound.boxMin);box.max.fromArray(bound.boxMax);const sphere=new Sphere;sphere.radius=bound.sphereRadius;sphere.center.fromArray(bound.sphereCenter);return{boxInitialized:bound.boxInitialized,box:box,sphereInitialized:bound.sphereInitialized,sphere:sphere}});object._maxGeometryCount=data.maxGeometryCount;object._maxVertexCount=data.maxVertexCount;object._maxIndexCount=data.maxIndexCount;object._geometryInitialized=data.geometryInitialized;object._geometryCount=data.geometryCount;object._matricesTexture=getTexture(data.matricesTexture.uuid);break;case"LOD":object=new LOD;break;case"Line":object=new Line(getGeometry(data.geometry),getMaterial(data.material));break;case"LineLoop":object=new LineLoop(getGeometry(data.geometry),getMaterial(data.material));break;case"LineSegments":object=new LineSegments(getGeometry(data.geometry),getMaterial(data.material));break;case"PointCloud":case"Points":object=new Points(getGeometry(data.geometry),getMaterial(data.material));break;case"Sprite":object=new Sprite(getMaterial(data.material));break;case"Group":object=new Group;break;case"Bone":object=new Bone;break;default:object=new Object3D;}object.uuid=data.uuid;if(data.name!==undefined)object.name=data.name;if(data.matrix!==undefined){object.matrix.fromArray(data.matrix);if(data.matrixAutoUpdate!==undefined)object.matrixAutoUpdate=data.matrixAutoUpdate;if(object.matrixAutoUpdate)object.matrix.decompose(object.position,object.quaternion,object.scale)}else{if(data.position!==undefined)object.position.fromArray(data.position);if(data.rotation!==undefined)object.rotation.fromArray(data.rotation);if(data.quaternion!==undefined)object.quaternion.fromArray(data.quaternion);if(data.scale!==undefined)object.scale.fromArray(data.scale)}if(data.up!==undefined)object.up.fromArray(data.up);if(data.castShadow!==undefined)object.castShadow=data.castShadow;if(data.receiveShadow!==undefined)object.receiveShadow=data.receiveShadow;if(data.shadow){if(data.shadow.bias!==undefined)object.shadow.bias=data.shadow.bias;if(data.shadow.normalBias!==undefined)object.shadow.normalBias=data.shadow.normalBias;if(data.shadow.radius!==undefined)object.shadow.radius=data.shadow.radius;if(data.shadow.mapSize!==undefined)object.shadow.mapSize.fromArray(data.shadow.mapSize);if(data.shadow.camera!==undefined)object.shadow.camera=this.parseObject(data.shadow.camera)}if(data.visible!==undefined)object.visible=data.visible;if(data.frustumCulled!==undefined)object.frustumCulled=data.frustumCulled;if(data.renderOrder!==undefined)object.renderOrder=data.renderOrder;if(data.userData!==undefined)object.userData=data.userData;if(data.layers!==undefined)object.layers.mask=data.layers;if(data.children!==undefined){const children=data.children;for(let i=0;i{if(onLoad)onLoad(imageBitmap);scope.manager.itemEnd(url)}).catch(e=>{if(onError)onError(e)});return}setTimeout(function(){if(onLoad)onLoad(cached);scope.manager.itemEnd(url)},0);return cached}const fetchOptions={};fetchOptions.credentials=this.crossOrigin==="anonymous"?"same-origin":"include";fetchOptions.headers=this.requestHeader;const promise=fetch(url,fetchOptions).then(function(res){return res.blob()}).then(function(blob){return createImageBitmap(blob,Object.assign(scope.options,{colorSpaceConversion:"none"}))}).then(function(imageBitmap){Cache.add(url,imageBitmap);if(onLoad)onLoad(imageBitmap);scope.manager.itemEnd(url);return imageBitmap}).catch(function(e){if(onError)onError(e);Cache.remove(url);scope.manager.itemError(url);scope.manager.itemEnd(url)});Cache.add(url,promise);scope.manager.itemStart(url)}}let _context;class AudioContext{static getContext(){if(_context===undefined){_context=new(window.AudioContext||window.webkitAudioContext)}return _context}static setContext(value){_context=value}}class AudioLoader extends Loader{constructor(manager){super(manager)}load(url,onLoad,onProgress,onError){const scope=this;const loader=new FileLoader(this.manager);loader.setResponseType("arraybuffer");loader.setPath(this.path);loader.setRequestHeader(this.requestHeader);loader.setWithCredentials(this.withCredentials);loader.load(url,function(buffer){try{const bufferCopy=buffer.slice(0);const context=AudioContext.getContext();context.decodeAudioData(bufferCopy,function(audioBuffer){onLoad(audioBuffer)}).catch(handleError)}catch(e){handleError(e)}},onProgress,onError);function handleError(e){if(onError){onError(e)}else{console.error(e)}scope.manager.itemError(url)}}}const _eyeRight=new Matrix4;const _eyeLeft=new Matrix4;const _projectionMatrix=new Matrix4;class StereoCamera{constructor(){this.type="StereoCamera";this.aspect=1;this.eyeSep=0.064;this.cameraL=new PerspectiveCamera;this.cameraL.layers.enable(1);this.cameraL.matrixAutoUpdate=false;this.cameraR=new PerspectiveCamera;this.cameraR.layers.enable(2);this.cameraR.matrixAutoUpdate=false;this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(camera){const cache=this._cache;const needsUpdate=cache.focus!==camera.focus||cache.fov!==camera.fov||cache.aspect!==camera.aspect*this.aspect||cache.near!==camera.near||cache.far!==camera.far||cache.zoom!==camera.zoom||cache.eyeSep!==this.eyeSep;if(needsUpdate){cache.focus=camera.focus;cache.fov=camera.fov;cache.aspect=camera.aspect*this.aspect;cache.near=camera.near;cache.far=camera.far;cache.zoom=camera.zoom;cache.eyeSep=this.eyeSep;_projectionMatrix.copy(camera.projectionMatrix);const eyeSepHalf=cache.eyeSep/2;const eyeSepOnProjection=eyeSepHalf*cache.near/cache.focus;const ymax=cache.near*Math.tan(DEG2RAD*cache.fov*0.5)/cache.zoom;let xmin,xmax;_eyeLeft.elements[12]=-eyeSepHalf;_eyeRight.elements[12]=eyeSepHalf;xmin=-ymax*cache.aspect+eyeSepOnProjection;xmax=ymax*cache.aspect+eyeSepOnProjection;_projectionMatrix.elements[0]=2*cache.near/(xmax-xmin);_projectionMatrix.elements[8]=(xmax+xmin)/(xmax-xmin);this.cameraL.projectionMatrix.copy(_projectionMatrix);xmin=-ymax*cache.aspect-eyeSepOnProjection;xmax=ymax*cache.aspect-eyeSepOnProjection;_projectionMatrix.elements[0]=2*cache.near/(xmax-xmin);_projectionMatrix.elements[8]=(xmax+xmin)/(xmax-xmin);this.cameraR.projectionMatrix.copy(_projectionMatrix)}this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(_eyeLeft);this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(_eyeRight)}}class Clock{constructor(autoStart=true){this.autoStart=autoStart;this.startTime=0;this.oldTime=0;this.elapsedTime=0;this.running=false}start(){this.startTime=now();this.oldTime=this.startTime;this.elapsedTime=0;this.running=true}stop(){this.getElapsedTime();this.running=false;this.autoStart=false}getElapsedTime(){this.getDelta();return this.elapsedTime}getDelta(){let diff=0;if(this.autoStart&&!this.running){this.start();return 0}if(this.running){const newTime=now();diff=(newTime-this.oldTime)/1000;this.oldTime=newTime;this.elapsedTime+=diff}return diff}}function now(){return(typeof performance==="undefined"?Date:performance).now()}const _position$1=new Vector3;const _quaternion$1=new Quaternion;const _scale$1=new Vector3;const _orientation$1=new Vector3;class AudioListener extends Object3D{constructor(){super();this.type="AudioListener";this.context=AudioContext.getContext();this.gain=this.context.createGain();this.gain.connect(this.context.destination);this.filter=null;this.timeDelta=0;this._clock=new Clock}getInput(){return this.gain}removeFilter(){if(this.filter!==null){this.gain.disconnect(this.filter);this.filter.disconnect(this.context.destination);this.gain.connect(this.context.destination);this.filter=null}return this}getFilter(){return this.filter}setFilter(value){if(this.filter!==null){this.gain.disconnect(this.filter);this.filter.disconnect(this.context.destination)}else{this.gain.disconnect(this.context.destination)}this.filter=value;this.gain.connect(this.filter);this.filter.connect(this.context.destination);return this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(value){this.gain.gain.setTargetAtTime(value,this.context.currentTime,0.01);return this}updateMatrixWorld(force){super.updateMatrixWorld(force);const listener=this.context.listener;const up=this.up;this.timeDelta=this._clock.getDelta();this.matrixWorld.decompose(_position$1,_quaternion$1,_scale$1);_orientation$1.set(0,0,-1).applyQuaternion(_quaternion$1);if(listener.positionX){const endTime=this.context.currentTime+this.timeDelta;listener.positionX.linearRampToValueAtTime(_position$1.x,endTime);listener.positionY.linearRampToValueAtTime(_position$1.y,endTime);listener.positionZ.linearRampToValueAtTime(_position$1.z,endTime);listener.forwardX.linearRampToValueAtTime(_orientation$1.x,endTime);listener.forwardY.linearRampToValueAtTime(_orientation$1.y,endTime);listener.forwardZ.linearRampToValueAtTime(_orientation$1.z,endTime);listener.upX.linearRampToValueAtTime(up.x,endTime);listener.upY.linearRampToValueAtTime(up.y,endTime);listener.upZ.linearRampToValueAtTime(up.z,endTime)}else{listener.setPosition(_position$1.x,_position$1.y,_position$1.z);listener.setOrientation(_orientation$1.x,_orientation$1.y,_orientation$1.z,up.x,up.y,up.z)}}}class Audio extends Object3D{constructor(listener){super();this.type="Audio";this.listener=listener;this.context=listener.context;this.gain=this.context.createGain();this.gain.connect(listener.getInput());this.autoplay=false;this.buffer=null;this.detune=0;this.loop=false;this.loopStart=0;this.loopEnd=0;this.offset=0;this.duration=undefined;this.playbackRate=1;this.isPlaying=false;this.hasPlaybackControl=true;this.source=null;this.sourceType="empty";this._startedAt=0;this._progress=0;this._connected=false;this.filters=[]}getOutput(){return this.gain}setNodeSource(audioNode){this.hasPlaybackControl=false;this.sourceType="audioNode";this.source=audioNode;this.connect();return this}setMediaElementSource(mediaElement){this.hasPlaybackControl=false;this.sourceType="mediaNode";this.source=this.context.createMediaElementSource(mediaElement);this.connect();return this}setMediaStreamSource(mediaStream){this.hasPlaybackControl=false;this.sourceType="mediaStreamNode";this.source=this.context.createMediaStreamSource(mediaStream);this.connect();return this}setBuffer(audioBuffer){this.buffer=audioBuffer;this.sourceType="buffer";if(this.autoplay)this.play();return this}play(delay=0){if(this.isPlaying===true){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===false){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+delay;const source=this.context.createBufferSource();source.buffer=this.buffer;source.loop=this.loop;source.loopStart=this.loopStart;source.loopEnd=this.loopEnd;source.onended=this.onEnded.bind(this);source.start(this._startedAt,this._progress+this.offset,this.duration);this.isPlaying=true;this.source=source;this.setDetune(this.detune);this.setPlaybackRate(this.playbackRate);return this.connect()}pause(){if(this.hasPlaybackControl===false){console.warn("THREE.Audio: this Audio has no playback control.");return}if(this.isPlaying===true){this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate;if(this.loop===true){this._progress=this._progress%(this.duration||this.buffer.duration)}this.source.stop();this.source.onended=null;this.isPlaying=false}return this}stop(){if(this.hasPlaybackControl===false){console.warn("THREE.Audio: this Audio has no playback control.");return}this._progress=0;if(this.source!==null){this.source.stop();this.source.onended=null}this.isPlaying=false;return this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let i=1,l=this.filters.length;i0){this.source.disconnect(this.filters[0]);for(let i=1,l=this.filters.length;i0){this._mixBufferRegionAdditive(buffer,offset,this._addIndex*stride,1,stride)}for(let i=stride,e=stride+stride;i!==e;++i){if(buffer[i]!==buffer[i+stride]){binding.setValue(buffer,offset);break}}}saveOriginalState(){const binding=this.binding;const buffer=this.buffer,stride=this.valueSize,originalValueOffset=stride*this._origIndex;binding.getValue(buffer,originalValueOffset);for(let i=stride,e=originalValueOffset;i!==e;++i){buffer[i]=buffer[originalValueOffset+i%stride]}this._setIdentity();this.cumulativeWeight=0;this.cumulativeWeightAdditive=0}restoreOriginalState(){const originalValueOffset=this.valueSize*3;this.binding.setValue(this.buffer,originalValueOffset)}_setAdditiveIdentityNumeric(){const startIndex=this._addIndex*this.valueSize;const endIndex=startIndex+this.valueSize;for(let i=startIndex;i=0.5){for(let i=0;i!==stride;++i){buffer[dstOffset+i]=buffer[srcOffset+i]}}}_slerp(buffer,dstOffset,srcOffset,t){Quaternion.slerpFlat(buffer,dstOffset,buffer,dstOffset,buffer,srcOffset,t)}_slerpAdditive(buffer,dstOffset,srcOffset,t,stride){const workOffset=this._workIndex*stride;Quaternion.multiplyQuaternionsFlat(buffer,workOffset,buffer,dstOffset,buffer,srcOffset);Quaternion.slerpFlat(buffer,dstOffset,buffer,dstOffset,buffer,workOffset,t)}_lerp(buffer,dstOffset,srcOffset,t,stride){const s=1-t;for(let i=0;i!==stride;++i){const j=dstOffset+i;buffer[j]=buffer[j]*s+buffer[srcOffset+i]*t}}_lerpAdditive(buffer,dstOffset,srcOffset,t,stride){for(let i=0;i!==stride;++i){const j=dstOffset+i;buffer[j]=buffer[j]+buffer[srcOffset+i]*t}}}const _RESERVED_CHARS_RE="\\[\\]\\.:\\/";const _reservedRe=new RegExp("["+_RESERVED_CHARS_RE+"]","g");const _wordChar="[^"+_RESERVED_CHARS_RE+"]";const _wordCharOrDot="[^"+_RESERVED_CHARS_RE.replace("\\.","")+"]";const _directoryRe=/((?:WC+[\/:])*)/.source.replace("WC",_wordChar);const _nodeRe=/(WCOD+)?/.source.replace("WCOD",_wordCharOrDot);const _objectRe=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",_wordChar);const _propertyRe=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",_wordChar);const _trackRe=new RegExp(""+"^"+_directoryRe+_nodeRe+_objectRe+_propertyRe+"$");const _supportedObjectNames=["material","materials","bones","map"];class Composite{constructor(targetGroup,path,optionalParsedPath){const parsedPath=optionalParsedPath||PropertyBinding.parseTrackName(path);this._targetGroup=targetGroup;this._bindings=targetGroup.subscribe_(path,parsedPath)}getValue(array,offset){this.bind();const firstValidIndex=this._targetGroup.nCachedObjects_,binding=this._bindings[firstValidIndex];if(binding!==undefined)binding.getValue(array,offset)}setValue(array,offset){const bindings=this._bindings;for(let i=this._targetGroup.nCachedObjects_,n=bindings.length;i!==n;++i){bindings[i].setValue(array,offset)}}bind(){const bindings=this._bindings;for(let i=this._targetGroup.nCachedObjects_,n=bindings.length;i!==n;++i){bindings[i].bind()}}unbind(){const bindings=this._bindings;for(let i=this._targetGroup.nCachedObjects_,n=bindings.length;i!==n;++i){bindings[i].unbind()}}}class PropertyBinding{constructor(rootNode,path,parsedPath){this.path=path;this.parsedPath=parsedPath||PropertyBinding.parseTrackName(path);this.node=PropertyBinding.findNode(rootNode,this.parsedPath.nodeName);this.rootNode=rootNode;this.getValue=this._getValue_unbound;this.setValue=this._setValue_unbound}static create(root,path,parsedPath){if(!(root&&root.isAnimationObjectGroup)){return new PropertyBinding(root,path,parsedPath)}else{return new PropertyBinding.Composite(root,path,parsedPath)}}static sanitizeNodeName(name){return name.replace(/\s/g,"_").replace(_reservedRe,"")}static parseTrackName(trackName){const matches=_trackRe.exec(trackName);if(matches===null){throw new Error("PropertyBinding: Cannot parse trackName: "+trackName)}const results={nodeName:matches[2],objectName:matches[3],objectIndex:matches[4],propertyName:matches[5],propertyIndex:matches[6]};const lastDot=results.nodeName&&results.nodeName.lastIndexOf(".");if(lastDot!==undefined&&lastDot!==-1){const objectName=results.nodeName.substring(lastDot+1);if(_supportedObjectNames.indexOf(objectName)!==-1){results.nodeName=results.nodeName.substring(0,lastDot);results.objectName=objectName}}if(results.propertyName===null||results.propertyName.length===0){throw new Error("PropertyBinding: can not parse propertyName from trackName: "+trackName)}return results}static findNode(root,nodeName){if(nodeName===undefined||nodeName===""||nodeName==="."||nodeName===-1||nodeName===root.name||nodeName===root.uuid){return root}if(root.skeleton){const bone=root.skeleton.getBoneByName(nodeName);if(bone!==undefined){return bone}}if(root.children){const searchNodeSubtree=function(children){for(let i=0;i=nCachedObjects){const lastCachedIndex=nCachedObjects++,firstActiveObject=objects[lastCachedIndex];indicesByUUID[firstActiveObject.uuid]=index;objects[index]=firstActiveObject;indicesByUUID[uuid]=lastCachedIndex;objects[lastCachedIndex]=object;for(let j=0,m=nBindings;j!==m;++j){const bindingsForPath=bindings[j],firstActive=bindingsForPath[lastCachedIndex],binding=bindingsForPath[index];bindingsForPath[index]=firstActive;bindingsForPath[lastCachedIndex]=binding}}}this.nCachedObjects_=nCachedObjects}uncache(){const objects=this._objects,indicesByUUID=this._indicesByUUID,bindings=this._bindings,nBindings=bindings.length;let nCachedObjects=this.nCachedObjects_,nObjects=objects.length;for(let i=0,n=arguments.length;i!==n;++i){const object=arguments[i],uuid=object.uuid,index=indicesByUUID[uuid];if(index!==undefined){delete indicesByUUID[uuid];if(index0){indicesByUUID[lastObject.uuid]=index}objects[index]=lastObject;objects.pop();for(let j=0,m=nBindings;j!==m;++j){const bindingsForPath=bindings[j];bindingsForPath[index]=bindingsForPath[lastIndex];bindingsForPath.pop()}}}}this.nCachedObjects_=nCachedObjects}subscribe_(path,parsedPath){const indicesByPath=this._bindingsIndicesByPath;let index=indicesByPath[path];const bindings=this._bindings;if(index!==undefined)return bindings[index];const paths=this._paths,parsedPaths=this._parsedPaths,objects=this._objects,nObjects=objects.length,nCachedObjects=this.nCachedObjects_,bindingsForPath=new Array(nObjects);index=bindings.length;indicesByPath[path]=index;paths.push(path);parsedPaths.push(parsedPath);bindings.push(bindingsForPath);for(let i=nCachedObjects,n=objects.length;i!==n;++i){const object=objects[i];bindingsForPath[i]=new PropertyBinding(object,path,parsedPath)}return bindingsForPath}unsubscribe_(path){const indicesByPath=this._bindingsIndicesByPath,index=indicesByPath[path];if(index!==undefined){const paths=this._paths,parsedPaths=this._parsedPaths,bindings=this._bindings,lastBindingsIndex=bindings.length-1,lastBindings=bindings[lastBindingsIndex],lastBindingsPath=path[lastBindingsIndex];indicesByPath[lastBindingsPath]=index;bindings[index]=lastBindings;bindings.pop();parsedPaths[index]=parsedPaths[lastBindingsIndex];parsedPaths.pop();paths[index]=paths[lastBindingsIndex];paths.pop()}}}class AnimationAction{constructor(mixer,clip,localRoot=null,blendMode=clip.blendMode){this._mixer=mixer;this._clip=clip;this._localRoot=localRoot;this.blendMode=blendMode;const tracks=clip.tracks,nTracks=tracks.length,interpolants=new Array(nTracks);const interpolantSettings={endingStart:ZeroCurvatureEnding,endingEnd:ZeroCurvatureEnding};for(let i=0;i!==nTracks;++i){const interpolant=tracks[i].createInterpolant(null);interpolants[i]=interpolant;interpolant.settings=interpolantSettings}this._interpolantSettings=interpolantSettings;this._interpolants=interpolants;this._propertyBindings=new Array(nTracks);this._cacheIndex=null;this._byClipCacheIndex=null;this._timeScaleInterpolant=null;this._weightInterpolant=null;this.loop=LoopRepeat;this._loopCount=-1;this._startTime=null;this.time=0;this.timeScale=1;this._effectiveTimeScale=1;this.weight=1;this._effectiveWeight=1;this.repetitions=Infinity;this.paused=false;this.enabled=true;this.clampWhenFinished=false;this.zeroSlopeAtStart=true;this.zeroSlopeAtEnd=true}play(){this._mixer._activateAction(this);return this}stop(){this._mixer._deactivateAction(this);return this.reset()}reset(){this.paused=false;this.enabled=true;this.time=0;this._loopCount=-1;this._startTime=null;return this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(time){this._startTime=time;return this}setLoop(mode,repetitions){this.loop=mode;this.repetitions=repetitions;return this}setEffectiveWeight(weight){this.weight=weight;this._effectiveWeight=this.enabled?weight:0;return this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(duration){return this._scheduleFading(duration,0,1)}fadeOut(duration){return this._scheduleFading(duration,1,0)}crossFadeFrom(fadeOutAction,duration,warp){fadeOutAction.fadeOut(duration);this.fadeIn(duration);if(warp){const fadeInDuration=this._clip.duration,fadeOutDuration=fadeOutAction._clip.duration,startEndRatio=fadeOutDuration/fadeInDuration,endStartRatio=fadeInDuration/fadeOutDuration;fadeOutAction.warp(1,startEndRatio,duration);this.warp(endStartRatio,1,duration)}return this}crossFadeTo(fadeInAction,duration,warp){return fadeInAction.crossFadeFrom(this,duration,warp)}stopFading(){const weightInterpolant=this._weightInterpolant;if(weightInterpolant!==null){this._weightInterpolant=null;this._mixer._takeBackControlInterpolant(weightInterpolant)}return this}setEffectiveTimeScale(timeScale){this.timeScale=timeScale;this._effectiveTimeScale=this.paused?0:timeScale;return this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(duration){this.timeScale=this._clip.duration/duration;return this.stopWarping()}syncWith(action){this.time=action.time;this.timeScale=action.timeScale;return this.stopWarping()}halt(duration){return this.warp(this._effectiveTimeScale,0,duration)}warp(startTimeScale,endTimeScale,duration){const mixer=this._mixer,now=mixer.time,timeScale=this.timeScale;let interpolant=this._timeScaleInterpolant;if(interpolant===null){interpolant=mixer._lendControlInterpolant();this._timeScaleInterpolant=interpolant}const times=interpolant.parameterPositions,values=interpolant.sampleValues;times[0]=now;times[1]=now+duration;values[0]=startTimeScale/timeScale;values[1]=endTimeScale/timeScale;return this}stopWarping(){const timeScaleInterpolant=this._timeScaleInterpolant;if(timeScaleInterpolant!==null){this._timeScaleInterpolant=null;this._mixer._takeBackControlInterpolant(timeScaleInterpolant)}return this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(time,deltaTime,timeDirection,accuIndex){if(!this.enabled){this._updateWeight(time);return}const startTime=this._startTime;if(startTime!==null){const timeRunning=(time-startTime)*timeDirection;if(timeRunning<0||timeDirection===0){deltaTime=0}else{this._startTime=null;deltaTime=timeDirection*timeRunning}}deltaTime*=this._updateTimeScale(time);const clipTime=this._updateTime(deltaTime);const weight=this._updateWeight(time);if(weight>0){const interpolants=this._interpolants;const propertyMixers=this._propertyBindings;switch(this.blendMode){case AdditiveAnimationBlendMode:for(let j=0,m=interpolants.length;j!==m;++j){interpolants[j].evaluate(clipTime);propertyMixers[j].accumulateAdditive(weight)}break;case NormalAnimationBlendMode:default:for(let j=0,m=interpolants.length;j!==m;++j){interpolants[j].evaluate(clipTime);propertyMixers[j].accumulate(accuIndex,weight)}}}}_updateWeight(time){let weight=0;if(this.enabled){weight=this.weight;const interpolant=this._weightInterpolant;if(interpolant!==null){const interpolantValue=interpolant.evaluate(time)[0];weight*=interpolantValue;if(time>interpolant.parameterPositions[1]){this.stopFading();if(interpolantValue===0){this.enabled=false}}}}this._effectiveWeight=weight;return weight}_updateTimeScale(time){let timeScale=0;if(!this.paused){timeScale=this.timeScale;const interpolant=this._timeScaleInterpolant;if(interpolant!==null){const interpolantValue=interpolant.evaluate(time)[0];timeScale*=interpolantValue;if(time>interpolant.parameterPositions[1]){this.stopWarping();if(timeScale===0){this.paused=true}else{this.timeScale=timeScale}}}}this._effectiveTimeScale=timeScale;return timeScale}_updateTime(deltaTime){const duration=this._clip.duration;const loop=this.loop;let time=this.time+deltaTime;let loopCount=this._loopCount;const pingPong=loop===LoopPingPong;if(deltaTime===0){if(loopCount===-1)return time;return pingPong&&(loopCount&1)===1?duration-time:time}if(loop===LoopOnce){if(loopCount===-1){this._loopCount=0;this._setEndings(true,true,false)}handle_stop:{if(time>=duration){time=duration}else if(time<0){time=0}else{this.time=time;break handle_stop}if(this.clampWhenFinished)this.paused=true;else this.enabled=false;this.time=time;this._mixer.dispatchEvent({type:"finished",action:this,direction:deltaTime<0?-1:1})}}else{if(loopCount===-1){if(deltaTime>=0){loopCount=0;this._setEndings(true,this.repetitions===0,pingPong)}else{this._setEndings(this.repetitions===0,true,pingPong)}}if(time>=duration||time<0){const loopDelta=Math.floor(time/duration);time-=duration*loopDelta;loopCount+=Math.abs(loopDelta);const pending=this.repetitions-loopCount;if(pending<=0){if(this.clampWhenFinished)this.paused=true;else this.enabled=false;time=deltaTime>0?duration:0;this.time=time;this._mixer.dispatchEvent({type:"finished",action:this,direction:deltaTime>0?1:-1})}else{if(pending===1){const atStart=deltaTime<0;this._setEndings(atStart,!atStart,pingPong)}else{this._setEndings(false,false,pingPong)}this._loopCount=loopCount;this.time=time;this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:loopDelta})}}else{this.time=time}if(pingPong&&(loopCount&1)===1){return duration-time}}return time}_setEndings(atStart,atEnd,pingPong){const settings=this._interpolantSettings;if(pingPong){settings.endingStart=ZeroSlopeEnding;settings.endingEnd=ZeroSlopeEnding}else{if(atStart){settings.endingStart=this.zeroSlopeAtStart?ZeroSlopeEnding:ZeroCurvatureEnding}else{settings.endingStart=WrapAroundEnding}if(atEnd){settings.endingEnd=this.zeroSlopeAtEnd?ZeroSlopeEnding:ZeroCurvatureEnding}else{settings.endingEnd=WrapAroundEnding}}}_scheduleFading(duration,weightNow,weightThen){const mixer=this._mixer,now=mixer.time;let interpolant=this._weightInterpolant;if(interpolant===null){interpolant=mixer._lendControlInterpolant();this._weightInterpolant=interpolant}const times=interpolant.parameterPositions,values=interpolant.sampleValues;times[0]=now;values[0]=weightNow;times[1]=now+duration;values[1]=weightThen;return this}}const _controlInterpolantsResultBuffer=new Float32Array(1);class AnimationMixer extends EventDispatcher{constructor(root){super();this._root=root;this._initMemoryManager();this._accuIndex=0;this.time=0;this.timeScale=1}_bindAction(action,prototypeAction){const root=action._localRoot||this._root,tracks=action._clip.tracks,nTracks=tracks.length,bindings=action._propertyBindings,interpolants=action._interpolants,rootUuid=root.uuid,bindingsByRoot=this._bindingsByRootAndName;let bindingsByName=bindingsByRoot[rootUuid];if(bindingsByName===undefined){bindingsByName={};bindingsByRoot[rootUuid]=bindingsByName}for(let i=0;i!==nTracks;++i){const track=tracks[i],trackName=track.name;let binding=bindingsByName[trackName];if(binding!==undefined){++binding.referenceCount;bindings[i]=binding}else{binding=bindings[i];if(binding!==undefined){if(binding._cacheIndex===null){++binding.referenceCount;this._addInactiveBinding(binding,rootUuid,trackName)}continue}const path=prototypeAction&&prototypeAction._propertyBindings[i].binding.parsedPath;binding=new PropertyMixer(PropertyBinding.create(root,trackName,path),track.ValueTypeName,track.getValueSize());++binding.referenceCount;this._addInactiveBinding(binding,rootUuid,trackName);bindings[i]=binding}interpolants[i].resultBuffer=binding.buffer}}_activateAction(action){if(!this._isActiveAction(action)){if(action._cacheIndex===null){const rootUuid=(action._localRoot||this._root).uuid,clipUuid=action._clip.uuid,actionsForClip=this._actionsByClip[clipUuid];this._bindAction(action,actionsForClip&&actionsForClip.knownActions[0]);this._addInactiveAction(action,clipUuid,rootUuid)}const bindings=action._propertyBindings;for(let i=0,n=bindings.length;i!==n;++i){const binding=bindings[i];if(binding.useCount++===0){this._lendBinding(binding);binding.saveOriginalState()}}this._lendAction(action)}}_deactivateAction(action){if(this._isActiveAction(action)){const bindings=action._propertyBindings;for(let i=0,n=bindings.length;i!==n;++i){const binding=bindings[i];if(--binding.useCount===0){binding.restoreOriginalState();this._takeBackBinding(binding)}}this._takeBackAction(action)}}_initMemoryManager(){this._actions=[];this._nActiveActions=0;this._actionsByClip={};this._bindings=[];this._nActiveBindings=0;this._bindingsByRootAndName={};this._controlInterpolants=[];this._nActiveControlInterpolants=0;const scope=this;this.stats={actions:{get total(){return scope._actions.length},get inUse(){return scope._nActiveActions}},bindings:{get total(){return scope._bindings.length},get inUse(){return scope._nActiveBindings}},controlInterpolants:{get total(){return scope._controlInterpolants.length},get inUse(){return scope._nActiveControlInterpolants}}}}_isActiveAction(action){const index=action._cacheIndex;return index!==null&&index=0;--i){actions[i].stop()}return this}update(deltaTime){deltaTime*=this.timeScale;const actions=this._actions,nActions=this._nActiveActions,time=this.time+=deltaTime,timeDirection=Math.sign(deltaTime),accuIndex=this._accuIndex^=1;for(let i=0;i!==nActions;++i){const action=actions[i];action._update(time,deltaTime,timeDirection,accuIndex)}const bindings=this._bindings,nBindings=this._nActiveBindings;for(let i=0;i!==nBindings;++i){bindings[i].apply(accuIndex)}return this}setTime(timeInSeconds){this.time=0;for(let i=0;ithis.max.x||point.ythis.max.y?false:true}containsBox(box){return this.min.x<=box.min.x&&box.max.x<=this.max.x&&this.min.y<=box.min.y&&box.max.y<=this.max.y}getParameter(point,target){return target.set((point.x-this.min.x)/(this.max.x-this.min.x),(point.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(box){return box.max.xthis.max.x||box.max.ythis.max.y?false:true}clampPoint(point,target){return target.copy(point).clamp(this.min,this.max)}distanceToPoint(point){return this.clampPoint(point,_vector$4).distanceTo(point)}intersect(box){this.min.max(box.min);this.max.min(box.max);if(this.isEmpty())this.makeEmpty();return this}union(box){this.min.min(box.min);this.max.max(box.max);return this}translate(offset){this.min.add(offset);this.max.add(offset);return this}equals(box){return box.min.equals(this.min)&&box.max.equals(this.max)}}const _startP=new Vector3;const _startEnd=new Vector3;class Line3{constructor(start=new Vector3,end=new Vector3){this.start=start;this.end=end}set(start,end){this.start.copy(start);this.end.copy(end);return this}copy(line){this.start.copy(line.start);this.end.copy(line.end);return this}getCenter(target){return target.addVectors(this.start,this.end).multiplyScalar(0.5)}delta(target){return target.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(t,target){return this.delta(target).multiplyScalar(t).add(this.start)}closestPointToPointParameter(point,clampToLine){_startP.subVectors(point,this.start);_startEnd.subVectors(this.end,this.start);const startEnd2=_startEnd.dot(_startEnd);const startEnd_startP=_startEnd.dot(_startP);let t=startEnd_startP/startEnd2;if(clampToLine){t=clamp(t,0,1)}return t}closestPointToPoint(point,clampToLine,target){const t=this.closestPointToPointParameter(point,clampToLine);return this.delta(target).multiplyScalar(t).add(this.start)}applyMatrix4(matrix){this.start.applyMatrix4(matrix);this.end.applyMatrix4(matrix);return this}equals(line){return line.start.equals(this.start)&&line.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const _vector$3=new Vector3;class SpotLightHelper extends Object3D{constructor(light,color){super();this.light=light;this.matrixAutoUpdate=false;this.color=color;this.type="SpotLightHelper";const geometry=new BufferGeometry;const positions=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let i=0,j=1,l=32;i1){for(let i=0;i0.99999){this.quaternion.set(0,0,0,1)}else if(dir.y<-0.99999){this.quaternion.set(1,0,0,0)}else{_axis.set(dir.z,0,-dir.x).normalize();const radians=Math.acos(dir.y);this.quaternion.setFromAxisAngle(_axis,radians)}}setLength(length,headLength=length*0.2,headWidth=headLength*0.2){this.line.scale.set(1,Math.max(0.0001,length-headLength),1);this.line.updateMatrix();this.cone.scale.set(headWidth,headLength,headWidth);this.cone.position.y=length;this.cone.updateMatrix()}setColor(color){this.line.material.color.set(color);this.cone.material.color.set(color)}copy(source){super.copy(source,false);this.line.copy(source.line);this.cone.copy(source.cone);return this}dispose(){this.line.geometry.dispose();this.line.material.dispose();this.cone.geometry.dispose();this.cone.material.dispose()}}class AxesHelper extends LineSegments{constructor(size=1){const vertices=[0,0,0,size,0,0,0,0,0,0,size,0,0,0,0,0,0,size];const colors=[1,0,0,1,0.6,0,0,1,0,0.6,1,0,0,0,1,0,0.6,1];const geometry=new BufferGeometry;geometry.setAttribute("position",new Float32BufferAttribute(vertices,3));geometry.setAttribute("color",new Float32BufferAttribute(colors,3));const material=new LineBasicMaterial({vertexColors:true,toneMapped:false});super(geometry,material);this.type="AxesHelper"}setColors(xAxisColor,yAxisColor,zAxisColor){const color=new Color;const array=this.geometry.attributes.color.array;color.set(xAxisColor);color.toArray(array,0);color.toArray(array,3);color.set(yAxisColor);color.toArray(array,6);color.toArray(array,9);color.set(zAxisColor);color.toArray(array,12);color.toArray(array,15);this.geometry.attributes.color.needsUpdate=true;return this}dispose(){this.geometry.dispose();this.material.dispose()}}class ShapePath{constructor(){this.type="ShapePath";this.color=new Color;this.subPaths=[];this.currentPath=null}moveTo(x,y){this.currentPath=new Path;this.subPaths.push(this.currentPath);this.currentPath.moveTo(x,y);return this}lineTo(x,y){this.currentPath.lineTo(x,y);return this}quadraticCurveTo(aCPx,aCPy,aX,aY){this.currentPath.quadraticCurveTo(aCPx,aCPy,aX,aY);return this}bezierCurveTo(aCP1x,aCP1y,aCP2x,aCP2y,aX,aY){this.currentPath.bezierCurveTo(aCP1x,aCP1y,aCP2x,aCP2y,aX,aY);return this}splineThru(pts){this.currentPath.splineThru(pts);return this}toShapes(isCCW){function toShapesNoHoles(inSubpaths){const shapes=[];for(let i=0,l=inSubpaths.length;iNumber.EPSILON){if(edgeDy<0){edgeLowPt=inPolygon[q];edgeDx=-edgeDx;edgeHighPt=inPolygon[p];edgeDy=-edgeDy}if(inPt.yedgeHighPt.y)continue;if(inPt.y===edgeLowPt.y){if(inPt.x===edgeLowPt.x)return true}else{const perpEdge=edgeDy*(inPt.x-edgeLowPt.x)-edgeDx*(inPt.y-edgeLowPt.y);if(perpEdge===0)return true;if(perpEdge<0)continue;inside=!inside}}else{if(inPt.y!==edgeLowPt.y)continue;if(edgeHighPt.x<=inPt.x&&inPt.x<=edgeLowPt.x||edgeLowPt.x<=inPt.x&&inPt.x<=edgeHighPt.x)return true}}return inside}const isClockWise=ShapeUtils.isClockWise;const subPaths=this.subPaths;if(subPaths.length===0)return[];let solid,tmpPath,tmpShape;const shapes=[];if(subPaths.length===1){tmpPath=subPaths[0];tmpShape=new Shape;tmpShape.curves=tmpPath.curves;shapes.push(tmpShape);return shapes}let holesFirst=!isClockWise(subPaths[0].getPoints());holesFirst=isCCW?!holesFirst:holesFirst;const betterShapeHoles=[];const newShapes=[];let newShapeHoles=[];let mainIdx=0;let tmpPoints;newShapes[mainIdx]=undefined;newShapeHoles[mainIdx]=[];for(let i=0,l=subPaths.length;i1){let ambiguous=false;let toChange=0;for(let sIdx=0,sLen=newShapes.length;sIdx0&&ambiguous===false){newShapeHoles=betterShapeHoles}}let tmpHoles;for(let i=0,il=newShapes.length;i65535){return new Uint32Array(new BufferConstructor(4*vertexCount))}else{return new Uint16Array(new BufferConstructor(2*vertexCount))}}function ensureIndex(geo,options){if(!geo.index){const vertexCount=geo.attributes.position.count;const BufferConstructor=options.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;const index=getIndexArray(vertexCount,BufferConstructor);geo.setIndex(new three.BufferAttribute(index,1));for(let i=0;ia-b);for(let i=0;ia.offset-b.offset);const finalGroup=groups[groups.length-1];finalGroup.count=Math.min(vertexCount-finalGroup.offset,finalGroup.count);let total=0;groups.forEach(({count})=>total+=count);return vertexCount!==total}function getBounds(triangleBounds,offset,count,target,centroidTarget){let minx=Infinity;let miny=Infinity;let minz=Infinity;let maxx=-Infinity;let maxy=-Infinity;let maxz=-Infinity;let cminx=Infinity;let cminy=Infinity;let cminz=Infinity;let cmaxx=-Infinity;let cmaxy=-Infinity;let cmaxz=-Infinity;for(let i=offset*6,end=(offset+count)*6;imaxx)maxx=rx;if(cxcmaxx)cmaxx=cx;const cy=triangleBounds[i+2];const hy=triangleBounds[i+3];const ly=cy-hy;const ry=cy+hy;if(lymaxy)maxy=ry;if(cycmaxy)cmaxy=cy;const cz=triangleBounds[i+4];const hz=triangleBounds[i+5];const lz=cz-hz;const rz=cz+hz;if(lzmaxz)maxz=rz;if(czcmaxz)cmaxz=cz}target[0]=minx;target[1]=miny;target[2]=minz;target[3]=maxx;target[4]=maxy;target[5]=maxz;centroidTarget[0]=cminx;centroidTarget[1]=cminy;centroidTarget[2]=cminz;centroidTarget[3]=cmaxx;centroidTarget[4]=cmaxy;centroidTarget[5]=cmaxz}function computeTriangleBounds(geo,target=null,offset=null,count=null){const posAttr=geo.attributes.position;const index=geo.index?geo.index.array:null;const triCount=getTriCount(geo);const normalized=posAttr.normalized;let triangleBounds;if(target===null){triangleBounds=new Float32Array(triCount*6*4);offset=0;count=triCount}else{triangleBounds=target;offset=offset||0;count=count||triCount}const posArr=posAttr.array;const bufferOffset=posAttr.offset||0;let stride=3;if(posAttr.isInterleavedBufferAttribute){stride=posAttr.data.stride}const getters=["getX","getY","getZ"];for(let tri=offset;trimax)max=b;if(c>max)max=c;const halfExtents=(max-min)/2;const el2=el*2;triangleBounds[tri6+el2+0]=min+halfExtents;triangleBounds[tri6+el2+1]=halfExtents+(Math.abs(min)+halfExtents)*FLOAT32_EPSILON}}return triangleBounds}function arrayToBox(nodeIndex32,array,target){target.min.x=array[nodeIndex32];target.min.y=array[nodeIndex32+1];target.min.z=array[nodeIndex32+2];target.max.x=array[nodeIndex32+3];target.max.y=array[nodeIndex32+4];target.max.z=array[nodeIndex32+5];return target}function makeEmptyBounds(target){target[0]=target[1]=target[2]=Infinity;target[3]=target[4]=target[5]=-Infinity}function getLongestEdgeIndex(bounds){let splitDimIdx=-1;let splitDist=-Infinity;for(let i=0;i<3;i++){const dist=bounds[i+3]-bounds[i];if(dist>splitDist){splitDist=dist;splitDimIdx=i}}return splitDimIdx}function copyBounds(source,target){target.set(source)}function unionBounds(a,b,target){let aVal,bVal;for(let d=0;d<3;d++){const d3=d+3;aVal=a[d];bVal=b[d];target[d]=aValbVal?aVal:bVal}}function expandByTriangleBounds(startIndex,triangleBounds,bounds){for(let d=0;d<3;d++){const tCenter=triangleBounds[startIndex+2*d];const tHalf=triangleBounds[startIndex+2*d+1];const tMin=tCenter-tHalf;const tMax=tCenter+tHalf;if(tMinbounds[d+3]){bounds[d+3]=tMax}}}function computeSurfaceArea(bounds){const d0=bounds[3]-bounds[0];const d1=bounds[4]-bounds[1];const d2=bounds[5]-bounds[2];return 2*(d0*d1+d1*d2+d2*d0)}const BIN_COUNT=32;const binsSort=(a,b)=>a.candidate-b.candidate;const sahBins=new Array(BIN_COUNT).fill().map(()=>{return{count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0}});const leftBounds=new Float32Array(6);function getOptimalSplit(nodeBoundingData,centroidBoundingData,triangleBounds,offset,count,strategy){let axis=-1;let pos=0;if(strategy===CENTER){axis=getLongestEdgeIndex(centroidBoundingData);if(axis!==-1){pos=(centroidBoundingData[axis]+centroidBoundingData[axis+3])/2}}else if(strategy===AVERAGE){axis=getLongestEdgeIndex(nodeBoundingData);if(axis!==-1){pos=getAverage(triangleBounds,offset,count,axis)}}else if(strategy===SAH){const rootSurfaceArea=computeSurfaceArea(nodeBoundingData);let bestCost=TRIANGLE_INTERSECT_COST*count;const cStart=offset*6;const cEnd=(offset+count)*6;for(let a=0;a<3;a++){const axisLeft=centroidBoundingData[a];const axisRight=centroidBoundingData[a+3];const axisLength=axisRight-axisLeft;const binWidth=axisLength/BIN_COUNT;if(count=bin.candidate){expandByTriangleBounds(c,triangleBounds,bin.rightCacheBounds)}else{expandByTriangleBounds(c,triangleBounds,bin.leftCacheBounds);bin.count++}}}for(let bi=0;bi=BIN_COUNT)binIndex=BIN_COUNT-1;const bin=sahBins[binIndex];bin.count++;expandByTriangleBounds(c,triangleBounds,bin.bounds)}const lastBin=sahBins[BIN_COUNT-1];copyBounds(lastBin.bounds,lastBin.rightCacheBounds);for(let i=BIN_COUNT-2;i>=0;i--){const bin=sahBins[i];const nextBin=sahBins[i+1];unionBounds(bin.bounds,nextBin.rightCacheBounds,bin.rightCacheBounds)}let leftCount=0;for(let i=0;i=pos){right--}if(left=pos){right--}if(leftMAX_POINTER){throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.")}uint32Array[stride4Offset+6]=nextUnusedPointer/4;nextUnusedPointer=_populateBuffer(nextUnusedPointer,right);uint32Array[stride4Offset+7]=splitAxis;return nextUnusedPointer}}function generateIndirectBuffer(geometry,useSharedArrayBuffer){const triCount=(geometry.index?geometry.index.count:geometry.attributes.position.count)/3;const useUint32=triCount>2**16;const byteCount=useUint32?4:2;const buffer=useSharedArrayBuffer?new SharedArrayBuffer(triCount*byteCount):new ArrayBuffer(triCount*byteCount);const indirectBuffer=useUint32?new Uint32Array(buffer):new Uint16Array(buffer);for(let i=0,l=indirectBuffer.length;i=maxDepth){reachedMaxDepth=true;if(verbose){console.warn(`MeshBVH: Max depth of ${maxDepth} reached when generating BVH. Consider increasing maxDepth.`);console.warn(geometry)}}if(count<=maxLeafTris||depth>=maxDepth){triggerProgress(offset+count);node.offset=offset;node.count=count;return node}const split=getOptimalSplit(node.boundingData,centroidBoundingData,triangleBounds,offset,count,strategy);if(split.axis===-1){triggerProgress(offset+count);node.offset=offset;node.count=count;return node}const splitOffset=partionFunc(indirectBuffer,indexArray,triangleBounds,offset,count,split);if(splitOffset===offset||splitOffset===offset+count){triggerProgress(offset+count);node.offset=offset;node.count=count}else{node.splitAxis=split.axis;const left=new MeshBVHNode;const lstart=offset;const lcount=splitOffset-offset;node.left=left;getBounds(triangleBounds,lstart,lcount,left.boundingData,cacheCentroidBoundingData);splitNode(left,lstart,lcount,cacheCentroidBoundingData,depth+1);const right=new MeshBVHNode;const rstart=splitOffset;const rcount=count-lcount;node.right=right;getBounds(triangleBounds,rstart,rcount,right.boundingData,cacheCentroidBoundingData);splitNode(right,rstart,rcount,cacheCentroidBoundingData,depth+1)}return node}}function buildPackedTree(bvh,options){const geometry=bvh.geometry;if(options.indirect){bvh._indirectBuffer=generateIndirectBuffer(geometry,options.useSharedArrayBuffer);if(hasGroupGaps(geometry)&&!options.verbose){console.warn("MeshBVH: Provided geometry contains groups that do not fully span the vertex contents while using the \"indirect\" option. "+"BVH may incorrectly report intersections on unrendered portions of the geometry.")}}if(!bvh._indirectBuffer){ensureIndex(geometry,options)}const BufferConstructor=options.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;const triangleBounds=computeTriangleBounds(geometry);const geometryRanges=options.indirect?getFullGeometryRange(geometry):getRootIndexRanges(geometry);bvh._roots=geometryRanges.map(range=>{const root=buildTree(bvh,triangleBounds,range.offset,range.count,options);const nodeCount=countNodes(root);const buffer=new BufferConstructor(BYTES_PER_NODE*nodeCount);populateBuffer(0,root,buffer);return buffer})}class SeparatingAxisBounds{constructor(){this.min=Infinity;this.max=-Infinity}setFromPointsField(points,field){let min=Infinity;let max=-Infinity;for(let i=0,l=points.length;imax?val:max}this.min=min;this.max=max}setFromPoints(axis,points){let min=Infinity;let max=-Infinity;for(let i=0,l=points.length;imax?val:max}this.min=min;this.max=max}isSeparated(other){return this.min>other.max||other.min>this.max}}SeparatingAxisBounds.prototype.setFromBox=function(){const p=new three.Vector3;return function setFromBox(axis,box){const boxMin=box.min;const boxMax=box.max;let min=Infinity;let max=-Infinity;for(let x=0;x<=1;x++){for(let y=0;y<=1;y++){for(let z=0;z<=1;z++){p.x=boxMin.x*x+boxMax.x*(1-x);p.y=boxMin.y*y+boxMax.y*(1-y);p.z=boxMin.z*z+boxMax.z*(1-z);const val=axis.dot(p);min=Math.min(val,min);max=Math.max(val,max)}}}this.min=min;this.max=max}}();const areIntersecting=function(){const cacheSatBounds=new SeparatingAxisBounds;return function areIntersecting(shape1,shape2){const points1=shape1.points;const satAxes1=shape1.satAxes;const satBounds1=shape1.satBounds;const points2=shape2.points;const satAxes2=shape2.satAxes;const satBounds2=shape2.satBounds;for(let i=0;i<3;i++){const sb=satBounds1[i];const sa=satAxes1[i];cacheSatBounds.setFromPoints(sa,points2);if(sb.isSeparated(cacheSatBounds))return false}for(let i=0;i<3;i++){const sb=satBounds2[i];const sa=satAxes2[i];cacheSatBounds.setFromPoints(sa,points1);if(sb.isSeparated(cacheSatBounds))return false}}}();const closestPointLineToLine=function(){const dir1=new three.Vector3;const dir2=new three.Vector3;const v02=new three.Vector3;return function closestPointLineToLine(l1,l2,result){const v0=l1.start;const v10=dir1;const v2=l2.start;const v32=dir2;v02.subVectors(v0,v2);dir1.subVectors(l1.end,l1.start);dir2.subVectors(l2.end,l2.start);const d0232=v02.dot(v32);const d3210=v32.dot(v10);const d3232=v32.dot(v32);const d0210=v02.dot(v10);const d1010=v10.dot(v10);const denom=d1010*d3232-d3210*d3210;let d,d2;if(denom!==0){d=(d0232*d3210-d0210*d3232)/denom}else{d=0}d2=(d0232+d*d3210)/d3232;result.x=d;result.y=d2}}();const closestPointsSegmentToSegment=function(){const paramResult=new three.Vector2;const temp1=new three.Vector3;const temp2=new three.Vector3;return function closestPointsSegmentToSegment(l1,l2,target1,target2){closestPointLineToLine(l1,l2,paramResult);let d=paramResult.x;let d2=paramResult.y;if(d>=0&&d<=1&&d2>=0&&d2<=1){l1.at(d,target1);l2.at(d2,target2);return}else if(d>=0&&d<=1){if(d2<0){l2.at(0,target2)}else{l2.at(1,target2)}l1.closestPointToPoint(target2,true,target1);return}else if(d2>=0&&d2<=1){if(d<0){l1.at(0,target1)}else{l1.at(1,target1)}l2.closestPointToPoint(target1,true,target2);return}else{let p;if(d<0){p=l1.start}else{p=l1.end}let p2;if(d2<0){p2=l2.start}else{p2=l2.end}const closestPoint=temp1;const closestPoint2=temp2;l1.closestPointToPoint(p2,true,temp1);l2.closestPointToPoint(p,true,temp2);if(closestPoint.distanceToSquared(p2)<=closestPoint2.distanceToSquared(p)){target1.copy(closestPoint);target2.copy(p2);return}else{target1.copy(p);target2.copy(closestPoint2);return}}}}();const sphereIntersectTriangle=function(){const closestPointTemp=new three.Vector3;const projectedPointTemp=new three.Vector3;const planeTemp=new three.Plane;const lineTemp=new three.Line3;return function sphereIntersectTriangle(sphere,triangle){const{radius,center}=sphere;const{a,b,c}=triangle;lineTemp.start=a;lineTemp.end=b;const closestPoint1=lineTemp.closestPointToPoint(center,true,closestPointTemp);if(closestPoint1.distanceTo(center)<=radius)return true;lineTemp.start=a;lineTemp.end=c;const closestPoint2=lineTemp.closestPointToPoint(center,true,closestPointTemp);if(closestPoint2.distanceTo(center)<=radius)return true;lineTemp.start=b;lineTemp.end=c;const closestPoint3=lineTemp.closestPointToPoint(center,true,closestPointTemp);if(closestPoint3.distanceTo(center)<=radius)return true;const plane=triangle.getPlane(planeTemp);const dp=Math.abs(plane.distanceToPoint(center));if(dp<=radius){const pp=plane.projectPoint(center,projectedPointTemp);const cp=triangle.containsPoint(pp);if(cp)return true}return false}}();const ZERO_EPSILON=1e-15;function isNearZero(value){return Math.abs(value)new three.Vector3);this.satBounds=new Array(4).fill().map(()=>new SeparatingAxisBounds);this.points=[this.a,this.b,this.c];this.sphere=new three.Sphere;this.plane=new three.Plane;this.needsUpdate=true}intersectsSphere(sphere){return sphereIntersectTriangle(sphere,this)}update(){const a=this.a;const b=this.b;const c=this.c;const points=this.points;const satAxes=this.satAxes;const satBounds=this.satBounds;const axis0=satAxes[0];const sab0=satBounds[0];this.getNormal(axis0);sab0.setFromPoints(axis0,points);const axis1=satAxes[1];const sab1=satBounds[1];axis1.subVectors(a,b);sab1.setFromPoints(axis1,points);const axis2=satAxes[2];const sab2=satBounds[2];axis2.subVectors(b,c);sab2.setFromPoints(axis2,points);const axis3=satAxes[3];const sab3=satBounds[3];axis3.subVectors(c,a);sab3.setFromPoints(axis3,points);this.sphere.setFromPoints(this.points);this.plane.setFromNormalAndCoplanarPoint(axis0,a);this.needsUpdate=false}}ExtendedTriangle.prototype.closestPointToSegment=function(){const point1=new three.Vector3;const point2=new three.Vector3;const edge=new three.Line3;return function distanceToSegment(segment,target1=null,target2=null){const{start,end}=segment;const points=this.points;let distSq;let closestDistanceSq=Infinity;for(let i=0;i<3;i++){const nexti=(i+1)%3;edge.start.copy(points[i]);edge.end.copy(points[nexti]);closestPointsSegmentToSegment(edge,segment,point1,point2);distSq=point1.distanceToSquared(point2);if(distSq=2){const point=startPointIntersection===1?targetEdge.start:targetEdge.end;point.copy(tempPoint);count=2;break}count++;if(count===2&&startPointIntersection===-1){break}}}return count}return function intersectsTriangle(other,target=null,suppressLog=false){if(this.needsUpdate){this.update()}if(!other.isExtendedTriangle){saTri2.copy(other);saTri2.update();other=saTri2}else if(other.needsUpdate){other.update()}const plane1=this.plane;const plane2=other.plane;if(Math.abs(plane1.normal.dot(plane2.normal))>1-1e-10){const satBounds1=this.satBounds;const satAxes1=this.satAxes;arr2[0]=other.a;arr2[1]=other.b;arr2[2]=other.c;for(let i=0;i<4;i++){const sb=satBounds1[i];const sa=satAxes1[i];cachedSatBounds.setFromPoints(sa,arr2);if(sb.isSeparated(cachedSatBounds))return false}const satBounds2=other.satBounds;const satAxes2=other.satAxes;arr1[0]=this.a;arr1[1]=this.b;arr1[2]=this.c;for(let i=0;i<4;i++){const sb=satBounds2[i];const sa=satAxes2[i];cachedSatBounds.setFromPoints(sa,arr1);if(sb.isSeparated(cachedSatBounds))return false}for(let i=0;i<4;i++){const sa1=satAxes1[i];for(let i2=0;i2<4;i2++){const sa2=satAxes2[i2];cachedAxis.crossVectors(sa1,sa2);cachedSatBounds.setFromPoints(cachedAxis,arr1);cachedSatBounds2.setFromPoints(cachedAxis,arr2);if(cachedSatBounds.isSeparated(cachedSatBounds2))return false}}if(target){if(!suppressLog){console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0.")}target.start.set(0,0,0);target.end.set(0,0,0)}return true}else{const count1=triIntersectPlane(this,plane2,edge1);if(count1===1&&other.containsPoint(edge1.end)){if(target){target.start.copy(edge1.end);target.end.copy(edge1.end)}return true}else if(count1!==2){return false}const count2=triIntersectPlane(other,plane1,edge2);if(count2===1&&this.containsPoint(edge2.end)){if(target){target.start.copy(edge2.end);target.end.copy(edge2.end)}return true}else if(count2!==2){return false}edge1.delta(dir1);edge2.delta(dir2);if(dir1.dot(dir2)<0){let tmp=edge2.start;edge2.start=edge2.end;edge2.end=tmp}const s1=edge1.start.dot(dir1);const e1=edge1.end.dot(dir1);const s2=edge2.start.dot(dir1);const e2=edge2.end.dot(dir1);const separated1=e10){target.start.copy(edge1.start)}else{target.start.copy(edge2.start)}tempDir.subVectors(edge1.end,edge2.end);if(tempDir.dot(dir1)<0){target.end.copy(edge1.end)}else{target.end.copy(edge2.end)}}return true}}}();ExtendedTriangle.prototype.distanceToPoint=function(){const target=new three.Vector3;return function distanceToPoint(point){this.closestPointToPoint(point,target);return point.distanceTo(target)}}();ExtendedTriangle.prototype.distanceToTriangle=function(){const point=new three.Vector3;const point2=new three.Vector3;const cornerFields=["a","b","c"];const line1=new three.Line3;const line2=new three.Line3;return function distanceToTriangle(other,target1=null,target2=null){const lineTarget=target1||target2?line1:null;if(this.intersectsTriangle(other,lineTarget)){if(target1||target2){if(target1)lineTarget.getCenter(target1);if(target2)lineTarget.getCenter(target2)}return 0}let closestDistanceSq=Infinity;for(let i=0;i<3;i++){let dist;const field=cornerFields[i];const otherVec=other[field];this.closestPointToPoint(otherVec,point);dist=otherVec.distanceToSquared(point);if(distnew three.Vector3);this.satAxes=new Array(3).fill().map(()=>new three.Vector3);this.satBounds=new Array(3).fill().map(()=>new SeparatingAxisBounds);this.alignedSatBounds=new Array(3).fill().map(()=>new SeparatingAxisBounds);this.needsUpdate=false;if(min)this.min.copy(min);if(max)this.max.copy(max);if(matrix)this.matrix.copy(matrix)}set(min,max,matrix){this.min.copy(min);this.max.copy(max);this.matrix.copy(matrix);this.needsUpdate=true}copy(other){this.min.copy(other.min);this.max.copy(other.max);this.matrix.copy(other.matrix);this.needsUpdate=true}}OrientedBox.prototype.update=function(){return function update(){const matrix=this.matrix;const min=this.min;const max=this.max;const points=this.points;for(let x=0;x<=1;x++){for(let y=0;y<=1;y++){for(let z=0;z<=1;z++){const i=(1<<0)*x|(1<<1)*y|(1<<2)*z;const v=points[i];v.x=x?max.x:min.x;v.y=y?max.y:min.y;v.z=z?max.z:min.z;v.applyMatrix4(matrix)}}}const satBounds=this.satBounds;const satAxes=this.satAxes;const minVec=points[0];for(let i=0;i<3;i++){const axis=satAxes[i];const sb=satBounds[i];const index=1<new three.Line3);const segments2=new Array(12).fill().map(()=>new three.Line3);const point1=new three.Vector3;const point2=new three.Vector3;return function distanceToBox(box,threshold=0,target1=null,target2=null){if(this.needsUpdate){this.update()}if(this.intersectsBox(box)){if(target1||target2){box.getCenter(point2);this.closestPointToPoint(point2,point1);box.closestPointToPoint(point1,point2);if(target1)target1.copy(point1);if(target2)target2.copy(point2)}return 0}const threshold2=threshold*threshold;const min=box.min;const max=box.max;const points=this.points;let closestDistanceSq=Infinity;for(let i=0;i<8;i++){const p=points[i];point2.copy(p).clamp(min,max);const dist=p.distanceToSquared(point2);if(distnew ExtendedTriangle)}}const ExtendedTrianglePool=new ExtendedTrianglePoolBase;class _BufferStack{constructor(){this.float32Array=null;this.uint16Array=null;this.uint32Array=null;const stack=[];let prevBuffer=null;this.setBuffer=buffer=>{if(prevBuffer){stack.push(prevBuffer)}prevBuffer=buffer;this.float32Array=new Float32Array(buffer);this.uint16Array=new Uint16Array(buffer);this.uint32Array=new Uint32Array(buffer)};this.clearBuffer=()=>{prevBuffer=null;this.float32Array=null;this.uint16Array=null;this.uint32Array=null;if(stack.length!==0){this.setBuffer(stack.pop())}}}}const BufferStack=new _BufferStack;let _box1$1,_box2$1;const boxStack=[];const boxPool=new PrimitivePool(()=>new three.Box3);function shapecast(bvh,root,intersectsBounds,intersectsRange,boundsTraverseOrder,byteOffset){_box1$1=boxPool.getPrimitive();_box2$1=boxPool.getPrimitive();boxStack.push(_box1$1,_box2$1);BufferStack.setBuffer(bvh._roots[root]);const result=shapecastTraverse(0,bvh.geometry,intersectsBounds,intersectsRange,boundsTraverseOrder,byteOffset);BufferStack.clearBuffer();boxPool.releasePrimitive(_box1$1);boxPool.releasePrimitive(_box2$1);boxStack.pop();boxStack.pop();const length=boxStack.length;if(length>0){_box2$1=boxStack[length-1];_box1$1=boxStack[length-2]}return result}function shapecastTraverse(nodeIndex32,geometry,intersectsBoundsFunc,intersectsRangeFunc,nodeScoreFunc=null,nodeIndexByteOffset=0,depth=0){const{float32Array,uint16Array,uint32Array}=BufferStack;let nodeIndex16=nodeIndex32*2;const isLeaf=IS_LEAF(nodeIndex16,uint16Array);if(isLeaf){const offset=OFFSET(nodeIndex32,uint32Array);const count=COUNT(nodeIndex16,uint16Array);arrayToBox(BOUNDING_DATA_INDEX(nodeIndex32),float32Array,_box1$1);return intersectsRangeFunc(offset,count,false,depth,nodeIndexByteOffset+nodeIndex32,_box1$1)}else{const left=LEFT_NODE(nodeIndex32);const right=RIGHT_NODE(nodeIndex32,uint32Array);let c1=left;let c2=right;let score1,score2;let box1,box2;if(nodeScoreFunc){box1=_box1$1;box2=_box2$1;arrayToBox(BOUNDING_DATA_INDEX(c1),float32Array,box1);arrayToBox(BOUNDING_DATA_INDEX(c2),float32Array,box2);score1=nodeScoreFunc(box1);score2=nodeScoreFunc(box2);if(score2{temp.copy(point).clamp(box.min,box.max);return temp.distanceToSquared(point)},intersectsBounds:(box,isLeaf,score)=>{return score{tri.closestPointToPoint(point,temp);const distSq=point.distanceToSquared(temp);if(distSq0){intersection.normal.multiplyScalar(-1)}}const face={a:a,b:b,c:c,normal:new three.Vector3,materialIndex:0};three.Triangle.getNormal(_vA,_vB,_vC,face.normal);intersection.face=face;intersection.faceIndex=a}return intersection}function intersectTri(geo,side,ray,tri,intersections){const triOffset=tri*3;let a=triOffset+0;let b=triOffset+1;let c=triOffset+2;const index=geo.index;if(geo.index){a=index.getX(a);b=index.getX(b);c=index.getX(c)}const{position,normal,uv,uv1}=geo.attributes;const intersection=checkBufferGeometryIntersection(ray,position,normal,uv,uv1,a,b,c,side);if(intersection){intersection.faceIndex=tri;if(intersections)intersections.push(intersection);return intersection}return null}function setTriangle(tri,i,index,pos){const ta=tri.a;const tb=tri.b;const tc=tri.c;let i0=i;let i1=i+1;let i2=i+2;if(index){i0=index.getX(i0);i1=index.getX(i1);i2=index.getX(i2)}ta.x=pos.getX(i0);ta.y=pos.getY(i0);ta.z=pos.getZ(i0);tb.x=pos.getX(i1);tb.y=pos.getY(i1);tb.z=pos.getZ(i1);tc.x=pos.getX(i2);tc.y=pos.getY(i2);tc.z=pos.getZ(i2)}const tempV1=new three.Vector3;const tempV2=new three.Vector3;const tempV3=new three.Vector3;const tempUV1=new three.Vector2;const tempUV2=new three.Vector2;const tempUV3=new three.Vector2;function getTriangleHitPointInfo(point,geometry,triangleIndex,target){const indices=geometry.getIndex().array;const positions=geometry.getAttribute("position");const uvs=geometry.getAttribute("uv");const a=indices[triangleIndex*3];const b=indices[triangleIndex*3+1];const c=indices[triangleIndex*3+2];tempV1.fromBufferAttribute(positions,a);tempV2.fromBufferAttribute(positions,b);tempV3.fromBufferAttribute(positions,c);let materialIndex=0;const groups=geometry.groups;const firstVertexIndex=triangleIndex*3;for(let i=0,l=groups.length;i=start&&firstVertexIndexmaxx)maxx=x;if(ymaxy)maxy=y;if(zmaxz)maxz=z}if(float32Array[node32Index+0]!==minx||float32Array[node32Index+1]!==miny||float32Array[node32Index+2]!==minz||float32Array[node32Index+3]!==maxx||float32Array[node32Index+4]!==maxy||float32Array[node32Index+5]!==maxz){float32Array[node32Index+0]=minx;float32Array[node32Index+1]=miny;float32Array[node32Index+2]=minz;float32Array[node32Index+3]=maxx;float32Array[node32Index+4]=maxy;float32Array[node32Index+5]=maxz;return true}else{return false}}else{const left=node32Index+8;const right=uint32Array[node32Index+6];const offsetLeft=left+byteOffset;const offsetRight=right+byteOffset;let forceChildren=force;let includesLeft=false;let includesRight=false;if(nodeIndices){if(!forceChildren){includesLeft=nodeIndices.has(offsetLeft);includesRight=nodeIndices.has(offsetRight);forceChildren=!includesLeft&&!includesRight}}else{includesLeft=true;includesRight=true}const traverseLeft=forceChildren||includesLeft;const traverseRight=forceChildren||includesRight;let leftChange=false;if(traverseLeft){leftChange=_traverse(left,byteOffset,forceChildren)}let rightChange=false;if(traverseRight){rightChange=_traverse(right,byteOffset,forceChildren)}const didChange=leftChange||rightChange;if(didChange){for(let i=0;i<3;i++){const lefti=left+i;const righti=right+i;const minLeftValue=float32Array[lefti];const maxLeftValue=float32Array[lefti+3];const minRightValue=float32Array[righti];const maxRightValue=float32Array[righti+3];float32Array[node32Index+i]=minLeftValuemaxRightValue?maxLeftValue:maxRightValue}}return didChange}}}function intersectRay(nodeIndex32,array,ray){let tmin,tmax,tymin,tymax,tzmin,tzmax;const invdirx=1/ray.direction.x,invdiry=1/ray.direction.y,invdirz=1/ray.direction.z;const ox=ray.origin.x;const oy=ray.origin.y;const oz=ray.origin.z;let minx=array[nodeIndex32];let maxx=array[nodeIndex32+3];let miny=array[nodeIndex32+1];let maxy=array[nodeIndex32+3+1];let minz=array[nodeIndex32+2];let maxz=array[nodeIndex32+3+2];if(invdirx>=0){tmin=(minx-ox)*invdirx;tmax=(maxx-ox)*invdirx}else{tmin=(maxx-ox)*invdirx;tmax=(minx-ox)*invdirx}if(invdiry>=0){tymin=(miny-oy)*invdiry;tymax=(maxy-oy)*invdiry}else{tymin=(maxy-oy)*invdiry;tymax=(miny-oy)*invdiry}if(tmin>tymax||tymin>tmax)return false;if(tymin>tmin||isNaN(tmin))tmin=tymin;if(tymax=0){tzmin=(minz-oz)*invdirz;tzmax=(maxz-oz)*invdirz}else{tzmin=(maxz-oz)*invdirz;tzmax=(minz-oz)*invdirz}if(tmin>tzmax||tzmin>tmax)return false;if(tzmax=0;let c1,c2;if(leftToRight){c1=LEFT_NODE(nodeIndex32);c2=RIGHT_NODE(nodeIndex32,uint32Array)}else{c1=RIGHT_NODE(nodeIndex32,uint32Array);c2=LEFT_NODE(nodeIndex32)}const c1Intersection=intersectRay(c1,float32Array,ray);const c1Result=c1Intersection?_raycastFirst$1(c1,bvh,side,ray):null;if(c1Result){const point=c1Result.point[xyzAxis];const isOutside=leftToRight?point<=float32Array[c2+splitAxis]:point>=float32Array[c2+splitAxis+3];if(isOutside){return c1Result}}const c2Intersection=intersectRay(c2,float32Array,ray);const c2Result=c2Intersection?_raycastFirst$1(c2,bvh,side,ray):null;if(c1Result&&c2Result){return c1Result.distance<=c2Result.distance?c1Result:c2Result}else{return c1Result||c2Result||null}}}const boundingBox$2=new three.Box3;const triangle$1=new ExtendedTriangle;const triangle2$1=new ExtendedTriangle;const invertedMat$1=new three.Matrix4;const obb$4=new OrientedBox;const obb2$3=new OrientedBox;function intersectsGeometry(bvh,root,otherGeometry,geometryToBvh){BufferStack.setBuffer(bvh._roots[root]);const result=_intersectsGeometry$1(0,bvh,otherGeometry,geometryToBvh);BufferStack.clearBuffer();return result}function _intersectsGeometry$1(nodeIndex32,bvh,otherGeometry,geometryToBvh,cachedObb=null){const{float32Array,uint16Array,uint32Array}=BufferStack;let nodeIndex16=nodeIndex32*2;if(cachedObb===null){if(!otherGeometry.boundingBox){otherGeometry.computeBoundingBox()}obb$4.set(otherGeometry.boundingBox.min,otherGeometry.boundingBox.max,geometryToBvh);cachedObb=obb$4}const isLeaf=IS_LEAF(nodeIndex16,uint16Array);if(isLeaf){const thisGeometry=bvh.geometry;const thisIndex=thisGeometry.index;const thisPos=thisGeometry.attributes.position;const index=otherGeometry.index;const pos=otherGeometry.attributes.position;const offset=OFFSET(nodeIndex32,uint32Array);const count=COUNT(nodeIndex16,uint16Array);invertedMat$1.copy(geometryToBvh).invert();if(otherGeometry.boundsTree){arrayToBox(BOUNDING_DATA_INDEX(nodeIndex32),float32Array,obb2$3);obb2$3.matrix.copy(invertedMat$1);obb2$3.needsUpdate=true;const res=otherGeometry.boundsTree.shapecast({intersectsBounds:box=>obb2$3.intersectsBox(box),intersectsTriangle:tri=>{tri.a.applyMatrix4(geometryToBvh);tri.b.applyMatrix4(geometryToBvh);tri.c.applyMatrix4(geometryToBvh);tri.needsUpdate=true;for(let i=offset*3,l=(count+offset)*3;i{return obb$3.distanceToBox(box)},intersectsBounds:(box,isLeaf,score)=>{if(score{if(otherGeometry.boundsTree){const otherBvh=otherGeometry.boundsTree;return otherBvh.shapecast({boundsTraverseOrder:box=>{return obb2$2.distanceToBox(box)},intersectsBounds:(box,isLeaf,score)=>{return score{for(let i2=otherOffset,l2=otherOffset+otherCount;i2maxx)maxx=x;if(ymaxy)maxy=y;if(zmaxz)maxz=z}}if(float32Array[node32Index+0]!==minx||float32Array[node32Index+1]!==miny||float32Array[node32Index+2]!==minz||float32Array[node32Index+3]!==maxx||float32Array[node32Index+4]!==maxy||float32Array[node32Index+5]!==maxz){float32Array[node32Index+0]=minx;float32Array[node32Index+1]=miny;float32Array[node32Index+2]=minz;float32Array[node32Index+3]=maxx;float32Array[node32Index+4]=maxy;float32Array[node32Index+5]=maxz;return true}else{return false}}else{const left=node32Index+8;const right=uint32Array[node32Index+6];const offsetLeft=left+byteOffset;const offsetRight=right+byteOffset;let forceChildren=force;let includesLeft=false;let includesRight=false;if(nodeIndices){if(!forceChildren){includesLeft=nodeIndices.has(offsetLeft);includesRight=nodeIndices.has(offsetRight);forceChildren=!includesLeft&&!includesRight}}else{includesLeft=true;includesRight=true}const traverseLeft=forceChildren||includesLeft;const traverseRight=forceChildren||includesRight;let leftChange=false;if(traverseLeft){leftChange=_traverse(left,byteOffset,forceChildren)}let rightChange=false;if(traverseRight){rightChange=_traverse(right,byteOffset,forceChildren)}const didChange=leftChange||rightChange;if(didChange){for(let i=0;i<3;i++){const lefti=left+i;const righti=right+i;const minLeftValue=float32Array[lefti];const maxLeftValue=float32Array[lefti+3];const minRightValue=float32Array[righti];const maxRightValue=float32Array[righti+3];float32Array[node32Index+i]=minLeftValuemaxRightValue?maxLeftValue:maxRightValue}}return didChange}}}function raycast_indirect(bvh,root,side,ray,intersects){BufferStack.setBuffer(bvh._roots[root]);_raycast(0,bvh,side,ray,intersects);BufferStack.clearBuffer()}function _raycast(nodeIndex32,bvh,side,ray,intersects){const{float32Array,uint16Array,uint32Array}=BufferStack;const nodeIndex16=nodeIndex32*2;const isLeaf=IS_LEAF(nodeIndex16,uint16Array);if(isLeaf){const offset=OFFSET(nodeIndex32,uint32Array);const count=COUNT(nodeIndex16,uint16Array);intersectTris_indirect(bvh,side,ray,offset,count,intersects)}else{const leftIndex=LEFT_NODE(nodeIndex32);if(intersectRay(leftIndex,float32Array,ray)){_raycast(leftIndex,bvh,side,ray,intersects)}const rightIndex=RIGHT_NODE(nodeIndex32,uint32Array);if(intersectRay(rightIndex,float32Array,ray)){_raycast(rightIndex,bvh,side,ray,intersects)}}}const _xyzFields=["x","y","z"];function raycastFirst_indirect(bvh,root,side,ray){BufferStack.setBuffer(bvh._roots[root]);const result=_raycastFirst(0,bvh,side,ray);BufferStack.clearBuffer();return result}function _raycastFirst(nodeIndex32,bvh,side,ray){const{float32Array,uint16Array,uint32Array}=BufferStack;let nodeIndex16=nodeIndex32*2;const isLeaf=IS_LEAF(nodeIndex16,uint16Array);if(isLeaf){const offset=OFFSET(nodeIndex32,uint32Array);const count=COUNT(nodeIndex16,uint16Array);return intersectClosestTri_indirect(bvh,side,ray,offset,count)}else{const splitAxis=SPLIT_AXIS(nodeIndex32,uint32Array);const xyzAxis=_xyzFields[splitAxis];const rayDir=ray.direction[xyzAxis];const leftToRight=rayDir>=0;let c1,c2;if(leftToRight){c1=LEFT_NODE(nodeIndex32);c2=RIGHT_NODE(nodeIndex32,uint32Array)}else{c1=RIGHT_NODE(nodeIndex32,uint32Array);c2=LEFT_NODE(nodeIndex32)}const c1Intersection=intersectRay(c1,float32Array,ray);const c1Result=c1Intersection?_raycastFirst(c1,bvh,side,ray):null;if(c1Result){const point=c1Result.point[xyzAxis];const isOutside=leftToRight?point<=float32Array[c2+splitAxis]:point>=float32Array[c2+splitAxis+3];if(isOutside){return c1Result}}const c2Intersection=intersectRay(c2,float32Array,ray);const c2Result=c2Intersection?_raycastFirst(c2,bvh,side,ray):null;if(c1Result&&c2Result){return c1Result.distance<=c2Result.distance?c1Result:c2Result}else{return c1Result||c2Result||null}}}const boundingBox$1=new three.Box3;const triangle=new ExtendedTriangle;const triangle2=new ExtendedTriangle;const invertedMat=new three.Matrix4;const obb$2=new OrientedBox;const obb2$1=new OrientedBox;function intersectsGeometry_indirect(bvh,root,otherGeometry,geometryToBvh){BufferStack.setBuffer(bvh._roots[root]);const result=_intersectsGeometry(0,bvh,otherGeometry,geometryToBvh);BufferStack.clearBuffer();return result}function _intersectsGeometry(nodeIndex32,bvh,otherGeometry,geometryToBvh,cachedObb=null){const{float32Array,uint16Array,uint32Array}=BufferStack;let nodeIndex16=nodeIndex32*2;if(cachedObb===null){if(!otherGeometry.boundingBox){otherGeometry.computeBoundingBox()}obb$2.set(otherGeometry.boundingBox.min,otherGeometry.boundingBox.max,geometryToBvh);cachedObb=obb$2}const isLeaf=IS_LEAF(nodeIndex16,uint16Array);if(isLeaf){const thisGeometry=bvh.geometry;const thisIndex=thisGeometry.index;const thisPos=thisGeometry.attributes.position;const index=otherGeometry.index;const pos=otherGeometry.attributes.position;const offset=OFFSET(nodeIndex32,uint32Array);const count=COUNT(nodeIndex16,uint16Array);invertedMat.copy(geometryToBvh).invert();if(otherGeometry.boundsTree){arrayToBox(BOUNDING_DATA_INDEX(nodeIndex32),float32Array,obb2$1);obb2$1.matrix.copy(invertedMat);obb2$1.needsUpdate=true;const res=otherGeometry.boundsTree.shapecast({intersectsBounds:box=>obb2$1.intersectsBox(box),intersectsTriangle:tri=>{tri.a.applyMatrix4(geometryToBvh);tri.b.applyMatrix4(geometryToBvh);tri.c.applyMatrix4(geometryToBvh);tri.needsUpdate=true;for(let i=offset,l=count+offset;i{return obb$1.distanceToBox(box)},intersectsBounds:(box,isLeaf,score)=>{if(score{if(otherGeometry.boundsTree){const otherBvh=otherGeometry.boundsTree;return otherBvh.shapecast({boundsTraverseOrder:box=>{return obb2.distanceToBox(box)},intersectsBounds:(box,isLeaf,score)=>{return score{for(let i2=otherOffset,l2=otherOffset+otherCount;i2new three.Box3);const _leftBox1=new three.Box3;const _rightBox1=new three.Box3;const _leftBox2=new three.Box3;const _rightBox2=new three.Box3;let _active=false;function bvhcast(bvh,otherBvh,matrixToLocal,intersectsRanges){if(_active){throw new Error("MeshBVH: Recursive calls to bvhcast not supported.")}_active=true;const roots=bvh._roots;const otherRoots=otherBvh._roots;let result;let offset1=0;let offset2=0;const invMat=new three.Matrix4().copy(matrixToLocal).invert();for(let i=0,il=roots.length;iroot.slice()),index:indexAttribute?indexAttribute.array.slice():null,indirectBuffer:indirectBuffer?indirectBuffer.slice():null}}else{result={roots:rootData,index:indexAttribute?indexAttribute.array:null,indirectBuffer:indirectBuffer}}return result}static deserialize(data,geometry,options={}){options={setIndex:true,indirect:Boolean(data.indirectBuffer),...options};const{index,roots,indirectBuffer}=data;const bvh=new MeshBVH(geometry,{...options,[SKIP_GENERATION]:true});bvh._roots=roots;bvh._indirectBuffer=indirectBuffer||null;if(options.setIndex){const indexAttribute=geometry.getIndex();if(indexAttribute===null){const newIndex=new three.BufferAttribute(data.index,1,false);geometry.setIndex(newIndex)}else if(indexAttribute.array!==index){indexAttribute.array.set(index);indexAttribute.needsUpdate=true}}return bvh}get indirect(){return!!this._indirectBuffer}constructor(geometry,options={}){if(!geometry.isBufferGeometry){throw new Error("MeshBVH: Only BufferGeometries are supported.")}else if(geometry.index&&geometry.index.isInterleavedBufferAttribute){throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}options=Object.assign({...DEFAULT_OPTIONS,[SKIP_GENERATION]:false},options);if(options.useSharedArrayBuffer&&!isSharedArrayBufferSupported()){throw new Error("MeshBVH: SharedArrayBuffer is not available.")}this.geometry=geometry;this._roots=null;this._indirectBuffer=null;if(!options[SKIP_GENERATION]){buildPackedTree(this,options);if(!geometry.boundingBox&&options.setBoundingBox){geometry.boundingBox=this.getBoundingBox(new three.Box3)}}this.resolveTriangleIndex=this._indirectBuffer?i=>this._indirectBuffer[i]:i=>i}refit(nodeIndices=null){const refitFunc=this.indirect?refit_indirect:refit;return refitFunc(this,nodeIndices)}traverse(callback,rootIndex=0){const buffer=this._roots[rootIndex];const uint32Array=new Uint32Array(buffer);const uint16Array=new Uint16Array(buffer);_traverse(0);function _traverse(node32Index,depth=0){const node16Index=node32Index*2;const isLeaf=uint16Array[node16Index+15]===IS_LEAFNODE_FLAG;if(isLeaf){const offset=uint32Array[node32Index+6];const count=uint16Array[node16Index+14];callback(depth,isLeaf,new Float32Array(buffer,node32Index*4,6),offset,count)}else{const left=node32Index+BYTES_PER_NODE/4;const right=uint32Array[node32Index+6];const splitAxis=uint32Array[node32Index+7];const stopTraversal=callback(depth,isLeaf,new Float32Array(buffer,node32Index*4,6),splitAxis);if(!stopTraversal){_traverse(left,depth+1);_traverse(right,depth+1)}}}}raycast(ray,materialOrSide=three.FrontSide){const roots=this._roots;const geometry=this.geometry;const intersects=[];const isMaterial=materialOrSide.isMaterial;const isArrayMaterial=Array.isArray(materialOrSide);const groups=geometry.groups;const side=isMaterial?materialOrSide.side:materialOrSide;const raycastFunc=this.indirect?raycast_indirect:raycast;for(let i=0,l=roots.length;i{if(!originalIntersectsRange(offset,count,contained,depth,nodeIndex)){return iterateFunc(offset,count,this,intersectsTriangle,contained,depth,triangle)}return true}}else if(!intersectsRange){if(intersectsTriangle){intersectsRange=(offset,count,contained,depth)=>{return iterateFunc(offset,count,this,intersectsTriangle,contained,depth,triangle)}}else{intersectsRange=(offset,count,contained)=>{return contained}}}let result=false;let byteOffset=0;const roots=this._roots;for(let i=0,l=roots.length;i{const ti=this.resolveTriangleIndex(i1);setTriangle(triangle1,ti*3,indexAttr1,positionAttr1)}:i1=>{setTriangle(triangle1,i1*3,indexAttr1,positionAttr1)};const triangle2=ExtendedTrianglePool.getPrimitive();const indexAttr2=otherBvh.geometry.index;const positionAttr2=otherBvh.geometry.attributes.position;const assignTriangle2=otherBvh.indirect?i2=>{const ti2=otherBvh.resolveTriangleIndex(i2);setTriangle(triangle2,ti2*3,indexAttr2,positionAttr2)}:i2=>{setTriangle(triangle2,i2*3,indexAttr2,positionAttr2)};if(intersectsTriangles){const iterateOverDoubleTriangles=(offset1,count1,offset2,count2,depth1,index1,depth2,index2)=>{for(let i2=offset2,l2=offset2+count2;i2obb.intersectsBox(box),intersectsTriangle:tri=>obb.intersectsTriangle(tri)})}intersectsSphere(sphere){return this.shapecast({intersectsBounds:box=>sphere.intersectsBox(box),intersectsTriangle:tri=>tri.intersectsSphere(sphere)})}closestPointToGeometry(otherGeometry,geometryToBvh,target1={},target2={},minThreshold=0,maxThreshold=Infinity){const closestPointToGeometryFunc=this.indirect?closestPointToGeometry_indirect:closestPointToGeometry;return closestPointToGeometryFunc(this,otherGeometry,geometryToBvh,target1,target2,minThreshold,maxThreshold)}closestPointToPoint(point,target={},minThreshold=0,maxThreshold=Infinity){return closestPointToPoint(this,point,target,minThreshold,maxThreshold)}getBoundingBox(target){target.makeEmpty();const roots=this._roots;roots.forEach(buffer=>{arrayToBox(0,new Float32Array(buffer),tempBox);target.union(tempBox)});return target}}const boundingBox=new three.Box3;class MeshBVHRootHelper extends three.Object3D{get isMesh(){return!this.displayEdges}get isLineSegments(){return this.displayEdges}get isLine(){return this.displayEdges}constructor(bvh,material,depth=10,group=0){super();this.material=material;this.geometry=new three.BufferGeometry;this.name="MeshBVHRootHelper";this.depth=depth;this.displayParents=false;this.bvh=bvh;this.displayEdges=true;this._group=group}raycast(){}update(){const geometry=this.geometry;const boundsTree=this.bvh;const group=this._group;geometry.dispose();this.visible=false;if(boundsTree){const targetDepth=this.depth-1;const displayParents=this.displayParents;let boundsCount=0;boundsTree.traverse((depth,isLeaf)=>{if(depth>=targetDepth||isLeaf){boundsCount++;return true}else if(displayParents){boundsCount++}},group);let posIndex=0;const positionArray=new Float32Array(8*3*boundsCount);boundsTree.traverse((depth,isLeaf,boundingData)=>{const terminate=depth>=targetDepth||isLeaf;if(terminate||displayParents){arrayToBox(0,boundingData,boundingBox);const{min,max}=boundingBox;for(let x=-1;x<=1;x+=2){const xVal=x<0?min.x:max.x;for(let y=-1;y<=1;y+=2){const yVal=y<0?min.y:max.y;for(let z=-1;z<=1;z+=2){const zVal=z<0?min.z:max.z;positionArray[posIndex+0]=xVal;positionArray[posIndex+1]=yVal;positionArray[posIndex+2]=zVal;posIndex+=3}}}return terminate}},group);let indexArray;let indices;if(this.displayEdges){indices=new Uint8Array([0,4,1,5,2,6,3,7,0,2,1,3,4,6,5,7,0,1,2,3,4,5,6,7])}else{indices=new Uint8Array([0,1,2,2,1,3,4,6,5,6,7,5,1,4,5,0,4,1,2,3,6,3,7,6,0,2,4,2,6,4,1,5,3,3,5,7])}if(positionArray.length>65535){indexArray=new Uint32Array(indices.length*boundsCount)}else{indexArray=new Uint16Array(indices.length*boundsCount)}const indexLength=indices.length;for(let i=0;itotalRoots){const root=this._roots.pop();root.geometry.dispose();this.remove(root)}for(let i=0;i=this._roots.length){const root=new MeshBVHRootHelper(bvh,edgeMaterial,depth,i);this.add(root);this._roots.push(root)}const root=this._roots[i];root.bvh=bvh;root.depth=depth;root.displayParents=displayParents;root.displayEdges=displayEdges;root.material=displayEdges?edgeMaterial:meshMaterial;root.update()}}updateMatrixWorld(...args){const mesh=this.mesh;const parent=this.parent;if(mesh!==null){mesh.updateWorldMatrix(true,false);if(parent){this.matrix.copy(parent.matrixWorld).invert().multiply(mesh.matrixWorld)}else{this.matrix.copy(mesh.matrixWorld)}this.matrix.decompose(this.position,this.quaternion,this.scale)}super.updateMatrixWorld(...args)}copy(source){this.depth=source.depth;this.mesh=source.mesh;this.bvh=source.bvh;this.opacity=source.opacity;this.color.copy(source.color)}clone(){return new MeshBVHHelper(this.mesh,this.bvh,this.depth)}dispose(){this.edgeMaterial.dispose();this.meshMaterial.dispose();const children=this.children;for(let i=0,l=children.length;i{const l0=boundingData[0+3]-boundingData[0];const l1=boundingData[1+3]-boundingData[1];const l2=boundingData[2+3]-boundingData[2];const surfaceArea=2*(l0*l1+l1*l2+l2*l0);result.nodeCount++;if(isLeaf){result.leafNodeCount++;result.depth.min=Math.min(depth,result.depth.min);result.depth.max=Math.max(depth,result.depth.max);result.tris.min=Math.min(count,result.tris.min);result.tris.max=Math.max(count,result.tris.max);result.surfaceAreaScore+=surfaceArea*TRIANGLE_INTERSECT_COST*count}else{result.splits[offsetOrSplit]++;result.surfaceAreaScore+=surfaceArea*TRAVERSAL_COST}},group);if(result.tris.min===Infinity){result.tris.min=0;result.tris.max=0}if(result.depth.min===Infinity){result.depth.min=0;result.depth.max=0}return result}function getBVHExtremes(bvh){return bvh._roots.map((root,i)=>getRootExtremes(bvh,i))}function estimateMemoryInBytes(obj){const traversed=new Set;const stack=[obj];let bytes=0;while(stack.length){const curr=stack.pop();if(traversed.has(curr)){continue}traversed.add(curr);for(let key in curr){if(!curr.hasOwnProperty(key)){continue}bytes+=getPrimitiveSize(key);const value=curr[key];if(value&&(typeof value==="object"||typeof value==="function")){if(isTypedArray(value)){bytes+=value.byteLength}else if(isSharedArrayBufferSupported()&&value instanceof SharedArrayBuffer){bytes+=value.byteLength}else if(value instanceof ArrayBuffer){bytes+=value.byteLength}else{stack.push(value)}}else{bytes+=getPrimitiveSize(value)}}}return bytes}function validateBounds(bvh){const geometry=bvh.geometry;const depthStack=[];const index=geometry.index;const position=geometry.getAttribute("position");let passes=true;bvh.traverse((depth,isLeaf,boundingData,offset,count)=>{const info={depth,isLeaf,boundingData,offset,count};depthStack[depth]=info;arrayToBox(0,boundingData,_box1);const parent=depthStack[depth-1];if(isLeaf){for(let i=offset,l=offset+count;i{const info={bounds:arrayToBox(0,boundingData,new three.Box3)};if(isLeaf){info.count=count;info.offset=offset}else{info.left=null;info.right=null}depthStack[depth]=info;const parent=depthStack[depth-1];if(parent){if(parent.left===null){parent.left=info}else{parent.right=info}}});return depthStack[0]}function convertRaycastIntersect(hit,object,raycaster){if(hit===null){return null}hit.point.applyMatrix4(object.matrixWorld);hit.distance=hit.point.distanceTo(raycaster.ray.origin);hit.object=object;if(hit.distanceraycaster.far){return null}else{return hit}}const ray=new three.Ray;const tmpInverseMatrix=new three.Matrix4;const origMeshRaycastFunc=three.Mesh.prototype.raycast;function acceleratedRaycast(raycaster,intersects){if(this.geometry.boundsTree){if(this.material===undefined)return;tmpInverseMatrix.copy(this.matrixWorld).invert();ray.copy(raycaster.ray).applyMatrix4(tmpInverseMatrix);const bvh=this.geometry.boundsTree;if(raycaster.firstHitOnly===true){const hit=convertRaycastIntersect(bvh.raycastFirst(ray,this.material),this,raycaster);if(hit){intersects.push(hit)}}else{const hits=bvh.raycast(ray,this.material);for(let i=0,l=hits.length;i=2){dataArray[ii+1]=attr.getY(i)/normalizeValue}if(itemSize>=3){dataArray[ii+2]=attr.getZ(i)/normalizeValue;if(finalStride===4){dataArray[ii+3]=1}}if(itemSize>=4){dataArray[ii+3]=attr.getW(i)/normalizeValue}}attr.normalized=originalNormalized;this.internalFormat=internalFormat;this.format=format;this.type=type;this.image.width=dimension;this.image.height=dimension;this.image.data=dataArray;this.needsUpdate=true;this.dispose();attr.itemSize=originalItemSize;attr.count=originalCount}}class UIntVertexAttributeTexture extends VertexAttributeTexture{constructor(){super();this._forcedType=three.UnsignedIntType}}class IntVertexAttributeTexture extends VertexAttributeTexture{constructor(){super();this._forcedType=three.IntType}}class FloatVertexAttributeTexture extends VertexAttributeTexture{constructor(){super();this._forcedType=three.FloatType}}class MeshBVHUniformStruct{constructor(){this.index=new UIntVertexAttributeTexture;this.position=new FloatVertexAttributeTexture;this.bvhBounds=new three.DataTexture;this.bvhContents=new three.DataTexture;this._cachedIndexAttr=null;this.index.overrideItemSize=3}updateFrom(bvh){const{geometry}=bvh;bvhToTextures(bvh,this.bvhBounds,this.bvhContents);this.position.updateFrom(geometry.attributes.position);if(bvh.indirect){const indirectBuffer=bvh._indirectBuffer;if(this._cachedIndexAttr===null||this._cachedIndexAttr.count!==indirectBuffer.length){if(geometry.index){this._cachedIndexAttr=geometry.index.clone()}else{const array=getIndexArray(getVertexCount(geometry));this._cachedIndexAttr=new three.BufferAttribute(array,1,false)}}dereferenceIndex(geometry,indirectBuffer,this._cachedIndexAttr);this.index.updateFrom(this._cachedIndexAttr)}else{this.index.updateFrom(geometry.index)}}dispose(){const{index,position,bvhBounds,bvhContents}=this;if(index)index.dispose();if(position)position.dispose();if(bvhBounds)bvhBounds.dispose();if(bvhContents)bvhContents.dispose()}}function dereferenceIndex(geometry,indirectBuffer,target){const unpacked=target.array;const indexArray=geometry.index?geometry.index.array:null;for(let i=0,l=indirectBuffer.length;i=2)target.setY(io,attr.getY(i));if(itemSize>=3)target.setZ(io,attr.getZ(i));if(itemSize>=4)target.setW(io,attr.getW(i))}}else{const array=target.array;const cons=array.constructor;const byteOffset=array.BYTES_PER_ELEMENT*attr.itemSize*targetOffset;const temp=new cons(array.buffer,byteOffset,attr.array.length);temp.set(attr.array)}}function addScaledMatrix(target,matrix,scale){const targetArray=target.elements;const matrixArray=matrix.elements;for(let i=0,l=matrixArray.length;i{object.traverseVisible(c=>{if(c.isMesh){finalMeshes.push(c)}})});this.meshes=finalMeshes;this.useGroups=true;this.applyWorldTransforms=true;this.attributes=["position","normal","color","tangent","uv","uv2"];this._intermediateGeometry=new Array(finalMeshes.length).fill().map(()=>new three.BufferGeometry);this._diffMap=new WeakMap}getMaterials(){const materials=[];this.meshes.forEach(mesh=>{if(Array.isArray(mesh.material)){materials.push(...mesh.material)}else{materials.push(mesh.material)}});return materials}generate(targetGeometry=new three.BufferGeometry){let skipAttributes=[];const{meshes,useGroups,_intermediateGeometry,_diffMap}=this;for(let i=0,l=meshes.length;i - 1 && ptr < BVH_STACK_DEPTH ) { uint currNodeIndex = stack[ ptr ]; ptr --; // check if we intersect the current bounds float boundsHitDistance = distanceSqToBVHNodeBoundsPoint( point, bvh_bvhBounds, currNodeIndex ); if ( boundsHitDistance > closestDistanceSquared ) { continue; } uvec2 boundsInfo = uTexelFetch1D( bvh_bvhContents, currNodeIndex ).xy; bool isLeaf = bool( boundsInfo.x & 0xffff0000u ); if ( isLeaf ) { uint count = boundsInfo.x & 0x0000ffffu; uint offset = boundsInfo.y; closestDistanceSquared = distanceToTriangles( bvh_position, bvh_index, offset, count, point, closestDistanceSquared, // outputs faceIndices, faceNormal, barycoord, side, outPoint ); } else { uint leftIndex = currNodeIndex + 1u; uint splitAxis = boundsInfo.x & 0x0000ffffu; uint rightIndex = boundsInfo.y; bool leftToRight = distanceSqToBVHNodeBoundsPoint( point, bvh_bvhBounds, leftIndex ) < distanceSqToBVHNodeBoundsPoint( point, bvh_bvhBounds, rightIndex );//rayDirection[ splitAxis ] >= 0.0; uint c1 = leftToRight ? leftIndex : rightIndex; uint c2 = leftToRight ? rightIndex : leftIndex; // set c2 in the stack so we traverse it later. We need to keep track of a pointer in // the stack while we traverse. The second pointer added is the one that will be // traversed first ptr ++; stack[ ptr ] = c2; ptr ++; stack[ ptr ] = c1; } } return sqrt( closestDistanceSquared ); } `;const bvh_ray_functions=` #ifndef TRI_INTERSECT_EPSILON #define TRI_INTERSECT_EPSILON 1e-5 #endif // Raycasting bool intersectsBounds( vec3 rayOrigin, vec3 rayDirection, vec3 boundsMin, vec3 boundsMax, out float dist ) { // https://www.reddit.com/r/opengl/comments/8ntzz5/fast_glsl_ray_box_intersection/ // https://tavianator.com/2011/ray_box.html vec3 invDir = 1.0 / rayDirection; // find intersection distances for each plane vec3 tMinPlane = invDir * ( boundsMin - rayOrigin ); vec3 tMaxPlane = invDir * ( boundsMax - rayOrigin ); // get the min and max distances from each intersection vec3 tMinHit = min( tMaxPlane, tMinPlane ); vec3 tMaxHit = max( tMaxPlane, tMinPlane ); // get the furthest hit distance vec2 t = max( tMinHit.xx, tMinHit.yz ); float t0 = max( t.x, t.y ); // get the minimum hit distance t = min( tMaxHit.xx, tMaxHit.yz ); float t1 = min( t.x, t.y ); // set distance to 0.0 if the ray starts inside the box dist = max( t0, 0.0 ); return t1 >= dist; } bool intersectsTriangle( vec3 rayOrigin, vec3 rayDirection, vec3 a, vec3 b, vec3 c, out vec3 barycoord, out vec3 norm, out float dist, out float side ) { // https://stackoverflow.com/questions/42740765/intersection-between-line-and-triangle-in-3d vec3 edge1 = b - a; vec3 edge2 = c - a; norm = cross( edge1, edge2 ); float det = - dot( rayDirection, norm ); float invdet = 1.0 / det; vec3 AO = rayOrigin - a; vec3 DAO = cross( AO, rayDirection ); vec4 uvt; uvt.x = dot( edge2, DAO ) * invdet; uvt.y = - dot( edge1, DAO ) * invdet; uvt.z = dot( AO, norm ) * invdet; uvt.w = 1.0 - uvt.x - uvt.y; // set the hit information barycoord = uvt.wxy; // arranged in A, B, C order dist = uvt.z; side = sign( det ); norm = side * normalize( norm ); // add an epsilon to avoid misses between triangles uvt += vec4( TRI_INTERSECT_EPSILON ); return all( greaterThanEqual( uvt, vec4( 0.0 ) ) ); } bool intersectTriangles( // geometry info and triangle range sampler2D positionAttr, usampler2D indexAttr, uint offset, uint count, // ray vec3 rayOrigin, vec3 rayDirection, // outputs inout float minDistance, inout uvec4 faceIndices, inout vec3 faceNormal, inout vec3 barycoord, inout float side, inout float dist ) { bool found = false; vec3 localBarycoord, localNormal; float localDist, localSide; for ( uint i = offset, l = offset + count; i < l; i ++ ) { uvec3 indices = uTexelFetch1D( indexAttr, i ).xyz; vec3 a = texelFetch1D( positionAttr, indices.x ).rgb; vec3 b = texelFetch1D( positionAttr, indices.y ).rgb; vec3 c = texelFetch1D( positionAttr, indices.z ).rgb; if ( intersectsTriangle( rayOrigin, rayDirection, a, b, c, localBarycoord, localNormal, localDist, localSide ) && localDist < minDistance ) { found = true; minDistance = localDist; faceIndices = uvec4( indices.xyz, i ); faceNormal = localNormal; side = localSide; barycoord = localBarycoord; dist = localDist; } } return found; } bool intersectsBVHNodeBounds( vec3 rayOrigin, vec3 rayDirection, sampler2D bvhBounds, uint currNodeIndex, out float dist ) { uint cni2 = currNodeIndex * 2u; vec3 boundsMin = texelFetch1D( bvhBounds, cni2 ).xyz; vec3 boundsMax = texelFetch1D( bvhBounds, cni2 + 1u ).xyz; return intersectsBounds( rayOrigin, rayDirection, boundsMin, boundsMax, dist ); } // use a macro to hide the fact that we need to expand the struct into separate fields #define\ bvhIntersectFirstHit(\ bvh,\ rayOrigin, rayDirection, faceIndices, faceNormal, barycoord, side, dist\ )\ _bvhIntersectFirstHit(\ bvh.position, bvh.index, bvh.bvhBounds, bvh.bvhContents,\ rayOrigin, rayDirection, faceIndices, faceNormal, barycoord, side, dist\ ) bool _bvhIntersectFirstHit( // bvh info sampler2D bvh_position, usampler2D bvh_index, sampler2D bvh_bvhBounds, usampler2D bvh_bvhContents, // ray vec3 rayOrigin, vec3 rayDirection, // output variables split into separate variables due to output precision inout uvec4 faceIndices, inout vec3 faceNormal, inout vec3 barycoord, inout float side, inout float dist ) { // stack needs to be twice as long as the deepest tree we expect because // we push both the left and right child onto the stack every traversal int ptr = 0; uint stack[ BVH_STACK_DEPTH ]; stack[ 0 ] = 0u; float triangleDistance = INFINITY; bool found = false; while ( ptr > - 1 && ptr < BVH_STACK_DEPTH ) { uint currNodeIndex = stack[ ptr ]; ptr --; // check if we intersect the current bounds float boundsHitDistance; if ( ! intersectsBVHNodeBounds( rayOrigin, rayDirection, bvh_bvhBounds, currNodeIndex, boundsHitDistance ) || boundsHitDistance > triangleDistance ) { continue; } uvec2 boundsInfo = uTexelFetch1D( bvh_bvhContents, currNodeIndex ).xy; bool isLeaf = bool( boundsInfo.x & 0xffff0000u ); if ( isLeaf ) { uint count = boundsInfo.x & 0x0000ffffu; uint offset = boundsInfo.y; found = intersectTriangles( bvh_position, bvh_index, offset, count, rayOrigin, rayDirection, triangleDistance, faceIndices, faceNormal, barycoord, side, dist ) || found; } else { uint leftIndex = currNodeIndex + 1u; uint splitAxis = boundsInfo.x & 0x0000ffffu; uint rightIndex = boundsInfo.y; bool leftToRight = rayDirection[ splitAxis ] >= 0.0; uint c1 = leftToRight ? leftIndex : rightIndex; uint c2 = leftToRight ? rightIndex : leftIndex; // set c2 in the stack so we traverse it later. We need to keep track of a pointer in // the stack while we traverse. The second pointer added is the one that will be // traversed first ptr ++; stack[ ptr ] = c2; ptr ++; stack[ ptr ] = c1; } } return found; } `;const bvh_struct_definitions=` struct BVH { usampler2D index; sampler2D position; sampler2D bvhBounds; usampler2D bvhContents; }; `;var BVHShaderGLSL=Object.freeze({__proto__:null,bvh_distance_functions:bvh_distance_functions,bvh_ray_functions:bvh_ray_functions,bvh_struct_definitions:bvh_struct_definitions,common_functions:common_functions});const shaderStructs=bvh_struct_definitions;const shaderDistanceFunction=bvh_distance_functions;const shaderIntersectFunction=` ${common_functions} ${bvh_ray_functions} `;exports.AVERAGE=AVERAGE;exports.BVHShaderGLSL=BVHShaderGLSL;exports.CENTER=CENTER;exports.CONTAINED=CONTAINED;exports.ExtendedTriangle=ExtendedTriangle;exports.FloatVertexAttributeTexture=FloatVertexAttributeTexture;exports.INTERSECTED=INTERSECTED;exports.IntVertexAttributeTexture=IntVertexAttributeTexture;exports.MeshBVH=MeshBVH;exports.MeshBVHHelper=MeshBVHHelper;exports.MeshBVHUniformStruct=MeshBVHUniformStruct;exports.NOT_INTERSECTED=NOT_INTERSECTED;exports.OrientedBox=OrientedBox;exports.SAH=SAH;exports.StaticGeometryGenerator=StaticGeometryGenerator;exports.UIntVertexAttributeTexture=UIntVertexAttributeTexture;exports.VertexAttributeTexture=VertexAttributeTexture;exports.acceleratedRaycast=acceleratedRaycast;exports.computeBoundsTree=computeBoundsTree;exports.disposeBoundsTree=disposeBoundsTree;exports.estimateMemoryInBytes=estimateMemoryInBytes;exports.getBVHExtremes=getBVHExtremes;exports.getJSONStructure=getJSONStructure;exports.getTriangleHitPointInfo=getTriangleHitPointInfo;exports.shaderDistanceFunction=shaderDistanceFunction;exports.shaderIntersectFunction=shaderIntersectFunction;exports.shaderStructs=shaderStructs;exports.validateBounds=validateBounds;Object.defineProperty(exports,"__esModule",{value:true});three.BufferGeometry.prototype.computeBoundsTree=computeBoundsTree;three.BufferGeometry.prototype.disposeBoundsTree=disposeBoundsTree;three.Mesh.prototype.raycast=acceleratedRaycast});THREE.MeshoptDecoder=function(){"use strict";var wasm_base="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb";var wasm_simd="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb";var detector=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]);var wasmpack=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!=="object"){return{supported:false}}var wasm=WebAssembly.validate(detector)?wasm_simd:wasm_base;var instance;var ready=WebAssembly.instantiate(unpack(wasm),{}).then(function(result){instance=result.instance;instance.exports.__wasm_call_ctors()});function unpack(data){var result=new Uint8Array(data.length);for(var i=0;i96?ch-97:ch>64?ch-39:ch+4}var write=0;for(var i=0;i0){return decodeWorker(count,size,source,decoders[mode],filters[filter])}return ready.then(function(){var target=new Uint8Array(count*size);decode(instance.exports[decoders[mode]],target,count,size,source,instance.exports[filters[filter]]);return target})}}}();(function(t,e){e(t.THREE=t.THREE||{})})(this,function(THREE){var Color=THREE.Color,Vector3=THREE.Vector3;class Face3{constructor(a,b,c,normal,color,materialIndex=0){this.a=a;this.b=b;this.c=c;this.normal=normal&&normal.isVector3?normal:new Vector3;this.vertexNormals=Array.isArray(normal)?normal:[];this.color=color&&color.isColor?color:new Color;this.vertexColors=Array.isArray(color)?color:[];this.materialIndex=materialIndex}clone(){return new this.constructor().copy(this)}copy(source){this.a=source.a;this.b=source.b;this.c=source.c;this.normal.copy(source.normal);this.color.copy(source.color);this.materialIndex=source.materialIndex;for(let i=0,il=source.vertexNormals.length;i0){for(let i=0;i0){this.normalsNeedUpdate=true}}computeFlatVertexNormals(){this.computeFaceNormals();for(let f=0,fl=this.faces.length;f0){this.normalsNeedUpdate=true}}computeMorphNormals(){for(let f=0,fl=this.faces.length;f=0;i--){const idx=faceIndicesToRemove[i];this.faces.splice(idx,1);for(let j=0,jl=this.faceVertexUvs.length;j0;const hasFaceVertexNormal=face.vertexNormals.length>0;const hasFaceColor=face.color.r!==1||face.color.g!==1||face.color.b!==1;const hasFaceVertexColor=face.vertexColors.length>0;let faceType=0;faceType=setBit(faceType,0,0);faceType=setBit(faceType,1,hasMaterial);faceType=setBit(faceType,2,hasFaceUv);faceType=setBit(faceType,3,hasFaceVertexUv);faceType=setBit(faceType,4,hasFaceNormal);faceType=setBit(faceType,5,hasFaceVertexNormal);faceType=setBit(faceType,6,hasFaceColor);faceType=setBit(faceType,7,hasFaceVertexColor);faces.push(faceType);faces.push(face.a,face.b,face.c);faces.push(face.materialIndex);if(hasFaceVertexUv){const faceVertexUvs=this.faceVertexUvs[0][i];faces.push(getUvIndex(faceVertexUvs[0]),getUvIndex(faceVertexUvs[1]),getUvIndex(faceVertexUvs[2]))}if(hasFaceNormal){faces.push(getNormalIndex(face.normal))}if(hasFaceVertexNormal){const vertexNormals=face.vertexNormals;faces.push(getNormalIndex(vertexNormals[0]),getNormalIndex(vertexNormals[1]),getNormalIndex(vertexNormals[2]))}if(hasFaceColor){faces.push(getColorIndex(face.color))}if(hasFaceVertexColor){const vertexColors=face.vertexColors;faces.push(getColorIndex(vertexColors[0]),getColorIndex(vertexColors[1]),getColorIndex(vertexColors[2]))}}function setBit(value,position,enabled){return enabled?value|1<0)data.data.colors=colors;if(uvs.length>0)data.data.uvs=[uvs];data.data.faces=faces;return data}clone(){return new Geometry().copy(this)}copy(source){this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingBox=null;this.boundingSphere=null;this.name=source.name;const vertices=source.vertices;for(let i=0,il=vertices.length;i0){const normals=new Float32Array(geometry.normals.length*3);buffergeometry.setAttribute("normal",copyVector3sArray(new BufferAttribute(normals,3),geometry.normals))}if(geometry.colors.length>0){const colors=new Float32Array(geometry.colors.length*3);buffergeometry.setAttribute("color",copyColorsArray(new BufferAttribute(colors,3),geometry.colors))}if(geometry.uvs.length>0){const uvs=new Float32Array(geometry.uvs.length*2);buffergeometry.setAttribute("uv",copyVector2sArray(new BufferAttribute(uvs,2),geometry.uvs))}if(geometry.uvs2.length>0){const uvs2=new Float32Array(geometry.uvs2.length*2);buffergeometry.setAttribute("uv2",copyVector2sArray(new BufferAttribute(uvs2,2),geometry.uvs2))}buffergeometry.groups=geometry.groups;for(const name in geometry.morphTargets){const array=[];const morphTargets=geometry.morphTargets[name];for(let i=0,l=morphTargets.length;i0){const skinIndices=new Float32BufferAttribute(geometry.skinIndices.length*4,4);buffergeometry.setAttribute("skinIndex",copyVector4sArray(skinIndices,geometry.skinIndices))}if(geometry.skinWeights.length>0){const skinWeights=new Float32BufferAttribute(geometry.skinWeights.length*4,4);buffergeometry.setAttribute("skinWeight",copyVector4sArray(skinWeights,geometry.skinWeights))}if(geometry.boundingSphere!==null){buffergeometry.boundingSphere=geometry.boundingSphere.clone()}if(geometry.boundingBox!==null){buffergeometry.boundingBox=geometry.boundingBox.clone()}return buffergeometry}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(matrix){console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().");return this.applyMatrix4(matrix)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(object){let buffergeometry=new BufferGeometry;const geometry=object.geometry;if(object.isPoints||object.isLine){const positions=new Float32BufferAttribute(geometry.vertices.length*3,3);const colors=new Float32BufferAttribute(geometry.colors.length*3,3);buffergeometry.setAttribute("position",copyVector3sArray(positions,geometry.vertices));buffergeometry.setAttribute("color",copyColorsArray(colors,geometry.colors));if(geometry.lineDistances&&geometry.lineDistances.length===geometry.vertices.length){const lineDistances=new Float32BufferAttribute(geometry.lineDistances.length,1);buffergeometry.setAttribute("lineDistance",lineDistances.copyArray(geometry.lineDistances))}if(geometry.boundingSphere!==null){buffergeometry.boundingSphere=geometry.boundingSphere.clone()}if(geometry.boundingBox!==null){buffergeometry.boundingBox=geometry.boundingBox.clone()}}else if(object.isMesh){buffergeometry=geometry.toBufferGeometry()}return buffergeometry}}Geometry.prototype.isGeometry=true;class DirectGeometry{constructor(){this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.groups=[];this.morphTargets={};this.skinWeights=[];this.skinIndices=[];this.boundingBox=null;this.boundingSphere=null;this.verticesNeedUpdate=false;this.normalsNeedUpdate=false;this.colorsNeedUpdate=false;this.uvsNeedUpdate=false;this.groupsNeedUpdate=false}computeGroups(geometry){const groups=[];let group,i;let materialIndex=undefined;const faces=geometry.faces;for(i=0;i0;const hasFaceVertexUv2=faceVertexUvs[1]&&faceVertexUvs[1].length>0;const morphTargets=geometry.morphTargets;const morphTargetsLength=morphTargets.length;let morphTargetsPosition;if(morphTargetsLength>0){morphTargetsPosition=[];for(let i=0;i0){morphTargetsNormal=[];for(let i=0;i0&&faces.length===0){console.error("THREE.DirectGeometry: Faceless geometries are not supported.")}for(let i=0;i2){dstArray[j++]=attribute.getZ(i)}}return dstArray}if(attribute.array instanceof Float32Array){return attribute.array}return new Float32Array(attribute.array)}const _geometry=geometry.index?geometry.toNonIndexed():geometry;const tangents=MikkTSpace.generateTangents(getAttributeArray(_geometry.attributes.position),getAttributeArray(_geometry.attributes.normal),getAttributeArray(_geometry.attributes.uv));if(negateSign){for(let i=3;i=2){newAttribute.setY(i,attribute.getY(i))}if(itemSize>=3){newAttribute.setZ(i,attribute.getZ(i))}if(itemSize>=4){newAttribute.setW(i,attribute.getW(i))}}return newAttribute}function deinterleaveGeometry(geometry){const attributes=geometry.attributes;const morphTargets=geometry.morphTargets;const attrMap=new Map;for(const key in attributes){const attr=attributes[key];if(attr.isInterleavedBufferAttribute){if(!attrMap.has(attr)){attrMap.set(attr,deinterleaveAttribute(attr))}attributes[key]=attrMap.get(attr)}}for(const key in morphTargets){const attr=morphTargets[key];if(attr.isInterleavedBufferAttribute){if(!attrMap.has(attr)){attrMap.set(attr,deinterleaveAttribute(attr))}morphTargets[key]=attrMap.get(attr)}}}function estimateBytesUsed(geometry){let mem=0;for(const name in geometry.attributes){const attr=geometry.getAttribute(name);mem+=attr.count*attr.itemSize*attr.array.BYTES_PER_ELEMENT}const indices=geometry.getIndex();mem+=indices?indices.count*indices.itemSize*indices.array.BYTES_PER_ELEMENT:0;return mem}function mergeVertices(geometry,tolerance=1e-4){tolerance=Math.max(tolerance,Number.EPSILON);const hashToIndex={};const indices=geometry.getIndex();const positions=geometry.getAttribute("position");const vertexCount=indices?indices.count:positions.count;let nextIndex=0;const attributeNames=Object.keys(geometry.attributes);const tmpAttributes={};const tmpMorphAttributes={};const newIndices=[];const getters=["getX","getY","getZ","getW"];const setters=["setX","setY","setZ","setW"];for(let i=0,l=attributeNames.length;i{if(a.materialIndex!==b.materialIndex)return a.materialIndex-b.materialIndex;return a.start-b.start});if(geometry.getIndex()===null){const positionAttribute=geometry.getAttribute("position");const indices=[];for(let i=0;icreaseDot){tempNorm2.add(otherNorm)}}tempNorm2.normalize();normAttr.setXYZ(i3+n,tempNorm2.x,tempNorm2.y,tempNorm2.z)}}resultGeometry.setAttribute("normal",normAttr);return resultGeometry}function mergeBufferGeometries(geometries,useGroups=false){console.warn("THREE.BufferGeometryUtils: mergeBufferGeometries() has been renamed to mergeGeometries().");return mergeGeometries(geometries,useGroups)}function mergeBufferAttributes(attributes){console.warn("THREE.BufferGeometryUtils: mergeBufferAttributes() has been renamed to mergeAttributes().");return mergeAttributes(attributes)}var BufferGeometryUtils={computeMikkTSpaceTangents,deepCloneAttribute,deinterleaveAttribute,deinterleaveGeometry,mergeGeometries,mergeBufferGeometries,mergeAttributes,mergeBufferAttributes,interleaveAttributes,estimateBytesUsed,mergeVertices,toTrianglesDrawMode,computeMorphedAttributes,mergeGroups,toCreasedNormals};THREE.BufferGeometryUtils=BufferGeometryUtils})();(function(){class WorkerPool{constructor(pool=4){this.pool=pool;this.queue=[];this.workers=[];this.workersResolve=[];this.workerStatus=0}_initWorker(workerId){if(!this.workers[workerId]){const worker=this.workerCreator();worker.addEventListener("message",this._onMessage.bind(this,workerId));this.workers[workerId]=worker}}_getIdleWorker(){for(let i=0;i{const workerId=this._getIdleWorker();if(workerId!==-1){this._initWorker(workerId);this.workerStatus|=1<worker.terminate());this.workersResolve.length=0;this.workers.length=0;this.queue.length=0;this.workerStatus=0}}THREE.WorkerPool=WorkerPool})();(function(){const t=0,e=1,n=2,i=3,s=0,a=0,r=2,o=0,l=1,f=160,U=161,c=162,h=163,_=0,p=1,g=0,y=1,x=2,u=3,b=4,d=5,m=6,w=7,D=8,B=9,L=10,A=11,k=12,v=13,S=14,I=15,O=16,T=17,V=18,E=0,F=1,P=2,C=3,z=4,M=5,W=6,N=7,H=8,K=9,X=10,j=11,R=0,Y=1,q=2,G=13,J=14,Q=15,Z=128,$=64,tt=32,et=16,nt=0,it=1,st=2,at=3,rt=4,ot=5,lt=6,ft=7,Ut=8,ct=9,ht=10,_t=13,pt=14,gt=15,yt=16,xt=17,ut=20,bt=21,dt=22,mt=23,wt=24,Dt=27,Bt=28,Lt=29,At=30,kt=31,vt=34,St=35,It=36,Ot=37,Tt=38,Vt=41,Et=42,Ft=43,Pt=44,Ct=45,zt=48,Mt=49,Wt=50,Nt=58,Ht=59,Kt=62,Xt=63,jt=64,Rt=65,Yt=68,qt=69,Gt=70,Jt=71,Qt=74,Zt=75,$t=76,te=77,ee=78,ne=81,ie=82,se=83,ae=84,re=85,oe=88,le=89,fe=90,Ue=91,ce=92,he=95,_e=96,pe=97,ge=98,ye=99,xe=100,ue=101,be=102,de=103,me=104,we=105,De=106,Be=107,Le=108,Ae=109,ke=110,ve=111,Se=112,Ie=113,Oe=114,Te=115,Ve=116,Ee=117,Fe=118,Pe=119,Ce=120,ze=121,Me=122,We=123,Ne=124,He=125,Ke=126,Xe=127,je=128,Re=129,Ye=130,qe=131,Ge=132,Je=133,Qe=134,Ze=135,$e=136,tn=137,en=138,nn=139,sn=140,an=141,rn=142,on=143,ln=144,fn=145,Un=146,cn=147,hn=148,_n=149,pn=150,gn=151,yn=152,xn=153,un=154,bn=155,dn=156,mn=157,wn=158,Dn=159,Bn=160,Ln=161,An=162,kn=163,vn=164,Sn=165,In=166,On=167,Tn=168,Vn=169,En=170,Fn=171,Pn=172,Cn=173,zn=174,Mn=175,Wn=176,Nn=177,Hn=178,Kn=179,Xn=180,jn=181,Rn=182,Yn=183,qn=184,Gn=1000156007,Jn=1000156008,Qn=1000156009,Zn=1000156010,$n=1000156011,ti=1000156017,ei=1000156018,ni=1000156019,ii=1000156020,si=1000156021,ai=1000054e3,ri=1000054001,oi=1000054002,li=1000054003,fi=1000054004,Ui=1000054005,ci=1000054006,hi=1000054007,_i=1000066e3,pi=1000066001,gi=1000066002,yi=1000066003,xi=1000066004,ui=1000066005,bi=1000066006,di=1000066007,mi=1000066008,wi=1000066009,Di=1000066010,Bi=1000066011,Li=1000066012,Ai=1000066013,ki=100034e4,vi=1000340001;class Si{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class Ii{constructor(t,e,n,i){this._dataView=new DataView(t.buffer,t.byteOffset+e,n),this._littleEndian=i,this._offset=0}_nextUint8(){const t=this._dataView.getUint8(this._offset);return this._offset+=1,t}_nextUint16(){const t=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,t}_nextUint32(){const t=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,t}_nextUint64(){const t=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,t}_nextInt32(){const t=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,t}_skip(t){return this._offset+=t,this}_scan(t,e=0){const n=this._offset;let i=0;for(;this._dataView.getUint8(this._offset)!==e&&i0?c+a.byteLength:0;h%8&&(h+=8-h%8);const _=[],p=new DataView(new ArrayBuffer(3*t.levels.length*8));let g=(h||c+a.byteLength)+n.byteLength;for(let e=0;e0?h:0),!0),x.setBigUint64(60,BigInt(n.byteLength),!0),new Uint8Array(Fi([new Uint8Array(Ti).buffer,y,p.buffer,o,a,h>0?new ArrayBuffer(h-(c+a.byteLength)):new ArrayBuffer(0),n,..._]))}var KTXParse=THREE.KTXParse={};KTXParse.KHR_DF_CHANNEL_RGBSDA_ALPHA=Q,KTXParse.KHR_DF_CHANNEL_RGBSDA_BLUE=q,KTXParse.KHR_DF_CHANNEL_RGBSDA_DEPTH=J,KTXParse.KHR_DF_CHANNEL_RGBSDA_GREEN=Y,KTXParse.KHR_DF_CHANNEL_RGBSDA_RED=R,KTXParse.KHR_DF_CHANNEL_RGBSDA_STENCIL=G,KTXParse.KHR_DF_FLAG_ALPHA_PREMULTIPLIED=p,KTXParse.KHR_DF_FLAG_ALPHA_STRAIGHT=_,KTXParse.KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT=s,KTXParse.KHR_DF_MODEL_ASTC=c,KTXParse.KHR_DF_MODEL_ETC1=f,KTXParse.KHR_DF_MODEL_ETC1S=h,KTXParse.KHR_DF_MODEL_ETC2=U,KTXParse.KHR_DF_MODEL_RGBSDA=l,KTXParse.KHR_DF_MODEL_UNSPECIFIED=o,KTXParse.KHR_DF_PRIMARIES_ACES=W,KTXParse.KHR_DF_PRIMARIES_ACESCC=N,KTXParse.KHR_DF_PRIMARIES_ADOBERGB=j,KTXParse.KHR_DF_PRIMARIES_BT2020=z,KTXParse.KHR_DF_PRIMARIES_BT601_EBU=P,KTXParse.KHR_DF_PRIMARIES_BT601_SMPTE=C,KTXParse.KHR_DF_PRIMARIES_BT709=F,KTXParse.KHR_DF_PRIMARIES_CIEXYZ=M,KTXParse.KHR_DF_PRIMARIES_DISPLAYP3=X,KTXParse.KHR_DF_PRIMARIES_NTSC1953=H,KTXParse.KHR_DF_PRIMARIES_PAL525=K,KTXParse.KHR_DF_PRIMARIES_UNSPECIFIED=E,KTXParse.KHR_DF_SAMPLE_DATATYPE_EXPONENT=tt,KTXParse.KHR_DF_SAMPLE_DATATYPE_FLOAT=Z,KTXParse.KHR_DF_SAMPLE_DATATYPE_LINEAR=et,KTXParse.KHR_DF_SAMPLE_DATATYPE_SIGNED=$,KTXParse.KHR_DF_TRANSFER_ACESCC=O,KTXParse.KHR_DF_TRANSFER_ACESCCT=T,KTXParse.KHR_DF_TRANSFER_ADOBERGB=V,KTXParse.KHR_DF_TRANSFER_BT1886=w,KTXParse.KHR_DF_TRANSFER_DCIP3=k,KTXParse.KHR_DF_TRANSFER_HLG_EOTF=B,KTXParse.KHR_DF_TRANSFER_HLG_OETF=D,KTXParse.KHR_DF_TRANSFER_ITU=u,KTXParse.KHR_DF_TRANSFER_LINEAR=y,KTXParse.KHR_DF_TRANSFER_NTSC=b,KTXParse.KHR_DF_TRANSFER_PAL625_EOTF=S,KTXParse.KHR_DF_TRANSFER_PAL_OETF=v,KTXParse.KHR_DF_TRANSFER_PQ_EOTF=L,KTXParse.KHR_DF_TRANSFER_PQ_OETF=A,KTXParse.KHR_DF_TRANSFER_SLOG=d,KTXParse.KHR_DF_TRANSFER_SLOG2=m,KTXParse.KHR_DF_TRANSFER_SRGB=x,KTXParse.KHR_DF_TRANSFER_ST240=I,KTXParse.KHR_DF_TRANSFER_UNSPECIFIED=g,KTXParse.KHR_DF_VENDORID_KHRONOS=a,KTXParse.KHR_DF_VERSION=r,KTXParse.KHR_SUPERCOMPRESSION_BASISLZ=e,KTXParse.KHR_SUPERCOMPRESSION_NONE=t,KTXParse.KHR_SUPERCOMPRESSION_ZLIB=i,KTXParse.KHR_SUPERCOMPRESSION_ZSTD=n,KTXParse.KTX2Container=Si,KTXParse.VK_FORMAT_A1R5G5B5_UNORM_PACK16=Ut,KTXParse.VK_FORMAT_A2B10G10R10_SINT_PACK32=qt,KTXParse.VK_FORMAT_A2B10G10R10_SNORM_PACK32=Rt,KTXParse.VK_FORMAT_A2B10G10R10_UINT_PACK32=Yt,KTXParse.VK_FORMAT_A2B10G10R10_UNORM_PACK32=jt,KTXParse.VK_FORMAT_A2R10G10B10_SINT_PACK32=Xt,KTXParse.VK_FORMAT_A2R10G10B10_SNORM_PACK32=Ht,KTXParse.VK_FORMAT_A2R10G10B10_UINT_PACK32=Kt,KTXParse.VK_FORMAT_A2R10G10B10_UNORM_PACK32=Nt,KTXParse.VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT=vi,KTXParse.VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT=ki,KTXParse.VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT=Bi,KTXParse.VK_FORMAT_ASTC_10x10_SRGB_BLOCK=Xn,KTXParse.VK_FORMAT_ASTC_10x10_UNORM_BLOCK=Kn,KTXParse.VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT=mi,KTXParse.VK_FORMAT_ASTC_10x5_SRGB_BLOCK=zn,KTXParse.VK_FORMAT_ASTC_10x5_UNORM_BLOCK=Cn,KTXParse.VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT=wi,KTXParse.VK_FORMAT_ASTC_10x6_SRGB_BLOCK=Wn,KTXParse.VK_FORMAT_ASTC_10x6_UNORM_BLOCK=Mn,KTXParse.VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT=Di,KTXParse.VK_FORMAT_ASTC_10x8_SRGB_BLOCK=Hn,KTXParse.VK_FORMAT_ASTC_10x8_UNORM_BLOCK=Nn,KTXParse.VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT=Li,KTXParse.VK_FORMAT_ASTC_12x10_SRGB_BLOCK=Rn,KTXParse.VK_FORMAT_ASTC_12x10_UNORM_BLOCK=jn,KTXParse.VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT=Ai,KTXParse.VK_FORMAT_ASTC_12x12_SRGB_BLOCK=qn,KTXParse.VK_FORMAT_ASTC_12x12_UNORM_BLOCK=Yn,KTXParse.VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT=_i,KTXParse.VK_FORMAT_ASTC_4x4_SRGB_BLOCK=wn,KTXParse.VK_FORMAT_ASTC_4x4_UNORM_BLOCK=mn,KTXParse.VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT=pi,KTXParse.VK_FORMAT_ASTC_5x4_SRGB_BLOCK=Bn,KTXParse.VK_FORMAT_ASTC_5x4_UNORM_BLOCK=Dn,KTXParse.VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT=gi,KTXParse.VK_FORMAT_ASTC_5x5_SRGB_BLOCK=An,KTXParse.VK_FORMAT_ASTC_5x5_UNORM_BLOCK=Ln,KTXParse.VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT=yi,KTXParse.VK_FORMAT_ASTC_6x5_SRGB_BLOCK=vn,KTXParse.VK_FORMAT_ASTC_6x5_UNORM_BLOCK=kn,KTXParse.VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT=xi,KTXParse.VK_FORMAT_ASTC_6x6_SRGB_BLOCK=In,KTXParse.VK_FORMAT_ASTC_6x6_UNORM_BLOCK=Sn,KTXParse.VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT=ui,KTXParse.VK_FORMAT_ASTC_8x5_SRGB_BLOCK=Tn,KTXParse.VK_FORMAT_ASTC_8x5_UNORM_BLOCK=On,KTXParse.VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT=bi,KTXParse.VK_FORMAT_ASTC_8x6_SRGB_BLOCK=En,KTXParse.VK_FORMAT_ASTC_8x6_UNORM_BLOCK=Vn,KTXParse.VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT=di,KTXParse.VK_FORMAT_ASTC_8x8_SRGB_BLOCK=Pn,KTXParse.VK_FORMAT_ASTC_8x8_UNORM_BLOCK=Fn,KTXParse.VK_FORMAT_B10G11R11_UFLOAT_PACK32=Me,KTXParse.VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16=$n,KTXParse.VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16=si,KTXParse.VK_FORMAT_B4G4R4A4_UNORM_PACK16=at,KTXParse.VK_FORMAT_B5G5R5A1_UNORM_PACK16=ft,KTXParse.VK_FORMAT_B5G6R5_UNORM_PACK16=ot,KTXParse.VK_FORMAT_B8G8R8A8_SINT=Mt,KTXParse.VK_FORMAT_B8G8R8A8_SNORM=Ct,KTXParse.VK_FORMAT_B8G8R8A8_SRGB=Wt,KTXParse.VK_FORMAT_B8G8R8A8_UINT=zt,KTXParse.VK_FORMAT_B8G8R8A8_UNORM=Pt,KTXParse.VK_FORMAT_B8G8R8_SINT=St,KTXParse.VK_FORMAT_B8G8R8_SNORM=kt,KTXParse.VK_FORMAT_B8G8R8_SRGB=It,KTXParse.VK_FORMAT_B8G8R8_UINT=vt,KTXParse.VK_FORMAT_B8G8R8_UNORM=At,KTXParse.VK_FORMAT_BC1_RGBA_SRGB_BLOCK=Qe,KTXParse.VK_FORMAT_BC1_RGBA_UNORM_BLOCK=Je,KTXParse.VK_FORMAT_BC1_RGB_SRGB_BLOCK=Ge,KTXParse.VK_FORMAT_BC1_RGB_UNORM_BLOCK=qe,KTXParse.VK_FORMAT_BC2_SRGB_BLOCK=$e,KTXParse.VK_FORMAT_BC2_UNORM_BLOCK=Ze,KTXParse.VK_FORMAT_BC3_SRGB_BLOCK=en,KTXParse.VK_FORMAT_BC3_UNORM_BLOCK=tn,KTXParse.VK_FORMAT_BC4_SNORM_BLOCK=sn,KTXParse.VK_FORMAT_BC4_UNORM_BLOCK=nn,KTXParse.VK_FORMAT_BC5_SNORM_BLOCK=rn,KTXParse.VK_FORMAT_BC5_UNORM_BLOCK=an,KTXParse.VK_FORMAT_BC6H_SFLOAT_BLOCK=ln,KTXParse.VK_FORMAT_BC6H_UFLOAT_BLOCK=on,KTXParse.VK_FORMAT_BC7_SRGB_BLOCK=Un,KTXParse.VK_FORMAT_BC7_UNORM_BLOCK=fn,KTXParse.VK_FORMAT_D16_UNORM=Ne,KTXParse.VK_FORMAT_D16_UNORM_S8_UINT=je,KTXParse.VK_FORMAT_D24_UNORM_S8_UINT=Re,KTXParse.VK_FORMAT_D32_SFLOAT=Ke,KTXParse.VK_FORMAT_D32_SFLOAT_S8_UINT=Ye,KTXParse.VK_FORMAT_E5B9G9R9_UFLOAT_PACK32=We,KTXParse.VK_FORMAT_EAC_R11G11_SNORM_BLOCK=dn,KTXParse.VK_FORMAT_EAC_R11G11_UNORM_BLOCK=bn,KTXParse.VK_FORMAT_EAC_R11_SNORM_BLOCK=un,KTXParse.VK_FORMAT_EAC_R11_UNORM_BLOCK=xn,KTXParse.VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK=pn,KTXParse.VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK=_n,KTXParse.VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK=yn,KTXParse.VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK=gn,KTXParse.VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK=hn,KTXParse.VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK=cn,KTXParse.VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16=Zn,KTXParse.VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16=ii,KTXParse.VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG=fi,KTXParse.VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG=ai,KTXParse.VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG=Ui,KTXParse.VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG=ri,KTXParse.VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG=ci,KTXParse.VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG=oi,KTXParse.VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG=hi,KTXParse.VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG=li,KTXParse.VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16=Qn,KTXParse.VK_FORMAT_R10X6G10X6_UNORM_2PACK16=Jn,KTXParse.VK_FORMAT_R10X6_UNORM_PACK16=Gn,KTXParse.VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16=ni,KTXParse.VK_FORMAT_R12X4G12X4_UNORM_2PACK16=ei,KTXParse.VK_FORMAT_R12X4_UNORM_PACK16=ti,KTXParse.VK_FORMAT_R16G16B16A16_SFLOAT=pe,KTXParse.VK_FORMAT_R16G16B16A16_SINT=_e,KTXParse.VK_FORMAT_R16G16B16A16_SNORM=ce,KTXParse.VK_FORMAT_R16G16B16A16_UINT=he,KTXParse.VK_FORMAT_R16G16B16A16_UNORM=Ue,KTXParse.VK_FORMAT_R16G16B16_SFLOAT=fe,KTXParse.VK_FORMAT_R16G16B16_SINT=le,KTXParse.VK_FORMAT_R16G16B16_SNORM=re,KTXParse.VK_FORMAT_R16G16B16_UINT=oe,KTXParse.VK_FORMAT_R16G16B16_UNORM=ae,KTXParse.VK_FORMAT_R16G16_SFLOAT=se,KTXParse.VK_FORMAT_R16G16_SINT=ie,KTXParse.VK_FORMAT_R16G16_SNORM=ee,KTXParse.VK_FORMAT_R16G16_UINT=ne,KTXParse.VK_FORMAT_R16G16_UNORM=te,KTXParse.VK_FORMAT_R16_SFLOAT=$t,KTXParse.VK_FORMAT_R16_SINT=Zt,KTXParse.VK_FORMAT_R16_SNORM=Jt,KTXParse.VK_FORMAT_R16_UINT=Qt,KTXParse.VK_FORMAT_R16_UNORM=Gt,KTXParse.VK_FORMAT_R32G32B32A32_SFLOAT=Ae,KTXParse.VK_FORMAT_R32G32B32A32_SINT=Le,KTXParse.VK_FORMAT_R32G32B32A32_UINT=Be,KTXParse.VK_FORMAT_R32G32B32_SFLOAT=De,KTXParse.VK_FORMAT_R32G32B32_SINT=we,KTXParse.VK_FORMAT_R32G32B32_UINT=me,KTXParse.VK_FORMAT_R32G32_SFLOAT=de,KTXParse.VK_FORMAT_R32G32_SINT=be,KTXParse.VK_FORMAT_R32G32_UINT=ue,KTXParse.VK_FORMAT_R32_SFLOAT=xe,KTXParse.VK_FORMAT_R32_SINT=ye,KTXParse.VK_FORMAT_R32_UINT=ge,KTXParse.VK_FORMAT_R4G4B4A4_UNORM_PACK16=st,KTXParse.VK_FORMAT_R4G4_UNORM_PACK8=it,KTXParse.VK_FORMAT_R5G5B5A1_UNORM_PACK16=lt,KTXParse.VK_FORMAT_R5G6B5_UNORM_PACK16=rt,KTXParse.VK_FORMAT_R64G64B64A64_SFLOAT=ze,KTXParse.VK_FORMAT_R64G64B64A64_SINT=Ce,KTXParse.VK_FORMAT_R64G64B64A64_UINT=Pe,KTXParse.VK_FORMAT_R64G64B64_SFLOAT=Fe,KTXParse.VK_FORMAT_R64G64B64_SINT=Ee,KTXParse.VK_FORMAT_R64G64B64_UINT=Ve,KTXParse.VK_FORMAT_R64G64_SFLOAT=Te,KTXParse.VK_FORMAT_R64G64_SINT=Oe,KTXParse.VK_FORMAT_R64G64_UINT=Ie,KTXParse.VK_FORMAT_R64_SFLOAT=Se,KTXParse.VK_FORMAT_R64_SINT=ve,KTXParse.VK_FORMAT_R64_UINT=ke,KTXParse.VK_FORMAT_R8G8B8A8_SINT=Et,KTXParse.VK_FORMAT_R8G8B8A8_SNORM=Tt,KTXParse.VK_FORMAT_R8G8B8A8_SRGB=Ft,KTXParse.VK_FORMAT_R8G8B8A8_UINT=Vt,KTXParse.VK_FORMAT_R8G8B8A8_UNORM=Ot,KTXParse.VK_FORMAT_R8G8B8_SINT=Bt,KTXParse.VK_FORMAT_R8G8B8_SNORM=wt,KTXParse.VK_FORMAT_R8G8B8_SRGB=Lt,KTXParse.VK_FORMAT_R8G8B8_UINT=Dt,KTXParse.VK_FORMAT_R8G8B8_UNORM=mt,KTXParse.VK_FORMAT_R8G8_SINT=bt,KTXParse.VK_FORMAT_R8G8_SNORM=xt,KTXParse.VK_FORMAT_R8G8_SRGB=dt,KTXParse.VK_FORMAT_R8G8_UINT=ut,KTXParse.VK_FORMAT_R8G8_UNORM=yt,KTXParse.VK_FORMAT_R8_SINT=pt,KTXParse.VK_FORMAT_R8_SNORM=ht,KTXParse.VK_FORMAT_R8_SRGB=gt,KTXParse.VK_FORMAT_R8_UINT=_t,KTXParse.VK_FORMAT_R8_UNORM=ct,KTXParse.VK_FORMAT_S8_UINT=Xe,KTXParse.VK_FORMAT_UNDEFINED=nt,KTXParse.VK_FORMAT_X8_D24_UNORM_PACK32=He,KTXParse.read=Pi,KTXParse.write=Mi})();(function(){var CompressedTexture=THREE.CompressedTexture,Data3DTexture=THREE.Data3DTexture,DataTexture=THREE.DataTexture,FileLoader=THREE.FileLoader,FloatType=THREE.FloatType,HalfFloatType=THREE.HalfFloatType,LinearEncoding=THREE.LinearEncoding,LinearFilter=THREE.LinearFilter,LinearMipmapLinearFilter=THREE.LinearMipmapLinearFilter,Loader=THREE.Loader,RedFormat=THREE.RedFormat,RGB_ETC1_Format=THREE.RGB_ETC1_Format,RGB_ETC2_Format=THREE.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format=THREE.RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format=THREE.RGB_S3TC_DXT1_Format,RGBA_ASTC_4x4_Format=THREE.RGBA_ASTC_4x4_Format,RGBA_BPTC_Format=THREE.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format=THREE.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format=THREE.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format=THREE.RGBA_S3TC_DXT5_Format,RGBAFormat=THREE.RGBAFormat,RGFormat=THREE.RGFormat,sRGBEncoding=THREE.sRGBEncoding,UnsignedByteType=THREE.UnsignedByteType,WorkerPool=THREE.WorkerPool;var read=THREE.KTXParse.read,KHR_DF_FLAG_ALPHA_PREMULTIPLIED=THREE.KTXParse.KHR_DF_FLAG_ALPHA_PREMULTIPLIED,KHR_DF_TRANSFER_SRGB=THREE.KTXParse.KHR_DF_TRANSFER_SRGB,KHR_SUPERCOMPRESSION_NONE=THREE.KTXParse.KHR_SUPERCOMPRESSION_NONE,KHR_SUPERCOMPRESSION_ZSTD=THREE.KTXParse.KHR_SUPERCOMPRESSION_ZSTD,VK_FORMAT_UNDEFINED=THREE.KTXParse.VK_FORMAT_UNDEFINED,VK_FORMAT_R16_SFLOAT=THREE.KTXParse.VK_FORMAT_R16_SFLOAT,VK_FORMAT_R16G16_SFLOAT=THREE.KTXParse.VK_FORMAT_R16G16_SFLOAT,VK_FORMAT_R16G16B16A16_SFLOAT=THREE.KTXParse.VK_FORMAT_R16G16B16A16_SFLOAT,VK_FORMAT_R32_SFLOAT=THREE.KTXParse.VK_FORMAT_R32_SFLOAT,VK_FORMAT_R32G32_SFLOAT=THREE.KTXParse.VK_FORMAT_R32G32_SFLOAT,VK_FORMAT_R32G32B32A32_SFLOAT=THREE.KTXParse.VK_FORMAT_R32G32B32A32_SFLOAT,VK_FORMAT_R8_SRGB=THREE.KTXParse.VK_FORMAT_R8_SRGB,VK_FORMAT_R8_UNORM=THREE.KTXParse.VK_FORMAT_R8_UNORM,VK_FORMAT_R8G8_SRGB=THREE.KTXParse.VK_FORMAT_R8G8_SRGB,VK_FORMAT_R8G8_UNORM=THREE.KTXParse.VK_FORMAT_R8G8_UNORM,VK_FORMAT_R8G8B8A8_SRGB=THREE.KTXParse.VK_FORMAT_R8G8B8A8_SRGB,VK_FORMAT_R8G8B8A8_UNORM=THREE.KTXParse.VK_FORMAT_R8G8B8A8_UNORM;var ZSTDDecoder=THREE.ZSTDDecoder;const _taskCache=new WeakMap;let _activeLoaders=0;let _zstd;class KTX2Loader extends Loader{constructor(manager){super(manager);this.transcoderPath="";this.transcoderBinary=null;this.transcoderPending=null;this.workerPool=new WorkerPool;this.workerSourceURL="";this.workerConfig=null;if(typeof MSC_TRANSCODER!=="undefined"){console.warn("THREE.KTX2Loader: Please update to latest \"basis_transcoder\"."+" \"msc_basis_transcoder\" is no longer supported in three.js r125+.")}}setTranscoderPath(path){this.transcoderPath=path;return this}setWorkerLimit(num){this.workerPool.setWorkerLimit(num);return this}detectSupport(renderer){this.workerConfig={astcSupported:renderer.extensions.has("WEBGL_compressed_texture_astc"),etc1Supported:renderer.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:renderer.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:renderer.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:renderer.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:renderer.extensions.has("WEBGL_compressed_texture_pvrtc")||renderer.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")};if(renderer.capabilities.isWebGL2){this.workerConfig.etc1Supported=false}return this}init(){if(!this.transcoderPending){const jsLoader=new FileLoader(this.manager);jsLoader.setPath(this.transcoderPath);jsLoader.setWithCredentials(this.withCredentials);const jsContent=jsLoader.loadAsync("basis_transcoder.js");const binaryLoader=new FileLoader(this.manager);binaryLoader.setPath(this.transcoderPath);binaryLoader.setResponseType("arraybuffer");binaryLoader.setWithCredentials(this.withCredentials);const binaryContent=binaryLoader.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([jsContent,binaryContent]).then(([jsContent,binaryContent])=>{const fn=KTX2Loader.BasisWorker.toString();const body=["/* constants */","let _EngineFormat = "+JSON.stringify(KTX2Loader.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(KTX2Loader.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(KTX2Loader.BasisFormat),"/* basis_transcoder.js */",jsContent,"/* worker */",fn.substring(fn.indexOf("{")+1,fn.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([body]));this.transcoderBinary=binaryContent;this.workerPool.setWorkerCreator(()=>{const worker=new Worker(this.workerSourceURL);const transcoderBinary=this.transcoderBinary.slice(0);worker.postMessage({type:"init",config:this.workerConfig,transcoderBinary},[transcoderBinary]);return worker})});if(_activeLoaders>0){console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues."+" Use a single KTX2Loader instance, or call .dispose() on old instances.")}_activeLoaders++}return this.transcoderPending}load(url,onLoad,onProgress,onError){if(this.workerConfig===null){throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.")}const loader=new FileLoader(this.manager);loader.setResponseType("arraybuffer");loader.setWithCredentials(this.withCredentials);loader.load(url,buffer=>{if(_taskCache.has(buffer)){const cachedTask=_taskCache.get(buffer);return cachedTask.promise.then(onLoad).catch(onError)}this._createTexture(buffer).then(texture=>onLoad?onLoad(texture):null).catch(onError)},onProgress,onError)}_createTextureFrom(transcodeResult){const{mipmaps,width,height,format,type,error,dfdTransferFn,dfdFlags}=transcodeResult;if(type==="error")return Promise.reject(error);const texture=new CompressedTexture(mipmaps,width,height,format,UnsignedByteType);texture.minFilter=mipmaps.length===1?LinearFilter:LinearMipmapLinearFilter;texture.magFilter=LinearFilter;texture.generateMipmaps=false;texture.needsUpdate=true;texture.encoding=dfdTransferFn===KHR_DF_TRANSFER_SRGB?sRGBEncoding:LinearEncoding;texture.premultiplyAlpha=!!(dfdFlags&KHR_DF_FLAG_ALPHA_PREMULTIPLIED);return texture}_createTexture(buffer,config={}){const container=read(new Uint8Array(buffer));if(container.vkFormat!==VK_FORMAT_UNDEFINED){return createDataTexture(container)}const taskConfig=config;const texturePending=this.init().then(()=>{return this.workerPool.postMessage({type:"transcode",buffer,taskConfig:taskConfig},[buffer])}).then(e=>this._createTextureFrom(e.data));_taskCache.set(buffer,{promise:texturePending});return texturePending}dispose(){this.workerPool.dispose();if(this.workerSourceURL)URL.revokeObjectURL(this.workerSourceURL);_activeLoaders--;return this}}KTX2Loader.BasisFormat={ETC1S:0,UASTC_4x4:1};KTX2Loader.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16};KTX2Loader.EngineFormat={RGBAFormat:RGBAFormat,RGBA_ASTC_4x4_Format:RGBA_ASTC_4x4_Format,RGBA_BPTC_Format:RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:RGB_ETC1_Format,RGB_ETC2_Format:RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format:RGB_S3TC_DXT1_Format};KTX2Loader.BasisWorker=function(){let config;let transcoderPending;let BasisModule;const EngineFormat=_EngineFormat;const TranscoderFormat=_TranscoderFormat;const BasisFormat=_BasisFormat;self.addEventListener("message",function(e){const message=e.data;switch(message.type){case"init":config=message.config;init(message.transcoderBinary);break;case"transcode":transcoderPending.then(()=>{try{const{width,height,hasAlpha,mipmaps,format,dfdTransferFn,dfdFlags}=transcode(message.buffer);const buffers=[];for(let i=0;i{BasisModule={wasmBinary,onRuntimeInitialized:resolve};BASIS(BasisModule)}).then(()=>{BasisModule.initializeBasis();if(BasisModule.KTX2File===undefined){console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")}})}function transcode(buffer){const ktx2File=new BasisModule.KTX2File(new Uint8Array(buffer));function cleanup(){ktx2File.close();ktx2File.delete()}if(!ktx2File.isValid()){cleanup();throw new Error("THREE.KTX2Loader:\tInvalid or unsupported .ktx2 file")}const basisFormat=ktx2File.isUASTC()?BasisFormat.UASTC_4x4:BasisFormat.ETC1S;const width=ktx2File.getWidth();const height=ktx2File.getHeight();const levels=ktx2File.getLevels();const hasAlpha=ktx2File.getHasAlpha();const dfdTransferFn=ktx2File.getDFDTransferFunc();const dfdFlags=ktx2File.getDFDFlags();const{transcoderFormat,engineFormat}=getTranscoderFormat(basisFormat,width,height,hasAlpha);if(!width||!height||!levels){cleanup();throw new Error("THREE.KTX2Loader:\tInvalid texture")}if(!ktx2File.startTranscoding()){cleanup();throw new Error("THREE.KTX2Loader: .startTranscoding failed")}const mipmaps=[];for(let mip=0;mip{const zstd=new ZSTDDecoder;await zstd.init();resolve(zstd)})}levelData=(await _zstd).decode(level.levelData,level.uncompressedByteLength)}else{throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.")}if(TYPE_MAP[vkFormat]===FloatType){view=new Float32Array(levelData.buffer,levelData.byteOffset,levelData.byteLength/Float32Array.BYTES_PER_ELEMENT)}else if(TYPE_MAP[vkFormat]===HalfFloatType){view=new Uint16Array(levelData.buffer,levelData.byteOffset,levelData.byteLength/Uint16Array.BYTES_PER_ELEMENT)}else{view=levelData}const texture=pixelDepth===0?new DataTexture(view,pixelWidth,pixelHeight):new Data3DTexture(view,pixelWidth,pixelHeight,pixelDepth);texture.type=TYPE_MAP[vkFormat];texture.format=FORMAT_MAP[vkFormat];texture.encoding=ENCODING_MAP[vkFormat]||LinearEncoding;texture.needsUpdate=true;return Promise.resolve(texture)}THREE.KTX2Loader=KTX2Loader})();(function(){let A,I,B;const g={env:{emscripten_notify_memory_growth:function(A){B=new Uint8Array(I.exports.memory.buffer)}}};class Q{init(){return A||(A="undefined"!=typeof fetch?fetch("data:application/wasm;base64,"+C).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,g)).then(this._init):WebAssembly.instantiate(Buffer.from(C,"base64"),g).then(this._init),A)}_init(A){I=A.instance,g.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!I)throw new Error("ZSTDDecoder: Await .init() before decoding.");const Q=A.byteLength,C=I.exports.malloc(Q);B.set(A,C),g=g||Number(I.exports.ZSTD_findDecompressedSize(C,Q));const E=I.exports.malloc(g),i=I.exports.ZSTD_decompress(E,g,C,Q),D=B.slice(E,E+i);return I.exports.free(C),I.exports.free(E),D}}const C="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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";THREE.ZSTDDecoder=Q})();(function(){var BufferAttribute=THREE.BufferAttribute,BufferGeometry=THREE.BufferGeometry,Color=THREE.Color,FileLoader=THREE.FileLoader,Loader=THREE.Loader,LinearSRGBColorSpace=THREE.LinearSRGBColorSpace,SRGBColorSpace=THREE.SRGBColorSpace;const _taskCache=new WeakMap;class DRACOLoader extends Loader{constructor(manager){super(manager);this.decoderPath="";this.decoderConfig={};this.decoderBinary=null;this.decoderPending=null;this.workerLimit=4;this.workerPool=[];this.workerNextTaskID=1;this.workerSourceURL="";this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"};this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(path){this.decoderPath=path;return this}setDecoderConfig(config){this.decoderConfig=config;return this}setWorkerLimit(workerLimit){this.workerLimit=workerLimit;return this}load(url,onLoad,onProgress,onError){const loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setResponseType("arraybuffer");loader.setRequestHeader(this.requestHeader);loader.setWithCredentials(this.withCredentials);loader.load(url,buffer=>{this.parse(buffer,onLoad,onError)},onProgress,onError)}parse(buffer,onLoad,onError=()=>{}){this.decodeDracoFile(buffer,onLoad,null,null,SRGBColorSpace).catch(onError)}decodeDracoFile(buffer,callback,attributeIDs,attributeTypes,vertexColorSpace=LinearSRGBColorSpace,onError=()=>{}){const taskConfig={attributeIDs:attributeIDs||this.defaultAttributeIDs,attributeTypes:attributeTypes||this.defaultAttributeTypes,useUniqueIDs:!!attributeIDs,vertexColorSpace:vertexColorSpace};return this.decodeGeometry(buffer,taskConfig).then(callback).catch(onError)}decodeGeometry(buffer,taskConfig){const taskKey=JSON.stringify(taskConfig);if(_taskCache.has(buffer)){const cachedTask=_taskCache.get(buffer);if(cachedTask.key===taskKey){return cachedTask.promise}else if(buffer.byteLength===0){throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different "+"settings. Buffer has already been transferred.")}}let worker;const taskID=this.workerNextTaskID++;const taskCost=buffer.byteLength;const geometryPending=this._getWorker(taskID,taskCost).then(_worker=>{worker=_worker;return new Promise((resolve,reject)=>{worker._callbacks[taskID]={resolve,reject};worker.postMessage({type:"decode",id:taskID,taskConfig,buffer},[buffer])})}).then(message=>this._createGeometry(message.geometry));geometryPending.catch(()=>true).then(()=>{if(worker&&taskID){this._releaseTask(worker,taskID)}});_taskCache.set(buffer,{key:taskKey,promise:geometryPending});return geometryPending}_createGeometry(geometryData){const geometry=new BufferGeometry;if(geometryData.index){geometry.setIndex(new BufferAttribute(geometryData.index.array,1))}for(let i=0;i{loader.load(url,resolve,undefined,reject)})}preload(){this._initDecoder();return this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const useJS=typeof WebAssembly!=="object"||this.decoderConfig.type==="js";const librariesPending=[];if(useJS){librariesPending.push(this._loadLibrary("draco_decoder.js","text"))}else{librariesPending.push(this._loadLibrary("draco_wasm_wrapper.js","text"));librariesPending.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))}this.decoderPending=Promise.all(librariesPending).then(libraries=>{const jsContent=libraries[0];if(!useJS){this.decoderConfig.wasmBinary=libraries[1]}const fn=DRACOWorker.toString();const body=["/* draco decoder */",jsContent,"","/* worker */",fn.substring(fn.indexOf("{")+1,fn.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([body]))});return this.decoderPending}_getWorker(taskID,taskCost){return this._initDecoder().then(()=>{if(this.workerPool.lengthb._taskLoad?-1:1})}const worker=this.workerPool[this.workerPool.length-1];worker._taskCosts[taskID]=taskCost;worker._taskLoad+=taskCost;return worker})}_releaseTask(worker,taskID){worker._taskLoad-=worker._taskCosts[taskID];delete worker._callbacks[taskID];delete worker._taskCosts[taskID]}debug(){console.log("Task load: ",this.workerPool.map(worker=>worker._taskLoad))}dispose(){for(let i=0;i{const draco=module.draco;const decoder=new draco.Decoder;try{const geometry=decodeGeometry(draco,decoder,new Int8Array(buffer),taskConfig);const buffers=geometry.attributes.map(attr=>attr.array.buffer);if(geometry.index)buffers.push(geometry.index.array.buffer);self.postMessage({type:"decode",id:message.id,geometry},buffers)}catch(error){console.error(error);self.postMessage({type:"error",id:message.id,error:error.message})}finally{draco.destroy(decoder)}});break;}};function decodeGeometry(draco,decoder,array,taskConfig){const attributeIDs=taskConfig.attributeIDs;const attributeTypes=taskConfig.attributeTypes;let dracoGeometry;let decodingStatus;const geometryType=decoder.GetEncodedGeometryType(array);if(geometryType===draco.TRIANGULAR_MESH){dracoGeometry=new draco.Mesh;decodingStatus=decoder.DecodeArrayToMesh(array,array.byteLength,dracoGeometry)}else if(geometryType===draco.POINT_CLOUD){dracoGeometry=new draco.PointCloud;decodingStatus=decoder.DecodeArrayToPointCloud(array,array.byteLength,dracoGeometry)}else{throw new Error("THREE.DRACOLoader: Unexpected geometry type.")}if(!decodingStatus.ok()||dracoGeometry.ptr===0){throw new Error("THREE.DRACOLoader: Decoding failed: "+decodingStatus.error_msg())}const geometry={index:null,attributes:[]};for(const attributeName in attributeIDs){const attributeType=self[attributeTypes[attributeName]];let attribute;let attributeID;if(taskConfig.useUniqueIDs){attributeID=attributeIDs[attributeName];attribute=decoder.GetAttributeByUniqueId(dracoGeometry,attributeID)}else{attributeID=decoder.GetAttributeId(dracoGeometry,draco[attributeIDs[attributeName]]);if(attributeID===-1)continue;attribute=decoder.GetAttribute(dracoGeometry,attributeID)}const attributeResult=decodeAttribute(draco,decoder,dracoGeometry,attributeName,attributeType,attribute);if(attributeName==="color"){attributeResult.vertexColorSpace=taskConfig.vertexColorSpace}geometry.attributes.push(attributeResult)}if(geometryType===draco.TRIANGULAR_MESH){geometry.index=decodeIndex(draco,decoder,dracoGeometry)}draco.destroy(dracoGeometry);return geometry}function decodeIndex(draco,decoder,dracoGeometry){const numFaces=dracoGeometry.num_faces();const numIndices=numFaces*3;const byteLength=numIndices*4;const ptr=draco._malloc(byteLength);decoder.GetTrianglesUInt32Array(dracoGeometry,byteLength,ptr);const index=new Uint32Array(draco.HEAPF32.buffer,ptr,numIndices).slice();draco._free(ptr);return{array:index,itemSize:1}}function decodeAttribute(draco,decoder,dracoGeometry,attributeName,attributeType,attribute){const numComponents=attribute.num_components();const numPoints=dracoGeometry.num_points();const numValues=numPoints*numComponents;const byteLength=numValues*attributeType.BYTES_PER_ELEMENT;const dataType=getDracoDataType(draco,attributeType);const ptr=draco._malloc(byteLength);decoder.GetAttributeDataArrayForAllPoints(dracoGeometry,attribute,dataType,byteLength,ptr);const array=new attributeType(draco.HEAPF32.buffer,ptr,numValues).slice();draco._free(ptr);return{name:attributeName,array:array,itemSize:numComponents}}function getDracoDataType(draco,attributeType){switch(attributeType){case Float32Array:return draco.DT_FLOAT32;case Int8Array:return draco.DT_INT8;case Int16Array:return draco.DT_INT16;case Int32Array:return draco.DT_INT32;case Uint8Array:return draco.DT_UINT8;case Uint16Array:return draco.DT_UINT16;case Uint32Array:return draco.DT_UINT32;}}}THREE.DRACOLoader=DRACOLoader})();(function(e){var modifiedJSON={};modifiedJSON.parse=function(data){json=JSON.parse(data);json.nodes&&json.nodes.forEach((node,index)=>{(node.extras||(node.extras={})).id=index.toString()});return json};e(modifiedJSON)})(function(JSON){(function(){var AnimationClip=THREE.AnimationClip,Bone=THREE.Bone,Box3=THREE.Box3,BufferAttribute=THREE.BufferAttribute,BufferGeometry=THREE.BufferGeometry,ClampToEdgeWrapping=THREE.ClampToEdgeWrapping,Color=THREE.Color,ColorManagement=THREE.ColorManagement,DirectionalLight=THREE.DirectionalLight,DoubleSide=THREE.DoubleSide,FileLoader=THREE.FileLoader,FrontSide=THREE.FrontSide,Group=THREE.Group,ImageBitmapLoader=THREE.ImageBitmapLoader,InstancedMesh=THREE.InstancedMesh,InterleavedBuffer=THREE.InterleavedBuffer,InterleavedBufferAttribute=THREE.InterleavedBufferAttribute,Interpolant=THREE.Interpolant,InterpolateDiscrete=THREE.InterpolateDiscrete,InterpolateLinear=THREE.InterpolateLinear,Line=THREE.Line,LineBasicMaterial=THREE.LineBasicMaterial,LineLoop=THREE.LineLoop,LineSegments=THREE.LineSegments,LinearFilter=THREE.LinearFilter,LinearMipmapLinearFilter=THREE.LinearMipmapLinearFilter,LinearMipmapNearestFilter=THREE.LinearMipmapNearestFilter,LinearSRGBColorSpace=THREE.LinearSRGBColorSpace,Loader=THREE.Loader,LoaderUtils=THREE.LoaderUtils,Material=THREE.Material,MathUtils=THREE.MathUtils,Matrix4=THREE.Matrix4,Mesh=THREE.Mesh,MeshBasicMaterial=THREE.MeshBasicMaterial,MeshPhysicalMaterial=THREE.MeshPhysicalMaterial,MeshStandardMaterial=THREE.MeshStandardMaterial,MirroredRepeatWrapping=THREE.MirroredRepeatWrapping,NearestFilter=THREE.NearestFilter,NearestMipmapLinearFilter=THREE.NearestMipmapLinearFilter,NearestMipmapNearestFilter=THREE.NearestMipmapNearestFilter,NumberKeyframeTrack=THREE.NumberKeyframeTrack,Object3D=THREE.Object3D,OrthographicCamera=THREE.OrthographicCamera,PerspectiveCamera=THREE.PerspectiveCamera,PointLight=THREE.PointLight,Points=THREE.Points,PointsMaterial=THREE.PointsMaterial,PropertyBinding=THREE.PropertyBinding,Quaternion=THREE.Quaternion,QuaternionKeyframeTrack=THREE.QuaternionKeyframeTrack,RepeatWrapping=THREE.RepeatWrapping,Skeleton=THREE.Skeleton,SkinnedMesh=THREE.SkinnedMesh,Sphere=THREE.Sphere,SpotLight=THREE.SpotLight,Texture=THREE.Texture,TextureLoader=THREE.TextureLoader,TriangleFanDrawMode=THREE.TriangleFanDrawMode,TriangleStripDrawMode=THREE.TriangleStripDrawMode,Vector2=THREE.Vector2,Vector3=THREE.Vector3,VectorKeyframeTrack=THREE.VectorKeyframeTrack,SRGBColorSpace=THREE.SRGBColorSpace,InstancedBufferAttribute=THREE.InstancedBufferAttribute;var toTrianglesDrawMode=THREE.BufferGeometryUtils.toTrianglesDrawMode;class GLTFLoader extends Loader{constructor(manager){super(manager);this.dracoLoader=null;this.ktx2Loader=null;this.meshoptDecoder=null;this.pluginCallbacks=[];this.register(function(parser){return new GLTFMaterialsClearcoatExtension(parser)});this.register(function(parser){return new GLTFMaterialsDispersionExtension(parser)});this.register(function(parser){return new GLTFTextureBasisUExtension(parser)});this.register(function(parser){return new GLTFTextureWebPExtension(parser)});this.register(function(parser){return new GLTFTextureAVIFExtension(parser)});this.register(function(parser){return new GLTFMaterialsSheenExtension(parser)});this.register(function(parser){return new GLTFMaterialsTransmissionExtension(parser)});this.register(function(parser){return new GLTFMaterialsVolumeExtension(parser)});this.register(function(parser){return new GLTFMaterialsIorExtension(parser)});this.register(function(parser){return new GLTFMaterialsEmissiveStrengthExtension(parser)});this.register(function(parser){return new GLTFMaterialsSpecularExtension(parser)});this.register(function(parser){return new GLTFMaterialsIridescenceExtension(parser)});this.register(function(parser){return new GLTFMaterialsAnisotropyExtension(parser)});this.register(function(parser){return new GLTFMaterialsBumpExtension(parser)});this.register(function(parser){return new GLTFLightsExtension(parser)});this.register(function(parser){return new GLTFMeshoptCompression(parser)});this.register(function(parser){return new GLTFMeshGpuInstancing(parser)})}load(url,onLoad,onProgress,onError){const scope=this;let resourcePath;if(this.resourcePath!==""){resourcePath=this.resourcePath}else if(this.path!==""){const relativeUrl=LoaderUtils.extractUrlBase(url);resourcePath=LoaderUtils.resolveURL(relativeUrl,this.path)}else{resourcePath=LoaderUtils.extractUrlBase(url)}this.manager.itemStart(url);const _onError=function(e){if(onError){onError(e)}else{console.error(e)}scope.manager.itemError(url);scope.manager.itemEnd(url)};const loader=new FileLoader(this.manager);loader.setPath(this.path);loader.setResponseType("arraybuffer");loader.setRequestHeader(this.requestHeader);loader.setWithCredentials(this.withCredentials);loader.load(url,function(data){try{scope.parse(data,resourcePath,function(gltf){onLoad(gltf);scope.manager.itemEnd(url)},_onError)}catch(e){_onError(e)}},onProgress,_onError)}setDRACOLoader(dracoLoader){this.dracoLoader=dracoLoader;return this}setDDSLoader(){throw new Error("THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".")}setKTX2Loader(ktx2Loader){this.ktx2Loader=ktx2Loader;return this}setMeshoptDecoder(meshoptDecoder){this.meshoptDecoder=meshoptDecoder;return this}register(callback){if(this.pluginCallbacks.indexOf(callback)===-1){this.pluginCallbacks.push(callback)}return this}unregister(callback){if(this.pluginCallbacks.indexOf(callback)!==-1){this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback),1)}return this}parse(data,path,onLoad,onError){let json;const extensions={};const plugins={};const textDecoder=new TextDecoder;if(typeof data==="string"){json=JSON.parse(data)}else if(data instanceof ArrayBuffer){const magic=textDecoder.decode(new Uint8Array(data,0,4));if(magic===BINARY_EXTENSION_HEADER_MAGIC){try{extensions[EXTENSIONS.KHR_BINARY_GLTF]=new GLTFBinaryExtension(data)}catch(error){if(onError)onError(error);return}json=JSON.parse(extensions[EXTENSIONS.KHR_BINARY_GLTF].content)}else{json=JSON.parse(textDecoder.decode(data))}}else{json=data}if(json.asset===undefined||json.asset.version[0]<2){if(onError)onError(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const parser=new GLTFParser(json,{path:path||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});parser.fileLoader.setRequestHeader(this.requestHeader);for(let i=0;i=0&&plugins[extensionName]===undefined){console.warn("THREE.GLTFLoader: Unknown extension \""+extensionName+"\".")}}}}parser.setExtensions(extensions);parser.setPlugins(plugins);parser.parse(onLoad,onError)}parseAsync(data,path){const scope=this;return new Promise(function(resolve,reject){scope.parse(data,path,resolve,reject)})}}function GLTFRegistry(){let objects={};return{get:function(key){return objects[key]},add:function(key,object){objects[key]=object},remove:function(key){delete objects[key]},removeAll:function(){objects={}}}}const EXTENSIONS={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class GLTFLightsExtension{constructor(parser){this.parser=parser;this.name=EXTENSIONS.KHR_LIGHTS_PUNCTUAL;this.cache={refs:{},uses:{}}}_markDefs(){const parser=this.parser;const nodeDefs=this.parser.json.nodes||[];for(let nodeIndex=0,nodeLength=nodeDefs.length;nodeIndex=0){throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures")}else{return null}}return parser.loadTextureImage(textureIndex,extension.source,loader)}}class GLTFTextureWebPExtension{constructor(parser){this.parser=parser;this.name=EXTENSIONS.EXT_TEXTURE_WEBP;this.isSupported=null}loadTexture(textureIndex){const name=this.name;const parser=this.parser;const json=parser.json;const textureDef=json.textures[textureIndex];if(!textureDef.extensions||!textureDef.extensions[name]){return null}const extension=textureDef.extensions[name];const source=json.images[extension.source];let loader=parser.textureLoader;if(source.uri){const handler=parser.options.manager.getHandler(source.uri);if(handler!==null)loader=handler}return this.detectSupport().then(function(isSupported){if(isSupported)return parser.loadTextureImage(textureIndex,extension.source,loader);if(json.extensionsRequired&&json.extensionsRequired.indexOf(name)>=0){throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.")}return parser.loadTexture(textureIndex)})}detectSupport(){if(!this.isSupported){this.isSupported=new Promise(function(resolve){const image=new Image;image.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA";image.onload=image.onerror=function(){resolve(image.height===1)}})}return this.isSupported}}class GLTFTextureAVIFExtension{constructor(parser){this.parser=parser;this.name=EXTENSIONS.EXT_TEXTURE_AVIF;this.isSupported=null}loadTexture(textureIndex){const name=this.name;const parser=this.parser;const json=parser.json;const textureDef=json.textures[textureIndex];if(!textureDef.extensions||!textureDef.extensions[name]){return null}const extension=textureDef.extensions[name];const source=json.images[extension.source];let loader=parser.textureLoader;if(source.uri){const handler=parser.options.manager.getHandler(source.uri);if(handler!==null)loader=handler}return this.detectSupport().then(function(isSupported){if(isSupported)return parser.loadTextureImage(textureIndex,extension.source,loader);if(json.extensionsRequired&&json.extensionsRequired.indexOf(name)>=0){throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.")}return parser.loadTexture(textureIndex)})}detectSupport(){if(!this.isSupported){this.isSupported=new Promise(function(resolve){const image=new Image;image.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=";image.onload=image.onerror=function(){resolve(image.height===1)}})}return this.isSupported}}class GLTFMeshoptCompression{constructor(parser){this.name=EXTENSIONS.EXT_MESHOPT_COMPRESSION;this.parser=parser}loadBufferView(index){const json=this.parser.json;const bufferView=json.bufferViews[index];if(bufferView.extensions&&bufferView.extensions[this.name]){const extensionDef=bufferView.extensions[this.name];const buffer=this.parser.getDependency("buffer",extensionDef.buffer);const decoder=this.parser.options.meshoptDecoder;if(!decoder||!decoder.supported){if(json.extensionsRequired&&json.extensionsRequired.indexOf(this.name)>=0){throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files")}else{return null}}return buffer.then(function(res){const byteOffset=extensionDef.byteOffset||0;const byteLength=extensionDef.byteLength||0;const count=extensionDef.count;const stride=extensionDef.byteStride;const source=new Uint8Array(res,byteOffset,byteLength);if(decoder.decodeGltfBufferAsync){return decoder.decodeGltfBufferAsync(count,stride,source,extensionDef.mode,extensionDef.filter).then(function(res){return res.buffer})}else{return decoder.ready.then(function(){const result=new ArrayBuffer(count*stride);decoder.decodeGltfBuffer(new Uint8Array(result),count,stride,source,extensionDef.mode,extensionDef.filter);return result})}})}else{return null}}}class GLTFMeshGpuInstancing{constructor(parser){this.name=EXTENSIONS.EXT_MESH_GPU_INSTANCING;this.parser=parser}createNodeMesh(nodeIndex){const json=this.parser.json;const nodeDef=json.nodes[nodeIndex];if(!nodeDef.extensions||!nodeDef.extensions[this.name]||nodeDef.mesh===undefined){return null}const meshDef=json.meshes[nodeDef.mesh];for(const primitive of meshDef.primitives){if(primitive.mode!==WEBGL_CONSTANTS.TRIANGLES&&primitive.mode!==WEBGL_CONSTANTS.TRIANGLE_STRIP&&primitive.mode!==WEBGL_CONSTANTS.TRIANGLE_FAN&&primitive.mode!==undefined){return null}}const extensionDef=nodeDef.extensions[this.name];const attributesDef=extensionDef.attributes;const pending=[];const attributes={};for(const key in attributesDef){pending.push(this.parser.getDependency("accessor",attributesDef[key]).then(accessor=>{attributes[key]=accessor;return attributes[key]}))}if(pending.length<1){return null}pending.push(this.parser.createNodeMesh(nodeIndex));return Promise.all(pending).then(results=>{const nodeObject=results.pop();const meshes=nodeObject.isGroup?nodeObject.children:[nodeObject];const count=results[0].count;const instancedMeshes=[];for(const mesh of meshes){const m=new Matrix4;const p=new Vector3;const q=new Quaternion;const s=new Vector3(1,1,1);const instancedMesh=new InstancedMesh(mesh.geometry,mesh.material,count);for(let i=0;i0||uri.search(/^data\:image\/jpeg/)===0)return"image/jpeg";if(uri.search(/\.webp($|\?)/i)>0||uri.search(/^data\:image\/webp/)===0)return"image/webp";return"image/png"}const _identityMatrix=new Matrix4;class GLTFParser{constructor(json={},options={}){this.json=json;this.extensions={};this.plugins={};this.options=options;this.cache=new GLTFRegistry;this.associations=new Map;this.primitiveCache={};this.nodeCache={};this.meshCache={refs:{},uses:{}};this.cameraCache={refs:{},uses:{}};this.lightCache={refs:{},uses:{}};this.sourceCache={};this.textureCache={};this.nodeNamesUsed={};let isSafari=false;let isFirefox=false;let firefoxVersion=-1;if(typeof navigator!=="undefined"){isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===true;isFirefox=navigator.userAgent.indexOf("Firefox")>-1;firefoxVersion=isFirefox?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1}if(typeof createImageBitmap==="undefined"||isSafari||isFirefox&&firefoxVersion<98){this.textureLoader=new TextureLoader(this.options.manager)}else{this.textureLoader=new ImageBitmapLoader(this.options.manager)}this.textureLoader.setCrossOrigin(this.options.crossOrigin);this.textureLoader.setRequestHeader(this.options.requestHeader);this.fileLoader=new FileLoader(this.options.manager);this.fileLoader.setResponseType("arraybuffer");if(this.options.crossOrigin==="use-credentials"){this.fileLoader.setWithCredentials(true)}}setExtensions(extensions){this.extensions=extensions}setPlugins(plugins){this.plugins=plugins}parse(onLoad,onError){const parser=this;const json=this.json;const extensions=this.extensions;this.cache.removeAll();this.nodeCache={};this._invokeAll(function(ext){return ext._markDefs&&ext._markDefs()});Promise.all(this._invokeAll(function(ext){return ext.beforeRoot&&ext.beforeRoot()})).then(function(){return Promise.all([parser.getDependencies("scene"),parser.getDependencies("animation"),parser.getDependencies("camera")])}).then(function(dependencies){const result={scene:dependencies[0][json.scene||0],scenes:dependencies[0],animations:dependencies[1],cameras:dependencies[2],asset:json.asset,parser:parser,userData:{}};addUnknownExtensionsToUserData(extensions,result,json);assignExtrasToUserData(result,json);return Promise.all(parser._invokeAll(function(ext){return ext.afterRoot&&ext.afterRoot(result)})).then(function(){for(const scene of result.scenes){scene.updateMatrixWorld()}onLoad(result)})}).catch(onError)}_markDefs(){const nodeDefs=this.json.nodes||[];const skinDefs=this.json.skins||[];const meshDefs=this.json.meshes||[];for(let skinIndex=0,skinLength=skinDefs.length;skinIndex{const mappings=this.associations.get(original);if(mappings!=null){this.associations.set(clone,mappings)}for(const[i,child]of original.children.entries()){updateMappings(child,clone.children[i])}};updateMappings(object,ref);ref.name+="_instance_"+cache.uses[index]++;return ref}_invokeOne(func){const extensions=Object.values(this.plugins);extensions.push(this);for(let i=0;i=2)bufferAttribute.setY(index,sparseValues[i*itemSize+1]);if(itemSize>=3)bufferAttribute.setZ(index,sparseValues[i*itemSize+2]);if(itemSize>=4)bufferAttribute.setW(index,sparseValues[i*itemSize+3]);if(itemSize>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return bufferAttribute})}loadTexture(textureIndex){const json=this.json;const options=this.options;const textureDef=json.textures[textureIndex];const sourceIndex=textureDef.source;const sourceDef=json.images[sourceIndex];let loader=this.textureLoader;if(sourceDef.uri){const handler=options.manager.getHandler(sourceDef.uri);if(handler!==null)loader=handler}return this.loadTextureImage(textureIndex,sourceIndex,loader)}loadTextureImage(textureIndex,sourceIndex,loader){const parser=this;const json=this.json;const textureDef=json.textures[textureIndex];const sourceDef=json.images[sourceIndex];const cacheKey=(sourceDef.uri||sourceDef.bufferView)+":"+textureDef.sampler;if(this.textureCache[cacheKey]){return this.textureCache[cacheKey]}const promise=this.loadImageSource(sourceIndex,loader).then(function(texture){texture.flipY=false;texture.name=textureDef.name||sourceDef.name||"";if(texture.name===""&&typeof sourceDef.uri==="string"&&sourceDef.uri.startsWith("data:image/")===false){texture.name=sourceDef.uri}const samplers=json.samplers||{};const sampler=samplers[textureDef.sampler]||{};texture.magFilter=WEBGL_FILTERS[sampler.magFilter]||LinearFilter;texture.minFilter=WEBGL_FILTERS[sampler.minFilter]||LinearMipmapLinearFilter;texture.wrapS=WEBGL_WRAPPINGS[sampler.wrapS]||RepeatWrapping;texture.wrapT=WEBGL_WRAPPINGS[sampler.wrapT]||RepeatWrapping;parser.associations.set(texture,{textures:textureIndex});return texture}).catch(function(){return null});this.textureCache[cacheKey]=promise;return promise}loadImageSource(sourceIndex,loader){const parser=this;const json=this.json;const options=this.options;if(this.sourceCache[sourceIndex]!==undefined){return this.sourceCache[sourceIndex].then(texture=>texture.clone())}const sourceDef=json.images[sourceIndex];const URL=self.URL||self.webkitURL;let sourceURI=sourceDef.uri||"";let isObjectURL=false;if(sourceDef.bufferView!==undefined){sourceURI=parser.getDependency("bufferView",sourceDef.bufferView).then(function(bufferView){isObjectURL=true;const blob=new Blob([bufferView],{type:sourceDef.mimeType});sourceURI=URL.createObjectURL(blob);return sourceURI})}else if(sourceDef.uri===undefined){throw new Error("THREE.GLTFLoader: Image "+sourceIndex+" is missing URI and bufferView")}const promise=Promise.resolve(sourceURI).then(function(sourceURI){return new Promise(function(resolve,reject){let onLoad=resolve;if(loader.isImageBitmapLoader===true){onLoad=function(imageBitmap){const texture=new Texture(imageBitmap);texture.needsUpdate=true;resolve(texture)}}loader.load(LoaderUtils.resolveURL(sourceURI,options.path),onLoad,undefined,reject)})}).then(function(texture){if(isObjectURL===true){URL.revokeObjectURL(sourceURI)}texture.userData.mimeType=sourceDef.mimeType||getImageURIMimeType(sourceDef.uri);return texture}).catch(function(error){console.error("THREE.GLTFLoader: Couldn't load texture",sourceURI);throw error});this.sourceCache[sourceIndex]=promise;return promise}assignTexture(materialParams,mapName,mapDef,colorSpace){const parser=this;return this.getDependency("texture",mapDef.index).then(function(texture){if(!texture)return null;if(mapDef.texCoord!==undefined&&mapDef.texCoord>0){texture=texture.clone();texture.channel=mapDef.texCoord}if(parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]){const transform=mapDef.extensions!==undefined?mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]:undefined;if(transform){const gltfReference=parser.associations.get(texture);texture=parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture,transform);parser.associations.set(texture,gltfReference)}}if(colorSpace!==undefined){texture.colorSpace=colorSpace}materialParams[mapName]=texture;return texture})}assignFinalMaterial(mesh){const geometry=mesh.geometry;let material=mesh.material;const useDerivativeTangents=geometry.attributes.tangent===undefined;const useVertexColors=geometry.attributes.color!==undefined;const useFlatShading=geometry.attributes.normal===undefined;if(mesh.isPoints){const cacheKey="PointsMaterial:"+material.uuid;let pointsMaterial=this.cache.get(cacheKey);if(!pointsMaterial){pointsMaterial=new PointsMaterial;Material.prototype.copy.call(pointsMaterial,material);pointsMaterial.color.copy(material.color);pointsMaterial.map=material.map;pointsMaterial.sizeAttenuation=false;this.cache.add(cacheKey,pointsMaterial)}material=pointsMaterial}else if(mesh.isLine){const cacheKey="LineBasicMaterial:"+material.uuid;let lineMaterial=this.cache.get(cacheKey);if(!lineMaterial){lineMaterial=new LineBasicMaterial;Material.prototype.copy.call(lineMaterial,material);lineMaterial.color.copy(material.color);lineMaterial.map=material.map;this.cache.add(cacheKey,lineMaterial)}material=lineMaterial}if(useDerivativeTangents||useVertexColors||useFlatShading){let cacheKey="ClonedMaterial:"+material.uuid+":";if(useDerivativeTangents)cacheKey+="derivative-tangents:";if(useVertexColors)cacheKey+="vertex-colors:";if(useFlatShading)cacheKey+="flat-shading:";let cachedMaterial=this.cache.get(cacheKey);if(!cachedMaterial){cachedMaterial=material.clone();if(useVertexColors)cachedMaterial.vertexColors=true;if(useFlatShading)cachedMaterial.flatShading=true;if(useDerivativeTangents){if(cachedMaterial.normalScale)cachedMaterial.normalScale.y*=-1;if(cachedMaterial.clearcoatNormalScale)cachedMaterial.clearcoatNormalScale.y*=-1}this.cache.add(cacheKey,cachedMaterial);this.associations.set(cachedMaterial,this.associations.get(material))}material=cachedMaterial}mesh.material=material}getMaterialType(){return MeshStandardMaterial}loadMaterial(materialIndex){const parser=this;const json=this.json;const extensions=this.extensions;const materialDef=json.materials[materialIndex];let materialType;const materialParams={};const materialExtensions=materialDef.extensions||{};const pending=[];if(materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]){const kmuExtension=extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];materialType=kmuExtension.getMaterialType();pending.push(kmuExtension.extendParams(materialParams,materialDef,parser))}else{const metallicRoughness=materialDef.pbrMetallicRoughness||{};materialParams.color=new Color(1,1,1);materialParams.opacity=1;if(Array.isArray(metallicRoughness.baseColorFactor)){const array=metallicRoughness.baseColorFactor;materialParams.color.setRGB(array[0],array[1],array[2],LinearSRGBColorSpace);materialParams.opacity=array[3]}if(metallicRoughness.baseColorTexture!==undefined){pending.push(parser.assignTexture(materialParams,"map",metallicRoughness.baseColorTexture,SRGBColorSpace))}materialParams.metalness=metallicRoughness.metallicFactor!==undefined?metallicRoughness.metallicFactor:1;materialParams.roughness=metallicRoughness.roughnessFactor!==undefined?metallicRoughness.roughnessFactor:1;if(metallicRoughness.metallicRoughnessTexture!==undefined){pending.push(parser.assignTexture(materialParams,"metalnessMap",metallicRoughness.metallicRoughnessTexture));pending.push(parser.assignTexture(materialParams,"roughnessMap",metallicRoughness.metallicRoughnessTexture))}materialType=this._invokeOne(function(ext){return ext.getMaterialType&&ext.getMaterialType(materialIndex)});pending.push(Promise.all(this._invokeAll(function(ext){return ext.extendMaterialParams&&ext.extendMaterialParams(materialIndex,materialParams)})))}if(materialDef.doubleSided===true){materialParams.side=DoubleSide}const alphaMode=materialDef.alphaMode||ALPHA_MODES.OPAQUE;if(alphaMode===ALPHA_MODES.BLEND){materialParams.transparent=true;materialParams.depthWrite=false}else{materialParams.transparent=false;if(alphaMode===ALPHA_MODES.MASK){materialParams.alphaTest=materialDef.alphaCutoff!==undefined?materialDef.alphaCutoff:0.5}}if(materialDef.normalTexture!==undefined&&materialType!==MeshBasicMaterial){pending.push(parser.assignTexture(materialParams,"normalMap",materialDef.normalTexture));materialParams.normalScale=new Vector2(1,1);if(materialDef.normalTexture.scale!==undefined){const scale=materialDef.normalTexture.scale;materialParams.normalScale.set(scale,scale)}}if(materialDef.occlusionTexture!==undefined&&materialType!==MeshBasicMaterial){pending.push(parser.assignTexture(materialParams,"aoMap",materialDef.occlusionTexture));if(materialDef.occlusionTexture.strength!==undefined){materialParams.aoMapIntensity=materialDef.occlusionTexture.strength}}if(materialDef.emissiveFactor!==undefined&&materialType!==MeshBasicMaterial){const emissiveFactor=materialDef.emissiveFactor;materialParams.emissive=new Color().setRGB(emissiveFactor[0],emissiveFactor[1],emissiveFactor[2],LinearSRGBColorSpace)}if(materialDef.emissiveTexture!==undefined&&materialType!==MeshBasicMaterial){pending.push(parser.assignTexture(materialParams,"emissiveMap",materialDef.emissiveTexture,SRGBColorSpace))}return Promise.all(pending).then(function(){const material=new materialType(materialParams);if(materialDef.name)material.name=materialDef.name;assignExtrasToUserData(material,materialDef);parser.associations.set(material,{materials:materialIndex});if(materialDef.extensions)addUnknownExtensionsToUserData(extensions,material,materialDef);return material})}createUniqueName(originalName){const sanitizedName=PropertyBinding.sanitizeNodeName(originalName||"");if(sanitizedName in this.nodeNamesUsed){return sanitizedName+"_"+ ++this.nodeNamesUsed[sanitizedName]}else{this.nodeNamesUsed[sanitizedName]=0;return sanitizedName}}loadGeometries(primitives){const parser=this;const extensions=this.extensions;const cache=this.primitiveCache;function createDracoPrimitive(primitive){return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive,parser).then(function(geometry){return addPrimitiveAttributes(geometry,primitive,parser)})}const pending=[];for(let i=0,il=primitives.length;i0){updateMorphTargets(mesh,meshDef)}mesh.name=parser.createUniqueName(meshDef.name||"mesh_"+meshIndex);assignExtrasToUserData(mesh,meshDef);if(primitive.extensions)addUnknownExtensionsToUserData(extensions,mesh,primitive);parser.assignFinalMaterial(mesh);meshes.push(mesh)}for(let i=0,il=meshes.length;i1){node=new Group}else if(objects.length===1){node=objects[0]}else{node=new Object3D}if(node!==objects[0]){for(let i=0,il=objects.length;i{const reducedAssociations=new Map;for(const[key,value]of parser.associations){if(key instanceof Material||key instanceof Texture){reducedAssociations.set(key,value)}}node.traverse(node=>{const mappings=parser.associations.get(node);if(mappings!=null){reducedAssociations.set(node,mappings)}});return reducedAssociations};parser.associations=reduceAssociations(scene);return scene})}_createAnimationTracks(node,inputAccessor,outputAccessor,sampler,target){const tracks=[];const targetName=node.name?node.name:node.uuid;const targetNames=[];if(PATH_PROPERTIES[target.path]===PATH_PROPERTIES.weights){node.traverse(function(object){if(object.morphTargetInfluences){targetNames.push(object.name?object.name:object.uuid)}})}else{targetNames.push(targetName)}let TypedKeyframeTrack;switch(PATH_PROPERTIES[target.path]){case PATH_PROPERTIES.weights:TypedKeyframeTrack=NumberKeyframeTrack;break;case PATH_PROPERTIES.rotation:TypedKeyframeTrack=QuaternionKeyframeTrack;break;case PATH_PROPERTIES.position:case PATH_PROPERTIES.scale:TypedKeyframeTrack=VectorKeyframeTrack;break;default:switch(outputAccessor.itemSize){case 1:TypedKeyframeTrack=NumberKeyframeTrack;break;case 2:case 3:default:TypedKeyframeTrack=VectorKeyframeTrack;break;}break;}const interpolation=sampler.interpolation!==undefined?INTERPOLATION[sampler.interpolation]:InterpolateLinear;const outputArray=this._getArrayFromAccessor(outputAccessor);for(let j=0,jl=targetNames.length;j1)x+=1;if(p.y<-1)y-=1;else if(p.y>1)y+=1;max=Math.max(p.x*camera.aspect,p.y,max);min=Math.min(p.x*camera.aspect,p.y,min)});this.isVisible=this.isDrawable&&Math.abs(x)deviceMin}}CSS3DObject.prototype.isCSS3DObject=true;THREE.CSS3DObject=CSS3DObject;class CSS3DQuad extends Object3D{constructor(element){super();this.contentWidth=100;this.contentHeight=100;this.vertices=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.projectedVertices=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.containerElement=document.createElement("div");this.containerElement.style.position="absolute";this.containerElement.style.pointerEvents="none";this.containerElement.style.overflow="hidden";this.element=element||document.createElement("div");this.containerElement.appendChild(this.element);this.element.style.position="absolute";this.element.style.pointerEvents="none"}copy(source,recursive){super.copy(source,recursive);for(var i=0;i<4;i++)this.vertices[i].copy(source.vertices[i]);return this}projectVertices(camera){if(this.matrixWorldNeedsUpdate)this.updateMatrixWorld();projectVertices(this,camera);var pv=this.projectedVertices;this.isDrawable=pv[0].z<0&&pv[1].z<0&&pv[2].z<0&&pv[3].z<0;var x=0,y=0;var max=0,min=0;pv.forEach(function(p){if(p.x<-1)x-=1;else if(p.x>1)x+=1;if(p.y<-1)y-=1;else if(p.y>1)y+=1;max=Math.max(p.x*camera.aspect,p.y,max);min=Math.min(p.x*camera.aspect,p.y,min)});this.isVisible=this.isDrawable&&Math.abs(x)deviceMin}}CSS3DQuad.prototype.isCSS3DQuad=true;THREE.CSS3DQuad=CSS3DQuad;class CSS3DRectangle extends CSS3DQuad{constructor(element){super(element)}updateVertices(){this.vertices[0].set(-this.contentWidth*0.5,+this.contentHeight*0.5,0);this.vertices[1].set(+this.contentWidth*0.5,+this.contentHeight*0.5,0);this.vertices[2].set(+this.contentWidth*0.5,-this.contentHeight*0.5,0);this.vertices[3].set(-this.contentWidth*0.5,-this.contentHeight*0.5,0)}}CSS3DRectangle.prototype.isCSS3DRectangle=true;THREE.CSS3DRectangle=CSS3DRectangle;var _matrix=new THREE.Matrix4;class CSS3DRenderer{constructor(){var _this=this;var _width,_height;var _widthHalf,_heightHalf;var _fov;var _cameraStyle;var cache={objects:new WeakMap};var domElement=document.createElement("div");domElement.style.overflow="hidden";this.domElement=domElement;this.getSize=function(){return{width:_width,height:_height}};this.render=function(scene,camera){_fov=camera.projectionMatrix.elements[5]*_heightHalf;if(scene.matrixWorldAutoUpdate===true)scene.updateMatrixWorld();_cameraStyle="translateZ("+_fov+"px)"+getCameraCSSMatrix(camera.matrixWorldInverse)+"translate("+_widthHalf+"px,"+_heightHalf+"px)";renderObject(scene,scene,camera)};this.setSize=function(width,height){_width=width;_height=height;_widthHalf=_width/2;_heightHalf=_height/2;domElement.style.width=_width+"px";domElement.style.height=_height+"px"};function renderObject(object,scene,camera){if(object.isCSS3DObject||object.isCSS3DQuad){object.onBeforeRender(_this,scene,camera);var cachedObject=cache.objects.get(object)||{};var cacheChanged=false;if(object.isVisible){if(object.isCSS3DQuad){var pv=object.projectedVertices;var x0=(1+pv[0].x)*0.5*_width,y0=(1-pv[0].y)*0.5*_height,x1=(1+pv[1].x)*0.5*_width,y1=(1-pv[1].y)*0.5*_height,x2=(1+pv[2].x)*0.5*_width,y2=(1-pv[2].y)*0.5*_height,x3=(1+pv[3].x)*0.5*_width,y3=(1-pv[3].y)*0.5*_height;createQuadMatrix(object.contentWidth,object.contentHeight,x0,y0,x1,y1,x3,y3,x2,y2,_matrix.elements);var elementStyle=getQuadCSSMatrix(_matrix);if(cachedObject.elementStyle!=elementStyle){cachedObject.elementStyle=object.element.style.transform=elementStyle;cacheChanged=true}if(cachedObject.width!==_width||cachedObject.height!==_height){object.containerElement.style.width=(cachedObject.width=_width)+"px";object.containerElement.style.height=(cachedObject.height=_height)+"px";cacheChanged=true}}else{var elementStyle=getObjectCSSMatrix(object.matrixWorld);if(cachedObject.cameraFov!==_fov){object.containerElement.style.perspective=(cachedObject.cameraFov=_fov)+"px";cacheChanged=true}if(cachedObject.width!==_width||cachedObject.height!==_height){object.cameraElement.style.width=object.containerElement.style.width=(cachedObject.width=_width)+"px";object.cameraElement.style.height=object.containerElement.style.height=(cachedObject.height=_height)+"px";cacheChanged=true}if(cachedObject.cameraStyle!==_cameraStyle){cachedObject.cameraStyle=object.cameraElement.style.transform=_cameraStyle;cacheChanged=true}if(cachedObject.elementStyle!==elementStyle){cachedObject.elementStyle=object.element.style.transform=elementStyle;cacheChanged=true}}object.containerElement.style.left="0"}else{object.containerElement.style.left=_width+"px"}if(cacheChanged)cache.objects.set(object,cachedObject);object.containerElement.style.display=object.visible?"":"none";if(object.containerElement.parentNode!==domElement)domElement.appendChild(object.containerElement);object.onAfterRender(_this,scene,camera)}for(var i=0,l=object.children.length;i-1e-10?0:value}function getCameraCSSMatrix(matrix){var elements=matrix.elements;return"matrix3d("+epsilon(elements[0])+","+epsilon(-elements[1])+","+epsilon(elements[2])+","+epsilon(elements[3])+","+epsilon(elements[4])+","+epsilon(-elements[5])+","+epsilon(elements[6])+","+epsilon(elements[7])+","+epsilon(elements[8])+","+epsilon(-elements[9])+","+epsilon(elements[10])+","+epsilon(elements[11])+","+epsilon(elements[12])+","+epsilon(-elements[13])+","+epsilon(elements[14])+","+epsilon(elements[15])+")"}function getObjectCSSMatrix(matrix){var elements=matrix.elements;var matrix3d="matrix3d("+epsilon(elements[0])+","+epsilon(elements[1])+","+epsilon(elements[2])+","+epsilon(elements[3])+","+epsilon(-elements[4])+","+epsilon(-elements[5])+","+epsilon(-elements[6])+","+epsilon(-elements[7])+","+epsilon(elements[8])+","+epsilon(elements[9])+","+epsilon(elements[10])+","+epsilon(elements[11])+","+epsilon(elements[12])+","+epsilon(elements[13])+","+epsilon(elements[14])+","+epsilon(elements[15])+")";return"translate(-50%,-50%)"+matrix3d}function getQuadCSSMatrix(matrix){var elements=matrix.elements;var matrix3d="matrix3d("+epsilon(elements[0])+","+epsilon(elements[1])+","+epsilon(elements[2])+","+epsilon(elements[3])+","+epsilon(elements[4])+","+epsilon(elements[5])+","+epsilon(elements[6])+","+epsilon(elements[7])+","+epsilon(elements[8])+","+epsilon(elements[9])+","+epsilon(elements[10])+","+epsilon(elements[11])+","+epsilon(elements[12])+","+epsilon(elements[13])+","+epsilon(elements[14])+","+epsilon(elements[15])+")";return matrix3d}}};THREE.CSS3DRenderer=CSS3DRenderer;function projectVertices(object,camera){for(var index=0;index{if(object.isMesh){resources.add(object.geometry);resources.add(object.material)}});for(const resource of resources){resource.dispose()}}}function createAreaLightMaterial(intensity){const material=new MeshBasicMaterial;material.color.setScalar(intensity);return material}THREE.RoomEnvironment=RoomEnvironment})();(function(t,e){e(t.THREE=t.THREE||{})})(this,function(THREE){var CubeReflectionMapping=THREE.CubeReflectionMapping,CubeRefractionMapping=THREE.CubeRefractionMapping,CubeUVReflectionMapping=THREE.CubeUVReflectionMapping,LinearEncoding=THREE.LinearEncoding,LinearFilter=THREE.LinearFilter,NoToneMapping=THREE.NoToneMapping,NoBlending=THREE.NoBlending,RGBAFormat=THREE.RGBAFormat,HalfFloatType=THREE.HalfFloatType,BufferAttribute=THREE.BufferAttribute,BufferGeometry=THREE.BufferGeometry,Mesh=THREE.Mesh,OrthographicCamera=THREE.OrthographicCamera,PerspectiveCamera=THREE.PerspectiveCamera,ShaderMaterial=THREE.ShaderMaterial,Vector3=THREE.Vector3,Color=THREE.Color,WebGLRenderTarget=THREE.WebGLRenderTarget,MeshBasicMaterial=THREE.MeshBasicMaterial,BoxGeometry=THREE.BoxGeometry,BackSide=THREE.BackSide;const LOD_MIN=4;const EXTRA_LOD_SIGMA=[0.125,0.215,0.35,0.446,0.526,0.582];const MAX_SAMPLES=20;const _flatCamera=new OrthographicCamera;const _clearColor=new Color;let _oldTarget=null;const PHI=(1+Math.sqrt(5))/2;const INV_PHI=1/PHI;const _axisDirections=[new Vector3(1,1,1),new Vector3(-1,1,1),new Vector3(1,1,-1),new Vector3(-1,1,-1),new Vector3(0,PHI,INV_PHI),new Vector3(0,PHI,-INV_PHI),new Vector3(INV_PHI,0,PHI),new Vector3(-INV_PHI,0,PHI),new Vector3(PHI,INV_PHI,0),new Vector3(-PHI,INV_PHI,0)];class PMREMGenerator{constructor(renderer){this._renderer=renderer;this._pingPongRenderTarget=null;this._lodMax=0;this._cubeSize=0;this._lodPlanes=[];this._sizeLods=[];this._sigmas=[];this._blurMaterial=null;this._cubemapMaterial=null;this._equirectMaterial=null;this._compileMaterial(this._blurMaterial)}fromScene(scene,sigma=0,near=0.1,far=100){_oldTarget=this._renderer.getRenderTarget();this._setSize(256);const cubeUVRenderTarget=this._allocateTargets();cubeUVRenderTarget.depthBuffer=true;this._sceneToCubeUV(scene,near,far,cubeUVRenderTarget);if(sigma>0){this._blur(cubeUVRenderTarget,0,0,sigma)}this._applyPMREM(cubeUVRenderTarget);this._cleanup(cubeUVRenderTarget);return cubeUVRenderTarget}fromEquirectangular(equirectangular,renderTarget=null){return this._fromTexture(equirectangular,renderTarget)}fromCubemap(cubemap,renderTarget=null){return this._fromTexture(cubemap,renderTarget)}compileCubemapShader(){if(this._cubemapMaterial===null){this._cubemapMaterial=_getCubemapMaterial();this._compileMaterial(this._cubemapMaterial)}}compileEquirectangularShader(){if(this._equirectMaterial===null){this._equirectMaterial=_getEquirectMaterial();this._compileMaterial(this._equirectMaterial)}}dispose(){this._dispose();if(this._cubemapMaterial!==null)this._cubemapMaterial.dispose();if(this._equirectMaterial!==null)this._equirectMaterial.dispose()}_setSize(cubeSize){this._lodMax=Math.floor(Math.log2(cubeSize));this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){if(this._blurMaterial!==null)this._blurMaterial.dispose();if(this._pingPongRenderTarget!==null)this._pingPongRenderTarget.dispose();for(let i=0;i2?size:0,size,size);renderer.setRenderTarget(cubeUVRenderTarget);if(useSolidColor){renderer.render(backgroundBox,cubeCamera)}renderer.render(scene,cubeCamera)}backgroundBox.geometry.dispose();backgroundBox.material.dispose();renderer.toneMapping=toneMapping;renderer.autoClear=originalAutoClear;scene.background=background}_textureToCubeUV(texture,cubeUVRenderTarget){const renderer=this._renderer;const isCubeTexture=texture.mapping===CubeReflectionMapping||texture.mapping===CubeRefractionMapping;if(isCubeTexture){if(this._cubemapMaterial===null){this._cubemapMaterial=_getCubemapMaterial()}this._cubemapMaterial.uniforms.flipEnvMap.value=texture.isRenderTargetTexture===false?-1:1}else{if(this._equirectMaterial===null){this._equirectMaterial=_getEquirectMaterial()}}const material=isCubeTexture?this._cubemapMaterial:this._equirectMaterial;const mesh=new Mesh(this._lodPlanes[0],material);const uniforms=material.uniforms;uniforms["envMap"].value=texture;const size=this._cubeSize;_setViewport(cubeUVRenderTarget,0,0,3*size,2*size);renderer.setRenderTarget(cubeUVRenderTarget);renderer.render(mesh,_flatCamera)}_applyPMREM(cubeUVRenderTarget){const renderer=this._renderer;const autoClear=renderer.autoClear;renderer.autoClear=false;for(let i=1;iMAX_SAMPLES){console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`)}const weights=[];let sum=0;for(let i=0;i_lodMax-LOD_MIN?lodOut-_lodMax+LOD_MIN:0);const y=4*(this._cubeSize-outputSize);_setViewport(targetOut,x,y,3*outputSize,2*outputSize);renderer.setRenderTarget(targetOut);renderer.render(blurMesh,_flatCamera)}}function _createPlanes(lodMax){const lodPlanes=[];const sizeLods=[];const sigmas=[];let lod=lodMax;const totalLods=lodMax-LOD_MIN+1+EXTRA_LOD_SIGMA.length;for(let i=0;ilodMax-LOD_MIN){sigma=EXTRA_LOD_SIGMA[i-lodMax+LOD_MIN-1]}else if(i===0){sigma=0}sigmas.push(sigma);const texelSize=1/(sizeLod-2);const min=-texelSize;const max=1+texelSize;const uv1=[min,min,max,min,max,max,min,min,max,max,min,max];const cubeFaces=6;const vertices=6;const positionSize=3;const uvSize=2;const faceIndexSize=1;const position=new Float32Array(positionSize*vertices*cubeFaces);const uv=new Float32Array(uvSize*vertices*cubeFaces);const faceIndex=new Float32Array(faceIndexSize*vertices*cubeFaces);for(let face=0;face2?0:-1;const coordinates=[x,y,0,x+2/3,y,0,x+2/3,y+1,0,x,y,0,x+2/3,y+1,0,x,y+1,0];position.set(coordinates,positionSize*vertices*face);uv.set(uv1,uvSize*vertices*face);const fill=[face,face,face,face,face,face];faceIndex.set(fill,faceIndexSize*vertices*face)}const planes=new BufferGeometry;planes.setAttribute("position",new BufferAttribute(position,positionSize));planes.setAttribute("uv",new BufferAttribute(uv,uvSize));planes.setAttribute("faceIndex",new BufferAttribute(faceIndex,faceIndexSize));lodPlanes.push(planes);if(lod>LOD_MIN){lod--}}return{lodPlanes,sizeLods,sigmas}}function _createRenderTarget(width,height,params){const cubeUVRenderTarget=new WebGLRenderTarget(width,height,params);cubeUVRenderTarget.texture.mapping=CubeUVReflectionMapping;cubeUVRenderTarget.texture.name="PMREM.cubeUv";cubeUVRenderTarget.scissorTest=true;return cubeUVRenderTarget}function _setViewport(target,x,y,width,height){target.viewport.set(x,y,width,height);target.scissor.set(x,y,width,height)}function _getBlurShader(lodMax,width,height){const weights=new Float32Array(MAX_SAMPLES);const poleAxis=new Vector3(0,1,0);const shaderMaterial=new ShaderMaterial({name:"SphericalGaussianBlur",defines:{"n":MAX_SAMPLES,"CUBEUV_TEXEL_WIDTH":1/width,"CUBEUV_TEXEL_HEIGHT":1/height,"CUBEUV_MAX_MIP":`${lodMax}.0`},uniforms:{"envMap":{value:null},"samples":{value:1},"weights":{value:weights},"latitudinal":{value:false},"dTheta":{value:0},"mipInt":{value:0},"poleAxis":{value:poleAxis}},vertexShader:_getCommonVertexShader(),fragmentShader:` precision mediump float; precision mediump int; varying vec3 vOutputDirection; uniform sampler2D envMap; uniform int samples; uniform float weights[ n ]; uniform bool latitudinal; uniform float dTheta; uniform float mipInt; uniform vec3 poleAxis; #define ENVMAP_TYPE_CUBE_UV #include vec3 getSample( float theta, vec3 axis ) { float cosTheta = cos( theta ); // Rodrigues' axis-angle rotation vec3 sampleDirection = vOutputDirection * cosTheta + cross( axis, vOutputDirection ) * sin( theta ) + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); return bilinearCubeUV( envMap, sampleDirection, mipInt ); } void main() { vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); if ( all( equal( axis, vec3( 0.0 ) ) ) ) { axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); } axis = normalize( axis ); gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); for ( int i = 1; i < n; i++ ) { if ( i >= samples ) { break; } float theta = dTheta * float( i ); gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); } } `,blending:NoBlending,depthTest:false,depthWrite:false});return shaderMaterial}function _getEquirectMaterial(){return new ShaderMaterial({name:"EquirectangularToCubeUV",uniforms:{"envMap":{value:null}},vertexShader:_getCommonVertexShader(),fragmentShader:` precision mediump float; precision mediump int; varying vec3 vOutputDirection; uniform sampler2D envMap; #include void main() { vec3 outputDirection = normalize( vOutputDirection ); vec2 uv = equirectUv( outputDirection ); gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } `,blending:NoBlending,depthTest:false,depthWrite:false})}function _getCubemapMaterial(){return new ShaderMaterial({name:"CubemapToCubeUV",uniforms:{"envMap":{value:null},"flipEnvMap":{value:-1}},vertexShader:_getCommonVertexShader(),fragmentShader:` precision mediump float; precision mediump int; uniform float flipEnvMap; varying vec3 vOutputDirection; uniform samplerCube envMap; void main() { gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); } `,blending:NoBlending,depthTest:false,depthWrite:false})}function _getCommonVertexShader(){return` precision mediump float; precision mediump int; attribute float faceIndex; varying vec3 vOutputDirection; // RH coordinate system; PMREM face-indexing convention vec3 getDirection( vec2 uv, float face ) { uv = 2.0 * uv - 1.0; vec3 direction = vec3( uv, 1.0 ); if ( face == 0.0 ) { direction = direction.zyx; // ( 1, v, u ) pos x } else if ( face == 1.0 ) { direction = direction.xzy; direction.xz *= -1.0; // ( -u, 1, -v ) pos y } else if ( face == 2.0 ) { direction.x *= -1.0; // ( -u, v, 1 ) pos z } else if ( face == 3.0 ) { direction = direction.zyx; direction.xz *= -1.0; // ( -1, v, -u ) neg x } else if ( face == 4.0 ) { direction = direction.xzy; direction.xy *= -1.0; // ( -u, -1, v ) neg y } else if ( face == 5.0 ) { direction.z *= -1.0; // ( u, v, -1 ) neg z } return direction; } void main() { vOutputDirection = getDirection( uv, faceIndex ); gl_Position = vec4( position, 1.0 ); } `}THREE.PMREMGenerator=PMREMGenerator});(function(t,e){e(t,t.THREE=t.THREE||{})})(this,function(globalThis,THREE){const $5OpyM$Spherical=THREE.Spherical;const $5OpyM$Vector3=THREE.Vector3;const $5OpyM$MathUtils=THREE.MathUtils;const $5OpyM$Sphere=THREE.Sphere;const $5OpyM$Group=THREE.Group;const $5OpyM$PointsMaterial=THREE.PointsMaterial;const $5OpyM$MeshStandardMaterial=THREE.MeshStandardMaterial;const $5OpyM$Box3Helper=THREE.Box3Helper;const $5OpyM$Color=THREE.Color;const $5OpyM$Matrix4=THREE.Matrix4;const $5OpyM$LoadingManager=THREE.LoadingManager;const $5OpyM$Vector2=THREE.Vector2;const $5OpyM$Frustum=THREE.Frustum;const $5OpyM$DefaultLoadingManager=THREE.DefaultLoadingManager;const $5OpyM$BufferGeometry=THREE.BufferGeometry;const $5OpyM$BufferAttribute=THREE.BufferAttribute;const $5OpyM$Points=THREE.Points;const $5OpyM$Quaternion=THREE.Quaternion;const $5OpyM$InstancedMesh=THREE.InstancedMesh;const $5OpyM$Ray=THREE.Ray;const $5OpyM$Box3=THREE.Box3;const $5OpyM$LineBasicMaterial=THREE.LineBasicMaterial;const $5OpyM$LineSegments=THREE.LineSegments;const $5OpyM$BoxGeometry=THREE.BoxGeometry;const $5OpyM$EdgesGeometry=THREE.EdgesGeometry;const $5OpyM$Mesh=THREE.Mesh;const $5OpyM$Euler=THREE.Euler;const $5OpyM$GLTFLoader=THREE.GLTFLoader;var $parcel$global=typeof globalThis!=="undefined"?globalThis:typeof self!=="undefined"?self:typeof window!=="undefined"?window:typeof global!=="undefined"?global:{};var $parcel$modules={};var $parcel$inits={};var parcelRequire=$parcel$global["parcelRequire5fa1"];if(parcelRequire==null){parcelRequire=function(id){if(id in $parcel$modules){return $parcel$modules[id].exports}if(id in $parcel$inits){var init=$parcel$inits[id];delete $parcel$inits[id];var module={id:id,exports:{}};$parcel$modules[id]=module;init.call(module.exports,module,module.exports);return module.exports}var err=new Error("Cannot find module '"+id+"'");err.code="MODULE_NOT_FOUND";throw err};parcelRequire.register=function register(id,init){$parcel$inits[id]=init};$parcel$global["parcelRequire5fa1"]=parcelRequire}parcelRequire.register("1hGdn",function(module,exports){"use strict";Object.defineProperty(module.exports,"__esModule",{value:true});module.exports.latitudeToSphericalPhi=$0ef81fee344e2f3b$var$latitudeToSphericalPhi;module.exports.sphericalPhiToLatitude=$0ef81fee344e2f3b$var$sphericalPhiToLatitude;module.exports.swapToGeoFrame=$0ef81fee344e2f3b$var$swapToGeoFrame;module.exports.swapToThreeFrame=$0ef81fee344e2f3b$var$swapToThreeFrame;module.exports.toLatLonString=$0ef81fee344e2f3b$var$toLatLonString;const $0ef81fee344e2f3b$var$_spherical=new $5OpyM$Spherical;const $0ef81fee344e2f3b$var$_vec=new $5OpyM$Vector3;const $0ef81fee344e2f3b$var$_geoResults={};function $0ef81fee344e2f3b$var$swapToGeoFrame(target){const{x:x,y:y,z:z}=target;target.x=z;target.y=x;target.z=y}function $0ef81fee344e2f3b$var$swapToThreeFrame(target){const{x:x,y:y,z:z}=target;target.z=x;target.x=y;target.y=z}function $0ef81fee344e2f3b$var$sphericalPhiToLatitude(phi){return-(phi-Math.PI/2)}function $0ef81fee344e2f3b$var$latitudeToSphericalPhi(latitude){return-latitude+Math.PI/2}function $0ef81fee344e2f3b$var$correctGeoCoordWrap(lat,lon,target={}){$0ef81fee344e2f3b$var$_spherical.theta=lon;$0ef81fee344e2f3b$var$_spherical.phi=$0ef81fee344e2f3b$var$latitudeToSphericalPhi(lat);$0ef81fee344e2f3b$var$_vec.setFromSpherical($0ef81fee344e2f3b$var$_spherical);$0ef81fee344e2f3b$var$_spherical.setFromVector3($0ef81fee344e2f3b$var$_vec);target.lat=$0ef81fee344e2f3b$var$sphericalPhiToLatitude($0ef81fee344e2f3b$var$_spherical.phi);target.lon=$0ef81fee344e2f3b$var$_spherical.theta;return target}function $0ef81fee344e2f3b$var$toHoursMinutesSecondsString(value,pos="E",neg="W"){const direction=value<0?neg:pos;value=Math.abs(value);const hours=~~value;const minDec=(value-hours)*60;const minutes=~~minDec;const secDec=(minDec-minutes)*60;const seconds=~~secDec;return`${hours}° ${minutes}' ${seconds}" ${direction}`}function $0ef81fee344e2f3b$var$toLatLonString(lat,lon,decimalFormat=false){const result=$0ef81fee344e2f3b$var$correctGeoCoordWrap(lat,lon,$0ef81fee344e2f3b$var$_geoResults);let latString,lonString;if(decimalFormat){latString=`${($5OpyM$MathUtils.RAD2DEG*result.lat).toFixed(4)}°`;lonString=`${($5OpyM$MathUtils.RAD2DEG*result.lon).toFixed(4)}°`}else{latString=$0ef81fee344e2f3b$var$toHoursMinutesSecondsString($5OpyM$MathUtils.RAD2DEG*result.lat,"N","S");lonString=$0ef81fee344e2f3b$var$toHoursMinutesSecondsString($5OpyM$MathUtils.RAD2DEG*result.lon,"E","W")}return`${latString} ${lonString}`}});var $cf838c15c8b009ba$exports={};"use strict";Object.defineProperty($cf838c15c8b009ba$exports,"__esModule",{value:true});var $cf838c15c8b009ba$var$_exportNames={DebugTilesRenderer:true,NONE:true,SCREEN_ERROR:true,GEOMETRIC_ERROR:true,DISTANCE:true,DEPTH:true,RELATIVE_DEPTH:true,IS_LEAF:true,RANDOM_COLOR:true,RANDOM_NODE_COLOR:true,CUSTOM_COLOR:true,TilesRenderer:true,B3DMLoader:true,PNTSLoader:true,I3DMLoader:true,CMPTLoader:true,GLTFCesiumRTCExtension:true,GLTFExtensionLoader:true,EllipsoidRegionHelper:true,EllipsoidRegionLineHelper:true,SphereHelper:true,Ellipsoid:true,EllipsoidRegion:true,GeoUtils:true,TilesRendererBase:true,LoaderBase:true,B3DMLoaderBase:true,I3DMLoaderBase:true,PNTSLoaderBase:true,CMPTLoaderBase:true,LRUCache:true,PriorityQueue:true};Object.defineProperty($cf838c15c8b009ba$exports,"B3DMLoader",{enumerable:true,get:function(){return $0aa3d1def57e98b1$exports.B3DMLoader}});Object.defineProperty($cf838c15c8b009ba$exports,"B3DMLoaderBase",{enumerable:true,get:function(){return $f5d9b5dde53306bf$exports.B3DMLoaderBase}});Object.defineProperty($cf838c15c8b009ba$exports,"CMPTLoader",{enumerable:true,get:function(){return $54879e9a7dc345e0$exports.CMPTLoader}});Object.defineProperty($cf838c15c8b009ba$exports,"CMPTLoaderBase",{enumerable:true,get:function(){return $cb66a16334732244$exports.CMPTLoaderBase}});Object.defineProperty($cf838c15c8b009ba$exports,"CUSTOM_COLOR",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.CUSTOM_COLOR}});Object.defineProperty($cf838c15c8b009ba$exports,"DEPTH",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.DEPTH}});Object.defineProperty($cf838c15c8b009ba$exports,"DISTANCE",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.DISTANCE}});Object.defineProperty($cf838c15c8b009ba$exports,"DebugTilesRenderer",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.DebugTilesRenderer}});Object.defineProperty($cf838c15c8b009ba$exports,"Ellipsoid",{enumerable:true,get:function(){return $9160f8f2e0578e98$exports.Ellipsoid}});Object.defineProperty($cf838c15c8b009ba$exports,"EllipsoidRegion",{enumerable:true,get:function(){return $aa7b3b269f245cbe$exports.EllipsoidRegion}});Object.defineProperty($cf838c15c8b009ba$exports,"EllipsoidRegionHelper",{enumerable:true,get:function(){return $3b9225051b507460$exports.EllipsoidRegionHelper}});Object.defineProperty($cf838c15c8b009ba$exports,"EllipsoidRegionLineHelper",{enumerable:true,get:function(){return $3b9225051b507460$exports.EllipsoidRegionLineHelper}});Object.defineProperty($cf838c15c8b009ba$exports,"GEOMETRIC_ERROR",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.GEOMETRIC_ERROR}});Object.defineProperty($cf838c15c8b009ba$exports,"GLTFCesiumRTCExtension",{enumerable:true,get:function(){return $44c3bffa5e49f297$exports.GLTFCesiumRTCExtension}});Object.defineProperty($cf838c15c8b009ba$exports,"GLTFExtensionLoader",{enumerable:true,get:function(){return $29ced67d26e5c4e2$exports.GLTFExtensionLoader}});$cf838c15c8b009ba$exports.GeoUtils=void 0;Object.defineProperty($cf838c15c8b009ba$exports,"I3DMLoader",{enumerable:true,get:function(){return $0bc85483bdeca322$exports.I3DMLoader}});Object.defineProperty($cf838c15c8b009ba$exports,"I3DMLoaderBase",{enumerable:true,get:function(){return $bcb352fb74bed4a5$exports.I3DMLoaderBase}});Object.defineProperty($cf838c15c8b009ba$exports,"IS_LEAF",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.IS_LEAF}});Object.defineProperty($cf838c15c8b009ba$exports,"LRUCache",{enumerable:true,get:function(){return $e0d7a242557dc8e6$exports.LRUCache}});Object.defineProperty($cf838c15c8b009ba$exports,"LoaderBase",{enumerable:true,get:function(){return $e6b785bba9ea128d$exports.LoaderBase}});Object.defineProperty($cf838c15c8b009ba$exports,"NONE",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.NONE}});Object.defineProperty($cf838c15c8b009ba$exports,"PNTSLoader",{enumerable:true,get:function(){return $1ddd6ca16eb224df$exports.PNTSLoader}});Object.defineProperty($cf838c15c8b009ba$exports,"PNTSLoaderBase",{enumerable:true,get:function(){return $d408eda5a179398a$exports.PNTSLoaderBase}});Object.defineProperty($cf838c15c8b009ba$exports,"PriorityQueue",{enumerable:true,get:function(){return $096d2234d1235002$exports.PriorityQueue}});Object.defineProperty($cf838c15c8b009ba$exports,"RANDOM_COLOR",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.RANDOM_COLOR}});Object.defineProperty($cf838c15c8b009ba$exports,"RANDOM_NODE_COLOR",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.RANDOM_NODE_COLOR}});Object.defineProperty($cf838c15c8b009ba$exports,"RELATIVE_DEPTH",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.RELATIVE_DEPTH}});Object.defineProperty($cf838c15c8b009ba$exports,"SCREEN_ERROR",{enumerable:true,get:function(){return $1909f04f34bd6630$exports.SCREEN_ERROR}});Object.defineProperty($cf838c15c8b009ba$exports,"SphereHelper",{enumerable:true,get:function(){return $1cb839fa4db014d3$exports.SphereHelper}});Object.defineProperty($cf838c15c8b009ba$exports,"TilesRenderer",{enumerable:true,get:function(){return $06d26e8e9f5361d3$exports.TilesRenderer}});Object.defineProperty($cf838c15c8b009ba$exports,"TilesRendererBase",{enumerable:true,get:function(){return $5a6f7a997885dc30$exports.TilesRendererBase}});var $1909f04f34bd6630$exports={};"use strict";Object.defineProperty($1909f04f34bd6630$exports,"__esModule",{value:true});$1909f04f34bd6630$exports.SCREEN_ERROR=$1909f04f34bd6630$exports.RELATIVE_DEPTH=$1909f04f34bd6630$exports.RANDOM_NODE_COLOR=$1909f04f34bd6630$exports.RANDOM_COLOR=$1909f04f34bd6630$exports.NONE=$1909f04f34bd6630$exports.IS_LEAF=$1909f04f34bd6630$exports.GEOMETRIC_ERROR=$1909f04f34bd6630$exports.DebugTilesRenderer=$1909f04f34bd6630$exports.DISTANCE=$1909f04f34bd6630$exports.DEPTH=$1909f04f34bd6630$exports.CUSTOM_COLOR=void 0;var $3a66585ec6f85053$exports={};"use strict";Object.defineProperty($3a66585ec6f85053$exports,"__esModule",{value:true});$3a66585ec6f85053$exports.getIndexedRandomColor=$3a66585ec6f85053$var$getIndexedRandomColor;const $3a66585ec6f85053$var$colors={};function $3a66585ec6f85053$var$getIndexedRandomColor(index){if(!$3a66585ec6f85053$var$colors[index]){const h=Math.random();const s=0.5+Math.random()*0.5;const l=0.375+Math.random()*0.25;$3a66585ec6f85053$var$colors[index]=new $5OpyM$Color().setHSL(h,s,l)}return $3a66585ec6f85053$var$colors[index]}var $06d26e8e9f5361d3$exports={};"use strict";Object.defineProperty($06d26e8e9f5361d3$exports,"__esModule",{value:true});$06d26e8e9f5361d3$exports.TilesRenderer=void 0;var $5a6f7a997885dc30$exports={};"use strict";Object.defineProperty($5a6f7a997885dc30$exports,"__esModule",{value:true});$5a6f7a997885dc30$exports.TilesRendererBase=void 0;var $7ff9fb142d83939f$exports={};"use strict";Object.defineProperty($7ff9fb142d83939f$exports,"__esModule",{value:true});$7ff9fb142d83939f$exports.getUrlExtension=$7ff9fb142d83939f$var$getUrlExtension;function $7ff9fb142d83939f$var$getUrlExtension(url){let parsedUrl;try{parsedUrl=new URL(url,"http://fakehost.com/")}catch(_){return null}const filename=parsedUrl.pathname.split("/").pop();const dotIndex=filename.lastIndexOf(".");if(dotIndex===-1||dotIndex===filename.length-1)return null;const extension=filename.substring(dotIndex+1);return extension}var $e0d7a242557dc8e6$exports={};"use strict";Object.defineProperty($e0d7a242557dc8e6$exports,"__esModule",{value:true});$e0d7a242557dc8e6$exports.LRUCache=void 0;function $e0d7a242557dc8e6$var$enqueueMicrotask(callback){Promise.resolve().then(callback)}class $e0d7a242557dc8e6$var$LRUCache{constructor(){this.maxSize=800;this.minSize=600;this.unloadPercent=0.05;this.itemSet=new Map;this.itemList=[];this.usedSet=new Set;this.callbacks=new Map;this.unloadPriorityCallback=null;const itemSet=this.itemSet;this.defaultPriorityCallback=item=>itemSet.get(item)}isFull(){return this.itemSet.size>=this.maxSize}add(item,removeCb){const itemSet=this.itemSet;if(itemSet.has(item))return false;if(this.isFull())return false;const usedSet=this.usedSet;const itemList=this.itemList;const callbacks=this.callbacks;itemList.push(item);usedSet.add(item);itemSet.set(item,Date.now());callbacks.set(item,removeCb);return true}remove(item){const usedSet=this.usedSet;const itemSet=this.itemSet;const itemList=this.itemList;const callbacks=this.callbacks;if(itemSet.has(item)){callbacks.get(item)(item);const index=itemList.indexOf(item);itemList.splice(index,1);usedSet.delete(item);itemSet.delete(item);callbacks.delete(item);return true}return false}markUsed(item){const itemSet=this.itemSet;const usedSet=this.usedSet;if(itemSet.has(item)&&!usedSet.has(item)){itemSet.set(item,Date.now());usedSet.add(item)}}markAllUnused(){this.usedSet.clear()}unloadUnusedContent(){const unloadPercent=this.unloadPercent;const targetSize=this.minSize;const itemList=this.itemList;const itemSet=this.itemSet;const usedSet=this.usedSet;const callbacks=this.callbacks;const unused=itemList.length-usedSet.size;const excess=itemList.length-targetSize;const unloadPriorityCallback=this.unloadPriorityCallback||this.defaultPriorityCallback;if(excess>0&&unused>0){itemList.sort((a,b)=>{const usedA=usedSet.has(a);const usedB=usedSet.has(b);if(usedA&&usedB)return 0;else if(!usedA&&!usedB)return unloadPriorityCallback(b)-unloadPriorityCallback(a);else return usedA?1:-1});const unusedExcess=Math.min(excess,unused);const maxUnload=Math.max(targetSize*unloadPercent,unusedExcess*unloadPercent);let nodesToUnload=Math.min(maxUnload,unused);nodesToUnload=Math.ceil(nodesToUnload);const removedItems=itemList.splice(0,nodesToUnload);for(let i=0,l=removedItems.length;i{this.scheduled=false;this.unloadUnusedContent();if(markAllUnused)this.markAllUnused()})}}}$e0d7a242557dc8e6$exports.LRUCache=$e0d7a242557dc8e6$var$LRUCache;var $096d2234d1235002$exports={};"use strict";Object.defineProperty($096d2234d1235002$exports,"__esModule",{value:true});$096d2234d1235002$exports.PriorityQueue=void 0;class $096d2234d1235002$var$PriorityQueue{constructor(){this.maxJobs=6;this.items=[];this.callbacks=new Map;this.currJobs=0;this.scheduled=false;this.autoUpdate=true;this.priorityCallback=()=>{throw new Error("PriorityQueue: PriorityCallback function not defined.")};this.schedulingCallback=func=>{requestAnimationFrame(func)};this._runjobs=()=>{this.tryRunJobs();this.scheduled=false}}sort(){const priorityCallback=this.priorityCallback;const items=this.items;items.sort(priorityCallback)}add(item,callback){return new Promise((resolve,reject)=>{const prCallback=(...args)=>callback(...args).then(resolve).catch(reject);const items=this.items;const callbacks=this.callbacks;items.push(item);callbacks.set(item,prCallback);if(this.autoUpdate)this.scheduleJobRun()})}remove(item){const items=this.items;const callbacks=this.callbacks;const index=items.indexOf(item);if(index!==-1){items.splice(index,1);callbacks.delete(item)}}tryRunJobs(){this.sort();const items=this.items;const callbacks=this.callbacks;const maxJobs=this.maxJobs;let currJobs=this.currJobs;while(maxJobs>currJobs&&items.length>0){currJobs++;const item=items.pop();const callback=callbacks.get(item);callbacks.delete(item);callback(item).then(()=>{this.currJobs--;if(this.autoUpdate)this.scheduleJobRun()}).catch(()=>{this.currJobs--;if(this.autoUpdate)this.scheduleJobRun()})}this.currJobs=currJobs}scheduleJobRun(){if(!this.scheduled){this.schedulingCallback(this._runjobs);this.scheduled=true}}}$096d2234d1235002$exports.PriorityQueue=$096d2234d1235002$var$PriorityQueue;var $cd531a5f1c18e9cc$exports={};"use strict";Object.defineProperty($cd531a5f1c18e9cc$exports,"__esModule",{value:true});$cd531a5f1c18e9cc$exports.determineFrustumSet=$cd531a5f1c18e9cc$var$determineFrustumSet;$cd531a5f1c18e9cc$exports.markUsedSetLeaves=$cd531a5f1c18e9cc$var$markUsedSetLeaves;$cd531a5f1c18e9cc$exports.skipTraversal=$cd531a5f1c18e9cc$var$skipTraversal;$cd531a5f1c18e9cc$exports.toggleTiles=$cd531a5f1c18e9cc$var$toggleTiles;$cd531a5f1c18e9cc$exports.traverseSet=$cd531a5f1c18e9cc$var$traverseSet;var $002d29a772485791$exports={};"use strict";Object.defineProperty($002d29a772485791$exports,"__esModule",{value:true});$002d29a772485791$exports.WGS84_RADIUS=$002d29a772485791$exports.WGS84_HEIGHT=$002d29a772485791$exports.WGS84_FLATTENING=$002d29a772485791$exports.UNLOADED=$002d29a772485791$exports.PARSING=$002d29a772485791$exports.LOADING=$002d29a772485791$exports.LOADED=$002d29a772485791$exports.FAILED=void 0;const $002d29a772485791$var$UNLOADED=0;$002d29a772485791$exports.UNLOADED=$002d29a772485791$var$UNLOADED;const $002d29a772485791$var$LOADING=1;$002d29a772485791$exports.LOADING=$002d29a772485791$var$LOADING;const $002d29a772485791$var$PARSING=2;$002d29a772485791$exports.PARSING=$002d29a772485791$var$PARSING;const $002d29a772485791$var$LOADED=3;$002d29a772485791$exports.LOADED=$002d29a772485791$var$LOADED;const $002d29a772485791$var$FAILED=4;$002d29a772485791$exports.FAILED=$002d29a772485791$var$FAILED;const $002d29a772485791$var$WGS84_RADIUS=6378137;$002d29a772485791$exports.WGS84_RADIUS=$002d29a772485791$var$WGS84_RADIUS;const $002d29a772485791$var$WGS84_FLATTENING=1/298.257223563;$002d29a772485791$exports.WGS84_FLATTENING=$002d29a772485791$var$WGS84_FLATTENING;const $002d29a772485791$var$WGS84_HEIGHT=-($002d29a772485791$var$WGS84_FLATTENING*$002d29a772485791$var$WGS84_RADIUS-$002d29a772485791$var$WGS84_RADIUS);$002d29a772485791$exports.WGS84_HEIGHT=$002d29a772485791$var$WGS84_HEIGHT;function $cd531a5f1c18e9cc$var$isDownloadFinished(value){return value===$002d29a772485791$exports.LOADED||value===$002d29a772485791$exports.FAILED}function $cd531a5f1c18e9cc$var$isUsedThisFrame(tile,frameCount){return tile.__lastFrameVisited===frameCount&&tile.__used}function $cd531a5f1c18e9cc$var$resetFrameState(tile,frameCount){if(tile.__lastFrameVisited!==frameCount){tile.__lastFrameVisited=frameCount;tile.__used=false;tile.__inFrustum=false;tile.__isLeaf=false;tile.__visible=false;tile.__active=false;tile.__error=Infinity;tile.__distanceFromCamera=Infinity;tile.__childrenWereVisible=false;tile.__allChildrenLoaded=false}}function $cd531a5f1c18e9cc$var$recursivelyMarkUsed(tile,frameCount,lruCache,renderer){renderer.ensureChildrenArePreprocessed(tile);$cd531a5f1c18e9cc$var$resetFrameState(tile,frameCount);tile.__used=true;lruCache.markUsed(tile);if(tile.__contentEmpty){const children=tile.children;for(let i=0,l=children.length;i0&&tile.__depth+1>=maxDepth)return true}let anyChildrenUsed=false;const children=tile.children;for(let i=0,l=children.length;i{if(a.__depth!==b.__depth)return a.__depth>b.__depth?-1:1;else if(a.__inFrustum!==b.__inFrustum)return a.__inFrustum?1:-1;else if(a.__used!==b.__used)return a.__used?1:-1;else if(a.__error!==b.__error)return a.__error>b.__error?1:-1;else if(a.__distanceFromCamera!==b.__distanceFromCamera)return a.__distanceFromCamera>b.__distanceFromCamera?-1:1;return 0};const $5a6f7a997885dc30$var$lruPriorityCallback=tile=>1/(tile.__depthFromRenderedParent+1);class $5a6f7a997885dc30$var$TilesRendererBase{get rootTileSet(){const tileSet=this.tileSets[this.rootURL];if(!tileSet||tileSet instanceof Promise)return null;else return tileSet}get root(){const tileSet=this.rootTileSet;return tileSet?tileSet.root:null}constructor(url){this.tileSets={};this.rootURL=url;this.fetchOptions={};this.preprocessURL=null;const lruCache=new $e0d7a242557dc8e6$exports.LRUCache;lruCache.unloadPriorityCallback=$5a6f7a997885dc30$var$lruPriorityCallback;const downloadQueue=new $096d2234d1235002$exports.PriorityQueue;downloadQueue.maxJobs=4;downloadQueue.priorityCallback=$5a6f7a997885dc30$var$priorityCallback;const parseQueue=new $096d2234d1235002$exports.PriorityQueue;parseQueue.maxJobs=1;parseQueue.priorityCallback=$5a6f7a997885dc30$var$priorityCallback;this.lruCache=lruCache;this.downloadQueue=downloadQueue;this.parseQueue=parseQueue;this.stats={parsing:0,downloading:0,failed:0,inFrustum:0,used:0,active:0,visible:0};this.frameCount=0;this.errorTarget=6;this.errorThreshold=Infinity;this.loadSiblings=true;this.displayActiveTiles=false;this.maxDepth=Infinity;this.stopAtEmptyTiles=true}traverse(beforecb,aftercb){const tileSets=this.tileSets;const rootTileSet=tileSets[this.rootURL];if(!rootTileSet||!rootTileSet.root)return;(0,$cd531a5f1c18e9cc$exports.traverseSet)(rootTileSet.root,(tile,...args)=>{this.ensureChildrenArePreprocessed(tile);return beforecb?beforecb(tile,...args):false},aftercb)}update(){const stats=this.stats;const lruCache=this.lruCache;const tileSets=this.tileSets;const rootTileSet=tileSets[this.rootURL];if(!(this.rootURL in tileSets)){this.loadRootTileSet(this.rootURL);return}else if(!rootTileSet||!rootTileSet.root)return;const root=rootTileSet.root;stats.inFrustum=0,stats.used=0,stats.active=0,stats.visible=0,this.frameCount++;(0,$cd531a5f1c18e9cc$exports.determineFrustumSet)(root,this);(0,$cd531a5f1c18e9cc$exports.markUsedSetLeaves)(root,this);(0,$cd531a5f1c18e9cc$exports.skipTraversal)(root,this);(0,$cd531a5f1c18e9cc$exports.toggleTiles)(root,this);lruCache.scheduleUnload()}parseTile(buffer,tile,extension){return null}disposeTile(tile){}preprocessNode(tile,tileSetDir,parentTile=null){if(tile.content){if(!("uri"in tile.content)&&"url"in tile.content){tile.content.uri=tile.content.url;delete tile.content.url}if(tile.content.uri)tile.content.uri=new URL(tile.content.uri,tileSetDir+"/").toString();if(tile.content.boundingVolume&&!("box"in tile.content.boundingVolume||"sphere"in tile.content.boundingVolume||"region"in tile.content.boundingVolume))delete tile.content.boundingVolume}tile.parent=parentTile;tile.children=tile.children||[];const uri=tile.content&&tile.content.uri;if(uri){const extension=(0,$7ff9fb142d83939f$exports.getUrlExtension)(tile.content.uri);const isExternalTileSet=Boolean(extension&&extension.toLowerCase()==="json");tile.__externalTileSet=isExternalTileSet;tile.__contentEmpty=isExternalTileSet}else{tile.__externalTileSet=false;tile.__contentEmpty=true}tile.__distanceFromCamera=Infinity;tile.__error=Infinity;tile.__inFrustum=false;tile.__isLeaf=false;tile.__usedLastFrame=false;tile.__used=false;tile.__wasSetVisible=false;tile.__visible=false;tile.__childrenWereVisible=false;tile.__allChildrenLoaded=false;tile.__wasSetActive=false;tile.__active=false;tile.__loadingState=$002d29a772485791$exports.UNLOADED;tile.__loadIndex=0;tile.__loadAbort=null;tile.__depthFromRenderedParent=-1;if(parentTile===null){tile.__depth=0;tile.refine=tile.refine||"REPLACE"}else{tile.__depth=parentTile.__depth+1;tile.refine=tile.refine||parentTile.refine}tile.__basePath=tileSetDir}setTileActive(tile,state){}setTileVisible(tile,state){}calculateError(tile){return 0}tileInView(tile){return true}ensureChildrenArePreprocessed(tile){const children=tile.children;for(let i=0,l=children.length;i{if(tile.__loadingState===$002d29a772485791$exports.FAILED)tile.__loadingState=$002d29a772485791$exports.UNLOADED});stats.failed=0}fetchTileSet(url,fetchOptions,parent=null){return fetch(url,fetchOptions).then(res=>{if(res.ok)return res.json();else throw new Error(`TilesRenderer: Failed to load tileset "${url}" with status ${res.status} : ${res.statusText}`)}).then(json=>{const version=json.asset.version;console.assert(version==="1.0"||version==="0.0","asset.version is expected to be a string of \"1.0\" or \"0.0\"");let basePath=url.replace(/\/[^\/]*\/?$/,"");basePath=new URL(basePath,window.location.href).toString();this.preprocessNode(json.root,basePath,parent);return json})}loadRootTileSet(url){const tileSets=this.tileSets;if(!(url in tileSets)){const pr=this.fetchTileSet(this.preprocessURL?this.preprocessURL(url):url,this.fetchOptions).then(json=>{tileSets[url]=json});pr.catch(err=>{console.error(err);tileSets[url]=err});tileSets[url]=pr;return pr}else if(tileSets[url]instanceof Error)return Promise.reject(tileSets[url]);else return Promise.resolve(tileSets[url])}requestTileContents(tile){if(tile.__loadingState!==$002d29a772485791$exports.UNLOADED)return;const stats=this.stats;const lruCache=this.lruCache;const downloadQueue=this.downloadQueue;const parseQueue=this.parseQueue;const isExternalTileSet=tile.__externalTileSet;lruCache.add(tile,t=>{if(t.__loadingState===$002d29a772485791$exports.LOADING){t.__loadAbort.abort();t.__loadAbort=null}else if(isExternalTileSet)t.children.length=0;else this.disposeTile(t);if(t.__loadingState===$002d29a772485791$exports.LOADING)stats.downloading--;else if(t.__loadingState===$002d29a772485791$exports.PARSING)stats.parsing--;t.__loadingState=$002d29a772485791$exports.UNLOADED;t.__loadIndex++;parseQueue.remove(t);downloadQueue.remove(t)});tile.__loadIndex++;const loadIndex=tile.__loadIndex;const controller=new AbortController;const signal=controller.signal;stats.downloading++;tile.__loadAbort=controller;tile.__loadingState=$002d29a772485791$exports.LOADING;const errorCallback=e=>{if(tile.__loadIndex!==loadIndex)return;if(e.name!=="AbortError"){parseQueue.remove(tile);downloadQueue.remove(tile);if(tile.__loadingState===$002d29a772485791$exports.PARSING)stats.parsing--;else if(tile.__loadingState===$002d29a772485791$exports.LOADING)stats.downloading--;stats.failed++;console.error(`TilesRenderer : Failed to load tile at url "${tile.content.uri}".`);console.error(e);tile.__loadingState=$002d29a772485791$exports.FAILED}else lruCache.remove(tile)};if(isExternalTileSet)downloadQueue.add(tile,tileCb=>{if(tileCb.__loadIndex!==loadIndex)return Promise.resolve();const uri=this.preprocessURL?this.preprocessURL(tileCb.content.uri):tileCb.content.uri;return this.fetchTileSet(uri,Object.assign({signal:signal},this.fetchOptions),tileCb)}).then(json=>{if(tile.__loadIndex!==loadIndex)return;stats.downloading--;tile.__loadAbort=null;tile.__loadingState=$002d29a772485791$exports.LOADED;tile.children.push(json.root)}).catch(errorCallback);else downloadQueue.add(tile,downloadTile=>{if(downloadTile.__loadIndex!==loadIndex)return Promise.resolve();const uri=this.preprocessURL?this.preprocessURL(downloadTile.content.uri):downloadTile.content.uri;return fetch(uri,Object.assign({signal:signal},this.fetchOptions))}).then(res=>{if(tile.__loadIndex!==loadIndex)return;if(res.ok)return res.arrayBuffer();else throw new Error(`Failed to load model with error code ${res.status}`)}).then(buffer=>{if(tile.__loadIndex!==loadIndex)return;stats.downloading--;stats.parsing++;tile.__loadAbort=null;tile.__loadingState=$002d29a772485791$exports.PARSING;return parseQueue.add(tile,parseTile=>{if(parseTile.__loadIndex!==loadIndex)return Promise.resolve();const uri=parseTile.content.uri;const extension=(0,$7ff9fb142d83939f$exports.getUrlExtension)(uri);return this.parseTile(buffer,parseTile,extension)})}).then(()=>{if(tile.__loadIndex!==loadIndex)return;stats.parsing--;tile.__loadingState=$002d29a772485791$exports.LOADED;if(tile.__wasSetVisible)this.setTileVisible(tile,true);if(tile.__wasSetActive)this.setTileActive(tile,true)}).catch(errorCallback)}dispose(){const lruCache=this.lruCache;const toRemove=[];this.traverse(t=>{toRemove.push(t);return false});for(let i=0,l=toRemove.length;ibinOffset+binLength)throw new Error("FeatureTable: Feature data read outside binary body length.");return data}}getBuffer(byteOffset,byteLength){const{buffer:buffer,binOffset:binOffset}=this;return buffer.slice(binOffset+byteOffset,binOffset+byteOffset+byteLength)}}$5bfd2e53a5ab8bef$exports.FeatureTable=$5bfd2e53a5ab8bef$var$FeatureTable;class $5bfd2e53a5ab8bef$var$BatchTable extends $5bfd2e53a5ab8bef$var$FeatureTable{constructor(buffer,batchSize,start,headerLength,binLength){super(buffer,start,headerLength,binLength);this.batchSize=batchSize}getData(key,componentType=null,type=null){return super.getData(key,this.batchSize,componentType,type)}}$5bfd2e53a5ab8bef$exports.BatchTable=$5bfd2e53a5ab8bef$var$BatchTable;var $e6b785bba9ea128d$exports={};"use strict";Object.defineProperty($e6b785bba9ea128d$exports,"__esModule",{value:true});$e6b785bba9ea128d$exports.LoaderBase=void 0;class $e6b785bba9ea128d$var$LoaderBase{constructor(){this.fetchOptions={};this.workingPath=""}load(url){return fetch(url,this.fetchOptions).then(res=>{if(!res.ok)throw new Error(`Failed to load file "${url}" with status ${res.status} : ${res.statusText}`);return res.arrayBuffer()}).then(buffer=>{if(this.workingPath==="")this.workingPath=this.workingPathForURL(url);return this.parse(buffer)})}resolveExternalURL(url){if(/^[^\\/]/.test(url))return this.workingPath+"/"+url;else return url}workingPathForURL(url){const splits=url.split(/[\\/]/g);splits.pop();const workingPath=splits.join("/");return workingPath+"/"}parse(buffer){throw new Error("LoaderBase: Parse not implemented.")}}$e6b785bba9ea128d$exports.LoaderBase=$e6b785bba9ea128d$var$LoaderBase;var $9e3e194659cc5776$exports={};"use strict";Object.defineProperty($9e3e194659cc5776$exports,"__esModule",{value:true});$9e3e194659cc5776$exports.readMagicBytes=$9e3e194659cc5776$var$readMagicBytes;function $9e3e194659cc5776$var$readMagicBytes(bufferOrDataView){let view;if(bufferOrDataView instanceof DataView)view=bufferOrDataView;else view=new DataView(bufferOrDataView);if(String.fromCharCode(view.getUint8(0))==="{")return null;let magicBytes="";for(let i=0;i<4;i++)magicBytes+=String.fromCharCode(view.getUint8(i));return magicBytes}class $f5d9b5dde53306bf$var$B3DMLoaderBase extends $e6b785bba9ea128d$exports.LoaderBase{parse(buffer){const dataView=new DataView(buffer);const magic=(0,$9e3e194659cc5776$exports.readMagicBytes)(dataView);console.assert(magic==="b3dm");const version=dataView.getUint32(4,true);console.assert(version===1);const byteLength=dataView.getUint32(8,true);console.assert(byteLength===buffer.byteLength);const featureTableJSONByteLength=dataView.getUint32(12,true);const featureTableBinaryByteLength=dataView.getUint32(16,true);const batchTableJSONByteLength=dataView.getUint32(20,true);const batchTableBinaryByteLength=dataView.getUint32(24,true);const featureTableStart=28;const featureTableBuffer=buffer.slice(featureTableStart,featureTableStart+featureTableJSONByteLength+featureTableBinaryByteLength);const featureTable=new $5bfd2e53a5ab8bef$exports.FeatureTable(featureTableBuffer,0,featureTableJSONByteLength,featureTableBinaryByteLength);const batchTableStart=featureTableStart+featureTableJSONByteLength+featureTableBinaryByteLength;const batchTableBuffer=buffer.slice(batchTableStart,batchTableStart+batchTableJSONByteLength+batchTableBinaryByteLength);const batchTable=new $5bfd2e53a5ab8bef$exports.BatchTable(batchTableBuffer,featureTable.getData("BATCH_LENGTH"),0,batchTableJSONByteLength,batchTableBinaryByteLength);const glbStart=batchTableStart+batchTableJSONByteLength+batchTableBinaryByteLength;const glbBytes=new Uint8Array(buffer,glbStart,byteLength-glbStart);return{version:version,featureTable:featureTable,batchTable:batchTable,glbBytes:glbBytes}}}$f5d9b5dde53306bf$exports.B3DMLoaderBase=$f5d9b5dde53306bf$var$B3DMLoaderBase;class $0aa3d1def57e98b1$var$B3DMLoader extends $f5d9b5dde53306bf$exports.B3DMLoaderBase{constructor(manager=$5OpyM$DefaultLoadingManager){super();this.manager=manager;this.adjustmentTransform=new $5OpyM$Matrix4}parse(buffer){const b3dm=super.parse(buffer);const gltfBuffer=b3dm.glbBytes.slice().buffer;return new Promise((resolve,reject)=>{const manager=this.manager;const fetchOptions=this.fetchOptions;const loader=manager.getHandler("path.gltf")||new $5OpyM$GLTFLoader(manager);if(fetchOptions.credentials==="include"&&fetchOptions.mode==="cors")loader.setCrossOrigin("use-credentials");if("credentials"in fetchOptions)loader.setWithCredentials(fetchOptions.credentials==="include");if(fetchOptions.headers)loader.setRequestHeader(fetchOptions.headers);let workingPath=this.workingPath;if(!/[\\/]$/.test(workingPath)&&workingPath.length)workingPath+="/";const adjustmentTransform=this.adjustmentTransform;loader.parse(gltfBuffer,workingPath,model=>{const{batchTable:batchTable,featureTable:featureTable}=b3dm;const{scene:scene}=model;const rtcCenter=featureTable.getData("RTC_CENTER");if(rtcCenter){scene.position.x+=rtcCenter[0];scene.position.y+=rtcCenter[1];scene.position.z+=rtcCenter[2]}model.scene.updateMatrix();model.scene.matrix.multiply(adjustmentTransform);model.scene.matrix.decompose(model.scene.position,model.scene.quaternion,model.scene.scale);model.batchTable=batchTable;model.featureTable=featureTable;scene.batchTable=batchTable;scene.featureTable=featureTable;resolve(model)},reject)})}}$0aa3d1def57e98b1$exports.B3DMLoader=$0aa3d1def57e98b1$var$B3DMLoader;var $1ddd6ca16eb224df$exports={};"use strict";Object.defineProperty($1ddd6ca16eb224df$exports,"__esModule",{value:true});$1ddd6ca16eb224df$exports.PNTSLoader=void 0;var $d408eda5a179398a$exports={};"use strict";Object.defineProperty($d408eda5a179398a$exports,"__esModule",{value:true});$d408eda5a179398a$exports.PNTSLoaderBase=void 0;class $d408eda5a179398a$var$PNTSLoaderBase extends $e6b785bba9ea128d$exports.LoaderBase{parse(buffer){const dataView=new DataView(buffer);const magic=(0,$9e3e194659cc5776$exports.readMagicBytes)(dataView);console.assert(magic==="pnts");const version=dataView.getUint32(4,true);console.assert(version===1);const byteLength=dataView.getUint32(8,true);console.assert(byteLength===buffer.byteLength);const featureTableJSONByteLength=dataView.getUint32(12,true);const featureTableBinaryByteLength=dataView.getUint32(16,true);const batchTableJSONByteLength=dataView.getUint32(20,true);const batchTableBinaryByteLength=dataView.getUint32(24,true);const featureTableStart=28;const featureTableBuffer=buffer.slice(featureTableStart,featureTableStart+featureTableJSONByteLength+featureTableBinaryByteLength);const featureTable=new $5bfd2e53a5ab8bef$exports.FeatureTable(featureTableBuffer,0,featureTableJSONByteLength,featureTableBinaryByteLength);const batchTableStart=featureTableStart+featureTableJSONByteLength+featureTableBinaryByteLength;const batchTableBuffer=buffer.slice(batchTableStart,batchTableStart+batchTableJSONByteLength+batchTableBinaryByteLength);const batchTable=new $5bfd2e53a5ab8bef$exports.BatchTable(batchTableBuffer,featureTable.getData("BATCH_LENGTH")||featureTable.getData("POINTS_LENGTH"),0,batchTableJSONByteLength,batchTableBinaryByteLength);return Promise.resolve({version:version,featureTable:featureTable,batchTable:batchTable})}}$d408eda5a179398a$exports.PNTSLoaderBase=$d408eda5a179398a$var$PNTSLoaderBase;const $1ddd6ca16eb224df$var$DRACO_ATTRIBUTE_MAP={RGB:"color",POSITION:"position"};class $1ddd6ca16eb224df$var$PNTSLoader extends $d408eda5a179398a$exports.PNTSLoaderBase{constructor(manager=$5OpyM$DefaultLoadingManager){super();this.manager=manager}parse(buffer){return super.parse(buffer).then(async result=>{const{featureTable:featureTable}=result;const material=new $5OpyM$PointsMaterial;const extensions=featureTable.header.extensions;const translationOffset=new $5OpyM$Vector3;let geometry;if(extensions&&extensions["3DTILES_draco_point_compression"]){const{byteOffset:byteOffset,byteLength:byteLength,properties:properties}=extensions["3DTILES_draco_point_compression"];const dracoLoader=this.manager.getHandler("draco.drc");if(dracoLoader==null)throw new Error("PNTSLoader: dracoLoader not available.");const attributeIDs={};for(const key in properties)if(key in $1ddd6ca16eb224df$var$DRACO_ATTRIBUTE_MAP&&key in properties){const mappedKey=$1ddd6ca16eb224df$var$DRACO_ATTRIBUTE_MAP[key];attributeIDs[mappedKey]=properties[key]}const taskConfig={attributeIDs:attributeIDs,attributeTypes:{position:"Float32Array",color:"Uint8Array"},useUniqueIDs:true};const buffer=featureTable.getBuffer(byteOffset,byteLength);geometry=await dracoLoader.decodeGeometry(buffer,taskConfig);if(geometry.attributes.color)material.vertexColors=true}else{const POINTS_LENGTH=featureTable.getData("POINTS_LENGTH");const POSITION=featureTable.getData("POSITION",POINTS_LENGTH,"FLOAT","VEC3");const RGB=featureTable.getData("RGB",POINTS_LENGTH,"UNSIGNED_BYTE","VEC3");const POSITION_QUANTIZED=featureTable.getData("POSITION_QUANTIZED",POINTS_LENGTH,"UNSIGNED_SHORT","VEC3");const QUANTIZED_VOLUME_SCALE=featureTable.getData("QUANTIZED_VOLUME_SCALE",POINTS_LENGTH,"FLOAT","VEC3");const QUANTIZED_VOLUME_OFFSET=featureTable.getData("QUANTIZED_VOLUME_OFFSET",POINTS_LENGTH,"FLOAT","VEC3");geometry=new $5OpyM$BufferGeometry;if(POSITION_QUANTIZED){const decodedPositions=new Float32Array(POINTS_LENGTH*3);for(let i=0;i{if(feature in featureTable.header)console.warn(`PNTSLoader: Unsupported FeatureTable feature "${feature}" detected.`)});const object=new $5OpyM$Points(geometry,material);object.position.copy(translationOffset);result.scene=object;result.scene.featureTable=featureTable;const rtcCenter=featureTable.getData("RTC_CENTER");if(rtcCenter){result.scene.position.x+=rtcCenter[0];result.scene.position.y+=rtcCenter[1];result.scene.position.z+=rtcCenter[2]}return result})}}$1ddd6ca16eb224df$exports.PNTSLoader=$1ddd6ca16eb224df$var$PNTSLoader;var $0bc85483bdeca322$exports={};"use strict";Object.defineProperty($0bc85483bdeca322$exports,"__esModule",{value:true});$0bc85483bdeca322$exports.I3DMLoader=void 0;var $bcb352fb74bed4a5$exports={};"use strict";Object.defineProperty($bcb352fb74bed4a5$exports,"__esModule",{value:true});$bcb352fb74bed4a5$exports.I3DMLoaderBase=void 0;class $bcb352fb74bed4a5$var$I3DMLoaderBase extends $e6b785bba9ea128d$exports.LoaderBase{parse(buffer){const dataView=new DataView(buffer);const magic=(0,$9e3e194659cc5776$exports.readMagicBytes)(dataView);console.assert(magic==="i3dm");const version=dataView.getUint32(4,true);console.assert(version===1);const byteLength=dataView.getUint32(8,true);console.assert(byteLength===buffer.byteLength);const featureTableJSONByteLength=dataView.getUint32(12,true);const featureTableBinaryByteLength=dataView.getUint32(16,true);const batchTableJSONByteLength=dataView.getUint32(20,true);const batchTableBinaryByteLength=dataView.getUint32(24,true);const gltfFormat=dataView.getUint32(28,true);const featureTableStart=32;const featureTableBuffer=buffer.slice(featureTableStart,featureTableStart+featureTableJSONByteLength+featureTableBinaryByteLength);const featureTable=new $5bfd2e53a5ab8bef$exports.FeatureTable(featureTableBuffer,0,featureTableJSONByteLength,featureTableBinaryByteLength);const batchTableStart=featureTableStart+featureTableJSONByteLength+featureTableBinaryByteLength;const batchTableBuffer=buffer.slice(batchTableStart,batchTableStart+batchTableJSONByteLength+batchTableBinaryByteLength);const batchTable=new $5bfd2e53a5ab8bef$exports.BatchTable(batchTableBuffer,featureTable.getData("INSTANCES_LENGTH"),0,batchTableJSONByteLength,batchTableBinaryByteLength);const glbStart=batchTableStart+batchTableJSONByteLength+batchTableBinaryByteLength;const bodyBytes=new Uint8Array(buffer,glbStart,byteLength-glbStart);let glbBytes=null;let promise=null;if(gltfFormat){glbBytes=bodyBytes;promise=Promise.resolve()}else{const externalUri=this.resolveExternalURL((0,$5d480c6739d4b949$exports.arrayToString)(bodyBytes));promise=fetch(externalUri,this.fetchOptions).then(res=>{if(!res.ok)throw new Error(`I3DMLoaderBase : Failed to load file "${externalUri}" with status ${res.status} : ${res.statusText}`);return res.arrayBuffer()}).then(buffer=>{glbBytes=new Uint8Array(buffer)})}return promise.then(()=>{return{version:version,featureTable:featureTable,batchTable:batchTable,glbBytes:glbBytes}})}}$bcb352fb74bed4a5$exports.I3DMLoaderBase=$bcb352fb74bed4a5$var$I3DMLoaderBase;const $0bc85483bdeca322$var$tempFwd=new $5OpyM$Vector3;const $0bc85483bdeca322$var$tempUp=new $5OpyM$Vector3;const $0bc85483bdeca322$var$tempRight=new $5OpyM$Vector3;const $0bc85483bdeca322$var$tempPos=new $5OpyM$Vector3;const $0bc85483bdeca322$var$tempQuat=new $5OpyM$Quaternion;const $0bc85483bdeca322$var$tempSca=new $5OpyM$Vector3;const $0bc85483bdeca322$var$tempMat=new $5OpyM$Matrix4;class $0bc85483bdeca322$var$I3DMLoader extends $bcb352fb74bed4a5$exports.I3DMLoaderBase{constructor(manager=$5OpyM$DefaultLoadingManager){super();this.manager=manager;this.adjustmentTransform=new $5OpyM$Matrix4}resolveExternalURL(url){return this.manager.resolveURL(super.resolveExternalURL(url))}parse(buffer){return super.parse(buffer).then(i3dm=>{const{featureTable:featureTable,batchTable:batchTable}=i3dm;const gltfBuffer=i3dm.glbBytes.slice().buffer;return new Promise((resolve,reject)=>{const fetchOptions=this.fetchOptions;const manager=this.manager;const loader=manager.getHandler("path.gltf")||new $5OpyM$GLTFLoader(manager);if(fetchOptions.credentials==="include"&&fetchOptions.mode==="cors")loader.setCrossOrigin("use-credentials");if("credentials"in fetchOptions)loader.setWithCredentials(fetchOptions.credentials==="include");if(fetchOptions.headers)loader.setRequestHeader(fetchOptions.headers);let workingPath=this.workingPath;if(!/[\\/]$/.test(workingPath))workingPath+="/";const adjustmentTransform=this.adjustmentTransform;loader.parse(gltfBuffer,workingPath,model=>{const INSTANCES_LENGTH=featureTable.getData("INSTANCES_LENGTH");const POSITION=featureTable.getData("POSITION",INSTANCES_LENGTH,"FLOAT","VEC3");const NORMAL_UP=featureTable.getData("NORMAL_UP",INSTANCES_LENGTH,"FLOAT","VEC3");const NORMAL_RIGHT=featureTable.getData("NORMAL_RIGHT",INSTANCES_LENGTH,"FLOAT","VEC3");const SCALE_NON_UNIFORM=featureTable.getData("SCALE_NON_UNIFORM",INSTANCES_LENGTH,"FLOAT","VEC3");const SCALE=featureTable.getData("SCALE",INSTANCES_LENGTH,"FLOAT","SCALAR");["RTC_CENTER","QUANTIZED_VOLUME_OFFSET","QUANTIZED_VOLUME_SCALE","EAST_NORTH_UP","POSITION_QUANTIZED","NORMAL_UP_OCT32P","NORMAL_RIGHT_OCT32P"].forEach(feature=>{if(feature in featureTable.header)console.warn(`I3DMLoader: Unsupported FeatureTable feature "${feature}" detected.`)});const instanceMap=new Map;const instances=[];model.scene.traverse(child=>{if(child.isMesh){const{geometry:geometry,material:material}=child;const instancedMesh=new $5OpyM$InstancedMesh(geometry,material,INSTANCES_LENGTH);instancedMesh.position.copy(child.position);instancedMesh.rotation.copy(child.rotation);instancedMesh.scale.copy(child.scale);instances.push(instancedMesh);instanceMap.set(child,instancedMesh)}});const averageVector=new $5OpyM$Vector3;for(let i=0;i{const parent=mesh.parent;if(parent){parent.remove(mesh);parent.add(instancedMesh);instancedMesh.updateMatrixWorld();instancedMesh.position.copy(averageVector).applyMatrix4(instancedMesh.matrixWorld)}});for(let i=0;i{const group=new $5OpyM$Group;results.forEach(result=>{group.add(result.scene)});return{tiles:results,scene:group}})}}$54879e9a7dc345e0$exports.CMPTLoader=$54879e9a7dc345e0$var$CMPTLoader;var $29ced67d26e5c4e2$exports={};"use strict";Object.defineProperty($29ced67d26e5c4e2$exports,"__esModule",{value:true});$29ced67d26e5c4e2$exports.GLTFExtensionLoader=void 0;var $44c3bffa5e49f297$exports={};"use strict";Object.defineProperty($44c3bffa5e49f297$exports,"__esModule",{value:true});$44c3bffa5e49f297$exports.GLTFCesiumRTCExtension=void 0;class $44c3bffa5e49f297$var$GLTFCesiumRTCExtension{constructor(){this.name="CESIUM_RTC"}afterRoot(res){if(res.parser.json.extensions&&res.parser.json.extensions.CESIUM_RTC){const{center:center}=res.parser.json.extensions.CESIUM_RTC;if(center){res.scene.position.x+=center[0];res.scene.position.y+=center[1];res.scene.position.z+=center[2]}}}}$44c3bffa5e49f297$exports.GLTFCesiumRTCExtension=$44c3bffa5e49f297$var$GLTFCesiumRTCExtension;class $29ced67d26e5c4e2$var$GLTFExtensionLoader extends $e6b785bba9ea128d$exports.LoaderBase{constructor(manager=$5OpyM$DefaultLoadingManager){super();this.manager=manager}parse(buffer){return new Promise((resolve,reject)=>{const manager=this.manager;const fetchOptions=this.fetchOptions;let loader=manager.getHandler("path.gltf")||manager.getHandler("path.glb");if(!loader){loader=new $5OpyM$GLTFLoader(manager);loader.register(()=>new $44c3bffa5e49f297$exports.GLTFCesiumRTCExtension);if(fetchOptions.credentials==="include"&&fetchOptions.mode==="cors")loader.setCrossOrigin("use-credentials");if("credentials"in fetchOptions)loader.setWithCredentials(fetchOptions.credentials==="include");if(fetchOptions.headers)loader.setRequestHeader(fetchOptions.headers)}let resourcePath=loader.resourcePath||loader.path||this.workingPath;if(!/[\\/]$/.test(resourcePath)&&resourcePath.length)resourcePath+="/";loader.parse(buffer,resourcePath,model=>{resolve(model)},reject)})}}$29ced67d26e5c4e2$exports.GLTFExtensionLoader=$29ced67d26e5c4e2$var$GLTFExtensionLoader;var $3fcce8a4f74b2abc$exports={};"use strict";Object.defineProperty($3fcce8a4f74b2abc$exports,"__esModule",{value:true});$3fcce8a4f74b2abc$exports.TilesGroup=void 0;const $3fcce8a4f74b2abc$var$tempMat=new $5OpyM$Matrix4;class $3fcce8a4f74b2abc$var$TilesGroup extends $5OpyM$Group{constructor(tilesRenderer){super();this.name="TilesRenderer.TilesGroup";this.tilesRenderer=tilesRenderer}raycast(raycaster,intersects){if(this.tilesRenderer.optimizeRaycast)this.tilesRenderer.raycast(raycaster,intersects)}updateMatrixWorld(force){if(this.matrixAutoUpdate)this.updateMatrix();if(this.matrixWorldNeedsUpdate||force){if(this.parent===null)$3fcce8a4f74b2abc$var$tempMat.copy(this.matrix);else $3fcce8a4f74b2abc$var$tempMat.multiplyMatrices(this.parent.matrixWorld,this.matrix);this.matrixWorldNeedsUpdate=false;const elA=$3fcce8a4f74b2abc$var$tempMat.elements;const elB=this.matrixWorld.elements;let isDifferent=false;for(let i=0;i<16;i++){const itemA=elA[i];const itemB=elB[i];const diff=Math.abs(itemA-itemB);if(diff>Number.EPSILON){isDifferent=true;break}}if(isDifferent){this.matrixWorld.copy($3fcce8a4f74b2abc$var$tempMat);const children=this.children;for(let i=0,l=children.length;i{Object.getPrototypeOf(c).raycast.call(c,raycaster,intersects)})}function $c1ac95a1e8efcc86$var$intersectTileSceneFirstHist(scene,raycaster){$c1ac95a1e8efcc86$var$intersectTileScene(scene,raycaster,$c1ac95a1e8efcc86$var$_hitArray);$c1ac95a1e8efcc86$var$_hitArray.sort($c1ac95a1e8efcc86$var$distanceSort);const hit=$c1ac95a1e8efcc86$var$_hitArray[0]||null;$c1ac95a1e8efcc86$var$_hitArray.length=0;return hit}function $c1ac95a1e8efcc86$var$raycastTraverseFirstHit(renderer,tile,raycaster,localRay=null){const{group:group,activeTiles:activeTiles}=renderer;renderer.ensureChildrenArePreprocessed(tile);if(localRay===null){localRay=$c1ac95a1e8efcc86$var$_localRay;$c1ac95a1e8efcc86$var$_mat.copy(group.matrixWorld).invert();localRay.copy(raycaster.ray).applyMatrix4($c1ac95a1e8efcc86$var$_mat)}const array=[];const children=tile.children;for(let i=0,l=children.length;ibestHitDistSq)break;const hit=$c1ac95a1e8efcc86$var$raycastTraverseFirstHit(renderer,tile,raycaster,localRay);if(hit){const hitDistSq=hit.distance*hit.distance;if(hitDistSqnew $5OpyM$Vector3)}update(){const{points:points,inverseTransform:inverseTransform,transform:transform,box:box}=this;inverseTransform.copy(transform).invert();const{min:min,max:max}=box;let index=0;for(let x=-1;x<=1;x+=2){for(let y=-1;y<=1;y+=2)for(let z=-1;z<=1;z+=2){points[index].set(x<0?min.x:max.x,y<0?min.y:max.y,z<0?min.z:max.z).applyMatrix4(transform);index++}}}intersectsFrustum(frustum){const{points:points}=this;const{planes:planes}=frustum;for(let i=0;i<6;i++){const plane=planes[i];let maxDistance=-Infinity;for(let j=0;j<8;j++){const v=points[j];const dist=plane.distanceToPoint(v);maxDistance=maxDistanceMath.PI/4){multiplier=-1;latPrime=lat-1e-7}const norm=this.getCartographicToNormal(lat,lon,$9160f8f2e0578e98$var$_vec).normalize();const normPrime=this.getCartographicToNormal(latPrime,lon,$9160f8f2e0578e98$var$_vec2).normalize();westTarget.crossVectors(norm,normPrime).normalize().multiplyScalar(multiplier);return target.crossVectors(westTarget,norm).normalize()}getCartographicToPosition(lat,lon,height,target){this.getCartographicToNormal(lat,lon,$9160f8f2e0578e98$var$_norm);const radius=this.radius;$9160f8f2e0578e98$var$_vec.copy($9160f8f2e0578e98$var$_norm);$9160f8f2e0578e98$var$_vec.x*=radius.x**2;$9160f8f2e0578e98$var$_vec.y*=radius.y**2;$9160f8f2e0578e98$var$_vec.z*=radius.z**2;const gamma=Math.sqrt($9160f8f2e0578e98$var$_norm.dot($9160f8f2e0578e98$var$_vec));$9160f8f2e0578e98$var$_vec.divideScalar(gamma);return target.copy($9160f8f2e0578e98$var$_vec).addScaledVector($9160f8f2e0578e98$var$_norm,height)}getPositionToCartographic(pos,target){this.getPositionToSurfacePoint(pos,$9160f8f2e0578e98$var$_vec);this.getPositionToNormal(pos,$9160f8f2e0578e98$var$_norm);const heightDelta=$9160f8f2e0578e98$var$_vec2.subVectors(pos,$9160f8f2e0578e98$var$_vec);target.lon=Math.atan2($9160f8f2e0578e98$var$_norm.y,$9160f8f2e0578e98$var$_norm.x);target.lat=Math.asin($9160f8f2e0578e98$var$_norm.z);target.height=Math.sign(heightDelta.dot(pos))*heightDelta.length();return target}getCartographicToNormal(lat,lon,target){$9160f8f2e0578e98$var$_spherical.set(1,(0,$1hGdn.latitudeToSphericalPhi)(lat),lon);target.setFromSpherical($9160f8f2e0578e98$var$_spherical).normalize();(0,$1hGdn.swapToGeoFrame)(target);return target}getPositionToNormal(pos,target){const radius=this.radius;target.copy(pos);target.x/=radius.x**2;target.y/=radius.y**2;target.z/=radius.z**2;target.normalize();return target}getPositionToSurfacePoint(pos,target){const radius=this.radius;const invRadiusSqX=1/radius.x**2;const invRadiusSqY=1/radius.y**2;const invRadiusSqZ=1/radius.z**2;const x2=pos.x*pos.x*invRadiusSqX;const y2=pos.y*pos.y*invRadiusSqY;const z2=pos.z*pos.z*invRadiusSqZ;const squaredNorm=x2+y2+z2;const ratio=Math.sqrt(1/squaredNorm);const intersection=$9160f8f2e0578e98$var$_vec.copy(pos).multiplyScalar(ratio);if(squaredNorm<$9160f8f2e0578e98$var$CENTER_EPS)return!isFinite(ratio)?null:target.copy(intersection);const gradient=$9160f8f2e0578e98$var$_vec2.set(intersection.x*invRadiusSqX*2,intersection.y*invRadiusSqY*2,intersection.z*invRadiusSqZ*2);let lambda=(1-ratio)*pos.length()/(0.5*gradient.length());let correction=0;let func,denominator;let xMultiplier,yMultiplier,zMultiplier;let xMultiplier2,yMultiplier2,zMultiplier2;let xMultiplier3,yMultiplier3,zMultiplier3;do{lambda-=correction;xMultiplier=1/(1+lambda*invRadiusSqX);yMultiplier=1/(1+lambda*invRadiusSqY);zMultiplier=1/(1+lambda*invRadiusSqZ);xMultiplier2=xMultiplier*xMultiplier;yMultiplier2=yMultiplier*yMultiplier;zMultiplier2=zMultiplier*zMultiplier;xMultiplier3=xMultiplier2*xMultiplier;yMultiplier3=yMultiplier2*yMultiplier;zMultiplier3=zMultiplier2*zMultiplier;func=x2*xMultiplier2+y2*yMultiplier2+z2*zMultiplier2-1;denominator=x2*xMultiplier3*invRadiusSqX+y2*yMultiplier3*invRadiusSqY+z2*zMultiplier3*invRadiusSqZ;const derivative=-2*denominator;correction=func/derivative}while(Math.abs(func)>$9160f8f2e0578e98$var$EPSILON12);return target.set(pos.x*xMultiplier,pos.y*yMultiplier,pos.z*zMultiplier)}}$9160f8f2e0578e98$exports.Ellipsoid=$9160f8f2e0578e98$var$Ellipsoid;const $aa7b3b269f245cbe$var$PI=Math.PI;const $aa7b3b269f245cbe$var$HALF_PI=$aa7b3b269f245cbe$var$PI/2;const $aa7b3b269f245cbe$var$_orthoX=new $5OpyM$Vector3;const $aa7b3b269f245cbe$var$_orthoY=new $5OpyM$Vector3;const $aa7b3b269f245cbe$var$_orthoZ=new $5OpyM$Vector3;const $aa7b3b269f245cbe$var$_invMatrix=new $5OpyM$Matrix4;let $aa7b3b269f245cbe$var$_poolIndex=0;const $aa7b3b269f245cbe$var$_pointsPool=[];function $aa7b3b269f245cbe$var$getVector(usePool=false){if(!usePool)return new $5OpyM$Vector3;if(!$aa7b3b269f245cbe$var$_pointsPool[$aa7b3b269f245cbe$var$_poolIndex])$aa7b3b269f245cbe$var$_pointsPool[$aa7b3b269f245cbe$var$_poolIndex]=new $5OpyM$Vector3;$aa7b3b269f245cbe$var$_poolIndex++;return $aa7b3b269f245cbe$var$_pointsPool[$aa7b3b269f245cbe$var$_poolIndex-1]}function $aa7b3b269f245cbe$var$resetPool(){$aa7b3b269f245cbe$var$_poolIndex=0}class $aa7b3b269f245cbe$var$EllipsoidRegion extends $9160f8f2e0578e98$exports.Ellipsoid{constructor(x,y,z,latStart=-$aa7b3b269f245cbe$var$HALF_PI,latEnd=$aa7b3b269f245cbe$var$HALF_PI,lonStart=0,lonEnd=2*$aa7b3b269f245cbe$var$PI,heightStart=0,heightEnd=0){super(x,y,z);this.latStart=latStart;this.latEnd=latEnd;this.lonStart=lonStart;this.lonEnd=lonEnd;this.heightStart=heightStart;this.heightEnd=heightEnd}_getPoints(usePool=false){const{latStart:latStart,latEnd:latEnd,lonStart:lonStart,lonEnd:lonEnd,heightStart:heightStart,heightEnd:heightEnd}=this;const midLat=$5OpyM$MathUtils.mapLinear(0.5,0,1,latStart,latEnd);const midLon=$5OpyM$MathUtils.mapLinear(0.5,0,1,lonStart,lonEnd);const lonOffset=Math.floor(lonStart/$aa7b3b269f245cbe$var$HALF_PI)*$aa7b3b269f245cbe$var$HALF_PI;const latlon=[[-$aa7b3b269f245cbe$var$PI/2,0],[$aa7b3b269f245cbe$var$PI/2,0],[0,lonOffset],[0,lonOffset+$aa7b3b269f245cbe$var$PI/2],[0,lonOffset+$aa7b3b269f245cbe$var$PI],[0,lonOffset+3*$aa7b3b269f245cbe$var$PI/2],[latStart,lonEnd],[latEnd,lonEnd],[latStart,lonStart],[latEnd,lonStart],[0,lonStart],[0,lonEnd],[midLat,midLon],[latStart,midLon],[latEnd,midLon],[midLat,lonStart],[midLat,lonEnd]];const target=[];const total=latlon.length;for(let z=0;z<=1;z++){const height=$5OpyM$MathUtils.mapLinear(z,0,1,heightStart,heightEnd);for(let i=0,l=total;i=latStart&&lat<=latEnd&&lon>=lonStart&&lon<=lonEnd){const v=$aa7b3b269f245cbe$var$getVector(usePool);target.push(v);this.getCartographicToPosition(lat,lon,height,v)}}}return target}getBoundingBox(box,matrix){$aa7b3b269f245cbe$var$resetPool();const{latStart:latStart,latEnd:latEnd,lonStart:lonStart,lonEnd:lonEnd}=this;const latRange=latEnd-latStart;if(latRange<$aa7b3b269f245cbe$var$PI/2){const midLat=$5OpyM$MathUtils.mapLinear(0.5,0,1,latStart,latEnd);const midLon=$5OpyM$MathUtils.mapLinear(0.5,0,1,lonStart,lonEnd);this.getCartographicToNormal(midLat,midLon,$aa7b3b269f245cbe$var$_orthoZ);$aa7b3b269f245cbe$var$_orthoY.set(0,0,1);$aa7b3b269f245cbe$var$_orthoX.crossVectors($aa7b3b269f245cbe$var$_orthoY,$aa7b3b269f245cbe$var$_orthoZ);$aa7b3b269f245cbe$var$_orthoY.crossVectors($aa7b3b269f245cbe$var$_orthoX,$aa7b3b269f245cbe$var$_orthoZ);matrix.makeBasis($aa7b3b269f245cbe$var$_orthoX,$aa7b3b269f245cbe$var$_orthoY,$aa7b3b269f245cbe$var$_orthoZ)}else{$aa7b3b269f245cbe$var$_orthoX.set(1,0,0);$aa7b3b269f245cbe$var$_orthoY.set(0,1,0);$aa7b3b269f245cbe$var$_orthoZ.set(0,0,1);matrix.makeBasis($aa7b3b269f245cbe$var$_orthoX,$aa7b3b269f245cbe$var$_orthoY,$aa7b3b269f245cbe$var$_orthoZ)}$aa7b3b269f245cbe$var$_invMatrix.copy(matrix).invert();const points=this._getPoints(true);for(let i=0,l=points.length;iobbDistance?sphereDistance:obbDistance}intersectsFrustum(frustum){const obb=this.obb||this.regionObb;const sphere=this.sphere;if(sphere&&!frustum.intersectsSphere(sphere))return false;if(obb&&!obb.intersectsFrustum(frustum))return false;return Boolean(sphere||obb)}getOBB(targetBox,targetMatrix){const obb=this.obb||this.regionObb;if(obb){targetBox.copy(obb.box);targetMatrix.copy(obb.transform)}else{this.getAABB(targetBox);targetMatrix.identity()}}getAABB(target){if(this.sphere)this.sphere.getBoundingBox(target);else{const obb=this.obb||this.regionObb;target.copy(obb.box).applyMatrix4(obb.transform)}}getSphere(target){if(this.sphere)target.copy(this.sphere);else if(this.region)this.region.getBoundingSphere(target);else{const obb=this.obb||this.regionObb;obb.box.getBoundingSphere(target);target.applyMatrix4(obb.transform)}}setObbData(data,transform){const obb=new $9e13f7da58b2928b$exports.OBB;$163be4c04da1c269$var$_vecX.set(data[3],data[4],data[5]);$163be4c04da1c269$var$_vecY.set(data[6],data[7],data[8]);$163be4c04da1c269$var$_vecZ.set(data[9],data[10],data[11]);const scaleX=$163be4c04da1c269$var$_vecX.length();const scaleY=$163be4c04da1c269$var$_vecY.length();const scaleZ=$163be4c04da1c269$var$_vecZ.length();$163be4c04da1c269$var$_vecX.normalize();$163be4c04da1c269$var$_vecY.normalize();$163be4c04da1c269$var$_vecZ.normalize();if(scaleX===0)$163be4c04da1c269$var$_vecX.crossVectors($163be4c04da1c269$var$_vecY,$163be4c04da1c269$var$_vecZ);if(scaleY===0)$163be4c04da1c269$var$_vecY.crossVectors($163be4c04da1c269$var$_vecX,$163be4c04da1c269$var$_vecZ);if(scaleZ===0)$163be4c04da1c269$var$_vecZ.crossVectors($163be4c04da1c269$var$_vecX,$163be4c04da1c269$var$_vecY);obb.transform.set($163be4c04da1c269$var$_vecX.x,$163be4c04da1c269$var$_vecY.x,$163be4c04da1c269$var$_vecZ.x,data[0],$163be4c04da1c269$var$_vecX.y,$163be4c04da1c269$var$_vecY.y,$163be4c04da1c269$var$_vecZ.y,data[1],$163be4c04da1c269$var$_vecX.z,$163be4c04da1c269$var$_vecY.z,$163be4c04da1c269$var$_vecZ.z,data[2],0,0,0,1).premultiply(transform);obb.box.min.set(-scaleX,-scaleY,-scaleZ);obb.box.max.set(scaleX,scaleY,scaleZ);obb.update();this.obb=obb}setSphereData(x,y,z,radius,transform){const sphere=new $5OpyM$Sphere;sphere.center.set(x,y,z);sphere.radius=radius;sphere.applyMatrix4(transform);this.sphere=sphere}setRegionData(west,south,east,north,minHeight,maxHeight){const region=new $aa7b3b269f245cbe$exports.EllipsoidRegion($002d29a772485791$exports.WGS84_RADIUS,$002d29a772485791$exports.WGS84_RADIUS,$002d29a772485791$exports.WGS84_HEIGHT,south,north,west,east,minHeight,maxHeight);const obb=new $9e13f7da58b2928b$exports.OBB;region.getBoundingBox(obb.box,obb.transform);obb.update();this.region=region;this.regionObb=obb}}$163be4c04da1c269$exports.TileBoundingVolume=$163be4c04da1c269$var$TileBoundingVolume;const $06d26e8e9f5361d3$var$INITIAL_FRUSTUM_CULLED=Symbol("INITIAL_FRUSTUM_CULLED");const $06d26e8e9f5361d3$var$tempMat=new $5OpyM$Matrix4;const $06d26e8e9f5361d3$var$tempMat2=new $5OpyM$Matrix4;const $06d26e8e9f5361d3$var$tempVector=new $5OpyM$Vector3;const $06d26e8e9f5361d3$var$X_AXIS=new $5OpyM$Vector3(1,0,0);const $06d26e8e9f5361d3$var$Y_AXIS=new $5OpyM$Vector3(0,1,0);function $06d26e8e9f5361d3$var$updateFrustumCulled(object,toInitialValue){object.traverse(c=>{c.frustumCulled=c[$06d26e8e9f5361d3$var$INITIAL_FRUSTUM_CULLED]&&toInitialValue})}class $06d26e8e9f5361d3$var$TilesRenderer extends $5a6f7a997885dc30$exports.TilesRendererBase{get autoDisableRendererCulling(){return this._autoDisableRendererCulling}set autoDisableRendererCulling(value){if(this._autoDisableRendererCulling!==value){super._autoDisableRendererCulling=value;this.forEachLoadedModel(scene=>{$06d26e8e9f5361d3$var$updateFrustumCulled(scene,!value)})}}constructor(...args){super(...args);this.group=new $3fcce8a4f74b2abc$exports.TilesGroup(this);this.cameras=[];this.cameraMap=new Map;this.cameraInfo=[];this.activeTiles=new Set;this.visibleTiles=new Set;this._autoDisableRendererCulling=true;this.optimizeRaycast=true;this.onLoadTileSet=null;this.onLoadModel=null;this.onDisposeModel=null;this.onTileVisibilityChange=null;const manager=new $5OpyM$LoadingManager;manager.setURLModifier(url=>{if(this.preprocessURL)return this.preprocessURL(url);else return url});this.manager=manager;const tilesRenderer=this;this._overridenRaycast=function(raycaster,intersects){if(!tilesRenderer.optimizeRaycast)Object.getPrototypeOf(this).raycast.call(this,raycaster,intersects)}}getBounds(target){if(!this.root)return false;const boundingVolume=this.root.cached.boundingVolume;if(boundingVolume){boundingVolume.getAABB(target);return true}else return true}getOrientedBounds(targetBox,targetMatrix){if(!this.root)return false;const boundingVolume=this.root.cached.boundingVolume;if(boundingVolume){boundingVolume.getOBB(targetBox,targetMatrix);return true}else return true}getBoundingSphere(target){if(!this.root)return false;const boundingVolume=this.root.cached.boundingVolume;if(boundingVolume){boundingVolume.getSphere(target);return true}else return false}forEachLoadedModel(callback){this.traverse(tile=>{const scene=tile.cached.scene;if(scene)callback(scene,tile)})}raycast(raycaster,intersects){if(!this.root)return;if(raycaster.firstHitOnly){const hit=(0,$c1ac95a1e8efcc86$exports.raycastTraverseFirstHit)(this,this.root,raycaster);if(hit)intersects.push(hit)}else(0,$c1ac95a1e8efcc86$exports.raycastTraverse)(this,this.root,raycaster,intersects)}hasCamera(camera){return this.cameraMap.has(camera)}setCamera(camera){const cameras=this.cameras;const cameraMap=this.cameraMap;if(!cameraMap.has(camera)){cameraMap.set(camera,new $5OpyM$Vector2);cameras.push(camera);return true}return false}setResolution(camera,xOrVec,y){const cameraMap=this.cameraMap;if(!cameraMap.has(camera))return false;if(xOrVec instanceof $5OpyM$Vector2)cameraMap.get(camera).copy(xOrVec);else cameraMap.get(camera).set(xOrVec,y);return true}setResolutionFromRenderer(camera,renderer){const cameraMap=this.cameraMap;if(!cameraMap.has(camera))return false;const resolution=cameraMap.get(camera);renderer.getSize(resolution);resolution.multiplyScalar(renderer.getPixelRatio());return true}deleteCamera(camera){const cameras=this.cameras;const cameraMap=this.cameraMap;if(cameraMap.has(camera)){const index=cameras.indexOf(camera);cameras.splice(index,1);cameraMap.delete(camera);return true}return false}fetchTileSet(url,...rest){const pr=super.fetchTileSet(url,...rest);pr.then(json=>{if(this.onLoadTileSet)Promise.resolve().then(()=>{this.onLoadTileSet(json,url)})});return pr}update(){const group=this.group;const cameras=this.cameras;const cameraMap=this.cameraMap;const cameraInfo=this.cameraInfo;if(cameras.length===0){console.warn("TilesRenderer: no cameras defined. Cannot update 3d tiles.");return}while(cameraInfo.length>cameras.length)cameraInfo.pop();while(cameraInfo.length1e-6)console.warn("ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when calculating screen space error.");for(let i=0,l=cameraInfo.length;ires.scene);break}case"gltf":case"glb":const loader=new $29ced67d26e5c4e2$exports.GLTFExtensionLoader(manager);loader.workingPath=workingPath;loader.fetchOptions=fetchOptions;promise=loader.parse(buffer);break;default:console.warn(`TilesRenderer: Content type "${fileType}" not supported.`);promise=Promise.resolve(null);break;}return promise.then(result=>{let scene;let metadata;if(result.isObject3D){scene=result;metadata=null}else{scene=result.scene;metadata=result}if(tile._loadIndex!==loadIndex)return;scene.updateMatrix();if(fileType==="glb"||fileType==="gltf")scene.matrix.multiply(upAdjustment);scene.matrix.premultiply(cachedTransform);scene.matrix.decompose(scene.position,scene.quaternion,scene.scale);scene.traverse(c=>{c[$06d26e8e9f5361d3$var$INITIAL_FRUSTUM_CULLED]=c.frustumCulled});$06d26e8e9f5361d3$var$updateFrustumCulled(scene,!this.autoDisableRendererCulling);scene.traverse(c=>{c.raycast=this._overridenRaycast});const materials=[];const geometry=[];const textures=[];scene.traverse(c=>{if(c.geometry)geometry.push(c.geometry);if(c.material){const material=c.material;materials.push(c.material);for(const key in material){const value=material[key];if(value&&value.isTexture)textures.push(value)}}});cached.materials=materials;cached.geometry=geometry;cached.textures=textures;cached.scene=scene;cached.metadata=metadata;if(this.onLoadModel)this.onLoadModel(scene,tile)})}disposeTile(tile){const cached=tile.cached;if(cached.scene){const materials=cached.materials;const geometry=cached.geometry;const textures=cached.textures;const parent=cached.scene.parent;for(let i=0,l=geometry.length;i0.1){if($3b9225051b507460$var$_pos.z>0)$3b9225051b507460$var$_norm2.multiplyScalar(-1);normal.setXYZ(i,...$3b9225051b507460$var$_norm2)}}return geometry}class $3b9225051b507460$var$EllipsoidRegionLineHelper extends $5OpyM$LineSegments{constructor(ellipsoidRegion=new $aa7b3b269f245cbe$exports.EllipsoidRegion,color=16776960){super();this.ellipsoidRegion=ellipsoidRegion;this.material.color.set(color);this.update()}update(){const geometry=$3b9225051b507460$var$getRegionGeometry(this.ellipsoidRegion);this.geometry.dispose();this.geometry=new $5OpyM$EdgesGeometry(geometry,80)}dispose(){this.geometry.dispose();this.material.dispose()}}$3b9225051b507460$exports.EllipsoidRegionLineHelper=$3b9225051b507460$var$EllipsoidRegionLineHelper;class $3b9225051b507460$var$EllipsoidRegionHelper extends $5OpyM$Mesh{constructor(ellipsoidRegion=new $aa7b3b269f245cbe$exports.EllipsoidRegion,color=16776960){super();this.ellipsoidRegion=ellipsoidRegion;this.material.color.set(color);this.update()}update(){this.geometry.dispose();const geometry=$3b9225051b507460$var$getRegionGeometry(this.ellipsoidRegion);const{lonStart:lonStart,lonEnd:lonEnd}=this;if(lonEnd-lonStart>=2*Math.PI){geometry.groups.splice(2,2);this.geometry=$3b9225051b507460$var$toGroupGeometry(geometry)}else this.geometry=geometry}dispose(){this.geometry.dispose();this.material.dispose()}}$3b9225051b507460$exports.EllipsoidRegionHelper=$3b9225051b507460$var$EllipsoidRegionHelper;const $1909f04f34bd6630$var$ORIGINAL_MATERIAL=Symbol("ORIGINAL_MATERIAL");const $1909f04f34bd6630$var$HAS_RANDOM_COLOR=Symbol("HAS_RANDOM_COLOR");const $1909f04f34bd6630$var$HAS_RANDOM_NODE_COLOR=Symbol("HAS_RANDOM_NODE_COLOR");function $1909f04f34bd6630$var$emptyRaycast(){}const $1909f04f34bd6630$var$NONE=0;$1909f04f34bd6630$exports.NONE=$1909f04f34bd6630$var$NONE;const $1909f04f34bd6630$var$SCREEN_ERROR=1;$1909f04f34bd6630$exports.SCREEN_ERROR=$1909f04f34bd6630$var$SCREEN_ERROR;const $1909f04f34bd6630$var$GEOMETRIC_ERROR=2;$1909f04f34bd6630$exports.GEOMETRIC_ERROR=$1909f04f34bd6630$var$GEOMETRIC_ERROR;const $1909f04f34bd6630$var$DISTANCE=3;$1909f04f34bd6630$exports.DISTANCE=$1909f04f34bd6630$var$DISTANCE;const $1909f04f34bd6630$var$DEPTH=4;$1909f04f34bd6630$exports.DEPTH=$1909f04f34bd6630$var$DEPTH;const $1909f04f34bd6630$var$RELATIVE_DEPTH=5;$1909f04f34bd6630$exports.RELATIVE_DEPTH=$1909f04f34bd6630$var$RELATIVE_DEPTH;const $1909f04f34bd6630$var$IS_LEAF=6;$1909f04f34bd6630$exports.IS_LEAF=$1909f04f34bd6630$var$IS_LEAF;const $1909f04f34bd6630$var$RANDOM_COLOR=7;$1909f04f34bd6630$exports.RANDOM_COLOR=$1909f04f34bd6630$var$RANDOM_COLOR;const $1909f04f34bd6630$var$RANDOM_NODE_COLOR=8;$1909f04f34bd6630$exports.RANDOM_NODE_COLOR=$1909f04f34bd6630$var$RANDOM_NODE_COLOR;const $1909f04f34bd6630$var$CUSTOM_COLOR=9;$1909f04f34bd6630$exports.CUSTOM_COLOR=$1909f04f34bd6630$var$CUSTOM_COLOR;const $1909f04f34bd6630$var$_sphere=new $5OpyM$Sphere;class $1909f04f34bd6630$var$DebugTilesRenderer extends $06d26e8e9f5361d3$exports.TilesRenderer{constructor(...args){super(...args);const tilesGroup=this.group;const boxGroup=new $5OpyM$Group;boxGroup.name="DebugTilesRenderer.boxGroup";tilesGroup.add(boxGroup);const sphereGroup=new $5OpyM$Group;sphereGroup.name="DebugTilesRenderer.sphereGroup";tilesGroup.add(sphereGroup);const regionGroup=new $5OpyM$Group;regionGroup.name="DebugTilesRenderer.regionGroup";tilesGroup.add(regionGroup);this.displayBoxBounds=false;this.displaySphereBounds=false;this.displayRegionBounds=false;this.colorMode=$1909f04f34bd6630$var$NONE;this.customColorCallback=null;this.boxGroup=boxGroup;this.sphereGroup=sphereGroup;this.regionGroup=regionGroup;this.maxDebugDepth=-1;this.maxDebugDistance=-1;this.maxDebugError=-1;this.getDebugColor=(value,target)=>{target.setRGB(value,value,value)};this.extremeDebugDepth=-1;this.extremeDebugError=-1}initExtremes(){let maxDepth=-1;this.traverse(tile=>{maxDepth=Math.max(maxDepth,tile.__depth)});let maxError=-1;this.traverse(tile=>{maxError=Math.max(maxError,tile.geometricError)});this.extremeDebugDepth=maxDepth;this.extremeDebugError=maxError}fetchTileSet(...args){const pr=super.fetchTileSet(...args);pr.then(()=>{Promise.resolve().then(()=>{this.initExtremes()})}).catch(()=>{});return pr}getTileInformationFromActiveObject(object){let targetTile=null;const activeTiles=this.activeTiles;activeTiles.forEach(tile=>{if(targetTile)return true;const scene=tile.cached.scene;if(scene)scene.traverse(c=>{if(c===object)targetTile=tile})});if(targetTile)return{distanceToCamera:targetTile.__distanceFromCamera,geometricError:targetTile.geometricError,screenSpaceError:targetTile.__error,depth:targetTile.__depth,isLeaf:targetTile.__isLeaf};else return null}update(){super.update();if(!this.root)return;this.boxGroup.visible=this.displayBoxBounds;this.sphereGroup.visible=this.displaySphereBounds;this.regionGroup.visible=this.displayRegionBounds;let maxDepth=-1;if(this.maxDebugDepth===-1)maxDepth=this.extremeDebugDepth;else maxDepth=this.maxDebugDepth;let maxError=-1;if(this.maxDebugError===-1)maxError=this.extremeDebugError;else maxError=this.maxDebugError;let maxDistance=-1;if(this.maxDebugDistance===-1){this.root.cached.boundingVolume.getSphere($1909f04f34bd6630$var$_sphere);maxDistance=$1909f04f34bd6630$var$_sphere.radius}else maxDistance=this.maxDebugDistance;const errorTarget=this.errorTarget;const colorMode=this.colorMode;const visibleTiles=this.visibleTiles;visibleTiles.forEach(tile=>{const scene=tile.cached.scene;let h,s,l;if(colorMode===$1909f04f34bd6630$var$RANDOM_COLOR){h=Math.random();s=0.5+Math.random()*0.5;l=0.375+Math.random()*0.25}scene.traverse(c=>{if(colorMode===$1909f04f34bd6630$var$RANDOM_NODE_COLOR){h=Math.random();s=0.5+Math.random()*0.5;l=0.375+Math.random()*0.25}const currMaterial=c.material;if(currMaterial){const originalMaterial=c[$1909f04f34bd6630$var$ORIGINAL_MATERIAL];if(colorMode===$1909f04f34bd6630$var$NONE&&currMaterial!==originalMaterial){c.material.dispose();c.material=c[$1909f04f34bd6630$var$ORIGINAL_MATERIAL]}else if(colorMode!==$1909f04f34bd6630$var$NONE&&currMaterial===originalMaterial){if(c.isPoints){const pointsMaterial=new $5OpyM$PointsMaterial;pointsMaterial.size=originalMaterial.size;pointsMaterial.sizeAttenuation=originalMaterial.sizeAttenuation;c.material=pointsMaterial}else{c.material=new $5OpyM$MeshStandardMaterial;c.material.flatShading=true}}if(colorMode!==$1909f04f34bd6630$var$RANDOM_COLOR)delete c.material[$1909f04f34bd6630$var$HAS_RANDOM_COLOR];if(colorMode!==$1909f04f34bd6630$var$RANDOM_NODE_COLOR)delete c.material[$1909f04f34bd6630$var$HAS_RANDOM_NODE_COLOR];switch(colorMode){case $1909f04f34bd6630$var$DEPTH:{const val=tile.__depth/maxDepth;this.getDebugColor(val,c.material.color);break}case $1909f04f34bd6630$var$RELATIVE_DEPTH:{const val=tile.__depthFromRenderedParent/maxDepth;this.getDebugColor(val,c.material.color);break}case $1909f04f34bd6630$var$SCREEN_ERROR:{const val=tile.__error/errorTarget;if(val>1)c.material.color.setRGB(1,0,0);else this.getDebugColor(val,c.material.color);break}case $1909f04f34bd6630$var$GEOMETRIC_ERROR:{const val=Math.min(tile.geometricError/maxError,1);this.getDebugColor(val,c.material.color);break}case $1909f04f34bd6630$var$DISTANCE:{const val=Math.min(tile.__distanceFromCamera/maxDistance,1);this.getDebugColor(val,c.material.color);break}case $1909f04f34bd6630$var$IS_LEAF:if(!tile.children||tile.children.length===0)this.getDebugColor(1,c.material.color);else this.getDebugColor(0,c.material.color);break;case $1909f04f34bd6630$var$RANDOM_NODE_COLOR:if(!c.material[$1909f04f34bd6630$var$HAS_RANDOM_NODE_COLOR]){c.material.color.setHSL(h,s,l);c.material[$1909f04f34bd6630$var$HAS_RANDOM_NODE_COLOR]=true}break;case $1909f04f34bd6630$var$RANDOM_COLOR:if(!c.material[$1909f04f34bd6630$var$HAS_RANDOM_COLOR]){c.material.color.setHSL(h,s,l);c.material[$1909f04f34bd6630$var$HAS_RANDOM_COLOR]=true}break;case $1909f04f34bd6630$var$CUSTOM_COLOR:if(this.customColorCallback)this.customColorCallback(tile,c);else console.warn("DebugTilesRenderer: customColorCallback not defined");break;}}})})}setTileVisible(tile,visible){super.setTileVisible(tile,visible);const cached=tile.cached;const sphereGroup=this.sphereGroup;const boxGroup=this.boxGroup;const regionGroup=this.regionGroup;const boxHelperGroup=cached.boxHelperGroup;const sphereHelper=cached.sphereHelper;const regionHelper=cached.regionHelper;if(!visible){if(boxHelperGroup)boxGroup.remove(boxHelperGroup);if(sphereHelper)sphereGroup.remove(sphereHelper);if(regionHelper)regionGroup.remove(regionHelper)}else{if(boxHelperGroup){boxGroup.add(boxHelperGroup);boxHelperGroup.updateMatrixWorld(true)}if(sphereHelper){sphereGroup.add(sphereHelper);sphereHelper.updateMatrixWorld(true)}if(regionHelper){regionGroup.add(regionHelper);regionHelper.updateMatrixWorld(true)}}}parseTile(buffer,tile,extension){return super.parseTile(buffer,tile,extension).then(()=>{const cached=tile.cached;const scene=cached.scene;if(scene){const{sphere:sphere,obb:obb,region:region}=cached.boundingVolume;if(obb){const boxHelperGroup=new $5OpyM$Group;boxHelperGroup.name="DebugTilesRenderer.boxHelperGroup";boxHelperGroup.matrix.copy(obb.transform);boxHelperGroup.matrixAutoUpdate=false;const boxHelper=new $5OpyM$Box3Helper(obb.box,(0,$3a66585ec6f85053$exports.getIndexedRandomColor)(tile.__depth));boxHelper.raycast=$1909f04f34bd6630$var$emptyRaycast;boxHelperGroup.add(boxHelper);cached.boxHelperGroup=boxHelperGroup;if(this.visibleTiles.has(tile)&&this.displayBoxBounds){this.boxGroup.add(boxHelperGroup);boxHelperGroup.updateMatrixWorld(true)}}if(sphere){const sphereHelper=new $1cb839fa4db014d3$exports.SphereHelper(sphere,(0,$3a66585ec6f85053$exports.getIndexedRandomColor)(tile.__depth));sphereHelper.raycast=$1909f04f34bd6630$var$emptyRaycast;cached.sphereHelper=sphereHelper;if(this.visibleTiles.has(tile)&&this.displaySphereBounds){this.sphereGroup.add(sphereHelper);sphereHelper.updateMatrixWorld(true)}}if(region){const regionHelper=new $3b9225051b507460$exports.EllipsoidRegionLineHelper(region,(0,$3a66585ec6f85053$exports.getIndexedRandomColor)(tile.__depth));regionHelper.raycast=$1909f04f34bd6630$var$emptyRaycast;const sphere=new $5OpyM$Sphere;region.getBoundingSphere(sphere);regionHelper.position.copy(sphere.center);sphere.center.multiplyScalar(-1);regionHelper.geometry.translate(...sphere.center);cached.regionHelper=regionHelper;if(this.visibleTiles.has(tile)&&this.displayRegionBounds){this.regionGroup.add(regionHelper);regionHelper.updateMatrixWorld(true)}}scene.traverse(c=>{const material=c.material;if(material)c[$1909f04f34bd6630$var$ORIGINAL_MATERIAL]=material})}})}disposeTile(tile){super.disposeTile(tile);const cached=tile.cached;if(cached.boxHelperGroup){cached.boxHelperGroup.children[0].geometry.dispose();delete cached.boxHelperGroup}if(cached.sphereHelper){cached.sphereHelper.geometry.dispose();delete cached.sphereHelper}}}$1909f04f34bd6630$exports.DebugTilesRenderer=$1909f04f34bd6630$var$DebugTilesRenderer;var $cf838c15c8b009ba$var$_GeoUtils=$cf838c15c8b009ba$var$_interopRequireWildcard(parcelRequire("1hGdn"));$cf838c15c8b009ba$exports.GeoUtils=$cf838c15c8b009ba$var$_GeoUtils;var $74a95d3099be71d6$exports={};"use strict";Object.defineProperty($74a95d3099be71d6$exports,"__esModule",{value:true});$74a95d3099be71d6$exports.WGS84_ELLIPSOID=void 0;const $74a95d3099be71d6$var$WGS84_ELLIPSOID=new $9160f8f2e0578e98$exports.Ellipsoid($002d29a772485791$exports.WGS84_RADIUS,$002d29a772485791$exports.WGS84_RADIUS,$002d29a772485791$exports.WGS84_HEIGHT);$74a95d3099be71d6$exports.WGS84_ELLIPSOID=$74a95d3099be71d6$var$WGS84_ELLIPSOID;Object.keys($74a95d3099be71d6$exports).forEach(function(key){if(key==="default"||key==="__esModule")return;if(Object.prototype.hasOwnProperty.call($cf838c15c8b009ba$var$_exportNames,key))return;if(key in $cf838c15c8b009ba$exports&&$cf838c15c8b009ba$exports[key]===$74a95d3099be71d6$exports[key])return;Object.defineProperty($cf838c15c8b009ba$exports,key,{enumerable:true,get:function(){return $74a95d3099be71d6$exports[key]}})});var $e41589f0d6e8ce27$exports={};"use strict";Object.defineProperty($e41589f0d6e8ce27$exports,"__esModule",{value:true});$e41589f0d6e8ce27$exports.GoogleTilesRenderer=$e41589f0d6e8ce27$exports.DebugGoogleTilesRenderer=void 0;var $f462b5e10a0d334c$exports={};"use strict";Object.defineProperty($f462b5e10a0d334c$exports,"__esModule",{value:true});$f462b5e10a0d334c$exports.GoogleMapsTilesCredits=void 0;class $f462b5e10a0d334c$var$GoogleMapsTilesCredits{constructor(){this.creditsCount={}}_adjustCredits(line,add){const creditsCount=this.creditsCount;const tokens=line.split(/;/g);for(let i=0,l=tokens.length;iclass extends base{get ellipsoid(){return $74a95d3099be71d6$exports.WGS84_ELLIPSOID}constructor(apiKey,baseUrl=$e41589f0d6e8ce27$var$TILE_URL){super(new URL(`${baseUrl}?key=${apiKey}`).toString());this._credits=new $f462b5e10a0d334c$exports.GoogleMapsTilesCredits;this.fetchOptions.mode="cors";this.parseQueue.maxJobs=10;this.downloadQueue.maxJobs=30;this.lruCache.minSize=3000;this.lruCache.maxSize=5000;this.errorTarget=20;this.onLoadTileSet=tileset=>{let session;this.traverse(tile=>{if(tile.content&&tile.content.uri){session=new URL(tile.content.uri).searchParams.get("session");return true}return false});this.preprocessURL=uri=>{uri=new URL(uri);if(/^http/.test(uri.protocol)){uri.searchParams.append("session",session);uri.searchParams.append("key",apiKey)}return uri.toString()};this.onLoadTileSet=null};this.onTileVisibilityChange=(scene,tile,visible)=>{const copyright=tile.cached.metadata.asset.copyright||"";if(visible)this._credits.addCredits(copyright);else this._credits.removeCredits(copyright)}}getCreditsString(){return this._credits.toString()}setLatLonToYUp(lat,lon){const{ellipsoid:ellipsoid,group:group}=this;$e41589f0d6e8ce27$var$_euler.set(Math.PI/2,Math.PI/2,0);$e41589f0d6e8ce27$var$_mat.makeRotationFromEuler($e41589f0d6e8ce27$var$_euler);ellipsoid.constructLatLonFrame(lat,lon,group.matrix).multiply($e41589f0d6e8ce27$var$_mat).invert().decompose(group.position,group.quaternion,group.scale)}};const $e41589f0d6e8ce27$var$GoogleTilesRenderer=$e41589f0d6e8ce27$var$GoogleTilesRendererMixin($06d26e8e9f5361d3$exports.TilesRenderer);$e41589f0d6e8ce27$exports.GoogleTilesRenderer=$e41589f0d6e8ce27$var$GoogleTilesRenderer;const $e41589f0d6e8ce27$var$DebugGoogleTilesRenderer=$e41589f0d6e8ce27$var$GoogleTilesRendererMixin($1909f04f34bd6630$exports.DebugTilesRenderer);$e41589f0d6e8ce27$exports.DebugGoogleTilesRenderer=$e41589f0d6e8ce27$var$DebugGoogleTilesRenderer;Object.keys($e41589f0d6e8ce27$exports).forEach(function(key){if(key==="default"||key==="__esModule")return;if(Object.prototype.hasOwnProperty.call($cf838c15c8b009ba$var$_exportNames,key))return;if(key in $cf838c15c8b009ba$exports&&$cf838c15c8b009ba$exports[key]===$e41589f0d6e8ce27$exports[key])return;Object.defineProperty($cf838c15c8b009ba$exports,key,{enumerable:true,get:function(){return $e41589f0d6e8ce27$exports[key]}})});var $3b72713b91ab2ada$exports={};"use strict";Object.defineProperty($3b72713b91ab2ada$exports,"__esModule",{value:true});$3b72713b91ab2ada$exports.DebugCesiumIonTilesRenderer=$3b72713b91ab2ada$exports.CesiumIonTilesRenderer=void 0;const $3b72713b91ab2ada$var$UNLOADED=0;const $3b72713b91ab2ada$var$LOADING=1;const $3b72713b91ab2ada$var$LOADED=2;const $3b72713b91ab2ada$var$FAILED=3;const $3b72713b91ab2ada$var$CesiumIonTilesRendererMixin=base=>class extends base{constructor(ionAssetId,ionAccessToken){super();this._tokenState=$3b72713b91ab2ada$var$UNLOADED;this._ionAccessToken=ionAccessToken;this._ionAssetId=ionAssetId;this._tileSetVersion=-1;this.preprocessURL=uri=>{uri=new URL(uri);if(/^http/.test(uri.protocol)&&this._tileSetVersion!=-1)uri.searchParams.append("v",this._tileSetVersion);return uri.toString()}}update(){const state=this._tokenState;if(state===$3b72713b91ab2ada$var$UNLOADED){this._tokenState=$3b72713b91ab2ada$var$LOADING;const url=new URL(`https://api.cesium.com/v1/assets/${this._ionAssetId}/endpoint`);url.searchParams.append("access_token",this._ionAccessToken);fetch(url,{mode:"cors"}).then(res=>{if(res.ok)return res.json();else return Promise.reject(`${res.status} : ${res.statusText}`)}).then(json=>{this._tokenState=$3b72713b91ab2ada$var$LOADED;const url=new URL(json.url);this._tileSetVersion=url.searchParams.get("v");this.rootURL=url;this.fetchOptions.headers=this.fetchOptions.headers||{};this.fetchOptions.headers.Authorization=`Bearer ${json.accessToken}`}).catch(()=>{this._tokenState=$3b72713b91ab2ada$var$FAILED})}else if(state===$3b72713b91ab2ada$var$LOADED)super.update()}};const $3b72713b91ab2ada$var$CesiumIonTilesRenderer=$3b72713b91ab2ada$var$CesiumIonTilesRendererMixin($06d26e8e9f5361d3$exports.TilesRenderer);$3b72713b91ab2ada$exports.CesiumIonTilesRenderer=$3b72713b91ab2ada$var$CesiumIonTilesRenderer;const $3b72713b91ab2ada$var$DebugCesiumIonTilesRenderer=$3b72713b91ab2ada$var$CesiumIonTilesRendererMixin($1909f04f34bd6630$exports.DebugTilesRenderer);$3b72713b91ab2ada$exports.DebugCesiumIonTilesRenderer=$3b72713b91ab2ada$var$DebugCesiumIonTilesRenderer;Object.keys($3b72713b91ab2ada$exports).forEach(function(key){if(key==="default"||key==="__esModule")return;if(Object.prototype.hasOwnProperty.call($cf838c15c8b009ba$var$_exportNames,key))return;if(key in $cf838c15c8b009ba$exports&&$cf838c15c8b009ba$exports[key]===$3b72713b91ab2ada$exports[key])return;Object.defineProperty($cf838c15c8b009ba$exports,key,{enumerable:true,get:function(){return $3b72713b91ab2ada$exports[key]}})});Object.keys($002d29a772485791$exports).forEach(function(key){if(key==="default"||key==="__esModule")return;if(Object.prototype.hasOwnProperty.call($cf838c15c8b009ba$var$_exportNames,key))return;if(key in $cf838c15c8b009ba$exports&&$cf838c15c8b009ba$exports[key]===$002d29a772485791$exports[key])return;Object.defineProperty($cf838c15c8b009ba$exports,key,{enumerable:true,get:function(){return $002d29a772485791$exports[key]}})});function $cf838c15c8b009ba$var$_getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return($cf838c15c8b009ba$var$_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function $cf838c15c8b009ba$var$_interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(obj===null||typeof obj!=="object"&&typeof obj!=="function")return{default:obj};var cache=$cf838c15c8b009ba$var$_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set))Object.defineProperty(newObj,key,desc);else newObj[key]=obj[key]}newObj.default=obj;if(cache)cache.set(obj,newObj);return newObj}THREE.TDTiles=$cf838c15c8b009ba$exports});(function(){const Constants={Handedness:Object.freeze({NONE:"none",LEFT:"left",RIGHT:"right"}),ComponentState:Object.freeze({DEFAULT:"default",TOUCHED:"touched",PRESSED:"pressed"}),ComponentProperty:Object.freeze({BUTTON:"button",X_AXIS:"xAxis",Y_AXIS:"yAxis",STATE:"state"}),ComponentType:Object.freeze({TRIGGER:"trigger",SQUEEZE:"squeeze",TOUCHPAD:"touchpad",THUMBSTICK:"thumbstick",BUTTON:"button"}),ButtonTouchThreshold:0.05,AxisTouchThreshold:0.1,VisualResponseProperty:Object.freeze({TRANSFORM:"transform",VISIBILITY:"visibility"})};async function fetchJsonFile(path){const response=await fetch(path);if(!response.ok){throw new Error(response.statusText)}else{return response.json()}}async function fetchProfilesList(basePath){if(!basePath){throw new Error("No basePath supplied")}const profileListFileName="profilesList.json";const profilesList=await fetchJsonFile(`${basePath}/${profileListFileName}`);return profilesList}async function fetchProfile(xrInputSource,basePath,defaultProfile=null,getAssetPath=true){if(!xrInputSource){throw new Error("No xrInputSource supplied")}if(!basePath){throw new Error("No basePath supplied")}const supportedProfilesList=await fetchProfilesList(basePath);let match;xrInputSource.profiles.some(profileId=>{const supportedProfile=supportedProfilesList[profileId];if(supportedProfile){match={profileId,profilePath:`${basePath}/${supportedProfile.path}`,deprecated:!!supportedProfile.deprecated}}return!!match});if(!match){if(!defaultProfile){throw new Error("No matching profile name found")}const supportedProfile=supportedProfilesList[defaultProfile];if(!supportedProfile){throw new Error(`No matching profile name found and default profile "${defaultProfile}" missing.`)}match={profileId:defaultProfile,profilePath:`${basePath}/${supportedProfile.path}`,deprecated:!!supportedProfile.deprecated}}const profile=await fetchJsonFile(match.profilePath);let assetPath;if(getAssetPath){let layout;if(xrInputSource.handedness==="any"){layout=profile.layouts[Object.keys(profile.layouts)[0]]}else{layout=profile.layouts[xrInputSource.handedness]}if(!layout){throw new Error(`No matching handedness, ${xrInputSource.handedness}, in profile ${match.profileId}`)}if(layout.assetPath){assetPath=match.profilePath.replace("profile.json",layout.assetPath)}}return{profile,assetPath}}const defaultComponentValues={xAxis:0,yAxis:0,button:0,state:Constants.ComponentState.DEFAULT};function normalizeAxes(x=0,y=0){let xAxis=x;let yAxis=y;const hypotenuse=Math.sqrt(x*x+y*y);if(hypotenuse>1){const theta=Math.atan2(y,x);xAxis=Math.cos(theta);yAxis=Math.sin(theta)}const result={normalizedXAxis:xAxis*0.5+0.5,normalizedYAxis:yAxis*0.5+0.5};return result}class VisualResponse{constructor(visualResponseDescription){this.componentProperty=visualResponseDescription.componentProperty;this.states=visualResponseDescription.states;this.valueNodeName=visualResponseDescription.valueNodeName;this.valueNodeProperty=visualResponseDescription.valueNodeProperty;if(this.valueNodeProperty===Constants.VisualResponseProperty.TRANSFORM){this.minNodeName=visualResponseDescription.minNodeName;this.maxNodeName=visualResponseDescription.maxNodeName}this.value=0;this.updateFromComponent(defaultComponentValues)}updateFromComponent({xAxis,yAxis,button,state}){const{normalizedXAxis,normalizedYAxis}=normalizeAxes(xAxis,yAxis);switch(this.componentProperty){case Constants.ComponentProperty.X_AXIS:this.value=this.states.includes(state)?normalizedXAxis:0.5;break;case Constants.ComponentProperty.Y_AXIS:this.value=this.states.includes(state)?normalizedYAxis:0.5;break;case Constants.ComponentProperty.BUTTON:this.value=this.states.includes(state)?button:0;break;case Constants.ComponentProperty.STATE:if(this.valueNodeProperty===Constants.VisualResponseProperty.VISIBILITY){this.value=this.states.includes(state)}else{this.value=this.states.includes(state)?1:0}break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`);}}}class Component{constructor(componentId,componentDescription){if(!componentId||!componentDescription||!componentDescription.visualResponses||!componentDescription.gamepadIndices||Object.keys(componentDescription.gamepadIndices).length===0){throw new Error("Invalid arguments supplied")}this.id=componentId;this.type=componentDescription.type;this.rootNodeName=componentDescription.rootNodeName;this.touchPointNodeName=componentDescription.touchPointNodeName;this.visualResponses={};Object.keys(componentDescription.visualResponses).forEach(responseName=>{const visualResponse=new VisualResponse(componentDescription.visualResponses[responseName]);this.visualResponses[responseName]=visualResponse});this.gamepadIndices=Object.assign({},componentDescription.gamepadIndices);this.values={state:Constants.ComponentState.DEFAULT,button:this.gamepadIndices.button!==undefined?0:undefined,xAxis:this.gamepadIndices.xAxis!==undefined?0:undefined,yAxis:this.gamepadIndices.yAxis!==undefined?0:undefined}}get data(){const data={id:this.id,...this.values};return data}updateFromGamepad(gamepad){this.values.state=Constants.ComponentState.DEFAULT;if(this.gamepadIndices.button!==undefined&&gamepad.buttons.length>this.gamepadIndices.button){const gamepadButton=gamepad.buttons[this.gamepadIndices.button];this.values.button=gamepadButton.value;this.values.button=this.values.button<0?0:this.values.button;this.values.button=this.values.button>1?1:this.values.button;if(gamepadButton.pressed||this.values.button===1){this.values.state=Constants.ComponentState.PRESSED}else if(gamepadButton.touched||this.values.button>Constants.ButtonTouchThreshold){this.values.state=Constants.ComponentState.TOUCHED}}if(this.gamepadIndices.xAxis!==undefined&&gamepad.axes.length>this.gamepadIndices.xAxis){this.values.xAxis=gamepad.axes[this.gamepadIndices.xAxis];this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis;this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis;if(this.values.state===Constants.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Constants.AxisTouchThreshold){this.values.state=Constants.ComponentState.TOUCHED}}if(this.gamepadIndices.yAxis!==undefined&&gamepad.axes.length>this.gamepadIndices.yAxis){this.values.yAxis=gamepad.axes[this.gamepadIndices.yAxis];this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis;this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis;if(this.values.state===Constants.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Constants.AxisTouchThreshold){this.values.state=Constants.ComponentState.TOUCHED}}Object.values(this.visualResponses).forEach(visualResponse=>{visualResponse.updateFromComponent(this.values)})}}class MotionController{constructor(xrInputSource,profile,assetUrl){if(!xrInputSource){throw new Error("No xrInputSource supplied")}if(!profile){throw new Error("No profile supplied")}this.xrInputSource=xrInputSource;this.assetUrl=assetUrl;this.id=profile.profileId;this.layoutDescription=profile.layouts[xrInputSource.handedness];this.components={};Object.keys(this.layoutDescription.components).forEach(componentId=>{const componentDescription=this.layoutDescription.components[componentId];this.components[componentId]=new Component(componentId,componentDescription)});this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){const data=[];Object.values(this.components).forEach(component=>{data.push(component.data)});return data}updateFromGamepad(){Object.values(this.components).forEach(component=>{component.updateFromGamepad(this.xrInputSource.gamepad)})}}THREE.MontionControllers={};THREE.MontionControllers.Constants=Constants;THREE.MontionControllers.MotionController=MotionController;THREE.MontionControllers.fetchProfile=fetchProfile;THREE.MontionControllers.fetchProfilesList=fetchProfilesList})();(function(){var Mesh=THREE.Mesh,MeshBasicMaterial=THREE.MeshBasicMaterial,Object3D=THREE.Object3D,SphereGeometry=THREE.SphereGeometry;var GLTFLoader=THREE.GLTFLoader;var MotionControllerConstants=THREE.MontionControllers.Constants,fetchProfile=THREE.MontionControllers.fetchProfile,MotionController=THREE.MontionControllers.MotionController;const DEFAULT_PROFILES_PATH="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles";const DEFAULT_PROFILE="generic-trigger";class XRControllerModel extends Object3D{constructor(){super();this.motionController=null;this.envMap=null}setEnvironmentMap(envMap){if(this.envMap==envMap){return this}this.envMap=envMap;this.traverse(child=>{if(child.isMesh){child.material.envMap=this.envMap;child.material.needsUpdate=true}});return this}updateMatrixWorld(force){super.updateMatrixWorld(force);if(!this.motionController)return;this.motionController.updateFromGamepad();Object.values(this.motionController.components).forEach(component=>{Object.values(component.visualResponses).forEach(visualResponse=>{const{valueNode,minNode,maxNode,value,valueNodeProperty}=visualResponse;if(!valueNode)return;if(valueNodeProperty===MotionControllerConstants.VisualResponseProperty.VISIBILITY){valueNode.visible=value}else if(valueNodeProperty===MotionControllerConstants.VisualResponseProperty.TRANSFORM){valueNode.quaternion.slerpQuaternions(minNode.quaternion,maxNode.quaternion,value);valueNode.position.lerpVectors(minNode.position,maxNode.position,value)}})})}}function findNodes(motionController,scene){Object.values(motionController.components).forEach(component=>{const{type,touchPointNodeName,visualResponses}=component;if(type===MotionControllerConstants.ComponentType.TOUCHPAD){component.touchPointNode=scene.getObjectByName(touchPointNodeName);if(component.touchPointNode){const sphereGeometry=new SphereGeometry(0.001);const material=new MeshBasicMaterial({color:255});const sphere=new Mesh(sphereGeometry,material);component.touchPointNode.add(sphere)}else{console.warn(`Could not find touch dot, ${component.touchPointNodeName}, in touchpad component ${component.id}`)}}Object.values(visualResponses).forEach(visualResponse=>{const{valueNodeName,minNodeName,maxNodeName,valueNodeProperty}=visualResponse;if(valueNodeProperty===MotionControllerConstants.VisualResponseProperty.TRANSFORM){visualResponse.minNode=scene.getObjectByName(minNodeName);visualResponse.maxNode=scene.getObjectByName(maxNodeName);if(!visualResponse.minNode){console.warn(`Could not find ${minNodeName} in the model`);return}if(!visualResponse.maxNode){console.warn(`Could not find ${maxNodeName} in the model`);return}}visualResponse.valueNode=scene.getObjectByName(valueNodeName);if(!visualResponse.valueNode){console.warn(`Could not find ${valueNodeName} in the model`)}})})}function addAssetSceneToControllerModel(controllerModel,scene){findNodes(controllerModel.motionController,scene);if(controllerModel.envMap){scene.traverse(child=>{if(child.isMesh){child.material.envMap=controllerModel.envMap;child.material.needsUpdate=true}})}controllerModel.add(scene)}class XRControllerModelFactory{constructor(gltfLoader=null){this.gltfLoader=gltfLoader;this.path=DEFAULT_PROFILES_PATH;this._assetCache={};if(!this.gltfLoader){this.gltfLoader=new GLTFLoader}this}createControllerModel(controller,profiles=null){const controllerModel=new XRControllerModel;let scene=null;controller.addEventListener("connected",event=>{const xrInputSource=event.data;const profileInfo={profiles:profiles&&profiles(xrInputSource)||xrInputSource.profiles,handedness:xrInputSource.handedness};if(xrInputSource.targetRayMode!=="tracked-pointer"||!xrInputSource.gamepad)return;fetchProfile(profileInfo,this.path,DEFAULT_PROFILE).then(({profile,assetPath})=>{controllerModel.motionController=new MotionController(xrInputSource,profile,assetPath);const cachedAsset=this._assetCache[controllerModel.motionController.assetUrl];if(cachedAsset){scene=cachedAsset.scene.clone();addAssetSceneToControllerModel(controllerModel,scene);setTimeout(function(){controllerModel.dispatchEvent({type:"loaded"})},0)}else{if(!this.gltfLoader){throw new Error("GLTFLoader not set.")}this.gltfLoader.setPath("");this.gltfLoader.load(controllerModel.motionController.assetUrl,asset=>{this._assetCache[controllerModel.motionController.assetUrl]=asset;scene=asset.scene.clone();addAssetSceneToControllerModel(controllerModel,scene);controllerModel.dispatchEvent({type:"loaded"})},null,()=>{throw new Error(`Asset ${controllerModel.motionController.assetUrl} missing or malformed.`)})}}).catch(err=>{console.warn(err)})});controller.addEventListener("disconnected",()=>{controllerModel.motionController=null;controllerModel.remove(scene);scene=null});return controllerModel}}THREE.XRControllerModelFactory=XRControllerModelFactory})();(function(){const DepthLimitedBlurShader={defines:{"KERNEL_RADIUS":4,"DEPTH_PACKING":1,"PERSPECTIVE_CAMERA":1},uniforms:{"tDiffuse":{value:null},"size":{value:new THREE.Vector2(512,512)},"sampleUvOffsets":{value:[new THREE.Vector2(0,0)]},"sampleWeights":{value:[1]},"tDepth":{value:null},"cameraNear":{value:10},"cameraFar":{value:1000},"depthCutoff":{value:10}},vertexShader:` #include uniform vec2 size; varying vec2 vUv; varying vec2 vInvSize; void main() { vUv = uv; vInvSize = 1.0 / size; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` #include #include uniform sampler2D tDiffuse; uniform sampler2D tDepth; uniform float cameraNear; uniform float cameraFar; uniform float depthCutoff; uniform vec2 sampleUvOffsets[ KERNEL_RADIUS + 1 ]; uniform float sampleWeights[ KERNEL_RADIUS + 1 ]; varying vec2 vUv; varying vec2 vInvSize; float getDepth( const in vec2 screenPosition ) { #if DEPTH_PACKING == 1 return unpackRGBAToDepth( texture2D( tDepth, screenPosition ) ); #else return texture2D( tDepth, screenPosition ).x; #endif } float getViewZ( const in float depth ) { #if PERSPECTIVE_CAMERA == 1 return perspectiveDepthToViewZ( depth, cameraNear, cameraFar ); #else return orthographicDepthToViewZ( depth, cameraNear, cameraFar ); #endif } void main() { float depth = getDepth( vUv ); if( depth >= ( 1.0 - EPSILON ) ) { discard; } float centerViewZ = -getViewZ( depth ); bool rBreak = false, lBreak = false; float weightSum = sampleWeights[0]; vec4 diffuseSum = texture2D( tDiffuse, vUv ) * weightSum; for( int i = 1; i <= KERNEL_RADIUS; i ++ ) { float sampleWeight = sampleWeights[i]; vec2 sampleUvOffset = sampleUvOffsets[i] * vInvSize; vec2 sampleUv = vUv + sampleUvOffset; float viewZ = -getViewZ( getDepth( sampleUv ) ); if( abs( viewZ - centerViewZ ) > depthCutoff ) rBreak = true; if( ! rBreak ) { diffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight; weightSum += sampleWeight; } sampleUv = vUv - sampleUvOffset; viewZ = -getViewZ( getDepth( sampleUv ) ); if( abs( viewZ - centerViewZ ) > depthCutoff ) lBreak = true; if( ! lBreak ) { diffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight; weightSum += sampleWeight; } } gl_FragColor = diffuseSum / weightSum; }`};const BlurShaderUtils={createSampleWeights:function(kernelRadius,stdDev){const weights=[];for(let i=0;i<=kernelRadius;i++){weights.push(gaussian(i,stdDev))}return weights},createSampleOffsets:function(kernelRadius,uvIncrement){const offsets=[];for(let i=0;i<=kernelRadius;i++){offsets.push(uvIncrement.clone().multiplyScalar(i))}return offsets},configure:function(material,kernelRadius,stdDev,uvIncrement){material.defines["KERNEL_RADIUS"]=kernelRadius;material.uniforms["sampleUvOffsets"].value=BlurShaderUtils.createSampleOffsets(kernelRadius,uvIncrement);material.uniforms["sampleWeights"].value=BlurShaderUtils.createSampleWeights(kernelRadius,stdDev);material.needsUpdate=true}};function gaussian(x,stdDev){return Math.exp(-(x*x)/(2*(stdDev*stdDev)))/(Math.sqrt(2*Math.PI)*stdDev)}THREE.BlurShaderUtils=BlurShaderUtils;THREE.DepthLimitedBlurShader=DepthLimitedBlurShader})();(function(){class EffectComposer{constructor(renderer,renderTarget){this.renderer=renderer;if(renderTarget===undefined){const size=renderer.getSize(new THREE.Vector2);this._pixelRatio=renderer.getPixelRatio();this._width=size.width;this._height=size.height;renderTarget=new THREE.WebGLRenderTarget(this._width*this._pixelRatio,this._height*this._pixelRatio);renderTarget.texture.name="EffectComposer.rt1"}else{this._pixelRatio=1;this._width=renderTarget.width;this._height=renderTarget.height}this.renderTarget1=renderTarget;this.renderTarget2=renderTarget.clone();this.renderTarget2.texture.name="EffectComposer.rt2";this.writeBuffer=this.renderTarget1;this.readBuffer=this.renderTarget2;this.renderToScreen=true;this.passes=[];if(THREE.CopyShader===undefined){console.error("THREE.EffectComposer relies on THREE.CopyShader")}if(THREE.ShaderPass===undefined){console.error("THREE.EffectComposer relies on THREE.ShaderPass")}this.copyPass=new THREE.ShaderPass(THREE.CopyShader);this.clock=new THREE.Clock}swapBuffers(){const tmp=this.readBuffer;this.readBuffer=this.writeBuffer;this.writeBuffer=tmp}addPass(pass){this.passes.push(pass);pass.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(pass,index){this.passes.splice(index,0,pass);pass.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(pass){const index=this.passes.indexOf(pass);if(index!==-1){this.passes.splice(index,1)}}isLastEnabledPass(passIndex){for(let i=passIndex+1;i 0.; // . 1 . // 0 0 0 // . 1 . // 45 deg edge detection and corners of objects, aka V/H contrast is too similar if( abs( relativeVContrast ) < .3 ) { // locate the edge vec2 dirToEdge; dirToEdge.x = contrastE > contrastW ? 1. : -1.; dirToEdge.y = contrastS > contrastN ? 1. : -1.; // . 2 . . 1 . // 1 0 2 ~= 0 0 1 // . 1 . . 0 . // tap 2 pixels and see which ones are "outside" the edge, to // determine if the edge is vertical or horizontal vec4 rgbaAlongH = FxaaTexOff(tex, posM, vec2( dirToEdge.x, -dirToEdge.y ), fxaaQualityRcpFrame.xy); float matchAlongH = contrast( rgbaM, rgbaAlongH ); // . 1 . // 0 0 1 // . 0 H vec4 rgbaAlongV = FxaaTexOff(tex, posM, vec2( -dirToEdge.x, dirToEdge.y ), fxaaQualityRcpFrame.xy); float matchAlongV = contrast( rgbaM, rgbaAlongV ); // V 1 . // 0 0 1 // . 0 . relativeVContrast = matchAlongV - matchAlongH; relativeVContrast *= fxaaQualityinvEdgeThreshold; if( abs( relativeVContrast ) < .3 ) { // 45 deg edge // 1 1 . // 0 0 1 // . 0 1 // do a simple blur return mix( rgbaM, (rgbaN + rgbaS + rgbaE + rgbaW) * .25, .4 ); } horzSpan = relativeVContrast > 0.; } if(!horzSpan) rgbaN = rgbaW; if(!horzSpan) rgbaS = rgbaE; // . 0 . 1 // 1 0 1 -> 0 // . 0 . 1 bool pairN = contrast( rgbaM, rgbaN ) > contrast( rgbaM, rgbaS ); if(!pairN) rgbaN = rgbaS; vec2 offNP; offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x; offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y; bool doneN = false; bool doneP = false; float nDist = 0.; float pDist = 0.; vec2 posN = posM; vec2 posP = posM; int iterationsUsed = 0; int iterationsUsedN = 0; int iterationsUsedP = 0; for( int i = 0; i < NUM_SAMPLES; i++ ) { iterationsUsed = i; float increment = float(i + 1); if(!doneN) { nDist += increment; posN = posM + offNP * nDist; vec4 rgbaEndN = FxaaTexTop(tex, posN.xy); doneN = contrast( rgbaEndN, rgbaM ) > contrast( rgbaEndN, rgbaN ); iterationsUsedN = i; } if(!doneP) { pDist += increment; posP = posM - offNP * pDist; vec4 rgbaEndP = FxaaTexTop(tex, posP.xy); doneP = contrast( rgbaEndP, rgbaM ) > contrast( rgbaEndP, rgbaN ); iterationsUsedP = i; } if(doneN || doneP) break; } if ( !doneP && !doneN ) return rgbaM; // failed to find end of edge float dist = min( doneN ? float( iterationsUsedN ) / float( NUM_SAMPLES - 1 ) : 1., doneP ? float( iterationsUsedP ) / float( NUM_SAMPLES - 1 ) : 1. ); // hacky way of reduces blurriness of mostly diagonal edges // but reduces AA quality dist = pow(dist, .5); dist = 1. - dist; return mix( rgbaM, rgbaN, dist * .5 ); } void main() { const float edgeDetectionQuality = .2; const float invEdgeDetectionQuality = 1. / edgeDetectionQuality; gl_FragColor = FxaaPixelShader( vUv, tDiffuse, resolution, edgeDetectionQuality, // [0,1] contrast needed, otherwise early discard invEdgeDetectionQuality ); } `};THREE.FXAAShader=FXAAShader})();(function(){const GammaCorrectionShader={uniforms:{"tDiffuse":{value:null}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` uniform sampler2D tDiffuse; varying vec2 vUv; void main() { vec4 tex = texture2D( tDiffuse, vUv ); gl_FragColor = LinearTosRGB( tex ); }`};THREE.GammaCorrectionShader=GammaCorrectionShader})();(function(require){class CustomRenderPass extends THREE.Pass{constructor(renderCallback){super();this.renderCallback=renderCallback;this.scene=null;this.camera=null;this.clear=true;this.clearDepth=false;this.needsSwap=false}render(renderer,writeBuffer,readBuffer,delta,maskActive){var oldAutoClear=renderer.autoClear;renderer.autoClear=false;this.renderCallback(renderer,this.scene,this.camera,this.renderToScreen?null:readBuffer,this.clear);renderer.autoClear=oldAutoClear}}THREE.CustomRenderPass=CustomRenderPass})();(function(){class MaskPass extends THREE.Pass{constructor(scene,camera){super();this.scene=scene;this.camera=camera;this.clear=true;this.needsSwap=false;this.inverse=false}render(renderer,writeBuffer,readBuffer){const context=renderer.getContext();const state=renderer.state;state.buffers.color.setMask(false);state.buffers.depth.setMask(false);state.buffers.color.setLocked(true);state.buffers.depth.setLocked(true);let writeValue,clearValue;if(this.inverse){writeValue=0;clearValue=1}else{writeValue=1;clearValue=0}state.buffers.stencil.setTest(true);state.buffers.stencil.setOp(context.REPLACE,context.REPLACE,context.REPLACE);state.buffers.stencil.setFunc(context.ALWAYS,writeValue,4294967295);state.buffers.stencil.setClear(clearValue);state.buffers.stencil.setLocked(true);renderer.setRenderTarget(readBuffer);if(this.clear)renderer.clear();renderer.render(this.scene,this.camera);renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear();renderer.render(this.scene,this.camera);state.buffers.color.setLocked(false);state.buffers.depth.setLocked(false);state.buffers.stencil.setLocked(false);state.buffers.stencil.setFunc(context.EQUAL,1,4294967295);state.buffers.stencil.setOp(context.KEEP,context.KEEP,context.KEEP);state.buffers.stencil.setLocked(true)}}class ClearMaskPass extends THREE.Pass{constructor(){super();this.needsSwap=false}render(renderer){renderer.state.buffers.stencil.setLocked(false);renderer.state.buffers.stencil.setTest(false)}}THREE.ClearMaskPass=ClearMaskPass;THREE.MaskPass=MaskPass})();(function(){var vertexShader=["varying vec2 vUv;","void main() {"," gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );"," vUv = uv;","}"].join("\n");var fragmentShader=["varying vec2 vUv;","uniform sampler2D tDepth;","uniform sampler2D tColor;","uniform mat4 inverseProjectionMatrix;","uniform float near;","uniform float far;","uniform float depthLimit;","uniform mat4 clipToWorldMatrix;","uniform mat4 previousWorldToClipMatrix;","uniform vec3 cameraMove; ","uniform float velocityFactor;","uniform float delta;","void main() {"," float zOverW = texture2D(tDepth, vUv).x;"," vec4 clipPosition = vec4(vUv.x * 2. - 1., vUv.y * 2. - 1., zOverW * 2. - 1., 1.);"," vec4 cameraSpacePosition = inverseProjectionMatrix * clipPosition;"," cameraSpacePosition /= cameraSpacePosition.w;"," float depth = -(cameraSpacePosition.z - near) / (far - near);"," if (depth > depthLimit)"," {"," gl_FragColor = texture2D(tColor, vUv);"," return;"," }"," vec4 worldPosition = clipToWorldMatrix * clipPosition;"," worldPosition /= worldPosition.w;"," vec4 previousClipPosition = worldPosition;"," previousClipPosition.xyz -= cameraMove * ("," 1. - smoothstep(.3, 1., clamp(length(clipPosition.xy), 0., 1.))"," );"," previousClipPosition = previousWorldToClipMatrix * previousClipPosition;"," previousClipPosition /= previousClipPosition.w;"," vec2 velocity = velocityFactor * (clipPosition - previousClipPosition).xy / delta * 16.67;"," vec4 finalColor = vec4(0.);"," vec2 offset = vec2(0.);"," float weight = 0.;"," for(int i = 0; i < SAMPLE_COUNT; i++) {"," offset = velocity * (float(i) / (float(SAMPLE_COUNT) - 1.) - .5);"," vec4 c = texture2D(tColor, vUv + offset);"," finalColor += c;"," }"," finalColor /= float(SAMPLE_COUNT);"," gl_FragColor = vec4(finalColor.rgb, 1.);","}"].join("\n");var uniforms={"tDepth":{type:"t",value:null},"tColor":{type:"t",value:null},"velocityFactor":{type:"f",value:1},"delta":{type:"f",value:16.67},"inverseProjectionMatrix":{type:"m4",value:new THREE.Matrix4},"clipToWorldMatrix":{type:"m4",value:new THREE.Matrix4},"previousWorldToClipMatrix":{type:"m4",value:new THREE.Matrix4},"cameraMove":{type:"v3",value:new THREE.Vector3},"near":{type:"f",value:1},"far":{type:"f",value:1000},"depthLimit":{type:"f",value:0.99}};class MotionBlurPass extends THREE.Pass{constructor(sampleCount){super();this._sampleCount=sampleCount;this.uniforms=THREE.UniformsUtils.clone(uniforms);this.material=new THREE.ShaderMaterial({defines:{},uniforms:this.uniforms,vertexShader:vertexShader,fragmentShader:"#define SAMPLE_COUNT "+sampleCount+"\n"+fragmentShader});this.fsQuad=new THREE.FullScreenQuad(this.material)}getSampleCount(){return this._sampleCount}render(renderer,writeBuffer,readBuffer,deltaTime,maskActive){this.uniforms["tColor"].value=readBuffer.texture;this.uniforms["tDepth"].value=readBuffer.depthTexture;this.fsQuad.material=this.material;if(this.renderToScreen){renderer.setRenderTarget(null);this.fsQuad.render(renderer)}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear(renderer.autoClearColor,renderer.autoClearDepth,renderer.autoClearStencil);this.fsQuad.render(renderer)}}dispose(){this.fsQuad.dispose();this.material.dispose()}};THREE.MotionBlurPass=MotionBlurPass})();(function(){class RenderPass extends THREE.Pass{constructor(scene,camera,overrideMaterial,clearColor,clearAlpha){super();this.scene=scene;this.camera=camera;this.overrideMaterial=overrideMaterial;this.clearColor=clearColor;this.clearAlpha=clearAlpha!==undefined?clearAlpha:0;this.clear=true;this.clearDepth=false;this.needsSwap=false;this._oldClearColor=new THREE.Color}render(renderer,writeBuffer,readBuffer){const oldAutoClear=renderer.autoClear;renderer.autoClear=false;let oldClearAlpha,oldOverrideMaterial;if(this.overrideMaterial!==undefined){oldOverrideMaterial=this.scene.overrideMaterial;this.scene.overrideMaterial=this.overrideMaterial}if(this.clearColor){renderer.getClearColor(this._oldClearColor);oldClearAlpha=renderer.getClearAlpha();renderer.setClearColor(this.clearColor,this.clearAlpha)}if(this.clearDepth){renderer.clearDepth()}renderer.setRenderTarget(this.renderToScreen?null:readBuffer);if(this.clear)renderer.clear(renderer.autoClearColor,renderer.autoClearDepth,renderer.autoClearStencil);renderer.render(this.scene,this.camera);if(this.clearColor){renderer.setClearColor(this._oldClearColor,oldClearAlpha)}if(this.overrideMaterial!==undefined){this.scene.overrideMaterial=oldOverrideMaterial}renderer.autoClear=oldAutoClear}}THREE.RenderPass=RenderPass})();(function(){class SAOPass extends THREE.Pass{constructor(scene,camera,useDepthTexture=false,useNormals=false,resolution=new THREE.Vector2(256,256)){super();this.scene=scene;this.camera=camera;this.clear=true;this.needsSwap=false;this.supportsDepthTextureExtension=useDepthTexture;this.supportsNormalTexture=useNormals;this.originalClearColor=new THREE.Color;this._oldClearColor=new THREE.Color;this.oldClearAlpha=1;this.params={output:0,saoBias:0.5,saoIntensity:0.18,saoScale:1,saoKernelRadius:100,saoMinResolution:0,saoBlur:true,saoBlurRadius:8,saoBlurStdDev:4,saoBlurDepthCutoff:0.01};this.resolution=new THREE.Vector2(resolution.x,resolution.y);this.saoRenderTarget=new THREE.WebGLRenderTarget(this.resolution.x,this.resolution.y);this.blurIntermediateRenderTarget=this.saoRenderTarget.clone();this.beautyRenderTarget=this.saoRenderTarget.clone();this.normalRenderTarget=new THREE.WebGLRenderTarget(this.resolution.x,this.resolution.y,{minFilter:THREE.NearestFilter,magFilter:THREE.NearestFilter});this.depthRenderTarget=this.normalRenderTarget.clone();let depthTexture;if(this.supportsDepthTextureExtension){depthTexture=new THREE.DepthTexture;depthTexture.type=THREE.UnsignedShortType;this.beautyRenderTarget.depthTexture=depthTexture;this.beautyRenderTarget.depthBuffer=true}this.depthMaterial=new THREE.MeshDepthMaterial;this.depthMaterial.depthPacking=THREE.RGBADepthPacking;this.depthMaterial.blending=THREE.NoBlending;this.normalMaterial=new THREE.MeshNormalMaterial;this.normalMaterial.blending=THREE.NoBlending;if(THREE.SAOShader===undefined){console.error("THREE.SAOPass relies on THREE.SAOShader")}this.saoMaterial=new THREE.ShaderMaterial({defines:Object.assign({},THREE.SAOShader.defines),fragmentShader:THREE.SAOShader.fragmentShader,vertexShader:THREE.SAOShader.vertexShader,uniforms:THREE.UniformsUtils.clone(THREE.SAOShader.uniforms)});this.saoMaterial.extensions.derivatives=true;this.saoMaterial.defines["DEPTH_PACKING"]=this.supportsDepthTextureExtension?0:1;this.saoMaterial.defines["NORMAL_TEXTURE"]=this.supportsNormalTexture?1:0;this.saoMaterial.defines["PERSPECTIVE_CAMERA"]=this.camera.isPerspectiveCamera?1:0;this.saoMaterial.uniforms["tDepth"].value=this.supportsDepthTextureExtension?depthTexture:this.depthRenderTarget.texture;this.saoMaterial.uniforms["tNormal"].value=this.normalRenderTarget.texture;this.saoMaterial.uniforms["size"].value.set(this.resolution.x,this.resolution.y);this.saoMaterial.uniforms["cameraInverseProjectionMatrix"].value.copy(this.camera.projectionMatrixInverse);this.saoMaterial.uniforms["cameraProjectionMatrix"].value=this.camera.projectionMatrix;this.saoMaterial.blending=THREE.NoBlending;if(THREE.DepthLimitedBlurShader===undefined){console.error("THREE.SAOPass relies on THREE.DepthLimitedBlurShader")}this.vBlurMaterial=new THREE.ShaderMaterial({uniforms:THREE.UniformsUtils.clone(THREE.DepthLimitedBlurShader.uniforms),defines:Object.assign({},THREE.DepthLimitedBlurShader.defines),vertexShader:THREE.DepthLimitedBlurShader.vertexShader,fragmentShader:THREE.DepthLimitedBlurShader.fragmentShader});this.vBlurMaterial.defines["DEPTH_PACKING"]=this.supportsDepthTextureExtension?0:1;this.vBlurMaterial.defines["PERSPECTIVE_CAMERA"]=this.camera.isPerspectiveCamera?1:0;this.vBlurMaterial.uniforms["tDiffuse"].value=this.saoRenderTarget.texture;this.vBlurMaterial.uniforms["tDepth"].value=this.supportsDepthTextureExtension?depthTexture:this.depthRenderTarget.texture;this.vBlurMaterial.uniforms["size"].value.set(this.resolution.x,this.resolution.y);this.vBlurMaterial.blending=THREE.NoBlending;this.hBlurMaterial=new THREE.ShaderMaterial({uniforms:THREE.UniformsUtils.clone(THREE.DepthLimitedBlurShader.uniforms),defines:Object.assign({},THREE.DepthLimitedBlurShader.defines),vertexShader:THREE.DepthLimitedBlurShader.vertexShader,fragmentShader:THREE.DepthLimitedBlurShader.fragmentShader});this.hBlurMaterial.defines["DEPTH_PACKING"]=this.supportsDepthTextureExtension?0:1;this.hBlurMaterial.defines["PERSPECTIVE_CAMERA"]=this.camera.isPerspectiveCamera?1:0;this.hBlurMaterial.uniforms["tDiffuse"].value=this.blurIntermediateRenderTarget.texture;this.hBlurMaterial.uniforms["tDepth"].value=this.supportsDepthTextureExtension?depthTexture:this.depthRenderTarget.texture;this.hBlurMaterial.uniforms["size"].value.set(this.resolution.x,this.resolution.y);this.hBlurMaterial.blending=THREE.NoBlending;if(THREE.CopyShader===undefined){console.error("THREE.SAOPass relies on THREE.CopyShader")}this.materialCopy=new THREE.ShaderMaterial({uniforms:THREE.UniformsUtils.clone(THREE.CopyShader.uniforms),vertexShader:THREE.CopyShader.vertexShader,fragmentShader:THREE.CopyShader.fragmentShader,blending:THREE.NoBlending});this.materialCopy.transparent=true;this.materialCopy.depthTest=false;this.materialCopy.depthWrite=false;this.materialCopy.blending=THREE.CustomBlending;this.materialCopy.blendSrc=THREE.DstColorFactor;this.materialCopy.blendDst=THREE.ZeroFactor;this.materialCopy.blendEquation=THREE.AddEquation;this.materialCopy.blendSrcAlpha=THREE.DstAlphaFactor;this.materialCopy.blendDstAlpha=THREE.ZeroFactor;this.materialCopy.blendEquationAlpha=THREE.AddEquation;if(THREE.UnpackDepthRGBAShader===undefined){console.error("THREE.SAOPass relies on THREE.UnpackDepthRGBAShader")}this.depthCopy=new THREE.ShaderMaterial({uniforms:THREE.UniformsUtils.clone(THREE.UnpackDepthRGBAShader.uniforms),vertexShader:THREE.UnpackDepthRGBAShader.vertexShader,fragmentShader:THREE.UnpackDepthRGBAShader.fragmentShader,blending:THREE.NoBlending});this.fsQuad=new THREE.FullScreenQuad(null)}render(renderer,writeBuffer,readBuffer){if(this.renderToScreen){this.materialCopy.blending=THREE.NoBlending;this.materialCopy.uniforms["tDiffuse"].value=readBuffer.texture;this.materialCopy.needsUpdate=true;this.renderPass(renderer,this.materialCopy,null)}if(this.params.output===1){return}renderer.getClearColor(this._oldClearColor);this.oldClearAlpha=renderer.getClearAlpha();const oldAutoClear=renderer.autoClear;renderer.autoClear=false;renderer.setRenderTarget(this.depthRenderTarget);renderer.clear();this.saoMaterial.uniforms["bias"].value=this.params.saoBias;this.saoMaterial.uniforms["intensity"].value=this.params.saoIntensity;this.saoMaterial.uniforms["scale"].value=this.params.saoScale;this.saoMaterial.uniforms["kernelRadius"].value=this.params.saoKernelRadius;this.saoMaterial.uniforms["minResolution"].value=this.params.saoMinResolution;this.saoMaterial.uniforms["cameraNear"].value=this.camera.near;this.saoMaterial.uniforms["cameraFar"].value=this.camera.far;const depthCutoff=this.params.saoBlurDepthCutoff*(this.camera.far-this.camera.near);this.vBlurMaterial.uniforms["depthCutoff"].value=depthCutoff;this.hBlurMaterial.uniforms["depthCutoff"].value=depthCutoff;this.vBlurMaterial.uniforms["cameraNear"].value=this.camera.near;this.vBlurMaterial.uniforms["cameraFar"].value=this.camera.far;this.hBlurMaterial.uniforms["cameraNear"].value=this.camera.near;this.hBlurMaterial.uniforms["cameraFar"].value=this.camera.far;this.params.saoBlurRadius=Math.floor(this.params.saoBlurRadius);if(this.prevStdDev!==this.params.saoBlurStdDev||this.prevNumSamples!==this.params.saoBlurRadius){THREE.BlurShaderUtils.configure(this.vBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new THREE.Vector2(0,1));THREE.BlurShaderUtils.configure(this.hBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new THREE.Vector2(1,0));this.prevStdDev=this.params.saoBlurStdDev;this.prevNumSamples=this.params.saoBlurRadius}renderer.setClearColor(0);renderer.setRenderTarget(this.beautyRenderTarget);renderer.clear();renderer.render(this.scene,this.camera);if(!this.supportsDepthTextureExtension){this.renderOverride(renderer,this.depthMaterial,this.depthRenderTarget,0,1)}if(this.supportsNormalTexture){this.renderOverride(renderer,this.normalMaterial,this.normalRenderTarget,7829503,1)}this.renderPass(renderer,this.saoMaterial,this.saoRenderTarget,16777215,1);if(this.params.saoBlur){this.renderPass(renderer,this.vBlurMaterial,this.blurIntermediateRenderTarget,16777215,1);this.renderPass(renderer,this.hBlurMaterial,this.saoRenderTarget,16777215,1)}let outputMaterial=this.materialCopy;if(this.params.output===3){if(this.supportsDepthTextureExtension){this.materialCopy.uniforms["tDiffuse"].value=this.beautyRenderTarget.depthTexture;this.materialCopy.needsUpdate=true}else{this.depthCopy.uniforms["tDiffuse"].value=this.depthRenderTarget.texture;this.depthCopy.needsUpdate=true;outputMaterial=this.depthCopy}}else if(this.params.output===4){this.materialCopy.uniforms["tDiffuse"].value=this.normalRenderTarget.texture;this.materialCopy.needsUpdate=true}else{this.materialCopy.uniforms["tDiffuse"].value=this.saoRenderTarget.texture;this.materialCopy.needsUpdate=true}if(this.params.output===0){outputMaterial.blending=THREE.CustomBlending}else{outputMaterial.blending=THREE.NoBlending}this.renderPass(renderer,outputMaterial,this.renderToScreen?null:readBuffer);renderer.setClearColor(this._oldClearColor,this.oldClearAlpha);renderer.autoClear=oldAutoClear}renderPass(renderer,passMaterial,renderTarget,clearColor,clearAlpha){renderer.getClearColor(this.originalClearColor);const originalClearAlpha=renderer.getClearAlpha();const originalAutoClear=renderer.autoClear;renderer.setRenderTarget(renderTarget);renderer.autoClear=false;if(clearColor!==undefined&&clearColor!==null){renderer.setClearColor(clearColor);renderer.setClearAlpha(clearAlpha||0);renderer.clear()}this.fsQuad.material=passMaterial;this.fsQuad.render(renderer);renderer.autoClear=originalAutoClear;renderer.setClearColor(this.originalClearColor);renderer.setClearAlpha(originalClearAlpha)}renderOverride(renderer,overrideMaterial,renderTarget,clearColor,clearAlpha){renderer.getClearColor(this.originalClearColor);const originalClearAlpha=renderer.getClearAlpha();const originalAutoClear=renderer.autoClear;renderer.setRenderTarget(renderTarget);renderer.autoClear=false;clearColor=overrideMaterial.clearColor||clearColor;clearAlpha=overrideMaterial.clearAlpha||clearAlpha;if(clearColor!==undefined&&clearColor!==null){renderer.setClearColor(clearColor);renderer.setClearAlpha(clearAlpha||0);renderer.clear()}this.scene.overrideMaterial=overrideMaterial;renderer.render(this.scene,this.camera);this.scene.overrideMaterial=null;renderer.autoClear=originalAutoClear;renderer.setClearColor(this.originalClearColor);renderer.setClearAlpha(originalClearAlpha)}setSize(width,height){this.beautyRenderTarget.setSize(width,height);this.saoRenderTarget.setSize(width,height);this.blurIntermediateRenderTarget.setSize(width,height);this.normalRenderTarget.setSize(width,height);this.depthRenderTarget.setSize(width,height);this.saoMaterial.uniforms["size"].value.set(width,height);this.saoMaterial.uniforms["cameraInverseProjectionMatrix"].value.copy(this.camera.projectionMatrixInverse);this.saoMaterial.uniforms["cameraProjectionMatrix"].value=this.camera.projectionMatrix;this.saoMaterial.needsUpdate=true;this.vBlurMaterial.uniforms["size"].value.set(width,height);this.vBlurMaterial.needsUpdate=true;this.hBlurMaterial.uniforms["size"].value.set(width,height);this.hBlurMaterial.needsUpdate=true}}SAOPass.OUTPUT={"Beauty":1,"Default":0,"SAO":2,"Depth":3,"Normal":4};THREE.SAOPass=SAOPass})();(function(){const SAOShader={defines:{"NUM_SAMPLES":7,"NUM_RINGS":4,"NORMAL_TEXTURE":0,"DIFFUSE_TEXTURE":0,"DEPTH_PACKING":1,"PERSPECTIVE_CAMERA":1},uniforms:{"tDepth":{value:null},"tDiffuse":{value:null},"tNormal":{value:null},"size":{value:new THREE.Vector2(512,512)},"cameraNear":{value:1},"cameraFar":{value:100},"cameraProjectionMatrix":{value:new THREE.Matrix4},"cameraInverseProjectionMatrix":{value:new THREE.Matrix4},"scale":{value:1},"intensity":{value:0.1},"bias":{value:0.5},"minResolution":{value:0},"kernelRadius":{value:100},"randomSeed":{value:0}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` #include varying vec2 vUv; #if DIFFUSE_TEXTURE == 1 uniform sampler2D tDiffuse; #endif uniform sampler2D tDepth; #if NORMAL_TEXTURE == 1 uniform sampler2D tNormal; #endif uniform float cameraNear; uniform float cameraFar; uniform mat4 cameraProjectionMatrix; uniform mat4 cameraInverseProjectionMatrix; uniform float scale; uniform float intensity; uniform float bias; uniform float kernelRadius; uniform float minResolution; uniform vec2 size; uniform float randomSeed; // RGBA depth #include vec4 getDefaultColor( const in vec2 screenPosition ) { #if DIFFUSE_TEXTURE == 1 return texture2D( tDiffuse, vUv ); #else return vec4( 1.0 ); #endif } float getDepth( const in vec2 screenPosition ) { #if DEPTH_PACKING == 1 return unpackRGBAToDepth( texture2D( tDepth, screenPosition ) ); #else return texture2D( tDepth, screenPosition ).x; #endif } float getViewZ( const in float depth ) { #if PERSPECTIVE_CAMERA == 1 return perspectiveDepthToViewZ( depth, cameraNear, cameraFar ); #else return orthographicDepthToViewZ( depth, cameraNear, cameraFar ); #endif } vec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) { float clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3]; vec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 ); clipPosition *= clipW; // unprojection. return ( cameraInverseProjectionMatrix * clipPosition ).xyz; } vec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPosition ) { #if NORMAL_TEXTURE == 1 return unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz ); #else return normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) ); #endif } float scaleDividedByCameraFar; float minResolutionMultipliedByCameraFar; float getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) { vec3 viewDelta = sampleViewPosition - centerViewPosition; float viewDistance = length( viewDelta ); float scaledScreenDistance = scaleDividedByCameraFar * viewDistance; return max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - bias) / (1.0 + pow2( scaledScreenDistance ) ); } // moving costly divides into consts const float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES ); const float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES ); float getAmbientOcclusion( const in vec3 centerViewPosition ) { // precompute some variables require in getOcclusion. scaleDividedByCameraFar = scale / cameraFar; minResolutionMultipliedByCameraFar = minResolution * cameraFar; vec3 centerViewNormal = getViewNormal( centerViewPosition, vUv ); // jsfiddle that shows sample pattern: https://jsfiddle.net/a16ff1p7/ float angle = rand( vUv + randomSeed ) * PI2; vec2 radius = vec2( kernelRadius * INV_NUM_SAMPLES ) / size; vec2 radiusStep = radius; float occlusionSum = 0.0; float weightSum = 0.0; for( int i = 0; i < NUM_SAMPLES; i ++ ) { vec2 sampleUv = vUv + vec2( cos( angle ), sin( angle ) ) * radius; radius += radiusStep; angle += ANGLE_STEP; float sampleDepth = getDepth( sampleUv ); if( sampleDepth >= ( 1.0 - EPSILON ) ) { continue; } float sampleViewZ = getViewZ( sampleDepth ); vec3 sampleViewPosition = getViewPosition( sampleUv, sampleDepth, sampleViewZ ); occlusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition ); weightSum += 1.0; } if( weightSum == 0.0 ) discard; return occlusionSum * ( intensity / weightSum ); } void main() { float centerDepth = getDepth( vUv ); if( centerDepth >= ( 1.0 - EPSILON ) ) { discard; } float centerViewZ = getViewZ( centerDepth ); vec3 viewPosition = getViewPosition( vUv, centerDepth, centerViewZ ); float ambientOcclusion = getAmbientOcclusion( viewPosition ); gl_FragColor = getDefaultColor( vUv ); gl_FragColor.xyz *= 1.0 - ambientOcclusion; }`};THREE.SAOShader=SAOShader})();(function(){class SavePass extends THREE.Pass{constructor(renderTarget){super();if(THREE.CopyShader===undefined)console.error("THREE.SavePass relies on THREE.CopyShader");const shader=THREE.CopyShader;this.textureID="tDiffuse";this.uniforms=THREE.UniformsUtils.clone(shader.uniforms);this.material=new THREE.ShaderMaterial({uniforms:this.uniforms,vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader});this.renderTarget=renderTarget;if(this.renderTarget===undefined){this.renderTarget=new THREE.WebGLRenderTarget(window.innerWidth,window.innerHeight);this.renderTarget.texture.name="SavePass.rt"}this.needsSwap=false;this.fsQuad=new THREE.FullScreenQuad(this.material)}render(renderer,writeBuffer,readBuffer){if(this.uniforms[this.textureID]){this.uniforms[this.textureID].value=readBuffer.texture}renderer.setRenderTarget(this.renderTarget);if(this.clear)renderer.clear();this.fsQuad.render(renderer)}}THREE.SavePass=SavePass})();(function(){class ShaderPass extends THREE.Pass{constructor(shader,textureID){super();this.textureID=textureID!==undefined?textureID:"tDiffuse";if(shader instanceof THREE.ShaderMaterial){this.uniforms=shader.uniforms;this.material=shader}else if(shader){this.uniforms=THREE.UniformsUtils.clone(shader.uniforms);this.material=new THREE.ShaderMaterial({defines:Object.assign({},shader.defines),uniforms:this.uniforms,vertexShader:shader.vertexShader,fragmentShader:shader.fragmentShader})}this.fsQuad=new THREE.FullScreenQuad(this.material)}render(renderer,writeBuffer,readBuffer){if(this.uniforms[this.textureID]){this.uniforms[this.textureID].value=readBuffer.texture}this.fsQuad.material=this.material;if(this.renderToScreen){renderer.setRenderTarget(null);this.fsQuad.render(renderer)}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear(renderer.autoClearColor,renderer.autoClearDepth,renderer.autoClearStencil);this.fsQuad.render(renderer)}}}THREE.ShaderPass=ShaderPass})();(function(){class SMAAPass extends THREE.Pass{constructor(width,height){super();this.edgesRT=new THREE.WebGLRenderTarget(width,height,{depthBuffer:false});this.edgesRT.texture.name="SMAAPass.edges";this.weightsRT=new THREE.WebGLRenderTarget(width,height,{depthBuffer:false});this.weightsRT.texture.name="SMAAPass.weights";const scope=this;const areaTextureImage=new Image;areaTextureImage.src=this.getAreaTexture();areaTextureImage.onload=function(){scope.areaTexture.needsUpdate=true};this.areaTexture=new THREE.Texture;this.areaTexture.name="SMAAPass.area";this.areaTexture.image=areaTextureImage;this.areaTexture.minFilter=THREE.LinearFilter;this.areaTexture.generateMipmaps=false;this.areaTexture.flipY=false;const searchTextureImage=new Image;searchTextureImage.src=this.getSearchTexture();searchTextureImage.onload=function(){scope.searchTexture.needsUpdate=true};this.searchTexture=new THREE.Texture;this.searchTexture.name="SMAAPass.search";this.searchTexture.image=searchTextureImage;this.searchTexture.magFilter=THREE.NearestFilter;this.searchTexture.minFilter=THREE.NearestFilter;this.searchTexture.generateMipmaps=false;this.searchTexture.flipY=false;if(THREE.SMAAEdgesShader===undefined){console.error("THREE.SMAAPass relies on SMAAShader")}this.uniformsEdges=THREE.UniformsUtils.clone(THREE.SMAAEdgesShader.uniforms);this.uniformsEdges["resolution"].value.set(1/width,1/height);this.materialEdges=new THREE.ShaderMaterial({defines:Object.assign({},THREE.SMAAEdgesShader.defines),uniforms:this.uniformsEdges,vertexShader:THREE.SMAAEdgesShader.vertexShader,fragmentShader:THREE.SMAAEdgesShader.fragmentShader});this.uniformsWeights=THREE.UniformsUtils.clone(THREE.SMAAWeightsShader.uniforms);this.uniformsWeights["resolution"].value.set(1/width,1/height);this.uniformsWeights["tDiffuse"].value=this.edgesRT.texture;this.uniformsWeights["tArea"].value=this.areaTexture;this.uniformsWeights["tSearch"].value=this.searchTexture;this.materialWeights=new THREE.ShaderMaterial({defines:Object.assign({},THREE.SMAAWeightsShader.defines),uniforms:this.uniformsWeights,vertexShader:THREE.SMAAWeightsShader.vertexShader,fragmentShader:THREE.SMAAWeightsShader.fragmentShader});this.uniformsBlend=THREE.UniformsUtils.clone(THREE.SMAABlendShader.uniforms);this.uniformsBlend["resolution"].value.set(1/width,1/height);this.uniformsBlend["tDiffuse"].value=this.weightsRT.texture;this.materialBlend=new THREE.ShaderMaterial({uniforms:this.uniformsBlend,vertexShader:THREE.SMAABlendShader.vertexShader,fragmentShader:THREE.SMAABlendShader.fragmentShader});this.needsSwap=false;this.fsQuad=new THREE.FullScreenQuad(null)}render(renderer,writeBuffer,readBuffer){this.uniformsEdges["tDiffuse"].value=readBuffer.texture;this.fsQuad.material=this.materialEdges;renderer.setRenderTarget(this.edgesRT);if(this.clear)renderer.clear();this.fsQuad.render(renderer);this.fsQuad.material=this.materialWeights;renderer.setRenderTarget(this.weightsRT);if(this.clear)renderer.clear();this.fsQuad.render(renderer);this.uniformsBlend["tColor"].value=readBuffer.texture;this.fsQuad.material=this.materialBlend;if(this.renderToScreen){renderer.setRenderTarget(null);this.fsQuad.render(renderer)}else{renderer.setRenderTarget(writeBuffer);if(this.clear)renderer.clear();this.fsQuad.render(renderer)}}setSize(width,height){this.edgesRT.setSize(width,height);this.weightsRT.setSize(width,height);this.materialEdges.uniforms["resolution"].value.set(1/width,1/height);this.materialWeights.uniforms["resolution"].value.set(1/width,1/height);this.materialBlend.uniforms["resolution"].value.set(1/width,1/height)}getAreaTexture(){return"data:image/png;base64,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"}getSearchTexture(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII="}}THREE.SMAAPass=SMAAPass})();(function(){const SMAAEdgesShader={defines:{"SMAA_THRESHOLD":"0.1"},uniforms:{"tDiffuse":{value:null},"resolution":{value:new THREE.Vector2(1/1024,1/512)}},vertexShader:` uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[ 3 ]; void SMAAEdgeDetectionVS( vec2 texcoord ) { vOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 ); // WebGL port note: Changed sign in W component vOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 ); // WebGL port note: Changed sign in W component vOffset[ 2 ] = texcoord.xyxy + resolution.xyxy * vec4( -2.0, 0.0, 0.0, 2.0 ); // WebGL port note: Changed sign in W component } void main() { vUv = uv; SMAAEdgeDetectionVS( vUv ); gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` uniform sampler2D tDiffuse; varying vec2 vUv; varying vec4 vOffset[ 3 ]; vec4 SMAAColorEdgeDetectionPS( vec2 texcoord, vec4 offset[3], sampler2D colorTex ) { vec2 threshold = vec2( SMAA_THRESHOLD, SMAA_THRESHOLD ); // Calculate color deltas: vec4 delta; vec3 C = texture2D( colorTex, texcoord ).rgb; vec3 Cleft = texture2D( colorTex, offset[0].xy ).rgb; vec3 t = abs( C - Cleft ); delta.x = max( max( t.r, t.g ), t.b ); vec3 Ctop = texture2D( colorTex, offset[0].zw ).rgb; t = abs( C - Ctop ); delta.y = max( max( t.r, t.g ), t.b ); // We do the usual threshold: vec2 edges = step( threshold, delta.xy ); // Then discard if there is no edge: if ( dot( edges, vec2( 1.0, 1.0 ) ) == 0.0 ) discard; // Calculate right and bottom deltas: vec3 Cright = texture2D( colorTex, offset[1].xy ).rgb; t = abs( C - Cright ); delta.z = max( max( t.r, t.g ), t.b ); vec3 Cbottom = texture2D( colorTex, offset[1].zw ).rgb; t = abs( C - Cbottom ); delta.w = max( max( t.r, t.g ), t.b ); // Calculate the maximum delta in the direct neighborhood: float maxDelta = max( max( max( delta.x, delta.y ), delta.z ), delta.w ); // Calculate left-left and top-top deltas: vec3 Cleftleft = texture2D( colorTex, offset[2].xy ).rgb; t = abs( C - Cleftleft ); delta.z = max( max( t.r, t.g ), t.b ); vec3 Ctoptop = texture2D( colorTex, offset[2].zw ).rgb; t = abs( C - Ctoptop ); delta.w = max( max( t.r, t.g ), t.b ); // Calculate the final maximum delta: maxDelta = max( max( maxDelta, delta.z ), delta.w ); // Local contrast adaptation in action: edges.xy *= step( 0.5 * maxDelta, delta.xy ); return vec4( edges, 0.0, 0.0 ); } void main() { gl_FragColor = SMAAColorEdgeDetectionPS( vUv, vOffset, tDiffuse ); }`};const SMAAWeightsShader={defines:{"SMAA_MAX_SEARCH_STEPS":"8","SMAA_AREATEX_MAX_DISTANCE":"16","SMAA_AREATEX_PIXEL_SIZE":"( 1.0 / vec2( 160.0, 560.0 ) )","SMAA_AREATEX_SUBTEX_SIZE":"( 1.0 / 7.0 )"},uniforms:{"tDiffuse":{value:null},"tArea":{value:null},"tSearch":{value:null},"resolution":{value:new THREE.Vector2(1/1024,1/512)}},vertexShader:` uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[ 3 ]; varying vec2 vPixcoord; void SMAABlendingWeightCalculationVS( vec2 texcoord ) { vPixcoord = texcoord / resolution; // We will use these offsets for the searches later on (see @PSEUDO_GATHER4): vOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.25, 0.125, 1.25, 0.125 ); // WebGL port note: Changed sign in Y and W components vOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.125, 0.25, -0.125, -1.25 ); // WebGL port note: Changed sign in Y and W components // And these for the searches, they indicate the ends of the loops: vOffset[ 2 ] = vec4( vOffset[ 0 ].xz, vOffset[ 1 ].yw ) + vec4( -2.0, 2.0, -2.0, 2.0 ) * resolution.xxyy * float( SMAA_MAX_SEARCH_STEPS ); } void main() { vUv = uv; SMAABlendingWeightCalculationVS( vUv ); gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` #define SMAASampleLevelZeroOffset( tex, coord, offset ) texture2D( tex, coord + float( offset ) * resolution, 0.0 ) uniform sampler2D tDiffuse; uniform sampler2D tArea; uniform sampler2D tSearch; uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[3]; varying vec2 vPixcoord; #if __VERSION__ == 100 vec2 round( vec2 x ) { return sign( x ) * floor( abs( x ) + 0.5 ); } #endif float SMAASearchLength( sampler2D searchTex, vec2 e, float bias, float scale ) { // Not required if searchTex accesses are set to point: // float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0); // e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE + // e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE; e.r = bias + e.r * scale; return 255.0 * texture2D( searchTex, e, 0.0 ).r; } float SMAASearchXLeft( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) { /** * @PSEUDO_GATHER4 * This texcoord has been offset by (-0.25, -0.125) in the vertex shader to * sample between edge, thus fetching four edges in a row. * Sampling with different offsets in each direction allows to disambiguate * which edges are active from the four fetched ones. */ vec2 e = vec2( 0.0, 1.0 ); for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for e = texture2D( edgesTex, texcoord, 0.0 ).rg; texcoord -= vec2( 2.0, 0.0 ) * resolution; if ( ! ( texcoord.x > end && e.g > 0.8281 && e.r == 0.0 ) ) break; } // We correct the previous (-0.25, -0.125) offset we applied: texcoord.x += 0.25 * resolution.x; // The searches are bias by 1, so adjust the coords accordingly: texcoord.x += resolution.x; // Disambiguate the length added by the last step: texcoord.x += 2.0 * resolution.x; // Undo last step texcoord.x -= resolution.x * SMAASearchLength(searchTex, e, 0.0, 0.5); return texcoord.x; } float SMAASearchXRight( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) { vec2 e = vec2( 0.0, 1.0 ); for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for e = texture2D( edgesTex, texcoord, 0.0 ).rg; texcoord += vec2( 2.0, 0.0 ) * resolution; if ( ! ( texcoord.x < end && e.g > 0.8281 && e.r == 0.0 ) ) break; } texcoord.x -= 0.25 * resolution.x; texcoord.x -= resolution.x; texcoord.x -= 2.0 * resolution.x; texcoord.x += resolution.x * SMAASearchLength( searchTex, e, 0.5, 0.5 ); return texcoord.x; } float SMAASearchYUp( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) { vec2 e = vec2( 1.0, 0.0 ); for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for e = texture2D( edgesTex, texcoord, 0.0 ).rg; texcoord += vec2( 0.0, 2.0 ) * resolution; // WebGL port note: Changed sign if ( ! ( texcoord.y > end && e.r > 0.8281 && e.g == 0.0 ) ) break; } texcoord.y -= 0.25 * resolution.y; // WebGL port note: Changed sign texcoord.y -= resolution.y; // WebGL port note: Changed sign texcoord.y -= 2.0 * resolution.y; // WebGL port note: Changed sign texcoord.y += resolution.y * SMAASearchLength( searchTex, e.gr, 0.0, 0.5 ); // WebGL port note: Changed sign return texcoord.y; } float SMAASearchYDown( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) { vec2 e = vec2( 1.0, 0.0 ); for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for e = texture2D( edgesTex, texcoord, 0.0 ).rg; texcoord -= vec2( 0.0, 2.0 ) * resolution; // WebGL port note: Changed sign if ( ! ( texcoord.y < end && e.r > 0.8281 && e.g == 0.0 ) ) break; } texcoord.y += 0.25 * resolution.y; // WebGL port note: Changed sign texcoord.y += resolution.y; // WebGL port note: Changed sign texcoord.y += 2.0 * resolution.y; // WebGL port note: Changed sign texcoord.y -= resolution.y * SMAASearchLength( searchTex, e.gr, 0.5, 0.5 ); // WebGL port note: Changed sign return texcoord.y; } vec2 SMAAArea( sampler2D areaTex, vec2 dist, float e1, float e2, float offset ) { // Rounding prevents precision errors of bilinear filtering: vec2 texcoord = float( SMAA_AREATEX_MAX_DISTANCE ) * round( 4.0 * vec2( e1, e2 ) ) + dist; // We do a scale and bias for mapping to texel space: texcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + ( 0.5 * SMAA_AREATEX_PIXEL_SIZE ); // Move to proper place, according to the subpixel offset: texcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset; return texture2D( areaTex, texcoord, 0.0 ).rg; } vec4 SMAABlendingWeightCalculationPS( vec2 texcoord, vec2 pixcoord, vec4 offset[ 3 ], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices ) { vec4 weights = vec4( 0.0, 0.0, 0.0, 0.0 ); vec2 e = texture2D( edgesTex, texcoord ).rg; if ( e.g > 0.0 ) { // Edge at north vec2 d; // Find the distance to the left: vec2 coords; coords.x = SMAASearchXLeft( edgesTex, searchTex, offset[ 0 ].xy, offset[ 2 ].x ); coords.y = offset[ 1 ].y; // offset[1].y = texcoord.y - 0.25 * resolution.y (@CROSSING_OFFSET) d.x = coords.x; // Now fetch the left crossing edges, two at a time using bilinear // filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to // discern what value each edge has: float e1 = texture2D( edgesTex, coords, 0.0 ).r; // Find the distance to the right: coords.x = SMAASearchXRight( edgesTex, searchTex, offset[ 0 ].zw, offset[ 2 ].y ); d.y = coords.x; // We want the distances to be in pixel units (doing this here allow to // better interleave arithmetic and memory accesses): d = d / resolution.x - pixcoord.x; // SMAAArea below needs a sqrt, as the areas texture is compressed // quadratically: vec2 sqrt_d = sqrt( abs( d ) ); // Fetch the right crossing edges: coords.y -= 1.0 * resolution.y; // WebGL port note: Added float e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 1, 0 ) ).r; // Ok, we know how this pattern looks like, now it is time for getting // the actual area: weights.rg = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.y ) ); } if ( e.r > 0.0 ) { // Edge at west vec2 d; // Find the distance to the top: vec2 coords; coords.y = SMAASearchYUp( edgesTex, searchTex, offset[ 1 ].xy, offset[ 2 ].z ); coords.x = offset[ 0 ].x; // offset[1].x = texcoord.x - 0.25 * resolution.x; d.x = coords.y; // Fetch the top crossing edges: float e1 = texture2D( edgesTex, coords, 0.0 ).g; // Find the distance to the bottom: coords.y = SMAASearchYDown( edgesTex, searchTex, offset[ 1 ].zw, offset[ 2 ].w ); d.y = coords.y; // We want the distances to be in pixel units: d = d / resolution.y - pixcoord.y; // SMAAArea below needs a sqrt, as the areas texture is compressed // quadratically: vec2 sqrt_d = sqrt( abs( d ) ); // Fetch the bottom crossing edges: coords.y -= 1.0 * resolution.y; // WebGL port note: Added float e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 0, 1 ) ).g; // Get the area for this direction: weights.ba = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.x ) ); } return weights; } void main() { gl_FragColor = SMAABlendingWeightCalculationPS( vUv, vPixcoord, vOffset, tDiffuse, tArea, tSearch, ivec4( 0.0 ) ); }`};const SMAABlendShader={uniforms:{"tDiffuse":{value:null},"tColor":{value:null},"resolution":{value:new THREE.Vector2(1/1024,1/512)}},vertexShader:` uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[ 2 ]; void SMAANeighborhoodBlendingVS( vec2 texcoord ) { vOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 ); // WebGL port note: Changed sign in W component vOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 ); // WebGL port note: Changed sign in W component } void main() { vUv = uv; SMAANeighborhoodBlendingVS( vUv ); gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` uniform sampler2D tDiffuse; uniform sampler2D tColor; uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[ 2 ]; vec4 SMAANeighborhoodBlendingPS( vec2 texcoord, vec4 offset[ 2 ], sampler2D colorTex, sampler2D blendTex ) { // Fetch the blending weights for current pixel: vec4 a; a.xz = texture2D( blendTex, texcoord ).xz; a.y = texture2D( blendTex, offset[ 1 ].zw ).g; a.w = texture2D( blendTex, offset[ 1 ].xy ).a; // Is there any blending weight with a value greater than 0.0? if ( dot(a, vec4( 1.0, 1.0, 1.0, 1.0 )) < 1e-5 ) { return texture2D( colorTex, texcoord, 0.0 ); } else { // Up to 4 lines can be crossing a pixel (one through each edge). We // favor blending by choosing the line with the maximum weight for each // direction: vec2 offset; offset.x = a.a > a.b ? a.a : -a.b; // left vs. right offset.y = a.g > a.r ? -a.g : a.r; // top vs. bottom // WebGL port note: Changed signs // Then we go in the direction that has the maximum weight: if ( abs( offset.x ) > abs( offset.y )) { // horizontal vs. vertical offset.y = 0.0; } else { offset.x = 0.0; } // Fetch the opposite color and lerp by hand: vec4 C = texture2D( colorTex, texcoord, 0.0 ); texcoord += sign( offset ) * resolution; vec4 Cop = texture2D( colorTex, texcoord, 0.0 ); float s = abs( offset.x ) > abs( offset.y ) ? abs( offset.x ) : abs( offset.y ); // WebGL port note: Added gamma correction C.xyz = pow(C.xyz, vec3(2.2)); Cop.xyz = pow(Cop.xyz, vec3(2.2)); vec4 mixed = mix(C, Cop, s); mixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2)); return mixed; } } void main() { gl_FragColor = SMAANeighborhoodBlendingPS( vUv, vOffset, tColor, tDiffuse ); }`};THREE.SMAABlendShader=SMAABlendShader;THREE.SMAAEdgesShader=SMAAEdgesShader;THREE.SMAAWeightsShader=SMAAWeightsShader})();(function(){class SSAARenderPass extends THREE.Pass{constructor(scene,camera,clearColor,clearAlpha){super();this.scene=scene;this.camera=camera;this.sampleLevel=4;this.unbiased=true;this.clearColor=clearColor!==undefined?clearColor:0;this.clearAlpha=clearAlpha!==undefined?clearAlpha:0;this._oldClearColor=new THREE.Color;if(THREE.CopyShader===undefined)console.error("THREE.SSAARenderPass relies on THREE.CopyShader");const copyShader=THREE.CopyShader;this.copyUniforms=THREE.UniformsUtils.clone(copyShader.uniforms);this.copyMaterial=new THREE.ShaderMaterial({uniforms:this.copyUniforms,vertexShader:copyShader.vertexShader,fragmentShader:copyShader.fragmentShader,transparent:true,blending:THREE.AdditiveBlending,depthTest:false,depthWrite:false});this.fsQuad=new THREE.FullScreenQuad(this.copyMaterial)}dispose(){if(this.sampleRenderTarget){this.sampleRenderTarget.dispose();this.sampleRenderTarget=null}}setSize(width,height){if(this.sampleRenderTarget)this.sampleRenderTarget.setSize(width,height)}render(renderer,writeBuffer,readBuffer){if(!this.sampleRenderTarget){this.sampleRenderTarget=new THREE.WebGLRenderTarget(readBuffer.width,readBuffer.height);this.sampleRenderTarget.texture.name="SSAARenderPass.sample"}const jitterOffsets=_JitterVectors[Math.max(0,Math.min(this.sampleLevel,5))];const autoClear=renderer.autoClear;renderer.autoClear=false;renderer.getClearColor(this._oldClearColor);const oldClearAlpha=renderer.getClearAlpha();const baseSampleWeight=1/jitterOffsets.length;const roundingRange=1/32;this.copyUniforms["tDiffuse"].value=this.sampleRenderTarget.texture;const viewOffset={fullWidth:readBuffer.width,fullHeight:readBuffer.height,offsetX:0,offsetY:0,width:readBuffer.width,height:readBuffer.height};const originalViewOffset=Object.assign({},this.camera.view);if(originalViewOffset.enabled)Object.assign(viewOffset,originalViewOffset);for(let i=0;i void main() { float depth = 1.0 - unpackRGBAToDepth( texture2D( tDiffuse, vUv ) ); gl_FragColor = vec4( vec3( depth ), opacity ); }`};THREE.UnpackDepthRGBAShader=UnpackDepthRGBAShader})(); })(); } catch (e) { console.log(e.message, e.stack); throw e; };