1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[740],{5376:e=>{!function(){var t={675:function(e,t){"use strict";t.byteLength=function(e){var t=A(e),i=t[0],a=t[1];return(i+a)*3/4-a},t.toByteArray=function(e){var t,i,s=A(e),n=s[0],o=s[1],l=new r((n+o)*3/4-o),h=0,c=o>0?n-4:n;for(i=0;i<c;i+=4)t=a[e.charCodeAt(i)]<<18|a[e.charCodeAt(i+1)]<<12|a[e.charCodeAt(i+2)]<<6|a[e.charCodeAt(i+3)],l[h++]=t>>16&255,l[h++]=t>>8&255,l[h++]=255&t;return 2===o&&(t=a[e.charCodeAt(i)]<<2|a[e.charCodeAt(i+1)]>>4,l[h++]=255&t),1===o&&(t=a[e.charCodeAt(i)]<<10|a[e.charCodeAt(i+1)]<<4|a[e.charCodeAt(i+2)]>>2,l[h++]=t>>8&255,l[h++]=255&t),l},t.fromByteArray=function(e){for(var t,a=e.length,r=a%3,s=[],n=0,o=a-r;n<o;n+=16383)s.push(function(e,t,a){for(var r,s=[],n=t;n<a;n+=3)r=(e[n]<<16&0xff0000)+(e[n+1]<<8&65280)+(255&e[n+2]),s.push(i[r>>18&63]+i[r>>12&63]+i[r>>6&63]+i[63&r]);return s.join("")}(e,n,n+16383>o?o:n+16383));return 1===r?s.push(i[(t=e[a-1])>>2]+i[t<<4&63]+"=="):2===r&&s.push(i[(t=(e[a-2]<<8)+e[a-1])>>10]+i[t>>4&63]+i[t<<2&63]+"="),s.join("")};for(var i=[],a=[],r="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,o=s.length;n<o;++n)i[n]=s[n],a[s.charCodeAt(n)]=n;function A(e){var t=e.length;if(t%4>0)throw Error("Invalid string. Length must be a multiple of 4");var i=e.indexOf("=");-1===i&&(i=t);var a=i===t?0:4-i%4;return[i,a]}a[45]=62,a[95]=63},72:function(e,t,i){"use strict";var a=i(675),r=i(783),s="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;function n(e){if(e>0x7fffffff)throw RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,o.prototype),t}function o(e,t,i){if("number"==typeof e){if("string"==typeof t)throw TypeError('The "string" argument must be of type string. Received type number');return h(e)}return A(e,t,i)}function A(e,t,i){if("string"==typeof e){var a=e,r=t;if(("string"!=typeof r||""===r)&&(r="utf8"),!o.isEncoding(r))throw TypeError("Unknown encoding: "+r);var s=0|g(a,r),A=n(s),l=A.write(a,r);return l!==s&&(A=A.slice(0,l)),A}if(ArrayBuffer.isView(e))return c(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(R(e,ArrayBuffer)||e&&R(e.buffer,ArrayBuffer)||"undefined"!=typeof SharedArrayBuffer&&(R(e,SharedArrayBuffer)||e&&R(e.buffer,SharedArrayBuffer)))return function(e,t,i){var a;if(t<0||e.byteLength<t)throw RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(i||0))throw RangeError('"length" is outside of buffer bounds');return Object.setPrototypeOf(a=void 0===t&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,t):new Uint8Array(e,t,i),o.prototype),a}(e,t,i);if("number"==typeof e)throw TypeError('The "value" argument must not be of type number. Received type number');var h=e.valueOf&&e.valueOf();if(null!=h&&h!==e)return o.from(h,t,i);var u=function(e){if(o.isBuffer(e)){var t=0|d(e.length),i=n(t);return 0===i.length||e.copy(i,0,0,t),i}return void 0!==e.length?"number"!=typeof e.length||function(e){return e!=e}(e.length)?n(0):c(e):"Buffer"===e.type&&Array.isArray(e.data)?c(e.data):void 0}(e);if(u)return u;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return o.from(e[Symbol.toPrimitive]("string"),t,i);throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if("number"!=typeof e)throw TypeError('"size" argument must be of type number');if(e<0)throw RangeError('The value "'+e+'" is invalid for option "size"')}function h(e){return l(e),n(e<0?0:0|d(e))}function c(e){for(var t=e.length<0?0:0|d(e.length),i=n(t),a=0;a<t;a+=1)i[a]=255&e[a];return i}t.Buffer=o,t.SlowBuffer=function(e){return+e!=e&&(e=0),o.alloc(+e)},t.INSPECT_MAX_BYTES=50,t.kMaxLength=0x7fffffff,o.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),o.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}}),o.poolSize=8192,o.from=function(e,t,i){return A(e,t,i)},Object.setPrototypeOf(o.prototype,Uint8Array.prototype),Object.setPrototypeOf(o,Uint8Array),o.alloc=function(e,t,i){return(l(e),e<=0)?n(e):void 0!==t?"string"==typeof i?n(e).fill(t,i):n(e).fill(t):n(e)},o.allocUnsafe=function(e){return h(e)},o.allocUnsafeSlow=function(e){return h(e)};function d(e){if(e>=0x7fffffff)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function g(e,t){if(o.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||R(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var i=e.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===i)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return v(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return S(e).length;default:if(r)return a?-1:v(e).length;t=(""+t).toLowerCase(),r=!0}}function u(e,t,i){var r,s,n,o=!1;if((void 0===t||t<0)&&(t=0),t>this.length||((void 0===i||i>this.length)&&(i=this.length),i<=0||(i>>>=0)<=(t>>>=0)))return"";for(e||(e="utf8");;)switch(e){case"hex":return function(e,t,i){var a=e.length;(!t||t<0)&&(t=0),(!i||i<0||i>a)&&(i=a);for(var r="",s=t;s<i;++s)r+=M[e[s]];return r}(this,t,i);case"utf8":case"utf-8":return b(this,t,i);case"ascii":return function(e,t,i){var a="";i=Math.min(e.length,i);for(var r=t;r<i;++r)a+=String.fromCharCode(127&e[r]);return a}(this,t,i);case"latin1":case"binary":return function(e,t,i){var a="";i=Math.min(e.length,i);for(var r=t;r<i;++r)a+=String.fromCharCode(e[r]);return a}(this,t,i);case"base64":return r=this,s=t,n=i,0===s&&n===r.length?a.fromByteArray(r):a.fromByteArray(r.slice(s,n));case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return function(e,t,i){for(var a=e.slice(t,i),r="",s=0;s<a.length;s+=2)r+=String.fromCharCode(a[s]+256*a[s+1]);return r}(this,t,i);default:if(o)throw TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),o=!0}}function p(e,t,i){var a=e[t];e[t]=e[i],e[i]=a}function f(e,t,i,a,r){var s;if(0===e.length)return -1;if("string"==typeof i?(a=i,i=0):i>0x7fffffff?i=0x7fffffff:i<-0x80000000&&(i=-0x80000000),(s=i*=1)!=s&&(i=r?0:e.length-1),i<0&&(i=e.length+i),i>=e.length)if(r)return -1;else i=e.length-1;else if(i<0)if(!r)return -1;else i=0;if("string"==typeof t&&(t=o.from(t,a)),o.isBuffer(t))return 0===t.length?-1:m(e,t,i,a,r);if("number"==typeof t){if(t&=255,"function"==typeof Uint8Array.prototype.indexOf)if(r)return Uint8Array.prototype.indexOf.call(e,t,i);else return Uint8Array.prototype.lastIndexOf.call(e,t,i);return m(e,[t],i,a,r)}throw TypeError("val must be string, number or Buffer")}function m(e,t,i,a,r){var s,n=1,o=e.length,A=t.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return -1;n=2,o/=2,A/=2,i/=2}function l(e,t){return 1===n?e[t]:e.readUInt16BE(t*n)}if(r){var h=-1;for(s=i;s<o;s++)if(l(e,s)===l(t,-1===h?0:s-h)){if(-1===h&&(h=s),s-h+1===A)return h*n}else -1!==h&&(s-=s-h),h=-1}else for(i+A>o&&(i=o-A),s=i;s>=0;s--){for(var c=!0,d=0;d<A;d++)if(l(e,s+d)!==l(t,d)){c=!1;break}if(c)return s}return -1}o.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==o.prototype},o.compare=function(e,t){if(R(e,Uint8Array)&&(e=o.from(e,e.offset,e.byteLength)),R(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(e)||!o.isBuffer(t))throw TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;for(var i=e.length,a=t.length,r=0,s=Math.min(i,a);r<s;++r)if(e[r]!==t[r]){i=e[r],a=t[r];break}return i<a?-1:+(a<i)},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!Array.isArray(e))throw TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return o.alloc(0);if(void 0===t)for(i=0,t=0;i<e.length;++i)t+=e[i].length;var i,a=o.allocUnsafe(t),r=0;for(i=0;i<e.length;++i){var s=e[i];if(R(s,Uint8Array)&&(s=o.from(s)),!o.isBuffer(s))throw TypeError('"list" argument must be an Array of Buffers');s.copy(a,r),r+=s.length}return a},o.byteLength=g,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)p(this,t,t+1);return this},o.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)p(this,t,t+3),p(this,t+1,t+2);return this},o.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)p(this,t,t+7),p(this,t+1,t+6),p(this,t+2,t+5),p(this,t+3,t+4);return this},o.prototype.toString=function(){var e=this.length;return 0===e?"":0==arguments.length?b(this,0,e):u.apply(this,arguments)}
vendor: 10,368 bytes, line 1
1,o.prototype.toLocaleString=o.prototype.toString,o.prototype.equals=function(e){if(!o.isBuffer(e))throw TypeError("Argument must be a Buffer");return this===e||0===o.compare(this,e)},o.prototype.inspect=function(){var e="",i=t.INSPECT_MAX_BYTES;return e=this.toString("hex",0,i).replace(/(.{2})/g,"$1 ").trim(),this.length>i&&(e+=" ... "),"<Buffer "+e+">"},s&&(o.prototype[s]=o.prototype.inspect),o.prototype.compare=function(e,t,i,a,r){if(R(e,Uint8Array)&&(e=o.from(e,e.offset,e.byteLength)),!o.isBuffer(e))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===i&&(i=e?e.length:0),void 0===a&&(a=0),void 0===r&&(r=this.length),t<0||i>e.length||a<0||r>this.length)throw RangeError("out of range index");if(a>=r&&t>=i)return 0;if(a>=r)return -1;if(t>=i)return 1;if(t>>>=0,i>>>=0,a>>>=0,r>>>=0,this===e)return 0;for(var s=r-a,n=i-t,A=Math.min(s,n),l=this.slice(a,r),h=e.slice(t,i),c=0;c<A;++c)if(l[c]!==h[c]){s=l[c],n=h[c];break}return s<n?-1:+(n<s)},o.prototype.includes=function(e,t,i){return -1!==this.indexOf(e,t,i)},o.prototype.indexOf=function(e,t,i){return f(this,e,t,i,!0)},o.prototype.lastIndexOf=function(e,t,i){return f(this,e,t,i,!1)};function b(e,t,i){i=Math.min(e.length,i);for(var a=[],r=t;r<i;){var s,n,o,A,l=e[r],h=null,c=l>239?4:l>223?3:l>191?2:1;if(r+c<=i)switch(c){case 1:l<128&&(h=l);break;case 2:(192&(s=e[r+1]))==128&&(A=(31&l)<<6|63&s)>127&&(h=A);break;case 3:s=e[r+1],n=e[r+2],(192&s)==128&&(192&n)==128&&(A=(15&l)<<12|(63&s)<<6|63&n)>2047&&(A<55296||A>57343)&&(h=A);break;case 4:s=e[r+1],n=e[r+2],o=e[r+3],(192&s)==128&&(192&n)==128&&(192&o)==128&&(A=(15&l)<<18|(63&s)<<12|(63&n)<<6|63&o)>65535&&A<1114112&&(h=A)}null===h?(h=65533,c=1):h>65535&&(h-=65536,a.push(h>>>10&1023|55296),h=56320|1023&h),a.push(h),r+=c}var d=a,g=d.length;if(g<=4096)return String.fromCharCode.apply(String,d);for(var u="",p=0;p<g;)u+=String.fromCharCode.apply(String,d.slice(p,p+=4096));return u}function E(e,t,i){if(e%1!=0||e<0)throw RangeError("offset is not uint");if(e+t>i)throw RangeError("Trying to access beyond buffer length")}function I(e,t,i,a,r,s){if(!o.isBuffer(e))throw TypeError('"buffer" argument must be a Buffer instance');if(t>r||t<s)throw RangeError('"value" argument is out of bounds');if(i+a>e.length)throw RangeError("Index out of range")}function C(e,t,i,a,r,s){if(i+a>e.length||i<0)throw RangeError("Index out of range")}function y(e,t,i,a,s){return t*=1,i>>>=0,s||C(e,t,i,4,34028234663852886e22,-34028234663852886e22),r.write(e,t,i,a,23,4),i+4}function B(e,t,i,a,s){return t*=1,i>>>=0,s||C(e,t,i,8,17976931348623157e292,-17976931348623157e292),r.write(e,t,i,a,52,8),i+8}o.prototype.write=function(e,t,i,a){if(void 0===t)a="utf8",i=this.length,t=0;else if(void 0===i&&"string"==typeof t)a=t,i=this.length,t=0;else if(isFinite(t))t>>>=0,isFinite(i)?(i>>>=0,void 0===a&&(a="utf8")):(a=i,i=void 0);else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var r,s,n,o,A,l,h,c,d=this.length-t;if((void 0===i||i>d)&&(i=d),e.length>0&&(i<0||t<0)||t>this.length)throw RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var g=!1;;)switch(a){case"hex":return function(e,t,i,a){i=Number(i)||0;var r=e.length-i;a?(a=Number(a))>r&&(a=r):a=r;var s=t.length;a>s/2&&(a=s/2);for(var n=0;n<a;++n){var o,A=parseInt(t.substr(2*n,2),16);if((o=A)!=o)break;e[i+n]=A}return n}(this,e,t,i);case"utf8":case"utf-8":return r=t,s=i,Q(v(e,this.length-r),this,r,s);case"ascii":return n=t,o=i,Q(x(e),this,n,o);case"latin1":case"binary":return function(e,t,i,a){return Q(x(t),e,i,a)}(this,e,t,i);case"base64":return A=t,l=i,Q(S(e),this,A,l);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return h=t,c=i,Q(function(e,t){for(var i,a,r=[],s=0;s<e.length&&!((t-=2)<0);++s)a=(i=e.charCodeAt(s))>>8,r.push(i%256),r.push(a);return r}(e,this.length-h),this,h,c);default:if(g)throw TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),g=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},o.prototype.slice=function(e,t){var i=this.length;e=~~e,t=void 0===t?i:~~t,e<0?(e+=i)<0&&(e=0):e>i&&(e=i),t<0?(t+=i)<0&&(t=0):t>i&&(t=i),t<e&&(t=e);var a=this.subarray(e,t);return Object.setPrototypeOf(a,o.prototype),a},o.prototype.readUIntLE=function(e,t,i){e>>>=0,t>>>=0,i||E(e,t,this.length);for(var a=this[e],r=1,s=0;++s<t&&(r*=256);)a+=this[e+s]*r;return a},o.prototype.readUIntBE=function(e,t,i){e>>>=0,t>>>=0,i||E(e,t,this.length);for(var a=this[e+--t],r=1;t>0&&(r*=256);)a+=this[e+--t]*r;return a},o.prototype.readUInt8=function(e,t){return e>>>=0,t||E(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return e>>>=0,t||E(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+0x1000000*this[e+3]},o.prototype.readUInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),0x1000000*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,i){e>>>=0,t>>>=0,i||E(e,t,this.length);for(var a=this[e],r=1,s=0;++s<t&&(r*=256);)a+=this[e+s]*r;return a>=(r*=128)&&(a-=Math.pow(2,8*t)),a},o.prototype.readIntBE=function(e,t,i){e>>>=0,t>>>=0,i||E(e,t,this.length);for(var a=t,r=1,s=this[e+--a];a>0&&(r*=256);)s+=this[e+--a]*r;return s>=(r*=128)&&(s-=Math.pow(2,8*t)),s},o.prototype.readInt8=function(e,t){return(e>>>=0,t||E(e,1,this.length),128&this[e])?-((255-this[e]+1)*1):this[e]},o.prototype.readInt16LE=function(e,t){e>>>=0,t||E(e,2,this.length);var i=this[e]|this[e+1]<<8;return 32768&i?0xffff0000|i:i},o.prototype.readInt16BE=function(e,t){e>>>=0,t||E(e,2,this.length);var i=this[e+1]|this[e]<<8;return 32768&i?0xffff0000|i:i},o.prototype.readInt32LE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return e>>>=0,t||E(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return e>>>=0,t||E(e,4,this.length),r.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return e>>>=0,t||E(e,4,this.length),r.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return e>>>=0,t||E(e,8,this.length),r.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return e>>>=0,t||E(e,8,this.length),r.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,i,a){if(e*=1,t>>>=0,i>>>=0,!a){var r=Math.pow(2,8*i)-1;I(this,e,t,i,r,0)}var s=1,n=0;for(this[t]=255&e;++n<i&&(s*=256);)this[t+n]=e/s&255;return t+i},o.prototype.writeUIntBE=function(e,t,i,a){if(e*=1,t>>>=0,i>>>=0,!a){var r=Math.pow(2,8*i)-1;I(this,e,t,i,r,0)}var s=i-1,n=1;for(this[t+s]=255&e;--s>=0&&(n*=256);)this[t+s]=e/n&255;return t+i},o.prototype.writeUInt8=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,1,255,0),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeUInt16BE=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeUInt32LE=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,4,0xffffffff,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},o.prototype.writeUInt32BE=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,4,0xffffffff,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeIntLE=function(e,t,i,a){if(e*=1,t>>>=0,!a){var r=Math.pow(2,8*i-1);I(this,e,t,i,r-1,-r)}var s=0,n=1,o=0;for(this[t]=255&e;++s<i&&(n*=256);)e<0&&0===o&&0!==this[t+s-1]&&(o=1),this[t+s]=(e/n|0)-o&255;return t+i},o.prototype.writeIntBE=function(e,t,i,a){if(e*=1,t>>>=0,!a){var r=Math.pow(2,8*i-1);I(this,e,t,i,r-1,-r)}var s=i-1,n=1,o=0;for(this[t+s]=255&e;--s>=0&&(n*=256);)e<0&&0===o&&0!==this[t+s+1]&&(o=1),this[t+s]=(e/n|0)-o&255;return t+i},o.prototype.writeInt8=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},o.prototype.writeInt16BE=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},o.prototype.writeInt32LE=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,4,0x7fffffff,-0x80000000),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},o.prototype.writeInt32BE=function(e,t,i){return e*=1,t>>>=0,i||I(this,e,t,4,0x7fffffff,-0x80000000),e<0&&(e=0xffffffff+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},o.prototype.writeFloatLE=function(e,t,i){return y(this,e,t,!0,i)},o.prototype.writeFloatBE=function(e,t,i){return y(this,e,t,!1,i)},o.prototype.writeDoubleLE=function(e,t,i){return B(this,e,t,!0,i)},o.prototype.writeDoubleBE=function(e,t,i){return B(this,e,t,!1,i)},o.prototype.copy=function(e,t,i,a){if(!o.isBuffer(e))throw TypeError("argument should be a Buffer");if(i||(i=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a<i&&(a=i),a===i||0===e.length||0===this.length)return 0;if(t<0)throw RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw RangeError("Index out of range");if(a<0)throw RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t<a-i&&(a=e.length-t+i);var r=a-i;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(t,i,a);else if(this===e&&i<t&&t<a)for(var s=r-1;s>=0;--s)e[s+t]=this[s+i];else Uint8Array.prototype.set.call(e,this.subarray(i,a),t);return r},o.prototype.fill=function(e,t,i,a){if("string"==typeof e){if("string"==typeof t?(a=t,t=0,i=this.length):"string"==typeof i&&(a=i,i=this.length),void 0!==a&&"string"!=typeof a)throw TypeError("encoding must be a string");if("string"==typeof a&&!o.isEncoding(a))throw TypeError("Unknown encoding: "+a);if(1===e.length){var r,s=e.charCodeAt(0);("utf8"===a&&s<128||"latin1"===a)&&(e=s)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<i)throw RangeError("Out of range index");if(i<=t)return this;if(t>>>=0,i=void 0===i?this.length:i>>>0,e||(e=0),"number"==typeof e)for(r=t;r<i;++r)this[r]=e;else{var n=o.isBuffer(e)?e:o.from(e,a),A=n.length;
1if(0===A)throw TypeError('The value "'+e+'" is invalid for argument "value"');for(r=0;r<i-t;++r)this[r+t]=n[r%A]}return this};var w=/[^+/0-9A-Za-z-_]/g;function v(e,t){t=t||1/0;for(var i,a=e.length,r=null,s=[],n=0;n<a;++n){if((i=e.charCodeAt(n))>55295&&i<57344){if(!r){if(i>56319||n+1===a){(t-=3)>-1&&s.push(239,191,189);continue}r=i;continue}if(i<56320){(t-=3)>-1&&s.push(239,191,189),r=i;continue}i=(r-55296<<10|i-56320)+65536}else r&&(t-=3)>-1&&s.push(239,191,189);if(r=null,i<128){if((t-=1)<0)break;s.push(i)}else if(i<2048){if((t-=2)<0)break;s.push(i>>6|192,63&i|128)}else if(i<65536){if((t-=3)<0)break;s.push(i>>12|224,i>>6&63|128,63&i|128)}else if(i<1114112){if((t-=4)<0)break;s.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}else throw Error("Invalid code point")}return s}function x(e){for(var t=[],i=0;i<e.length;++i)t.push(255&e.charCodeAt(i));return t}function S(e){return a.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(w,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Q(e,t,i,a){for(var r=0;r<a&&!(r+i>=t.length)&&!(r>=e.length);++r)t[r+i]=e[r];return r}function R(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}var M=function(){for(var e="0123456789abcdef",t=Array(256),i=0;i<16;++i)for(var a=16*i,r=0;r<16;++r)t[a+r]=e[i]+e[r];return t}()},783:function(e,t){t.read=function(e,t,i,a,r){var s,n,o=8*r-a-1,A=(1<<o)-1,l=A>>1,h=-7,c=i?r-1:0,d=i?-1:1,g=e[t+c];for(c+=d,s=g&(1<<-h)-1,g>>=-h,h+=o;h>0;s=256*s+e[t+c],c+=d,h-=8);for(n=s&(1<<-h)-1,s>>=-h,h+=a;h>0;n=256*n+e[t+c],c+=d,h-=8);if(0===s)s=1-l;else{if(s===A)return n?NaN:1/0*(g?-1:1);n+=Math.pow(2,a),s-=l}return(g?-1:1)*n*Math.pow(2,s-a)},t.write=function(e,t,i,a,r,s){var n,o,A,l=8*s-r-1,h=(1<<l)-1,c=h>>1,d=5960464477539062e-23*(23===r),g=a?0:s-1,u=a?1:-1,p=+(t<0||0===t&&1/t<0);for(isNaN(t=Math.abs(t))||t===1/0?(o=+!!isNaN(t),n=h):(n=Math.floor(Math.log(t)/Math.LN2),t*(A=Math.pow(2,-n))<1&&(n--,A*=2),n+c>=1?t+=d/A:t+=d*Math.pow(2,1-c),t*A>=2&&(n++,A/=2),n+c>=h?(o=0,n=h):n+c>=1?(o=(t*A-1)*Math.pow(2,r),n+=c):(o=t*Math.pow(2,c-1)*Math.pow(2,r),n=0));r>=8;e[i+g]=255&o,g+=u,o/=256,r-=8);for(n=n<<r|o,l+=r;l>0;e[i+g]=255&n,g+=u,n/=256,l-=8);e[i+g-u]|=128*p}}},i={};function a(e){var r=i[e];if(void 0!==r)return r.exports;var s=i[e]={exports:{}},n=!0;try{t[e](s,s.exports,a),n=!1}finally{n&&delete i[e]}return s.exports}a.ab="//",e.exports=a(72)}()},6740:(e,t,i)=>{"use strict";let a,r,s,n,o,A,l,h,c,d,g,u,p,f;i.r(t),i.d(t,{CanvasTexture:()=>tr.GOR,FileLoader:()=>tr.Y9S,Loader:()=>tr.aHM,ModelViewerElement:()=>l3,NearestFilter:()=>tr.hxR});let m=globalThis,b=m.ShadowRoot&&(void 0===m.ShadyCSS||m.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,E=Symbol(),I=new WeakMap;class C{constructor(e,t,i){if(this._$cssResult$=!0,i!==E)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(b&&void 0===e){let i=void 0!==t&&1===t.length;i&&(e=I.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),i&&I.set(t,e))}return e}toString(){return this.cssText}}let y=b?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(let i of e.cssRules)t+=i.cssText;return(e=>new C("string"==typeof e?e:e+"",void 0,E))(t)})(e):e,{is:B,defineProperty:w,getOwnPropertyDescriptor:v,getOwnPropertyNames:x,getOwnPropertySymbols:S,getPrototypeOf:Q}=Object,R=globalThis,M=R.trustedTypes,T=M?M.emptyScript:"",D=R.reactiveElementPolyfillSupport,k={toAttribute(e,t){switch(t){case Boolean:e=e?T:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let i=e;switch(t){case Boolean:i=null!==e;break;case Number:i=null===e?null:Number(e);break;case Object:case Array:try{i=JSON.parse(e)}catch(e){i=null}}return i}},F=(e,t)=>!B(e,t),L={attribute:!0,type:String,converter:k,reflect:!1,useDefault:!1,hasChanged:F};Symbol.metadata??=Symbol("metadata"),R.litPropertyMetadata??=new WeakMap;class P extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=L){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let i=Symbol(),a=this.getPropertyDescriptor(e,i,t);void 0!==a&&w(this.prototype,e,a)}}static getPropertyDescriptor(e,t,i){let{get:a,set:r}=v(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:a,set(t){let s=a?.call(this);r?.call(this,t),this.requestUpdate(e,s,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??L}static _$Ei(){if(this.hasOwnProperty("elementProperties"))return;let e=Q(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty("finalized"))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty("properties")){let e=this.properties;for(let t of[...x(e),...S(e)])this.createProperty(t,e[t])}let e=this[Symbol.metadata];if(null!==e){let t=litPropertyMetadata.get(e);if(void 0!==t)for(let[e,i]of t)this.elementProperties.set(e,i)}for(let[e,t]of(this._$Eh=new Map,this.elementProperties)){let i=this._$Eu(e,t);void 0!==i&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e))for(let i of new Set(e.flat(1/0).reverse()))t.unshift(y(i));else void 0!==e&&t.push(y(e));return t}static _$Eu(e,t){let i=t.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e
1=>e(this))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map;for(let t of this.constructor.elementProperties.keys())this.hasOwnProperty(t)&&(e.set(t,this[t]),delete this[t]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((e,t)=>{if(b)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let i of t){let t=document.createElement("style"),a=m.litNonce;void 0!==a&&t.setAttribute("nonce",a),t.textContent=i.cssText,e.appendChild(t)}})(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,i){this._$AK(e,i)}_$ET(e,t){let i=this.constructor.elementProperties.get(e),a=this.constructor._$Eu(e,i);if(void 0!==a&&!0===i.reflect){let r=(void 0!==i.converter?.toAttribute?i.converter:k).toAttribute(t,i.type);this._$Em=e,null==r?this.removeAttribute(a):this.setAttribute(a,r),this._$Em=null}}_$AK(e,t){let i=this.constructor,a=i._$Eh.get(e);if(void 0!==a&&this._$Em!==a){let e=i.getPropertyOptions(a),r="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:k;this._$Em=a;let s=r.fromAttribute(t,e.type);this[a]=s??this._$Ej?.get(a)??s,this._$Em=null}}requestUpdate(e,t,i,a=!1,r){if(void 0!==e){let s=this.constructor;if(!1===a&&(r=this[e]),!(((i??=s.getPropertyOptions(e)).hasChanged??F)(r,t)||i.useDefault&&i.reflect&&r===this._$Ej?.get(e)&&!this.hasAttribute(s._$Eu(e,i))))return;this.C(e,t,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:i,reflect:a,wrapped:r},s){i&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,s??t??this[e]),!0!==r||void 0!==s)||(this._$AL.has(e)||(this.hasUpdated||i||(t=void 0),this._$AL.set(e,t)),!0===a&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,i]of e){let{wrapped:e}=i,a=this[t];!0!==e||this._$AL.has(t)||void 0===a||this.C(t,void 0,i,a)}}let e=!1,t=this._$AL;try{(e=this.shouldUpdate(t))?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}}P.elementStyles=[],P.shadowRootOptions={mode:"open"},P.elementProperties=new Map,P.finalized=new Map,D?.({ReactiveElement:P}),(R.reactiveElementVersions??=[]).push("2.1.2");let U=globalThis,_=e=>e,N=U.trustedTypes,O=N?N.createPolicy("lit-html",{createHTML:e=>e}):void 0,G="$lit$",q=`lit$${Math.random().toFixed(9).slice(2)}$`,H="?"+q,j=`<${H}>`,z=document,K=()=>z.createComment(""),V=e=>null===e||"object"!=typeof e&&"function"!=typeof e,J=Array.isArray,Y="[ \n\f\r]",W=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,$=/-->/g,X=/>/g,Z=RegExp(`>|${Y}(?:([^\\s"'>=/]+)(${Y}*=${Y}*(?:[^ 2\f\r"'\`<>=]|("|')|))|$)`,"g"),ee=/'/g,et=/"/g,ei=/^(?:script|style|textarea|title)$/i,ea=e=>(t,...i)=>({_$litType$:e,strings:t,values:i}),er=ea(1),es=(ea(2),ea(3),Symbol.for("lit-noChange")),en=Symbol.for("lit-nothing"),eo=new WeakMap,eA=z.createTreeWalker(z,129);function el(e,t){if(!J(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==O?O.createHTML(t):t}class eh{constructor({strings:e,_$litType$:t},i){let a;this.parts=[];let r=0,s=0,n=e.length-1,o=this.parts,[A,l]=((e,t)=>{let i=e.length-1,a=[],r,s=2===t?"<svg>":3===t?"<math>":"",n=W;for(let t=0;t<i;t++){let i=e[t],o,A,l=-1,h=0;for(;h<i.length&&(n.lastIndex=h,null!==(A=n.exec(i)));)h=n.lastIndex,n===W?"!--"===A[1]?n=$:void 0!==A[1]?n=X:void 0!==A[2]?(ei.test(A[2])&&(r=RegExp("</"+A[2],"g")),n=Z):void 0!==A[3]&&(n=Z):n===Z?">"===A[0]?(n=r??W,l=-1):void 0===A[1]?l=-2:(l=n.lastIndex-A[2].length,o=A[1],n=void 0===A[3]?Z:'"'===A[3]?et:ee):n===et||n===ee?n=Z:n===$||n===X?n=W:(n=Z,r=void 0);
2let c=n===Z&&e[t+1].startsWith("/>")?" ":"";s+=n===W?i+j:l>=0?(a.push(o),i.slice(0,l)+G+i.slice(l)+q+c):i+q+(-2===l?t:c)}return[el(e,s+(e[i]||"<?>")+(2===t?"</svg>":3===t?"</math>":"")),a]})(e,t);if(this.el=eh.createElement(A,i),eA.currentNode=this.el.content,2===t||3===t){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(a=eA.nextNode())&&o.length<n;){if(1===a.nodeType){if(a.hasAttributes())for(let e of a.getAttributeNames())if(e.endsWith(G)){let t=l[s++],i=a.getAttribute(e).split(q),n=/([.?@])?(.*)/.exec(t);o.push({type:1,index:r,name:n[2],strings:i,ctor:"."===n[1]?ep:"?"===n[1]?ef:"@"===n[1]?em:eu}),a.removeAttribute(e)}else e.startsWith(q)&&(o.push({type:6,index:r}),a.removeAttribute(e));if(ei.test(a.tagName)){let e=a.textContent.split(q),t=e.length-1;if(t>0){a.textContent=N?N.emptyScript:"";for(let i=0;i<t;i++)a.append(e[i],K()),eA.nextNode(),o.push({type:2,index:++r});a.append(e[t],K())}}}else if(8===a.nodeType)if(a.data===H)o.push({type:2,index:r});else{let e=-1;for(;-1!==(e=a.data.indexOf(q,e+1));)o.push({type:7,index:r}),e+=q.length-1}r++}}static createElement(e,t){let i=z.createElement("template");return i.innerHTML=e,i}}function ec(e,t,i=e,a){if(t===es)return t;let r=void 0!==a?i._$Co?.[a]:i._$Cl,s=V(t)?void 0:t._$litDirective$;return r?.constructor!==s&&(r?._$AO?.(!1),void 0===s?r=void 0:(r=new s(e))._$AT(e,i,a),void 0!==a?(i._$Co??=[])[a]=r:i._$Cl=r),void 0!==r&&(t=ec(e,r._$AS(e,t.values),r,a)),t}class ed{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:i}=this._$AD,a=(e?.creationScope??z).importNode(t,!0);eA.currentNode=a;let r=eA.nextNode(),s=0,n=0,o=i[0];for(;void 0!==o;){if(s===o.index){let t;2===o.type?t=new eg(r,r.nextSibling,this,e):1===o.type?t=new o.ctor(r,o.name,o.strings,this,e):6===o.type&&(t=new eb(r,this,e)),this._$AV.push(t),o=i[++n]}s!==o?.index&&(r=eA.nextNode(),s++)}return eA.currentNode=z,a}p(e){let t=0;for(let i of this._$AV)void 0!==i&&(void 0!==i.strings?(i._$AI(e,i,t),t+=i.strings.length-2):i._$AI(e[t])),t++}}class eg{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,i,a){this.type=2,this._$AH=en,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=i,this.options=a,this._$Cv=a?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return void 0!==t&&11===e?.nodeType&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){let i;V(e=ec(this,e,t))?e===en||null==e||""===e?(this._$AH!==en&&this._$AR(),this._$AH=en):e!==this._$AH&&e!==es&&this._(e):void 0!==e._$litType$?this.$(e):void 0!==e.nodeType?this.T(e):J(i=e)||"function"==typeof i?.[Symbol.iterator]?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==en&&V(this._$AH)?this._$AA.nextSibling.data=e:this.T(z.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:i}=e,a="number"==typeof i?this._$AC(e):(void 0===i.el&&(i.el=eh.createElement(el(i.h,i.h[0]),this.options)),i);if(this._$AH?._$AD===a)this._$AH.p(t);else{let e=new ed(a,this),i=e.u(this.options);e.p(t),this.T(i),this._$AH=e}}_$AC(e){let t=eo.get(e.strings);return void 0===t&&eo.set(e.strings,t=new eh(e)),t}k(e){J(this._$AH)||(this._$AH=[],this._$AR());let t=this._$AH,i,a=0;for(let r of e)a===t.length?t.push(i=new eg(this.O(K()),this.O(K()),this,this.options)):i=t[a],i._$AI(r),a++;a<t.length&&(this._$AR(i&&i._$AB.nextSibling,a),t.length=a)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=_(e).nextSibling;_(e).remove(),e=t}}setConnected(e){void 0===this._$AM&&(this._$Cv=e,this._$AP?.(e))}}class eu{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,i,a,r){this.type=1,this._$AH=en,this._$AN=void 0,this.element=e,this.name=t,this._$AM=a,this.options=r,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=en}_$AI(e,t=this,i,a){let r=this.strings,s=!1;if(void 0===r)(s=!V(e=ec(this,e,t,0))||e!==this._$AH&&e!==es)&&(this._$AH=e);else{let a,n,o=e;for(e=r[0],a=0;a<r.length-1;a++)(n=ec(this,o[i+a],t,a))===es&&(n=this._$AH[a]),s||=!V(n)||n!==this._$AH[a],n===e
2n?e=en:e!==en&&(e+=(n??"")+r[a+1]),this._$AH[a]=n}s&&!a&&this.j(e)}j(e){e===en?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class ep extends eu{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===en?void 0:e}}class ef extends eu{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==en)}}class em extends eu{constructor(e,t,i,a,r){super(e,t,i,a,r),this.type=5}_$AI(e,t=this){if((e=ec(this,e,t,0)??en)===es)return;let i=this._$AH,a=e===en&&i!==en||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,r=e!==en&&(i===en||a);a&&this.element.removeEventListener(this.name,this,i),r&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class eb{constructor(e,t,i){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(e){ec(this,e)}}let eE=U.litHtmlPolyfillSupport;eE?.(eh,eg),(U.litHtmlVersions??=[]).push("3.3.3");let eI=(e,t,i)=>{let a=i?.renderBefore??t,r=a._$litPart$;if(void 0===r){let e=i?.renderBefore??null;a._$litPart$=r=new eg(t.insertBefore(K(),e),e,void 0,i??{})}return r._$AI(e),r},eC=globalThis;class ey extends P{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=eI(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return es}}ey._$litElement$=!0,ey.finalized=!0,eC.litElementHydrateSupport?.({LitElement:ey});let eB=eC.litElementPolyfillSupport;eB?.({LitElement:ey}),(eC.litElementVersions??=[]).push("4.2.2");let ew={attribute:!0,type:String,converter:k,reflect:!1,hasChanged:F};function ev(e){return(t,i)=>"object"==typeof i?((e=ew,t,i)=>{let{kind:a,metadata:r}=i,s=globalThis.litPropertyMetadata.get(r);if(void 0===s&&globalThis.litPropertyMetadata.set(r,s=new Map),"setter"===a&&((e=Object.create(e)).wrapped=!0),s.set(i.name,e),"accessor"===a){let{name:a}=i;return{set(i){let r=t.get.call(this);t.set.call(this,i),this.requestUpdate(a,r,e,!0,i)},init(t){return void 0!==t&&this.C(a,void 0,e,t),t}}}if("setter"===a){let{name:a}=i;return function(i){let r=this[a];t.call(this,i),this.requestUpdate(a,r,e,!0,i)}}throw Error("Unsupported decorator location: "+a)})(e,t,i):((e,t,i)=>{let a=t.hasOwnProperty(i);return t.constructor.createProperty(i,e),a?Object.getOwnPropertyDescriptor(t,i):void 0})(e,t,i)}var ex,eS,eQ,eR,eM,eT,eD,ek,eF,eL,eP,eU,e_,eN,eO,eG,eq,eH,ej,ez,eK,eV,eJ,eY,eW,e$,eX,eZ,e0,e1,e2,e8,e9,e3,e4,e5,e6,e7,te,tt,ti=function(e,t,i,a){var r,s=arguments.length,n=s<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,a);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(s<3?r(n):s>3?r(t,i,n):r(t,i))||n);return s>3&&n&&Object.defineProperty(t,i,n),n};class ta extends P{constructor(){super(...arguments),this.src=null,this.offset=null,this.orientation=null,this.scale=null,this.background=!1}static get is(){return"extra-model"}updated(e){if(super.updated(e),e.has("src")||e.has("offset")||e.has("orientation")||e.has("scale")||e.has("background")){let t=e.has("src");this.dispatchEvent(new CustomEvent("extra-model-changed",{bubbles:!0,composed:!0,detail:{srcChanged:t,src:this.src,offset:this.offset,orientation:this.orientation,scale:this.scale,background:this.background}}))}}}ti([ev({type:String})],ta.prototype,"src",void 0),ti([ev({type:String})],ta.prototype,"offset",void 0),ti([ev({type:String})],ta.prototype,"orientation",void 0),ti([ev({type:String})],ta.prototype,"scale",void 0),ti([ev({type:Boolean})],ta.prototype,"background",void 0),customElements.define("extra-model",ta);var tr=i(5339);let ts=null!=navigator.xr&&null!=self.XRSession&&null!=navigator.xr.isSessionSupported,tn=ts&&null!=self.XRSession.prototype.requestHitTestSource,to=null!=self.ResizeObserver,tA=null!=self.IntersectionObserver;(()=>{let e=navigator.userAgent||navigator.vendor||self.opera;/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
2sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))})(),/\bCrOS\b/.test(navigator.userAgent);let tl=/android/i.test(navigator.userAgent),th=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!self.MSStream||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1;/Safari\//.test(navigator.userAgent);let tc=/firefox/i.test(navigator.userAgent),td=/OculusBrowser/.test(navigator.userAgent);th&&/CriOS\//.test(navigator.userAgent);let tg=th&&/CriOS\/|EdgiOS\/|FxiOS\/|GSA\/|DuckDuckGo\//.test(navigator.userAgent),tu=th&&/GSA\//.test(navigator.userAgent),tp=tl&&!tc&&!td;window.webkit&&window.webkit.messageHandlers;let tf=(()=>{if(!th)return!1;{if(tg)return!0;let e=document.createElement("a");return!!(e.relList&&e.relList.supports&&e.relList.supports("ar"))}})(),tm=e=>e&&"null"!==e?tE(e):null,tb=()=>{if(tn)return;let e=[];throw ts||e.push("WebXR Device API"),tn||e.push("WebXR Hit Test API"),Error(`The following APIs are required for AR, but are missing in this browser: ${e.join(", ")}`)},tE=e=>new URL(e,window.location.toString()).toString(),tI=(e,t)=>{let i=null;return(...a)=>{null!=i&&self.clearTimeout(i),i=self.setTimeout(()=>{i=null,e(...a)},t)}},tC=(e,t,i)=>Math.max(t,Math.min(i,e)),ty=(()=>{let e=RegExp("[?&]model-viewer-debug-mode(&|$)");return()=>self.ModelViewerElement&&self.ModelViewerElement.debugMode||self.location&&self.location.search&&self.location.search.match(e)})();var tB=function(e,t,i,a){var r,s=arguments.length,n=s<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,a);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(s<3?r(n):s>3?r(t,i,n):r(t,i))||n);return s>3&&n&&Object.defineProperty(t,i,n),n};let tw=Symbol("currentEnvironmentMap"),tv=Symbol("currentBackground"),tx=Symbol("updateEnvironment"),tS=Symbol("cancelEnvironmentUpdate"),tQ=er` 3<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="#000000"> 4 <!-- NOTE(cdata): This SVG filter is a stop-gap until we can implement 5 support for dynamic re-coloring of UI components --> 6 <defs> 7 <filter id="drop-shadow" x="-100%" y="-100%" width="300%" height="300%"> 8 <feGaussianBlur in="SourceAlpha" stdDeviation="1"/> 9 <feOffset dx="0" dy="0" result="offsetblur"/> 10 <feFlood flood-color="#000000"/> 11 <feComposite in2="offsetblur" operator="in"/> 12 <feMerge> 13 <feMergeNode/> 14 <feMergeNode in="SourceGraphic"/> 15 </feMerge> 16 </filter> 17 </defs>
18 <path filter="url(#drop-shadow)" d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/> 19 <path d="M0 0h24v24H0z" fill="none"/> 20</svg>`,tR=er` 21<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="25" height="36"> 22 <defs> 23 <path id="A" d="M.001.232h24.997V36H.001z" /> 24 </defs> 25 <g transform="translate(-11 -4)" fill="none" fill-rule="evenodd"> 26 <path fill-opacity="0" fill="#fff" d="M0 0h44v44H0z" /> 27 <g transform="translate(11 3)"> 28 <path d="M8.733 11.165c.04-1.108.766-2.027 1.743-2.307a2.54 2.54 0 0 1 .628-.089c.16 0 .314.017.463.044 1.088.2 1.9 1.092 1.9 2.16v8.88h1.26c2.943-1.39 5-4.45 5-8.025a9.01 9.01 0 0 0-1.9-5.56l-.43-.5c-.765-.838-1.683-1.522-2.712-2-1.057-.49-2.226-.77-3.46-.77s-2.4.278-3.46.77c-1.03.478-1.947 1.162-2.71 2l-.43.5a9.01 9.01 0 0 0-1.9 5.56 9.04 9.04 0 0 0 .094 1.305c.03.21.088.41.13.617l.136.624c.083.286.196.56.305.832l.124.333a8.78 8.78 0 0 0 .509.953l.065.122a8.69 8.69 0 0 0 3.521 3.191l1.11.537v-9.178z" fill-opacity=".5" fill="#e4e4e4" /> 29 <path d="M22.94 26.218l-2.76 7.74c-.172.485-.676.8-1.253.8H12.24c-1.606 0-3.092-.68-3.98-1.82-1.592-2.048-3.647-3.822-6.11-5.27-.095-.055-.15-.137-.152-.23-.004-.1.046-.196.193-.297.56-.393 1.234-.6 1.926-.6a3.43 3.43 0 0 1 .691.069l4.922.994V10.972c0-.663.615-1.203 1.37-1.203s1.373.54 1.373 1.203v9.882h2.953c.273 0 .533.073.757.21l6.257 3.874c.027.017.045.042.07.06.41.296.586.77.426 1.22M4.1 16.614c-.024-.04-.042-.083-.065-.122a8.69 8.69 0 0 1-.509-.953c-.048-.107-.08-.223-.124-.333l-.305-.832c-.058-.202-.09-.416-.136-.624l-.13-.617a9.03 9.03 0 0 1-.094-1.305c0-2.107.714-4.04 1.9-5.56l.43-.5c.764-.84 1.682-1.523 2.71-2 1.058-.49 2.226-.77 3.46-.77s2.402.28 3.46.77c1.03.477 1.947 1.16 2.712 2l.428.5a9 9 0 0 1 1.901 5.559c0 3.577-2.056 6.636-5 8.026h-1.26v-8.882c0-1.067-.822-1.96-1.9-2.16-.15-.028-.304-.044-.463-.044-.22 0-.427.037-.628.09-.977.28-1.703 1.198-1.743 2.306v9.178l-1.11-.537C6.18 19.098 4.96 18 4.1 16.614M22.97 24.09l-6.256-3.874c-.102-.063-.218-.098-.33-.144 2.683-1.8 4.354-4.855 4.354-8.243 0-.486-.037-.964-.104-1.43a9.97 9.97 0 0 0-1.57-4.128l-.295-.408-.066-.092a10.05 10.05 0 0 0-.949-1.078c-.342-.334-.708-.643-1.094-.922-1.155-.834-2.492-1.412-3.94-1.65l-.732-.088-.748-.03a9.29 9.29 0 0 0-1.482.119c-1.447.238-2.786.816-3.94 1.65a9.33 9.33 0 0 0-.813.686 9.59 9.59 0 0 0-.845.877l-.385.437-.36.5-.288.468-.418.778-.04.09c-.593 1.28-.93 2.71-.93 4.222 0 3.832 2.182 7.342 5.56 8.938l1.437.68v4.946L5 25.64a4.44 4.44 0 0 0-.888-.086c-.017 0-.034.003-.05.003-.252.004-.503.033-.75.08a5.08 5.08 0 0 0-.237.056c-.193.046-.382.107-.568.18-.075.03-.15.057-.225.1-.25.114-.494.244-.723.405a1.31 1.31 0 0 0-.566 1.122 1.28 1.28 0 0 0 .645 1.051C4 29.925 5.96 31.614 7.473 33.563a5.06 5.06 0 0 0 .434.491c1.086 1.082 2.656 1.713 4.326 1.715h6.697c.748-.001 1.43-.333 1.858-.872.142-.18.256-.38.336-.602l2.757-7.74c.094-.26.13-.53.112-.794s-.088-.52-.203-.76a2.19 2.19 0 0 0-.821-.91" fill-opacity=".6" fill="#000" /> 30 <path d="M22.444 24.94l-6.257-3.874a1.45 1.45 0 0 0-.757-.211h-2.953v-9.88c0-.663-.616-1.203-1.373-1.203s-1.37.54-1.37 1.203v16.643l-4.922-.994a3.44 3.44 0 0 0-.692-.069 3.35 3.35 0 0 0-1.925.598c-.147.102-.198.198-.194.298.004.094.058.176.153.23 2.462 1.448 4.517 3.22 6.11 5.27.887 1.14 2.373 1.82 3.98 1.82h6.686c.577 0 1.08-.326 1.253-.8l2.76-7.74c.16-.448-.017-.923-.426-1.22-.025-.02-.043-.043-.07-.06z" fill="#fff" /> 31 <g transform="translate(0 .769)"> 32 <mask id="B" fill="#fff"> 33 <use xlink:href="#A" /> 34 </mask> 35 <path d="M23.993 24.992a1.96 1.96 0 0 1-.111.794l-2.758 7.74c-.08.22-.194.423-.336.602-.427.54-1.11.87-1.857.872h-6.698c-1.67-.002-3.24-.633-4.326-1.715-.154-.154-.3-.318-.434-.49C5.96 30.846 4 29.157 1.646 27.773c-.385-.225-.626-.618-.645-1.05a1.31 1.31 0 0 1 .566-1.122 4.56 4.56 0 0 1 .723-.405l.225-.1a4.3 4.3 0 0 1 .568-.18l.237-.056c.248-.046.5-.075.75-.08.018 0 .034-.003.05-.003.303-.001.597.027.89.086l3.722.752V20.68l-1.436-.68c-3.377-1.596-5.56-5.106-5.56-8.938 0-1.51.336-2.94.93-4.222.015-.03.025-.06.
3504-.09.127-.267.268-.525.418-.778.093-.16.186-.316.288-.468.063-.095.133-.186.2-.277L3.773 5c.118-.155.26-.29.385-.437.266-.3.544-.604.845-.877a9.33 9.33 0 0 1 .813-.686C6.97 2.167 8.31 1.59 9.757 1.35a9.27 9.27 0 0 1 1.481-.119 8.82 8.82 0 0 1 .748.031c.247.02.49.05.733.088 1.448.238 2.786.816 3.94 1.65.387.28.752.588 1.094.922a9.94 9.94 0 0 1 .949 1.078l.066.092c.102.133.203.268.295.408a9.97 9.97 0 0 1 1.571 4.128c.066.467.103.945.103 1.43 0 3.388-1.67 6.453-4.353 8.243.11.046.227.08.33.144l6.256 3.874c.37.23.645.55.82.9.115.24.185.498.203.76m.697-1.195c-.265-.55-.677-1.007-1.194-1.326l-5.323-3.297c2.255-2.037 3.564-4.97 3.564-8.114 0-2.19-.637-4.304-1.84-6.114-.126-.188-.26-.37-.4-.552-.645-.848-1.402-1.6-2.252-2.204C15.472.91 13.393.232 11.238.232A10.21 10.21 0 0 0 5.23 2.19c-.848.614-1.606 1.356-2.253 2.205-.136.18-.272.363-.398.55C1.374 6.756.737 8.87.737 11.06c0 4.218 2.407 8.08 6.133 9.842l.863.41v3.092l-2.525-.51c-.356-.07-.717-.106-1.076-.106a5.45 5.45 0 0 0-3.14.996c-.653.46-1.022 1.202-.99 1.983a2.28 2.28 0 0 0 1.138 1.872c2.24 1.318 4.106 2.923 5.543 4.772 1.26 1.62 3.333 2.59 5.55 2.592h6.698c1.42-.001 2.68-.86 3.134-2.138l2.76-7.74c.272-.757.224-1.584-.134-2.325" fill-opacity=".05" fill="#000" mask="url(#B)" /> 36 </g> 37 </g> 38 </g> 39</svg>`,tM=er` 40<svg version="1.1" id="view_x5F_in_x5F_AR_x5F_icon" 41 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="24px" height="24px" 42 viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"> 43<rect id="Bounding_Box" x="0" y="0" fill="none" width="24" height="24"/> 44<g id="Art_layer"> 45 <path d="M3,4c0-0.55,0.45-1,1-1h2V1H4C2.35,1,1,2.35,1,4v2h2V4z"/> 46 <path d="M20,3c0.55,0,1,0.45,1,1v2h2V4c0-1.65-1.35-3-3-3h-2v2H20z"/> 47 <path d="M4,21c-0.55,0-1-0.45-1-1v-2H1v2c0,1.65,1.35,3,3,3h2v-2H4z"/> 48 <path d="M20,21c0.55,0,1-0.45,1-1v-2h2v2c0,1.65-1.35,3-3,3h-2v-2H20z"/> 49 <g> 50 <path d="M18.25,7.6l-5.5-3.18c-0.46-0.27-1.04-0.27-1.5,0L5.75,7.6C5.29,7.87,5,8.36,5,8.9v6.35c0,0.54,0.29,1.03,0.75,1.3 51 l5.5,3.18c0.46,0.27,1.04,0.27,1.5,0l5.5-3.18c0.46-0.27,0.75-0.76,0.75-1.3V8.9C19,8.36,18.71,7.87,18.25,7.6z M7,14.96v-4.62 52 l4,2.32v4.61L7,14.96z M12,10.93L8,8.61l4-2.31l4,2.31L12,10.93z M13,17.27v-4.61l4-2.32v4.62L13,17.27z"/> 53 </g> 54</g> 55</svg>`,tT=er` 56<style> 57:host { 58 display: block; 59 position: relative; 60 contain: strict; 61 width: 300px; 62 height: 150px; 63} 64 65.container { 66 position: relative; 67 overflow: hidden; 68} 69 70.userInput { 71 width: 100%; 72 height: 100%; 73 display: none; 74 position: relative; 75 outline-offset: -1px; 76 outline-width: 1px; 77} 78 79canvas { 80 position: absolute; 81 display: none; 82 pointer-events: none; 83 /* NOTE(cdata): Chrome 76 and below apparently have a bug 84 * that causes our canvas not to display pixels unless it is 85 * on its own render layer 86 * @see https://github.com/google/model-viewer/pull/755#issuecomment-536597893 87 */ 88 transform: translateZ(0); 89} 90 91.show { 92 display: block; 93} 94 95/* Adapted from HTML5 Boilerplate 96 * 97 * @see https://github.com/h5bp/html5-boilerplate/blob/ceb4620c78fc82e13534fc44202a3f168754873f/dist/css/main.css#L122-L133 */ 98.screen-reader-only { 99 border: 0; 100 left: 0; 101 top: 0; 102 clip: rect(0, 0, 0, 0); 103 height: 1px; 104 margin: -1px; 105 overflow: hidden; 106 padding: 0; 107 position: absolute; 108 white-space: nowrap; 109 width: 1px; 110 pointer-events: none; 111} 112 113.slot { 114 position: absolute; 115 pointer-events: none; 116 top: 0; 117 left: 0; 118 width: 100%; 119 height: 100%; 120} 121 122.slot > * { 123 pointer-events: initial; 124} 125 126.annotation-wrapper ::slotted(*) { 127 opacity: var(--max-hotspot-opacity, 1); 128 transition: opacity 0.3s; 129} 130 131.pointer-tumbling .annotation-wrapper ::slotted(*) { 132 pointer-events: none; 133} 134 135.annotation-wrapper ::slotted(*) { 136 pointer-events: initial; 137} 138 139.annotation-wrapper.hide ::slotted(*) { 140 opacity: var(--min-hotspot-opacity, 0.25); 141} 142 143.slot.poster { 144 display: none; 145 background-color: inherit; 146} 147 148.slot.poster.show { 149 display: inherit; 150} 151 152.slot.poster > * { 153 pointer-events: initial; 154} 155 156.slot.poster:not(.show) > * { 157 pointer-events: none; 158} 159 160#default-poster { 161 width: 100%; 162 height: 100%; 163 /* The default poster is a <button> so we need to set display 164 * to prevent it from being affected by text-align: */ 165 display: block; 166 position: absolute; 167 border: none; 168 padding: 0; 169 background-size: contain; 170 background-repeat: no-repeat; 171 background-position: center; 172 background-color: #fff0; 173} 174 175#default-progress-bar { 176 display: block; 177 position: relative; 178 width: 100%; 179 height: 100%; 180 pointer-events: none; 181 overflow: hidden; 182} 183 184#default-progress-bar > .bar { 185 position: absolute; 186 top: 0; 187 left: 0; 188 width: 100%; 189 height: var(--progress-bar-height, 5px); 190 background-color: var(--progress-bar-color, rgba(0, 0, 0, 0.4)); 191 transition: transform 0.09s; 192 transform-origin: top left; 193 transform: scaleX(0); 194 overflow: hidden; 195} 196 197#default-progress-bar > .bar.hide { 198 transition: opacity 0.3s 1s; 199 opacity: 0; 200} 201 202.centered { 203 align-items: center; 204 justify-content: center; 205} 206 207.cover { 208 position: absolute; 209 top: 0; 210 left: 0; 211 width: 100%; 212 height: 100%; 213 pointer-events: none; 214} 215 216.slot.interaction-prompt { 217 display: var(--interaction-prompt-display, flex); 218 overflow: hidden; 219 opacity: 0; 220 will-change: opacity; 221 transition: opacity 0.3s; 222} 223 224.slot.interaction-prompt.visible { 225 opacity: 1; 226} 227 228.animated-container { 229 will-change: transform, opacity; 230 opacity: 0; 231 transition: opacity 0.3s; 232} 233 234.slot.interaction-prompt > * { 235 pointer-events: none; 236} 237 238.slot.ar-button { 239 -moz-user-select: none; 240 -webkit-tap-highlight-color: transparent; 241 user-select: none; 242 243 display: var(--ar-button-display, block); 244} 245 246.slot.ar-button:not(.enabled) { 247 display: none; 248} 249 250.fab { 251 display: flex; 252 align-items: center; 253 justify-content: center; 254 box-sizing: border-box; 255 width: 40px; 256 height: 40px; 257 cursor: pointer; 258 background-color: #fff; 259 box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.15); 260 border-radius: 100px; 261} 262 263.fab > * { 264 opacity: 0.87; 265} 266 267#default-ar-button { 268 position: absolute; 269 bottom: 16px; 270 right: 16px; 271 transform: scale(var(--ar-button-scale, 1)); 272 transform-origin: bottom right; 273} 274 275.slot.pan-target { 276 display: block; 277 position: absolute; 278 width: 0; 279 height: 0; 280 left: 50%; 281 top: 50%; 282 transform: translate3d(-50%, -50%, 0); 283 background-color: transparent; 284 opacity: 0; 285 transition: opacity 0.3s; 286} 287 288#default-pan-target { 289 width: 6px; 290 height: 6px; 291 border-radius: 6px; 292 border: 1px solid white; 293 box-shadow: 0px 0px 2px 1px rgba(0, 0, 0, 0.8); 294} 295 296.slot.default { 297 pointer-events: none; 298} 299 300.slot.progress-bar { 301 pointer-events: none; 302} 303 304.slot.exit-webxr-ar-button { 305 pointer-events: none; 306} 307 308.slot.exit-webxr-ar-button > slot, 309.slot.exit-webxr-ar-button ::slotted(*) { 310 pointer-events: auto; 311} 312 313.slot.exit-webxr-ar-button:not(.enabled) { 314 display: none; 315} 316 317#default-exit-webxr-ar-button { 318 pointer-events: auto; 319 display: flex; 320 align-items: center; 321 justify-content: center; 322 position: absolute; 323 top: env(safe-area-inset-top, 16px); 324 right: 16px; 325 width: 40px; 326 height: 40px; 327 box-sizing: border-box; 328} 329 330#default-exit-webxr-ar-button > svg { 331 fill: #fff; 332} 333</style> 334<div class="container"> 335 <div class="userInput" tabindex="0" role="img" 336 aria-label="3D model"> 337 <div class="slot canvas"> 338 <slot name="canvas"> 339 <canvas></canvas> 340 </slot> 341 </div> 342 343 </div> 344 345 <!-- NOTE(cdata): We need to wrap slots because browsers without ShadowDOM 346 will have their <slot> elements removed by ShadyCSS --> 347 <div class="slot poster"> 348 <slot name="poster"> 349 <button type="button" id="default-poster" aria-hidden="true" aria-label="Loading 3D model"></button> 350 </slot> 351 </div> 352 353 <div class="slot ar-button"> 354 <slot name="ar-button"> 355 <a id="default-ar-button" part="default-ar-button" class="fab" 356 tabindex="2" 357 role="button" 358 href="javascript:void(0);" 359 aria-label="View in your space"> 360 ${tM} 361 </a> 362 </slot> 363 </div> 364 365 <div class="slot pan-target"> 366 <slot name="pan-target"> 367 <div id="default-pan-target"> 368 </div> 369 </slot> 370 </div> 371 372 <div class="slot interaction-prompt cover centered"> 373 <div id="prompt" class="animated-container"> 374 <slot name="interaction-prompt" aria-hidden="true"> 375 ${tR} 376 </slot> 377 </div> 378 </div> 379 380 <div id="finger0" class="animated-container cover"> 381 <slot name="finger0" aria-hidden="true"> 382 </slot> 383 </div> 384 <div id="finger1" class="animated-container cover"> 385 <slot name="finger1" aria-hidden="true"> 386 </slot> 387 </div> 388 389 <div class="slot default"> 390 <slot></slot> 391 392 <div class="slot progress-bar"> 393 <slot name="progress-bar"> 394 <div id="default-progress-bar" aria-hidden="true"> 395 <div class="bar" part="default-progress-bar"></div> 396 </div> 397 </slot> 398 </div> 399 400 <div class="slot exit-webxr-ar-button"> 401 <slot name="exit-webxr-ar-button"> 402 <a id="default-exit-webxr-ar-button" part="default-exit-webxr-ar-button" 403 tabindex="3" 404 aria-label="Exit AR" 405 aria-hidden="true"> 406 ${tQ} 407 </a> 408 </slot> 409 </div> 410 </div> 411</div> 412<div class="screen-reader-only" role="region" aria-label="Live announcements"> 413 <span id="status" role="status"></span> 414</div>`;var tD=function(){var e,t=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]),i=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,7
4145,136,108,28,118,29,73,115]);if("object"!=typeof WebAssembly)return{supported:!1};var a=WebAssembly.validate(t)?s("
vendor: 12,698 bytes, line 414
414b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuec:q:6dkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:Ctklbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:2Pliur97eue978Jjjjjbc8W9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp: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:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskaipxFubbFubbFubbFubbgxpklbdnalTmbcbhvabhdinadczfgmampbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraipblbaDaopmlvorxmPsCXQL358E8Fp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgPp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;MeawaqawaPp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;
vendor: 5,509 bytes, line 414
4148qbbaiaxpkladnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraipblaaDaopmlvorxmPsCXQL358E8Fp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgPp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;MeawaqawaPp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:Iwllue97euo978Jjjjjbca9Rhidnaec98GglTmbcbhvabhoinaocKfpx:ji:1S:ji:1S:ji:1S:ji:1SaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkpxibbbibbbibbbibbbp9qgxp;6ep;Negmaxaxp:1ep;7egxaxp;KearaDpmbediwDqkzHOAKY8AEgxczp:Reczp:Sep;6egrarp;Meaxczp:Sep;6egDaDp;Meaqczp:Reczp:Sep;6egqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gxp;KepxFFbbFFbbFFbbFFbbgPp9oamaDp;Meaxp;Keczp:Rep9qgDamarp;Meaxp;KeaPp9oamaqp;Meaxp;Keczp:Rep9qgxpmwDKYqk8AExm35Ps8E8Fgrp5eakclp:RegmpEi:T:j83ibawarp5bampEd:T:j83ibaocwfaDaxpmbezHdiOAlvCXorQLgxp5eampEe:T:j83ibaoaxp5bampEb:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgmpklbaiampklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaipx:ji:1S:ji:1S:ji:1S:ji:1SaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkpxibbbibbbibbbibbbp9qgxp;6ep;Negmaxaxp:1ep;7egxaxp;KearaDpmbediwDqkzHOAKY8AEgxczp:Reczp:Sep;6egrarp;Meaxczp:Sep;6egDaDp;Meaqczp:Reczp:Sep;6egqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gxp;KepxFFbbFFbbFFbbFFbbgPp9oamaDp;Meaxp;Keczp:Rep9qgDamarp;Meaxp;KeaPp9oamaqp;Meaxp;Keczp:Rep9qgxpmwDKYqk8AExm35Ps8E8Fgrp5eakclp:RegmpEi:T:j83iKaiarp5bampEd:T:j83izaiaDaxpmbezHdiOAlvCXorQLgxp5eampEe:T:j83iwaiaxp5bampEb:T:j83ibkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk:CPvdue97euw97eu8Jjjjjbc8W9Rhiaec98Ghldndnadcl9hmbaipxbbbbbbbbbbbbbbbbgvpklbdnalTmbcbhoabhdinadpbbbhradpxbbuJbbuJbbuJbbuJaipblbarcKp:Tep9qgwcep:Seawp9qgDcdp:SeaDp9qgDclp:SeaDp9qgqp;6ep;NegDarcwp:RecKp:SegkarpxFbbbFbbbFbbbFbbbgxp9ogmp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gPp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oaDamakp:Xearczp:RecKp:Segrp:Uep;6ep;MeaPp;Keaxp9op9qaDamakarp:Uep:Xep;6ep;MeaPp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qaDaqawcep:Rep9oawpxebbbebbbebbbebbbp9op9qp;6ep;MeaPp;KecKp:Rep9qpkbbadczfhdaoclfgoal6mbkkalaeSmeaiavpklaaicafabalcdtfgdaeciGglcdtgo;8qbbaiavpklbdnalTmbaipblahraipxbbuJbbuJbbuJbbuJaipblbarcKp:Tep9qgwcep:Seawp9qgDcdp:SeaDp9qgDclp:SeaDp9qgqp;6ep;NegDarcwp:RecKp:SegkarpxFbbbFbbbFbbbFbbbgxp9ogmp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gPp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oaDamakp:Xearczp:RecKp:Segrp:Uep;6ep;MeaPp;Keaxp9op9qaDamakarp:Uep:Xep;6ep;MeaPp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qaDaqawcep:Rep9oawpxebbbebbbebbbebbbp9op9qp;6ep;MeaPp;KecKp:Rep9qpklakadaicafao;8qbbskaipxbbbbbbbbbbbbbbbbgvpklbdnalTmbcbhoabhdinadczfgspxbFu9hbFu9hbFu9hbFu9hadpbbbgDaspbbbgPpmlvorxmPsCXQL358E8Fgmczp:Teaipblbp9qgrcep:Searp9qgwcdp:Seawp9qgwclp:Seawp9qgwcwp:Seawp9qgqp;6ep;NegwaDaPpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbgPp9ogkaDczp:Segxp:Ueamczp:Reczp:Segmp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gDp;KeaPp9oawakaxamp:Uep:Xep;6ep;MeaDp;Keczp:Rep9qgxawaqarcep:Rep9oarpxebbbebbbebbbebbbp9op9qp;6ep;MeaDp;Keczp:Reawamakp:Uep;6ep;MeaDp;KeaPp9op9qgrpmwDKYqk8AExm35Ps8E8FpkbbadaxarpmbezHdiOAlvCXorQLpkbbadcafhdaoclfgoal6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgrpklbaiarpklbaiabalcitfgdaeciGglcitgo;8qbbaiavpkladnalTmbaipxbFu9hbFu9hbFu9hbFu9haipblbgDaipblzgPpmlvorxmPsCXQL358E8Fgmczp:Teaipblap9qgrcep:Searp9qgwcdp:Seawp9qgwclp:Seawp9qgwcwp:Seawp9qgqp;6ep;NegwaDaPpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbgPp9ogkaDczp:Segxp:Ueamczp:Reczp:Segmp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gDp;KeaPp9oawakaxamp:Uep:Xep;6ep;MeaDp;Keczp:Rep9qgxawaqarcep:Rep9oarpxebbbebbbebbbebbbp9op9qp;6ep;MeaDp;Keczp:Reawamakp:Uep;6ep;MeaDp;KeaPp9op9qgrpmwDKYqk8AExm35Ps8E8FpklzaiaxarpmbezHdiOAlvCXorQLpklbkadaiao;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb"):s("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuec:W:Odkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq;lZkdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7f
vendor: 8,168 bytes, line 414
414cbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk: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::ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxabaiarcefciGfcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGfgkcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabaiarcufciGfcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkabakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb
414"),r=WebAssembly.instantiate(a,{}).then(function(t){(e=t.instance).exports.__wasm_call_ctors()});function s(e){for(var t=new Uint8Array(e.length),a=0;a<e.length;++a){var r=e.charCodeAt(a);t[a]=r>96?r-97:r>64?r-39:r+4}for(var s=0,a=0;a<e.length;++a)t[s++]=t[a]<60?i[t[a]]:(t[a]-60)*64+t[++a];return t.buffer.slice(0,s)}function n(e,t,i,a,r,s,n){var o=e.exports.sbrk,A=a+3&-4,l=o(A*r),h=o(s.length),c=new Uint8Array(e.exports.memory.buffer);c.set(s,h);var d=t(l,a,r,h,s.length);if(0==d&&n&&n(l,A,r),i.set(c.subarray(l,l+a*r)),o(l-o(0)),0!=d)throw Error("Malformed buffer data: "+d)}var o={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp",COLOR:"meshopt_decodeFilterColor"},A={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},l=[],h=0;function c(e){var t=e.data;if(!t.id)return self.close();self.ready.then(function(e){try{var i=new Uint8Array(t.count*t.size);n(e,e.exports[t.mode],i,t.count,t.size,t.source,e.exports[t.filter]),self.postMessage({id:t.id,count:t.count,action:"resolve",value:i},[i.buffer])}catch(e){self.postMessage({id:t.id,count:t.count,action:"reject",value:e})}})}return{ready:r,supported:!0,useWorkers:function(e){for(var t=new Blob(["self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(a)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+c.name+";"+n.toString()+c.toString()],{type:"text/javascript"}),i=URL.createObjectURL(t),r=l.length;r<e;++r)l[r]=function(e){var t={object:new Worker(e),pending:0,requests:{}};return t.object.onmessage=function(e){var i=e.data;t.pending-=i.count,t.requests[i.id][i.action](i.value),delete t.requests[i.id]},t}(i);for(var r=e;r<l.length;++r)l[r].object.postMessage({});l.length=e,URL.revokeObjectURL(i)},decodeVertexBuffer:function(t,i,a,r,s){n(e,e.exports.meshopt_decodeVertexBuffer,t,i,a,r,e.exports[o[s]])},decodeIndexBuffer:function(t,i,a,r){n(e,e.exports.meshopt_decodeIndexBuffer,t,i,a,r)},decodeIndexSequence:function(t,i,a,r){n(e,e.exports.meshopt_decodeIndexSequence,t,i,a,r)},decodeGltfBuffer:function(t,i,a,r,s,l){n(e,e.exports[A[s]],t,i,a,r,e.exports[o[l]])},decodeGltfBufferAsync:function(t,i,a,s,c){return l.length>0?function(e,t,i,a,r){for(var s=l[0],n=1;n<l.length;++n)l[n].pending<s.pending&&(s=l[n]);return new Promise(function(n,o){var A=new Uint8Array(i),l=++h;s.pending+=e,s.requests[l]={resolve:n,reject:o},s.object.postMessage({id:l,count:e,size:t,source:A,mode:a,filter:r},[A.buffer])})}
414(t,i,a,A[s],o[c]):r.then(function(){var r=new Uint8Array(t*i);return n(e,e.exports[A[s]],r,t,i,a,e.exports[o[c]]),r})}}}();let tk=new WeakMap;class tF extends tr.aHM{constructor(e){super(e),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(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,i,a){let r=new tr.Y9S(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(e,e=>{this.parse(e,t,a)},i,a)}parse(e,t,i=()=>{}){this.decodeDracoFile(e,t,null,null,tr.er$,i).catch(i)}decodeDracoFile(e,t,i,a,r=tr.Zr2,s=()=>{}){let n={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:a||this.defaultAttributeTypes,useUniqueIDs:!!i,vertexColorSpace:r};return this.decodeGeometry(e,n).then(t).catch(s)}decodeGeometry(e,t){let i,a=JSON.stringify(t);if(tk.has(e)){let t=tk.get(e);if(t.key===a)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let r=this.workerNextTaskID++,s=e.byteLength,n=this._getWorker(r,s).then(a=>(i=a,new Promise((a,s)=>{i._callbacks[r]={resolve:a,reject:s},i.postMessage({type:"decode",id:r,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return n.catch(()=>!0).then(()=>{i&&r&&this._releaseTask(i,r)}),tk.set(e,{key:a,promise:n}),n}_createGeometry(e){let t=new tr.LoY;e.index&&t.setIndex(new tr.THS(e.index.array,1));for(let i=0;i<e.attributes.length;i++){let a,{name:r,array:s,itemSize:n,stride:o,vertexColorSpace:A}=e.attributes[i];if(n===o)a=new tr.THS(s,n);else{let e=new tr.eB$(s,o);a=new tr.eHs(e,n,0)}"color"===r&&(this._assignVertexColorSpace(a,A),a.normalized=s instanceof Float32Array==!1),t.setAttribute(r,a)}return t}_assignVertexColorSpace(e,t){if(t!==tr.er$)return;let i=new tr.Q1f;for(let t=0,a=e.count;t<a;t++)i.fromBufferAttribute(e,t),tr.ppV.colorSpaceToWorking(i,tr.er$),e.setXYZ(t,i.r,i.g,i.b)}_loadLibrary(e,t){let i=new tr.Y9S(this.manager);return i.setPath(this.decoderPath),i.setResponseType(t),i.setWithCredentials(this.withCredentials),new Promise((t,a)=>{i.load(e,t,void 0,a)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let i=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let a=tL.toString(),r=["/* draco decoder */",i,"\n/* worker */",a.substring(a.indexOf("{")+1,a.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([r]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){let i=t.data;switch(i.type){case"decode":e._callbacks[i.id].resolve(i);break;case"error":e._callbacks[i.id].reject(i);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+i.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let i=this.workerPool[this.workerPool.length-1];return i._taskCosts[e]=t,i._taskLoad+=t,i})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,""!==this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),this}}function tL(){let e,t;onmessage=function(i){let a=i.data;switch(a.type){case"init":e=a.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let r=a.buffer,s=a.taskConfig;t.then(e=>{let t=e.draco,i=new t.Decoder;try{let e=function(e,t,i,a){let r,s,n=a.attributeIDs,o=a.attributeTypes,A=t.GetEncodedGeometryType(i);if(A===e.TRIANGULAR_MESH)r=new e.Mesh,s=t.DecodeArrayToMesh(i,i.byteLength,r);else if(A===e.POINT_CLOUD)r=new e.PointCloud,s=t.DecodeArrayToPointCloud(i,i.byteLength,r);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!s.ok()||0===r.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+s.error_msg());let l={index:null,attributes:[]};for(let i in n){let s,A,h=self[o[i]];if(a.useUniqueIDs)A=n[i],s=t.GetAttributeByUniqueId(r,A);else{if(-1===(A=t.GetAttributeId(r,e[n[i]])))continue;s=t.GetAttribute(r,A)}let c=function(e,t,i,a,r,s){let n,o=i.num_points(),A=s.num_components(),l=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,r),h=A*r.BYTES_PER_ELEMENT,c=4*Math.ceil(h/4),d=c/r.BYTES_PER_ELEMENT,g=o*h,u=e._malloc(g);t.GetAttributeDataArrayForAllPoints(i,s,l,g,u);let p=new r(e.HEAPF32.buffer,u,g/r.BYTES_PER_ELEMENT);if(h===c)n=p.slice();else{n=new r(o*c/r.BYTES_PER_ELEMENT);let e=0;for(let t=0,i=p.length;t<i;t++){for(let i=0;i<A;i++)n[e+i]=p[t*A+i];e+=d}}return e._free(u),{name:a,count:o,itemSize:A,array:n,stride:d}}(e,t,r,i,h,s);
414"color"===i&&(c.vertexColorSpace=a.vertexColorSpace),l.attributes.push(c)}return A===e.TRIANGULAR_MESH&&(l.index=function(e,t,i){let a=3*i.num_faces(),r=4*a,s=e._malloc(r);t.GetTrianglesUInt32Array(i,r,s);let n=new Uint32Array(e.HEAPF32.buffer,s,a).slice();return e._free(s),{array:n,itemSize:1}}(e,t,r)),e.destroy(r),l}(t,i,new Int8Array(r),s),n=e.attributes.map(e=>e.array.buffer);e.index&&n.push(e.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:e},n)}catch(e){console.error(e),self.postMessage({type:"error",id:a.id,error:e.message})}finally{t.destroy(i)}})}}}function tP(e,t){if(t===tr.RJ4)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==tr.rYR&&t!==tr.O49)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let i=e.getIndex();if(null===i){let t=[],a=e.getAttribute("position");if(void 0===a)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<a.count;e++)t.push(e);e.setIndex(t),i=e.getIndex()}let a=i.count-2,r=[];if(t===tr.rYR)for(let e=1;e<=a;e++)r.push(i.getX(0)),r.push(i.getX(e)),r.push(i.getX(e+1));else for(let e=0;e<a;e++)e%2==0?(r.push(i.getX(e)),r.push(i.getX(e+1)),r.push(i.getX(e+2))):(r.push(i.getX(e+2)),r.push(i.getX(e+1)),r.push(i.getX(e)));r.length/3!==a&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let s=e.clone();return s.setIndex(r),s.clearGroups(),s}}function tU(e){let t=new Map,i=new Map,a=e.clone();return function e(t,i,a){a(t,i);for(let r=0;r<t.children.length;r++)e(t.children[r],i.children[r],a)}(e,a,function(e,a){t.set(a,e),i.set(e,a)}),a.traverse(function(e){if(!e.isSkinnedMesh)return;let a=t.get(e),r=a.skeleton.bones;e.skeleton=a.skeleton.clone(),e.bindMatrix.copy(a.bindMatrix),e.skeleton.bones=r.map(function(e){return i.get(e)}),e.bind(e.skeleton,e.bindMatrix)}),a}class t_ extends tr.aHM{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new tz(e)}),this.register(function(e){return new tK(e)}),this.register(function(e){return new t1(e)}),this.register(function(e){return new t2(e)}),this.register(function(e){return new t8(e)}),this.register(function(e){return new tJ(e)}),this.register(function(e){return new tY(e)}),this.register(function(e){return new tW(e)}),this.register(function(e){return new t$(e)}),this.register(function(e){return new tj(e)}),this.register(function(e){return new tX(e)}),this.register(function(e){return new tV(e)}),this.register(function(e){return new t0(e)}),this.register(function(e){return new tZ(e)}),this.register(function(e){return new tq(e)}),this.register(function(e){return new t9(e,tG.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new t9(e,tG.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new t3(e)})}load(e,t,i,a){let r,s=this;if(""!==this.resourcePath)r=this.resourcePath;else if(""!==this.path){let t=tr.r6x.extractUrlBase(e);r=tr.r6x.resolveURL(t,this.path)}else r=tr.r6x.extractUrlBase(e);this.manager.itemStart(e);let n=function(t){a?a(t):console.error(t),s.manager.itemError(e),s.manager.itemEnd(e)},o=new tr.Y9S(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(i){try{s.parse(i,r,function(i){t(i),s.manager.itemEnd(e)},n)}catch(e){n(e)}},i,n)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,i,a){let r,s={},n={},o=new TextDecoder;if("string"==typeof e)r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(o.decode(new Uint8Array(e,0,4))===t4){try{s[tG.KHR_BINARY_GLTF]=new t6(e)}catch(e){a&&a(e);return}r=JSON.parse(s[tG.KHR_BINARY_GLTF].content)}else r=JSON.parse(o.decode(e));else r=e;if(void 0===r.asset||r.asset.version[0]<2){a&&a(Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let A=new iC(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});A.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](A);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),n[t.name]=t,s[t.name]=!0}if(r.extensionsUsed)for(let e=0;e<r.extensionsUsed.length;++e){let t=r.extensionsUsed[e],i=r.extensionsRequired||[];switch(t){case tG.KHR_MATERIALS_UNLIT:s[t]=new tH;break;case tG.KHR_DRACO_MESH_COMPRESSION:s[t]=new t7(r,this.dracoLoader);break;case tG.KHR_TEXTURE_TRANSFORM:s[t]=new ie;break;case tG.KHR_MESH_QUANTIZATION:s[t]=new it;break;default:i.indexOf(t)>=0&&void 0===n[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}A.setExtensions(s),A.setPlugins(n),A.parse(i,a)}parseAsync(e,t){let i=this;return new Promise(function(a,r){i.parse(e,t,a,r)})}}function tN(){let e={};return{get:function(t){return e[t]},add:function(t,i){e[t]=i},remove:function(t){delete e[t]},removeAll:function(){e={}}}}function tO(e,t,i){let a=e.json.materials[t];return a.extensions&&a.extensions[i]?a.extensions[i]:null}let tG={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",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class tq{constructor(e){this.parser=e,this.name=tG.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let i=0,a=t.length;i<a;i++){let a=t[i];a.extensions&&a.extensions[this.name]&&void 0!==a.extensions[this.name].light&&e._addNodeRef(this.cache,a.extensions[this.name].light)}}_loadLight(e){let t,i=this.parser,a="light:"+e,r=i.cache.get(a);if(r)return r;let s=i.json,n=((s.extensions&&s.extensions[this.name]||{}).lights||[])[e],o=new tr.Q1f(0xffffff);
414void 0!==n.color&&o.setRGB(n.color[0],n.color[1],n.color[2],tr.Zr2);let A=void 0!==n.range?n.range:0;switch(n.type){case"directional":(t=new tr.ZyN(o)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new tr.HiM(o)).distance=A;break;case"spot":(t=new tr.nCl(o)).distance=A,n.spot=n.spot||{},n.spot.innerConeAngle=void 0!==n.spot.innerConeAngle?n.spot.innerConeAngle:0,n.spot.outerConeAngle=void 0!==n.spot.outerConeAngle?n.spot.outerConeAngle:Math.PI/4,t.angle=n.spot.outerConeAngle,t.penumbra=1-n.spot.innerConeAngle/n.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw Error("THREE.GLTFLoader: Unexpected light type: "+n.type)}return t.position.set(0,0,0),im(t,n),void 0!==n.intensity&&(t.intensity=n.intensity),t.name=i.createUniqueName(n.name||"light_"+e),r=Promise.resolve(t),i.cache.add(a,r),r}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){let t=this,i=this.parser,a=i.json.nodes[e],r=(a.extensions&&a.extensions[this.name]||{}).light;return void 0===r?null:this._loadLight(r).then(function(e){return i._getNodeRef(t.cache,r,e)})}}class tH{constructor(){this.name=tG.KHR_MATERIALS_UNLIT}getMaterialType(){return tr.V9B}extendParams(e,t,i){let a=[];e.color=new tr.Q1f(1,1,1),e.opacity=1;let r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){let t=r.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],tr.Zr2),e.opacity=t[3]}void 0!==r.baseColorTexture&&a.push(i.assignTexture(e,"map",r.baseColorTexture,tr.er$))}return Promise.all(a)}}class tj{constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);return null===i||void 0!==i.emissiveStrength&&(t.emissiveIntensity=i.emissiveStrength),Promise.resolve()}}class tz{constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);if(null===i)return Promise.resolve();let a=[];if(void 0!==i.clearcoatFactor&&(t.clearcoat=i.clearcoatFactor),void 0!==i.clearcoatTexture&&a.push(this.parser.assignTexture(t,"clearcoatMap",i.clearcoatTexture)),void 0!==i.clearcoatRoughnessFactor&&(t.clearcoatRoughness=i.clearcoatRoughnessFactor),void 0!==i.clearcoatRoughnessTexture&&a.push(this.parser.assignTexture(t,"clearcoatRoughnessMap",i.clearcoatRoughnessTexture)),void 0!==i.clearcoatNormalTexture&&(a.push(this.parser.assignTexture(t,"clearcoatNormalMap",i.clearcoatNormalTexture)),void 0!==i.clearcoatNormalTexture.scale)){let e=i.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new tr.I9Y(e,e)}return Promise.all(a)}}class tK{constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_DISPERSION}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);return null===i||(t.dispersion=void 0!==i.dispersion?i.dispersion:0),Promise.resolve()}}class tV{constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);if(null===i)return Promise.resolve();let a=[];return void 0!==i.iridescenceFactor&&(t.iridescence=i.iridescenceFactor),void 0!==i.iridescenceTexture&&a.push(this.parser.assignTexture(t,"iridescenceMap",i.iridescenceTexture)),void 0!==i.iridescenceIor&&(t.iridescenceIOR=i.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==i.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=i.iridescenceThicknessMinimum),void 0!==i.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=i.iridescenceThicknessMaximum),void 0!==i.iridescenceThicknessTexture&&a.push(this.parser.assignTexture(t,"iridescenceThicknessMap",i.iridescenceThicknessTexture)),Promise.all(a)}}class tJ{constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_SHEEN}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);if(null===i)return Promise.resolve();let a=[];if(t.sheenColor=new tr.Q1f(0,0,0),t.sheenRoughness=0,t.sheen=1,void 0!==i.sheenColorFactor){let e=i.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],tr.Zr2)}return void 0!==i.sheenRoughnessFactor&&(t.sheenRoughness=i.sheenRoughnessFactor),void 0!==i.sheenColorTexture&&a.push(this.parser.assignTexture(t,"sheenColorMap",i.sheenColorTexture,tr.er$)),void 0!==i.sheenRoughnessTexture&&a.push(this.parser.assignTexture(t,"sheenRoughnessMap",i.sheenRoughnessTexture)),Promise.all(a)}}class tY{constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);if(null===i)return Promise.resolve();let a=[];return void 0!==i.transmissionFactor&&(t.transmission=i.transmissionFactor),void 0!==i.transmissionTexture&&a.push(this.parser.assignTexture(t,"transmissionMap",i.transmissionTexture)),Promise.all(a)}}class tW{constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_VOLUME}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);if(null===i)return Promise.resolve();let a=[];t.thickness=void 0!==i.thicknessFactor?i.thicknessFactor:0,void 0!==i.thicknessTexture&&a.push(this.parser.assignTexture(t,"thicknessMap",i.thicknessTexture)),t.attenuationDistance=i.attenuationDistance||1/0;let r=i.attenuationColor||[1,1,1];return t.attenuationColor=new tr.Q1f().setRGB(r[0],r[1],r[2],tr.Zr2),Promise.all(a)}}class t${constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_IOR}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);return null===i||(t.ior=void 0!==i.ior?i.ior:1.5),Promise.resolve()}}class tX{constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_SPECULAR}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);if(null===i)return Promise.resolve();let a=[];t.specularIntensity=void 0!==i.specularFactor?i.specularFactor:1,void 0!==i.specularTexture&&a.push(this.parser.assignTexture(t,"specularIntensityMap",i.specularTexture));let r=i.specularColorFactor||[1,1,1];return t.specularColor=new tr.Q1f().setRGB(r[0],r[1],r[2],tr.Zr2),void 0!==i.specularColorTexture&&a.push(this.parser.assignTexture(t,"specularColorMap",i.specularColorTexture,tr.er$)),Promise.all(a)}}class tZ{constructor(e){this.parser=e,this.name=tG.EXT_MATERIALS_BUMP}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);if(null===i)return Promise.resolve();let a=[];return t.bumpScale=void 0!==i.bumpFactor?i.bumpFactor:1,void 0!==i.bumpTexture&&a.push(this.parser.assignTexture(t,"bumpMap",i.bumpTexture)),Promise.all(a)}}class t0{constructor(e){this.parser=e,this.name=tG.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return null!==tO(this.parser,e,this.name)?tr.uSd:null}extendMaterialParams(e,t){let i=tO(this.parser,e,this.name);if(null===i)return Promise.resolve();let a=[];return void 0!==i.anisotropyStrength&&(t.anisotropy=i.anisotropyStrength),void 0!==i.anisotropyRotation&&(t.anisotropyRotation=i.anisotropyRotation),void 0!==i.anisotropyTexture&&a.push(this.parser.assignTexture(t,"anisotropyMap",i.anisotropyTexture)),Promise.all(a)}}class t1{constructor(e){this.parser=e,this.name=tG.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,i=t.json,a=i.textures[e];if(!a.extensions||!a.extensions[this.name])return null;let r=a.extensions[this.name],s=t.options.ktx2Loader;if(!s)if(!(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,r.source,s)}}class t2{constructor(e){this.parser=e,this.name=tG.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,i=this.parser,a=i.json,r=a.textures[e];if(!r.extensions||!r.extensions[t])return null;let s=r.extensions[t],n=a.images[s.source],o=i.textureLoader;if(n.uri){let e=i.options.manager.getHandler(n.uri);null!==e&&(o=e)}return i.loadTextureImage(e,s.source,o)}}class t8{constructor(e){this.parser=e,this.name=tG.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,i=this.parser,a=i.json,r=a.textures[e];if(!r.extensions||!r.extensions[t])return null;let s=r.extensions[t],n=a.images[s.source],o=i.textureLoader;if(n.uri){let e=i.options.manager.getHandler(n.uri);null!==e&&(o=e)}return i.loadTextureImage(e,s.source,o)}}class t9{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,i=t.bufferViews[e];if(!i.extensions||!i.extensions[this.name])return null;{let e=i.extensions[this.name],a=this.parser.getDependency("buffer",e.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return a.then(function(t){let i=e.byteOffset||0,a=e.byteLength||0,s=e.count,n=e.byteStride,o=new Uint8Array(t,i,a);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(s,n,o,e.mode,e.filter).then(function(e){return e.buffer}):r.ready.then(function(){let t=new ArrayBuffer(s*n);return r.decodeGltfBuffer(new Uint8Array(t),s,n,o,e.mode,e.filter),t})})}}}class t3{constructor(e){this.name=tG.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||void 0===i.mesh)return null;for(let e of t.meshes[i.mesh].primitives)if(e.mode!==is.TRIANGLES&&e.mode!==is.TRIANGLE_STRIP&&e.mode!==is.TRIANGLE_FAN&&void 0!==e.mode)return null;let a=i.extensions[this.name].attributes,r=[],s={};for(let e in a)r.push(this.parser.getDependency("accessor",a[e]).then(t=>(s[e]=t,s[e])));return r.length<1?null:(r.push(this.parser.createNodeMesh(e)),Promise.all(r).then(e=>{let t=e.pop(),i=t.isGroup?t.children:[t],a=e[0].count,r=[];for(let e of i){let t=new tr.kn4,i=new tr.Pq0,n=new tr.PTz,o=new tr.Pq0(1,
4141,1),A=new tr.ZLX(e.geometry,e.material,a);for(let e=0;e<a;e++)s.TRANSLATION&&i.fromBufferAttribute(s.TRANSLATION,e),s.ROTATION&&n.fromBufferAttribute(s.ROTATION,e),s.SCALE&&o.fromBufferAttribute(s.SCALE,e),A.setMatrixAt(e,t.compose(i,n,o));for(let t in s)if("_COLOR_0"===t){let e=s[t];A.instanceColor=new tr.uWO(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,s[t]);tr.B69.prototype.copy.call(A,e),this.parser.assignFinalMaterial(A),r.push(A)}return t.isGroup?(t.clear(),t.add(...r),t):r[0]}))}}let t4="glTF",t5={JSON:0x4e4f534a,BIN:5130562};class t6{constructor(e){this.name=tG.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,12),i=new TextDecoder;if(this.header={magic:i.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==t4)throw Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw Error("THREE.GLTFLoader: Legacy binary file detected.");let a=this.header.length-12,r=new DataView(e,12),s=0;for(;s<a;){let t=r.getUint32(s,!0);s+=4;let a=r.getUint32(s,!0);if(s+=4,a===t5.JSON){let a=new Uint8Array(e,12+s,t);this.content=i.decode(a)}else if(a===t5.BIN){let i=12+s;this.body=e.slice(i,i+t)}s+=t}if(null===this.content)throw Error("THREE.GLTFLoader: JSON content not found.")}}class t7{constructor(e,t){if(!t)throw Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=tG.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let i=this.json,a=this.dracoLoader,r=e.extensions[this.name].bufferView,s=e.extensions[this.name].attributes,n={},o={},A={};for(let e in s)n[ic[e]||e.toLowerCase()]=s[e];for(let t in e.attributes){let a=ic[t]||t.toLowerCase();if(void 0!==s[t]){let r=i.accessors[e.attributes[t]],s=io[r.componentType];A[a]=s.name,o[a]=!0===r.normalized}}return t.getDependency("bufferView",r).then(function(e){return new Promise(function(t,i){a.decodeDracoFile(e,function(e){for(let t in e.attributes){let i=e.attributes[t],a=o[t];void 0!==a&&(i.normalized=a)}t(e)},n,A,tr.Zr2,i)})})}}class ie{constructor(){this.name=tG.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(void 0===t.texCoord||t.texCoord===e.channel)&&void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class it{constructor(){this.name=tG.KHR_MESH_QUANTIZATION}}class ii extends tr.lGw{constructor(e,t,i,a){super(e,t,i,a)}copySampleValue_(e){let t=this.resultBuffer,i=this.sampleValues,a=this.valueSize,r=e*a*3+a;for(let e=0;e!==a;e++)t[e]=i[r+e];return t}interpolate_(e,t,i,a){let r=this.resultBuffer,s=this.sampleValues,n=this.valueSize,o=2*n,A=3*n,l=a-t,h=(i-t)/l,c=h*h,d=c*h,g=e*A,u=g-A,p=-2*d+3*c,f=d-c,m=1-p,b=f-c+h;for(let e=0;e!==n;e++){let t=s[u+e+n],i=s[u+e+o]*l,a=s[g+e+n],A=s[g+e]*l;r[e]=m*t+b*i+p*a+f*A}return r}}let ia=new tr.PTz;class ir extends ii{interpolate_(e,t,i,a){let r=super.interpolate_(e,t,i,a);return ia.fromArray(r).normalize().toArray(r),r}}let is={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},io={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},iA={9728:tr.hxR,9729:tr.k6q,9984:tr.pHI,9985:tr.kRr,9986:tr.Cfg,9987:tr.$_I},il={33071:tr.ghU,33648:tr.kTW,10497:tr.GJx},ih={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ic={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},id={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},ig={CUBICSPLINE:void 0,LINEAR:tr.PJ3,STEP:tr.ljd},iu={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function ip(e,t,i){for(let a in i.extensions)void 0===e[a]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[a]=i.extensions[a])}function im(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function ib(e){let t="",i=Object.keys(e).sort();for(let a=0,r=i.length;a<r;a++)t+=i[a]+":"+e[i[a]]+";";return t}function iE(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}let iI=new tr.kn4;class iC{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new tN,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 i=!1,a=-1,r=!1,s=-1;if("undefined"!=typeof navigator&&void 0!==navigator.userAgent){let e=navigator.userAgent;i=!0===/^((?!chrome|android).)*safari/i.test(e);let t=e.match(/Version\/(\d+)/);a=i&&t?parseInt(t[1],10):-1,s=(r=e.indexOf("Firefox")>-1)?e.match(/Firefox\/([0-9]+)\./)[1]:-1}"undefined"==typeof createImageBitmap||i&&a<17||r&&s<98?this.textureLoader=new tr.Tap(this.options.manager):this.textureLoader=new tr.Kzg(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new tr.Y9S(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let i=this,a=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()}
414)).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(t){let s={scene:t[0][a.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:a.asset,parser:i,userData:{}};return ip(r,s,a),im(s,a),Promise.all(i._invokeAll(function(e){return e.afterRoot&&e.afterRoot(s)})).then(function(){for(let e of s.scenes)e.updateMatrixWorld();e(s)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let i=0,a=t.length;i<a;i++){let a=t[i].joints;for(let t=0,i=a.length;t<i;t++)e[a[t]].isBone=!0}for(let t=0,a=e.length;t<a;t++){let a=e[t];void 0!==a.mesh&&(this._addNodeRef(this.meshCache,a.mesh),void 0!==a.skin&&(i[a.mesh].isSkinnedMesh=!0)),void 0!==a.camera&&this._addNodeRef(this.cameraCache,a.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,i){if(e.refs[t]<=1)return i;let a=i.clone(),r=(e,t)=>{let i=this.associations.get(e);for(let[a,s]of(null!=i&&this.associations.set(t,i),e.children.entries()))r(s,t.children[a])};return r(i,a),a.name+="_instance_"+e.uses[t]++,a}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let i=0;i<t.length;i++){let a=e(t[i]);if(a)return a}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let i=[];for(let a=0;a<t.length;a++){let r=e(t[a]);r&&i.push(r)}return i}getDependency(e,t){let i=e+":"+t,a=this.cache.get(i);if(!a){switch(e){case"scene":a=this.loadScene(t);break;case"node":a=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":a=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":a=this.loadAccessor(t);break;case"bufferView":a=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":a=this.loadBuffer(t);break;case"material":a=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":a=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":a=this.loadSkin(t);break;case"animation":a=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":a=this.loadCamera(t);break;default:if(!(a=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(e,t)})))throw Error("Unknown type: "+e)}this.cache.add(i,a)}return a}getDependencies(e){let t=this.cache.get(e);if(!t){let i=this;t=Promise.all((this.json[e+("mesh"===e?"es":"s")]||[]).map(function(t,a){return i.getDependency(e,a)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],i=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[tG.KHR_BINARY_GLTF].body);let a=this.options;return new Promise(function(e,r){i.load(tr.r6x.resolveURL(t.uri,a.path),e,void 0,function(){r(Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){let i=t.byteLength||0,a=t.byteOffset||0;return e.slice(a,a+i)})}loadAccessor(e){let t=this,i=this.json,a=this.json.accessors[e];if(void 0===a.bufferView&&void 0===a.sparse){let e=ih[a.type],t=io[a.componentType],i=!0===a.normalized,r=new t(a.count*e);return Promise.resolve(new tr.THS(r,e,i))}let r=[];return void 0!==a.bufferView?r.push(this.getDependency("bufferView",a.bufferView)):r.push(null),void 0!==a.sparse&&(r.push(this.getDependency("bufferView",a.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",a.sparse.values.bufferView))),Promise.all(r).then(function(e){let r,s,n=e[0],o=ih[a.type],A=io[a.componentType],l=A.BYTES_PER_ELEMENT,h=l*o,c=a.byteOffset||0,d=void 0!==a.bufferView?i.bufferViews[a.bufferView].byteStride:void 0,g=!0===a.normalized;if(d&&d!==h){let e=Math.floor(c/d),i="InterleavedBuffer:"+a.bufferView+":"+a.componentType+":"+e+":"+a.count,h=t.cache.get(i);h||(r=new A(n,e*d,a.count*d/l),h=new tr.eB$(r,d/l),t.cache.add(i,h)),s=new tr.eHs(h,o,c%d/l,g)}else r=null===n?new A(a.count*o):new A(n,c,a.count*o),s=new tr.THS(r,o,g);
414if(void 0!==a.sparse){let t=ih.SCALAR,i=io[a.sparse.indices.componentType],r=a.sparse.indices.byteOffset||0,l=a.sparse.values.byteOffset||0,h=new i(e[1],r,a.sparse.count*t),c=new A(e[2],l,a.sparse.count*o);null!==n&&(s=new tr.THS(s.array.slice(),s.itemSize,s.normalized)),s.normalized=!1;for(let e=0,t=h.length;e<t;e++){let t=h[e];if(s.setX(t,c[e*o]),o>=2&&s.setY(t,c[e*o+1]),o>=3&&s.setZ(t,c[e*o+2]),o>=4&&s.setW(t,c[e*o+3]),o>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}s.normalized=g}return s})}loadTexture(e){let t=this.json,i=this.options,a=t.textures[e].source,r=t.images[a],s=this.textureLoader;if(r.uri){let e=i.manager.getHandler(r.uri);null!==e&&(s=e)}return this.loadTextureImage(e,a,s)}loadTextureImage(e,t,i){let a=this,r=this.json,s=r.textures[e],n=r.images[t],o=(n.uri||n.bufferView)+":"+s.sampler;if(this.textureCache[o])return this.textureCache[o];let A=this.loadImageSource(t,i).then(function(t){t.flipY=!1,t.name=s.name||n.name||"",""===t.name&&"string"==typeof n.uri&&!1===n.uri.startsWith("data:image/")&&(t.name=n.uri);let i=(r.samplers||{})[s.sampler]||{};return t.magFilter=iA[i.magFilter]||tr.k6q,t.minFilter=iA[i.minFilter]||tr.$_I,t.wrapS=il[i.wrapS]||tr.GJx,t.wrapT=il[i.wrapT]||tr.GJx,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==tr.hxR&&t.minFilter!==tr.k6q,a.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[o]=A,A}loadImageSource(e,t){let i=this.json,a=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let r=i.images[e],s=self.URL||self.webkitURL,n=r.uri||"",o=!1;if(void 0!==r.bufferView)n=this.getDependency("bufferView",r.bufferView).then(function(e){o=!0;let t=new Blob([e],{type:r.mimeType});return n=s.createObjectURL(t)});else if(void 0===r.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let A=Promise.resolve(n).then(function(e){return new Promise(function(i,r){let s=i;!0===t.isImageBitmapLoader&&(s=function(e){let t=new tr.gPd(e);t.needsUpdate=!0,i(t)}),t.load(tr.r6x.resolveURL(e,a.path),s,void 0,r)})}).then(function(e){var t;return!0===o&&s.revokeObjectURL(n),im(e,r),e.userData.mimeType=r.mimeType||((t=r.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":t.search(/\.ktx2($|\?)/i)>0||0===t.search(/^data\:image\/ktx2/)?"image/ktx2":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",n),e});return this.sourceCache[e]=A,A}assignTexture(e,t,i,a){let r=this;return this.getDependency("texture",i.index).then(function(s){if(!s)return null;if(void 0!==i.texCoord&&i.texCoord>0&&((s=s.clone()).channel=i.texCoord),r.extensions[tG.KHR_TEXTURE_TRANSFORM]){let e=void 0!==i.extensions?i.extensions[tG.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=r.associations.get(s);s=r.extensions[tG.KHR_TEXTURE_TRANSFORM].extendTexture(s,e),r.associations.set(s,t)}}return void 0!==a&&(s.colorSpace=a),e[t]=s,s})}assignFinalMaterial(e){let t=e.geometry,i=e.material,a=void 0===t.attributes.tangent,r=void 0!==t.attributes.color,s=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+i.uuid,t=this.cache.get(e);t||(t=new tr.BH$,tr.imn.prototype.copy.call(t,i),t.color.copy(i.color),t.map=i.map,t.sizeAttenuation=!1,this.cache.add(e,t)),i=t}else if(e.isLine){let e="LineBasicMaterial:"+i.uuid,t=this.cache.get(e);t||(t=new tr.mrM,tr.imn.prototype.copy.call(t,i),t.color.copy(i.color),t.map=i.map,this.cache.add(e,t)),i=t}if(a||r||s){let e="ClonedMaterial:"+i.uuid+":";a&&(e+="derivative-tangents:"),r&&(e+="vertex-colors:"),s&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=i.clone(),r&&(t.vertexColors=!0),s&&(t.flatShading=!0),a&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(i))),i=t}e.material=i}getMaterialType(){return tr._4j}loadMaterial(e){let t,i=this,a=this.json,r=this.extensions,s=a.materials[e],n={},o=s.extensions||{},A=[];
414if(o[tG.KHR_MATERIALS_UNLIT]){let e=r[tG.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),A.push(e.extendParams(n,s,i))}else{let a=s.pbrMetallicRoughness||{};if(n.color=new tr.Q1f(1,1,1),n.opacity=1,Array.isArray(a.baseColorFactor)){let e=a.baseColorFactor;n.color.setRGB(e[0],e[1],e[2],tr.Zr2),n.opacity=e[3]}void 0!==a.baseColorTexture&&A.push(i.assignTexture(n,"map",a.baseColorTexture,tr.er$)),n.metalness=void 0!==a.metallicFactor?a.metallicFactor:1,n.roughness=void 0!==a.roughnessFactor?a.roughnessFactor:1,void 0!==a.metallicRoughnessTexture&&(A.push(i.assignTexture(n,"metalnessMap",a.metallicRoughnessTexture)),A.push(i.assignTexture(n,"roughnessMap",a.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),A.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,n)})))}!0===s.doubleSided&&(n.side=tr.$EB);let l=s.alphaMode||iu.OPAQUE;if(l===iu.BLEND?(n.transparent=!0,n.depthWrite=!1):(n.transparent=!1,l===iu.MASK&&(n.alphaTest=void 0!==s.alphaCutoff?s.alphaCutoff:.5)),void 0!==s.normalTexture&&t!==tr.V9B&&(A.push(i.assignTexture(n,"normalMap",s.normalTexture)),n.normalScale=new tr.I9Y(1,1),void 0!==s.normalTexture.scale)){let e=s.normalTexture.scale;n.normalScale.set(e,e)}if(void 0!==s.occlusionTexture&&t!==tr.V9B&&(A.push(i.assignTexture(n,"aoMap",s.occlusionTexture)),void 0!==s.occlusionTexture.strength&&(n.aoMapIntensity=s.occlusionTexture.strength)),void 0!==s.emissiveFactor&&t!==tr.V9B){let e=s.emissiveFactor;n.emissive=new tr.Q1f().setRGB(e[0],e[1],e[2],tr.Zr2)}return void 0!==s.emissiveTexture&&t!==tr.V9B&&A.push(i.assignTexture(n,"emissiveMap",s.emissiveTexture,tr.er$)),Promise.all(A).then(function(){let a=new t(n);return s.name&&(a.name=s.name),im(a,s),i.associations.set(a,{materials:e}),s.extensions&&ip(r,a,s),a})}createUniqueName(e){let t=tr.Nwf.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,i=this.extensions,a=this.primitiveCache,r=[];for(let s=0,n=e.length;s<n;s++){let n=e[s],o=function(e){let t,i=e.extensions&&e.extensions[tG.KHR_DRACO_MESH_COMPRESSION];if(t=i?"draco:"+i.bufferView+":"+i.indices+":"+ib(i.attributes):e.indices+":"+ib(e.attributes)+":"+e.mode,void 0!==e.targets)for(let i=0,a=e.targets.length;i<a;i++)t+=":"+ib(e.targets[i]);return t}(n),A=a[o];if(A)r.push(A.promise);else{let e;e=n.extensions&&n.extensions[tG.KHR_DRACO_MESH_COMPRESSION]?function(e){return i[tG.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(i){return iy(i,e,t)})}(n):iy(new tr.LoY,n,t),a[o]={primitive:n,promise:e},r.push(e)}}return Promise.all(r)}loadMesh(e){let t=this,i=this.json,a=this.extensions,r=i.meshes[e],s=r.primitives,n=[];for(let e=0,t=s.length;e<t;e++){var o;let t=void 0===s[e].material?(void 0===(o=this.cache).DefaultMaterial&&(o.DefaultMaterial=new tr._4j({color:0xffffff,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:tr.hB5})),o.DefaultMaterial):this.getDependency("material",s[e].material);n.push(t)}return n.push(t.loadGeometries(s)),Promise.all(n).then(function(i){let n=i.slice(0,i.length-1),o=i[i.length-1],A=[];for(let i=0,l=o.length;i<l;i++){let l,h=o[i],c=s[i],d=n[i];if(c.mode===is.TRIANGLES||c.mode===is.TRIANGLE_STRIP||c.mode===is.TRIANGLE_FAN||void 0===c.mode)!0===(l=!0===r.isSkinnedMesh?new tr.I46(h,d):new tr.eaF(h,d)).isSkinnedMesh&&l.normalizeSkinWeights(),c.mode===is.TRIANGLE_STRIP?l.geometry=tP(l.geometry,tr.O49):c.mode===is.TRIANGLE_FAN&&(l.geometry=tP(l.geometry,tr.rYR));else if(c.mode===is.LINES)l=new tr.DXC(h,d);else if(c.mode===is.LINE_STRIP)l=new tr.N1A(h,d);else if(c.mode===is.LINE_LOOP)l=new tr.FCc(h,d);else if(c.mode===is.POINTS)l=new tr.ONl(h,d);else throw Error("THREE.GLTFLoader: Primitive mode unsupported: "+c.mode);Object.keys(l.geometry.morphAttributes).length>0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let i=0,a=t.weights.length;i<a;i++)e.morphTargetInfluences[i]=t.weights[i];if(t.extras&&Array.isArray(t.extras.targetNames)){let i=t.extras.targetNames;if(e.morphTargetInfluences.length===i.length){e.morphTargetDictionary={};for(let t=0,a=i.length;t<a;t++)e.morphTargetDictionary[i[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}(l,r),l.name=t.createUniqueName(r.name||"mesh_"+e),im(l,r),c.extensions&&ip(a,l,c),t.assignFinalMaterial(l),A.push(l)}for(let i=0,a=A.length;i<a;i++)t.associations.set(A[i],{meshes:e,primitives:i});if(1===A.length)return r.extensions&&ip(a,A[0],r),A[0];let l=new tr.YJl;r.extensions&&ip(a,l,r),t.associations.set(l,{meshes:e});for(let e=0,t=A.length;e<t;e++)l.add(A[e]);return l})}loadCamera(e){let t,i=this.json.cameras[e],a=i[i.type];return a?("perspective"===i.type?t=new tr.ubm(tr.cj9.radToDeg(a.yfov),a.aspectRatio||1,a.znear||1,a.zfar||2e6):"orthographic"===i.t
414ype&&(t=new tr.qUd(-a.xmag,a.xmag,a.ymag,-a.ymag,a.znear,a.zfar)),i.name&&(t.name=this.createUniqueName(i.name)),im(t,i),Promise.resolve(t)):void console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){let t=this.json.skins[e],i=[];for(let e=0,a=t.joints.length;e<a;e++)i.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?i.push(this.getDependency("accessor",t.inverseBindMatrices)):i.push(null),Promise.all(i).then(function(e){let i=e.pop(),a=[],r=[];for(let s=0,n=e.length;s<n;s++){let n=e[s];if(n){a.push(n);let e=new tr.kn4;null!==i&&e.fromArray(i.array,16*s),r.push(e)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[s])}return new tr.EAD(a,r)})}loadAnimation(e){let t=this.json,i=this,a=t.animations[e],r=a.name?a.name:"animation_"+e,s=[],n=[],o=[],A=[],l=[];for(let e=0,t=a.channels.length;e<t;e++){let t=a.channels[e],i=a.samplers[t.sampler],r=t.target,h=r.node,c=void 0!==a.parameters?a.parameters[i.input]:i.input,d=void 0!==a.parameters?a.parameters[i.output]:i.output;void 0!==r.node&&(s.push(this.getDependency("node",h)),n.push(this.getDependency("accessor",c)),o.push(this.getDependency("accessor",d)),A.push(i),l.push(r))}return Promise.all([Promise.all(s),Promise.all(n),Promise.all(o),Promise.all(A),Promise.all(l)]).then(function(e){let t=e[0],s=e[1],n=e[2],o=e[3],A=e[4],l=[];for(let e=0,a=t.length;e<a;e++){let a=t[e],r=s[e],h=n[e],c=o[e],d=A[e];if(void 0===a)continue;a.updateMatrix&&a.updateMatrix();let g=i._createAnimationTracks(a,r,h,c,d);if(g)for(let e=0;e<g.length;e++)l.push(g[e])}let h=new tr.tz3(r,void 0,l);return im(h,a),h})}createNodeMesh(e){let t=this.json,i=this,a=t.nodes[e];return void 0===a.mesh?null:i.getDependency("mesh",a.mesh).then(function(e){let t=i._getNodeRef(i.meshCache,a.mesh,e);return void 0!==a.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,i=a.weights.length;t<i;t++)e.morphTargetInfluences[t]=a.weights[t]}),t})}loadNode(e){let t=this.json.nodes[e],i=this._loadNodeShallow(e),a=[],r=t.children||[];for(let e=0,t=r.length;e<t;e++)a.push(this.getDependency("node",r[e]));let s=void 0===t.skin?Promise.resolve(null):this.getDependency("skin",t.skin);return Promise.all([i,Promise.all(a),s]).then(function(e){let t=e[0],i=e[1],a=e[2];null!==a&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(a,iI)});for(let e=0,a=i.length;e<a;e++)t.add(i[e]);if(void 0!==t.userData.pivot&&i.length>0){let e=t.userData.pivot,a=i[0];t.pivot=new tr.Pq0().fromArray(e),t.position.x-=e[0],t.position.y-=e[1],t.position.z-=e[2],a.position.set(0,0,0),delete t.userData.pivot}return t})}_loadNodeShallow(e){let t=this.json,i=this.extensions,a=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];let r=t.nodes[e],s=r.name?a.createUniqueName(r.name):"",n=[],o=a._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return o&&n.push(o),void 0!==r.camera&&n.push(a.getDependency("camera",r.camera).then(function(e){return a._getNodeRef(a.cameraCache,r.camera,e)})),a._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){n.push(e)}),this.nodeCache[e]=Promise.all(n).then(function(t){let n;if((n=!0===r.isBone?new tr.$Kf:t.length>1?new tr.YJl:1===t.length?t[0]:new tr.B69)!==t[0])for(let e=0,i=t.length;e<i;e++)n.add(t[e]);if(r.name&&(n.userData.name=r.name,n.name=s),im(n,r),r.extensions&&ip(i,n,r),void 0!==r.matrix){let e=new tr.kn4;e.fromArray(r.matrix),n.applyMatrix4(e)}else void 0!==r.translation&&n.position.fromArray(r.translation),void 0!==r.rotation&&n.quaternion.fromArray(r.rotation),void 0!==r.scale&&n.scale.fromArray(r.scale);if(a.associations.has(n)){if(void 0!==r.mesh&&a.meshCache.refs[r.mesh]>1){let e=a.associations.get(n);a.associations.set(n,{...e})}}else a.associations.set(n,{});return a.associations.get(n).nodes=e,n}),this.nodeCache[e]}loadScene(e){let t=this.extensions,i=this.json.scenes[e],a=this,r=new tr.YJl;i.name&&(r.name=a.createUniqueName(i.name)),im(r,i),i.extensions&&ip(t,r,i);let s=i.nodes||[],n=[];for(let e=0,t=s.length;e<t;e++)n.push(a.getDependency("node",s[e]));return Promise.all(n).then(function(e){for(let t=0,i=e.length;t<i;t++){let i=e[t];null!==i.parent?r.add(tU(i)):r.add(i)}return a.associations=(e=>{let t=new Map;for(let[e,i]of a.associations)(e instanceof tr.imn||e instanceof tr.gPd)&&t.set(e,i);return e.traverse(e=>{let i=a.associations.get(e);null!=i&&t.set(e,i)}),t})(r),r})}_createAnimationTracks(e,t,i,a,r){let s,n=[],o=e.name?e.name:e.uuid,A=[];switch(id[r.path]===id.weights?e.traverse(function(e){e.morphTargetInfluences&&A.push(e.name?e.name:e.uuid)}):A.push(o),id[r.path]){case id.weights:s=tr.Hit;break;case id.rotation:s=tr.MBL;break;case id.translation:case id.scale:s=tr.RiT;break;default:s=1===i.itemSize?tr.Hit:tr.RiT}let l=void 0!==a.interpolation?ig[a.interpolation]:tr.PJ3,h=this._getArrayFromAccessor(i);for(let e=0,i=A.length;e<i;e++){let i=new s(A[e]+"."+id[r.path],t.array,h,l);
414"CUBICSPLINE"===a.interpolation&&this._createCubicSplineTrackInterpolant(i),n.push(i)}return n}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=iE(t.constructor),i=new Float32Array(t.length);for(let a=0,r=t.length;a<r;a++)i[a]=t[a]*e;t=i}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof tr.MBL?ir:ii)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function iy(e,t,i){let a=t.attributes,r=[];for(let t in a){let s=ic[t]||t.toLowerCase();s in e.attributes||r.push(function(t,a){return i.getDependency("accessor",t).then(function(t){e.setAttribute(a,t)})}(a[t],s))}if(void 0!==t.indices&&!e.index){let a=i.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});r.push(a)}return tr.ppV.workingColorSpace!==tr.Zr2&&"COLOR_0"in a&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${tr.ppV.workingColorSpace}" not supported.`),im(e,t),!function(e,t,i){let a=t.attributes,r=new tr.NRn;if(void 0===a.POSITION)return;{let e=i.json.accessors[a.POSITION],t=e.min,s=e.max;if(void 0===t||void 0===s)return console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(r.set(new tr.Pq0(t[0],t[1],t[2]),new tr.Pq0(s[0],s[1],s[2])),e.normalized){let t=iE(io[e.componentType]);r.min.multiplyScalar(t),r.max.multiplyScalar(t)}}let s=t.targets;if(void 0!==s){let e=new tr.Pq0,t=new tr.Pq0;for(let a=0,r=s.length;a<r;a++){let r=s[a];if(void 0!==r.POSITION){let a=i.json.accessors[r.POSITION],s=a.min,n=a.max;if(void 0!==s&&void 0!==n){if(t.setX(Math.max(Math.abs(s[0]),Math.abs(n[0]))),t.setY(Math.max(Math.abs(s[1]),Math.abs(n[1]))),t.setZ(Math.max(Math.abs(s[2]),Math.abs(n[2]))),a.normalized){let e=iE(io[a.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}r.expandByVector(e)}e.boundingBox=r;let n=new tr.iyt;r.getCenter(n.center),n.radius=r.min.distanceTo(r.max)/2,e.boundingSphere=n}(e,t,i),Promise.all(r).then(function(){return void 0!==t.targets?function(e,t,i){let a=!1,r=!1,s=!1;for(let e=0,i=t.length;e<i;e++){let i=t[e];if(void 0!==i.POSITION&&(a=!0),void 0!==i.NORMAL&&(r=!0),void 0!==i.COLOR_0&&(s=!0),a&&r&&s)break}if(!a&&!r&&!s)return Promise.resolve(e);let n=[],o=[],A=[];for(let l=0,h=t.length;l<h;l++){let h=t[l];if(a){let t=void 0!==h.POSITION?i.getDependency("accessor",h.POSITION):e.attributes.position;n.push(t)}if(r){let t=void 0!==h.NORMAL?i.getDependency("accessor",h.NORMAL):e.attributes.normal;o.push(t)}if(s){let t=void 0!==h.COLOR_0?i.getDependency("accessor",h.COLOR_0):e.attributes.color;A.push(t)}}return Promise.all([Promise.all(n),Promise.all(o),Promise.all(A)]).then(function(t){let i=t[0],n=t[1],o=t[2];return a&&(e.morphAttributes.position=i),r&&(e.morphAttributes.normal=n),s&&(e.morphAttributes.color=o),e.morphTargetsRelative=!0,e})}(e,t.targets,i):e})}class iB{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(e){if(!this.workers[e]){let t=this.workerCreator();t.addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return -1}_onMessage(e,t){let i=this.workersResolve[e];if(i&&i(t),this.queue.length){let{resolve:t,msg:i,transfer:a}=this.queue.shift();this.workersResolve[e]=t,this.workers[e].postMessage(i,a)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(i=>{let a=this._getIdleWorker();-1!==a?(this._initWorker(a),this.workerStatus|=1<<a,this.workersResolve[a]=i,this.workers[a].postMessage(e,t)):this.queue.push({resolve:i,msg:e,transfer:t})})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}class iw{constructor(e,t,i,a){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,i),this._littleEndian=a,this._offset=0}_nextUint8(){let e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){let e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){let e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){let e=this._dataView.getUint32(this._offset,this._littleEndian)+0x100000000*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}
414_nextInt32(){let e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t=0){let i=this._offset,a=0;for(;this._dataView.getUint8(this._offset)!==t&&a<e;)a++,this._offset++;return a<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+i,a)}}new Uint8Array([0]);let iv=[171,75,84,88,32,50,48,187,13,10,26,10];function ix(e){return(new TextDecoder).decode(e)}var iS=i(5376).Buffer;let iQ={env:{emscripten_notify_memory_growth:function(e){s=new Uint8Array(r.exports.memory.buffer)}}};class iR{init(){return a||(a="undefined"!=typeof fetch?fetch("data:application/wasm;base64,"+iM).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,iQ)).then(this._init):WebAssembly.instantiate(iS.from(iM,"base64"),iQ).then(this._init))}_init(e){r=e.instance,iQ.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!r)throw Error("ZSTDDecoder: Await .init() before decoding.");let i=e.byteLength,a=r.exports.malloc(i);s.set(e,a),t=t||Number(r.exports.ZSTD_findDecompressedSize(a,i));let n=r.exports.malloc(t),o=r.exports.ZSTD_decompress(n,t,a,i),A=s.slice(n,n+o);return r.exports.free(a),r.exports.free(n),A}}let iM
vendor: 38,979 bytes, line 414
414="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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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"
414;tr.KLL,tr.VxR,tr.VxR,tr.ppV.spaces[tr.er$],tr.er$;let iT=new WeakMap,iD=0;class ik extends tr.aHM{constructor(e){super(e),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new iB,this.workerSourceURL="",this.workerConfig=null,"undefined"!=typeof MSC_TRANSCODER&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return console.warn('KTX2Loader: "detectSupportAsync()" has been deprecated. Use "detectSupport()" and "await renderer.init();" when creating the renderer.'),await e.init(),this.detectSupport(e)}detectSupport(e){return!0===e.isWebGPURenderer?this.workerConfig={astcSupported:e.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:e.hasFeature("texture-compression-etc1"),etc2Supported:e.hasFeature("texture-compression-etc2"),dxtSupported:e.hasFeature("texture-compression-s3tc"),bptcSupported:e.hasFeature("texture-compression-bc"),pvrtcSupported:e.hasFeature("texture-compression-pvrtc")}:(this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:e.extensions.has("WEBGL_compressed_texture_astc")&&e.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:e.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:e.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:e.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:e.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:e.extensions.has("WEBGL_compressed_texture_pvrtc")||e.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},"undefined"!=typeof navigator&&void 0!==navigator.platform&&void 0!==navigator.userAgent&&navigator.platform.indexOf("Linux")>=0&&navigator.userAgent.indexOf("Firefox")>=0&&this.workerConfig.astcSupported&&this.workerConfig.etc2Supported&&this.workerConfig.bptcSupported&&this.workerConfig.dxtSupported&&(this.workerConfig.astcSupported=!1,this.workerConfig.etc2Supported=!1)),this}init(){if(!this.transcoderPending){let e=new tr.Y9S(this.manager);e.setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials);let t=e.loadAsync("basis_transcoder.js"),i=new tr.Y9S(this.manager);i.setPath(this.transcoderPath),i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials);let a=i.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([t,a]).then(([e,t])=>{let i=ik.BasisWorker.toString(),a=["/* constants */","let _EngineFormat = "+JSON.stringify(ik.EngineFormat),"let _EngineType = "+JSON.stringify(ik.EngineType),"let _TranscoderFormat = "+JSON.stringify(ik.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(ik.BasisFormat),"/* basis_transcoder.js */",e,"/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([a])),this.transcoderBinary=t,this.workerPool.setWorkerCreator(()=>{let e=new Worker(this.workerSourceURL),t=this.transcoderBinary.slice(0);return e.postMessage({type:"init",config:this.workerConfig,transcoderBinary:t},[t]),e})}),iD>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),iD++}return this.transcoderPending}load(e,t,i,a){if(null===this.workerConfig)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");let r=new tr.Y9S(this.manager);r.setPath(this.path),r.setCrossOrigin(this.crossOrigin),r.setWithCredentials(this.withCredentials),r.setRequestHeader(this.requestHeader),r.setResponseType("arraybuffer"),r.load(e,e=>{this.parse(e,t,a)},i,a)}parse(e,t,i){if(null===this.workerConfig)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(iT.has(e))return iT.get(e).promise.then(t).catch(i);this._createTexture(e).then(e=>
414t?t(e):null).catch(i)}_createTextureFrom(e,t){let i,{type:a,error:r,data:{faces:s,width:n,height:o,format:A,type:l,dfdFlags:h}}=e;if("error"===a)return Promise.reject(r);if(6===t.faceCount)i=new tr.c5h(s,A,l);else{let e=s[0].mipmaps;i=t.layerCount>1?new tr.iOZ(e,n,o,t.layerCount,A,l):new tr.FvD(e,n,o,A,l)}return i.minFilter=1===s[0].mipmaps.length?tr.k6q:tr.$_I,i.magFilter=tr.k6q,i.generateMipmaps=!1,i.needsUpdate=!0,i.colorSpace
414=i_(t),i.premultiplyAlpha=!!(1&h),i}async _createTexture(e,t={}){let i=function(e){let t=new Uint8Array(e.buffer,e.byteOffset,iv.length);if(t[0]!==iv[0]||t[1]!==iv[1]||t[2]!==iv[2]||t[3]!==iv[3]||t[4]!==iv[4]||t[5]!==iv[5]||t[6]!==iv[6]||t[7]!==iv[7]||t[8]!==iv[8]||t[9]!==iv[9]||t[10]!==iv[10]||t[11]!==iv[11])throw Error("Missing KTX 2.0 identifier.");let i={vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,levelCount:0,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType: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:[]}],keyValue:{},globalData:null},a=17*Uint32Array.BYTES_PER_ELEMENT,r=new iw(e,iv.length,a,!0);i.vkFormat=r._nextUint32(),i.typeSize=r._nextUint32(),i.pixelWidth=r._nextUint32(),i.pixelHeight=r._nextUint32(),i.pixelDepth=r._nextUint32(),i.layerCount=r._nextUint32(),i.faceCount=r._nextUint32(),i.levelCount=r._nextUint32(),i.supercompressionScheme=r._nextUint32();let s=r._nextUint32(),n=r._nextUint32(),o=r._nextUint32(),A=r._nextUint32(),l=r._nextUint64(),h=r._nextUint64(),c=3*Math.max(i.levelCount,1)*8,d=new iw(e,iv.length+a,c,!0);for(let t=0,a=Math.max(i.levelCount,1);t<a;t++)i.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+d._nextUint64(),d._nextUint64()),uncompressedByteLength:d._nextUint64()});let g=new iw(e,s,n,!0);g._skip(4);let u=g._nextUint16(),p=g._nextUint16(),f=g._nextUint16(),m=g._nextUint16(),b={vendorId:u,descriptorType:p,versionNumber:f,colorModel:g._nextUint8(),colorPrimaries:g._nextUint8(),transferFunction:g._nextUint8(),flags:g._nextUint8(),texelBlockDimension:[g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8()],bytesPlane:[g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8()],samples:[]},E=(m/4-6)/4;for(let e=0;e<E;e++){let t={bitOffset:g._nextUint16(),bitLength:g._nextUint8(),channelType:g._nextUint8(),samplePosition:[g._nextUint8(),g._nextUint8(),g._nextUint8(),g._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&t.channelType?(t.sampleLower=g._nextInt32(),t.sampleUpper=g._nextInt32()):(t.sampleLower=g._nextUint32(),t.sampleUpper=g._nextUint32()),b.samples[e]=t}i.dataFormatDescriptor.length=0,i.dataFormatDescriptor.push(b);let I=new iw(e,o,A,!0);for(;I._offset<A;){let e=I._nextUint32(),t=I._scan(e),a=ix(t);if(i.keyValue[a]=I._nextUint8Array(e-t.byteLength-1),a.match(/^ktx/i)){let e=ix(i.keyValue[a]);i.keyValue[a]=e.substring(0,e.lastIndexOf("\0"))}I._skip(e%4?4-e%4:0)}if(h<=0)return i;let C=new iw(e,l,h,!0),y=C._nextUint16(),B=C._nextUint16(),w=C._nextUint32(),v=C._nextUint32(),x=C._nextUint32(),S=C._nextUint32(),Q=[];for(let e=0,t=Math.max(i.levelCount,1);e<t;e++)Q.push({imageFlags:C._nextUint32(),rgbSliceByteOffset:C._nextUint32(),rgbSliceByteLength:C._nextUint32(),alphaSliceByteOffset:C._nextUint32(),alphaSliceByteLength:C._nextUint32()});let R=l+C._offset,M=R+w,T=M+v,D=T+x,k=new Uint8Array(e.buffer,e.byteOffset+R,w),F=new Uint8Array(e.buffer,e.byteOffset+M,v);return i.globalData={endpointCount:y,selectorCount:B,imageDescs:Q,endpointsData:k,selectorsData:F,tablesData:new Uint8Array(e.buffer,e.byteOffset+T,x),extendedData:new Uint8Array(e.buffer,e.byteOffset+D,S)},i}(new Uint8Array(e)),a=1000066e3===i.vkFormat&&167===i.dataFormatDescriptor[0].colorModel;if(!(0===i.vkFormat||a&&!this.workerConfig.astcHDRSupported))return iU(i);let r=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:e,taskConfig:t},[e])).then(e=>this._createTextureFrom(e.data,i));return iT.set(e,{promise:r}),r}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),iD--}}ik.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},ik.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,BC6H:22,RGB_HALF:24,RGBA_HALF:25},ik.EngineFormat={RGBAFormat:tr.GWd,RGBA_ASTC_4x4_Format:tr.qa3,RGB_BPTC_UNSIGNED_Format:tr.W9U,RGBA_BPTC_Format:tr.Fn,RGBA_ETC2_EAC_Format:tr.KDk,RGBA_PVRTC_4BPPV1_Format:tr.HXV,RGBA_S3TC_DXT5_Format:tr.BXX,RGB_ETC1_Format:tr.CVz,RGB_ETC2_Format:tr.Riy,RGB_PVRTC_4BPPV1_Format:tr.k6Q,RGBA_S3TC_DXT1_Format:tr.Nz6},ik.EngineType={UnsignedByteType:tr.OUM,HalfFloatType:tr.ix0,FloatType:tr.RQf},ik.BasisWorker=function(){let e,t,i,a=_EngineFormat,r=_EngineType,s=_TranscoderFormat,n=_BasisFormat;self.addEventListener("message",function(a){let s=a.data;switch(s.type){case"init":var o;e=s.config,o=s.transcoderBinary,t=new Promise(e=>{BASIS(i={wasmBinary:o,onRuntimeInitialized:e})}).then(()=>{i.initializeBasis(),void 0===i.KTX2File&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":t.then(()=>{try{let{faces:t,buffers:a,width:o,height:h,hasAlpha:c,format:d,type:g,dfdFlags:u}
414=function(t){let a,s=new i.KTX2File(new Uint8Array(t));function o(){s.close(),s.delete()}if(!s.isValid())throw o(),Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");if(s.isUASTC())a=n.UASTC;else if(s.isETC1S())a=n.ETC1S;else if(s.isHDR())a=n.UASTC_HDR;else throw Error("THREE.KTX2Loader: Unknown Basis encoding");let h=s.getWidth(),c=s.getHeight(),d=s.getLayers()||1,g=s.getLevels(),u=s.getFaces(),p=s.getHasAlpha(),f=s.getDFDFlags(),{transcoderFormat:m,engineFormat:b,engineType:E}=function(t,i,a,r){let s=A[t];for(let n=0;n<s.length;n++){let o=s[n];if(o.if&&!e[o.if]||!o.basisFormat.includes(t)||r&&o.transcoderFormat.length<2||o.needsPowerOfTwo&&!(l(i)&&l(a)))continue;let A=o.transcoderFormat[+!!r],h=o.engineFormat[+!!r];return{transcoderFormat:A,engineFormat:h,engineType:o.engineType[0]}}throw Error("THREE.KTX2Loader: Failed to identify transcoding target.")}(a,h,c,p);if(!h||!c||!g)throw o(),Error("THREE.KTX2Loader: Invalid texture");if(!s.startTranscoding())throw o(),Error("THREE.KTX2Loader: .startTranscoding failed");let I=[],C=[];for(let e=0;e<u;e++){let t=[];for(let i=0;i<g;i++){let a,n,A=[];for(let t=0;t<d;t++){let l=s.getImageLevelInfo(i,t,e);0===e&&0===i&&0===t&&(l.origWidth%4!=0||l.origHeight%4!=0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),g>1?(a=l.origWidth,n=l.origHeight):(a=l.width,n=l.height);let h=new Uint8Array(s.getImageTranscodedSizeInBytes(i,t,0,m)),c=s.transcodeImage(h,i,t,e,m,0,-1,-1);if(E===r.HalfFloatType&&(h=new Uint16Array(h.buffer,h.byteOffset,h.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!c)throw o(),Error("THREE.KTX2Loader: .transcodeImage failed.");A.push(h)}let l=function(e){if(1===e.length)return e[0];let t=0;for(let i=0;i<e.length;i++)t+=e[i].byteLength;let i=new Uint8Array(t),a=0;for(let t=0;t<e.length;t++){let r=e[t];i.set(r,a),a+=r.byteLength}return i}(A);t.push({data:l,width:a,height:n}),C.push(l.buffer)}I.push({mipmaps:t,width:h,height:c,format:b,type:E})}return o(),{faces:I,buffers:C,width:h,height:c,hasAlpha:p,dfdFlags:f,format:b,type:E}}(s.buffer);self.postMessage({type:"transcode",id:s.id,data:{faces:t,width:o,height:h,hasAlpha:c,format:d,type:g,dfdFlags:u}},a)}catch(e){console.error(e),self.postMessage({type:"error",id:s.id,error:e.message})}})}});let o=[{if:"astcSupported",basisFormat:[n.UASTC],transcoderFormat:[s.ASTC_4x4,s.ASTC_4x4],engineFormat:[a.RGBA_ASTC_4x4_Format,a.RGBA_ASTC_4x4_Format],engineType:[r.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[n.ETC1S,n.UASTC],transcoderFormat:[s.BC7_M5,s.BC7_M5],engineFormat:[a.RGBA_BPTC_Format,a.RGBA_BPTC_Format],engineType:[r.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[n.ETC1S,n.UASTC],transcoderFormat:[s.BC1,s.BC3],engineFormat:[a.RGBA_S3TC_DXT1_Format,a.RGBA_S3TC_DXT5_Format],engineType:[r.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[n.ETC1S,n.UASTC],transcoderFormat:[s.ETC1,s.ETC2],engineFormat:[a.RGB_ETC2_Format,a.RGBA_ETC2_EAC_Format],engineType:[r.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[n.ETC1S,n.UASTC],transcoderFormat:[s.ETC1],engineFormat:[a.RGB_ETC1_Format],engineType:[r.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[n.ETC1S,n.UASTC],transcoderFormat:[s.PVRTC1_4_RGB,s.PVRTC1_4_RGBA],engineFormat:[a.RGB_PVRTC_4BPPV1_Format,a.RGBA_PVRTC_4BPPV1_Format],engineType:[r.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[n.UASTC_HDR],transcoderFormat:[s.BC6H],engineFormat:[a.RGB_BPTC_UNSIGNED_Format],engineType:[r.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[n.ETC1S,n.UASTC],transcoderFormat:[s.RGBA32,s.RGBA32],engineFormat:[a.RGBAFormat,a.RGBAFormat],engineType:[r.UnsignedByteType,r.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[n.UASTC_HDR],transcoderFormat:[s.RGBA_HALF],engineFormat:[a.RGBAFormat],engineType:[r.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],A={[n.ETC1S]:o.filter(e=>e.basisFormat.includes(n.ETC1S)).sort((e,t)=>
414e.priorityETC1S-t.priorityETC1S),[n.UASTC]:o.filter(e=>e.basisFormat.includes(n.UASTC)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[n.UASTC_HDR]:o.filter(e=>e.basisFormat.includes(n.UASTC_HDR)).sort((e,t)=>e.priorityHDR-t.priorityHDR)};function l(e){return e<=2||(e&e-1)==0&&0!==e}};let iF=new Set([tr.GWd,tr.HIg,tr.paN,tr.VT0]),iL={109:tr.GWd,103:tr.paN,100:tr.VT0,97:tr.GWd,83:tr.paN,76:tr.VT0,43:tr.GWd,37:tr.GWd,22:tr.paN,16:tr.paN,15:tr.VT0,9:tr.VT0,123:tr.HIg,122:tr.HIg,152:tr.KDk,148:tr.Riy,153:tr.BVL,154:tr.gZr,155:tr.OtU,156:tr.jSS,1000066e3:tr.qa3,158:tr.qa3,157:tr.qa3,0x3b9bcbd4:tr.Qrf,166:tr.Qrf,165:tr.Qrf,134:tr.Nz6,133:tr.Nz6,132:tr.IE4,131:tr.IE4,138:tr.BXX,137:tr.BXX,140:tr.XG_,139:tr.Kef,142:tr.CWW,141:tr.HO_,146:tr.Fn,145:tr.Fn,0x3b9b9cf5:tr.HXV,0x3b9b9cf1:tr.HXV,0x3b9b9cf4:tr.pBf,1000054e3:tr.pBf},iP={109:tr.RQf,103:tr.RQf,100:tr.RQf,97:tr.ix0,83:tr.ix0,76:tr.ix0,43:tr.OUM,37:tr.OUM,22:tr.OUM,16:tr.OUM,15:tr.OUM,9:tr.OUM,123:tr.Dmk,122:tr.yT7,152:tr.OUM,148:tr.OUM,153:tr.OUM,154:tr.OUM,155:tr.OUM,156:tr.OUM,1000066e3:tr.ix0,158:tr.OUM,157:tr.OUM,0x3b9bcbd4:tr.ix0,166:tr.OUM,165:tr.OUM,134:tr.OUM,133:tr.OUM,132:tr.OUM,131:tr.OUM,138:tr.OUM,137:tr.OUM,140:tr.OUM,139:tr.OUM,142:tr.OUM,141:tr.OUM,146:tr.OUM,145:tr.OUM,0x3b9b9cf5:tr.OUM,0x3b9b9cf1:tr.OUM,0x3b9b9cf4:tr.OUM,1000054e3:tr.OUM};async function iU(e){let t,i,{vkFormat:a}=e;if(void 0===iL[a])throw Error("THREE.KTX2Loader: Unsupported vkFormat: "+a);void 0===iP[a]&&console.warn('THREE.KTX2Loader: Missing ".type" for vkFormat: '+a),2===e.supercompressionScheme&&(n||(n=new Promise(async e=>{let t=new iR;await t.init(),e(t)})),t=await n);let r=[];for(let i=0;i<e.levels.length;i++){let s,n,o=Math.max(1,e.pixelWidth>>i),A=Math.max(1,e.pixelHeight>>i),l=e.pixelDepth?Math.max(1,e.pixelDepth>>i):0,h=e.levels[i];if(0===e.supercompressionScheme)s=h.levelData;else if(2===e.supercompressionScheme)s=t.decode(h.levelData,h.uncompressedByteLength);else throw Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");n=iP[a]===tr.RQf?new Float32Array(s.buffer,s.byteOffset,s.byteLength/Float32Array.BYTES_PER_ELEMENT):iP[a]===tr.ix0?new Uint16Array(s.buffer,s.byteOffset,s.byteLength/Uint16Array.BYTES_PER_ELEMENT):iP[a]===tr.Dmk||iP[a]===tr.yT7?new Uint32Array(s.buffer,s.byteOffset,s.byteLength/Uint32Array.BYTES_PER_ELEMENT):s,r.push({data:n,width:o,height:A,depth:l})}let s=0===e.levelCount||r.length>1;if(iF.has(iL[a]))(i=0===e.pixelDepth?new tr.GYF(r[0].data,e.pixelWidth,e.pixelHeight):new tr.dYF(r[0].data,e.pixelWidth,e.pixelHeight,e.pixelDepth)).minFilter=s?tr.pHI:tr.hxR,i.magFilter=tr.hxR,i.generateMipmaps=0===e.levelCount;else{if(e.pixelDepth>0)throw Error("THREE.KTX2Loader: Unsupported pixelDepth.");(i=new tr.FvD(r,e.pixelWidth,e.pixelHeight)).minFilter=s?tr.$_I:tr.k6q,i.magFilter=tr.k6q}
414return i.mipmaps=r,i.type=iP[a],i.format=iL[a],i.colorSpace=i_(e),i.needsUpdate=!0,Promise.resolve(i)}function i_(e){let t=e.dataFormatDescriptor[0];return 1===t.colorPrimaries?2===t.transferFunction?tr.er$:tr.Zr2:10===t.colorPrimaries?2===t.transferFunction?"display-p3":"display-p3-linear":(0===t.colorPrimaries||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${t.colorPrimaries}"`),tr.jf0)}let iN=Symbol("retainerCount"),iO=Symbol("recentlyUsed"),iG=Symbol("evict"),iq=Symbol("evictionThreshold"),iH=Symbol("cache");class ij{constructor(e,t=5){this[ex]=new Map,this[eS]=[],this[iH]=e,this[iq]=t}set evictionThreshold(e){this[iq]=e,this[iG]()}get evictionThreshold(){return this[iq]}get cache(){return this[iH]}retainerCount(e){return this[iN].get(e)||0}reset(){this[iN].clear(),this[iO]=[]}retain(e){this[iN].has(e)||this[iN].set(e,0),this[iN].set(e,this[iN].get(e)+1);let t=this[iO].indexOf(e);-1!==t&&this[iO].splice(t,1),this[iO].unshift(e),this[iG]()}release(e){this[iN].has(e)&&this[iN].set(e,Math.max(this[iN].get(e)-1,0)),this[iG]()}[(ex=iN,eS=iO,iG)](){if(!(this[iO].length<this[iq]))for(let e=this[iO].length-1;e>=this[iq];--e){let t=this[iO][e];0===this[iN].get(t)&&(this[iH].delete(t),this[iO].splice(e,1))}}}let iz=e=>{let t=new Map;for(let i of e.mappings)for(let e of i.variants)t.set(e,{material:null,gltfMaterialIndex:i.material});return t};class iK{constructor(e){this.parser=e,this.name="KHR_materials_variants"}afterRoot(e){let t=this.parser,i=t.json;if(void 0===i.extensions||void 0===i.extensions[this.name])return null;let a=(e=>{let t=[],i=new Set;for(let a of e){let e=a,r=0;for(;i.has(e);)e=a+"."+ ++r;i.add(e),t.push(e)}return t})((i.extensions[this.name].variants||[]).map(e=>e.name));for(let a of e.scenes)a.traverse(e=>{if(!e.material)return;let a=t.associations.get(e);if(null==a||null==a.meshes||null==a.primitives)return;let r=i.meshes[a.meshes].primitives[a.primitives].extensions;r&&r[this.name]&&(e.userData.variantMaterials=iz(r[this.name]))});return e.userData.variants=a,Promise.resolve()}}tr.gPd.DEFAULT_ANISOTROPY=4;let iV=new Map,iJ=new Map,iY=new tF,iW=new ik,i$=Symbol("loader"),iX=Symbol("evictionPolicy"),iZ=Symbol("GLTFInstance");class i0 extends tr.Qev{static setDRACODecoderLocation(e){o=e,iY.setDecoderPath(e)}static getDRACODecoderLocation(){return o}static setKTX2TranscoderLocation(e){A=e,iW.setTranscoderPath(e)}static getKTX2TranscoderLocation(){return A}static setMeshoptDecoderLocation(e){l!==e&&(l=e,h=new Promise((t,i)=>{let a=document.createElement("script");document.body.appendChild(a),a.onload=t,a.onerror=i,a.async=!0,a.src=e}).then(()=>tD.ready).then(()=>tD))}static getMeshoptDecoderLocation(){return l}static initializeKTX2Loader(e){iW.detectSupport(e)}static get cache(){return iV}static clearCache(){iV.forEach((e,t)=>{this.delete(t)}),this[iX].reset()}static has(e){return iV.has(e)}static async delete(e){if(!this.has(e))return;let t=iV.get(e);iJ.delete(e),iV.delete(e),(await t).dispose()}static hasFinishedLoading(e){return!!iJ.get(e)}constructor(e){super(),this[eR]=new t_().register(e=>new iK(e)),this[iZ]=e,this[i$].setDRACOLoader(iY),this[i$].setKTX2Loader(iW)}get[(eQ=iX,eR=i$,iX)](){return this.constructor[iX]}async preload(e,t,i=()=>{}){if(this[i$].setWithCredentials(t.withCredentials),this.dispatchEvent({type:"preload",element:t,src:e}),!iV.has(e)){null!=h&&this[i$].setMeshoptDecoder(await h);let t=((e,t,i=()=>{})=>{let a=e=>{let t=e.loaded/e.total;i(Math.max(0,Math.min(1,isFinite(t)?t:1)))};return new Promise((i,r)=>{t.load(e,i,a,r)})})(e,this[i$],e=>{i(.8*e)}),a=this[iZ],r=t.then(e=>a.prepare(e)).then(e=>(i(.9),new a(e))).catch(e=>(console.error(e),new a));iV.set(e,r)}await iV.get(e),iJ.set(e,!0),i&&i(1)}async load(e,t,i=()=>{}){await this.preload(e,t,i);let a=await iV.get(e),r=await a.clone();return this[iX].retain(e),r.dispose=()=>{this[iX].release(e)},r}}i0[eQ]=new ij(i0);class i1 extends tr.B69{constructor(e=document.createElement("div")){super(),this.isCSS2DObject=!0,this.element=e,this.element.style.position="absolute",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.center=new tr.I9Y(.5,.5),this.addEventListener("removed",function(){this.traverse(function(e){e.element&&e.element instanceof e.element.ownerDocument.defaultView.Element&&null!==e.element.parentNode&&e.element.remove()})})}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this.center=e.center,this}}let i2=new tr.Pq0,i8=new tr.kn4,i9=new tr.kn4,i3=new tr.Pq0,i4=new tr.Pq0;class i5{constructor(e={}){let t,i,a,r,s=this,n={objects:new WeakMap},o=void 0!==e.element?e.element:document.createElement("div");o.style.overflow="hidden",this.domElement=o,this.sortObjects=!0,this.get
414Size=function(){return{width:t,height:i}},this.render=function(e,t){!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===t.parent&&!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),i8.copy(t.matrixWorldInverse),i9.multiplyMatrices(t.projectionMatrix,i8),function e(t,i,A){if(!1===t.visible)return void function e(t){t.isCSS2DObject&&(t.element.style.display="none");for(let i=0,a=t.children.length;i<a;i++)e(t.children[i])}(t);if(t.isCSS2DObject){var l,h;i2.setFromMatrixPosition(t.matrixWorld),i2.applyMatrix4(i9);let e=i2.z>=-1&&i2.z<=1&&!0===t.layers.test(A.layers),c=t.element;c.style.display=!0===e?"":"none",!0===e&&(t.onBeforeRender(s,i,A),c.style.transform="translate("+-100*t.center.x+"%,"+-100*t.center.y+"%)translate("+(i2.x*a+a)+"px,"+(-i2.y*r+r)+"px)",c.parentNode!==o&&o.appendChild(c),t.onAfterRender(s,i,A));let d={distanceToCameraSquared:(l=A,h=t,i3.setFromMatrixPosition(l.matrixWorld),i4.setFromMatrixPosition(h.matrixWorld),i3.distanceToSquared(i4))};n.objects.set(t,d)}for(let a=0,r=t.children.length;a<r;a++)e(t.children[a],i,A)}(e,e,t),this.sortObjects&&function(e){let t=(function(e){let t=[];return e.traverseVisible(function(e){e.isCSS2DObject&&t.push(e)}),t})(e).sort(function(e,t){return e.renderOrder!==t.renderOrder?t.renderOrder-e.renderOrder:n.objects.get(e).distanceToCameraSquared-n.objects.get(t).distanceToCameraSquared}),i=t.length;for(let e=0,a=t.length;e<a;e++)t[e].element.style.zIndex=i-e}(e)},this.setSize=function(e,s){t=e,i=s,a=t/2,r=i/2,o.style.width=e+"px",o.style.height=s+"px"}}}function i6(e,t,i){let a=i,r=new tr.Pq0;return e.updateWorldMatrix(!0,!0),e.traverseVisible(e=>{let{geometry:i}=e;if(void 0!==i){let{position:s}=i.attributes;if(void 0!==s)for(let i=0,n=s.count;i<n;i++)e.isMesh?e.getVertexPosition(i,r):r.fromBufferAttribute(s,i),e.isSkinnedMesh||r.applyMatrix4(e.matrixWorld),a=t(a,r)}}),a}let i7={POSITION:["byte","byte normalized","unsigned byte","unsigned byte normalized","short","short normalized","unsigned short","unsigned short normalized"],NORMAL:["byte normalized","short normalized"],TANGENT:["byte normalized","short normalized"],TEXCOORD:["byte","byte normalized","unsigned byte","short","short normalized","unsigned short"]};class ae{constructor(){this.textureUtils=null,this.pluginCallbacks=[],this.register(function(e){return new ac(e)}),this.register(function(e){return new ad(e)}),this.register(function(e){return new af(e)}),this.register(function(e){return new am(e)}),this.register(function(e){return new ab(e)}),this.register(function(e){return new aE(e)}),this.register(function(e){return new ag(e)}),this.register(function(e){return new au(e)}),this.register(function(e){return new ap(e)}),this.register(function(e){return new aI(e)}),this.register(function(e){return new aC(e)}),this.register(function(e){return new ay(e)}),this.register(function(e){return new aB(e)}),this.register(function(e){return new aw(e)})}register(e){return -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}setTextureUtils(e){return this.textureUtils=e,this}parse(e,t,i,a){let r=new ah,s=[];for(let e=0,t=this.pluginCallbacks.length;e<t;e++)s.push(this.pluginCallbacks[e](r));r.setPlugins(s),r.setTextureUtils(this.textureUtils),r.writeAsync(e,t,a).catch(i)}parseAsync(e,t){let i=this;return new Promise(function(a,r){i.parse(e,a,r,t)})}}let at={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},ai="KHR_mesh_quantization",aa={};aa[tr.hxR]=at.NEAREST,aa[tr.pHI]=at.NEAREST_MIPMAP_NEAREST,aa[tr.Cfg]=at.NEAREST_MIPMAP_LINEAR,aa[tr.k6q]=at.LINEAR,aa[tr.kRr]=at.LINEAR_MIPMAP_NEAREST,aa[tr.$_I]=at.LINEAR_MIPMAP_LINEAR,aa[tr.ghU]=at.CLAMP_TO_EDGE,aa[tr.GJx]=at.REPEAT,aa[tr.kTW]=at.MIRRORED_REPEAT;let ar={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},as=new tr.Q1f;function an(e,t){return e.length===t.length&&e.every(function(e,i){return e===t[i]})}function ao(e){return 4*Math.ceil(e/4)}function aA(e,t=0){let i=ao(e.byteLength);if(i!==e.byteLength){let a=new Uint8Array(i);if(a.set(new Uint8Array(e)),0!==t)for(let r=e.byteLength;r<i;r++)a[r]=t;return a.buffer}return e}function al(){return"undefined"==typeof document&&"undefined"!=typeof OffscreenCanvas?new OffscreenCanvas(1,1):document.createElement("canvas")}class ah{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.extensionsRequired={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter r"+tr.sPf}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map},this.textureUtils=null}setPlugins(e){this.plugins=e}setTextureUtils(e){this.textureUtils=e}async writeAsync(e,t,i={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},i),this.options.animations.length>0&&(this.options.trs=!0),await this.processInputAsync(e),await Promise.all(this.pending);let a=this.buffers,r=this.json;i=this.options;let s=this.extensionsUsed,n=this.extensionsRequired,o=new Blob(a,{type:"application/octet-stream"}),A=Object.keys(s),l=Object.keys(n);if(A.length>0&&(r.extensionsUsed=A),l.length>0&&(r.extensionsRequired=l),r.buffers&&r.buffers.length>0&&(r.buffers[0].byteLength=o.size),!0===i.binary){let e=new FileReader;e.readAsArrayBuffer(o),e.onloadend=function(){var i;let a=aA(e.result),s=new DataView(new ArrayBuffer(8));s.setUint32(0,a.byteLength,!0),s.setUint32(4,5130562,!0);let n=aA((i=JSON.stringify(r),new TextEncoder().encode(i).buffer),32),o=new DataView(new ArrayBuffer(8));o.setUint32(0,n.byteLength,!0),o.setUint32(4,0x4e4f534a,!0);let A=new ArrayBuffer(12),l=new DataView(A);l.setUint32(0,0x46546c67,!0),l.setUint32(4,2,!0);let h=12+o.byteLength+n.byteLength+s.byteLength+a.byteLength;l.setUint32(8,h,!0);let c=new Blob([A,o,n,s,a],{type:"application/octet-stream"}),d=new FileReader;d.readAsArrayBuffer(c),d.onloadend=function(){t(d.result)}}}else if(r.buffers&&r.buffers.length>0){let e=new FileReader;
414e.readAsDataURL(o),e.onloadend=function(){let i=e.result;r.buffers[0].uri=i,t(r)}}else t(r)}serializeUserData(e,t){if(0===Object.keys(e.userData).length)return;let i=this.options,a=this.extensionsUsed;try{let r=JSON.parse(JSON.stringify(e.userData));if(i.includeCustomExtensions&&r.gltfExtensions){for(let e in void 0===t.extensions&&(t.extensions={}),r.gltfExtensions)t.extensions[e]=r.gltfExtensions[e],a[e]=!0;delete r.gltfExtensions}Object.keys(r).length>0&&(t.extras=r)}catch(t){console.warn("THREE.GLTFExporter: userData of '"+e.name+"' won't be serialized because of JSON.stringify error - "+t.message)}}getUID(e,t=!1){if(!1===this.uids.has(e)){let t=new Map;t.set(!0,this.uid++),t.set(!1,this.uid++),this.uids.set(e,t)}return this.uids.get(e).get(t)}isNormalizedNormalAttribute(e){if(this.cache.attributesNormalized.has(e))return!1;let t=new tr.Pq0;for(let i=0,a=e.count;i<a;i++)if(Math.abs(t.fromBufferAttribute(e,i).length()-1)>5e-4)return!1;return!0}createNormalizedNormalAttribute(e){let t=this.cache;if(t.attributesNormalized.has(e))return t.attributesNormalized.get(e);let i=e.clone(),a=new tr.Pq0;for(let e=0,t=i.count;e<t;e++)a.fromBufferAttribute(i,e),0===a.x&&0===a.y&&0===a.z?a.setX(1):a.normalize(),i.setXYZ(e,a.x,a.y,a.z);return t.attributesNormalized.set(e,i),i}applyTextureTransform(e,t){let i=!1,a={};(0!==t.offset.x||0!==t.offset.y)&&(a.offset=t.offset.toArray(),i=!0),0!==t.rotation&&(a.rotation=t.rotation,i=!0),(1!==t.repeat.x||1!==t.repeat.y)&&(a.scale=t.repeat.toArray(),i=!0),i&&(e.extensions=e.extensions||{},e.extensions.KHR_texture_transform=a,this.extensionsUsed.KHR_texture_transform=!0)}async buildMetalRoughTextureAsync(e,t){if(e===t)return e;function i(e){return e.colorSpace===tr.er$?function(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}:function(e){return e}}e instanceof tr.FvD&&(e=await this.decompressTextureAsync(e)),t instanceof tr.FvD&&(t=await this.decompressTextureAsync(t));let a=e?e.image:null,r=t?t.image:null,s=Math.max(a?a.width:0,r?r.width:0),n=Math.max(a?a.height:0,r?r.height:0),o=al();o.width=s,o.height=n;let A=o.getContext("2d",{willReadFrequently:!0});A.fillStyle="#00ffff",A.fillRect(0,0,s,n);let l=A.getImageData(0,0,s,n);if(a){A.drawImage(a,0,0,s,n);let t=i(e),r=A.getImageData(0,0,s,n).data;for(let e=2;e<r.length;e+=4)l.data[e]=256*t(r[e]/256)}if(r){A.drawImage(r,0,0,s,n);let e=i(t),a=A.getImageData(0,0,s,n).data;for(let t=1;t<a.length;t+=4)l.data[t]=256*e(a[t]/256)}A.putImageData(l,0,0);let h=(e||t).clone();return h.source=new tr.kLi(o),h.colorSpace=tr.jf0,h.channel=(e||t).channel,e&&t&&e.channel!==t.channel&&console.warn("THREE.GLTFExporter: UV channels for metalnessMap and roughnessMap textures must match."),console.warn("THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures."),h}async decompressTextureAsync(e,t=1/0){if(null===this.textureUtils)throw Error("THREE.GLTFExporter: setTextureUtils() must be called to process compressed textures.");return await this.textureUtils.decompress(e,t)}processBuffer(e){let t=this.json,i=this.buffers;return t.buffers||(t.buffers=[{byteLength:0}]),i.push(e),0}processBufferView(e,t,i,a,r){let s,n=this.json;switch(!n.bufferViews&&(n.bufferViews=[]),t){case at.BYTE:case at.UNSIGNED_BYTE:s=1;break;case at.SHORT:case at.UNSIGNED_SHORT:s=2;break;default:s=4}let o=e.itemSize*s;r===at.ARRAY_BUFFER&&(o=4*Math.ceil(o/4));let A=ao(a*o),l=new DataView(new ArrayBuffer(A)),h=0;for(let r=i;r<i+a;r++){for(let i=0;i<e.itemSize;i++){let a;e.itemSize>4?a=e.array[r*e.itemSize+i]:(0===i?a=e.getX(r):1===i?a=e.getY(r):2===i?a=e.getZ(r):3===i&&(a=e.getW(r)),!0===e.normalized&&(a=tr.cj9.normalize(a,e.array))),t===at.FLOAT?l.setFloat32(h,a,!0):t===at.INT?l.setInt32(h,a,!0):t===at.UNSIGNED_INT?l.setUint32(h,a,!0):t===at.SHORT?l.setInt16(h,a,!0):t===at.UNSIGNED_SHORT?l.setUint16(h,a,!0):t===at.BYTE?l.setInt8(h,a):t===at.UNSIGNED_BYTE&&l.setUint8(h,a),h+=s}h%o!=0&&(h+=o-h%o)}let c={buffer:this.processBuffer(l.buffer),byteOffset:this.byteOffset,byteLength:A};return void 0!==r&&(c.target=r),r===at.ARRAY_BUFFER&&(c.byteStride=o),this.byteOffset+=A,n.bufferViews.push(c),{id:n.bufferViews.length-1,byteLength:0}}processBufferViewImage(e){let t=this,i=t.json;return i.bufferViews||(i.bufferViews=[]),new Promise(function(a){let r=new FileReader;r.readAsArrayBuffer(e),r.onloadend=function(){let e=aA(r.result),s={buffer:t.processBuffer(e),byteOffset:t.byteOffset,byteLength:e.byteLength};t.byteOffset+=e.byteLength,a(i.bufferViews.push(s)-1)}})}processAccessor(e,t,i,a){let r,s,n=this.json;if(e.array.constructor===Float32Array)r=at.FLOAT;else if(e.array.constructor===Int32Array)r=at.INT;else if(e.array.constructor===Uint32Array)r=at.UNSIGNED_INT;else if(e.array.constructor===Int16Array)r=at.SHORT;else if(e.array.constructor===Uint16Array)r=at.UNSIGNED_SHORT;else if(e.array.constructor===Int8Array)r=at.BYTE;else if(e.array.constructor===Uint8Array)r=at.UNSIGNED_BYTE;else throw Error("THREE.GLTFExporter: Unsupported bufferAttribute component type: "+e.array.constructor.name);if(void 0===i&&(i=0),(void 0===a||a===1/0)&&(a=e.count),0===a)return null;let o=function(e,t,i){let a={min:Array(e.itemSize).fill(1/0),max:Array(e.itemSize).fill(-1/0)};for(let r=t;r<t+i;r++)for(let t=0;t<e.itemSize;t++){let i;e.itemSize>4?i=e.array[r*e.itemSize+t]:(0===t?i=e.getX(r):1===t?i=e.getY(r):2===t?i=e.getZ(r):3===t&&(i=e.getW(r)),!0===e.normalized&&(i=tr.cj9.normalize(i,e.array))),a.min[t]=Math.min(a.min[t],i),a.max[t]=Math.max(a.max[t],i)}return a}(e,i,a);void 0!==t&&(s=e===t.index?at.ELEMENT_ARRAY_BUFFER:at.ARRAY_BUFFER);let A=this.processBufferView(e,r,i,a,s),l={bufferView:A.id,byteOffset:A.byteOffset,componentType:r,count:a,max:o.max,min:o.min,type:{1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",9:"MAT3",16:"MAT4"}[e.itemSize]};return!0===e.normalized&&(l.normalized=!0),n.accessors||(n.accessors=[]),n.accessors.push(l)-1}processImage(e,t,i,a="image/png"){if(null!==e){let r=this,s=r.cache,n=r.json,o=r.options,A=r.pending;s.images.has(e)||s.images.set(e,{});let l=s.images.get(e),h=a+":flipY/"+i.toString();if(void 0!==l[h])return l[h];n.images||(n.images=[]);let c={mimeType:a},d=al();d.width=Math.min(e.width,o.maxTextureSize),d.height=Math.min(e.height,o.maxTextureSize);let g=d.getContext("2d",{willReadFrequently:!0});if(!0===i&&(g.translate(0,d.height),g.scale(1,-1)),void 0!==e.data){t!==tr.GWd&&console.error("GLTFExporter: Only RGBAFormat is supported.",t),(e.width>o.maxTextureSize||e.height>
414o.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",e);let i=new Uint8ClampedArray(e.height*e.width*4);for(let t=0;t<i.length;t+=4)i[t+0]=e.data[t+0],i[t+1]=e.data[t+1],i[t+2]=e.data[t+2],i[t+3]=e.data[t+3];g.putImageData(new ImageData(i,e.width,e.height),0,0)}else if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)g.drawImage(e,0,0,d.width,d.height);else throw Error("THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement, ImageBitmap or OffscreenCanvas.");!0===o.binary?A.push((function(e,t){if(!("undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas))return new Promise(i=>e.toBlob(i,t));{let i;return"image/jpeg"===t?i=.92:"image/webp"===t&&(i=.8),e.convertToBlob({type:t,quality:i})}})(d,a).then(e=>r.processBufferViewImage(e)).then(e=>{c.bufferView=e})):c.uri=tr.HgN.getDataURL(d,a);let u=n.images.push(c)-1;return l[h]=u,u}throw Error("THREE.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(e){let t=this.json;t.samplers||(t.samplers=[]);let i={magFilter:aa[e.magFilter],minFilter:aa[e.minFilter],wrapS:aa[e.wrapS],wrapT:aa[e.wrapT]};return t.samplers.push(i)-1}async processTextureAsync(e){let t=this.options,i=this.cache,a=this.json;if(i.textures.has(e))return i.textures.get(e);a.textures||(a.textures=[]),e instanceof tr.FvD&&(e=await this.decompressTextureAsync(e,t.maxTextureSize));let r=e.userData.mimeType;"image/webp"===r&&(r="image/png");let s={sampler:this.processSampler(e),source:this.processImage(e.image,e.format,e.flipY,r)};e.name&&(s.name=e.name),await this._invokeAllAsync(async function(t){t.writeTexture&&await t.writeTexture(e,s)});let n=a.textures.push(s)-1;return i.textures.set(e,n),n}async processMaterialAsync(e){let t=this.cache,i=this.json;if(t.materials.has(e))return t.materials.get(e);if(e.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;i.materials||(i.materials=[]);let a={pbrMetallicRoughness:{}};!0!==e.isMeshStandardMaterial&&!0!==e.isMeshBasicMaterial&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");let r=e.color.toArray().concat([e.opacity]);if(an(r,[1,1,1,1])||(a.pbrMetallicRoughness.baseColorFactor=r),e.isMeshStandardMaterial?(a.pbrMetallicRoughness.metallicFactor=e.metalness,a.pbrMetallicRoughness.roughnessFactor=e.roughness):(a.pbrMetallicRoughness.metallicFactor=0,a.pbrMetallicRoughness.roughnessFactor=1),e.metalnessMap||e.roughnessMap){let t=await this.buildMetalRoughTextureAsync(e.metalnessMap,e.roughnessMap),i={index:await this.processTextureAsync(t),texCoord:t.channel};this.applyTextureTransform(i,t),a.pbrMetallicRoughness.metallicRoughnessTexture=i}if(e.map){let t={index:await this.processTextureAsync(e.map),texCoord:e.map.channel};this.applyTextureTransform(t,e.map),a.pbrMetallicRoughness.baseColorTexture=t}if(e.emissive){let t=e.emissive;if(Math.max(t.r,t.g,t.b)>0&&(a.emissiveFactor=e.emissive.toArray()),e.emissiveMap){let t={index:await this.processTextureAsync(e.emissiveMap),texCoord:e.emissiveMap.channel};this.applyTextureTransform(t,e.emissiveMap),a.emissiveTexture=t}}if(e.normalMap){let t={index:await this.processTextureAsync(e.normalMap),texCoord:e.normalMap.channel};e.normalScale&&1!==e.normalScale.x&&(t.scale=e.normalScale.x),this.applyTextureTransform(t,e.normalMap),a.normalTexture=t}if(e.aoMap){let t={index:await this.processTextureAsync(e.aoMap),texCoord:e.aoMap.channel};1!==e.aoMapIntensity&&(t.strength=e.aoMapIntensity),this.applyTextureTransform(t,e.aoMap),a.occlusionTexture=t}e.transparent?a.alphaMode="BLEND":e.alphaTest>0&&(a.alphaMode="MASK",a.alphaCutoff=e.alphaTest),e.side===tr.$EB&&(a.doubleSided=!0),""!==e.name&&(a.name=e.name),this.serializeUserData(e,a),await this._invokeAllAsync(async function(t){t.writeMaterialAsync&&await t.writeMaterialAsync(e,a)});let s=i.materials.push(a)-1;return t.materials.set(e,s),s}async processMeshAsync(e){let t,i=this.cache,a=this.json,r=[e.geometry.uuid];if(Array.isArray(e.material))for(let t=0,i=e.material.length;t<i;t++)r.push(e.material[t].uuid);else r.push(e.material.uuid);let s=r.join(":");if(i.meshes.has(s))return i.meshes.get(s);let n=e.geometry;t=e.isLineSegments?at.LINES:e.isLineLoop?at.LINE_LOOP:e.isLine?at.LINE_STRIP:e.isPoints?at.POINTS:e.material.wireframe?at.LINES:at.TRIANGLES;let o={},A={},l=[],h=[],c={uv:"TEXCOORD_0",uv1:"TEXCOORD_1",uv2:"TEXCOORD_2",uv3:"TEXCOORD_3",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},d=n.getAttribute("normal");void 0===d||this.isNormalizedNormalAttribute(d)||(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),n.setAttribute("normal",this.createNormalizedNormalAttribute(d)));let g=null;
414for(let e in n.attributes){if("morph"===e.slice(0,5))continue;let t=n.attributes[e];if(e=c[e]||e.toUpperCase(),/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/.test(e)||(e="_"+e),i.attributes.has(this.getUID(t))){A[e]=i.attributes.get(this.getUID(t));continue}g=null;let a=t.array;"JOINTS_0"!==e||a instanceof Uint16Array||a instanceof Uint8Array?(a instanceof Uint32Array||a instanceof Int32Array)&&!e.startsWith("_")&&(console.warn(`GLTFExporter: Attribute "${e}" converted to type FLOAT.`),g=ae.Utils.toTypedBufferAttribute(t,Float32Array)):(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),g=ae.Utils.toTypedBufferAttribute(t,Uint16Array));let r=this.processAccessor(g||t,n);null!==r&&(e.startsWith("_")||this.detectMeshQuantization(e,t),A[e]=r,i.attributes.set(this.getUID(t),r))}if(void 0!==d&&n.setAttribute("normal",d),0===Object.keys(A).length)return null;if(void 0!==e.morphTargetInfluences&&e.morphTargetInfluences.length>0){let t=[],a=[],r={};if(void 0!==e.morphTargetDictionary)for(let t in e.morphTargetDictionary)r[e.morphTargetDictionary[t]]=t;for(let s=0;s<e.morphTargetInfluences.length;++s){let o={},A=!1;for(let e in n.morphAttributes){if("position"!==e&&"normal"!==e){A||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),A=!0);continue}let t=n.morphAttributes[e][s],a=e.toUpperCase(),r=n.attributes[e];if(i.attributes.has(this.getUID(t,!0))){o[a]=i.attributes.get(this.getUID(t,!0));continue}let l=t.clone();if(!n.morphTargetsRelative)for(let e=0,i=t.count;e<i;e++)for(let i=0;i<t.itemSize;i++)0===i&&l.setX(e,t.getX(e)-r.getX(e)),1===i&&l.setY(e,t.getY(e)-r.getY(e)),2===i&&l.setZ(e,t.getZ(e)-r.getZ(e)),3===i&&l.setW(e,t.getW(e)-r.getW(e));o[a]=this.processAccessor(l,n),i.attributes.set(this.getUID(r,!0),o[a])}h.push(o),t.push(e.morphTargetInfluences[s]),void 0!==e.morphTargetDictionary&&a.push(r[s])}o.weights=t,a.length>0&&(o.extras={},o.extras.targetNames=a)}let u=Array.isArray(e.material);if(u&&0===n.groups.length)return null;let p=!1;if(u&&null===n.index){let e=[];for(let t=0,i=n.attributes.position.count;t<i;t++)e[t]=t;n.setIndex(e),p=!0}let f=u?e.material:[e.material],m=u?n.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let e=0,a=m.length;e<a;e++){let a={mode:t,attributes:A};if(this.serializeUserData(n,a),h.length>0&&(a.targets=h),null!==n.index){let t=this.getUID(n.index);(void 0!==m[e].start||void 0!==m[e].count)&&(t+=":"+m[e].start+":"+m[e].count),i.attributes.has(t)?a.indices=i.attributes.get(t):(a.indices=this.processAccessor(n.index,n,m[e].start,m[e].count),i.attributes.set(t,a.indices)),null===a.indices&&delete a.indices}let r=await this.processMaterialAsync(f[m[e].materialIndex]);null!==r&&(a.material=r),l.push(a)}!0===p&&n.setIndex(null),o.primitives=l,a.meshes||(a.meshes=[]),await this._invokeAllAsync(function(t){t.writeMesh&&t.writeMesh(e,o)});let b=a.meshes.push(o)-1;return i.meshes.set(s,b),b}detectMeshQuantization(e,t){let i;if(this.extensionsUsed[ai])return;switch(t.array.constructor){case Int8Array:i="byte";break;case Uint8Array:i="unsigned byte";break;case Int16Array:i="short";break;case Uint16Array:i="unsigned short";break;default:return}t.normalized&&(i+=" normalized");let a=e.split("_",1)[0];i7[a]&&i7[a].includes(i)&&(this.extensionsUsed[ai]=!0,this.extensionsRequired[ai]=!0)}processCamera(e){let t=this.json;t.cameras||(t.cameras=[]);let i=e.isOrthographicCamera,a={type:i?"orthographic":"perspective"};return i?a.orthographic={xmag:2*e.right,ymag:2*e.top,zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near}:a.perspective={aspectRatio:e.aspect,yfov:tr.cj9.degToRad(e.fov),zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near},""!==e.name&&(a.name=e.type),t.cameras.push(a)-1}processAnimation(e,t){let i=this.json,a=this.nodeMap;i.animations||(i.animations=[]);let r=(e=ae.Utils.mergeMorphTargetTracks(e.clone(),t)).tracks,s=[],n=[];for(let e=0;e<r.length;++e){let i,o=r[e],A=tr.Nwf.parseTrackName(o.name),l=tr.Nwf.findNode(t,A.nodeName),h=ar[A.propertyName];if("bones"===A.objectName&&(l=!0===l.isSkinnedMesh?l.skeleton.getBoneByName(A.objectIndex):void 0),!l||!h){console.warn('THREE.GLTFExporter: Could not export animation track "%s".',o.name);continue}let c=o.values.length/o.times.length;h===ar.morphTargetInfluences&&(c/=l.morphTargetInfluences.length),!0===o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline?(i="CUBICSPLINE",c/=3):i=o.getInterpolation()===tr.ljd?"STEP":"LINEAR",n.push({input:this.processAccessor(new tr.THS(o.times,1)),output:this.processAccessor(new tr.THS(o.values,c)),interpolation:i}),s.push({sampler:n.length-1,target:{node:a.get(l),path:h}})}let o={name:e.name||"clip_"+i.animations.length,samplers:n,channels:s};return this.serializeUserData(e,o),i.animations.push(o),i.animations.length-1}processSkin(e){let t=this.json,i=this.nodeMap,a=t.nodes[i.get(e)],r=e.skeleton;if(void 0===r)return null;let s=e.skeleton.bones[0];if(void 0===s)return null;let n=[],o=new Float32Array(16*r.bones.length),A=new tr.kn4;for(let t=0;t<r.bones.length;++t)n.push(i.get(r.bones[t])),A.copy(r.boneInverses[t]),A.multiply(e.bindMatrix).toArray(o,16*t);return void 0===t.skins&&(t.skins=[]),t.skins.push({inverseBindMatrices:this.processAccessor(new tr.THS(o,16)),joints:n,skeleton:i.get(s)}),a.skin=t.skins.length-1}async processNodeAsync(e){let t=this.json,i=this.options,a=this.nodeMap;
414if(t.nodes||(t.nodes=[]),null!==e.pivot)return await this._processNodeWithPivotAsync(e);let r={};if(i.trs){let t=e.quaternion.toArray(),i=e.position.toArray(),a=e.scale.toArray();an(t,[0,0,0,1])||(r.rotation=t),an(i,[0,0,0])||(r.translation=i),an(a,[1,1,1])||(r.scale=a)}else e.matrixAutoUpdate&&e.updateMatrix(),!1===an(e.matrix.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])&&(r.matrix=e.matrix.elements);if(""!==e.name&&(r.name=String(e.name)),this.serializeUserData(e,r),e.isMesh||e.isLine||e.isPoints){let t=await this.processMeshAsync(e);null!==t&&(r.mesh=t)}else e.isCamera&&(r.camera=this.processCamera(e));e.isSkinnedMesh&&this.skins.push(e);let s=t.nodes.push(r)-1;if(a.set(e,s),e.children.length>0){let t=[];for(let a=0,r=e.children.length;a<r;a++){let r=e.children[a];if(r.visible||!1===i.onlyVisible){let e=await this.processNodeAsync(r);null!==e&&t.push(e)}}t.length>0&&(r.children=t)}return await this._invokeAllAsync(function(t){t.writeNode&&t.writeNode(e,r)}),s}async _processNodeWithPivotAsync(e){let t=this.json,i=this.options,a=this.nodeMap,r=e.pivot,s={},n=e.quaternion.toArray(),o=[e.position.x+r.x,e.position.y+r.y,e.position.z+r.z],A=e.scale.toArray();an(n,[0,0,0,1])||(s.rotation=n),an(o,[0,0,0])||(s.translation=o),an(A,[1,1,1])||(s.scale=A),s.extras={pivot:r.toArray()},""!==e.name&&(s.name=String(e.name)),this.serializeUserData(e,s);let l=t.nodes.push(s)-1;a.set(e,l);let h={},c=[-r.x,-r.y,-r.z];if(an(c,[0,0,0])||(h.translation=c),e.isMesh||e.isLine||e.isPoints){let t=await this.processMeshAsync(e);null!==t&&(h.mesh=t)}else e.isCamera&&(h.camera=this.processCamera(e));e.isSkinnedMesh&&this.skins.push(e);let d=t.nodes.push(h)-1;if(e.children.length>0){let t=[];for(let a=0,r=e.children.length;a<r;a++){let r=e.children[a];if(r.visible||!1===i.onlyVisible){let e=await this.processNodeAsync(r);null!==e&&t.push(e)}}t.length>0&&(h.children=t)}return s.children=[d],await this._invokeAllAsync(function(t){t.writeNode&&t.writeNode(e,s)}),l}async processSceneAsync(e){let t=this.json,i=this.options;t.scenes||(t.scenes=[],t.scene=0);let a={};""!==e.name&&(a.name=e.name),t.scenes.push(a);let r=[];for(let t=0,a=e.children.length;t<a;t++){let a=e.children[t];if(a.visible||!1===i.onlyVisible){let e=await this.processNodeAsync(a);null!==e&&r.push(e)}}r.length>0&&(a.nodes=r),this.serializeUserData(e,a)}async processObjectsAsync(e){let t=new tr.Z58;t.name="AuxScene";for(let i=0;i<e.length;i++)t.children.push(e[i]);await this.processSceneAsync(t)}async processInputAsync(e){let t=this.options;e=e instanceof Array?e:[e],await this._invokeAllAsync(function(t){t.beforeParse&&t.beforeParse(e)});let i=[];for(let t=0;t<e.length;t++)e[t]instanceof tr.Z58?await this.processSceneAsync(e[t]):i.push(e[t]);i.length>0&&await this.processObjectsAsync(i);for(let e=0;e<this.skins.length;++e)this.processSkin(this.skins[e]);for(let i=0;i<t.animations.length;++i)this.processAnimation(t.animations[i],e[0]);await this._invokeAllAsync(function(t){t.afterParse&&t.afterParse(e)})}async _invokeAllAsync(e){for(let t=0,i=this.plugins.length;t<i;t++)await e(this.plugins[t])}}class ac{constructor(e){this.writer=e,this.name="KHR_lights_punctual"}writeNode(e,t){if(!e.isLight)return;if(!e.isDirectionalLight&&!e.isPointLight&&!e.isSpotLight)return void console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",e);let i=this.writer,a=i.json,r=i.extensionsUsed,s={};e.name&&(s.name=e.name),s.color=e.color.toArray(),s.intensity=e.intensity,e.isDirectionalLight?s.type="directional":e.isPointLight?(s.type="point",e.distance>0&&(s.range=e.distance)):e.isSpotLight&&(s.type="spot",e.distance>0&&(s.range=e.distance),s.spot={},s.spot.innerConeAngle=(1-e.penumbra)*e.angle,s.spot.outerConeAngle=e.angle),void 0!==e.decay&&2!==e.decay&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),e.target&&(e.target.parent!==e||0!==e.target.position.x||0!==e.target.position.y||-1!==e.target.position.z)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),r[this.name]||(a.extensions=a.extensions||{},a.extensions[this.name]={lights:[]},r[this.name]=!0);let n=a.extensions[this.name].lights;n.push(s),t.extensions=t.extensions||{},t.extensions[this.name]={light:n.length-1}}}class ad{constructor(e){this.writer=e,this.name="KHR_materials_unlit"}async writeMaterialAsync(e,t){if(!e.isMeshBasicMaterial)return;let i=this.writer.extensionsUsed;t.extensions=t.extensions||{},t.extensions[this.name]={},i[this.name]=!0,t.pbrMetallicRoughness.metallicFactor=0,t.pbrMetallicRoughness.roughnessFactor=.9}}class ag{constructor(e){this.writer=e,this.name="KHR_materials_clearcoat"}async writeMaterialAsync(e,t){if(!e.isMeshPhysicalMaterial||0===e.clearcoat)return;let i=this.writer,a=i.extensionsUsed,r={};if(r.clearcoatFactor=e.clearcoat,e.clearcoatMap){let t={index:await i.processTextureAsync(e.clearcoatMap),texCoord:e.clearcoatMap.channel};i.applyTextureTransform(t,e.clearcoatMap),r.clearcoatTexture=t}if(r.clearcoatRoughnessFactor=e.clearcoatRoughness,e.clearcoatRoughnessMap){let t={index:await i.processTextureAsync(e.clearcoatRoughnessMap),texCoord:e.clearcoatRoughnessMap.channel};i.applyTextureTransform(t,e.clearcoatRoughnessMap),r.clearcoatRoughnessTexture=t}if(e.clearcoatNormalMap){let t={index:await i.processTextureAsync(e.clearcoatNormalMap),texCoord:e.clearcoatNormalMap.channel};1!==e.clearcoatNormalScale.x&&(t.scale=e.clearcoatNormalScale.x),i.applyTextureTransform(t,e.clearcoatNormalMap),r.clearcoatNormalTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=r,a[this.name]=!0}}class au{constructor(e){this.writer=e,this.name="KHR_materials_dispersion"}async writeMaterialAsync(e,t){if(!e.isMeshPhysicalMaterial||0===e.dispersion)return;let i=this.writer.extensionsUsed,a={};a.dispersion=e.dispersion,t.extensions=t.extensions||{},t.extensions[this.name]=a,i[this.name]=!0}}class ap{constructor(e){this.writer=e,this.name="KHR_materials_iridescence"}async writeMaterialAsync(e,t){if(!e.isMeshPhysicalMaterial||0===e.iridescence)return;let i=this.writer,a=i.extensionsUsed,r={};if(r.iridescenceFactor=e.iridescence,e.iridescenceMap){let t={index:await i.processTextureAsync(e.iridescenceMap),texCoord:e.iridescenceMap.channel};i.applyTextureTransform(t,e.iridescenceMap),r.iridescenceTexture=t}if(r.iridescenceIor=e.iridescenceIOR,r.iridescenceThicknessMinimum=e.iridescenceThicknessRange[0],r.iridescenceThicknessMaximum=e.iridescenceThicknessRange[1],e.iridescenceThicknessMap){let t={index:await i.processTextureAsync(e.iridescenceThicknessMap),texCoord:e.iridescenceThicknessMap.channel};i.applyTextureTransform(t,e.iridescenceThicknessMap),r.iridescenceThicknessTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=r,a[this.name]=!0}}class af{constructor(e){this.writer=e,this.name="KHR_materials_transmission"}async writeMaterialAsync(e,t){if(!e.isMeshPhysicalMaterial||0===e.transmission)return;let i=this.writer,a=i.extensionsUsed,r={};if(r.transmissionFactor=e.transmission,e.transmissionMap){let t={index:await i.processTextureAsync(e.transmissionMap),texCoord:e.transmissionMap.channel};i.applyTextureTransform(t,e.transmissionMap),r.transmissionTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=r,a[this.name]=!0}}class am{constructor(e){this.writer=e,this.name="KHR_materials_volume"}async writeMaterialAsync(e,t){if(!e.isMeshPhysicalMaterial||0===e.transmission)return;let i=this.writer,a=i.extensionsUsed,r={};if(r.thicknessFactor=e.thickness,e.thicknessMap){let t={index:await i.processTextureAsync(e.thicknessMap),texCoord:e.thicknessMap.channel};i.applyTextureTransform(t,e.thicknessMap),r.thicknessTexture=t}e.attenuationDistance!==1/0&&(r.attenuationDistance=e.attenuationDistance),r.attenuationColor=e.attenuationColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=r,a[this.name]=!0}}class ab{constructor(e){this.writer=e,this.name="KHR_materials_ior"}async writeMaterialAsync(e,t){if(!e.isMeshPhysicalMaterial||1.5===e.ior)return;let i=this.writer.extensionsUsed,a={};a.ior=e.ior,t.extensions=t.extensions||{},t.extensions[this.name]=a,i[this.name]=!0}}class aE{constructor(e){this.writer=e,this.name="KHR_materials_specular"}async writeMaterialAsync(e,t){if(!e.isMeshPhysicalMaterial||1===e.specularIntensity&&e.specularColor.equals(as)&&!e.specularIntensityMap&&!e.specularColorMap)return;let i=this.writer,a=i.extensionsUsed,r={};if(e.specularIntensityMap){let t={index:await i.processTextureAsync(e.specularIntensityMap),texCoord:e.specularIntensityMap.channel};i.applyTextureTransform(t,e.specularIntensityMap),r.specularTexture=t}if(e.specularColorMap){let t={index:await i.processTextureAsync(e.specularColorMap),texCoord:e.specularColorMap.channel};i.applyTextureTransform(t,e.specularColorMap),r.specularColorTexture=t}r.specularFactor=e.specularIntensity,r.specularColorFactor=e.specularColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=r,a[this.name]=!0}}class aI{constructor(e){this.writer=e,this.name="KHR_materials_sheen"}async writeMaterialAsync(e,t){if(!e.isMeshPhysicalMaterial||0==e.sheen)return;let i=this.writer,a=i.extensionsUsed,r={};if(e.sheenRoughnessMap){let t={index:await i.processTextureAsync(e.sheenRoughnessMap),texCoord:e.sheenRoughnessMap.channel};i.applyTextureTransform(t,e.sheenRoughnessMap),r.sheenRoughnessTexture=t}if(e.sheenColorMap){let t={index:await i.processTextureAsync(e.sheenColorMap),texCoord:e.sheenColorMap.channel};i.applyTextureTransform(t,e.sheenColorMap),r.sheenColorTexture=t}r.sheenRoughnessFactor=e.sheenRoughness,r.sheenColorFactor=e.sheenColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=r,a[this.name]=!0}}class aC{constructor(e){this.writer=e,this.name="KHR_materials_anisotropy"}async writeMaterialAsync(e,t){if(!e.isMeshPhysicalMaterial||0==e.anisotropy)return;let i=this.writer,a=i.extensionsUsed,r={};if(e.anisotropyMap){let t={index:await i.processTextureAsync(e.anisotropyMap)};i.applyTextureTransform(t,e.anisotropyMap),r.anisotropyTexture=t}r.anisotropyStrength=e.anisotropy,r.anisotropyRotation=e.anisotropyRotation,t.extensions=t.extensions||{},t.extensions[this.name]=r,a[this.name]=!0}}class ay{constructor(e){this.writer=e,this.name="KHR_materials_emissive_strength"}async writeMaterialAsync(e,t){if(!e.isMeshStandardMaterial||1===e.emissiveIntensity)return;let i=this.writer.extensionsUsed,a={};a.emissiveStrength=e.emissiveIntensity,t.extensions=t.extensions||{},t.extensions[this.name]=a,i[this.name]=!0}}class aB{constructor(e){this.writer=e,this.name="EXT_materials_bump"}async writeMaterialAsync(e,t){if(!e.isMeshStandardMaterial||1===e.bumpScale&&!e.bumpMap)return;let i=this.writer,a=i.extensionsUsed,r={};if(e.bumpMap){let t={index:await i.processTextureAsync(e.bumpMap),texCoord:e.bumpMap.channel};i.applyTextureTransform(t,e.bumpMap),r.bumpTexture=t}r.bumpFactor=e.bumpScale,t.extensions=t.extensions||{},t.extensions[this.name]=r,a[this.name]=!0}}class aw{constructor(e){this.writer=e,this.name="EXT_mesh_gpu_instancing"}writeNode(e,t){if(!e.isInstancedMesh)return;let i=this.writer,a=new Float32Array(3*e.count),r=new Float32Array(4*e.count),s=new Float32Array(3*e.count),n=new tr.kn4,o=new tr.Pq0,A=new tr.PTz,l=new tr.Pq0;for(let t=0;t<e.count;t++)e.getMatrixAt(t,n),n.decompose(o,A,l),o.toArray(a,3*t),A.toArray(r,4*t),l.toArray(s,3*t);let h={TRANSLATION:i.processAccessor(new tr.THS(a,3)),ROTATION:i.processAccessor(new tr.THS(r,4)),SCALE:i.processAccessor(new tr.THS(s,3))};e.instanceColor&&(h._COLOR_0=i.processAccessor(e.instanceColor)),t.extensions=t.extensions||{},t.extensions[this.name]={attributes:h},i.extensionsUsed[this.name]=!0,i.extensionsRequired[this.name]=!0}}ae.Utils={insertKeyframe:function(e,t){let i,a=e.getValueSize(),r=new e.TimeBufferType(e.times.length+1),s=new e.ValueBufferType(e.values.length+a),n=e.createInterpolant(new e.ValueBufferType(a));if(0===e.times.length){r[0]=t;for(let e=0;e<a;e++)s[e]=0;i=0}
414else if(t<e.times[0]){if(.001>Math.abs(e.times[0]-t))return 0;r[0]=t,r.set(e.times,1),s.set(n.evaluate(t),0),s.set(e.values,a),i=0}else if(t>e.times[e.times.length-1]){if(.001>Math.abs(e.times[e.times.length-1]-t))return e.times.length-1;r[r.length-1]=t,r.set(e.times,0),s.set(e.values,0),s.set(n.evaluate(t),e.values.length),i=r.length-1}else for(let o=0;o<e.times.length;o++){if(.001>Math.abs(e.times[o]-t))return o;if(e.times[o]<t&&e.times[o+1]>t){r.set(e.times.slice(0,o+1),0),r[o+1]=t,r.set(e.times.slice(o+1),o+2),s.set(e.values.slice(0,(o+1)*a),0),s.set(n.evaluate(t),(o+1)*a),s.set(e.values.slice((o+1)*a),(o+2)*a),i=o+1;break}}return e.times=r,e.values=s,i},mergeMorphTargetTracks:function(e,t){let i=[],a={},r=e.tracks;for(let e=0;e<r.length;++e){let s,n=r[e],o=tr.Nwf.parseTrackName(n.name),A=tr.Nwf.findNode(t,o.nodeName);if("morphTargetInfluences"!==o.propertyName||void 0===o.propertyIndex){i.push(n);continue}if(n.createInterpolant!==n.InterpolantFactoryMethodDiscrete&&n.createInterpolant!==n.InterpolantFactoryMethodLinear){if(n.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),(n=n.clone()).setInterpolation(tr.PJ3)}let l=A.morphTargetInfluences.length,h=A.morphTargetDictionary[o.propertyIndex];if(void 0===h)throw Error("THREE.GLTFExporter: Morph target name not found: "+o.propertyIndex);if(void 0===a[A.uuid]){let e=new(s=n.clone()).ValueBufferType(l*s.times.length);for(let t=0;t<s.times.length;t++)e[t*l+h]=s.values[t];s.name=(o.nodeName||"")+".morphTargetInfluences",s.values=e,a[A.uuid]=s,i.push(s);continue}let c=n.createInterpolant(new n.ValueBufferType(1));s=a[A.uuid];for(let e=0;e<s.times.length;e++)s.values[e*l+h]=c.evaluate(s.times[e]);for(let e=0;e<n.times.length;e++){let t=this.insertKeyframe(s,n.times[e]);s.values[t*l+h]=n.values[e]}}return e.tracks=i,e},toTypedBufferAttribute:function(e,t){let i=new tr.THS(new t(e.count*e.itemSize),e.itemSize,!1);if(!e.normalized&&!e.isInterleavedBufferAttribute)return i.array.set(e.array),i;for(let t=0,a=e.count;t<a;t++)for(let a=0;a<e.itemSize;a++)i.setComponent(t,a,e.getComponent(t,a));return i}};var av=i(7548);let ax=e=>void 0!==e.material&&e.userData&&e.userData.variantMaterials&&!!Array.from(e.userData.variantMaterials.values()).filter(e=>aS(e.material)),aS=e=>e&&e.isMaterial&&!Array.isArray(e);class aQ{constructor(e){this.writer=e,this.name="KHR_materials_variants",this.variantNames=[]}beforeParse(e){let t=new Set,i=e=>{if(!ax(e))return;let i=e.userData.variantMaterials;for(let[a,r]of e.userData.variantData){let e=i.get(r.index);e&&aS(e.material)&&t.add(a)}};if(Array.isArray(e))for(let t of e)t.traverse(i);else e.traverse(i);t.forEach(e=>this.variantNames.push(e))}async writeMesh(e,t){if(!ax(e))return;let i=e.userData,a=i.variantMaterials,r=i.variantData,s=new Map,n=new Map;for(let[e,t]of Array.from(r.values()).sort((e,t)=>e.index-t.index).entries())n.set(t.index,e);for(let e of r.values()){let t=a.get(e.index);if(!t||!aS(t.material))continue;let i=await this.writer.processMaterialAsync(t.material);s.has(i)||s.set(i,{material:i,variants:[]}),s.get(i).variants.push(n.get(e.index))}let o=Array.from(s.values()).map(e=>e.variants.sort((e,t)=>e-t)&&e).sort((e,t)=>e.material-t.material);if(0===o.length)return;let A=aS(i.originalMaterial)?await this.writer.processMaterialAsync(i.originalMaterial):-1;for(let e of t.primitives)A>=0&&(e.material=A),e.extensions=e.extensions||{},e.extensions[this.name]={mappings:o}}afterParse(){if(0===this.variantNames.length)return;let e=this.writer.json;e.extensions=e.extensions||{};let t=this.variantNames.map(e=>({name:e}));e.extensions[this.name]={variants:t},this.writer.extensionsUsed[this.name]=!0}}class aR{constructor(e,t,i,a,r){this.xrLight=e,this.renderer=t,this.lightProbe=i,this.xrWebGLBinding=null,this.estimationStartCallback=r,this.frameCallback=this.onXRFrame.bind(this);let s=t.xr.getSession();if(a&&"XRWebGLBinding"in window){e.environment=new av.o6l(16).texture;let i=t.getContext();switch(s.preferredReflectionFormat){case"srgba8":i.getExtension("EXT_sRGB");break;case"rgba16f":i.getExtension("OES_texture_half_float")}this.xrWebGLBinding=new XRWebGLBinding(s,i),this.lightProbe.addEventListener("reflectionchange",()=>{this.updateReflection()})}s.requestAnimationFrame(this.frameCallback)}updateReflection(){let e=this.renderer.properties.get(this.xrLight.environment);if(e){let t=this.xrWebGLBinding.getReflectionCubeMap(this.lightProbe);t&&(e.__webglTexture=t,this.xrLight.environment.needsPMREMUpdate=!0)}}onXRFrame(e,t){if(!this.xrLight)return;t.session.requestAnimationFrame(this.frameCallback);let i=t.getLightEstimate(this.lightProbe);if(i){this.xrLight.lightProbe.sh.fromArray(i.sphericalHarmonicsCoefficients),this.xrLight.lightProbe.intensity=1;let e=Math.max(1,Math.max(i.primaryLightIntensity.x,Math.max(i.primaryLightIntensity.y,i.primaryLightIntensity.z)));this.xrLight.directionalLight.color.setRGB(i.primaryLightIntensity.x/e,i.primaryLightIntensity.y/e,i.primaryLightIntensity.z/e),this.xrLight.directionalLight.intensity=e,this.xrLight.directionalLight.position.copy(i.primaryLightDirection),this.estimationStartCallback&&(this.estimationStartCallback(),this.estimationStartCallback=null)}}dispose(){this.xrLight=null,this.renderer=null,this.lightProbe=null,this.xrWebGLBinding=null}}class aM extends tr.YJl{constructor(e,t=!0){super(),this.lightProbe=new tr.FZo,this.lightProbe.intensity=0,this.add(this.lightProbe),this.directionalLight=new tr.ZyN,this.directionalLight.intensity=0,this.add(this.directionalLight),this.environment=null;let i=null,a=!1;e.xr.addEventListener("sessionstart",()=>{let r=e.xr.getSession();"requestLightProbe"in r&&r.requestLightProbe({reflectionFormat:r.preferredReflectionFormat}).then(r=>{i=new aR(this,e,r,t,()=>{a=!0,this.dispatchEvent({type:"estimationstart"})})})}),e.xr.addEventListener("sessionend",()=>{i&&(i.dispose(),i=null),a&&this.dispatchEvent({type:"estimationend"})}),this.dispose=()=>
vendor: 7,155 bytes, line 414
414{i&&(i.dispose(),i=null),this.remove(this.lightProbe),this.lightProbe=null,this.remove(this.directionalLight),this.directionalLight=null,this.environment=null}}}class aT{constructor(e=50){this.velocity=0,this.naturalFrequency=0,this.setDecayTime(e)}setDecayTime(e){this.naturalFrequency=1/Math.max(.001,e)}update(e,t,i,a){let r=2e-4*this.naturalFrequency;if(null==e||0===a||e===t&&0===this.velocity)return t;if(i<0)return e;let s=e-t,n=this.velocity+this.naturalFrequency*s,o=s+i*n,A=Math.exp(-this.naturalFrequency*i),l=(n-this.naturalFrequency*o)*A,h=-this.naturalFrequency*(l+n*A);return Math.abs(l)<r*Math.abs(a)&&h*s>=0?(this.velocity=0,t):(this.velocity=l,t+o*A)}}let aD={MIN_TOUCH_AREA:.05,BASE_RADIUS:.15,LINE_WIDTH:.02,SEGMENTS:16,DELTA_PHI:Math.PI/32,COLORS:{EDGE_FALLOFF:new tr.Q1f(.98,.98,.98),EDGE_CUTOFF:new tr.Q1f(.8,.8,.8),FILL_FALLOFF:new tr.Q1f(.4,.4,.4),FILL_CUTOFF:new tr.Q1f(.4,.4,.4),ACTIVE_EDGE:new tr.Q1f(1,1,1),ACTIVE_FILL:new tr.Q1f(.6,.6,.6)},MAX_OPACITY:.75,ACTIVE_OPACITY:.9,FILL_OPACITY_MULTIPLIER:.5,INTERACTIVE_OPACITY_MULTIPLIER:1.2,MIN_DISTANCE:.5,MAX_DISTANCE:10,BASE_SCALE:1,DISTANCE_SCALE_FACTOR:.3,FADE_IN_DURATION:.12,FADE_OUT_DURATION:.12,SIZE_UPDATE_DURATION:.05,COLOR_LERP_FACTOR:.15,SCREEN_SPACE_SCALE:1.2,SIZE_UPDATE_THRESHOLD:.001,GEOMETRY_UPDATE_DEBOUNCE:100},ak=new tr.I9Y,aF=(e,t,i,a,r)=>{let s=t>0?i>0?0:-Math.PI/2:i>0?Math.PI/2:Math.PI;for(let n=0;n<=aD.SEGMENTS;++n)e.push(t+(a-r)*Math.cos(s),i+(a-r)*Math.sin(s),0,t+a*Math.cos(s),i+a*Math.sin(s),0),s+=aD.DELTA_PHI};class aL extends tr.eaF{constructor(e,t){super(new tr.LoY),this.shadowHeight=0,this.isActive=!1,this.isHovered=!1,this.lastGeometryUpdateTime=0,this.needsGeometryUpdate=!1,this.scene=e,this.side=t,this.currentSize=new tr.Pq0,this.goalSize=new tr.Pq0,this.sizeDamper=new aT,this.updateSizeFromScene(),this.edgeMaterial=new tr.V9B({color:aD.COLORS.EDGE_FALLOFF,transparent:!0,opacity:0,side:tr.$EB,depthWrite:!1,blending:tr.EZo}),this.fillMaterial=new tr.V9B({color:aD.COLORS.FILL_FALLOFF,transparent:!0,opacity:0,side:tr.$EB,depthWrite:!1,blending:tr.NTi}),this.material=this.edgeMaterial,this.goalOpacity=0,this.opacityDamper=new aT,this.createHitMeshes(),this.updatePositionFromScene(),e.target.add(this),e.target.add(this.hitBox),this.offsetHeight=0}updateSizeFromScene(){let{size:e}=this.scene;this.goalSize.copy(e);let t=Math.sqrt(e.x*e.x+e.z*e.z),i=Math.max(aD.MIN_TOUCH_AREA,.4*t);this.goalSize.x<i&&(this.goalSize.x=i),this.goalSize.z<i&&(this.goalSize.z=i),this.updateGeometry()}updateGeometry(){let e=this.geometry,t=[],i=[],a=this.goalSize.x/2,r=("back"===this.side?this.goalSize.y:this.goalSize.z)/2,s=Math.min(a,r),n=Math.max(.7*aD.BASE_RADIUS,.2*s),o=Math.max(.7*aD.LINE_WIDTH,.025*s);aF(i,a,r,n,o),aF(i,-a,r,n,o),aF(i,-a,-r,n,o),aF(i,a,-r,n,o);let A=i.length/3;for(let e=0;e<A-2;e+=2)t.push(e,e+1,e+3,e,e+3,e+2);let l=A-2;t.push(l,l+1,1,l,1,0),e.setAttribute("position",new tr.qtW(i,3)),e.setIndex(t),e.computeBoundingSphere()}createHitMeshes(){let e=this.goalSize.x/2,t=("back"===this.side?this.goalSize.y:this.goalSize.z)/2,i=Math.min(e,t),a=Math.max(.7*aD.BASE_RADIUS,.2*i);this.hitPlane=new tr.eaF(new tr.bdM(2*(e+a),2*(t+a))),this.hitPlane.visible=!1,this.hitPlane.material.side=tr.$EB,this.add(this.hitPlane),this.hitBox=new tr.eaF(new tr.iNn(this.goalSize.x+2*a,this.goalSize.y+a,this.goalSize.z+2*a)),this.hitBox.visible=!1,this.hitBox.material.side=tr.$EB,this.add(this.hitBox)}updatePositionFromScene(){let{boundingBox:e}=this.scene;switch(e.getCenter(this.position),this.rotation.set(0,0,0),this.side){case"bottom":this.rotateX(-Math.PI/2),this.shadowHeight=e.min.y,this.position.y=this.shadowHeight;break;case"back":this.shadowHeight=e.min.z,this.position.z=this.shadowHeight}if(this.hitBox){let t=(this.side,(this.goalSize.y+aD.BASE_RADIUS)/2);this.hitBox.position.y=t+e.min.y}}updateFromModelChanges(){this.updateSizeFromScene(),this.updatePositionFromScene(),this.updateGeometry(),this.updateHitMeshes(),this.ensureProperOrientation(),this.needsGeometryUpdate=!1,this.lastGeometryUpdateTime=performance.now()}ensureProperOrientation(){"bottom"===this.side?(this.rotation.x=-Math.PI/2,this.rotation.y=0,this.rotation.z=0):"back"===this.side&&(this.rotation.x=0,this.rotation.y=0,this.rotation.z=0)}setScreenSpaceMode(e){e?this.scale.set(aD.SCREEN_SPACE_SCALE,aD.SCREEN_SPACE_SCALE,aD.SCREEN_SPACE_SCALE):this.scale.set(1,1,1)}updateHitMeshes(){if(this.hitPlane&&this.hitBox){let e=this.goalSize.x/2,t=("back"===this.side?this.goalSize.y:this.goalSize.z)/2,i=Math.min(e,t),a=Math.max(.7*aD.BASE_RADIUS,.2*i),r=new tr.bdM(2*(e+a),2*(t+a));this.hitPlane.geometry.dispose(),this.hitPlane.geometry=r;let s=new tr.iNn(this.goalSize.x+2*a,this.goalSize.y+a,this.goalSize.z+2*a);this.hitBox.geometry.dispose(),this.hitBox.geometry=s}}setInteractionState(e,t=!1){this.isActive=e,this.isHovered=t,this.updateVisualState()}updateVisualState(){let e,t;this.isActive?(e=aD.COLORS.ACTIVE_EDGE,t=aD.COLORS.ACTIVE_FILL):this.isHovered?(e=aD.COLORS.EDGE_FALLOFF,t=aD.COLORS.FILL_FALLOFF):(e=aD.COLORS.EDGE_CUTOFF,t=aD.COLORS.FILL_CUTOFF),this.edgeMaterial.color.lerp(e,aD.COLOR_LERP_FACTOR),this.fillMaterial.color.lerp(t,aD.COLOR_LERP_FACTOR)}applyDistanceScaling(e){let t=e.distanceTo(this.position),i=Math.max(aD.MIN_DISTANCE,Math.min(aD.MAX_DISTANCE,t)),a=aD.BASE_SCALE+(i-aD.MIN_DISTANCE)*aD.DISTANCE_SCALE_FACTOR;this.scale.set(a,a,a)}getHit(e,t,i){ak.set(t,-i),this.hitPlane.visible=!0;let a=e.positionAndNormalFromPoint(ak,this.hitPlane);return this.hitPlane.visible=!1,null==a?null:a.position}getExpandedHit(e,t,i){this.hitPlane.scale.set(1e3,1e3,1e3),this.hitPlane.updateMatrixWorld();let a=this.getHit(e,t,i);return this.hitPlane.scale.set(1,1,1),a}controllerIntersection(e,t){this.hitBox.visible=!0;let i=e.hitFromController(t,this.hitBox);return this.hitBox.visible=!1,i}set offsetHeight(e){e-=.001,"back"===this.side?this.position.z=this.shadowHeight+e:this.position.y=this.shadowHeight+e}get offsetHeight(){return"back"===this.side?this.position.z-this.shadowHeight:this.position.y-this.shadowHeight}set show(e){this.goalOpacity=e?aD.MAX_OPACITY:0}updateOpacity(e){let t=this.material,i=this.opacityDamper.update(t.opacity,this.goalOpacity,e,1);this.edgeMaterial.opacity=i,this.fillMaterial.opacity=i*aD.FILL_OPACITY_MULTIPLIER,(this.isActive||this.isHovered)&&(this.edgeMaterial.opacity=i*aD.INTERACTIVE_OPACITY_MULTIPLIER),this.visible=i>0}update(e,t){if(this.updateOpacity(e),!this.currentSize.equals(this.goalSize)){let t=new tr.Pq0;t.x=this.sizeDamper.update(this.currentSize.x,this.goalSize.x,e,1),t.y=this.sizeDamper.update(this.currentSize.y,this.goalSize.y,e,1),t.z=this.sizeDamper.update(this.currentSize.z,this.goalSize.z,e,1),t.distanceTo(this.currentSize)>aD.SIZE_UPDATE_THRESHOLD&&(this.currentSize.copy(t),this.needsGeometryUpdate=!0)}let i=performance.now();this.needsGeometryUpdate&&i-this.lastGeometryUpdateTime>aD.GEOMETRY_UPDATE_DEBOUNCE&&(this.updateGeometry(),this.updateHitMeshes(),this.needsGeometryUpdate=!1,this.lastGeometryUpdateTime=i),t&&this.applyDistanceScaling(t),this.updateVisualState()}getSize(){return this.goalSize.clone()}dispose(){let{geometry:e,material:t}=this.hitPlane;
414e.dispose(),t.dispose(),this.hitBox.geometry.dispose(),this.hitBox.material.dispose(),this.geometry.dispose(),this.edgeMaterial.dispose(),this.fillMaterial.dispose(),this.hitBox.removeFromParent(),this.removeFromParent()}}let aP=(e,t)=>({type:"number",number:e,unit:t}),aU=(()=>{let e={};return t=>{let i=t;if(i in e)return e[i];let a=[],r=0;for(;t;){if(++r>1e3){t="";break}let e=a_(t),i=e.nodes[0];if(null==i||0===i.terms.length)break;a.push(i),t=e.remainingInput}return e[i]=a}})(),a_=(()=>{let e=/^(\-\-|[a-z\u0240-\uffff])/i,t=/^([\*\+\/]|[\-]\s)/i,i=/^[\),]/;return a=>{let r=[];for(;a.length&&(a=a.trim(),!i.test(a));)if("("===a[0]){let{nodes:e,remainingInput:t}=aq(a);a=t,r.push({type:"function",name:{type:"ident",value:"calc"},arguments:e})}else if(e.test(a)){let e=aN(a),t=e.nodes[0];if("("===(a=e.remainingInput)[0]){let{nodes:e,remainingInput:i}=aq(a);r.push({type:"function",name:t,arguments:e}),a=i}else r.push(t)}else if(t.test(a))r.push({type:"operator",value:a[0]}),a=a.slice(1);else{let{nodes:e,remainingInput:t}="#"===a[0]?aG(a):aO(a);if(0===e.length)break;r.push(e[0]),a=t}return{nodes:[{type:"expression",terms:r}],remainingInput:a}}})(),aN=(()=>{let e=/[^a-z0-9_\-\u0240-\uffff]/i;return t=>{let i=t.match(e);return{nodes:[{type:"ident",value:null==i?t:t.substr(0,i.index)}],remainingInput:null==i?"":t.substr(i.index)}}})(),aO=(()=>{let e=/[\+\-]?(\d+[\.]\d+|\d+|[\.]\d+)([eE][\+\-]?\d+)?/,t=/^[a-z%]+/i,i=/^(m|mm|cm|rad|deg|[%])$/;return a=>{let r=a.match(e),s=null==r?"0":r[0],n=(a=null==s?a:a.slice(s.length)).match(t),o=null!=n&&""!==n[0]?n[0]:null,A=null==n?a:a.slice(o.length);return null==o||i.test(o)||(o=null),{nodes:[{type:"number",number:parseFloat(s)||0,unit:o}],remainingInput:A}}})(),aG=(()=>{let e=/^[a-f0-9]*/i;return t=>{let i=(t=t.slice(1).trim()).match(e);return{nodes:null==i?[]:[{type:"hex",value:i[0]}],remainingInput:null==i?t:t.slice(i[0].length)}}})(),aq=e=>{let t=[];for(e=e.slice(1).trim();e.length;){let i=a_(e);if(t.push(i.nodes[0]),","===(e=i.remainingInput.trim())[0])e=e.slice(1).trim();else if(")"===e[0]){e=e.slice(1);break}}return{nodes:t,remainingInput:e}},aH=Symbol("visitedTypes");class aj{constructor(e){this[aH]=e}walk(e,t){let i=e.slice();for(;i.length;){let e=i.shift();switch(this[aH].indexOf(e.type)>-1&&t(e),e.type){case"expression":i.unshift(...e.terms);break;case"function":i.unshift(e.name,...e.arguments)}}}}let az=Object.freeze({type:"number",number:0,unit:null}),aK=(e,t=0)=>{let{number:i,unit:a}=e;if(isFinite(i)){if("rad"===e.unit||null==e.unit)return e}else i=t,a="rad";return{type:"number",number:("deg"===a&&null!=i?i:0)*Math.PI/180,unit:"rad"}},aV=(e,t=0)=>{let i,{number:a,unit:r}=e;if(isFinite(a)){if("m"===e.unit)return e}else a=t,r="m";switch(r){default:i=1;break;case"cm":i=.01;break;case"mm":i=.001}return{type:"number",number:i*a,unit:"m"}},aJ=(()=>{let e=e=>e,t={rad:e,deg:aK,m:e,mm:aV,cm:aV};return(e,i=az)=>{isFinite(e.number)||(e.number=i.number,e.unit=i.unit);let{unit:a}=e;if(null==a)return e;let r=t[a];return null==r?i:r(e)}})(),aY=Symbol("evaluate"),aW=Symbol("lastValue");class a${constructor(){this[eM]=null}static evaluatableFor(e,t=az){if(e instanceof a$)return e;if("number"===e.type)return"%"===e.unit?new a0(e,t):e;switch(e.name.value){case"calc":return new a3(e,t);case"env":return new a2(e)}return az}static evaluate(e){return e instanceof a$?e.evaluate():e}static isConstant(e){return!(e instanceof a$)||e.isConstant}static applyIntrinsics(e,t){let{basis:i,keywords:a}=t,{auto:r}=a;return i.map((t,i)=>{let s=null==r[i]?t:r[i],n=e[i]?e[i]:s;if("ident"===n.type){let e=n.value;e in a&&(n=a[e][i])}return((null==n||"ident"===n.type)&&(n=s),"%"===n.unit)?aP(n.number/100*t.number,t.unit):(n=aJ(n,t)).unit!==t.unit?t:n})}get isConstant(){return!1}evaluate(){return this.isConstant&&null!=this[aW]||(this[aW]=this[aY]()),this[aW]}}eM=aW;let aX=Symbol("percentage"),aZ=Symbol("basis");class a0 extends a${constructor(e,t){super(),this[aX]=e,this[aZ]=t}get isConstant(){return!0}[aY](){return aP(this[aX].number/100*this[aZ].number,this[aZ].unit)}}let a1=Symbol("identNode");class a2 extends a${constructor(e){super(),this[eT]=null;let t=e.arguments.length?e.arguments[0].terms[0]:null;null!=t&&"ident"===t.type&&(this[a1]=t)}get isConstant(){return!1}[(eT=a1,aY)](){return null!=this[a1]&&"window-scroll-y"===this[a1].value?{type:"number",number:window.pageYOffset/(Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight)-window.innerHeight)||0,unit:null}:az}}let a8=/[\*\/]/,a9=Symbol("evaluator");class a3 extends a${constructor(e,t=az){if(super(),this[eD]=null,1!==e.arguments.length)return;let i=e.arguments[0].terms.slice(),a=[];for(;i.length;){let e=i.shift();if(a.length>0){let i=a[a.length-1];if("operator"===i.type&&a8.test(i.value)){let i=a.pop(),r=a.pop();if(null==r)return;a.push(new a7(i,a$.evaluatableFor(r,t),a$.evaluatableFor(e,t)));continue}}a.push("operator"===e.type?e:a$.evaluatableFor(e,t))}for(;a.length>2;){let[e,i,r]=a.splice(0,3);if("operator"!==i.type)return;a.unshift(new a7(i,a$.evaluatableFor(e,t),a$.evaluatableFor(r,t)))}1===a.length&&(this[a9]=a[0])}get isConstant(){return null==this[a9]||a$.isConstant(this[a9])}[(eD=a9,aY)](){return null!=this[a9]?a$.evaluate(this[a9]):az}}let a4=Symbol("operator"),a5=Symbol("left"),a6=Symbol("right");class a7 extends a${constructor(e,t,i){super(),this[a4]=e,this[a5]=t,this[a6]=i}get isConstant(){return a$.isConstant(this[a5])&&a$.isConstant(this[a6])}[aY](){let e,t=aJ(a$.evaluate(this[a5])),i=aJ(a$.evaluate(this[a6])),{number:a,unit:r}=t,{number:s,unit:n}=i;if(null!=n&&null!=r&&n!=r)return az;switch(this[a4].value){case"+":e=a+s;break;case"-":e=a-s;break;case"/":e=a/s;break;case"*":e=a*s;break;default:return az}return{type:"number",number:e,unit:r||n}}}let re=Symbol("evaluatables"),rt=Symbol("intrinsics");class ri extends a${constructor(e,t){super(),this[rt]=t;let i=e[0],a=null!=i?i.terms:[];this[re]=t.basis.map((e,t)=>{let i=a[t];return null==i?{type:"ident",value:"auto"}:"ident"===i.type?i:a$.evaluatableFor(i,e)})}get isConstant(){for(let e of this[re])if(!a$.isConstant(e))return!1;return!0}[aY](){let e=this[re].map(e=>a$.evaluate(e));
414return a$.applyIntrinsics(e,this[rt]).map(e=>e.number)}}let ra=Symbol("instances"),rr=Symbol("activateListener"),rs=Symbol("deactivateListener"),rn=Symbol("notifyInstances"),ro=Symbol("notify"),rA=Symbol("callback");class rl{static[rn](){for(let e of rl[ra])e[ro]()}static[(ek=ra,rr)](){window.addEventListener("scroll",this[rn],{passive:!0})}static[rs](){window.removeEventListener("scroll",this[rn])}constructor(e){this[rA]=e}observe(){0===rl[ra].size&&rl[rr](),rl[ra].add(this)}disconnect(){rl[ra].delete(this),0===rl[ra].size&&rl[rs]()}[ro](){this[rA]()}}rl[ek]=new Set;let rh=Symbol("computeStyleCallback"),rc=Symbol("astWalker"),rd=Symbol("dependencies"),rg=Symbol("onScroll");class ru{constructor(e){this[eF]={},this[eL]=new aj(["function"]),this[eP]=()=>{this[rh]({relatedState:"window-scroll"})},this[rh]=e}observeEffectsFor(e){let t={},i=this[rd];for(let a in this[rc].walk(e,e=>{let{name:a}=e,r=e.arguments[0].terms[0];if("env"===a.value&&null!=r&&"ident"===r.type&&"window-scroll-y"===r.value&&null==t["window-scroll"]){let e="window-scroll"in i?i["window-scroll"]:new rl(this[rg]);e.observe(),delete i["window-scroll"],t["window-scroll"]=e}}),i)i[a].disconnect();this[rd]=t}dispose(){for(let e in this[rd])this[rd][e].disconnect()}}eF=rd,eL=rc,eP=rg;let rp=e=>{let t=e.observeEffects||!1,i=e.intrinsics instanceof Function?e.intrinsics:()=>e.intrinsics;return(a,r)=>{let s=a.updated,n=a.connectedCallback,o=a.disconnectedCallback,A=Symbol(`${r}StyleEffector`),l=Symbol(`${r}StyleEvaluator`),h=Symbol(`${r}UpdateEvaluator`),c=Symbol(`${r}EvaluateAndSync`);Object.defineProperties(a,{[A]:{value:null,writable:!0},[l]:{value:null,writable:!0},[h]:{value:function(){let e=aU(this[r]);this[l]=new ri(e,i(this)),null==this[A]&&t&&(this[A]=new ru(()=>this[c]())),null!=this[A]&&this[A].observeEffectsFor(e)}},[c]:{value:function(){if(null==this[l])return;let t=this[l].evaluate();this[e.updateHandler](t)}},updated:{value:function(e){e.has(r)&&(this[h](),this[c]()),s.call(this,e)}},connectedCallback:{value:function(){n.call(this),this.requestUpdate(r,this[r])}},disconnectedCallback:{value:function(){o.call(this),null!=this[A]&&(this[A].dispose(),this[A]=null)}}})}},rf=e=>e<.5?2*e*e:-1+(4-2*e)*e,rm=(e,t,i=rf)=>a=>e+(t-e)*i(a),rb=e=>{let t=[],i=[],a=e.initialValue;for(let r=0;r<e.keyframes.length;++r){let s=e.keyframes[r],{value:n,frames:o}=s,A=rm(a,n,s.ease||rf);t.push(A),i.push(o),a=n}return((e,t)=>{let i=t.map((e=>t=>e+=t)(0));return t=>{t=tC(t,0,1)*i[i.length-1];let a=i.findIndex(e=>e>=t),r=a<1?0:i[a-1],s=i[a];return e[a]((t-r)/(s-r))}})(t,i)};var rE=function(e,t,i,a){var r,s=arguments.length,n=s<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,a);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(s<3?r(n):s>3?r(t,i,n):r(t,i))||n);return s>3&&n&&Object.defineProperty(t,i,n),n};let rI=rb({initialValue:0,keyframes:[{frames:5,value:-1},{frames:1,value:-1},{frames:8,value:1},{frames:1,value:1},{frames:5,value:0},{frames:18,value:0}]}),rC=rb({initialValue:0,keyframes:[{frames:1,value:1},{frames:5,value:1},{frames:1,value:0},{frames:6,value:0}]}),ry="0deg 75deg 105%",rB=["front","right","back","left"],rw=["upper-","","lower-"],rv={AUTO:"auto"},rx={BASIC:"basic",WIGGLE:"wiggle"},rS={NONE:"none"},rQ=()=>({basis:[aK(aP(30,"deg"))],keywords:{auto:[null]}}),rR=()=>({basis:[aK(aP(12,"deg"))],keywords:{auto:[null]}}),rM=(()=>{let e=aU(ry)[0].terms,t=aJ(e[0]),i=aJ(e[1]);return e=>({basis:[t,i,aP(e[At].idealCameraDistance(),"m")],keywords:{auto:[null,null,aP(105,"%")]}})})(),rT=e=>{let t=2.2*e[At].boundingSphere.radius;return{basis:[aP(-1/0,"rad"),aP(0,"rad"),aP(t,"m")],keywords:{auto:[null,null,null]}}},rD=e=>{let t=new ri([],rM(e)).evaluate()[2];return{basis:[aP(1/0,"rad"),aP(Math.PI,"rad"),aP(t,"m")],keywords:{auto:[null,null,null]}}},rk=e=>{e[At].updateBoundingBoxAndShadowIfDirty();let t=e[At].boundingBox.getCenter(new tr.Pq0);return{basis:[aP(t.x,"m"),aP(t.y,"m"),aP(t.z,"m")],keywords:{auto:[null,null,null]}}},rF=Math.PI/2,rL=Math.PI/3,rP=rF/2,rU=2*Math.PI,r_=Symbol("controls"),rN=Symbol("panElement"),rO=Symbol("promptElement"),rG=Symbol("promptAnimatedContainer"),rq=Symbol("fingerAnimatedContainers"),rH=Symbol("deferInteractionPrompt"),rj=Symbol("updateAria"),rz=Symbol("a11y"),rK=Symbol("updateA11y"),rV=Symbol("updateCameraForRadius"),rJ=Symbol("cancelPrompts"),rY=Symbol("onChange"),rW=Symbol("onPointerChange"),r$=Symbol("waitingToPromptUser"),rX=Symbol("userHasInteracted"),rZ=Symbol("promptElementVisibleTime"),r0=Symbol("lastPromptOffset"),r1=Symbol("cancellationSource"),r2=Symbol("lastSpherical"),r8=Symbol("jumpCamera"),r9=Symbol("initialized"),r3=Symbol("maintainThetaPhi"),r4=Symbol("syncCameraOrbit"),r5=Symbol("syncFieldOfView"),r6=Symbol("syncCameraTarget"),r7=Symbol("syncMinCameraOrbit"),se=Symbol("syncMaxCameraOrbit"),st=Symbol("syncMinFieldOfView"),si=Symbol("syncMaxFieldOfView"),sa=new tr.I9Y,sr=new tr.Pq0,ss=Object.freeze({minimumRadius:0,maximumRadius:1/0,minimumPolarAngle:0,maximumPolarAngle:Math.PI,minimumAzimuthalAngle:-1/0,maximumAzimuthalAngle:1/0,minimumFieldOfView:10,maximumFieldOfView:45,touchAction:"none"}),sn=Math.PI/8,so={USER_INTERACTION:"user-interaction",NONE:"none",AUTOMATIC:"automatic"};class sA extends tr.Qev{constructor(e,t,i){super(),this.camera=e,this.element=t,this.scene=i,this.orbitSensitivity=1,this.zoomSensitivity=1,this.panSensitivity=1,this.inputSensitivity=1,this.changeSource=so.NONE,this._interactionEnabled=!1,this._disableZoom=!1,this.isUserPointing=!1,this.enablePan=!0,this.enableTap=!0,this.panProjection=new tr.dwI,this.panPerPixel=0,this.spherical=new tr.YHV,this.goalSpherical=new tr.YHV,this.thetaDamper=new aT,this.phiDamper=new aT,this.radiusDamper=new aT,this.logFov=Math.log(ss.maximumFieldOfView),this.goalLogFov=this.logFov,this.fovDamper=new aT,this.touchMode=null,this.pointers=[],this.startTime=0,this.startPointerPosition={clientX:0,clientY:0},this.lastSeparation=0,this.touchDecided=!1,this.onContext=e=>{if(this.enablePan)e.preventDefault();else for(let e of this.pointers)this.onPointerUp(new PointerEvent("pointercancel",Object.assign(Object.assign({},this.startPointerPosition),{pointerId:e.id})))},this.touchModeZoom=(e,t)=>{if(!this._disableZoom){let e=this.twoTouchDistance(this.pointers[0],this.pointers[1]),t=.04*this.zoomSensitivity*(this.lastSeparation-e)*50/this.scene.height;this.lastSeparation=e,this.userAdjustOrbit(0,0,t)}this.panPerPixel>0&&this.movePan(e,t)},this.disableScroll=e=>{e.preventDefault()},this.touchModeRotate=(e,t)=>
414{let{touchAction:i}=this._options;if(!this.touchDecided&&"none"!==i){this.touchDecided=!0;let a=Math.abs(e),r=Math.abs(t);if(this.changeSource===so.USER_INTERACTION&&("pan-y"===i&&r>a||"pan-x"===i&&a>r)){this.touchMode=null;return}this.element.addEventListener("touchmove",this.disableScroll,{passive:!1})}this.handleSinglePointerMove(e,t)},this.onPointerDown=e=>{if(this.pointers.length>2)return;let{element:t}=this;0===this.pointers.length&&(t.addEventListener("pointermove",this.onPointerMove),t.addEventListener("pointerup",this.onPointerUp),this.touchMode=null,this.touchDecided=!1,this.startPointerPosition.clientX=e.clientX,this.startPointerPosition.clientY=e.clientY,this.startTime=performance.now());try{t.setPointerCapture(e.pointerId)}catch(e){}this.pointers.push({clientX:e.clientX,clientY:e.clientY,id:e.pointerId}),this.isUserPointing=!1,"touch"===e.pointerType?(this.changeSource=e.altKey?so.AUTOMATIC:so.USER_INTERACTION,this.onTouchChange(e)):(this.changeSource=so.USER_INTERACTION,this.onMouseDown(e)),this.changeSource===so.USER_INTERACTION&&this.dispatchEvent({type:"user-interaction"})},this.onPointerMove=e=>{let t=this.pointers.find(t=>t.id===e.pointerId);if(null==t)return;if("mouse"===e.pointerType&&0===e.buttons)return void this.onPointerUp(e);let i=this.pointers.length,a=(e.clientX-t.clientX)/i,r=(e.clientY-t.clientY)/i;(0!==a||0!==r)&&(t.clientX=e.clientX,t.clientY=e.clientY,"touch"===e.pointerType?(this.changeSource=e.altKey?so.AUTOMATIC:so.USER_INTERACTION,null!==this.touchMode&&this.touchMode(a,r)):(this.changeSource=so.USER_INTERACTION,this.panPerPixel>0?this.movePan(a,r):this.handleSinglePointerMove(a,r)))},this.onPointerUp=e=>{let{element:t}=this,i=this.pointers.findIndex(t=>t.id===e.pointerId);-1!==i&&this.pointers.splice(i,1),this.panPerPixel>0&&!e.altKey&&this.resetRadius(),0===this.pointers.length?(t.removeEventListener("pointermove",this.onPointerMove),t.removeEventListener("pointerup",this.onPointerUp),t.removeEventListener("touchmove",this.disableScroll),this.enablePan&&this.enableTap&&this.recenter(e)):null!==this.touchMode&&this.onTouchChange(e),this.scene.element[rN].style.opacity=0,t.style.cursor="grab",this.panPerPixel=0,this.isUserPointing&&this.dispatchEvent({type:"pointer-change-end"})},this.onWheel=e=>{this.changeSource=so.USER_INTERACTION;let t=e.deltaY*(1==e.deltaMode?18:1)*.04*this.zoomSensitivity/30;this.userAdjustOrbit(0,0,t),e.preventDefault(),this.dispatchEvent({type:"user-interaction"})},this.onKeyDown=e=>{let{changeSource:t}=this;this.changeSource=so.USER_INTERACTION,(e.shiftKey&&this.enablePan?this.panKeyCodeHandler(e):this.orbitZoomKeyCodeHandler(e))?(e.preventDefault(),this.dispatchEvent({type:"user-interaction"})):this.changeSource=t},this._options=Object.assign({},ss),this.setOrbit(0,Math.PI/2,1),this.setFieldOfView(100),this.jumpToGoal()}get interactionEnabled(){return this._interactionEnabled}enableInteraction(){if(!1===this._interactionEnabled){let{element:e}=this;e.addEventListener("pointerdown",this.onPointerDown),e.addEventListener("pointercancel",this.onPointerUp),this._disableZoom||e.addEventListener("wheel",this.onWheel),e.addEventListener("keydown",this.onKeyDown),e.addEventListener("touchmove",()=>{},{passive:!1}),e.addEventListener("contextmenu",this.onContext),this.element.style.cursor="grab",this._interactionEnabled=!0,this.updateTouchActionStyle()}}disableInteraction(){if(!0===this._interactionEnabled){let{element:e}=this;e.removeEventListener("pointerdown",this.onPointerDown),e.removeEventListener("pointermove",this.onPointerMove),e.removeEventListener("pointerup",this.onPointerUp),e.removeEventListener("pointercancel",this.onPointerUp),e.removeEventListener("wheel",this.onWheel),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("contextmenu",this.onContext),e.style.cursor="",this.touchMode=null,this._interactionEnabled=!1,this.updateTouchActionStyle()}}get options(){return this._options}set disableZoom(e){this._disableZoom!=e&&(this._disableZoom=e,!0===e?this.element.removeEventListener("wheel",this.onWheel):this.element.addEventListener("wheel",this.onWheel),this.updateTouchActionStyle())}getCameraSpherical(e=new tr.YHV){return e.copy(this.spherical)}getFieldOfView(){return this.camera.fov}applyOptions(e){Object.assign(this._options,e),this.setOrbit(),this.setFieldOfView(Math.exp(this.goalLogFov))}updateNearFar(e,t){this.camera.far=0===t?2:t,this.camera.near=Math.max(e,this.camera.far/1e3),this.camera.updateProjectionMatrix()}updateAspect(e){this.camera.aspect=e,this.camera.updateProjectionMatrix()}setOrbit(e=this.goalSpherical.theta,t=this.goalSpherical.phi,i=this.goalSpherical.radiu
414s){let{minimumAzimuthalAngle:a,maximumAzimuthalAngle:r,minimumPolarAngle:s,maximumPolarAngle:n,minimumRadius:o,maximumRadius:A}=this._options,{theta:l,phi:h,radius:c}=this.goalSpherical,d=tC(e,a,r);isFinite(a)||isFinite(r)||(this.spherical.theta=this.wrapAngle(this.spherical.theta-d)+d);let g=tC(t,s,n),u=tC(i,o,A);return(d!==l||g!==h||u!==c)&&!!isFinite(d)&&!!isFinite(g)&&!!isFinite(u)&&(this.goalSpherical.theta=d,this.goalSpherical.phi=g,this.goalSpherical.radius=u,this.goalSpherical.makeSafe(),!0)}setRadius(e){this.goalSpherical.radius=e,this.setOrbit()}setFieldOfView(e){let{minimumFieldOfView:t,maximumFieldOfView:i}=this._options;e=tC(e,t,i),this.goalLogFov=Math.log(e)}setDamperDecayTime(e){this.thetaDamper.setDecayTime(e),this.phiDamper.setDecayTime(e),this.radiusDamper.setDecayTime(e),this.fovDamper.setDecayTime(e)}adjustOrbit(e,t,i){let{theta:a,phi:r,radius:s}=this.goalSpherical,{minimumRadius:n,maximumRadius:o,minimumFieldOfView:A,maximumFieldOfView:l}=this._options,h=this.spherical.theta-a,c=Math.PI-.001,d=a-tC(e,-c-h,c-h),g=0===i?0:((i>0?o:n)-s)/(Math.log(i>0?l:A)-this.goalLogFov),u=s+i*(isFinite(g)?g:(o-n)*2);if(this.setOrbit(d,r-t,u),0!==i){let e=this.goalLogFov+i;this.setFieldOfView(Math.exp(e))}}jumpToGoal(){this.update(0,1e4)}update(e,t){if(this.isStationary())return!1;let{maximumPolarAngle:i,maximumRadius:a}=this._options,r=this.spherical.theta-this.goalSpherical.theta;return!(Math.abs(r)>Math.PI)||isFinite(this._options.minimumAzimuthalAngle)||isFinite(this._options.maximumAzimuthalAngle)||(this.spherical.theta-=2*Math.sign(r)*Math.PI),this.spherical.theta=this.thetaDamper.update(this.spherical.theta,this.goalSpherical.theta,t,Math.PI),this.spherical.phi=this.phiDamper.update(this.spherical.phi,this.goalSpherical.phi,t,i),this.spherical.radius=this.radiusDamper.update(this.spherical.radius,this.goalSpherical.radius,t,a),this.logFov=this.fovDamper.update(this.logFov,this.goalLogFov,t,1),this.moveCamera(),!0}updateTouchActionStyle(){let{style:e}=this.element;if(this._interactionEnabled){let{touchAction:t}=this._options;this._disableZoom&&"none"!==t?e.touchAction="manipulation":e.touchAction=t}else e.touchAction=""}isStationary(){return this.goalSpherical.theta===this.spherical.theta&&this.goalSpherical.phi===this.spherical.phi&&this.goalSpherical.radius===this.spherical.radius&&this.goalLogFov===this.logFov}moveCamera(){this.spherical.makeSafe(),this.camera.position.setFromSpherical(this.spherical),this.camera.setRotationFromEuler(new tr.O9p(this.spherical.phi-Math.PI/2,this.spherical.theta,0,"YXZ")),this.camera.fov!==Math.exp(this.logFov)&&(this.camera.fov=Math.exp(this.logFov),this.camera.updateProjectionMatrix())}userAdjustOrbit(e,t,i){this.adjustOrbit(e*this.orbitSensitivity*this.inputSensitivity,t*this.orbitSensitivity*this.inputSensitivity,i*this.inputSensitivity)}wrapAngle(e){let t=(e+Math.PI)/(2*Math.PI);return 2*(t-Math.floor(t))*Math.PI-Math.PI}pixelLengthToSphericalAngle(e){return 2*Math.PI*e/this.scene.height}twoTouchDistance(e,t){let{clientX:i,clientY:a}=e,{clientX:r,clientY:s}=t,n=r-i,o=s-a;return Math.sqrt(n*n+o*o)}handleSinglePointerMove(e,t){let i=this.pixelLengthToSphericalAngle(e),a=this.pixelLengthToSphericalAngle(t);!1===this.isUserPointing&&(this.isUserPointing=!0,this.dispatchEvent({type:"pointer-change-start"})),this.userAdjustOrbit(i,a,0)}initializePan(){let{theta:e,phi:t}=this.spherical,i=e-this.scene.yaw;this.panPerPixel=.018*this.panSensitivity/this.scene.height,this.panProjection.set(-Math.cos(i),-Math.cos(t)*Math.sin(i),0,0,Math.sin(t),0,Math.sin(i),-Math.cos(t)*Math.cos(i),0)}movePan(e,t){let{scene:i}=this,a=sr.set(e,t,0).multiplyScalar(this.inputSensitivity),r=this.spherical.radius*Math.exp(this.logFov)*this.panPerPixel;a.multiplyScalar(r);let s=i.getTarget();s.add(a.applyMatrix3(this.panProjection)),i.boundingSphere.clampPoint(s,s),i.setTarget(s.x,s.y,s.z)}recenter(e){if(performance.now()>this.startTime+300||Math.abs(e.clientX-this.startPointerPosition.clientX)>2||Math.abs(e.clientY-this.startPointerPosition.clientY)>2)return;let{scene:t}=this,i=t.positionAndNormalFromPoint(t.getNDC(e.clientX,e.clientY));if(null==i){let{cameraTarget:e}=t.element;t.element.cameraTarget="",t.element.cameraTarget=e,this.userAdjustOrbit(0,0,1)}else t.target.worldToLocal(i.position),t.setTarget(i.position.x,i.position.y,i.position.z)}resetRadius(){let{scene:e}=this,t=e.positionAndNormalFromPoint(sa.set(0,0));if(null==t)return;e.target.worldToLocal(t.position);let i=e.getTarget(),{theta:a,phi:r}=this.spherical,s=a-e.yaw,n=sr.set(Math.sin(r)*Math.sin(s),Math.cos(r),Math.sin(r)*Math.cos(s)),o=n.dot(t.position.sub(i));i.add(n.multiplyScalar(o)),e.setTarget(i.x,i.y,i.z),this.setOrbit(void 0,void 0,this.goalSpherical.radiu
414s-o)}onTouchChange(e){if(1===this.pointers.length)this.touchMode=this.touchModeRotate;else{if(this._disableZoom){this.touchMode=null,this.element.removeEventListener("touchmove",this.disableScroll);return}this.touchMode=this.touchDecided&&null===this.touchMode?null:this.touchModeZoom,this.touchDecided=!0,this.element.addEventListener("touchmove",this.disableScroll,{passive:!1}),this.lastSeparation=this.twoTouchDistance(this.pointers[0],this.pointers[1]),this.enablePan&&null!=this.touchMode&&(this.initializePan(),e.altKey||(this.scene.element[rN].style.opacity=1))}}onMouseDown(e){this.panPerPixel=0,this.enablePan&&(2===e.button||e.ctrlKey||e.metaKey||e.shiftKey)&&(this.initializePan(),this.scene.element[rN].style.opacity=1),this.element.style.cursor="grabbing"}orbitZoomKeyCodeHandler(e){let t=!0;switch(e.key){case"PageUp":this.userAdjustOrbit(0,0,.04*this.zoomSensitivity);break;case"PageDown":this.userAdjustOrbit(0,0,-.04*this.zoomSensitivity);break;case"ArrowUp":this.userAdjustOrbit(0,-sn,0);break;case"ArrowDown":this.userAdjustOrbit(0,sn,0);break;case"ArrowLeft":this.userAdjustOrbit(-sn,0,0);break;case"ArrowRight":this.userAdjustOrbit(sn,0,0);break;default:t=!1}return t}panKeyCodeHandler(e){this.initializePan();let t=!0;switch(e.key){case"ArrowUp":this.movePan(0,-10);break;case"ArrowDown":this.movePan(0,10);break;case"ArrowLeft":this.movePan(-10,0);break;case"ArrowRight":this.movePan(10,0);break;default:t=!1}return t}}let sl=`<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="#e8eaed"> 415 <path d="M6.4,19L5,17.6L10.6,12L5,6.4L6.4,5L12,10.6L17.6,5L19,6.4L13.4,12L19,17.6L17.6,19L12,13.4L6.4,19Z"/> 416</svg>`,sh=`<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="#e8eaed"> 417 <path d="M7,17V9H5V7H9V17H7ZM11,17V15H13V17H11ZM16,17V9H14V7H18V17H16ZM11,13V11H13V13H11Z"/> 418</svg>`,sc=`<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24" fill="#E1E2E8"> 419 <defs> 420 <clipPath id="clip0"> 421 <path d="M0,0h24v24h-24z"/> 422 </clipPath> 423 </defs> 424 <g clip-path="url(#clip0)"> 425 <path d="M12,22C10.75,22 9.575,21.767 8.475,21.3C7.392,20.817 6.442,20.175 5.625,19.375C4.825,18.558 4.183,17.608 3.7,16.525C3.233,15.425 3,14.25 3,13H5C5,14.95 5.675,16.608 7.025,17.975C8.392,19.325 10.05,20 12,20C13.95,20 15.6,19.325 16.95,17.975C18.317,16.608 19,14.95 19,13C19,11.05 18.317,9.4 16.95,8.05C15.6,6.683 13.95,6 12,6H11.85L13.4,7.55L12,9L8,5L12,1L13.4,2.45L11.85,4H12C13.25,4 14.417,4.242 15.5,4.725C16.6,5.192 17.55,5.833 18.35,6.65C19.167,7.45 19.808,8.4 20.275,9.5C20.758,10.583 21,11.75 21,13C21,14.25 20.758,15.425 20.275,16.525C19.808,17.608 19.167,18.558 18.35,19.375C17.55,20.175 16.6,20.817 15.5,21.3C14.417,21.767 13.25,22 12,22Z"/> 426 </g> 427</svg>`,sd={width:.16,height:.07,cornerRadius:.03,opacity:1,color:0,minDistance:.5,maxDistance:10,baseScale:1,distanceScaleFactor:.3},sg={size:.05,zOffset:.01,spacing:.07},su={canvasSize:128,filter:tr.k6q};class sp extends tr.B69{constructor(){super(),this.isActualSize=!1,this.preRenderIcons(),this.createPanel(),this.createButtons(),this.opacityDamper=new aT,this.goalOpacity=sd.opacity}createPanel(){let e=this.createPanelShape(),t=new tr.MSw(e),i=new tr.V9B({color:sd.color,opacity:sd.opacity,transparent:!0});this.panelMesh=new tr.eaF(t,i),this.panelMesh.name="MenuPanel",this.add(this.panelMesh)}createButtons(){this.exitButton=this.createButton("close"),this.exitButton.name="ExitButton",this.exitButton.position.set(sg.spacing/2,0,sg.zOffset),this.add(this.exitButton),this.toggleButton=this.createButton("view-real-size"),this.toggleButton.name="ToggleButton",this.toggleButton.position.set(-sg.spacing/2,0,sg.zOffset),this.add(this.toggleButton)}createPanelShape(){let e=new tr.ypk,{width:t,height:i,cornerRadius:a}=sd;return e.moveTo(-t/2+a,-i/2),e.lineTo(t/2-a,-i/2),e.quadraticCurveTo(t/2,-i/2,t/2,-i/2+a),e.lineTo(t/2,i/2-a),e.quadraticCurveTo(t/2,i/2,t/2-a,i/2),e.lineTo(-t/2+a,i/2),e.quadraticCurveTo(-t/2,i/2,-t/2,i/2-a),e.lineTo(-t/2,-i/2+a),e.quadraticCurveTo(-t/2,-i/2,-t/2+a,-i/2),e}preRenderIcons(){[{key:"close",svg:sl},{key:"view-real-size",svg:sh},{key:"replay",svg:sc}
427].forEach(({key:e,svg:t})=>{sp.iconTextures.has(e)||this.createTextureFromSvg(t,e)})}createTextureFromSvg(e,t){let i=document.createElement("canvas");i.width=su.canvasSize,i.height=su.canvasSize;let a=i.getContext("2d"),r=new Image,s=new Blob([e],{type:"image/svg+xml"}),n=URL.createObjectURL(s);r.onload=()=>{a.drawImage(r,0,0,su.canvasSize,su.canvasSize);let e=new tr.GOR(i);e.needsUpdate=!0,e.minFilter=su.filter,sp.iconTextures.set(t,e),URL.revokeObjectURL(n)},r.src=n}createButton(e){let t=new tr.V9B({transparent:!0}),i=new tr.bdM(sg.size,sg.size),a=new tr.eaF(i,t),r=sp.iconTextures.get(e);if(r)a.material.map=r,a.material.needsUpdate=!0;else{this.createTextureFromSvg("close"===e?sl:"view-real-size"===e?sh:sc,e);let t=()=>{let i=sp.iconTextures.get(e);i?(a.material.map=i,a.material.needsUpdate=!0):setTimeout(t,10)};t()}return a}exitButtonControllerIntersection(e,t){return e.hitFromController(t,this.exitButton)}scaleModeButtonControllerIntersection(e,t){return e.hitFromController(t,this.toggleButton)}handleScaleToggle(e,t,i,a){if(!e)return null;this.isActualSize=!this.isActualSize;let r=this.isActualSize?"replay":"view-real-size";return this.updateScaleModeButtonLabel(r),Math.max(i,Math.min(a,this.isActualSize?1:t))}updateScaleModeButtonLabel(e){let t=sp.iconTextures.get(e);t&&(this.toggleButton.material.map=t,this.toggleButton.material.needsUpdate=!0)}updatePosition(e,t){if(!t)return;let i=new tr.Pq0;t.getWorldPosition(i);let a=t.getSize(),r=Math.max(.5,Math.min(2,Math.min(a.x,a.z)/1)),s=new tr.Pq0().copy(e.position).sub(i);s.y=0,s.normalize();let n=new tr.Pq0().copy(i).add(new tr.Pq0(0,-.2*r,0)).add(s.multiplyScalar(.9*r));this.position.copy(n);let o=e.position.distanceTo(n),A=Math.max(sd.minDistance,Math.min(sd.maxDistance,o)),l=sd.baseScale+(A-sd.minDistance)*sd.distanceScaleFactor;this.scale.set(l,l,l),this.lookAt(e.position)}set show(e){this.goalOpacity=e?sd.opacity:0}updateOpacity(e){let t=this.panelMesh.material.opacity,i=this.opacityDamper.update(t,this.goalOpacity,e,1);this.traverse(e=>{if(e instanceof tr.eaF){let t=e.material;t.transparent&&(t.opacity=i)}}),this.visible=i>0}dispose(){var e;this.children.forEach(e=>{e instanceof tr.eaF&&(e.geometry&&e.geometry.dispose(),(Array.isArray(e.material)?e.material:[e.material]).forEach(e=>{e&&("map"in e&&e.map instanceof tr.GOR&&e.map.dispose(),e.dispose())}))}),null==(e=this.parent)||e.remove(this)}}sp.iconTextures=new Map;let sf=new tr.Pq0(0,1,0),sm={NOT_PRESENTING:"not-presenting",SESSION_STARTED:"session-started",OBJECT_PLACED:"object-placed",FAILED:"failed"},sb={TRACKING:"tracking",NOT_TRACKING:"not-tracking"},sE=new tr.Pq0,sI=new tr.PTz,sC=new tr.kn4,sy=new tr.Pq0,sB=new tr.ubm(45,1,.1,100),sw=new tr.LoY().setFromPoints([new tr.Pq0(0,0,0),new tr.Pq0(0,0,-1)]),sv={SCREEN_SPACE:"screen-space",WORLD_SPACE:"world-space"};class sx extends tr.Qev{isWorldSpaceReady(){return this.xrMode===sv.WORLD_SPACE&&this.worldSpaceInitialPlacementDone}constructor(e){super(),this.renderer=e,this.currentSession=null,this.placeOnWall=!1,this.placementBox=null,this.menuPanel=null,this.lastTick=null,this.turntableRotation=null,this.oldShadowIntensity=null,this.frame=null,this.initialHitSource=null,this.transientHitTestSource=null,this.inputSource=null,this._presentedScene=null,this.resolveCleanup=null,this.exitWebXRButtonContainer=null,this.overlay=null,this.xrLight=null,this.xrMode=null,this.xrController1=null,this.xrController2=null,this.selectedXRController=null,this.tracking=!0,this.frames=0,this.initialized=!1,this.oldTarget=new tr.Pq0,this.placementComplete=!1,this.isTranslating=!1,this.isRotating=!1,this.isTwoHandInteraction=!1,this.lastDragPosition=new tr.Pq0,this.deltaRotation=new tr.PTz,this.scaleLine=new tr.N1A(sw),this.firstRatio=0,this.lastAngle=0,this.goalPosition=new tr.Pq0,this.goalYaw=0,this.goalScale=1,this.xDamper=new aT,this.yDamper=new aT,this.zDamper=new aT,this.yawDamper=new aT,this.pitchDamper=new aT,this.rollDamper=new aT,this.scaleDamper=new aT,this.wasTwoFingering=!1,this.worldSpaceInitialPlacementDone=!1,this.initialModelScale=1,this.minScale=1,this.maxScale=1,this.onExitWebXRButtonContainerClick=()=>this.stopPresenting(),this.onControllerSelectStart=e=>{var t,i,a;let r=this.presentedScene,s=e.target,n=this.menuPanel;if(null!=this.menuPanel.exitButtonControllerIntersection(r,s)){null==(t=this.menuPanel)||t.dispose(),this.stopPresenting();return}if(null!=this.menuPanel.scaleModeButtonControllerIntersection(r,s)){let e=this.menuPanel.handleScaleToggle(this.worldS
427paceInitialPlacementDone,this.initialModelScale,this.minScale,this.maxScale);null!==e&&(this.goalScale=e);return}n&&(n.show=!1);let o=this.placementBox.controllerIntersection(r,s);if(null!=o){let e=new tr.NRn().setFromObject(r.scenePivot).min.y+.2;if(o.point.y<=e)null!=this.selectedXRController?(this.selectedXRController.userData.line.visible=!1,r.canScale&&this.isWorldSpaceReady()&&(this.isTwoHandInteraction=!0,this.firstRatio=this.controllerSeparation()/r.scenePivot.scale.x,this.scaleLine.visible=!0)):s.attach(r.scenePivot),this.selectedXRController=s,r.setShadowIntensity(.01);else if(s==this.xrController1?this.xrController1.userData.isSelected=!0:s==this.xrController2&&(this.xrController2.userData.isSelected=!0),(null==(i=this.xrController1)?void 0:i.userData.isSelected)&&(null==(a=this.xrController2)?void 0:a.userData.isSelected))r.canScale&&this.isWorldSpaceReady()&&(this.isTwoHandInteraction=!0,this.firstRatio=this.controllerSeparation()/r.scenePivot.scale.x,this.scaleLine.visible=!0);else{let e=s===this.xrController1?this.xrController2:this.xrController1;s.userData.initialX=s.position.x,e.userData.turning=!1,s.userData.turning=!0,s.userData.line.visible=!1}}},this.onControllerSelectEnd=e=>{let t=e.target;if(t.userData.turning=!1,t.userData.line.visible=!0,this.isTwoHandInteraction=!1,this.scaleLine.visible=!1,t==this.xrController1?this.xrController1.userData.isSelected=!1:t==this.xrController2&&(this.xrController2.userData.isSelected=!1),null!=this.selectedXRController&&this.selectedXRController!=t)return;let i=this.presentedScene;i.attach(i.scenePivot),this.selectedXRController=null,this.goalYaw=Math.atan2(i.scenePivot.matrix.elements[8],i.scenePivot.matrix.elements[10]),this.goalPosition.x=i.scenePivot.position.x,this.goalPosition.z=i.scenePivot.position.z,this.isWorldSpaceReady()&&(this.goalPosition.y=i.scenePivot.position.y),this.menuPanel.show=!0},this.onUpdateScene=()=>{null!=this.placementBox&&this.isPresenting&&(this.placementBox.updateFromModelChanges(),this.placementBox.setScreenSpaceMode(this.xrMode===sv.SCREEN_SPACE)),this.xrMode!==sv.SCREEN_SPACE&&(this.menuPanel&&(this.menuPanel.dispose(),this.menuPanel=null),this.menuPanel=new sp,this.presentedScene.add(this.menuPanel),this.menuPanel.updatePosition(this.presentedScene.getCamera(),this.placementBox))},this.onSelectStart=e=>{let t=this.transientHitTestSource;if(null==t)return;let i=this.frame.getHitTestResultsForTransientInput(t),a=this.presentedScene,r=this.placementBox;if(1===i.length){this.inputSource=e.inputSource;let{axes:t}=this.inputSource.gamepad,i=r.getHit(this.presentedScene,t[0],t[1]);r.show=!0,null!=i?(this.isTranslating=!0,this.lastDragPosition.copy(i)):!1===this.placeOnWall&&(this.isRotating=!0,this.lastAngle=1.5*t[0])}else if(2===i.length){r.show=!0,this.isTwoHandInteraction=!0;let{separation:e,angle:t}=this.fingerPolar(i);this.lastAngle=t,0===this.firstRatio&&(this.firstRatio=e/a.scenePivot.scale.x),a.canScale&&this.setScale(e);return}},this.onSelectEnd=()=>{this.isTranslating=!1,this.isRotating=!1,this.isTwoHandInteraction=!1,this.inputSource=null,this.goalPosition.y+=this.placementBox.offsetHeight*this.presentedScene.scale.x,this.placementBox.show=!1},this.onBeforeXRSelect=e=>{for(let t of e.composedPath())if(t instanceof HTMLElement){let i=t.tagName.toLowerCase();if("input"===i||"button"===i||"select"===i||"textarea"===i||"a"===i||t.hasAttribute("data-pointer-coalesce")||t.classList.contains("interactive")){e.preventDefault();break}}},this.threeRenderer=e.threeRenderer,this.threeRenderer.xr.enabled=!0}async resolveARSession(){tb();let e=await navigator.xr.requestSession("immersive-ar",{requiredFeatures:[],optionalFeatures:["hit-test","dom-overlay","light-estimation"],domOverlay:this.overlay?{root:this.overlay}:void 0});return this.threeRenderer.xr.setReferenceSpaceType("local"),await this.threeRenderer.xr.setSession(e),this.threeRenderer.xr.cameraAutoUpdate=!1,e}get presentedScene(){return this._presentedScene}async supportsPresentation(){try{return tb(),await navigator.xr.isSessionSupported("immersive-ar")}catch(e){return console.warn("Request to present in WebXR denied:"),console.warn(e),console.warn("Falling back to next ar-mode"),!1}}async present(e,t=!1){this.isPresenting&&console.warn("Cannot present while a model is already presenting");let i=new Promise((e,t)=>
427{requestAnimationFrame(()=>e())});e.setHotspotsVisibility(!1),e.queueRender(),await i,this._presentedScene=e,this.overlay=e.element.shadowRoot.querySelector("div.default"),null!=this.overlay&&this.overlay.addEventListener("beforexrselect",this.onBeforeXRSelect),!0===t&&(this.xrLight=new aM(this.threeRenderer),this.xrLight.addEventListener("estimationstart",()=>{if(!this.isPresenting||null==this.xrLight)return;let e=this.presentedScene;e.add(this.xrLight),e.environment=this.xrLight.environment}));let a=await this.resolveARSession();a.addEventListener("end",()=>{this.postSessionCleanup()},{once:!0});let r=e.element.shadowRoot.querySelector(".slot.exit-webxr-ar-button");r.classList.add("enabled"),r.addEventListener("click",this.onExitWebXRButtonContainerClick),this.exitWebXRButtonContainer=r;let s=await a.requestReferenceSpace("viewer");this.xrMode=a.interactionMode,this.tracking=!0,this.frames=0,this.initialized=!1,this.turntableRotation=e.yaw,this.goalYaw=e.yaw,this.goalScale=1,e.setBackground(null),this.oldShadowIntensity=e.shadowIntensity,e.setShadowIntensity(.01),this.oldTarget.copy(e.getTarget()),e.element.addEventListener("load",this.onUpdateScene);let n=20*Math.PI/180,o=!0===this.placeOnWall?void 0:new XRRay(new DOMPoint(0,0,0),{x:0,y:-Math.sin(n),z:-Math.cos(n)});a.requestHitTestSource({space:s,offsetRay:o}).then(e=>{this.initialHitSource=e}),this.xrMode!==sv.SCREEN_SPACE&&(this.setupXRControllers(),this.xDamper.setDecayTime(150),this.yDamper.setDecayTime(150),this.zDamper.setDecayTime(150),this.yawDamper.setDecayTime(150),this.pitchDamper.setDecayTime(150),this.rollDamper.setDecayTime(150),this.scaleDamper.setDecayTime(150)),this.currentSession=a,this.placementBox=new aL(e,this.placeOnWall?"back":"bottom"),this.placementBox&&this.placementBox.setScreenSpaceMode(this.xrMode===sv.SCREEN_SPACE),this.placementComplete=!1,this.xrMode!==sv.SCREEN_SPACE&&(this.menuPanel=new sp,e.add(this.menuPanel),this.menuPanel.updatePosition(e.getCamera(),this.placementBox)),this.lastTick=performance.now(),this.dispatchEvent({type:"status",status:sm.SESSION_STARTED})}setupXRControllerLine(e){if(!e.userData.line){let t=new tr.N1A(sw);t.name="line",t.scale.z=5,e.userData.turning=!1,e.userData.line=t,e.add(t)}}setupController(e){this.setupXRControllerLine(e),e.addEventListener("selectstart",this.onControllerSelectStart),e.addEventListener("selectend",this.onControllerSelectEnd)}setupXRControllers(){this.xrController1=this.threeRenderer.xr.getController(0),this.xrController2=this.threeRenderer.xr.getController(1),this.setupController(this.xrController1),this.setupController(this.xrController2),this.scaleLine.name="scale line",this.scaleLine.visible=!1,this.xrController1.add(this.scaleLine);let e=this.presentedScene;e.add(this.xrController1),e.add(this.xrController2)}hover(e){if(this.xrMode===sv.SCREEN_SPACE||this.selectedXRController==e)return!1;let t=this.presentedScene,i=this.placementBox.controllerIntersection(t,e);
427return e.userData.line.scale.z=null==i?5:i.distance,null!=i}controllerSeparation(){return this.xrController1.position.distanceTo(this.xrController2.position)}async stopPresenting(){if(!this.isPresenting)return;let e=new Promise(e=>{this.resolveCleanup=e});try{await this.currentSession.end(),await e}catch(e){console.warn("Error while trying to end WebXR AR session"),console.warn(e),this.postSessionCleanup()}}get isPresenting(){return null!=this.presentedScene}get target(){return this.oldTarget}updateTarget(){let e=this.presentedScene;if(null!=e){let t=e.getTarget();this.oldTarget.copy(t),this.placeOnWall?t.z=e.boundingBox.min.z:t.y=e.boundingBox.min.y,e.setTarget(t.x,t.y,t.z)}}cleanupXRController(e){e.userData.turning=!1,e.userData.line.visible=!0,e.removeEventListener("selectstart",this.onControllerSelectStart),e.removeEventListener("selectend",this.onControllerSelectEnd),e.removeFromParent()}postSessionCleanup(){let e=this.currentSession;null!=e&&(e.removeEventListener("selectstart",this.onSelectStart),e.removeEventListener("selectend",this.onSelectEnd),this.currentSession=null);let t=this.presentedScene;if(this._presentedScene=null,null!=t){let{element:e}=t;null!=this.xrLight&&(t.remove(this.xrLight),this.xrLight.dispose(),this.xrLight=null),null!=this.menuPanel&&(this.menuPanel.dispose(),this.menuPanel=null),t.add(t.scenePivot),t.scenePivot.quaternion.set(0,0,0,1),t.scenePivot.position.set(0,0,0),t.scenePivot.scale.set(1,1,1),t.setShadowOffset(0);let i=this.turntableRotation;null!=i&&(t.yaw=i);let a=this.oldShadowIntensity;null!=a&&t.setShadowIntensity(a),t.setEnvironmentAndSkybox(e[tw],e[tv]);let r=this.oldTarget;t.setTarget(r.x,r.y,r.z),t.xrCamera=null,t.element.removeEventListener("load",this.onUpdateScene),t.orientHotspots(0);let{width:s,height:n}=e.getBoundingClientRect();t.setSize(s,n),requestAnimationFrame(()=>{t.element.dispatchEvent(new CustomEvent("camera-change",{detail:{source:so.NONE}}))})}this.renderer.height=0;let i=this.exitWebXRButtonContainer;null!=i&&(i.classList.remove("enabled"),i.removeEventListener("click",this.onExitWebXRButtonContainerClick),this.exitWebXRButtonContainer=null);let a=this.transientHitTestSource;null!=a&&(a.cancel(),this.transientHitTestSource=null);let r=this.initialHitSource;null!=r&&(r.cancel(),this.initialHitSource=null),null!=this.placementBox&&(this.placementBox.dispose(),this.placementBox=null),this.xrMode!==sv.SCREEN_SPACE&&(null!=this.xrController1&&(this.cleanupXRController(this.xrController1),this.xrController1=null),null!=this.xrController2&&(this.cleanupXRController(this.xrController2),this.xrController2=null),this.selectedXRController=null,this.scaleLine.visible=!1),this.isTranslating=!1,this.isRotating=!1,this.isTwoHandInteraction=!1,this.lastTick=null,this.turntableRotation=null,this.oldShadowIntensity=null,this.frame=null,this.inputSource=null,null!=this.overlay&&(this.overlay.removeEventListener("beforexrselect",this.onBeforeXRSelect),this.overlay=null),this.worldSpaceInitialPlacementDone=!1,null!=this.resolveCleanup&&this.resolveCleanup(),this.dispatchEvent({type:"status",status:sm.NOT_PRESENTING})}updateView(e){let t=this.presentedScene,i=this.threeRenderer.xr;i.updateCamera(sB),t.xrCamera=i.getCamera();let{elements:a}=t.getCamera().matrixWorld;if(t.orientHotspots(Math.atan2(a[1],a[5])),this.initialized||(this.placeInitially(),this.initialized=!0),e.requestViewportScale&&e.recommendedViewportScale){let t=e.recommendedViewportScale;e.requestViewportScale(Math.max(t,.25))}let r=i.getBaseLayer();if(null!=r){let t=r instanceof XRWebGLLayer?r.getViewport(e):i.getBinding().getViewSubImage(r,e).viewport;this.threeRenderer.setViewport(t.x,t.y,t.width,t.height)}}placeInitially(){let e=this.presentedScene,{scenePivot:t,element:i}=e,{position:a}=t,r=e.getCamera(),{width:s,height:n}=this.overlay.getBoundingClientRect();e.setSize(s,n),r.projectionMatrixInverse.copy(r.projectionMatrix).invert();let{theta:o}=i.getCameraOrbit(),A=r.getWorldDirection(sE);if(e.yaw=Math.atan2(-A.x,-A.z)-o,this.goalYaw=e.yaw,this.xrMode!==sv.WORLD_SPACE||this.worldSpaceInitialPlacementDone){if(this.xrMode===sv.SCREEN_SPACE){let t=Math.max(1,2*e.boundingSphere.radius);a.copy(r.position).add(A.multiplyScalar(t)),this.updateTarget();let i=e.getTarget();a.add(i).sub(this.oldTarget),this.goalPosition.copy(a)}}else{let{position:i,scale:s}=this.calculateWorldSpaceOptimalPlacement(e,r);this.goalPosition.copy(i),this.goalScale=s,this.initialModelScale=s,a.copy(i),t.scale.set(s,s,s),this.worldS
427paceInitialPlacementDone=!0,this.calculateWorldSpaceScaleLimits(e),this.enableWorldSpaceUserInteraction()}if(e.setHotspotsVisibility(!0),this.xrMode===sv.SCREEN_SPACE){let{session:e}=this.frame;e.addEventListener("selectstart",this.onSelectStart),e.addEventListener("selectend",this.onSelectEnd),e.requestHitTestSourceForTransientInput({profile:"generic-touchscreen"}).then(e=>{this.transientHitTestSource=e})}}getTouchLocation(){let{axes:e}=this.inputSource.gamepad,t=this.placementBox.getExpandedHit(this.presentedScene,e[0],e[1]);return null!=t&&(sE.copy(t).sub(this.presentedScene.getCamera().position),sE.length()>10)?null:t}getHitPoint(e){let t=this.threeRenderer.xr.getReferenceSpace(),i=e.getPose(t);if(null==i)return null;let a=sC.fromArray(i.transform.matrix);return!0===this.placeOnWall&&(this.goalYaw=Math.atan2(a.elements[4],a.elements[6])),a.elements[5]>.75!==this.placeOnWall?sy.setFromMatrixPosition(a):null}moveToFloor(e){if(this.xrMode===sv.WORLD_SPACE&&!this.worldSpaceInitialPlacementDone){this.placementBox.show=!1,this.dispatchEvent({type:"status",status:sm.OBJECT_PLACED});return}let t=this.initialHitSource;if(null==t)return;let i=e.getHitTestResults(t);if(0==i.length)return;let a=i[0],r=this.getHitPoint(a);null!=r&&(this.placementBox.show=!0,this.isTranslating||(this.placeOnWall?this.goalPosition.copy(r):this.goalPosition.y=r.y),t.cancel(),this.initialHitSource=null,this.dispatchEvent({type:"status",status:sm.OBJECT_PLACED}))}fingerPolar(e){let t=e[0].inputSource.gamepad.axes,i=e[1].inputSource.gamepad.axes,a=i[0]-t[0],r=i[1]-t[1],s=Math.atan2(r,a),n=this.lastAngle-s;return n>Math.PI?n-=2*Math.PI:n<-Math.PI&&(n+=2*Math.PI),{separation:Math.sqrt(a*a+r*r),deltaYaw:n,angle:s}}setScale(e){let t=e/this.firstRatio;t=.2>Math.abs(t-1)?1:t,this.isWorldSpaceReady()&&(t=Math.max(this.minScale,Math.min(this.maxScale,t))),this.goalScale=t}processInput(e){let t=this.transientHitTestSource;if(null==t)return;let i=e.getHitTestResultsForTransientInput(t),a=this.presentedScene,r=a.scenePivot.scale.x;if(2===i.length){if(!this.wasTwoFingering){let{separation:e,angle:t}=this.fingerPolar(i);this.firstRatio=e/r,this.lastAngle=t,this.wasTwoFingering=!0,this.isTwoHandInteraction=!0;return}let{separation:e,deltaYaw:t,angle:s}=this.fingerPolar(i);this.goalYaw+=t,this.lastAngle=s,a.canScale&&this.setScale(e),this.isTwoHandInteraction=!0;return}if(this.wasTwoFingering&&(this.wasTwoFingering=!1,this.isTwoHandInteraction=!1,this.firstRatio=0),this.isTranslating||this.isTwoHandInteraction||this.isRotating)if(this.isRotating){let e=1.5*this.inputSource.gamepad.axes[0];this.goalYaw+=e-this.lastAngle,this.lastAngle=e}else this.isTranslating&&i.forEach(e=>{if(e.inputSource!==this.inputSource)return;let t=null;if(e.results.length>0&&(t=this.getHitPoint(e.results[0])),null==t&&(t=this.getTouchLocation()),null!=t){if(this.goalPosition.sub(this.lastDragPosition),this.isWorldSpaceReady())console.log("[processInput] Setting goalPosition.y to hit.y:",t.y),this.goalPosition.add(t);else if(!1===this.placeOnWall){let e=t.y-this.lastDragPosition.y;if(e<0){this.placementBox.offsetHeight=e/r,this.presentedScene.setShadowOffset(e);let i=sE.copy(a.getCamera().position),s=-e/(i.y-t.y);i.multiplyScalar(s),t.multiplyScalar(1-s).add(i)}this.goalPosition.add(t)}else this.goalPosition.add(t);this.lastDragPosition.copy(t)}})}applyXRControllerRotation(e,t){if(!e.userData.turning)return;let i=(e.position.x-e.userData.initialX)*.3;this.deltaRotation.setFromAxisAngle(sf,i),t.quaternion.multiplyQuaternions(this.deltaRotation,t.quaternion)}handleScalingInXR(e,t){if(this.xrMode===sv.WORLD_SPACE&&!this.worldSpaceInitialPlacementDone)return;if(this.xrController1&&this.xrController2&&this.isTwoHandInteraction){let e=this.controllerSeparation();this.setScale(e),this.scaleLine.scale.z=-e,this.scaleLine.lookAt(this.xrController2.position)}let i=e.scenePivot.scale.x;if(this.goalScale!==i){let a=this.scaleDamper.update(i,this.goalScale,t,1);e.scenePivot.scale.set(a,a,a)}}updatePivotPosition(e,t){let{scenePivot:i}=e,a=this.placementBox,r=e.boundingSphere.radius,s=this.goalPosition,n=i.position,o=so.NONE;if(!s.equals(n)){o=so.USER_INTERACTION;let{x:i,y:A,z:l}=n;if(i=this.xDamper.update(i,s.x,t,r),A=this.yDamper.update(A,s.y,t,r),l=this.zDamper.update(l,s.z,t,r),n.set(i,A,l),this.xrMode===sv.SCREEN_SPACE&&!this.isTranslating){let t=s.y-A;this.placementComplete&&!1===this.placeOnWall?(a.offsetHeight=t/e.scenePivot.scale.x,e.setShadowOffset(t)):0===t&&(this.placementComplete=!0,a.show=!1,e.setShadowIntensity(.8))}this.xrMode!==sv.SCREEN_SPACE&&s.equals(n)&&e.setShadowIntensity(.8),this.isWorldSpaceReady()&&e.setShadowIntensity(.8)}
427if(this.xrMode===sv.WORLD_SPACE&&!this.worldSpaceInitialPlacementDone&&this.goalScale!==i.scale.x){let e=this.scaleDamper.update(i.scale.x,this.goalScale,t,1);i.scale.set(e,e,e)}return e.updateTarget(t),o}updateYaw(e,t){sI.setFromAxisAngle(sE.set(0,1,0),this.goalYaw);let i=e.scenePivot.quaternion.angleTo(sI),a=i-this.yawDamper.update(i,0,t,Math.PI);e.scenePivot.quaternion.rotateTowards(sI,a)}updateMenuPanel(e,t,i){this.menuPanel&&(this.menuPanel.updateOpacity(i),this.menuPanel.updatePosition(e.getCamera(),t))}applyXRInputToScene(e){let t=this.presentedScene,i=t.scenePivot,a=this.placementBox;if(this.updatePlacementBoxOpacity(a,e),this.updateTwoHandInteractionState(),this.applyXRControllerRotations(i),this.handleScalingInXR(t,e),i.parent!==t)return void this.updateMenuPanel(t,a,e);let r=this.updatePivotPosition(t,e);this.updateYaw(t,e),this.dispatchCameraChangeEvent(t,r),this.updateMenuPanel(t,a,e)}updatePlacementBoxOpacity(e,t){let i=this.presentedScene.getCamera();e.update(t,i.position);let a=this.hover(this.xrController1),r=this.hover(this.xrController2),s=(a||r)&&!this.isTwoHandInteraction;e.setInteractionState(this.isTranslating||this.isRotating,s)}updateTwoHandInteractionState(){var e,t;let i=(null==(e=this.xrController1)?void 0:e.userData.isSelected)&&(null==(t=this.xrController2)?void 0:t.userData.isSelected);this.isTwoHandInteraction=!!i}applyXRControllerRotations(e){!this.isTwoHandInteraction&&(this.xrController1&&this.applyXRControllerRotation(this.xrController1,e),this.xrController2&&this.applyXRControllerRotation(this.xrController2,e))}dispatchCameraChangeEvent(e,t){e.element.dispatchEvent(new CustomEvent("camera-change",{detail:{source:t}}))}updateXRControllerHover(){let e=this.hover(this.xrController1),t=this.hover(this.xrController2),i=(e||t)&&!this.isTwoHandInteraction;this.placementBox&&(this.placementBox.setInteractionState(this.isTranslating||this.isRotating,i),this.placementBox.show=i)}enableWorldSpaceUserInteraction(){this.placementBox&&(this.placementBox.show=!0),this.presentedScene&&this.presentedScene.setShadowIntensity(.8)}handleFirstView(e,t){this.xrMode===sv.WORLD_SPACE&&this.worldSpaceInitialPlacementDone||this.moveToFloor(e),this.processInput(e);let i=t-this.lastTick;this.applyXRInputToScene(i),this.renderer.preRender(this.presentedScene,t,i),this.lastTick=t,this.presentedScene.renderShadow(this.threeRenderer)}onWebXRFrame(e,t){this.xrMode!==sv.SCREEN_SPACE&&this.updateXRControllerHover(),this.frame=t,++this.frames;let i=this.threeRenderer.xr.getReferenceSpace(),a=t.getViewerPose(i);null==a&&!0===this.tracking&&this.frames>30&&(this.tracking=!1,this.dispatchEvent({type:"tracking",status:sb.NOT_TRACKING}));let r=this.presentedScene;if(null==a||null==r||!r.element.loaded)return void this.threeRenderer.clear();!1===this.tracking&&(this.tracking=!0,this.dispatchEvent({type:"tracking",status:sb.TRACKING}));let s=!0;for(let i of a.views)this.updateView(i),s&&(this.handleFirstView(t,e),s=!1),this.threeRenderer.render(r,r.getCamera())}calculateWorldSpaceOptimalPlacement(e,t){let i=e.boundingBox,a={x:(i.max.x-i.min.x)/2,y:(i.max.y-i.min.y)/2,z:(i.max.z-i.min.z)/2},r=Math.max(1.65,2*Math.max(a.x,a.z)+.15),s=15*Math.PI/180,n=new tr.Pq0(0,-r*Math.sin(s),-r*Math.cos(s)),o=t.matrixWorld,A=n.clone().applyMatrix4(o),l=Math.max(a.x,a.z)+.15,h=Math.min(.3*r/Math.max(a.y,.01),.3*r/Math.max(l,.01));return{position:A.clone().sub(new tr.Pq0(0,h*a.y,0)),scale:h}}calculateWorldSpaceScaleLimits(e){let t=e.size,i=Math.max(t.x,t.y,t.z),a=Math.max(Math.min(t.x,t.y,t.z),.001),r=.01/Math.max(i,.001),s=70/Math.max(a,.001);this.minScale=Math.min(r,s,this.goalScale),this.maxScale=Math.max(r,s,this.goalScale)}}let sS=Symbol("prepared"),sQ=Symbol("prepare"),sR=Symbol("preparedGLTF"),sM=Symbol("clone");class sT{static prepare(e){if(null==e.scene)throw Error("Model does not have a scene");if(e[sS])return e;let t=this[sQ](e);return t[sS]=!0,t}static[sQ](e){let{scene:t}=e,i=[t];return Object.assign(Object.assign({},e),{scene:t,scenes:i})}get parser(){return this[sR].parser}get animations(){return this[sR].animations}get scene(){return this[sR].scene}get scenes(){return this[sR].scenes}get cameras(){return this[sR].cameras}get asset(){return this[sR].asset}get userData(){return this[sR].userData}constructor(e){this[sR]=e}clone(){return new this.constructor(this[sM]())}
427dispose(){this.scenes.forEach(e=>{e.traverse(e=>{e.material&&((Array.isArray(e.material)?e.material:[e.material]).forEach(e=>{for(let t in e){let i=e[t];if(i instanceof tr.gPd){let e=i.source.data;null!=e.close&&e.close(),i.dispose()}}e.dispose()}),e.geometry.dispose())})})}[sM](){let e=this[sR],t=tU(this.scene);sD(t,this.scene);let i=[t],a=e.userData?Object.assign({},e.userData):{};return Object.assign(Object.assign({},e),{scene:t,scenes:i,userData:a})}}let sD=(e,t)=>{sk(e,t,(e,t)=>{void 0!==t.userData.variantMaterials&&(e.userData.variantMaterials=new Map(t.userData.variantMaterials)),void 0!==t.userData.variantData&&(e.userData.variantData=t.userData.variantData),void 0!==t.userData.originalMaterial&&(e.userData.originalMaterial=t.userData.originalMaterial)})},sk=(e,t,i)=>{i(e,t);for(let a=0;a<e.children.length;a++)sk(e.children[a],t.children[a],i)},sF=Symbol("threeGLTF"),sL=Symbol("gltf"),sP=Symbol("gltfElementMap"),sU=Symbol("threeObjectMap"),s_=Symbol("parallelTraverseThreeScene"),sN=Symbol("correlateOriginalThreeGLTF"),sO=Symbol("correlateCloneThreeGLTF");class sG{static from(e,t){return null!=t?this[sO](e,t):this[sN](e)}static[sN](e){let t=e.parser.json,i=e.parser.associations,a=new Map,r={name:"Default"},s={index:-1};for(let e of i.keys())e instanceof tr.imn&&null==i.get(e)&&(s.index<0&&(null==t.materials&&(t.materials=[]),s.index=t.materials.length,t.materials.push(r)),e.name=r.name,i.set(e,{materials:s.index}));for(let[e,r]of i)for(let i in r&&(e.userData=e.userData||{},e.userData.associations=r),r)if(null!=i&&"primitives"!==i){let s=(t[i]||[])[r[i]];if(null==s)continue;let n=a.get(s);null==n&&(n=new Set,a.set(s,n)),n.add(e)}return new sG(e,t,i,a)}static[sO](e,t){let i=t.threeGLTF,a=JSON.parse(JSON.stringify(t.gltf)),r=new Map,s=new Map;for(let n=0;n<i.scenes.length;n++)this[s_](i.scenes[n],e.scenes[n],(e,i)=>{let n=t.threeObjectMap.get(e);if(null!=n){for(let e in n)if(null!=e&&"primitives"!==e){let t=n[e],o=a[e][t],A=r.get(i)||{};A[e]=t,r.set(i,A);let l=s.get(o)||new Set;l.add(i),s.set(o,l)}}});return new sG(e,a,r,s)}static[s_](e,t,i){let a=(e,t)=>{if(i(e,t),e.isObject3D){if(e.material)if(Array.isArray(e.material))for(let a=0;a<e.material.length;++a)i(e.material[a],t.material[a]);else i(e.material,t.material);for(let i=0;i<e.children.length;++i)a(e.children[i],t.children[i])}};a(e,t)}get threeGLTF(){return this[sF]}get gltf(){return this[sL]}get gltfElementMap(){return this[sP]}get threeObjectMap(){return this[sU]}constructor(e,t,i,a){this[sF]=e,this[sL]=t,this[sP]=a,this[sU]=i}}let sq=Symbol("correlatedSceneGraph");class sH extends sT{static[sQ](e){let t=super[sQ](e);null==t[sq]&&(t[sq]=sG.from(t));let{scene:i}=t,a=new tr.iyt(void 0,1/0);return i.traverse(e=>{if(e.renderOrder=1e3,e.frustumCulled=!1,e.name||(e.name=e.uuid),e.material){let{geometry:i}=e;e.castShadow=!0,e.isSkinnedMesh&&(i.boundingSphere=a,i.boundingBox=null);let r=e.material;if(!0===r.isMeshBasicMaterial&&(r.toneMapped=!1),r.shadowSide=tr.hB5,r.aoMap){let{gltf:e,threeObjectMap:a}=t[sq],s=a.get(r);if(null!=e.materials&&null!=s&&null!=s.materials){let t=e.materials[s.materials];t.occlusionTexture&&0===t.occlusionTexture.texCoord&&null!=i.attributes.uv&&i.setAttribute("uv2",i.attributes.uv)}}}}),t}get correlatedSceneGraph(){return this[sR][sq]}[sM](){let e=super[sM](),t=new Map;return e.scene.traverse(e=>{if(e.material){let i=e.material;if(null!=i){if(t.has(i.uuid)){e.material=t.get(i.uuid);return}e.material=i.clone(),t.set(i.uuid,e.material)}}void 0!==e.target&&e.add(e.target)}),e[sq]=sG.from(e,this.correlatedSceneGraph),e}}let sj=(e,t,i)=>{let a;switch(e){case tr.OUM:a=new Uint8ClampedArray(t*i*4);break;case tr.ix0:a=new Uint16Array(t*i*4);break;case tr.bkx:a=new Uint32Array(t*i*4);break;case tr.tJf:a=new Int8Array(t*i*4);break;case tr.fBL:a=new Int16Array(t*i*4);break;case tr.Yuy:a=new Int32Array(t*i*4);break;case tr.RQf:a=new Float32Array(t*i*4);break;default:throw Error("Unsupported data type")}return a};class sz{_renderer;_rendererIsDisposable=!1;_material;_scene;_camera;_quad;_renderTarget;_width;_height;_type;_colorSpace;_supportsReadPixels=!0;constructor(e){this._width=e.width,this._height=e.height,this._type=e.type,this._colorSpace
427=e.colorSpace;let t={format:tr.GWd,depthBuffer:!1,stencilBuffer:!1,type:this._type,colorSpace:this._colorSpace,anisotropy:e.renderTargetOptions?.anisotropy!==void 0?e.renderTargetOptions?.anisotropy:1,generateMipmaps:e.renderTargetOptions?.generateMipmaps!==void 0&&e.renderTargetOptions?.generateMipmaps,magFilter:e.renderTargetOptions?.magFilter!==void 0?e.renderTargetOptions?.magFilter:tr.k6q,minFilter:e.renderTargetOptions?.minFilter!==void 0?e.renderTargetOptions?.minFilter:tr.k6q,samples:e.renderTargetOptions?.samples!==void 0?e.renderTargetOptions?.samples:void 0,wrapS:e.renderTargetOptions?.wrapS!==void 0?e.renderTargetOptions?.wrapS:tr.ghU,wrapT:e.renderTargetOptions?.wrapT!==void 0?e.renderTargetOptions?.wrapT:tr.ghU};if(this._material=e.material,e.renderer?this._renderer=e.renderer:(this._renderer=sz.instantiateRenderer(),this._rendererIsDisposable=!0),this._scene=new tr.Z58,this._camera=new tr.qUd,this._camera.position.set(0,0,10),this._camera.left=-.5,this._camera.right=.5,this._camera.top=.5,this._camera.bottom=-.5,this._camera.updateProjectionMatrix(),!((e,t,i,a)=>{if(void 0!==p)return p;let r=new tr.nWS(1,1,a);t.setRenderTarget(r);let s=new tr.eaF(new tr.bdM,new tr.V9B({color:0xffffff}));t.render(s,i),t.setRenderTarget(null);let n=sj(e,r.width,r.height);return t.readRenderTargetPixels(r,0,0,r.width,r.height,n),r.dispose(),s.geometry.dispose(),s.material.dispose(),p=0!==n[0]})(this._type,this._renderer,this._camera,t)){let e;this._type===tr.ix0&&(e=this._renderer.extensions.has("EXT_color_buffer_float")?tr.RQf:void 0),void 0!==e?(console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${tr.RQf}`),this._type=e):(this._supportsReadPixels=!1,console.warn("This browser dos not support toArray or toDataTexture, calls to those methods will result in an error thrown"))}this._quad=new tr.eaF(new tr.bdM,this._material),this._quad.geometry.computeBoundingBox(),this._scene.add(this._quad),this._renderTarget=new tr.nWS(this.width,this.height,t),this._renderTarget.texture.mapping=e.renderTargetOptions?.mapping!==void 0?e.renderTargetOptions?.mapping:tr.UTZ}static instantiateRenderer(){let e=new av.JeP;return e.setSize(128,128),e}render=()=>{this._renderer.setRenderTarget(this._renderTarget);try{this._renderer.render(this._scene,this._camera)}catch(e){throw this._renderer.setRenderTarget(null),e}this._renderer.setRenderTarget(null)};toArray(){if(!this._supportsReadPixels)throw Error("Can't read pixels in this browser");let e=sj(this._type,this._width,this._height);return this._renderer.readRenderTargetPixels(this._renderTarget,0,0,this._width,this._height,e),e}toDataTexture(e){let t=new tr.GYF(this.toArray(),this.width,this.height,tr.GWd,this._type,e?.mapping||tr.UTZ,e?.wrapS||tr.ghU,e?.wrapT||tr.ghU,e?.magFilter||tr.k6q,e?.minFilter||tr.k6q,e?.anisotropy||1,tr.Zr2);return t.generateMipmaps=e?.generateMipmaps!==void 0&&e?.generateMipmaps,t}disposeOnDemandRenderer(){this._renderer.setRenderTarget(null),this._rendererIsDisposable&&(this._renderer.dispose(),this._renderer.forceContextLoss())}dispose(e){this.disposeOnDemandRenderer(),e&&this.renderTarget.dispose(),this.material instanceof tr.BKk&&Object.values(this.material.uniforms).forEach(e=>{e.value instanceof tr.gPd&&e.value.dispose()}),Object.values(this.material).forEach(e=>{e instanceof tr.gPd&&e.dispose()}),this.material.dispose(),this._quad.geometry.dispose()}get width(){return this._width}set width(e){this._width=e,this._renderTarget.setSize(this._width,this._height)}get height(){return this._height}set height(e){this._height=e,this._renderTarget.setSize(this._width,this._height)}get renderer(){return this._renderer}get renderTarget(){return this._renderTarget}set renderTarget(e){this._renderTarget=e,this._width=e.width,this._height=e.height}get material(){return this._material}get type(){return this._type}get colorSpace(){return this._colorSpace}}class sK extends Error{}class sV extends Error{}let sJ=(e,t,i)=>{let a=RegExp(`${t}="([^"]*)"`,"i").exec(e);if(a)return a[1];let r=RegExp(`<${t}[^>]*>([\\s\\S]*?)</${t}>`,"i").exec(e);if(r){let e=r[1].match(/<rdf:li>([^<]*)<\/rdf:li>/g);return e&&3===e.length?e.map(e=>e.replace(/<\/?rdf:li>/g,"")):r[1].trim()}if(void 0!==i)return i;throw Error(`Can't find ${t} in gainmap metadata`)};class sY{options;constructor(e){this.options={debug:!!e&&void 0!==e.debug&&e.debug,extractFII:!e||void 0===e.extractFII||e.extractFII,extractNonFII:!e||void 0===e.extractNonFII||e.extractNonFII}}extract(e){return new Promise((t,i)=>{let a,r=this.options.debug,s=new DataView(e.buffer);if(65496!==s.getUint16(0))return void i(Error("Not a valid jpeg"));let n=s.byteLength,o=2,A=0;for(;o<n;){if(++A>250)return void i(Error(`Found no marker after ${A} loops 😵`));if(255!==s.getUint8(o))return void i(Error(`Not a valid marker at offset 0x${o.toString(16)}, found: 0x${s.getUint8(o).toString(16)}`));if(a=s.getUint8(o+1),r&&console.log(`Marker: ${a.toString(16)}`),226===a){r&&console.log("Found APP2 marker (0xffe2)");let e=o+4;if(0x4d504600===s.getUint32(e)){let a,r=e+4;if(18761===s.getUint16(r))a=!1;else{if(19789!==s.getUint16(r))return void i(Error("No valid endianness marker found in TIFF header"));a=!0}if(42!==s.getUint16(r+2,!a))return void i(Error("Not valid TIFF data! (no 0x002A marker)"));let n=s.getUint32(r+4,!a);if(n<8)return void i(Error("Not valid TIFF data! (First offset less than 8)"));let o=r+n,A=s.getUint16(o,!a),l=o+2,h=0;for(let e=l;e<l+12*A;e+=12)45057===s.getUint16(e,!a)&&(h=s.getUint32(e+8,!a));let c=o+2+12*A+4,d=[];for(let e=c;e<c+16*h;e+=16){let t={MPType:s.getUint32(e,!a),size:s.getUint32(e+4,!a),dataOffset:s.getUint32(e+8,!a),dependantImages:s.getUint32(e+12,!a),start:-1,end:-1,isFII:!1};t.dataOffset?(t.start=r+t.dataOffset,t.isFII=!1):(t.start=0,t.isFII=!0),t.end=t.start+t.size,d.push(t)}if(this.options.extractNonFII&&d.length){let e=new Blob([s]),i=[];for(let t of d){if(t.isFII&&!this.options.extractFII)continue;let a=e.slice(t.start,t.end+1,"image/jpeg");i.push(a)}t(i)}}}o+=2+s.getUint16(o+2)}})}}let sW=async e=>{let t=(e=>{let t,i=(t="undefined"!=typeof TextDecoder?new TextDecoder().decode(e):e.toString()).indexOf("<x:xmpmeta");for(;-1!==i;){let e=t.indexOf("x:xmpmeta>",i),a=t.slice(i,e+10);try{let e=sJ(a,"hdrgm:GainMapMin","0"),t=sJ(a,"hdrgm:GainMapMax"),i=sJ(a,"hdrgm:Gamma","1"),r=sJ(a,"hdrgm:OffsetSDR","0.015625"),s=sJ(a,"hdrgm:OffsetHDR","0.015625"),n=/hdrgm:HDRCapacityMin="([^"]*)"/.exec(a),o=n?n[1]:"0",A=/hdrgm:HDRCapacityMax="([^"]*)"/.exec(a);if(!A)throw Error("Incomplete gainmap metadata");let l=A[1];return{gainMapMin:Array.isArray(e)?e.map(e=>parseFloat(e)):[parseFloat(e),parseFloat(e),parseFloat(e)],gainMapMax:Array.isArray(t)?t.map(e=>parseFloat(e)):[parseFloat(t),parseFloat(t),parseFloat(t)],gamma:Array.isArray(i)?i.map(e=>parseFloat(e)):[parseFloat(i),parseFloat(i),parseFloat(i)],offsetSdr:Array.isArray(r)?r.map(e=>parseFloat(e)):[parseFloat(r),parseFloat(r),parseFloat(r)],offsetHdr:Array.isArray(s)?s.map(e=>parseFloat(e)):[parseFloat(s),parseFloat(s),parseFloat(s)],hdrCapacityMin:parseFloat(o),hdrCapacityMax:p
427arseFloat(l)}}catch(e){}i=t.indexOf("<x:xmpmeta",e)}})(e);if(!t)throw new sV("Gain map XMP metadata not found");let i=new sY({extractFII:!0,extractNonFII:!0}),a=await i.extract(e);if(2!==a.length)throw new sK("Gain map recovery image not found");return{sdr:new Uint8Array(await a[0].arrayBuffer()),gainMap:new Uint8Array(await a[1].arrayBuffer()),metadata:t}},s$=e=>new Promise((t,i)=>{let a=document.createElement("img");a.onload=()=>{t(a)},a.onerror=e=>{i(e)},a.src=URL.createObjectURL(e)});class sX extends tr.aHM{_renderer;_renderTargetOptions;_internalLoadingManager;_config;constructor(e,t){super(t),this._config=e,e.renderer&&(this._renderer=e.renderer),this._internalLoadingManager=new tr.KPJ}setRenderer(e){return this._renderer=e,this}setRenderTargetOptions(e){return this._renderTargetOptions=e,this}prepareQuadRenderer(){this._renderer||console.warn("WARNING: A Renderer was not passed to this Loader constructor or in setRenderer, the result of this Loader will need to be converted to a Data Texture with toDataTexture() before you can use it in your renderer.");let e=this._config.createMaterial({gainMapMax:[1,1,1],gainMapMin:[0,0,0],gamma:[1,1,1],offsetHdr:[1,1,1],offsetSdr:[1,1,1],hdrCapacityMax:1,hdrCapacityMin:0,maxDisplayBoost:1,gainMap:new tr.gPd,sdr:new tr.gPd});return this._config.createQuadRenderer({width:16,height:16,type:tr.ix0,colorSpace:tr.Zr2,material:e,renderer:this._renderer,renderTargetOptions:this._renderTargetOptions})}async processImages(e,t,i){let a,r,s=t?new Blob([t],{type:"image/jpeg"}):void 0,n=new Blob([e],{type:"image/jpeg"}),o=!1;if("undefined"==typeof createImageBitmap){let e=await Promise.all([s?s$(s):Promise.resolve(void 0),s$(n)]);r=e[0],a=e[1],o="flipY"===i}else{let e=await Promise.all([s?createImageBitmap(s,{imageOrientation:i||"flipY"}):Promise.resolve(void 0),createImageBitmap(n,{imageOrientation:i||"flipY"})]);r=e[0],a=e[1]}return{sdrImage:a,gainMapImage:r,needsFlip:o}}createTextures(e,t,i){let a=new tr.gPd(t||new ImageData(2,2),tr.UTZ,tr.ghU,tr.ghU,tr.k6q,tr.NZq,tr.GWd,tr.OUM,1,tr.Zr2);a.flipY=i,a.needsUpdate=!0;let r=new tr.gPd(e,tr.UTZ,tr.ghU,tr.ghU,tr.k6q,tr.NZq,tr.GWd,tr.OUM,1,tr.er$);return r.flipY=i,r.needsUpdate=!0,{gainMap:a,sdr:r}}updateQuadRenderer(e,t,i,a,r){e.width=t.width,e.height=t.height,e.material.gainMap=i,e.material.sdr=a,e.material.gainMapMin=r.gainMapMin,e.material.gainMapMax=r.gainMapMax,e.material.offsetHdr=r.offsetHdr,e.material.offsetSdr=r.offsetSdr,e.material.gamma=r.gamma,e.material.hdrCapacityMin=r.hdrCapacityMin,e.material.hdrCapacityMax=r.hdrCapacityMax,e.material.maxDisplayBoost=Math.pow(2,r.hdrCapacityMax),e.material.needsUpdate=!0}}let sZ=` 428varying vec2 vUv; 429 430void main() { 431 vUv = uv; 432 gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); 433} 434`,s0=` 435// min half float value 436#define HALF_FLOAT_MIN vec3( -65504, -65504, -65504 ) 437// max half float value 438#define HALF_FLOAT_MAX vec3( 65504, 65504, 65504 ) 439 440uniform sampler2D sdr; 441uniform sampler2D gainMap; 442uniform vec3 gamma; 443uniform vec3 offsetHdr; 444uniform vec3 offsetSdr; 445uniform vec3 gainMapMin; 446uniform vec3 gainMapMax; 447uniform float weightFactor; 448 449varying vec2 vUv; 450 451void main() { 452 vec3 rgb = texture2D( sdr, vUv ).rgb; 453 vec3 recovery = texture2D( gainMap, vUv ).rgb; 454 vec3 logRecovery = pow( recovery, gamma ); 455 vec3 logBoost = gainMapMin * ( 1.0 - logRecovery ) + gainMapMax * logRecovery; 456 vec3 hdrColor = (rgb + offsetSdr) * exp2( logBoost * weightFactor ) - offsetHdr; 457 vec3 clampedHdrColor = max( HALF_FLOAT_MIN, min( HALF_FLOAT_MAX, hdrColor )); 458 gl_FragColor = vec4( clampedHdrColor , 1.0 ); 459} 460`;class s1 extends tr.BKk{_maxDisplayBoost;_hdrCapacityMin;_hdrCapacityMax;constructor({gamma:e,offsetHdr:t,offsetSdr:i,gainMapMin:a,gainMapMax:r,maxDisplayBoost:s,hdrCapacityMin:n,hdrCapacityMax:o,sdr:A,gainMap:l}){super({name:"GainMapDecoderMaterial",vertexShader:sZ,fragmentShader:s0,uniforms:{sdr:{value:A},gainMap:{value:l},gamma:{value:new tr.Pq0(1/e[0],1/e[1],1/e[2])},offsetHdr:{value:new tr.Pq0().fromArray(t)},offsetSdr:{value:new tr.Pq0().fromArray(i)},gainMapMin:{value:new tr.Pq0().fromArray(a)},gainMapMax:{value:new tr.Pq0().fromArray(r)},weightFactor:{value:(Math.log2(s)-n)/(o-n)}},blending:tr.XIg,depthTest:!1,depthWrite:!1}),this._maxDisplayBoost=s,this._hdrCapacityMin=n,this._hdrCapacityMax=o,this.needsUpdate=!0,this.uniformsNeedUpdate=!0}get sdr(){return this.uniforms.sdr.value}set sdr(e){this.uniforms.sdr.value=e}get gainMap(){return this.uniforms.gainMap.value}set gainMap(e){this.uniforms.gainMap.value=e}get offsetHdr(){return this.uniforms.offsetHdr.value.toArray()}set offsetHdr(e){this.uniforms.offsetHdr.value.fromArray(e)}get offsetSdr(){return this.uniforms.offsetSdr.value.toArray()}set offsetSdr(e){this.uniforms.offsetSdr.value.fromArray(e)}get gainMapMin(){return this.uniforms.gainMapMin.value.toArray()}set gainMapMin(e){this.uniforms.gainMapMin.value.fromArray(e)}get gainMapMax(){return this.uniforms.gainMapMax.value.toArray()}set gainMapMax(e){this.uniforms.gainMapMax.value.fromArray(e)}get gamma(){let e=this.uniforms.gamma.value;return[1/e.x,1/e.y,1/e.z]}set gamma(e){let t=this.uniforms.gamma.value;t.x=1/e[0],t.y=1/e[1],t.z=1/e[2]}get hdrCapacityMin(){return this._hdrCapacityMin}set hdrCapacityMin(e){this._hdrCapacityMin=e,this.calculateWeight()}get hdrCapacityMax(){return this._hdrCapacityMax}set hdrCapacityMax(e){this._hdrCapacityMax=e,this.calculateWeight()}get maxDisplayBoost(){return this._maxDisplayBoost}set maxDisplayBoost(e){this._maxDisplayBoost=Math.max(1,Math.min(65504,e)),this.calculateWeight()}calculateWeight(){let e=(Math.log2(this._maxDisplayBoost)-this._hdrCapacityMin)/(this._hdrCapacityMax-this._hdrCapacityMin);this.uniforms.weightFactor.value=Math.max(0,Math.min(1,e))}}!av.JeP;class s2 extends sX{constructor(e,t){super({renderer:e,createMaterial:e=>new s1(e),createQuadRenderer:e=>new sz(e)},t)}async render(e,t,i,a){let{sdrImage:r,gainMapImage:s,needsFlip:n}=await this.processImages(i,a,"flipY"),{gainMap:o,sdr:A}=this.createTextures(r,s,n);this.updateQuadRenderer(e,r,o,A,t),e.render()}}class s8 extends s2{load(e,t,i,a){let r=this.prepareQuadRenderer(),s=new tr.Y9S(this._internalLoadingManager);return s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setPath(this.path),s.setWithCredentials(this.withCredentials),this.manager.itemStart(e),s.load(e,async i=>{let s,n,o;if("string"==typeof i)throw Error("Invalid buffer, received [string], was expecting [ArrayBuffer]");let A=new Uint8Array(i);try{let e=await sW(A);s=e.sdr,n=e.gainMap,o=e.metadata}catch(t){if(t instanceof sV||t instanceof sK)console.warn(`Failure to reconstruct an HDR image from ${e}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`),o={gainMapMin:[0,0,0],gainMapMax:[1,1,1],gamma:[1,1,1],hdrCapacityMin:0,hdrCapacityMax:1,offsetHdr:[0,0,0],offsetSdr:[0,0,0]},s=A;else throw t}try{await this.render(r,o,s.buffer,n?.buffer)}catch(t){this.manager.itemError(e),"function"==typeof a&&a(t),r.disposeOnDemandRenderer();return}"function"==typeof t&&t(r),this.manager.itemEnd(e),r.disposeOnDemandRenderer()},i,t=>{this.manager.itemError(e),"function"==typeof a&&a(t)}),r}}class s9 extends tr.BRH{constructor(e){super(e),this.type=tr.ix0}parse(e){let t,i,a,r=function(e,t){switch(e){case 1:throw Error("THREE.HDRLoader: Read Error: "+(t||""));case 2:throw Error("THREE.HDRLoader: Write Error: "+(t||""));case 3:throw Error("THREE.HDRLoader: Bad File Format: "+(t||""));default:throw Error("THREE.HDRLoader: Memory Error: "+(t||""))}},s=function(e,t,i){t=t||1024;let a=e.pos,r=-1,s=0,n="",o=String.fromCharCode.apply(null,new Uint16Array(e.subarray(a,a+128)));for(;0>(r=o.indexOf("\n"))&&s<t&&a<e.byteLength;)n+=o,s+=o.length,a+=128,o+=String.fromCharCode.apply(null,new Uint16Array(e.subarray(a,a+128)));return -1<r&&(!1!==i&&(e.pos+=s+r+1),n+o.slice(0,r))},n=new Uint8Array(e);n.pos=0;let o=function(e){let t,i,a=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,n=/^\s*EXPOSURE\s*=\s
460*(\d+(\.\d+)?)\s*$/,o=/^\s*FORMAT=(\S+)\s*$/,A=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,l={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};for(!(e.pos>=e.byteLength)&&(t=s(e))||r(1,"no header found"),(i=t.match(/^#\?(\S+)/))||r(3,"bad initial token"),l.valid|=1,l.programtype=i[1],l.string+=t+"\n";!1!==(t=s(e));){if(l.string+=t+"\n","#"===t.charAt(0)){l.comments+=t+"\n";continue}if((i=t.match(a))&&(l.gamma=parseFloat(i[1])),(i=t.match(n))&&(l.exposure=parseFloat(i[1])),(i=t.match(o))&&(l.valid|=2,l.format=i[1]),(i=t.match(A))&&(l.valid|=4,l.height=parseInt(i[1],10),l.width=parseInt(i[2],10)),2&l.valid&&4&l.valid)break}return 2&l.valid||r(3,"missing format specifier"),4&l.valid||r(3,"missing image size specifier"),l}(n),A=o.width,l=o.height,h=function(e,t,i){if(t<8||t>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);t!==(e[2]<<8|e[3])&&r(3,"wrong scanline width");let a=new Uint8Array(4*t*i);a.length||r(4,"unable to allocate buffer space");let s=0,n=0,o=4*t,A=new Uint8Array(4),l=new Uint8Array(o),h=i;for(;h>0&&n<e.byteLength;){n+4>e.byteLength&&r(1),A[0]=e[n++],A[1]=e[n++],A[2]=e[n++],A[3]=e[n++],(2!=A[0]||2!=A[1]||(A[2]<<8|A[3])!=t)&&r(3,"bad rgbe scanline format");let i=0,c;for(;i<o&&n<e.byteLength;){let t=(c=e[n++])>128;if(t&&(c-=128),(0===c||i+c>o)&&r(3,"bad scanline data"),t){let t=e[n++];for(let e=0;e<c;e++)l[i++]=t}else l.set(e.subarray(n,n+c),i),i+=c,n+=c}for(let e=0;e<t;e++){let i=0;a[s]=l[e+i],i+=t,a[s+1]=l[e+i],i+=t,a[s+2]=l[e+i],i+=t,a[s+3]=l[e+i],s+=4}h--}return a}(n.subarray(n.pos),A,l);switch(this.type){case tr.RQf:let c=new Float32Array(4*(a=h.length/4));for(let e=0;e<a;e++)!function(e,t,i,a){let r=Math.pow(2,e[t+3]-128)/255;i[a+0]=e[t+0]*r,i[a+1]=e[t+1]*r,i[a+2]=e[t+2]*r,i[a+3]=1}(h,4*e,c,4*e);t=c,i=tr.RQf;break;case tr.ix0:let d=new Uint16Array(4*(a=h.length/4));for(let e=0;e<a;e++)!function(e,t,i,a){let r=Math.pow(2,e[t+3]-128)/255;i[a+0]=tr.GxU.toHalfFloat(Math.min(e[t+0]*r,65504)),i[a+1]=tr.GxU.toHalfFloat(Math.min(e[t+1]*r,65504)),i[a+2]=tr.GxU.toHalfFloat(Math.min(e[t+2]*r,65504)),i[a+3]=tr.GxU.toHalfFloat(1)}(h,4*e,d,4*e);t=d,i=tr.ix0;break;default:throw Error("THREE.HDRLoader: Unsupported type: "+this.type)}return{width:A,height:l,data:t,header:o.string,gamma:o.gamma,exposure:o.exposure,type:i}}setDataType(e){return this.type=e,this}load(e,t,i,a){return super.load(e,function(e,i){switch(e.type){case tr.RQf:case tr.ix0:e.colorSpace=tr.Zr2,e.minFilter=tr.k6q,e.magFilter=tr.k6q,e.generateMipmaps=!1,e.flipY=!0}t&&t(e,i)},i,a)}}class s3 extends s9{constructor(e){console.warn("RGBELoader has been deprecated. Please use HDRLoader instead."),super(e)}}let s4={topLight:{intensity:500,position:[.418,16.199,.3]},room:{position:[-.757,13.219,.717],scale:[31.713,28.305,28.591]},boxes:[{position:[-10.906,2.009,1.846],rotation:-.195,scale:[2.328,7.905,4.651]},{position:[-5.607,-.754,-.758],rotation:.994,scale:[1.97,1.534,3.955]},{position:[6.167,.857,7.803],rotation:.561,scale:[3.927,6.285,3.687]},{position:[-2.017,.018,6.124],rotation:.333,scale:[2.002,4.566,2.064]},{position:[2.291,-.756,-2.621],rotation:-.286,scale:[1.546,1.552,1.496]},{position:[-2.193,-.369,-5.547],rotation:.516,scale:[3.875,3.487,2.986]}],lights:[{intensity:50,position:[-16.116,14.37,8.208],scale:[.1,2.428,2.739]},{intensity:50,position:[-16.109,18.021,-8.207],scale:[.1,2.425,2.751]},{intensity:17,position:[14.904,12.198,-1.832],scale:[.15,4.265,6.331]},{intensity:43,position:[-.462,8.89,14.52],scale:[4.38,5.441,.088]},{intensity:20,position:[3.235,11.486,-12.541],scale:[2.5,2,.1]},{intensity:100,position:[0,20,0],scale:[1,.1,1]}]},s5={topLight:{intensity:400,position:[.5,14,.5]},room:{position:[0,13.2,0],scale:[31.5,28.5,31.5]},boxes:[{position:[-10.906,-1,1.846],rotation:-.195,scale:[2.328,7.905,4.651]},{position:[-5.607,-.754,-.758],rotation:.994,scale:[1.97,1.534,3.955]},{position:[6.167,-.16,7.803],rotation:.561,scale:[3.927,6.285,3.687]},{position:[-2.017,.018,6.124],rotation:.333,scale:[2.002,4.566,2.064]},{position:[2.291,-.756,-2.621],rotation:-.286,scale:[1.546,1.552,1.496]}
460,{position:[-2.193,-.369,-5.547],rotation:.516,scale:[3.875,3.487,2.986]}],lights:[{intensity:80,position:[-14,10,8],scale:[.1,2.5,2.5]},{intensity:80,position:[-14,14,-4],scale:[.1,2.5,2.5]},{intensity:23,position:[14,12,0],scale:[.1,5,5]},{intensity:16,position:[0,9,14],scale:[5,5,.1]},{intensity:80,position:[7,8,-14],scale:[2.5,2.5,.1]},{intensity:80,position:[-7,16,-14],scale:[2.5,2.5,.1]},{intensity:1,position:[0,20,0],scale:[.1,.1,.1]}]};class s6 extends tr.Z58{constructor(e){super(),this.position.y=-3.5;let t=new tr.iNn;t.deleteAttribute("uv");let i=new tr._4j({metalness:0,side:tr.hsX}),a=new tr._4j({metalness:0}),r="legacy"==e?s4:s5,s=new tr.HiM(0xffffff,r.topLight.intensity,28,2);s.position.set(...r.topLight.position),this.add(s);let n=new tr.eaF(t,i);for(let e of(n.position.set(...r.room.position),n.scale.set(...r.room.scale),this.add(n),r.boxes)){let i=new tr.eaF(t,a);i.position.set(...e.position),i.rotation.set(0,e.rotation,0),i.scale.set(...e.scale),this.add(i)}for(let e of r.lights){let i=new tr.eaF(t,this.createAreaLightMaterial(e.intensity));i.position.set(...e.position),i.scale.set(...e.scale),this.add(i)}}createAreaLightMaterial(e){let t=new tr.V9B;return t.color.setScalar(e),t}}let s7=/\.hdr(\.js)?$/,ne=/\.ktx2(\?|#|$)/;class nt{constructor(e){this.threeRenderer=e,this.lottieLoaderUrl="",this._ldrLoader=null,this._imageLoader=null,this._hdrLoader=null,this._lottieLoader=null,this.generatedEnvironmentMap=null,this.generatedEnvironmentMapAlt=null,this.skyboxCache=new Map,this.blurMaterial=null,this.blurScene=null}ldrLoader(e){return null==this._ldrLoader&&(this._ldrLoader=new tr.Tap),this._ldrLoader.setWithCredentials(e),this._ldrLoader}imageLoader(e){return null==this._imageLoader&&(this._imageLoader=new s8(this.threeRenderer)),this._imageLoader.setWithCredentials(e),this._imageLoader}hdrLoader(e){return null==this._hdrLoader&&(this._hdrLoader=new s3,this._hdrLoader.setDataType(tr.ix0)),this._hdrLoader.setWithCredentials(e),this._hdrLoader}async getLottieLoader(e){if(null==this._lottieLoader){let{LottieLoader:e}=await import(this.lottieLoaderUrl);this._lottieLoader=new e}return this._lottieLoader.setWithCredentials(e),this._lottieLoader}async loadImage(e,t,i){if("image/ktx2"===i||ne.test(e))return this.loadKTX2(e,t);let a=await new Promise((i,a)=>this.ldrLoader(t).load(e,i,()=>{},a));return a.name=e,a.flipY=!1,a}async loadKTX2(e,t){iW.setWithCredentials(t);let i=await new Promise((t,i)=>iW.load(e,t,()=>{},i));return i.name=e,i.flipY=!1,i}async loadLottie(e,t,i){let a=await this.getLottieLoader(i);a.setQuality(t);let r=await new Promise((t,i)=>a.load(e,t,()=>{},i));return r.name=e,r}async loadEquirect(e,t=!1,i=()=>{}){try{let a=s7.test(e),r=a?this.hdrLoader(t):this.imageLoader(t),s=await new Promise((t,a)=>r.load(e,e=>{let{renderTarget:i}=e;if(null!=i){let a;try{let t=e.toDataTexture();t.needsUpdate=!0;let r=t.image.data,s=!1,n=r.length;for(let e=0;e<n;e++)if(0!==r[e]){s=!0;break}s?(a=t,e.dispose(!0)):(console.warn("Decoded DataTexture is completely black, falling back to render target texture."),a=i.texture,e.dispose(!1))}catch(t){console.warn("Failed to convert gainmap to DataTexture, falling back to render target texture:",t),a=i.texture,e.dispose(!1)}t(a)}else t(e)},e=>{i(e.loaded/e.total*.9)},a));return i(1),s.name=e,s.mapping=tr.wfO,a||s.type===tr.ix0||(s.colorSpace=tr.er$),s}finally{i&&i(1)}}async generateEnvironmentMapAndSkybox(e=null,t=null,i=()=>{},a=!1){let r,s="legacy"!==t;("legacy"===t||"neutral"===t)&&(t=null),t=tm(t);let n=Promise.resolve(null);e&&(n=this.loadEquirectFromUrl(e,a,i)),r=t?this.loadEquirectFromUrl(t,a,i):e?this.loadEquirectFromUrl(e,a,i):s?this.loadGeneratedEnvironmentMapAlt():this.loadGeneratedEnvironmentMap();let[o,A]=await Promise.all([r,n]);if(null==o)throw Error("Failed to load environment map.");return{environmentMap:o,skybox:A}}async loadEquirectFromUrl(e,t,i){if(!this.skyboxCache.has(e)){let a=this.loadEquirect(e,t,i);this.skyboxCache.set(e,a)}return this.skyboxCache.get(e)}async GenerateEnvironmentMap(e,t){await ((e=0)=>new Promise(t=>setTimeout(t,e)))();let i=this.threeRenderer,a=new av.o6l(256,{generateMipmaps:!1,type:tr.ix0,format:tr.GWd,colorSpace:tr.Zr2,depthBuffer:!0}),r=new tr.F1T(.1,100,a),s=r.renderTarget.texture;s.name=t;let n=i.outputColorSpace,o=i.toneMapping;
460return i.toneMapping=tr.y_p,i.outputColorSpace=tr.Zr2,r.update(i,e),this.blurCubemap(a,.04),i.toneMapping=o,i.outputColorSpace=n,s}async loadGeneratedEnvironmentMap(){return null==this.generatedEnvironmentMap&&(this.generatedEnvironmentMap=this.GenerateEnvironmentMap(new s6("legacy"),"legacy")),this.generatedEnvironmentMap}async loadGeneratedEnvironmentMapAlt(){return null==this.generatedEnvironmentMapAlt&&(this.generatedEnvironmentMapAlt=this.GenerateEnvironmentMap(new s6("neutral"),"neutral")),this.generatedEnvironmentMapAlt}blurCubemap(e,t){if(null==this.blurMaterial){this.blurMaterial=this.getBlurShader(20);let e=new tr.iNn,t=new tr.eaF(e,this.blurMaterial);this.blurScene=new tr.Z58,this.blurScene.add(t)}let i=e.clone();this.halfblur(e,i,t,"latitudinal"),this.halfblur(i,e,t,"longitudinal")}halfblur(e,t,i,a){let r=e.width,s=isFinite(i)?Math.PI/(2*r):2*Math.PI/39,n=i/s,o=isFinite(i)?1+Math.floor(3*n):20;o>20&&console.warn(`sigmaRadians, ${i}, is too large and will clip, as it requested ${o} samples when the maximum is set to 20`);let A=[],l=0;for(let e=0;e<20;++e){let t=e/n,i=Math.exp(-t*t/2);A.push(i),0==e?l+=i:e<o&&(l+=2*i)}for(let e=0;e<A.length;e++)A[e]=A[e]/l;let h=this.blurMaterial.uniforms;h.envMap.value=e.texture,h.samples.value=o,h.weights.value=A,h.latitudinal.value="latitudinal"===a,h.dTheta.value=s,new tr.F1T(.1,100,t).update(this.threeRenderer,this.blurScene)}getBlurShader(e){let t=new Float32Array(e),i=new tr.Pq0(0,1,0);return new tr.BKk({name:"SphericalGaussianBlur",defines:{n:e},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:t},latitudinal:{value:!1},dTheta:{value:0},poleAxis:{value:i}},vertexShader:` 461 462 varying vec3 vOutputDirection; 463 464 void main() { 465 466 vOutputDirection = vec3( position ); 467 gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 468 469 } 470 `,fragmentShader:` 471 varying vec3 vOutputDirection; 472 473 uniform samplerCube envMap; 474 uniform int samples; 475 uniform float weights[ n ]; 476 uniform bool latitudinal; 477 uniform float dTheta; 478 uniform vec3 poleAxis; 479 480 vec3 getSample( float theta, vec3 axis ) { 481 482 float cosTheta = cos( theta ); 483 // Rodrigues' axis-angle rotation 484 vec3 sampleDirection = vOutputDirection * cosTheta 485 + cross( axis, vOutputDirection ) * sin( theta ) 486 + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); 487 488 return vec3( textureCube( envMap, sampleDirection ) ); 489 490 } 491 492 void main() { 493 494 vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); 495 496 if ( all( equal( axis, vec3( 0.0 ) ) ) ) { 497 498 axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); 499 500 } 501 502 axis = normalize( axis ); 503 504 gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); 505 gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); 506 507 for ( int i = 1; i < n; i++ ) { 508 509 if ( i >= samples ) { 510 511 break; 512 513 } 514 515 float theta = dTheta * float( i ); 516 gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); 517 gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); 518 519 } 520 } 521 `,blending:tr.XIg,depthTest:!1,depthWrite:!1,side:tr.hsX})}async dispose(){for(let[,e]of this.skyboxCache)(await e).dispose();null!=this.generatedEnvironmentMap&&((await this.generatedEnvironmentMap).dispose(),this.generatedEnvironmentMap=null),null!=this.generatedEnvironmentMapAlt&&((await this.generatedEnvironmentMapAlt).dispose(),this.generatedEnvironmentMapAlt=null),null!=this.blurMaterial&&this.blurMaterial.dispose()}}let ni=[1,.79,.62,.5,.4,.31,.25],na="high-performance";class nr extends tr.Qev{static get singleton(){return this._singleton||(this._singleton=new nr({powerPreference:(self.ModelViewerElement||{}).powerPreference||na,debug:ty()})),this._singleton}static resetSingleton(){let e=this._singleton.dispose();for(let t of e)t.disconnectedCallback();for(let t of(this._singleton=new nr({powerPreference:(self.ModelViewerElement||{}).powerPreference||na,debug:ty()}),e))t.connectedCallback()}get canRender(){return null!=this.threeRenderer}get scaleFactor(){return ni[this.scaleStep]}set minScale(e){let t=1;for(;t<ni.length&&!(ni[t]<e);)++t;this.lastStep=t-1}constructor(e){super(),this.loader=new i0(sH),this.width=0,this.height=0,this.dpr=1,this.scenes=new Set,this.multipleScenesVisible=!1,this.lastTick=performance.now(),this.renderedLastFrame=!1,this.scaleStep=0,this.lastStep=3,this.avgFrameDuration=50,this.onWebGLContextLost=e=>{this.dispatchEvent({type:"contextlost",sourceEvent:e})},this.onWebGLContextRestored=()=>{var e;
521for(let t of(null==(e=this.textureUtils)||e.dispose(),this.textureUtils=this.canRender?new nt(this.threeRenderer):null,this.scenes))t.element[tx]()},this.dpr=window.devicePixelRatio,this.canvas3D=document.createElement("canvas"),this.canvas3D.id="webgl-canvas",this.canvas3D.classList.add("show");try{this.threeRenderer=new av.JeP({canvas:this.canvas3D,alpha:!0,antialias:!0,powerPreference:e.powerPreference,preserveDrawingBuffer:!0}),this.threeRenderer.autoClear=!0,this.threeRenderer.setPixelRatio(1),this.threeRenderer.debug={checkShaderErrors:!!e.debug,onShaderError:null},this.threeRenderer.toneMapping=tr.aJ8}catch(e){console.warn(e)}this.arRenderer=this.canRender?new sx(this):null,this.textureUtils=this.canRender?new nt(this.threeRenderer):null,this.canRender&&i0.initializeKTX2Loader(this.threeRenderer),this.canvas3D.addEventListener("webglcontextlost",this.onWebGLContextLost),this.canvas3D.addEventListener("webglcontextrestored",this.onWebGLContextRestored),this.updateRendererSize()}registerScene(e){if(this.scenes.add(e),e.forceRescale(),this.canRender){let t=new tr.I9Y;this.threeRenderer.getSize(t),e.canvas.width=t.x,e.canvas.height=t.y,this.scenes.size>0&&this.threeRenderer.setAnimationLoop((e,t)=>this.render(e,t))}}unregisterScene(e){this.scenes.delete(e),this.canvas3D.parentElement===e.canvas.parentElement&&e.canvas.parentElement.removeChild(this.canvas3D),this.canRender&&0===this.scenes.size&&this.threeRenderer.setAnimationLoop(null)}displayCanvas(e){return e.element.modelIsVisible&&!this.multipleScenesVisible?this.canvas3D:e.element[Ae]}countVisibleScenes(){let{canvas3D:e}=this,t=0,i=null;for(let a of this.scenes){let{element:r}=a;r.modelIsVisible&&null==a.externalRenderer&&++t,e.parentElement===a.canvas.parentElement&&(i=a)}let a=t>1;if(null!=i){let t=a&&!this.multipleScenesVisible,r=!i.element.modelIsVisible;if(t||r){let{width:t,height:a}=this.sceneSize(i);this.copyPixels(i,t,a),e.parentElement.removeChild(e)}}this.multipleScenesVisible=a}updateRendererSize(){var e;let t=window.devicePixelRatio;if(t!==this.dpr)for(let e of this.scenes){let{element:t}=e;t[o$](t.getBoundingClientRect())}let i=0,a=0;for(let e of this.scenes)i=Math.max(i,e.width),a=Math.max(a,e.height);if(i!==this.width||a!==this.height||t!==this.dpr)for(let r of(this.width=i,this.height=a,this.dpr=t,i=Math.ceil(i*t),a=Math.ceil(a*t),this.canRender&&this.threeRenderer.setSize(i,a,!1),this.scenes)){let{canvas:t}=r;t.width=i,t.height=a,r.forceRescale(),null==(e=r.effectRenderer)||e.setSize(i,a)}}updateRendererScale(e){let t=this.scaleStep;this.avgFrameDuration+=tC(.2*(e-this.avgFrameDuration),-5,5),this.avgFrameDuration>60?++this.scaleStep:this.avgFrameDuration<40&&this.scaleStep>0&&--this.scaleStep,this.scaleStep=Math.min(this.scaleStep,this.lastStep),t!==this.scaleStep&&(this.avgFrameDuration=50)}shouldRender(e){if(e.shouldRender())e.scaleStep!=this.scaleStep&&(e.scaleStep=this.scaleStep,this.rescaleCanvas(e));else{if(0==e.scaleStep)return!1;e.scaleStep=0,this.rescaleCanvas(e)}return!0}rescaleCanvas(e){let t=ni[e.scaleStep],i=Math.ceil(this.width/t),a=Math.ceil(this.height/t),{style:r}=e.canvas;r.width=`${i}px`,r.height=`${a}px`,this.canvas3D.style.width=`${i}px`,this.canvas3D.style.height=`${a}px`;let s=this.dpr*t,n=t<1?"GPU throttling":this.dpr!==window.devicePixelRatio?"No meta viewport tag":"";e.element.dispatchEvent(new CustomEvent("render-scale",{detail:{reportedDpr:window.devicePixelRatio,renderedDpr:s,minimumDpr:this.dpr*ni[this.lastStep],pixelWidth:Math.ceil(e.width*s),pixelHeight:Math.ceil(e.height*s),reason:n}}))}sceneSize(e){let{dpr:t}=this,i=ni[e.scaleStep];return{width:Math.min(Math.ceil(e.width*i*t),this.canvas3D.width),height:Math.min(Math.ceil(e.height*i*t),this.canvas3D.height)}}copyPixels(e,t,i){let a=e.context;if(null==a)return void console.log("could not acquire 2d context");a.clearRect(0,0,t,i),a.drawImage(this.canvas3D,0,0,t,i,0,0,t,i),e.canvas.classList.add("show")}orderedScenes(){let e=[];for(let t of[!1,!0])for(let i of this.scenes)i.element.modelIsVisible===t&&e.push(i);return e}get isPresenting(){var e;return(null==(e=this.arRenderer)?void 0:e.isPresenting)===!0}preRender(e,t,i){let{element:a,exposure:r,toneMapping:s}=e;a[Aa](t,i);let n="number"==typeof r&&!Number.isNaN(r),o=a.environmentImage,A=a.skyboxImage,l=s===tr.aJ8&&("neutral"===o||"legacy"===o||!o&&!A);this.threeRenderer.toneMappingExposure=(n?r:1)*(l?1.3:1)}render(e,t){if(null!=t){null!=this.arRenderer&&this.arRenderer.onWebXRFrame(e,t);return}let i=e-this.lastTick;if(this.lastTick=e,!this.canRender||this.isPresenting)return;this.countVisibleScenes(),this.updateRendererSize(),this.renderedLastFrame&&(this.updateRendererScale(i),this.renderedLastFrame=!1);let{canvas3D:a}=this;for(let t of this.orderedScenes()){let{element:r}=t;if(!r.loaded||!r.modelIsVisible&&t.renderCount>0||(this.preRender(t,e,i),!this.shouldRender(t)))continue;if(null!=t.externalRenderer){let e=t.getCamera();e.updateMatrix();let{matrix:i,projectionMatrix:a}=e,r=i.elements.slice(),s=t.getTarget();r[12]+=s.x,r[13]+=s.y,r[14]+=s.z,t.externalRenderer.render({viewMatrix:r,projectionMatrix:a.elements});continue}if(!r.modelIsVisible&&!this.multipleScenesVisible)for(let e of this.scenes)e.element.modelIsVisible&&e.queueRender();let{width:s,height:n}=this.sceneSize(t);t.renderShadow(this.threeRenderer),this.threeRenderer.setRenderTarget(null),this.threeRenderer.setViewport(0,Math.ceil(this.height*this.dpr)-n,s,n),null!=t.effectRenderer?t.effectRenderer.render(i):(this.threeRenderer.autoClear=!0,this.threeRenderer.toneMapping=t.toneMapping,this.threeRenderer.render(t,t.camera)),this.multipleScenesVisible||!t.element.modelIsVisible&&0===t.renderCount?this.copyPixels(t,s,n):a.parentElement!==t.canvas.parentElement&&(t.canvas.parentElement.appendChild(a),t.canvas.classList.remove("show")),t.hasRendered(),++t.renderCount,this.renderedLastFrame=!0}}dispose(){null!=this.textureUtils&&this.textureUtils.dispose(),null!=this.threeRenderer&&this.threeRenderer.dispose(),this.textureUtils=null,this.threeRenderer=null;let e=[];for(let t of this.scenes)e.push(t.element);return this.canvas3D.removeEventListener("webglcontextlost",this.onWebGLContextLost),this.canvas3D.removeEventListener("webglcontextrestored",this.onWebGLContextRestored),e}}let ns=Symbol("correlatedObjects"),nn=Symbol("onUpdate");class no{constructor(e,t){this[nn]=e,this[ns]=t}}let nA=new tr.V9B,nl=new tr.bdM(2,2),nh=0,nc=Symbol("threeTexture"),nd=Symbol("threeTextures");Symbol("applyTexture");class ng extends no{get[nc](){var e;return null==(e=this[ns])?void 0:e.values().next().value}get[nd](){return this[ns]}constructor(e,t){super(e,new Set(t?[t]:[]));let i=this[nc].image;i.src||(i.src=t.name?t.name:"adhoc_image"+nh++),i.name||(i.name=t&&i&&i.src?i.src.split("/").pop():"adhoc_image")}get name(){return this[nc].image.name||""}get uri(){return this[nc].image.src}get bufferView(){return this[nc].image.bufferView}
521get element(){let e=this[nc];if(e&&(e.isCanvasTexture||e.isVideoTexture))return e.image}get animation(){let e=this[nc];if(e&&e.isCanvasTexture&&e.animation)return e.animation}get type(){return null!=this.uri?"external":"embedded"}set name(e){for(let t of this[nd])t.image.name=e}update(){let e=this[nc];e&&e.isCanvasTexture&&!e.animation&&(this[nc].needsUpdate=!0,this[nn]())}async createThumbnail(e,t){let i=new tr.Z58;nA.map=this[nc];let a=new tr.eaF(nl,nA);i.add(a);let r=new tr.qUd(-1,1,1,-1,0,1),{threeRenderer:s}=nr.singleton,n=new tr.nWS(e,t);s.setRenderTarget(n),s.render(i,r),s.setRenderTarget(null);let o=new Uint8Array(e*t*4);s.readRenderTargetPixels(n,0,0,e,t,o),oN.width=e,oN.height=t;let A=oN.getContext("2d"),l=A.createImageData(e,t);return l.data.set(o),A.putImageData(l,0,0),new Promise(async(e,t)=>{oN.toBlob(i=>{if(!i)return t("Failed to capture thumbnail.");e(URL.createObjectURL(i))},"image/png")})}}!function(e){e[e.Nearest=9728]="Nearest",e[e.Linear=9729]="Linear",e[e.NearestMipmapNearest=9984]="NearestMipmapNearest",e[e.LinearMipmapNearest=9985]="LinearMipmapNearest",e[e.NearestMipmapLinear=9986]="NearestMipmapLinear",e[e.LinearMipmapLinear=9987]="LinearMipmapLinear"}(eU||(eU={})),function(e){e[e.ClampToEdge=33071]="ClampToEdge",e[e.MirroredRepeat=33648]="MirroredRepeat",e[e.Repeat=10497]="Repeat"}(e_||(e_={}));let nu=new Map([[e_.Repeat,tr.GJx],[e_.ClampToEdge,tr.ghU],[e_.MirroredRepeat,tr.kTW]]),np=new Map([[tr.GJx,e_.Repeat],[tr.ghU,e_.ClampToEdge],[tr.kTW,e_.MirroredRepeat]]),nf=new Map([[eU.Nearest,tr.hxR],[eU.Linear,tr.k6q],[eU.NearestMipmapNearest,tr.pHI],[eU.LinearMipmapNearest,tr.kRr],[eU.NearestMipmapLinear,tr.Cfg],[eU.LinearMipmapLinear,tr.$_I]]),nm=new Map([[tr.hxR,eU.Nearest],[tr.k6q,eU.Linear],[tr.pHI,eU.NearestMipmapNearest],[tr.kRr,eU.LinearMipmapNearest],[tr.Cfg,eU.NearestMipmapLinear],[tr.$_I,eU.LinearMipmapLinear]]),nb=new Map([[eU.Nearest,tr.hxR],[eU.Linear,tr.k6q]]),nE=new Map([[tr.hxR,eU.Nearest],[tr.k6q,eU.Linear]]),nI=Symbol("threeTexture"),nC=Symbol("threeTextures"),ny=Symbol("setProperty");class nB extends no{get[nI](){var e;return null==(e=this[ns])?void 0:e.values().next().value}get[nC](){return this[ns]}constructor(e,t){super(e,new Set(t?[t]:[]))}get name(){return this[nI].name||""}get minFilter(){return nm.get(this[nI].minFilter)}get magFilter(){return nE.get(this[nI].magFilter)}get wrapS(){return np.get(this[nI].wrapS)}get wrapT(){return np.get(this[nI].wrapT)}get rotation(){return this[nI].rotation}get scale(){return Ad(this[nI].repeat)}get offset(){return Ad(this[nI].offset)}setMinFilter(e){this[ny]("minFilter",nf.get(e))}setMagFilter(e){this[ny]("magFilter",nb.get(e))}setWrapS(e){this[ny]("wrapS",nu.get(e))}setWrapT(e){this[ny]("wrapT",nu.get(e))}setRotation(e){null==e&&(e=0),this[ny]("rotation",e)}setScale(e){null==e&&(e={u:1,v:1}),this[ny]("repeat",new tr.I9Y(e.u,e.v))}setOffset(e){null==e&&(e={u:0,v:0}),this[ny]("offset",new tr.I9Y(e.u,e.v))}[ny](e,t){if(((e,t)=>{switch(e){case"minFilter":let i;return i=t,nm.has(i);case"magFilter":let a;return a=t,nE.has(a);case"wrapS":case"wrapT":let r;return r=t,np.has(r);case"rotation":case"repeat":case"offset":return!0;default:throw Error(`Cannot configure property "${e}" on Sampler`)}})(e,t))for(let i of this[nC])i[e]=t,i.needsUpdate=!0;this[nn]()}}let nw=Symbol("image"),nv=Symbol("sampler"),nx=Symbol("threeTexture");class nS extends no{get[nx](){var e;return null==(e=this[ns])?void 0:e.values().next().value}constructor(e,t){super(e,new Set(t?[t]:[])),this[nv]=new nB(e,t),this[nw]=new ng(e,t)}get name(){return this[nx].name||""}set name(e){for(let t of this[ns])t.name=e}get sampler(){return this[nv]}get source(){return this[nw]}}let nQ=Symbol("texture"),nR=Symbol("transform"),nM=Symbol("materials"),nT=Symbol("usage"),nD=Symbol("onUpdate"),nk=Symbol("activeVideo");!function(e){e[e.Base=0]="Base",e[e.MetallicRoughness=1]="MetallicRoughness",e[e.Normal=2]="Normal",e[e.Occlusion=3]="Occlusion",e[e.Emissive=4]="Emissive",e[e.Clearcoat=5]="Clearcoat",e[e.ClearcoatRoughness=6]="ClearcoatRoughness",e[e.ClearcoatNormal=7]="ClearcoatNormal",e[e.SheenColor=8]="SheenColor",e[e.SheenRoughness=9]="SheenRoughness",e[e.Transmission=10]="Transmission",e[e.Thickness=11]="Thickness",e[e.Specular=12]="Specular",e[e.SpecularColor=13]="SpecularColor",e[e.Iridescence=14]="Iridescence",e[e.IridescenceThickness=1
5215]="IridescenceThickness",e[e.Anisotropy=16]="Anisotropy"}(eq||(eq={}));class nF{constructor(e,t,i,a){this[eN]=null,this[eO]={rotation:0,scale:new tr.I9Y(1,1),offset:new tr.I9Y(0,0)},this[eG]=!1,i&&(this[nR].rotation=i.rotation,this[nR].scale.copy(i.repeat),this[nR].offset.copy(i.offset),this[nQ]=new nS(e,i)),this[nD]=e,this[nM]=a,this[nT]=t}get texture(){return this[nQ]}setTexture(e){var t,i;let a=null!=e?e.source[nc]:null,r=null==(t=this[nQ])?void 0:t.source[nc];if(null!=r&&r.isVideoTexture?this[nk]=!1:(null==(i=this[nQ])?void 0:i.source.animation)&&this[nQ].source.animation.removeEventListener("enterFrame",this[nD]),this[nQ]=e,null!=a&&a.isVideoTexture){let e=a.image;if(this[nk]=!0,null!=e.requestVideoFrameCallback){let t=()=>{this[nk]&&(this[nD](),e.requestVideoFrameCallback(t))};e.requestVideoFrameCallback(t)}else{let e=()=>{this[nk]&&(this[nD](),requestAnimationFrame(e))};requestAnimationFrame(e)}}else(null==e?void 0:e.source.animation)!=null&&e.source.animation.addEventListener("enterFrame",this[nD]);let s=tr.er$;if(this[nM])for(let e of this[nM]){switch(this[nT]){case eq.Base:e.map=a;break;case eq.MetallicRoughness:s=tr.Zr2,e.metalnessMap=a,e.roughnessMap=a;break;case eq.Normal:s=tr.Zr2,e.normalMap=a;break;case eq.Occlusion:s=tr.Zr2,e.aoMap=a;break;case eq.Emissive:e.emissiveMap=a;break;case eq.Clearcoat:e.clearcoatMap=a;break;case eq.ClearcoatRoughness:e.clearcoatRoughnessMap=a;break;case eq.ClearcoatNormal:e.clearcoatNormalMap=a;break;case eq.SheenColor:e.sheenColorMap=a;break;case eq.SheenRoughness:e.sheenRoughnessMap=a;break;case eq.Transmission:e.transmissionMap=a;break;case eq.Thickness:e.thicknessMap=a;break;case eq.Specular:e.specularIntensityMap=a;break;case eq.SpecularColor:e.specularColorMap=a;break;case eq.Iridescence:e.iridescenceMap=a;break;case eq.IridescenceThickness:e.iridescenceThicknessMap=a;break;case eq.Anisotropy:e.anisotropyMap=a}e.needsUpdate=!0}
521a&&(a.colorSpace=s,a.rotation=this[nR].rotation,a.repeat=this[nR].scale,a.offset=this[nR].offset),this[nD]()}}eN=nQ,eO=nR,eG=nk;let nL=Symbol("threeMaterial"),nP=Symbol("threeMaterials"),nU=Symbol("baseColorTexture"),n_=Symbol("metallicRoughnessTexture");class nN extends no{get[nP](){return this[ns]}get[nL](){var e;return null==(e=this[ns])?void 0:e.values().next().value}constructor(e,t){super(e,t);let{map:i,metalnessMap:a}=t.values().next().value;this[nU]=new nF(e,eq.Base,i,t),this[n_]=new nF(e,eq.MetallicRoughness,a,t)}get baseColorFactor(){let e=[0,0,0,this[nL].opacity];return this[nL].color.toArray(e),e}get metallicFactor(){return this[nL].metalness}get roughnessFactor(){return this[nL].roughness}get baseColorTexture(){return this[nU]}get metallicRoughnessTexture(){return this[n_]}setBaseColorFactor(e){let t=new tr.Q1f;for(let i of(e instanceof Array?t.fromArray(e):t.set(e),this[nP]))i.color.set(t),e instanceof Array&&e.length>3?i.opacity=e[3]:(e=[0,0,0,i.opacity],t.toArray(e));this[nn]()}setMetallicFactor(e){for(let t of this[nP])t.metalness=e;this[nn]()}setRoughnessFactor(e){for(let t of this[nP])t.roughness=e;this[nn]()}}let nO=Symbol("pbrMetallicRoughness"),nG=Symbol("normalTexture"),nq=Symbol("occlusionTexture"),nH=Symbol("emissiveTexture"),nj=Symbol("backingThreeMaterial"),nz=Symbol("applyAlphaCutoff"),nK=Symbol("getAlphaMode"),nV=Symbol("lazyLoadGLTFInfo"),nJ=Symbol("initialize"),nY=Symbol("getLoadedMaterial"),nW=Symbol("ensureMaterialIsLoaded"),n$=Symbol("gltfIndex"),nX=Symbol("setActive"),nZ=Symbol("variantIndices"),n0=Symbol("isActive"),n1=Symbol("modelVariants"),n2=Symbol("name"),n8=Symbol("pbrTextures");class n9 extends no{get[(eH=nZ,ej=n8,nj)](){return this[ns].values().next().value}constructor(e,t,i,a,r,s,n){super(e,r),this[eH]=new Set,this[ej]=new Map,this[n$]=t,this[n0]=i,this[n1]=a,this[n2]=s,null==n?this[nJ]():this[nV]=n}[nJ](){let e=this[nn],t=this[ns];this[nO]=new nN(e,t);let{normalMap:i,aoMap:a,emissiveMap:r}=t.values().next().value;this[nG]=new nF(e,eq.Normal,i,t),this[nq]=new nF(e,eq.Occlusion,a,t),this[nH]=new nF(e,eq.Emissive,r,t);let s=i=>{this[n8].set(i,new nF(e,i,null,t))};s(eq.Clearcoat),s(eq.ClearcoatRoughness),s(eq.ClearcoatNormal),s(eq.SheenColor),s(eq.SheenRoughness),s(eq.Transmission),s(eq.Thickness),s(eq.Specular),s(eq.SpecularColor),s(eq.Iridescence),s(eq.IridescenceThickness),s(eq.Anisotropy)}async [nY](){if(null!=this[nV]){let e=await this[nV].doLazyLoad();return this[nJ](),this[nV]=void 0,this.ensureLoaded=async()=>{},e}return null}colorFromRgb(e){let t=new tr.Q1f;return e instanceof Array?t.fromArray(e):t.set(e),t}[nW](){if(null!=this[nV])throw Error(`Material "${this.name}" has not been loaded, call 'await 522 myMaterial.ensureLoaded()' before using an unloaded material.`)}async ensureLoaded(){await this[nY]()}get isLoaded(){return null==this[nV]}get isActive(){return this[n0]}[nX](e){this[n0]=e}get name(){return this[n2]||""}set name(e){if(this[n2]=e,null!=this[ns])for(let t of this[ns])t.name=e}get pbrMetallicRoughness(){return this[nW](),this[nO]}get normalTexture(){return this[nW](),this[nG]}get occlusionTexture(){return this[nW](),this[nq]}get emissiveTexture(){return this[nW](),this[nH]}get emissiveFactor(){return this[nW](),this[nj].emissive.toArray()}get index(){return this[n$]}hasVariant(e){let t=this[n1].get(e);return null!=t&&this[nZ].has(t.index)}setEmissiveFactor(e){this[nW]();let t=this.colorFromRgb(e);for(let e of this[ns])e.emissive.set(t);this[nn]()}[nK](){return this[nj].transparent?"BLEND":this[nj].alphaTest>0?"MASK":"OPAQUE"}[nz](){for(let e of(this[nW](),this[ns]))"MASK"===this[nK]()?void 0==e.alphaTest&&(e.alphaTest=.5):e.alphaTest=void 0,e.needsUpdate=!0}setAlphaCutoff(e){for(let t of(this[nW](),this[ns]))t.alphaTest=e,t.needsUpdate=!0;this[nz](),this[nn]()}getAlphaCutoff(){return this[nW](),this[nj].alphaTest}setDoubleSided(e){for(let t of(this[nW](),this[ns]))t.side=e?tr.$EB:tr.hB5,t.needsUpdate=!0;this[nn]()}getDoubleSided(){return this[nW](),this[nj].side==tr.$EB}setAlphaMode(e){this[nW]();let t=(e,t)=>{e.transparent=t,e.depthWrite=!t};for(let i of this[ns])t(i,"BLEND"===e),"MASK"===e?i.alphaTest=.5:i.alphaTest=void 0,i.needsUpdate=!0;this[nn]()}getAlphaMode(){return this[nW](),this[nK]()}get emissiveStrength(){return this[nW](),this[nj].emissiveIntensity}setEmissiveStrength(e){for(let t of(this[nW](),this[ns]))t.emissiveIntensity=e;this[nn]()}get clearcoatFactor(){return this[nW](),this[nj].clearcoat}get clearcoatRoughnessFactor(){return this[nW](),this[nj].clearcoatRoughness}get clearcoatTexture(){return this[nW](),this[n8].get(eq.Clearcoat)}get clearcoatRoughnessTexture(){return this[nW](),this[n8].get(eq.ClearcoatRoughness)}get clearcoatNormalTexture(){return this[nW](),this[n8].get(eq.ClearcoatNormal)}get clearcoatNormalScale(){return this[nW](),this[nj].clearcoatNormalScale.x}setClearcoatFactor(e){for(let t of(this[nW](),this[ns]))t.clearcoat=e;this[nn]()}setClearcoatRoughnessFactor(e){for(let t of(this[nW](),this[ns]))t.clearcoatRoughness=e;this[nn]()}setClearcoatNormalScale(e){for(let t of(this[nW](),this[ns]))t.clearcoatNormalScale=new tr.I9Y(e,e);this[nn]()}get ior(){return this[nW](),this[nj].ior}setIor(e){for(let t of(this[nW](),this[ns]))t.ior=e;this[nn]()}get sheenColorFactor(){return this[nW](),this[nj].sheenColor.toArray()}get sheenColorTexture(){return this[nW](),this[n8].get(eq.SheenColor)}get sheenRoughnessFactor(){return this[nW](),this[nj].sheenRoughness}get sheenRoughnessTexture(){return this[nW](),this[n8].get(eq.SheenRoughness)}setSheenColorFactor(e){this[nW]();let t=this.colorFromRgb(e);for(let e of this[ns])e.sheenColor.set(t),e.sheen=1;this[nn]()}setSheenRoughnessFactor(e){for(let t of(this[nW](),this[ns]))t.sheenRoughness=e,t.sheen=1;this[nn]()}get transmissionFactor(){return this[nW](),this[nj].transmission}get transmissionTexture(){return this[nW](),this[n8].get(eq.Transmission)}setTransmissionFactor(e){for(let t of(this[nW](),this[ns]))t.transmission=e;this[nn]()}get thicknessFactor(){return this[nW](),this[nj].thickness}get thicknessTexture(){return this[nW](),this[n8].get(eq.Thickness)}get attenuationDistance(){return this[nW](),this[nj].attenuationDistance}get attenuationColor(){return this[nW](),this[nj].attenuationColor.toArray()}setThicknessFactor(e){for(let t of(this[nW](),this[ns]))t.thickness=e;this[nn]()}setAttenuationDistance(e){for(let t of(this[nW](),this[ns]))t.attenuationDistance=e;this[nn]()}setAttenuationColor(e){this[nW]();let t=this.colorFromRgb(e);for(let e of this[ns])e.attenuationColor.set(t);this[nn]()}get specularFactor(){return this[nW](),this[nj].specularIntensity}get specularTexture(){return this[nW](),this[n8].get(eq.Specular)}
522get specularColorFactor(){return this[nW](),this[nj].specularColor.toArray()}get specularColorTexture(){return this[nW](),this[n8].get(eq.SheenColor)}setSpecularFactor(e){for(let t of(this[nW](),this[ns]))t.specularIntensity=e;this[nn]()}setSpecularColorFactor(e){this[nW]();let t=this.colorFromRgb(e);for(let e of this[ns])e.specularColor.set(t);this[nn]()}get iridescenceFactor(){return this[nW](),this[nj].iridescence}get iridescenceTexture(){return this[nW](),this[n8].get(eq.Iridescence)}get iridescenceIor(){return this[nW](),this[nj].iridescenceIOR}get iridescenceThicknessMinimum(){return this[nW](),this[nj].iridescenceThicknessRange[0]}get iridescenceThicknessMaximum(){return this[nW](),this[nj].iridescenceThicknessRange[1]}get iridescenceThicknessTexture(){return this[nW](),this[n8].get(eq.IridescenceThickness)}setIridescenceFactor(e){for(let t of(this[nW](),this[ns]))t.iridescence=e;this[nn]()}setIridescenceIor(e){for(let t of(this[nW](),this[ns]))t.iridescenceIOR=e;this[nn]()}setIridescenceThicknessMinimum(e){for(let t of(this[nW](),this[ns]))t.iridescenceThicknessRange[0]=e;this[nn]()}setIridescenceThicknessMaximum(e){for(let t of(this[nW](),this[ns]))t.iridescenceThicknessRange[1]=e;this[nn]()}get anisotropyStrength(){return this[nW](),this[nj].anisotropy}get anisotropyRotation(){return this[nW](),this[nj].anisotropyRotation}get anisotropyTexture(){return this[nW](),this[n8].get(eq.Anisotropy)}setAnisotropyStrength(e){for(let t of(this[nW](),this[ns]))t.anisotropy=e;this[nn]()}setAnisotropyRotation(e){for(let t of(this[nW](),this[ns]))t.anisotropyRotation=e;this[nn]()}}class n3{constructor(e){this.name="",this.children=[],this.name=e}}class n4 extends n3{constructor(e,t,i,a){super(e.name),this.materials=new Map,this.variantToMaterialMap=new Map,this.initialMaterialIdx=0,this.activeMaterialIdx=0,this.mesh=e;let{gltf:r,threeGLTF:s,threeObjectMap:n}=a;this.parser=s.parser,this.modelVariants=i,this.mesh.userData.variantData=i;let o=n.get(e.material);null!=o.materials?this.initialMaterialIdx=this.activeMaterialIdx=o.materials:console.error(`Primitive (${e.name}) missing initial material reference.`);let A=e.userData.associations||{};if(null==A.meshes)return void console.error("Mesh is missing primitive index association");let l=((r.meshes||[])[A.meshes].primitives||[])[A.primitives];if(null==l)return void console.error("Mesh primitive definition is missing.");if(null!=l.material)this.materials.set(l.material,t[l.material]);else{let e=t.findIndex(e=>"Default"===e.name);e>=0?this.materials.set(e,t[e]):console.warn("gltfPrimitive has no material!")}if(l.extensions&&l.extensions.KHR_materials_variants){let e=l.extensions.KHR_materials_variants,a=s.parser.json.extensions.KHR_materials_variants.variants;for(let r of e.mappings){let e=t[r.material];for(let t of(this.materials.set(r.material,e),r.variants)){let{name:r}=a[t];this.variantToMaterialMap.set(t,e),e[nZ].add(t),i.has(r)||i.set(r,{name:r,index:t})}}}}async setActiveMaterial(e){let t=this.materials.get(e);if(e!==this.activeMaterialIdx){let i=t[ns],a=await t[nY]();null!=a?this.mesh.material=a:this.mesh.material=i.values().next().value,this.parser.assignFinalMaterial(this.mesh),i.add(this.mesh.material),this.activeMaterialIdx=e}return this.mesh.material}getActiveMaterial(){return this.materials.get(this.activeMaterialIdx)}getMaterial(e){return this.materials.get(e)}async enableVariant(e){if(null==e)return this.setActiveMaterial(this.initialMaterialIdx);if(null!=this.variantToMaterialMap&&this.modelVariants.has(e)){let t=this.modelVariants.get(e);return this.enableVariantHelper(t.index)}return null}async enableVariantHelper(e){if(null!=this.variantToMaterialMap&&null!=e){let t=this.variantToMaterialMap.get(e);if(null!=t)return this.setActiveMaterial(t.index)}return null}async instantiateVariants(){if(null!=this.variantToMaterialMap)for(let e of this.variantToMaterialMap.keys()){let t=this.mesh.userData.variantMaterials.get(e);if(null!=t.material)continue;let i=await this.enableVariantHelper(e);null!=i&&(t.material=i)}}get variantInfo(){return this.variantToMaterialMap}addVariant(e,t){if(!this.ensureVariantIsUnused(t))return!1;this.modelVariants.has(t)||this.modelVariants.set(t,{name:t,index:this.modelVariants.size});let i=this.modelVariants.get(t).index;return e[nZ].add(i),this.variantToMaterialMap.set(i,e),this.materials.set(e.index,e),this.updateV
522ariantUserData(i,e),!0}deleteVariant(e){if(this.variantInfo.has(e)){this.variantInfo.delete(e);let t=this.mesh.userData.variantMaterials;null!=t&&t.delete(e)}}updateVariantUserData(e,t){t[nZ].add(e),this.mesh.userData.variantData=this.modelVariants,this.mesh.userData.variantMaterials=this.mesh.userData.variantMaterials||new Map,this.mesh.userData.variantMaterials.set(e,{material:t[ns].values().next().value,gltfMaterialIndex:t.index})}ensureVariantIsUnused(e){let t=this.modelVariants.get(e);return!(null!=t&&this.variantInfo.has(t.index))||(console.warn(`Primitive cannot add variant '${e}' for this material, it already exists.`),!1)}}let n5=Symbol("materials"),n6=Symbol("hierarchy"),n7=Symbol("roots"),oe=Symbol("primitives");Symbol("loadVariant");let ot=Symbol("prepareVariantsForExport"),oi=Symbol("switchVariant"),oa=Symbol("materialFromPoint"),or=Symbol("nodeFromPoint"),os=Symbol("nodeFromIndex"),on=Symbol("variantData"),oo=Symbol("availableVariants"),oA=Symbol("modelOnUpdate"),ol=Symbol("cloneMaterial");class oh{constructor(e,t,i,a){this.gltf=e,this.gltfElementMap=t,this.mapKey=i,this.doLazyLoad=a}}class oc{constructor(e,t=()=>{}){this[ez]=[],this[eK]=[],this[eV]=[],this[eJ]=[],this[eY]=()=>{},this[eW]=new Map,this[oA]=t;let{gltf:i,threeGLTF:a,gltfElementMap:r}=e;for(let[e,s]of i.materials.entries()){let n=r.get(s);if(null!=n)this[n5].push(new n9(t,e,!0,this[on],n,s.name));else{let n=(i.materials||[])[e],o=new Set;r.set(n,o);let A=async()=>{let t=await a.parser.getDependency("material",e);return o.add(t),t};this[n5].push(new n9(t,e,!1,this[on],o,s.name,new oh(i,r,n,A)))}}let s=new Map,n=[];for(let e of a.scene.children)n.push(e);for(;n.length>0;){let t=n.pop(),i=null;t instanceof tr.eaF?(i=new n4(t,this.materials,this[on],e),this[oe].push(i)):i=new n3(t.name);let a=s.get(t);for(let e of(null!=a?a.children.push(i):this[n7].push(i),this[n6].push(i),t.children))n.push(e),s.set(t,i)}}get materials(){return this[n5]}[(ez=n5,eK=n6,eV=n7,eJ=oe,eY=oA,eW=on,oo)](){let e=Array.from(this[on].values());return e.sort((e,t)=>e.index-t.index),e.map(e=>e.name)}getMaterialByName(e){let t=this[n5].filter(t=>t.name===e);return t.length>0?t[0]:null}[os](e,t){let i=this[n6].find(i=>{if(i instanceof n4){let{meshes:a,primitives:r}=i.mesh.userData.associations;if(a==e&&r==t)return!0}return!1});return null==i?null:i}[or](e){return this[n6].find(t=>t instanceof n4&&t.mesh===e.object||!1)||null}[oa](e){let t=this[or](e);return t?t.getActiveMaterial():null}async [oi](e){for(let t of this[oe])await t.enableVariant(e);for(let e of this.materials)e[nX](!1);for(let e of this[oe])this.materials[e.getActiveMaterial().index][nX](!0)}async [ot](){let e=[];for(let t of this[oe])e.push(t.instantiateVariants());await Promise.all(e)}[ol](e,t){let i=this.materials[e];i.isLoaded||console.error(`Cloning an unloaded material, 523 call 'material.ensureLoaded() before cloning the material.`);let a=i[ns],r=new Set;for(let[e,i]of a.entries()){let s=i.clone();s.name=t+(a.size>1?"_inst"+e:""),r.add(s)}let s=new n9(this[oA],this[n5].length,!1,this[on],r,t);return this[n5].push(s),s}createMaterialInstanceForVariant(e,t,i,a=!0){let r=null;for(let a of this[oe]){let s=this[on].get(i);null!=s&&a.variantInfo.has(s.index)||null!=a.getMaterial(e)&&(this.hasVariant(i)||this.createVariant(i),null==r&&(r=this[ol](e,t)),a.addVariant(r,i))}if(a&&null!=r)for(let t of(r[nX](!0),this.materials[e][nX](!1),this[oe]))t.enableVariant(i);return r}
523createVariant(e){this[on].has(e)?console.warn(`Variant '${e}'' already exists`):this[on].set(e,{name:e,index:this[on].size})}hasVariant(e){return this[on].has(e)}setMaterialToVariant(e,t){if(null==this[oo]().find(e=>e===t))return void console.warn(`Can't add material to '${t}', the variant does not exist.'`);if(e<0||e>=this.materials.length)return void console.error("setMaterialToVariant(): materialIndex is out of bounds.");for(let i of this[oe]){let a=i.getMaterial(e);null!=a&&i.addVariant(a,t)}}updateVariantName(e,t){let i=this[on].get(e);null!=i&&(i.name=t,this[on].set(t,i),this[on].delete(e))}deleteVariant(e){let t=this[on].get(e);if(null!=t){for(let i of this.materials)i.hasVariant(e)&&i[nZ].delete(t.index);for(let e of this[oe])e.deleteVariant(t.index);this[on].delete(e)}}}var od=function(e,t,i,a){var r,s=arguments.length,n=s<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,a);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(s<3?r(n):s>3?r(t,i,n):r(t,i))||n);return s>3&&n&&Object.defineProperty(t,i,n),n};let og=Symbol("currentGLTF"),ou=Symbol("originalGltfJson"),op=Symbol("model"),of=Symbol("extraModels"),om=Symbol("getOnUpdateMethod"),ob=Symbol("buildTexture");class oE extends tr.eaF{constructor(){super(void 0,new tr.V9B({depthWrite:!1})),this.height=0,this.radius=0,this.resolution=0,this.userData.noHit=!0}get map(){return this.material.map}set map(e){this.material.map=e}isUsable(){return this.height>0&&this.radius>0&&null!=this.geometry&&null!=this.map}updateGeometry(e=this.height,t=this.radius,i=128){(e!=this.height||t!=this.radius||i!=this.resolution)&&(this.height=e,this.radius=t,this.resolution=i,e>0&&t>0&&(this.geometry.dispose(),this.geometry=function(e,t,i){let a=new tr.Gu$(t,2*i,i);a.scale(1,1,-1);let r=a.getAttribute("position"),s=new tr.Pq0;for(let t=0;t<r.count;++t)if(s.fromBufferAttribute(r,t),s.y<0){let i=-(3*e)/2,a=s.y<i?-e/s.y:1-s.y*s.y/(3*i*i);s.multiplyScalar(a),s.toArray(r.array,3*t)}return r.needsUpdate=!0,a}(e,t,i)))}}let oI=new tr.Pq0,oC=new tr.Pq0,oy=new tr.Pq0,oB=new tr.dwI,ow=new tr.lMl,ov=new tr.PTz;class ox extends i1{constructor(e){super(document.createElement("div")),this.normal=new tr.Pq0(0,1,0),this.initialized=!1,this.referenceCount=1,this.pivotEl=document.createElement("div"),this.slot=document.createElement("slot"),this.element.classList.add("annotation-wrapper"),this.slot.name=e.name,this.element.appendChild(this.pivotEl),this.pivotEl.appendChild(this.slot),this.updatePosition(e.position),this.updateNormal(e.normal),this.surface=e.surface,null!=e.modelIndex&&(this.modelIndex=e.modelIndex)}get facingCamera(){return!this.element.classList.contains("hide")}show(){this.facingCamera&&this.initialized||this.updateVisibility(!0)}hide(){(this.facingCamera||!this.initialized)&&this.updateVisibility(!1)}increment(){this.referenceCount++}decrement(){return this.referenceCount>0&&--this.referenceCount,0===this.referenceCount}updatePosition(e){if(null==e)return;let t=aU(e)[0].terms;for(let e=0;e<3;++e)this.position.setComponent(e,aJ(t[e]).number);this.updateMatrixWorld()}updateNormal(e){if(null==e)return;let t=aU(e)[0].terms;for(let e=0;e<3;++e)this.normal.setComponent(e,t[e].number)}updateSurface(){let{mesh:e,tri:t,bary:i}=this;if(null==e||null==t||null==i)return;e.getVertexPosition(t.x,oI),e.getVertexPosition(t.y,oC),e.getVertexPosition(t.z,oy),oI.toArray(oB.elements,0),oC.toArray(oB.elements,3),oy.toArray(oB.elements,6),this.position.copy(i).applyMatrix3(oB);let a=this.parent;a.worldToLocal(e.localToWorld(this.position)),ow.set(oI,oC,oy),ow.getNormal(this.normal).transformDirection(e.matrixWorld);let r=a.parent;ov.setFromAxisAngle(oI.set(0,1,0),-r.rotation.y),this.normal.applyQuaternion(ov)}orient(e){this.pivotEl.style.transform=`rotate(${e}rad)`}updateVisibility(e){this.element.classList.toggle("hide",!e),this.slot.assignedNodes().forEach(t=>{if(t.nodeType!==Node.ELEMENT_NODE)return;let i=t.dataset.visibilityAttribute;if(null!=i){let a=`data-${i}`;t.toggleAttribute(a,e)}t.dispatchEvent(new CustomEvent("hotspot-visibility",{detail:{visible:e}}))}),this.initialized=!0}}let oS={name:"HorizontalBlurShader",uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:` 524 525 varying vec2 vUv; 526 527 void main() { 528 529 vUv = uv; 530 gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 531 532 }`,fragmentShader:` 533 534 uniform sampler2D tDiffuse; 535 uniform float h; 536 537 varying vec2 vUv; 538 539 void main() { 540 541 vec4 sum = vec4( 0.0 ); 542 543 sum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051; 544 sum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918; 545 sum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245; 546 sum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531; 547 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633; 548 sum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531; 549 sum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245; 550 sum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918; 551 sum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051; 552 553 gl_FragColor = sum; 554 555 }`},oQ={name:"VerticalBlurShader",uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:` 556 557 varying vec2 vUv; 558 559 void main() { 560 561 vUv = uv; 562 gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 563 564 }`,fragmentShader:` 565 566 uniform sampler2D tDiffuse; 567 uniform float v; 568 569 varying vec2 vUv; 570 571 void main() { 572 573 vec4 sum = vec4( 0.0 ); 574 575 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051; 576 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918; 577 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245; 578 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531; 579 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633; 580 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531; 581 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245; 582 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918; 583 sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051; 584 585 gl_FragColor = sum; 586 587 }`};Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array;class oR extends tr.B69{constructor(e,t,i){super(),this.camera=new tr.qUd,this.renderTarget=null,this.renderTargetBlur=null,this.depthMaterial=new tr.CSG,this.horizontalBlurMaterial=new tr.BKk(oS),this.verticalBlurMaterial=new tr.BKk(oQ),this.intensity=0,this.softness=1,this.boundingBox=new tr.NRn,this.size=new tr.Pq0,this.maxDimension=0,this.isAnimated=!1,this.needsUpdate=!1;let{camera:a}=this;a.rotation.x=Math.PI/2,a.left=-.5,a.right=.5,a.bottom=-.5,a.top=.5,this.add(a);let r=new tr.bdM,s=new tr.V9B({opacity:1,transparent:!0,side:tr.hsX});this.floor=new tr.eaF(r,s),this.floor.userData.noHit=!0,a.add(this.floor),this.blurPlane=new tr.eaF(r),this.blurPlane.visible=!1,a.add(this.blurPlane),e.target.add(this),this.depthMaterial.onBeforeCompile=function(e){e.fragmentShader=e.fragmentShader.replace(/gl_FragColor\s*=\s*vec4\(\s*vec3\(\s*1\.0\s*-\s*fragCoordZ\s*\),\s*
587opacity\s*\);/,"gl_FragColor = vec4( vec3( 0.0 ), ( 1.0 - fragCoordZ ) * opacity );")},this.depthMaterial.side=tr.$EB,this.horizontalBlurMaterial.depthTest=!1,this.verticalBlurMaterial.depthTest=!1,this.setScene(e,t,i)}setScene(e,t,i){let{boundingBox:a,size:r,rotation:s,position:n}=this;if(this.isAnimated=e.animationNames.length>0,this.boundingBox.copy(e.boundingBox),this.size.copy(e.size),this.maxDimension=Math.max(r.x,r.y,r.z)*(this.isAnimated?2:1),this.boundingBox.getCenter(n),"back"===i){let{min:e,max:t}=a;[e.y,e.z]=[e.z,e.y],[t.y,t.z]=[t.z,t.y],[r.y,r.z]=[r.z,r.y],s.x=Math.PI/2,s.y=Math.PI}else s.x=0,s.y=0;if(this.isAnimated){let e=a.min.y,t=a.max.y;r.y=this.maxDimension,a.expandByVector(r.subScalar(this.maxDimension).multiplyScalar(-.5)),a.min.y=e,a.max.y=t,r.set(this.maxDimension,t-e,this.maxDimension)}"bottom"===i?n.y=a.min.y:n.z=a.min.y,this.setSoftness(t)}setSoftness(e){this.softness=e;let{size:t,camera:i}=this,a=this.isAnimated?2:1,r=a*Math.pow(2,9-3*e);this.setMapSize(r);let s=t.y/2,n=t.y*a;i.near=0,i.far=(1-e)*n+e*s,this.depthMaterial.opacity=1/e,i.updateProjectionMatrix(),this.setIntensity(this.intensity),this.setOffset(0)}setMapSize(e){let{size:t}=this;this.isAnimated&&(e*=2);let i=Math.floor(t.x>t.z?e:e*t.x/t.z),a=Math.floor(t.x>t.z?e*t.z/t.x:e),r=10+i,s=10+a;if(null!=this.renderTarget&&(this.renderTarget.width!==r||this.renderTarget.height!==s)&&(this.renderTarget.dispose(),this.renderTarget=null,this.renderTargetBlur.dispose(),this.renderTargetBlur=null),null==this.renderTarget){let e={format:tr.GWd};this.renderTarget=new tr.nWS(r,s,e),this.renderTargetBlur=new tr.nWS(r,s,e),this.floor.material.map=this.renderTarget.texture}let n=t.x*(1+10/i),o=t.z*(1+10/a);this.camera.left=-n/2,this.camera.right=n/2,this.camera.bottom=-o/2,this.camera.top=o/2,this.camera.scale.set(1,1,1),this.floor.scale.set(n,o,1),this.blurPlane.scale.set(n,o,1),this.needsUpdate=!0}setIntensity(e){if(this.intensity=e,e>0){var t;this.visible=!0,this.floor.visible=!0,this.floor.material.opacity=e*((1-(t=this.softness*this.softness))*.3+ +t)}else this.visible=!1,this.floor.visible=!1}getIntensity(){return this.intensity}setOffset(e){this.floor.position.z=-e+this.gap()}gap(){return .001*this.maxDimension}render(e,t){t.overrideMaterial=this.depthMaterial,this.floor.visible=!1;let i=e.xr.enabled;e.xr.enabled=!1;let a=e.getRenderTarget();e.setRenderTarget(this.renderTarget);let r=e.getClearAlpha();e.setClearAlpha(0);let s=e.state;null!=s&&(s.buffers.color.setMask(!0),s.buffers.depth.setMask(!0)),e.clear();let n=e.autoClear;e.autoClear=!1,e.render(t,this.camera),e.autoClear=n,t.overrideMaterial=null,this.floor.visible=!0,this.blurShadow(e),e.xr.enabled=i,e.setRenderTarget(a),e.setClearAlpha(r)}blurShadow(e){let{camera:t,horizontalBlurMaterial:i,verticalBlurMaterial:a,renderTarget:r,renderTargetBlur:s,blurPlane:n}=this;n.visible=!0,n.material=i,i.uniforms.h.value=1/this.renderTarget.width,i.uniforms.tDiffuse.value=this.renderTarget.texture,e.setRenderTarget(s),e.render(n,t),n.material=a,a.uniforms.v.value=1/this.renderTarget.height,a.uniforms.tDiffuse.value=this.renderTargetBlur.texture,e.setRenderTarget(r),e.render(n,t),n.visible=!1}dispose(){null!=this.renderTarget&&this.renderTarget.dispose(),null!=this.renderTargetBlur&&this.renderTargetBlur.dispose(),this.depthMaterial.dispose(),this.horizontalBlurMaterial.dispose(),this.verticalBlurMaterial.dispose(),this.floor.material.dispose(),this.floor.geometry.dispose(),this.blurPlane.geometry.dispose(),this.removeFromParent()}}let oM=new tr.Pq0,oT=new tr.Pq0,oD=new tr.Pq0,ok=new tr.tBo,oF=new tr.Pq0,oL=new tr.I9Y;class oP extends tr.Z58{constructor({canvas:e,element:t,width:i,height:a}){super(),this.annotationRenderer=new i5,this.effectRenderer=null,this.schemaElement=document.createElement("script"),this.width=1,this.height=1,this.aspect=1,this.scaleStep=0,this.renderCount=0,this.externalRenderer=null,this.appendedAnimations=[],this.markedAnimations=[],this.camera=new tr.ubm(45,1,.1,100),this.xrCamera=null,this.url=null,this.extraUrls=[],this.scenePivot=new tr.B69,this.target=new tr.B69,this.animationNames=[],this.boundingBox=new tr.NRn,this.boundingSphere=new tr.iyt,this.size=new tr.Pq0,this.idealAspect=0,this.framedFoVDeg=0,this.shadow=null,this.shadowIntensity=0,this.shadowSoftness=1,this.bakedSha
587dows=new Set,this.exposure=1,this.toneMapping=tr.aJ8,this.canScale=!0,this.isDirty=!1,this.goalTarget=new tr.Pq0,this.targetDamperX=new aT,this.targetDamperY=new aT,this.targetDamperZ=new aT,this._currentGLTFs=[],this._models=[],this.boundsAndShadowDirty=!1,this.mixers=[],this.mixerPausedStates=[],this.cancelPendingSourceChange=null,this.animationsByName=new Map,this.currentAnimationActions=[],this.groundedSkybox=new oE,this.name="ModelScene",this.element=t,this.canvas=e,this.camera=new tr.ubm(45,1,.1,100),this.camera.name="MainCamera",this.add(this.scenePivot),this.scenePivot.name="Pivot",this.scenePivot.add(this.target),this.setSize(i,a),this.target.name="Target",this.mixers=[];let{domElement:r}=this.annotationRenderer,{style:s}=r;s.display="none",s.pointerEvents="none",s.position="absolute",s.top="0",this.element.shadowRoot.querySelector(".default").appendChild(r),this.schemaElement.setAttribute("type","application/ld+json")}get context(){return this.canvas.getContext("2d")}getCamera(){return null!=this.xrCamera?this.xrCamera:this.camera}queueRender(){this.isDirty=!0}shouldRender(){return this.isDirty}hasRendered(){this.isDirty=!1}forceRescale(){this.scaleStep=-1,this.queueRender()}async setObject(e){this.reset(),this._models=[e],this.target.add(e),await this.setupScene()}async setSource(e,t=[],i=()=>{}){if((!e||e===this.url)&&t.join(",")===this.extraUrls.join(","))return void i(1);if(this.reset(),this.url=e,this.extraUrls=t,null!=this.externalRenderer){let e=await this.externalRenderer.load(i);this.boundingSphere.radius=e.framedRadius,this.idealAspect=e.fieldOfViewAspect;return}null!=this.cancelPendingSourceChange&&(this.cancelPendingSourceChange(),this.cancelPendingSourceChange=null);let a=[];try{let r=[];e&&r.push(e),t&&r.push(...t),r.length>0&&(a=await new Promise((e,t)=>{this.cancelPendingSourceChange=()=>t(),(async()=>{try{let t=await Promise.all(r.map(e=>this.element[An].loader.load(e,this.element,i)));e(t)}catch(e){t(e)}})()}))}catch(e){if(null==e)return;throw e}for(let i of(this.cancelPendingSourceChange=null,this.reset(),this.url=e,this.extraUrls=t,this._currentGLTFs=a,a))null!=i?(this._models.push(i.scene),this.target.add(i.scene),this.mixers.push(new tr.Iw4(i.scene))):this.mixers.push(new tr.Iw4(this.target)),this.mixerPausedStates.push(!1),this.currentAnimationActions.push(null);let r=new Map,s=[],n=[];for(let e of a)for(let t of e.animations||[])r.set(t.name,t),s.push(t.name),n.push(t);this.animations=n,this.animationsByName=r,this.animationNames=s,await this.setupScene()}async setupScene(){this.applyTransform(),this.updateBoundingBox(),await this.updateFraming(),this.updateShadow(),this.setShadowIntensity(this.shadowIntensity),this.setGroundedSkybox()}updateModelTransforms(e,t,i,a){let r=this._models[e];if(r){if(t){let e=t.split(" ").map(e=>e.trim()).filter(e=>e.length>0).map(Number);3!==e.length||e.some(isNaN)||r.position.set(e[0],e[1],e[2])}if(a){let e=a.split(" ").map(e=>e.trim()).filter(e=>e.length>0).map(Number);1!==e.length||isNaN(e[0])?3!==e.length||e.some(isNaN)||r.scale.set(e[0],e[1],e[2]):r.scale.setScalar(e[0])}r.updateMatrixWorld(!0),this.boundsAndShadowDirty=!0,this.queueRender()}}updateBoundingBoxAndShadowIfDirty(){this.boundsAndShadowDirty&&(this.boundsAndShadowDirty=!1,this.updateBoundingBox(),this.updateShadow())}reset(){this.url=null,this.renderCount=0,this.queueRender(),null!=this.shadow&&this.shadow.setIntensity(0),this.bakedShadows.clear();let{_models:e}=this;for(let t of e)null!=t&&t.removeFromParent();for(let e of(this._models=[],this._currentGLTFs))null!=e&&e.dispose();for(let e of(this._currentGLTFs=[],this.currentAnimationActions))null!=e&&e.stop();for(let e of(this.currentAnimationActions=[],this.mixers))e.stopAllAction(),e.uncacheRoot(this);this.mixers=[],this.mixerPausedStates=[]}dispose(){this.reset(),null!=this.shadow&&(this.shadow.dispose(),this.shadow=null),this.element[og]=null,this.element[ou]=null,this.element[op]=null}get currentGLTF(){return this._currentGLTFs[0]||null}get currentGLTFs(){return this._currentGLTFs}setSize(e,t){if(this.width!==e||this.height!==t){if(this.width=Math.max(e,1),this.height=Math.max(t,1),this.annotationRenderer.setSize(e,t),this.aspect=this.width/this.height,null!=this.externalRenderer){let i=window.devicePixelRatio;this.externalRenderer.resize(e*i,t*i)}this.queueRender()}}
587markBakedShadow(e){e.userData.noHit=!0,this.bakedShadows.add(e)}unmarkBakedShadow(e){e.userData.noHit=!1,e.visible=!0,this.bakedShadows.delete(e),this.boundingBox.expandByObject(e)}findBakedShadows(e){let t=new tr.NRn;e.traverse(e=>{if(!e.material||!e.material.transparent)return;t.setFromObject(e);let i=t.getSize(oF),a=Math.min(i.x,i.y,i.z);Math.max(i.x,i.y,i.z)<100*a||this.markBakedShadow(e)})}checkBakedShadows(){let{min:e,max:t}=this.boundingBox,i=new tr.NRn;for(let a of(this.boundingBox.getSize(this.size),this.bakedShadows))i.setFromObject(a),(!(i.min.y<e.y+this.size.y/100)||!(i.min.x<=e.x)||!(i.max.x>=t.x)||!(i.min.z<=e.z)||!(i.max.z>=t.z))&&(i.min.z<e.z+this.size.z/100&&i.min.x<=e.x&&i.max.x>=t.x&&i.min.y<=e.y&&i.max.y>=t.y||this.unmarkBakedShadow(a))}applyTransform(){let{models:e}=this;if(0===e.length)return;let t=aU(this.element.orientation)[0].terms,i=aJ(t[0]).number,a=aJ(t[1]).number,r=aJ(t[2]).number,s=aU(this.element.scale)[0].terms;for(let t of e)t.quaternion.setFromEuler(new tr.O9p(a,r,i,"YXZ")),t.scale.set(s[0].number,s[1].number,s[2].number)}updateBoundingBox(){let{models:e}=this;if(0===e.length)return;for(let t of e)this.target.remove(t),this.findBakedShadows(t);let t=(e,t)=>e.expandByPoint(t);this.setBakedShadowVisibility(!1);let i=new tr.NRn;for(let a of e)i=i6(a,t,i);if(this.boundingBox=i,this.boundingBox.isEmpty()){for(let a of(this.setBakedShadowVisibility(!0),this.bakedShadows.forEach(e=>this.unmarkBakedShadow(e)),i=new tr.NRn,e))i=i6(a,t,i);this.boundingBox=i}for(let t of(this.checkBakedShadows(),this.setBakedShadowVisibility(),this.boundingBox.getSize(this.size),e))this.target.add(t)}async updateFraming(){let{models:e}=this;if(0===e.length)return;for(let t of e)this.target.remove(t);this.setBakedShadowVisibility(!1);let{center:t}=this.boundingSphere;this.element.requestUpdate("cameraTarget"),await this.element.updateComplete,t.copy(this.getTarget());let i=(e,i)=>Math.max(e,t.distanceToSquared(i)),a=0;for(let t of e)a=Math.max(a,i6(t,i,0));this.boundingSphere.radius=Math.sqrt(a);let r=(e,i)=>(i.sub(t),Math.max(e,Math.sqrt(i.x*i.x+i.z*i.z)/(this.idealCameraDistance()-Math.abs(i.y)))),s=0;for(let t of e)s=Math.max(s,i6(t,r,0));for(let t of(this.idealAspect=s/Math.tan(this.framedFoVDeg/2*Math.PI/180),this.setBakedShadowVisibility(),e))this.target.add(t)}setBakedShadowVisibility(e=this.shadowIntensity<=0){for(let t of this.bakedShadows)t.visible=e}idealCameraDistance(){let e=this.framedFoVDeg/2*Math.PI/180;return this.boundingSphere.radius/Math.sin(e)}adjustedFoV(e){return 2*Math.atan(Math.tan(e/2*Math.PI/180)*Math.max(1,this.idealAspect/this.aspect))*180/Math.PI}getNDC(e,t){if(null!=this.xrCamera)oL.set(e/window.screen.width,t/window.screen.height);else{let i=this.element.getBoundingClientRect();oL.set((e-i.x)/this.width,(t-i.y)/this.height)}return oL.multiplyScalar(2).subScalar(1),oL.y*=-1,oL}getSize(){return{width:this.width,height:this.height}}setEnvironmentAndSkybox(e,t){this.element[An].arRenderer.presentedScene!==this&&(this.environment=e,this.setBackground(t),this.queueRender())}setBackground(e){this.groundedSkybox.map=e,this.groundedSkybox.isUsable()?(this.target.add(this.groundedSkybox),this.background=null):(this.target.remove(this.groundedSkybox),this.background=e)}farRadius(){return this.boundingSphere.radius*(null!=this.groundedSkybox.parent?10:1)}setGroundedSkybox(){let e=aJ(aU(this.element.skyboxHeight)[0].terms[0]).number,t=10*this.boundingSphere.radius;this.groundedSkybox.updateGeometry(e,t),this.groundedSkybox.position.y=e-(this.shadow?2*this.shadow.gap():0),this.setBackground(this.groundedSkybox.map)}setTarget(e,t,i){this.goalTarget.set(-e,-t,-i)}setTargetDamperDecayTime(e){this.targetDamperX.setDecayTime(e),this.targetDamperY.setDecayTime(e),this.targetDamperZ.setDecayTime(e)}getTarget(){return this.goalTarget.clone().multiplyScalar(-1)}getDynamicTarget(){return this.target.position.clone().multiplyScalar(-1)}jumpToGoal(){this.updateTarget(1e4)}updateTarget(e){let t=this.goalTarget,i=this.target.position;if(t.equals(i))return!1;{let a=this.boundingSphere.radius/10,{x:r,y:s,z:n}=i;return r=this.targetDamperX.update(r,t.x,e,a),s=this.targetDamperY.update(s,t.y,e,a),n=this.targetDamperZ.update(n,t.z,e,a),this.groundedSkybox.position.x=-r,this.groundedSkybox.position.z=-n,this.target.position.set(r,s,n),this.target.updateMatrixWorld(),this.queueRender(),!0}}pointTowards(e,t){let{x:i,z:a}=this.position;this.yaw=Math.atan2(e-i,t-a)}get model(){return this._models[0]||null}get models(){return this._models}set yaw(e){this.scenePivot.rotation.y=e,this.groundedSkybox.rotation.y=-e,this.queueRender()}get yaw(){return this.scenePivot.rotation.y}set animationTime(e){for(let t of this.mixers)t.setTime(e);this.queueShadowRender()}get animationTime(){let e=0;
587for(let t of this.currentAnimationActions)if(null!=t){let i=t.time,a=Math.max(t._loopCount,0);t.loop===tr.lc7&&(1&a)==1&&(i=(t.getClip()?t.getClip().duration:0)-t.time),i>e&&(e=i)}return e}set animationTimeScale(e){for(let t of this.mixers)t.timeScale=e}get animationTimeScale(){return this.mixers.length>0?this.mixers[0].timeScale:1}get duration(){let e=0;for(let t of this.currentAnimationActions)if(null!=t&&t.getClip()){let i=t.getClip().duration;i>e&&(e=i)}return e}get hasActiveAnimation(){return this.currentAnimationActions.some(e=>null!=e)}playAnimation(e=null,t=0,i=tr.aMy,a=1/0,r=null){let s=null!=r?r:0,n=null!=r?r+1:this._models.length;for(let r=s;r<n;r++){let s=this._currentGLTFs[r];if(null==s)continue;let n=s.animations||[];if(0===n.length)continue;let o=null;if(null!=e){for(let t=n.length-1;t>=0;t--)if(n[t].name===e){o=n[t];break}if(null==o){let t=parseInt(e);!isNaN(t)&&t>=0&&t<n.length&&(o=n[t])}}null==o&&(o=n[0]);try{let e=this.currentAnimationActions[r],s=this.mixers[r],n=s.clipAction(o,this._models[r]);this.currentAnimationActions[r]=n,this.element.paused?(s.stopAllAction(),this.mixerPausedStates[r]=!0):(n.paused=!1,this.mixerPausedStates[r]=!1,null!=e&&n!==e?n.crossFadeFrom(e,t,!1):this.animationTimeScale>0&&this.animationTime==this.duration&&(this.animationTime=0)),n.setLoop(i,a),n.enabled=!0,n.clampWhenFinished=!0,n.play()}catch(e){console.error(e)}}}appendAnimation(e="",t=tr.aMy,i=1/0,a=1,r=1,s=!1,n=!1,o=!0,A=null,l=!1,h=null){if(null==this.currentGLTF||e===this.element.animationName)return;let{animations:c}=this;if(null==c||0===c.length)return;let d=e?this.animationsByName.get(e):null;if(null==d)return;if("string"==typeof i?isNaN(parseFloat(i))?(i=1/0,console.warn(`Invalid repetitionCount value: ${i}. Using default: Infinity`)):(1>parseInt(i)&&console.warn(`Invalid repetitionCount value: ${i}. Using 1 as minimum.`),i=Math.max(parseInt(i),1)):"number"==typeof i&&i<1?(i=1,console.warn(`Invalid repetitionCount value: ${i}. Using 1 value as minimum.`)):console.warn(`Invalid repetitionCount value: ${i}. Using default: Infinity`),1===i&&t!==tr.G3T&&(t=tr.G3T),"string"==typeof a){let e=parseFloat(a);isNaN(e)||e<0||e>1?(a=1,console.warn(`Invalid weight value: ${a}. Using default: 1`)):a=e}if("string"==typeof r){let e=parseFloat(r);isNaN(e)||e<0?(r=1,console.warn(`Invalid timeScale value: ${r}. Using default: 1`)):r=e}if("string"==typeof A){let e=parseFloat(A);isNaN(e)?(A=null,console.warn(`Invalid time value: ${A}. Using default: 0 or previous time`)):A=e}let{shouldFade:g,duration:u}=this.parseFadeValue(s,!1,1.25),p=!1,f=0;"boolean"==typeof n?(p=n,f=1.25*!!n):"number"==typeof n?(p=n>0,f=Math.max(n,0),n<0&&console.warn(`Invalid warp value: ${n}. Using default: false`)):"string"==typeof n&&("true"===n.toLowerCase().trim()?(p=!0,f=1.25):"false"===n.toLowerCase().trim()?p=!1:isNaN(parseFloat(n))?console.warn(`Invalid warp value: ${n}. Using default: false`):(p=(f=Math.max(parseFloat(n),0))>0,f<=0&&console.warn(`Invalid warp value: ${n}. Using default: false`)));try{l&&this.appendedAnimations.includes(e)&&!this.markedAnimations.map(e=>e.name).includes(e)&&this.markedAnimations.push({name:e,loopMode:t,repetitionCount:i});let s=null!=h?h:0,n=null!=h?h+1:this.mixers.length;for(let e=s;e<n;e++){let s=this.mixers[e],n=s.existingAction(d)||s.clipAction(d,this._models[e]||this),l=n.timeScale;"number"==typeof A&&(n.time=Math.min(Math.max(A,0),d.duration)),g?n.fadeIn(u):a>=0&&(n.weight=Math.min(Math.max(a,0),1)),p?n.warp(o?l:0,r,f):n.timeScale=r,n.isRunning()||(n.time==d.duration&&n.stop(),n.setLoop(t,i),n.paused=!1,n.enabled=!0,n.clampWhenFinished=!0,n.play())}this.appendedAnimations.includes(e)||this.element[At].appendedAnimations.push(e)}catch(e){console.error(e)}}parseFadeValue(e,t=!0,i=1.5){if("boolean"==typeof e)return{shouldFade:e,duration:e?i:0};if("number"==typeof e){let t=Math.max(e,0);return{shouldFade:t>0,duration:t}}if("string"==typeof e){let t=e.toLowerCase().trim();if("true"===t)return{shouldFade:!0,duration:i};if("false"===t)return{shouldFade:!1,duration:0};let a=parseFloat(t);if(!isNaN(a)){let e=Math.max(a,0);return{shouldFade:e>0,duration:e}}}return console.warn(`Invalid fade value: ${e}. Using default: ${t}`),{shouldFade:t,duration:t?i:0}}detachAnimation(e="",t=!0,i=null){if(null==this.currentGLTF||e===this.element.animationName)return;let{animations:a}=this;if(null==a||0===a.length)return;let r=e?this.animationsByName.get(e):null;if(null==r)return;let{shouldFade:s,duration:n}=this.parseFadeValue(t,!0,1.5);try{let t=null!=i?i:0,a=null!=i?i+1:this.mixers.length;for(let e=t;e<a;e++){let t=this.mixers[e],i=t.existingAction(r)||t.clipAction(r,this._models[e]||this);s?i.fadeOut(n):i.stop()}this.element[At].appendedAnimations=this.element[At].appendedAnimations.filter(t=>t!==e)}catch(e){console.error(e)}}
587updateAnimationLoop(e="",t=tr.aMy,i=1/0,a=null){if(null==this.currentGLTF||e===this.element.animationName)return;let{animations:r}=this;if(null==r||0===r.length)return;let s=null;if(e&&(s=this.animationsByName.get(e)),null!=s)try{let e=null!=a?a:0,r=null!=a?a+1:this.mixers.length;for(let a=e;a<r;a++){let e=this.mixers[a],r=e.existingAction(s)||e.clipAction(s,this._models[a]||this);r.stop(),r.setLoop(t,i),r.play()}}catch(e){console.error(e)}}stopAnimation(){for(let e of(this.currentAnimationActions.fill(null),this.mixers))e.stopAllAction();this.mixerPausedStates.fill(!0)}isAllAnimationsPaused(){return this.mixerPausedStates.every(e=>e)}pauseAnimation(e=null){let t=null!=e?e:0,i=null!=e?e+1:this.mixers.length;for(let e=t;e<i;e++)this.mixerPausedStates[e]=!0}unpauseAnimation(e=null){let t=null!=e?e:0,i=null!=e?e+1:this.mixers.length;for(let e=t;e<i;e++)this.mixerPausedStates[e]=!1}updateAnimation(e){for(let t=0;t<this.mixers.length;t++)this.mixerPausedStates[t]||this.mixers[t].update(e);this.queueShadowRender()}subscribeMixerEvent(e,t){for(let i of this.mixers)i.addEventListener(e,t)}updateShadow(){let e=this.shadow;if(null!=e){let t="wall"===this.element.arPlacement?"back":"bottom";e.setScene(this,this.shadowSoftness,t),e.needsUpdate=!0}}renderShadow(e){this.updateBoundingBoxAndShadowIfDirty();let t=this.shadow;null!=t&&!0==t.needsUpdate&&(t.render(e,this),t.needsUpdate=!1)}queueShadowRender(){null!=this.shadow&&(this.shadow.needsUpdate=!0)}setShadowIntensity(e){if((this.shadowIntensity=e,null!=this.currentGLTF)&&(this.setBakedShadowVisibility(),!(e<=0)||null!=this.shadow)){if(null==this.shadow){let e="wall"===this.element.arPlacement?"back":"bottom";this.shadow=new oR(this,this.shadowSoftness,e)}this.shadow.setIntensity(e)}}setShadowSoftness(e){this.shadowSoftness=e;let t=this.shadow;null!=t&&t.setSoftness(e)}setShadowOffset(e){let t=this.shadow;null!=t&&t.setOffset(e)}getHit(e=this){return ok.intersectObject(e,!0).find(e=>e.object.visible&&!e.object.userData.noHit)}hitFromController(e,t=this){return ok.setFromXRController(e),this.getHit(t)}hitFromPoint(e,t=this){return ok.setFromCamera(e,this.getCamera()),this.getHit(t)}getModelIndexFromHit(e){let t=e.object;for(;null!=t;){let e=this.models.indexOf(t);if(-1!==e)return e;t=t.parent}return 0}positionAndNormalFromPoint(e,t=this){var i;let a=this.hitFromPoint(e,t);if(null==a)return null;let r=a.point,s=null!=a.face?a.face.normal.clone().applyNormalMatrix(new tr.dwI().getNormalMatrix(a.object.matrixWorld)):ok.ray.direction.clone().multiplyScalar(-1),n=null!=(i=a.uv)?i:null,o=this.getModelIndexFromHit(a),A=this.models[o]||this.target;return{position:r,normal:s,uv:n,modelIndex:o,worldToModel:new tr.kn4().copy(A.matrixWorld).invert()}}surfaceFromPoint(e,t=this){var i;let a=this.hitFromPoint(e,t);if(null==a||null==a.face)return null;let r=this.getModelIndexFromHit(a),s=0===r?this.element.model:null==(i=this.element.extraModels)?void 0:i[r-1];if(null==s)return null;let n=s[or](a);if(null==n)return null;let{meshes:o,primitives:A}=n.mesh.userData.associations,l=new tr.Pq0,h=new tr.Pq0,c=new tr.Pq0,{a:d,b:g,c:u}=a.face,p=a.object;p.getVertexPosition(d,l),p.getVertexPosition(g,h),p.getVertexPosition(u,c);let f=new tr.lMl(l,h,c),m=new tr.Pq0;f.getBarycoord(p.worldToLocal(a.point),m),f.getBarycoord(p.worldToLocal(a.point),m);let b=`${o} ${A} ${d} ${g} ${u} ${m.x.toFixed(3)} ${m.y.toFixed(3)} ${m.z.toFixed(3)}`;return 0===r?b:`${r} ${b}`}updateHotspotAttachment(e){let t=null!=e.modelIndex&&e.modelIndex>0&&this._models[e.modelIndex]?this._models[e.modelIndex]:this.target;e.parent!==t&&(t.add(e),e.updatePosition(e.position.toArray().join(" ")+"m"),e.updateMatrixWorld(!0))}addHotspot(e){this.updateHotspotAttachment(e),this.annotationRenderer.domElement.appendChild(e.element),this.updateSurfaceHotspot(e)}removeHotspot(e){e.parent&&e.parent.remove(e)}forHotspots(e){let t=[...this.target.children];for(let i=0,a=t.length;i<a;i++){let a=t[i];a instanceof ox&&e(a)}for(let t of this._models)if(t&&t!==this.target){let i=[...t.children];for(let t=0,a=i.length;t<a;t++){let a=i[t];a instanceof ox&&e(a)}}}updateSurfaceHotspot(e){var t,i;if(null==e.surface)return;let a=aU(e.surface)[0].terms;if(8!==a.length&&9!==a.length)return void console.warn(e.surface+" does not have exactly 8 or 9 numbers. Did you use an outdated string?");let r=8===a.length,s=r?0:a[0].number,n=+!r,o=null!=(t=e.modelIndex)?t:s;e.modelIndex=o,this.updateHotspotAttachment(e);let A=0===o?this.element.model:null==(i=this.element.extraModels)?void 0:i[o-1];if(null==A)return;let l=A[os](a[0+n].number,a[1+n].number);if(null==l)return void console.warn(e.surface+" does not match a no
587de/primitive in this glTF! Skipping this hotspot.");let h=l.mesh.geometry.attributes.position.count,c=new tr.Pq0(a[2+n].number,a[3+n].number,a[4+n].number);if(c.x>=h||c.y>=h||c.z>=h)return void console.warn(e.surface+" vertex indices out of range in this glTF! Skipping this hotspot.");let d=new tr.Pq0(a[5+n].number,a[6+n].number,a[7+n].number);e.mesh=l.mesh,e.tri=c,e.bary=d,e.updateSurface()}animateSurfaceHotspots(){this.element.paused||this.forHotspots(e=>{e.updateSurface()})}updateHotspotsVisibility(e){this.forHotspots(t=>{oM.copy(e),oT.setFromMatrixPosition(t.matrixWorld),oM.sub(oT),oD.copy(t.normal).transformDirection(this.target.matrixWorld),0>oM.dot(oD)?t.hide():t.show()})}orientHotspots(e){this.forHotspots(t=>{t.orient(e)})}setHotspotsVisibility(e){this.forHotspots(t=>{t.visible=e})}updateSchema(e){var t;let{schemaElement:i,element:a}=this,{alt:r,poster:s,iosSrc:n}=a;if(null!=e){let a=[{"@type":"MediaObject",contentUrl:e,encodingFormat:(null==(t=e.split(".").pop())?void 0:t.toLowerCase())==="gltf"?"model/gltf+json":"model/gltf-binary"}];n&&a.push({"@type":"MediaObject",contentUrl:n,encodingFormat:"model/vnd.usdz+zip"}),i.textContent=JSON.stringify({"@context":"http://schema.org/","@type":"3DModel",image:null!=s?s:void 0,name:null!=r?r:void 0,encoding:a}),document.head.appendChild(i)}else null!=i.parentElement&&i.parentElement.removeChild(i)}}class oU extends EventTarget{constructor(){super(...arguments),this.ongoingActivities=new Set,this.totalProgress=0}get ongoingActivityCount(){return this.ongoingActivities.size}beginActivity(e){let t={progress:0,completed:!1};return this.ongoingActivities.add(t),1===this.ongoingActivityCount&&this.announceTotalProgress(t,0,e),i=>{let a;return(a=Math.max(tC(i,0,1),t.progress))!==t.progress&&this.announceTotalProgress(t,a,e),t.progress}}announceTotalProgress(e,t,i){let a=0,r=0;for(let i of(1==t&&(e.completed=!0),this.ongoingActivities)){let{progress:e}=i;a+=1-e,i.completed&&r++}let s=e.progress;e.progress=t,this.totalProgress+=(t-s)*(1-this.totalProgress)/a;let n=r===this.ongoingActivityCount?1:this.totalProgress;this.dispatchEvent(new CustomEvent("progress",{detail:{totalProgress:n,reason:i}})),r===this.ongoingActivityCount&&(this.totalProgress=0,this.ongoingActivities.clear())}}var o_=function(e,t,i,a){var r,s=arguments.length,n=s<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,a);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(s<3?r(n):s>3?r(t,i,n):r(t,i))||n);return s>3&&n&&Object.defineProperty(t,i,n),n};let oN=document.createElement("canvas"),oO=Symbol("fallbackResizeHandler"),oG=Symbol("defaultAriaLabel"),oq=Symbol("resizeObserver"),oH=Symbol("clearModelTimeout"),oj=Symbol("onContextLost"),oz=Symbol("loaded"),oK=Symbol("status"),oV=Symbol("onFocus"),oJ=Symbol("onBlur"),oY=Symbol("onSlotChange"),oW=Symbol("onExtraModelChanged"),o$=Symbol("updateSize"),oX=Symbol("intersectionObserver"),oZ=Symbol("isElementInViewport"),o0=Symbol("announceModelVisibility"),o1=Symbol("ariaLabel"),o2=Symbol("altDefaulted"),o8=Symbol("statusElement"),o9=Symbol("updateStatus"),o3=Symbol("loadedTime"),o4=Symbol("updateSource"),o5=Symbol("markLoaded"),o6=Symbol("container"),o7=Symbol("input"),Ae=Symbol("canvas"),At=Symbol("scene"),Ai=Symbol("needsRender"),Aa=Symbol("tick"),Ar=Symbol("onModelLoad"),As=Symbol("onResize"),An=Symbol("renderer"),Ao=Symbol("progressTracker"),AA=Symbol("getLoaded"),Al=Symbol("getModelIsVisible"),Ah=Symbol("shouldAttemptPreload"),Ac=e=>({x:e.x,y:e.y,z:e.z,toString(){return`${this.x}m ${this.y}m ${this.z}m`}}),Ad=e=>({u:e.x,v:e.y,toString(){return`${this.u} ${this.v}`}});class Ag extends P{static get is(){return"model-viewer"}static set modelCacheSize(e){i0[iX].evictionThreshold=e}static get modelCacheSize(){return i0[iX].evictionThreshold}static set minimumRenderScale(e){e>1&&console.warn("<model-viewer> minimumRenderScale has been clamped to a maximum value of 1."),e<=0&&console.warn("<model-viewer> minimumRenderScale has been clamped to a minimum value of 0.25."),nr.singleton.minScale=e}static get minimumRenderScale(){return nr.singleton.minScale}get loaded(){return this[AA]()}get[(e$=oZ,eX=oz,eZ=o3,e0=oK,e1=oH,e2=oY,e8=oW,e9=oO,e3=o0,e4=oq,e5=oX,e6=Ao,An)](){return nr.singleton}get modelIsVisible(){return this[Al]()}constructor(){let e,t;super(),this.alt=null,this.src=null,this.withCredentials=!1,this.generateSchema=!1,this[e$]=!1,this[eX]=!1,this[eZ]=0,this[e0]="",this[e1]=null,this[e2]=()=>
587{if(!this[At])return;let e=Array.from(this.querySelectorAll("extra-model")),t=e.map(e=>e.src).filter(e=>null!=e),i=this[At].extraUrls||[];(t.join(",")!==i.join(",")||e.length!==i.length)&&this[o4]()},this[e8]=e=>{let t=e.target,i=Array.from(this.querySelectorAll("extra-model")).indexOf(t);if(console.log(`[onExtraModelChanged] childIndex: ${i} srcChanged: ${e.detail.srcChanged} offset: ${e.detail.offset}`),-1===i)return;let a=this.src?i+1:i;e.detail.srcChanged?(this[oz]=!1,this[o4]()):this[At]&&this[At].updateModelTransforms(a,e.detail.offset,e.detail.orientation,e.detail.scale)},this[e9]=tI(()=>{let e=this.getBoundingClientRect();this[o$](e)},50),this[e3]=tI(e=>{let t=this.modelIsVisible;t!==e&&this.dispatchEvent(new CustomEvent("model-visibility",{detail:{visible:t}}))},0),this[e4]=null,this[e5]=null,this[e6]=new oU,this[e7]=()=>{this[o8].textContent=this[oK]},this[te]=()=>{this[o8].textContent=""},this[tt]=e=>{this.dispatchEvent(new CustomEvent("error",{detail:{type:"webglcontextlost",sourceError:e.sourceEvent}}))},this.attachShadow({mode:"open"});let i=this.shadowRoot;if(eI(tT,i),this[o6]=i.querySelector(".container"),this[o7]=i.querySelector(".userIn
587put"),this[Ae]=i.querySelector("canvas"),this[o8]=i.querySelector("#status"),this[oG]=this[o7].getAttribute("aria-label"),this.isConnected){let i=this.getBoundingClientRect();e=i.width,t=i.height}else e=300,t=150;this[At]=new oP({canvas:this[Ae],element:this,width:e,height:t}),Promise.resolve().then(()=>{this[o$](this.getBoundingClientRect())}),to&&(this[oq]=new ResizeObserver(e=>{if(!this[An].isPresenting)for(let t of e)t.target===this&&this[o$](t.contentRect)})),tA?this[oX]=new IntersectionObserver(e=>{for(let t of e)if(t.target===this){let e=this.modelIsVisible;this[oZ]=t.isIntersecting,this[o0](e),console.log(`IntersectionObserver fired! isIntersecting: ${t.isIntersecting}`),this[oZ]&&!this.loaded&&this[o4]()}},{root:null,rootMargin:"0px",threshold:1e-5}):this[oZ]=!0}connectedCallback(){super.connectedCallback&&super.connectedCallback(),to?this[oq].observe(this):self.addEventListener("resize",this[oO]),tA&&this[oX].observe(this),this.addEventListener("focus",this[oV]),this.addEventListener("blur",this[oJ]),this.addEventListener("extra-model-changed",this[oW]);let e=this.shadowRoot.querySelector(".slot.default slot");e&&e.addEventListener("slotchange",this[oY]);let t=this[An];t.addEventListener("contextlost",this[oj]),t.registerScene(this[At]),null!=this[oH]&&(self.clearTimeout(this[oH]),this[oH]=null,this.requestUpdate("src",null))}disconnectedCallback(){super.disconnectedCallback&&super.disconnectedCallback(),to?this[oq].unobserve(this):self.removeEventListener("resize",this[oO]),tA&&this[oX].unobserve(this),this.removeEventListener("focus",this[oV]),this.removeEventListener("blur",this[oJ]),this.removeEventListener("extra-model-changed",this[oW]);let e=this.shadowRoot.querySelector(".slot.default slot");e&&e.removeEventListener("slotchange",this[oY]);let t=this[An];t.removeEventListener("contextlost",this[oj]),t.unregisterScene(this[At]),this[oH]=self.setTimeout(()=>{this[At].dispose(),this[oH]=null},10)}updated(e){if(super.updated(e),e.has("src")){let e=Array.from(this.querySelectorAll("extra-model")),t=e.map(e=>e.src).filter(e=>null!=e).join(",")===(this[At].extraUrls||[]).join(",");null==this.src&&0===e.length?(this[oz]=!1,this[o3]=0,this[At].reset()):this.src===this[At].url&&t||(this[oz]=!1,this[o3]=0,this[o4]())}if(e.has("alt")&&this[o7].setAttribute("aria-label",this[o1]),e.has("generateSchema"))if(this.generateSchema){let e=Array.from(this.querySelectorAll("extra-model")).map(e=>e.src).filter(e=>null!=e),t=this.src||e[0]||null;this[At].updateSchema(t)}else this[At].updateSchema(null)}toDataURL(e,t){return this[An].displayCanvas(this[At]).toDataURL(e,t)}async toBlob(e){let t=e?e.mimeType:void 0,i=e?e.qualityArgument:void 0,a=e?e.idealAspect:void 0,{width:r,height:s,idealAspect:n,aspect:o}=this[At],{dpr:A,scaleFactor:l}=this[An],h=r*l*A,c=s*l*A,d=0,g=0;!0===a&&(n>o?g=(c-(c=Math.round(h/n)))/2:d=(h-(h=Math.round(c*n)))/2),oN.width=h,oN.height=c;try{return new Promise(async(e,a)=>{oN.getContext("2d").drawImage(this[An].displayCanvas(this[At]),d,g,h,c,0,0,h,c),oN.toBlob(t=>{if(!t)return a(Error("Unable to retrieve canvas blob"));e(t)},t,i)})}finally{this[o$]({width:r,height:s})}}registerEffectComposer(e){e.setRenderer(this[An].threeRenderer),e.setMainCamera(this[At].getCamera()),e.setMainScene(this[At]),this[At].effectRenderer=e}unregisterEffectComposer(){this[At].effectRenderer=null}registerRenderer(e){this[At].externalRenderer=e}unregisterRenderer(){this[At].externalRenderer=null}get[o1](){return this[o2]}get[o2](){return null==this.alt||"null"===this.alt?this[oG]:this.alt}[AA](){return this[oz]}[Al](){return this.loaded&&this[oZ]}[Ah](){let e=Array.from(this.querySelectorAll("extra-model"));return!!(this.src||e.length>0)&&this[oZ]}[o$]({width:e,height:t}){0!==e&&0!==t&&(this[o6].style.width=`${e}px`,this[o6].style.height=`${t}px`,this[As]({width:e,height:t}))}[Aa](e,t){var i;null==(i=this[At].effectRenderer)||i.beforeRender(e,t)}[o5](){this[oz]||(this[oz]=!0,this[o3]=performance.now())}[Ai](){this[At].queueRender()}[Ar](){}[o9](e){this[oK]=e;let t=this.getRootNode();null!=t&&t.activeElement===this&&this[o8].textContent!=e&&(this[o8].textContent=e)}[(e7=oV,te=oJ,As)](e){this[At].setSize(e.width,e.height)}async [(tt=oj,o4)](){let e=this[At],t=Array.from(this.querySelectorAll("extra-model")).map(e=>e.src).filter(e=>null!=e),i=t.join(",")===(e.extraUrls||[]).join(",");if(console.log(`[$updateSource] called! 588src: ${this.src} 589extraUrls: ${t.join(",")} 590loaded: ${this.loaded}`),this.loaded||!this[Ah]()||this.src===e.url&&i)return void console.log("[$updateSource] BAILING OUT EARLY!");let a=this.src,r=a||t[0]||null;
590this.generateSchema&&e.updateSchema(r),this[o9]("Loading"),e.stopAnimation();let s=this[Ao].beginActivity("model-load");try{let i=e.setSource(a,t,e=>s(.95*tC(e,0,1))),n=this[tx]();await Promise.all([i,n]),Array.from(this.querySelectorAll("extra-model")).forEach((e,t)=>{let i=this.src?t+1:t;this[At].updateModelTransforms(i,e.offset,e.orientation,e.scale)}),this[o5](),this[Ar](),this.updateComplete.then(()=>{this.dispatchEvent(new CustomEvent("before-render"))}),await new Promise(e=>{let t=setTimeout(()=>{console.warn("rAF timed out in updateSource"),e()},500);requestAnimationFrame(()=>{requestAnimationFrame(()=>{clearTimeout(t),e()})})}),this.dispatchEvent(new CustomEvent("load",{detail:{url:r}}))}catch(e){this.dispatchEvent(new CustomEvent("error",{detail:{type:"loadfailure",sourceError:e}}))}finally{s(1)}}}o_([ev({type:String})],Ag.prototype,"alt",void 0),o_([ev({type:String})],Ag.prototype,"src",void 0),o_([ev({type:Boolean,attribute:"with-credentials"})],Ag.prototype,"withCredentials",void 0),o_([ev({type:Boolean,attribute:"generate-schema"})],Ag.prototype,"generateSchema",void 0);var Au=function(e,t,i,a){var r,s=arguments.length,n=s<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,a);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(s<3?r(n):s>3?r(t,i,n):r(t,i))||n);return s>3&&n&&Object.defineProperty(t,i,n),n};let Ap=Symbol("changeAnimation"),Af=Symbol("appendAnimation"),Am=Symbol("detachAnimation"),Ab=Symbol("paused"),AE={repetitions:1/0,pingpong:!1},AI={pingpong:!1,repetitions:null,weight:1,timeScale:1,fade:!1,warp:!1,relativeWarp:!0,time:null},AC={fade:!0},Ay=Symbol("hotspotMap"),AB=Symbol("mutationCallback"),Aw=Symbol("observer"),Av=Symbol("addHotspot"),Ax=Symbol("removeHotspot");var AS=Uint8Array,AQ=Uint16Array,AR=Int32Array,AM=new AS([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),AT=new AS([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),AD=new AS([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ak=function(e,t){for(var i=new AQ(31),a=0;a<31;++a)i[a]=t+=1<<e[a-1];for(var r=new AR(i[30]),a=1;a<30;++a)for(var s=i[a];s<i[a+1];++s)r[s]=s-i[a]<<5|a;return{b:i,r:r}},AF=Ak(AM,2),AL=AF.b,AP=AF.r;AL[28]=258,AP[258]=28;for(var AU=Ak(AT,0),A_=(AU.b,AU.r),AN=new AQ(32768),AO=0;AO<32768;++AO){var AG=(43690&AO)>>1|(21845&AO)<<1;AG=(61680&(AG=(52428&AG)>>2|(13107&AG)<<2))>>4|(3855&AG)<<4,AN[AO]=((65280&AG)>>8|(255&AG)<<8)>>1}for(var Aq=function(e,t,i){for(var a,r=e.length,s=0,n=new AQ(t);s<r;++s)e[s]&&++n[e[s]-1];var o=new AQ(t);for(s=1;s<t;++s)o[s]=o[s-1]+n[s-1]<<1;if(i){a=new AQ(1<<t);var A=15-t;for(s=0;s<r;++s)if(e[s])for(var l=s<<4|e[s],h=t-e[s],c=o[e[s]-1]++<<h,d=c|(1<<h)-1;c<=d;++c)a[AN[c]>>A]=l}else for(s=0,a=new AQ(r);s<r;++s)e[s]&&(a[s]=AN[o[e[s]-1]++]>>15-e[s]);return a},AH=new AS(288),AO=0;AO<144;++AO)AH[AO]=8;for(var AO=144;AO<256;++AO)AH[AO]=9;for(var AO=256;AO<280;++AO)AH[AO]=7;for(var AO=280;AO<288;++AO)AH[AO]=8;for(var Aj=new AS(32),AO=0;AO<32;++AO)Aj[AO]=5;var Az=Aq(AH,9,0),AK=Aq(Aj,5,0),AV=function(e){return(e+7)/8|0},AJ=function(e,t,i){return(null==t||t<0)&&(t=0),(null==i||i>e.length)&&(i=e.length),new AS(e.subarray(t,i))}
vendor: 7,330 bytes, line 590
590,AY=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],AW=function(e,t,i){var a=Error(t||AY[e]);if(a.code=e,Error.captureStackTrace&&Error.captureStackTrace(a,AW),!i)throw a;return a},A$=function(e,t,i){i<<=7&t;var a=t/8|0;e[a]|=i,e[a+1]|=i>>8},AX=function(e,t,i){i<<=7&t;var a=t/8|0;e[a]|=i,e[a+1]|=i>>8,e[a+2]|=i>>16},AZ=function(e,t){for(var i=[],a=0;a<e.length;++a)e[a]&&i.push({s:a,f:e[a]});var r=i.length,s=i.slice();if(!r)return{t:A4,l:0};if(1==r){var n=new AS(i[0].s+1);return n[i[0].s]=1,{t:n,l:1}}i.sort(function(e,t){return e.f-t.f}),i.push({s:-1,f:25001});var o=i[0],A=i[1],l=0,h=1,c=2;for(i[0]={s:-1,f:o.f+A.f,l:o,r:A};h!=r-1;)o=i[i[l].f<i[c].f?l++:c++],A=i[l!=h&&i[l].f<i[c].f?l++:c++],i[h++]={s:-1,f:o.f+A.f,l:o,r:A};for(var d=s[0].s,a=1;a<r;++a)s[a].s>d&&(d=s[a].s);var g=new AQ(d+1),u=A0(i[h-1],g,0);if(u>t){var a=0,p=0,f=u-t,m=1<<f;for(s.sort(function(e,t){return g[t.s]-g[e.s]||e.f-t.f});a<r;++a){var b=s[a].s;if(g[b]>t)p+=m-(1<<u-g[b]),g[b]=t;else break}for(p>>=f;p>0;){var E=s[a].s;g[E]<t?p-=1<<t-g[E]++-1:++a}for(;a>=0&&p;--a){var I=s[a].s;g[I]==t&&(--g[I],++p)}u=t}return{t:new AS(g),l:u}},A0=function(e,t,i){return -1==e.s?Math.max(A0(e.l,t,i+1),A0(e.r,t,i+1)):t[e.s]=i},A1=function(e){for(var t=e.length;t&&!e[--t];);for(var i=new AQ(++t),a=0,r=e[0],s=1,n=function(e){i[a++]=e},o=1;o<=t;++o)if(e[o]==r&&o!=t)++s;else{if(!r&&s>2){for(;s>138;s-=138)n(32754);s>2&&(n(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(n(r),--s;s>6;s-=6)n(8304);s>2&&(n(s-3<<5|8208),s=0)}for(;s--;)n(r);s=1,r=e[o]}return{c:i.subarray(0,a),n:t}},A2=function(e,t){for(var i=0,a=0;a<t.length;++a)i+=e[a]*t[a];return i},A8=function(e,t,i){var a=i.length,r=AV(t+2);e[r]=255&a,e[r+1]=a>>8,e[r+2]=255^e[r],e[r+3]=255^e[r+1];for(var s=0;s<a;++s)e[r+s+4]=i[s];return(r+4+a)*8},A9=function(e,t,i,a,r,s,n,o,A,l,h){A$(t,h++,i),++r[256];for(var c,d,g,u,p=AZ(r,15),f=p.t,m=p.l,b=AZ(s,15),E=b.t,I=b.l,C=A1(f),y=C.c,B=C.n,w=A1(E),v=w.c,x=w.n,S=new AQ(19),Q=0;Q<y.length;++Q)++S[31&y[Q]];for(var Q=0;Q<v.length;++Q)++S[31&v[Q]];for(var R=AZ(S,7),M=R.t,T=R.l,D=19;D>4&&!M[AD[D-1]];--D);var k=l+5<<3,F=A2(r,AH)+A2(s,Aj)+n,L=A2(r,f)+A2(s,E)+n+14+3*D+A2(S,M)+2*S[16]+3*S[17]+7*S[18];if(A>=0&&k<=F&&k<=L)return A8(t,h,e.subarray(A,A+l));if(A$(t,h,1+(L<F)),h+=2,L<F){c=Aq(f,m,0),d=f,g=Aq(E,I,0),u=E;var P=Aq(M,T,0);A$(t,h,B-257),A$(t,h+5,x-1),A$(t,h+10,D-4),h+=14;for(var Q=0;Q<D;++Q)A$(t,h+3*Q,M[AD[Q]]);h+=3*D;for(var U=[y,v],_=0;_<2;++_)for(var N=U[_],Q=0;Q<N.length;++Q){var O=31&N[Q];A$(t,h,P[O]),h+=M[O],O>15&&(A$(t,h,N[Q]>>5&127),h+=N[Q]>>12)}}else c=Az,d=AH,g=AK,u=Aj;for(var Q=0;Q<o;++Q){var G=a[Q];if(G>255){var O=G>>18&31;AX(t,h,c[O+257]),h+=d[O+257],O>7&&(A$(t,h,G>>23&31),h+=AM[O]);var q=31&G;AX(t,h,g[q]),h+=u[q],q>3&&(AX(t,h,G>>5&8191),h+=AT[q])}else AX(t,h,c[G]),h+=d[G]}return AX(t,h,c[256]),h+d[256]},A3=new AR([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),A4=new AS(0),A5=function(e,t,i,a,r,s){var n=s.z||e.length,o=new AS(a+n+5*(1+Math.ceil(n/7e3))+r),A=o.subarray(a,o.length-r),l=s.l,h=7&(s.r||0);if(t){h&&(A[0]=s.r>>3);for(var c=A3[t-1],d=c>>13,g=8191&c,u=(1<<i)-1,p=s.p||new AQ(32768),f=s.h||new AQ(u+1),m=Math.ceil(i/3),b=2*m,E=function(t){return(e[t]^e[t+1]<<m^e[t+2]<<b)&u},I=new AR(25e3),C=new AQ(288),y=new AQ(32),B=0,w=0,v=s.i||0,x=0,S=s.w||0,Q=0;v+2<n;++v){var R=E(v),M=32767&v,T=f[R];if(p[M]=T,f[R]=M,S<=v){var D=n-v;if((B>7e3||x>24576)&&(D>423||!l)){h=A9(e,A,0,I,C,y,w,x,Q,v-Q,h),x=B=w=0,Q=v;for(var k=0;k<286;++k)C[k]=0;for(var k=0;k<30;++k)y[k]=0}var F=2,L=0,P=g,U=M-T&32767;if(D>2&&R==E(v-U))for(var _=Math.min(d,D)-1,N=Math.min(32767,v),O=Math.min(258,D);U<=N&&--P&&M!=T;){if(e[v+F]==e[v+F-U]){for(var G=0;G<O&&e[v+G]==e[v+G-U];++G);if(G>F){if(F=G,L=U,G>_)break;for(var q=Math.min(U,G-2),H=0,k=0;k<q;++k){var j=v-U+k&32767,z=p[j],K=j-z&32767;K>H&&(H=K,T=j)}}}T=p[M=T],U+=M-T&32767}if(L){I[x++]=0x10000000|AP[F]<<18|A_[L];var V=31&AP[F],J=31&A_[L];w+=AM[V]+AT[J],++C[257+V],++y[J],S=v+F,++B}else I[x++]=e[v],++C[e[v]]}}for(v=Math.max(v,S);v<n;++v)I[x++]=e[v],++C[e[v]];h=A9(e,A,l,I,C,y,w,x,Q,v-Q,h),l||(s.r=7&h|A[h/8|0]<<3,h-=7,s.h=f,s.p=p,s.i=v,s.w=S)}else{for(var v=s.w||0;v<n+l;v+=65535){var Y=v+65535;Y>=n&&(A[h/8|0]=l,Y=n),h=A8(A,h+1,e.subarray(v,Y))}s.i=n}return AJ(o,0,a+AV(h)+r)},A6=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var i=t,a=9;--a;)i=(1&i&&-0x12477ce0)^i>>>1;e[t]=i}return e}(),A7=function(){var e=-1;return{p:function(t){for(var i=e,a=0;a<t.length;++a)i=A6[255&i^t[a]]^i>>>8;e=i},d:function(){return~e}}},le=function(e,t,i,a,r){if(!r&&(r={l:1},t.dictionary)){var s=t.dictionary.subarray(-32768),n=new AS(s.length+e.length);n.set(s),n.set(e,s.length),e=n,r.w=s.length}return A5(e,null==t.level?6:t.level,null==t.mem?r.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):20:12+t.mem,i,a,r)},lt=function(e,t){var i={};for(var a in e)i[a]=e[a];for(var a in t)i[a]=t[a];return i},li=function(e,t,i){for(;i;++t)e[t]=i,i>>>=8},la=function(e,t,i,a){for(var r in e){var s=e[r],n=t+r,o=a;Array.isArray(s)&&(o=lt(a,s[1]),s=s[0]),s instanceof AS?i[n]=[s,o]:(i[n+="/"]=[new AS(0),o],la(s,n,i,a))}},lr="undefined"!=typeof TextEncoder&&new TextEncoder,ls="undefined"!=typeof TextDecoder&&new TextDecoder;try{ls.decode(A4,{stream:!0})}catch(e){}function ln(e,t){if(t){for(var i=new AS(e.length),a=0;a<e.length;++a)i[a]=e.charCodeAt(a);return i}if(lr)return lr.encode(e);for(var r=e.length,s=new AS(e.length+(e.length>>1)),n=0,o=function(e){s[n++]=e},a=0;a<r;++a){if(n+5>s.length){var A=new AS(n+8+(r-a<<1));A.set(s),s=A}var l=e.charCodeAt(a);l<128||t?o(l):(l<2048?o(192|l>>6):(l>55295&&l<57344?(o(240|(l=65536+(1047552&l)|1023&e.charCodeAt(++a))>>18),o(128|l>>12&63)):o(224|l>>12),o(128|l>>6&63)),o(128|63&l))}return AJ(s,0,n)}var lo=function(e){var t=0;if(e)for(var i in e){var a=e[i].length;a>65535&&AW(9),t+=a+4}return t},lA=function(e,t,i,a,r,s,n,o){var A=a.length,l=i.extra,h=o&&o.length,c=lo(l);li(e,t,null!=n?0x2014b50:0x4034b50),t+=4,null!=n&&(e[t++]=20,e[t++]=i.os),e[t]=20,t+=2,e[t++]=i.flag<<1|(s<0&&8),e[t++]=r&&8,e[t++]=255&i.compression,e[t++]=i.compression>>8;var d=new Date(null==i.mtime?Date.now():i.mtime),g=d.getFullYear()-1980;if((g<0||g>119)&&AW(10),li(e,t,g<<25|d.getMonth()+1<<21|d.getDate()<<16|d.getHours()<<11|d.getMinutes()<<5|d.getSeconds()>>1),t+=4,-1!=s&&(li(e,t,i.crc),li(e,t+4,s<0?-s-2:s),li(e,t+8,i.size)),li(e,t+12,A),li(e,t+14,c),t+=16,null!=n&&(li(e,t,h),li(e,t+6,i.attrs),li(e,t+10,n),t+=14),e.set(a,t),t+=A,c)for(var u in l){var p=l[u],f=p.length;li(e,t,+u),li(e,t+2,f),e.set(p,t+4),t+=4+f}return h&&(e.set(o,t),t+=h),t},ll=function(e,t,i,a,r){li(e,t,0x6054b50),li(e,t+8,i),li(e,t+10,i),li(e,t+12,a),li(e,t+16,r)};"function"==typeof queueMicrotask&&queueMicrotask;class lh{constructor(e,t="",i=[],a=[]){this.name=e,this.type=t,this.metadata=i,this.properties=a,this.children=[]}addMetadata(e,t){this.metadata.push({key:e,value:t})}addProperty(e,t=[]){this.properties.push({property:e,metadata:t})}addChild(e){this.children.push(e)}toString(e=0){let t=" ".repeat(e),i=this.metadata.map(e=>{let i=e.key,a=e.value;if(!Array.isArray(a))return`${i} = ${a}`;{let e=[];return e.push(`${i} = {`),a.forEach(i=>
590{e.push(`${t} ${i}`)}),e.push(`${t} }`),e.join("\n")}}),a=i.length?` ( 591${i.map(e=>`${t} ${e}`).join("\n")} 592${t})`:"",r=this.properties.map(e=>{let i=e.property,a=e.metadata.length?` ( 593${e.metadata.map(e=>`${t} ${e}`).join("\n")} 594${t} )`:"";return`${t} ${i}${a}`}),s=this.children.map(t=>t.toString(e+1)),n=[];if(r.length>0&&n.push(...r),s.length>0){r.length>0&&n.push("");for(let e=0;e<s.length;e++)n.push(s[e]),e<s.length-1&&n.push("")}let o=n.join("\n"),A=this.type?this.type+" ":"";return`${t}def ${A}"${this.name}"${a} 595${t}{ 596${o} 597${t}}`}}class lc{constructor(){this.textureUtils=null}setTextureUtils(e){this.textureUtils=e}parse(e,t,i,a){this.parseAsync(e,a).then(t).catch(i)}async parseAsync(e,t={}){let i;t=Object.assign({ar:{anchoring:{type:"plane"},planeAnchoring:{alignment:"horizontal"}},includeAnchoringProperties:!0,onlyVisible:!0,quickLookCompatible:!1,maxTextureSize:1024},t);let a=new Set,r={},s="model.usda";r[s]=null;let n=new lh("Root","Xform"),o=new lh("Scenes","Scope");o.addMetadata("kind",'"sceneLibrary"'),n.addChild(o);let A="Scene",l=new lh(A,"Xform");l.addMetadata("customData",["bool preliminary_collidesWithEnvironment = 0",`string sceneName = "${A}"`]),l.addMetadata("sceneName",`"${A}"`),t.includeAnchoringProperties&&(l.addProperty(`token preliminary:anchoring:type = "${t.ar.anchoring.type}"`),l.addProperty(`token preliminary:planeAnchoring:alignment = "${t.ar.planeAnchoring.alignment}"`)),o.addChild(l);let h={},c={};!function e(t,i,a,r,s,n){for(let o=0,A=t.children.length;o<A;o++){let A,l=t.children[o];if(!1!==l.visible||!0!==n.onlyVisible){if(l.isMesh){let e=l.geometry,t=l.material;if(t.isMeshStandardMaterial){let i="geometries/Geometry_"+e.id+".usda";if(!(i in s)){let t=function(e){let t=new lh("Geometry"),i=function(e){var t;let i=e.attributes,a=i.position.count,r=new lh("Geometry","Mesh");r.addProperty(`int[] faceVertexCounts = [${Array((null!==(t=e).index?t.index.count:t.attributes.position.count)/3).fill(3).join(", ")}]`),r.addProperty(`int[] faceVertexIndices = [${function(e){let t=e.index,i=[];if(null!==t)for(let e=0;e<t.count;e++)i.push(t.getX(e));else{let t=e.attributes.position.count;for(let e=0;e<t;e++)i.push(e)}return i.join(", ")}(e)}]`),r.addProperty(`normal3f[] normals = [${lm(i.normal,a)}]`,['interpolation = "vertex"']),r.addProperty(`point3f[] points = [${lm(i.position,a)}]`);for(let e=0;e<4;e++){let t=e>0?e:"",a=i["uv"+t];void 0!==a&&r.addProperty(`texCoord2f[] primvars:st${t} = [${function(e){let t=[];for(let i=0;i<e.count;i++){let a=e.getX(i),r=e.getY(i);t.push(`(${a.toPrecision(7)}, ${1-r.toPrecision(7)})`)}return t.join(", ")}(a)}]`,['interpolation = "vertex"'])}let s=i.color;return void 0!==s&&r.addProperty(`color3f[] primvars:displayColor = [${lm(s,a)}]`,['interpolation = "vertex"']),r.addProperty('uniform token subdivisionScheme = "none"'),r}(e);return t.addChild(i),t}(e);s[i]=ln(lg()+"\n"+t.toString())}t.uuid in a||(a[t.uuid]=t),A=function(e,t,i,a){let r=lu(e,a);return r.addMetadata("prepend references",`@./geometries/Geometry_${t.id}.usda@</Geometry>`),r.addMetadata("prepend apiSchemas",'["MaterialBindingAPI"]'),r.addProperty(`rel material:binding = </Materials/Material_${i.id}>`),r}(l,e,a[t.uuid],r)}else console.warn("THREE.USDZExporter: Unsupported material type (USDZ only supports MeshStandardMaterial)",l)}else A=l.isCamera?function(e,t){let i,a,r=ld(e,t),s=lp(e.matrix);0>e.matrix.determinant()&&console.warn("THREE.USDZExporter: USDZ does not support negative scales",e);let n=new lh(r,"Camera");n.addProperty(`matrix4d xformOp:transform = ${s}`),n.addProperty('uniform token[] xformOpOrder = ["xformOp:transform"]');let o=e.isOrthographicCamera?"orthographic":"perspective";n.addProperty(`token projection = "${o}"`);let A=`(${e.near.toPrecision(7)}, ${e.far.toPrecision(7)})`;if(n.addProperty(`float2 clippingRange = ${A}`),i=e.isOrthographicCamera?((Math.abs(e.left)+Math.abs(e.right))*10).toPrecision(7):e.getFilmWidth().toPrecision(7),n.addProperty(`float horizontalAperture = ${i}`),a=e.isOrthographicCamera?((Math.abs(e.top)+Math.abs(e.bottom))*10).toPrecision(7):e.getFilmHeight().toPrecision(7),n.addProperty(`float verticalAperture = ${a}`),e.isPerspectiveCamera){let t=e.getFocalLength().toPrecision(7);n.addProperty(`float focalLength = ${t}`);let i=e.focus.toPrecision(7);n.addProperty(`float focusDistance = ${i}`)}return n}(l,r):lu(l,r);A&&(i.addChild(A),e(l,A,a,r,s,n))}}}(e,l,h,a,r,t);let d=function(e,t,i=!1){let a=new lh("Materials");for(let r in e){let s=e[r];a.addChild(function(e,t,i=!1){let a=new lh(`Material_${e.id}`,"Material");function r(a,r,s){var n;let o=a.source.id+"_"+a.flipY;t[o]=a;let A=a.channel>0?"st"+a.channel:"st",l={1e3:"repeat",1001:"clamp",1002:"mirror"},h=a.repeat.clone(),c=a.offset.clone(),d=a.rotation,g=Math.sin(d),u=Math.cos(d);c.y=1-c.y-h.y,i?(c.x=c.x/h.x,c.y=c.y/h.y,c.x+=g/h.x,c.y+=u-1):(c.x+=g*h.x,c.y+=(1-u)*h.y);let p=new lh(`PrimvarReader_${r}`,"Shader");p.addProperty('uniform token info:id = "UsdPrimvarReader_float2"'),p.addProperty("float2 inputs:fallback = (0.0, 0.0)"),p.addProperty(`string inputs:varname = "${A}"`),p.addProperty("float2 outputs:result");let f=new lh(`Transform2d_${r}`,"Shader");f.addProperty('uniform token info:id = "UsdTransform2d"'),f.addProperty(`float2 inputs:in.connect = </Materials/Material_${e.id}/PrimvarReader_${r}.outputs:result>`),f.addProperty(`float inputs:rotation = ${(180/Math.PI*d).toFixed(7)}`),f.addProperty(`float2 inputs:scale = ${lE(h)}`),f.addProperty(`float2 inputs:translation = ${lE(c)}`),f.addProperty("float2 outputs:result");let m=new lh(`Texture_${a.id}_${r}`,"Shader");return m.addProperty('uniform token info:id = "UsdUVTexture"'),m.addProperty(`asset inputs:file = @textures/Texture_${o}.png@`),m.addProperty(`float2 inputs:st.connect = </Materials/Material_${e.id}/Transform2d_${r}.outputs:result>`),void 0!==s&&m.addProperty(`float4 inputs:scale = ${(n=s,`(${n.r}, ${n.g}, ${n.b}
597, 1.0)`)}`),"normal"===r&&(m.addProperty("float4 inputs:scale = (2, 2, 2, 1)"),m.addProperty("float4 inputs:bias = (-1, -1, -1, 0)")),m.addProperty(`token inputs:sourceColorSpace = "${a.colorSpace===tr.jf0?"raw":"sRGB"}"`),m.addProperty(`token inputs:wrapS = "${l[a.wrapS]}"`),m.addProperty(`token inputs:wrapT = "${l[a.wrapT]}"`),m.addProperty("float outputs:r"),m.addProperty("float outputs:g"),m.addProperty("float outputs:b"),m.addProperty("float3 outputs:rgb"),(e.transparent||e.alphaTest>0)&&m.addProperty("float outputs:a"),[p,f,m]}e.side===tr.$EB&&console.warn("THREE.USDZExporter: USDZ does not support double sided materials",e);let s=new lh("PreviewSurface","Shader");if(s.addProperty('uniform token info:id = "UsdPreviewSurface"'),null!==e.map?(s.addProperty(`color3f inputs:diffuseColor.connect = </Materials/Material_${e.id}/Texture_${e.map.id}_diffuse.outputs:rgb>`),e.transparent?s.addProperty(`float inputs:opacity.connect = </Materials/Material_${e.id}/Texture_${e.map.id}_diffuse.outputs:a>`):e.alphaTest>0&&(s.addProperty(`float inputs:opacity.connect = </Materials/Material_${e.id}/Texture_${e.map.id}_diffuse.outputs:a>`),s.addProperty(`float inputs:opacityThreshold = ${e.alphaTest}`)),r(e.map,"diffuse",e.color).forEach(e=>a.addChild(e))):s.addProperty(`color3f inputs:diffuseColor = ${lb(e.color)}`),null!==e.emissiveMap){s.addProperty(`color3f inputs:emissiveColor.connect = </Materials/Material_${e.id}/Texture_${e.emissiveMap.id}_emissive.outputs:rgb>`);let t=new tr.Q1f(e.emissive.r*e.emissiveIntensity,e.emissive.g*e.emissiveIntensity,e.emissive.b*e.emissiveIntensity);r(e.emissiveMap,"emissive",t).forEach(e=>a.addChild(e))}else e.emissive.getHex()>0&&s.addProperty(`color3f inputs:emissiveColor = ${lb(e.emissive)}`);if(null!==e.normalMap&&(s.addProperty(`normal3f inputs:normal.connect = </Materials/Material_${e.id}/Texture_${e.normalMap.id}_normal.outputs:rgb>`),r(e.normalMap,"normal").forEach(e=>a.addChild(e))),null!==e.aoMap){s.addProperty(`float inputs:occlusion.connect = </Materials/Material_${e.id}/Texture_${e.aoMap.id}_occlusion.outputs:r>`);let t=new tr.Q1f(e.aoMapIntensity,e.aoMapIntensity,e.aoMapIntensity);r(e.aoMap,"occlusion",t).forEach(e=>a.addChild(e))}if(null!==e.roughnessMap){s.addProperty(`float inputs:roughness.connect = </Materials/Material_${e.id}/Texture_${e.roughnessMap.id}_roughness.outputs:g>`);let t=new tr.Q1f(e.roughness,e.roughness,e.roughness);r(e.roughnessMap,"roughness",t).forEach(e=>a.addChild(e))}else s.addProperty(`float inputs:roughness = ${e.roughness}`);if(null!==e.metalnessMap){s.addProperty(`float inputs:metallic.connect = </Materials/Material_${e.id}/Texture_${e.metalnessMap.id}_metallic.outputs:b>`);let t=new tr.Q1f(e.metalness,e.metalness,e.metalness);r(e.metalnessMap,"metallic",t).forEach(e=>a.addChild(e))}else s.addProperty(`float inputs:metallic = ${e.metalness}`);if(null!==e.alphaMap?(s.addProperty(`float inputs:opacity.connect = </Materials/Material_${e.id}/Texture_${e.alphaMap.id}_opacity.outputs:r>`),s.addProperty("float inputs:opacityThreshold = 0.0001"),r(e.alphaMap,"opacity").forEach(e=>a.addChild(e))):s.addProperty(`float inputs:opacity = ${e.opacity}`),e.isMeshPhysicalMaterial){if(null!==e.clearcoatMap){s.addProperty(`float inputs:clearcoat.connect = </Materials/Material_${e.id}/Texture_${e.clearcoatMap.id}_clearcoat.outputs:r>`);let t=new tr.Q1f(e.clearcoat,e.clearcoat,e.clearcoat);r(e.clearcoatMap,"clearcoat",t).forEach(e=>a.addChild(e))}else s.addProperty(`float inputs:clearcoat = ${e.clearcoat}`);if(null!==e.clearcoatRoughnessMap){s.addProperty(`float inputs:clearcoatRoughness.connect = </Materials/Material_${e.id}/Texture_${e.clearcoatRoughnessMap.id}_clearcoatRoughness.outputs:g>`);let t=new tr.Q1f(e.clearcoatRoughness,e.clearcoatRoughness,e.clearcoatRoughness);r(e.clearcoatRoughnessMap,"clearcoatRoughness",t).forEach(e=>a.addChild(e))}else s.addProperty(`float inputs:clearcoatRoughness = ${e.clearcoatRoughness}`);s.addProperty(`float inputs:ior = ${e.ior}`)}return s.addProperty("int inputs:useSpecularWorkflow = 0"),s.addProperty("token outputs:surface"),a.addChild(s),a.addProperty(`token outputs:surface.connect = </Materials/Material_${e.id}/PreviewSurface.outputs:surface>`),a}(s,t,i))}return a}(h,c,t.quickLookCompatible);for(let e in i=lg()+"\n"+n.toString()+"\n\n"+d.toString(),r[s]=ln(i),i=null,c){let i=c[e];if(!0===i.isCompressedTexture)if(null===this.textureUtils)throw Error("THREE.USDZExporter: setTextureUtils() must be called to process compressed textures.");else i=await this.textureUtils.decompress(i);let a=function(e,t,i){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){let a=i/Math.max(e.width,e.height),r=document.createElement("canvas");r.width=e.width*Math.min(1,a),r.height=e.height*Math.min(1,a);let s=r.getContext("2d");
597return!0===t&&(s.translate(0,r.height),s.scale(1,-1)),s.drawImage(e,0,0,r.width,r.height),r}throw Error("THREE.USDZExporter: No valid image data found. Unable to process texture.")}(i.image,i.flipY,t.maxTextureSize),s=await new Promise(e=>a.toBlob(e,"image/png",1));r[`textures/Texture_${e}.png`]=new Uint8Array(await s.arrayBuffer())}let g=0;for(let e in r){let t=r[e],i=63&(g+=34+e.length);if(4!==i){let a=new Uint8Array(64-i);r[e]=[t,{extra:{12345:a}}]}g=t.length}return function(e,t){t||(t={});var i={},a=[];la(e,"",i,t);var r=0,s=0;for(var n in i){var o=i[n],A=o[0],l=o[1],h=8*(0!=l.level),c=ln(n),d=c.length,g=l.comment,u=g&&ln(g),p=u&&u.length,f=lo(l.extra);d>65535&&AW(11);var m=h?le(A,l||{},0,0):A,b=m.length,E=A7();E.p(A),a.push(lt(l,{size:A.length,crc:E.d(),c:m,f:c,m:u,u:d!=n.length||u&&g.length!=p,o:r,compression:h})),r+=30+d+f+b,s+=76+2*(d+f)+(p||0)+b}for(var I=new AS(s+22),C=r,y=s-r,B=0;B<a.length;++B){var c=a[B];lA(I,c.o,c,c.f,c.u,c.c.length);var w=30+c.f.length+lo(c.extra);I.set(c.c,c.o+w),lA(I,r,c,c.f,c.u,c.c.length,c.o,c.m),r+=16+w+(c.m?c.m.length:0)}return ll(I,r,a.length,y,C),I}(r,{level:0})}}function ld(e,t){let i=e.name;return i=i.replace(/[^A-Za-z0-9_]/g,""),/^[0-9]/.test(i)&&(i="_"+i),""===i&&(i=e.isCamera?"Camera":"Object"),t.has(i)&&(i=i+"_"+e.id),t.add(i),i}function lg(){return`#usda 1.0 598( 599 customLayerData = { 600 string creator = "Three.js USDZExporter" 601 } 602 defaultPrim = "Root" 603 metersPerUnit = 1 604 upAxis = "Y" 605) 606`}function lu(e,t){let i=ld(e,t);0>e.matrix.determinant()&&console.warn("THREE.USDZExporter: USDZ does not support negative scales",e);let a=new lh(i,"Xform");if(null!==e.pivot){let t=e.position,i=e.quaternion,r=e.scale,s=e.pivot;a.addProperty(`float3 xformOp:translate = (${t.x.toPrecision(7)}, ${t.y.toPrecision(7)}, ${t.z.toPrecision(7)})`),a.addProperty(`float3 xformOp:translate:pivot = (${s.x.toPrecision(7)}, ${s.y.toPrecision(7)}, ${s.z.toPrecision(7)})`),a.addProperty(`quatf xformOp:orient = (${i.w.toPrecision(7)}, ${i.x.toPrecision(7)}, ${i.y.toPrecision(7)}, ${i.z.toPrecision(7)})`),a.addProperty(`float3 xformOp:scale = (${r.x.toPrecision(7)}, ${r.y.toPrecision(7)}, ${r.z.toPrecision(7)})`),a.addProperty('uniform token[] xformOpOrder = ["xformOp:translate", "xformOp:translate:pivot", "xformOp:orient", "xformOp:scale", "!invert!xformOp:translate:pivot"]')}else{let t=lp(e.matrix);a.addProperty(`matrix4d xformOp:transform = ${t}`),a.addProperty('uniform token[] xformOpOrder = ["xformOp:transform"]')}return a}function lp(e){let t=e.elements;return`( ${lf(t,0)}, ${lf(t,4)}, ${lf(t,8)}, ${lf(t,12)} )`}function lf(e,t){return`(${e[t+0]}, ${e[t+1]}, ${e[t+2]}, ${e[t+3]})`}function lm(e,t){if(void 0===e)return console.warn("USDZExporter: Normals missing."),Array(t).fill("(0, 0, 0)").join(", ");let i=[];for(let t=0;t<e.count;t++){let a=e.getX(t),r=e.getY(t),s=e.getZ(t);i.push(`(${a.toPrecision(7)}, ${r.toPrecision(7)}, ${s.toPrecision(7)})`)}return i.join(", ")}function lb(e){return`(${e.r}, ${e.g}, ${e.b})`}function lE(e){return`(${e.x}, ${e.y})`}var lI=function(e,t,i,a){var r,s=arguments.length,n=s<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,a);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(s<3?r(n):s>3?r(t,i,n):r(t,i))||n);return s>3&&n&&Object.defineProperty(t,i,n),n};let lC=!1,ly=!1,lB="#model-viewer-no-ar-fallback",lw=(f=["quick-look","scene-viewer","webxr","none"],e=>{try{let t=aU(e),i=(t.length?t[0].terms:[]).filter(e=>e&&"ident"===e.type).map(e=>e.value).filter(e=>f.indexOf(e)>-1);return new Set(i)}catch(e){}return new Set}),lv={QUICK_LOOK:"quick-look",SCENE_VIEWER:"scene-viewer",WEBXR:"webxr",NONE:"none"},lx=Symbol("arButtonContainer"),lS=Symbol("enterARWithWebXR"),lQ=Symbol("openSceneViewer"),lR=Symbol("openIOSARQuickLook"),lM=Symbol("canActivateAR"),lT=Symbol("arMode"),lD=Symbol("arModes"),lk=Symbol("arAnchor"),lF=Symbol("preload"),lL=Symbol("onARButtonContainerClick"),lP=Symbol("onARStatus"),lU=Symbol("onARTracking"),l_=Symbol("onARTap"),lN=Symbol("selectARMode"),lO=Symbol("triggerLoad");var lG=function(e,t,i,a){var r,s=arguments.length,n=s<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,a);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(s<3?r(n):s>
6063?r(t,i,n):r(t,i))||n);return s>3&&n&&Object.defineProperty(t,i,n),n};let lq={AUTO:"auto"},lH={AUTO:"auto",EAGER:"eager"},lj=Symbol("defaultProgressBarElement"),lz=Symbol("posterContainerElement"),lK=Symbol("defaultPosterElement"),lV=Symbol("shouldDismissPoster"),lJ=Symbol("hidePoster"),lY=Symbol("modelIsRevealed"),lW=Symbol("updateProgressBar"),l$=Symbol("ariaLabelCallToAction"),lX=Symbol("onProgress");var lZ=function(e,t,i,a){var r,s=arguments.length,n=s<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,i):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,i,a);else for(var o=e.length-1;o>=0;o--)(r=e[o])&&(n=(s<3?r(n):s>3?r(t,i,n):r(t,i))||n);return s>3&&n&&Object.defineProperty(t,i,n),n};let l0={basis:[aK(aP(Math.PI/32,"rad"))],keywords:{auto:[null]}},l1=Symbol("autoRotateStartTime"),l2=Symbol("radiansPerSecond"),l8=Symbol("syncRotationRate"),l9=Symbol("onCameraChange"),l3=(e=>{var t,i,a;class r extends e{constructor(){super(...arguments),this[t]=new Map,this[i]=e=>{e.forEach(e=>{e instanceof MutationRecord&&"childList"!==e.type||(e.addedNodes.forEach(e=>{this[Av](e)}),e.removedNodes.forEach(e=>{this[Ax](e)}),this[Ai]())})},this[a]=new MutationObserver(this[AB])}connectedCallback(){super.connectedCallback();for(let e=0;e<this.children.length;++e)this[Av](this.children[e]);let{ShadyDOM:e}=self;null==e?this[Aw].observe(this,{childList:!0}):this[Aw]=e.observeChildren(this,this[AB])}disconnectedCallback(){super.disconnectedCallback();let{ShadyDOM:e}=self;null==e?this[Aw].disconnect():e.unobserveChildren(this[Aw])}[(t=Ay,i=AB,a=Aw,Ar)](){super[Ar]();let e=this[At];e.forHotspots(t=>{e.updateHotspotAttachment(t),e.updateSurfaceHotspot(t)})}[Aa](e,t){super[Aa](e,t);let i=this[At],{annotationRenderer:a}=i,r=i.getCamera();i.shouldRender()&&(i.animateSurfaceHotspots(),i.updateHotspotsVisibility(r.position),a.domElement.style.display="",a.render(i,r))}updateHotspot(e){let t=this[Ay].get(e.name);null!=t&&(t.updatePosition(e.position),t.updateNormal(e.normal),t.surface=e.surface,void 0!==e.modelIndex&&null!==e.modelIndex&&(t.modelIndex=e.modelIndex),this[At].updateSurfaceHotspot(t),this[Ai]())}queryHotspot(e){let t=this[Ay].get(e);if(null==t)return null;let i=Ac(t.position),a=Ac(t.normal),r=t.facingCamera,s=this[At],n=s.getCamera(),o=new tr.Pq0;o.setFromMatrixPosition(t.matrixWorld),o.project(n);let A=s.width/2,l=s.height/2;o.x=o.x*A+A,o.y=-(o.y*l)+l;let h=Ac(new tr.Pq0(o.x,o.y,o.z));return Number.isFinite(h.x)&&Number.isFinite(h.y)?{position:i,normal:a,canvasPosition:h,facingCamera:r}:null}positionAndNormalFromPoint(e,t){let i=this[At],a=i.getNDC(e,t),r=i.positionAndNormalFromPoint(a);if(null==r)return null;let s=r.worldToModel,n=Ac(r.position.applyMatrix4(s)),o=Ac(r.normal.transformDirection(s)),A=null;return null!=r.uv&&(A=Ad(r.uv)),{position:n,normal:o,uv:A,modelIndex:r.modelIndex}}surfaceFromPoint(e,t){let i=this[At],a=i.getNDC(e,t);return i.surfaceFromPoint(a)}[Av](e){if(!(e instanceof HTMLElement&&0===e.slot.indexOf("hotspot")))return;let t=this[Ay].get(e.slot);if(null!=t){t.increment();let i=e.dataset.visibilityAttribute;if(null!=i){let a=`data-${i}`;e.toggleAttribute(a,t.facingCamera)}e.dispatchEvent(new CustomEvent("hotspot-visibility",{detail:{visible:t.facingCamera}}))}else t=new ox({name:e.slot,position:e.dataset.position,normal:e.dataset.normal,surface:e.dataset.surface,modelIndex:null!=e.dataset.modelIndex?parseInt(e.dataset.modelIndex):null}),this[Ay].set(e.slot,t),this[At].addHotspot(t);this[At].queueRender()}[Ax](e){if(!(e instanceof HTMLElement))return;let t=this[Ay].get(e.slot);t&&(t.decrement()&&(this[At].removeHotspot(t),this[Ay].delete(e.slot)),this[At].queueRender())}}return r})((e=>{var t,i,a,r;class s extends e{constructor(){super(...arguments),this[t]=void 0,this[i]=[],this[a]=null,this[r]=null,this.variantName=null,this.orientation="0 0 0",this.scale="1 1 1"}get model(){return this[op]}get extraModels(){return this[of]}get availableVariants(){return this.model?this.model[oo]():[]}get originalGltfJson(){return this[ou]}[(t=op,i=of,a=og,r=ou,om)](){return()=>{this[Ai]()}}
606[ob](e){return e.colorSpace=tr.er$,e.wrapS=tr.GJx,e.wrapT=tr.GJx,new nS(this[om](),e)}async createTexture(e,t="image/png"){let{textureUtils:i}=this[An],a=await i.loadImage(e,this.withCredentials,t),r="image/ktx2"===t?"image/png":t;return a.userData.mimeType=r,this[ob](a)}async createLottieTexture(e,t=1){let{textureUtils:i}=this[An],a=await i.loadLottie(e,t,this.withCredentials);return this[ob](a)}createVideoTexture(e){let t=document.createElement("video");t.crossOrigin=this.withCredentials?"use-credentials":"anonymous",t.src=e,t.muted=!0,t.playsInline=!0,t.loop=!0,t.play();let i=new tr.Nv2(t);return this[ob](i)}createCanvasTexture(){let e=document.createElement("canvas"),t=new tr.GOR(e);return this[ob](t)}async updated(e){if(super.updated(e),e.has("variantName")){let e=this[Ao].beginActivity("variant-update");e(.1);let t=this[op],{variantName:i}=this;null!=t&&(await t[oi](i),this[Ai](),this.dispatchEvent(new CustomEvent("variant-applied"))),e(1)}if(e.has("orientation")||e.has("scale")){if(!this.loaded)return;let e=this[At];e.applyTransform(),e.updateBoundingBox(),e.updateShadow(),this[An].arRenderer.onUpdateScene(),this[Ai]()}}[Ar](){super[Ar]();let{currentGLTFs:e}=this[At],t=e.length>0?e[0]:null;if(null!=t){let{correlatedSceneGraph:e}=t;null!=e&&t!==this[og]&&(this[op]=new oc(e,this[om]()),this[ou]=JSON.parse(JSON.stringify(e.gltf))),"variants"in t.userData&&this.requestUpdate("variantName")}this[of]=[];let i=Array.from(this.querySelectorAll("extra-model"));for(let t=1;t<e.length;t++){let a=e[t];if(null!=a&&null!=a.correlatedSceneGraph){let e=new oc(a.correlatedSceneGraph,this[om]());this[of].push(e),i[t-1]&&(i[t-1].model=e)}}this[og]=t}async exportScene(e){let t=this[At];return new Promise(async(i,a)=>{let r,s={binary:!0,onlyVisible:!0,maxTextureSize:1/0,includeCustomExtensions:!1,forceIndices:!1};Object.assign(s,e),s.animations=t.animations,s.truncateDrawRange=!0;let n=t.shadow,o=!1;null!=n&&(o=n.visible,n.visible=!1),await this[op][ot]();let A=new ae().register(e=>new aQ(e));if(A.setTextureUtils({decompress:(e,t)=>(function(e,t=1/0,i=null){d||(d=new tr.bdM(2,2,1,1)),g||(g=new tr.BKk({uniforms:{blitTexture:new tr.nc$(e)},vertexShader:` 607 varying vec2 vUv; 608 void main(){ 609 vUv = uv; 610 gl_Position = vec4(position.xy * 1.0,0.,.999999); 611 }`,fragmentShader:` 612 uniform sampler2D blitTexture; 613 varying vec2 vUv; 614 615 void main(){ 616 gl_FragColor = vec4(vUv.xy, 0, 1); 617 618 #ifdef IS_SRGB 619 gl_FragColor = sRGBTransferOETF( texture2D( blitTexture, vUv) ); 620 #else 621 gl_FragColor = texture2D( blitTexture, vUv); 622 #endif 623 }`})),g.uniforms.blitTexture.value=e,g.defines.IS_SRGB=e.colorSpace==tr.er$,g.needsUpdate=!0,u||((u=new tr.eaF(d,g)).frustumCulled=!1);let a=new tr.ubm,r=new tr.Z58;r.add(u),null===i&&(i=c=new av.JeP({antialias:!1}));let s=Math.min(e.image.width,t),n=Math.min(e.image.height,t);i.setSize(s,n),i.clear(),i.render(r,a);let o=document.createElement("canvas"),A=o.getContext("2d");o.width=s,o.height=n,A.drawImage(i.domElement,0,0,s,n);let l=new tr.GOR(o);return l.minFilter=e.minFilter,l.magFilter=e.magFilter,l.wrapS=e.wrapS,l.wrapT=e.wrapT,l.colorSpace=e.colorSpace,l.name=e.name,c&&(c.forceContextLoss(),c.dispose(),c=null),l})(e,null!=t?t:1/0,void 0)}),t.models.length>1)for(let e of(r=new tr.B69,t.models))r.add(e);else r=t.models[0];A.parse(r,e=>{if(t.models.length>1)for(let e of t.models)t.target.add(e);else t.target.add(t.models[0]);return i(new Blob([s.binary?e:JSON.stringify(e)],{type:s.binary?"application/octet-stream":"application/json"}))},()=>a("glTF export failed"),s),null!=n&&(n.visible=o)})}materialFromPoint(e,t){let i=this[At],a=i.getNDC(e,t),r=i.hitFromPoint(a);if(null==r||null==r.face)return null;let s=this[op];if(null!=s){let e=s[oa](r);if(null!=e)return e}for(let e of this[of]){let t=e[oa](r);if(null!=t)return t}return null}}return od([ev({type:String,attribute:"variant-name"})],s.prototype,"variantName",void 0),od([ev({type:String,attribute:"orientation"})],s.prototype,"orientation",void 0),od([ev({type:String,attribute:"scale"})],s.prototype,"scale",void 0),s})((e=>{var t,i,a;class r extends e{constructor(){super(...arguments),this.autoRotate=!1,this.autoRotateDelay=3e3,this.rotationPerSecond="auto",this[t]=performance.now(),this[i]=0,this[a]=e=>{this.autoRotate&&"user-interaction"===e.detail.source&&(this[l1]=performance.now())}}connectedCallback(){super.connectedCallback(),this.addEventListener("camera-change",this[l9]),this[l1]=performance.now()}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("camera-change",this[l9]),this[l1]=performance.now()}updated(e){super.updated(e),e.has("autoRotate")&&(this[l1]=performance.now())}[(t=l1,i=l2,l8)](e){this[l2]=e[0]}[Aa](e,t){if(super[Aa](e,t),!this.autoRotate||!this[Al]()||this[An].isPresenting)return;let i=Math.min(t,e-this[l1]-this.autoRotateDelay);i>0&&(this[At].yaw=this.turntableRotation+this[l2]*i*.001)}get turntableRotation(){return this[At].yaw}resetTurntableRotation(e=0){this[At].yaw=e}}return a=l9,lZ([ev({type:Boolean,attribute:"auto-rotate"})],r.prototype,"autoRotate",void 0),lZ([ev({type:Number,attribute:"auto-rotate-delay"})],r.prototype,"autoRotateDelay",void 0),lZ([rp({intrinsics:l0,updateHandler:l8}),ev({type:String,attribute:"rotation-per-second"})],r.prototype,"rotationPerSecond",void 0),r})((e=>{var t,i,a;class r extends e{constructor(){super(...arguments),this.environmentImage=null,this.skyboxImage=null,this.shadowIntensity=0,this.shadowSoftness=1,this.exposure=1,this.toneMapping="auto",this.skyboxHeight="0",this[t]=null,this[i]=null,this[a]=null}updated(e){var t;if(super.updated(e),e.has("shadowIntensity")&&(this[At].setShadowIntensity(.5*this.shadowIntensity),this[Ai]()),e.has("shadowSoftness")&&(this[At].setShadowSoftness(this.shadowSoftness),this[Ai]()),e.has("exposure")&&(this[At].exposure=this.exposure,this[Ai]()),e.has("toneMapping")){let e=new Map([["aces",tr.FV],["agx",tr.LAk],["reinhard",tr.Mjd],["cineon",tr.nNL],["linear",tr.kyO],["none",tr.y_p]]);this[At].toneMapping=null!=(t=e.get(this.toneMapping))?t:tr.aJ8,this[Ai]()}(e.has("environmentImage")||e.has("skyboxImage"))&&this[Ah]()&&this[tx](),e.has("skyboxHeight")&&(this[At].setGroundedSkybox(),this[Ai]())}
623hasBakedShadow(){return this[At].bakedShadows.size>0}async [(t=tw,i=tv,a=tS,tx)](){let{skyboxImage:e,environmentImage:t}=this;null!=this[tS]&&(this[tS](),this[tS]=null);let{textureUtils:i}=this[An];if(null==i)return;let a=this[Ao].beginActivity("environment-update");try{let{environmentMap:r,skybox:s}=await i.generateEnvironmentMapAndSkybox(tm(e),t,e=>a(tC(e,0,1)),this.withCredentials);this[tw]!==r&&(this[tw]=r,this.dispatchEvent(new CustomEvent("environment-change"))),null!=s?this[tv]=s.name===r.name?r:s:this[tv]=null,this[At].setEnvironmentAndSkybox(this[tw],this[tv])}catch(e){if(e instanceof Error)throw this[At].setEnvironmentAndSkybox(null,null),e}finally{a(1)}}}return tB([ev({type:String,attribute:"environment-image"})],r.prototype,"environmentImage",void 0),tB([ev({type:String,attribute:"skybox-image"})],r.prototype,"skyboxImage",void 0),tB([ev({type:Number,attribute:"shadow-intensity"})],r.prototype,"shadowIntensity",void 0),tB([ev({type:Number,attribute:"shadow-softness"})],r.prototype,"shadowSoftness",void 0),tB([ev({type:Number})],r.prototype,"exposure",void 0),tB([ev({type:String,attribute:"tone-mapping"})],r.prototype,"toneMapping",void 0),tB([ev({type:String,attribute:"skybox-height"})],r.prototype,"skyboxHeight",void 0),r})((e=>{var t,i,a,r,s,n,o,A,l,h,c,d,g,u,p,f,m,b;class E extends e{constructor(){super(...arguments),this.cameraControls=!1,this.cameraOrbit=ry,this.cameraTarget="auto auto auto",this.fieldOfView="auto",this.minCameraOrbit="auto",this.maxCameraOrbit="auto",this.minFieldOfView="auto",this.maxFieldOfView="auto",this.interactionPromptThreshold=3e3,this.interactionPrompt=rv.AUTO,this.interactionPromptStyle=rx.WIGGLE,this.orbitSensitivity=1,this.zoomSensitivity=1,this.panSensitivity=1,this.touchAction=rS.NONE,this.disableZoom=!1,this.disablePan=!1,this.disableTap=!1,this.interpolationDecay=50,this.a11y=null,this[t]=this.shadowRoot.querySelector(".interaction-prompt"),this[i]=this.shadowRoot.querySelector("#prompt"),this[a]=[this.shadowRoot.querySelector("#finger0"),this.shadowRoot.querySelector("#finger1")],this[r]=this.shadowRoot.querySelector(".pan-target"),this[s]=0,this[n]=1/0,this[o]=!1,this[A]=!1,this[l]=so.AUTOMATIC,this[h]=new sA(this[At].camera,this[o7],this[At]),this[c]=new tr.YHV,this[d]=!1,this[g]=!1,this[u]=!1,this[p]={},this[f]=()=>{let e=this[r_].changeSource;this[r1]=e,e===so.USER_INTERACTION&&(this[rX]=!0,this[rH]())},this[m]=()=>{this[rj](),this[Ai]();let e=this[r_].changeSource;this.dispatchEvent(new CustomEvent("camera-change",{detail:{source:e}}))},this[b]=e=>{this[o6].classList.toggle("pointer-tumbling","pointer-change-start"===e.type)}}get inputSensitivity(){return this[r_].inputSensitivity}set inputSensitivity(e){this[r_].inputSensitivity=e}getCameraOrbit(){let{theta:e,phi:t,radius:i}=this[r2];return{theta:e,phi:t,radius:i,toString(){return`${this.theta}rad ${this.phi}rad ${this.radius}m`}}}getCameraTarget(){return Ac(this[An].isPresenting?this[An].arRenderer.target:this[At].getDynamicTarget())}getFieldOfView(){return this[r_].getFieldOfView()}getMinimumFieldOfView(){return this[r_].options.minimumFieldOfView}getMaximumFieldOfView(){return this[r_].options.maximumFieldOfView}getIdealAspect(){return this[At].idealAspect}jumpCameraToGoal(){this[r8]=!0,this.requestUpdate(r8,!1)}resetInteractionPrompt(){this[r0]=0,this[rZ]=1/0,this[rX]=!1,this[r$]=this.interactionPrompt===rv.AUTO&&this.cameraControls}zoom(e){let t=new WheelEvent("wheel",{deltaY:-30*e});this[o7].dispatchEvent(t)}connectedCallback(){super.connectedCallback(),this[r_].addEventListener("user-interaction",this[rJ]),this[r_].addEventListener("pointer-change-start",this[rW]),this[r_].addEventListener("pointer-change-end",this[rW])}disconnectedCallback(){super.disconnectedCallback(),this[r_].removeEventListener("user-interaction",this[rJ]),this[r_].removeEventListener("pointer-change-start",this[rW]),this[r_].removeEventListener("pointer-change-end",this[rW])}updated(e){super.updated(e);let t=this[r_],i=this[At];if(e.has("cameraControls")&&(this.cameraControls?(t.enableInteraction(),this.interactionPrompt===rv.AUTO&&(this[r$]=!0)):(t.disableInteraction(),this[rH]()),this[o7].setAttribute("aria-label",this[o1])),e.has("disableZoom")&&(t.disableZoom=this.disableZoom),e.has("disablePan")&&(t.enablePan=!this.disablePan),e.has("disableTap")&&(t.enableTap=!this.disableTap),(e.has("interactionPrompt")||e.has("cameraControls")||e.has("src"))&&(this.interactionPrompt===rv.AUTO&&this.cameraControls&&!this[rX]?this[r$]=!0:this[rH]()),e.has("interactionPromptStyle")&&(this[rG].style.opacity=this.interactionPromptStyle==rx.BASIC?"1":"0"),e.has("touchAction")){let e=this.touchAction;t.applyOptions({touchAction:e}),t.updateTouchActionStyle()}e.has("orbitSensitivity")&&(t.orbitSensitivity=this.orbitSensitivity),e.has("zoomSensitivity")&&(t.zoomSensitivity=this.zoomSensitivity),e.has("panSensitivity")&&(t.panSensitivity=this.panSensitivity),e.has("interpolationDecay")&&(t.setDamperDecayTime(this.interpolationDecay),i.setTargetDamperDecayTime(this.interpolationDecay)),e.has("a11y")&&this[rK](),!0===this[r8]&&Promise.resolve().then(()=>{t.jumpToGoal(),i.jumpToGoal(),this[rY](),this[r8]=!1})}async updateFraming(){let e=this[At],t=e.adjustedFoV(e.framedFoVDeg);await e.updateFraming();let i=e.adjustedFoV(e.framedFoVDeg),a=this[r_].getFieldOfView()/t;this[r_].setFieldOfView(i*a),this[r3]=!0,this.requestUpdate("maxFieldOfView"),this.requestUpdate("fieldOfView"),this.requestUpdate("minCameraOrbit"),this.requestUpdate("maxCameraOrbit"),this.requestUpdate("cameraOrbit"),await this.updateComplete}interact(e,t,i){let a=this[o7],r=this[rq];if("1"===r[0].style.opacity)return void console.warn("interact() failed because an existing interaction is running.");let s=[];s.push({x:rb(t.x),y:rb(t.y)});let n=[{x:s[0].x(0),y:s[0].y(0)}];null!=i&&(s.push({x:rb(i.x),y:rb(i.y)}),n.push({x:s[1].x(0),y:s[1].y(0)}));let o=performance.now(),{width:A,height:l}=this[At],h=this.getBoundingClientRect(),c=e=>{for(let[t,i]of n.entries()){let{style:s}=r[t];s.transform=`translateX(${A*i.x}px) translateY(${l*i.y}px)`,"pointerdown"===e?s.opacity="1":"pointerup"===e&&(s.opacity="0");let n={pointerId:t-5678,pointerType:"touch",target:a,clientX:A*i.x+h.x,clientY:l*i.y+h.y,altKey:!0};a.dispatchEvent(new PointerEvent(e,n))}},d=()=>{let t=this[r1];if(t!==so.AUTOMATIC||!a.isConnected){for(let e of this[rq])e.style.opacity="0";c("pointercancel"),this.dispatchEvent(new CustomEvent("interact-stopped",{detail:{source:t}})),document.removeEventListener("visibilitychange",g);return}let i=Math.min(1,(performance.now()-o)/e);for(let[e,t]of n.entries())t.x=s[e].x(i),t.y=s[e].y(i);c("pointermove"),i<1?requestAnimationFrame(d):(c("pointerup"),this.dispatchEvent(new CustomEvent("interact-stopped",{detail:{source:so.AUTOMATIC}})),document.removeEventListener("visibilitychange",g))},g=()=>{let e=0;"hidden"===document.visibilityState?e=performance.now()-o:o=performance.now()-e};document.addEventListener("visibilitychange",g),c("pointerdown"),this[r1]=so.AUTOMATIC,requestAnimationFrame(d)}[(t=rO,i=rG,a=rq,r=rN,s=r0,n=rZ,o=rX,A=r$,l=r1,h=r_,c=r2,d=r8,g=r9,u=r3,p=rz,r5)](e){let t=this[r_],i=this[At];i.framedFoVDeg=180*e[0]/Math.PI,t.changeSource=so.NONE,t.setFieldOfView(i.adjustedFoV(i.framedFoVDeg)),this[rJ]()}[r4](e){let t=this[r_];if(this[r3]){let{theta:t,phi:i}=this.getCameraOrbit();e[0]=t,e[1]=i,this[r3]=!1}t.changeSource=so.NONE,t.setOrbit(e[0],e[1],e[2]),this[rJ]()}[r7](e){this[r_].applyOptions({minimumAzimuthalAngle:e[0],minimumPolarAngle:e[1],minimumRadius:e[2]}),this.jumpCameraToGoal()}[se](e){this[r_].applyOptions({maximumAzimuthalAngle:e[0],maximumPolarAngle:e[1],maximumRadius:e[2]}),this[rV](e[2]),this.jumpCameraToGoal()}[st](e){this[r_].applyOptions({minimumFieldOfView:180*e[0]/Math.PI}),this.jumpCameraToGoal()}[si](e){let t=this[At].adjustedFoV(180*e[0]/Math.PI);this[r_].applyOptions({maximumFieldOfView:t}),this.jumpCameraToGoal()}[r6](e){let[t,i,a]=e;this[An].arRenderer.isPresenting||this[At].setTarget(t,i,a),this[r_].changeSource=so.NONE,this[An].arRenderer.updateTarget(),this[rJ]()}[Aa](e,t){if(super[Aa](e,t),this[An].isPresenting||!this[Al]())return;let i=this[r_],a=this[At],r=performance.now();if(this[r$]&&this.loaded&&r>this[o3]+this.interactionPromptThreshold&&(this[r$]=!1,this[rZ]=r,this[rO].classList.add("visible")),isFinite(this[rZ])&&this.interactionPromptStyle===rx.WIGGLE){let e=(r-this[rZ])/5e3%1,t=rI(e),s=rC(e);if(this[rG].style.opacity=`${s}`,t!==this[r0]){let e=t*a.width*.05,r=(t-this[r0])*Math.PI/16;this[rG].style.transform=`translateX(${e}
623px)`,i.changeSource=so.AUTOMATIC,i.adjustOrbit(r,0,0),this[r0]=t}}let s=i.update(e,t),n=a.updateTarget(t);(s||n)&&this[rY]()}[rH](){this[r$]=!1,this[rO].classList.remove("visible"),this[rZ]=1/0}[rV](e){let t=Math.abs(2*Math.max(this[At].farRadius(),e));this[r_].updateNearFar(0,t)}[rj](){let{theta:e,phi:t}=this[r_].getCameraSpherical(this[r2]),i=Math.floor(t/rL),a=rB[(4+Math.floor((e%rU+rP)/rF))%4],r=rw[i],s=`${r}${a}`;s in this[rz]?this[o9](this[rz][s]):this[o9](`View from stage ${s}`)}get[o1](){let e=". Use mouse, touch or arrow keys to move.";return"interaction-prompt"in this[rz]&&(e=`. ${this[rz]["interaction-prompt"]}`),super[o1].replace(/\.$/,"")+(this.cameraControls?e:"")}async [As](e){let t=this[r_],i=this[At],a=i.adjustedFoV(i.framedFoVDeg);super[As](e);let r=i.adjustedFoV(i.framedFoVDeg)/a,s=t.getFieldOfView()*(isFinite(r)?r:1);t.updateAspect(this[At].aspect),this.requestUpdate("maxFieldOfView",this.maxFieldOfView),await this.updateComplete,this[r_].setFieldOfView(s),this.jumpCameraToGoal()}[Ar](){super[Ar](),this[r9]?this[r3]=!0:this[r9]=!0,this.requestUpdate("maxFieldOfView",this.maxFieldOfView),this.requestUpdate("fieldOfView",this.fieldOfView),this.requestUpdate("minCameraOrbit",this.minCameraOrbit),this.requestUpdate("maxCameraOrbit",this.maxCameraOrbit),this.requestUpdate("cameraOrbit",this.cameraOrbit),this.requestUpdate("cameraTarget",this.cameraTarget),this.jumpCameraToGoal()}[(f=rJ,m=rY,b=rW,rK)](){if("string"==typeof this.a11y)if(this.a11y.startsWith("{"))try{this[rz]=JSON.parse(this.a11y)}catch(e){console.warn("Error parsing a11y JSON:",e)}else this.a11y.length>0?console.warn("Error not supported format, should be a JSON string:",this.a11y):this[rz]={};else"object"==typeof this.a11y&&null!=this.a11y?this[rz]=Object.assign({},this.a11y):this[rz]={};this[o7].setAttribute("aria-label",this[o1])}}return rE([ev({type:Boolean,attribute:"camera-controls"})],E.prototype,"cameraControls",void 0),rE([rp({intrinsics:rM,observeEffects:!0,updateHandler:r4}),ev({type:String,attribute:"camera-orbit",hasChanged:()=>!0})],E.prototype,"cameraOrbit",void 0),rE([rp({intrinsics:rk,observeEffects:!0,updateHandler:r6}),ev({type:String,attribute:"camera-target",hasChanged:()=>!0})],E.prototype,"cameraTarget",void 0),rE([rp({intrinsics:rQ,observeEffects:!0,updateHandler:r5}),ev({type:String,attribute:"field-of-view",hasChanged:()=>!0})],E.prototype,"fieldOfView",void 0),rE([rp({intrinsics:rT,updateHandler:r7}),ev({type:String,attribute:"min-camera-orbit",hasChanged:()=>!0})],E.prototype,"minCameraOrbit",void 0),rE([rp({intrinsics:rD,updateHandler:se}),ev({type:String,attribute:"max-camera-orbit",hasChanged:()=>!0})],E.prototype,"maxCameraOrbit",void 0),rE([rp({intrinsics:rR,updateHandler:st}),ev({type:String,attribute:"min-field-of-view",hasChanged:()=>!0})],E.prototype,"minFieldOfView",void 0),rE([rp({intrinsics:rQ,updateHandler:si}),ev({type:String,attribute:"max-field-of-view",hasChanged:()=>!0})],E.prototype,"maxFieldOfView",void 0),rE([ev({type:Number,attribute:"interaction-prompt-threshold"})],E.prototype,"interactionPromptThreshold",void 0),rE([ev({type:String,attribute:"interaction-prompt"})],E.prototype,"interactionPrompt",void 0),rE([ev({type:String,attribute:"interaction-prompt-style"})],E.prototype,"interactionPromptStyle",void 0),rE([ev({type:Number,attribute:"orbit-sensitivity"})],E.prototype,"orbitSensitivity",void 0),rE([ev({type:Number,attribute:"zoom-sensitivity"})],E.prototype,"zoomSensitivity",void 0),rE([ev({type:Number,attribute:"pan-sensitivity"})],E.prototype,"panSensitivity",void 0),rE([ev({type:String,attribute:"touch-action"})],E.prototype,"touchAction",void 0),rE([ev({type:Boolean,attribute:"disable-zoom"})],E.prototype,"disableZoom",void 0),rE([ev({type:Boolean,attribute:"disable-pan"})],E.prototype,"disablePan",void 0),rE([ev({type:Boolean,attribute:"disable-tap"})],E.prototype,"disableTap",void 0),rE([ev({type:Number,attribute:"interpolation-decay"})],E.prototype,"interpolationDecay",void 0),rE([ev()],E.prototype,"a11y",void 0),E})((e=>{var t,i,a,r,s,n,o,A,l,h;class c extends e{constructor(){super(...arguments),this.ar=!1,this.arScale="auto",this.arUsdzMaxTextureSize="auto",this.arPlacement="floor",this.arModes="webxr scene-viewer quick-look",this.iosSrc=null,this.xrEnvironment=!1,this[t]=!1,this[i]=this.shadowRoot.querySelector(".ar-button"),this[a]=document.createElement("a"),this[r]=new Set,this[s]=lv.NONE,this[n]=!1,this[o]=e=>{e.preventDefault(),this.activateAR()},this[A]=({status:e})=>{(e===sm.NOT_PRESENTING||this[An].arRenderer.presentedScene===this[At])&&(this.setAttribute("ar-status",e),this.dispatchEvent(new CustomEvent("ar-status",{detail:{status:e}})),e===sm.NOT_PRESENTING?this.removeAttribute("ar-tracking"):e===sm.SESSION_STARTED&&this.setAttribute("ar-tracking",sb.TRACKING))},this[l]=({status:e})=>{this.setAttribute("ar-tracking",e),this.dispatchEvent(new CustomEvent("ar-tracking",{detail:{status:e}}))},this[h]=e=>{"_apple_ar_quicklook_button_tapped"==e.data&&this.dispatchEvent(new CustomEvent("quick-look-button-tapped"))}}get canActivateAR(){return this[lT]!==lv.NONE}connectedCallback(){super.connectedCallback(),null!=this[An].arRenderer&&(this[An].arRenderer.addEventListener("status",this[lP]),this.setAttribute("ar-status",sm.NOT_PRESENTING),this[An].arRenderer.addEventListener("tracking",this[lU])),this[l
623k].addEventListener("message",this[l_])}disconnectedCallback(){super.disconnectedCallback(),null!=this[An].arRenderer&&(this[An].arRenderer.removeEventListener("status",this[lP]),this[An].arRenderer.removeEventListener("tracking",this[lU])),this[lk].removeEventListener("message",this[l_])}update(e){super.update(e),e.has("arScale")&&(this[At].canScale="fixed"!==this.arScale),e.has("arPlacement")&&(this[At].updateShadow(),this[Ai]()),e.has("arModes")&&(this[lD]=lw(this.arModes)),(e.has("ar")||e.has("arModes")||e.has("src")||e.has("iosSrc")||e.has("arUsdzMaxTextureSize"))&&this[lN]()}async activateAR(){switch(this[lT]){case lv.QUICK_LOOK:await this[lR]();break;case lv.WEBXR:await this[lS]();break;case lv.SCENE_VIEWER:await this[lQ]();break;default:console.warn("No AR Mode can be activated. This is probably due to missing configuration or device capabilities")}}async [(t=lM,i=lx,a=lk,r=lD,s=lT,n=lF,o=lL,A=lP,l=lU,h=l_,lN)](){var e;let t=lv.NONE;if(this.ar){if(null!=this.src)for(let i of this[lD]){if("webxr"===i&&tn&&!lC&&await this[An].arRenderer.supportsPresentation()){t=lv.WEBXR;break}if("scene-viewer"===i&&!ly&&(tp||navigator.userAgentData&&navigator.userAgentData.getHighEntropyValues&&(null==(e=(await navigator.userAgentData.getHighEntropyValues(["formFactor"])).formFactor)?void 0:e.includes("XR")))){t=lv.SCENE_VIEWER;break}if("quick-look"===i&&tf&&!tu&&(!tg||null!=this.iosSrc)){t=lv.QUICK_LOOK;break}}t===lv.NONE&&null!=this.iosSrc&&tf&&!tu&&(t=lv.QUICK_LOOK)}if(t!==lv.NONE)this[lx].classList.add("enabled"),this[lx].addEventListener("click",this[lL]);else if(this[lx].classList.contains("enabled")){this[lx].removeEventListener("click",this[lL]),this[lx].classList.remove("enabled");let e=sm.FAILED;this.setAttribute("ar-status",e),this.dispatchEvent(new CustomEvent("ar-status",{detail:{status:e}}))}this[lT]=t}async [lS](){console.log("Attempting to present in AR with WebXR..."),await this[lO]();try{this[lx].removeEventListener("click",this[lL]);let{arRenderer:e}=this[An];e.placeOnWall="wall"===this.arPlacement,await e.present(this[At],this.xrEnvironment)}catch(e){console.warn("Error while trying to present in AR with WebXR"),console.error(e),await this[An].arRenderer.stopPresenting(),lC=!0,console.warn("Falling back to next ar-mode"),await this[lN](),this.activateAR()}finally{this[lN]()}}async [lO](){this.loaded||(this[lF]=!0,this[o4](),await ((e,t,i=null)=>new Promise(a=>{e.addEventListener(t,function r(s){(!i||i(s))&&(a(s),e.removeEventListener(t,r))})}))(this,"load"),this[lF]=!1)}[Ah](){return super[Ah]()||this[lF]}async [lQ](){let e=self.location.toString(),t=new URL(e),i=Array.from(this.querySelectorAll("extra-model")).map(e=>e.src).filter(e=>null!=e),a=this.src||i[0]||null;if(!a)return void console.warn("No src or extra-model provided for Scene Viewer fallback.");let r=new URL(a,e);r.hash&&(r.hash="");
623let s=new URLSearchParams(r.search);if(t.hash=lB,s.set("mode","ar_preferred"),s.has("disable_occlusion")||s.set("disable_occlusion","true"),"fixed"===this.arScale&&s.set("resizable","false"),"wall"===this.arPlacement&&s.set("enable_vertical_placement","true"),s.has("sound")){let t=new URL(s.get("sound"),e);s.set("sound",t.toString())}if(s.has("link")){let t=new URL(s.get("link"),e);s.set("link",t.toString())}let n=`intent://arvr.google.com/scene-viewer/1.2?${s.toString()+"&file="+encodeURIComponent(r.toString())}#Intent;scheme=https;package=com.google.android.googlequicksearchbox;action=android.intent.action.VIEW;S.browser_fallback_url=${encodeURIComponent(t.toString())};end;`,o=()=>{self.location.hash===lB&&(ly=!0,self.history.back(),console.warn("Error while trying to present in AR with Scene Viewer"),console.warn("Falling back to next ar-mode"),this[lN]())};self.addEventListener("hashchange",o,{once:!0}),this[lk].setAttribute("href",n),console.log("Attempting to present in AR with Scene Viewer..."),this[lk].click()}async [lR](){let e=!this.iosSrc;this[lx].classList.remove("enabled");let t=e?await this.prepareUSDZ():this.iosSrc,i=new URL(t,self.location.toString());if(e){let e=new URL(self.location.toString()),t=Array.from(this.querySelectorAll("extra-model")).map(e=>e.src).filter(e=>null!=e),a=this.src||t[0]||null;if(a){let t=new URL(a,e);t.hash&&(i.hash=t.hash)}}"fixed"===this.arScale&&(i.hash&&(i.hash+="&"),i.hash+="allowsContentScaling=0");let a=this[lk];a.setAttribute("rel","ar");let r=document.createElement("img");a.appendChild(r),a.setAttribute("href",i.toString()),e&&a.setAttribute("download","model.usdz"),a.style.display="none",a.isConnected||this.shadowRoot.appendChild(a),console.log("Attempting to present in AR with Quick Look..."),a.click(),a.removeChild(r),e&&URL.revokeObjectURL(t),this[lx].classList.add("enabled")}async prepareUSDZ(){let e=this[Ao].beginActivity("usdz-conversion");await this[lO]();let{models:t,shadow:i,target:a}=this[At];if(0===t.length||null==t[0])return"";let r=!1;null!=i&&(r=i.visible,i.visible=!1),e(.2);let s=new lc,n=new tr.B69;for(let e of(n.position.copy(a.position),t))a.remove(e),n.add(e);n.updateWorldMatrix(!1,!0);let o=await s.parseAsync(n,{maxTextureSize:isNaN(this.arUsdzMaxTextureSize)?1/0:Math.max(parseInt(this.arUsdzMaxTextureSize),16)});for(let e of t)n.remove(e),a.add(e);let A=new Blob([o],{type:"model/vnd.usdz+zip"}),l=URL.createObjectURL(A);return e(1),null!=i&&(i.visible=r),l}}return lI([ev({type:Boolean,attribute:"ar"})],c.prototype,"ar",void 0),lI([ev({type:String,attribute:"ar-scale"})],c.prototype,"arScale",void 0),lI([ev({type:String,attribute:"ar-usdz-max-texture-size"})],c.prototype,"arUsdzMaxTextureSize",void 0),lI([ev({type:String,attribute:"ar-placement"})],c.prototype,"arPlacement",void 0),lI([ev({type:String,attribute:"ar-modes"})],c.prototype,"arModes",void 0),lI([ev({type:String,attribute:"ios-src"})],c.prototype,"iosSrc",void 0),lI([ev({type:Boolean,attribute:"xr-environment"})],c.prototype,"xrEnvironment",void 0),c})((e=>{var t,i,a,r,s,n,o,A;class l extends e{static set dracoDecoderLocation(e){i0.setDRACODecoderLocation(e)}static get dracoDecoderLocation(){return i0.getDRACODecoderLocation()}static set ktx2TranscoderLocation(e){i0.setKTX2TranscoderLocation(e)}static get ktx2TranscoderLocation(){return i0.getKTX2TranscoderLocation()}static set meshoptDecoderLocation(e){i0.setMeshoptDecoderLocation(e)}static get meshoptDecoderLocation(){return i0.getMeshoptDecoderLocation()}static set lottieLoaderLocation(e){nr.singleton.textureUtils.lottieLoaderUrl=e}static get lottieLoaderLocation(){return nr.singleton.textureUtils.lottieLoaderUrl}static mapURLs(e){nr.singleton.loader[i$].manager.setURLModifier(e)}dismissPoster(){this.loaded?this[lJ]():(this[lV]=!0,this[o4]())}showPoster(){let e=this[lz];if(e.classList.contains("show"))return;e.classList.add("show"),this[o7].classList.remove("show");let t=this[lK];t.removeAttribute("tabindex"),t.removeAttribute("aria-hidden");let i=this.modelIsVisible;this[lY]=!1,this[o0](i)}getDimensions(){return this[At].updateBoundingBoxAndShadowIfDirty(),Ac(this[At].size)}getBoundingBoxCenter(){return this[At].updateBoundingBoxAndShadowIfDirty(),Ac(this[At].boundingBox.getCenter(new tr.Pq0))}constructor(...e){super(...e),this.poster=null,this.reveal=lq.AUTO,this.loading=lH.AUTO,this[t]=!1,this[i]=!1,this[a]=this.shadowRoot.querySelector(".slot.poster"),this[r]=this.shadowRoot.querySelector("#default-poster"),this[s]=this.shadowRoot.querySelector("#default-progress-bar > .bar"),this[n]=this[lK].getAttribute("aria-label"),this[o]=((e,t)=>{let i=null,a=(...a)=>{null==i&&(e(...a),i=self.setTimeout(()=>i=null,t))};return a.flush=()=>{null!=i&&(self.clearTimeout(i),i=null)},a})(e=>{let t=this[lj].parentNode;requestAnimationFrame(()=>{this[lj].style.transform=`scaleX(${e})`,0===e&&(t.removeChild(this[lj]),t.appendChild(this[lj])),this[lj].classList.toggle("hide",1===e)})}
623,100),this[A]=e=>{let t=e.detail.totalProgress,i=e.detail.reason;1===t&&(this[lW].flush(),this.loaded&&(this[lV]||this.reveal===lq.AUTO)&&this[lJ]()),this[lW](t),this.dispatchEvent(new CustomEvent("progress",{detail:{totalProgress:t,reason:i}}))};let l=self.ModelViewerElement||{},h=l.dracoDecoderLocation||"https://www.gstatic.com/draco/versioned/decoders/1.5.6/";i0.setDRACODecoderLocation(h);let c=l.ktx2TranscoderLocation||"https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/";i0.setKTX2TranscoderLocation(c),l.meshoptDecoderLocation&&i0.setMeshoptDecoderLocation(l.meshoptDecoderLocation);let d=l.lottieLoaderLocation||"https://cdn.jsdelivr.net/npm/[email protected]/examples/jsm/loaders/LottieLoader.js";null!=nr.singleton.textureUtils&&(nr.singleton.textureUtils.lottieLoaderUrl=d)}connectedCallback(){super.connectedCallback(),this.loaded||this.showPoster(),this[Ao].addEventListener("progress",this[lX])}disconnectedCallback(){super.disconnectedCallback(),this[Ao].removeEventListener("progress",this[lX])}async updated(e){super.updated(e),e.has("poster")&&null!=this.poster&&(this[lK].style.backgroundImage=`url(${this.poster})`),e.has("alt")&&this[lK].setAttribute("aria-label",this[o2]),(e.has("reveal")||e.has("loading"))&&this[o4]()}[(t=lY,i=lV,a=lz,r=lK,s=lj,n=l$,o=lW,A=lX,Ah)](){let e=Array.from(this.querySelectorAll("extra-model"));return!!(this.src||e.length>0)&&(this[lV]||this.loading===lH.EAGER||this.reveal===lq.AUTO&&this[oZ])}[lJ](){this[lV]=!1;let e=this[lz];if(!e.classList.contains("show"))return;e.classList.remove("show"),this[o7].classList.add("show");let t=this.modelIsVisible;this[lY]=!0,this[o0](t);let i=this.getRootNode();i&&i.activeElement===this&&this[o7].focus();let a=this[lK];a.setAttribute("aria-hidden","true"),a.tabIndex=-1,this.dispatchEvent(new CustomEvent("poster-dismissed"))}[Al](){return super[Al]()&&this[lY]}}return lG([ev({type:String})],l.prototype,"poster",void 0),lG([ev({type:String})],l.prototype,"reveal",void 0),lG([ev({type:String})],l.prototype,"loading",void 0),l})((e=>{var t;class i extends e{constructor(...e){super(e),this.autoplay=!1,this.animationName=void 0,this.animationCrossfadeDuration=300,this[t]=!0,this[At].subscribeMixerEvent("loop",e=>{let t=e.action._loopCount,i=e.action._clip.name,a=e.action._clip.uuid,r=this[At].markedAnimations.find(e=>e.name===i);if(r){this[At].updateAnimationLoop(r.name,r.loopMode,r.repetitionCount);let e=this[At].markedAnimations.filter(e=>e.name!==i);this[At].markedAnimations=e}this.dispatchEvent(new CustomEvent("loop",{detail:{count:t,name:i,uuid:a}}))}),this[At].subscribeMixerEvent("finished",e=>{if(this[At].appendedAnimations.includes(e.action._clip.name)){let t=this[At].appendedAnimations.filter(t=>t!==e.action._clip.name);this[At].appendedAnimations=t}else this[Ab]=!0;this.dispatchEvent(new CustomEvent("finished"))})}get availableAnimations(){return this.loaded?this[At].animationNames:[]}get duration(){return this[At].duration}get paused(){return this[At].isAllAnimationsPaused()}get currentTime(){return this[At].animationTime}get appendedAnimations(){return this[At].appendedAnimations}set currentTime(e){this[At].animationTime=e,this[Ai]()}get timeScale(){return this[At].animationTimeScale}set timeScale(e){this[At].animationTimeScale=e}pause(e){var t;if((null==e?void 0:e.modelIndex)==null&&this.paused)return;let i=null!=(t=null==e?void 0:e.modelIndex)?t:null;this[At].pauseAnimation(i),this.dispatchEvent(new CustomEvent("pause"))}play(e){var t;if(this.availableAnimations.length>0){let i=null!=(t=null==e?void 0:e.modelIndex)?t:null;this[At].unpauseAnimation(i),this[Ap](e),this.dispatchEvent(new CustomEvent("play"))}}appendAnimation(e,t){var i;this.availableAnimations.length>0&&(this[Ab]=!1,this[At].unpauseAnimation(null!=(i=null==t?void 0:t.modelIndex)?i:null),this[Af](e,t),this.dispatchEvent(new CustomEvent("append-animation")))}detachAnimation(e,t){var i;this.availableAnimations.length>0&&(this[Ab]=!1,this[At].unpauseAnimation(null!=(i=null==t?void 0:t.modelIndex)?i:null),this[Am](e,t),this.dispatchEvent(new CustomEvent("detach-animation")))}[(t=Ab,Ar)](){super[Ar](),this[At].pauseAnimation(),null!=this.animationName&&this[Ap](),this.autoplay&&this.play()}[Aa](e,t){super[Aa](e,t),!this.paused&&(this[Al]()||this[An].isPresenting)&&(this[At].updateAnimation(t/1e3),this[Ai]())}updated(e){super.updated(e),e.has("autoplay")&&this.autoplay&&this.play(),e.has("animationName")&&this[Ap]()}[Ap](e=AE){var t;let i=null!=(t=e.repetitions)?t:1/0,a=e.pingpong?tr.lc7:1===i?tr.G3T:tr.aMy;this[At].playAnimation(this.animationName,this.animationCrossfadeDuration/1e3,a,i,e.modelIndex),this[Ab]&&(this[At].updateAnimation(0),this[Ai]())}[Af](e="",t={}){var i;let a=Object.assign(Object.assign({},AI),t),r=null!=(i=a.repetitions)?i:1/0,s=a.pingpong?tr.lc7:1===r?tr.G3T:tr.aMy,n=!!t.repetitions||"pingpong"in t;this[At].appendAnimation(e||this.animationName,s,r,a.weight,a.timeScale,a.fade,a.warp,a.relativeWarp,a.time,n,a.modelIndex),this[Ab]&&(this[At].updateAnimation(0),this[Ai]())}[Am](e="",t={}){let i=Object.assign(Object.assign({},AC),t);this[At].detachAnimation(e||this.animationName,i.fade,i.modelIndex),this[Ab]&&(this[At].updateAnimation(0),this[Ai]())}}return Au([ev({type:Boolean})],i.prototype,"autoplay",void 0),Au([ev({type:String,attribute:"animation-name"})],i.prototype,"animationName",void 0),Au([ev({type:Number,attribute:"animation-crossfade-duration"})],i.prototype,"animationCrossfadeDuration",void 0),i})(Ag))))))));customElements.define("model-viewer",l3)}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.