@supersoniks/concorde 4.9.97-visual-stack.0 → 4.9.98-visual-stack.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-infos.json +1 -1
- package/concorde-3d.bundle.js +143 -143
- package/concorde-3d.es.js +1393 -1377
- package/concorde-core.bundle.js +1 -1
- package/concorde-core.es.js +1 -1
- package/concorde-hugging-face-infer.bundle.js +1 -1
- package/concorde-hugging-face-infer.es.js +1 -1
- package/concorde-shader.bundle.js +19 -19
- package/concorde-shader.es.js +2317 -2172
- package/concorde-webgpu.bundle.js +30 -30
- package/concorde-webgpu.es.js +2439 -2346
- package/dist/concorde-3d.bundle.js +143 -143
- package/dist/concorde-3d.es.js +1393 -1377
- package/dist/concorde-core.bundle.js +1 -1
- package/dist/concorde-core.es.js +1 -1
- package/dist/concorde-hugging-face-infer.bundle.js +1 -1
- package/dist/concorde-hugging-face-infer.es.js +1 -1
- package/dist/concorde-shader.bundle.js +19 -19
- package/dist/concorde-shader.es.js +2317 -2172
- package/dist/concorde-webgpu.bundle.js +30 -30
- package/dist/concorde-webgpu.es.js +2439 -2346
- package/dist/js/core/components/functional/3d/3d.js +11 -1
- package/dist/js/core/components/functional/3d/3d.js.map +1 -1
- package/dist/js/core/components/functional/3d/constants.js +2 -0
- package/dist/js/core/components/functional/3d/constants.js.map +1 -1
- package/dist/js/core/components/functional/3d/frame-source.js +22 -0
- package/dist/js/core/components/functional/3d/frame-source.js.map +1 -0
- package/dist/js/core/components/functional/3d/reload.js +3 -0
- package/dist/js/core/components/functional/3d/reload.js.map +1 -1
- package/dist/js/core/components/functional/shader/gl-runtime.js +152 -17
- package/dist/js/core/components/functional/shader/gl-runtime.js.map +1 -1
- package/dist/js/core/components/functional/shader/shader.js +55 -6
- package/dist/js/core/components/functional/shader/shader.js.map +1 -1
- package/dist/js/core/components/functional/shader/types.js.map +1 -1
- package/dist/js/core/components/functional/webgpu/webgpu.js +9 -0
- package/dist/js/core/components/functional/webgpu/webgpu.js.map +1 -1
- package/dist/js/core/utils/mediaRef.js +49 -0
- package/dist/js/core/utils/mediaRef.js.map +1 -1
- package/dist/types/core/components/functional/3d/3d.d.ts +7 -2
- package/dist/types/core/components/functional/3d/3d.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/constants.d.ts +1 -1
- package/dist/types/core/components/functional/3d/constants.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/frame-source.d.ts +23 -0
- package/dist/types/core/components/functional/3d/frame-source.d.ts.map +1 -0
- package/dist/types/core/components/functional/3d/reload.d.ts +3 -0
- package/dist/types/core/components/functional/3d/reload.d.ts.map +1 -1
- package/dist/types/core/components/functional/3d/types.d.ts +7 -0
- package/dist/types/core/components/functional/3d/types.d.ts.map +1 -1
- package/dist/types/core/components/functional/shader/gl-runtime.d.ts +20 -1
- package/dist/types/core/components/functional/shader/gl-runtime.d.ts.map +1 -1
- package/dist/types/core/components/functional/shader/shader.d.ts +14 -3
- package/dist/types/core/components/functional/shader/shader.d.ts.map +1 -1
- package/dist/types/core/components/functional/shader/types.d.ts +6 -0
- package/dist/types/core/components/functional/shader/types.d.ts.map +1 -1
- package/dist/types/core/components/functional/webgpu/webgpu.d.ts +4 -0
- package/dist/types/core/components/functional/webgpu/webgpu.d.ts.map +1 -1
- package/dist/types/core/utils/mediaRef.d.ts +19 -0
- package/dist/types/core/utils/mediaRef.d.ts.map +1 -1
- package/package.json +13 -1
- package/src/core/components/functional/3d/3d.md +12 -2
- package/src/core/components/functional/3d/3d.ts +12 -1
- package/src/core/components/functional/3d/constants.ts +2 -0
- package/src/core/components/functional/3d/frame-source.ts +30 -0
- package/src/core/components/functional/3d/reload.ts +6 -0
- package/src/core/components/functional/3d/types.ts +5 -0
- package/src/core/components/functional/shader/gl-runtime.ts +205 -24
- package/src/core/components/functional/shader/shader.md +10 -8
- package/src/core/components/functional/shader/shader.spec.ts +83 -3
- package/src/core/components/functional/shader/shader.ts +61 -6
- package/src/core/components/functional/shader/types.ts +3 -1
- package/src/core/components/functional/webgpu/webgpu.ts +9 -0
- package/src/core/utils/mediaRef.spec.ts +36 -0
- package/src/core/utils/mediaRef.ts +63 -0
- package/src/docs/_misc/visual-stack.md +18 -2
- package/src/docs/components/docs-demo-sources.ts +14 -0
- package/src/docs/docs.ts +1 -0
- package/src/docs/example/docs-3d-shader-live-demo.ts +98 -0
- package/src/docs/search/docs-search.json +2347 -877
- package/src/tsconfig.json +9 -0
- package/src/tsconfig.tsbuildinfo +1 -1
package/concorde-3d.bundle.js
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
* @license
|
|
3
3
|
* Copyright 2019 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
-
*/var ut,Pt;const ds=globalThis,Sa=ds.ShadowRoot&&(ds.ShadyCSS===void 0||ds.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Ma=Symbol(),
|
|
5
|
+
*/var ut,Pt;const ds=globalThis,Sa=ds.ShadowRoot&&(ds.ShadyCSS===void 0||ds.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,Ma=Symbol(),uc=new WeakMap;let hc=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==Ma)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(Sa&&e===void 0){const n=t!==void 0&&t.length===1;n&&(e=uc.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&uc.set(t,e))}return e}toString(){return this.cssText}};const kf=i=>new hc(typeof i=="string"?i:i+"",void 0,Ma),Bf=(i,...e)=>{const t=i.length===1?i[0]:e.reduce(((n,r,s)=>n+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(r)+i[s+1]),i[0]);return new hc(t,i,Ma)},zf=(i,e)=>{if(Sa)i.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const t of e){const n=document.createElement("style"),r=ds.litNonce;r!==void 0&&n.setAttribute("nonce",r),n.textContent=t.cssText,i.appendChild(n)}},fc=Sa?i=>i:i=>i instanceof CSSStyleSheet?(e=>{let t="";for(const n of e.cssRules)t+=n.cssText;return kf(t)})(i):i;/**
|
|
6
6
|
* @license
|
|
7
7
|
* Copyright 2017 Google LLC
|
|
8
8
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
9
|
-
*/const{is:Hf,defineProperty:Vf,getOwnPropertyDescriptor:Gf,getOwnPropertyNames:Wf,getOwnPropertySymbols:Xf,getPrototypeOf:$f}=Object,ps=globalThis,
|
|
9
|
+
*/const{is:Hf,defineProperty:Vf,getOwnPropertyDescriptor:Gf,getOwnPropertyNames:Wf,getOwnPropertySymbols:Xf,getPrototypeOf:$f}=Object,ps=globalThis,dc=ps.trustedTypes,jf=dc?dc.emptyScript:"",qf=ps.reactiveElementPolyfillSupport,Dr=(i,e)=>i,ms={toAttribute(i,e){switch(e){case Boolean:i=i?jf:null;break;case Object:case Array:i=i==null?i:JSON.stringify(i)}return i},fromAttribute(i,e){let t=i;switch(e){case Boolean:t=i!==null;break;case Number:t=i===null?null:Number(i);break;case Object:case Array:try{t=JSON.parse(i)}catch{t=null}}return t}},Ea=(i,e)=>!Hf(i,e),pc={attribute:!0,type:String,converter:ms,reflect:!1,useDefault:!1,hasChanged:Ea};Symbol.metadata??=Symbol("metadata"),ps.litPropertyMetadata??=new WeakMap;let Hi=class 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=pc){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){const n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&Vf(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){const{get:r,set:s}=Gf(this.prototype,e)??{get(){return this[t]},set(a){this[t]=a}};return{get:r,set(a){const o=r?.call(this);s?.call(this,a),this.requestUpdate(e,o,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??pc}static _$Ei(){if(this.hasOwnProperty(Dr("elementProperties")))return;const e=$f(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Dr("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Dr("properties"))){const t=this.properties,n=[...Wf(t),...Xf(t)];for(const r of n)this.createProperty(r,t[r])}const e=this[Symbol.metadata];if(e!==null){const t=litPropertyMetadata.get(e);if(t!==void 0)for(const[n,r]of t)this.elementProperties.set(n,r)}this._$Eh=new Map;for(const[t,n]of this.elementProperties){const r=this._$Eu(t,n);r!==void 0&&this._$Eh.set(r,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const n=new Set(e.flat(1/0).reverse());for(const r of n)t.unshift(fc(r))}else e!==void 0&&t.push(fc(e));return t}static _$Eu(e,t){const n=t.attribute;return n===!1?void 0:typeof n=="string"?n:typeof e=="string"?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=>e(this)))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return zf(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,n){this._$AK(e,n)}_$ET(e,t){const n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&n.reflect===!0){const s=(n.converter?.toAttribute!==void 0?n.converter:ms).toAttribute(t,n.type);this._$Em=e,s==null?this.removeAttribute(r):this.setAttribute(r,s),this._$Em=null}}_$AK(e,t){const n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){const s=n.getPropertyOptions(r),a=typeof s.converter=="function"?{fromAttribute:s.converter}:s.converter?.fromAttribute!==void 0?s.converter:ms;this._$Em=r;const o=a.fromAttribute(t,s.type);this[r]=o??this._$Ej?.get(r)??o,this._$Em=null}}requestUpdate(e,t,n){if(e!==void 0){const r=this.constructor,s=this[e];if(n??=r.getPropertyOptions(e),!((n.hasChanged??Ea)(s,t)||n.useDefault&&n.reflect&&s===this._$Ej?.get(e)&&!this.hasAttribute(r._$Eu(e,n))))return;this.C(e,t,n)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:s},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),s!==!0||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),r===!0&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[r,s]of this._$Ep)this[r]=s;this._$Ep=void 0}const n=this.constructor.elementProperties;if(n.size>0)for(const[r,s]of n){const{wrapped:a}=s,o=this[r];a!==!0||this._$AL.has(r)||o===void 0||this.C(r,void 0,s,o)}}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((n=>n.hostUpdate?.())),this.update(t)):this._$EM()}catch(n){throw e=!1,this._$EM(),n}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((t=>t.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((t=>this._$ET(t,this[t]))),this._$EM()}updated(e){}firstUpdated(e){}};Hi.elementStyles=[],Hi.shadowRootOptions={mode:"open"},Hi[Dr("elementProperties")]=new Map,Hi[Dr("finalized")]=new Map,qf?.({ReactiveElement:Hi}),(ps.reactiveElementVersions??=[]).push("2.1.1");/**
|
|
10
10
|
* @license
|
|
11
11
|
* Copyright 2017 Google LLC
|
|
12
12
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
13
|
-
*/const Ta=globalThis,gs=Ta.trustedTypes,
|
|
14
|
-
\f\r]`,Ur=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,
|
|
15
|
-
\f\r"'\`<>=]|("|')|))|$)`,"g"),
|
|
13
|
+
*/const Ta=globalThis,gs=Ta.trustedTypes,mc=gs?gs.createPolicy("lit-html",{createHTML:i=>i}):void 0,gc="$lit$",ti=`lit$${Math.random().toFixed(9).slice(2)}$`,_c="?"+ti,Yf=`<${_c}>`,yi=document,Lr=()=>yi.createComment(""),Ir=i=>i===null||typeof i!="object"&&typeof i!="function",wa=Array.isArray,Kf=i=>wa(i)||typeof i?.[Symbol.iterator]=="function",Aa=`[
|
|
14
|
+
\f\r]`,Ur=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,vc=/-->/g,yc=/>/g,xi=RegExp(`>|${Aa}(?:([^\\s"'>=/]+)(${Aa}*=${Aa}*(?:[^
|
|
15
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),xc=/'/g,bc=/"/g,Sc=/^(?:script|style|textarea|title)$/i,Zf=i=>(e,...t)=>({_$litType$:i,strings:e,values:t}),Mc=Zf(1),Vi=Symbol.for("lit-noChange"),kt=Symbol.for("lit-nothing"),Ec=new WeakMap,bi=yi.createTreeWalker(yi,129);function Tc(i,e){if(!wa(i)||!i.hasOwnProperty("raw"))throw Error("invalid template strings array");return mc!==void 0?mc.createHTML(e):e}const Jf=(i,e)=>{const t=i.length-1,n=[];let r,s=e===2?"<svg>":e===3?"<math>":"",a=Ur;for(let o=0;o<t;o++){const l=i[o];let c,h,u=-1,f=0;for(;f<l.length&&(a.lastIndex=f,h=a.exec(l),h!==null);)f=a.lastIndex,a===Ur?h[1]==="!--"?a=vc:h[1]!==void 0?a=yc:h[2]!==void 0?(Sc.test(h[2])&&(r=RegExp("</"+h[2],"g")),a=xi):h[3]!==void 0&&(a=xi):a===xi?h[0]===">"?(a=r??Ur,u=-1):h[1]===void 0?u=-2:(u=a.lastIndex-h[2].length,c=h[1],a=h[3]===void 0?xi:h[3]==='"'?bc:xc):a===bc||a===xc?a=xi:a===vc||a===yc?a=Ur:(a=xi,r=void 0);const d=a===xi&&i[o+1].startsWith("/>")?" ":"";s+=a===Ur?l+Yf:u>=0?(n.push(c),l.slice(0,u)+gc+l.slice(u)+ti+d):l+ti+(u===-2?o:d)}return[Tc(i,s+(i[t]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),n]};class Nr{constructor({strings:e,_$litType$:t},n){let r;this.parts=[];let s=0,a=0;const o=e.length-1,l=this.parts,[c,h]=Jf(e,t);if(this.el=Nr.createElement(c,n),bi.currentNode=this.el.content,t===2||t===3){const u=this.el.content.firstChild;u.replaceWith(...u.childNodes)}for(;(r=bi.nextNode())!==null&&l.length<o;){if(r.nodeType===1){if(r.hasAttributes())for(const u of r.getAttributeNames())if(u.endsWith(gc)){const f=h[a++],d=r.getAttribute(u).split(ti),_=/([.?@])?(.*)/.exec(f);l.push({type:1,index:s,name:_[2],strings:d,ctor:_[1]==="."?ed:_[1]==="?"?td:_[1]==="@"?nd:_s}),r.removeAttribute(u)}else u.startsWith(ti)&&(l.push({type:6,index:s}),r.removeAttribute(u));if(Sc.test(r.tagName)){const u=r.textContent.split(ti),f=u.length-1;if(f>0){r.textContent=gs?gs.emptyScript:"";for(let d=0;d<f;d++)r.append(u[d],Lr()),bi.nextNode(),l.push({type:2,index:++s});r.append(u[f],Lr())}}}else if(r.nodeType===8)if(r.data===_c)l.push({type:2,index:s});else{let u=-1;for(;(u=r.data.indexOf(ti,u+1))!==-1;)l.push({type:7,index:s}),u+=ti.length-1}s++}}static createElement(e,t){const n=yi.createElement("template");return n.innerHTML=e,n}}function Gi(i,e,t=i,n){if(e===Vi)return e;let r=n!==void 0?t._$Co?.[n]:t._$Cl;const s=Ir(e)?void 0:e._$litDirective$;return r?.constructor!==s&&(r?._$AO?.(!1),s===void 0?r=void 0:(r=new s(i),r._$AT(i,t,n)),n!==void 0?(t._$Co??=[])[n]=r:t._$Cl=r),r!==void 0&&(e=Gi(i,r._$AS(i,e.values),r,n)),e}class Qf{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){const{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??yi).importNode(t,!0);bi.currentNode=r;let s=bi.nextNode(),a=0,o=0,l=n[0];for(;l!==void 0;){if(a===l.index){let c;l.type===2?c=new Or(s,s.nextSibling,this,e):l.type===1?c=new l.ctor(s,l.name,l.strings,this,e):l.type===6&&(c=new id(s,this,e)),this._$AV.push(c),l=n[++o]}a!==l?.index&&(s=bi.nextNode(),a++)}return bi.currentNode=yi,r}p(e){let t=0;for(const n of this._$AV)n!==void 0&&(n.strings!==void 0?(n._$AI(e,n,t),t+=n.strings.length-2):n._$AI(e[t])),t++}}class Or{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=kt,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=Gi(this,e,t),Ir(e)?e===kt||e==null||e===""?(this._$AH!==kt&&this._$AR(),this._$AH=kt):e!==this._$AH&&e!==Vi&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Kf(e)?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!==kt&&Ir(this._$AH)?this._$AA.nextSibling.data=e:this.T(yi.createTextNode(e)),this._$AH=e}$(e){const{values:t,_$litType$:n}=e,r=typeof n=="number"?this._$AC(e):(n.el===void 0&&(n.el=Nr.createElement(Tc(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{const s=new Qf(r,this),a=s.u(this.options);s.p(t),this.T(a),this._$AH=s}}_$AC(e){let t=Ec.get(e.strings);return t===void 0&&Ec.set(e.strings,t=new Nr(e)),t}k(e){wa(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let n,r=0;for(const s of e)r===t.length?t.push(n=new Or(this.O(Lr()),this.O(Lr()),this,this.options)):n=t[r],n._$AI(s),r++;r<t.length&&(this._$AR(n&&n._$AB.nextSibling,r),t.length=r)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){const n=e.nextSibling;e.remove(),e=n}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}}class _s{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,s){this.type=1,this._$AH=kt,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=s,n.length>2||n[0]!==""||n[1]!==""?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=kt}_$AI(e,t=this,n,r){const s=this.strings;let a=!1;if(s===void 0)e=Gi(this,e,t,0),a=!Ir(e)||e!==this._$AH&&e!==Vi,a&&(this._$AH=e);else{const o=e;let l,c;for(e=s[0],l=0;l<s.length-1;l++)c=Gi(this,o[n+l],t,l),c===Vi&&(c=this._$AH[l]),a||=!Ir(c)||c!==this._$AH[l],c===kt?e=kt:e!==kt&&(e+=(c??"")+s[l+1]),this._$AH[l]=c}a&&!r&&this.j(e)}j(e){e===kt?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class ed extends _s{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===kt?void 0:e}}class td extends _s{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==kt)}}class nd extends _s{constructor(e,t,n,r,s){super(e,t,n,r,s),this.type=5}_$AI(e,t=this){if((e=Gi(this,e,t,0)??kt)===Vi)return;const n=this._$AH,r=e===kt&&n!==kt||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,s=e!==kt&&(n===kt||r);r&&this.element.removeEventListener(this.name,this,n),s&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class id{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){Gi(this,e)}}const rd=Ta.litHtmlPolyfillSupport;rd?.(Nr,Or),(Ta.litHtmlVersions??=[]).push("3.3.1");const sd=(i,e,t)=>{const n=t?.renderBefore??e;let r=n._$litPart$;if(r===void 0){const s=t?.renderBefore??null;n._$litPart$=r=new Or(e.insertBefore(Lr(),s),s,void 0,t??{})}return r._$AI(i),r};/**
|
|
16
16
|
* @license
|
|
17
17
|
* Copyright 2017 Google LLC
|
|
18
18
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
@@ -28,18 +28,18 @@
|
|
|
28
28
|
* @license
|
|
29
29
|
* Copyright 2017 Google LLC
|
|
30
30
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
31
|
-
*/function ud(i){return wt({...i,state:!0,attribute:!1})}const Ca="1";function hd(i){const e=i.trim();if(!e)return!1;try{const t=new URL(e,"https://example.invalid/");return t.protocol==="http:"||t.protocol==="https:"||t.protocol==="blob:"}catch{return!1}}let zn=class qt{static getLanguage(){const e=document.documentElement.lang;return localStorage.getItem("SonicSelectedLanguage")||e}static getCookies(){return document.cookie.split(";").reduce((e,t)=>{const n=t.indexOf("=");return e[t.substring(0,n).trim()]=t.substring(n+1),e},{})}static nextComposedAncestor(e){return e instanceof Element&&e.assignedSlot?e.assignedSlot:e.parentNode||e.host||null}static everyAncestors(e,t){let n=e;for(;n;){if(!t(n))return;n=n.parentNode||n.host}}static overflowMatches(e,t){return t.includes(e.overflowY)||t.includes(e.overflowX)}static findAncestorByOverflow(e,t){let n=e;for(;n;){if(n instanceof Element&&n.nodeType===1){const r=window.getComputedStyle(n);if(qt.overflowMatches(r,t))return n}n=qt.nextComposedAncestor(n)}return null}static getScrollableAncestor(e){return qt.findAncestorByOverflow(e,["auto","scroll","hidden","overlay"])}static getScrollingAncestor(e){return qt.findAncestorByOverflow(e,["auto","scroll","overlay"])}static scopeAttributeNames(e){const t=e.toLowerCase();return t===e?[e]:[e,t]}static readScopeAttributeOnElement(e,t){for(const n of qt.scopeAttributeNames(t))if(e.hasAttribute(n))return e.getAttribute(n)??"";return null}static getAncestorAttributeValue(e,t){if(!e)return null;let n=e;for(;n;){if(n instanceof HTMLElement){const s=qt.readScopeAttributeOnElement(n,t);if(s!=null)return s}const r=n.parentNode||n.host;if(!r)break;n=r}return null}static getApiConfiguration(e){const t=qt.getAncestorAttributeValue(e,"token"),n=qt.getAncestorAttributeValue(e,"addHTTPResponse")!=null,r=qt.getAncestorAttributeValue(e,"serviceURL");let s=null,a=null;const o=qt.getAncestorAttributeValue(e,"tokenProvider"),l=qt.getAncestorAttributeValue(e,"eventsApiToken");t||(s=qt.getAncestorAttributeValue(e,"userName"),a=qt.getAncestorAttributeValue(e,"password"));const c=qt.getAncestorAttributeValue(e,"credentials")||void 0,h=e.getAttribute("cache"),u=e.hasAttribute("blockUntilDone"),f=e.hasAttribute("keepAlive");return{serviceURL:r,token:t,userName:s,password:a,authToken:l,tokenProvider:o,addHTTPResponse:n,credentials:c,cache:h,blockUntilDone:u,keepAlive:f}}static getClosestElement(e,t){let n=e;for(;n&&!(n.nodeName&&n.nodeName.toLowerCase()===t);){const r=n.parentNode||n.host;if(!r){n=null;break}n=r}return n?.nodeName?n:null}static getClosestForm(e){return qt.getClosestElement(e,"form")}static getAncestorsByTagNames(e,t){const n=new Set(t.map(a=>a.toLowerCase())),r=[];let s=e.parentNode||e.host;for(;s;)s instanceof Element&&n.has(s.tagName.toLowerCase())&&r.push(s),s=s.parentNode||s.host;return r}static getAncestorsBySelectors(e,t){const n=[];let r=e.parentNode||e.host;for(;r;){if(r instanceof Element)for(const s of t)try{if(r.matches(s)){n.push(r);break}}catch{}r=r.parentNode||r.host}return n}static async loadJS(e){if(!hd(e))return!1;const t=typeof document<"u"?new URL(e,document.baseURI).href:e,n=Array.from(document.scripts).find(s=>s.src===t);if(n)return n.dataset.concordeLoaded===Ca?!0:new Promise(s=>{let a=!1;const o=c=>{a||(a=!0,c&&(n.dataset.concordeLoaded=Ca),s(c))};n.addEventListener("load",()=>o(!0),{once:!0}),n.addEventListener("error",()=>o(!1),{once:!0});const l=n.readyState;if(l==="complete"||l==="loaded"){o(!0);return}Promise.resolve().then(()=>{Promise.resolve().then(()=>{a||o(!0)})})});const r=/\.es\.js(\?|#|$)/.test(e)||/[?&]module(?:&|=|$)/.test(e);return new Promise(s=>{const a=document.createElement("script");a.src=e,r&&(a.type="module"),a.onload=()=>{a.dataset.concordeLoaded=Ca,s(!0)},a.onerror=()=>s(!1),document.head.appendChild(a)})}static async loadCSS(e){return new Promise(t=>{const n=document.createElement("link");n.type="text/css",n.rel="stylesheet",n.href=e,n.onload=()=>t(!0),n.onerror=()=>t(!0),document.head.appendChild(n)})}};const gn={Orbit:"orbit",Perspective:"perspective",Ortho:"ortho"},Pa=1e-4,Tc=80,fd=16,wc=250,dd=80,Ac="image/jpeg",pd=.85,vs=45,Da=1,Rc=.5,Cc=50,Pc=8,md=172,Dc=Pc*Math.PI/180,gd=["src","asset","camera","fov","exposure","autoRotate","minDistance","maxDistance","minPolar","maxPolar"],_d=["time","frame","ready","loading","hovering","pointerX","pointerY","camX","camY","camZ","targetX","targetY","targetZ","zoom","hitX","hitY","hitZ","hitObjectId","frameUrl","snapshot"];function La(i){return typeof i!="string"?null:i.trim()||null}function vd(i){if(i==null||i==="")return null;if(typeof i=="string")return La(i);if(typeof i!="object")return null;const e=i;return La(e.url)??La(e.blobUrl)}function Ia(i){for(const e of i)try{URL.revokeObjectURL(e)}catch{}}const yd=["gltf","glb","obj","ply","url"];function Ua(i){const e=i.split("?")[0].toLowerCase();return e.endsWith(".glb")?"glb":e.endsWith(".gltf")?"gltf":e.endsWith(".obj")?"obj":e.endsWith(".ply")?"ply":"url"}function xd(i){const e=(i??"").trim().toLowerCase();return e===gn.Perspective||e===gn.Ortho||e===gn.Orbit?e:gn.Orbit}function bd(i){if(i==null||i==="")return null;if(typeof i=="string"){const c=i.trim();return c?{kind:Ua(c),url:c}:null}if(typeof i!="object")return null;const e=i,t=vd(e),r=(typeof e.url=="string"?e.url.trim():"")||t||"",s=e.blob instanceof Blob?e.blob:void 0;if(!r&&!s)return null;const a=typeof e.kind=="string"?e.kind.trim().toLowerCase():"";let o;yd.includes(a)?o=a:r?o=Ua(r):o="url";const l={kind:o};return r&&(l.url=r),s&&(l.blob=s),e.morphTargets&&typeof e.morphTargets=="object"&&(l.morphTargets=e.morphTargets),l}function Sd(i,e){if(typeof i=="number"&&Number.isFinite(i))return i;if(typeof i=="string"&&i.trim()!==""){const t=Number(i);if(Number.isFinite(t))return t}return e}function Md(i){return i===!0||i===1||i==="1"||i==="true"||i==="on"}const It={cameraMode:xd,asset:bd,guessKind:Ua,toNum:Sd,isFormFlagOn:Md};function Ed(i,e){if(i.asset?.url||i.asset?.blob)return i.asset;const t=It.asset(i.src);if(t)return t;const n=e?.get()??{};if("asset"in n){const r=It.asset(n.asset);if(r)return r}return"src"in n?It.asset(n.src):null}const Lc={resolve:Ed};function Na(){return typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches}function Ic(i){return!i.play||!i.ready||!i.inView||!i.runtime||Na()?!1:i.playOnHover?i.hovering:!0}function Uc(i){const e=i.autoRotate&&i.play&&!Na()&&(!i.playOnHover||i.hovering);i.runtime?.setAutoRotate(!!e)}function Nc(i){i.raf&&(cancelAnimationFrame(i.raf),i.raf=0)}function Td(i,e){i.raf||(i.raf=requestAnimationFrame(e))}function wd(i,e){Uc(i),Ic(i)?Td(i,e):(Nc(i),i.ready&&i.runtime?.render())}const Hn={prefersReducedMotion:Na,shouldAnimate:Ic,syncAutoRotate:Uc,syncPlayback:wd,stopLoop:Nc};function Oa(i){return(Number.isFinite(i)?i:0)*Math.PI/180}async function Ad(i){if(!i.runtime)return;const e=++i.loadToken;i.errorMessage="";try{if(await i.runtime.load(Lc.resolve(i,i.formPublisher)),e!==i.loadToken)return;i.ready=!0,i.startTime=performance.now(),i.frame=0,i.lastFormOrbit=null,i.onFormMutation(),Hn.syncAutoRotate(i),i.runtime.render(),i.syncPlayback(),i.dispatchEvent(new CustomEvent("ready",{detail:{ready:!0},bubbles:!0,composed:!0}))}catch(t){if(e!==i.loadToken)return;i.ready=!!i.runtime?.ready,Oc(i,t),i.syncPlayback()}}function Rd(i){i.runtime?.setOrbitLimits({minDistance:i.minDistance,maxDistance:i.maxDistance,minPolar:Oa(i.minPolar),maxPolar:Oa(i.maxPolar)})}function Oc(i,e){const t=e instanceof Error?e.message:String(e);i.errorMessage=t,i.dispatchEvent(new CustomEvent("error",{detail:{message:t},bubbles:!0,composed:!0}))}const An={run:Ad,applyOrbitLimits:Rd,emitError:Oc,degToRad:Oa};function Cd(i,e){"fov"in e&&(i.fov=It.toNum(e.fov,i.fov)),"exposure"in e&&(i.exposure=It.toNum(e.exposure,i.exposure)),"minDistance"in e&&(i.minDistance=It.toNum(e.minDistance,i.minDistance)),"maxDistance"in e&&(i.maxDistance=It.toNum(e.maxDistance,i.maxDistance)),"minPolar"in e&&(i.minPolar=It.toNum(e.minPolar,i.minPolar)),"maxPolar"in e&&(i.maxPolar=It.toNum(e.maxPolar,i.maxPolar)),"autoRotate"in e&&(i.autoRotate=It.isFormFlagOn(e.autoRotate)),"camera"in e&&typeof e.camera=="string"&&(i.camera=It.cameraMode(e.camera))}function Pd(i,e){let t=!1;if("asset"in e){const n=It.asset(e.asset);n&&(i.asset=n,t=!0)}return"src"in e&&typeof e.src=="string"&&!("asset"in e)&&i.src!==e.src&&(i.src=e.src,t=!0),t}function Dd(i){return"minDistance"in i||"maxDistance"in i||"minPolar"in i||"maxPolar"in i||"camera"in i}function Ld(i,e){i.runtime&&("exposure"in e&&i.runtime.setExposure(i.exposure),"fov"in e&&i.runtime.setFov(i.fov),"camera"in e&&i.runtime.applyCameraMode(It.cameraMode(i.camera)),Dd(e)&&An.applyOrbitLimits(i),"autoRotate"in e&&Hn.syncAutoRotate(i))}const Fa={applyScalars:Cd,applyAsset:Pd,pushToRuntime:Ld};function Id(i,e){return i?Math.abs(i.yaw-e.yaw)>Pa||Math.abs(i.pitch-e.pitch)>Pa||Math.abs(i.distance-e.distance)>Pa:!0}function Ud(i,e){const t=i.runtime.snapshot({time:0,frame:i.frame,hovering:i.hovering?1:0,pointerX:i.pointerX,pointerY:i.pointerY});return{yaw:"yaw"in e?It.toNum(e.yaw,t.yaw):t.yaw,pitch:"pitch"in e?It.toNum(e.pitch,t.pitch):t.pitch,distance:"distance"in e?It.toNum(e.distance,t.distance):t.distance}}function Fc(i,e){if(!i.runtime||!("distance"in e||"yaw"in e||"pitch"in e))return;const t=Ud(i,e),n=i.lastFormOrbit;Id(n,t)&&(i.lastFormOrbit=t,i.autoRotate&&n&&(i.autoRotate=!1,Hn.syncAutoRotate(i)),i.runtime.setOrbitSpherical(t.yaw,t.pitch,t.distance),i.runtime.render())}function Nd(i,e){Fa.applyScalars(i,e);const t=Fa.applyAsset(i,e);if(!i.runtime){t&&An.run(i);return}Fa.pushToRuntime(i,e),Fc(i,e),t&&An.run(i)}const Od={applyFormParams:Nd,applyFormOrbit:Fc};function kc(i,e){const t=e?.trim();return t||zn.getAncestorAttributeValue(i,"dataProvider")||zn.getAncestorAttributeValue(i,"formDataProvider")||""}function Fd(i,e,t){const n=e?.trim();return n||kc(i,t)}const ka={resolveFormProviderId:kc,resolveOutProviderId:Fd,asset:Lc,formParams:Od};let kd=class{static async queueTaskPromise(){return new Promise(e=>{window.queueMicrotask(()=>e(null))})}static async delayPromise(e){return new Promise(t=>{setTimeout(t,e)})}},Bc="sonic";typeof __SONIC_PREFIX__<"u"&&(Bc=__SONIC_PREFIX__);let zc=Bc.replace(/-([a-z])/g,i=>i[1].toUpperCase());const Bd=zc.charAt(0).toUpperCase()+zc.slice(1);let zd=class zi{static areEqual(e,t){return e.length===t.length?e.every((n,r)=>n===t[r]):!1}static from2d(e){return{to1D:()=>{let t=[];return e.forEach(n=>t=t.concat(n)),this.from(t)}}}static from(e){return{get:()=>e||[],everyItem:()=>({has:()=>({same:()=>({value:()=>({forKey:t=>{if(e.length<1)return!0;const n=(e[0]||{})[t];return e.every(r=>(r||{})[t]==n)}})})}),value:()=>({forKey:t=>zi.from(e.map(n=>n[t]))}),copy:()=>({fromKey:t=>({toKey:n=>{e.forEach(r=>{r[n]=Array.isArray(r[t])?[...r[t]]:typeof r[t]=="object"&&r[t]!=null?{...r[t]}:r[t]})}})})}),map:t=>zi.from(e.map(t)),filter:t=>zi.from(e.filter(t)),find:t=>e.find(t),some:t=>e.some(t),every:t=>e.every(t),group:()=>({byKey:t=>{const n=[],r=new Map;for(const s of e){const a=s[t];if(!r.has(a)){const o=n.length;r.set(a,o);const l={items:[]};l[t]=a,n.push(l)}n[r.get(a)].items.push(s)}return zi.from(n)}}),without:()=>({duplicates:()=>({forKey:t=>{const n=[...new Set(e.map(r=>r[t]))];return zi.from(n.map(r=>e.find(s=>s[t]==r)))}}),itemsIn:t=>({havingSameValue:()=>({forKey:n=>{const r=(s,a)=>o=>s[a]!=o[a];return zi.from(e.filter(s=>t.every(r(s,n))))}})})})}}},Ba=class{static ucFirst(e){return typeof e!="string"?e:e.charAt(0).toUpperCase()+e.substring(1)}static minutesDuration(e,t="",n="long"){t||(t=zn.getLanguage());const r=(c,h)=>[Math.floor(c/h),c%h];function s(c,h,u){return new Intl.NumberFormat(c,{style:"unit",unit:h,unitDisplay:u}).format}const[a,o]=r(e,60),l=[];return a&&l.push(s(t,"hour",n)(a)),o&&l.push(s(t,"minute",n)(o)),new Intl.ListFormat(t,{style:"long",type:"conjunction"}).format(l)}static js(e){try{return Function("return "+e)()}catch{return""}}};class Hc{constructor(e){this.path=e}toString(){return this.path}}function Vc(i){return new Proxy(i,{get(e,t){if(t==="path")return e.path;if(t==="toString")return e.toString.bind(e);if(t===Symbol.toStringTag)return"DataProviderKey";if(typeof t=="symbol")return e[t];const n=e.path?`${e.path}.${String(t)}`:String(t);return Vc(new Hc(n))}})}const Hd=/\$\{|\{\$/;function Vd(i){return Hd.test(i)}function Gd(i){const e=i;if(Vd(e))throw new Error("Static publisher path required for get/set/dp. Use @subscribe, @publish, or @handle for dynamic DataProviderKey paths.");return e}const ys=function(i){return this instanceof ys?Vc(new Hc(i)):new ys(i)};let xs=class ei{static shallowEqual(e,t,n=!0){const r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length&&n)return!1;for(const a of r){const o=e[a],l=t[a];if(n?o!==l:o!=l)return!1}return!0}static deepEqual(e,t,n=!0){const r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length&&n)return!1;for(const a of r){const o=e[a],l=t[a],c=ei.isObject(o)&&ei.isObject(l),h=n?o!==l:o!=l;if(c&&!ei.deepEqual(o,l)||!c&&h)return!1}return!0}static isObject(e){return e!=null&&typeof e=="object"}static isUndefindOrNull(e){return e==null}static isEmpty(e){return ei.isUndefindOrNull(e)?!0:Object.keys(e).length===0}static traverse(e,t,n=!1){for(const r of t){const s=e[r];if(s===void 0)return;n&&ei.isObject(s)?e=Object.assign(Array.isArray(s)?[]:{},e,s):e=e[r]}return e}static traverseDotNotation(e,t,n=!1){return ei.traverse(e,t.split("."),n)}static getURLSearchArray(e,t=""){let n=[];for(let r in e){const s=e[r];t&&(r=t+"["+r+"]"),ei.isObject(s)?n=[...n,...this.getURLSearchArray(s,r)]:n.push(`${r}=${s}`)}return n}static getURLSearchString(e){return ei.getURLSearchArray(e,"").join("&")}};xs.traverseDotNotation;function Wd(i){return!1}function bs(i){return Object.prototype.hasOwnProperty.call(i,"__value")}function ni(i){return typeof i=="object"&&i!==null}let Wi="sonic";typeof __SONIC_PREFIX__>"u"&&(Wi="sonic");const za=Wi=="sonic"?"publisher-proxies-data":Wi+"-publisher-proxies-data",_i=class _i{constructor(e,t,n){for(this._proxies_=new Map,this._is_savable_=!1,this._expiration_delay_=1e3*60*60*12,this._invalidate_on_page_show_=!1,this._invalidateListeners_=new Set,this._formInvalidateListeners_=new Set,this._assignListeners_=new Set,this._mutationListeners_=new Set,this._fillListeners_=new Set,this._templateFillListeners_=new Set,this._lockInternalMutationPublishing_=!1,this._instanceCounter_=0,this._assignmentId_=0,this._value_=e,this.parent=t||null,this._parentKey_=n,this.root=this,this._instanceCounter_=0;this.root.parent;)this.root=this.root.parent}delete(){for(const e in this._proxies_.keys())e!="_parent_"&&this._proxies_.get(e)?.delete();this._invalidateListeners_.clear(),this._formInvalidateListeners_.clear(),this._assignListeners_.clear(),this._mutationListeners_.clear(),this._fillListeners_.clear(),this._templateFillListeners_.clear(),this._proxies_.clear(),_i.instances.delete(this._instanceCounter_)}hasListener(){return this._templateFillListeners_.size>0||this._assignListeners_.size>0||this._invalidateListeners_.size>0||this._formInvalidateListeners_.size>0||this._mutationListeners_.size>0||this._fillListeners_.size>0}_publishInternalMutation_(e=!1){if(this._mutationListeners_.forEach(t=>t()),this._is_savable_&&!Gt.changed){Gt.changed=!0,Gt.saveId++;const t=Gt.saveId;setTimeout(()=>Gt.getInstance().saveToLocalStorage(t),1e3)}e||this.parent&&this.parent._publishInternalMutation_()}async _publishAssignement_(e=!1){if(this._assignmentId_++,this._assignmentId_!==this._assignmentId_)return;const n=this.get();this._assignListeners_.forEach(r=>{r(n)}),this._publishInternalMutation_(e)}_publishInvalidation_(){this._invalidateListeners_.forEach(e=>e())}_publishFormInvalidation_(){this._formInvalidateListeners_.forEach(e=>e())}_publishDynamicFilling_(e,t){this._fillListeners_.forEach(n=>{n[e]!==t&&(n[e]=t)}),this._publishTemplateFilling_(e,t)}_publishTemplateFilling_(e,t){this._templateFillListeners_.forEach(n=>{const r=Object.getOwnPropertyDescriptor(n,e);r&&!r.set&&!r.writable||(n.propertyMap&&n.propertyMap[e]&&(e=n.propertyMap[e]),typeof n[e]<"u"&&n[e]!==t&&(n[e]=t))})}onAssign(e,t=!0){typeof e=="function"&&(this._assignListeners_.has(e)||(this._assignListeners_.add(e),t&&e(this.get())))}offAssign(e){this._assignListeners_.delete(e)}onInvalidate(e){typeof e=="function"&&this._invalidateListeners_.add(e)}offInvalidate(e){typeof e=="function"&&this._invalidateListeners_.delete(e)}invalidate(){this._publishInvalidation_()}onFormInvalidate(e){typeof e=="function"&&this._formInvalidateListeners_.add(e)}offFormInvalidate(e){typeof e=="function"&&this._formInvalidateListeners_.delete(e)}invalidateForm(){this._publishFormInvalidation_()}onInternalMutation(e){typeof e=="function"&&(this._mutationListeners_.add(e),e())}offInternalMutation(e){typeof e=="function"&&this._mutationListeners_.delete(e)}startTemplateFilling(e){if(this._templateFillListeners_.add(e),typeof this._value_=="object")for(const t in this._value_){let n=t;const r=this._value_[t];e.propertyMap&&e.propertyMap[t]&&(n=e.propertyMap[t]),typeof e[t]<"u"&&e[t]!==r&&(e[n]=r)}}stopTemplateFilling(e){this._templateFillListeners_.delete(e)}startDynamicFilling(e){this._fillListeners_.add(e);for(const t in this._value_){const n=this._value_[t];e[t]!==n&&(e[t]=n)}}stopDynamicFilling(e){this._fillListeners_.delete(e)}set(e,t=!1){if(this._value_===e||ni(this._value_)&&ni(e)&&e&&bs(this._value_)&&bs(e)&&this._value_.__value===e.__value||!ni(e)&&e===this._value_.__value)return!0;this._value_=ni(e)?e:{__value:e},this._cachedGet_=void 0;const n=bs(this._value_);if(this._parentKey_&&this.parent){const r=bs(this._value_)?this._value_.__value:this._value_;if(this.parent?.get()==null&&this.parent?.get()==null)if(isNaN(Number(this._parentKey_)))this.parent.set({[this._parentKey_]:r});else{const s=[];s[Number(this._parentKey_)]=r,this.parent.set(s)}else this.parent._value_[this._parentKey_]=r}if(n)return this._proxies_.forEach((r,s)=>{s!="_parent_"&&(r.set(null),this._publishDynamicFilling_(s,null))}),this._publishAssignement_(t),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_.__value),!0;for(const r in this._value_)this._value_[r]===void 0&&delete this._value_[r];if(this._proxies_.forEach((r,s)=>{const a=this._value_[s];s!="_parent_"&&a===void 0&&a!==null&&isNaN(Number(s))&&(r.set(null),this._publishDynamicFilling_(s,null))}),this._publishAssignement_(),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_),ni(this._value_))for(const r in this._value_){const s=e[r],o=ni(s)?s:{__value:s};if(!this._proxies_.has(r)){this._publishDynamicFilling_(r,s);continue}this._proxies_.get(r)?.set(o,!0),this._publishDynamicFilling_(r,s)}return!0}get(){if(Xd(this),this._cachedGet_!==void 0)return this._cachedGet_;if(Object.prototype.hasOwnProperty.call(this._value_,"__value")){const e=this._value_.__value;return this._cachedGet_=e??null}return this._cachedGet_=this._value_!=null?this._value_:null}get $tag(){return this._instanceCounter_||(_i.instancesCounter++,this._instanceCounter_=_i.instancesCounter),_i.instances.set(this._instanceCounter_,this),"<"+Wi+'-publisher-proxy publisher="'+this._instanceCounter_+'"></'+Wi+"-publisher-proxy>"}};_i.instances=new Map,_i.instancesCounter=0;let Ss=_i;const Gc=[];function Xd(i){Gc.length>0&&Gc[0].add(i)}const mt=class mt{constructor(){if(this.enabledLocaStorageProxies=[],this.publishers=new Map,this.localStorageData={},this.isLocalStrorageReady=null,this.initialisedData=[],mt.instance!=null)throw"Singleton / use getInstance";mt.instance=this,this.isLocalStrorageReady=this.cleanStorageData(),mt.initPageShowHandler()}static initPageShowHandler(){mt.pageShowHandlerInitialized||(mt.pageShowHandlerInitialized=!0,window.addEventListener("pageshow",e=>{e.persisted&&mt.getInstance().invalidateAll()}))}invalidateAll(){this.publishers.forEach(e=>{e._invalidate_on_page_show_&&e.invalidate()})}async cleanStorageData(){return new Promise(e=>{(async()=>{try{let n=localStorage.getItem(za),r=null;if(n&&(r=await this.decompress(n,"gzip")),r)try{this.localStorageData=JSON.parse(r)}catch{this.localStorageData={}}else n=await this.compress("{}","gzip"),localStorage.setItem(za,n),this.localStorageData={};const s=1e3*60*60*12;for(const a in this.localStorageData){const o=this.localStorageData[a],l=new Date().getTime()-(o.expirationDelayMs||s);o.lastModifiationMS<l&&delete this.localStorageData[a]}e(!0)}catch{window.requestAnimationFrame(()=>{e(!1)}),console.warn("no publisher cache in this browser")}})()})}static getInstance(e){if(e){const t=mt.instances.get(e);return t||(console.warn("No PublisherManager instance registered with id:",e,"creating new one"),new mt)}return mt.instance==null?new mt:mt.instance}static get(e,t){return mt.getInstance().get(e,t)}async setLocalData(e,t){await this.isLocalStrorageReady,e.set(this.localStorageData[t+"¤lang_"+zn.getLanguage()]?.data||e.get())}get(e,t){const n=t?.localStorageMode==="enabled",r=t?.invalidateOnPageShow===!0;if(!this.publishers.has(e)){const o=Ha({});this.set(e,o)}const s=this.publishers.get(e);return n&&this.initialisedData.indexOf(e)===-1&&(t?.expirationDelayMs&&(s._expiration_delay_=t.expirationDelayMs),s._is_savable_=!0,this.initialisedData.push(e),this.setLocalData(s,e)),r&&(s._invalidate_on_page_show_=r),this.publishers.get(e)}set(e,t){this.publishers.set(e,t)}delete(e){return this.publishers.has(e)?(this.publishers.delete(e),!0):!1}async saveToLocalStorage(e=0){if(!(e!==mt.saveId&&e%10!=0))try{if(!mt.changed||mt.saving)return;mt.saving=!0,mt.changed=!1;const t=Array.from(this.publishers.keys());let n=!1;for(const r of t){const s=this.publishers.get(r);if(!s?._is_savable_)continue;const a=s?.get();a&&(this.localStorageData[r+"¤lang_"+zn.getLanguage()]={lastModifiationMS:new Date().getTime(),expirationDelayMs:s._expiration_delay_,data:a},n=!0)}if(n){const r=await this.compress(JSON.stringify(this.localStorageData),"gzip");localStorage.setItem(za,r)}if(mt.saving=!1,mt.changed){mt.saveId++;const r=mt.saveId;setTimeout(()=>this.saveToLocalStorage(r),1e3)}}catch{mt.saving=!1}}async compress(e,t){const n=new TextEncoder().encode(e),r=window,s=new r.CompressionStream(t),a=s.writable.getWriter();a.write(n),a.close();const o=await new Response(s.readable).arrayBuffer(),l=new Uint8Array(o);let c="";for(let h=0;h<l.length;h++)c+=String.fromCharCode(l[h]);return btoa(c)}async decompress(e,t){const n=atob(e),s=Uint8Array.from(n,h=>h.charCodeAt(0)).buffer,a=window,o=new a.DecompressionStream(t),l=o.writable.getWriter();l.write(s),l.close();const c=await new Response(o.readable).arrayBuffer();return new TextDecoder().decode(c)}};mt.buildDate="Tue Sep 29 2026 17:50:54 GMT+0200 (Central European Summer Time)",mt.changed=!1,mt.saving=!1,mt.saveId=0,mt.instance=null,mt.instances=new Map,mt.pageShowHandlerInitialized=!1;let Gt=mt;if(typeof window<"u"){const i=window,e=Bd+"PublisherManager",t=i[e]||Gt;if(i[e]||(i[e]=Gt),t!==Gt){const n=["instance","instances","changed","saving","saveId","pageShowHandlerInitialized"];for(const r of n)Object.defineProperty(Gt,r,{configurable:!0,get(){return t[r]},set(s){t[r]=s}})}}const $d=new Set(["invalidate","onInvalidate","offInvalidate","invalidateForm","onFormInvalidate","offFormInvalidate","onAssign","offAssign","startDynamicFilling","stopDynamicFilling","startTemplateFilling","stopTemplateFilling","onInternalMutation","offInternalMutation","set","get","$tag","_cachedGet_","_templateFillListeners_","_fillListeners_","_assignListeners_","_invalidateListeners_","_formInvalidateListeners_","_publishInternalMutation_","hasListener","delete","_mutationListeners_","_publishDynamicFilling_","_publishInvalidation_","_publishFormInvalidation_","_publishTemplateFilling_","_publishAssignement_","_proxies_","parent","_parentKey_","_value_","_is_savable_","_expiration_delay_","_lockInternalMutationPublishing_","_instanceCounter_","_assignmentId_","_invalidate_on_page_show_"]);function jd(i,e){return{get:function(t,n){if(typeof n=="string"&&$d.has(n))return i[n];if(n==Symbol.toPrimitive)return()=>e().get();if(!i._proxies_.has(n)){const r=i._value_[n],s=Ha(ni(r)?r:{__value:r},i,n);s._proxies_.set("_parent_",e()),i._proxies_.set(n,s)}return i._proxies_.get(n)},set:function(t,n,r){if(n=="_value_")return i._value_=r,!0;if(n=="_cachedGet_")return i._cachedGet_=r,!0;if(n=="_assignmentId_")return i._assignmentId_=r,!0;if(n=="_is_savable_")return i._is_savable_=r,!0;if(n=="_expiration_delay_")return i._expiration_delay_=r,!0;if(n=="_invalidate_on_page_show_")return i._invalidate_on_page_show_=r,!0;if(n=="_instanceCounter_")return i._instanceCounter_=r,!0;if(!i._proxies_.has(n)){const a=Ha({},i,n);a._proxies_.set("_parent_",e()),i._proxies_.set(n,a)}return i._value_[n]!==r&&(i._value_[n]=r,i._publishDynamicFilling_(n,r),i._proxies_.get(n)?.set(ni(r)?r:{__value:r})),!0},deleteProperty:function(t,n){return i._publishDynamicFilling_(n,null),i._proxies_.get(n)?.set(null),delete i._value_[n]},has:function(t,n){return n in i._value_&&n!="_lockInternalMutationPublishing_"},defineProperty:function(t,n,r){return r&&"value"in r&&(i._value_[n]=r.value),!0},getOwnPropertyDescriptor:function(t,n){return{enumerable:!0,configurable:!0}},ownKeys:function(t){return i._value_.__value?Object.keys(i._value_.__value):Object.keys(i._value_)}}}function Ha(i,e=null,t){const n=new Ss(i,e,t);let r=null;const s=jd(n,()=>r);return r=new Proxy(n,s),r}class qd extends HTMLElement{constructor(){super(),this.publisherId="",this.onAssign=e=>{this.innerHTML=e.toString()}}connectedCallback(){this.publisherId=this.getAttribute("publisher")||"",this.publisher=Ss.instances.get(parseInt(this.publisherId)),this.publisher?.onAssign(this.onAssign)}disconnectedCallback(){this.publisher?.offAssign(this.onAssign)}}try{customElements.define(Wi+"-publisher-proxy",qd)}catch{}const Yd=(i,e)=>{{const t=i.split("."),n=t.shift()||"";let r=Gt.get(n,e);r=xs.traverse(r,t);const s=new Set;return s.add(r),s}};function Wc(i,e,t){const n=Gd(i);return Yd(n,t).values().next().value}function Kd(i,e){return Wd()?Wc(i,void 0,e):Wc(i)}let Va=(ut=class{static disable(){this.enabled&&(this.enabled=!1,Array.from(ut.observedElements.keys()).forEach(e=>ut.unObserve(e)))}static observe(e){if(!e||!ut.enabled||ut.observedElements.has(e))return;const t=new MutationObserver(ut.onMutation),n={};n.childList=!0,n.subtree=!0,n.attributes=!0,n.attributeFilter=["data-bind"],t.observe(e,n),e.querySelectorAll("[data-bind]").forEach(r=>ut.addPublisherListeners(r)),ut.observedElements.set(e,t)}static unObserve(e){if(!e)return;const t=this.observedElements.get(e);t&&(t.disconnect(),e.querySelectorAll("[data-bind]").forEach(n=>ut.removePublisherListeners(n)))}static onAdded(e){e.hasAttribute&&e.hasAttribute("data-bind")&&ut.addPublisherListeners(e),e.querySelectorAll?e.querySelectorAll("[data-bind]").forEach(t=>ut.addPublisherListeners(t)):e.childNodes.forEach(t=>ut.onAdded(t))}static onRemoved(e){e.hasAttribute&&e.hasAttribute("data-bind")&&ut.removePublisherListeners(e),e.querySelectorAll?e.querySelectorAll("[data-bind]").forEach(t=>ut.removePublisherListeners(t)):e.childNodes.forEach(t=>ut.onRemoved(t))}static onMutation(e){for(const t of e)switch(t.type){case"attributes":ut.addPublisherListeners(t.target);break;case"childList":t.addedNodes.forEach(n=>{ut.onAdded(n)}),t.removedNodes.forEach(n=>{ut.onRemoved(n)});break}}static removePublisherListeners(e){const t=ut.publisherListeners.get(e);t&&(ut.publisherListeners.delete(e),t.forEach(n=>{n.publisher?.offAssign(n.onAssign)}))}static getVariablesDescriptor(e){let t=e.match(/(\$(?:\w+\\?\.?)+)/g);return t?t=t.map(n=>n.replace("$","")):t=[e],t=t.filter(n=>n.length>0),{expression:e.replace("\\",""),variables:t.map(n=>n.split(/\b\.\b/).map(r=>r.replace("\\","")))}}static getDataBindItems(e){return"attributes"in e?Array.from(e.attributes).filter(t=>t.name.indexOf("::")==0).map(t=>({propertyToUpdate:t.name.substring(2).replace(/-((html)|\w)/g,r=>r.substring(1).toUpperCase()),bindedVariablesDescriptor:ut.getVariablesDescriptor(t.value)})):[]}static getSubPublisher(e,t){if(!t)return e;for(const n of t)if(n!="_self_"){if(!e)return null;e=e[n]}return e}static addPublisherListeners(e){ut.removePublisherListeners(e);const t=zn.getAncestorAttributeValue(e.parentNode||e.host||e,"dataProvider");if(!t)return;const n=Gt.getInstance().get(t),r=ut.getDataBindItems(e),s=[];r.forEach(a=>{const o=a.bindedVariablesDescriptor,l=a.propertyToUpdate;for(const c of o.variables){const h=c;let u=n;u=ut.getSubPublisher(n,h);const f=e,d={publisher:u,onAssign:()=>{const _=o.variables.map(m=>ut.getSubPublisher(n,m)?.get());let b=o.expression,g=!1;if(_.length==1&&o.variables[0].join(".")==b.substring(1)){let m=_[0];m===null&&(m=""),f[l]=m;return}for(let m=0;m<_.length;m++){let S=_[m];const y=o.variables[m];S===null&&(g=!0,S=void 0),b=b.replace("$"+y.join("."),S)}if(b.indexOf("|")!=-1){const m=b.indexOf("|");if(m==0)b=Ba.js(b.substring(1));else{const S=b.substring(0,m),y=b.substring(m+1),M=Ba[S];b=g?"":M?M(y):b}}else b=g?"":b;f[l]=b}};u?.onAssign(d.onAssign),s.push(d)}}),ut.publisherListeners.set(e,s)}},ut.observedElements=new Map,ut.enabled=!0,ut.publisherListeners=new Map,ut);Va.observe(document.documentElement),window.SonicDataBindObserver||(window.SonicDataBindObserver=Va);let Zd=(Pt=class{static listen(){if(!Pt.listening)return;const e=document.location?.href.replace(document.location.origin,"");Pt.prevURL&&Pt.prevURL!=e&&(Pt.prevURL=e,Pt.listeners.forEach(t=>{t.location=e})),window.requestAnimationFrame(Pt.listen)}static offChange(e){const t=Pt.listeners.indexOf(e);t!=-1&&(Pt.listeners.splice(t,1),Pt.listeners.length==0&&(Pt.listening=!1))}static onChange(e){Pt.listening||(Pt.listening=!0,Pt.listen()),Pt.listeners.push(e),e.location=this.prevURL}static changeFromComponent(e){const t=e.goBack,n=document.referrer;if(t!=null){const c=document.location.origin,h=(t||c).toString(),f=n.indexOf("http")==0?new URL(n).origin!=c:!1,d=n=="",_=history.length<3,b=d&&_,g=h!=document.location.href;if(f&&g||b){const S=history.state||{};S.concorde=S.concorde||{},S.concorde.hasDoneHistoryBack=!0,history.pushState(S,document.title),history.back(),document.location.replace(h)}else history.back();return}let r=e.getAttribute("to")||"";if(r||(r=e.href?.toString()||""),!r)return;if(r.indexOf("#")==0){document.location.hash=r.substring(1);return}const s=new URL(r,document.location.href),a=s.pathname.split("/"),o=[];let l="";for(const c of a)c!=l&&o.push(c),l=c;r="/"+o.join("/")+s.search+(s.hash?+s.hash:""),e.hasAttribute("pushState")?history.pushState(null,"",r):e.hasAttribute("replaceState")?history.replaceState(null,"",r):document.location.href=r}static updateComponentActiveState(e){if(e.autoActive=="disabled")return;const t=e.href?.toString()||"";if(e.href&&t.indexOf("http")!=0){const n=new URL(t,document.location.href),r=new URL(e.location||"",document.location.origin);let s=!1;e.autoActive=="strict"?s=n.pathname==r.pathname&&n.hash==r.hash&&n.search==r.search:e.autoActive=="strict-path-only"?s=n.pathname==r.pathname&&n.hash==r.hash:s=r.href.indexOf(n.href)==0,s?e.setAttribute("active","true"):e.removeAttribute("active")}}},Pt.listeners=[],Pt.listening=!1,Pt.prevURL=document.location?.href.replace(document.location.origin,""),Pt);function Xc(i){if(i==null||typeof i!="object"||Array.isArray(i))return i;const e={...i};return delete e._sonic_http_response_,e}const _t=class _t{constructor(e){this.addHTTPResponse=!1,this.cache="default",this.isServiceSimulated=!1,this.blockUntilDone=!1,this.keepAlive=!1,this.serviceURL=e.serviceURL,this.blockUntilDone=e.blockUntilDone||!1,this.serviceURL=="publisher://"&&(this.isServiceSimulated=!0),this.serviceURL||(this.serviceURL=document.location.origin),this.userName=e.userName,this.password=e.password,e.token&&(this.token=e.token),this.tokenProvider=e.tokenProvider,this.authToken=e.authToken,this.addHTTPResponse=e.addHTTPResponse||!1,this.credentials=e.credentials,this.cache=e.cache||"default",this.keepAlive=e.keepAlive||!1}set token(e){if(this._token=e,!e){_t.tokens.delete(this.serviceURL);return}_t.invalidTokens.includes(e)||_t.tokens.set(this.serviceURL,e)}get token(){return _t.invalidTokens.includes(this._token)?_t.tokens.get(this.serviceURL):this._token}handleInvalidToken(e){e&&(_t.invalidTokens.includes(e)||(_t.invalidTokens.push(e),this.token=null))}async handleResult(e,t){_t.firstCallDoneFlags.set(this.serviceURL,"done"),this.lastResult=e;const n=e.headers.get("content-type")?.toLowerCase(),r=e.status;let s={};if(!n||n.indexOf("text/")==0)s={text:await e.text()};else try{s=await e.json()}catch{s={}}if(this.addHTTPResponse&&xs.isObject(s)&&(s._sonic_http_response_=e),r===498&&!_t.failledTokenUpdates.has(this.serviceURL))if(this.handleInvalidToken(this.token),t.apiMethod==="get"){const o=await this.get(t.path,t.additionalHeaders);if(o==null)throw new Error("GET retry failed after token refresh");s=o}else s=await this[t.apiMethod](t.path,t.data,t.method,t.additionalHeaders);return Kd("sonic-api").lastResponse.set({http:e,processed:s}),s}async auth(){if(this.token)return;if(_t.tokens.has(this.serviceURL)){this.token=_t.tokens.get(this.serviceURL);return}if(!this.tokenProvider)return;let e={};this.userName&&this.password?e={Authorization:"Basic "+window.btoa(unescape(encodeURIComponent(this.userName+":"+this.password)))}:this.authToken&&(e={Authorization:"Bearer "+this.authToken});const t=new URL(this.serviceURL),n=t.protocol+"//"+t.host,r=await fetch(this.computeURL(this.tokenProvider,{serviceHost:n}),{headers:e,credentials:this.credentials,keepalive:this.keepAlive});try{const s=await r.json();s.token?this.token=s.token:_t.failledTokenUpdates.set(this.serviceURL,!0)}catch{_t.failledTokenUpdates.set(this.serviceURL,!0)}}async localGet(e,t){const n=Gt.get(e),r=new URLSearchParams(t.split("?")[1]||""),s=n.get();let a=[];Array.isArray(s)?a=s:a=[s];const o=[];let l=Number.POSITIVE_INFINITY,c=0,h=0;if(r.has("limit")&&(l=parseInt(r.get("limit")||"0"),h++),r.has("offset")&&(c=parseInt(r.get("offset")||"0"),h++),h>0&&(r.delete("limit"),r.delete("offset")),r.size===0)return a.slice(c,c+l);for(const[u,f]of r.entries()){const d=f.split(",").map(_=>_.trim());for(const _ of d)for(const b of a)if(typeof b!="object")isNaN(+b)?b.toString().toLowerCase().includes(f.toLowerCase())&&o.push(b):b===f&&o.push(b);else{const g=b;if(!g[u])continue;isNaN(+g[u])?g[u]?.toString().toLowerCase().includes(_.toLowerCase())&&o.push(b):g[u]===_&&o.push(b)}}return o.slice(c,c+l)}firstCallDone(){return new Promise(e=>{if(!_t.firstCallDoneFlags.has(this.serviceURL))_t.firstCallDoneFlags.set(this.serviceURL,"loading"),e(!0);else{const t=()=>{[void 0,"loading"].includes(_t.firstCallDoneFlags.get(this.serviceURL))?window.requestAnimationFrame(t):e(!0)};t()}})}async get(e,t){const n=/dataProvider\((.*?)\)(.*?)$/;if(n.test(e)){this.blockUntilDone&&(await this.firstCallDone(),_t.firstCallDoneFlags.set(this.serviceURL,"loading"));const c=e.match(n);if(!c)throw new Error("dataProvider path is not valid");return await this.localGet(c[1],c[2])}const r={apiMethod:"get",path:e,additionalHeaders:t},s=await this.createHeaders(t),a=this.computeURL(e),o=JSON.stringify({url:a,headers:s,credentials:this.credentials,cache:this.cache,keepAlive:this.keepAlive});if(this.blockUntilDone&&(await this.firstCallDone(),_t.firstCallDoneFlags.set(this.serviceURL,"loading")),!_t.loadingGetPromises.has(o)){const c=new Promise(async h=>{try{const u=await fetch(a,{headers:s,credentials:this.credentials,cache:this.cache,keepalive:this.keepAlive}),f=await this.handleResult(u,r);h({processed:f,response:this.lastResult})}catch{_t.firstCallDoneFlags.set(this.serviceURL,"error"),h(null)}});_t.loadingGetPromises.set(o,c)}const l=await _t.loadingGetPromises.get(o);return _t.loadingGetPromises.delete(o),l?(this.lastResult=l.response,l.processed):null}async getDetailed(e,t){const n=/dataProvider\((.*?)\)(.*?)$/.test(e),r=await this.get(e,t);if(r==null)return;const s=Xc(r),a=this.computeURL(e);if(n)return{request:new Request(a,{method:"GET"}),result:s};const o=await this.createHeaders(t);return{request:new Request(a,{method:"GET",headers:new Headers(o),credentials:this.credentials,cache:this.cache,keepalive:this.keepAlive}),response:this.lastResult,result:s}}async sendDetailed(e,t,n,r){const s=await this.send(e,t,n,r);if(s==null)return;const a=Xc(s),o=this.computeURL(e),l=await this.createHeaders({Accept:"application/json","Content-Type":"application/json",...r});return{request:new Request(o,{method:n,headers:new Headers(l),credentials:this.credentials,body:JSON.stringify(t),keepalive:this.keepAlive}),response:this.lastResult,result:a}}async postDetailed(e,t,n){return this.sendDetailed(e,t,"POST",n)}async putDetailed(e,t,n){return this.sendDetailed(e,t,"PUT",n)}async patchDetailed(e,t,n){return this.sendDetailed(e,t,"PATCH",n)}async createHeaders(e){await this.auth();const t={};return this.token&&(t.Authorization="Bearer "+this.token),t["Accept-Language"]=zn.getLanguage(),e&&Object.assign(t,e),t}computeURL(e,t={}){let n="";e.startsWith("http")?n=e:n=this.serviceURL+"/"+e,n.startsWith("http")||(n=window.location.origin+n);const r=new URL(n);for(const s in t)r.searchParams.set(s,t[s]);return r.toString().replace(/([^(https?:)])\/{2,}/g,"$1/")}async send(e,t,n="POST",r){const s={apiMethod:"send",path:e,additionalHeaders:r,method:n,data:t},a=await this.createHeaders(r);a.Accept="application/json",a["Content-Type"]="application/json";const o=await fetch(this.computeURL(e),{headers:a,credentials:this.credentials,method:n,body:JSON.stringify(t),keepalive:this.keepAlive});return await this.handleResult(o,s)}async submitFormData(e,t,n="POST",r){const s={apiMethod:"submitFormData",path:e,additionalHeaders:r,method:n,data:t},a=await this.createHeaders(r);a.Accept="application/json";const o=new FormData,l=t;for(const h in l)o.set(h,l[h]);const c=await fetch(this.computeURL(e),{headers:a,credentials:this.credentials,method:n,body:o,keepalive:this.keepAlive});return await this.handleResult(c,s)}async put(e,t,n){return this.send(e,t,"PUT",n)}async post(e,t,n){return this.send(e,t,"POST",n)}async patch(e,t,n){return this.send(e,t,"PATCH",n)}async delete(e,t,n){return this.send(e,t,"delete",n)}};_t.loadingGetPromises=new Map,_t.tokens=new Map,_t.invalidTokens=[],_t.failledTokenUpdates=new Map,_t.firstCallDoneFlags=new Map;let Ga=_t;zn.getApiConfiguration(document.body||document.documentElement);var $c=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Jd(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var kr={exports:{}},Qd=kr.exports,jc;function ep(){return jc||(jc=1,(function(i,e){var t=[].slice;(function(n,r){return e!==null?i.exports=r():n.UrlPattern=r()})(Qd,function(){var n,r,s,a,o,l,c,h,u,f,d,_,b,g,m;return u=function(S){return S.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},c=function(S,y){var M,T,R;for(R=[],M=-1,T=S.length;++M<T;)R=R.concat(y(S[M]));return R},g=function(S,y){var M,T,R;for(R="",M=-1,T=S.length;++M<T;)R+=y(S[M]);return R},b=function(S){return new RegExp(S.toString()+"|").exec("").length-1},d=function(S,y){var M,T,R,k,B;for(k={},M=-1,R=S.length;++M<R;)T=S[M],B=y[M],B!=null&&(k[T]!=null?(Array.isArray(k[T])||(k[T]=[k[T]]),k[T].push(B)):k[T]=B);return k},n={},n.Result=function(S,y){this.value=S,this.rest=y},n.Tagged=function(S,y){this.tag=S,this.value=y},n.tag=function(S,y){return function(M){var T,R;if(T=y(M),T!=null)return R=new n.Tagged(S,T.value),new n.Result(R,T.rest)}},n.regex=function(S){return function(y){var M,T;if(M=S.exec(y),M!=null)return T=M[0],new n.Result(T,y.slice(T.length))}},n.sequence=function(){var S;return S=1<=arguments.length?t.call(arguments,0):[],function(y){var M,T,R,k,B,C;for(M=-1,T=S.length,C=[],k=y;++M<T;){if(R=S[M],B=R(k),B==null)return;C.push(B.value),k=B.rest}return new n.Result(C,k)}},n.pick=function(){var S,y;return S=arguments[0],y=2<=arguments.length?t.call(arguments,1):[],function(M){var T,R;if(R=n.sequence.apply(n,y)(M),R!=null)return T=R.value,R.value=T[S],R}},n.string=function(S){var y;return y=S.length,function(M){if(M.slice(0,y)===S)return new n.Result(S,M.slice(y))}},n.lazy=function(S){var y;return y=null,function(M){return y==null&&(y=S()),y(M)}},n.baseMany=function(S,y,M,T,R){var k,B,C,D;for(C=R,D=M?"":[];!(y!=null&&(k=y(C),k!=null)||(B=S(C),B==null));)M?D+=B.value:D.push(B.value),C=B.rest;if(!(T&&D.length===0))return new n.Result(D,C)},n.many1=function(S){return function(y){return n.baseMany(S,null,!1,!0,y)}},n.concatMany1Till=function(S,y){return function(M){return n.baseMany(S,y,!0,!0,M)}},n.firstChoice=function(){var S;return S=1<=arguments.length?t.call(arguments,0):[],function(y){var M,T,R,k;for(M=-1,T=S.length;++M<T;)if(R=S[M],k=R(y),k!=null)return k}},_=function(S){var y;return y={},y.wildcard=n.tag("wildcard",n.string(S.wildcardChar)),y.optional=n.tag("optional",n.pick(1,n.string(S.optionalSegmentStartChar),n.lazy(function(){return y.pattern}),n.string(S.optionalSegmentEndChar))),y.name=n.regex(new RegExp("^["+S.segmentNameCharset+"]+")),y.named=n.tag("named",n.pick(1,n.string(S.segmentNameStartChar),n.lazy(function(){return y.name}))),y.escapedChar=n.pick(1,n.string(S.escapeChar),n.regex(/^./)),y.static=n.tag("static",n.concatMany1Till(n.firstChoice(n.lazy(function(){return y.escapedChar}),n.regex(/^./)),n.firstChoice(n.string(S.segmentNameStartChar),n.string(S.optionalSegmentStartChar),n.string(S.optionalSegmentEndChar),y.wildcard))),y.token=n.lazy(function(){return n.firstChoice(y.wildcard,y.optional,y.named,y.static)}),y.pattern=n.many1(n.lazy(function(){return y.token})),y},h={escapeChar:"\\",segmentNameStartChar:":",segmentValueCharset:"a-zA-Z0-9-_~ %",segmentNameCharset:"a-zA-Z0-9",optionalSegmentStartChar:"(",optionalSegmentEndChar:")",wildcardChar:"*"},l=function(S,y){if(Array.isArray(S))return g(S,function(M){return l(M,y)});switch(S.tag){case"wildcard":return"(.*?)";case"named":return"(["+y+"]+)";case"static":return u(S.value);case"optional":return"(?:"+l(S.value,y)+")?"}},o=function(S,y){return y==null&&(y=h.segmentValueCharset),"^"+l(S,y)+"$"},a=function(S){if(Array.isArray(S))return c(S,a);switch(S.tag){case"wildcard":return["_"];case"named":return[S.value];case"static":return[];case"optional":return a(S.value)}},f=function(S,y,M,T){var R,k,B,C;if(T==null&&(T=!1),C=S[y],C==null){if(T)throw new Error("no values provided for key `"+y+"`");return}if(R=M[y]||0,k=Array.isArray(C)?C.length-1:0,R>k){if(T)throw new Error("too few values provided for key `"+y+"`");return}return B=Array.isArray(C)?C[R]:C,T&&(M[y]=R+1),B},s=function(S,y,M){var T,R;if(Array.isArray(S)){for(T=-1,R=S.length;++T<R;)if(s(S[T],y,M))return!0;return!1}switch(S.tag){case"wildcard":return f(y,"_",M,!1)!=null;case"named":return f(y,S.value,M,!1)!=null;case"static":return!1;case"optional":return s(S.value,y,M)}},m=function(S,y,M){if(Array.isArray(S))return g(S,function(T){return m(T,y,M)});switch(S.tag){case"wildcard":return f(y,"_",M,!0);case"named":return f(y,S.value,M,!0);case"static":return S.value;case"optional":return s(S.value,y,M)?m(S.value,y,M):""}},r=function(S,y){var M,T,R,k,B;if(S instanceof r){this.isRegex=S.isRegex,this.regex=S.regex,this.ast=S.ast,this.names=S.names;return}if(this.isRegex=S instanceof RegExp,!(typeof S=="string"||this.isRegex))throw new TypeError("argument must be a regex or a string");if(this.isRegex){if(this.regex=S,y!=null){if(!Array.isArray(y))throw new Error("if first argument is a regex the second argument may be an array of group names but you provided something else");if(M=b(this.regex),y.length!==M)throw new Error("regex contains "+M+" groups but array of group names contains "+y.length);this.names=y}return}if(S==="")throw new Error("argument must not be the empty string");if(B=S.replace(/\s+/g,""),B!==S)throw new Error("argument must not contain whitespace");if(T={escapeChar:y?.escapeChar||h.escapeChar,segmentNameStartChar:y?.segmentNameStartChar||h.segmentNameStartChar,segmentNameCharset:y?.segmentNameCharset||h.segmentNameCharset,segmentValueCharset:y?.segmentValueCharset||h.segmentValueCharset,optionalSegmentStartChar:y?.optionalSegmentStartChar||h.optionalSegmentStartChar,optionalSegmentEndChar:y?.optionalSegmentEndChar||h.optionalSegmentEndChar,wildcardChar:y?.wildcardChar||h.wildcardChar},k=_(T),R=k.pattern(S),R==null)throw new Error("couldn't parse pattern");if(R.rest!=="")throw new Error("could only partially parse pattern");this.ast=R.value,this.regex=new RegExp(o(this.ast,T.segmentValueCharset)),this.names=a(this.ast)},r.prototype.match=function(S){var y,M;return M=this.regex.exec(S),M==null?null:(y=M.slice(1),this.names?d(this.names,y):y)},r.prototype.stringify=function(S){if(S==null&&(S={}),this.isRegex)throw new Error("can't stringify patterns generated from a regex");if(S!==Object(S))throw new Error("argument must be an object or undefined");return m(this.ast,S,{})},r.escapeForRegex=u,r.concatMap=c,r.stringConcatMap=g,r.regexGroupCount=b,r.keysAndValuesToObject=d,r.P=n,r.newParser=_,r.defaultOptions=h,r.astNodeToRegexString=o,r.astNodeToNames=a,r.getParam=f,r.astNodeContainsSegmentsForProvidedParams=s,r.stringify=m,r})})(kr,kr.exports)),kr.exports}var tp=ep();const np=Jd(tp);class Wa{constructor(e){this.path=Wa.normalizePath(e)}getDataProviderKey(){return new ys(this.path)}static normalizePath(e){const t=String(e).trim();if(!t)throw new RangeError("Endpoint: path cannot be empty");if(/^https?:\/\//i.test(t)){let l;try{l=new URL(t)}catch{throw new RangeError("Endpoint: invalid absolute URL")}return l.pathname=l.pathname.replace(/\/+/g,"/"),l.href}const n=t.indexOf("?"),r=t.indexOf("#");let s=t.length;n>=0&&(s=Math.min(s,n)),r>=0&&(s=Math.min(s,r));let a=t.slice(0,s);const o=t.slice(s);if(a=a.replace(/^\/+/,""),a=a.replace(/\/+/g,"/"),!a&&o)throw new RangeError("Endpoint: path cannot be empty");return a+o}static isNonEmpty(e){return String(e).trim().length>0}static looksLikeDataProviderPath(e){return/^\s*dataProvider\s*\(/i.test(String(e))}toString(){return this.path}}function Ms(i){throw new Error('Could not dynamically require "'+i+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Xa={exports:{}},qc;function ip(){return qc||(qc=1,(function(i,e){(function(t){i.exports=t()})(function(){return(function(){function t(n,r,s){function a(c,h){if(!r[c]){if(!n[c]){var u=typeof Ms=="function"&&Ms;if(!h&&u)return u(c,!0);if(o)return o(c,!0);var f=new Error("Cannot find module '"+c+"'");throw f.code="MODULE_NOT_FOUND",f}var d=r[c]={exports:{}};n[c][0].call(d.exports,function(_){var b=n[c][1][_];return a(b||_)},d,d.exports,t,n,r,s)}return r[c].exports}for(var o=typeof Ms=="function"&&Ms,l=0;l<s.length;l++)a(s[l]);return a}return t})()({1:[function(t,n,r){const s=t("./utils"),a=(function(){const o=s.stringToArray,l=["Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"],c=["Zeroth","First","Second","Third","Fourth","Fifth","Sixth","Seventh","Eighth","Ninth","Tenth","Eleventh","Twelfth","Thirteenth","Fourteenth","Fifteenth","Sixteenth","Seventeenth","Eighteenth","Nineteenth"],h=["Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety","Hundred"],u=["Thousand","Million","Billion","Trillion"];function f(z,j){var W=function(be,U,ee){var fe="";if(be<=19)fe=(U?" and ":"")+(ee?c[be]:l[be]);else if(be<100){const Se=Math.floor(be/10),ze=be%10;fe=(U?" and ":"")+h[Se-2],ze>0?fe+="-"+W(ze,!1,ee):ee&&(fe=fe.substring(0,fe.length-1)+"ieth")}else if(be<1e3){const Se=Math.floor(be/100),ze=be%100;fe=(U?", ":"")+l[Se]+" Hundred",ze>0?fe+=W(ze,!0,ee):ee&&(fe+="th")}else{var ye=Math.floor(Math.log10(be)/3);ye>u.length&&(ye=u.length);const Se=Math.pow(10,ye*3),ze=Math.floor(be/Se),_e=be-ze*Se;fe=(U?", ":"")+W(ze,!1,!1)+" "+u[ye-1],_e>0?fe+=W(_e,!0,ee):ee&&(fe+="th")}return fe},le=W(z,!1,j);return le}const d=Object.create(null);l.forEach(function(z,j){d[z.toLowerCase()]=j}),c.forEach(function(z,j){d[z.toLowerCase()]=j}),h.forEach(function(z,j){const W=z.toLowerCase();d[W]=(j+2)*10,d[W.substring(0,z.length-1)+"ieth"]=d[W]}),d.hundredth=100,u.forEach(function(z,j){const W=z.toLowerCase(),le=Math.pow(10,(j+1)*3);d[W]=le,d[W+"th"]=le});function _(z){const W=z.split(/,\s|\sand\s|[\s\\-]/).map(U=>d[U]);let le=[0];return W.forEach(U=>{if(U<100){let ee=le.pop();ee>=1e3&&(le.push(ee),ee=0),le.push(ee+U)}else le.push(le.pop()*U)}),le.reduce((U,ee)=>U+ee,0)}const b=[[1e3,"m"],[900,"cm"],[500,"d"],[400,"cd"],[100,"c"],[90,"xc"],[50,"l"],[40,"xl"],[10,"x"],[9,"ix"],[5,"v"],[4,"iv"],[1,"i"]],g={M:1e3,D:500,C:100,L:50,X:10,V:5,I:1};function m(z){for(var j=0;j<b.length;j++){const W=b[j];if(z>=W[0])return W[1]+m(z-W[0])}return""}function S(z){for(var j=0,W=1,le=z.length-1;le>=0;le--){const be=z[le],U=g[be];U<W?j-=U:(W=U,j+=U)}return j}function y(z,j){for(var W=[],le=j.charCodeAt(0);z>0;)W.unshift(String.fromCharCode((z-1)%26+le)),z=Math.floor((z-1)/26);return W.join("")}function M(z,j){for(var W=j.charCodeAt(0),le=0,be=0;be<z.length;be++)le+=(z.charCodeAt(z.length-be-1)-W+1)*Math.pow(26,be);return le}function T(z,j){if(typeof z>"u")return;z=Math.floor(z);const W=D(j);return B(z,W)}const R={DECIMAL:"decimal",LETTERS:"letters",ROMAN:"roman",WORDS:"words",SEQUENCE:"sequence"},k={UPPER:"upper",LOWER:"lower",TITLE:"title"};function B(z,j){let W;const le=z<0;switch(z=Math.abs(z),j.primary){case R.LETTERS:W=y(z,j.case===k.UPPER?"A":"a");break;case R.ROMAN:W=m(z),j.case===k.UPPER&&(W=W.toUpperCase());break;case R.WORDS:W=f(z,j.ordinal),j.case===k.UPPER?W=W.toUpperCase():j.case===k.LOWER&&(W=W.toLowerCase());break;case R.DECIMAL:W=""+z;var be=j.mandatoryDigits-W.length;if(be>0){var U=new Array(be+1).join("0");W=U+W}if(j.zeroCode!==48&&(W=o(W).map(Se=>String.fromCodePoint(Se.codePointAt(0)+j.zeroCode-48)).join("")),j.regular){const Se=Math.floor((W.length-1)/j.groupingSeparators.position);for(let ze=Se;ze>0;ze--){const _e=W.length-ze*j.groupingSeparators.position;W=W.substr(0,_e)+j.groupingSeparators.character+W.substr(_e)}}else j.groupingSeparators.reverse().forEach(Se=>{const ze=W.length-Se.position;W=W.substr(0,ze)+Se.character+W.substr(ze)});if(j.ordinal){var ee={1:"st",2:"nd",3:"rd"},fe=W[W.length-1],ye=ee[fe];(!ye||W.length>1&&W[W.length-2]==="1")&&(ye="th"),W=W+ye}break;case R.SEQUENCE:throw{code:"D3130",value:j.token}}return le&&(W="-"+W),W}const C=[48,1632,1776,1984,2406,2534,2662,2790,2918,3046,3174,3302,3430,3558,3664,3792,3872,4160,4240,6112,6160,6470,6608,6784,6800,6992,7088,7232,7248,42528,43216,43264,43472,43504,43600,44016,65296];function D(z){const j={type:"integer",primary:R.DECIMAL,case:k.LOWER,ordinal:!1};let W,le;const be=z.lastIndexOf(";");switch(be===-1?W=z:(W=z.substring(0,be),le=z.substring(be+1),le[0]==="o"&&(j.ordinal=!0)),W){case"A":j.case=k.UPPER;case"a":j.primary=R.LETTERS;break;case"I":j.case=k.UPPER;case"i":j.primary=R.ROMAN;break;case"W":j.case=k.UPPER,j.primary=R.WORDS;break;case"Ww":j.case=k.TITLE,j.primary=R.WORDS;break;case"w":j.primary=R.WORDS;break;default:{let U=null,ee=0,fe=0,ye=[],Se=0;if(o(W).map(_e=>_e.codePointAt(0)).reverse().forEach(_e=>{let xe=!1;for(let Xe=0;Xe<C.length;Xe++){const De=C[Xe];if(_e>=De&&_e<=De+9){if(xe=!0,ee++,Se++,U===null)U=De;else if(De!==U)throw{code:"D3131"};break}}xe||(_e===35?(Se++,fe++):ye.push({position:Se,character:String.fromCodePoint(_e)}))}),ee>0){j.primary=R.DECIMAL,j.zeroCode=U,j.mandatoryDigits=ee,j.optionalDigits=fe;const xe=function(Xe){if(Xe.length===0)return 0;const De=Xe[0].character;for(let re=1;re<Xe.length;re++)if(Xe[re].character!==De)return 0;const N=Xe.map(re=>re.position),w=function(re,pe){return pe===0?re:w(pe,re%pe)},q=N.reduce(w);for(let re=1;re<=N.length;re++)if(N.indexOf(re*q)===-1)return 0;return q}(ye);xe>0?(j.regular=!0,j.groupingSeparators={position:xe,character:ye[0].character}):(j.regular=!1,j.groupingSeparators=ye)}else j.primary=R.SEQUENCE,j.token=W}}return j}const V={Y:"1",M:"1",D:"1",d:"1",F:"n",W:"1",w:"1",X:"1",x:"1",H:"1",h:"1",P:"n",m:"01",s:"01",f:"1",Z:"01:01",z:"01:01",C:"n",E:"n"};function K(z){var j=[];const W={type:"datetime",parts:j},le=function(xe,Xe){if(Xe>xe){let De=z.substring(xe,Xe);De=De.split("]]").join("]"),j.push({type:"literal",value:De})}};for(var be=0,U=0;U<z.length;){if(z.charAt(U)==="["){if(z.charAt(U+1)==="["){le(be,U),j.push({type:"literal",value:"["}),U+=2,be=U;continue}if(le(be,U),be=U,U=z.indexOf("]",be),U===-1)throw{code:"D3135"};let xe=z.substring(be+1,U);xe=xe.split(/\s+/).join("");var ee={type:"marker",component:xe.charAt(0)},fe=xe.lastIndexOf(","),ye;if(fe!==-1){const Xe=xe.substring(fe+1),De=Xe.indexOf("-");let N,w;const q=function(pe){if(!(typeof pe>"u"||pe==="*"))return parseInt(pe)};De===-1?N=Xe:(N=Xe.substring(0,De),w=Xe.substring(De+1));const re={min:q(N),max:q(w)};ee.width=re,ye=xe.substring(1,fe)}else ye=xe.substring(1);if(ye.length===1)ee.presentation1=ye;else if(ye.length>1){var Se=ye.charAt(ye.length-1);"atco".indexOf(Se)!==-1?(ee.presentation2=Se,Se==="o"&&(ee.ordinal=!0),ee.presentation1=ye.substring(0,ye.length-1)):ee.presentation1=ye}else ee.presentation1=V[ee.component];if(typeof ee.presentation1>"u")throw{code:"D3132",value:ee.component};if(ee.presentation1[0]==="n")ee.names=k.LOWER;else if(ee.presentation1[0]==="N")ee.presentation1[1]==="n"?ee.names=k.TITLE:ee.names=k.UPPER;else if("YMDdFWwXxHhmsf".indexOf(ee.component)!==-1){var ze=ee.presentation1;if(ee.presentation2&&(ze+=";"+ee.presentation2),ee.integerFormat=D(ze),ee.width&&ee.width.min!==void 0&&ee.integerFormat.mandatoryDigits<ee.width.min&&(ee.integerFormat.mandatoryDigits=ee.width.min),ee.component==="Y")if(ee.n=-1,ee.width&&ee.width.max!==void 0)ee.n=ee.width.max,ee.integerFormat.mandatoryDigits=ee.n;else{var _e=ee.integerFormat.mandatoryDigits+ee.integerFormat.optionalDigits;_e>=2&&(ee.n=_e)}const Xe=j[j.length-1];Xe&&Xe.integerFormat&&(Xe.integerFormat.parseWidth=Xe.integerFormat.mandatoryDigits)}(ee.component==="Z"||ee.component==="z")&&(ee.integerFormat=D(ee.presentation1)),j.push(ee),be=U+1}U++}return le(be,U),W}const J=["","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],se=["January","February","March","April","May","June","July","August","September","October","November","December"],he=1e3*60*60*24,Q=function(z){const j=Date.UTC(z.year,z.month);var W=new Date(j).getUTCDay();return W===0&&(W=7),W>4?j+(8-W)*he:j-(W-1)*he},de=function(z,j){return{year:z,month:j,nextMonth:function(){return j===11?de(z+1,0):de(z,j+1)},previousMonth:function(){return j===0?de(z-1,11):de(z,j-1)},nextYear:function(){return de(z+1,j)},previousYear:function(){return de(z-1,j)}}},ne=function(z,j){return(j-z)/(he*7)+1},ue=(z,j)=>{let W;switch(j){case"Y":W=z.getUTCFullYear();break;case"M":W=z.getUTCMonth()+1;break;case"D":W=z.getUTCDate();break;case"d":{const le=Date.UTC(z.getUTCFullYear(),z.getUTCMonth(),z.getUTCDate()),be=Date.UTC(z.getUTCFullYear(),0);W=(le-be)/he+1;break}case"F":W=z.getUTCDay(),W===0&&(W=7);break;case"W":{const le=de(z.getUTCFullYear(),0),be=Q(le),U=Date.UTC(le.year,z.getUTCMonth(),z.getUTCDate());let ee=ne(be,U);if(ee>52){const fe=Q(le.nextYear());U>=fe&&(ee=1)}else if(ee<1){const fe=Q(le.previousYear());ee=ne(fe,U)}W=Math.floor(ee);break}case"w":{const le=de(z.getUTCFullYear(),z.getUTCMonth()),be=Q(le),U=Date.UTC(le.year,le.month,z.getUTCDate());let ee=ne(be,U);if(ee>4){const fe=Q(le.nextMonth());U>=fe&&(ee=1)}else if(ee<1){const fe=Q(le.previousMonth());ee=ne(fe,U)}W=Math.floor(ee);break}case"X":{const le=de(z.getUTCFullYear(),0),be=Q(le),U=Q(le.nextYear()),ee=z.getTime();ee<be?W=le.year-1:ee>=U?W=le.year+1:W=le.year;break}case"x":{const le=de(z.getUTCFullYear(),z.getUTCMonth()),be=Q(le),U=le.nextMonth(),ee=Q(U),fe=z.getTime();fe<be?W=le.previousMonth().month+1:fe>=ee?W=U.month+1:W=le.month+1;break}case"H":W=z.getUTCHours();break;case"h":W=z.getUTCHours(),W=W%12,W===0&&(W=12);break;case"P":W=z.getUTCHours()>=12?"pm":"am";break;case"m":W=z.getUTCMinutes();break;case"s":W=z.getUTCSeconds();break;case"f":W=z.getUTCMilliseconds();break;case"Z":case"z":break;case"C":W="ISO";break;case"E":W="ISO";break}return W};let Te=null;function ke(z,j,W){var le=0,be=0;if(typeof W<"u"){const ze=parseInt(W);le=Math.floor(ze/100),be=ze%100}var U=function(ze,_e){var xe=ue(ze,_e.component);if("YMDdFWwXxHhms".indexOf(_e.component)!==-1)if(_e.component==="Y"&&_e.n!==-1&&(xe=xe%Math.pow(10,_e.n)),_e.names){if(_e.component==="M"||_e.component==="x")xe=se[xe-1];else if(_e.component==="F")xe=J[xe];else throw{code:"D3133",value:_e.component};_e.names===k.UPPER?xe=xe.toUpperCase():_e.names===k.LOWER&&(xe=xe.toLowerCase()),_e.width&&xe.length>_e.width.max&&(xe=xe.substring(0,_e.width.max))}else xe=B(xe,_e.integerFormat);else if(_e.component==="f")xe=B(xe,_e.integerFormat);else if(_e.component==="Z"||_e.component==="z"){const Xe=le*100+be;if(_e.integerFormat.regular)xe=B(Xe,_e.integerFormat);else{const De=_e.integerFormat.mandatoryDigits;if(De===1||De===2)xe=B(le,_e.integerFormat),be!==0&&(xe+=":"+T(be,"00"));else if(De===3||De===4)xe=B(Xe,_e.integerFormat);else throw{code:"D3134",value:De}}Xe>=0&&(xe="+"+xe),_e.component==="z"&&(xe="GMT"+xe),Xe===0&&_e.presentation2==="t"&&(xe="Z")}else _e.component==="P"&&_e.names===k.UPPER&&(xe=xe.toUpperCase());return xe};let ee;typeof j>"u"?(Te===null&&(Te=K("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01].[f001][Z01:01t]")),ee=Te):ee=K(j);const fe=(60*le+be)*60*1e3,ye=new Date(z+fe);let Se="";return ee.parts.forEach(function(ze){ze.type==="literal"?Se+=ze.value:Se+=U(ye,ze)}),Se}function O(z){var j=Object.create(null);if(z.type==="datetime")j.type="datetime",j.parts=z.parts.map(function(W){var le=Object.create(null);if(W.type==="literal")le.regex=W.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");else if(W.component==="Z"||W.component==="z"){let U;Array.isArray(W.integerFormat.groupingSeparators)||(U=W.integerFormat.groupingSeparators),le.regex="",W.component==="z"&&(le.regex="GMT"),le.regex+="[-+][0-9]+",U&&(le.regex+=U.character+"[0-9]+"),le.parse=function(ee){W.component==="z"&&(ee=ee.substring(3));let fe=0,ye=0;return U?(fe=Number.parseInt(ee.substring(0,ee.indexOf(U.character))),ye=Number.parseInt(ee.substring(ee.indexOf(U.character)+1))):ee.length-1<=2?fe=Number.parseInt(ee):(fe=Number.parseInt(ee.substring(0,3)),ye=Number.parseInt(ee.substring(3))),fe*60+ye}}else if(W.component==="f")le.regex="[0-9]+",le.parse=function(U){return parseFloat("0."+U.substring(0,3))*1e3};else if(W.integerFormat)le=O(W.integerFormat);else{le.regex="[a-zA-Z]+";var be=Object.create(null);if(W.component==="M"||W.component==="x")se.forEach(function(U,ee){W.width&&W.width.max?be[U.substring(0,W.width.max)]=ee+1:be[U]=ee+1});else if(W.component==="F")J.forEach(function(U,ee){ee>0&&(W.width&&W.width.max?be[U.substring(0,W.width.max)]=ee:be[U]=ee)});else if(W.component==="P")be={am:0,AM:0,pm:1,PM:1};else throw{code:"D3133",value:W.component};le.parse=function(U){return be[U]}}return le.component=W.component,le});else{j.type="integer";const W=z.case===k.UPPER;switch(z.primary){case R.LETTERS:j.regex=W?"[A-Z]+":"[a-z]+",j.parse=function(le){return M(le,W?"A":"a")};break;case R.ROMAN:j.regex=W?"[MDCLXVI]+":"[mdclxvi]+",j.parse=function(le){return S(W?le:le.toUpperCase())};break;case R.WORDS:j.regex="(?:"+s.keys(d).concat("and","[\\-, ]").join("|")+")+",j.parse=function(le){return _(le.toLowerCase())};break;case R.DECIMAL:j.regex="[0-9]",z.parseWidth?j.regex+=`{${z.parseWidth}}`:j.regex+="+",z.ordinal&&(j.regex+="(?:th|st|nd|rd)"),j.parse=function(le){let be=le;return z.ordinal&&(be=le.substring(0,le.length-2)),z.regular?be=be.split(",").join(""):z.groupingSeparators.forEach(U=>{be=be.split(U.character).join("")}),z.zeroCode!==48&&(be=be.split("").map(U=>String.fromCodePoint(U.codePointAt(0)-z.zeroCode+48)).join("")),parseInt(be)};break;case R.SEQUENCE:throw{code:"D3130",value:z.token}}}return j}function H(z,j){if(typeof z>"u")return;const W=D(j);return O(W).parse(z)}function we(z,j){const W=K(j),le=O(W),be="^"+le.parts.map(ye=>"("+ye.regex+")").join("")+"$";var ee=new RegExp(be,"i").exec(z);if(ee!==null){const De=Object.create(null);for(let A=1;A<ee.length;A++){const x=le.parts[A-1];x.parse&&(De[x.component]=x.parse(ee[A]))}if(Object.getOwnPropertyNames(De).length===0)return;let N=0;const w=A=>{N<<=1,N+=A?1:0},q=A=>!(~A&N)&&!!(A&N);"YXMxWwdD".split("").forEach(A=>w(De[A]));const pe=!q(161)&&q(130),ae=q(84),Ve=!ae&&q(72);N=0,"PHhmsf".split("").forEach(A=>w(De[A]));const oe=!q(23)&&q(47),Re=(pe?"YD":ae?"XxwF":Ve?"XWF":"YMD")+(oe?"Phmsf":"Hmsf"),je=this.environment.timestamp;let Oe=!1,Ce=!1;if(Re.split("").forEach(A=>{if(typeof De[A]>"u")Oe?(De[A]="MDd".indexOf(A)!==-1?1:0,Ce=!0):De[A]=ue(je,A);else if(Oe=!0,Ce)throw{code:"D3136"}}),De.M>0?De.M-=1:De.M=0,pe){const A=Date.UTC(De.Y,0),x=(De.d-1)*1e3*60*60*24,L=new Date(A+x);De.M=L.getUTCMonth(),De.D=L.getUTCDate()}if(ae)throw{code:"D3136"};if(Ve)throw{code:"D3136"};oe&&(De.H=De.h===12?0:De.h,De.P===1&&(De.H+=12));var fe=Date.UTC(De.Y,De.M,De.D,De.H,De.m,De.s,De.f);return(De.Z||De.z)&&(fe-=(De.Z||De.z)*60*1e3),fe}}var Be=new RegExp("^\\d{4}(-[01]\\d)?(-[0-3]\\d)?(T[0-2]\\d:[0-5]\\d:[0-5]\\d)?(\\.\\d+)?([+-][0-2]\\d:?[0-5]\\d|Z)?$");function ie(z,j){if(!(typeof z>"u"))if(typeof j>"u"){if(!Be.test(z))throw{stack:new Error().stack,code:"D3110",value:z};return Date.parse(z)}else return we.call(this,z,j)}function ce(z,j,W){if(!(typeof z>"u"))return ke.call(this,z,j,W)}return{formatInteger:T,parseInteger:H,fromMillis:ce,toMillis:ie}})();n.exports=a},{"./utils":6}],2:[function(t,n,r){(function(s){(function(){var a=t("./utils");const o=(()=>{var l=a.isNumeric,c=a.isArrayOfStrings,h=a.isArrayOfNumbers,u=a.isSequence,f=a.isFunction,d=a.isLambda,_=a.isPromise,b=a.getFunctionArity,g=a.isDeepEqual,m=a.stringToArray;function S(p){if(!(typeof p>"u")){var v=0;return p.forEach(function(E){v+=E}),v}}function y(p){return typeof p>"u"?0:p.length}function M(p){if(!(typeof p>"u"||p.length===0))return Math.max.apply(Math,p)}function T(p){if(!(typeof p>"u"||p.length===0))return Math.min.apply(Math,p)}function R(p){if(!(typeof p>"u"||p.length===0)){var v=0;return p.forEach(function(E){v+=E}),v/p.length}}function k(p,v=!1){if(!(typeof p>"u")){var E;if(typeof p=="string")E=p;else if(f(p))E="";else{if(typeof p=="number"&&!isFinite(p))throw{code:"D3001",value:p,stack:new Error().stack};var I=v?2:0;Array.isArray(p)&&p.outerWrapper&&(p=p[0]),E=JSON.stringify(p,function(F,X){return typeof X<"u"&&X!==null&&l(X)?X.toPrecision&&!Number.isInteger(X)?Number(X.toPrecision(15)):X:X&&f(X)?"":X},I)}return E}}function B(p,v,E){if(!(typeof p>"u")){var I=m(p),F=I.length;if(F+v<0&&(v=0),typeof E<"u"){if(E<=0)return"";var X=v>=0?v+E:F+v+E;return I.slice(v,X).join("")}return I.slice(v).join("")}}function C(p,v){if(!(typeof p>"u")){var E=p.indexOf(v);return E>-1?p.substr(0,E):p}}function D(p,v){if(!(typeof p>"u")){var E=p.indexOf(v);return E>-1?p.substr(E+v.length):p}}function V(p){if(!(typeof p>"u"))return p.toLowerCase()}function K(p){if(!(typeof p>"u"))return p.toUpperCase()}function J(p){if(!(typeof p>"u"))return m(p).length}function se(p){if(!(typeof p>"u")){var v=p.replace(/[ \t\n\r]+/gm," ");return v.charAt(0)===" "&&(v=v.substring(1)),v.charAt(v.length-1)===" "&&(v=v.substring(0,v.length-1)),v}}function he(p,v,E){if(!(typeof p>"u")){(typeof E>"u"||E.length===0)&&(E=" ");var I;v=Math.trunc(v);var F=Math.abs(v)-J(p);if(F>0){var X=new Array(F+1).join(E);E.length>1&&(X=B(X,0,F)),v>0?I=p+X:I=X+p}else I=p;return I}}async function Q(p,v){var E=p.apply(this,[v]);if(_(E)&&(E=await E),E&&!(typeof E.start=="number"||E.end==="number"||Array.isArray(E.groups)||f(E.next)))throw{code:"T1010",stack:new Error().stack};return E}async function de(p,v){if(!(typeof p>"u"||typeof v>"u")){var E;if(typeof v=="string")E=p.indexOf(v)!==-1;else{var I=await Q(v,p);E=typeof I<"u"}return E}}async function ne(p,v,E){if(!(typeof p>"u")){if(E<0)throw{stack:new Error().stack,value:E,code:"D3040",index:3};var I=this.createSequence();if(typeof E>"u"||E>0){var F=0,X=await Q(v,p);if(typeof X<"u")for(;typeof X<"u"&&(typeof E>"u"||F<E);)I.push({match:X.match,index:X.start,groups:X.groups}),X=await Q(X.next),F++}return I}}async function ue(p,v,E,I){if(!(typeof p>"u")){var F=this;if(v==="")throw{code:"D3010",stack:new Error().stack,value:v,index:2};if(I<0)throw{code:"D3011",stack:new Error().stack,value:I,index:4};var X;typeof E=="string"?X=function(gt){for(var Mt="",ct=0,St=E.indexOf("$",ct);St!==-1&&ct<E.length;){Mt+=E.substring(ct,St),ct=St+1;var nn=E.charAt(ct);if(nn==="$")Mt+="$",ct++;else if(nn==="0")Mt+=gt.match,ct++;else{var Dt;if(gt.groups.length===0?Dt=1:Dt=Math.floor(Math.log(gt.groups.length)*Math.LOG10E)+1,St=parseInt(E.substring(ct,ct+Dt),10),Dt>1&&St>gt.groups.length&&(St=parseInt(E.substring(ct,ct+Dt-1),10)),isNaN(St))Mt+="$";else{if(gt.groups.length>0){var hn=gt.groups[St-1];typeof hn<"u"&&(Mt+=hn)}ct+=St.toString().length}}St=E.indexOf("$",ct)}return Mt+=E.substring(ct),Mt}:X=E;var me="",ve=0;if(typeof I>"u"||I>0){var $e=0;if(typeof v=="string"){for(var Ne=p.indexOf(v,ve);Ne!==-1&&(typeof I>"u"||$e<I);)me+=p.substring(ve,Ne),me+=E,ve=Ne+v.length,$e++,Ne=p.indexOf(v,ve);me+=p.substring(ve)}else{var ht=await Q(v,p);if(typeof ht<"u"){for(;typeof ht<"u"&&(typeof I>"u"||$e<I);){me+=p.substring(ve,ht.start);var ot=X.apply(F,[ht]);if(_(ot)&&(ot=await ot),typeof ot=="string")me+=ot;else throw{code:"D3012",stack:new Error().stack,value:ot};ve=ht.start+ht.match.length,$e++,ht=await Q(ht.next)}me+=p.substring(ve)}else me=p}}else me=p;return me}}function Te(p){if(!(typeof p>"u")){var v=typeof window<"u"?window.btoa:function(E){return new s.Buffer.from(E,"binary").toString("base64")};return v(p)}}function ke(p){if(!(typeof p>"u")){var v=typeof window<"u"?window.atob:function(E){return new s.Buffer.from(E,"base64").toString("binary")};return v(p)}}function O(p){if(!(typeof p>"u")){var v;try{v=encodeURIComponent(p)}catch{throw{code:"D3140",stack:new Error().stack,value:p,functionName:"encodeUrlComponent"}}return v}}function H(p){if(!(typeof p>"u")){var v;try{v=encodeURI(p)}catch{throw{code:"D3140",stack:new Error().stack,value:p,functionName:"encodeUrl"}}return v}}function we(p){if(!(typeof p>"u")){var v;try{v=decodeURIComponent(p)}catch{throw{code:"D3140",stack:new Error().stack,value:p,functionName:"decodeUrlComponent"}}return v}}function Be(p){if(!(typeof p>"u")){var v;try{v=decodeURI(p)}catch{throw{code:"D3140",stack:new Error().stack,value:p,functionName:"decodeUrl"}}return v}}async function ie(p,v,E){if(!(typeof p>"u")){if(E<0)throw{code:"D3020",stack:new Error().stack,value:E,index:3};var I=[];if(typeof E>"u"||E>0)if(typeof v=="string")I=p.split(v,E);else{var F=0,X=await Q(v,p);if(typeof X<"u"){for(var me=0;typeof X<"u"&&(typeof E>"u"||F<E);)I.push(p.substring(me,X.start)),me=X.end,X=await Q(X.next),F++;(typeof E>"u"||F<E)&&I.push(p.substring(me))}else I.push(p)}return I}}function ce(p,v){if(!(typeof p>"u"))return typeof v>"u"&&(v=""),p.join(v)}function z(p,v,E){if(!(typeof p>"u")){var I={"decimal-separator":".","grouping-separator":",","exponent-separator":"e",infinity:"Infinity","minus-sign":"-",NaN:"NaN",percent:"%","per-mille":"‰","zero-digit":"0",digit:"#","pattern-separator":";"},F=I;typeof E<"u"&&a.keys(E).forEach(function(ge){F[ge]=E[ge]});for(var X=[],me=F["zero-digit"].charCodeAt(0),ve=me;ve<me+10;ve++)X.push(String.fromCharCode(ve));var $e=X.concat([F["decimal-separator"],F["exponent-separator"],F["grouping-separator"],F.digit,F["pattern-separator"]]),Ne=v.split(F["pattern-separator"]);if(Ne.length>2)throw{code:"D3080",stack:new Error().stack};var ht=function(ge){var Ue=(function(){for(var Je,Ke=0;Ke<ge.length;Ke++)if(Je=ge.charAt(Ke),$e.indexOf(Je)!==-1&&Je!==F["exponent-separator"])return ge.substring(0,Ke);return""})(),He=(function(){for(var Je,Ke=ge.length-1;Ke>=0;Ke--)if(Je=ge.charAt(Ke),$e.indexOf(Je)!==-1&&Je!==F["exponent-separator"])return ge.substring(Ke+1);return""})(),Pe=ge.substring(Ue.length,ge.length-He.length),qe,st,at,ft,tt=ge.indexOf(F["exponent-separator"],Ue.length);tt===-1||tt>ge.length-He.length?(qe=Pe,st=void 0):(qe=Pe.substring(0,tt),st=Pe.substring(tt+1));var Ge=qe.indexOf(F["decimal-separator"]);return Ge===-1?(at=qe,ft=He):(at=qe.substring(0,Ge),ft=qe.substring(Ge+1)),{prefix:Ue,suffix:He,activePart:Pe,mantissaPart:qe,exponentPart:st,integerPart:at,fractionalPart:ft,subpicture:ge}},ot=function(ge){var Ue,He,Pe=ge.subpicture,qe=Pe.indexOf(F["decimal-separator"]);qe!==Pe.lastIndexOf(F["decimal-separator"])&&(Ue="D3081"),Pe.indexOf(F.percent)!==Pe.lastIndexOf(F.percent)&&(Ue="D3082"),Pe.indexOf(F["per-mille"])!==Pe.lastIndexOf(F["per-mille"])&&(Ue="D3083"),Pe.indexOf(F.percent)!==-1&&Pe.indexOf(F["per-mille"])!==-1&&(Ue="D3084");var st=!1;for(He=0;He<ge.mantissaPart.length;He++){var at=ge.mantissaPart.charAt(He);if(X.indexOf(at)!==-1||at===F.digit){st=!0;break}}st||(Ue="D3085");var ft=ge.activePart.split("").map(function(Je){return $e.indexOf(Je)===-1?"p":"a"}).join("");ft.indexOf("p")!==-1&&(Ue="D3086"),qe!==-1?(Pe.charAt(qe-1)===F["grouping-separator"]||Pe.charAt(qe+1)===F["grouping-separator"])&&(Ue="D3087"):ge.integerPart.charAt(ge.integerPart.length-1)===F["grouping-separator"]&&(Ue="D3088"),Pe.indexOf(F["grouping-separator"]+F["grouping-separator"])!==-1&&(Ue="D3089");var tt=ge.integerPart.indexOf(F.digit);tt!==-1&&ge.integerPart.substring(0,tt).split("").filter(function(Je){return X.indexOf(Je)>-1}).length>0&&(Ue="D3090"),tt=ge.fractionalPart.lastIndexOf(F.digit),tt!==-1&&ge.fractionalPart.substring(tt).split("").filter(function(Je){return X.indexOf(Je)>-1}).length>0&&(Ue="D3091");var Ge=typeof ge.exponentPart=="string";if(Ge&&ge.exponentPart.length>0&&(Pe.indexOf(F.percent)!==-1||Pe.indexOf(F["per-mille"])!==-1)&&(Ue="D3092"),Ge&&(ge.exponentPart.length===0||ge.exponentPart.split("").filter(function(Je){return X.indexOf(Je)===-1}).length>0)&&(Ue="D3093"),Ue)throw{code:Ue,stack:new Error().stack}},gt=function(ge){var Ue=function(Tt,Vt){for(var wn=[],dt=Tt.indexOf(F["grouping-separator"]);dt!==-1;){var Wt=(Vt?Tt.substring(0,dt):Tt.substring(dt)).split("").filter(function(Ft){return X.indexOf(Ft)!==-1||Ft===F.digit}).length;wn.push(Wt),dt=ge.integerPart.indexOf(F["grouping-separator"],dt+1)}return wn},He=Ue(ge.integerPart),Pe=function(Tt){if(Tt.length===0)return 0;for(var Vt=function(Wt,Ft){return Ft===0?Wt:Vt(Ft,Wt%Ft)},wn=Tt.reduce(Vt),dt=1;dt<=Tt.length;dt++)if(Tt.indexOf(dt*wn)===-1)return 0;return wn},qe=Pe(He),st=Ue(ge.fractionalPart,!0),at=ge.integerPart.split("").filter(function(Tt){return X.indexOf(Tt)!==-1}).length,ft=at,tt=ge.fractionalPart.split(""),Ge=tt.filter(function(Tt){return X.indexOf(Tt)!==-1}).length,Je=tt.filter(function(Tt){return X.indexOf(Tt)!==-1||Tt===F.digit}).length,Ke=typeof ge.exponentPart=="string";at===0&&Je===0&&(Ke?(Ge=1,Je=1):at=1),Ke&&at===0&&ge.integerPart.indexOf(F.digit)!==-1&&(at=1),at===0&&Ge===0&&(Ge=1);var jt=0;return Ke&&(jt=ge.exponentPart.split("").filter(function(Tt){return X.indexOf(Tt)!==-1}).length),{integerPartGroupingPositions:He,regularGrouping:qe,minimumIntegerPartSize:at,scalingFactor:ft,prefix:ge.prefix,fractionalPartGroupingPositions:st,minimumFactionalPartSize:Ge,maximumFactionalPartSize:Je,minimumExponentSize:jt,suffix:ge.suffix,picture:ge.subpicture}},Mt=Ne.map(ht);Mt.forEach(ot);var ct=Mt.map(gt),St=F["minus-sign"],nn=F["zero-digit"],Dt=F["decimal-separator"],hn=F["grouping-separator"];ct.length===1&&(ct.push(JSON.parse(JSON.stringify(ct[0]))),ct[1].prefix=St+ct[1].prefix);var Et;p>=0?Et=ct[0]:Et=ct[1];var ki;Et.picture.indexOf(F.percent)!==-1?ki=p*100:Et.picture.indexOf(F["per-mille"])!==-1?ki=p*1e3:ki=p;var Bn,vi;if(Et.minimumExponentSize===0)Bn=ki;else{var sc=Math.pow(10,Et.scalingFactor),ac=Math.pow(10,Et.scalingFactor-1);if(Bn=ki,vi=0,Bn!==0){for(;Math.abs(Bn)<ac;)Bn*=10,vi-=1;for(;Math.abs(Bn)>sc;)Bn/=10,vi+=1}}var oc=ee(Bn,Et.maximumFactionalPartSize),P=function(ge,Ue){var He=Math.abs(ge).toFixed(Ue);return nn!=="0"&&(He=He.split("").map(function(Pe){return Pe>="0"&&Pe<="9"?X[Pe.charCodeAt(0)-48]:Pe}).join("")),He},G=P(oc,Et.maximumFactionalPartSize),Z=G.indexOf(".");for(Z===-1?G=G+Dt:G=G.replace(".",Dt);G.charAt(0)===nn;)G=G.substring(1);for(;G.charAt(G.length-1)===nn;)G=G.substring(0,G.length-1);Z=G.indexOf(Dt);var te=Et.minimumIntegerPartSize-Z,Y=Et.minimumFactionalPartSize-(G.length-Z-1);if(G=(te>0?new Array(te+1).join(nn):"")+G,G=G+(Y>0?new Array(Y+1).join(nn):""),Z=G.indexOf(Dt),Et.regularGrouping>0)for(var Ee=Math.floor((Z-1)/Et.regularGrouping),Le=1;Le<=Ee;Le++)G=[G.slice(0,Z-Le*Et.regularGrouping),hn,G.slice(Z-Le*Et.regularGrouping)].join("");else Et.integerPartGroupingPositions.forEach(function(ge){G=[G.slice(0,Z-ge),hn,G.slice(Z-ge)].join(""),Z++});if(Z=G.indexOf(Dt),Et.fractionalPartGroupingPositions.forEach(function(ge){G=[G.slice(0,ge+Z+1),hn,G.slice(ge+Z+1)].join("")}),Z=G.indexOf(Dt),(Et.picture.indexOf(Dt)===-1||Z===G.length-1)&&(G=G.substring(0,G.length-1)),typeof vi<"u"){var Fe=P(vi,0);te=Et.minimumExponentSize-Fe.length,te>0&&(Fe=new Array(te+1).join(nn)+Fe),G=G+F["exponent-separator"]+(vi<0?St:"")+Fe}return G=Et.prefix+G+Et.suffix,G}}function j(p,v){if(!(typeof p>"u")){if(p=ee(p),typeof v>"u"?v=10:v=ee(v),v<2||v>36)throw{code:"D3100",stack:new Error().stack,value:v};var E=p.toString(v);return E}}function W(p){var v;if(!(typeof p>"u")){if(typeof p=="number")v=p;else if(typeof p=="string"&&/^-?[0-9]+(\.[0-9]+)?([Ee][-+]?[0-9]+)?$/.test(p)&&!isNaN(parseFloat(p))&&isFinite(p))v=parseFloat(p);else if(typeof p=="string"&&/^(0[xX][0-9A-Fa-f]+)|(0[oO][0-7]+)|(0[bB][0-1]+)$/.test(p))v=Number(p);else if(p===!0)v=1;else if(p===!1)v=0;else throw{code:"D3030",value:p,stack:new Error().stack,index:1};return v}}function le(p){var v;if(!(typeof p>"u"))return v=Math.abs(p),v}function be(p){var v;if(!(typeof p>"u"))return v=Math.floor(p),v}function U(p){var v;if(!(typeof p>"u"))return v=Math.ceil(p),v}function ee(p,v){var E;if(!(typeof p>"u")){if(v){var I=p.toString().split("e");p=+(I[0]+"e"+(I[1]?+I[1]+v:v))}E=Math.round(p);var F=E-p;return Math.abs(F)===.5&&Math.abs(E%2)===1&&(E=E-1),v&&(I=E.toString().split("e"),E=+(I[0]+"e"+(I[1]?+I[1]-v:-v))),Object.is(E,-0)&&(E=0),E}}function fe(p){var v;if(!(typeof p>"u")){if(p<0)throw{stack:new Error().stack,code:"D3060",index:1,value:p};return v=Math.sqrt(p),v}}function ye(p,v){var E;if(!(typeof p>"u")){if(E=Math.pow(p,v),!isFinite(E))throw{stack:new Error().stack,code:"D3061",index:1,value:p,exp:v};return E}}function Se(){return Math.random()}function ze(p){if(!(typeof p>"u")){var v=!1;if(Array.isArray(p)){if(p.length===1)v=ze(p[0]);else if(p.length>1){var E=p.filter(function(I){return ze(I)});v=E.length>0}}else typeof p=="string"?p.length>0&&(v=!0):l(p)?p!==0&&(v=!0):p!==null&&typeof p=="object"&&!f(p)?a.keys(p).length>0&&(v=!0):typeof p=="boolean"&&p===!0&&(v=!0);return v}}function _e(p){if(!(typeof p>"u"))return!ze(p)}function xe(p,v,E,I){var F=[v],X=b(p);return X>=2&&F.push(E),X>=3&&F.push(I),F}async function Xe(p,v){if(!(typeof p>"u")){for(var E=this.createSequence(),I=0;I<p.length;I++){var F=xe(v,p[I],I,p),X=await v.apply(this,F);typeof X<"u"&&E.push(X)}return E}}async function De(p,v){if(!(typeof p>"u")){for(var E=this.createSequence(),I=0;I<p.length;I++){var F=p[I],X=xe(v,F,I,p),me=await v.apply(this,X);ze(me)&&E.push(F)}return E}}async function N(p,v){if(!(typeof p>"u")){for(var E=!1,I,F=0;F<p.length;F++){var X=p[F],me=!0;if(typeof v<"u"){var ve=xe(v,X,F,p),$e=await v.apply(this,ve);me=ze($e)}if(me)if(!E)I=X,E=!0;else throw{stack:new Error().stack,code:"D3138",index:F}}if(!E)throw{stack:new Error().stack,code:"D3139"};return I}}function w(){for(var p=[],v=Array.prototype.slice.call(arguments),E=Math.min.apply(Math,v.map(function(X){return Array.isArray(X)?X.length:0})),I=0;I<E;I++){var F=v.map(X=>X[I]);p.push(F)}return p}async function q(p,v,E){if(!(typeof p>"u")){var I,F=b(v);if(F<2)throw{stack:new Error().stack,code:"D3050",index:1};var X;for(typeof E>"u"&&p.length>0?(I=p[0],X=1):(I=E,X=0);X<p.length;){var me=[I,p[X]];F>=3&&me.push(X),F>=4&&me.push(p),I=await v.apply(this,me),X++}return I}}function re(p){var v=this.createSequence();if(Array.isArray(p)){for(var E=Object.create(null),I=0;I<p.length;I++){var F=re.call(this,p[I]);F.forEach(function(X){E[X]=!0})}v=re.call(this,E)}else p!==null&&typeof p=="object"&&!f(p)&&a.keys(p).forEach(X=>v.push(X));return v}function pe(p,v){var E;if(Array.isArray(p)){E=this.createSequence();for(var I=0;I<p.length;I++){var F=pe.call(this,p[I],v);typeof F<"u"&&(Array.isArray(F)?F.forEach(X=>E.push(X)):E.push(F))}}else p!==null&&typeof p=="object"&&Object.prototype.hasOwnProperty.call(p,v)&&!f(p)&&(E=p[v]);return E}function ae(p,v){if(typeof p>"u")return v;if(typeof v>"u")return p;Array.isArray(p)||(p=this.createSequence(p)),Array.isArray(v)||(v=[v]);const E=p.length+v.length;if(this.options&&E>this.options.sequence)throw{code:"D2015",stack:new Error().stack,value:E};return p.concat(v)}function Ve(p){return!(typeof p>"u")}function Ae(p){var v=this.createSequence();if(Array.isArray(p))for(var E=0;E<p.length;E++)v=ae.call(this,v,Ae.call(this,p[E]));else if(p!==null&&typeof p=="object"&&!d(p))for(const F of a.keys(p)){var I=Object.create(null);I[F]=p[F],v.push(I)}else v=p;return v}function oe(p){if(!(typeof p>"u")){var v=Object.create(null);return p.forEach(function(E){for(const I of a.keys(E))v[I]=E[I]}),v}}function We(p){if(!(typeof p>"u")){if(p.length<=1)return p;for(var v=p.length,E=new Array(v),I=0;I<v;I++)E[v-I-1]=p[I];return E}}async function Me(p,v){var E=this.createSequence();for(const X of a.keys(p)){var I=xe(v,p[X],X,p),F=await v.apply(this,I);typeof F<"u"&&E.push(F)}return E}function Re(p){throw{code:"D3137",stack:new Error().stack,message:p||"$error() function evaluated"}}function je(p,v){if(!p)throw{code:"D3141",stack:new Error().stack,message:v||"$assert() statement failed"}}function Oe(p){if(p!==void 0)return p===null?"null":l(p)?"number":typeof p=="string"?"string":typeof p=="boolean"?"boolean":Array.isArray(p)?"array":f(p)?"function":"object"}async function Ce(p,v){if(!(typeof p>"u")){if(p.length<=1)return p;var E;if(typeof v>"u"){if(!h(p)&&!c(p))throw{stack:new Error().stack,code:"D3070",index:1};E=async function(me,ve){return me>ve}}else E=v;var I=async function(me,ve){var $e=async function(ht,ot,gt){ot.length===0?Array.prototype.push.apply(ht,gt):gt.length===0?Array.prototype.push.apply(ht,ot):await E(ot[0],gt[0])?(ht.push(gt[0]),await $e(ht,ot,gt.slice(1))):(ht.push(ot[0]),await $e(ht,ot.slice(1),gt))},Ne=[];return await $e(Ne,me,ve),Ne},F=async function(me){if(!Array.isArray(me)||me.length<=1)return me;var ve=Math.floor(me.length/2),$e=me.slice(0,ve),Ne=me.slice(ve);return $e=await F($e),Ne=await F(Ne),await I($e,Ne)},X=await F(p);return X}}function A(p){if(!(typeof p>"u")){if(p.length<=1)return p;for(var v=new Array(p.length),E=0;E<p.length;E++){var I=Math.floor(Math.random()*(E+1));E!==I&&(v[E]=v[I]),v[I]=p[E]}return v}}function x(p){if(!(typeof p>"u")){if(!Array.isArray(p)||p.length<=1)return p;for(var v=u(p)?this.createSequence():[],E=0;E<p.length;E++){for(var I=p[E],F=!1,X=0;X<v.length;X++)if(g(I,v[X])){F=!0;break}F||v.push(I)}return v}}async function L(p,v){var E=Object.create(null);for(const me of a.keys(p)){var I=p[me],F=xe(v,I,me,p),X=await v.apply(this,F);ze(X)&&(E[me]=I)}return a.keys(E).length===0&&(E=void 0),E}return{sum:S,count:y,max:M,min:T,average:R,string:k,substring:B,substringBefore:C,substringAfter:D,lowercase:V,uppercase:K,length:J,trim:se,pad:he,match:ne,contains:de,replace:ue,split:ie,join:ce,formatNumber:z,formatBase:j,number:W,floor:be,ceil:U,round:ee,abs:le,sqrt:fe,power:ye,random:Se,boolean:ze,not:_e,map:Xe,zip:w,filter:De,single:N,foldLeft:q,sift:L,keys:re,lookup:pe,append:ae,exists:Ve,spread:Ae,merge:oe,reverse:We,each:Me,error:Re,assert:je,type:Oe,sort:Ce,shuffle:A,distinct:x,base64encode:Te,base64decode:ke,encodeUrlComponent:O,encodeUrl:H,decodeUrlComponent:we,decodeUrl:Be}})();n.exports=o}).call(this)}).call(this,typeof $c<"u"?$c:typeof self<"u"?self:typeof window<"u"?window:{})},{"./utils":6}],3:[function(t,n,r){var s=t("./datetime"),a=t("./functions"),o=t("./utils"),l=t("./parser"),c=t("./signature"),h=(function(){var u=o.isNumeric,f=o.isArrayOfStrings,d=o.isArrayOfNumbers,_=o.isSequence,b=o.isFunction,g=o.isLambda,m=o.isIterable,S=o.isPromise,y=o.getFunctionArity,M=o.isDeepEqual,T=Re(null);async function R(A,x,L){var p;L.base.depth++,L.base.guardrails();var v=L.lookup(Symbol.for("jsonata.__evaluate_entry"));switch(v&&await v(A,x,L),A.type){case"path":p=await k(A,x,L);break;case"binary":p=await J(A,x,L);break;case"unary":p=await se(A,x,L);break;case"name":p=he(A,x,L);break;case"string":case"number":case"value":p=Q(A);break;case"wildcard":p=de(A,x,L);break;case"descendant":p=ue(A,x,L);break;case"parent":p=L.lookup(A.slot.label);break;case"condition":p=await be(A,x,L);break;case"block":p=await U(A,x,L);break;case"bind":p=await le(A,x,L);break;case"regex":p=ee(A,x,L);break;case"function":p=await xe(A,x,L);break;case"variable":p=fe(A,x,L);break;case"lambda":p=N(A,x,L);break;case"partial":p=await w(A,x,L);break;case"apply":p=await _e(A,x,L);break;case"transform":p=Se(A,x,L);break}if(Object.prototype.hasOwnProperty.call(A,"predicate"))for(var E=0;E<A.predicate.length;E++)p=await K(A.predicate[E].expr,p,L);A.type!=="path"&&Object.prototype.hasOwnProperty.call(A,"group")&&(p=await z(A.group,p,L));var I=L.lookup(Symbol.for("jsonata.__evaluate_exit"));return I&&await I(A,x,L,p),p&&_(p)&&!p.tupleStream&&(A.keepArray&&(p.keepSingleton=!0),p.length===0?p=void 0:p.length===1&&(p=p.keepSingleton?p:p[0])),L.base.depth--,p}async function k(A,x,L){var p;Array.isArray(x)&&A.steps[0].type!=="variable"?p=x:p=L.base.createSequence(x);for(var v,E=!1,I=void 0,F=0;F<A.steps.length;F++){var X=A.steps[F];if(X.tuple&&(E=!0),F===0&&X.consarray?v=await R(X,p,L):E?I=await V(X,p,I,L):v=await C(X,p,L,F===A.steps.length-1),!E&&(typeof v>"u"||v.length===0))break;typeof X.focus>"u"&&(p=v)}if(E)if(A.tuple)v=I;else for(v=L.base.createSequence(),F=0;F<I.length;F++)v.push(I[F]["@"]);return A.keepSingletonArray&&(Array.isArray(v)&&v.cons&&!v.sequence&&(v=L.base.createSequence(v)),v.keepSingleton=!0),Object.prototype.hasOwnProperty.call(A,"group")&&(v=await z(A.group,E?I:v,L)),v}function B(A,x){var L=Re(A);for(const p of o.keys(x))L.bind(p,x[p]);return L}async function C(A,x,L,p){var v;if(A.type==="sort")return v=await ye(A,x,L),A.stages&&(v=await D(A.stages,v,L)),v;v=L.base.createSequence();for(var E=0;E<x.length;E++){var I=await R(A,x[E],L);if(A.stages)for(var F=0;F<A.stages.length;F++)I=await K(A.stages[F].expr,I,L);typeof I<"u"&&v.push(I)}var X=L.base.createSequence();return p&&v.length===1&&Array.isArray(v[0])&&!_(v[0])?X=v[0]:Array.prototype.forEach.call(v,function(me){!Array.isArray(me)||me.cons?X.push(me):Array.prototype.forEach.call(me,ve=>X.push(ve))}),X}async function D(A,x,L){for(var p=x,v=0;v<A.length;v++){var E=A[v];switch(E.type){case"filter":p=await K(E.expr,p,L);break;case"index":for(var I=0;I<p.length;I++){var F=p[I];F[E.value]=I}break}}return p}async function V(A,x,L,p){var v;if(A.type==="sort"){if(L)v=await ye(A,L,p);else{var E=await ye(A,x,p);v=p.base.createSequence(),v.tupleStream=!0;for(var I=0;I<E.length;I++){var F={"@":E[I]};F[A.index]=I,v.push(F)}}return A.stages&&(v=await D(A.stages,v,p)),v}v=p.base.createSequence(),v.tupleStream=!0;var X=p;L===void 0&&(L=x.map(Ne=>({"@":Ne})));for(var me=0;me<L.length;me++){X=B(p,L[me]);var ve=await R(A,L[me]["@"],X);if(typeof ve<"u"){Array.isArray(ve)||(ve=[ve]);for(var $e=0;$e<ve.length;$e++)F=Object.create(null),Object.assign(F,L[me]),ve.tupleStream?Object.assign(F,ve[$e]):(A.focus?(F[A.focus]=ve[$e],F["@"]=L[me]["@"]):F["@"]=ve[$e],A.index&&(F[A.index]=$e),A.ancestor&&(F[A.ancestor.label]=L[me]["@"])),v.push(F)}}return A.stages&&(v=await D(A.stages,v,p)),v}async function K(A,x,L){var p=L.base.createSequence();if(x&&x.tupleStream&&(p.tupleStream=!0),Array.isArray(x)||(x=L.base.createSequence(x)),A.type==="number"){var v=Math.floor(A.value);v<0&&(v=x.length+v);var E=await x[v];typeof E<"u"&&(Array.isArray(E)?p=E:p.push(E))}else for(v=0;v<x.length;v++){var E=x[v],I=E,F=L;x.tupleStream&&(I=E["@"],F=B(L,E));var X=await R(A,I,F);u(X)&&(X=[X]),d(X)?Array.prototype.forEach.call(X,function(ve){var $e=Math.floor(ve);$e<0&&($e=x.length+$e),$e===v&&p.push(E)}):a.boolean(X)&&p.push(E)}return p}async function J(A,x,L){var p,v=await R(A.lhs,x,L),E=A.value,I=async()=>await R(A.rhs,x,L);if(E==="and"||E==="or")try{return await Be(v,I,E)}catch(X){throw X.position=A.position,X.token=E,X}var F=await I();try{switch(E){case"+":case"-":case"*":case"/":case"%":p=ke(v,F,E);break;case"=":case"!=":p=O(v,F,E);break;case"<":case"<=":case">":case">=":p=H(v,F,E);break;case"&":p=ce(v,F);break;case"..":p=W(v,F,L);break;case"in":p=we(v,F);break}}catch(X){throw X.position=A.position,X.token=E,X}return p}async function se(A,x,L){var p,v={options:L.base.options,createSequence:L.base.createSequence};switch(A.value){case"-":if(p=await R(A.expression,x,L),typeof p>"u")p=void 0;else if(u(p))p=-p;else throw{code:"D1002",stack:new Error().stack,position:A.position,token:A.value,value:p};break;case"[":p=[];let F=await Promise.all(A.expressions.map(async(X,me)=>(L.isParallelCall=me>0,[X,await R(X,x,L)])));for(let X of F){var[E,I]=X;typeof I<"u"&&(E.value==="["?p.push(I):p=a.append.call(v,p,I))}A.consarray&&Object.defineProperty(p,"cons",{enumerable:!1,configurable:!1,value:!0});break;case"{":p=await z(A,x,L);break}return p}function he(A,x,L){var p={createSequence:L.base.createSequence};return a.lookup.call(p,x,A.value)}function Q(A){return A.value}function de(A,x,L){var p={options:L.base.options,createSequence:L.base.createSequence},v=p.createSequence();return Array.isArray(x)&&x.outerWrapper&&x.length>0&&(x=x[0]),x!==null&&typeof x=="object"&&!b(x)&&o.keys(x).forEach(function(E){var I=x[E];Array.isArray(I)?(I=ne(I),v=a.append.call(p,v,I)):v.push(I)}),v}function ne(A,x){return typeof x>"u"&&(x=[]),Array.isArray(A)?Array.prototype.forEach.call(A,function(L){ne(L,x)}):x.push(A),x}function ue(A,x,L){var p,v=L.base.createSequence();return typeof x<"u"&&(Te(x,v),v.length===1?p=v[0]:p=v),p}function Te(A,x){Array.isArray(A)||x.push(A),Array.isArray(A)?Array.prototype.forEach.call(A,function(L){Te(L,x)}):A!==null&&typeof A=="object"&&!b(A)&&o.keys(A).forEach(function(L){Te(A[L],x)})}function ke(A,x,L){var p;if(typeof A<"u"&&!u(A))throw{code:"T2001",stack:new Error().stack,value:A};if(typeof x<"u"&&!u(x))throw{code:"T2002",stack:new Error().stack,value:x};if(typeof A>"u"||typeof x>"u")return p;switch(L){case"+":p=A+x;break;case"-":p=A-x;break;case"*":p=A*x;break;case"/":p=A/x;break;case"%":p=A%x;break}return p}function O(A,x,L){var p,v=typeof A,E=typeof x;if(v==="undefined"||E==="undefined")return!1;switch(L){case"=":p=M(A,x);break;case"!=":p=!M(A,x);break}return p}function H(A,x,L){var p,v=typeof A,E=typeof x,I=v==="undefined"||v==="string"||v==="number",F=E==="undefined"||E==="string"||E==="number";if(!I||!F)throw{code:"T2010",stack:new Error().stack,value:v==="string"||v==="number"?x:A};if(!(v==="undefined"||E==="undefined")){if(v!==E)throw{code:"T2009",stack:new Error().stack,value:A,value2:x};switch(L){case"<":p=A<x;break;case"<=":p=A<=x;break;case">":p=A>x;break;case">=":p=A>=x;break}return p}}function we(A,x){var L=!1;if(typeof A>"u"||typeof x>"u")return!1;Array.isArray(x)||(x=[x]);for(var p=0;p<x.length;p++)if(x[p]===A){L=!0;break}return L}async function Be(A,x,L){var p,v=ie(A);switch(L){case"and":p=v&&ie(await x());break;case"or":p=v||ie(await x());break}return p}function ie(A){var x=a.boolean(A);return typeof x>"u"?!1:x}function ce(A,x){var L,p="",v="";return typeof A<"u"&&(p=a.string(A)),typeof x<"u"&&(v=a.string(x)),L=p.concat(v),L}async function z(A,x,L){var p=Object.create(null),v=Object.create(null),E=!!(x&&x.tupleStream),I={options:L.base.options,createSequence:L.base.createSequence};Array.isArray(x)||(L.base.options,x=I.createSequence(x)),x.length===0&&!E&&x.push(void 0);for(var F=0;F<x.length;F++)for(var X=x[F],me=E?B(L,X):L,ve=0;ve<A.lhs.length;ve++){var $e=A.lhs[ve],Ne=await R($e[0],E?X["@"]:X,me);if(typeof Ne!="string"&&Ne!==void 0)throw{code:"T1003",stack:new Error().stack,position:A.position,value:Ne};if(Ne!==void 0){if(Ne==="_jsonata_lambda"||Ne==="_jsonata_function")throw{code:"D1013",stack:new Error().stack,position:A.position,value:Ne};var ht={data:X,exprIndex:ve};if(Object.prototype.hasOwnProperty.call(v,Ne)){if(v[Ne].exprIndex!==ve)throw{code:"D1009",stack:new Error().stack,position:A.position,value:Ne};v[Ne].data=a.append.call(I,v[Ne].data,X)}else v[Ne]=ht}}let ot=await Promise.all(o.keys(v).map(async(Mt,ct)=>{let St=v[Mt];var nn=St.data,Dt=L;if(E){var hn=j(St.data,L);nn=hn["@"],delete hn["@"],Dt=B(L,hn)}return L.isParallelCall=ct>0,[Mt,await R(A.lhs[St.exprIndex][1],nn,Dt)]}));for(let Mt of ot){var[Ne,gt]=await Mt;typeof gt<"u"&&(p[Ne]=gt)}return p}function j(A,x){if(!Array.isArray(A))return A;var L=Object.create(null),p={options:x.base.options,createSequence:x.base.createSequence};Object.assign(L,A[0]);for(var v=1;v<A.length;v++)for(const E of o.keys(A[v]))L[E]=a.append.call(p,L[E],A[v][E]);return L}function W(A,x,L){var p;if(typeof A<"u"&&!Number.isInteger(A))throw{code:"T2003",stack:new Error().stack,value:A};if(typeof x<"u"&&!Number.isInteger(x))throw{code:"T2004",stack:new Error().stack,value:x};if(typeof A>"u"||typeof x>"u"||A>x)return p;var v=x-A+1;if(v>1e7)throw{code:"D2014",stack:new Error().stack,value:v};if(L.base.options&&v>L.base.options.sequence)throw{code:"D2015",stack:new Error().stack,value:v};p=new Array(v);for(var E=A,I=0;E<=x;E++,I++)p[I]=E;return p.sequence=!0,p}async function le(A,x,L){var p=await R(A.rhs,x,L);return L.bind(A.lhs.value,p),p}async function be(A,x,L){var p,v=await R(A.condition,x,L);return a.boolean(v)?p=await R(A.then,x,L):typeof A.else<"u"&&(p=await R(A.else,x,L)),p}async function U(A,x,L){for(var p,v=Re(L),E=0;E<A.expressions.length;E++)p=await R(A.expressions[E],x,v);return p}function ee(A,x,L){var p=new L.base.RegexEngine(A.value),v=function(E,I){var F;p.lastIndex=I||0;var X=p.exec(E);if(X!==null){if(F={match:X[0],start:X.index,end:X.index+X[0].length,groups:[]},X.length>1)for(var me=1;me<X.length;me++)F.groups.push(X[me]);F.next=function(){if(!(p.lastIndex>=E.length)){var ve=v(E,p.lastIndex);if(ve&&ve.match==="")throw{code:"D1004",stack:new Error().stack,position:A.position,value:A.value.source};return ve}}}return F};return v}function fe(A,x,L){var p;return A.value===""?p=x&&x.outerWrapper?x[0]:x:p=L.lookup(A.value),p}async function ye(A,x,L){var p,v=x,E=!!x.tupleStream,I=async function(X,me){for(var ve=0,$e=0;ve===0&&$e<A.terms.length;$e++){var Ne=A.terms[$e],ht=X,ot=L;E&&(ht=X["@"],ot=B(L,X));var gt=await R(Ne.expression,ht,ot);ht=me,ot=L,E&&(ht=me["@"],ot=B(L,me));var Mt=await R(Ne.expression,ht,ot),ct=typeof gt,St=typeof Mt;if(ct==="undefined"){ve=St==="undefined"?0:1;continue}if(St==="undefined"){ve=-1;continue}if(!(ct==="string"||ct==="number")||!(St==="string"||St==="number"))throw{code:"T2008",stack:new Error().stack,position:A.position,value:ct==="string"||ct==="number"?Mt:gt};if(ct!==St)throw{code:"T2007",stack:new Error().stack,position:A.position,value:gt,value2:Mt};gt!==Mt&&(gt<Mt?ve=-1:ve=1,Ne.descending===!0&&(ve=-ve))}return ve===1},F={environment:L,input:x};return p=await a.sort.apply(F,[v,I]),p}function Se(A,x,L){var p=async function(v){if(!(typeof v>"u")){var E=L.lookup("clone");if(!b(E))throw{code:"T2013",stack:new Error().stack,position:A.position};var I=await Xe(E,[v],null,L),F=await R(A.pattern,I,L);if(typeof F<"u"){Array.isArray(F)||(F=[F]);for(var X=0;X<F.length;X++){var me=F[X],ve=await R(A.update,me,L),$e=typeof ve;if($e!=="undefined"){if($e!=="object"||ve===null||Array.isArray(ve))throw{code:"T2011",stack:new Error().stack,position:A.update.position,value:ve};for(const gt of o.keys(ve))me[gt]=ve[gt]}if(typeof A.delete<"u"){var Ne=await R(A.delete,me,L);if(typeof Ne<"u"){var ht=Ne;if(Array.isArray(Ne)||(Ne=[Ne]),!f(Ne))throw{code:"T2012",stack:new Error().stack,position:A.delete.position,value:ht};for(var ot=0;ot<Ne.length;ot++)typeof me=="object"&&me!==null&&delete me[Ne[ot]]}}}}return I}};return oe(p,"<(oa):o>")}var ze=l("function($f, $g) { function($x){ $g($f($x)) } }");async function _e(A,x,L){var p,v=await R(A.lhs,x,L);if(A.rhs.type==="function")p=await xe(A.rhs,x,L,{context:v});else{var E=await R(A.rhs,x,L);if(!b(E))throw{code:"T2006",stack:new Error().stack,position:A.position,value:E};if(b(v)){var I=await R(ze,null,L);p=await Xe(I,[v,E],null,L)}else p=await Xe(E,[v],null,L)}return p}async function xe(A,x,L,p){var v,E=await R(A.procedure,x,L);if(typeof E>"u"&&A.procedure.type==="path"&&L.lookup(A.procedure.steps[0].value))throw{code:"T1005",stack:new Error().stack,position:A.position,token:A.procedure.steps[0].value};var I=[];typeof p<"u"&&I.push(p.context);for(var F=0;F<A.arguments.length;F++){const me=await R(A.arguments[F],x,L);if(b(me)){const ve=async function(...$e){return await Xe(me,$e,null,L)};ve.arity=y(me),I.push(ve)}else I.push(me)}var X=A.procedure.type==="path"?A.procedure.steps[0].value:A.procedure.value;try{typeof E=="object"&&(E.token=X,E.position=A.position),v=await Xe(E,I,x,L)}catch(me){throw me.position||(me.position=A.position),me.token||(me.token=X),me}return v}async function Xe(A,x,L,p){var v;for(v=await De(A,x,L,p);g(v)&&v.thunk===!0;){var E=await R(v.body.procedure,v.input,v.environment);v.body.procedure.type==="variable"&&(E.token=v.body.procedure.value),E.position=v.body.procedure.position;for(var I=[],F=0;F<v.body.arguments.length;F++)I.push(await R(v.body.arguments[F],v.input,v.environment));v=await De(E,I,L,p)}return v}async function De(A,x,L,p){var v;try{var E=x;if(A&&(E=q(A.signature,x,L)),g(A))v=await re(A,E);else if(A&&A._jsonata_function===!0){var I={environment:p,input:L,options:p.base.options,createSequence:p.base.createSequence};v=A.implementation.apply(I,E),m(v)&&(v=v.next().value),S(v)&&(v=await v)}else if(typeof A=="function")v=A.apply(L,E),S(v)&&(v=await v);else throw{code:"T1006",stack:new Error().stack}}catch(F){throw A&&(typeof F.token>"u"&&typeof A.token<"u"&&(F.token=A.token),F.position=A.position||F.position),F}return v}function N(A,x,L){var p={_jsonata_lambda:!0,input:x,environment:L,arguments:A.arguments,signature:A.signature,body:A.body};return A.thunk===!0&&(p.thunk=!0),p.apply=async function(v,E){return await Xe(p,E,x,v?v.environment:L)},p}async function w(A,x,L){for(var p,v=[],E=0;E<A.arguments.length;E++){var I=A.arguments[E];I.type==="operator"&&I.value==="?"?v.push(I):v.push(await R(I,x,L))}var F=await R(A.procedure,x,L);if(typeof F>"u"&&A.procedure.type==="path"&&L.lookup(A.procedure.steps[0].value))throw{code:"T1007",stack:new Error().stack,position:A.position,token:A.procedure.steps[0].value};if(g(F))p=pe(F,v,L);else if(F&&F._jsonata_function===!0)p=ae(F.implementation,v,L);else if(typeof F=="function")p=ae(F,v,L);else throw{code:"T1008",stack:new Error().stack,position:A.position,token:A.procedure.type==="path"?A.procedure.steps[0].value:A.procedure.value};return p}function q(A,x,L){if(typeof A>"u")return x;var p=A.validate(x,L);return p}async function re(A,x){var L,p=Re(A.environment);return Array.prototype.forEach.call(A.arguments,function(v,E){p.bind(v.value,x[E])}),typeof A.body=="function"?L=await Ve(A.body,p):L=await R(A.body,A.input,p),L}function pe(A,x,L){var p=Re(A.environment||L),v=[];Array.prototype.forEach.call(A.arguments,function(I,F){var X=x[F];X&&X.type==="operator"&&X.value==="?"?v.push(I):p.bind(I.value,X)});var E={_jsonata_lambda:!0,input:A.input,environment:p,arguments:v,body:A.body};return E}function ae(A,x,L){var p=Ae(A);p=p.map(function(F){return"$"+F.trim()});var v="function("+p.join(", ")+"){ _ }",E=l(v);E.body=A;var I=pe(E,x,L);return I}async function Ve(A,x){var L=Ae(A),p=L.map(function(I){return x.lookup(I.trim())}),v={environment:x,createSequence:x.base.createSequence},E=A.apply(v,p);return S(E)&&(E=await E),E}function Ae(A){var x=A.toString(),L=/\(([^)]*)\)/.exec(x)[1],p=L.split(",");return p}function oe(A,x){var L={_jsonata_function:!0,implementation:A};return typeof x<"u"&&(L.signature=c(x)),L}async function We(A,x){if(!(typeof A>"u")){var L=this.input;typeof x<"u"&&(L=x,Array.isArray(L)&&!_(L)&&(L=this.createSequence(L),L.outerWrapper=!0));try{var p=l(A,!1)}catch(E){throw Oe(E),{stack:new Error().stack,code:"D3120",value:E.message,error:E}}try{var v=await R(p,L,this.environment)}catch(E){throw Oe(E),{stack:new Error().stack,code:"D3121",value:E.message,error:E}}return v}}function Me(A){if(!(typeof A>"u"))return JSON.parse(a.string(A))}function Re(A){var x=Object.create(null);const L={bind:function(v,E){x[v]=E},lookup:function(v){var E;return Object.prototype.hasOwnProperty.call(x,v)?E=x[v]:A&&(E=A.lookup(v)),E},timestamp:A?A.timestamp:null,async:A?A.async:!1,isParallelCall:A?A.isParallelCall:!1,global:A?A.global:{ancestry:[null]}};if(A){var p=A.lookup(Symbol.for("jsonata.__createFrame_push"));p&&p(A,L),L.base=A.base}return L}T.bind("sum",oe(a.sum,"<a<n>:n>")),T.bind("count",oe(a.count,"<a:n>")),T.bind("max",oe(a.max,"<a<n>:n>")),T.bind("min",oe(a.min,"<a<n>:n>")),T.bind("average",oe(a.average,"<a<n>:n>")),T.bind("string",oe(a.string,"<x-b?:s>")),T.bind("substring",oe(a.substring,"<s-nn?:s>")),T.bind("substringBefore",oe(a.substringBefore,"<s-s:s>")),T.bind("substringAfter",oe(a.substringAfter,"<s-s:s>")),T.bind("lowercase",oe(a.lowercase,"<s-:s>")),T.bind("uppercase",oe(a.uppercase,"<s-:s>")),T.bind("length",oe(a.length,"<s-:n>")),T.bind("trim",oe(a.trim,"<s-:s>")),T.bind("pad",oe(a.pad,"<s-ns?:s>")),T.bind("match",oe(a.match,"<s-f<s:o>n?:a<o>>")),T.bind("contains",oe(a.contains,"<s-(sf):b>")),T.bind("replace",oe(a.replace,"<s-(sf)(sf)n?:s>")),T.bind("split",oe(a.split,"<s-(sf)n?:a<s>>")),T.bind("join",oe(a.join,"<a<s>s?:s>")),T.bind("formatNumber",oe(a.formatNumber,"<n-so?:s>")),T.bind("formatBase",oe(a.formatBase,"<n-n?:s>")),T.bind("formatInteger",oe(s.formatInteger,"<n-s:s>")),T.bind("parseInteger",oe(s.parseInteger,"<s-s:n>")),T.bind("number",oe(a.number,"<(nsb)-:n>")),T.bind("floor",oe(a.floor,"<n-:n>")),T.bind("ceil",oe(a.ceil,"<n-:n>")),T.bind("round",oe(a.round,"<n-n?:n>")),T.bind("abs",oe(a.abs,"<n-:n>")),T.bind("sqrt",oe(a.sqrt,"<n-:n>")),T.bind("power",oe(a.power,"<n-n:n>")),T.bind("random",oe(a.random,"<:n>")),T.bind("boolean",oe(a.boolean,"<x-:b>")),T.bind("not",oe(a.not,"<x-:b>")),T.bind("map",oe(a.map,"<af>")),T.bind("zip",oe(a.zip,"<a+>")),T.bind("filter",oe(a.filter,"<af>")),T.bind("single",oe(a.single,"<af?>")),T.bind("reduce",oe(a.foldLeft,"<afj?:j>")),T.bind("sift",oe(a.sift,"<o-f?:o>")),T.bind("keys",oe(a.keys,"<x-:a<s>>")),T.bind("lookup",oe(a.lookup,"<x-s:x>")),T.bind("append",oe(a.append,"<xx:a>")),T.bind("exists",oe(a.exists,"<x:b>")),T.bind("spread",oe(a.spread,"<x-:a<o>>")),T.bind("merge",oe(a.merge,"<a<o>:o>")),T.bind("reverse",oe(a.reverse,"<a:a>")),T.bind("each",oe(a.each,"<o-f:a>")),T.bind("error",oe(a.error,"<s?:x>")),T.bind("assert",oe(a.assert,"<bs?:x>")),T.bind("type",oe(a.type,"<x:s>")),T.bind("sort",oe(a.sort,"<af?:a>")),T.bind("shuffle",oe(a.shuffle,"<a:a>")),T.bind("distinct",oe(a.distinct,"<x:x>")),T.bind("base64encode",oe(a.base64encode,"<s-:s>")),T.bind("base64decode",oe(a.base64decode,"<s-:s>")),T.bind("encodeUrlComponent",oe(a.encodeUrlComponent,"<s-:s>")),T.bind("encodeUrl",oe(a.encodeUrl,"<s-:s>")),T.bind("decodeUrlComponent",oe(a.decodeUrlComponent,"<s-:s>")),T.bind("decodeUrl",oe(a.decodeUrl,"<s-:s>")),T.bind("eval",oe(We,"<sx?:x>")),T.bind("toMillis",oe(s.toMillis,"<s-s?:n>")),T.bind("fromMillis",oe(s.fromMillis,"<n-s?s?:s>")),T.bind("clone",oe(Me,"<(oa)-:o>"));var je={S0101:"String literal must be terminated by a matching quote",S0102:"Number out of range: {{token}}",S0103:"Unsupported escape sequence: \\{{token}}",S0104:"The escape sequence \\u must be followed by 4 hex digits",S0105:"Quoted property name must be terminated with a backquote (`)",S0106:"Comment has no closing tag",S0201:"Syntax error: {{token}}",S0202:"Expected {{value}}, got {{token}}",S0203:"Expected {{value}} before end of expression",S0204:"Unknown operator: {{token}}",S0205:"Unexpected token: {{token}}",S0206:"Unknown expression type: {{token}}",S0207:"Unexpected end of expression",S0208:"Parameter {{value}} of function definition must be a variable name (start with $)",S0209:"A predicate cannot follow a grouping expression in a step",S0210:"Each step can only have one grouping expression",S0211:"The symbol {{token}} cannot be used as a unary operator",S0212:"The left side of := must be a variable name (start with $)",S0213:"The literal value {{value}} cannot be used as a step within a path expression",S0214:"The right side of {{token}} must be a variable name (start with $)",S0215:"A context variable binding must precede any predicates on a step",S0216:"A context variable binding must precede the 'order-by' clause on a step",S0217:"The object representing the 'parent' cannot be derived from this expression",S0301:"Empty regular expressions are not allowed",S0302:"No terminating / in regular expression",S0402:"Choice groups containing parameterized types are not supported",S0401:"Type parameters can only be applied to functions and arrays",S0500:"Attempted to evaluate an expression containing syntax error(s)",T0410:"Argument {{index}} of function {{token}} does not match function signature",T0411:"Context value is not a compatible type with argument {{index}} of function {{token}}",T0412:"Argument {{index}} of function {{token}} must be an array of {{type}}",D1001:"Number out of range: {{value}}",D1002:"Cannot negate a non-numeric value: {{value}}",T1003:"Key in object structure must evaluate to a string; got: {{value}}",D1004:"Regular expression matches zero length string",T1005:"Attempted to invoke a non-function. Did you mean ${{{token}}}?",T1006:"Attempted to invoke a non-function",T1007:"Attempted to partially apply a non-function. Did you mean ${{{token}}}?",T1008:"Attempted to partially apply a non-function",D1009:"Multiple key definitions evaluate to same key: {{value}}",T1010:"The matcher function argument passed to function {{token}} does not return the correct object structure",D1011:"Stack overflow. Check for non-terminating recursive function. Consider rewriting as tail-recursive",D1012:"Evaluation timeout after {{value}} milliseconds. Check for infinite loop",D1013:"Object property names starting with _jsonata_ are reserved for internal use: {{value}}",T2001:"The left side of the {{token}} operator must evaluate to a number",T2002:"The right side of the {{token}} operator must evaluate to a number",T2003:"The left side of the range operator (..) must evaluate to an integer",T2004:"The right side of the range operator (..) must evaluate to an integer",D2005:"The left side of := must be a variable name (start with $)",T2006:"The right side of the function application operator ~> must be a function",T2007:"Type mismatch when comparing values {{value}} and {{value2}} in order-by clause",T2008:"The expressions within an order-by clause must evaluate to numeric or string values",T2009:"The values {{value}} and {{value2}} either side of operator {{token}} must be of the same data type",T2010:"The expressions either side of operator {{token}} must evaluate to numeric or string values",T2011:"The insert/update clause of the transform expression must evaluate to an object: {{value}}",T2012:"The delete clause of the transform expression must evaluate to a string or array of strings: {{value}}",T2013:"The transform expression clones the input object using the $clone() function. This has been overridden in the current scope by a non-function.",D2014:"The size of the sequence allocated by the range operator (..) must not exceed 1e7. Attempted to allocate {{value}}.",D2015:"The maximum sequence length of {{value}} was exceeded.",D3001:"Attempting to invoke string function on Infinity or NaN",D3010:"Second argument of replace function cannot be an empty string",D3011:"Fourth argument of replace function must evaluate to a positive number",D3012:"Attempted to replace a matched string with a non-string value",D3020:"Third argument of split function must evaluate to a positive number",D3030:"Unable to cast value to a number: {{value}}",D3040:"Third argument of match function must evaluate to a positive number",D3050:"The second argument of reduce function must be a function with at least two arguments",D3060:"The sqrt function cannot be applied to a negative number: {{value}}",D3061:"The power function has resulted in a value that cannot be represented as a JSON number: base={{value}}, exponent={{exp}}",D3070:"The single argument form of the sort function can only be applied to an array of strings or an array of numbers. Use the second argument to specify a comparison function",D3080:"The picture string must only contain a maximum of two sub-pictures",D3081:"The sub-picture must not contain more than one instance of the 'decimal-separator' character",D3082:"The sub-picture must not contain more than one instance of the 'percent' character",D3083:"The sub-picture must not contain more than one instance of the 'per-mille' character",D3084:"The sub-picture must not contain both a 'percent' and a 'per-mille' character",D3085:"The mantissa part of a sub-picture must contain at least one character that is either an 'optional digit character' or a member of the 'decimal digit family'",D3086:"The sub-picture must not contain a passive character that is preceded by an active character and that is followed by another active character",D3087:"The sub-picture must not contain a 'grouping-separator' character that appears adjacent to a 'decimal-separator' character",D3088:"The sub-picture must not contain a 'grouping-separator' at the end of the integer part",D3089:"The sub-picture must not contain two adjacent instances of the 'grouping-separator' character",D3090:"The integer part of the sub-picture must not contain a member of the 'decimal digit family' that is followed by an instance of the 'optional digit character'",D3091:"The fractional part of the sub-picture must not contain an instance of the 'optional digit character' that is followed by a member of the 'decimal digit family'",D3092:"A sub-picture that contains a 'percent' or 'per-mille' character must not contain a character treated as an 'exponent-separator'",D3093:"The exponent part of the sub-picture must comprise only of one or more characters that are members of the 'decimal digit family'",D3100:"The radix of the formatBase function must be between 2 and 36. It was given {{value}}",D3110:"The argument of the toMillis function must be an ISO 8601 formatted timestamp. Given {{value}}",D3120:"Syntax error in expression passed to function eval: {{value}}",D3121:"Dynamic error evaluating the expression passed to function eval: {{value}}",D3130:"Formatting or parsing an integer as a sequence starting with {{value}} is not supported by this implementation",D3131:"In a decimal digit pattern, all digits must be from the same decimal group",D3132:"Unknown component specifier {{value}} in date/time picture string",D3133:"The 'name' modifier can only be applied to months and days in the date/time picture string, not {{value}}",D3134:"The timezone integer format specifier cannot have more than four digits",D3135:"No matching closing bracket ']' in date/time picture string",D3136:"The date/time picture string is missing specifiers required to parse the timestamp",D3137:"{{{message}}}",D3138:"The $single() function expected exactly 1 matching result. Instead it matched more.",D3139:"The $single() function expected exactly 1 matching result. Instead it matched 0.",D3140:"Malformed URL passed to ${{{functionName}}}(): {{value}}",D3141:"{{{message}}}"};function Oe(A){var x=je[A.code];if(typeof x<"u"){var L=x.replace(/\{\{\{([^}]+)}}}/g,function(){return A[arguments[1]]});L=L.replace(/\{\{([^}]+)}}/g,function(){return JSON.stringify(A[arguments[1]])}),A.message=L}}function Ce(A,x){var L,p;try{L=l(A,x&&x.recover),p=L.errors,delete L.errors}catch(I){throw Oe(I),I}var v=Re(T),E=new Date;return v.bind("now",oe(function(I,F){return s.fromMillis(E.getTime(),I,F)},"<s?s?:s>")),v.bind("millis",oe(function(){return E.getTime()},"<:n>")),{evaluate:async function(I,F,X){if(typeof p<"u"){var me={code:"S0500",position:0};throw Oe(me),me}const ve=Re(v);for(const Ne of o.keys(F))ve.bind(Ne,F[Ne]);if(ve.bind("$",I),E=new Date,ve.timestamp=E,ve.options=x,ve.createSequence=function(){var Ne=[];return x&&x.sequence&&(Ne.push=function(...ht){if(Ne.length+ht.length>x.sequence)throw{code:"D2015",stack:new Error().stack,value:x.sequence};return Array.prototype.push.apply(Ne,ht)}),Ne.sequence=!0,arguments.length===1&&Ne.push(arguments[0]),Ne},Array.isArray(I)&&!_(I)&&(I=ve.createSequence(I),I.outerWrapper=!0),x&&(x.timeout||x.stack)){const Ne=Date.now();ve.guardrails=function(){if(x.stack>0&&ve.depth>x.stack)throw{code:"D1011",value:x.stack,stack:new Error().stack};if(x.timeout>0&&Date.now()-Ne>x.timeout)throw{code:"D1012",value:x.timeout,stack:new Error().stack}}}else ve.guardrails=function(){};ve.base=ve,ve.depth=0,x&&x.RegexEngine?ve.RegexEngine=x.RegexEngine:ve.RegexEngine=RegExp;var $e;try{return $e=await R(L,I,ve),typeof X=="function"&&X(null,$e),$e}catch(Ne){throw Oe(Ne),Ne}},assign:function(I,F){v.bind(I,F)},registerFunction:function(I,F,X){var me=oe(F,X);v.bind(I,me)},ast:function(){return L},errors:function(){return p}}}return Ce.parser=l,Ce})();n.exports=h},{"./datetime":1,"./functions":2,"./parser":4,"./signature":5,"./utils":6}],4:[function(t,n,r){var s=t("./signature");const a=(()=>{var o={".":75,"[":80,"]":0,"{":70,"}":0,"(":80,")":0,",":0,"@":80,"#":80,";":80,":":80,"?":20,"+":50,"-":50,"*":60,"/":60,"%":60,"|":20,"=":40,"<":40,">":40,"^":40,"**":60,"..":20,":=":10,"!=":40,"<=":40,">=":40,"~>":40,"?:":40,"??":40,and:30,or:25,in:40,"&":50,"!":0,"~":0},l={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
31
|
+
*/function ud(i){return wt({...i,state:!0,attribute:!1})}const Ca="1";function hd(i){const e=i.trim();if(!e)return!1;try{const t=new URL(e,"https://example.invalid/");return t.protocol==="http:"||t.protocol==="https:"||t.protocol==="blob:"}catch{return!1}}let zn=class qt{static getLanguage(){const e=document.documentElement.lang;return localStorage.getItem("SonicSelectedLanguage")||e}static getCookies(){return document.cookie.split(";").reduce((e,t)=>{const n=t.indexOf("=");return e[t.substring(0,n).trim()]=t.substring(n+1),e},{})}static nextComposedAncestor(e){return e instanceof Element&&e.assignedSlot?e.assignedSlot:e.parentNode||e.host||null}static everyAncestors(e,t){let n=e;for(;n;){if(!t(n))return;n=n.parentNode||n.host}}static overflowMatches(e,t){return t.includes(e.overflowY)||t.includes(e.overflowX)}static findAncestorByOverflow(e,t){let n=e;for(;n;){if(n instanceof Element&&n.nodeType===1){const r=window.getComputedStyle(n);if(qt.overflowMatches(r,t))return n}n=qt.nextComposedAncestor(n)}return null}static getScrollableAncestor(e){return qt.findAncestorByOverflow(e,["auto","scroll","hidden","overlay"])}static getScrollingAncestor(e){return qt.findAncestorByOverflow(e,["auto","scroll","overlay"])}static scopeAttributeNames(e){const t=e.toLowerCase();return t===e?[e]:[e,t]}static readScopeAttributeOnElement(e,t){for(const n of qt.scopeAttributeNames(t))if(e.hasAttribute(n))return e.getAttribute(n)??"";return null}static getAncestorAttributeValue(e,t){if(!e)return null;let n=e;for(;n;){if(n instanceof HTMLElement){const s=qt.readScopeAttributeOnElement(n,t);if(s!=null)return s}const r=n.parentNode||n.host;if(!r)break;n=r}return null}static getApiConfiguration(e){const t=qt.getAncestorAttributeValue(e,"token"),n=qt.getAncestorAttributeValue(e,"addHTTPResponse")!=null,r=qt.getAncestorAttributeValue(e,"serviceURL");let s=null,a=null;const o=qt.getAncestorAttributeValue(e,"tokenProvider"),l=qt.getAncestorAttributeValue(e,"eventsApiToken");t||(s=qt.getAncestorAttributeValue(e,"userName"),a=qt.getAncestorAttributeValue(e,"password"));const c=qt.getAncestorAttributeValue(e,"credentials")||void 0,h=e.getAttribute("cache"),u=e.hasAttribute("blockUntilDone"),f=e.hasAttribute("keepAlive");return{serviceURL:r,token:t,userName:s,password:a,authToken:l,tokenProvider:o,addHTTPResponse:n,credentials:c,cache:h,blockUntilDone:u,keepAlive:f}}static getClosestElement(e,t){let n=e;for(;n&&!(n.nodeName&&n.nodeName.toLowerCase()===t);){const r=n.parentNode||n.host;if(!r){n=null;break}n=r}return n?.nodeName?n:null}static getClosestForm(e){return qt.getClosestElement(e,"form")}static getAncestorsByTagNames(e,t){const n=new Set(t.map(a=>a.toLowerCase())),r=[];let s=e.parentNode||e.host;for(;s;)s instanceof Element&&n.has(s.tagName.toLowerCase())&&r.push(s),s=s.parentNode||s.host;return r}static getAncestorsBySelectors(e,t){const n=[];let r=e.parentNode||e.host;for(;r;){if(r instanceof Element)for(const s of t)try{if(r.matches(s)){n.push(r);break}}catch{}r=r.parentNode||r.host}return n}static async loadJS(e){if(!hd(e))return!1;const t=typeof document<"u"?new URL(e,document.baseURI).href:e,n=Array.from(document.scripts).find(s=>s.src===t);if(n)return n.dataset.concordeLoaded===Ca?!0:new Promise(s=>{let a=!1;const o=c=>{a||(a=!0,c&&(n.dataset.concordeLoaded=Ca),s(c))};n.addEventListener("load",()=>o(!0),{once:!0}),n.addEventListener("error",()=>o(!1),{once:!0});const l=n.readyState;if(l==="complete"||l==="loaded"){o(!0);return}Promise.resolve().then(()=>{Promise.resolve().then(()=>{a||o(!0)})})});const r=/\.es\.js(\?|#|$)/.test(e)||/[?&]module(?:&|=|$)/.test(e);return new Promise(s=>{const a=document.createElement("script");a.src=e,r&&(a.type="module"),a.onload=()=>{a.dataset.concordeLoaded=Ca,s(!0)},a.onerror=()=>s(!1),document.head.appendChild(a)})}static async loadCSS(e){return new Promise(t=>{const n=document.createElement("link");n.type="text/css",n.rel="stylesheet",n.href=e,n.onload=()=>t(!0),n.onerror=()=>t(!0),document.head.appendChild(n)})}};const gn={Orbit:"orbit",Perspective:"perspective",Ortho:"ortho"},Pa=1e-4,wc=80,fd=16,Ac=250,dd=80,Rc="image/jpeg",pd=.85,vs=45,Da=1,Cc=.5,Pc=50,Dc=8,md=172,Lc=Dc*Math.PI/180,gd=["src","asset","camera","fov","exposure","autoRotate","minDistance","maxDistance","minPolar","maxPolar"],_d=["time","frame","ready","loading","hovering","pointerX","pointerY","camX","camY","camZ","targetX","targetY","targetZ","zoom","hitX","hitY","hitZ","hitObjectId","frameUrl","snapshot","frameSource"];function La(i){return typeof i!="string"?null:i.trim()||null}function vd(i){if(i==null||i==="")return null;if(typeof i=="string")return La(i);if(typeof i!="object")return null;const e=i;return La(e.url)??La(e.blobUrl)}function Ia(i){for(const e of i)try{URL.revokeObjectURL(e)}catch{}}const yd=["gltf","glb","obj","ply","url"];function Ua(i){const e=i.split("?")[0].toLowerCase();return e.endsWith(".glb")?"glb":e.endsWith(".gltf")?"gltf":e.endsWith(".obj")?"obj":e.endsWith(".ply")?"ply":"url"}function xd(i){const e=(i??"").trim().toLowerCase();return e===gn.Perspective||e===gn.Ortho||e===gn.Orbit?e:gn.Orbit}function bd(i){if(i==null||i==="")return null;if(typeof i=="string"){const c=i.trim();return c?{kind:Ua(c),url:c}:null}if(typeof i!="object")return null;const e=i,t=vd(e),r=(typeof e.url=="string"?e.url.trim():"")||t||"",s=e.blob instanceof Blob?e.blob:void 0;if(!r&&!s)return null;const a=typeof e.kind=="string"?e.kind.trim().toLowerCase():"";let o;yd.includes(a)?o=a:r?o=Ua(r):o="url";const l={kind:o};return r&&(l.url=r),s&&(l.blob=s),e.morphTargets&&typeof e.morphTargets=="object"&&(l.morphTargets=e.morphTargets),l}function Sd(i,e){if(typeof i=="number"&&Number.isFinite(i))return i;if(typeof i=="string"&&i.trim()!==""){const t=Number(i);if(Number.isFinite(t))return t}return e}function Md(i){return i===!0||i===1||i==="1"||i==="true"||i==="on"}const It={cameraMode:xd,asset:bd,guessKind:Ua,toNum:Sd,isFormFlagOn:Md};function Ed(i,e){if(i.asset?.url||i.asset?.blob)return i.asset;const t=It.asset(i.src);if(t)return t;const n=e?.get()??{};if("asset"in n){const r=It.asset(n.asset);if(r)return r}return"src"in n?It.asset(n.src):null}const Ic={resolve:Ed};function Na(){return typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion: reduce)").matches}function Uc(i){return!i.play||!i.ready||!i.inView||!i.runtime||Na()?!1:i.playOnHover?i.hovering:!0}function Nc(i){const e=i.autoRotate&&i.play&&!Na()&&(!i.playOnHover||i.hovering);i.runtime?.setAutoRotate(!!e)}function Oc(i){i.raf&&(cancelAnimationFrame(i.raf),i.raf=0)}function Td(i,e){i.raf||(i.raf=requestAnimationFrame(e))}function wd(i,e){Nc(i),Uc(i)?Td(i,e):(Oc(i),i.ready&&i.runtime?.render())}const Hn={prefersReducedMotion:Na,shouldAnimate:Uc,syncAutoRotate:Nc,syncPlayback:wd,stopLoop:Oc};function Oa(i,e){return!!i?._proxies_?.get(e)?.hasListener?.()}function Ad(i){if(!i.ready)return;i.outPublisher||i.bindOutPublisher();const e=i.outPublisher;if(!(!e||!Oa(e,"frameSource")))try{e.frameSource?.set({element:i})}catch{}}const Rd={maybePublish:Ad};function Fa(i){return(Number.isFinite(i)?i:0)*Math.PI/180}async function Cd(i){if(!i.runtime)return;const e=++i.loadToken;i.errorMessage="";try{if(await i.runtime.load(Ic.resolve(i,i.formPublisher)),e!==i.loadToken)return;i.ready=!0,i.startTime=performance.now(),i.frame=0,i.lastFormOrbit=null,i.onFormMutation(),Hn.syncAutoRotate(i),i.runtime.render(),i.frameSeq++,i.syncPlayback(),Rd.maybePublish(i),i.dispatchEvent(new CustomEvent("ready",{detail:{ready:!0},bubbles:!0,composed:!0}))}catch(t){if(e!==i.loadToken)return;i.ready=!!i.runtime?.ready,Fc(i,t),i.syncPlayback()}}function Pd(i){i.runtime?.setOrbitLimits({minDistance:i.minDistance,maxDistance:i.maxDistance,minPolar:Fa(i.minPolar),maxPolar:Fa(i.maxPolar)})}function Fc(i,e){const t=e instanceof Error?e.message:String(e);i.errorMessage=t,i.dispatchEvent(new CustomEvent("error",{detail:{message:t},bubbles:!0,composed:!0}))}const An={run:Cd,applyOrbitLimits:Pd,emitError:Fc,degToRad:Fa};function Dd(i,e){"fov"in e&&(i.fov=It.toNum(e.fov,i.fov)),"exposure"in e&&(i.exposure=It.toNum(e.exposure,i.exposure)),"minDistance"in e&&(i.minDistance=It.toNum(e.minDistance,i.minDistance)),"maxDistance"in e&&(i.maxDistance=It.toNum(e.maxDistance,i.maxDistance)),"minPolar"in e&&(i.minPolar=It.toNum(e.minPolar,i.minPolar)),"maxPolar"in e&&(i.maxPolar=It.toNum(e.maxPolar,i.maxPolar)),"autoRotate"in e&&(i.autoRotate=It.isFormFlagOn(e.autoRotate)),"camera"in e&&typeof e.camera=="string"&&(i.camera=It.cameraMode(e.camera))}function Ld(i,e){let t=!1;if("asset"in e){const n=It.asset(e.asset);n&&(i.asset=n,t=!0)}return"src"in e&&typeof e.src=="string"&&!("asset"in e)&&i.src!==e.src&&(i.src=e.src,t=!0),t}function Id(i){return"minDistance"in i||"maxDistance"in i||"minPolar"in i||"maxPolar"in i||"camera"in i}function Ud(i,e){i.runtime&&("exposure"in e&&i.runtime.setExposure(i.exposure),"fov"in e&&i.runtime.setFov(i.fov),"camera"in e&&i.runtime.applyCameraMode(It.cameraMode(i.camera)),Id(e)&&An.applyOrbitLimits(i),"autoRotate"in e&&Hn.syncAutoRotate(i))}const ka={applyScalars:Dd,applyAsset:Ld,pushToRuntime:Ud};function Nd(i,e){return i?Math.abs(i.yaw-e.yaw)>Pa||Math.abs(i.pitch-e.pitch)>Pa||Math.abs(i.distance-e.distance)>Pa:!0}function Od(i,e){const t=i.runtime.snapshot({time:0,frame:i.frame,hovering:i.hovering?1:0,pointerX:i.pointerX,pointerY:i.pointerY});return{yaw:"yaw"in e?It.toNum(e.yaw,t.yaw):t.yaw,pitch:"pitch"in e?It.toNum(e.pitch,t.pitch):t.pitch,distance:"distance"in e?It.toNum(e.distance,t.distance):t.distance}}function kc(i,e){if(!i.runtime||!("distance"in e||"yaw"in e||"pitch"in e))return;const t=Od(i,e),n=i.lastFormOrbit;Nd(n,t)&&(i.lastFormOrbit=t,i.autoRotate&&n&&(i.autoRotate=!1,Hn.syncAutoRotate(i)),i.runtime.setOrbitSpherical(t.yaw,t.pitch,t.distance),i.runtime.render())}function Fd(i,e){ka.applyScalars(i,e);const t=ka.applyAsset(i,e);if(!i.runtime){t&&An.run(i);return}ka.pushToRuntime(i,e),kc(i,e),t&&An.run(i)}const kd={applyFormParams:Fd,applyFormOrbit:kc};function Bc(i,e){const t=e?.trim();return t||zn.getAncestorAttributeValue(i,"dataProvider")||zn.getAncestorAttributeValue(i,"formDataProvider")||""}function Bd(i,e,t){const n=e?.trim();return n||Bc(i,t)}const Ba={resolveFormProviderId:Bc,resolveOutProviderId:Bd,asset:Ic,formParams:kd};let zd=class{static async queueTaskPromise(){return new Promise(e=>{window.queueMicrotask(()=>e(null))})}static async delayPromise(e){return new Promise(t=>{setTimeout(t,e)})}},zc="sonic";typeof __SONIC_PREFIX__<"u"&&(zc=__SONIC_PREFIX__);let Hc=zc.replace(/-([a-z])/g,i=>i[1].toUpperCase());const Hd=Hc.charAt(0).toUpperCase()+Hc.slice(1);let Vd=class zi{static areEqual(e,t){return e.length===t.length?e.every((n,r)=>n===t[r]):!1}static from2d(e){return{to1D:()=>{let t=[];return e.forEach(n=>t=t.concat(n)),this.from(t)}}}static from(e){return{get:()=>e||[],everyItem:()=>({has:()=>({same:()=>({value:()=>({forKey:t=>{if(e.length<1)return!0;const n=(e[0]||{})[t];return e.every(r=>(r||{})[t]==n)}})})}),value:()=>({forKey:t=>zi.from(e.map(n=>n[t]))}),copy:()=>({fromKey:t=>({toKey:n=>{e.forEach(r=>{r[n]=Array.isArray(r[t])?[...r[t]]:typeof r[t]=="object"&&r[t]!=null?{...r[t]}:r[t]})}})})}),map:t=>zi.from(e.map(t)),filter:t=>zi.from(e.filter(t)),find:t=>e.find(t),some:t=>e.some(t),every:t=>e.every(t),group:()=>({byKey:t=>{const n=[],r=new Map;for(const s of e){const a=s[t];if(!r.has(a)){const o=n.length;r.set(a,o);const l={items:[]};l[t]=a,n.push(l)}n[r.get(a)].items.push(s)}return zi.from(n)}}),without:()=>({duplicates:()=>({forKey:t=>{const n=[...new Set(e.map(r=>r[t]))];return zi.from(n.map(r=>e.find(s=>s[t]==r)))}}),itemsIn:t=>({havingSameValue:()=>({forKey:n=>{const r=(s,a)=>o=>s[a]!=o[a];return zi.from(e.filter(s=>t.every(r(s,n))))}})})})}}},za=class{static ucFirst(e){return typeof e!="string"?e:e.charAt(0).toUpperCase()+e.substring(1)}static minutesDuration(e,t="",n="long"){t||(t=zn.getLanguage());const r=(c,h)=>[Math.floor(c/h),c%h];function s(c,h,u){return new Intl.NumberFormat(c,{style:"unit",unit:h,unitDisplay:u}).format}const[a,o]=r(e,60),l=[];return a&&l.push(s(t,"hour",n)(a)),o&&l.push(s(t,"minute",n)(o)),new Intl.ListFormat(t,{style:"long",type:"conjunction"}).format(l)}static js(e){try{return Function("return "+e)()}catch{return""}}};class Vc{constructor(e){this.path=e}toString(){return this.path}}function Gc(i){return new Proxy(i,{get(e,t){if(t==="path")return e.path;if(t==="toString")return e.toString.bind(e);if(t===Symbol.toStringTag)return"DataProviderKey";if(typeof t=="symbol")return e[t];const n=e.path?`${e.path}.${String(t)}`:String(t);return Gc(new Vc(n))}})}const Gd=/\$\{|\{\$/;function Wd(i){return Gd.test(i)}function Xd(i){const e=i;if(Wd(e))throw new Error("Static publisher path required for get/set/dp. Use @subscribe, @publish, or @handle for dynamic DataProviderKey paths.");return e}const ys=function(i){return this instanceof ys?Gc(new Vc(i)):new ys(i)};let xs=class ei{static shallowEqual(e,t,n=!0){const r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length&&n)return!1;for(const a of r){const o=e[a],l=t[a];if(n?o!==l:o!=l)return!1}return!0}static deepEqual(e,t,n=!0){const r=Object.keys(e),s=Object.keys(t);if(r.length!==s.length&&n)return!1;for(const a of r){const o=e[a],l=t[a],c=ei.isObject(o)&&ei.isObject(l),h=n?o!==l:o!=l;if(c&&!ei.deepEqual(o,l)||!c&&h)return!1}return!0}static isObject(e){return e!=null&&typeof e=="object"}static isUndefindOrNull(e){return e==null}static isEmpty(e){return ei.isUndefindOrNull(e)?!0:Object.keys(e).length===0}static traverse(e,t,n=!1){for(const r of t){const s=e[r];if(s===void 0)return;n&&ei.isObject(s)?e=Object.assign(Array.isArray(s)?[]:{},e,s):e=e[r]}return e}static traverseDotNotation(e,t,n=!1){return ei.traverse(e,t.split("."),n)}static getURLSearchArray(e,t=""){let n=[];for(let r in e){const s=e[r];t&&(r=t+"["+r+"]"),ei.isObject(s)?n=[...n,...this.getURLSearchArray(s,r)]:n.push(`${r}=${s}`)}return n}static getURLSearchString(e){return ei.getURLSearchArray(e,"").join("&")}};xs.traverseDotNotation;function $d(i){return!1}function bs(i){return Object.prototype.hasOwnProperty.call(i,"__value")}function ni(i){return typeof i=="object"&&i!==null}let Wi="sonic";typeof __SONIC_PREFIX__>"u"&&(Wi="sonic");const Ha=Wi=="sonic"?"publisher-proxies-data":Wi+"-publisher-proxies-data",_i=class _i{constructor(e,t,n){for(this._proxies_=new Map,this._is_savable_=!1,this._expiration_delay_=1e3*60*60*12,this._invalidate_on_page_show_=!1,this._invalidateListeners_=new Set,this._formInvalidateListeners_=new Set,this._assignListeners_=new Set,this._mutationListeners_=new Set,this._fillListeners_=new Set,this._templateFillListeners_=new Set,this._lockInternalMutationPublishing_=!1,this._instanceCounter_=0,this._assignmentId_=0,this._value_=e,this.parent=t||null,this._parentKey_=n,this.root=this,this._instanceCounter_=0;this.root.parent;)this.root=this.root.parent}delete(){for(const e in this._proxies_.keys())e!="_parent_"&&this._proxies_.get(e)?.delete();this._invalidateListeners_.clear(),this._formInvalidateListeners_.clear(),this._assignListeners_.clear(),this._mutationListeners_.clear(),this._fillListeners_.clear(),this._templateFillListeners_.clear(),this._proxies_.clear(),_i.instances.delete(this._instanceCounter_)}hasListener(){return this._templateFillListeners_.size>0||this._assignListeners_.size>0||this._invalidateListeners_.size>0||this._formInvalidateListeners_.size>0||this._mutationListeners_.size>0||this._fillListeners_.size>0}_publishInternalMutation_(e=!1){if(this._mutationListeners_.forEach(t=>t()),this._is_savable_&&!Gt.changed){Gt.changed=!0,Gt.saveId++;const t=Gt.saveId;setTimeout(()=>Gt.getInstance().saveToLocalStorage(t),1e3)}e||this.parent&&this.parent._publishInternalMutation_()}async _publishAssignement_(e=!1){if(this._assignmentId_++,this._assignmentId_!==this._assignmentId_)return;const n=this.get();this._assignListeners_.forEach(r=>{r(n)}),this._publishInternalMutation_(e)}_publishInvalidation_(){this._invalidateListeners_.forEach(e=>e())}_publishFormInvalidation_(){this._formInvalidateListeners_.forEach(e=>e())}_publishDynamicFilling_(e,t){this._fillListeners_.forEach(n=>{n[e]!==t&&(n[e]=t)}),this._publishTemplateFilling_(e,t)}_publishTemplateFilling_(e,t){this._templateFillListeners_.forEach(n=>{const r=Object.getOwnPropertyDescriptor(n,e);r&&!r.set&&!r.writable||(n.propertyMap&&n.propertyMap[e]&&(e=n.propertyMap[e]),typeof n[e]<"u"&&n[e]!==t&&(n[e]=t))})}onAssign(e,t=!0){typeof e=="function"&&(this._assignListeners_.has(e)||(this._assignListeners_.add(e),t&&e(this.get())))}offAssign(e){this._assignListeners_.delete(e)}onInvalidate(e){typeof e=="function"&&this._invalidateListeners_.add(e)}offInvalidate(e){typeof e=="function"&&this._invalidateListeners_.delete(e)}invalidate(){this._publishInvalidation_()}onFormInvalidate(e){typeof e=="function"&&this._formInvalidateListeners_.add(e)}offFormInvalidate(e){typeof e=="function"&&this._formInvalidateListeners_.delete(e)}invalidateForm(){this._publishFormInvalidation_()}onInternalMutation(e){typeof e=="function"&&(this._mutationListeners_.add(e),e())}offInternalMutation(e){typeof e=="function"&&this._mutationListeners_.delete(e)}startTemplateFilling(e){if(this._templateFillListeners_.add(e),typeof this._value_=="object")for(const t in this._value_){let n=t;const r=this._value_[t];e.propertyMap&&e.propertyMap[t]&&(n=e.propertyMap[t]),typeof e[t]<"u"&&e[t]!==r&&(e[n]=r)}}stopTemplateFilling(e){this._templateFillListeners_.delete(e)}startDynamicFilling(e){this._fillListeners_.add(e);for(const t in this._value_){const n=this._value_[t];e[t]!==n&&(e[t]=n)}}stopDynamicFilling(e){this._fillListeners_.delete(e)}set(e,t=!1){if(this._value_===e||ni(this._value_)&&ni(e)&&e&&bs(this._value_)&&bs(e)&&this._value_.__value===e.__value||!ni(e)&&e===this._value_.__value)return!0;this._value_=ni(e)?e:{__value:e},this._cachedGet_=void 0;const n=bs(this._value_);if(this._parentKey_&&this.parent){const r=bs(this._value_)?this._value_.__value:this._value_;if(this.parent?.get()==null&&this.parent?.get()==null)if(isNaN(Number(this._parentKey_)))this.parent.set({[this._parentKey_]:r});else{const s=[];s[Number(this._parentKey_)]=r,this.parent.set(s)}else this.parent._value_[this._parentKey_]=r}if(n)return this._proxies_.forEach((r,s)=>{s!="_parent_"&&(r.set(null),this._publishDynamicFilling_(s,null))}),this._publishAssignement_(t),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_.__value),!0;for(const r in this._value_)this._value_[r]===void 0&&delete this._value_[r];if(this._proxies_.forEach((r,s)=>{const a=this._value_[s];s!="_parent_"&&a===void 0&&a!==null&&isNaN(Number(s))&&(r.set(null),this._publishDynamicFilling_(s,null))}),this._publishAssignement_(),this.parent&&this._parentKey_&&this.parent._publishDynamicFilling_(this._parentKey_,this._value_),ni(this._value_))for(const r in this._value_){const s=e[r],o=ni(s)?s:{__value:s};if(!this._proxies_.has(r)){this._publishDynamicFilling_(r,s);continue}this._proxies_.get(r)?.set(o,!0),this._publishDynamicFilling_(r,s)}return!0}get(){if(jd(this),this._cachedGet_!==void 0)return this._cachedGet_;if(Object.prototype.hasOwnProperty.call(this._value_,"__value")){const e=this._value_.__value;return this._cachedGet_=e??null}return this._cachedGet_=this._value_!=null?this._value_:null}get $tag(){return this._instanceCounter_||(_i.instancesCounter++,this._instanceCounter_=_i.instancesCounter),_i.instances.set(this._instanceCounter_,this),"<"+Wi+'-publisher-proxy publisher="'+this._instanceCounter_+'"></'+Wi+"-publisher-proxy>"}};_i.instances=new Map,_i.instancesCounter=0;let Ss=_i;const Wc=[];function jd(i){Wc.length>0&&Wc[0].add(i)}const mt=class mt{constructor(){if(this.enabledLocaStorageProxies=[],this.publishers=new Map,this.localStorageData={},this.isLocalStrorageReady=null,this.initialisedData=[],mt.instance!=null)throw"Singleton / use getInstance";mt.instance=this,this.isLocalStrorageReady=this.cleanStorageData(),mt.initPageShowHandler()}static initPageShowHandler(){mt.pageShowHandlerInitialized||(mt.pageShowHandlerInitialized=!0,window.addEventListener("pageshow",e=>{e.persisted&&mt.getInstance().invalidateAll()}))}invalidateAll(){this.publishers.forEach(e=>{e._invalidate_on_page_show_&&e.invalidate()})}async cleanStorageData(){return new Promise(e=>{(async()=>{try{let n=localStorage.getItem(Ha),r=null;if(n&&(r=await this.decompress(n,"gzip")),r)try{this.localStorageData=JSON.parse(r)}catch{this.localStorageData={}}else n=await this.compress("{}","gzip"),localStorage.setItem(Ha,n),this.localStorageData={};const s=1e3*60*60*12;for(const a in this.localStorageData){const o=this.localStorageData[a],l=new Date().getTime()-(o.expirationDelayMs||s);o.lastModifiationMS<l&&delete this.localStorageData[a]}e(!0)}catch{window.requestAnimationFrame(()=>{e(!1)}),console.warn("no publisher cache in this browser")}})()})}static getInstance(e){if(e){const t=mt.instances.get(e);return t||(console.warn("No PublisherManager instance registered with id:",e,"creating new one"),new mt)}return mt.instance==null?new mt:mt.instance}static get(e,t){return mt.getInstance().get(e,t)}async setLocalData(e,t){await this.isLocalStrorageReady,e.set(this.localStorageData[t+"¤lang_"+zn.getLanguage()]?.data||e.get())}get(e,t){const n=t?.localStorageMode==="enabled",r=t?.invalidateOnPageShow===!0;if(!this.publishers.has(e)){const o=Va({});this.set(e,o)}const s=this.publishers.get(e);return n&&this.initialisedData.indexOf(e)===-1&&(t?.expirationDelayMs&&(s._expiration_delay_=t.expirationDelayMs),s._is_savable_=!0,this.initialisedData.push(e),this.setLocalData(s,e)),r&&(s._invalidate_on_page_show_=r),this.publishers.get(e)}set(e,t){this.publishers.set(e,t)}delete(e){return this.publishers.has(e)?(this.publishers.delete(e),!0):!1}async saveToLocalStorage(e=0){if(!(e!==mt.saveId&&e%10!=0))try{if(!mt.changed||mt.saving)return;mt.saving=!0,mt.changed=!1;const t=Array.from(this.publishers.keys());let n=!1;for(const r of t){const s=this.publishers.get(r);if(!s?._is_savable_)continue;const a=s?.get();a&&(this.localStorageData[r+"¤lang_"+zn.getLanguage()]={lastModifiationMS:new Date().getTime(),expirationDelayMs:s._expiration_delay_,data:a},n=!0)}if(n){const r=await this.compress(JSON.stringify(this.localStorageData),"gzip");localStorage.setItem(Ha,r)}if(mt.saving=!1,mt.changed){mt.saveId++;const r=mt.saveId;setTimeout(()=>this.saveToLocalStorage(r),1e3)}}catch{mt.saving=!1}}async compress(e,t){const n=new TextEncoder().encode(e),r=window,s=new r.CompressionStream(t),a=s.writable.getWriter();a.write(n),a.close();const o=await new Response(s.readable).arrayBuffer(),l=new Uint8Array(o);let c="";for(let h=0;h<l.length;h++)c+=String.fromCharCode(l[h]);return btoa(c)}async decompress(e,t){const n=atob(e),s=Uint8Array.from(n,h=>h.charCodeAt(0)).buffer,a=window,o=new a.DecompressionStream(t),l=o.writable.getWriter();l.write(s),l.close();const c=await new Response(o.readable).arrayBuffer();return new TextDecoder().decode(c)}};mt.buildDate="Tue Sep 29 2026 21:11:50 GMT+0200 (Central European Summer Time)",mt.changed=!1,mt.saving=!1,mt.saveId=0,mt.instance=null,mt.instances=new Map,mt.pageShowHandlerInitialized=!1;let Gt=mt;if(typeof window<"u"){const i=window,e=Hd+"PublisherManager",t=i[e]||Gt;if(i[e]||(i[e]=Gt),t!==Gt){const n=["instance","instances","changed","saving","saveId","pageShowHandlerInitialized"];for(const r of n)Object.defineProperty(Gt,r,{configurable:!0,get(){return t[r]},set(s){t[r]=s}})}}const qd=new Set(["invalidate","onInvalidate","offInvalidate","invalidateForm","onFormInvalidate","offFormInvalidate","onAssign","offAssign","startDynamicFilling","stopDynamicFilling","startTemplateFilling","stopTemplateFilling","onInternalMutation","offInternalMutation","set","get","$tag","_cachedGet_","_templateFillListeners_","_fillListeners_","_assignListeners_","_invalidateListeners_","_formInvalidateListeners_","_publishInternalMutation_","hasListener","delete","_mutationListeners_","_publishDynamicFilling_","_publishInvalidation_","_publishFormInvalidation_","_publishTemplateFilling_","_publishAssignement_","_proxies_","parent","_parentKey_","_value_","_is_savable_","_expiration_delay_","_lockInternalMutationPublishing_","_instanceCounter_","_assignmentId_","_invalidate_on_page_show_"]);function Yd(i,e){return{get:function(t,n){if(typeof n=="string"&&qd.has(n))return i[n];if(n==Symbol.toPrimitive)return()=>e().get();if(!i._proxies_.has(n)){const r=i._value_[n],s=Va(ni(r)?r:{__value:r},i,n);s._proxies_.set("_parent_",e()),i._proxies_.set(n,s)}return i._proxies_.get(n)},set:function(t,n,r){if(n=="_value_")return i._value_=r,!0;if(n=="_cachedGet_")return i._cachedGet_=r,!0;if(n=="_assignmentId_")return i._assignmentId_=r,!0;if(n=="_is_savable_")return i._is_savable_=r,!0;if(n=="_expiration_delay_")return i._expiration_delay_=r,!0;if(n=="_invalidate_on_page_show_")return i._invalidate_on_page_show_=r,!0;if(n=="_instanceCounter_")return i._instanceCounter_=r,!0;if(!i._proxies_.has(n)){const a=Va({},i,n);a._proxies_.set("_parent_",e()),i._proxies_.set(n,a)}return i._value_[n]!==r&&(i._value_[n]=r,i._publishDynamicFilling_(n,r),i._proxies_.get(n)?.set(ni(r)?r:{__value:r})),!0},deleteProperty:function(t,n){return i._publishDynamicFilling_(n,null),i._proxies_.get(n)?.set(null),delete i._value_[n]},has:function(t,n){return n in i._value_&&n!="_lockInternalMutationPublishing_"},defineProperty:function(t,n,r){return r&&"value"in r&&(i._value_[n]=r.value),!0},getOwnPropertyDescriptor:function(t,n){return{enumerable:!0,configurable:!0}},ownKeys:function(t){return i._value_.__value?Object.keys(i._value_.__value):Object.keys(i._value_)}}}function Va(i,e=null,t){const n=new Ss(i,e,t);let r=null;const s=Yd(n,()=>r);return r=new Proxy(n,s),r}class Kd extends HTMLElement{constructor(){super(),this.publisherId="",this.onAssign=e=>{this.innerHTML=e.toString()}}connectedCallback(){this.publisherId=this.getAttribute("publisher")||"",this.publisher=Ss.instances.get(parseInt(this.publisherId)),this.publisher?.onAssign(this.onAssign)}disconnectedCallback(){this.publisher?.offAssign(this.onAssign)}}try{customElements.define(Wi+"-publisher-proxy",Kd)}catch{}const Zd=(i,e)=>{{const t=i.split("."),n=t.shift()||"";let r=Gt.get(n,e);r=xs.traverse(r,t);const s=new Set;return s.add(r),s}};function Xc(i,e,t){const n=Xd(i);return Zd(n,t).values().next().value}function Jd(i,e){return $d()?Xc(i,void 0,e):Xc(i)}let Ga=(ut=class{static disable(){this.enabled&&(this.enabled=!1,Array.from(ut.observedElements.keys()).forEach(e=>ut.unObserve(e)))}static observe(e){if(!e||!ut.enabled||ut.observedElements.has(e))return;const t=new MutationObserver(ut.onMutation),n={};n.childList=!0,n.subtree=!0,n.attributes=!0,n.attributeFilter=["data-bind"],t.observe(e,n),e.querySelectorAll("[data-bind]").forEach(r=>ut.addPublisherListeners(r)),ut.observedElements.set(e,t)}static unObserve(e){if(!e)return;const t=this.observedElements.get(e);t&&(t.disconnect(),e.querySelectorAll("[data-bind]").forEach(n=>ut.removePublisherListeners(n)))}static onAdded(e){e.hasAttribute&&e.hasAttribute("data-bind")&&ut.addPublisherListeners(e),e.querySelectorAll?e.querySelectorAll("[data-bind]").forEach(t=>ut.addPublisherListeners(t)):e.childNodes.forEach(t=>ut.onAdded(t))}static onRemoved(e){e.hasAttribute&&e.hasAttribute("data-bind")&&ut.removePublisherListeners(e),e.querySelectorAll?e.querySelectorAll("[data-bind]").forEach(t=>ut.removePublisherListeners(t)):e.childNodes.forEach(t=>ut.onRemoved(t))}static onMutation(e){for(const t of e)switch(t.type){case"attributes":ut.addPublisherListeners(t.target);break;case"childList":t.addedNodes.forEach(n=>{ut.onAdded(n)}),t.removedNodes.forEach(n=>{ut.onRemoved(n)});break}}static removePublisherListeners(e){const t=ut.publisherListeners.get(e);t&&(ut.publisherListeners.delete(e),t.forEach(n=>{n.publisher?.offAssign(n.onAssign)}))}static getVariablesDescriptor(e){let t=e.match(/(\$(?:\w+\\?\.?)+)/g);return t?t=t.map(n=>n.replace("$","")):t=[e],t=t.filter(n=>n.length>0),{expression:e.replace("\\",""),variables:t.map(n=>n.split(/\b\.\b/).map(r=>r.replace("\\","")))}}static getDataBindItems(e){return"attributes"in e?Array.from(e.attributes).filter(t=>t.name.indexOf("::")==0).map(t=>({propertyToUpdate:t.name.substring(2).replace(/-((html)|\w)/g,r=>r.substring(1).toUpperCase()),bindedVariablesDescriptor:ut.getVariablesDescriptor(t.value)})):[]}static getSubPublisher(e,t){if(!t)return e;for(const n of t)if(n!="_self_"){if(!e)return null;e=e[n]}return e}static addPublisherListeners(e){ut.removePublisherListeners(e);const t=zn.getAncestorAttributeValue(e.parentNode||e.host||e,"dataProvider");if(!t)return;const n=Gt.getInstance().get(t),r=ut.getDataBindItems(e),s=[];r.forEach(a=>{const o=a.bindedVariablesDescriptor,l=a.propertyToUpdate;for(const c of o.variables){const h=c;let u=n;u=ut.getSubPublisher(n,h);const f=e,d={publisher:u,onAssign:()=>{const _=o.variables.map(m=>ut.getSubPublisher(n,m)?.get());let b=o.expression,g=!1;if(_.length==1&&o.variables[0].join(".")==b.substring(1)){let m=_[0];m===null&&(m=""),f[l]=m;return}for(let m=0;m<_.length;m++){let S=_[m];const y=o.variables[m];S===null&&(g=!0,S=void 0),b=b.replace("$"+y.join("."),S)}if(b.indexOf("|")!=-1){const m=b.indexOf("|");if(m==0)b=za.js(b.substring(1));else{const S=b.substring(0,m),y=b.substring(m+1),M=za[S];b=g?"":M?M(y):b}}else b=g?"":b;f[l]=b}};u?.onAssign(d.onAssign),s.push(d)}}),ut.publisherListeners.set(e,s)}},ut.observedElements=new Map,ut.enabled=!0,ut.publisherListeners=new Map,ut);Ga.observe(document.documentElement),window.SonicDataBindObserver||(window.SonicDataBindObserver=Ga);let Qd=(Pt=class{static listen(){if(!Pt.listening)return;const e=document.location?.href.replace(document.location.origin,"");Pt.prevURL&&Pt.prevURL!=e&&(Pt.prevURL=e,Pt.listeners.forEach(t=>{t.location=e})),window.requestAnimationFrame(Pt.listen)}static offChange(e){const t=Pt.listeners.indexOf(e);t!=-1&&(Pt.listeners.splice(t,1),Pt.listeners.length==0&&(Pt.listening=!1))}static onChange(e){Pt.listening||(Pt.listening=!0,Pt.listen()),Pt.listeners.push(e),e.location=this.prevURL}static changeFromComponent(e){const t=e.goBack,n=document.referrer;if(t!=null){const c=document.location.origin,h=(t||c).toString(),f=n.indexOf("http")==0?new URL(n).origin!=c:!1,d=n=="",_=history.length<3,b=d&&_,g=h!=document.location.href;if(f&&g||b){const S=history.state||{};S.concorde=S.concorde||{},S.concorde.hasDoneHistoryBack=!0,history.pushState(S,document.title),history.back(),document.location.replace(h)}else history.back();return}let r=e.getAttribute("to")||"";if(r||(r=e.href?.toString()||""),!r)return;if(r.indexOf("#")==0){document.location.hash=r.substring(1);return}const s=new URL(r,document.location.href),a=s.pathname.split("/"),o=[];let l="";for(const c of a)c!=l&&o.push(c),l=c;r="/"+o.join("/")+s.search+(s.hash?+s.hash:""),e.hasAttribute("pushState")?history.pushState(null,"",r):e.hasAttribute("replaceState")?history.replaceState(null,"",r):document.location.href=r}static updateComponentActiveState(e){if(e.autoActive=="disabled")return;const t=e.href?.toString()||"";if(e.href&&t.indexOf("http")!=0){const n=new URL(t,document.location.href),r=new URL(e.location||"",document.location.origin);let s=!1;e.autoActive=="strict"?s=n.pathname==r.pathname&&n.hash==r.hash&&n.search==r.search:e.autoActive=="strict-path-only"?s=n.pathname==r.pathname&&n.hash==r.hash:s=r.href.indexOf(n.href)==0,s?e.setAttribute("active","true"):e.removeAttribute("active")}}},Pt.listeners=[],Pt.listening=!1,Pt.prevURL=document.location?.href.replace(document.location.origin,""),Pt);function $c(i){if(i==null||typeof i!="object"||Array.isArray(i))return i;const e={...i};return delete e._sonic_http_response_,e}const _t=class _t{constructor(e){this.addHTTPResponse=!1,this.cache="default",this.isServiceSimulated=!1,this.blockUntilDone=!1,this.keepAlive=!1,this.serviceURL=e.serviceURL,this.blockUntilDone=e.blockUntilDone||!1,this.serviceURL=="publisher://"&&(this.isServiceSimulated=!0),this.serviceURL||(this.serviceURL=document.location.origin),this.userName=e.userName,this.password=e.password,e.token&&(this.token=e.token),this.tokenProvider=e.tokenProvider,this.authToken=e.authToken,this.addHTTPResponse=e.addHTTPResponse||!1,this.credentials=e.credentials,this.cache=e.cache||"default",this.keepAlive=e.keepAlive||!1}set token(e){if(this._token=e,!e){_t.tokens.delete(this.serviceURL);return}_t.invalidTokens.includes(e)||_t.tokens.set(this.serviceURL,e)}get token(){return _t.invalidTokens.includes(this._token)?_t.tokens.get(this.serviceURL):this._token}handleInvalidToken(e){e&&(_t.invalidTokens.includes(e)||(_t.invalidTokens.push(e),this.token=null))}async handleResult(e,t){_t.firstCallDoneFlags.set(this.serviceURL,"done"),this.lastResult=e;const n=e.headers.get("content-type")?.toLowerCase(),r=e.status;let s={};if(!n||n.indexOf("text/")==0)s={text:await e.text()};else try{s=await e.json()}catch{s={}}if(this.addHTTPResponse&&xs.isObject(s)&&(s._sonic_http_response_=e),r===498&&!_t.failledTokenUpdates.has(this.serviceURL))if(this.handleInvalidToken(this.token),t.apiMethod==="get"){const o=await this.get(t.path,t.additionalHeaders);if(o==null)throw new Error("GET retry failed after token refresh");s=o}else s=await this[t.apiMethod](t.path,t.data,t.method,t.additionalHeaders);return Jd("sonic-api").lastResponse.set({http:e,processed:s}),s}async auth(){if(this.token)return;if(_t.tokens.has(this.serviceURL)){this.token=_t.tokens.get(this.serviceURL);return}if(!this.tokenProvider)return;let e={};this.userName&&this.password?e={Authorization:"Basic "+window.btoa(unescape(encodeURIComponent(this.userName+":"+this.password)))}:this.authToken&&(e={Authorization:"Bearer "+this.authToken});const t=new URL(this.serviceURL),n=t.protocol+"//"+t.host,r=await fetch(this.computeURL(this.tokenProvider,{serviceHost:n}),{headers:e,credentials:this.credentials,keepalive:this.keepAlive});try{const s=await r.json();s.token?this.token=s.token:_t.failledTokenUpdates.set(this.serviceURL,!0)}catch{_t.failledTokenUpdates.set(this.serviceURL,!0)}}async localGet(e,t){const n=Gt.get(e),r=new URLSearchParams(t.split("?")[1]||""),s=n.get();let a=[];Array.isArray(s)?a=s:a=[s];const o=[];let l=Number.POSITIVE_INFINITY,c=0,h=0;if(r.has("limit")&&(l=parseInt(r.get("limit")||"0"),h++),r.has("offset")&&(c=parseInt(r.get("offset")||"0"),h++),h>0&&(r.delete("limit"),r.delete("offset")),r.size===0)return a.slice(c,c+l);for(const[u,f]of r.entries()){const d=f.split(",").map(_=>_.trim());for(const _ of d)for(const b of a)if(typeof b!="object")isNaN(+b)?b.toString().toLowerCase().includes(f.toLowerCase())&&o.push(b):b===f&&o.push(b);else{const g=b;if(!g[u])continue;isNaN(+g[u])?g[u]?.toString().toLowerCase().includes(_.toLowerCase())&&o.push(b):g[u]===_&&o.push(b)}}return o.slice(c,c+l)}firstCallDone(){return new Promise(e=>{if(!_t.firstCallDoneFlags.has(this.serviceURL))_t.firstCallDoneFlags.set(this.serviceURL,"loading"),e(!0);else{const t=()=>{[void 0,"loading"].includes(_t.firstCallDoneFlags.get(this.serviceURL))?window.requestAnimationFrame(t):e(!0)};t()}})}async get(e,t){const n=/dataProvider\((.*?)\)(.*?)$/;if(n.test(e)){this.blockUntilDone&&(await this.firstCallDone(),_t.firstCallDoneFlags.set(this.serviceURL,"loading"));const c=e.match(n);if(!c)throw new Error("dataProvider path is not valid");return await this.localGet(c[1],c[2])}const r={apiMethod:"get",path:e,additionalHeaders:t},s=await this.createHeaders(t),a=this.computeURL(e),o=JSON.stringify({url:a,headers:s,credentials:this.credentials,cache:this.cache,keepAlive:this.keepAlive});if(this.blockUntilDone&&(await this.firstCallDone(),_t.firstCallDoneFlags.set(this.serviceURL,"loading")),!_t.loadingGetPromises.has(o)){const c=new Promise(async h=>{try{const u=await fetch(a,{headers:s,credentials:this.credentials,cache:this.cache,keepalive:this.keepAlive}),f=await this.handleResult(u,r);h({processed:f,response:this.lastResult})}catch{_t.firstCallDoneFlags.set(this.serviceURL,"error"),h(null)}});_t.loadingGetPromises.set(o,c)}const l=await _t.loadingGetPromises.get(o);return _t.loadingGetPromises.delete(o),l?(this.lastResult=l.response,l.processed):null}async getDetailed(e,t){const n=/dataProvider\((.*?)\)(.*?)$/.test(e),r=await this.get(e,t);if(r==null)return;const s=$c(r),a=this.computeURL(e);if(n)return{request:new Request(a,{method:"GET"}),result:s};const o=await this.createHeaders(t);return{request:new Request(a,{method:"GET",headers:new Headers(o),credentials:this.credentials,cache:this.cache,keepalive:this.keepAlive}),response:this.lastResult,result:s}}async sendDetailed(e,t,n,r){const s=await this.send(e,t,n,r);if(s==null)return;const a=$c(s),o=this.computeURL(e),l=await this.createHeaders({Accept:"application/json","Content-Type":"application/json",...r});return{request:new Request(o,{method:n,headers:new Headers(l),credentials:this.credentials,body:JSON.stringify(t),keepalive:this.keepAlive}),response:this.lastResult,result:a}}async postDetailed(e,t,n){return this.sendDetailed(e,t,"POST",n)}async putDetailed(e,t,n){return this.sendDetailed(e,t,"PUT",n)}async patchDetailed(e,t,n){return this.sendDetailed(e,t,"PATCH",n)}async createHeaders(e){await this.auth();const t={};return this.token&&(t.Authorization="Bearer "+this.token),t["Accept-Language"]=zn.getLanguage(),e&&Object.assign(t,e),t}computeURL(e,t={}){let n="";e.startsWith("http")?n=e:n=this.serviceURL+"/"+e,n.startsWith("http")||(n=window.location.origin+n);const r=new URL(n);for(const s in t)r.searchParams.set(s,t[s]);return r.toString().replace(/([^(https?:)])\/{2,}/g,"$1/")}async send(e,t,n="POST",r){const s={apiMethod:"send",path:e,additionalHeaders:r,method:n,data:t},a=await this.createHeaders(r);a.Accept="application/json",a["Content-Type"]="application/json";const o=await fetch(this.computeURL(e),{headers:a,credentials:this.credentials,method:n,body:JSON.stringify(t),keepalive:this.keepAlive});return await this.handleResult(o,s)}async submitFormData(e,t,n="POST",r){const s={apiMethod:"submitFormData",path:e,additionalHeaders:r,method:n,data:t},a=await this.createHeaders(r);a.Accept="application/json";const o=new FormData,l=t;for(const h in l)o.set(h,l[h]);const c=await fetch(this.computeURL(e),{headers:a,credentials:this.credentials,method:n,body:o,keepalive:this.keepAlive});return await this.handleResult(c,s)}async put(e,t,n){return this.send(e,t,"PUT",n)}async post(e,t,n){return this.send(e,t,"POST",n)}async patch(e,t,n){return this.send(e,t,"PATCH",n)}async delete(e,t,n){return this.send(e,t,"delete",n)}};_t.loadingGetPromises=new Map,_t.tokens=new Map,_t.invalidTokens=[],_t.failledTokenUpdates=new Map,_t.firstCallDoneFlags=new Map;let Wa=_t;zn.getApiConfiguration(document.body||document.documentElement);var jc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ep(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var kr={exports:{}},tp=kr.exports,qc;function np(){return qc||(qc=1,(function(i,e){var t=[].slice;(function(n,r){return e!==null?i.exports=r():n.UrlPattern=r()})(tp,function(){var n,r,s,a,o,l,c,h,u,f,d,_,b,g,m;return u=function(S){return S.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},c=function(S,y){var M,T,R;for(R=[],M=-1,T=S.length;++M<T;)R=R.concat(y(S[M]));return R},g=function(S,y){var M,T,R;for(R="",M=-1,T=S.length;++M<T;)R+=y(S[M]);return R},b=function(S){return new RegExp(S.toString()+"|").exec("").length-1},d=function(S,y){var M,T,R,k,B;for(k={},M=-1,R=S.length;++M<R;)T=S[M],B=y[M],B!=null&&(k[T]!=null?(Array.isArray(k[T])||(k[T]=[k[T]]),k[T].push(B)):k[T]=B);return k},n={},n.Result=function(S,y){this.value=S,this.rest=y},n.Tagged=function(S,y){this.tag=S,this.value=y},n.tag=function(S,y){return function(M){var T,R;if(T=y(M),T!=null)return R=new n.Tagged(S,T.value),new n.Result(R,T.rest)}},n.regex=function(S){return function(y){var M,T;if(M=S.exec(y),M!=null)return T=M[0],new n.Result(T,y.slice(T.length))}},n.sequence=function(){var S;return S=1<=arguments.length?t.call(arguments,0):[],function(y){var M,T,R,k,B,C;for(M=-1,T=S.length,C=[],k=y;++M<T;){if(R=S[M],B=R(k),B==null)return;C.push(B.value),k=B.rest}return new n.Result(C,k)}},n.pick=function(){var S,y;return S=arguments[0],y=2<=arguments.length?t.call(arguments,1):[],function(M){var T,R;if(R=n.sequence.apply(n,y)(M),R!=null)return T=R.value,R.value=T[S],R}},n.string=function(S){var y;return y=S.length,function(M){if(M.slice(0,y)===S)return new n.Result(S,M.slice(y))}},n.lazy=function(S){var y;return y=null,function(M){return y==null&&(y=S()),y(M)}},n.baseMany=function(S,y,M,T,R){var k,B,C,D;for(C=R,D=M?"":[];!(y!=null&&(k=y(C),k!=null)||(B=S(C),B==null));)M?D+=B.value:D.push(B.value),C=B.rest;if(!(T&&D.length===0))return new n.Result(D,C)},n.many1=function(S){return function(y){return n.baseMany(S,null,!1,!0,y)}},n.concatMany1Till=function(S,y){return function(M){return n.baseMany(S,y,!0,!0,M)}},n.firstChoice=function(){var S;return S=1<=arguments.length?t.call(arguments,0):[],function(y){var M,T,R,k;for(M=-1,T=S.length;++M<T;)if(R=S[M],k=R(y),k!=null)return k}},_=function(S){var y;return y={},y.wildcard=n.tag("wildcard",n.string(S.wildcardChar)),y.optional=n.tag("optional",n.pick(1,n.string(S.optionalSegmentStartChar),n.lazy(function(){return y.pattern}),n.string(S.optionalSegmentEndChar))),y.name=n.regex(new RegExp("^["+S.segmentNameCharset+"]+")),y.named=n.tag("named",n.pick(1,n.string(S.segmentNameStartChar),n.lazy(function(){return y.name}))),y.escapedChar=n.pick(1,n.string(S.escapeChar),n.regex(/^./)),y.static=n.tag("static",n.concatMany1Till(n.firstChoice(n.lazy(function(){return y.escapedChar}),n.regex(/^./)),n.firstChoice(n.string(S.segmentNameStartChar),n.string(S.optionalSegmentStartChar),n.string(S.optionalSegmentEndChar),y.wildcard))),y.token=n.lazy(function(){return n.firstChoice(y.wildcard,y.optional,y.named,y.static)}),y.pattern=n.many1(n.lazy(function(){return y.token})),y},h={escapeChar:"\\",segmentNameStartChar:":",segmentValueCharset:"a-zA-Z0-9-_~ %",segmentNameCharset:"a-zA-Z0-9",optionalSegmentStartChar:"(",optionalSegmentEndChar:")",wildcardChar:"*"},l=function(S,y){if(Array.isArray(S))return g(S,function(M){return l(M,y)});switch(S.tag){case"wildcard":return"(.*?)";case"named":return"(["+y+"]+)";case"static":return u(S.value);case"optional":return"(?:"+l(S.value,y)+")?"}},o=function(S,y){return y==null&&(y=h.segmentValueCharset),"^"+l(S,y)+"$"},a=function(S){if(Array.isArray(S))return c(S,a);switch(S.tag){case"wildcard":return["_"];case"named":return[S.value];case"static":return[];case"optional":return a(S.value)}},f=function(S,y,M,T){var R,k,B,C;if(T==null&&(T=!1),C=S[y],C==null){if(T)throw new Error("no values provided for key `"+y+"`");return}if(R=M[y]||0,k=Array.isArray(C)?C.length-1:0,R>k){if(T)throw new Error("too few values provided for key `"+y+"`");return}return B=Array.isArray(C)?C[R]:C,T&&(M[y]=R+1),B},s=function(S,y,M){var T,R;if(Array.isArray(S)){for(T=-1,R=S.length;++T<R;)if(s(S[T],y,M))return!0;return!1}switch(S.tag){case"wildcard":return f(y,"_",M,!1)!=null;case"named":return f(y,S.value,M,!1)!=null;case"static":return!1;case"optional":return s(S.value,y,M)}},m=function(S,y,M){if(Array.isArray(S))return g(S,function(T){return m(T,y,M)});switch(S.tag){case"wildcard":return f(y,"_",M,!0);case"named":return f(y,S.value,M,!0);case"static":return S.value;case"optional":return s(S.value,y,M)?m(S.value,y,M):""}},r=function(S,y){var M,T,R,k,B;if(S instanceof r){this.isRegex=S.isRegex,this.regex=S.regex,this.ast=S.ast,this.names=S.names;return}if(this.isRegex=S instanceof RegExp,!(typeof S=="string"||this.isRegex))throw new TypeError("argument must be a regex or a string");if(this.isRegex){if(this.regex=S,y!=null){if(!Array.isArray(y))throw new Error("if first argument is a regex the second argument may be an array of group names but you provided something else");if(M=b(this.regex),y.length!==M)throw new Error("regex contains "+M+" groups but array of group names contains "+y.length);this.names=y}return}if(S==="")throw new Error("argument must not be the empty string");if(B=S.replace(/\s+/g,""),B!==S)throw new Error("argument must not contain whitespace");if(T={escapeChar:y?.escapeChar||h.escapeChar,segmentNameStartChar:y?.segmentNameStartChar||h.segmentNameStartChar,segmentNameCharset:y?.segmentNameCharset||h.segmentNameCharset,segmentValueCharset:y?.segmentValueCharset||h.segmentValueCharset,optionalSegmentStartChar:y?.optionalSegmentStartChar||h.optionalSegmentStartChar,optionalSegmentEndChar:y?.optionalSegmentEndChar||h.optionalSegmentEndChar,wildcardChar:y?.wildcardChar||h.wildcardChar},k=_(T),R=k.pattern(S),R==null)throw new Error("couldn't parse pattern");if(R.rest!=="")throw new Error("could only partially parse pattern");this.ast=R.value,this.regex=new RegExp(o(this.ast,T.segmentValueCharset)),this.names=a(this.ast)},r.prototype.match=function(S){var y,M;return M=this.regex.exec(S),M==null?null:(y=M.slice(1),this.names?d(this.names,y):y)},r.prototype.stringify=function(S){if(S==null&&(S={}),this.isRegex)throw new Error("can't stringify patterns generated from a regex");if(S!==Object(S))throw new Error("argument must be an object or undefined");return m(this.ast,S,{})},r.escapeForRegex=u,r.concatMap=c,r.stringConcatMap=g,r.regexGroupCount=b,r.keysAndValuesToObject=d,r.P=n,r.newParser=_,r.defaultOptions=h,r.astNodeToRegexString=o,r.astNodeToNames=a,r.getParam=f,r.astNodeContainsSegmentsForProvidedParams=s,r.stringify=m,r})})(kr,kr.exports)),kr.exports}var ip=np();const rp=ep(ip);class Xa{constructor(e){this.path=Xa.normalizePath(e)}getDataProviderKey(){return new ys(this.path)}static normalizePath(e){const t=String(e).trim();if(!t)throw new RangeError("Endpoint: path cannot be empty");if(/^https?:\/\//i.test(t)){let l;try{l=new URL(t)}catch{throw new RangeError("Endpoint: invalid absolute URL")}return l.pathname=l.pathname.replace(/\/+/g,"/"),l.href}const n=t.indexOf("?"),r=t.indexOf("#");let s=t.length;n>=0&&(s=Math.min(s,n)),r>=0&&(s=Math.min(s,r));let a=t.slice(0,s);const o=t.slice(s);if(a=a.replace(/^\/+/,""),a=a.replace(/\/+/g,"/"),!a&&o)throw new RangeError("Endpoint: path cannot be empty");return a+o}static isNonEmpty(e){return String(e).trim().length>0}static looksLikeDataProviderPath(e){return/^\s*dataProvider\s*\(/i.test(String(e))}toString(){return this.path}}function Ms(i){throw new Error('Could not dynamically require "'+i+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var $a={exports:{}},Yc;function sp(){return Yc||(Yc=1,(function(i,e){(function(t){i.exports=t()})(function(){return(function(){function t(n,r,s){function a(c,h){if(!r[c]){if(!n[c]){var u=typeof Ms=="function"&&Ms;if(!h&&u)return u(c,!0);if(o)return o(c,!0);var f=new Error("Cannot find module '"+c+"'");throw f.code="MODULE_NOT_FOUND",f}var d=r[c]={exports:{}};n[c][0].call(d.exports,function(_){var b=n[c][1][_];return a(b||_)},d,d.exports,t,n,r,s)}return r[c].exports}for(var o=typeof Ms=="function"&&Ms,l=0;l<s.length;l++)a(s[l]);return a}return t})()({1:[function(t,n,r){const s=t("./utils"),a=(function(){const o=s.stringToArray,l=["Zero","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"],c=["Zeroth","First","Second","Third","Fourth","Fifth","Sixth","Seventh","Eighth","Ninth","Tenth","Eleventh","Twelfth","Thirteenth","Fourteenth","Fifteenth","Sixteenth","Seventeenth","Eighteenth","Nineteenth"],h=["Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety","Hundred"],u=["Thousand","Million","Billion","Trillion"];function f(z,j){var W=function(be,U,ee){var fe="";if(be<=19)fe=(U?" and ":"")+(ee?c[be]:l[be]);else if(be<100){const Se=Math.floor(be/10),ze=be%10;fe=(U?" and ":"")+h[Se-2],ze>0?fe+="-"+W(ze,!1,ee):ee&&(fe=fe.substring(0,fe.length-1)+"ieth")}else if(be<1e3){const Se=Math.floor(be/100),ze=be%100;fe=(U?", ":"")+l[Se]+" Hundred",ze>0?fe+=W(ze,!0,ee):ee&&(fe+="th")}else{var ye=Math.floor(Math.log10(be)/3);ye>u.length&&(ye=u.length);const Se=Math.pow(10,ye*3),ze=Math.floor(be/Se),_e=be-ze*Se;fe=(U?", ":"")+W(ze,!1,!1)+" "+u[ye-1],_e>0?fe+=W(_e,!0,ee):ee&&(fe+="th")}return fe},le=W(z,!1,j);return le}const d=Object.create(null);l.forEach(function(z,j){d[z.toLowerCase()]=j}),c.forEach(function(z,j){d[z.toLowerCase()]=j}),h.forEach(function(z,j){const W=z.toLowerCase();d[W]=(j+2)*10,d[W.substring(0,z.length-1)+"ieth"]=d[W]}),d.hundredth=100,u.forEach(function(z,j){const W=z.toLowerCase(),le=Math.pow(10,(j+1)*3);d[W]=le,d[W+"th"]=le});function _(z){const W=z.split(/,\s|\sand\s|[\s\\-]/).map(U=>d[U]);let le=[0];return W.forEach(U=>{if(U<100){let ee=le.pop();ee>=1e3&&(le.push(ee),ee=0),le.push(ee+U)}else le.push(le.pop()*U)}),le.reduce((U,ee)=>U+ee,0)}const b=[[1e3,"m"],[900,"cm"],[500,"d"],[400,"cd"],[100,"c"],[90,"xc"],[50,"l"],[40,"xl"],[10,"x"],[9,"ix"],[5,"v"],[4,"iv"],[1,"i"]],g={M:1e3,D:500,C:100,L:50,X:10,V:5,I:1};function m(z){for(var j=0;j<b.length;j++){const W=b[j];if(z>=W[0])return W[1]+m(z-W[0])}return""}function S(z){for(var j=0,W=1,le=z.length-1;le>=0;le--){const be=z[le],U=g[be];U<W?j-=U:(W=U,j+=U)}return j}function y(z,j){for(var W=[],le=j.charCodeAt(0);z>0;)W.unshift(String.fromCharCode((z-1)%26+le)),z=Math.floor((z-1)/26);return W.join("")}function M(z,j){for(var W=j.charCodeAt(0),le=0,be=0;be<z.length;be++)le+=(z.charCodeAt(z.length-be-1)-W+1)*Math.pow(26,be);return le}function T(z,j){if(typeof z>"u")return;z=Math.floor(z);const W=D(j);return B(z,W)}const R={DECIMAL:"decimal",LETTERS:"letters",ROMAN:"roman",WORDS:"words",SEQUENCE:"sequence"},k={UPPER:"upper",LOWER:"lower",TITLE:"title"};function B(z,j){let W;const le=z<0;switch(z=Math.abs(z),j.primary){case R.LETTERS:W=y(z,j.case===k.UPPER?"A":"a");break;case R.ROMAN:W=m(z),j.case===k.UPPER&&(W=W.toUpperCase());break;case R.WORDS:W=f(z,j.ordinal),j.case===k.UPPER?W=W.toUpperCase():j.case===k.LOWER&&(W=W.toLowerCase());break;case R.DECIMAL:W=""+z;var be=j.mandatoryDigits-W.length;if(be>0){var U=new Array(be+1).join("0");W=U+W}if(j.zeroCode!==48&&(W=o(W).map(Se=>String.fromCodePoint(Se.codePointAt(0)+j.zeroCode-48)).join("")),j.regular){const Se=Math.floor((W.length-1)/j.groupingSeparators.position);for(let ze=Se;ze>0;ze--){const _e=W.length-ze*j.groupingSeparators.position;W=W.substr(0,_e)+j.groupingSeparators.character+W.substr(_e)}}else j.groupingSeparators.reverse().forEach(Se=>{const ze=W.length-Se.position;W=W.substr(0,ze)+Se.character+W.substr(ze)});if(j.ordinal){var ee={1:"st",2:"nd",3:"rd"},fe=W[W.length-1],ye=ee[fe];(!ye||W.length>1&&W[W.length-2]==="1")&&(ye="th"),W=W+ye}break;case R.SEQUENCE:throw{code:"D3130",value:j.token}}return le&&(W="-"+W),W}const C=[48,1632,1776,1984,2406,2534,2662,2790,2918,3046,3174,3302,3430,3558,3664,3792,3872,4160,4240,6112,6160,6470,6608,6784,6800,6992,7088,7232,7248,42528,43216,43264,43472,43504,43600,44016,65296];function D(z){const j={type:"integer",primary:R.DECIMAL,case:k.LOWER,ordinal:!1};let W,le;const be=z.lastIndexOf(";");switch(be===-1?W=z:(W=z.substring(0,be),le=z.substring(be+1),le[0]==="o"&&(j.ordinal=!0)),W){case"A":j.case=k.UPPER;case"a":j.primary=R.LETTERS;break;case"I":j.case=k.UPPER;case"i":j.primary=R.ROMAN;break;case"W":j.case=k.UPPER,j.primary=R.WORDS;break;case"Ww":j.case=k.TITLE,j.primary=R.WORDS;break;case"w":j.primary=R.WORDS;break;default:{let U=null,ee=0,fe=0,ye=[],Se=0;if(o(W).map(_e=>_e.codePointAt(0)).reverse().forEach(_e=>{let xe=!1;for(let Xe=0;Xe<C.length;Xe++){const De=C[Xe];if(_e>=De&&_e<=De+9){if(xe=!0,ee++,Se++,U===null)U=De;else if(De!==U)throw{code:"D3131"};break}}xe||(_e===35?(Se++,fe++):ye.push({position:Se,character:String.fromCodePoint(_e)}))}),ee>0){j.primary=R.DECIMAL,j.zeroCode=U,j.mandatoryDigits=ee,j.optionalDigits=fe;const xe=function(Xe){if(Xe.length===0)return 0;const De=Xe[0].character;for(let re=1;re<Xe.length;re++)if(Xe[re].character!==De)return 0;const N=Xe.map(re=>re.position),w=function(re,pe){return pe===0?re:w(pe,re%pe)},q=N.reduce(w);for(let re=1;re<=N.length;re++)if(N.indexOf(re*q)===-1)return 0;return q}(ye);xe>0?(j.regular=!0,j.groupingSeparators={position:xe,character:ye[0].character}):(j.regular=!1,j.groupingSeparators=ye)}else j.primary=R.SEQUENCE,j.token=W}}return j}const V={Y:"1",M:"1",D:"1",d:"1",F:"n",W:"1",w:"1",X:"1",x:"1",H:"1",h:"1",P:"n",m:"01",s:"01",f:"1",Z:"01:01",z:"01:01",C:"n",E:"n"};function K(z){var j=[];const W={type:"datetime",parts:j},le=function(xe,Xe){if(Xe>xe){let De=z.substring(xe,Xe);De=De.split("]]").join("]"),j.push({type:"literal",value:De})}};for(var be=0,U=0;U<z.length;){if(z.charAt(U)==="["){if(z.charAt(U+1)==="["){le(be,U),j.push({type:"literal",value:"["}),U+=2,be=U;continue}if(le(be,U),be=U,U=z.indexOf("]",be),U===-1)throw{code:"D3135"};let xe=z.substring(be+1,U);xe=xe.split(/\s+/).join("");var ee={type:"marker",component:xe.charAt(0)},fe=xe.lastIndexOf(","),ye;if(fe!==-1){const Xe=xe.substring(fe+1),De=Xe.indexOf("-");let N,w;const q=function(pe){if(!(typeof pe>"u"||pe==="*"))return parseInt(pe)};De===-1?N=Xe:(N=Xe.substring(0,De),w=Xe.substring(De+1));const re={min:q(N),max:q(w)};ee.width=re,ye=xe.substring(1,fe)}else ye=xe.substring(1);if(ye.length===1)ee.presentation1=ye;else if(ye.length>1){var Se=ye.charAt(ye.length-1);"atco".indexOf(Se)!==-1?(ee.presentation2=Se,Se==="o"&&(ee.ordinal=!0),ee.presentation1=ye.substring(0,ye.length-1)):ee.presentation1=ye}else ee.presentation1=V[ee.component];if(typeof ee.presentation1>"u")throw{code:"D3132",value:ee.component};if(ee.presentation1[0]==="n")ee.names=k.LOWER;else if(ee.presentation1[0]==="N")ee.presentation1[1]==="n"?ee.names=k.TITLE:ee.names=k.UPPER;else if("YMDdFWwXxHhmsf".indexOf(ee.component)!==-1){var ze=ee.presentation1;if(ee.presentation2&&(ze+=";"+ee.presentation2),ee.integerFormat=D(ze),ee.width&&ee.width.min!==void 0&&ee.integerFormat.mandatoryDigits<ee.width.min&&(ee.integerFormat.mandatoryDigits=ee.width.min),ee.component==="Y")if(ee.n=-1,ee.width&&ee.width.max!==void 0)ee.n=ee.width.max,ee.integerFormat.mandatoryDigits=ee.n;else{var _e=ee.integerFormat.mandatoryDigits+ee.integerFormat.optionalDigits;_e>=2&&(ee.n=_e)}const Xe=j[j.length-1];Xe&&Xe.integerFormat&&(Xe.integerFormat.parseWidth=Xe.integerFormat.mandatoryDigits)}(ee.component==="Z"||ee.component==="z")&&(ee.integerFormat=D(ee.presentation1)),j.push(ee),be=U+1}U++}return le(be,U),W}const J=["","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],se=["January","February","March","April","May","June","July","August","September","October","November","December"],he=1e3*60*60*24,Q=function(z){const j=Date.UTC(z.year,z.month);var W=new Date(j).getUTCDay();return W===0&&(W=7),W>4?j+(8-W)*he:j-(W-1)*he},de=function(z,j){return{year:z,month:j,nextMonth:function(){return j===11?de(z+1,0):de(z,j+1)},previousMonth:function(){return j===0?de(z-1,11):de(z,j-1)},nextYear:function(){return de(z+1,j)},previousYear:function(){return de(z-1,j)}}},ne=function(z,j){return(j-z)/(he*7)+1},ue=(z,j)=>{let W;switch(j){case"Y":W=z.getUTCFullYear();break;case"M":W=z.getUTCMonth()+1;break;case"D":W=z.getUTCDate();break;case"d":{const le=Date.UTC(z.getUTCFullYear(),z.getUTCMonth(),z.getUTCDate()),be=Date.UTC(z.getUTCFullYear(),0);W=(le-be)/he+1;break}case"F":W=z.getUTCDay(),W===0&&(W=7);break;case"W":{const le=de(z.getUTCFullYear(),0),be=Q(le),U=Date.UTC(le.year,z.getUTCMonth(),z.getUTCDate());let ee=ne(be,U);if(ee>52){const fe=Q(le.nextYear());U>=fe&&(ee=1)}else if(ee<1){const fe=Q(le.previousYear());ee=ne(fe,U)}W=Math.floor(ee);break}case"w":{const le=de(z.getUTCFullYear(),z.getUTCMonth()),be=Q(le),U=Date.UTC(le.year,le.month,z.getUTCDate());let ee=ne(be,U);if(ee>4){const fe=Q(le.nextMonth());U>=fe&&(ee=1)}else if(ee<1){const fe=Q(le.previousMonth());ee=ne(fe,U)}W=Math.floor(ee);break}case"X":{const le=de(z.getUTCFullYear(),0),be=Q(le),U=Q(le.nextYear()),ee=z.getTime();ee<be?W=le.year-1:ee>=U?W=le.year+1:W=le.year;break}case"x":{const le=de(z.getUTCFullYear(),z.getUTCMonth()),be=Q(le),U=le.nextMonth(),ee=Q(U),fe=z.getTime();fe<be?W=le.previousMonth().month+1:fe>=ee?W=U.month+1:W=le.month+1;break}case"H":W=z.getUTCHours();break;case"h":W=z.getUTCHours(),W=W%12,W===0&&(W=12);break;case"P":W=z.getUTCHours()>=12?"pm":"am";break;case"m":W=z.getUTCMinutes();break;case"s":W=z.getUTCSeconds();break;case"f":W=z.getUTCMilliseconds();break;case"Z":case"z":break;case"C":W="ISO";break;case"E":W="ISO";break}return W};let Te=null;function ke(z,j,W){var le=0,be=0;if(typeof W<"u"){const ze=parseInt(W);le=Math.floor(ze/100),be=ze%100}var U=function(ze,_e){var xe=ue(ze,_e.component);if("YMDdFWwXxHhms".indexOf(_e.component)!==-1)if(_e.component==="Y"&&_e.n!==-1&&(xe=xe%Math.pow(10,_e.n)),_e.names){if(_e.component==="M"||_e.component==="x")xe=se[xe-1];else if(_e.component==="F")xe=J[xe];else throw{code:"D3133",value:_e.component};_e.names===k.UPPER?xe=xe.toUpperCase():_e.names===k.LOWER&&(xe=xe.toLowerCase()),_e.width&&xe.length>_e.width.max&&(xe=xe.substring(0,_e.width.max))}else xe=B(xe,_e.integerFormat);else if(_e.component==="f")xe=B(xe,_e.integerFormat);else if(_e.component==="Z"||_e.component==="z"){const Xe=le*100+be;if(_e.integerFormat.regular)xe=B(Xe,_e.integerFormat);else{const De=_e.integerFormat.mandatoryDigits;if(De===1||De===2)xe=B(le,_e.integerFormat),be!==0&&(xe+=":"+T(be,"00"));else if(De===3||De===4)xe=B(Xe,_e.integerFormat);else throw{code:"D3134",value:De}}Xe>=0&&(xe="+"+xe),_e.component==="z"&&(xe="GMT"+xe),Xe===0&&_e.presentation2==="t"&&(xe="Z")}else _e.component==="P"&&_e.names===k.UPPER&&(xe=xe.toUpperCase());return xe};let ee;typeof j>"u"?(Te===null&&(Te=K("[Y0001]-[M01]-[D01]T[H01]:[m01]:[s01].[f001][Z01:01t]")),ee=Te):ee=K(j);const fe=(60*le+be)*60*1e3,ye=new Date(z+fe);let Se="";return ee.parts.forEach(function(ze){ze.type==="literal"?Se+=ze.value:Se+=U(ye,ze)}),Se}function O(z){var j=Object.create(null);if(z.type==="datetime")j.type="datetime",j.parts=z.parts.map(function(W){var le=Object.create(null);if(W.type==="literal")le.regex=W.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");else if(W.component==="Z"||W.component==="z"){let U;Array.isArray(W.integerFormat.groupingSeparators)||(U=W.integerFormat.groupingSeparators),le.regex="",W.component==="z"&&(le.regex="GMT"),le.regex+="[-+][0-9]+",U&&(le.regex+=U.character+"[0-9]+"),le.parse=function(ee){W.component==="z"&&(ee=ee.substring(3));let fe=0,ye=0;return U?(fe=Number.parseInt(ee.substring(0,ee.indexOf(U.character))),ye=Number.parseInt(ee.substring(ee.indexOf(U.character)+1))):ee.length-1<=2?fe=Number.parseInt(ee):(fe=Number.parseInt(ee.substring(0,3)),ye=Number.parseInt(ee.substring(3))),fe*60+ye}}else if(W.component==="f")le.regex="[0-9]+",le.parse=function(U){return parseFloat("0."+U.substring(0,3))*1e3};else if(W.integerFormat)le=O(W.integerFormat);else{le.regex="[a-zA-Z]+";var be=Object.create(null);if(W.component==="M"||W.component==="x")se.forEach(function(U,ee){W.width&&W.width.max?be[U.substring(0,W.width.max)]=ee+1:be[U]=ee+1});else if(W.component==="F")J.forEach(function(U,ee){ee>0&&(W.width&&W.width.max?be[U.substring(0,W.width.max)]=ee:be[U]=ee)});else if(W.component==="P")be={am:0,AM:0,pm:1,PM:1};else throw{code:"D3133",value:W.component};le.parse=function(U){return be[U]}}return le.component=W.component,le});else{j.type="integer";const W=z.case===k.UPPER;switch(z.primary){case R.LETTERS:j.regex=W?"[A-Z]+":"[a-z]+",j.parse=function(le){return M(le,W?"A":"a")};break;case R.ROMAN:j.regex=W?"[MDCLXVI]+":"[mdclxvi]+",j.parse=function(le){return S(W?le:le.toUpperCase())};break;case R.WORDS:j.regex="(?:"+s.keys(d).concat("and","[\\-, ]").join("|")+")+",j.parse=function(le){return _(le.toLowerCase())};break;case R.DECIMAL:j.regex="[0-9]",z.parseWidth?j.regex+=`{${z.parseWidth}}`:j.regex+="+",z.ordinal&&(j.regex+="(?:th|st|nd|rd)"),j.parse=function(le){let be=le;return z.ordinal&&(be=le.substring(0,le.length-2)),z.regular?be=be.split(",").join(""):z.groupingSeparators.forEach(U=>{be=be.split(U.character).join("")}),z.zeroCode!==48&&(be=be.split("").map(U=>String.fromCodePoint(U.codePointAt(0)-z.zeroCode+48)).join("")),parseInt(be)};break;case R.SEQUENCE:throw{code:"D3130",value:z.token}}}return j}function H(z,j){if(typeof z>"u")return;const W=D(j);return O(W).parse(z)}function we(z,j){const W=K(j),le=O(W),be="^"+le.parts.map(ye=>"("+ye.regex+")").join("")+"$";var ee=new RegExp(be,"i").exec(z);if(ee!==null){const De=Object.create(null);for(let A=1;A<ee.length;A++){const x=le.parts[A-1];x.parse&&(De[x.component]=x.parse(ee[A]))}if(Object.getOwnPropertyNames(De).length===0)return;let N=0;const w=A=>{N<<=1,N+=A?1:0},q=A=>!(~A&N)&&!!(A&N);"YXMxWwdD".split("").forEach(A=>w(De[A]));const pe=!q(161)&&q(130),ae=q(84),Ve=!ae&&q(72);N=0,"PHhmsf".split("").forEach(A=>w(De[A]));const oe=!q(23)&&q(47),Re=(pe?"YD":ae?"XxwF":Ve?"XWF":"YMD")+(oe?"Phmsf":"Hmsf"),je=this.environment.timestamp;let Oe=!1,Ce=!1;if(Re.split("").forEach(A=>{if(typeof De[A]>"u")Oe?(De[A]="MDd".indexOf(A)!==-1?1:0,Ce=!0):De[A]=ue(je,A);else if(Oe=!0,Ce)throw{code:"D3136"}}),De.M>0?De.M-=1:De.M=0,pe){const A=Date.UTC(De.Y,0),x=(De.d-1)*1e3*60*60*24,L=new Date(A+x);De.M=L.getUTCMonth(),De.D=L.getUTCDate()}if(ae)throw{code:"D3136"};if(Ve)throw{code:"D3136"};oe&&(De.H=De.h===12?0:De.h,De.P===1&&(De.H+=12));var fe=Date.UTC(De.Y,De.M,De.D,De.H,De.m,De.s,De.f);return(De.Z||De.z)&&(fe-=(De.Z||De.z)*60*1e3),fe}}var Be=new RegExp("^\\d{4}(-[01]\\d)?(-[0-3]\\d)?(T[0-2]\\d:[0-5]\\d:[0-5]\\d)?(\\.\\d+)?([+-][0-2]\\d:?[0-5]\\d|Z)?$");function ie(z,j){if(!(typeof z>"u"))if(typeof j>"u"){if(!Be.test(z))throw{stack:new Error().stack,code:"D3110",value:z};return Date.parse(z)}else return we.call(this,z,j)}function ce(z,j,W){if(!(typeof z>"u"))return ke.call(this,z,j,W)}return{formatInteger:T,parseInteger:H,fromMillis:ce,toMillis:ie}})();n.exports=a},{"./utils":6}],2:[function(t,n,r){(function(s){(function(){var a=t("./utils");const o=(()=>{var l=a.isNumeric,c=a.isArrayOfStrings,h=a.isArrayOfNumbers,u=a.isSequence,f=a.isFunction,d=a.isLambda,_=a.isPromise,b=a.getFunctionArity,g=a.isDeepEqual,m=a.stringToArray;function S(p){if(!(typeof p>"u")){var v=0;return p.forEach(function(E){v+=E}),v}}function y(p){return typeof p>"u"?0:p.length}function M(p){if(!(typeof p>"u"||p.length===0))return Math.max.apply(Math,p)}function T(p){if(!(typeof p>"u"||p.length===0))return Math.min.apply(Math,p)}function R(p){if(!(typeof p>"u"||p.length===0)){var v=0;return p.forEach(function(E){v+=E}),v/p.length}}function k(p,v=!1){if(!(typeof p>"u")){var E;if(typeof p=="string")E=p;else if(f(p))E="";else{if(typeof p=="number"&&!isFinite(p))throw{code:"D3001",value:p,stack:new Error().stack};var I=v?2:0;Array.isArray(p)&&p.outerWrapper&&(p=p[0]),E=JSON.stringify(p,function(F,X){return typeof X<"u"&&X!==null&&l(X)?X.toPrecision&&!Number.isInteger(X)?Number(X.toPrecision(15)):X:X&&f(X)?"":X},I)}return E}}function B(p,v,E){if(!(typeof p>"u")){var I=m(p),F=I.length;if(F+v<0&&(v=0),typeof E<"u"){if(E<=0)return"";var X=v>=0?v+E:F+v+E;return I.slice(v,X).join("")}return I.slice(v).join("")}}function C(p,v){if(!(typeof p>"u")){var E=p.indexOf(v);return E>-1?p.substr(0,E):p}}function D(p,v){if(!(typeof p>"u")){var E=p.indexOf(v);return E>-1?p.substr(E+v.length):p}}function V(p){if(!(typeof p>"u"))return p.toLowerCase()}function K(p){if(!(typeof p>"u"))return p.toUpperCase()}function J(p){if(!(typeof p>"u"))return m(p).length}function se(p){if(!(typeof p>"u")){var v=p.replace(/[ \t\n\r]+/gm," ");return v.charAt(0)===" "&&(v=v.substring(1)),v.charAt(v.length-1)===" "&&(v=v.substring(0,v.length-1)),v}}function he(p,v,E){if(!(typeof p>"u")){(typeof E>"u"||E.length===0)&&(E=" ");var I;v=Math.trunc(v);var F=Math.abs(v)-J(p);if(F>0){var X=new Array(F+1).join(E);E.length>1&&(X=B(X,0,F)),v>0?I=p+X:I=X+p}else I=p;return I}}async function Q(p,v){var E=p.apply(this,[v]);if(_(E)&&(E=await E),E&&!(typeof E.start=="number"||E.end==="number"||Array.isArray(E.groups)||f(E.next)))throw{code:"T1010",stack:new Error().stack};return E}async function de(p,v){if(!(typeof p>"u"||typeof v>"u")){var E;if(typeof v=="string")E=p.indexOf(v)!==-1;else{var I=await Q(v,p);E=typeof I<"u"}return E}}async function ne(p,v,E){if(!(typeof p>"u")){if(E<0)throw{stack:new Error().stack,value:E,code:"D3040",index:3};var I=this.createSequence();if(typeof E>"u"||E>0){var F=0,X=await Q(v,p);if(typeof X<"u")for(;typeof X<"u"&&(typeof E>"u"||F<E);)I.push({match:X.match,index:X.start,groups:X.groups}),X=await Q(X.next),F++}return I}}async function ue(p,v,E,I){if(!(typeof p>"u")){var F=this;if(v==="")throw{code:"D3010",stack:new Error().stack,value:v,index:2};if(I<0)throw{code:"D3011",stack:new Error().stack,value:I,index:4};var X;typeof E=="string"?X=function(gt){for(var Mt="",ct=0,St=E.indexOf("$",ct);St!==-1&&ct<E.length;){Mt+=E.substring(ct,St),ct=St+1;var nn=E.charAt(ct);if(nn==="$")Mt+="$",ct++;else if(nn==="0")Mt+=gt.match,ct++;else{var Dt;if(gt.groups.length===0?Dt=1:Dt=Math.floor(Math.log(gt.groups.length)*Math.LOG10E)+1,St=parseInt(E.substring(ct,ct+Dt),10),Dt>1&&St>gt.groups.length&&(St=parseInt(E.substring(ct,ct+Dt-1),10)),isNaN(St))Mt+="$";else{if(gt.groups.length>0){var hn=gt.groups[St-1];typeof hn<"u"&&(Mt+=hn)}ct+=St.toString().length}}St=E.indexOf("$",ct)}return Mt+=E.substring(ct),Mt}:X=E;var me="",ve=0;if(typeof I>"u"||I>0){var $e=0;if(typeof v=="string"){for(var Ne=p.indexOf(v,ve);Ne!==-1&&(typeof I>"u"||$e<I);)me+=p.substring(ve,Ne),me+=E,ve=Ne+v.length,$e++,Ne=p.indexOf(v,ve);me+=p.substring(ve)}else{var ht=await Q(v,p);if(typeof ht<"u"){for(;typeof ht<"u"&&(typeof I>"u"||$e<I);){me+=p.substring(ve,ht.start);var ot=X.apply(F,[ht]);if(_(ot)&&(ot=await ot),typeof ot=="string")me+=ot;else throw{code:"D3012",stack:new Error().stack,value:ot};ve=ht.start+ht.match.length,$e++,ht=await Q(ht.next)}me+=p.substring(ve)}else me=p}}else me=p;return me}}function Te(p){if(!(typeof p>"u")){var v=typeof window<"u"?window.btoa:function(E){return new s.Buffer.from(E,"binary").toString("base64")};return v(p)}}function ke(p){if(!(typeof p>"u")){var v=typeof window<"u"?window.atob:function(E){return new s.Buffer.from(E,"base64").toString("binary")};return v(p)}}function O(p){if(!(typeof p>"u")){var v;try{v=encodeURIComponent(p)}catch{throw{code:"D3140",stack:new Error().stack,value:p,functionName:"encodeUrlComponent"}}return v}}function H(p){if(!(typeof p>"u")){var v;try{v=encodeURI(p)}catch{throw{code:"D3140",stack:new Error().stack,value:p,functionName:"encodeUrl"}}return v}}function we(p){if(!(typeof p>"u")){var v;try{v=decodeURIComponent(p)}catch{throw{code:"D3140",stack:new Error().stack,value:p,functionName:"decodeUrlComponent"}}return v}}function Be(p){if(!(typeof p>"u")){var v;try{v=decodeURI(p)}catch{throw{code:"D3140",stack:new Error().stack,value:p,functionName:"decodeUrl"}}return v}}async function ie(p,v,E){if(!(typeof p>"u")){if(E<0)throw{code:"D3020",stack:new Error().stack,value:E,index:3};var I=[];if(typeof E>"u"||E>0)if(typeof v=="string")I=p.split(v,E);else{var F=0,X=await Q(v,p);if(typeof X<"u"){for(var me=0;typeof X<"u"&&(typeof E>"u"||F<E);)I.push(p.substring(me,X.start)),me=X.end,X=await Q(X.next),F++;(typeof E>"u"||F<E)&&I.push(p.substring(me))}else I.push(p)}return I}}function ce(p,v){if(!(typeof p>"u"))return typeof v>"u"&&(v=""),p.join(v)}function z(p,v,E){if(!(typeof p>"u")){var I={"decimal-separator":".","grouping-separator":",","exponent-separator":"e",infinity:"Infinity","minus-sign":"-",NaN:"NaN",percent:"%","per-mille":"‰","zero-digit":"0",digit:"#","pattern-separator":";"},F=I;typeof E<"u"&&a.keys(E).forEach(function(ge){F[ge]=E[ge]});for(var X=[],me=F["zero-digit"].charCodeAt(0),ve=me;ve<me+10;ve++)X.push(String.fromCharCode(ve));var $e=X.concat([F["decimal-separator"],F["exponent-separator"],F["grouping-separator"],F.digit,F["pattern-separator"]]),Ne=v.split(F["pattern-separator"]);if(Ne.length>2)throw{code:"D3080",stack:new Error().stack};var ht=function(ge){var Ue=(function(){for(var Je,Ke=0;Ke<ge.length;Ke++)if(Je=ge.charAt(Ke),$e.indexOf(Je)!==-1&&Je!==F["exponent-separator"])return ge.substring(0,Ke);return""})(),He=(function(){for(var Je,Ke=ge.length-1;Ke>=0;Ke--)if(Je=ge.charAt(Ke),$e.indexOf(Je)!==-1&&Je!==F["exponent-separator"])return ge.substring(Ke+1);return""})(),Pe=ge.substring(Ue.length,ge.length-He.length),qe,st,at,ft,tt=ge.indexOf(F["exponent-separator"],Ue.length);tt===-1||tt>ge.length-He.length?(qe=Pe,st=void 0):(qe=Pe.substring(0,tt),st=Pe.substring(tt+1));var Ge=qe.indexOf(F["decimal-separator"]);return Ge===-1?(at=qe,ft=He):(at=qe.substring(0,Ge),ft=qe.substring(Ge+1)),{prefix:Ue,suffix:He,activePart:Pe,mantissaPart:qe,exponentPart:st,integerPart:at,fractionalPart:ft,subpicture:ge}},ot=function(ge){var Ue,He,Pe=ge.subpicture,qe=Pe.indexOf(F["decimal-separator"]);qe!==Pe.lastIndexOf(F["decimal-separator"])&&(Ue="D3081"),Pe.indexOf(F.percent)!==Pe.lastIndexOf(F.percent)&&(Ue="D3082"),Pe.indexOf(F["per-mille"])!==Pe.lastIndexOf(F["per-mille"])&&(Ue="D3083"),Pe.indexOf(F.percent)!==-1&&Pe.indexOf(F["per-mille"])!==-1&&(Ue="D3084");var st=!1;for(He=0;He<ge.mantissaPart.length;He++){var at=ge.mantissaPart.charAt(He);if(X.indexOf(at)!==-1||at===F.digit){st=!0;break}}st||(Ue="D3085");var ft=ge.activePart.split("").map(function(Je){return $e.indexOf(Je)===-1?"p":"a"}).join("");ft.indexOf("p")!==-1&&(Ue="D3086"),qe!==-1?(Pe.charAt(qe-1)===F["grouping-separator"]||Pe.charAt(qe+1)===F["grouping-separator"])&&(Ue="D3087"):ge.integerPart.charAt(ge.integerPart.length-1)===F["grouping-separator"]&&(Ue="D3088"),Pe.indexOf(F["grouping-separator"]+F["grouping-separator"])!==-1&&(Ue="D3089");var tt=ge.integerPart.indexOf(F.digit);tt!==-1&&ge.integerPart.substring(0,tt).split("").filter(function(Je){return X.indexOf(Je)>-1}).length>0&&(Ue="D3090"),tt=ge.fractionalPart.lastIndexOf(F.digit),tt!==-1&&ge.fractionalPart.substring(tt).split("").filter(function(Je){return X.indexOf(Je)>-1}).length>0&&(Ue="D3091");var Ge=typeof ge.exponentPart=="string";if(Ge&&ge.exponentPart.length>0&&(Pe.indexOf(F.percent)!==-1||Pe.indexOf(F["per-mille"])!==-1)&&(Ue="D3092"),Ge&&(ge.exponentPart.length===0||ge.exponentPart.split("").filter(function(Je){return X.indexOf(Je)===-1}).length>0)&&(Ue="D3093"),Ue)throw{code:Ue,stack:new Error().stack}},gt=function(ge){var Ue=function(Tt,Vt){for(var wn=[],dt=Tt.indexOf(F["grouping-separator"]);dt!==-1;){var Wt=(Vt?Tt.substring(0,dt):Tt.substring(dt)).split("").filter(function(Ft){return X.indexOf(Ft)!==-1||Ft===F.digit}).length;wn.push(Wt),dt=ge.integerPart.indexOf(F["grouping-separator"],dt+1)}return wn},He=Ue(ge.integerPart),Pe=function(Tt){if(Tt.length===0)return 0;for(var Vt=function(Wt,Ft){return Ft===0?Wt:Vt(Ft,Wt%Ft)},wn=Tt.reduce(Vt),dt=1;dt<=Tt.length;dt++)if(Tt.indexOf(dt*wn)===-1)return 0;return wn},qe=Pe(He),st=Ue(ge.fractionalPart,!0),at=ge.integerPart.split("").filter(function(Tt){return X.indexOf(Tt)!==-1}).length,ft=at,tt=ge.fractionalPart.split(""),Ge=tt.filter(function(Tt){return X.indexOf(Tt)!==-1}).length,Je=tt.filter(function(Tt){return X.indexOf(Tt)!==-1||Tt===F.digit}).length,Ke=typeof ge.exponentPart=="string";at===0&&Je===0&&(Ke?(Ge=1,Je=1):at=1),Ke&&at===0&&ge.integerPart.indexOf(F.digit)!==-1&&(at=1),at===0&&Ge===0&&(Ge=1);var jt=0;return Ke&&(jt=ge.exponentPart.split("").filter(function(Tt){return X.indexOf(Tt)!==-1}).length),{integerPartGroupingPositions:He,regularGrouping:qe,minimumIntegerPartSize:at,scalingFactor:ft,prefix:ge.prefix,fractionalPartGroupingPositions:st,minimumFactionalPartSize:Ge,maximumFactionalPartSize:Je,minimumExponentSize:jt,suffix:ge.suffix,picture:ge.subpicture}},Mt=Ne.map(ht);Mt.forEach(ot);var ct=Mt.map(gt),St=F["minus-sign"],nn=F["zero-digit"],Dt=F["decimal-separator"],hn=F["grouping-separator"];ct.length===1&&(ct.push(JSON.parse(JSON.stringify(ct[0]))),ct[1].prefix=St+ct[1].prefix);var Et;p>=0?Et=ct[0]:Et=ct[1];var ki;Et.picture.indexOf(F.percent)!==-1?ki=p*100:Et.picture.indexOf(F["per-mille"])!==-1?ki=p*1e3:ki=p;var Bn,vi;if(Et.minimumExponentSize===0)Bn=ki;else{var ac=Math.pow(10,Et.scalingFactor),oc=Math.pow(10,Et.scalingFactor-1);if(Bn=ki,vi=0,Bn!==0){for(;Math.abs(Bn)<oc;)Bn*=10,vi-=1;for(;Math.abs(Bn)>ac;)Bn/=10,vi+=1}}var lc=ee(Bn,Et.maximumFactionalPartSize),P=function(ge,Ue){var He=Math.abs(ge).toFixed(Ue);return nn!=="0"&&(He=He.split("").map(function(Pe){return Pe>="0"&&Pe<="9"?X[Pe.charCodeAt(0)-48]:Pe}).join("")),He},G=P(lc,Et.maximumFactionalPartSize),Z=G.indexOf(".");for(Z===-1?G=G+Dt:G=G.replace(".",Dt);G.charAt(0)===nn;)G=G.substring(1);for(;G.charAt(G.length-1)===nn;)G=G.substring(0,G.length-1);Z=G.indexOf(Dt);var te=Et.minimumIntegerPartSize-Z,Y=Et.minimumFactionalPartSize-(G.length-Z-1);if(G=(te>0?new Array(te+1).join(nn):"")+G,G=G+(Y>0?new Array(Y+1).join(nn):""),Z=G.indexOf(Dt),Et.regularGrouping>0)for(var Ee=Math.floor((Z-1)/Et.regularGrouping),Le=1;Le<=Ee;Le++)G=[G.slice(0,Z-Le*Et.regularGrouping),hn,G.slice(Z-Le*Et.regularGrouping)].join("");else Et.integerPartGroupingPositions.forEach(function(ge){G=[G.slice(0,Z-ge),hn,G.slice(Z-ge)].join(""),Z++});if(Z=G.indexOf(Dt),Et.fractionalPartGroupingPositions.forEach(function(ge){G=[G.slice(0,ge+Z+1),hn,G.slice(ge+Z+1)].join("")}),Z=G.indexOf(Dt),(Et.picture.indexOf(Dt)===-1||Z===G.length-1)&&(G=G.substring(0,G.length-1)),typeof vi<"u"){var Fe=P(vi,0);te=Et.minimumExponentSize-Fe.length,te>0&&(Fe=new Array(te+1).join(nn)+Fe),G=G+F["exponent-separator"]+(vi<0?St:"")+Fe}return G=Et.prefix+G+Et.suffix,G}}function j(p,v){if(!(typeof p>"u")){if(p=ee(p),typeof v>"u"?v=10:v=ee(v),v<2||v>36)throw{code:"D3100",stack:new Error().stack,value:v};var E=p.toString(v);return E}}function W(p){var v;if(!(typeof p>"u")){if(typeof p=="number")v=p;else if(typeof p=="string"&&/^-?[0-9]+(\.[0-9]+)?([Ee][-+]?[0-9]+)?$/.test(p)&&!isNaN(parseFloat(p))&&isFinite(p))v=parseFloat(p);else if(typeof p=="string"&&/^(0[xX][0-9A-Fa-f]+)|(0[oO][0-7]+)|(0[bB][0-1]+)$/.test(p))v=Number(p);else if(p===!0)v=1;else if(p===!1)v=0;else throw{code:"D3030",value:p,stack:new Error().stack,index:1};return v}}function le(p){var v;if(!(typeof p>"u"))return v=Math.abs(p),v}function be(p){var v;if(!(typeof p>"u"))return v=Math.floor(p),v}function U(p){var v;if(!(typeof p>"u"))return v=Math.ceil(p),v}function ee(p,v){var E;if(!(typeof p>"u")){if(v){var I=p.toString().split("e");p=+(I[0]+"e"+(I[1]?+I[1]+v:v))}E=Math.round(p);var F=E-p;return Math.abs(F)===.5&&Math.abs(E%2)===1&&(E=E-1),v&&(I=E.toString().split("e"),E=+(I[0]+"e"+(I[1]?+I[1]-v:-v))),Object.is(E,-0)&&(E=0),E}}function fe(p){var v;if(!(typeof p>"u")){if(p<0)throw{stack:new Error().stack,code:"D3060",index:1,value:p};return v=Math.sqrt(p),v}}function ye(p,v){var E;if(!(typeof p>"u")){if(E=Math.pow(p,v),!isFinite(E))throw{stack:new Error().stack,code:"D3061",index:1,value:p,exp:v};return E}}function Se(){return Math.random()}function ze(p){if(!(typeof p>"u")){var v=!1;if(Array.isArray(p)){if(p.length===1)v=ze(p[0]);else if(p.length>1){var E=p.filter(function(I){return ze(I)});v=E.length>0}}else typeof p=="string"?p.length>0&&(v=!0):l(p)?p!==0&&(v=!0):p!==null&&typeof p=="object"&&!f(p)?a.keys(p).length>0&&(v=!0):typeof p=="boolean"&&p===!0&&(v=!0);return v}}function _e(p){if(!(typeof p>"u"))return!ze(p)}function xe(p,v,E,I){var F=[v],X=b(p);return X>=2&&F.push(E),X>=3&&F.push(I),F}async function Xe(p,v){if(!(typeof p>"u")){for(var E=this.createSequence(),I=0;I<p.length;I++){var F=xe(v,p[I],I,p),X=await v.apply(this,F);typeof X<"u"&&E.push(X)}return E}}async function De(p,v){if(!(typeof p>"u")){for(var E=this.createSequence(),I=0;I<p.length;I++){var F=p[I],X=xe(v,F,I,p),me=await v.apply(this,X);ze(me)&&E.push(F)}return E}}async function N(p,v){if(!(typeof p>"u")){for(var E=!1,I,F=0;F<p.length;F++){var X=p[F],me=!0;if(typeof v<"u"){var ve=xe(v,X,F,p),$e=await v.apply(this,ve);me=ze($e)}if(me)if(!E)I=X,E=!0;else throw{stack:new Error().stack,code:"D3138",index:F}}if(!E)throw{stack:new Error().stack,code:"D3139"};return I}}function w(){for(var p=[],v=Array.prototype.slice.call(arguments),E=Math.min.apply(Math,v.map(function(X){return Array.isArray(X)?X.length:0})),I=0;I<E;I++){var F=v.map(X=>X[I]);p.push(F)}return p}async function q(p,v,E){if(!(typeof p>"u")){var I,F=b(v);if(F<2)throw{stack:new Error().stack,code:"D3050",index:1};var X;for(typeof E>"u"&&p.length>0?(I=p[0],X=1):(I=E,X=0);X<p.length;){var me=[I,p[X]];F>=3&&me.push(X),F>=4&&me.push(p),I=await v.apply(this,me),X++}return I}}function re(p){var v=this.createSequence();if(Array.isArray(p)){for(var E=Object.create(null),I=0;I<p.length;I++){var F=re.call(this,p[I]);F.forEach(function(X){E[X]=!0})}v=re.call(this,E)}else p!==null&&typeof p=="object"&&!f(p)&&a.keys(p).forEach(X=>v.push(X));return v}function pe(p,v){var E;if(Array.isArray(p)){E=this.createSequence();for(var I=0;I<p.length;I++){var F=pe.call(this,p[I],v);typeof F<"u"&&(Array.isArray(F)?F.forEach(X=>E.push(X)):E.push(F))}}else p!==null&&typeof p=="object"&&Object.prototype.hasOwnProperty.call(p,v)&&!f(p)&&(E=p[v]);return E}function ae(p,v){if(typeof p>"u")return v;if(typeof v>"u")return p;Array.isArray(p)||(p=this.createSequence(p)),Array.isArray(v)||(v=[v]);const E=p.length+v.length;if(this.options&&E>this.options.sequence)throw{code:"D2015",stack:new Error().stack,value:E};return p.concat(v)}function Ve(p){return!(typeof p>"u")}function Ae(p){var v=this.createSequence();if(Array.isArray(p))for(var E=0;E<p.length;E++)v=ae.call(this,v,Ae.call(this,p[E]));else if(p!==null&&typeof p=="object"&&!d(p))for(const F of a.keys(p)){var I=Object.create(null);I[F]=p[F],v.push(I)}else v=p;return v}function oe(p){if(!(typeof p>"u")){var v=Object.create(null);return p.forEach(function(E){for(const I of a.keys(E))v[I]=E[I]}),v}}function We(p){if(!(typeof p>"u")){if(p.length<=1)return p;for(var v=p.length,E=new Array(v),I=0;I<v;I++)E[v-I-1]=p[I];return E}}async function Me(p,v){var E=this.createSequence();for(const X of a.keys(p)){var I=xe(v,p[X],X,p),F=await v.apply(this,I);typeof F<"u"&&E.push(F)}return E}function Re(p){throw{code:"D3137",stack:new Error().stack,message:p||"$error() function evaluated"}}function je(p,v){if(!p)throw{code:"D3141",stack:new Error().stack,message:v||"$assert() statement failed"}}function Oe(p){if(p!==void 0)return p===null?"null":l(p)?"number":typeof p=="string"?"string":typeof p=="boolean"?"boolean":Array.isArray(p)?"array":f(p)?"function":"object"}async function Ce(p,v){if(!(typeof p>"u")){if(p.length<=1)return p;var E;if(typeof v>"u"){if(!h(p)&&!c(p))throw{stack:new Error().stack,code:"D3070",index:1};E=async function(me,ve){return me>ve}}else E=v;var I=async function(me,ve){var $e=async function(ht,ot,gt){ot.length===0?Array.prototype.push.apply(ht,gt):gt.length===0?Array.prototype.push.apply(ht,ot):await E(ot[0],gt[0])?(ht.push(gt[0]),await $e(ht,ot,gt.slice(1))):(ht.push(ot[0]),await $e(ht,ot.slice(1),gt))},Ne=[];return await $e(Ne,me,ve),Ne},F=async function(me){if(!Array.isArray(me)||me.length<=1)return me;var ve=Math.floor(me.length/2),$e=me.slice(0,ve),Ne=me.slice(ve);return $e=await F($e),Ne=await F(Ne),await I($e,Ne)},X=await F(p);return X}}function A(p){if(!(typeof p>"u")){if(p.length<=1)return p;for(var v=new Array(p.length),E=0;E<p.length;E++){var I=Math.floor(Math.random()*(E+1));E!==I&&(v[E]=v[I]),v[I]=p[E]}return v}}function x(p){if(!(typeof p>"u")){if(!Array.isArray(p)||p.length<=1)return p;for(var v=u(p)?this.createSequence():[],E=0;E<p.length;E++){for(var I=p[E],F=!1,X=0;X<v.length;X++)if(g(I,v[X])){F=!0;break}F||v.push(I)}return v}}async function L(p,v){var E=Object.create(null);for(const me of a.keys(p)){var I=p[me],F=xe(v,I,me,p),X=await v.apply(this,F);ze(X)&&(E[me]=I)}return a.keys(E).length===0&&(E=void 0),E}return{sum:S,count:y,max:M,min:T,average:R,string:k,substring:B,substringBefore:C,substringAfter:D,lowercase:V,uppercase:K,length:J,trim:se,pad:he,match:ne,contains:de,replace:ue,split:ie,join:ce,formatNumber:z,formatBase:j,number:W,floor:be,ceil:U,round:ee,abs:le,sqrt:fe,power:ye,random:Se,boolean:ze,not:_e,map:Xe,zip:w,filter:De,single:N,foldLeft:q,sift:L,keys:re,lookup:pe,append:ae,exists:Ve,spread:Ae,merge:oe,reverse:We,each:Me,error:Re,assert:je,type:Oe,sort:Ce,shuffle:A,distinct:x,base64encode:Te,base64decode:ke,encodeUrlComponent:O,encodeUrl:H,decodeUrlComponent:we,decodeUrl:Be}})();n.exports=o}).call(this)}).call(this,typeof jc<"u"?jc:typeof self<"u"?self:typeof window<"u"?window:{})},{"./utils":6}],3:[function(t,n,r){var s=t("./datetime"),a=t("./functions"),o=t("./utils"),l=t("./parser"),c=t("./signature"),h=(function(){var u=o.isNumeric,f=o.isArrayOfStrings,d=o.isArrayOfNumbers,_=o.isSequence,b=o.isFunction,g=o.isLambda,m=o.isIterable,S=o.isPromise,y=o.getFunctionArity,M=o.isDeepEqual,T=Re(null);async function R(A,x,L){var p;L.base.depth++,L.base.guardrails();var v=L.lookup(Symbol.for("jsonata.__evaluate_entry"));switch(v&&await v(A,x,L),A.type){case"path":p=await k(A,x,L);break;case"binary":p=await J(A,x,L);break;case"unary":p=await se(A,x,L);break;case"name":p=he(A,x,L);break;case"string":case"number":case"value":p=Q(A);break;case"wildcard":p=de(A,x,L);break;case"descendant":p=ue(A,x,L);break;case"parent":p=L.lookup(A.slot.label);break;case"condition":p=await be(A,x,L);break;case"block":p=await U(A,x,L);break;case"bind":p=await le(A,x,L);break;case"regex":p=ee(A,x,L);break;case"function":p=await xe(A,x,L);break;case"variable":p=fe(A,x,L);break;case"lambda":p=N(A,x,L);break;case"partial":p=await w(A,x,L);break;case"apply":p=await _e(A,x,L);break;case"transform":p=Se(A,x,L);break}if(Object.prototype.hasOwnProperty.call(A,"predicate"))for(var E=0;E<A.predicate.length;E++)p=await K(A.predicate[E].expr,p,L);A.type!=="path"&&Object.prototype.hasOwnProperty.call(A,"group")&&(p=await z(A.group,p,L));var I=L.lookup(Symbol.for("jsonata.__evaluate_exit"));return I&&await I(A,x,L,p),p&&_(p)&&!p.tupleStream&&(A.keepArray&&(p.keepSingleton=!0),p.length===0?p=void 0:p.length===1&&(p=p.keepSingleton?p:p[0])),L.base.depth--,p}async function k(A,x,L){var p;Array.isArray(x)&&A.steps[0].type!=="variable"?p=x:p=L.base.createSequence(x);for(var v,E=!1,I=void 0,F=0;F<A.steps.length;F++){var X=A.steps[F];if(X.tuple&&(E=!0),F===0&&X.consarray?v=await R(X,p,L):E?I=await V(X,p,I,L):v=await C(X,p,L,F===A.steps.length-1),!E&&(typeof v>"u"||v.length===0))break;typeof X.focus>"u"&&(p=v)}if(E)if(A.tuple)v=I;else for(v=L.base.createSequence(),F=0;F<I.length;F++)v.push(I[F]["@"]);return A.keepSingletonArray&&(Array.isArray(v)&&v.cons&&!v.sequence&&(v=L.base.createSequence(v)),v.keepSingleton=!0),Object.prototype.hasOwnProperty.call(A,"group")&&(v=await z(A.group,E?I:v,L)),v}function B(A,x){var L=Re(A);for(const p of o.keys(x))L.bind(p,x[p]);return L}async function C(A,x,L,p){var v;if(A.type==="sort")return v=await ye(A,x,L),A.stages&&(v=await D(A.stages,v,L)),v;v=L.base.createSequence();for(var E=0;E<x.length;E++){var I=await R(A,x[E],L);if(A.stages)for(var F=0;F<A.stages.length;F++)I=await K(A.stages[F].expr,I,L);typeof I<"u"&&v.push(I)}var X=L.base.createSequence();return p&&v.length===1&&Array.isArray(v[0])&&!_(v[0])?X=v[0]:Array.prototype.forEach.call(v,function(me){!Array.isArray(me)||me.cons?X.push(me):Array.prototype.forEach.call(me,ve=>X.push(ve))}),X}async function D(A,x,L){for(var p=x,v=0;v<A.length;v++){var E=A[v];switch(E.type){case"filter":p=await K(E.expr,p,L);break;case"index":for(var I=0;I<p.length;I++){var F=p[I];F[E.value]=I}break}}return p}async function V(A,x,L,p){var v;if(A.type==="sort"){if(L)v=await ye(A,L,p);else{var E=await ye(A,x,p);v=p.base.createSequence(),v.tupleStream=!0;for(var I=0;I<E.length;I++){var F={"@":E[I]};F[A.index]=I,v.push(F)}}return A.stages&&(v=await D(A.stages,v,p)),v}v=p.base.createSequence(),v.tupleStream=!0;var X=p;L===void 0&&(L=x.map(Ne=>({"@":Ne})));for(var me=0;me<L.length;me++){X=B(p,L[me]);var ve=await R(A,L[me]["@"],X);if(typeof ve<"u"){Array.isArray(ve)||(ve=[ve]);for(var $e=0;$e<ve.length;$e++)F=Object.create(null),Object.assign(F,L[me]),ve.tupleStream?Object.assign(F,ve[$e]):(A.focus?(F[A.focus]=ve[$e],F["@"]=L[me]["@"]):F["@"]=ve[$e],A.index&&(F[A.index]=$e),A.ancestor&&(F[A.ancestor.label]=L[me]["@"])),v.push(F)}}return A.stages&&(v=await D(A.stages,v,p)),v}async function K(A,x,L){var p=L.base.createSequence();if(x&&x.tupleStream&&(p.tupleStream=!0),Array.isArray(x)||(x=L.base.createSequence(x)),A.type==="number"){var v=Math.floor(A.value);v<0&&(v=x.length+v);var E=await x[v];typeof E<"u"&&(Array.isArray(E)?p=E:p.push(E))}else for(v=0;v<x.length;v++){var E=x[v],I=E,F=L;x.tupleStream&&(I=E["@"],F=B(L,E));var X=await R(A,I,F);u(X)&&(X=[X]),d(X)?Array.prototype.forEach.call(X,function(ve){var $e=Math.floor(ve);$e<0&&($e=x.length+$e),$e===v&&p.push(E)}):a.boolean(X)&&p.push(E)}return p}async function J(A,x,L){var p,v=await R(A.lhs,x,L),E=A.value,I=async()=>await R(A.rhs,x,L);if(E==="and"||E==="or")try{return await Be(v,I,E)}catch(X){throw X.position=A.position,X.token=E,X}var F=await I();try{switch(E){case"+":case"-":case"*":case"/":case"%":p=ke(v,F,E);break;case"=":case"!=":p=O(v,F,E);break;case"<":case"<=":case">":case">=":p=H(v,F,E);break;case"&":p=ce(v,F);break;case"..":p=W(v,F,L);break;case"in":p=we(v,F);break}}catch(X){throw X.position=A.position,X.token=E,X}return p}async function se(A,x,L){var p,v={options:L.base.options,createSequence:L.base.createSequence};switch(A.value){case"-":if(p=await R(A.expression,x,L),typeof p>"u")p=void 0;else if(u(p))p=-p;else throw{code:"D1002",stack:new Error().stack,position:A.position,token:A.value,value:p};break;case"[":p=[];let F=await Promise.all(A.expressions.map(async(X,me)=>(L.isParallelCall=me>0,[X,await R(X,x,L)])));for(let X of F){var[E,I]=X;typeof I<"u"&&(E.value==="["?p.push(I):p=a.append.call(v,p,I))}A.consarray&&Object.defineProperty(p,"cons",{enumerable:!1,configurable:!1,value:!0});break;case"{":p=await z(A,x,L);break}return p}function he(A,x,L){var p={createSequence:L.base.createSequence};return a.lookup.call(p,x,A.value)}function Q(A){return A.value}function de(A,x,L){var p={options:L.base.options,createSequence:L.base.createSequence},v=p.createSequence();return Array.isArray(x)&&x.outerWrapper&&x.length>0&&(x=x[0]),x!==null&&typeof x=="object"&&!b(x)&&o.keys(x).forEach(function(E){var I=x[E];Array.isArray(I)?(I=ne(I),v=a.append.call(p,v,I)):v.push(I)}),v}function ne(A,x){return typeof x>"u"&&(x=[]),Array.isArray(A)?Array.prototype.forEach.call(A,function(L){ne(L,x)}):x.push(A),x}function ue(A,x,L){var p,v=L.base.createSequence();return typeof x<"u"&&(Te(x,v),v.length===1?p=v[0]:p=v),p}function Te(A,x){Array.isArray(A)||x.push(A),Array.isArray(A)?Array.prototype.forEach.call(A,function(L){Te(L,x)}):A!==null&&typeof A=="object"&&!b(A)&&o.keys(A).forEach(function(L){Te(A[L],x)})}function ke(A,x,L){var p;if(typeof A<"u"&&!u(A))throw{code:"T2001",stack:new Error().stack,value:A};if(typeof x<"u"&&!u(x))throw{code:"T2002",stack:new Error().stack,value:x};if(typeof A>"u"||typeof x>"u")return p;switch(L){case"+":p=A+x;break;case"-":p=A-x;break;case"*":p=A*x;break;case"/":p=A/x;break;case"%":p=A%x;break}return p}function O(A,x,L){var p,v=typeof A,E=typeof x;if(v==="undefined"||E==="undefined")return!1;switch(L){case"=":p=M(A,x);break;case"!=":p=!M(A,x);break}return p}function H(A,x,L){var p,v=typeof A,E=typeof x,I=v==="undefined"||v==="string"||v==="number",F=E==="undefined"||E==="string"||E==="number";if(!I||!F)throw{code:"T2010",stack:new Error().stack,value:v==="string"||v==="number"?x:A};if(!(v==="undefined"||E==="undefined")){if(v!==E)throw{code:"T2009",stack:new Error().stack,value:A,value2:x};switch(L){case"<":p=A<x;break;case"<=":p=A<=x;break;case">":p=A>x;break;case">=":p=A>=x;break}return p}}function we(A,x){var L=!1;if(typeof A>"u"||typeof x>"u")return!1;Array.isArray(x)||(x=[x]);for(var p=0;p<x.length;p++)if(x[p]===A){L=!0;break}return L}async function Be(A,x,L){var p,v=ie(A);switch(L){case"and":p=v&&ie(await x());break;case"or":p=v||ie(await x());break}return p}function ie(A){var x=a.boolean(A);return typeof x>"u"?!1:x}function ce(A,x){var L,p="",v="";return typeof A<"u"&&(p=a.string(A)),typeof x<"u"&&(v=a.string(x)),L=p.concat(v),L}async function z(A,x,L){var p=Object.create(null),v=Object.create(null),E=!!(x&&x.tupleStream),I={options:L.base.options,createSequence:L.base.createSequence};Array.isArray(x)||(L.base.options,x=I.createSequence(x)),x.length===0&&!E&&x.push(void 0);for(var F=0;F<x.length;F++)for(var X=x[F],me=E?B(L,X):L,ve=0;ve<A.lhs.length;ve++){var $e=A.lhs[ve],Ne=await R($e[0],E?X["@"]:X,me);if(typeof Ne!="string"&&Ne!==void 0)throw{code:"T1003",stack:new Error().stack,position:A.position,value:Ne};if(Ne!==void 0){if(Ne==="_jsonata_lambda"||Ne==="_jsonata_function")throw{code:"D1013",stack:new Error().stack,position:A.position,value:Ne};var ht={data:X,exprIndex:ve};if(Object.prototype.hasOwnProperty.call(v,Ne)){if(v[Ne].exprIndex!==ve)throw{code:"D1009",stack:new Error().stack,position:A.position,value:Ne};v[Ne].data=a.append.call(I,v[Ne].data,X)}else v[Ne]=ht}}let ot=await Promise.all(o.keys(v).map(async(Mt,ct)=>{let St=v[Mt];var nn=St.data,Dt=L;if(E){var hn=j(St.data,L);nn=hn["@"],delete hn["@"],Dt=B(L,hn)}return L.isParallelCall=ct>0,[Mt,await R(A.lhs[St.exprIndex][1],nn,Dt)]}));for(let Mt of ot){var[Ne,gt]=await Mt;typeof gt<"u"&&(p[Ne]=gt)}return p}function j(A,x){if(!Array.isArray(A))return A;var L=Object.create(null),p={options:x.base.options,createSequence:x.base.createSequence};Object.assign(L,A[0]);for(var v=1;v<A.length;v++)for(const E of o.keys(A[v]))L[E]=a.append.call(p,L[E],A[v][E]);return L}function W(A,x,L){var p;if(typeof A<"u"&&!Number.isInteger(A))throw{code:"T2003",stack:new Error().stack,value:A};if(typeof x<"u"&&!Number.isInteger(x))throw{code:"T2004",stack:new Error().stack,value:x};if(typeof A>"u"||typeof x>"u"||A>x)return p;var v=x-A+1;if(v>1e7)throw{code:"D2014",stack:new Error().stack,value:v};if(L.base.options&&v>L.base.options.sequence)throw{code:"D2015",stack:new Error().stack,value:v};p=new Array(v);for(var E=A,I=0;E<=x;E++,I++)p[I]=E;return p.sequence=!0,p}async function le(A,x,L){var p=await R(A.rhs,x,L);return L.bind(A.lhs.value,p),p}async function be(A,x,L){var p,v=await R(A.condition,x,L);return a.boolean(v)?p=await R(A.then,x,L):typeof A.else<"u"&&(p=await R(A.else,x,L)),p}async function U(A,x,L){for(var p,v=Re(L),E=0;E<A.expressions.length;E++)p=await R(A.expressions[E],x,v);return p}function ee(A,x,L){var p=new L.base.RegexEngine(A.value),v=function(E,I){var F;p.lastIndex=I||0;var X=p.exec(E);if(X!==null){if(F={match:X[0],start:X.index,end:X.index+X[0].length,groups:[]},X.length>1)for(var me=1;me<X.length;me++)F.groups.push(X[me]);F.next=function(){if(!(p.lastIndex>=E.length)){var ve=v(E,p.lastIndex);if(ve&&ve.match==="")throw{code:"D1004",stack:new Error().stack,position:A.position,value:A.value.source};return ve}}}return F};return v}function fe(A,x,L){var p;return A.value===""?p=x&&x.outerWrapper?x[0]:x:p=L.lookup(A.value),p}async function ye(A,x,L){var p,v=x,E=!!x.tupleStream,I=async function(X,me){for(var ve=0,$e=0;ve===0&&$e<A.terms.length;$e++){var Ne=A.terms[$e],ht=X,ot=L;E&&(ht=X["@"],ot=B(L,X));var gt=await R(Ne.expression,ht,ot);ht=me,ot=L,E&&(ht=me["@"],ot=B(L,me));var Mt=await R(Ne.expression,ht,ot),ct=typeof gt,St=typeof Mt;if(ct==="undefined"){ve=St==="undefined"?0:1;continue}if(St==="undefined"){ve=-1;continue}if(!(ct==="string"||ct==="number")||!(St==="string"||St==="number"))throw{code:"T2008",stack:new Error().stack,position:A.position,value:ct==="string"||ct==="number"?Mt:gt};if(ct!==St)throw{code:"T2007",stack:new Error().stack,position:A.position,value:gt,value2:Mt};gt!==Mt&&(gt<Mt?ve=-1:ve=1,Ne.descending===!0&&(ve=-ve))}return ve===1},F={environment:L,input:x};return p=await a.sort.apply(F,[v,I]),p}function Se(A,x,L){var p=async function(v){if(!(typeof v>"u")){var E=L.lookup("clone");if(!b(E))throw{code:"T2013",stack:new Error().stack,position:A.position};var I=await Xe(E,[v],null,L),F=await R(A.pattern,I,L);if(typeof F<"u"){Array.isArray(F)||(F=[F]);for(var X=0;X<F.length;X++){var me=F[X],ve=await R(A.update,me,L),$e=typeof ve;if($e!=="undefined"){if($e!=="object"||ve===null||Array.isArray(ve))throw{code:"T2011",stack:new Error().stack,position:A.update.position,value:ve};for(const gt of o.keys(ve))me[gt]=ve[gt]}if(typeof A.delete<"u"){var Ne=await R(A.delete,me,L);if(typeof Ne<"u"){var ht=Ne;if(Array.isArray(Ne)||(Ne=[Ne]),!f(Ne))throw{code:"T2012",stack:new Error().stack,position:A.delete.position,value:ht};for(var ot=0;ot<Ne.length;ot++)typeof me=="object"&&me!==null&&delete me[Ne[ot]]}}}}return I}};return oe(p,"<(oa):o>")}var ze=l("function($f, $g) { function($x){ $g($f($x)) } }");async function _e(A,x,L){var p,v=await R(A.lhs,x,L);if(A.rhs.type==="function")p=await xe(A.rhs,x,L,{context:v});else{var E=await R(A.rhs,x,L);if(!b(E))throw{code:"T2006",stack:new Error().stack,position:A.position,value:E};if(b(v)){var I=await R(ze,null,L);p=await Xe(I,[v,E],null,L)}else p=await Xe(E,[v],null,L)}return p}async function xe(A,x,L,p){var v,E=await R(A.procedure,x,L);if(typeof E>"u"&&A.procedure.type==="path"&&L.lookup(A.procedure.steps[0].value))throw{code:"T1005",stack:new Error().stack,position:A.position,token:A.procedure.steps[0].value};var I=[];typeof p<"u"&&I.push(p.context);for(var F=0;F<A.arguments.length;F++){const me=await R(A.arguments[F],x,L);if(b(me)){const ve=async function(...$e){return await Xe(me,$e,null,L)};ve.arity=y(me),I.push(ve)}else I.push(me)}var X=A.procedure.type==="path"?A.procedure.steps[0].value:A.procedure.value;try{typeof E=="object"&&(E.token=X,E.position=A.position),v=await Xe(E,I,x,L)}catch(me){throw me.position||(me.position=A.position),me.token||(me.token=X),me}return v}async function Xe(A,x,L,p){var v;for(v=await De(A,x,L,p);g(v)&&v.thunk===!0;){var E=await R(v.body.procedure,v.input,v.environment);v.body.procedure.type==="variable"&&(E.token=v.body.procedure.value),E.position=v.body.procedure.position;for(var I=[],F=0;F<v.body.arguments.length;F++)I.push(await R(v.body.arguments[F],v.input,v.environment));v=await De(E,I,L,p)}return v}async function De(A,x,L,p){var v;try{var E=x;if(A&&(E=q(A.signature,x,L)),g(A))v=await re(A,E);else if(A&&A._jsonata_function===!0){var I={environment:p,input:L,options:p.base.options,createSequence:p.base.createSequence};v=A.implementation.apply(I,E),m(v)&&(v=v.next().value),S(v)&&(v=await v)}else if(typeof A=="function")v=A.apply(L,E),S(v)&&(v=await v);else throw{code:"T1006",stack:new Error().stack}}catch(F){throw A&&(typeof F.token>"u"&&typeof A.token<"u"&&(F.token=A.token),F.position=A.position||F.position),F}return v}function N(A,x,L){var p={_jsonata_lambda:!0,input:x,environment:L,arguments:A.arguments,signature:A.signature,body:A.body};return A.thunk===!0&&(p.thunk=!0),p.apply=async function(v,E){return await Xe(p,E,x,v?v.environment:L)},p}async function w(A,x,L){for(var p,v=[],E=0;E<A.arguments.length;E++){var I=A.arguments[E];I.type==="operator"&&I.value==="?"?v.push(I):v.push(await R(I,x,L))}var F=await R(A.procedure,x,L);if(typeof F>"u"&&A.procedure.type==="path"&&L.lookup(A.procedure.steps[0].value))throw{code:"T1007",stack:new Error().stack,position:A.position,token:A.procedure.steps[0].value};if(g(F))p=pe(F,v,L);else if(F&&F._jsonata_function===!0)p=ae(F.implementation,v,L);else if(typeof F=="function")p=ae(F,v,L);else throw{code:"T1008",stack:new Error().stack,position:A.position,token:A.procedure.type==="path"?A.procedure.steps[0].value:A.procedure.value};return p}function q(A,x,L){if(typeof A>"u")return x;var p=A.validate(x,L);return p}async function re(A,x){var L,p=Re(A.environment);return Array.prototype.forEach.call(A.arguments,function(v,E){p.bind(v.value,x[E])}),typeof A.body=="function"?L=await Ve(A.body,p):L=await R(A.body,A.input,p),L}function pe(A,x,L){var p=Re(A.environment||L),v=[];Array.prototype.forEach.call(A.arguments,function(I,F){var X=x[F];X&&X.type==="operator"&&X.value==="?"?v.push(I):p.bind(I.value,X)});var E={_jsonata_lambda:!0,input:A.input,environment:p,arguments:v,body:A.body};return E}function ae(A,x,L){var p=Ae(A);p=p.map(function(F){return"$"+F.trim()});var v="function("+p.join(", ")+"){ _ }",E=l(v);E.body=A;var I=pe(E,x,L);return I}async function Ve(A,x){var L=Ae(A),p=L.map(function(I){return x.lookup(I.trim())}),v={environment:x,createSequence:x.base.createSequence},E=A.apply(v,p);return S(E)&&(E=await E),E}function Ae(A){var x=A.toString(),L=/\(([^)]*)\)/.exec(x)[1],p=L.split(",");return p}function oe(A,x){var L={_jsonata_function:!0,implementation:A};return typeof x<"u"&&(L.signature=c(x)),L}async function We(A,x){if(!(typeof A>"u")){var L=this.input;typeof x<"u"&&(L=x,Array.isArray(L)&&!_(L)&&(L=this.createSequence(L),L.outerWrapper=!0));try{var p=l(A,!1)}catch(E){throw Oe(E),{stack:new Error().stack,code:"D3120",value:E.message,error:E}}try{var v=await R(p,L,this.environment)}catch(E){throw Oe(E),{stack:new Error().stack,code:"D3121",value:E.message,error:E}}return v}}function Me(A){if(!(typeof A>"u"))return JSON.parse(a.string(A))}function Re(A){var x=Object.create(null);const L={bind:function(v,E){x[v]=E},lookup:function(v){var E;return Object.prototype.hasOwnProperty.call(x,v)?E=x[v]:A&&(E=A.lookup(v)),E},timestamp:A?A.timestamp:null,async:A?A.async:!1,isParallelCall:A?A.isParallelCall:!1,global:A?A.global:{ancestry:[null]}};if(A){var p=A.lookup(Symbol.for("jsonata.__createFrame_push"));p&&p(A,L),L.base=A.base}return L}T.bind("sum",oe(a.sum,"<a<n>:n>")),T.bind("count",oe(a.count,"<a:n>")),T.bind("max",oe(a.max,"<a<n>:n>")),T.bind("min",oe(a.min,"<a<n>:n>")),T.bind("average",oe(a.average,"<a<n>:n>")),T.bind("string",oe(a.string,"<x-b?:s>")),T.bind("substring",oe(a.substring,"<s-nn?:s>")),T.bind("substringBefore",oe(a.substringBefore,"<s-s:s>")),T.bind("substringAfter",oe(a.substringAfter,"<s-s:s>")),T.bind("lowercase",oe(a.lowercase,"<s-:s>")),T.bind("uppercase",oe(a.uppercase,"<s-:s>")),T.bind("length",oe(a.length,"<s-:n>")),T.bind("trim",oe(a.trim,"<s-:s>")),T.bind("pad",oe(a.pad,"<s-ns?:s>")),T.bind("match",oe(a.match,"<s-f<s:o>n?:a<o>>")),T.bind("contains",oe(a.contains,"<s-(sf):b>")),T.bind("replace",oe(a.replace,"<s-(sf)(sf)n?:s>")),T.bind("split",oe(a.split,"<s-(sf)n?:a<s>>")),T.bind("join",oe(a.join,"<a<s>s?:s>")),T.bind("formatNumber",oe(a.formatNumber,"<n-so?:s>")),T.bind("formatBase",oe(a.formatBase,"<n-n?:s>")),T.bind("formatInteger",oe(s.formatInteger,"<n-s:s>")),T.bind("parseInteger",oe(s.parseInteger,"<s-s:n>")),T.bind("number",oe(a.number,"<(nsb)-:n>")),T.bind("floor",oe(a.floor,"<n-:n>")),T.bind("ceil",oe(a.ceil,"<n-:n>")),T.bind("round",oe(a.round,"<n-n?:n>")),T.bind("abs",oe(a.abs,"<n-:n>")),T.bind("sqrt",oe(a.sqrt,"<n-:n>")),T.bind("power",oe(a.power,"<n-n:n>")),T.bind("random",oe(a.random,"<:n>")),T.bind("boolean",oe(a.boolean,"<x-:b>")),T.bind("not",oe(a.not,"<x-:b>")),T.bind("map",oe(a.map,"<af>")),T.bind("zip",oe(a.zip,"<a+>")),T.bind("filter",oe(a.filter,"<af>")),T.bind("single",oe(a.single,"<af?>")),T.bind("reduce",oe(a.foldLeft,"<afj?:j>")),T.bind("sift",oe(a.sift,"<o-f?:o>")),T.bind("keys",oe(a.keys,"<x-:a<s>>")),T.bind("lookup",oe(a.lookup,"<x-s:x>")),T.bind("append",oe(a.append,"<xx:a>")),T.bind("exists",oe(a.exists,"<x:b>")),T.bind("spread",oe(a.spread,"<x-:a<o>>")),T.bind("merge",oe(a.merge,"<a<o>:o>")),T.bind("reverse",oe(a.reverse,"<a:a>")),T.bind("each",oe(a.each,"<o-f:a>")),T.bind("error",oe(a.error,"<s?:x>")),T.bind("assert",oe(a.assert,"<bs?:x>")),T.bind("type",oe(a.type,"<x:s>")),T.bind("sort",oe(a.sort,"<af?:a>")),T.bind("shuffle",oe(a.shuffle,"<a:a>")),T.bind("distinct",oe(a.distinct,"<x:x>")),T.bind("base64encode",oe(a.base64encode,"<s-:s>")),T.bind("base64decode",oe(a.base64decode,"<s-:s>")),T.bind("encodeUrlComponent",oe(a.encodeUrlComponent,"<s-:s>")),T.bind("encodeUrl",oe(a.encodeUrl,"<s-:s>")),T.bind("decodeUrlComponent",oe(a.decodeUrlComponent,"<s-:s>")),T.bind("decodeUrl",oe(a.decodeUrl,"<s-:s>")),T.bind("eval",oe(We,"<sx?:x>")),T.bind("toMillis",oe(s.toMillis,"<s-s?:n>")),T.bind("fromMillis",oe(s.fromMillis,"<n-s?s?:s>")),T.bind("clone",oe(Me,"<(oa)-:o>"));var je={S0101:"String literal must be terminated by a matching quote",S0102:"Number out of range: {{token}}",S0103:"Unsupported escape sequence: \\{{token}}",S0104:"The escape sequence \\u must be followed by 4 hex digits",S0105:"Quoted property name must be terminated with a backquote (`)",S0106:"Comment has no closing tag",S0201:"Syntax error: {{token}}",S0202:"Expected {{value}}, got {{token}}",S0203:"Expected {{value}} before end of expression",S0204:"Unknown operator: {{token}}",S0205:"Unexpected token: {{token}}",S0206:"Unknown expression type: {{token}}",S0207:"Unexpected end of expression",S0208:"Parameter {{value}} of function definition must be a variable name (start with $)",S0209:"A predicate cannot follow a grouping expression in a step",S0210:"Each step can only have one grouping expression",S0211:"The symbol {{token}} cannot be used as a unary operator",S0212:"The left side of := must be a variable name (start with $)",S0213:"The literal value {{value}} cannot be used as a step within a path expression",S0214:"The right side of {{token}} must be a variable name (start with $)",S0215:"A context variable binding must precede any predicates on a step",S0216:"A context variable binding must precede the 'order-by' clause on a step",S0217:"The object representing the 'parent' cannot be derived from this expression",S0301:"Empty regular expressions are not allowed",S0302:"No terminating / in regular expression",S0402:"Choice groups containing parameterized types are not supported",S0401:"Type parameters can only be applied to functions and arrays",S0500:"Attempted to evaluate an expression containing syntax error(s)",T0410:"Argument {{index}} of function {{token}} does not match function signature",T0411:"Context value is not a compatible type with argument {{index}} of function {{token}}",T0412:"Argument {{index}} of function {{token}} must be an array of {{type}}",D1001:"Number out of range: {{value}}",D1002:"Cannot negate a non-numeric value: {{value}}",T1003:"Key in object structure must evaluate to a string; got: {{value}}",D1004:"Regular expression matches zero length string",T1005:"Attempted to invoke a non-function. Did you mean ${{{token}}}?",T1006:"Attempted to invoke a non-function",T1007:"Attempted to partially apply a non-function. Did you mean ${{{token}}}?",T1008:"Attempted to partially apply a non-function",D1009:"Multiple key definitions evaluate to same key: {{value}}",T1010:"The matcher function argument passed to function {{token}} does not return the correct object structure",D1011:"Stack overflow. Check for non-terminating recursive function. Consider rewriting as tail-recursive",D1012:"Evaluation timeout after {{value}} milliseconds. Check for infinite loop",D1013:"Object property names starting with _jsonata_ are reserved for internal use: {{value}}",T2001:"The left side of the {{token}} operator must evaluate to a number",T2002:"The right side of the {{token}} operator must evaluate to a number",T2003:"The left side of the range operator (..) must evaluate to an integer",T2004:"The right side of the range operator (..) must evaluate to an integer",D2005:"The left side of := must be a variable name (start with $)",T2006:"The right side of the function application operator ~> must be a function",T2007:"Type mismatch when comparing values {{value}} and {{value2}} in order-by clause",T2008:"The expressions within an order-by clause must evaluate to numeric or string values",T2009:"The values {{value}} and {{value2}} either side of operator {{token}} must be of the same data type",T2010:"The expressions either side of operator {{token}} must evaluate to numeric or string values",T2011:"The insert/update clause of the transform expression must evaluate to an object: {{value}}",T2012:"The delete clause of the transform expression must evaluate to a string or array of strings: {{value}}",T2013:"The transform expression clones the input object using the $clone() function. This has been overridden in the current scope by a non-function.",D2014:"The size of the sequence allocated by the range operator (..) must not exceed 1e7. Attempted to allocate {{value}}.",D2015:"The maximum sequence length of {{value}} was exceeded.",D3001:"Attempting to invoke string function on Infinity or NaN",D3010:"Second argument of replace function cannot be an empty string",D3011:"Fourth argument of replace function must evaluate to a positive number",D3012:"Attempted to replace a matched string with a non-string value",D3020:"Third argument of split function must evaluate to a positive number",D3030:"Unable to cast value to a number: {{value}}",D3040:"Third argument of match function must evaluate to a positive number",D3050:"The second argument of reduce function must be a function with at least two arguments",D3060:"The sqrt function cannot be applied to a negative number: {{value}}",D3061:"The power function has resulted in a value that cannot be represented as a JSON number: base={{value}}, exponent={{exp}}",D3070:"The single argument form of the sort function can only be applied to an array of strings or an array of numbers. Use the second argument to specify a comparison function",D3080:"The picture string must only contain a maximum of two sub-pictures",D3081:"The sub-picture must not contain more than one instance of the 'decimal-separator' character",D3082:"The sub-picture must not contain more than one instance of the 'percent' character",D3083:"The sub-picture must not contain more than one instance of the 'per-mille' character",D3084:"The sub-picture must not contain both a 'percent' and a 'per-mille' character",D3085:"The mantissa part of a sub-picture must contain at least one character that is either an 'optional digit character' or a member of the 'decimal digit family'",D3086:"The sub-picture must not contain a passive character that is preceded by an active character and that is followed by another active character",D3087:"The sub-picture must not contain a 'grouping-separator' character that appears adjacent to a 'decimal-separator' character",D3088:"The sub-picture must not contain a 'grouping-separator' at the end of the integer part",D3089:"The sub-picture must not contain two adjacent instances of the 'grouping-separator' character",D3090:"The integer part of the sub-picture must not contain a member of the 'decimal digit family' that is followed by an instance of the 'optional digit character'",D3091:"The fractional part of the sub-picture must not contain an instance of the 'optional digit character' that is followed by a member of the 'decimal digit family'",D3092:"A sub-picture that contains a 'percent' or 'per-mille' character must not contain a character treated as an 'exponent-separator'",D3093:"The exponent part of the sub-picture must comprise only of one or more characters that are members of the 'decimal digit family'",D3100:"The radix of the formatBase function must be between 2 and 36. It was given {{value}}",D3110:"The argument of the toMillis function must be an ISO 8601 formatted timestamp. Given {{value}}",D3120:"Syntax error in expression passed to function eval: {{value}}",D3121:"Dynamic error evaluating the expression passed to function eval: {{value}}",D3130:"Formatting or parsing an integer as a sequence starting with {{value}} is not supported by this implementation",D3131:"In a decimal digit pattern, all digits must be from the same decimal group",D3132:"Unknown component specifier {{value}} in date/time picture string",D3133:"The 'name' modifier can only be applied to months and days in the date/time picture string, not {{value}}",D3134:"The timezone integer format specifier cannot have more than four digits",D3135:"No matching closing bracket ']' in date/time picture string",D3136:"The date/time picture string is missing specifiers required to parse the timestamp",D3137:"{{{message}}}",D3138:"The $single() function expected exactly 1 matching result. Instead it matched more.",D3139:"The $single() function expected exactly 1 matching result. Instead it matched 0.",D3140:"Malformed URL passed to ${{{functionName}}}(): {{value}}",D3141:"{{{message}}}"};function Oe(A){var x=je[A.code];if(typeof x<"u"){var L=x.replace(/\{\{\{([^}]+)}}}/g,function(){return A[arguments[1]]});L=L.replace(/\{\{([^}]+)}}/g,function(){return JSON.stringify(A[arguments[1]])}),A.message=L}}function Ce(A,x){var L,p;try{L=l(A,x&&x.recover),p=L.errors,delete L.errors}catch(I){throw Oe(I),I}var v=Re(T),E=new Date;return v.bind("now",oe(function(I,F){return s.fromMillis(E.getTime(),I,F)},"<s?s?:s>")),v.bind("millis",oe(function(){return E.getTime()},"<:n>")),{evaluate:async function(I,F,X){if(typeof p<"u"){var me={code:"S0500",position:0};throw Oe(me),me}const ve=Re(v);for(const Ne of o.keys(F))ve.bind(Ne,F[Ne]);if(ve.bind("$",I),E=new Date,ve.timestamp=E,ve.options=x,ve.createSequence=function(){var Ne=[];return x&&x.sequence&&(Ne.push=function(...ht){if(Ne.length+ht.length>x.sequence)throw{code:"D2015",stack:new Error().stack,value:x.sequence};return Array.prototype.push.apply(Ne,ht)}),Ne.sequence=!0,arguments.length===1&&Ne.push(arguments[0]),Ne},Array.isArray(I)&&!_(I)&&(I=ve.createSequence(I),I.outerWrapper=!0),x&&(x.timeout||x.stack)){const Ne=Date.now();ve.guardrails=function(){if(x.stack>0&&ve.depth>x.stack)throw{code:"D1011",value:x.stack,stack:new Error().stack};if(x.timeout>0&&Date.now()-Ne>x.timeout)throw{code:"D1012",value:x.timeout,stack:new Error().stack}}}else ve.guardrails=function(){};ve.base=ve,ve.depth=0,x&&x.RegexEngine?ve.RegexEngine=x.RegexEngine:ve.RegexEngine=RegExp;var $e;try{return $e=await R(L,I,ve),typeof X=="function"&&X(null,$e),$e}catch(Ne){throw Oe(Ne),Ne}},assign:function(I,F){v.bind(I,F)},registerFunction:function(I,F,X){var me=oe(F,X);v.bind(I,me)},ast:function(){return L},errors:function(){return p}}}return Ce.parser=l,Ce})();n.exports=h},{"./datetime":1,"./functions":2,"./parser":4,"./signature":5,"./utils":6}],4:[function(t,n,r){var s=t("./signature");const a=(()=>{var o={".":75,"[":80,"]":0,"{":70,"}":0,"(":80,")":0,",":0,"@":80,"#":80,";":80,":":80,"?":20,"+":50,"-":50,"*":60,"/":60,"%":60,"|":20,"=":40,"<":40,">":40,"^":40,"**":60,"..":20,":=":10,"!=":40,"<=":40,">=":40,"~>":40,"?:":40,"??":40,and:30,or:25,in:40,"&":50,"!":0,"~":0},l={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
|
|
32
32
|
`,r:"\r",t:" "},c=function(u){var f=0,d=u.length,_=function(m,S){var y={type:m,value:S,position:f};return y},b=function(){for(var m=f,S=0,y,M,T=function(k){if(u.charAt(k)==="/"&&S===0){for(var B=0;u.charAt(k-(B+1))==="\\";)B++;if(B%2===0)return!0}return!1};f<d;){var R=u.charAt(f);if(T(f)){if(y=u.substring(m,f),y==="")throw{code:"S0301",stack:new Error().stack,position:f};for(f++,R=u.charAt(f),m=f;R==="i"||R==="m";)f++,R=u.charAt(f);return M=u.substring(m,f)+"g",new RegExp(y,M)}(R==="("||R==="["||R==="{")&&u.charAt(f-1)!=="\\"&&S++,(R===")"||R==="]"||R==="}")&&u.charAt(f-1)!=="\\"&&S--,f++}throw{code:"S0302",stack:new Error().stack,position:f}},g=function(m){if(f>=d)return null;for(var S=u.charAt(f);f<d&&`
|
|
33
33
|
\r\v`.indexOf(S)>-1;)f++,S=u.charAt(f);if(S==="/"&&u.charAt(f+1)==="*"){var y=f;for(f+=2,S=u.charAt(f);!(S==="*"&&u.charAt(f+1)==="/");)if(S=u.charAt(++f),f>=d)throw{code:"S0106",stack:new Error().stack,position:y};return f+=2,S=u.charAt(f),g(m)}if(m!==!0&&S==="/")return f++,_("regex",b());if(S==="."&&u.charAt(f+1)===".")return f+=2,_("operator","..");if(S===":"&&u.charAt(f+1)==="=")return f+=2,_("operator",":=");if(S==="!"&&u.charAt(f+1)==="=")return f+=2,_("operator","!=");if(S===">"&&u.charAt(f+1)==="=")return f+=2,_("operator",">=");if(S==="<"&&u.charAt(f+1)==="=")return f+=2,_("operator","<=");if(S==="*"&&u.charAt(f+1)==="*")return f+=2,_("operator","**");if(S==="~"&&u.charAt(f+1)===">")return f+=2,_("operator","~>");if(S==="?"&&u.charAt(f+1)===":")return f+=2,_("operator","?:");if(S==="?"&&u.charAt(f+1)==="?")return f+=2,_("operator","??");if(Object.prototype.hasOwnProperty.call(o,S))return f++,_("operator",S);if(S==='"'||S==="'"){var M=S;f++;for(var T="";f<d;){if(S=u.charAt(f),S==="\\")if(f++,S=u.charAt(f),Object.prototype.hasOwnProperty.call(l,S))T+=l[S];else if(S==="u"){var R=u.substr(f+1,4);if(/^[0-9a-fA-F]+$/.test(R)){var k=parseInt(R,16);T+=String.fromCharCode(k),f+=4}else throw{code:"S0104",stack:new Error().stack,position:f}}else throw{code:"S0103",stack:new Error().stack,position:f,token:S};else{if(S===M)return f++,_("string",T);T+=S}f++}throw{code:"S0101",stack:new Error().stack,position:f}}var B=/^-?(0|([1-9][0-9]*))(\.[0-9]+)?([Ee][-+]?[0-9]+)?/,C=B.exec(u.substring(f));if(C!==null){var D=parseFloat(C[0]);if(!isNaN(D)&&isFinite(D))return f+=C[0].length,_("number",D);throw{code:"S0102",stack:new Error().stack,position:f,token:C[0]}}var V;if(S==="`"){f++;var K=u.indexOf("`",f);if(K!==-1)return V=u.substring(f,K),f=K+1,_("name",V);throw f=d,{code:"S0105",stack:new Error().stack,position:f}}for(var J=f,se;;)if(se=u.charAt(J),J===d||`
|
|
34
|
-
\r\v`.indexOf(se)>-1||Object.prototype.hasOwnProperty.call(o,se)){if(u.charAt(f)==="$")return V=u.substring(f+1,J),f=J,_("variable",V);switch(V=u.substring(f,J),f=J,V){case"or":case"in":case"and":return _("operator",V);case"true":return _("value",!0);case"false":return _("value",!1);case"null":return _("value",null);default:return f===d&&V===""?null:_("name",V)}}else J++};return g},h=function(u,f){var d,_,b=Object.create(null),g=[],m=function(){var O=[];d.id!=="(end)"&&O.push({type:d.type,value:d.value,position:d.position});for(var H=_();H!==null;)O.push(H),H=_();return O},S={nud:function(){var O={code:"S0211",token:this.value,position:this.position};if(f)return O.remaining=m(),O.type="error",g.push(O),O;throw O.stack=new Error().stack,O}},y=function(O,H){var we=b[O];return H=H||0,we?H>=we.lbp&&(we.lbp=H):(we=Object.create(S),we.id=we.value=O,we.lbp=H,b[O]=we),we},M=function(O){if(f){O.remaining=m(),g.push(O);var H=b["(error)"];return d=Object.create(H),d.error=O,d.type="(error)",d}else throw O.stack=new Error().stack,O},T=function(O,H){if(O&&d.id!==O){var we;d.id==="(end)"?we="S0203":we="S0202";var Be={code:we,position:d.position,token:d.value,value:O};return M(Be)}var ie=_(H);if(ie===null)return d=b["(end)"],d.position=u.length,d;var ce=ie.value,z=ie.type,j;switch(z){case"name":case"variable":j=b["(name)"];break;case"operator":if(j=b[ce],!j)return M({code:"S0204",stack:new Error().stack,position:ie.position,token:ce});break;case"string":case"number":case"value":j=b["(literal)"];break;case"regex":z="regex",j=b["(regex)"];break;default:return M({code:"S0205",stack:new Error().stack,position:ie.position,token:ce})}return d=Object.create(j),d.value=ce,d.type=z,d.position=ie.position,d},R=function(O){var H,we=d;for(T(null,!0),H=we.nud();O<d.lbp;)we=d,T(),H=we.led(H);return H},k=function(O){var H=y(O,0);H.nud=function(){return this}},B=function(O,H,we){var Be=H||o[O],ie=y(O,Be);return ie.led=we||function(ce){return this.lhs=ce,this.rhs=R(Be),this.type="binary",this},ie},C=function(O,H,we){var Be=y(O,H);return Be.led=we,Be},D=function(O,H){var we=y(O);return we.nud=H||function(){return this.expression=R(70),this.type="unary",this},we};k("(end)"),k("(name)"),k("(literal)"),k("(regex)"),y(":"),y(";"),y(","),y(")"),y("]"),y("}"),y(".."),B("."),B("+"),B("-"),B("*"),B("/"),B("%"),B("="),B("<"),B(">"),B("!="),B("<="),B(">="),B("&"),B("and"),B("or"),B("in"),k("and"),k("or"),k("in"),D("-"),B("~>"),B("??",o["??"],function(O){return this.type="condition",this.condition={type:"function",value:"(",procedure:{type:"variable",value:"exists"},arguments:[JSON.parse(JSON.stringify(O))]},this.then=O,this.else=R(0),this}),C("(error)",10,function(O){return this.lhs=O,this.error=d.error,this.remaining=m(),this.type="error",this}),D("*",function(){return this.type="wildcard",this}),D("**",function(){return this.type="descendant",this}),D("%",function(){return this.type="parent",this}),B("(",o["("],function(O){if(this.procedure=O,this.type="function",this.arguments=[],d.id!==")")for(;d.type==="operator"&&d.id==="?"?(this.type="partial",this.arguments.push(d),T("?")):this.arguments.push(R(0)),d.id===",";)T(",");if(T(")",!0),O.type==="name"&&(O.value==="function"||O.value==="λ")){if(this.arguments.forEach(function(ce,z){if(ce.type!=="variable")return M({code:"S0208",stack:new Error().stack,position:ce.position,token:ce.value,value:z+1})}),this.type="lambda",d.id==="<"){for(var H=d.position,we=1,Be="<";we>0&&d.id!=="{"&&d.id!=="(end)";){var ie=T();ie.id===">"?we--:ie.id==="<"&&we++,Be+=ie.value}T(">");try{this.signature=s(Be)}catch(ce){return ce.position=H+ce.offset,M(ce)}}T("{"),this.body=R(0),T("}")}return this}),D("(",function(){for(var O=[];d.id!==")"&&(O.push(R(0)),d.id===";");)T(";");return T(")",!0),this.type="block",this.expressions=O,this}),D("[",function(){var O=[];if(d.id!=="]")for(;;){var H=R(0);if(d.id===".."){var we={type:"binary",value:"..",position:d.position,lhs:H};T(".."),we.rhs=R(0),H=we}if(O.push(H),d.id!==",")break;T(",")}return T("]",!0),this.expressions=O,this.type="unary",this}),B("[",o["["],function(O){if(d.id==="]"){for(var H=O;H&&H.type==="binary"&&H.value==="[";)H=H.lhs;return H.keepArray=!0,T("]"),O}else return this.lhs=O,this.rhs=R(o["]"]),this.type="binary",T("]",!0),this}),B("^",o["^"],function(O){T("(");for(var H=[];;){var we={descending:!1};if(d.id==="<"?T("<"):d.id===">"&&(we.descending=!0,T(">")),we.expression=R(0),H.push(we),d.id!==",")break;T(",")}return T(")"),this.lhs=O,this.rhs=H,this.type="binary",this});var V=function(O){var H=[];if(d.id!=="}")for(;;){var we=R(0);T(":");var Be=R(0);if(H.push([we,Be]),d.id!==",")break;T(",")}return T("}",!0),typeof O>"u"?(this.lhs=H,this.type="unary"):(this.lhs=O,this.rhs=H,this.type="binary"),this};D("{",V),B("{",o["{"],V),C(":=",o[":="],function(O){return O.type!=="variable"?M({code:"S0212",stack:new Error().stack,position:O.position,token:O.value}):(this.lhs=O,this.rhs=R(o[":="]-1),this.type="binary",this)}),B("@",o["@"],function(O){return this.lhs=O,this.rhs=R(o["@"]),this.rhs.type!=="variable"?M({code:"S0214",stack:new Error().stack,position:this.rhs.position,token:"@"}):(this.type="binary",this)}),B("#",o["#"],function(O){return this.lhs=O,this.rhs=R(o["#"]),this.rhs.type!=="variable"?M({code:"S0214",stack:new Error().stack,position:this.rhs.position,token:"#"}):(this.type="binary",this)}),B("?",o["?"],function(O){return this.type="condition",this.condition=O,this.then=R(0),d.id===":"&&(T(":"),this.else=R(0)),this}),B("?:",o["?:"],function(O){return this.type="condition",this.condition=JSON.parse(JSON.stringify(O)),this.then=O,this.else=R(0),this}),D("|",function(){return this.type="transform",this.pattern=R(0),T("|"),this.update=R(0),d.id===","&&(T(","),this.delete=R(0)),T("|"),this});var K=function(O){var H;if(O.type==="function"&&!O.predicate){var we={type:"lambda",thunk:!0,arguments:[],position:O.position};we.body=O,H=we}else if(O.type==="condition")O.then=K(O.then),typeof O.else<"u"&&(O.else=K(O.else)),H=O;else if(O.type==="block"){var Be=O.expressions.length;Be>0&&(O.expressions[Be-1]=K(O.expressions[Be-1])),H=O}else H=O;return H},J=0,se=0,he=[],Q=function(O,H){switch(O.type){case"name":case"wildcard":H.level--,H.level===0&&(typeof O.ancestor>"u"||(he[H.index].slot.label=O.ancestor.label),O.ancestor=H,O.tuple=!0);break;case"parent":H.level++;break;case"block":O.expressions.length>0&&(O.tuple=!0,H=Q(O.expressions[O.expressions.length-1],H));break;case"path":O.tuple=!0;var we=O.steps.length-1;for(H=Q(O.steps[we--],H);H.level>0&&we>=0;)H=Q(O.steps[we--],H);break;default:throw{code:"S0217",token:O.type,position:O.position}}return H},de=function(O,H){if(typeof H.seekingParent<"u"||H.type==="parent"){var we=typeof H.seekingParent<"u"?H.seekingParent:[];H.type==="parent"&&we.push(H.slot),typeof O.seekingParent>"u"?O.seekingParent=we:Array.prototype.push.apply(O.seekingParent,we)}},ne=function(O){var H=O.steps.length-1,we=O.steps[H],Be=typeof we.seekingParent<"u"?we.seekingParent:[];we.type==="parent"&&Be.push(we.slot);for(var ie=0;ie<Be.length;ie++){var ce=Be[ie];for(H=O.steps.length-2;ce.level>0;){if(H<0){typeof O.seekingParent>"u"?O.seekingParent=[ce]:O.seekingParent.push(ce);break}for(var z=O.steps[H--];H>=0&&z.focus&&O.steps[H].focus;)z=O.steps[H--];ce=Q(z,ce)}}},ue=function(O){var H;switch(O.type){case"binary":switch(O.value){case".":var we=ue(O.lhs);we.type==="path"?H=we:H={type:"path",steps:[we]},we.type==="parent"&&(H.seekingParent=[we.slot]);var Be=ue(O.rhs);Be.type==="path"?Array.prototype.push.apply(H.steps,Be.steps):(typeof Be.predicate<"u"&&(Be.stages=Be.predicate,delete Be.predicate),H.steps.push(Be)),H.steps.filter(function(fe){if(fe.type==="number"||fe.type==="value")throw{code:"S0213",stack:new Error().stack,position:fe.position,value:fe.value};return fe.type==="string"}).forEach(function(fe){fe.type="name"}),H.steps.filter(function(fe){return fe.keepArray===!0}).length>0&&(H.keepSingletonArray=!0);var ie=H.steps[0];ie.type==="unary"&&ie.value==="["&&(ie.consarray=!0);var ce=H.steps[H.steps.length-1];ce.type==="unary"&&ce.value==="["&&(ce.consarray=!0),ne(H);break;case"[":H=ue(O.lhs);var z=H,j="predicate";if(H.type==="path"&&(z=H.steps[H.steps.length-1],j="stages"),typeof z.group<"u")throw{code:"S0209",stack:new Error().stack,position:O.position};typeof z[j]>"u"&&(z[j]=[]);var W=ue(O.rhs);typeof W.seekingParent<"u"&&(W.seekingParent.forEach(fe=>{fe.level===1?Q(z,fe):fe.level--}),de(z,W)),z[j].push({type:"filter",expr:W,position:O.position});break;case"{":if(H=ue(O.lhs),typeof H.group<"u")throw{code:"S0210",stack:new Error().stack,position:O.position};H.group={lhs:O.rhs.map(function(fe){return[ue(fe[0]),ue(fe[1])]}),position:O.position};break;case"^":H=ue(O.lhs),H.type!=="path"&&(H={type:"path",steps:[H]});var le={type:"sort",position:O.position};le.terms=O.rhs.map(function(fe){var ye=ue(fe.expression);return de(le,ye),{descending:fe.descending,expression:ye}}),H.steps.push(le),ne(H);break;case":=":H={type:"bind",value:O.value,position:O.position},H.lhs=ue(O.lhs),H.rhs=ue(O.rhs),de(H,H.rhs);break;case"@":if(H=ue(O.lhs),z=H,H.type==="path"&&(z=H.steps[H.steps.length-1]),typeof z.stages<"u"||typeof z.predicate<"u")throw{code:"S0215",stack:new Error().stack,position:O.position};if(z.type==="sort")throw{code:"S0216",stack:new Error().stack,position:O.position};O.keepArray&&(z.keepArray=!0),z.focus=O.rhs.value,z.tuple=!0;break;case"#":H=ue(O.lhs),z=H,H.type==="path"?z=H.steps[H.steps.length-1]:(H={type:"path",steps:[H]},typeof z.predicate<"u"&&(z.stages=z.predicate,delete z.predicate)),typeof z.stages>"u"?z.index=O.rhs.value:z.stages.push({type:"index",value:O.rhs.value,position:O.position}),z.tuple=!0;break;case"~>":H={type:"apply",value:O.value,position:O.position},H.lhs=ue(O.lhs),H.rhs=ue(O.rhs),H.keepArray=H.lhs.keepArray||H.rhs.keepArray;break;default:H={type:O.type,value:O.value,position:O.position},H.lhs=ue(O.lhs),H.rhs=ue(O.rhs),de(H,H.lhs),de(H,H.rhs)}break;case"unary":H={type:O.type,value:O.value,position:O.position},O.value==="["?H.expressions=O.expressions.map(function(fe){var ye=ue(fe);return de(H,ye),ye}):O.value==="{"?H.lhs=O.lhs.map(function(fe){var ye=ue(fe[0]);de(H,ye);var Se=ue(fe[1]);return de(H,Se),[ye,Se]}):(H.expression=ue(O.expression),O.value==="-"&&H.expression.type==="number"?(H=H.expression,H.value=-H.value):de(H,H.expression));break;case"function":case"partial":H={type:O.type,name:O.name,value:O.value,position:O.position},H.arguments=O.arguments.map(function(fe){var ye=ue(fe);return de(H,ye),ye}),H.procedure=ue(O.procedure);break;case"lambda":H={type:O.type,arguments:O.arguments,signature:O.signature,position:O.position};var be=ue(O.body);H.body=K(be);break;case"condition":H={type:O.type,position:O.position},H.condition=ue(O.condition),de(H,H.condition),H.then=ue(O.then),de(H,H.then),typeof O.else<"u"&&(H.else=ue(O.else),de(H,H.else));break;case"transform":H={type:O.type,position:O.position},H.pattern=ue(O.pattern),H.update=ue(O.update),typeof O.delete<"u"&&(H.delete=ue(O.delete));break;case"block":H={type:O.type,position:O.position},H.expressions=O.expressions.map(function(fe){var ye=ue(fe);return de(H,ye),(ye.consarray||ye.type==="path"&&ye.steps[0].consarray)&&(H.consarray=!0),ye});break;case"name":H={type:"path",steps:[O]},O.keepArray&&(H.keepSingletonArray=!0);break;case"parent":H={type:"parent",slot:{label:"!"+J++,level:1,index:se++}},he.push(H);break;case"string":case"number":case"value":case"wildcard":case"descendant":case"variable":case"regex":H=O;break;case"operator":if(O.value==="and"||O.value==="or"||O.value==="in")O.type="name",H=ue(O);else if(O.value==="?")H=O;else throw{code:"S0201",stack:new Error().stack,position:O.position,token:O.value};break;case"error":H=O,O.lhs&&(H=ue(O.lhs));break;default:var U="S0206";O.id==="(end)"&&(U="S0207");var ee={code:U,position:O.position,token:O.value};if(f)return g.push(ee),{type:"error",error:ee};throw ee.stack=new Error().stack,ee}return O.keepArray&&(H.keepArray=!0),H};_=c(u),T();var Te=R(0);if(d.id!=="(end)"){var ke={code:"S0201",position:d.position,token:d.value};M(ke)}if(Te=ue(Te),Te.type==="parent"||typeof Te.seekingParent<"u")throw{code:"S0217",token:Te.type,position:Te.position};return g.length>0&&(Te.errors=g),Te};return h})();n.exports=a},{"./signature":5}],5:[function(t,n,r){var s=t("./utils");const a=(()=>{var o={a:"arrays",b:"booleans",f:"functions",n:"numbers",o:"objects",s:"strings"};function l(c){for(var h=1,u=[],f=Object.create(null),d=f;h<c.length;){var _=c.charAt(h);if(_===":")break;var b=function(){u.push(f),d=f,f=Object.create(null)},g=function(B,C,D,V){for(var K=1,J=C;J<B.length;)if(J++,_=B.charAt(J),_===V){if(K--,K===0)break}else _===D&&K++;return J};switch(_){case"s":case"n":case"b":case"l":case"o":f.regex="["+_+"m]",f.type=_,b();break;case"a":f.regex="[asnblfom]",f.type=_,f.array=!0,b();break;case"f":f.regex="f",f.type=_,b();break;case"j":f.regex="[asnblom]",f.type=_,b();break;case"x":f.regex="[asnblfom]",f.type=_,b();break;case"-":d.context=!0,d.contextRegex=new RegExp(d.regex),d.regex+="?";break;case"?":case"+":d.regex+=_;break;case"(":var m=g(c,h,"(",")"),S=c.substring(h+1,m);if(S.indexOf("<")===-1)f.regex="["+S+"m]";else throw{code:"S0402",stack:new Error().stack,value:S,offset:h};f.type="("+S+")",h=m,b();break;case"<":if(d.type==="a"||d.type==="f"){var y=g(c,h,"<",">");d.subtype=c.substring(h+1,y),h=y}else throw{code:"S0401",stack:new Error().stack,value:d.type,offset:h};break}h++}var M="^"+u.map(function(B){return"("+B.regex+")"}).join("")+"$",T=new RegExp(M),R=function(B){var C;if(s.isFunction(B))C="f";else{var D=typeof B;switch(D){case"string":C="s";break;case"number":C="n";break;case"boolean":C="b";break;case"object":B===null?C="l":Array.isArray(B)?C="a":C="o";break;case"undefined":default:C="m"}}return C},k=function(B,C){for(var D="^",V=0,K=0;K<u.length;K++){D+=u[K].regex;var J=C.match(D);if(J===null)throw{code:"T0410",stack:new Error().stack,value:B[V],index:V+1};V=J[0].length}throw{code:"T0410",stack:new Error().stack,value:B[V],index:V+1}};return{definition:c,validate:function(B,C){var D="";B.forEach(function(se){D+=R(se)});var V=T.exec(D);if(V){var K=[],J=0;return u.forEach(function(se,he){var Q=B[J],de=V[he+1];if(de==="")if(se.context&&se.contextRegex){var ne=R(C);if(se.contextRegex.test(ne))K.push(C);else throw{code:"T0411",stack:new Error().stack,value:C,index:J+1}}else K.push(Q),J++;else de.split("").forEach(function(ue){if(Q=B[J],se.type==="a"){if(ue==="m")Q=void 0;else{var Te=!0;if(typeof se.subtype<"u"){if(ue!=="a"&&de!==se.subtype)Te=!1;else if(ue==="a"&&Q.length>0){var ke=R(Q[0]);if(ke!==se.subtype.charAt(0))Te=!1;else{var O=Q.filter(function(H){return R(H)!==ke});Te=O.length===0}}}if(!Te)throw{code:"T0412",stack:new Error().stack,value:Q,index:J+1,type:o[se.subtype]};ue!=="a"&&(Q=[Q])}K.push(Q),J++}else K.push(Q),J++})}),K}k(B,D)}}}return l})();n.exports=a},{"./utils":6}],6:[function(t,n,r){const s=(()=>{function a(y){var M=!1;if(typeof y=="number"&&(M=!isNaN(y),M&&!isFinite(y)))throw{code:"D1001",value:y,stack:new Error().stack};return M}function o(y){var M=!1;return Array.isArray(y)&&(M=y.filter(function(T){return typeof T!="string"}).length===0),M}function l(y){var M=!1;return Array.isArray(y)&&(M=y.filter(function(T){return!a(T)}).length===0),M}function c(y){return y.sequence===!0&&Array.isArray(y)}function h(y){return y&&(y._jsonata_function===!0||y._jsonata_lambda===!0)||typeof y=="function"}function u(y){var M=typeof y.arity=="number"?y.arity:typeof y.implementation=="function"?y.implementation.length:typeof y.length=="number"?y.length:y.arguments.length;return M}function f(y){return y&&y._jsonata_lambda===!0}var d=(typeof Symbol=="function"?Symbol:{}).iterator||"@@iterator";function _(y){return typeof y=="object"&&y!==null&&d in y&&"next"in y&&typeof y.next=="function"}function b(y,M){if(y===M)return!0;if(typeof y=="object"&&typeof M=="object"&&y!==null&&M!==null){if(Array.isArray(y)&&Array.isArray(M)){if(y.length!==M.length)return!1;for(var T=0;T<y.length;T++)if(!b(y[T],M[T]))return!1;return!0}var R=Object.getOwnPropertyNames(y),k=Object.getOwnPropertyNames(M);if(R.length!==k.length)return!1;for(R=R.sort(),k=k.sort(),T=0;T<R.length;T++)if(R[T]!==k[T])return!1;for(T=0;T<R.length;T++){var B=R[T];if(!b(y[B],M[B]))return!1}return!0}return!1}function g(y){return typeof y=="object"&&y!==null&&"then"in y&&typeof y.then=="function"}function m(y){var M=[];for(let T of y)M.push(T);return M}function S(y){return typeof y=="object"&&y!==null?Object.keys(y):[]}return{isNumeric:a,isArrayOfStrings:o,isArrayOfNumbers:l,isSequence:c,isFunction:h,isLambda:f,isIterable:_,getFunctionArity:u,isDeepEqual:b,stringToArray:m,isPromise:g,keys:S}})();n.exports=s},{}]},{},[3])(3)})})(Xa)),Xa.exports}ip();const rp=150,Yc=10,sp=200,ap=16,Kc=new WeakMap;let Zc=!1;function Es(){return typeof navigator>"u"?!1:/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function Br(i){if(i===window)return{x:window.scrollX,y:window.scrollY};const e=i;return{x:e.scrollLeft,y:e.scrollTop}}function op(i,e,t){if(i===window){window.scrollTo(e,t);return}const n=i;typeof n.scrollTo=="function"?n.scrollTo(e,t):(n.scrollLeft=e,n.scrollTop=t)}function lp(i){if(i===window){const t=document.documentElement;return Math.max(0,t.scrollHeight-window.innerHeight)}const e=i;return Math.max(0,e.scrollHeight-e.clientHeight)}function Xi(i){let e=Kc.get(i);if(!e){const t=Br(i);e={x:t.x,y:t.y,restoring:!1,watching:!1,userEngaged:!1,raf:0,stickyFrames:0},Kc.set(i,e)}return e}function Ts(i){Xi(i).userEngaged=!0}function ws(i){const e=Xi(i);clearTimeout(e.settleTimer),e.settleTimer=setTimeout(()=>{e.userEngaged=!1,e.settleTimer=void 0},rp)}function Jc(i,e){return e-i>=sp}function $i(i){if(!Es())return;const e=Xi(i);if(e.restoring)return;const t=Br(i);if(Jc(t.y,e.y)){$a(i);return}e.x=t.x,e.y=t.y}function cp(i){if(!Es())return;const e=Xi(i),t=lp(i),n=e.x,r=t>0?Math.min(e.y,t):e.y,{x:s,y:a}=Br(i);if(!(Math.abs(n-s)<=Yc&&Math.abs(r-a)<=Yc)){e.restoring=!0;try{op(i,n,r)}finally{requestAnimationFrame(()=>{e.restoring=!1})}}}function $a(i){const e=Xi(i);if(e.stickyFrames=ap,e.raf)return;const t=()=>{e.raf=0,cp(i),e.stickyFrames>0&&(e.stickyFrames--,e.raf=requestAnimationFrame(t))};e.raf=requestAnimationFrame(t)}function ja(i){$a(i)}function zr(i){if(!Es())return;const e=Xi(i);if(e.watching)return;e.watching=!0;const t=i===window?window:i,n=()=>{if(e.restoring)return;const{y:_}=Br(i);if(Jc(_,e.y)){$a(i);return}if(e.userEngaged){$i(i),ws(i);return}$i(i)},r=_=>Qc(_)===i,s=_=>{r(_)&&($i(i),Ts(i))},a=_=>{r(_)&&ws(i)},o=_=>{r(_)&&($i(i),Ts(i),ws(i))};t.addEventListener("scroll",n,{passive:!0}),t.addEventListener("touchstart",s,{passive:!0}),t.addEventListener("touchend",a,{passive:!0}),t.addEventListener("touchcancel",a,{passive:!0}),t.addEventListener("wheel",o,{passive:!0}),t.addEventListener("pointerdown",s,{passive:!0}),t.addEventListener("pointerup",a,{passive:!0}),t.addEventListener("pointercancel",a,{passive:!0});const l=Br(i);if(e.x=l.x,e.y=l.y,i===window){const _=new ResizeObserver(()=>ja(window));_.observe(document.documentElement),e.resizeObserver=_;return}const c=i,h=new ResizeObserver(()=>ja(c));h.observe(c);for(const _ of Array.from(c.children))h.observe(_);e.resizeObserver=h;const u=()=>ja(c),f=new MutationObserver(_=>{for(const b of _)if(b.type==="childList")for(const g of Array.from(b.addedNodes))g instanceof Element&&h.observe(g);u()});f.observe(c,{childList:!0,subtree:!0,characterData:!0});const d=c.getRootNode();d instanceof ShadowRoot&&d.host&&f.observe(d.host,{childList:!0,subtree:!0,characterData:!0}),e.mutationObserver=f}function Qc(i){for(const e of i.composedPath())if(!(e===window||e===document)&&e instanceof HTMLElement&&eu(e))return e;return window}function eu(i){if(!(i instanceof HTMLElement)||i===document.documentElement||i===document.body)return!1;const e=getComputedStyle(i).overflowY;return e==="auto"||e==="scroll"||e==="overlay"}function qa(i){for(const t of i.composedPath())t===window||t===document||t instanceof HTMLElement&&eu(t)&&zr(t);const e=Qc(i);zr(e),i.type==="wheel"?($i(e),Ts(e),ws(e)):(i.type==="touchstart"||i.type==="pointerdown")&&($i(e),Ts(e))}function As(i){i instanceof Element&&i.classList?.contains("custom-scroll")&&zr(i),i.querySelectorAll?.(".custom-scroll").forEach(e=>{e instanceof HTMLElement&&zr(e)})}function Ya(i){As(i),new MutationObserver(t=>{for(const n of t)for(const r of Array.from(n.addedNodes))r instanceof Element&&As(r)}).observe(i,{childList:!0,subtree:!0})}function Ka(i){i.querySelectorAll?.("*").forEach(e=>{e.shadowRoot&&(Ya(e.shadowRoot),Ka(e.shadowRoot))})}function up(){const i=Element.prototype;if(i.__safariScrollGuardPatched)return;i.__safariScrollGuardPatched=!0;const e=i.attachShadow;i.attachShadow=function(n){const r=e.call(this,n);return Ya(r),r}}function hp(){if(typeof window>"u"||Zc||(Zc=!0,!Es()))return;zr(window),up();const i={capture:!0,passive:!0};window.addEventListener("wheel",qa,i),window.addEventListener("touchstart",qa,i),window.addEventListener("pointerdown",qa,i);const e=()=>{As(document),Ka(document)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:!0}):e(),new MutationObserver(n=>{for(const r of n)for(const s of Array.from(r.addedNodes))s instanceof Element&&(As(s),s.shadowRoot&&Ya(s.shadowRoot),Ka(s))}).observe(document.documentElement,{childList:!0,subtree:!0})}const fp=kd,dp=zd,pp=Va,mp=Ba,gp=zn,_p=Zd,vp=xs,yp=Ga,xp=np;hp(),window["concorde-utils"]=window["concorde-utils"]||{},window["concorde-utils"]={Utils:fp,Arrays:dp,DataBindObserver:pp,Format:mp,HTML:gp,LocationHandler:_p,Objects:vp,PublisherManager:Gt,api:yp,URLPattern:xp,Endpoint:Wa,DataProviderKey:ys};/**
|
|
34
|
+
\r\v`.indexOf(se)>-1||Object.prototype.hasOwnProperty.call(o,se)){if(u.charAt(f)==="$")return V=u.substring(f+1,J),f=J,_("variable",V);switch(V=u.substring(f,J),f=J,V){case"or":case"in":case"and":return _("operator",V);case"true":return _("value",!0);case"false":return _("value",!1);case"null":return _("value",null);default:return f===d&&V===""?null:_("name",V)}}else J++};return g},h=function(u,f){var d,_,b=Object.create(null),g=[],m=function(){var O=[];d.id!=="(end)"&&O.push({type:d.type,value:d.value,position:d.position});for(var H=_();H!==null;)O.push(H),H=_();return O},S={nud:function(){var O={code:"S0211",token:this.value,position:this.position};if(f)return O.remaining=m(),O.type="error",g.push(O),O;throw O.stack=new Error().stack,O}},y=function(O,H){var we=b[O];return H=H||0,we?H>=we.lbp&&(we.lbp=H):(we=Object.create(S),we.id=we.value=O,we.lbp=H,b[O]=we),we},M=function(O){if(f){O.remaining=m(),g.push(O);var H=b["(error)"];return d=Object.create(H),d.error=O,d.type="(error)",d}else throw O.stack=new Error().stack,O},T=function(O,H){if(O&&d.id!==O){var we;d.id==="(end)"?we="S0203":we="S0202";var Be={code:we,position:d.position,token:d.value,value:O};return M(Be)}var ie=_(H);if(ie===null)return d=b["(end)"],d.position=u.length,d;var ce=ie.value,z=ie.type,j;switch(z){case"name":case"variable":j=b["(name)"];break;case"operator":if(j=b[ce],!j)return M({code:"S0204",stack:new Error().stack,position:ie.position,token:ce});break;case"string":case"number":case"value":j=b["(literal)"];break;case"regex":z="regex",j=b["(regex)"];break;default:return M({code:"S0205",stack:new Error().stack,position:ie.position,token:ce})}return d=Object.create(j),d.value=ce,d.type=z,d.position=ie.position,d},R=function(O){var H,we=d;for(T(null,!0),H=we.nud();O<d.lbp;)we=d,T(),H=we.led(H);return H},k=function(O){var H=y(O,0);H.nud=function(){return this}},B=function(O,H,we){var Be=H||o[O],ie=y(O,Be);return ie.led=we||function(ce){return this.lhs=ce,this.rhs=R(Be),this.type="binary",this},ie},C=function(O,H,we){var Be=y(O,H);return Be.led=we,Be},D=function(O,H){var we=y(O);return we.nud=H||function(){return this.expression=R(70),this.type="unary",this},we};k("(end)"),k("(name)"),k("(literal)"),k("(regex)"),y(":"),y(";"),y(","),y(")"),y("]"),y("}"),y(".."),B("."),B("+"),B("-"),B("*"),B("/"),B("%"),B("="),B("<"),B(">"),B("!="),B("<="),B(">="),B("&"),B("and"),B("or"),B("in"),k("and"),k("or"),k("in"),D("-"),B("~>"),B("??",o["??"],function(O){return this.type="condition",this.condition={type:"function",value:"(",procedure:{type:"variable",value:"exists"},arguments:[JSON.parse(JSON.stringify(O))]},this.then=O,this.else=R(0),this}),C("(error)",10,function(O){return this.lhs=O,this.error=d.error,this.remaining=m(),this.type="error",this}),D("*",function(){return this.type="wildcard",this}),D("**",function(){return this.type="descendant",this}),D("%",function(){return this.type="parent",this}),B("(",o["("],function(O){if(this.procedure=O,this.type="function",this.arguments=[],d.id!==")")for(;d.type==="operator"&&d.id==="?"?(this.type="partial",this.arguments.push(d),T("?")):this.arguments.push(R(0)),d.id===",";)T(",");if(T(")",!0),O.type==="name"&&(O.value==="function"||O.value==="λ")){if(this.arguments.forEach(function(ce,z){if(ce.type!=="variable")return M({code:"S0208",stack:new Error().stack,position:ce.position,token:ce.value,value:z+1})}),this.type="lambda",d.id==="<"){for(var H=d.position,we=1,Be="<";we>0&&d.id!=="{"&&d.id!=="(end)";){var ie=T();ie.id===">"?we--:ie.id==="<"&&we++,Be+=ie.value}T(">");try{this.signature=s(Be)}catch(ce){return ce.position=H+ce.offset,M(ce)}}T("{"),this.body=R(0),T("}")}return this}),D("(",function(){for(var O=[];d.id!==")"&&(O.push(R(0)),d.id===";");)T(";");return T(")",!0),this.type="block",this.expressions=O,this}),D("[",function(){var O=[];if(d.id!=="]")for(;;){var H=R(0);if(d.id===".."){var we={type:"binary",value:"..",position:d.position,lhs:H};T(".."),we.rhs=R(0),H=we}if(O.push(H),d.id!==",")break;T(",")}return T("]",!0),this.expressions=O,this.type="unary",this}),B("[",o["["],function(O){if(d.id==="]"){for(var H=O;H&&H.type==="binary"&&H.value==="[";)H=H.lhs;return H.keepArray=!0,T("]"),O}else return this.lhs=O,this.rhs=R(o["]"]),this.type="binary",T("]",!0),this}),B("^",o["^"],function(O){T("(");for(var H=[];;){var we={descending:!1};if(d.id==="<"?T("<"):d.id===">"&&(we.descending=!0,T(">")),we.expression=R(0),H.push(we),d.id!==",")break;T(",")}return T(")"),this.lhs=O,this.rhs=H,this.type="binary",this});var V=function(O){var H=[];if(d.id!=="}")for(;;){var we=R(0);T(":");var Be=R(0);if(H.push([we,Be]),d.id!==",")break;T(",")}return T("}",!0),typeof O>"u"?(this.lhs=H,this.type="unary"):(this.lhs=O,this.rhs=H,this.type="binary"),this};D("{",V),B("{",o["{"],V),C(":=",o[":="],function(O){return O.type!=="variable"?M({code:"S0212",stack:new Error().stack,position:O.position,token:O.value}):(this.lhs=O,this.rhs=R(o[":="]-1),this.type="binary",this)}),B("@",o["@"],function(O){return this.lhs=O,this.rhs=R(o["@"]),this.rhs.type!=="variable"?M({code:"S0214",stack:new Error().stack,position:this.rhs.position,token:"@"}):(this.type="binary",this)}),B("#",o["#"],function(O){return this.lhs=O,this.rhs=R(o["#"]),this.rhs.type!=="variable"?M({code:"S0214",stack:new Error().stack,position:this.rhs.position,token:"#"}):(this.type="binary",this)}),B("?",o["?"],function(O){return this.type="condition",this.condition=O,this.then=R(0),d.id===":"&&(T(":"),this.else=R(0)),this}),B("?:",o["?:"],function(O){return this.type="condition",this.condition=JSON.parse(JSON.stringify(O)),this.then=O,this.else=R(0),this}),D("|",function(){return this.type="transform",this.pattern=R(0),T("|"),this.update=R(0),d.id===","&&(T(","),this.delete=R(0)),T("|"),this});var K=function(O){var H;if(O.type==="function"&&!O.predicate){var we={type:"lambda",thunk:!0,arguments:[],position:O.position};we.body=O,H=we}else if(O.type==="condition")O.then=K(O.then),typeof O.else<"u"&&(O.else=K(O.else)),H=O;else if(O.type==="block"){var Be=O.expressions.length;Be>0&&(O.expressions[Be-1]=K(O.expressions[Be-1])),H=O}else H=O;return H},J=0,se=0,he=[],Q=function(O,H){switch(O.type){case"name":case"wildcard":H.level--,H.level===0&&(typeof O.ancestor>"u"||(he[H.index].slot.label=O.ancestor.label),O.ancestor=H,O.tuple=!0);break;case"parent":H.level++;break;case"block":O.expressions.length>0&&(O.tuple=!0,H=Q(O.expressions[O.expressions.length-1],H));break;case"path":O.tuple=!0;var we=O.steps.length-1;for(H=Q(O.steps[we--],H);H.level>0&&we>=0;)H=Q(O.steps[we--],H);break;default:throw{code:"S0217",token:O.type,position:O.position}}return H},de=function(O,H){if(typeof H.seekingParent<"u"||H.type==="parent"){var we=typeof H.seekingParent<"u"?H.seekingParent:[];H.type==="parent"&&we.push(H.slot),typeof O.seekingParent>"u"?O.seekingParent=we:Array.prototype.push.apply(O.seekingParent,we)}},ne=function(O){var H=O.steps.length-1,we=O.steps[H],Be=typeof we.seekingParent<"u"?we.seekingParent:[];we.type==="parent"&&Be.push(we.slot);for(var ie=0;ie<Be.length;ie++){var ce=Be[ie];for(H=O.steps.length-2;ce.level>0;){if(H<0){typeof O.seekingParent>"u"?O.seekingParent=[ce]:O.seekingParent.push(ce);break}for(var z=O.steps[H--];H>=0&&z.focus&&O.steps[H].focus;)z=O.steps[H--];ce=Q(z,ce)}}},ue=function(O){var H;switch(O.type){case"binary":switch(O.value){case".":var we=ue(O.lhs);we.type==="path"?H=we:H={type:"path",steps:[we]},we.type==="parent"&&(H.seekingParent=[we.slot]);var Be=ue(O.rhs);Be.type==="path"?Array.prototype.push.apply(H.steps,Be.steps):(typeof Be.predicate<"u"&&(Be.stages=Be.predicate,delete Be.predicate),H.steps.push(Be)),H.steps.filter(function(fe){if(fe.type==="number"||fe.type==="value")throw{code:"S0213",stack:new Error().stack,position:fe.position,value:fe.value};return fe.type==="string"}).forEach(function(fe){fe.type="name"}),H.steps.filter(function(fe){return fe.keepArray===!0}).length>0&&(H.keepSingletonArray=!0);var ie=H.steps[0];ie.type==="unary"&&ie.value==="["&&(ie.consarray=!0);var ce=H.steps[H.steps.length-1];ce.type==="unary"&&ce.value==="["&&(ce.consarray=!0),ne(H);break;case"[":H=ue(O.lhs);var z=H,j="predicate";if(H.type==="path"&&(z=H.steps[H.steps.length-1],j="stages"),typeof z.group<"u")throw{code:"S0209",stack:new Error().stack,position:O.position};typeof z[j]>"u"&&(z[j]=[]);var W=ue(O.rhs);typeof W.seekingParent<"u"&&(W.seekingParent.forEach(fe=>{fe.level===1?Q(z,fe):fe.level--}),de(z,W)),z[j].push({type:"filter",expr:W,position:O.position});break;case"{":if(H=ue(O.lhs),typeof H.group<"u")throw{code:"S0210",stack:new Error().stack,position:O.position};H.group={lhs:O.rhs.map(function(fe){return[ue(fe[0]),ue(fe[1])]}),position:O.position};break;case"^":H=ue(O.lhs),H.type!=="path"&&(H={type:"path",steps:[H]});var le={type:"sort",position:O.position};le.terms=O.rhs.map(function(fe){var ye=ue(fe.expression);return de(le,ye),{descending:fe.descending,expression:ye}}),H.steps.push(le),ne(H);break;case":=":H={type:"bind",value:O.value,position:O.position},H.lhs=ue(O.lhs),H.rhs=ue(O.rhs),de(H,H.rhs);break;case"@":if(H=ue(O.lhs),z=H,H.type==="path"&&(z=H.steps[H.steps.length-1]),typeof z.stages<"u"||typeof z.predicate<"u")throw{code:"S0215",stack:new Error().stack,position:O.position};if(z.type==="sort")throw{code:"S0216",stack:new Error().stack,position:O.position};O.keepArray&&(z.keepArray=!0),z.focus=O.rhs.value,z.tuple=!0;break;case"#":H=ue(O.lhs),z=H,H.type==="path"?z=H.steps[H.steps.length-1]:(H={type:"path",steps:[H]},typeof z.predicate<"u"&&(z.stages=z.predicate,delete z.predicate)),typeof z.stages>"u"?z.index=O.rhs.value:z.stages.push({type:"index",value:O.rhs.value,position:O.position}),z.tuple=!0;break;case"~>":H={type:"apply",value:O.value,position:O.position},H.lhs=ue(O.lhs),H.rhs=ue(O.rhs),H.keepArray=H.lhs.keepArray||H.rhs.keepArray;break;default:H={type:O.type,value:O.value,position:O.position},H.lhs=ue(O.lhs),H.rhs=ue(O.rhs),de(H,H.lhs),de(H,H.rhs)}break;case"unary":H={type:O.type,value:O.value,position:O.position},O.value==="["?H.expressions=O.expressions.map(function(fe){var ye=ue(fe);return de(H,ye),ye}):O.value==="{"?H.lhs=O.lhs.map(function(fe){var ye=ue(fe[0]);de(H,ye);var Se=ue(fe[1]);return de(H,Se),[ye,Se]}):(H.expression=ue(O.expression),O.value==="-"&&H.expression.type==="number"?(H=H.expression,H.value=-H.value):de(H,H.expression));break;case"function":case"partial":H={type:O.type,name:O.name,value:O.value,position:O.position},H.arguments=O.arguments.map(function(fe){var ye=ue(fe);return de(H,ye),ye}),H.procedure=ue(O.procedure);break;case"lambda":H={type:O.type,arguments:O.arguments,signature:O.signature,position:O.position};var be=ue(O.body);H.body=K(be);break;case"condition":H={type:O.type,position:O.position},H.condition=ue(O.condition),de(H,H.condition),H.then=ue(O.then),de(H,H.then),typeof O.else<"u"&&(H.else=ue(O.else),de(H,H.else));break;case"transform":H={type:O.type,position:O.position},H.pattern=ue(O.pattern),H.update=ue(O.update),typeof O.delete<"u"&&(H.delete=ue(O.delete));break;case"block":H={type:O.type,position:O.position},H.expressions=O.expressions.map(function(fe){var ye=ue(fe);return de(H,ye),(ye.consarray||ye.type==="path"&&ye.steps[0].consarray)&&(H.consarray=!0),ye});break;case"name":H={type:"path",steps:[O]},O.keepArray&&(H.keepSingletonArray=!0);break;case"parent":H={type:"parent",slot:{label:"!"+J++,level:1,index:se++}},he.push(H);break;case"string":case"number":case"value":case"wildcard":case"descendant":case"variable":case"regex":H=O;break;case"operator":if(O.value==="and"||O.value==="or"||O.value==="in")O.type="name",H=ue(O);else if(O.value==="?")H=O;else throw{code:"S0201",stack:new Error().stack,position:O.position,token:O.value};break;case"error":H=O,O.lhs&&(H=ue(O.lhs));break;default:var U="S0206";O.id==="(end)"&&(U="S0207");var ee={code:U,position:O.position,token:O.value};if(f)return g.push(ee),{type:"error",error:ee};throw ee.stack=new Error().stack,ee}return O.keepArray&&(H.keepArray=!0),H};_=c(u),T();var Te=R(0);if(d.id!=="(end)"){var ke={code:"S0201",position:d.position,token:d.value};M(ke)}if(Te=ue(Te),Te.type==="parent"||typeof Te.seekingParent<"u")throw{code:"S0217",token:Te.type,position:Te.position};return g.length>0&&(Te.errors=g),Te};return h})();n.exports=a},{"./signature":5}],5:[function(t,n,r){var s=t("./utils");const a=(()=>{var o={a:"arrays",b:"booleans",f:"functions",n:"numbers",o:"objects",s:"strings"};function l(c){for(var h=1,u=[],f=Object.create(null),d=f;h<c.length;){var _=c.charAt(h);if(_===":")break;var b=function(){u.push(f),d=f,f=Object.create(null)},g=function(B,C,D,V){for(var K=1,J=C;J<B.length;)if(J++,_=B.charAt(J),_===V){if(K--,K===0)break}else _===D&&K++;return J};switch(_){case"s":case"n":case"b":case"l":case"o":f.regex="["+_+"m]",f.type=_,b();break;case"a":f.regex="[asnblfom]",f.type=_,f.array=!0,b();break;case"f":f.regex="f",f.type=_,b();break;case"j":f.regex="[asnblom]",f.type=_,b();break;case"x":f.regex="[asnblfom]",f.type=_,b();break;case"-":d.context=!0,d.contextRegex=new RegExp(d.regex),d.regex+="?";break;case"?":case"+":d.regex+=_;break;case"(":var m=g(c,h,"(",")"),S=c.substring(h+1,m);if(S.indexOf("<")===-1)f.regex="["+S+"m]";else throw{code:"S0402",stack:new Error().stack,value:S,offset:h};f.type="("+S+")",h=m,b();break;case"<":if(d.type==="a"||d.type==="f"){var y=g(c,h,"<",">");d.subtype=c.substring(h+1,y),h=y}else throw{code:"S0401",stack:new Error().stack,value:d.type,offset:h};break}h++}var M="^"+u.map(function(B){return"("+B.regex+")"}).join("")+"$",T=new RegExp(M),R=function(B){var C;if(s.isFunction(B))C="f";else{var D=typeof B;switch(D){case"string":C="s";break;case"number":C="n";break;case"boolean":C="b";break;case"object":B===null?C="l":Array.isArray(B)?C="a":C="o";break;case"undefined":default:C="m"}}return C},k=function(B,C){for(var D="^",V=0,K=0;K<u.length;K++){D+=u[K].regex;var J=C.match(D);if(J===null)throw{code:"T0410",stack:new Error().stack,value:B[V],index:V+1};V=J[0].length}throw{code:"T0410",stack:new Error().stack,value:B[V],index:V+1}};return{definition:c,validate:function(B,C){var D="";B.forEach(function(se){D+=R(se)});var V=T.exec(D);if(V){var K=[],J=0;return u.forEach(function(se,he){var Q=B[J],de=V[he+1];if(de==="")if(se.context&&se.contextRegex){var ne=R(C);if(se.contextRegex.test(ne))K.push(C);else throw{code:"T0411",stack:new Error().stack,value:C,index:J+1}}else K.push(Q),J++;else de.split("").forEach(function(ue){if(Q=B[J],se.type==="a"){if(ue==="m")Q=void 0;else{var Te=!0;if(typeof se.subtype<"u"){if(ue!=="a"&&de!==se.subtype)Te=!1;else if(ue==="a"&&Q.length>0){var ke=R(Q[0]);if(ke!==se.subtype.charAt(0))Te=!1;else{var O=Q.filter(function(H){return R(H)!==ke});Te=O.length===0}}}if(!Te)throw{code:"T0412",stack:new Error().stack,value:Q,index:J+1,type:o[se.subtype]};ue!=="a"&&(Q=[Q])}K.push(Q),J++}else K.push(Q),J++})}),K}k(B,D)}}}return l})();n.exports=a},{"./utils":6}],6:[function(t,n,r){const s=(()=>{function a(y){var M=!1;if(typeof y=="number"&&(M=!isNaN(y),M&&!isFinite(y)))throw{code:"D1001",value:y,stack:new Error().stack};return M}function o(y){var M=!1;return Array.isArray(y)&&(M=y.filter(function(T){return typeof T!="string"}).length===0),M}function l(y){var M=!1;return Array.isArray(y)&&(M=y.filter(function(T){return!a(T)}).length===0),M}function c(y){return y.sequence===!0&&Array.isArray(y)}function h(y){return y&&(y._jsonata_function===!0||y._jsonata_lambda===!0)||typeof y=="function"}function u(y){var M=typeof y.arity=="number"?y.arity:typeof y.implementation=="function"?y.implementation.length:typeof y.length=="number"?y.length:y.arguments.length;return M}function f(y){return y&&y._jsonata_lambda===!0}var d=(typeof Symbol=="function"?Symbol:{}).iterator||"@@iterator";function _(y){return typeof y=="object"&&y!==null&&d in y&&"next"in y&&typeof y.next=="function"}function b(y,M){if(y===M)return!0;if(typeof y=="object"&&typeof M=="object"&&y!==null&&M!==null){if(Array.isArray(y)&&Array.isArray(M)){if(y.length!==M.length)return!1;for(var T=0;T<y.length;T++)if(!b(y[T],M[T]))return!1;return!0}var R=Object.getOwnPropertyNames(y),k=Object.getOwnPropertyNames(M);if(R.length!==k.length)return!1;for(R=R.sort(),k=k.sort(),T=0;T<R.length;T++)if(R[T]!==k[T])return!1;for(T=0;T<R.length;T++){var B=R[T];if(!b(y[B],M[B]))return!1}return!0}return!1}function g(y){return typeof y=="object"&&y!==null&&"then"in y&&typeof y.then=="function"}function m(y){var M=[];for(let T of y)M.push(T);return M}function S(y){return typeof y=="object"&&y!==null?Object.keys(y):[]}return{isNumeric:a,isArrayOfStrings:o,isArrayOfNumbers:l,isSequence:c,isFunction:h,isLambda:f,isIterable:_,getFunctionArity:u,isDeepEqual:b,stringToArray:m,isPromise:g,keys:S}})();n.exports=s},{}]},{},[3])(3)})})($a)),$a.exports}sp();const ap=150,Kc=10,op=200,lp=16,Zc=new WeakMap;let Jc=!1;function Es(){return typeof navigator>"u"?!1:/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function Br(i){if(i===window)return{x:window.scrollX,y:window.scrollY};const e=i;return{x:e.scrollLeft,y:e.scrollTop}}function cp(i,e,t){if(i===window){window.scrollTo(e,t);return}const n=i;typeof n.scrollTo=="function"?n.scrollTo(e,t):(n.scrollLeft=e,n.scrollTop=t)}function up(i){if(i===window){const t=document.documentElement;return Math.max(0,t.scrollHeight-window.innerHeight)}const e=i;return Math.max(0,e.scrollHeight-e.clientHeight)}function Xi(i){let e=Zc.get(i);if(!e){const t=Br(i);e={x:t.x,y:t.y,restoring:!1,watching:!1,userEngaged:!1,raf:0,stickyFrames:0},Zc.set(i,e)}return e}function Ts(i){Xi(i).userEngaged=!0}function ws(i){const e=Xi(i);clearTimeout(e.settleTimer),e.settleTimer=setTimeout(()=>{e.userEngaged=!1,e.settleTimer=void 0},ap)}function Qc(i,e){return e-i>=op}function $i(i){if(!Es())return;const e=Xi(i);if(e.restoring)return;const t=Br(i);if(Qc(t.y,e.y)){ja(i);return}e.x=t.x,e.y=t.y}function hp(i){if(!Es())return;const e=Xi(i),t=up(i),n=e.x,r=t>0?Math.min(e.y,t):e.y,{x:s,y:a}=Br(i);if(!(Math.abs(n-s)<=Kc&&Math.abs(r-a)<=Kc)){e.restoring=!0;try{cp(i,n,r)}finally{requestAnimationFrame(()=>{e.restoring=!1})}}}function ja(i){const e=Xi(i);if(e.stickyFrames=lp,e.raf)return;const t=()=>{e.raf=0,hp(i),e.stickyFrames>0&&(e.stickyFrames--,e.raf=requestAnimationFrame(t))};e.raf=requestAnimationFrame(t)}function qa(i){ja(i)}function zr(i){if(!Es())return;const e=Xi(i);if(e.watching)return;e.watching=!0;const t=i===window?window:i,n=()=>{if(e.restoring)return;const{y:_}=Br(i);if(Qc(_,e.y)){ja(i);return}if(e.userEngaged){$i(i),ws(i);return}$i(i)},r=_=>eu(_)===i,s=_=>{r(_)&&($i(i),Ts(i))},a=_=>{r(_)&&ws(i)},o=_=>{r(_)&&($i(i),Ts(i),ws(i))};t.addEventListener("scroll",n,{passive:!0}),t.addEventListener("touchstart",s,{passive:!0}),t.addEventListener("touchend",a,{passive:!0}),t.addEventListener("touchcancel",a,{passive:!0}),t.addEventListener("wheel",o,{passive:!0}),t.addEventListener("pointerdown",s,{passive:!0}),t.addEventListener("pointerup",a,{passive:!0}),t.addEventListener("pointercancel",a,{passive:!0});const l=Br(i);if(e.x=l.x,e.y=l.y,i===window){const _=new ResizeObserver(()=>qa(window));_.observe(document.documentElement),e.resizeObserver=_;return}const c=i,h=new ResizeObserver(()=>qa(c));h.observe(c);for(const _ of Array.from(c.children))h.observe(_);e.resizeObserver=h;const u=()=>qa(c),f=new MutationObserver(_=>{for(const b of _)if(b.type==="childList")for(const g of Array.from(b.addedNodes))g instanceof Element&&h.observe(g);u()});f.observe(c,{childList:!0,subtree:!0,characterData:!0});const d=c.getRootNode();d instanceof ShadowRoot&&d.host&&f.observe(d.host,{childList:!0,subtree:!0,characterData:!0}),e.mutationObserver=f}function eu(i){for(const e of i.composedPath())if(!(e===window||e===document)&&e instanceof HTMLElement&&tu(e))return e;return window}function tu(i){if(!(i instanceof HTMLElement)||i===document.documentElement||i===document.body)return!1;const e=getComputedStyle(i).overflowY;return e==="auto"||e==="scroll"||e==="overlay"}function Ya(i){for(const t of i.composedPath())t===window||t===document||t instanceof HTMLElement&&tu(t)&&zr(t);const e=eu(i);zr(e),i.type==="wheel"?($i(e),Ts(e),ws(e)):(i.type==="touchstart"||i.type==="pointerdown")&&($i(e),Ts(e))}function As(i){i instanceof Element&&i.classList?.contains("custom-scroll")&&zr(i),i.querySelectorAll?.(".custom-scroll").forEach(e=>{e instanceof HTMLElement&&zr(e)})}function Ka(i){As(i),new MutationObserver(t=>{for(const n of t)for(const r of Array.from(n.addedNodes))r instanceof Element&&As(r)}).observe(i,{childList:!0,subtree:!0})}function Za(i){i.querySelectorAll?.("*").forEach(e=>{e.shadowRoot&&(Ka(e.shadowRoot),Za(e.shadowRoot))})}function fp(){const i=Element.prototype;if(i.__safariScrollGuardPatched)return;i.__safariScrollGuardPatched=!0;const e=i.attachShadow;i.attachShadow=function(n){const r=e.call(this,n);return Ka(r),r}}function dp(){if(typeof window>"u"||Jc||(Jc=!0,!Es()))return;zr(window),fp();const i={capture:!0,passive:!0};window.addEventListener("wheel",Ya,i),window.addEventListener("touchstart",Ya,i),window.addEventListener("pointerdown",Ya,i);const e=()=>{As(document),Za(document)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:!0}):e(),new MutationObserver(n=>{for(const r of n)for(const s of Array.from(r.addedNodes))s instanceof Element&&(As(s),s.shadowRoot&&Ka(s.shadowRoot),Za(s))}).observe(document.documentElement,{childList:!0,subtree:!0})}const pp=zd,mp=Vd,gp=Ga,_p=za,vp=zn,yp=Qd,xp=xs,bp=Wa,Sp=rp;dp(),window["concorde-utils"]=window["concorde-utils"]||{},window["concorde-utils"]={Utils:pp,Arrays:mp,DataBindObserver:gp,Format:_p,HTML:vp,LocationHandler:yp,Objects:xp,PublisherManager:Gt,api:bp,URLPattern:Sp,Endpoint:Xa,DataProviderKey:ys};/**
|
|
35
35
|
* @license
|
|
36
36
|
* Copyright 2010-2025 Three.js Authors
|
|
37
37
|
* SPDX-License-Identifier: MIT
|
|
38
|
-
*/const Za="180",ji={ROTATE:0,DOLLY:1,PAN:2},qi={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},bp=0,tu=1,Sp=2,nu=1,Mp=2,Vn=3,Gn=0,sn=1,Rn=2,ii=0,Yi=1,iu=2,ru=3,su=4,Ep=5,Si=100,Tp=101,wp=102,Ap=103,Rp=104,Cp=200,Pp=201,Dp=202,Lp=203,Ja=204,Qa=205,Ip=206,Up=207,Np=208,Op=209,Fp=210,kp=211,Bp=212,zp=213,Hp=214,eo=0,to=1,no=2,Ki=3,io=4,ro=5,so=6,ao=7,au=0,Vp=1,Gp=2,ri=0,Wp=1,Xp=2,$p=3,ou=4,jp=5,qp=6,Yp=7,lu="attached",Kp="detached",cu=300,Zi=301,Ji=302,oo=303,lo=304,Rs=306,Qi=1e3,si=1001,Cs=1002,Yt=1003,uu=1004,Hr=1005,ln=1006,Ps=1007,Wn=1008,Cn=1009,hu=1010,fu=1011,Vr=1012,co=1013,Mi=1014,_n=1015,Gr=1016,uo=1017,ho=1018,Wr=1020,du=35902,pu=35899,mu=1021,gu=1022,fn=1023,Xr=1026,$r=1027,fo=1028,po=1029,_u=1030,mo=1031,go=1033,Ds=33776,Ls=33777,Is=33778,Us=33779,_o=35840,vo=35841,yo=35842,xo=35843,bo=36196,So=37492,Mo=37496,Eo=37808,To=37809,wo=37810,Ao=37811,Ro=37812,Co=37813,Po=37814,Do=37815,Lo=37816,Io=37817,Uo=37818,No=37819,Oo=37820,Fo=37821,ko=36492,Bo=36494,zo=36495,Ho=36283,Vo=36284,Go=36285,Wo=36286,jr=2300,qr=2301,Xo=2302,vu=2400,yu=2401,xu=2402,Zp=2500,Jp=0,bu=1,$o=2,Qp=3200,em=3201,Su=0,tm=1,ai="",Bt="srgb",Kt="srgb-linear",Ns="linear",xt="srgb",er=7680,Mu=519,nm=512,im=513,rm=514,Eu=515,sm=516,am=517,om=518,lm=519,jo=35044,Tu="300 es",Pn=2e3,Os=2001;class Ei{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const r=n[e];if(r!==void 0){const s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const r=n.slice(0);for(let s=0,a=r.length;s<a;s++)r[s].call(this,e);e.target=null}}}const Xt=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let wu=1234567;const Yr=Math.PI/180,tr=180/Math.PI;function vn(){const i=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(Xt[i&255]+Xt[i>>8&255]+Xt[i>>16&255]+Xt[i>>24&255]+"-"+Xt[e&255]+Xt[e>>8&255]+"-"+Xt[e>>16&15|64]+Xt[e>>24&255]+"-"+Xt[t&63|128]+Xt[t>>8&255]+"-"+Xt[t>>16&255]+Xt[t>>24&255]+Xt[n&255]+Xt[n>>8&255]+Xt[n>>16&255]+Xt[n>>24&255]).toLowerCase()}function it(i,e,t){return Math.max(e,Math.min(t,i))}function qo(i,e){return(i%e+e)%e}function cm(i,e,t,n,r){return n+(i-e)*(r-n)/(t-e)}function um(i,e,t){return i!==e?(t-i)/(e-i):0}function Kr(i,e,t){return(1-t)*i+t*e}function hm(i,e,t,n){return Kr(i,e,1-Math.exp(-t*n))}function fm(i,e=1){return e-Math.abs(qo(i,e*2)-e)}function dm(i,e,t){return i<=e?0:i>=t?1:(i=(i-e)/(t-e),i*i*(3-2*i))}function pm(i,e,t){return i<=e?0:i>=t?1:(i=(i-e)/(t-e),i*i*i*(i*(i*6-15)+10))}function mm(i,e){return i+Math.floor(Math.random()*(e-i+1))}function gm(i,e){return i+Math.random()*(e-i)}function _m(i){return i*(.5-Math.random())}function vm(i){i!==void 0&&(wu=i);let e=wu+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function ym(i){return i*Yr}function xm(i){return i*tr}function bm(i){return(i&i-1)===0&&i!==0}function Sm(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function Mm(i){return Math.pow(2,Math.floor(Math.log(i)/Math.LN2))}function Em(i,e,t,n,r){const s=Math.cos,a=Math.sin,o=s(t/2),l=a(t/2),c=s((e+n)/2),h=a((e+n)/2),u=s((e-n)/2),f=a((e-n)/2),d=s((n-e)/2),_=a((n-e)/2);switch(r){case"XYX":i.set(o*h,l*u,l*f,o*c);break;case"YZY":i.set(l*f,o*h,l*u,o*c);break;case"ZXZ":i.set(l*u,l*f,o*h,o*c);break;case"XZX":i.set(o*h,l*_,l*d,o*c);break;case"YXY":i.set(l*d,o*h,l*_,o*c);break;case"ZYZ":i.set(l*_,l*d,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function yn(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return i/4294967295;case Uint16Array:return i/65535;case Uint8Array:return i/255;case Int32Array:return Math.max(i/2147483647,-1);case Int16Array:return Math.max(i/32767,-1);case Int8Array:return Math.max(i/127,-1);default:throw new Error("Invalid component type.")}}function vt(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return Math.round(i*4294967295);case Uint16Array:return Math.round(i*65535);case Uint8Array:return Math.round(i*255);case Int32Array:return Math.round(i*2147483647);case Int16Array:return Math.round(i*32767);case Int8Array:return Math.round(i*127);default:throw new Error("Invalid component type.")}}const Au={DEG2RAD:Yr,RAD2DEG:tr,generateUUID:vn,clamp:it,euclideanModulo:qo,mapLinear:cm,inverseLerp:um,lerp:Kr,damp:hm,pingpong:fm,smoothstep:dm,smootherstep:pm,randInt:mm,randFloat:gm,randFloatSpread:_m,seededRandom:vm,degToRad:ym,radToDeg:xm,isPowerOfTwo:bm,ceilPowerOfTwo:Sm,floorPowerOfTwo:Mm,setQuaternionFromProperEuler:Em,normalize:vt,denormalize:yn};class Ye{constructor(e=0,t=0){Ye.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6],this.y=r[1]*t+r[4]*n+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=it(this.x,e.x,t.x),this.y=it(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=it(this.x,e,t),this.y=it(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(it(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(it(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),r=Math.sin(t),s=this.x-e.x,a=this.y-e.y;return this.x=s*n-a*r+e.x,this.y=s*r+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Dn{constructor(e=0,t=0,n=0,r=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=r}static slerpFlat(e,t,n,r,s,a,o){let l=n[r+0],c=n[r+1],h=n[r+2],u=n[r+3];const f=s[a+0],d=s[a+1],_=s[a+2],b=s[a+3];if(o===0){e[t+0]=l,e[t+1]=c,e[t+2]=h,e[t+3]=u;return}if(o===1){e[t+0]=f,e[t+1]=d,e[t+2]=_,e[t+3]=b;return}if(u!==b||l!==f||c!==d||h!==_){let g=1-o;const m=l*f+c*d+h*_+u*b,S=m>=0?1:-1,y=1-m*m;if(y>Number.EPSILON){const T=Math.sqrt(y),R=Math.atan2(T,m*S);g=Math.sin(g*R)/T,o=Math.sin(o*R)/T}const M=o*S;if(l=l*g+f*M,c=c*g+d*M,h=h*g+_*M,u=u*g+b*M,g===1-o){const T=1/Math.sqrt(l*l+c*c+h*h+u*u);l*=T,c*=T,h*=T,u*=T}}e[t]=l,e[t+1]=c,e[t+2]=h,e[t+3]=u}static multiplyQuaternionsFlat(e,t,n,r,s,a){const o=n[r],l=n[r+1],c=n[r+2],h=n[r+3],u=s[a],f=s[a+1],d=s[a+2],_=s[a+3];return e[t]=o*_+h*u+l*d-c*f,e[t+1]=l*_+h*f+c*u-o*d,e[t+2]=c*_+h*d+o*f-l*u,e[t+3]=h*_-o*u-l*f-c*d,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,r){return this._x=e,this._y=t,this._z=n,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,r=e._y,s=e._z,a=e._order,o=Math.cos,l=Math.sin,c=o(n/2),h=o(r/2),u=o(s/2),f=l(n/2),d=l(r/2),_=l(s/2);switch(a){case"XYZ":this._x=f*h*u+c*d*_,this._y=c*d*u-f*h*_,this._z=c*h*_+f*d*u,this._w=c*h*u-f*d*_;break;case"YXZ":this._x=f*h*u+c*d*_,this._y=c*d*u-f*h*_,this._z=c*h*_-f*d*u,this._w=c*h*u+f*d*_;break;case"ZXY":this._x=f*h*u-c*d*_,this._y=c*d*u+f*h*_,this._z=c*h*_+f*d*u,this._w=c*h*u-f*d*_;break;case"ZYX":this._x=f*h*u-c*d*_,this._y=c*d*u+f*h*_,this._z=c*h*_-f*d*u,this._w=c*h*u+f*d*_;break;case"YZX":this._x=f*h*u+c*d*_,this._y=c*d*u+f*h*_,this._z=c*h*_-f*d*u,this._w=c*h*u-f*d*_;break;case"XZY":this._x=f*h*u-c*d*_,this._y=c*d*u-f*h*_,this._z=c*h*_+f*d*u,this._w=c*h*u+f*d*_;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,r=Math.sin(n);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],r=t[4],s=t[8],a=t[1],o=t[5],l=t[9],c=t[2],h=t[6],u=t[10],f=n+o+u;if(f>0){const d=.5/Math.sqrt(f+1);this._w=.25/d,this._x=(h-l)*d,this._y=(s-c)*d,this._z=(a-r)*d}else if(n>o&&n>u){const d=2*Math.sqrt(1+n-o-u);this._w=(h-l)/d,this._x=.25*d,this._y=(r+a)/d,this._z=(s+c)/d}else if(o>u){const d=2*Math.sqrt(1+o-n-u);this._w=(s-c)/d,this._x=(r+a)/d,this._y=.25*d,this._z=(l+h)/d}else{const d=2*Math.sqrt(1+u-n-o);this._w=(a-r)/d,this._x=(s+c)/d,this._y=(l+h)/d,this._z=.25*d}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<1e-8?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(it(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const r=Math.min(1,t/n);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,r=e._y,s=e._z,a=e._w,o=t._x,l=t._y,c=t._z,h=t._w;return this._x=n*h+a*o+r*c-s*l,this._y=r*h+a*l+s*o-n*c,this._z=s*h+a*c+n*l-r*o,this._w=a*h-n*o-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,r=this._y,s=this._z,a=this._w;let o=a*e._w+n*e._x+r*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=s,this;const l=1-o*o;if(l<=Number.EPSILON){const d=1-t;return this._w=d*a+t*this._w,this._x=d*n+t*this._x,this._y=d*r+t*this._y,this._z=d*s+t*this._z,this.normalize(),this}const c=Math.sqrt(l),h=Math.atan2(c,o),u=Math.sin((1-t)*h)/c,f=Math.sin(t*h)/c;return this._w=a*u+this._w*f,this._x=n*u+this._x*f,this._y=r*u+this._y*f,this._z=s*u+this._z*f,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class ${constructor(e=0,t=0,n=0){$.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(Ru.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Ru.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*r,this.y=s[1]*t+s[4]*n+s[7]*r,this.z=s[2]*t+s[5]*n+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=e.elements,a=1/(s[3]*t+s[7]*n+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*r+s[12])*a,this.y=(s[1]*t+s[5]*n+s[9]*r+s[13])*a,this.z=(s[2]*t+s[6]*n+s[10]*r+s[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,r=this.z,s=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*r-o*n),h=2*(o*t-s*r),u=2*(s*n-a*t);return this.x=t+l*c+a*u-o*h,this.y=n+l*h+o*c-s*u,this.z=r+l*u+s*h-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*r,this.y=s[1]*t+s[5]*n+s[9]*r,this.z=s[2]*t+s[6]*n+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=it(this.x,e.x,t.x),this.y=it(this.y,e.y,t.y),this.z=it(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=it(this.x,e,t),this.y=it(this.y,e,t),this.z=it(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(it(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,r=e.y,s=e.z,a=t.x,o=t.y,l=t.z;return this.x=r*l-s*o,this.y=s*a-n*l,this.z=n*o-r*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Yo.copy(this).projectOnVector(e),this.sub(Yo)}reflect(e){return this.sub(Yo.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(it(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,r=this.z-e.z;return t*t+n*n+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const r=Math.sin(t)*e;return this.x=r*Math.sin(n),this.y=Math.cos(t)*e,this.z=r*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Yo=new $,Ru=new Dn;class Qe{constructor(e,t,n,r,s,a,o,l,c){Qe.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,r,s,a,o,l,c)}set(e,t,n,r,s,a,o,l,c){const h=this.elements;return h[0]=e,h[1]=r,h[2]=o,h[3]=t,h[4]=s,h[5]=l,h[6]=n,h[7]=a,h[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,a=n[0],o=n[3],l=n[6],c=n[1],h=n[4],u=n[7],f=n[2],d=n[5],_=n[8],b=r[0],g=r[3],m=r[6],S=r[1],y=r[4],M=r[7],T=r[2],R=r[5],k=r[8];return s[0]=a*b+o*S+l*T,s[3]=a*g+o*y+l*R,s[6]=a*m+o*M+l*k,s[1]=c*b+h*S+u*T,s[4]=c*g+h*y+u*R,s[7]=c*m+h*M+u*k,s[2]=f*b+d*S+_*T,s[5]=f*g+d*y+_*R,s[8]=f*m+d*M+_*k,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8];return t*a*h-t*o*c-n*s*h+n*o*l+r*s*c-r*a*l}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],u=h*a-o*c,f=o*l-h*s,d=c*s-a*l,_=t*u+n*f+r*d;if(_===0)return this.set(0,0,0,0,0,0,0,0,0);const b=1/_;return e[0]=u*b,e[1]=(r*c-h*n)*b,e[2]=(o*n-r*a)*b,e[3]=f*b,e[4]=(h*t-r*l)*b,e[5]=(r*s-o*t)*b,e[6]=d*b,e[7]=(n*l-c*t)*b,e[8]=(a*t-n*s)*b,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,r,s,a,o){const l=Math.cos(s),c=Math.sin(s);return this.set(n*l,n*c,-n*(l*a+c*o)+a+e,-r*c,r*l,-r*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Ko.makeScale(e,t)),this}rotate(e){return this.premultiply(Ko.makeRotation(-e)),this}translate(e,t){return this.premultiply(Ko.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<9;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Ko=new Qe;function Cu(i){for(let e=i.length-1;e>=0;--e)if(i[e]>=65535)return!0;return!1}function Zr(i){return document.createElementNS("http://www.w3.org/1999/xhtml",i)}function Tm(){const i=Zr("canvas");return i.style.display="block",i}const Pu={};function Jr(i){i in Pu||(Pu[i]=!0,console.warn(i))}function wm(i,e,t){return new Promise(function(n,r){function s(){switch(i.clientWaitSync(e,i.SYNC_FLUSH_COMMANDS_BIT,0)){case i.WAIT_FAILED:r();break;case i.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:n()}}setTimeout(s,t)})}const Du=new Qe().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),Lu=new Qe().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Am(){const i={enabled:!0,workingColorSpace:Kt,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===xt&&(r.r=Xn(r.r),r.g=Xn(r.g),r.b=Xn(r.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(r.applyMatrix3(this.spaces[s].toXYZ),r.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===xt&&(r.r=nr(r.r),r.g=nr(r.g),r.b=nr(r.b))),r},workingToColorSpace:function(r,s){return this.convert(r,this.workingColorSpace,s)},colorSpaceToWorking:function(r,s){return this.convert(r,s,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===ai?Ns:this.spaces[r].transfer},getToneMappingMode:function(r){return this.spaces[r].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(r,s=this.workingColorSpace){return r.fromArray(this.spaces[s].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,s,a){return r.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(r,s){return Jr("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),i.workingToColorSpace(r,s)},toWorkingColorSpace:function(r,s){return Jr("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),i.colorSpaceToWorking(r,s)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return i.define({[Kt]:{primaries:e,whitePoint:n,transfer:Ns,toXYZ:Du,fromXYZ:Lu,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Bt},outputColorSpaceConfig:{drawingBufferColorSpace:Bt}},[Bt]:{primaries:e,whitePoint:n,transfer:xt,toXYZ:Du,fromXYZ:Lu,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Bt}}}),i}const lt=Am();function Xn(i){return i<.04045?i*.0773993808:Math.pow(i*.9478672986+.0521327014,2.4)}function nr(i){return i<.0031308?i*12.92:1.055*Math.pow(i,.41666)-.055}let ir;class Rm{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{ir===void 0&&(ir=Zr("canvas")),ir.width=e.width,ir.height=e.height;const r=ir.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),n=ir}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=Zr("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const r=n.getImageData(0,0,e.width,e.height),s=r.data;for(let a=0;a<s.length;a++)s[a]=Xn(s[a]/255)*255;return n.putImageData(r,0,0),t}else if(e.data){const t=e.data.slice(0);for(let n=0;n<t.length;n++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[n]=Math.floor(Xn(t[n]/255)*255):t[n]=Xn(t[n]);return{data:t,width:e.width,height:e.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}let Cm=0;class Zo{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:Cm++}),this.uuid=vn(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){const t=this.data;return typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight,0):t instanceof VideoFrame?e.set(t.displayHeight,t.displayWidth,0):t!==null?e.set(t.width,t.height,t.depth||0):e.set(0,0,0),e}set needsUpdate(e){e===!0&&this.version++}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.images[this.uuid]!==void 0)return e.images[this.uuid];const n={uuid:this.uuid,url:""},r=this.data;if(r!==null){let s;if(Array.isArray(r)){s=[];for(let a=0,o=r.length;a<o;a++)r[a].isDataTexture?s.push(Jo(r[a].image)):s.push(Jo(r[a]))}else s=Jo(r);n.url=s}return t||(e.images[this.uuid]=n),n}}function Jo(i){return typeof HTMLImageElement<"u"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&i instanceof ImageBitmap?Rm.getDataURL(i):i.data?{data:Array.from(i.data),width:i.width,height:i.height,type:i.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let Pm=0;const Qo=new $;class zt extends Ei{constructor(e=zt.DEFAULT_IMAGE,t=zt.DEFAULT_MAPPING,n=si,r=si,s=ln,a=Wn,o=fn,l=Cn,c=zt.DEFAULT_ANISOTROPY,h=ai){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:Pm++}),this.uuid=vn(),this.name="",this.source=new Zo(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=n,this.wrapT=r,this.magFilter=s,this.minFilter=a,this.anisotropy=c,this.format=o,this.internalFormat=null,this.type=l,this.offset=new Ye(0,0),this.repeat=new Ye(1,1),this.center=new Ye(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Qe,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=h,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(e&&e.depth&&e.depth>1),this.pmremVersion=0}get width(){return this.source.getSize(Qo).x}get height(){return this.source.getSize(Qo).y}get depth(){return this.source.getSize(Qo).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Texture.setValues(): property '${t}' does not exist.`);continue}r&&n&&r.isVector2&&n.isVector2||r&&n&&r.isVector3&&n.isVector3||r&&n&&r.isMatrix3&&n.isMatrix3?r.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==cu)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Qi:e.x=e.x-Math.floor(e.x);break;case si:e.x=e.x<0?0:1;break;case Cs:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Qi:e.y=e.y-Math.floor(e.y);break;case si:e.y=e.y<0?0:1;break;case Cs:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}zt.DEFAULT_IMAGE=null,zt.DEFAULT_MAPPING=cu,zt.DEFAULT_ANISOTROPY=1;class pt{constructor(e=0,t=0,n=0,r=1){pt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,r){return this.x=e,this.y=t,this.z=n,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*r+a[12]*s,this.y=a[1]*t+a[5]*n+a[9]*r+a[13]*s,this.z=a[2]*t+a[6]*n+a[10]*r+a[14]*s,this.w=a[3]*t+a[7]*n+a[11]*r+a[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,r,s;const l=e.elements,c=l[0],h=l[4],u=l[8],f=l[1],d=l[5],_=l[9],b=l[2],g=l[6],m=l[10];if(Math.abs(h-f)<.01&&Math.abs(u-b)<.01&&Math.abs(_-g)<.01){if(Math.abs(h+f)<.1&&Math.abs(u+b)<.1&&Math.abs(_+g)<.1&&Math.abs(c+d+m-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const y=(c+1)/2,M=(d+1)/2,T=(m+1)/2,R=(h+f)/4,k=(u+b)/4,B=(_+g)/4;return y>M&&y>T?y<.01?(n=0,r=.707106781,s=.707106781):(n=Math.sqrt(y),r=R/n,s=k/n):M>T?M<.01?(n=.707106781,r=0,s=.707106781):(r=Math.sqrt(M),n=R/r,s=B/r):T<.01?(n=.707106781,r=.707106781,s=0):(s=Math.sqrt(T),n=k/s,r=B/s),this.set(n,r,s,t),this}let S=Math.sqrt((g-_)*(g-_)+(u-b)*(u-b)+(f-h)*(f-h));return Math.abs(S)<.001&&(S=1),this.x=(g-_)/S,this.y=(u-b)/S,this.z=(f-h)/S,this.w=Math.acos((c+d+m-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=it(this.x,e.x,t.x),this.y=it(this.y,e.y,t.y),this.z=it(this.z,e.z,t.z),this.w=it(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=it(this.x,e,t),this.y=it(this.y,e,t),this.z=it(this.z,e,t),this.w=it(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(it(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Dm extends Ei{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:ln,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new pt(0,0,e,t),this.scissorTest=!1,this.viewport=new pt(0,0,e,t);const r={width:e,height:t,depth:n.depth},s=new zt(r);this.textures=[];const a=n.count;for(let o=0;o<a;o++)this.textures[o]=s.clone(),this.textures[o].isRenderTargetTexture=!0,this.textures[o].renderTarget=this;this._setTextureOptions(n),this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.resolveDepthBuffer=n.resolveDepthBuffer,this.resolveStencilBuffer=n.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=n.depthTexture,this.samples=n.samples,this.multiview=n.multiview}_setTextureOptions(e={}){const t={minFilter:ln,generateMipmaps:!1,flipY:!1,internalFormat:null};e.mapping!==void 0&&(t.mapping=e.mapping),e.wrapS!==void 0&&(t.wrapS=e.wrapS),e.wrapT!==void 0&&(t.wrapT=e.wrapT),e.wrapR!==void 0&&(t.wrapR=e.wrapR),e.magFilter!==void 0&&(t.magFilter=e.magFilter),e.minFilter!==void 0&&(t.minFilter=e.minFilter),e.format!==void 0&&(t.format=e.format),e.type!==void 0&&(t.type=e.type),e.anisotropy!==void 0&&(t.anisotropy=e.anisotropy),e.colorSpace!==void 0&&(t.colorSpace=e.colorSpace),e.flipY!==void 0&&(t.flipY=e.flipY),e.generateMipmaps!==void 0&&(t.generateMipmaps=e.generateMipmaps),e.internalFormat!==void 0&&(t.internalFormat=e.internalFormat);for(let n=0;n<this.textures.length;n++)this.textures[n].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),e!==null&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let r=0,s=this.textures.length;r<s;r++)this.textures[r].image.width=e,this.textures[r].image.height=t,this.textures[r].image.depth=n,this.textures[r].isArrayTexture=this.textures[r].image.depth>1;this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,n=e.textures.length;t<n;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;const r=Object.assign({},e.textures[t].image);this.textures[t].source=new Zo(r)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Ti extends Dm{constructor(e=1,t=1,n={}){super(e,t,n),this.isWebGLRenderTarget=!0}}class Iu extends zt{constructor(e=null,t=1,n=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:r},this.magFilter=Yt,this.minFilter=Yt,this.wrapR=si,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Lm extends zt{constructor(e=null,t=1,n=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:r},this.magFilter=Yt,this.minFilter=Yt,this.wrapR=si,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Ln{constructor(e=new $(1/0,1/0,1/0),t=new $(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t+=3)this.expandByPoint(xn.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,n=e.count;t<n;t++)this.expandByPoint(xn.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const n=xn.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const n=e.geometry;if(n!==void 0){const s=n.getAttribute("position");if(t===!0&&s!==void 0&&e.isInstancedMesh!==!0)for(let a=0,o=s.count;a<o;a++)e.isMesh===!0?e.getVertexPosition(a,xn):xn.fromBufferAttribute(s,a),xn.applyMatrix4(e.matrixWorld),this.expandByPoint(xn);else e.boundingBox!==void 0?(e.boundingBox===null&&e.computeBoundingBox(),Fs.copy(e.boundingBox)):(n.boundingBox===null&&n.computeBoundingBox(),Fs.copy(n.boundingBox)),Fs.applyMatrix4(e.matrixWorld),this.union(Fs)}const r=e.children;for(let s=0,a=r.length;s<a;s++)this.expandByObject(r[s],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,xn),xn.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Qr),ks.subVectors(this.max,Qr),rr.subVectors(e.a,Qr),sr.subVectors(e.b,Qr),ar.subVectors(e.c,Qr),oi.subVectors(sr,rr),li.subVectors(ar,sr),wi.subVectors(rr,ar);let t=[0,-oi.z,oi.y,0,-li.z,li.y,0,-wi.z,wi.y,oi.z,0,-oi.x,li.z,0,-li.x,wi.z,0,-wi.x,-oi.y,oi.x,0,-li.y,li.x,0,-wi.y,wi.x,0];return!el(t,rr,sr,ar,ks)||(t=[1,0,0,0,1,0,0,0,1],!el(t,rr,sr,ar,ks))?!1:(Bs.crossVectors(oi,li),t=[Bs.x,Bs.y,Bs.z],el(t,rr,sr,ar,ks))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,xn).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(xn).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:($n[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),$n[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),$n[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),$n[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),$n[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),$n[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),$n[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),$n[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints($n),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const $n=[new $,new $,new $,new $,new $,new $,new $,new $],xn=new $,Fs=new Ln,rr=new $,sr=new $,ar=new $,oi=new $,li=new $,wi=new $,Qr=new $,ks=new $,Bs=new $,Ai=new $;function el(i,e,t,n,r){for(let s=0,a=i.length-3;s<=a;s+=3){Ai.fromArray(i,s);const o=r.x*Math.abs(Ai.x)+r.y*Math.abs(Ai.y)+r.z*Math.abs(Ai.z),l=e.dot(Ai),c=t.dot(Ai),h=n.dot(Ai);if(Math.max(-Math.max(l,c,h),Math.min(l,c,h))>o)return!1}return!0}const Im=new Ln,es=new $,tl=new $;class In{constructor(e=new $,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):Im.setFromPoints(e).getCenter(n);let r=0;for(let s=0,a=e.length;s<a;s++)r=Math.max(r,n.distanceToSquared(e[s]));return this.radius=Math.sqrt(r),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){const n=this.center.distanceToSquared(e);return t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;es.subVectors(e,this.center);const t=es.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),r=(n-this.radius)*.5;this.center.addScaledVector(es,r/n),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(tl.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(es.copy(e.center).add(tl)),this.expandByPoint(es.copy(e.center).sub(tl))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const jn=new $,nl=new $,zs=new $,ci=new $,il=new $,Hs=new $,rl=new $;class or{constructor(e=new $,t=new $(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,jn)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=jn.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(jn.copy(this.origin).addScaledVector(this.direction,t),jn.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){nl.copy(e).add(t).multiplyScalar(.5),zs.copy(t).sub(e).normalize(),ci.copy(this.origin).sub(nl);const s=e.distanceTo(t)*.5,a=-this.direction.dot(zs),o=ci.dot(this.direction),l=-ci.dot(zs),c=ci.lengthSq(),h=Math.abs(1-a*a);let u,f,d,_;if(h>0)if(u=a*l-o,f=a*o-l,_=s*h,u>=0)if(f>=-_)if(f<=_){const b=1/h;u*=b,f*=b,d=u*(u+a*f+2*o)+f*(a*u+f+2*l)+c}else f=s,u=Math.max(0,-(a*f+o)),d=-u*u+f*(f+2*l)+c;else f=-s,u=Math.max(0,-(a*f+o)),d=-u*u+f*(f+2*l)+c;else f<=-_?(u=Math.max(0,-(-a*s+o)),f=u>0?-s:Math.min(Math.max(-s,-l),s),d=-u*u+f*(f+2*l)+c):f<=_?(u=0,f=Math.min(Math.max(-s,-l),s),d=f*(f+2*l)+c):(u=Math.max(0,-(a*s+o)),f=u>0?s:Math.min(Math.max(-s,-l),s),d=-u*u+f*(f+2*l)+c);else f=a>0?-s:s,u=Math.max(0,-(a*f+o)),d=-u*u+f*(f+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,u),r&&r.copy(nl).addScaledVector(zs,f),d}intersectSphere(e,t){jn.subVectors(e.center,this.origin);const n=jn.dot(this.direction),r=jn.dot(jn)-n*n,s=e.radius*e.radius;if(r>s)return null;const a=Math.sqrt(s-r),o=n-a,l=n+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,r,s,a,o,l;const c=1/this.direction.x,h=1/this.direction.y,u=1/this.direction.z,f=this.origin;return c>=0?(n=(e.min.x-f.x)*c,r=(e.max.x-f.x)*c):(n=(e.max.x-f.x)*c,r=(e.min.x-f.x)*c),h>=0?(s=(e.min.y-f.y)*h,a=(e.max.y-f.y)*h):(s=(e.max.y-f.y)*h,a=(e.min.y-f.y)*h),n>a||s>r||((s>n||isNaN(n))&&(n=s),(a<r||isNaN(r))&&(r=a),u>=0?(o=(e.min.z-f.z)*u,l=(e.max.z-f.z)*u):(o=(e.max.z-f.z)*u,l=(e.min.z-f.z)*u),n>l||o>r)||((o>n||n!==n)&&(n=o),(l<r||r!==r)&&(r=l),r<0)?null:this.at(n>=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,jn)!==null}intersectTriangle(e,t,n,r,s){il.subVectors(t,e),Hs.subVectors(n,e),rl.crossVectors(il,Hs);let a=this.direction.dot(rl),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;ci.subVectors(this.origin,e);const l=o*this.direction.dot(Hs.crossVectors(ci,Hs));if(l<0)return null;const c=o*this.direction.dot(il.cross(ci));if(c<0||l+c>a)return null;const h=-o*ci.dot(rl);return h<0?null:this.at(h/a,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class et{constructor(e,t,n,r,s,a,o,l,c,h,u,f,d,_,b,g){et.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,r,s,a,o,l,c,h,u,f,d,_,b,g)}set(e,t,n,r,s,a,o,l,c,h,u,f,d,_,b,g){const m=this.elements;return m[0]=e,m[4]=t,m[8]=n,m[12]=r,m[1]=s,m[5]=a,m[9]=o,m[13]=l,m[2]=c,m[6]=h,m[10]=u,m[14]=f,m[3]=d,m[7]=_,m[11]=b,m[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new et().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,r=1/lr.setFromMatrixColumn(e,0).length(),s=1/lr.setFromMatrixColumn(e,1).length(),a=1/lr.setFromMatrixColumn(e,2).length();return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,r=e.y,s=e.z,a=Math.cos(n),o=Math.sin(n),l=Math.cos(r),c=Math.sin(r),h=Math.cos(s),u=Math.sin(s);if(e.order==="XYZ"){const f=a*h,d=a*u,_=o*h,b=o*u;t[0]=l*h,t[4]=-l*u,t[8]=c,t[1]=d+_*c,t[5]=f-b*c,t[9]=-o*l,t[2]=b-f*c,t[6]=_+d*c,t[10]=a*l}else if(e.order==="YXZ"){const f=l*h,d=l*u,_=c*h,b=c*u;t[0]=f+b*o,t[4]=_*o-d,t[8]=a*c,t[1]=a*u,t[5]=a*h,t[9]=-o,t[2]=d*o-_,t[6]=b+f*o,t[10]=a*l}else if(e.order==="ZXY"){const f=l*h,d=l*u,_=c*h,b=c*u;t[0]=f-b*o,t[4]=-a*u,t[8]=_+d*o,t[1]=d+_*o,t[5]=a*h,t[9]=b-f*o,t[2]=-a*c,t[6]=o,t[10]=a*l}else if(e.order==="ZYX"){const f=a*h,d=a*u,_=o*h,b=o*u;t[0]=l*h,t[4]=_*c-d,t[8]=f*c+b,t[1]=l*u,t[5]=b*c+f,t[9]=d*c-_,t[2]=-c,t[6]=o*l,t[10]=a*l}else if(e.order==="YZX"){const f=a*l,d=a*c,_=o*l,b=o*c;t[0]=l*h,t[4]=b-f*u,t[8]=_*u+d,t[1]=u,t[5]=a*h,t[9]=-o*h,t[2]=-c*h,t[6]=d*u+_,t[10]=f-b*u}else if(e.order==="XZY"){const f=a*l,d=a*c,_=o*l,b=o*c;t[0]=l*h,t[4]=-u,t[8]=c*h,t[1]=f*u+b,t[5]=a*h,t[9]=d*u-_,t[2]=_*u-d,t[6]=o*h,t[10]=b*u+f}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Um,e,Nm)}lookAt(e,t,n){const r=this.elements;return cn.subVectors(e,t),cn.lengthSq()===0&&(cn.z=1),cn.normalize(),ui.crossVectors(n,cn),ui.lengthSq()===0&&(Math.abs(n.z)===1?cn.x+=1e-4:cn.z+=1e-4,cn.normalize(),ui.crossVectors(n,cn)),ui.normalize(),Vs.crossVectors(cn,ui),r[0]=ui.x,r[4]=Vs.x,r[8]=cn.x,r[1]=ui.y,r[5]=Vs.y,r[9]=cn.y,r[2]=ui.z,r[6]=Vs.z,r[10]=cn.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,a=n[0],o=n[4],l=n[8],c=n[12],h=n[1],u=n[5],f=n[9],d=n[13],_=n[2],b=n[6],g=n[10],m=n[14],S=n[3],y=n[7],M=n[11],T=n[15],R=r[0],k=r[4],B=r[8],C=r[12],D=r[1],V=r[5],K=r[9],J=r[13],se=r[2],he=r[6],Q=r[10],de=r[14],ne=r[3],ue=r[7],Te=r[11],ke=r[15];return s[0]=a*R+o*D+l*se+c*ne,s[4]=a*k+o*V+l*he+c*ue,s[8]=a*B+o*K+l*Q+c*Te,s[12]=a*C+o*J+l*de+c*ke,s[1]=h*R+u*D+f*se+d*ne,s[5]=h*k+u*V+f*he+d*ue,s[9]=h*B+u*K+f*Q+d*Te,s[13]=h*C+u*J+f*de+d*ke,s[2]=_*R+b*D+g*se+m*ne,s[6]=_*k+b*V+g*he+m*ue,s[10]=_*B+b*K+g*Q+m*Te,s[14]=_*C+b*J+g*de+m*ke,s[3]=S*R+y*D+M*se+T*ne,s[7]=S*k+y*V+M*he+T*ue,s[11]=S*B+y*K+M*Q+T*Te,s[15]=S*C+y*J+M*de+T*ke,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],r=e[8],s=e[12],a=e[1],o=e[5],l=e[9],c=e[13],h=e[2],u=e[6],f=e[10],d=e[14],_=e[3],b=e[7],g=e[11],m=e[15];return _*(+s*l*u-r*c*u-s*o*f+n*c*f+r*o*d-n*l*d)+b*(+t*l*d-t*c*f+s*a*f-r*a*d+r*c*h-s*l*h)+g*(+t*c*u-t*o*d-s*a*u+n*a*d+s*o*h-n*c*h)+m*(-r*o*h-t*l*u+t*o*f+r*a*u-n*a*f+n*l*h)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],u=e[9],f=e[10],d=e[11],_=e[12],b=e[13],g=e[14],m=e[15],S=u*g*c-b*f*c+b*l*d-o*g*d-u*l*m+o*f*m,y=_*f*c-h*g*c-_*l*d+a*g*d+h*l*m-a*f*m,M=h*b*c-_*u*c+_*o*d-a*b*d-h*o*m+a*u*m,T=_*u*l-h*b*l-_*o*f+a*b*f+h*o*g-a*u*g,R=t*S+n*y+r*M+s*T;if(R===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const k=1/R;return e[0]=S*k,e[1]=(b*f*s-u*g*s-b*r*d+n*g*d+u*r*m-n*f*m)*k,e[2]=(o*g*s-b*l*s+b*r*c-n*g*c-o*r*m+n*l*m)*k,e[3]=(u*l*s-o*f*s-u*r*c+n*f*c+o*r*d-n*l*d)*k,e[4]=y*k,e[5]=(h*g*s-_*f*s+_*r*d-t*g*d-h*r*m+t*f*m)*k,e[6]=(_*l*s-a*g*s-_*r*c+t*g*c+a*r*m-t*l*m)*k,e[7]=(a*f*s-h*l*s+h*r*c-t*f*c-a*r*d+t*l*d)*k,e[8]=M*k,e[9]=(_*u*s-h*b*s-_*n*d+t*b*d+h*n*m-t*u*m)*k,e[10]=(a*b*s-_*o*s+_*n*c-t*b*c-a*n*m+t*o*m)*k,e[11]=(h*o*s-a*u*s-h*n*c+t*u*c+a*n*d-t*o*d)*k,e[12]=T*k,e[13]=(h*b*r-_*u*r+_*n*f-t*b*f-h*n*g+t*u*g)*k,e[14]=(_*o*r-a*b*r-_*n*l+t*b*l+a*n*g-t*o*g)*k,e[15]=(a*u*r-h*o*r+h*n*l-t*u*l-a*n*f+t*o*f)*k,this}scale(e){const t=this.elements,n=e.x,r=e.y,s=e.z;return t[0]*=n,t[4]*=r,t[8]*=s,t[1]*=n,t[5]*=r,t[9]*=s,t[2]*=n,t[6]*=r,t[10]*=s,t[3]*=n,t[7]*=r,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,r))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),r=Math.sin(t),s=1-n,a=e.x,o=e.y,l=e.z,c=s*a,h=s*o;return this.set(c*a+n,c*o-r*l,c*l+r*o,0,c*o+r*l,h*o+n,h*l-r*a,0,c*l-r*o,h*l+r*a,s*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,r,s,a){return this.set(1,n,s,0,e,1,a,0,t,r,1,0,0,0,0,1),this}compose(e,t,n){const r=this.elements,s=t._x,a=t._y,o=t._z,l=t._w,c=s+s,h=a+a,u=o+o,f=s*c,d=s*h,_=s*u,b=a*h,g=a*u,m=o*u,S=l*c,y=l*h,M=l*u,T=n.x,R=n.y,k=n.z;return r[0]=(1-(b+m))*T,r[1]=(d+M)*T,r[2]=(_-y)*T,r[3]=0,r[4]=(d-M)*R,r[5]=(1-(f+m))*R,r[6]=(g+S)*R,r[7]=0,r[8]=(_+y)*k,r[9]=(g-S)*k,r[10]=(1-(f+b))*k,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,n){const r=this.elements;let s=lr.set(r[0],r[1],r[2]).length();const a=lr.set(r[4],r[5],r[6]).length(),o=lr.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),e.x=r[12],e.y=r[13],e.z=r[14],bn.copy(this);const c=1/s,h=1/a,u=1/o;return bn.elements[0]*=c,bn.elements[1]*=c,bn.elements[2]*=c,bn.elements[4]*=h,bn.elements[5]*=h,bn.elements[6]*=h,bn.elements[8]*=u,bn.elements[9]*=u,bn.elements[10]*=u,t.setFromRotationMatrix(bn),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,r,s,a,o=Pn,l=!1){const c=this.elements,h=2*s/(t-e),u=2*s/(n-r),f=(t+e)/(t-e),d=(n+r)/(n-r);let _,b;if(l)_=s/(a-s),b=a*s/(a-s);else if(o===Pn)_=-(a+s)/(a-s),b=-2*a*s/(a-s);else if(o===Os)_=-a/(a-s),b=-a*s/(a-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return c[0]=h,c[4]=0,c[8]=f,c[12]=0,c[1]=0,c[5]=u,c[9]=d,c[13]=0,c[2]=0,c[6]=0,c[10]=_,c[14]=b,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,r,s,a,o=Pn,l=!1){const c=this.elements,h=2/(t-e),u=2/(n-r),f=-(t+e)/(t-e),d=-(n+r)/(n-r);let _,b;if(l)_=1/(a-s),b=a/(a-s);else if(o===Pn)_=-2/(a-s),b=-(a+s)/(a-s);else if(o===Os)_=-1/(a-s),b=-s/(a-s);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return c[0]=h,c[4]=0,c[8]=0,c[12]=f,c[1]=0,c[5]=u,c[9]=0,c[13]=d,c[2]=0,c[6]=0,c[10]=_,c[14]=b,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<16;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const lr=new $,bn=new et,Um=new $(0,0,0),Nm=new $(1,1,1),ui=new $,Vs=new $,cn=new $,Uu=new et,Nu=new Dn;class Un{constructor(e=0,t=0,n=0,r=Un.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,r=this._order){return this._x=e,this._y=t,this._z=n,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const r=e.elements,s=r[0],a=r[4],o=r[8],l=r[1],c=r[5],h=r[9],u=r[2],f=r[6],d=r[10];switch(t){case"XYZ":this._y=Math.asin(it(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,d),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(f,c),this._z=0);break;case"YXZ":this._x=Math.asin(-it(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,s),this._z=0);break;case"ZXY":this._x=Math.asin(it(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-it(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(f,d),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(it(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-it(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(f,c),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Uu.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Uu,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Nu.setFromEuler(this),this.setFromQuaternion(Nu,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Un.DEFAULT_ORDER="XYZ";class sl{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!==0}}let Om=0;const Ou=new $,cr=new Dn,qn=new et,Gs=new $,ts=new $,Fm=new $,km=new Dn,Fu=new $(1,0,0),ku=new $(0,1,0),Bu=new $(0,0,1),zu={type:"added"},Bm={type:"removed"},ur={type:"childadded",child:null},al={type:"childremoved",child:null};class At extends Ei{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:Om++}),this.uuid=vn(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=At.DEFAULT_UP.clone();const e=new $,t=new Un,n=new Dn,r=new $(1,1,1);function s(){n.setFromEuler(t,!1)}function a(){t.setFromQuaternion(n,void 0,!1)}t._onChange(s),n._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:r},modelViewMatrix:{value:new et},normalMatrix:{value:new Qe}}),this.matrix=new et,this.matrixWorld=new et,this.matrixAutoUpdate=At.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=At.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new sl,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return cr.setFromAxisAngle(e,t),this.quaternion.multiply(cr),this}rotateOnWorldAxis(e,t){return cr.setFromAxisAngle(e,t),this.quaternion.premultiply(cr),this}rotateX(e){return this.rotateOnAxis(Fu,e)}rotateY(e){return this.rotateOnAxis(ku,e)}rotateZ(e){return this.rotateOnAxis(Bu,e)}translateOnAxis(e,t){return Ou.copy(e).applyQuaternion(this.quaternion),this.position.add(Ou.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(Fu,e)}translateY(e){return this.translateOnAxis(ku,e)}translateZ(e){return this.translateOnAxis(Bu,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(qn.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?Gs.copy(e):Gs.set(e,t,n);const r=this.parent;this.updateWorldMatrix(!0,!1),ts.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?qn.lookAt(ts,Gs,this.up):qn.lookAt(Gs,ts,this.up),this.quaternion.setFromRotationMatrix(qn),r&&(qn.extractRotation(r.matrixWorld),cr.setFromRotationMatrix(qn),this.quaternion.premultiply(cr.invert()))}add(e){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(zu),ur.child=e,this.dispatchEvent(ur),ur.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let n=0;n<arguments.length;n++)this.remove(arguments[n]);return this}const t=this.children.indexOf(e);return t!==-1&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(Bm),al.child=e,this.dispatchEvent(al),al.child=null),this}removeFromParent(){const e=this.parent;return e!==null&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),qn.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),qn.multiply(e.parent.matrixWorld)),e.applyMatrix4(qn),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(zu),ur.child=e,this.dispatchEvent(ur),ur.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,r=this.children.length;n<r;n++){const a=this.children[n].getObjectByProperty(e,t);if(a!==void 0)return a}}getObjectsByProperty(e,t,n=[]){this[e]===t&&n.push(this);const r=this.children;for(let s=0,a=r.length;s<a;s++)r[s].getObjectsByProperty(e,t,n);return n}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ts,e,Fm),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ts,km,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);const t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverseVisible(e)}traverseAncestors(e){const t=this.parent;t!==null&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].updateMatrixWorld(e)}updateWorldMatrix(e,t){const n=this.parent;if(e===!0&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),t===!0){const r=this.children;for(let s=0,a=r.length;s<a;s++)r[s].updateWorldMatrix(!1,!0)}}toJSON(e){const t=e===void 0||typeof e=="string",n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});const r={};r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.castShadow===!0&&(r.castShadow=!0),this.receiveShadow===!0&&(r.receiveShadow=!0),this.visible===!1&&(r.visible=!1),this.frustumCulled===!1&&(r.frustumCulled=!1),this.renderOrder!==0&&(r.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(o=>({...o})),r.availableInstanceIds=this._availableInstanceIds.slice(),r.availableGeometryIds=this._availableGeometryIds.slice(),r.nextIndexStart=this._nextIndexStart,r.nextVertexStart=this._nextVertexStart,r.geometryCount=this._geometryCount,r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.matricesTexture=this._matricesTexture.toJSON(e),r.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(r.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,h=l.length;c<h;c++){const u=l[c];s(e.shapes,u)}else s(e.shapes,l)}}if(this.isSkinnedMesh&&(r.bindMode=this.bindMode,r.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(e.skeletons,this.skeleton),r.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let l=0,c=this.material.length;l<c;l++)o.push(s(e.materials,this.material[l]));r.material=o}else r.material=s(e.materials,this.material);if(this.children.length>0){r.children=[];for(let o=0;o<this.children.length;o++)r.children.push(this.children[o].toJSON(e).object)}if(this.animations.length>0){r.animations=[];for(let o=0;o<this.animations.length;o++){const l=this.animations[o];r.animations.push(s(e.animations,l))}}if(t){const o=a(e.geometries),l=a(e.materials),c=a(e.textures),h=a(e.images),u=a(e.shapes),f=a(e.skeletons),d=a(e.animations),_=a(e.nodes);o.length>0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),h.length>0&&(n.images=h),u.length>0&&(n.shapes=u),f.length>0&&(n.skeletons=f),d.length>0&&(n.animations=d),_.length>0&&(n.nodes=_)}return n.object=r,n;function a(o){const l=[];for(const c in o){const h=o[c];delete h.metadata,l.push(h)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n<e.children.length;n++){const r=e.children[n];this.add(r.clone())}return this}}At.DEFAULT_UP=new $(0,1,0),At.DEFAULT_MATRIX_AUTO_UPDATE=!0,At.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const Sn=new $,Yn=new $,ol=new $,Kn=new $,hr=new $,fr=new $,Hu=new $,ll=new $,cl=new $,ul=new $,hl=new pt,fl=new pt,dl=new pt;class Mn{constructor(e=new $,t=new $,n=new $){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,r){r.subVectors(n,t),Sn.subVectors(e,t),r.cross(Sn);const s=r.lengthSq();return s>0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,n,r,s){Sn.subVectors(r,t),Yn.subVectors(n,t),ol.subVectors(e,t);const a=Sn.dot(Sn),o=Sn.dot(Yn),l=Sn.dot(ol),c=Yn.dot(Yn),h=Yn.dot(ol),u=a*c-o*o;if(u===0)return s.set(0,0,0),null;const f=1/u,d=(c*l-o*h)*f,_=(a*h-o*l)*f;return s.set(1-d-_,_,d)}static containsPoint(e,t,n,r){return this.getBarycoord(e,t,n,r,Kn)===null?!1:Kn.x>=0&&Kn.y>=0&&Kn.x+Kn.y<=1}static getInterpolation(e,t,n,r,s,a,o,l){return this.getBarycoord(e,t,n,r,Kn)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Kn.x),l.addScaledVector(a,Kn.y),l.addScaledVector(o,Kn.z),l)}static getInterpolatedAttribute(e,t,n,r,s,a){return hl.setScalar(0),fl.setScalar(0),dl.setScalar(0),hl.fromBufferAttribute(e,t),fl.fromBufferAttribute(e,n),dl.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(hl,s.x),a.addScaledVector(fl,s.y),a.addScaledVector(dl,s.z),a}static isFrontFacing(e,t,n,r){return Sn.subVectors(n,t),Yn.subVectors(e,t),Sn.cross(Yn).dot(r)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,r){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,n,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Sn.subVectors(this.c,this.b),Yn.subVectors(this.a,this.b),Sn.cross(Yn).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Mn.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Mn.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,r,s){return Mn.getInterpolation(e,this.a,this.b,this.c,t,n,r,s)}containsPoint(e){return Mn.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Mn.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,r=this.b,s=this.c;let a,o;hr.subVectors(r,n),fr.subVectors(s,n),ll.subVectors(e,n);const l=hr.dot(ll),c=fr.dot(ll);if(l<=0&&c<=0)return t.copy(n);cl.subVectors(e,r);const h=hr.dot(cl),u=fr.dot(cl);if(h>=0&&u<=h)return t.copy(r);const f=l*u-h*c;if(f<=0&&l>=0&&h<=0)return a=l/(l-h),t.copy(n).addScaledVector(hr,a);ul.subVectors(e,s);const d=hr.dot(ul),_=fr.dot(ul);if(_>=0&&d<=_)return t.copy(s);const b=d*c-l*_;if(b<=0&&c>=0&&_<=0)return o=c/(c-_),t.copy(n).addScaledVector(fr,o);const g=h*_-d*u;if(g<=0&&u-h>=0&&d-_>=0)return Hu.subVectors(s,r),o=(u-h)/(u-h+(d-_)),t.copy(r).addScaledVector(Hu,o);const m=1/(g+b+f);return a=b*m,o=f*m,t.copy(n).addScaledVector(hr,a).addScaledVector(fr,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const Vu={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},hi={h:0,s:0,l:0},Ws={h:0,s:0,l:0};function pl(i,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?i+(e-i)*6*t:t<1/2?e:t<2/3?i+(e-i)*6*(2/3-t):i}class Ze{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Bt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,lt.colorSpaceToWorking(this,t),this}setRGB(e,t,n,r=lt.workingColorSpace){return this.r=e,this.g=t,this.b=n,lt.colorSpaceToWorking(this,r),this}setHSL(e,t,n,r=lt.workingColorSpace){if(e=qo(e,1),t=it(t,0,1),n=it(n,0,1),t===0)this.r=this.g=this.b=n;else{const s=n<=.5?n*(1+t):n+t-n*t,a=2*n-s;this.r=pl(a,s,e+1/3),this.g=pl(a,s,e),this.b=pl(a,s,e-1/3)}return lt.colorSpaceToWorking(this,r),this}setStyle(e,t=Bt){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const a=r[1],o=r[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=r[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Bt){const n=Vu[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Xn(e.r),this.g=Xn(e.g),this.b=Xn(e.b),this}copyLinearToSRGB(e){return this.r=nr(e.r),this.g=nr(e.g),this.b=nr(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Bt){return lt.workingToColorSpace($t.copy(this),e),Math.round(it($t.r*255,0,255))*65536+Math.round(it($t.g*255,0,255))*256+Math.round(it($t.b*255,0,255))}getHexString(e=Bt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=lt.workingColorSpace){lt.workingToColorSpace($t.copy(this),t);const n=$t.r,r=$t.g,s=$t.b,a=Math.max(n,r,s),o=Math.min(n,r,s);let l,c;const h=(o+a)/2;if(o===a)l=0,c=0;else{const u=a-o;switch(c=h<=.5?u/(a+o):u/(2-a-o),a){case n:l=(r-s)/u+(r<s?6:0);break;case r:l=(s-n)/u+2;break;case s:l=(n-r)/u+4;break}l/=6}return e.h=l,e.s=c,e.l=h,e}getRGB(e,t=lt.workingColorSpace){return lt.workingToColorSpace($t.copy(this),t),e.r=$t.r,e.g=$t.g,e.b=$t.b,e}getStyle(e=Bt){lt.workingToColorSpace($t.copy(this),e);const t=$t.r,n=$t.g,r=$t.b;return e!==Bt?`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${r.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(n*255)},${Math.round(r*255)})`}offsetHSL(e,t,n){return this.getHSL(hi),this.setHSL(hi.h+e,hi.s+t,hi.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(hi),e.getHSL(Ws);const n=Kr(hi.h,Ws.h,t),r=Kr(hi.s,Ws.s,t),s=Kr(hi.l,Ws.l,t);return this.setHSL(n,r,s),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const t=this.r,n=this.g,r=this.b,s=e.elements;return this.r=s[0]*t+s[3]*n+s[6]*r,this.g=s[1]*t+s[4]*n+s[7]*r,this.b=s[2]*t+s[5]*n+s[8]*r,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const $t=new Ze;Ze.NAMES=Vu;let zm=0;class Nn extends Ei{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:zm++}),this.uuid=vn(),this.name="",this.type="Material",this.blending=Yi,this.side=Gn,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=Ja,this.blendDst=Qa,this.blendEquation=Si,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new Ze(0,0,0),this.blendAlpha=0,this.depthFunc=Ki,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Mu,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=er,this.stencilZFail=er,this.stencilZPass=er,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(n):r&&r.isVector3&&n&&n.isVector3?r.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(n.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(n.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Yi&&(n.blending=this.blending),this.side!==Gn&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==Ja&&(n.blendSrc=this.blendSrc),this.blendDst!==Qa&&(n.blendDst=this.blendDst),this.blendEquation!==Si&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==Ki&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Mu&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==er&&(n.stencilFail=this.stencilFail),this.stencilZFail!==er&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==er&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function r(s){const a=[];for(const o in s){const l=s[o];delete l.metadata,a.push(l)}return a}if(t){const s=r(e.textures),a=r(e.images);s.length>0&&(n.textures=s),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const r=t.length;n=new Array(r);for(let s=0;s!==r;++s)n[s]=t[s].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class Ri extends Nn{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ze(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Un,this.combine=au,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Lt=new $,Xs=new Ye;let Hm=0;class Zt{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:Hm++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=jo,this.updateRanges=[],this.gpuType=_n,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let r=0,s=this.itemSize;r<s;r++)this.array[e+r]=t.array[n+r];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(this.itemSize===2)for(let t=0,n=this.count;t<n;t++)Xs.fromBufferAttribute(this,t),Xs.applyMatrix3(e),this.setXY(t,Xs.x,Xs.y);else if(this.itemSize===3)for(let t=0,n=this.count;t<n;t++)Lt.fromBufferAttribute(this,t),Lt.applyMatrix3(e),this.setXYZ(t,Lt.x,Lt.y,Lt.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)Lt.fromBufferAttribute(this,t),Lt.applyMatrix4(e),this.setXYZ(t,Lt.x,Lt.y,Lt.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Lt.fromBufferAttribute(this,t),Lt.applyNormalMatrix(e),this.setXYZ(t,Lt.x,Lt.y,Lt.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Lt.fromBufferAttribute(this,t),Lt.transformDirection(e),this.setXYZ(t,Lt.x,Lt.y,Lt.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let n=this.array[e*this.itemSize+t];return this.normalized&&(n=yn(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=vt(n,this.array)),this.array[e*this.itemSize+t]=n,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=yn(t,this.array)),t}setX(e,t){return this.normalized&&(t=vt(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=yn(t,this.array)),t}setY(e,t){return this.normalized&&(t=vt(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=yn(t,this.array)),t}setZ(e,t){return this.normalized&&(t=vt(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=yn(t,this.array)),t}setW(e,t){return this.normalized&&(t=vt(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array)),this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,r){return e*=this.itemSize,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array),r=vt(r,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=r,this}setXYZW(e,t,n,r,s){return e*=this.itemSize,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array),r=vt(r,this.array),s=vt(s,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=r,this.array[e+3]=s,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(e.name=this.name),this.usage!==jo&&(e.usage=this.usage),e}}class Gu extends Zt{constructor(e,t,n){super(new Uint16Array(e),t,n)}}class Wu extends Zt{constructor(e,t,n){super(new Uint32Array(e),t,n)}}class dn extends Zt{constructor(e,t,n){super(new Float32Array(e),t,n)}}let Vm=0;const pn=new et,ml=new At,dr=new $,un=new Ln,ns=new Ln,Ht=new $;class En extends Ei{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Vm++}),this.uuid=vn(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(Cu(e)?Wu:Gu)(e,1):this.index=e,this}setIndirect(e){return this.indirect=e,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);const n=this.attributes.normal;if(n!==void 0){const s=new Qe().getNormalMatrix(e);n.applyNormalMatrix(s),n.needsUpdate=!0}const r=this.attributes.tangent;return r!==void 0&&(r.transformDirection(e),r.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return pn.makeRotationFromQuaternion(e),this.applyMatrix4(pn),this}rotateX(e){return pn.makeRotationX(e),this.applyMatrix4(pn),this}rotateY(e){return pn.makeRotationY(e),this.applyMatrix4(pn),this}rotateZ(e){return pn.makeRotationZ(e),this.applyMatrix4(pn),this}translate(e,t,n){return pn.makeTranslation(e,t,n),this.applyMatrix4(pn),this}scale(e,t,n){return pn.makeScale(e,t,n),this.applyMatrix4(pn),this}lookAt(e){return ml.lookAt(e),ml.updateMatrix(),this.applyMatrix4(ml.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(dr).negate(),this.translate(dr.x,dr.y,dr.z),this}setFromPoints(e){const t=this.getAttribute("position");if(t===void 0){const n=[];for(let r=0,s=e.length;r<s;r++){const a=e[r];n.push(a.x,a.y,a.z||0)}this.setAttribute("position",new dn(n,3))}else{const n=Math.min(e.length,t.count);for(let r=0;r<n;r++){const s=e[r];t.setXYZ(r,s.x,s.y,s.z||0)}e.length>t.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Ln);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new $(-1/0,-1/0,-1/0),new $(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,r=t.length;n<r;n++){const s=t[n];un.setFromBufferAttribute(s),this.morphTargetsRelative?(Ht.addVectors(this.boundingBox.min,un.min),this.boundingBox.expandByPoint(Ht),Ht.addVectors(this.boundingBox.max,un.max),this.boundingBox.expandByPoint(Ht)):(this.boundingBox.expandByPoint(un.min),this.boundingBox.expandByPoint(un.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new In);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new $,1/0);return}if(e){const n=this.boundingSphere.center;if(un.setFromBufferAttribute(e),t)for(let s=0,a=t.length;s<a;s++){const o=t[s];ns.setFromBufferAttribute(o),this.morphTargetsRelative?(Ht.addVectors(un.min,ns.min),un.expandByPoint(Ht),Ht.addVectors(un.max,ns.max),un.expandByPoint(Ht)):(un.expandByPoint(ns.min),un.expandByPoint(ns.max))}un.getCenter(n);let r=0;for(let s=0,a=e.count;s<a;s++)Ht.fromBufferAttribute(e,s),r=Math.max(r,n.distanceToSquared(Ht));if(t)for(let s=0,a=t.length;s<a;s++){const o=t[s],l=this.morphTargetsRelative;for(let c=0,h=o.count;c<h;c++)Ht.fromBufferAttribute(o,c),l&&(dr.fromBufferAttribute(e,c),Ht.add(dr)),r=Math.max(r,n.distanceToSquared(Ht))}this.boundingSphere.radius=Math.sqrt(r),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(e===null||t.position===void 0||t.normal===void 0||t.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const n=t.position,r=t.normal,s=t.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new Zt(new Float32Array(4*n.count),4));const a=this.getAttribute("tangent"),o=[],l=[];for(let B=0;B<n.count;B++)o[B]=new $,l[B]=new $;const c=new $,h=new $,u=new $,f=new Ye,d=new Ye,_=new Ye,b=new $,g=new $;function m(B,C,D){c.fromBufferAttribute(n,B),h.fromBufferAttribute(n,C),u.fromBufferAttribute(n,D),f.fromBufferAttribute(s,B),d.fromBufferAttribute(s,C),_.fromBufferAttribute(s,D),h.sub(c),u.sub(c),d.sub(f),_.sub(f);const V=1/(d.x*_.y-_.x*d.y);isFinite(V)&&(b.copy(h).multiplyScalar(_.y).addScaledVector(u,-d.y).multiplyScalar(V),g.copy(u).multiplyScalar(d.x).addScaledVector(h,-_.x).multiplyScalar(V),o[B].add(b),o[C].add(b),o[D].add(b),l[B].add(g),l[C].add(g),l[D].add(g))}let S=this.groups;S.length===0&&(S=[{start:0,count:e.count}]);for(let B=0,C=S.length;B<C;++B){const D=S[B],V=D.start,K=D.count;for(let J=V,se=V+K;J<se;J+=3)m(e.getX(J+0),e.getX(J+1),e.getX(J+2))}const y=new $,M=new $,T=new $,R=new $;function k(B){T.fromBufferAttribute(r,B),R.copy(T);const C=o[B];y.copy(C),y.sub(T.multiplyScalar(T.dot(C))).normalize(),M.crossVectors(R,C);const V=M.dot(l[B])<0?-1:1;a.setXYZW(B,y.x,y.y,y.z,V)}for(let B=0,C=S.length;B<C;++B){const D=S[B],V=D.start,K=D.count;for(let J=V,se=V+K;J<se;J+=3)k(e.getX(J+0)),k(e.getX(J+1)),k(e.getX(J+2))}}computeVertexNormals(){const e=this.index,t=this.getAttribute("position");if(t!==void 0){let n=this.getAttribute("normal");if(n===void 0)n=new Zt(new Float32Array(t.count*3),3),this.setAttribute("normal",n);else for(let f=0,d=n.count;f<d;f++)n.setXYZ(f,0,0,0);const r=new $,s=new $,a=new $,o=new $,l=new $,c=new $,h=new $,u=new $;if(e)for(let f=0,d=e.count;f<d;f+=3){const _=e.getX(f+0),b=e.getX(f+1),g=e.getX(f+2);r.fromBufferAttribute(t,_),s.fromBufferAttribute(t,b),a.fromBufferAttribute(t,g),h.subVectors(a,s),u.subVectors(r,s),h.cross(u),o.fromBufferAttribute(n,_),l.fromBufferAttribute(n,b),c.fromBufferAttribute(n,g),o.add(h),l.add(h),c.add(h),n.setXYZ(_,o.x,o.y,o.z),n.setXYZ(b,l.x,l.y,l.z),n.setXYZ(g,c.x,c.y,c.z)}else for(let f=0,d=t.count;f<d;f+=3)r.fromBufferAttribute(t,f+0),s.fromBufferAttribute(t,f+1),a.fromBufferAttribute(t,f+2),h.subVectors(a,s),u.subVectors(r,s),h.cross(u),n.setXYZ(f+0,h.x,h.y,h.z),n.setXYZ(f+1,h.x,h.y,h.z),n.setXYZ(f+2,h.x,h.y,h.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){const e=this.attributes.normal;for(let t=0,n=e.count;t<n;t++)Ht.fromBufferAttribute(e,t),Ht.normalize(),e.setXYZ(t,Ht.x,Ht.y,Ht.z)}toNonIndexed(){function e(o,l){const c=o.array,h=o.itemSize,u=o.normalized,f=new c.constructor(l.length*h);let d=0,_=0;for(let b=0,g=l.length;b<g;b++){o.isInterleavedBufferAttribute?d=l[b]*o.data.stride+o.offset:d=l[b]*h;for(let m=0;m<h;m++)f[_++]=c[d++]}return new Zt(f,h,u)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new En,n=this.index.array,r=this.attributes;for(const o in r){const l=r[o],c=e(l,n);t.setAttribute(o,c)}const s=this.morphAttributes;for(const o in s){const l=[],c=s[o];for(let h=0,u=c.length;h<u;h++){const f=c[h],d=e(f,n);l.push(d)}t.morphAttributes[o]=l}t.morphTargetsRelative=this.morphTargetsRelative;const a=this.groups;for(let o=0,l=a.length;o<l;o++){const c=a[o];t.addGroup(c.start,c.count,c.materialIndex)}return t}toJSON(){const e={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const l in n){const c=n[l];e.data.attributes[l]=c.toJSON(e.data)}const r={};let s=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],h=[];for(let u=0,f=c.length;u<f;u++){const d=c[u];h.push(d.toJSON(e.data))}h.length>0&&(r[l]=h,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone());const r=e.attributes;for(const c in r){const h=r[c];this.setAttribute(c,h.clone(t))}const s=e.morphAttributes;for(const c in s){const h=[],u=s[c];for(let f=0,d=u.length;f<d;f++)h.push(u[f].clone(t));this.morphAttributes[c]=h}this.morphTargetsRelative=e.morphTargetsRelative;const a=e.groups;for(let c=0,h=a.length;c<h;c++){const u=a[c];this.addGroup(u.start,u.count,u.materialIndex)}const o=e.boundingBox;o!==null&&(this.boundingBox=o.clone());const l=e.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const Xu=new et,Ci=new or,$s=new In,$u=new $,js=new $,qs=new $,Ys=new $,gl=new $,Ks=new $,ju=new $,Zs=new $;class Jt extends At{constructor(e=new En,t=new Ri){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s<a;s++){const o=r[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}getVertexPosition(e,t){const n=this.geometry,r=n.attributes.position,s=n.morphAttributes.position,a=n.morphTargetsRelative;t.fromBufferAttribute(r,e);const o=this.morphTargetInfluences;if(s&&o){Ks.set(0,0,0);for(let l=0,c=s.length;l<c;l++){const h=o[l],u=s[l];h!==0&&(gl.fromBufferAttribute(u,e),a?Ks.addScaledVector(gl,h):Ks.addScaledVector(gl.sub(t),h))}t.add(Ks)}return t}raycast(e,t){const n=this.geometry,r=this.material,s=this.matrixWorld;r!==void 0&&(n.boundingSphere===null&&n.computeBoundingSphere(),$s.copy(n.boundingSphere),$s.applyMatrix4(s),Ci.copy(e.ray).recast(e.near),!($s.containsPoint(Ci.origin)===!1&&(Ci.intersectSphere($s,$u)===null||Ci.origin.distanceToSquared($u)>(e.far-e.near)**2))&&(Xu.copy(s).invert(),Ci.copy(e.ray).applyMatrix4(Xu),!(n.boundingBox!==null&&Ci.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Ci)))}_computeIntersections(e,t,n){let r;const s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,c=s.attributes.uv,h=s.attributes.uv1,u=s.attributes.normal,f=s.groups,d=s.drawRange;if(o!==null)if(Array.isArray(a))for(let _=0,b=f.length;_<b;_++){const g=f[_],m=a[g.materialIndex],S=Math.max(g.start,d.start),y=Math.min(o.count,Math.min(g.start+g.count,d.start+d.count));for(let M=S,T=y;M<T;M+=3){const R=o.getX(M),k=o.getX(M+1),B=o.getX(M+2);r=Js(this,m,e,n,c,h,u,R,k,B),r&&(r.faceIndex=Math.floor(M/3),r.face.materialIndex=g.materialIndex,t.push(r))}}else{const _=Math.max(0,d.start),b=Math.min(o.count,d.start+d.count);for(let g=_,m=b;g<m;g+=3){const S=o.getX(g),y=o.getX(g+1),M=o.getX(g+2);r=Js(this,a,e,n,c,h,u,S,y,M),r&&(r.faceIndex=Math.floor(g/3),t.push(r))}}else if(l!==void 0)if(Array.isArray(a))for(let _=0,b=f.length;_<b;_++){const g=f[_],m=a[g.materialIndex],S=Math.max(g.start,d.start),y=Math.min(l.count,Math.min(g.start+g.count,d.start+d.count));for(let M=S,T=y;M<T;M+=3){const R=M,k=M+1,B=M+2;r=Js(this,m,e,n,c,h,u,R,k,B),r&&(r.faceIndex=Math.floor(M/3),r.face.materialIndex=g.materialIndex,t.push(r))}}else{const _=Math.max(0,d.start),b=Math.min(l.count,d.start+d.count);for(let g=_,m=b;g<m;g+=3){const S=g,y=g+1,M=g+2;r=Js(this,a,e,n,c,h,u,S,y,M),r&&(r.faceIndex=Math.floor(g/3),t.push(r))}}}}function Gm(i,e,t,n,r,s,a,o){let l;if(e.side===sn?l=n.intersectTriangle(a,s,r,!0,o):l=n.intersectTriangle(r,s,a,e.side===Gn,o),l===null)return null;Zs.copy(o),Zs.applyMatrix4(i.matrixWorld);const c=t.ray.origin.distanceTo(Zs);return c<t.near||c>t.far?null:{distance:c,point:Zs.clone(),object:i}}function Js(i,e,t,n,r,s,a,o,l,c){i.getVertexPosition(o,js),i.getVertexPosition(l,qs),i.getVertexPosition(c,Ys);const h=Gm(i,e,t,n,js,qs,Ys,ju);if(h){const u=new $;Mn.getBarycoord(ju,js,qs,Ys,u),r&&(h.uv=Mn.getInterpolatedAttribute(r,o,l,c,u,new Ye)),s&&(h.uv1=Mn.getInterpolatedAttribute(s,o,l,c,u,new Ye)),a&&(h.normal=Mn.getInterpolatedAttribute(a,o,l,c,u,new $),h.normal.dot(n.direction)>0&&h.normal.multiplyScalar(-1));const f={a:o,b:l,c,normal:new $,materialIndex:0};Mn.getNormal(js,qs,Ys,f.normal),h.face=f,h.barycoord=u}return h}class pr extends En{constructor(e=1,t=1,n=1,r=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:r,heightSegments:s,depthSegments:a};const o=this;r=Math.floor(r),s=Math.floor(s),a=Math.floor(a);const l=[],c=[],h=[],u=[];let f=0,d=0;_("z","y","x",-1,-1,n,t,e,a,s,0),_("z","y","x",1,-1,n,t,-e,a,s,1),_("x","z","y",1,1,e,n,t,r,a,2),_("x","z","y",1,-1,e,n,-t,r,a,3),_("x","y","z",1,-1,e,t,n,r,s,4),_("x","y","z",-1,-1,e,t,-n,r,s,5),this.setIndex(l),this.setAttribute("position",new dn(c,3)),this.setAttribute("normal",new dn(h,3)),this.setAttribute("uv",new dn(u,2));function _(b,g,m,S,y,M,T,R,k,B,C){const D=M/k,V=T/B,K=M/2,J=T/2,se=R/2,he=k+1,Q=B+1;let de=0,ne=0;const ue=new $;for(let Te=0;Te<Q;Te++){const ke=Te*V-J;for(let O=0;O<he;O++){const H=O*D-K;ue[b]=H*S,ue[g]=ke*y,ue[m]=se,c.push(ue.x,ue.y,ue.z),ue[b]=0,ue[g]=0,ue[m]=R>0?1:-1,h.push(ue.x,ue.y,ue.z),u.push(O/k),u.push(1-Te/B),de+=1}}for(let Te=0;Te<B;Te++)for(let ke=0;ke<k;ke++){const O=f+ke+he*Te,H=f+ke+he*(Te+1),we=f+(ke+1)+he*(Te+1),Be=f+(ke+1)+he*Te;l.push(O,H,Be),l.push(H,we,Be),ne+=6}o.addGroup(d,ne,C),d+=ne,f+=de}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new pr(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function mr(i){const e={};for(const t in i){e[t]={};for(const n in i[t]){const r=i[t][n];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture||r.isQuaternion)?r.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][n]=null):e[t][n]=r.clone():Array.isArray(r)?e[t][n]=r.slice():e[t][n]=r}}return e}function Qt(i){const e={};for(let t=0;t<i.length;t++){const n=mr(i[t]);for(const r in n)e[r]=n[r]}return e}function Wm(i){const e=[];for(let t=0;t<i.length;t++)e.push(i[t].clone());return e}function qu(i){const e=i.getRenderTarget();return e===null?i.outputColorSpace:e.isXRRenderTarget===!0?e.texture.colorSpace:lt.workingColorSpace}const Xm={clone:mr,merge:Qt};var $m=`void main() {
|
|
38
|
+
*/const Ja="180",ji={ROTATE:0,DOLLY:1,PAN:2},qi={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},Mp=0,nu=1,Ep=2,iu=1,Tp=2,Vn=3,Gn=0,sn=1,Rn=2,ii=0,Yi=1,ru=2,su=3,au=4,wp=5,Si=100,Ap=101,Rp=102,Cp=103,Pp=104,Dp=200,Lp=201,Ip=202,Up=203,Qa=204,eo=205,Np=206,Op=207,Fp=208,kp=209,Bp=210,zp=211,Hp=212,Vp=213,Gp=214,to=0,no=1,io=2,Ki=3,ro=4,so=5,ao=6,oo=7,ou=0,Wp=1,Xp=2,ri=0,$p=1,jp=2,qp=3,lu=4,Yp=5,Kp=6,Zp=7,cu="attached",Jp="detached",uu=300,Zi=301,Ji=302,lo=303,co=304,Rs=306,Qi=1e3,si=1001,Cs=1002,Yt=1003,hu=1004,Hr=1005,ln=1006,Ps=1007,Wn=1008,Cn=1009,fu=1010,du=1011,Vr=1012,uo=1013,Mi=1014,_n=1015,Gr=1016,ho=1017,fo=1018,Wr=1020,pu=35902,mu=35899,gu=1021,_u=1022,fn=1023,Xr=1026,$r=1027,po=1028,mo=1029,vu=1030,go=1031,_o=1033,Ds=33776,Ls=33777,Is=33778,Us=33779,vo=35840,yo=35841,xo=35842,bo=35843,So=36196,Mo=37492,Eo=37496,To=37808,wo=37809,Ao=37810,Ro=37811,Co=37812,Po=37813,Do=37814,Lo=37815,Io=37816,Uo=37817,No=37818,Oo=37819,Fo=37820,ko=37821,Bo=36492,zo=36494,Ho=36495,Vo=36283,Go=36284,Wo=36285,Xo=36286,jr=2300,qr=2301,$o=2302,yu=2400,xu=2401,bu=2402,Qp=2500,em=0,Su=1,jo=2,tm=3200,nm=3201,Mu=0,im=1,ai="",Bt="srgb",Kt="srgb-linear",Ns="linear",xt="srgb",er=7680,Eu=519,rm=512,sm=513,am=514,Tu=515,om=516,lm=517,cm=518,um=519,qo=35044,wu="300 es",Pn=2e3,Os=2001;class Ei{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const r=n[e];if(r!==void 0){const s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const r=n.slice(0);for(let s=0,a=r.length;s<a;s++)r[s].call(this,e);e.target=null}}}const Xt=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Au=1234567;const Yr=Math.PI/180,tr=180/Math.PI;function vn(){const i=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(Xt[i&255]+Xt[i>>8&255]+Xt[i>>16&255]+Xt[i>>24&255]+"-"+Xt[e&255]+Xt[e>>8&255]+"-"+Xt[e>>16&15|64]+Xt[e>>24&255]+"-"+Xt[t&63|128]+Xt[t>>8&255]+"-"+Xt[t>>16&255]+Xt[t>>24&255]+Xt[n&255]+Xt[n>>8&255]+Xt[n>>16&255]+Xt[n>>24&255]).toLowerCase()}function it(i,e,t){return Math.max(e,Math.min(t,i))}function Yo(i,e){return(i%e+e)%e}function hm(i,e,t,n,r){return n+(i-e)*(r-n)/(t-e)}function fm(i,e,t){return i!==e?(t-i)/(e-i):0}function Kr(i,e,t){return(1-t)*i+t*e}function dm(i,e,t,n){return Kr(i,e,1-Math.exp(-t*n))}function pm(i,e=1){return e-Math.abs(Yo(i,e*2)-e)}function mm(i,e,t){return i<=e?0:i>=t?1:(i=(i-e)/(t-e),i*i*(3-2*i))}function gm(i,e,t){return i<=e?0:i>=t?1:(i=(i-e)/(t-e),i*i*i*(i*(i*6-15)+10))}function _m(i,e){return i+Math.floor(Math.random()*(e-i+1))}function vm(i,e){return i+Math.random()*(e-i)}function ym(i){return i*(.5-Math.random())}function xm(i){i!==void 0&&(Au=i);let e=Au+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function bm(i){return i*Yr}function Sm(i){return i*tr}function Mm(i){return(i&i-1)===0&&i!==0}function Em(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function Tm(i){return Math.pow(2,Math.floor(Math.log(i)/Math.LN2))}function wm(i,e,t,n,r){const s=Math.cos,a=Math.sin,o=s(t/2),l=a(t/2),c=s((e+n)/2),h=a((e+n)/2),u=s((e-n)/2),f=a((e-n)/2),d=s((n-e)/2),_=a((n-e)/2);switch(r){case"XYX":i.set(o*h,l*u,l*f,o*c);break;case"YZY":i.set(l*f,o*h,l*u,o*c);break;case"ZXZ":i.set(l*u,l*f,o*h,o*c);break;case"XZX":i.set(o*h,l*_,l*d,o*c);break;case"YXY":i.set(l*d,o*h,l*_,o*c);break;case"ZYZ":i.set(l*_,l*d,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function yn(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return i/4294967295;case Uint16Array:return i/65535;case Uint8Array:return i/255;case Int32Array:return Math.max(i/2147483647,-1);case Int16Array:return Math.max(i/32767,-1);case Int8Array:return Math.max(i/127,-1);default:throw new Error("Invalid component type.")}}function vt(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return Math.round(i*4294967295);case Uint16Array:return Math.round(i*65535);case Uint8Array:return Math.round(i*255);case Int32Array:return Math.round(i*2147483647);case Int16Array:return Math.round(i*32767);case Int8Array:return Math.round(i*127);default:throw new Error("Invalid component type.")}}const Ru={DEG2RAD:Yr,RAD2DEG:tr,generateUUID:vn,clamp:it,euclideanModulo:Yo,mapLinear:hm,inverseLerp:fm,lerp:Kr,damp:dm,pingpong:pm,smoothstep:mm,smootherstep:gm,randInt:_m,randFloat:vm,randFloatSpread:ym,seededRandom:xm,degToRad:bm,radToDeg:Sm,isPowerOfTwo:Mm,ceilPowerOfTwo:Em,floorPowerOfTwo:Tm,setQuaternionFromProperEuler:wm,normalize:vt,denormalize:yn};class Ye{constructor(e=0,t=0){Ye.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6],this.y=r[1]*t+r[4]*n+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=it(this.x,e.x,t.x),this.y=it(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=it(this.x,e,t),this.y=it(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(it(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(it(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),r=Math.sin(t),s=this.x-e.x,a=this.y-e.y;return this.x=s*n-a*r+e.x,this.y=s*r+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Dn{constructor(e=0,t=0,n=0,r=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=r}static slerpFlat(e,t,n,r,s,a,o){let l=n[r+0],c=n[r+1],h=n[r+2],u=n[r+3];const f=s[a+0],d=s[a+1],_=s[a+2],b=s[a+3];if(o===0){e[t+0]=l,e[t+1]=c,e[t+2]=h,e[t+3]=u;return}if(o===1){e[t+0]=f,e[t+1]=d,e[t+2]=_,e[t+3]=b;return}if(u!==b||l!==f||c!==d||h!==_){let g=1-o;const m=l*f+c*d+h*_+u*b,S=m>=0?1:-1,y=1-m*m;if(y>Number.EPSILON){const T=Math.sqrt(y),R=Math.atan2(T,m*S);g=Math.sin(g*R)/T,o=Math.sin(o*R)/T}const M=o*S;if(l=l*g+f*M,c=c*g+d*M,h=h*g+_*M,u=u*g+b*M,g===1-o){const T=1/Math.sqrt(l*l+c*c+h*h+u*u);l*=T,c*=T,h*=T,u*=T}}e[t]=l,e[t+1]=c,e[t+2]=h,e[t+3]=u}static multiplyQuaternionsFlat(e,t,n,r,s,a){const o=n[r],l=n[r+1],c=n[r+2],h=n[r+3],u=s[a],f=s[a+1],d=s[a+2],_=s[a+3];return e[t]=o*_+h*u+l*d-c*f,e[t+1]=l*_+h*f+c*u-o*d,e[t+2]=c*_+h*d+o*f-l*u,e[t+3]=h*_-o*u-l*f-c*d,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,r){return this._x=e,this._y=t,this._z=n,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,r=e._y,s=e._z,a=e._order,o=Math.cos,l=Math.sin,c=o(n/2),h=o(r/2),u=o(s/2),f=l(n/2),d=l(r/2),_=l(s/2);switch(a){case"XYZ":this._x=f*h*u+c*d*_,this._y=c*d*u-f*h*_,this._z=c*h*_+f*d*u,this._w=c*h*u-f*d*_;break;case"YXZ":this._x=f*h*u+c*d*_,this._y=c*d*u-f*h*_,this._z=c*h*_-f*d*u,this._w=c*h*u+f*d*_;break;case"ZXY":this._x=f*h*u-c*d*_,this._y=c*d*u+f*h*_,this._z=c*h*_+f*d*u,this._w=c*h*u-f*d*_;break;case"ZYX":this._x=f*h*u-c*d*_,this._y=c*d*u+f*h*_,this._z=c*h*_-f*d*u,this._w=c*h*u+f*d*_;break;case"YZX":this._x=f*h*u+c*d*_,this._y=c*d*u+f*h*_,this._z=c*h*_-f*d*u,this._w=c*h*u-f*d*_;break;case"XZY":this._x=f*h*u-c*d*_,this._y=c*d*u-f*h*_,this._z=c*h*_+f*d*u,this._w=c*h*u+f*d*_;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,r=Math.sin(n);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],r=t[4],s=t[8],a=t[1],o=t[5],l=t[9],c=t[2],h=t[6],u=t[10],f=n+o+u;if(f>0){const d=.5/Math.sqrt(f+1);this._w=.25/d,this._x=(h-l)*d,this._y=(s-c)*d,this._z=(a-r)*d}else if(n>o&&n>u){const d=2*Math.sqrt(1+n-o-u);this._w=(h-l)/d,this._x=.25*d,this._y=(r+a)/d,this._z=(s+c)/d}else if(o>u){const d=2*Math.sqrt(1+o-n-u);this._w=(s-c)/d,this._x=(r+a)/d,this._y=.25*d,this._z=(l+h)/d}else{const d=2*Math.sqrt(1+u-n-o);this._w=(a-r)/d,this._x=(s+c)/d,this._y=(l+h)/d,this._z=.25*d}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<1e-8?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(it(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const r=Math.min(1,t/n);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,r=e._y,s=e._z,a=e._w,o=t._x,l=t._y,c=t._z,h=t._w;return this._x=n*h+a*o+r*c-s*l,this._y=r*h+a*l+s*o-n*c,this._z=s*h+a*c+n*l-r*o,this._w=a*h-n*o-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,r=this._y,s=this._z,a=this._w;let o=a*e._w+n*e._x+r*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=s,this;const l=1-o*o;if(l<=Number.EPSILON){const d=1-t;return this._w=d*a+t*this._w,this._x=d*n+t*this._x,this._y=d*r+t*this._y,this._z=d*s+t*this._z,this.normalize(),this}const c=Math.sqrt(l),h=Math.atan2(c,o),u=Math.sin((1-t)*h)/c,f=Math.sin(t*h)/c;return this._w=a*u+this._w*f,this._x=n*u+this._x*f,this._y=r*u+this._y*f,this._z=s*u+this._z*f,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class ${constructor(e=0,t=0,n=0){$.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(Cu.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Cu.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*r,this.y=s[1]*t+s[4]*n+s[7]*r,this.z=s[2]*t+s[5]*n+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=e.elements,a=1/(s[3]*t+s[7]*n+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*r+s[12])*a,this.y=(s[1]*t+s[5]*n+s[9]*r+s[13])*a,this.z=(s[2]*t+s[6]*n+s[10]*r+s[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,r=this.z,s=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*r-o*n),h=2*(o*t-s*r),u=2*(s*n-a*t);return this.x=t+l*c+a*u-o*h,this.y=n+l*h+o*c-s*u,this.z=r+l*u+s*h-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*r,this.y=s[1]*t+s[5]*n+s[9]*r,this.z=s[2]*t+s[6]*n+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=it(this.x,e.x,t.x),this.y=it(this.y,e.y,t.y),this.z=it(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=it(this.x,e,t),this.y=it(this.y,e,t),this.z=it(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(it(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,r=e.y,s=e.z,a=t.x,o=t.y,l=t.z;return this.x=r*l-s*o,this.y=s*a-n*l,this.z=n*o-r*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Ko.copy(this).projectOnVector(e),this.sub(Ko)}reflect(e){return this.sub(Ko.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(it(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,r=this.z-e.z;return t*t+n*n+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const r=Math.sin(t)*e;return this.x=r*Math.sin(n),this.y=Math.cos(t)*e,this.z=r*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Ko=new $,Cu=new Dn;class Qe{constructor(e,t,n,r,s,a,o,l,c){Qe.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,r,s,a,o,l,c)}set(e,t,n,r,s,a,o,l,c){const h=this.elements;return h[0]=e,h[1]=r,h[2]=o,h[3]=t,h[4]=s,h[5]=l,h[6]=n,h[7]=a,h[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,a=n[0],o=n[3],l=n[6],c=n[1],h=n[4],u=n[7],f=n[2],d=n[5],_=n[8],b=r[0],g=r[3],m=r[6],S=r[1],y=r[4],M=r[7],T=r[2],R=r[5],k=r[8];return s[0]=a*b+o*S+l*T,s[3]=a*g+o*y+l*R,s[6]=a*m+o*M+l*k,s[1]=c*b+h*S+u*T,s[4]=c*g+h*y+u*R,s[7]=c*m+h*M+u*k,s[2]=f*b+d*S+_*T,s[5]=f*g+d*y+_*R,s[8]=f*m+d*M+_*k,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8];return t*a*h-t*o*c-n*s*h+n*o*l+r*s*c-r*a*l}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],u=h*a-o*c,f=o*l-h*s,d=c*s-a*l,_=t*u+n*f+r*d;if(_===0)return this.set(0,0,0,0,0,0,0,0,0);const b=1/_;return e[0]=u*b,e[1]=(r*c-h*n)*b,e[2]=(o*n-r*a)*b,e[3]=f*b,e[4]=(h*t-r*l)*b,e[5]=(r*s-o*t)*b,e[6]=d*b,e[7]=(n*l-c*t)*b,e[8]=(a*t-n*s)*b,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,r,s,a,o){const l=Math.cos(s),c=Math.sin(s);return this.set(n*l,n*c,-n*(l*a+c*o)+a+e,-r*c,r*l,-r*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Zo.makeScale(e,t)),this}rotate(e){return this.premultiply(Zo.makeRotation(-e)),this}translate(e,t){return this.premultiply(Zo.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<9;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Zo=new Qe;function Pu(i){for(let e=i.length-1;e>=0;--e)if(i[e]>=65535)return!0;return!1}function Zr(i){return document.createElementNS("http://www.w3.org/1999/xhtml",i)}function Am(){const i=Zr("canvas");return i.style.display="block",i}const Du={};function Jr(i){i in Du||(Du[i]=!0,console.warn(i))}function Rm(i,e,t){return new Promise(function(n,r){function s(){switch(i.clientWaitSync(e,i.SYNC_FLUSH_COMMANDS_BIT,0)){case i.WAIT_FAILED:r();break;case i.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:n()}}setTimeout(s,t)})}const Lu=new Qe().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),Iu=new Qe().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Cm(){const i={enabled:!0,workingColorSpace:Kt,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===xt&&(r.r=Xn(r.r),r.g=Xn(r.g),r.b=Xn(r.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(r.applyMatrix3(this.spaces[s].toXYZ),r.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===xt&&(r.r=nr(r.r),r.g=nr(r.g),r.b=nr(r.b))),r},workingToColorSpace:function(r,s){return this.convert(r,this.workingColorSpace,s)},colorSpaceToWorking:function(r,s){return this.convert(r,s,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===ai?Ns:this.spaces[r].transfer},getToneMappingMode:function(r){return this.spaces[r].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(r,s=this.workingColorSpace){return r.fromArray(this.spaces[s].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,s,a){return r.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(r,s){return Jr("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),i.workingToColorSpace(r,s)},toWorkingColorSpace:function(r,s){return Jr("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),i.colorSpaceToWorking(r,s)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return i.define({[Kt]:{primaries:e,whitePoint:n,transfer:Ns,toXYZ:Lu,fromXYZ:Iu,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Bt},outputColorSpaceConfig:{drawingBufferColorSpace:Bt}},[Bt]:{primaries:e,whitePoint:n,transfer:xt,toXYZ:Lu,fromXYZ:Iu,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Bt}}}),i}const lt=Cm();function Xn(i){return i<.04045?i*.0773993808:Math.pow(i*.9478672986+.0521327014,2.4)}function nr(i){return i<.0031308?i*12.92:1.055*Math.pow(i,.41666)-.055}let ir;class Pm{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let n;if(e instanceof HTMLCanvasElement)n=e;else{ir===void 0&&(ir=Zr("canvas")),ir.width=e.width,ir.height=e.height;const r=ir.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),n=ir}return n.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=Zr("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const r=n.getImageData(0,0,e.width,e.height),s=r.data;for(let a=0;a<s.length;a++)s[a]=Xn(s[a]/255)*255;return n.putImageData(r,0,0),t}else if(e.data){const t=e.data.slice(0);for(let n=0;n<t.length;n++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[n]=Math.floor(Xn(t[n]/255)*255):t[n]=Xn(t[n]);return{data:t,width:e.width,height:e.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}let Dm=0;class Jo{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:Dm++}),this.uuid=vn(),this.data=e,this.dataReady=!0,this.version=0}getSize(e){const t=this.data;return typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement?e.set(t.videoWidth,t.videoHeight,0):t instanceof VideoFrame?e.set(t.displayHeight,t.displayWidth,0):t!==null?e.set(t.width,t.height,t.depth||0):e.set(0,0,0),e}set needsUpdate(e){e===!0&&this.version++}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.images[this.uuid]!==void 0)return e.images[this.uuid];const n={uuid:this.uuid,url:""},r=this.data;if(r!==null){let s;if(Array.isArray(r)){s=[];for(let a=0,o=r.length;a<o;a++)r[a].isDataTexture?s.push(Qo(r[a].image)):s.push(Qo(r[a]))}else s=Qo(r);n.url=s}return t||(e.images[this.uuid]=n),n}}function Qo(i){return typeof HTMLImageElement<"u"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&i instanceof ImageBitmap?Pm.getDataURL(i):i.data?{data:Array.from(i.data),width:i.width,height:i.height,type:i.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let Lm=0;const el=new $;class zt extends Ei{constructor(e=zt.DEFAULT_IMAGE,t=zt.DEFAULT_MAPPING,n=si,r=si,s=ln,a=Wn,o=fn,l=Cn,c=zt.DEFAULT_ANISOTROPY,h=ai){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:Lm++}),this.uuid=vn(),this.name="",this.source=new Jo(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=n,this.wrapT=r,this.magFilter=s,this.minFilter=a,this.anisotropy=c,this.format=o,this.internalFormat=null,this.type=l,this.offset=new Ye(0,0),this.repeat=new Ye(1,1),this.center=new Ye(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Qe,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=h,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(e&&e.depth&&e.depth>1),this.pmremVersion=0}get width(){return this.source.getSize(el).x}get height(){return this.source.getSize(el).y}get depth(){return this.source.getSize(el).z}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Texture.setValues(): parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Texture.setValues(): property '${t}' does not exist.`);continue}r&&n&&r.isVector2&&n.isVector2||r&&n&&r.isVector3&&n.isVector3||r&&n&&r.isMatrix3&&n.isMatrix3?r.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const n={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==uu)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Qi:e.x=e.x-Math.floor(e.x);break;case si:e.x=e.x<0?0:1;break;case Cs:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Qi:e.y=e.y-Math.floor(e.y);break;case si:e.y=e.y<0?0:1;break;case Cs:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}zt.DEFAULT_IMAGE=null,zt.DEFAULT_MAPPING=uu,zt.DEFAULT_ANISOTROPY=1;class pt{constructor(e=0,t=0,n=0,r=1){pt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,r){return this.x=e,this.y=t,this.z=n,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*r+a[12]*s,this.y=a[1]*t+a[5]*n+a[9]*r+a[13]*s,this.z=a[2]*t+a[6]*n+a[10]*r+a[14]*s,this.w=a[3]*t+a[7]*n+a[11]*r+a[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,r,s;const l=e.elements,c=l[0],h=l[4],u=l[8],f=l[1],d=l[5],_=l[9],b=l[2],g=l[6],m=l[10];if(Math.abs(h-f)<.01&&Math.abs(u-b)<.01&&Math.abs(_-g)<.01){if(Math.abs(h+f)<.1&&Math.abs(u+b)<.1&&Math.abs(_+g)<.1&&Math.abs(c+d+m-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const y=(c+1)/2,M=(d+1)/2,T=(m+1)/2,R=(h+f)/4,k=(u+b)/4,B=(_+g)/4;return y>M&&y>T?y<.01?(n=0,r=.707106781,s=.707106781):(n=Math.sqrt(y),r=R/n,s=k/n):M>T?M<.01?(n=.707106781,r=0,s=.707106781):(r=Math.sqrt(M),n=R/r,s=B/r):T<.01?(n=.707106781,r=.707106781,s=0):(s=Math.sqrt(T),n=k/s,r=B/s),this.set(n,r,s,t),this}let S=Math.sqrt((g-_)*(g-_)+(u-b)*(u-b)+(f-h)*(f-h));return Math.abs(S)<.001&&(S=1),this.x=(g-_)/S,this.y=(u-b)/S,this.z=(f-h)/S,this.w=Math.acos((c+d+m-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=it(this.x,e.x,t.x),this.y=it(this.y,e.y,t.y),this.z=it(this.z,e.z,t.z),this.w=it(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=it(this.x,e,t),this.y=it(this.y,e,t),this.z=it(this.z,e,t),this.w=it(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(it(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Im extends Ei{constructor(e=1,t=1,n={}){super(),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:ln,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},n),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=n.depth,this.scissor=new pt(0,0,e,t),this.scissorTest=!1,this.viewport=new pt(0,0,e,t);const r={width:e,height:t,depth:n.depth},s=new zt(r);this.textures=[];const a=n.count;for(let o=0;o<a;o++)this.textures[o]=s.clone(),this.textures[o].isRenderTargetTexture=!0,this.textures[o].renderTarget=this;this._setTextureOptions(n),this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.resolveDepthBuffer=n.resolveDepthBuffer,this.resolveStencilBuffer=n.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=n.depthTexture,this.samples=n.samples,this.multiview=n.multiview}_setTextureOptions(e={}){const t={minFilter:ln,generateMipmaps:!1,flipY:!1,internalFormat:null};e.mapping!==void 0&&(t.mapping=e.mapping),e.wrapS!==void 0&&(t.wrapS=e.wrapS),e.wrapT!==void 0&&(t.wrapT=e.wrapT),e.wrapR!==void 0&&(t.wrapR=e.wrapR),e.magFilter!==void 0&&(t.magFilter=e.magFilter),e.minFilter!==void 0&&(t.minFilter=e.minFilter),e.format!==void 0&&(t.format=e.format),e.type!==void 0&&(t.type=e.type),e.anisotropy!==void 0&&(t.anisotropy=e.anisotropy),e.colorSpace!==void 0&&(t.colorSpace=e.colorSpace),e.flipY!==void 0&&(t.flipY=e.flipY),e.generateMipmaps!==void 0&&(t.generateMipmaps=e.generateMipmaps),e.internalFormat!==void 0&&(t.internalFormat=e.internalFormat);for(let n=0;n<this.textures.length;n++)this.textures[n].setValues(t)}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),e!==null&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let r=0,s=this.textures.length;r<s;r++)this.textures[r].image.width=e,this.textures[r].image.height=t,this.textures[r].image.depth=n,this.textures[r].isArrayTexture=this.textures[r].image.depth>1;this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,n=e.textures.length;t<n;t++){this.textures[t]=e.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0,this.textures[t].renderTarget=this;const r=Object.assign({},e.textures[t].image);this.textures[t].source=new Jo(r)}return this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Ti extends Im{constructor(e=1,t=1,n={}){super(e,t,n),this.isWebGLRenderTarget=!0}}class Uu extends zt{constructor(e=null,t=1,n=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:r},this.magFilter=Yt,this.minFilter=Yt,this.wrapR=si,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Um extends zt{constructor(e=null,t=1,n=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:r},this.magFilter=Yt,this.minFilter=Yt,this.wrapR=si,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Ln{constructor(e=new $(1/0,1/0,1/0),t=new $(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t+=3)this.expandByPoint(xn.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,n=e.count;t<n;t++)this.expandByPoint(xn.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const n=xn.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const n=e.geometry;if(n!==void 0){const s=n.getAttribute("position");if(t===!0&&s!==void 0&&e.isInstancedMesh!==!0)for(let a=0,o=s.count;a<o;a++)e.isMesh===!0?e.getVertexPosition(a,xn):xn.fromBufferAttribute(s,a),xn.applyMatrix4(e.matrixWorld),this.expandByPoint(xn);else e.boundingBox!==void 0?(e.boundingBox===null&&e.computeBoundingBox(),Fs.copy(e.boundingBox)):(n.boundingBox===null&&n.computeBoundingBox(),Fs.copy(n.boundingBox)),Fs.applyMatrix4(e.matrixWorld),this.union(Fs)}const r=e.children;for(let s=0,a=r.length;s<a;s++)this.expandByObject(r[s],t);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,xn),xn.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Qr),ks.subVectors(this.max,Qr),rr.subVectors(e.a,Qr),sr.subVectors(e.b,Qr),ar.subVectors(e.c,Qr),oi.subVectors(sr,rr),li.subVectors(ar,sr),wi.subVectors(rr,ar);let t=[0,-oi.z,oi.y,0,-li.z,li.y,0,-wi.z,wi.y,oi.z,0,-oi.x,li.z,0,-li.x,wi.z,0,-wi.x,-oi.y,oi.x,0,-li.y,li.x,0,-wi.y,wi.x,0];return!tl(t,rr,sr,ar,ks)||(t=[1,0,0,0,1,0,0,0,1],!tl(t,rr,sr,ar,ks))?!1:(Bs.crossVectors(oi,li),t=[Bs.x,Bs.y,Bs.z],tl(t,rr,sr,ar,ks))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,xn).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(xn).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:($n[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),$n[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),$n[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),$n[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),$n[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),$n[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),$n[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),$n[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints($n),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}}const $n=[new $,new $,new $,new $,new $,new $,new $,new $],xn=new $,Fs=new Ln,rr=new $,sr=new $,ar=new $,oi=new $,li=new $,wi=new $,Qr=new $,ks=new $,Bs=new $,Ai=new $;function tl(i,e,t,n,r){for(let s=0,a=i.length-3;s<=a;s+=3){Ai.fromArray(i,s);const o=r.x*Math.abs(Ai.x)+r.y*Math.abs(Ai.y)+r.z*Math.abs(Ai.z),l=e.dot(Ai),c=t.dot(Ai),h=n.dot(Ai);if(Math.max(-Math.max(l,c,h),Math.min(l,c,h))>o)return!1}return!0}const Nm=new Ln,es=new $,nl=new $;class In{constructor(e=new $,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):Nm.setFromPoints(e).getCenter(n);let r=0;for(let s=0,a=e.length;s<a;s++)r=Math.max(r,n.distanceToSquared(e[s]));return this.radius=Math.sqrt(r),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){const n=this.center.distanceToSquared(e);return t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;es.subVectors(e,this.center);const t=es.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),r=(n-this.radius)*.5;this.center.addScaledVector(es,r/n),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(nl.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(es.copy(e.center).add(nl)),this.expandByPoint(es.copy(e.center).sub(nl))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}}const jn=new $,il=new $,zs=new $,ci=new $,rl=new $,Hs=new $,sl=new $;class or{constructor(e=new $,t=new $(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,jn)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=jn.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(jn.copy(this.origin).addScaledVector(this.direction,t),jn.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){il.copy(e).add(t).multiplyScalar(.5),zs.copy(t).sub(e).normalize(),ci.copy(this.origin).sub(il);const s=e.distanceTo(t)*.5,a=-this.direction.dot(zs),o=ci.dot(this.direction),l=-ci.dot(zs),c=ci.lengthSq(),h=Math.abs(1-a*a);let u,f,d,_;if(h>0)if(u=a*l-o,f=a*o-l,_=s*h,u>=0)if(f>=-_)if(f<=_){const b=1/h;u*=b,f*=b,d=u*(u+a*f+2*o)+f*(a*u+f+2*l)+c}else f=s,u=Math.max(0,-(a*f+o)),d=-u*u+f*(f+2*l)+c;else f=-s,u=Math.max(0,-(a*f+o)),d=-u*u+f*(f+2*l)+c;else f<=-_?(u=Math.max(0,-(-a*s+o)),f=u>0?-s:Math.min(Math.max(-s,-l),s),d=-u*u+f*(f+2*l)+c):f<=_?(u=0,f=Math.min(Math.max(-s,-l),s),d=f*(f+2*l)+c):(u=Math.max(0,-(a*s+o)),f=u>0?s:Math.min(Math.max(-s,-l),s),d=-u*u+f*(f+2*l)+c);else f=a>0?-s:s,u=Math.max(0,-(a*f+o)),d=-u*u+f*(f+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,u),r&&r.copy(il).addScaledVector(zs,f),d}intersectSphere(e,t){jn.subVectors(e.center,this.origin);const n=jn.dot(this.direction),r=jn.dot(jn)-n*n,s=e.radius*e.radius;if(r>s)return null;const a=Math.sqrt(s-r),o=n-a,l=n+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,r,s,a,o,l;const c=1/this.direction.x,h=1/this.direction.y,u=1/this.direction.z,f=this.origin;return c>=0?(n=(e.min.x-f.x)*c,r=(e.max.x-f.x)*c):(n=(e.max.x-f.x)*c,r=(e.min.x-f.x)*c),h>=0?(s=(e.min.y-f.y)*h,a=(e.max.y-f.y)*h):(s=(e.max.y-f.y)*h,a=(e.min.y-f.y)*h),n>a||s>r||((s>n||isNaN(n))&&(n=s),(a<r||isNaN(r))&&(r=a),u>=0?(o=(e.min.z-f.z)*u,l=(e.max.z-f.z)*u):(o=(e.max.z-f.z)*u,l=(e.min.z-f.z)*u),n>l||o>r)||((o>n||n!==n)&&(n=o),(l<r||r!==r)&&(r=l),r<0)?null:this.at(n>=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,jn)!==null}intersectTriangle(e,t,n,r,s){rl.subVectors(t,e),Hs.subVectors(n,e),sl.crossVectors(rl,Hs);let a=this.direction.dot(sl),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;ci.subVectors(this.origin,e);const l=o*this.direction.dot(Hs.crossVectors(ci,Hs));if(l<0)return null;const c=o*this.direction.dot(rl.cross(ci));if(c<0||l+c>a)return null;const h=-o*ci.dot(sl);return h<0?null:this.at(h/a,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class et{constructor(e,t,n,r,s,a,o,l,c,h,u,f,d,_,b,g){et.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,r,s,a,o,l,c,h,u,f,d,_,b,g)}set(e,t,n,r,s,a,o,l,c,h,u,f,d,_,b,g){const m=this.elements;return m[0]=e,m[4]=t,m[8]=n,m[12]=r,m[1]=s,m[5]=a,m[9]=o,m[13]=l,m[2]=c,m[6]=h,m[10]=u,m[14]=f,m[3]=d,m[7]=_,m[11]=b,m[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new et().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,r=1/lr.setFromMatrixColumn(e,0).length(),s=1/lr.setFromMatrixColumn(e,1).length(),a=1/lr.setFromMatrixColumn(e,2).length();return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,r=e.y,s=e.z,a=Math.cos(n),o=Math.sin(n),l=Math.cos(r),c=Math.sin(r),h=Math.cos(s),u=Math.sin(s);if(e.order==="XYZ"){const f=a*h,d=a*u,_=o*h,b=o*u;t[0]=l*h,t[4]=-l*u,t[8]=c,t[1]=d+_*c,t[5]=f-b*c,t[9]=-o*l,t[2]=b-f*c,t[6]=_+d*c,t[10]=a*l}else if(e.order==="YXZ"){const f=l*h,d=l*u,_=c*h,b=c*u;t[0]=f+b*o,t[4]=_*o-d,t[8]=a*c,t[1]=a*u,t[5]=a*h,t[9]=-o,t[2]=d*o-_,t[6]=b+f*o,t[10]=a*l}else if(e.order==="ZXY"){const f=l*h,d=l*u,_=c*h,b=c*u;t[0]=f-b*o,t[4]=-a*u,t[8]=_+d*o,t[1]=d+_*o,t[5]=a*h,t[9]=b-f*o,t[2]=-a*c,t[6]=o,t[10]=a*l}else if(e.order==="ZYX"){const f=a*h,d=a*u,_=o*h,b=o*u;t[0]=l*h,t[4]=_*c-d,t[8]=f*c+b,t[1]=l*u,t[5]=b*c+f,t[9]=d*c-_,t[2]=-c,t[6]=o*l,t[10]=a*l}else if(e.order==="YZX"){const f=a*l,d=a*c,_=o*l,b=o*c;t[0]=l*h,t[4]=b-f*u,t[8]=_*u+d,t[1]=u,t[5]=a*h,t[9]=-o*h,t[2]=-c*h,t[6]=d*u+_,t[10]=f-b*u}else if(e.order==="XZY"){const f=a*l,d=a*c,_=o*l,b=o*c;t[0]=l*h,t[4]=-u,t[8]=c*h,t[1]=f*u+b,t[5]=a*h,t[9]=d*u-_,t[2]=_*u-d,t[6]=o*h,t[10]=b*u+f}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Om,e,Fm)}lookAt(e,t,n){const r=this.elements;return cn.subVectors(e,t),cn.lengthSq()===0&&(cn.z=1),cn.normalize(),ui.crossVectors(n,cn),ui.lengthSq()===0&&(Math.abs(n.z)===1?cn.x+=1e-4:cn.z+=1e-4,cn.normalize(),ui.crossVectors(n,cn)),ui.normalize(),Vs.crossVectors(cn,ui),r[0]=ui.x,r[4]=Vs.x,r[8]=cn.x,r[1]=ui.y,r[5]=Vs.y,r[9]=cn.y,r[2]=ui.z,r[6]=Vs.z,r[10]=cn.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,a=n[0],o=n[4],l=n[8],c=n[12],h=n[1],u=n[5],f=n[9],d=n[13],_=n[2],b=n[6],g=n[10],m=n[14],S=n[3],y=n[7],M=n[11],T=n[15],R=r[0],k=r[4],B=r[8],C=r[12],D=r[1],V=r[5],K=r[9],J=r[13],se=r[2],he=r[6],Q=r[10],de=r[14],ne=r[3],ue=r[7],Te=r[11],ke=r[15];return s[0]=a*R+o*D+l*se+c*ne,s[4]=a*k+o*V+l*he+c*ue,s[8]=a*B+o*K+l*Q+c*Te,s[12]=a*C+o*J+l*de+c*ke,s[1]=h*R+u*D+f*se+d*ne,s[5]=h*k+u*V+f*he+d*ue,s[9]=h*B+u*K+f*Q+d*Te,s[13]=h*C+u*J+f*de+d*ke,s[2]=_*R+b*D+g*se+m*ne,s[6]=_*k+b*V+g*he+m*ue,s[10]=_*B+b*K+g*Q+m*Te,s[14]=_*C+b*J+g*de+m*ke,s[3]=S*R+y*D+M*se+T*ne,s[7]=S*k+y*V+M*he+T*ue,s[11]=S*B+y*K+M*Q+T*Te,s[15]=S*C+y*J+M*de+T*ke,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],r=e[8],s=e[12],a=e[1],o=e[5],l=e[9],c=e[13],h=e[2],u=e[6],f=e[10],d=e[14],_=e[3],b=e[7],g=e[11],m=e[15];return _*(+s*l*u-r*c*u-s*o*f+n*c*f+r*o*d-n*l*d)+b*(+t*l*d-t*c*f+s*a*f-r*a*d+r*c*h-s*l*h)+g*(+t*c*u-t*o*d-s*a*u+n*a*d+s*o*h-n*c*h)+m*(-r*o*h-t*l*u+t*o*f+r*a*u-n*a*f+n*l*h)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],u=e[9],f=e[10],d=e[11],_=e[12],b=e[13],g=e[14],m=e[15],S=u*g*c-b*f*c+b*l*d-o*g*d-u*l*m+o*f*m,y=_*f*c-h*g*c-_*l*d+a*g*d+h*l*m-a*f*m,M=h*b*c-_*u*c+_*o*d-a*b*d-h*o*m+a*u*m,T=_*u*l-h*b*l-_*o*f+a*b*f+h*o*g-a*u*g,R=t*S+n*y+r*M+s*T;if(R===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const k=1/R;return e[0]=S*k,e[1]=(b*f*s-u*g*s-b*r*d+n*g*d+u*r*m-n*f*m)*k,e[2]=(o*g*s-b*l*s+b*r*c-n*g*c-o*r*m+n*l*m)*k,e[3]=(u*l*s-o*f*s-u*r*c+n*f*c+o*r*d-n*l*d)*k,e[4]=y*k,e[5]=(h*g*s-_*f*s+_*r*d-t*g*d-h*r*m+t*f*m)*k,e[6]=(_*l*s-a*g*s-_*r*c+t*g*c+a*r*m-t*l*m)*k,e[7]=(a*f*s-h*l*s+h*r*c-t*f*c-a*r*d+t*l*d)*k,e[8]=M*k,e[9]=(_*u*s-h*b*s-_*n*d+t*b*d+h*n*m-t*u*m)*k,e[10]=(a*b*s-_*o*s+_*n*c-t*b*c-a*n*m+t*o*m)*k,e[11]=(h*o*s-a*u*s-h*n*c+t*u*c+a*n*d-t*o*d)*k,e[12]=T*k,e[13]=(h*b*r-_*u*r+_*n*f-t*b*f-h*n*g+t*u*g)*k,e[14]=(_*o*r-a*b*r-_*n*l+t*b*l+a*n*g-t*o*g)*k,e[15]=(a*u*r-h*o*r+h*n*l-t*u*l-a*n*f+t*o*f)*k,this}scale(e){const t=this.elements,n=e.x,r=e.y,s=e.z;return t[0]*=n,t[4]*=r,t[8]*=s,t[1]*=n,t[5]*=r,t[9]*=s,t[2]*=n,t[6]*=r,t[10]*=s,t[3]*=n,t[7]*=r,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,r))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),r=Math.sin(t),s=1-n,a=e.x,o=e.y,l=e.z,c=s*a,h=s*o;return this.set(c*a+n,c*o-r*l,c*l+r*o,0,c*o+r*l,h*o+n,h*l-r*a,0,c*l-r*o,h*l+r*a,s*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,r,s,a){return this.set(1,n,s,0,e,1,a,0,t,r,1,0,0,0,0,1),this}compose(e,t,n){const r=this.elements,s=t._x,a=t._y,o=t._z,l=t._w,c=s+s,h=a+a,u=o+o,f=s*c,d=s*h,_=s*u,b=a*h,g=a*u,m=o*u,S=l*c,y=l*h,M=l*u,T=n.x,R=n.y,k=n.z;return r[0]=(1-(b+m))*T,r[1]=(d+M)*T,r[2]=(_-y)*T,r[3]=0,r[4]=(d-M)*R,r[5]=(1-(f+m))*R,r[6]=(g+S)*R,r[7]=0,r[8]=(_+y)*k,r[9]=(g-S)*k,r[10]=(1-(f+b))*k,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,n){const r=this.elements;let s=lr.set(r[0],r[1],r[2]).length();const a=lr.set(r[4],r[5],r[6]).length(),o=lr.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),e.x=r[12],e.y=r[13],e.z=r[14],bn.copy(this);const c=1/s,h=1/a,u=1/o;return bn.elements[0]*=c,bn.elements[1]*=c,bn.elements[2]*=c,bn.elements[4]*=h,bn.elements[5]*=h,bn.elements[6]*=h,bn.elements[8]*=u,bn.elements[9]*=u,bn.elements[10]*=u,t.setFromRotationMatrix(bn),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,r,s,a,o=Pn,l=!1){const c=this.elements,h=2*s/(t-e),u=2*s/(n-r),f=(t+e)/(t-e),d=(n+r)/(n-r);let _,b;if(l)_=s/(a-s),b=a*s/(a-s);else if(o===Pn)_=-(a+s)/(a-s),b=-2*a*s/(a-s);else if(o===Os)_=-a/(a-s),b=-a*s/(a-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return c[0]=h,c[4]=0,c[8]=f,c[12]=0,c[1]=0,c[5]=u,c[9]=d,c[13]=0,c[2]=0,c[6]=0,c[10]=_,c[14]=b,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,r,s,a,o=Pn,l=!1){const c=this.elements,h=2/(t-e),u=2/(n-r),f=-(t+e)/(t-e),d=-(n+r)/(n-r);let _,b;if(l)_=1/(a-s),b=a/(a-s);else if(o===Pn)_=-2/(a-s),b=-(a+s)/(a-s);else if(o===Os)_=-1/(a-s),b=-s/(a-s);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return c[0]=h,c[4]=0,c[8]=0,c[12]=f,c[1]=0,c[5]=u,c[9]=0,c[13]=d,c[2]=0,c[6]=0,c[10]=_,c[14]=b,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<16;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const lr=new $,bn=new et,Om=new $(0,0,0),Fm=new $(1,1,1),ui=new $,Vs=new $,cn=new $,Nu=new et,Ou=new Dn;class Un{constructor(e=0,t=0,n=0,r=Un.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,r=this._order){return this._x=e,this._y=t,this._z=n,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const r=e.elements,s=r[0],a=r[4],o=r[8],l=r[1],c=r[5],h=r[9],u=r[2],f=r[6],d=r[10];switch(t){case"XYZ":this._y=Math.asin(it(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,d),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(f,c),this._z=0);break;case"YXZ":this._x=Math.asin(-it(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,s),this._z=0);break;case"ZXY":this._x=Math.asin(it(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-it(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(f,d),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(it(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-u,s)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-it(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(f,c),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Nu.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Nu,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Ou.setFromEuler(this),this.setFromQuaternion(Ou,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Un.DEFAULT_ORDER="XYZ";class al{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!==0}}let km=0;const Fu=new $,cr=new Dn,qn=new et,Gs=new $,ts=new $,Bm=new $,zm=new Dn,ku=new $(1,0,0),Bu=new $(0,1,0),zu=new $(0,0,1),Hu={type:"added"},Hm={type:"removed"},ur={type:"childadded",child:null},ol={type:"childremoved",child:null};class At extends Ei{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:km++}),this.uuid=vn(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=At.DEFAULT_UP.clone();const e=new $,t=new Un,n=new Dn,r=new $(1,1,1);function s(){n.setFromEuler(t,!1)}function a(){t.setFromQuaternion(n,void 0,!1)}t._onChange(s),n._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:r},modelViewMatrix:{value:new et},normalMatrix:{value:new Qe}}),this.matrix=new et,this.matrixWorld=new et,this.matrixAutoUpdate=At.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=At.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new al,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return cr.setFromAxisAngle(e,t),this.quaternion.multiply(cr),this}rotateOnWorldAxis(e,t){return cr.setFromAxisAngle(e,t),this.quaternion.premultiply(cr),this}rotateX(e){return this.rotateOnAxis(ku,e)}rotateY(e){return this.rotateOnAxis(Bu,e)}rotateZ(e){return this.rotateOnAxis(zu,e)}translateOnAxis(e,t){return Fu.copy(e).applyQuaternion(this.quaternion),this.position.add(Fu.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(ku,e)}translateY(e){return this.translateOnAxis(Bu,e)}translateZ(e){return this.translateOnAxis(zu,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(qn.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?Gs.copy(e):Gs.set(e,t,n);const r=this.parent;this.updateWorldMatrix(!0,!1),ts.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?qn.lookAt(ts,Gs,this.up):qn.lookAt(Gs,ts,this.up),this.quaternion.setFromRotationMatrix(qn),r&&(qn.extractRotation(r.matrixWorld),cr.setFromRotationMatrix(qn),this.quaternion.premultiply(cr.invert()))}add(e){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(Hu),ur.child=e,this.dispatchEvent(ur),ur.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let n=0;n<arguments.length;n++)this.remove(arguments[n]);return this}const t=this.children.indexOf(e);return t!==-1&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(Hm),ol.child=e,this.dispatchEvent(ol),ol.child=null),this}removeFromParent(){const e=this.parent;return e!==null&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),qn.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),qn.multiply(e.parent.matrixWorld)),e.applyMatrix4(qn),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(Hu),ur.child=e,this.dispatchEvent(ur),ur.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,r=this.children.length;n<r;n++){const a=this.children[n].getObjectByProperty(e,t);if(a!==void 0)return a}}getObjectsByProperty(e,t,n=[]){this[e]===t&&n.push(this);const r=this.children;for(let s=0,a=r.length;s<a;s++)r[s].getObjectsByProperty(e,t,n);return n}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ts,e,Bm),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ts,zm,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);const t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverseVisible(e)}traverseAncestors(e){const t=this.parent;t!==null&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].updateMatrixWorld(e)}updateWorldMatrix(e,t){const n=this.parent;if(e===!0&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),t===!0){const r=this.children;for(let s=0,a=r.length;s<a;s++)r[s].updateWorldMatrix(!1,!0)}}toJSON(e){const t=e===void 0||typeof e=="string",n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});const r={};r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.castShadow===!0&&(r.castShadow=!0),this.receiveShadow===!0&&(r.receiveShadow=!0),this.visible===!1&&(r.visible=!1),this.frustumCulled===!1&&(r.frustumCulled=!1),this.renderOrder!==0&&(r.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(o=>({...o})),r.availableInstanceIds=this._availableInstanceIds.slice(),r.availableGeometryIds=this._availableGeometryIds.slice(),r.nextIndexStart=this._nextIndexStart,r.nextVertexStart=this._nextVertexStart,r.geometryCount=this._geometryCount,r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.matricesTexture=this._matricesTexture.toJSON(e),r.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(r.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,h=l.length;c<h;c++){const u=l[c];s(e.shapes,u)}else s(e.shapes,l)}}if(this.isSkinnedMesh&&(r.bindMode=this.bindMode,r.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(e.skeletons,this.skeleton),r.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let l=0,c=this.material.length;l<c;l++)o.push(s(e.materials,this.material[l]));r.material=o}else r.material=s(e.materials,this.material);if(this.children.length>0){r.children=[];for(let o=0;o<this.children.length;o++)r.children.push(this.children[o].toJSON(e).object)}if(this.animations.length>0){r.animations=[];for(let o=0;o<this.animations.length;o++){const l=this.animations[o];r.animations.push(s(e.animations,l))}}if(t){const o=a(e.geometries),l=a(e.materials),c=a(e.textures),h=a(e.images),u=a(e.shapes),f=a(e.skeletons),d=a(e.animations),_=a(e.nodes);o.length>0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),h.length>0&&(n.images=h),u.length>0&&(n.shapes=u),f.length>0&&(n.skeletons=f),d.length>0&&(n.animations=d),_.length>0&&(n.nodes=_)}return n.object=r,n;function a(o){const l=[];for(const c in o){const h=o[c];delete h.metadata,l.push(h)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n<e.children.length;n++){const r=e.children[n];this.add(r.clone())}return this}}At.DEFAULT_UP=new $(0,1,0),At.DEFAULT_MATRIX_AUTO_UPDATE=!0,At.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const Sn=new $,Yn=new $,ll=new $,Kn=new $,hr=new $,fr=new $,Vu=new $,cl=new $,ul=new $,hl=new $,fl=new pt,dl=new pt,pl=new pt;class Mn{constructor(e=new $,t=new $,n=new $){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,r){r.subVectors(n,t),Sn.subVectors(e,t),r.cross(Sn);const s=r.lengthSq();return s>0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,n,r,s){Sn.subVectors(r,t),Yn.subVectors(n,t),ll.subVectors(e,t);const a=Sn.dot(Sn),o=Sn.dot(Yn),l=Sn.dot(ll),c=Yn.dot(Yn),h=Yn.dot(ll),u=a*c-o*o;if(u===0)return s.set(0,0,0),null;const f=1/u,d=(c*l-o*h)*f,_=(a*h-o*l)*f;return s.set(1-d-_,_,d)}static containsPoint(e,t,n,r){return this.getBarycoord(e,t,n,r,Kn)===null?!1:Kn.x>=0&&Kn.y>=0&&Kn.x+Kn.y<=1}static getInterpolation(e,t,n,r,s,a,o,l){return this.getBarycoord(e,t,n,r,Kn)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Kn.x),l.addScaledVector(a,Kn.y),l.addScaledVector(o,Kn.z),l)}static getInterpolatedAttribute(e,t,n,r,s,a){return fl.setScalar(0),dl.setScalar(0),pl.setScalar(0),fl.fromBufferAttribute(e,t),dl.fromBufferAttribute(e,n),pl.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(fl,s.x),a.addScaledVector(dl,s.y),a.addScaledVector(pl,s.z),a}static isFrontFacing(e,t,n,r){return Sn.subVectors(n,t),Yn.subVectors(e,t),Sn.cross(Yn).dot(r)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,r){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,n,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Sn.subVectors(this.c,this.b),Yn.subVectors(this.a,this.b),Sn.cross(Yn).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Mn.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Mn.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,r,s){return Mn.getInterpolation(e,this.a,this.b,this.c,t,n,r,s)}containsPoint(e){return Mn.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Mn.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,r=this.b,s=this.c;let a,o;hr.subVectors(r,n),fr.subVectors(s,n),cl.subVectors(e,n);const l=hr.dot(cl),c=fr.dot(cl);if(l<=0&&c<=0)return t.copy(n);ul.subVectors(e,r);const h=hr.dot(ul),u=fr.dot(ul);if(h>=0&&u<=h)return t.copy(r);const f=l*u-h*c;if(f<=0&&l>=0&&h<=0)return a=l/(l-h),t.copy(n).addScaledVector(hr,a);hl.subVectors(e,s);const d=hr.dot(hl),_=fr.dot(hl);if(_>=0&&d<=_)return t.copy(s);const b=d*c-l*_;if(b<=0&&c>=0&&_<=0)return o=c/(c-_),t.copy(n).addScaledVector(fr,o);const g=h*_-d*u;if(g<=0&&u-h>=0&&d-_>=0)return Vu.subVectors(s,r),o=(u-h)/(u-h+(d-_)),t.copy(r).addScaledVector(Vu,o);const m=1/(g+b+f);return a=b*m,o=f*m,t.copy(n).addScaledVector(hr,a).addScaledVector(fr,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const Gu={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},hi={h:0,s:0,l:0},Ws={h:0,s:0,l:0};function ml(i,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?i+(e-i)*6*t:t<1/2?e:t<2/3?i+(e-i)*6*(2/3-t):i}class Ze{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Bt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,lt.colorSpaceToWorking(this,t),this}setRGB(e,t,n,r=lt.workingColorSpace){return this.r=e,this.g=t,this.b=n,lt.colorSpaceToWorking(this,r),this}setHSL(e,t,n,r=lt.workingColorSpace){if(e=Yo(e,1),t=it(t,0,1),n=it(n,0,1),t===0)this.r=this.g=this.b=n;else{const s=n<=.5?n*(1+t):n+t-n*t,a=2*n-s;this.r=ml(a,s,e+1/3),this.g=ml(a,s,e),this.b=ml(a,s,e-1/3)}return lt.colorSpaceToWorking(this,r),this}setStyle(e,t=Bt){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const a=r[1],o=r[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=r[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Bt){const n=Gu[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Xn(e.r),this.g=Xn(e.g),this.b=Xn(e.b),this}copyLinearToSRGB(e){return this.r=nr(e.r),this.g=nr(e.g),this.b=nr(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Bt){return lt.workingToColorSpace($t.copy(this),e),Math.round(it($t.r*255,0,255))*65536+Math.round(it($t.g*255,0,255))*256+Math.round(it($t.b*255,0,255))}getHexString(e=Bt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=lt.workingColorSpace){lt.workingToColorSpace($t.copy(this),t);const n=$t.r,r=$t.g,s=$t.b,a=Math.max(n,r,s),o=Math.min(n,r,s);let l,c;const h=(o+a)/2;if(o===a)l=0,c=0;else{const u=a-o;switch(c=h<=.5?u/(a+o):u/(2-a-o),a){case n:l=(r-s)/u+(r<s?6:0);break;case r:l=(s-n)/u+2;break;case s:l=(n-r)/u+4;break}l/=6}return e.h=l,e.s=c,e.l=h,e}getRGB(e,t=lt.workingColorSpace){return lt.workingToColorSpace($t.copy(this),t),e.r=$t.r,e.g=$t.g,e.b=$t.b,e}getStyle(e=Bt){lt.workingToColorSpace($t.copy(this),e);const t=$t.r,n=$t.g,r=$t.b;return e!==Bt?`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${r.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(n*255)},${Math.round(r*255)})`}offsetHSL(e,t,n){return this.getHSL(hi),this.setHSL(hi.h+e,hi.s+t,hi.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(hi),e.getHSL(Ws);const n=Kr(hi.h,Ws.h,t),r=Kr(hi.s,Ws.s,t),s=Kr(hi.l,Ws.l,t);return this.setHSL(n,r,s),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const t=this.r,n=this.g,r=this.b,s=e.elements;return this.r=s[0]*t+s[3]*n+s[6]*r,this.g=s[1]*t+s[4]*n+s[7]*r,this.b=s[2]*t+s[5]*n+s[8]*r,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const $t=new Ze;Ze.NAMES=Gu;let Vm=0;class Nn extends Ei{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Vm++}),this.uuid=vn(),this.name="",this.type="Material",this.blending=Yi,this.side=Gn,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=Qa,this.blendDst=eo,this.blendEquation=Si,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new Ze(0,0,0),this.blendAlpha=0,this.depthFunc=Ki,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Eu,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=er,this.stencilZFail=er,this.stencilZPass=er,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(n):r&&r.isVector3&&n&&n.isVector3?r.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(n.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(n.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Yi&&(n.blending=this.blending),this.side!==Gn&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==Qa&&(n.blendSrc=this.blendSrc),this.blendDst!==eo&&(n.blendDst=this.blendDst),this.blendEquation!==Si&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==Ki&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Eu&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==er&&(n.stencilFail=this.stencilFail),this.stencilZFail!==er&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==er&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function r(s){const a=[];for(const o in s){const l=s[o];delete l.metadata,a.push(l)}return a}if(t){const s=r(e.textures),a=r(e.images);s.length>0&&(n.textures=s),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const r=t.length;n=new Array(r);for(let s=0;s!==r;++s)n[s]=t[s].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}class Ri extends Nn{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ze(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Un,this.combine=ou,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Lt=new $,Xs=new Ye;let Gm=0;class Zt{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:Gm++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=qo,this.updateRanges=[],this.gpuType=_n,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let r=0,s=this.itemSize;r<s;r++)this.array[e+r]=t.array[n+r];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(this.itemSize===2)for(let t=0,n=this.count;t<n;t++)Xs.fromBufferAttribute(this,t),Xs.applyMatrix3(e),this.setXY(t,Xs.x,Xs.y);else if(this.itemSize===3)for(let t=0,n=this.count;t<n;t++)Lt.fromBufferAttribute(this,t),Lt.applyMatrix3(e),this.setXYZ(t,Lt.x,Lt.y,Lt.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)Lt.fromBufferAttribute(this,t),Lt.applyMatrix4(e),this.setXYZ(t,Lt.x,Lt.y,Lt.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Lt.fromBufferAttribute(this,t),Lt.applyNormalMatrix(e),this.setXYZ(t,Lt.x,Lt.y,Lt.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Lt.fromBufferAttribute(this,t),Lt.transformDirection(e),this.setXYZ(t,Lt.x,Lt.y,Lt.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let n=this.array[e*this.itemSize+t];return this.normalized&&(n=yn(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=vt(n,this.array)),this.array[e*this.itemSize+t]=n,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=yn(t,this.array)),t}setX(e,t){return this.normalized&&(t=vt(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=yn(t,this.array)),t}setY(e,t){return this.normalized&&(t=vt(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=yn(t,this.array)),t}setZ(e,t){return this.normalized&&(t=vt(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=yn(t,this.array)),t}setW(e,t){return this.normalized&&(t=vt(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array)),this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,r){return e*=this.itemSize,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array),r=vt(r,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=r,this}setXYZW(e,t,n,r,s){return e*=this.itemSize,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array),r=vt(r,this.array),s=vt(s,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=r,this.array[e+3]=s,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(e.name=this.name),this.usage!==qo&&(e.usage=this.usage),e}}class Wu extends Zt{constructor(e,t,n){super(new Uint16Array(e),t,n)}}class Xu extends Zt{constructor(e,t,n){super(new Uint32Array(e),t,n)}}class dn extends Zt{constructor(e,t,n){super(new Float32Array(e),t,n)}}let Wm=0;const pn=new et,gl=new At,dr=new $,un=new Ln,ns=new Ln,Ht=new $;class En extends Ei{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Wm++}),this.uuid=vn(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(Pu(e)?Xu:Wu)(e,1):this.index=e,this}setIndirect(e){return this.indirect=e,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);const n=this.attributes.normal;if(n!==void 0){const s=new Qe().getNormalMatrix(e);n.applyNormalMatrix(s),n.needsUpdate=!0}const r=this.attributes.tangent;return r!==void 0&&(r.transformDirection(e),r.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return pn.makeRotationFromQuaternion(e),this.applyMatrix4(pn),this}rotateX(e){return pn.makeRotationX(e),this.applyMatrix4(pn),this}rotateY(e){return pn.makeRotationY(e),this.applyMatrix4(pn),this}rotateZ(e){return pn.makeRotationZ(e),this.applyMatrix4(pn),this}translate(e,t,n){return pn.makeTranslation(e,t,n),this.applyMatrix4(pn),this}scale(e,t,n){return pn.makeScale(e,t,n),this.applyMatrix4(pn),this}lookAt(e){return gl.lookAt(e),gl.updateMatrix(),this.applyMatrix4(gl.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(dr).negate(),this.translate(dr.x,dr.y,dr.z),this}setFromPoints(e){const t=this.getAttribute("position");if(t===void 0){const n=[];for(let r=0,s=e.length;r<s;r++){const a=e[r];n.push(a.x,a.y,a.z||0)}this.setAttribute("position",new dn(n,3))}else{const n=Math.min(e.length,t.count);for(let r=0;r<n;r++){const s=e[r];t.setXYZ(r,s.x,s.y,s.z||0)}e.length>t.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Ln);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new $(-1/0,-1/0,-1/0),new $(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,r=t.length;n<r;n++){const s=t[n];un.setFromBufferAttribute(s),this.morphTargetsRelative?(Ht.addVectors(this.boundingBox.min,un.min),this.boundingBox.expandByPoint(Ht),Ht.addVectors(this.boundingBox.max,un.max),this.boundingBox.expandByPoint(Ht)):(this.boundingBox.expandByPoint(un.min),this.boundingBox.expandByPoint(un.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new In);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new $,1/0);return}if(e){const n=this.boundingSphere.center;if(un.setFromBufferAttribute(e),t)for(let s=0,a=t.length;s<a;s++){const o=t[s];ns.setFromBufferAttribute(o),this.morphTargetsRelative?(Ht.addVectors(un.min,ns.min),un.expandByPoint(Ht),Ht.addVectors(un.max,ns.max),un.expandByPoint(Ht)):(un.expandByPoint(ns.min),un.expandByPoint(ns.max))}un.getCenter(n);let r=0;for(let s=0,a=e.count;s<a;s++)Ht.fromBufferAttribute(e,s),r=Math.max(r,n.distanceToSquared(Ht));if(t)for(let s=0,a=t.length;s<a;s++){const o=t[s],l=this.morphTargetsRelative;for(let c=0,h=o.count;c<h;c++)Ht.fromBufferAttribute(o,c),l&&(dr.fromBufferAttribute(e,c),Ht.add(dr)),r=Math.max(r,n.distanceToSquared(Ht))}this.boundingSphere.radius=Math.sqrt(r),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(e===null||t.position===void 0||t.normal===void 0||t.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const n=t.position,r=t.normal,s=t.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new Zt(new Float32Array(4*n.count),4));const a=this.getAttribute("tangent"),o=[],l=[];for(let B=0;B<n.count;B++)o[B]=new $,l[B]=new $;const c=new $,h=new $,u=new $,f=new Ye,d=new Ye,_=new Ye,b=new $,g=new $;function m(B,C,D){c.fromBufferAttribute(n,B),h.fromBufferAttribute(n,C),u.fromBufferAttribute(n,D),f.fromBufferAttribute(s,B),d.fromBufferAttribute(s,C),_.fromBufferAttribute(s,D),h.sub(c),u.sub(c),d.sub(f),_.sub(f);const V=1/(d.x*_.y-_.x*d.y);isFinite(V)&&(b.copy(h).multiplyScalar(_.y).addScaledVector(u,-d.y).multiplyScalar(V),g.copy(u).multiplyScalar(d.x).addScaledVector(h,-_.x).multiplyScalar(V),o[B].add(b),o[C].add(b),o[D].add(b),l[B].add(g),l[C].add(g),l[D].add(g))}let S=this.groups;S.length===0&&(S=[{start:0,count:e.count}]);for(let B=0,C=S.length;B<C;++B){const D=S[B],V=D.start,K=D.count;for(let J=V,se=V+K;J<se;J+=3)m(e.getX(J+0),e.getX(J+1),e.getX(J+2))}const y=new $,M=new $,T=new $,R=new $;function k(B){T.fromBufferAttribute(r,B),R.copy(T);const C=o[B];y.copy(C),y.sub(T.multiplyScalar(T.dot(C))).normalize(),M.crossVectors(R,C);const V=M.dot(l[B])<0?-1:1;a.setXYZW(B,y.x,y.y,y.z,V)}for(let B=0,C=S.length;B<C;++B){const D=S[B],V=D.start,K=D.count;for(let J=V,se=V+K;J<se;J+=3)k(e.getX(J+0)),k(e.getX(J+1)),k(e.getX(J+2))}}computeVertexNormals(){const e=this.index,t=this.getAttribute("position");if(t!==void 0){let n=this.getAttribute("normal");if(n===void 0)n=new Zt(new Float32Array(t.count*3),3),this.setAttribute("normal",n);else for(let f=0,d=n.count;f<d;f++)n.setXYZ(f,0,0,0);const r=new $,s=new $,a=new $,o=new $,l=new $,c=new $,h=new $,u=new $;if(e)for(let f=0,d=e.count;f<d;f+=3){const _=e.getX(f+0),b=e.getX(f+1),g=e.getX(f+2);r.fromBufferAttribute(t,_),s.fromBufferAttribute(t,b),a.fromBufferAttribute(t,g),h.subVectors(a,s),u.subVectors(r,s),h.cross(u),o.fromBufferAttribute(n,_),l.fromBufferAttribute(n,b),c.fromBufferAttribute(n,g),o.add(h),l.add(h),c.add(h),n.setXYZ(_,o.x,o.y,o.z),n.setXYZ(b,l.x,l.y,l.z),n.setXYZ(g,c.x,c.y,c.z)}else for(let f=0,d=t.count;f<d;f+=3)r.fromBufferAttribute(t,f+0),s.fromBufferAttribute(t,f+1),a.fromBufferAttribute(t,f+2),h.subVectors(a,s),u.subVectors(r,s),h.cross(u),n.setXYZ(f+0,h.x,h.y,h.z),n.setXYZ(f+1,h.x,h.y,h.z),n.setXYZ(f+2,h.x,h.y,h.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){const e=this.attributes.normal;for(let t=0,n=e.count;t<n;t++)Ht.fromBufferAttribute(e,t),Ht.normalize(),e.setXYZ(t,Ht.x,Ht.y,Ht.z)}toNonIndexed(){function e(o,l){const c=o.array,h=o.itemSize,u=o.normalized,f=new c.constructor(l.length*h);let d=0,_=0;for(let b=0,g=l.length;b<g;b++){o.isInterleavedBufferAttribute?d=l[b]*o.data.stride+o.offset:d=l[b]*h;for(let m=0;m<h;m++)f[_++]=c[d++]}return new Zt(f,h,u)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new En,n=this.index.array,r=this.attributes;for(const o in r){const l=r[o],c=e(l,n);t.setAttribute(o,c)}const s=this.morphAttributes;for(const o in s){const l=[],c=s[o];for(let h=0,u=c.length;h<u;h++){const f=c[h],d=e(f,n);l.push(d)}t.morphAttributes[o]=l}t.morphTargetsRelative=this.morphTargetsRelative;const a=this.groups;for(let o=0,l=a.length;o<l;o++){const c=a[o];t.addGroup(c.start,c.count,c.materialIndex)}return t}toJSON(){const e={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const l in n){const c=n[l];e.data.attributes[l]=c.toJSON(e.data)}const r={};let s=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],h=[];for(let u=0,f=c.length;u<f;u++){const d=c[u];h.push(d.toJSON(e.data))}h.length>0&&(r[l]=h,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone());const r=e.attributes;for(const c in r){const h=r[c];this.setAttribute(c,h.clone(t))}const s=e.morphAttributes;for(const c in s){const h=[],u=s[c];for(let f=0,d=u.length;f<d;f++)h.push(u[f].clone(t));this.morphAttributes[c]=h}this.morphTargetsRelative=e.morphTargetsRelative;const a=e.groups;for(let c=0,h=a.length;c<h;c++){const u=a[c];this.addGroup(u.start,u.count,u.materialIndex)}const o=e.boundingBox;o!==null&&(this.boundingBox=o.clone());const l=e.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const $u=new et,Ci=new or,$s=new In,ju=new $,js=new $,qs=new $,Ys=new $,_l=new $,Ks=new $,qu=new $,Zs=new $;class Jt extends At{constructor(e=new En,t=new Ri){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s<a;s++){const o=r[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}getVertexPosition(e,t){const n=this.geometry,r=n.attributes.position,s=n.morphAttributes.position,a=n.morphTargetsRelative;t.fromBufferAttribute(r,e);const o=this.morphTargetInfluences;if(s&&o){Ks.set(0,0,0);for(let l=0,c=s.length;l<c;l++){const h=o[l],u=s[l];h!==0&&(_l.fromBufferAttribute(u,e),a?Ks.addScaledVector(_l,h):Ks.addScaledVector(_l.sub(t),h))}t.add(Ks)}return t}raycast(e,t){const n=this.geometry,r=this.material,s=this.matrixWorld;r!==void 0&&(n.boundingSphere===null&&n.computeBoundingSphere(),$s.copy(n.boundingSphere),$s.applyMatrix4(s),Ci.copy(e.ray).recast(e.near),!($s.containsPoint(Ci.origin)===!1&&(Ci.intersectSphere($s,ju)===null||Ci.origin.distanceToSquared(ju)>(e.far-e.near)**2))&&($u.copy(s).invert(),Ci.copy(e.ray).applyMatrix4($u),!(n.boundingBox!==null&&Ci.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,Ci)))}_computeIntersections(e,t,n){let r;const s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,c=s.attributes.uv,h=s.attributes.uv1,u=s.attributes.normal,f=s.groups,d=s.drawRange;if(o!==null)if(Array.isArray(a))for(let _=0,b=f.length;_<b;_++){const g=f[_],m=a[g.materialIndex],S=Math.max(g.start,d.start),y=Math.min(o.count,Math.min(g.start+g.count,d.start+d.count));for(let M=S,T=y;M<T;M+=3){const R=o.getX(M),k=o.getX(M+1),B=o.getX(M+2);r=Js(this,m,e,n,c,h,u,R,k,B),r&&(r.faceIndex=Math.floor(M/3),r.face.materialIndex=g.materialIndex,t.push(r))}}else{const _=Math.max(0,d.start),b=Math.min(o.count,d.start+d.count);for(let g=_,m=b;g<m;g+=3){const S=o.getX(g),y=o.getX(g+1),M=o.getX(g+2);r=Js(this,a,e,n,c,h,u,S,y,M),r&&(r.faceIndex=Math.floor(g/3),t.push(r))}}else if(l!==void 0)if(Array.isArray(a))for(let _=0,b=f.length;_<b;_++){const g=f[_],m=a[g.materialIndex],S=Math.max(g.start,d.start),y=Math.min(l.count,Math.min(g.start+g.count,d.start+d.count));for(let M=S,T=y;M<T;M+=3){const R=M,k=M+1,B=M+2;r=Js(this,m,e,n,c,h,u,R,k,B),r&&(r.faceIndex=Math.floor(M/3),r.face.materialIndex=g.materialIndex,t.push(r))}}else{const _=Math.max(0,d.start),b=Math.min(l.count,d.start+d.count);for(let g=_,m=b;g<m;g+=3){const S=g,y=g+1,M=g+2;r=Js(this,a,e,n,c,h,u,S,y,M),r&&(r.faceIndex=Math.floor(g/3),t.push(r))}}}}function Xm(i,e,t,n,r,s,a,o){let l;if(e.side===sn?l=n.intersectTriangle(a,s,r,!0,o):l=n.intersectTriangle(r,s,a,e.side===Gn,o),l===null)return null;Zs.copy(o),Zs.applyMatrix4(i.matrixWorld);const c=t.ray.origin.distanceTo(Zs);return c<t.near||c>t.far?null:{distance:c,point:Zs.clone(),object:i}}function Js(i,e,t,n,r,s,a,o,l,c){i.getVertexPosition(o,js),i.getVertexPosition(l,qs),i.getVertexPosition(c,Ys);const h=Xm(i,e,t,n,js,qs,Ys,qu);if(h){const u=new $;Mn.getBarycoord(qu,js,qs,Ys,u),r&&(h.uv=Mn.getInterpolatedAttribute(r,o,l,c,u,new Ye)),s&&(h.uv1=Mn.getInterpolatedAttribute(s,o,l,c,u,new Ye)),a&&(h.normal=Mn.getInterpolatedAttribute(a,o,l,c,u,new $),h.normal.dot(n.direction)>0&&h.normal.multiplyScalar(-1));const f={a:o,b:l,c,normal:new $,materialIndex:0};Mn.getNormal(js,qs,Ys,f.normal),h.face=f,h.barycoord=u}return h}class pr extends En{constructor(e=1,t=1,n=1,r=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:r,heightSegments:s,depthSegments:a};const o=this;r=Math.floor(r),s=Math.floor(s),a=Math.floor(a);const l=[],c=[],h=[],u=[];let f=0,d=0;_("z","y","x",-1,-1,n,t,e,a,s,0),_("z","y","x",1,-1,n,t,-e,a,s,1),_("x","z","y",1,1,e,n,t,r,a,2),_("x","z","y",1,-1,e,n,-t,r,a,3),_("x","y","z",1,-1,e,t,n,r,s,4),_("x","y","z",-1,-1,e,t,-n,r,s,5),this.setIndex(l),this.setAttribute("position",new dn(c,3)),this.setAttribute("normal",new dn(h,3)),this.setAttribute("uv",new dn(u,2));function _(b,g,m,S,y,M,T,R,k,B,C){const D=M/k,V=T/B,K=M/2,J=T/2,se=R/2,he=k+1,Q=B+1;let de=0,ne=0;const ue=new $;for(let Te=0;Te<Q;Te++){const ke=Te*V-J;for(let O=0;O<he;O++){const H=O*D-K;ue[b]=H*S,ue[g]=ke*y,ue[m]=se,c.push(ue.x,ue.y,ue.z),ue[b]=0,ue[g]=0,ue[m]=R>0?1:-1,h.push(ue.x,ue.y,ue.z),u.push(O/k),u.push(1-Te/B),de+=1}}for(let Te=0;Te<B;Te++)for(let ke=0;ke<k;ke++){const O=f+ke+he*Te,H=f+ke+he*(Te+1),we=f+(ke+1)+he*(Te+1),Be=f+(ke+1)+he*Te;l.push(O,H,Be),l.push(H,we,Be),ne+=6}o.addGroup(d,ne,C),d+=ne,f+=de}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new pr(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function mr(i){const e={};for(const t in i){e[t]={};for(const n in i[t]){const r=i[t][n];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture||r.isQuaternion)?r.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][n]=null):e[t][n]=r.clone():Array.isArray(r)?e[t][n]=r.slice():e[t][n]=r}}return e}function Qt(i){const e={};for(let t=0;t<i.length;t++){const n=mr(i[t]);for(const r in n)e[r]=n[r]}return e}function $m(i){const e=[];for(let t=0;t<i.length;t++)e.push(i[t].clone());return e}function Yu(i){const e=i.getRenderTarget();return e===null?i.outputColorSpace:e.isXRRenderTarget===!0?e.texture.colorSpace:lt.workingColorSpace}const jm={clone:mr,merge:Qt};var qm=`void main() {
|
|
39
39
|
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
40
|
-
}`,
|
|
40
|
+
}`,Ym=`void main() {
|
|
41
41
|
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
|
|
42
|
-
}`;class fi extends Nn{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader
|
|
42
|
+
}`;class fi extends Nn{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=qm,this.fragmentShader=Ym,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=mr(e.uniforms),this.uniformsGroups=$m(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const r in this.uniforms){const a=this.uniforms[r].value;a&&a.isTexture?t.uniforms[r]={type:"t",value:a.toJSON(e).uuid}:a&&a.isColor?t.uniforms[r]={type:"c",value:a.getHex()}:a&&a.isVector2?t.uniforms[r]={type:"v2",value:a.toArray()}:a&&a.isVector3?t.uniforms[r]={type:"v3",value:a.toArray()}:a&&a.isVector4?t.uniforms[r]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?t.uniforms[r]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?t.uniforms[r]={type:"m4",value:a.toArray()}:t.uniforms[r]={value:a}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const r in this.extensions)this.extensions[r]===!0&&(n[r]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class Ku extends At{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new et,this.projectionMatrix=new et,this.projectionMatrixInverse=new et,this.coordinateSystem=Pn,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const di=new $,Zu=new Ye,Ju=new Ye;class en extends Ku{constructor(e=50,t=1,n=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=tr*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(Yr*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return tr*2*Math.atan(Math.tan(Yr*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){di.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(di.x,di.y).multiplyScalar(-e/di.z),di.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(di.x,di.y).multiplyScalar(-e/di.z)}getViewSize(e,t){return this.getViewBounds(e,Zu,Ju),t.subVectors(Ju,Zu)}setViewOffset(e,t,n,r,s,a){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(Yr*.5*this.fov)/this.zoom,n=2*t,r=this.aspect*n,s=-.5*r;const a=this.view;if(this.view!==null&&this.view.enabled){const l=a.fullWidth,c=a.fullHeight;s+=a.offsetX*r/l,t-=a.offsetY*n/c,r*=a.width/l,n*=a.height/c}const o=this.filmOffset;o!==0&&(s+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,t,t-n,e,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const gr=-90,_r=1;class Km extends At{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new en(gr,_r,e,t);r.layers=this.layers,this.add(r);const s=new en(gr,_r,e,t);s.layers=this.layers,this.add(s);const a=new en(gr,_r,e,t);a.layers=this.layers,this.add(a);const o=new en(gr,_r,e,t);o.layers=this.layers,this.add(o);const l=new en(gr,_r,e,t);l.layers=this.layers,this.add(l);const c=new en(gr,_r,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,r,s,a,o,l]=t;for(const c of t)this.remove(c);if(e===Pn)n.up.set(0,1,0),n.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===Os)n.up.set(0,-1,0),n.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[s,a,o,l,c,h]=this.children,u=e.getRenderTarget(),f=e.getActiveCubeFace(),d=e.getActiveMipmapLevel(),_=e.xr.enabled;e.xr.enabled=!1;const b=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,r),e.render(t,s),e.setRenderTarget(n,1,r),e.render(t,a),e.setRenderTarget(n,2,r),e.render(t,o),e.setRenderTarget(n,3,r),e.render(t,l),e.setRenderTarget(n,4,r),e.render(t,c),n.texture.generateMipmaps=b,e.setRenderTarget(n,5,r),e.render(t,h),e.setRenderTarget(u,f,d),e.xr.enabled=_,n.texture.needsPMREMUpdate=!0}}class Qu extends zt{constructor(e=[],t=Zi,n,r,s,a,o,l,c,h){super(e,t,n,r,s,a,o,l,c,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Zm extends Ti{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},r=[n,n,n,n,n,n];this.texture=new Qu(r),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:`
|
|
43
43
|
|
|
44
44
|
varying vec3 vWorldDirection;
|
|
45
45
|
|
|
@@ -74,13 +74,13 @@
|
|
|
74
74
|
gl_FragColor = texture2D( tEquirect, sampleUV );
|
|
75
75
|
|
|
76
76
|
}
|
|
77
|
-
`},r=new pr(5,5,5),s=new fi({name:"CubemapFromEquirect",uniforms:mr(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:sn,blending:ii});s.uniforms.tEquirect.value=t;const a=new Jt(r,s),o=t.minFilter;return t.minFilter===Wn&&(t.minFilter=ln),new qm(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t=!0,n=!0,r=!0){const s=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,n,r);e.setRenderTarget(s)}}class Zn extends At{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Km={type:"move"};class _l{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Zn,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Zn,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new $,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new $),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Zn,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new $,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new $),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let r=null,s=null,a=null;const o=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){a=!0;for(const b of e.hand.values()){const g=t.getJointPose(b,n),m=this._getHandJoint(c,b);g!==null&&(m.matrix.fromArray(g.transform.matrix),m.matrix.decompose(m.position,m.rotation,m.scale),m.matrixWorldNeedsUpdate=!0,m.jointRadius=g.radius),m.visible=g!==null}const h=c.joints["index-finger-tip"],u=c.joints["thumb-tip"],f=h.position.distanceTo(u.position),d=.02,_=.005;c.inputState.pinching&&f>d+_?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&f<=d-_&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(r=t.getPose(e.targetRaySpace,n),r===null&&s!==null&&(r=s),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(Km)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new Zn;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Zm extends At{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Un,this.environmentIntensity=1,this.environmentRotation=new Un,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class Jm{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=jo,this.updateRanges=[],this.version=0,this.uuid=vn()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let r=0,s=this.stride;r<s;r++)this.array[e+r]=t.array[n+r];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=vn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=vn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const tn=new $;class vl{constructor(e,t,n,r=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=r}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)tn.fromBufferAttribute(this,t),tn.applyMatrix4(e),this.setXYZ(t,tn.x,tn.y,tn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)tn.fromBufferAttribute(this,t),tn.applyNormalMatrix(e),this.setXYZ(t,tn.x,tn.y,tn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)tn.fromBufferAttribute(this,t),tn.transformDirection(e),this.setXYZ(t,tn.x,tn.y,tn.z);return this}getComponent(e,t){let n=this.array[e*this.data.stride+this.offset+t];return this.normalized&&(n=yn(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=vt(n,this.array)),this.data.array[e*this.data.stride+this.offset+t]=n,this}setX(e,t){return this.normalized&&(t=vt(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=vt(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=vt(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=vt(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=yn(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=yn(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=yn(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=yn(t,this.array)),t}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array),r=vt(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=r,this}setXYZW(e,t,n,r,s){return e=e*this.data.stride+this.offset,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array),r=vt(r,this.array),s=vt(s,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=r,this.data.array[e+3]=s,this}clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const r=n*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[r+s])}return new Zt(new this.array.constructor(t),this.itemSize,this.normalized)}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new vl(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const r=n*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[r+s])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}const Qu=new $,eh=new pt,th=new pt,Qm=new $,nh=new et,Qs=new $,yl=new In,ih=new et,xl=new or;class eg extends Jt{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=lu,this.bindMatrix=new et,this.bindMatrixInverse=new et,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const e=this.geometry;this.boundingBox===null&&(this.boundingBox=new Ln),this.boundingBox.makeEmpty();const t=e.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,Qs),this.boundingBox.expandByPoint(Qs)}computeBoundingSphere(){const e=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new In),this.boundingSphere.makeEmpty();const t=e.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,Qs),this.boundingSphere.expandByPoint(Qs)}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}raycast(e,t){const n=this.material,r=this.matrixWorld;n!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),yl.copy(this.boundingSphere),yl.applyMatrix4(r),e.ray.intersectsSphere(yl)!==!1&&(ih.copy(r).invert(),xl.copy(e.ray).applyMatrix4(ih),!(this.boundingBox!==null&&xl.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(e,t,xl)))}getVertexPosition(e,t){return super.getVertexPosition(e,t),this.applyBoneTransform(e,t),t}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new pt,t=this.geometry.attributes.skinWeight;for(let n=0,r=t.count;n<r;n++){e.fromBufferAttribute(t,n);const s=1/e.manhattanLength();s!==1/0?e.multiplyScalar(s):e.set(1,0,0,0),t.setXYZW(n,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode===lu?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===Kp?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(e,t){const n=this.skeleton,r=this.geometry;eh.fromBufferAttribute(r.attributes.skinIndex,e),th.fromBufferAttribute(r.attributes.skinWeight,e),Qu.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let s=0;s<4;s++){const a=th.getComponent(s);if(a!==0){const o=eh.getComponent(s);nh.multiplyMatrices(n.bones[o].matrixWorld,n.boneInverses[o]),t.addScaledVector(Qm.copy(Qu).applyMatrix4(nh),a)}}return t.applyMatrix4(this.bindMatrixInverse)}}class rh extends At{constructor(){super(),this.isBone=!0,this.type="Bone"}}class sh extends zt{constructor(e=null,t=1,n=1,r,s,a,o,l,c=Yt,h=Yt,u,f){super(null,a,o,l,c,h,r,s,u,f),this.isDataTexture=!0,this.image={data:e,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const ah=new et,tg=new et;class bl{constructor(e=[],t=[]){this.uuid=vn(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){const e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(e.length*16),t.length===0)this.calculateInverses();else if(e.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let n=0,r=this.bones.length;n<r;n++)this.boneInverses.push(new et)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){const n=new et;this.bones[e]&&n.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(n)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){const n=this.bones[e];n&&n.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){const n=this.bones[e];n&&(n.parent&&n.parent.isBone?(n.matrix.copy(n.parent.matrixWorld).invert(),n.matrix.multiply(n.matrixWorld)):n.matrix.copy(n.matrixWorld),n.matrix.decompose(n.position,n.quaternion,n.scale))}}update(){const e=this.bones,t=this.boneInverses,n=this.boneMatrices,r=this.boneTexture;for(let s=0,a=e.length;s<a;s++){const o=e[s]?e[s].matrixWorld:tg;ah.multiplyMatrices(o,t[s]),ah.toArray(n,s*16)}r!==null&&(r.needsUpdate=!0)}clone(){return new bl(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(this.bones.length*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);const t=new Float32Array(e*e*4);t.set(this.boneMatrices);const n=new sh(t,e,e,fn,_n);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this}getBoneByName(e){for(let t=0,n=this.bones.length;t<n;t++){const r=this.bones[t];if(r.name===e)return r}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let n=0,r=e.bones.length;n<r;n++){const s=e.bones[n];let a=t[s];a===void 0&&(console.warn("THREE.Skeleton: No bone found with UUID:",s),a=new rh),this.bones.push(a),this.boneInverses.push(new et().fromArray(e.boneInverses[n]))}return this.init(),this}toJSON(){const e={metadata:{version:4.7,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};e.uuid=this.uuid;const t=this.bones,n=this.boneInverses;for(let r=0,s=t.length;r<s;r++){const a=t[r];e.bones.push(a.uuid);const o=n[r];e.boneInverses.push(o.toArray())}return e}}class Sl extends Zt{constructor(e,t,n,r=1){super(e,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=r}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){const e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}}const vr=new et,oh=new et,ea=[],lh=new Ln,ng=new et,is=new Jt,rs=new In;class ig extends Jt{constructor(e,t,n){super(e,t),this.isInstancedMesh=!0,this.instanceMatrix=new Sl(new Float32Array(n*16),16),this.instanceColor=null,this.morphTexture=null,this.count=n,this.boundingBox=null,this.boundingSphere=null;for(let r=0;r<n;r++)this.setMatrixAt(r,ng)}computeBoundingBox(){const e=this.geometry,t=this.count;this.boundingBox===null&&(this.boundingBox=new Ln),e.boundingBox===null&&e.computeBoundingBox(),this.boundingBox.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,vr),lh.copy(e.boundingBox).applyMatrix4(vr),this.boundingBox.union(lh)}computeBoundingSphere(){const e=this.geometry,t=this.count;this.boundingSphere===null&&(this.boundingSphere=new In),e.boundingSphere===null&&e.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,vr),rs.copy(e.boundingSphere).applyMatrix4(vr),this.boundingSphere.union(rs)}copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMatrix),e.morphTexture!==null&&(this.morphTexture=e.morphTexture.clone()),e.instanceColor!==null&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}getColorAt(e,t){t.fromArray(this.instanceColor.array,e*3)}getMatrixAt(e,t){t.fromArray(this.instanceMatrix.array,e*16)}getMorphAt(e,t){const n=t.morphTargetInfluences,r=this.morphTexture.source.data.data,s=n.length+1,a=e*s+1;for(let o=0;o<n.length;o++)n[o]=r[a+o]}raycast(e,t){const n=this.matrixWorld,r=this.count;if(is.geometry=this.geometry,is.material=this.material,is.material!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),rs.copy(this.boundingSphere),rs.applyMatrix4(n),e.ray.intersectsSphere(rs)!==!1))for(let s=0;s<r;s++){this.getMatrixAt(s,vr),oh.multiplyMatrices(n,vr),is.matrixWorld=oh,is.raycast(e,ea);for(let a=0,o=ea.length;a<o;a++){const l=ea[a];l.instanceId=s,l.object=this,t.push(l)}ea.length=0}}setColorAt(e,t){this.instanceColor===null&&(this.instanceColor=new Sl(new Float32Array(this.instanceMatrix.count*3).fill(1),3)),t.toArray(this.instanceColor.array,e*3)}setMatrixAt(e,t){t.toArray(this.instanceMatrix.array,e*16)}setMorphAt(e,t){const n=t.morphTargetInfluences,r=n.length+1;this.morphTexture===null&&(this.morphTexture=new sh(new Float32Array(r*this.count),r,this.count,fo,_n));const s=this.morphTexture.source.data.data;let a=0;for(let c=0;c<n.length;c++)a+=n[c];const o=this.geometry.morphTargetsRelative?1:1-a,l=r*e;s[l]=o,s.set(n,l+1)}updateMorphTargets(){}dispose(){this.dispatchEvent({type:"dispose"}),this.morphTexture!==null&&(this.morphTexture.dispose(),this.morphTexture=null)}}const Ml=new $,rg=new $,sg=new Qe;class pi{constructor(e=new $(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,r){return this.normal.set(e,t,n),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const r=Ml.subVectors(n,t).cross(rg.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const n=e.delta(Ml),r=this.normal.dot(n);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/r;return s<0||s>1?null:t.copy(e.start).addScaledVector(n,s)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||sg.getNormalMatrix(e),r=this.coplanarPoint(Ml).applyMatrix4(e),s=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Pi=new In,ag=new Ye(.5,.5),ta=new $;class El{constructor(e=new pi,t=new pi,n=new pi,r=new pi,s=new pi,a=new pi){this.planes=[e,t,n,r,s,a]}set(e,t,n,r,s,a){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(r),o[4].copy(s),o[5].copy(a),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=Pn,n=!1){const r=this.planes,s=e.elements,a=s[0],o=s[1],l=s[2],c=s[3],h=s[4],u=s[5],f=s[6],d=s[7],_=s[8],b=s[9],g=s[10],m=s[11],S=s[12],y=s[13],M=s[14],T=s[15];if(r[0].setComponents(c-a,d-h,m-_,T-S).normalize(),r[1].setComponents(c+a,d+h,m+_,T+S).normalize(),r[2].setComponents(c+o,d+u,m+b,T+y).normalize(),r[3].setComponents(c-o,d-u,m-b,T-y).normalize(),n)r[4].setComponents(l,f,g,M).normalize(),r[5].setComponents(c-l,d-f,m-g,T-M).normalize();else if(r[4].setComponents(c-l,d-f,m-g,T-M).normalize(),t===Pn)r[5].setComponents(c+l,d+f,m+g,T+M).normalize();else if(t===Os)r[5].setComponents(l,f,g,M).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Pi.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Pi.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Pi)}intersectsSprite(e){Pi.center.set(0,0,0);const t=ag.distanceTo(e.center);return Pi.radius=.7071067811865476+t,Pi.applyMatrix4(e.matrixWorld),this.intersectsSphere(Pi)}intersectsSphere(e){const t=this.planes,n=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(n)<r)return!1;return!0}intersectsBox(e){const t=this.planes;for(let n=0;n<6;n++){const r=t[n];if(ta.x=r.normal.x>0?e.max.x:e.min.x,ta.y=r.normal.y>0?e.max.y:e.min.y,ta.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(ta)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class ch extends Nn{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Ze(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const na=new $,ia=new $,uh=new et,ss=new or,ra=new In,Tl=new $,hh=new $;class wl extends At{constructor(e=new En,t=new ch){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[0];for(let r=1,s=t.count;r<s;r++)na.fromBufferAttribute(t,r-1),ia.fromBufferAttribute(t,r),n[r]=n[r-1],n[r]+=na.distanceTo(ia);e.setAttribute("lineDistance",new dn(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){const n=this.geometry,r=this.matrixWorld,s=e.params.Line.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),ra.copy(n.boundingSphere),ra.applyMatrix4(r),ra.radius+=s,e.ray.intersectsSphere(ra)===!1)return;uh.copy(r).invert(),ss.copy(e.ray).applyMatrix4(uh);const o=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=this.isLineSegments?2:1,h=n.index,f=n.attributes.position;if(h!==null){const d=Math.max(0,a.start),_=Math.min(h.count,a.start+a.count);for(let b=d,g=_-1;b<g;b+=c){const m=h.getX(b),S=h.getX(b+1),y=sa(this,e,ss,l,m,S,b);y&&t.push(y)}if(this.isLineLoop){const b=h.getX(_-1),g=h.getX(d),m=sa(this,e,ss,l,b,g,_-1);m&&t.push(m)}}else{const d=Math.max(0,a.start),_=Math.min(f.count,a.start+a.count);for(let b=d,g=_-1;b<g;b+=c){const m=sa(this,e,ss,l,b,b+1,b);m&&t.push(m)}if(this.isLineLoop){const b=sa(this,e,ss,l,_-1,d,_-1);b&&t.push(b)}}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s<a;s++){const o=r[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}}function sa(i,e,t,n,r,s,a){const o=i.geometry.attributes.position;if(na.fromBufferAttribute(o,r),ia.fromBufferAttribute(o,s),t.distanceSqToSegment(na,ia,Tl,hh)>n)return;Tl.applyMatrix4(i.matrixWorld);const c=e.ray.origin.distanceTo(Tl);if(!(c<e.near||c>e.far))return{distance:c,point:hh.clone().applyMatrix4(i.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:i}}const fh=new $,dh=new $;class og extends wl{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let r=0,s=t.count;r<s;r+=2)fh.fromBufferAttribute(t,r),dh.fromBufferAttribute(t,r+1),n[r]=r===0?0:n[r-1],n[r+1]=n[r]+fh.distanceTo(dh);e.setAttribute("lineDistance",new dn(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class lg extends wl{constructor(e,t){super(e,t),this.isLineLoop=!0,this.type="LineLoop"}}class ph extends Nn{constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new Ze(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}const mh=new et,Al=new or,aa=new In,oa=new $;class cg extends At{constructor(e=new En,t=new ph){super(),this.isPoints=!0,this.type="Points",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,t){const n=this.geometry,r=this.matrixWorld,s=e.params.Points.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),aa.copy(n.boundingSphere),aa.applyMatrix4(r),aa.radius+=s,e.ray.intersectsSphere(aa)===!1)return;mh.copy(r).invert(),Al.copy(e.ray).applyMatrix4(mh);const o=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=n.index,u=n.attributes.position;if(c!==null){const f=Math.max(0,a.start),d=Math.min(c.count,a.start+a.count);for(let _=f,b=d;_<b;_++){const g=c.getX(_);oa.fromBufferAttribute(u,g),gh(oa,g,l,r,e,t,this)}}else{const f=Math.max(0,a.start),d=Math.min(u.count,a.start+a.count);for(let _=f,b=d;_<b;_++)oa.fromBufferAttribute(u,_),gh(oa,_,l,r,e,t,this)}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s<a;s++){const o=r[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}}function gh(i,e,t,n,r,s,a){const o=Al.distanceSqToPoint(i);if(o<t){const l=new $;Al.closestPointToPoint(i,l),l.applyMatrix4(n);const c=r.ray.origin.distanceTo(l);if(c<r.near||c>r.far)return;s.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}class _h extends zt{constructor(e,t,n=Mi,r,s,a,o=Yt,l=Yt,c,h=Xr,u=1){if(h!==Xr&&h!==$r)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const f={width:e,height:t,depth:u};super(f,r,s,a,o,l,h,n,c),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Zo(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class vh extends zt{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class Rl extends En{constructor(e=1,t=32,n=0,r=Math.PI*2){super(),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:r},t=Math.max(3,t);const s=[],a=[],o=[],l=[],c=new $,h=new Ye;a.push(0,0,0),o.push(0,0,1),l.push(.5,.5);for(let u=0,f=3;u<=t;u++,f+=3){const d=n+u/t*r;c.x=e*Math.cos(d),c.y=e*Math.sin(d),a.push(c.x,c.y,c.z),o.push(0,0,1),h.x=(a[f]/e+1)/2,h.y=(a[f+1]/e+1)/2,l.push(h.x,h.y)}for(let u=1;u<=t;u++)s.push(u,u+1,0);this.setIndex(s),this.setAttribute("position",new dn(a,3)),this.setAttribute("normal",new dn(o,3)),this.setAttribute("uv",new dn(l,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Rl(e.radius,e.segments,e.thetaStart,e.thetaLength)}}class la extends En{constructor(e=1,t=1,n=1,r=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:n,heightSegments:r};const s=e/2,a=t/2,o=Math.floor(n),l=Math.floor(r),c=o+1,h=l+1,u=e/o,f=t/l,d=[],_=[],b=[],g=[];for(let m=0;m<h;m++){const S=m*f-a;for(let y=0;y<c;y++){const M=y*u-s;_.push(M,-S,0),b.push(0,0,1),g.push(y/o),g.push(1-m/l)}}for(let m=0;m<l;m++)for(let S=0;S<o;S++){const y=S+c*m,M=S+c*(m+1),T=S+1+c*(m+1),R=S+1+c*m;d.push(y,M,R),d.push(M,T,R)}this.setIndex(d),this.setAttribute("position",new dn(_,3)),this.setAttribute("normal",new dn(b,3)),this.setAttribute("uv",new dn(g,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new la(e.width,e.height,e.widthSegments,e.heightSegments)}}class as extends Nn{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new Ze(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ze(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Su,this.normalScale=new Ye(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Un,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class On extends as{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Ye(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return it(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new Ze(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new Ze(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new Ze(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class ug extends Nn{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Qp,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class hg extends Nn{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}function ca(i,e){return!i||i.constructor===e?i:typeof e.BYTES_PER_ELEMENT=="number"?new e(i):Array.prototype.slice.call(i)}function fg(i){return ArrayBuffer.isView(i)&&!(i instanceof DataView)}function dg(i){function e(r,s){return i[r]-i[s]}const t=i.length,n=new Array(t);for(let r=0;r!==t;++r)n[r]=r;return n.sort(e),n}function yh(i,e,t){const n=i.length,r=new i.constructor(n);for(let s=0,a=0;a!==n;++s){const o=t[s]*e;for(let l=0;l!==e;++l)r[a++]=i[o+l]}return r}function xh(i,e,t,n){let r=1,s=i[0];for(;s!==void 0&&s[n]===void 0;)s=i[r++];if(s===void 0)return;let a=s[n];if(a!==void 0)if(Array.isArray(a))do a=s[n],a!==void 0&&(e.push(s.time),t.push(...a)),s=i[r++];while(s!==void 0);else if(a.toArray!==void 0)do a=s[n],a!==void 0&&(e.push(s.time),a.toArray(t,t.length)),s=i[r++];while(s!==void 0);else do a=s[n],a!==void 0&&(e.push(s.time),t.push(a)),s=i[r++];while(s!==void 0)}class os{constructor(e,t,n,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let n=this._cachedIndex,r=t[n],s=t[n-1];n:{e:{let a;t:{i:if(!(e<r)){for(let o=n+2;;){if(r===void 0){if(e<s)break i;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===o)break;if(s=r,r=t[++n],e<r)break e}a=t.length;break t}if(!(e>=s)){const o=t[1];e<o&&(n=2,s=o);for(let l=n-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===l)break;if(r=s,s=t[--n-1],e>=s)break e}a=n,n=0;break t}break n}for(;n<a;){const o=n+a>>>1;e<t[o]?a=o:n=o+1}if(r=t[n],s=t[n-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(r===void 0)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,s,r)}return this.interpolate_(n,s,e,r)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,s=e*r;for(let a=0;a!==r;++a)t[a]=n[s+a];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class pg extends os{constructor(e,t,n,r){super(e,t,n,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:vu,endingEnd:vu}}intervalChanged_(e,t,n){const r=this.parameterPositions;let s=e-2,a=e+1,o=r[s],l=r[a];if(o===void 0)switch(this.getSettings_().endingStart){case yu:s=e,o=2*t-n;break;case xu:s=r.length-2,o=t+r[s]-r[s+1];break;default:s=e,o=n}if(l===void 0)switch(this.getSettings_().endingEnd){case yu:a=e,l=2*n-t;break;case xu:a=1,l=n+r[1]-r[0];break;default:a=e-1,l=t}const c=(n-t)*.5,h=this.valueSize;this._weightPrev=c/(t-o),this._weightNext=c/(l-n),this._offsetPrev=s*h,this._offsetNext=a*h}interpolate_(e,t,n,r){const s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=e*o,c=l-o,h=this._offsetPrev,u=this._offsetNext,f=this._weightPrev,d=this._weightNext,_=(n-t)/(r-t),b=_*_,g=b*_,m=-f*g+2*f*b-f*_,S=(1+f)*g+(-1.5-2*f)*b+(-.5+f)*_+1,y=(-1-d)*g+(1.5+d)*b+.5*_,M=d*g-d*b;for(let T=0;T!==o;++T)s[T]=m*a[h+T]+S*a[c+T]+y*a[l+T]+M*a[u+T];return s}}class mg extends os{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){const s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=e*o,c=l-o,h=(n-t)/(r-t),u=1-h;for(let f=0;f!==o;++f)s[f]=a[c+f]*u+a[l+f]*h;return s}}class gg extends os{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e){return this.copySampleValue_(e-1)}}class Tn{constructor(e,t,n,r){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=ca(t,this.TimeBufferType),this.values=ca(n,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation)}static toJSON(e){const t=e.constructor;let n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:ca(e.times,Array),values:ca(e.values,Array)};const r=e.getInterpolation();r!==e.DefaultInterpolation&&(n.interpolation=r)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new gg(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new mg(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new pg(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case jr:t=this.InterpolantFactoryMethodDiscrete;break;case qr:t=this.InterpolantFactoryMethodLinear;break;case Xo:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){const n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return jr;case this.InterpolantFactoryMethodLinear:return qr;case this.InterpolantFactoryMethodSmooth:return Xo}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){const t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]+=e}return this}scale(e){if(e!==1){const t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]*=e}return this}trim(e,t){const n=this.times,r=n.length;let s=0,a=r-1;for(;s!==r&&n[s]<e;)++s;for(;a!==-1&&n[a]>t;)--a;if(++a,s!==0||a!==r){s>=a&&(a=Math.max(a,1),s=a-1);const o=this.getValueSize();this.times=n.slice(s,a),this.values=this.values.slice(s*o,a*o)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,r=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let o=0;o!==s;o++){const l=n[o];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(r!==void 0&&fg(r))for(let o=0,l=r.length;o!==l;++o){const c=r[o];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,c),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===Xo,s=e.length-1;let a=1;for(let o=1;o<s;++o){let l=!1;const c=e[o],h=e[o+1];if(c!==h&&(o!==1||c!==e[0]))if(r)l=!0;else{const u=o*n,f=u-n,d=u+n;for(let _=0;_!==n;++_){const b=t[u+_];if(b!==t[f+_]||b!==t[d+_]){l=!0;break}}}if(l){if(o!==a){e[a]=e[o];const u=o*n,f=a*n;for(let d=0;d!==n;++d)t[f+d]=t[u+d]}++a}}if(s>0){e[a]=e[s];for(let o=s*n,l=a*n,c=0;c!==n;++c)t[l+c]=t[o+c];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*n)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Tn.prototype.ValueTypeName="",Tn.prototype.TimeBufferType=Float32Array,Tn.prototype.ValueBufferType=Float32Array,Tn.prototype.DefaultInterpolation=qr;class yr extends Tn{constructor(e,t,n){super(e,t,n)}}yr.prototype.ValueTypeName="bool",yr.prototype.ValueBufferType=Array,yr.prototype.DefaultInterpolation=jr,yr.prototype.InterpolantFactoryMethodLinear=void 0,yr.prototype.InterpolantFactoryMethodSmooth=void 0;class bh extends Tn{constructor(e,t,n,r){super(e,t,n,r)}}bh.prototype.ValueTypeName="color";class xr extends Tn{constructor(e,t,n,r){super(e,t,n,r)}}xr.prototype.ValueTypeName="number";class _g extends os{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){const s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=(n-t)/(r-t);let c=e*o;for(let h=c+o;c!==h;c+=4)Dn.slerpFlat(s,0,a,c-o,a,c,l);return s}}class br extends Tn{constructor(e,t,n,r){super(e,t,n,r)}InterpolantFactoryMethodLinear(e){return new _g(this.times,this.values,this.getValueSize(),e)}}br.prototype.ValueTypeName="quaternion",br.prototype.InterpolantFactoryMethodSmooth=void 0;class Sr extends Tn{constructor(e,t,n){super(e,t,n)}}Sr.prototype.ValueTypeName="string",Sr.prototype.ValueBufferType=Array,Sr.prototype.DefaultInterpolation=jr,Sr.prototype.InterpolantFactoryMethodLinear=void 0,Sr.prototype.InterpolantFactoryMethodSmooth=void 0;class Mr extends Tn{constructor(e,t,n,r){super(e,t,n,r)}}Mr.prototype.ValueTypeName="vector";class vg{constructor(e="",t=-1,n=[],r=Zp){this.name=e,this.tracks=n,this.duration=t,this.blendMode=r,this.uuid=vn(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,r=1/(e.fps||1);for(let a=0,o=n.length;a!==o;++a)t.push(xg(n[a]).scale(r));const s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s.userData=JSON.parse(e.userData||"{}"),s}static toJSON(e){const t=[],n=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let s=0,a=n.length;s!==a;++s)t.push(Tn.toJSON(n[s]));return r}static CreateFromMorphTargetSequence(e,t,n,r){const s=t.length,a=[];for(let o=0;o<s;o++){let l=[],c=[];l.push((o+s-1)%s,o,(o+1)%s),c.push(0,1,0);const h=dg(l);l=yh(l,1,h),c=yh(c,1,h),!r&&l[0]===0&&(l.push(s),c.push(c[0])),a.push(new xr(".morphTargetInfluences["+t[o].name+"]",l,c).scale(1/n))}return new this(e,-1,a)}static findByName(e,t){let n=e;if(!Array.isArray(e)){const r=e;n=r.geometry&&r.geometry.animations||r.animations}for(let r=0;r<n.length;r++)if(n[r].name===t)return n[r];return null}static CreateClipsFromMorphTargetSequences(e,t,n){const r={},s=/^([\w-]*?)([\d]+)$/;for(let o=0,l=e.length;o<l;o++){const c=e[o],h=c.name.match(s);if(h&&h.length>1){const u=h[1];let f=r[u];f||(r[u]=f=[]),f.push(c)}}const a=[];for(const o in r)a.push(this.CreateFromMorphTargetSequence(o,r[o],t,n));return a}static parseAnimation(e,t){if(console.warn("THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(u,f,d,_,b){if(d.length!==0){const g=[],m=[];xh(d,g,m,_),g.length!==0&&b.push(new u(f,g,m))}},r=[],s=e.name||"default",a=e.fps||30,o=e.blendMode;let l=e.length||-1;const c=e.hierarchy||[];for(let u=0;u<c.length;u++){const f=c[u].keys;if(!(!f||f.length===0))if(f[0].morphTargets){const d={};let _;for(_=0;_<f.length;_++)if(f[_].morphTargets)for(let b=0;b<f[_].morphTargets.length;b++)d[f[_].morphTargets[b]]=-1;for(const b in d){const g=[],m=[];for(let S=0;S!==f[_].morphTargets.length;++S){const y=f[_];g.push(y.time),m.push(y.morphTarget===b?1:0)}r.push(new xr(".morphTargetInfluence["+b+"]",g,m))}l=d.length*a}else{const d=".bones["+t[u].name+"]";n(Mr,d+".position",f,"pos",r),n(br,d+".quaternion",f,"rot",r),n(Mr,d+".scale",f,"scl",r)}}return r.length===0?null:new this(s,l,r,o)}resetDuration(){const e=this.tracks;let t=0;for(let n=0,r=e.length;n!==r;++n){const s=this.tracks[n];t=Math.max(t,s.times[s.times.length-1])}return this.duration=t,this}trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e}optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this}clone(){const e=[];for(let n=0;n<this.tracks.length;n++)e.push(this.tracks[n].clone());const t=new this.constructor(this.name,this.duration,e,this.blendMode);return t.userData=JSON.parse(JSON.stringify(this.userData)),t}toJSON(){return this.constructor.toJSON(this)}}function yg(i){switch(i.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return xr;case"vector":case"vector2":case"vector3":case"vector4":return Mr;case"color":return bh;case"quaternion":return br;case"bool":case"boolean":return yr;case"string":return Sr}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+i)}function xg(i){if(i.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const e=yg(i.type);if(i.times===void 0){const t=[],n=[];xh(i.keys,t,n,"value"),i.times=t,i.values=n}return e.parse!==void 0?e.parse(i):new e(i.name,i.times,i.values,i.interpolation)}const Jn={enabled:!1,files:{},add:function(i,e){this.enabled!==!1&&(this.files[i]=e)},get:function(i){if(this.enabled!==!1)return this.files[i]},remove:function(i){delete this.files[i]},clear:function(){this.files={}}};class bg{constructor(e,t,n){const r=this;let s=!1,a=0,o=0,l;const c=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.abortController=new AbortController,this.itemStart=function(h){o++,s===!1&&r.onStart!==void 0&&r.onStart(h,a,o),s=!0},this.itemEnd=function(h){a++,r.onProgress!==void 0&&r.onProgress(h,a,o),a===o&&(s=!1,r.onLoad!==void 0&&r.onLoad())},this.itemError=function(h){r.onError!==void 0&&r.onError(h)},this.resolveURL=function(h){return l?l(h):h},this.setURLModifier=function(h){return l=h,this},this.addHandler=function(h,u){return c.push(h,u),this},this.removeHandler=function(h){const u=c.indexOf(h);return u!==-1&&c.splice(u,2),this},this.getHandler=function(h){for(let u=0,f=c.length;u<f;u+=2){const d=c[u],_=c[u+1];if(d.global&&(d.lastIndex=0),d.test(h))return _}return null},this.abort=function(){return this.abortController.abort(),this.abortController=new AbortController,this}}}const Sg=new bg;class Er{constructor(e){this.manager=e!==void 0?e:Sg,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){const n=this;return new Promise(function(r,s){n.load(e,r,t,s)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}abort(){return this}}Er.DEFAULT_MATERIAL_NAME="__DEFAULT";const Qn={};class Mg extends Error{constructor(e,t){super(e),this.response=t}}class Sh extends Er{constructor(e){super(e),this.mimeType="",this.responseType="",this._abortController=new AbortController}load(e,t,n,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=Jn.get(`file:${e}`);if(s!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(s),this.manager.itemEnd(e)},0),s;if(Qn[e]!==void 0){Qn[e].push({onLoad:t,onProgress:n,onError:r});return}Qn[e]=[],Qn[e].push({onLoad:t,onProgress:n,onError:r});const a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const h=Qn[e],u=c.body.getReader(),f=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),d=f?parseInt(f):0,_=d!==0;let b=0;const g=new ReadableStream({start(m){S();function S(){u.read().then(({done:y,value:M})=>{if(y)m.close();else{b+=M.byteLength;const T=new ProgressEvent("progress",{lengthComputable:_,loaded:b,total:d});for(let R=0,k=h.length;R<k;R++){const B=h[R];B.onProgress&&B.onProgress(T)}m.enqueue(M),S()}},y=>{m.error(y)})}}});return new Response(g)}else throw new Mg(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(h=>new DOMParser().parseFromString(h,o));case"json":return c.json();default:if(o==="")return c.text();{const u=/charset="?([^;"\s]*)"?/i.exec(o),f=u&&u[1]?u[1].toLowerCase():void 0,d=new TextDecoder(f);return c.arrayBuffer().then(_=>d.decode(_))}}}).then(c=>{Jn.add(`file:${e}`,c);const h=Qn[e];delete Qn[e];for(let u=0,f=h.length;u<f;u++){const d=h[u];d.onLoad&&d.onLoad(c)}}).catch(c=>{const h=Qn[e];if(h===void 0)throw this.manager.itemError(e),c;delete Qn[e];for(let u=0,f=h.length;u<f;u++){const d=h[u];d.onError&&d.onError(c)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}const Tr=new WeakMap;class Eg extends Er{constructor(e){super(e)}load(e,t,n,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,a=Jn.get(`image:${e}`);if(a!==void 0){if(a.complete===!0)s.manager.itemStart(e),setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);else{let u=Tr.get(a);u===void 0&&(u=[],Tr.set(a,u)),u.push({onLoad:t,onError:r})}return a}const o=Zr("img");function l(){h(),t&&t(this);const u=Tr.get(this)||[];for(let f=0;f<u.length;f++){const d=u[f];d.onLoad&&d.onLoad(this)}Tr.delete(this),s.manager.itemEnd(e)}function c(u){h(),r&&r(u),Jn.remove(`image:${e}`);const f=Tr.get(this)||[];for(let d=0;d<f.length;d++){const _=f[d];_.onError&&_.onError(u)}Tr.delete(this),s.manager.itemError(e),s.manager.itemEnd(e)}function h(){o.removeEventListener("load",l,!1),o.removeEventListener("error",c,!1)}return o.addEventListener("load",l,!1),o.addEventListener("error",c,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),Jn.add(`image:${e}`,o),s.manager.itemStart(e),o.src=e,o}}class Tg extends Er{constructor(e){super(e)}load(e,t,n,r){const s=new zt,a=new Eg(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(e,function(o){s.image=o,s.needsUpdate=!0,t!==void 0&&t(s)},n,r),s}}class ua extends At{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Ze(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(t.object.target=this.target.uuid),t}}const Cl=new et,Mh=new $,Eh=new $;class Pl{constructor(e){this.camera=e,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Ye(512,512),this.mapType=Cn,this.map=null,this.mapPass=null,this.matrix=new et,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new El,this._frameExtents=new Ye(1,1),this._viewportCount=1,this._viewports=[new pt(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,n=this.matrix;Mh.setFromMatrixPosition(e.matrixWorld),t.position.copy(Mh),Eh.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Eh),t.updateMatrixWorld(),Cl.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Cl,t.coordinateSystem,t.reversedDepth),t.reversedDepth?n.set(.5,0,0,.5,0,.5,0,.5,0,0,1,0,0,0,0,1):n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(Cl)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.intensity=e.intensity,this.bias=e.bias,this.radius=e.radius,this.autoUpdate=e.autoUpdate,this.needsUpdate=e.needsUpdate,this.normalBias=e.normalBias,this.blurSamples=e.blurSamples,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const e={};return this.intensity!==1&&(e.intensity=this.intensity),this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class wg extends Pl{constructor(){super(new en(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1,this.aspect=1}updateMatrices(e){const t=this.camera,n=tr*2*e.angle*this.focus,r=this.mapSize.width/this.mapSize.height*this.aspect,s=e.distance||t.far;(n!==t.fov||r!==t.aspect||s!==t.far)&&(t.fov=n,t.aspect=r,t.far=s,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class Ag extends ua{constructor(e,t,n=0,r=Math.PI/3,s=0,a=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(At.DEFAULT_UP),this.updateMatrix(),this.target=new At,this.distance=n,this.angle=r,this.penumbra=s,this.decay=a,this.map=null,this.shadow=new wg}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const Th=new et,ls=new $,Dl=new $;class Rg extends Pl{constructor(){super(new en(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new Ye(4,2),this._viewportCount=6,this._viewports=[new pt(2,1,1,1),new pt(0,1,1,1),new pt(3,1,1,1),new pt(1,1,1,1),new pt(3,0,1,1),new pt(1,0,1,1)],this._cubeDirections=[new $(1,0,0),new $(-1,0,0),new $(0,0,1),new $(0,0,-1),new $(0,1,0),new $(0,-1,0)],this._cubeUps=[new $(0,1,0),new $(0,1,0),new $(0,1,0),new $(0,1,0),new $(0,0,1),new $(0,0,-1)]}updateMatrices(e,t=0){const n=this.camera,r=this.matrix,s=e.distance||n.far;s!==n.far&&(n.far=s,n.updateProjectionMatrix()),ls.setFromMatrixPosition(e.matrixWorld),n.position.copy(ls),Dl.copy(n.position),Dl.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(Dl),n.updateMatrixWorld(),r.makeTranslation(-ls.x,-ls.y,-ls.z),Th.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Th,n.coordinateSystem,n.reversedDepth)}}class Cg extends ua{constructor(e,t,n=0,r=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=r,this.shadow=new Rg}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class ha extends Yu{constructor(e=-1,t=1,n=1,r=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=r,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,r,s,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let s=n-e,a=n+e,o=r+t,l=r-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,a=s+c*this.view.width,o-=h*this.view.offsetY,l=o-h*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,l,this.near,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}class Pg extends Pl{constructor(){super(new ha(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class Ll extends ua{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(At.DEFAULT_UP),this.updateMatrix(),this.target=new At,this.shadow=new Pg}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class Dg extends ua{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class cs{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}const Il=new WeakMap;class Lg extends Er{constructor(e){super(e),this.isImageBitmapLoader=!0,typeof createImageBitmap>"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}setOptions(e){return this.options=e,this}load(e,t,n,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,a=Jn.get(`image-bitmap:${e}`);if(a!==void 0){if(s.manager.itemStart(e),a.then){a.then(c=>{if(Il.has(a)===!0)r&&r(Il.get(a)),s.manager.itemError(e),s.manager.itemEnd(e);else return t&&t(c),s.manager.itemEnd(e),c});return}return setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0),a}const o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader,o.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const l=fetch(e,o).then(function(c){return c.blob()}).then(function(c){return createImageBitmap(c,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(c){return Jn.add(`image-bitmap:${e}`,c),t&&t(c),s.manager.itemEnd(e),c}).catch(function(c){r&&r(c),Il.set(l,c),Jn.remove(`image-bitmap:${e}`),s.manager.itemError(e),s.manager.itemEnd(e)});Jn.add(`image-bitmap:${e}`,l),s.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class Ig extends en{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}const Ul="\\[\\]\\.:\\/",Ug=new RegExp("["+Ul+"]","g"),Nl="[^"+Ul+"]",Ng="[^"+Ul.replace("\\.","")+"]",Og=/((?:WC+[\/:])*)/.source.replace("WC",Nl),Fg=/(WCOD+)?/.source.replace("WCOD",Ng),kg=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Nl),Bg=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Nl),zg=new RegExp("^"+Og+Fg+kg+Bg+"$"),Hg=["material","materials","bones","map"];class Vg{constructor(e,t,n){const r=n||yt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=n.length;r!==s;++r)n[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}class yt{constructor(e,t,n){this.path=t,this.parsedPath=n||yt.parseTrackName(t),this.node=yt.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new yt.Composite(e,t,n):new yt(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Ug,"")}static parseTrackName(e){const t=zg.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const s=n.nodeName.substring(r+1);Hg.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){const n=function(s){for(let a=0;a<s.length;a++){const o=s[a];if(o.name===t||o.uuid===t)return o;const l=n(o.children);if(l)return l}return null},r=n(e.children);if(r)return r}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){const n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)e[t++]=n[r]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){const n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++]}_setValue_array_setNeedsUpdate(e,t){const n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){const n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node;const t=this.parsedPath,n=t.objectName,r=t.propertyName;let s=t.propertyIndex;if(e||(e=yt.findNode(this.rootNode,t.nodeName),this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");return}if(n){let c=t.objectIndex;switch(n){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let h=0;h<e.length;h++)if(e[h].name===c){c=h;break}break;case"map":if("map"in e){e=e.map;break}if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}e=e.material.map;break;default:if(e[n]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[n]}if(c!==void 0){if(e[c]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[c]}}const a=e[r];if(a===void 0){const c=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+c+"."+r+" but it wasn't found.",e);return}let o=this.Versioning.None;this.targetObject=e,e.isMaterial===!0?o=this.Versioning.NeedsUpdate:e.isObject3D===!0&&(o=this.Versioning.MatrixWorldNeedsUpdate);let l=this.BindingType.Direct;if(s!==void 0){if(r==="morphTargetInfluences"){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}e.morphTargetDictionary[s]!==void 0&&(s=e.morphTargetDictionary[s])}l=this.BindingType.ArrayElement,this.resolvedProperty=a,this.propertyIndex=s}else a.fromArray!==void 0&&a.toArray!==void 0?(l=this.BindingType.HasFromToArray,this.resolvedProperty=a):Array.isArray(a)?(l=this.BindingType.EntireArray,this.resolvedProperty=a):this.propertyName=r;this.getValue=this.GetterByBindingType[l],this.setValue=this.SetterByBindingTypeAndVersioning[l][o]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}yt.Composite=Vg,yt.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},yt.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},yt.prototype.GetterByBindingType=[yt.prototype._getValue_direct,yt.prototype._getValue_array,yt.prototype._getValue_arrayElement,yt.prototype._getValue_toArray],yt.prototype.SetterByBindingTypeAndVersioning=[[yt.prototype._setValue_direct,yt.prototype._setValue_direct_setNeedsUpdate,yt.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_array,yt.prototype._setValue_array_setNeedsUpdate,yt.prototype._setValue_array_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_arrayElement,yt.prototype._setValue_arrayElement_setNeedsUpdate,yt.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_fromArray,yt.prototype._setValue_fromArray_setNeedsUpdate,yt.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];const wh=new et;class Gg{constructor(e,t,n=0,r=1/0){this.ray=new or(e,t),this.near=n,this.far=r,this.camera=null,this.layers=new sl,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}setFromXRController(e){return wh.identity().extractRotation(e.matrixWorld),this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(wh),this}intersectObject(e,t=!0,n=[]){return Ol(e,this,n,t),n.sort(Ah),n}intersectObjects(e,t=!0,n=[]){for(let r=0,s=e.length;r<s;r++)Ol(e[r],this,n,t);return n.sort(Ah),n}}function Ah(i,e){return i.distance-e.distance}function Ol(i,e,t,n){let r=!0;if(i.layers.test(e.layers)&&i.raycast(e,t)===!1&&(r=!1),r===!0&&n===!0){const s=i.children;for(let a=0,o=s.length;a<o;a++)Ol(s[a],e,t,!0)}}class Rh{constructor(e=1,t=0,n=0){this.radius=e,this.phi=t,this.theta=n}set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=it(this.phi,1e-6,Math.PI-1e-6),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(it(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}class Wg extends Ei{constructor(e,t=null){super(),this.object=e,this.domElement=t,this.enabled=!0,this.state=-1,this.keys={},this.mouseButtons={LEFT:null,MIDDLE:null,RIGHT:null},this.touches={ONE:null,TWO:null}}connect(e){if(e===void 0){console.warn("THREE.Controls: connect() now requires an element.");return}this.domElement!==null&&this.disconnect(),this.domElement=e}disconnect(){}dispose(){}update(){}}function Ch(i,e,t,n){const r=Xg(n);switch(t){case mu:return i*e;case fo:return i*e/r.components*r.byteLength;case po:return i*e/r.components*r.byteLength;case _u:return i*e*2/r.components*r.byteLength;case mo:return i*e*2/r.components*r.byteLength;case gu:return i*e*3/r.components*r.byteLength;case fn:return i*e*4/r.components*r.byteLength;case go:return i*e*4/r.components*r.byteLength;case Ds:case Ls:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*8;case Is:case Us:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case vo:case xo:return Math.max(i,16)*Math.max(e,8)/4;case _o:case yo:return Math.max(i,8)*Math.max(e,8)/2;case bo:case So:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*8;case Mo:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case Eo:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case To:return Math.floor((i+4)/5)*Math.floor((e+3)/4)*16;case wo:return Math.floor((i+4)/5)*Math.floor((e+4)/5)*16;case Ao:return Math.floor((i+5)/6)*Math.floor((e+4)/5)*16;case Ro:return Math.floor((i+5)/6)*Math.floor((e+5)/6)*16;case Co:return Math.floor((i+7)/8)*Math.floor((e+4)/5)*16;case Po:return Math.floor((i+7)/8)*Math.floor((e+5)/6)*16;case Do:return Math.floor((i+7)/8)*Math.floor((e+7)/8)*16;case Lo:return Math.floor((i+9)/10)*Math.floor((e+4)/5)*16;case Io:return Math.floor((i+9)/10)*Math.floor((e+5)/6)*16;case Uo:return Math.floor((i+9)/10)*Math.floor((e+7)/8)*16;case No:return Math.floor((i+9)/10)*Math.floor((e+9)/10)*16;case Oo:return Math.floor((i+11)/12)*Math.floor((e+9)/10)*16;case Fo:return Math.floor((i+11)/12)*Math.floor((e+11)/12)*16;case ko:case Bo:case zo:return Math.ceil(i/4)*Math.ceil(e/4)*16;case Ho:case Vo:return Math.ceil(i/4)*Math.ceil(e/4)*8;case Go:case Wo:return Math.ceil(i/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function Xg(i){switch(i){case Cn:case hu:return{byteLength:1,components:1};case Vr:case fu:case Gr:return{byteLength:2,components:1};case uo:case ho:return{byteLength:2,components:4};case Mi:case co:case _n:return{byteLength:4,components:1};case du:case pu:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${i}.`)}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:Za}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=Za);/**
|
|
77
|
+
`},r=new pr(5,5,5),s=new fi({name:"CubemapFromEquirect",uniforms:mr(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:sn,blending:ii});s.uniforms.tEquirect.value=t;const a=new Jt(r,s),o=t.minFilter;return t.minFilter===Wn&&(t.minFilter=ln),new Km(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t=!0,n=!0,r=!0){const s=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,n,r);e.setRenderTarget(s)}}class Zn extends At{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Jm={type:"move"};class vl{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Zn,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Zn,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new $,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new $),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Zn,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new $,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new $),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let r=null,s=null,a=null;const o=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){a=!0;for(const b of e.hand.values()){const g=t.getJointPose(b,n),m=this._getHandJoint(c,b);g!==null&&(m.matrix.fromArray(g.transform.matrix),m.matrix.decompose(m.position,m.rotation,m.scale),m.matrixWorldNeedsUpdate=!0,m.jointRadius=g.radius),m.visible=g!==null}const h=c.joints["index-finger-tip"],u=c.joints["thumb-tip"],f=h.position.distanceTo(u.position),d=.02,_=.005;c.inputState.pinching&&f>d+_?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&f<=d-_&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(r=t.getPose(e.targetRaySpace,n),r===null&&s!==null&&(r=s),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(Jm)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new Zn;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Qm extends At{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Un,this.environmentIntensity=1,this.environmentRotation=new Un,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class eg{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=qo,this.updateRanges=[],this.version=0,this.uuid=vn()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let r=0,s=this.stride;r<s;r++)this.array[e+r]=t.array[n+r];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=vn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=vn()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const tn=new $;class yl{constructor(e,t,n,r=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=r}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)tn.fromBufferAttribute(this,t),tn.applyMatrix4(e),this.setXYZ(t,tn.x,tn.y,tn.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)tn.fromBufferAttribute(this,t),tn.applyNormalMatrix(e),this.setXYZ(t,tn.x,tn.y,tn.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)tn.fromBufferAttribute(this,t),tn.transformDirection(e),this.setXYZ(t,tn.x,tn.y,tn.z);return this}getComponent(e,t){let n=this.array[e*this.data.stride+this.offset+t];return this.normalized&&(n=yn(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=vt(n,this.array)),this.data.array[e*this.data.stride+this.offset+t]=n,this}setX(e,t){return this.normalized&&(t=vt(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=vt(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=vt(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=vt(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=yn(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=yn(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=yn(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=yn(t,this.array)),t}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array),r=vt(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=r,this}setXYZW(e,t,n,r,s){return e=e*this.data.stride+this.offset,this.normalized&&(t=vt(t,this.array),n=vt(n,this.array),r=vt(r,this.array),s=vt(s,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=r,this.data.array[e+3]=s,this}clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const r=n*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[r+s])}return new Zt(new this.array.constructor(t),this.itemSize,this.normalized)}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new yl(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const r=n*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)t.push(this.data.array[r+s])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}const eh=new $,th=new pt,nh=new pt,tg=new $,ih=new et,Qs=new $,xl=new In,rh=new et,bl=new or;class ng extends Jt{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=cu,this.bindMatrix=new et,this.bindMatrixInverse=new et,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const e=this.geometry;this.boundingBox===null&&(this.boundingBox=new Ln),this.boundingBox.makeEmpty();const t=e.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,Qs),this.boundingBox.expandByPoint(Qs)}computeBoundingSphere(){const e=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new In),this.boundingSphere.makeEmpty();const t=e.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,Qs),this.boundingSphere.expandByPoint(Qs)}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}raycast(e,t){const n=this.material,r=this.matrixWorld;n!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),xl.copy(this.boundingSphere),xl.applyMatrix4(r),e.ray.intersectsSphere(xl)!==!1&&(rh.copy(r).invert(),bl.copy(e.ray).applyMatrix4(rh),!(this.boundingBox!==null&&bl.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(e,t,bl)))}getVertexPosition(e,t){return super.getVertexPosition(e,t),this.applyBoneTransform(e,t),t}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new pt,t=this.geometry.attributes.skinWeight;for(let n=0,r=t.count;n<r;n++){e.fromBufferAttribute(t,n);const s=1/e.manhattanLength();s!==1/0?e.multiplyScalar(s):e.set(1,0,0,0),t.setXYZW(n,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode===cu?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===Jp?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(e,t){const n=this.skeleton,r=this.geometry;th.fromBufferAttribute(r.attributes.skinIndex,e),nh.fromBufferAttribute(r.attributes.skinWeight,e),eh.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let s=0;s<4;s++){const a=nh.getComponent(s);if(a!==0){const o=th.getComponent(s);ih.multiplyMatrices(n.bones[o].matrixWorld,n.boneInverses[o]),t.addScaledVector(tg.copy(eh).applyMatrix4(ih),a)}}return t.applyMatrix4(this.bindMatrixInverse)}}class sh extends At{constructor(){super(),this.isBone=!0,this.type="Bone"}}class ah extends zt{constructor(e=null,t=1,n=1,r,s,a,o,l,c=Yt,h=Yt,u,f){super(null,a,o,l,c,h,r,s,u,f),this.isDataTexture=!0,this.image={data:e,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const oh=new et,ig=new et;class Sl{constructor(e=[],t=[]){this.uuid=vn(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){const e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(e.length*16),t.length===0)this.calculateInverses();else if(e.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let n=0,r=this.bones.length;n<r;n++)this.boneInverses.push(new et)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){const n=new et;this.bones[e]&&n.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(n)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){const n=this.bones[e];n&&n.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){const n=this.bones[e];n&&(n.parent&&n.parent.isBone?(n.matrix.copy(n.parent.matrixWorld).invert(),n.matrix.multiply(n.matrixWorld)):n.matrix.copy(n.matrixWorld),n.matrix.decompose(n.position,n.quaternion,n.scale))}}update(){const e=this.bones,t=this.boneInverses,n=this.boneMatrices,r=this.boneTexture;for(let s=0,a=e.length;s<a;s++){const o=e[s]?e[s].matrixWorld:ig;oh.multiplyMatrices(o,t[s]),oh.toArray(n,s*16)}r!==null&&(r.needsUpdate=!0)}clone(){return new Sl(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(this.bones.length*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);const t=new Float32Array(e*e*4);t.set(this.boneMatrices);const n=new ah(t,e,e,fn,_n);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this}getBoneByName(e){for(let t=0,n=this.bones.length;t<n;t++){const r=this.bones[t];if(r.name===e)return r}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let n=0,r=e.bones.length;n<r;n++){const s=e.bones[n];let a=t[s];a===void 0&&(console.warn("THREE.Skeleton: No bone found with UUID:",s),a=new sh),this.bones.push(a),this.boneInverses.push(new et().fromArray(e.boneInverses[n]))}return this.init(),this}toJSON(){const e={metadata:{version:4.7,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};e.uuid=this.uuid;const t=this.bones,n=this.boneInverses;for(let r=0,s=t.length;r<s;r++){const a=t[r];e.bones.push(a.uuid);const o=n[r];e.boneInverses.push(o.toArray())}return e}}class Ml extends Zt{constructor(e,t,n,r=1){super(e,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=r}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){const e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}}const vr=new et,lh=new et,ea=[],ch=new Ln,rg=new et,is=new Jt,rs=new In;class sg extends Jt{constructor(e,t,n){super(e,t),this.isInstancedMesh=!0,this.instanceMatrix=new Ml(new Float32Array(n*16),16),this.instanceColor=null,this.morphTexture=null,this.count=n,this.boundingBox=null,this.boundingSphere=null;for(let r=0;r<n;r++)this.setMatrixAt(r,rg)}computeBoundingBox(){const e=this.geometry,t=this.count;this.boundingBox===null&&(this.boundingBox=new Ln),e.boundingBox===null&&e.computeBoundingBox(),this.boundingBox.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,vr),ch.copy(e.boundingBox).applyMatrix4(vr),this.boundingBox.union(ch)}computeBoundingSphere(){const e=this.geometry,t=this.count;this.boundingSphere===null&&(this.boundingSphere=new In),e.boundingSphere===null&&e.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,vr),rs.copy(e.boundingSphere).applyMatrix4(vr),this.boundingSphere.union(rs)}copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMatrix),e.morphTexture!==null&&(this.morphTexture=e.morphTexture.clone()),e.instanceColor!==null&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}getColorAt(e,t){t.fromArray(this.instanceColor.array,e*3)}getMatrixAt(e,t){t.fromArray(this.instanceMatrix.array,e*16)}getMorphAt(e,t){const n=t.morphTargetInfluences,r=this.morphTexture.source.data.data,s=n.length+1,a=e*s+1;for(let o=0;o<n.length;o++)n[o]=r[a+o]}raycast(e,t){const n=this.matrixWorld,r=this.count;if(is.geometry=this.geometry,is.material=this.material,is.material!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),rs.copy(this.boundingSphere),rs.applyMatrix4(n),e.ray.intersectsSphere(rs)!==!1))for(let s=0;s<r;s++){this.getMatrixAt(s,vr),lh.multiplyMatrices(n,vr),is.matrixWorld=lh,is.raycast(e,ea);for(let a=0,o=ea.length;a<o;a++){const l=ea[a];l.instanceId=s,l.object=this,t.push(l)}ea.length=0}}setColorAt(e,t){this.instanceColor===null&&(this.instanceColor=new Ml(new Float32Array(this.instanceMatrix.count*3).fill(1),3)),t.toArray(this.instanceColor.array,e*3)}setMatrixAt(e,t){t.toArray(this.instanceMatrix.array,e*16)}setMorphAt(e,t){const n=t.morphTargetInfluences,r=n.length+1;this.morphTexture===null&&(this.morphTexture=new ah(new Float32Array(r*this.count),r,this.count,po,_n));const s=this.morphTexture.source.data.data;let a=0;for(let c=0;c<n.length;c++)a+=n[c];const o=this.geometry.morphTargetsRelative?1:1-a,l=r*e;s[l]=o,s.set(n,l+1)}updateMorphTargets(){}dispose(){this.dispatchEvent({type:"dispose"}),this.morphTexture!==null&&(this.morphTexture.dispose(),this.morphTexture=null)}}const El=new $,ag=new $,og=new Qe;class pi{constructor(e=new $(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,r){return this.normal.set(e,t,n),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const r=El.subVectors(n,t).cross(ag.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const n=e.delta(El),r=this.normal.dot(n);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/r;return s<0||s>1?null:t.copy(e.start).addScaledVector(n,s)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||og.getNormalMatrix(e),r=this.coplanarPoint(El).applyMatrix4(e),s=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Pi=new In,lg=new Ye(.5,.5),ta=new $;class Tl{constructor(e=new pi,t=new pi,n=new pi,r=new pi,s=new pi,a=new pi){this.planes=[e,t,n,r,s,a]}set(e,t,n,r,s,a){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(r),o[4].copy(s),o[5].copy(a),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=Pn,n=!1){const r=this.planes,s=e.elements,a=s[0],o=s[1],l=s[2],c=s[3],h=s[4],u=s[5],f=s[6],d=s[7],_=s[8],b=s[9],g=s[10],m=s[11],S=s[12],y=s[13],M=s[14],T=s[15];if(r[0].setComponents(c-a,d-h,m-_,T-S).normalize(),r[1].setComponents(c+a,d+h,m+_,T+S).normalize(),r[2].setComponents(c+o,d+u,m+b,T+y).normalize(),r[3].setComponents(c-o,d-u,m-b,T-y).normalize(),n)r[4].setComponents(l,f,g,M).normalize(),r[5].setComponents(c-l,d-f,m-g,T-M).normalize();else if(r[4].setComponents(c-l,d-f,m-g,T-M).normalize(),t===Pn)r[5].setComponents(c+l,d+f,m+g,T+M).normalize();else if(t===Os)r[5].setComponents(l,f,g,M).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Pi.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Pi.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Pi)}intersectsSprite(e){Pi.center.set(0,0,0);const t=lg.distanceTo(e.center);return Pi.radius=.7071067811865476+t,Pi.applyMatrix4(e.matrixWorld),this.intersectsSphere(Pi)}intersectsSphere(e){const t=this.planes,n=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(n)<r)return!1;return!0}intersectsBox(e){const t=this.planes;for(let n=0;n<6;n++){const r=t[n];if(ta.x=r.normal.x>0?e.max.x:e.min.x,ta.y=r.normal.y>0?e.max.y:e.min.y,ta.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(ta)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class uh extends Nn{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Ze(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const na=new $,ia=new $,hh=new et,ss=new or,ra=new In,wl=new $,fh=new $;class Al extends At{constructor(e=new En,t=new uh){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[0];for(let r=1,s=t.count;r<s;r++)na.fromBufferAttribute(t,r-1),ia.fromBufferAttribute(t,r),n[r]=n[r-1],n[r]+=na.distanceTo(ia);e.setAttribute("lineDistance",new dn(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){const n=this.geometry,r=this.matrixWorld,s=e.params.Line.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),ra.copy(n.boundingSphere),ra.applyMatrix4(r),ra.radius+=s,e.ray.intersectsSphere(ra)===!1)return;hh.copy(r).invert(),ss.copy(e.ray).applyMatrix4(hh);const o=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=this.isLineSegments?2:1,h=n.index,f=n.attributes.position;if(h!==null){const d=Math.max(0,a.start),_=Math.min(h.count,a.start+a.count);for(let b=d,g=_-1;b<g;b+=c){const m=h.getX(b),S=h.getX(b+1),y=sa(this,e,ss,l,m,S,b);y&&t.push(y)}if(this.isLineLoop){const b=h.getX(_-1),g=h.getX(d),m=sa(this,e,ss,l,b,g,_-1);m&&t.push(m)}}else{const d=Math.max(0,a.start),_=Math.min(f.count,a.start+a.count);for(let b=d,g=_-1;b<g;b+=c){const m=sa(this,e,ss,l,b,b+1,b);m&&t.push(m)}if(this.isLineLoop){const b=sa(this,e,ss,l,_-1,d,_-1);b&&t.push(b)}}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s<a;s++){const o=r[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}}function sa(i,e,t,n,r,s,a){const o=i.geometry.attributes.position;if(na.fromBufferAttribute(o,r),ia.fromBufferAttribute(o,s),t.distanceSqToSegment(na,ia,wl,fh)>n)return;wl.applyMatrix4(i.matrixWorld);const c=e.ray.origin.distanceTo(wl);if(!(c<e.near||c>e.far))return{distance:c,point:fh.clone().applyMatrix4(i.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:i}}const dh=new $,ph=new $;class cg extends Al{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let r=0,s=t.count;r<s;r+=2)dh.fromBufferAttribute(t,r),ph.fromBufferAttribute(t,r+1),n[r]=r===0?0:n[r-1],n[r+1]=n[r]+dh.distanceTo(ph);e.setAttribute("lineDistance",new dn(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class ug extends Al{constructor(e,t){super(e,t),this.isLineLoop=!0,this.type="LineLoop"}}class mh extends Nn{constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new Ze(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}const gh=new et,Rl=new or,aa=new In,oa=new $;class hg extends At{constructor(e=new En,t=new mh){super(),this.isPoints=!0,this.type="Points",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,t){const n=this.geometry,r=this.matrixWorld,s=e.params.Points.threshold,a=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),aa.copy(n.boundingSphere),aa.applyMatrix4(r),aa.radius+=s,e.ray.intersectsSphere(aa)===!1)return;gh.copy(r).invert(),Rl.copy(e.ray).applyMatrix4(gh);const o=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=n.index,u=n.attributes.position;if(c!==null){const f=Math.max(0,a.start),d=Math.min(c.count,a.start+a.count);for(let _=f,b=d;_<b;_++){const g=c.getX(_);oa.fromBufferAttribute(u,g),_h(oa,g,l,r,e,t,this)}}else{const f=Math.max(0,a.start),d=Math.min(u.count,a.start+a.count);for(let _=f,b=d;_<b;_++)oa.fromBufferAttribute(u,_),_h(oa,_,l,r,e,t,this)}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s<a;s++){const o=r[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}}function _h(i,e,t,n,r,s,a){const o=Rl.distanceSqToPoint(i);if(o<t){const l=new $;Rl.closestPointToPoint(i,l),l.applyMatrix4(n);const c=r.ray.origin.distanceTo(l);if(c<r.near||c>r.far)return;s.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}class vh extends zt{constructor(e,t,n=Mi,r,s,a,o=Yt,l=Yt,c,h=Xr,u=1){if(h!==Xr&&h!==$r)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const f={width:e,height:t,depth:u};super(f,r,s,a,o,l,h,n,c),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Jo(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class yh extends zt{constructor(e=null){super(),this.sourceTexture=e,this.isExternalTexture=!0}copy(e){return super.copy(e),this.sourceTexture=e.sourceTexture,this}}class Cl extends En{constructor(e=1,t=32,n=0,r=Math.PI*2){super(),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:r},t=Math.max(3,t);const s=[],a=[],o=[],l=[],c=new $,h=new Ye;a.push(0,0,0),o.push(0,0,1),l.push(.5,.5);for(let u=0,f=3;u<=t;u++,f+=3){const d=n+u/t*r;c.x=e*Math.cos(d),c.y=e*Math.sin(d),a.push(c.x,c.y,c.z),o.push(0,0,1),h.x=(a[f]/e+1)/2,h.y=(a[f+1]/e+1)/2,l.push(h.x,h.y)}for(let u=1;u<=t;u++)s.push(u,u+1,0);this.setIndex(s),this.setAttribute("position",new dn(a,3)),this.setAttribute("normal",new dn(o,3)),this.setAttribute("uv",new dn(l,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Cl(e.radius,e.segments,e.thetaStart,e.thetaLength)}}class la extends En{constructor(e=1,t=1,n=1,r=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:n,heightSegments:r};const s=e/2,a=t/2,o=Math.floor(n),l=Math.floor(r),c=o+1,h=l+1,u=e/o,f=t/l,d=[],_=[],b=[],g=[];for(let m=0;m<h;m++){const S=m*f-a;for(let y=0;y<c;y++){const M=y*u-s;_.push(M,-S,0),b.push(0,0,1),g.push(y/o),g.push(1-m/l)}}for(let m=0;m<l;m++)for(let S=0;S<o;S++){const y=S+c*m,M=S+c*(m+1),T=S+1+c*(m+1),R=S+1+c*m;d.push(y,M,R),d.push(M,T,R)}this.setIndex(d),this.setAttribute("position",new dn(_,3)),this.setAttribute("normal",new dn(b,3)),this.setAttribute("uv",new dn(g,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new la(e.width,e.height,e.widthSegments,e.heightSegments)}}class as extends Nn{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new Ze(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ze(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Mu,this.normalScale=new Ye(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Un,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class On extends as{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Ye(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return it(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new Ze(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new Ze(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new Ze(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class fg extends Nn{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=tm,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class dg extends Nn{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}function ca(i,e){return!i||i.constructor===e?i:typeof e.BYTES_PER_ELEMENT=="number"?new e(i):Array.prototype.slice.call(i)}function pg(i){return ArrayBuffer.isView(i)&&!(i instanceof DataView)}function mg(i){function e(r,s){return i[r]-i[s]}const t=i.length,n=new Array(t);for(let r=0;r!==t;++r)n[r]=r;return n.sort(e),n}function xh(i,e,t){const n=i.length,r=new i.constructor(n);for(let s=0,a=0;a!==n;++s){const o=t[s]*e;for(let l=0;l!==e;++l)r[a++]=i[o+l]}return r}function bh(i,e,t,n){let r=1,s=i[0];for(;s!==void 0&&s[n]===void 0;)s=i[r++];if(s===void 0)return;let a=s[n];if(a!==void 0)if(Array.isArray(a))do a=s[n],a!==void 0&&(e.push(s.time),t.push(...a)),s=i[r++];while(s!==void 0);else if(a.toArray!==void 0)do a=s[n],a!==void 0&&(e.push(s.time),a.toArray(t,t.length)),s=i[r++];while(s!==void 0);else do a=s[n],a!==void 0&&(e.push(s.time),t.push(a)),s=i[r++];while(s!==void 0)}class os{constructor(e,t,n,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let n=this._cachedIndex,r=t[n],s=t[n-1];n:{e:{let a;t:{i:if(!(e<r)){for(let o=n+2;;){if(r===void 0){if(e<s)break i;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===o)break;if(s=r,r=t[++n],e<r)break e}a=t.length;break t}if(!(e>=s)){const o=t[1];e<o&&(n=2,s=o);for(let l=n-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===l)break;if(r=s,s=t[--n-1],e>=s)break e}a=n,n=0;break t}break n}for(;n<a;){const o=n+a>>>1;e<t[o]?a=o:n=o+1}if(r=t[n],s=t[n-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(r===void 0)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,s,r)}return this.interpolate_(n,s,e,r)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,s=e*r;for(let a=0;a!==r;++a)t[a]=n[s+a];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class gg extends os{constructor(e,t,n,r){super(e,t,n,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:yu,endingEnd:yu}}intervalChanged_(e,t,n){const r=this.parameterPositions;let s=e-2,a=e+1,o=r[s],l=r[a];if(o===void 0)switch(this.getSettings_().endingStart){case xu:s=e,o=2*t-n;break;case bu:s=r.length-2,o=t+r[s]-r[s+1];break;default:s=e,o=n}if(l===void 0)switch(this.getSettings_().endingEnd){case xu:a=e,l=2*n-t;break;case bu:a=1,l=n+r[1]-r[0];break;default:a=e-1,l=t}const c=(n-t)*.5,h=this.valueSize;this._weightPrev=c/(t-o),this._weightNext=c/(l-n),this._offsetPrev=s*h,this._offsetNext=a*h}interpolate_(e,t,n,r){const s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=e*o,c=l-o,h=this._offsetPrev,u=this._offsetNext,f=this._weightPrev,d=this._weightNext,_=(n-t)/(r-t),b=_*_,g=b*_,m=-f*g+2*f*b-f*_,S=(1+f)*g+(-1.5-2*f)*b+(-.5+f)*_+1,y=(-1-d)*g+(1.5+d)*b+.5*_,M=d*g-d*b;for(let T=0;T!==o;++T)s[T]=m*a[h+T]+S*a[c+T]+y*a[l+T]+M*a[u+T];return s}}class _g extends os{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){const s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=e*o,c=l-o,h=(n-t)/(r-t),u=1-h;for(let f=0;f!==o;++f)s[f]=a[c+f]*u+a[l+f]*h;return s}}class vg extends os{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e){return this.copySampleValue_(e-1)}}class Tn{constructor(e,t,n,r){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=ca(t,this.TimeBufferType),this.values=ca(n,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation)}static toJSON(e){const t=e.constructor;let n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:ca(e.times,Array),values:ca(e.values,Array)};const r=e.getInterpolation();r!==e.DefaultInterpolation&&(n.interpolation=r)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new vg(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new _g(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new gg(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case jr:t=this.InterpolantFactoryMethodDiscrete;break;case qr:t=this.InterpolantFactoryMethodLinear;break;case $o:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){const n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return jr;case this.InterpolantFactoryMethodLinear:return qr;case this.InterpolantFactoryMethodSmooth:return $o}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){const t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]+=e}return this}scale(e){if(e!==1){const t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]*=e}return this}trim(e,t){const n=this.times,r=n.length;let s=0,a=r-1;for(;s!==r&&n[s]<e;)++s;for(;a!==-1&&n[a]>t;)--a;if(++a,s!==0||a!==r){s>=a&&(a=Math.max(a,1),s=a-1);const o=this.getValueSize();this.times=n.slice(s,a),this.values=this.values.slice(s*o,a*o)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,r=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let o=0;o!==s;o++){const l=n[o];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(r!==void 0&&pg(r))for(let o=0,l=r.length;o!==l;++o){const c=r[o];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,c),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===$o,s=e.length-1;let a=1;for(let o=1;o<s;++o){let l=!1;const c=e[o],h=e[o+1];if(c!==h&&(o!==1||c!==e[0]))if(r)l=!0;else{const u=o*n,f=u-n,d=u+n;for(let _=0;_!==n;++_){const b=t[u+_];if(b!==t[f+_]||b!==t[d+_]){l=!0;break}}}if(l){if(o!==a){e[a]=e[o];const u=o*n,f=a*n;for(let d=0;d!==n;++d)t[f+d]=t[u+d]}++a}}if(s>0){e[a]=e[s];for(let o=s*n,l=a*n,c=0;c!==n;++c)t[l+c]=t[o+c];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*n)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Tn.prototype.ValueTypeName="",Tn.prototype.TimeBufferType=Float32Array,Tn.prototype.ValueBufferType=Float32Array,Tn.prototype.DefaultInterpolation=qr;class yr extends Tn{constructor(e,t,n){super(e,t,n)}}yr.prototype.ValueTypeName="bool",yr.prototype.ValueBufferType=Array,yr.prototype.DefaultInterpolation=jr,yr.prototype.InterpolantFactoryMethodLinear=void 0,yr.prototype.InterpolantFactoryMethodSmooth=void 0;class Sh extends Tn{constructor(e,t,n,r){super(e,t,n,r)}}Sh.prototype.ValueTypeName="color";class xr extends Tn{constructor(e,t,n,r){super(e,t,n,r)}}xr.prototype.ValueTypeName="number";class yg extends os{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){const s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=(n-t)/(r-t);let c=e*o;for(let h=c+o;c!==h;c+=4)Dn.slerpFlat(s,0,a,c-o,a,c,l);return s}}class br extends Tn{constructor(e,t,n,r){super(e,t,n,r)}InterpolantFactoryMethodLinear(e){return new yg(this.times,this.values,this.getValueSize(),e)}}br.prototype.ValueTypeName="quaternion",br.prototype.InterpolantFactoryMethodSmooth=void 0;class Sr extends Tn{constructor(e,t,n){super(e,t,n)}}Sr.prototype.ValueTypeName="string",Sr.prototype.ValueBufferType=Array,Sr.prototype.DefaultInterpolation=jr,Sr.prototype.InterpolantFactoryMethodLinear=void 0,Sr.prototype.InterpolantFactoryMethodSmooth=void 0;class Mr extends Tn{constructor(e,t,n,r){super(e,t,n,r)}}Mr.prototype.ValueTypeName="vector";class xg{constructor(e="",t=-1,n=[],r=Qp){this.name=e,this.tracks=n,this.duration=t,this.blendMode=r,this.uuid=vn(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,r=1/(e.fps||1);for(let a=0,o=n.length;a!==o;++a)t.push(Sg(n[a]).scale(r));const s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s.userData=JSON.parse(e.userData||"{}"),s}static toJSON(e){const t=[],n=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let s=0,a=n.length;s!==a;++s)t.push(Tn.toJSON(n[s]));return r}static CreateFromMorphTargetSequence(e,t,n,r){const s=t.length,a=[];for(let o=0;o<s;o++){let l=[],c=[];l.push((o+s-1)%s,o,(o+1)%s),c.push(0,1,0);const h=mg(l);l=xh(l,1,h),c=xh(c,1,h),!r&&l[0]===0&&(l.push(s),c.push(c[0])),a.push(new xr(".morphTargetInfluences["+t[o].name+"]",l,c).scale(1/n))}return new this(e,-1,a)}static findByName(e,t){let n=e;if(!Array.isArray(e)){const r=e;n=r.geometry&&r.geometry.animations||r.animations}for(let r=0;r<n.length;r++)if(n[r].name===t)return n[r];return null}static CreateClipsFromMorphTargetSequences(e,t,n){const r={},s=/^([\w-]*?)([\d]+)$/;for(let o=0,l=e.length;o<l;o++){const c=e[o],h=c.name.match(s);if(h&&h.length>1){const u=h[1];let f=r[u];f||(r[u]=f=[]),f.push(c)}}const a=[];for(const o in r)a.push(this.CreateFromMorphTargetSequence(o,r[o],t,n));return a}static parseAnimation(e,t){if(console.warn("THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(u,f,d,_,b){if(d.length!==0){const g=[],m=[];bh(d,g,m,_),g.length!==0&&b.push(new u(f,g,m))}},r=[],s=e.name||"default",a=e.fps||30,o=e.blendMode;let l=e.length||-1;const c=e.hierarchy||[];for(let u=0;u<c.length;u++){const f=c[u].keys;if(!(!f||f.length===0))if(f[0].morphTargets){const d={};let _;for(_=0;_<f.length;_++)if(f[_].morphTargets)for(let b=0;b<f[_].morphTargets.length;b++)d[f[_].morphTargets[b]]=-1;for(const b in d){const g=[],m=[];for(let S=0;S!==f[_].morphTargets.length;++S){const y=f[_];g.push(y.time),m.push(y.morphTarget===b?1:0)}r.push(new xr(".morphTargetInfluence["+b+"]",g,m))}l=d.length*a}else{const d=".bones["+t[u].name+"]";n(Mr,d+".position",f,"pos",r),n(br,d+".quaternion",f,"rot",r),n(Mr,d+".scale",f,"scl",r)}}return r.length===0?null:new this(s,l,r,o)}resetDuration(){const e=this.tracks;let t=0;for(let n=0,r=e.length;n!==r;++n){const s=this.tracks[n];t=Math.max(t,s.times[s.times.length-1])}return this.duration=t,this}trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e}optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this}clone(){const e=[];for(let n=0;n<this.tracks.length;n++)e.push(this.tracks[n].clone());const t=new this.constructor(this.name,this.duration,e,this.blendMode);return t.userData=JSON.parse(JSON.stringify(this.userData)),t}toJSON(){return this.constructor.toJSON(this)}}function bg(i){switch(i.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return xr;case"vector":case"vector2":case"vector3":case"vector4":return Mr;case"color":return Sh;case"quaternion":return br;case"bool":case"boolean":return yr;case"string":return Sr}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+i)}function Sg(i){if(i.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const e=bg(i.type);if(i.times===void 0){const t=[],n=[];bh(i.keys,t,n,"value"),i.times=t,i.values=n}return e.parse!==void 0?e.parse(i):new e(i.name,i.times,i.values,i.interpolation)}const Jn={enabled:!1,files:{},add:function(i,e){this.enabled!==!1&&(this.files[i]=e)},get:function(i){if(this.enabled!==!1)return this.files[i]},remove:function(i){delete this.files[i]},clear:function(){this.files={}}};class Mg{constructor(e,t,n){const r=this;let s=!1,a=0,o=0,l;const c=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.abortController=new AbortController,this.itemStart=function(h){o++,s===!1&&r.onStart!==void 0&&r.onStart(h,a,o),s=!0},this.itemEnd=function(h){a++,r.onProgress!==void 0&&r.onProgress(h,a,o),a===o&&(s=!1,r.onLoad!==void 0&&r.onLoad())},this.itemError=function(h){r.onError!==void 0&&r.onError(h)},this.resolveURL=function(h){return l?l(h):h},this.setURLModifier=function(h){return l=h,this},this.addHandler=function(h,u){return c.push(h,u),this},this.removeHandler=function(h){const u=c.indexOf(h);return u!==-1&&c.splice(u,2),this},this.getHandler=function(h){for(let u=0,f=c.length;u<f;u+=2){const d=c[u],_=c[u+1];if(d.global&&(d.lastIndex=0),d.test(h))return _}return null},this.abort=function(){return this.abortController.abort(),this.abortController=new AbortController,this}}}const Eg=new Mg;class Er{constructor(e){this.manager=e!==void 0?e:Eg,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){const n=this;return new Promise(function(r,s){n.load(e,r,t,s)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}abort(){return this}}Er.DEFAULT_MATERIAL_NAME="__DEFAULT";const Qn={};class Tg extends Error{constructor(e,t){super(e),this.response=t}}class Mh extends Er{constructor(e){super(e),this.mimeType="",this.responseType="",this._abortController=new AbortController}load(e,t,n,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=Jn.get(`file:${e}`);if(s!==void 0)return this.manager.itemStart(e),setTimeout(()=>{t&&t(s),this.manager.itemEnd(e)},0),s;if(Qn[e]!==void 0){Qn[e].push({onLoad:t,onProgress:n,onError:r});return}Qn[e]=[],Qn[e].push({onLoad:t,onProgress:n,onError:r});const a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const h=Qn[e],u=c.body.getReader(),f=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),d=f?parseInt(f):0,_=d!==0;let b=0;const g=new ReadableStream({start(m){S();function S(){u.read().then(({done:y,value:M})=>{if(y)m.close();else{b+=M.byteLength;const T=new ProgressEvent("progress",{lengthComputable:_,loaded:b,total:d});for(let R=0,k=h.length;R<k;R++){const B=h[R];B.onProgress&&B.onProgress(T)}m.enqueue(M),S()}},y=>{m.error(y)})}}});return new Response(g)}else throw new Tg(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(h=>new DOMParser().parseFromString(h,o));case"json":return c.json();default:if(o==="")return c.text();{const u=/charset="?([^;"\s]*)"?/i.exec(o),f=u&&u[1]?u[1].toLowerCase():void 0,d=new TextDecoder(f);return c.arrayBuffer().then(_=>d.decode(_))}}}).then(c=>{Jn.add(`file:${e}`,c);const h=Qn[e];delete Qn[e];for(let u=0,f=h.length;u<f;u++){const d=h[u];d.onLoad&&d.onLoad(c)}}).catch(c=>{const h=Qn[e];if(h===void 0)throw this.manager.itemError(e),c;delete Qn[e];for(let u=0,f=h.length;u<f;u++){const d=h[u];d.onError&&d.onError(c)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}const Tr=new WeakMap;class wg extends Er{constructor(e){super(e)}load(e,t,n,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,a=Jn.get(`image:${e}`);if(a!==void 0){if(a.complete===!0)s.manager.itemStart(e),setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);else{let u=Tr.get(a);u===void 0&&(u=[],Tr.set(a,u)),u.push({onLoad:t,onError:r})}return a}const o=Zr("img");function l(){h(),t&&t(this);const u=Tr.get(this)||[];for(let f=0;f<u.length;f++){const d=u[f];d.onLoad&&d.onLoad(this)}Tr.delete(this),s.manager.itemEnd(e)}function c(u){h(),r&&r(u),Jn.remove(`image:${e}`);const f=Tr.get(this)||[];for(let d=0;d<f.length;d++){const _=f[d];_.onError&&_.onError(u)}Tr.delete(this),s.manager.itemError(e),s.manager.itemEnd(e)}function h(){o.removeEventListener("load",l,!1),o.removeEventListener("error",c,!1)}return o.addEventListener("load",l,!1),o.addEventListener("error",c,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),Jn.add(`image:${e}`,o),s.manager.itemStart(e),o.src=e,o}}class Ag extends Er{constructor(e){super(e)}load(e,t,n,r){const s=new zt,a=new wg(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(e,function(o){s.image=o,s.needsUpdate=!0,t!==void 0&&t(s)},n,r),s}}class ua extends At{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Ze(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(t.object.target=this.target.uuid),t}}const Pl=new et,Eh=new $,Th=new $;class Dl{constructor(e){this.camera=e,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Ye(512,512),this.mapType=Cn,this.map=null,this.mapPass=null,this.matrix=new et,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Tl,this._frameExtents=new Ye(1,1),this._viewportCount=1,this._viewports=[new pt(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,n=this.matrix;Eh.setFromMatrixPosition(e.matrixWorld),t.position.copy(Eh),Th.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(Th),t.updateMatrixWorld(),Pl.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Pl,t.coordinateSystem,t.reversedDepth),t.reversedDepth?n.set(.5,0,0,.5,0,.5,0,.5,0,0,1,0,0,0,0,1):n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(Pl)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.intensity=e.intensity,this.bias=e.bias,this.radius=e.radius,this.autoUpdate=e.autoUpdate,this.needsUpdate=e.needsUpdate,this.normalBias=e.normalBias,this.blurSamples=e.blurSamples,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const e={};return this.intensity!==1&&(e.intensity=this.intensity),this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class Rg extends Dl{constructor(){super(new en(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1,this.aspect=1}updateMatrices(e){const t=this.camera,n=tr*2*e.angle*this.focus,r=this.mapSize.width/this.mapSize.height*this.aspect,s=e.distance||t.far;(n!==t.fov||r!==t.aspect||s!==t.far)&&(t.fov=n,t.aspect=r,t.far=s,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class Cg extends ua{constructor(e,t,n=0,r=Math.PI/3,s=0,a=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(At.DEFAULT_UP),this.updateMatrix(),this.target=new At,this.distance=n,this.angle=r,this.penumbra=s,this.decay=a,this.map=null,this.shadow=new Rg}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const wh=new et,ls=new $,Ll=new $;class Pg extends Dl{constructor(){super(new en(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new Ye(4,2),this._viewportCount=6,this._viewports=[new pt(2,1,1,1),new pt(0,1,1,1),new pt(3,1,1,1),new pt(1,1,1,1),new pt(3,0,1,1),new pt(1,0,1,1)],this._cubeDirections=[new $(1,0,0),new $(-1,0,0),new $(0,0,1),new $(0,0,-1),new $(0,1,0),new $(0,-1,0)],this._cubeUps=[new $(0,1,0),new $(0,1,0),new $(0,1,0),new $(0,1,0),new $(0,0,1),new $(0,0,-1)]}updateMatrices(e,t=0){const n=this.camera,r=this.matrix,s=e.distance||n.far;s!==n.far&&(n.far=s,n.updateProjectionMatrix()),ls.setFromMatrixPosition(e.matrixWorld),n.position.copy(ls),Ll.copy(n.position),Ll.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(Ll),n.updateMatrixWorld(),r.makeTranslation(-ls.x,-ls.y,-ls.z),wh.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(wh,n.coordinateSystem,n.reversedDepth)}}class Dg extends ua{constructor(e,t,n=0,r=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=r,this.shadow=new Pg}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class ha extends Ku{constructor(e=-1,t=1,n=1,r=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=r,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,r,s,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let s=n-e,a=n+e,o=r+t,l=r-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,a=s+c*this.view.width,o-=h*this.view.offsetY,l=o-h*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,l,this.near,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}class Lg extends Dl{constructor(){super(new ha(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class Il extends ua{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(At.DEFAULT_UP),this.updateMatrix(),this.target=new At,this.shadow=new Lg}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class Ig extends ua{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class cs{static extractUrlBase(e){const t=e.lastIndexOf("/");return t===-1?"./":e.slice(0,t+1)}static resolveURL(e,t){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}const Ul=new WeakMap;class Ug extends Er{constructor(e){super(e),this.isImageBitmapLoader=!0,typeof createImageBitmap>"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"},this._abortController=new AbortController}setOptions(e){return this.options=e,this}load(e,t,n,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,a=Jn.get(`image-bitmap:${e}`);if(a!==void 0){if(s.manager.itemStart(e),a.then){a.then(c=>{if(Ul.has(a)===!0)r&&r(Ul.get(a)),s.manager.itemError(e),s.manager.itemEnd(e);else return t&&t(c),s.manager.itemEnd(e),c});return}return setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0),a}const o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader,o.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;const l=fetch(e,o).then(function(c){return c.blob()}).then(function(c){return createImageBitmap(c,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(c){return Jn.add(`image-bitmap:${e}`,c),t&&t(c),s.manager.itemEnd(e),c}).catch(function(c){r&&r(c),Ul.set(l,c),Jn.remove(`image-bitmap:${e}`),s.manager.itemError(e),s.manager.itemEnd(e)});Jn.add(`image-bitmap:${e}`,l),s.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}}class Ng extends en{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}}const Nl="\\[\\]\\.:\\/",Og=new RegExp("["+Nl+"]","g"),Ol="[^"+Nl+"]",Fg="[^"+Nl.replace("\\.","")+"]",kg=/((?:WC+[\/:])*)/.source.replace("WC",Ol),Bg=/(WCOD+)?/.source.replace("WCOD",Fg),zg=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Ol),Hg=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Ol),Vg=new RegExp("^"+kg+Bg+zg+Hg+"$"),Gg=["material","materials","bones","map"];class Wg{constructor(e,t,n){const r=n||yt.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=n.length;r!==s;++r)n[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}class yt{constructor(e,t,n){this.path=t,this.parsedPath=n||yt.parseTrackName(t),this.node=yt.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new yt.Composite(e,t,n):new yt(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Og,"")}static parseTrackName(e){const t=Vg.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const s=n.nodeName.substring(r+1);Gg.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){const n=function(s){for(let a=0;a<s.length;a++){const o=s[a];if(o.name===t||o.uuid===t)return o;const l=n(o.children);if(l)return l}return null},r=n(e.children);if(r)return r}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){const n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)e[t++]=n[r]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){const n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++]}_setValue_array_setNeedsUpdate(e,t){const n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){const n=this.resolvedProperty;for(let r=0,s=n.length;r!==s;++r)n[r]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node;const t=this.parsedPath,n=t.objectName,r=t.propertyName;let s=t.propertyIndex;if(e||(e=yt.findNode(this.rootNode,t.nodeName),this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");return}if(n){let c=t.objectIndex;switch(n){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let h=0;h<e.length;h++)if(e[h].name===c){c=h;break}break;case"map":if("map"in e){e=e.map;break}if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}e=e.material.map;break;default:if(e[n]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[n]}if(c!==void 0){if(e[c]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[c]}}const a=e[r];if(a===void 0){const c=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+c+"."+r+" but it wasn't found.",e);return}let o=this.Versioning.None;this.targetObject=e,e.isMaterial===!0?o=this.Versioning.NeedsUpdate:e.isObject3D===!0&&(o=this.Versioning.MatrixWorldNeedsUpdate);let l=this.BindingType.Direct;if(s!==void 0){if(r==="morphTargetInfluences"){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}e.morphTargetDictionary[s]!==void 0&&(s=e.morphTargetDictionary[s])}l=this.BindingType.ArrayElement,this.resolvedProperty=a,this.propertyIndex=s}else a.fromArray!==void 0&&a.toArray!==void 0?(l=this.BindingType.HasFromToArray,this.resolvedProperty=a):Array.isArray(a)?(l=this.BindingType.EntireArray,this.resolvedProperty=a):this.propertyName=r;this.getValue=this.GetterByBindingType[l],this.setValue=this.SetterByBindingTypeAndVersioning[l][o]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}yt.Composite=Wg,yt.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},yt.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},yt.prototype.GetterByBindingType=[yt.prototype._getValue_direct,yt.prototype._getValue_array,yt.prototype._getValue_arrayElement,yt.prototype._getValue_toArray],yt.prototype.SetterByBindingTypeAndVersioning=[[yt.prototype._setValue_direct,yt.prototype._setValue_direct_setNeedsUpdate,yt.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_array,yt.prototype._setValue_array_setNeedsUpdate,yt.prototype._setValue_array_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_arrayElement,yt.prototype._setValue_arrayElement_setNeedsUpdate,yt.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[yt.prototype._setValue_fromArray,yt.prototype._setValue_fromArray_setNeedsUpdate,yt.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];const Ah=new et;class Xg{constructor(e,t,n=0,r=1/0){this.ray=new or(e,t),this.near=n,this.far=r,this.camera=null,this.layers=new al,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}setFromXRController(e){return Ah.identity().extractRotation(e.matrixWorld),this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(Ah),this}intersectObject(e,t=!0,n=[]){return Fl(e,this,n,t),n.sort(Rh),n}intersectObjects(e,t=!0,n=[]){for(let r=0,s=e.length;r<s;r++)Fl(e[r],this,n,t);return n.sort(Rh),n}}function Rh(i,e){return i.distance-e.distance}function Fl(i,e,t,n){let r=!0;if(i.layers.test(e.layers)&&i.raycast(e,t)===!1&&(r=!1),r===!0&&n===!0){const s=i.children;for(let a=0,o=s.length;a<o;a++)Fl(s[a],e,t,!0)}}class Ch{constructor(e=1,t=0,n=0){this.radius=e,this.phi=t,this.theta=n}set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=it(this.phi,1e-6,Math.PI-1e-6),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(it(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}class $g extends Ei{constructor(e,t=null){super(),this.object=e,this.domElement=t,this.enabled=!0,this.state=-1,this.keys={},this.mouseButtons={LEFT:null,MIDDLE:null,RIGHT:null},this.touches={ONE:null,TWO:null}}connect(e){if(e===void 0){console.warn("THREE.Controls: connect() now requires an element.");return}this.domElement!==null&&this.disconnect(),this.domElement=e}disconnect(){}dispose(){}update(){}}function Ph(i,e,t,n){const r=jg(n);switch(t){case gu:return i*e;case po:return i*e/r.components*r.byteLength;case mo:return i*e/r.components*r.byteLength;case vu:return i*e*2/r.components*r.byteLength;case go:return i*e*2/r.components*r.byteLength;case _u:return i*e*3/r.components*r.byteLength;case fn:return i*e*4/r.components*r.byteLength;case _o:return i*e*4/r.components*r.byteLength;case Ds:case Ls:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*8;case Is:case Us:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case yo:case bo:return Math.max(i,16)*Math.max(e,8)/4;case vo:case xo:return Math.max(i,8)*Math.max(e,8)/2;case So:case Mo:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*8;case Eo:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case To:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case wo:return Math.floor((i+4)/5)*Math.floor((e+3)/4)*16;case Ao:return Math.floor((i+4)/5)*Math.floor((e+4)/5)*16;case Ro:return Math.floor((i+5)/6)*Math.floor((e+4)/5)*16;case Co:return Math.floor((i+5)/6)*Math.floor((e+5)/6)*16;case Po:return Math.floor((i+7)/8)*Math.floor((e+4)/5)*16;case Do:return Math.floor((i+7)/8)*Math.floor((e+5)/6)*16;case Lo:return Math.floor((i+7)/8)*Math.floor((e+7)/8)*16;case Io:return Math.floor((i+9)/10)*Math.floor((e+4)/5)*16;case Uo:return Math.floor((i+9)/10)*Math.floor((e+5)/6)*16;case No:return Math.floor((i+9)/10)*Math.floor((e+7)/8)*16;case Oo:return Math.floor((i+9)/10)*Math.floor((e+9)/10)*16;case Fo:return Math.floor((i+11)/12)*Math.floor((e+9)/10)*16;case ko:return Math.floor((i+11)/12)*Math.floor((e+11)/12)*16;case Bo:case zo:case Ho:return Math.ceil(i/4)*Math.ceil(e/4)*16;case Vo:case Go:return Math.ceil(i/4)*Math.ceil(e/4)*8;case Wo:case Xo:return Math.ceil(i/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function jg(i){switch(i){case Cn:case fu:return{byteLength:1,components:1};case Vr:case du:case Gr:return{byteLength:2,components:1};case ho:case fo:return{byteLength:2,components:4};case Mi:case uo:case _n:return{byteLength:4,components:1};case pu:case mu:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${i}.`)}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:Ja}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=Ja);/**
|
|
78
78
|
* @license
|
|
79
79
|
* Copyright 2010-2025 Three.js Authors
|
|
80
80
|
* SPDX-License-Identifier: MIT
|
|
81
|
-
*/function
|
|
81
|
+
*/function Dh(){let i=null,e=!1,t=null,n=null;function r(s,a){t(s,a),n=i.requestAnimationFrame(r)}return{start:function(){e!==!0&&t!==null&&(n=i.requestAnimationFrame(r),e=!0)},stop:function(){i.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){i=s}}}function qg(i){const e=new WeakMap;function t(o,l){const c=o.array,h=o.usage,u=c.byteLength,f=i.createBuffer();i.bindBuffer(l,f),i.bufferData(l,c,h),o.onUploadCallback();let d;if(c instanceof Float32Array)d=i.FLOAT;else if(typeof Float16Array<"u"&&c instanceof Float16Array)d=i.HALF_FLOAT;else if(c instanceof Uint16Array)o.isFloat16BufferAttribute?d=i.HALF_FLOAT:d=i.UNSIGNED_SHORT;else if(c instanceof Int16Array)d=i.SHORT;else if(c instanceof Uint32Array)d=i.UNSIGNED_INT;else if(c instanceof Int32Array)d=i.INT;else if(c instanceof Int8Array)d=i.BYTE;else if(c instanceof Uint8Array)d=i.UNSIGNED_BYTE;else if(c instanceof Uint8ClampedArray)d=i.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+c);return{buffer:f,type:d,bytesPerElement:c.BYTES_PER_ELEMENT,version:o.version,size:u}}function n(o,l,c){const h=l.array,u=l.updateRanges;if(i.bindBuffer(c,o),u.length===0)i.bufferSubData(c,0,h);else{u.sort((d,_)=>d.start-_.start);let f=0;for(let d=1;d<u.length;d++){const _=u[f],b=u[d];b.start<=_.start+_.count+1?_.count=Math.max(_.count,b.start+b.count-_.start):(++f,u[f]=b)}u.length=f+1;for(let d=0,_=u.length;d<_;d++){const b=u[d];i.bufferSubData(c,b.start*h.BYTES_PER_ELEMENT,h,b.start,b.count)}l.clearUpdateRanges()}l.onUploadCallback()}function r(o){return o.isInterleavedBufferAttribute&&(o=o.data),e.get(o)}function s(o){o.isInterleavedBufferAttribute&&(o=o.data);const l=e.get(o);l&&(i.deleteBuffer(l.buffer),e.delete(o))}function a(o,l){if(o.isInterleavedBufferAttribute&&(o=o.data),o.isGLBufferAttribute){const h=e.get(o);(!h||h.version<o.version)&&e.set(o,{buffer:o.buffer,type:o.type,bytesPerElement:o.elementSize,version:o.version});return}const c=e.get(o);if(c===void 0)e.set(o,t(o,l));else if(c.version<o.version){if(c.size!==o.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");n(c.buffer,o,l),c.version=o.version}}return{get:r,remove:s,update:a}}var Yg=`#ifdef USE_ALPHAHASH
|
|
82
82
|
if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;
|
|
83
|
-
#endif`,
|
|
83
|
+
#endif`,Kg=`#ifdef USE_ALPHAHASH
|
|
84
84
|
const float ALPHA_HASH_SCALE = 0.05;
|
|
85
85
|
float hash2D( vec2 value ) {
|
|
86
86
|
return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );
|
|
@@ -115,20 +115,20 @@
|
|
|
115
115
|
: cases.z;
|
|
116
116
|
return clamp( threshold , 1.0e-6, 1.0 );
|
|
117
117
|
}
|
|
118
|
-
#endif`,
|
|
118
|
+
#endif`,Zg=`#ifdef USE_ALPHAMAP
|
|
119
119
|
diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;
|
|
120
|
-
#endif`,
|
|
120
|
+
#endif`,Jg=`#ifdef USE_ALPHAMAP
|
|
121
121
|
uniform sampler2D alphaMap;
|
|
122
|
-
#endif`,
|
|
122
|
+
#endif`,Qg=`#ifdef USE_ALPHATEST
|
|
123
123
|
#ifdef ALPHA_TO_COVERAGE
|
|
124
124
|
diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );
|
|
125
125
|
if ( diffuseColor.a == 0.0 ) discard;
|
|
126
126
|
#else
|
|
127
127
|
if ( diffuseColor.a < alphaTest ) discard;
|
|
128
128
|
#endif
|
|
129
|
-
#endif`,
|
|
129
|
+
#endif`,e_=`#ifdef USE_ALPHATEST
|
|
130
130
|
uniform float alphaTest;
|
|
131
|
-
#endif`,
|
|
131
|
+
#endif`,t_=`#ifdef USE_AOMAP
|
|
132
132
|
float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;
|
|
133
133
|
reflectedLight.indirectDiffuse *= ambientOcclusion;
|
|
134
134
|
#if defined( USE_CLEARCOAT )
|
|
@@ -141,10 +141,10 @@
|
|
|
141
141
|
float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );
|
|
142
142
|
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
|
|
143
143
|
#endif
|
|
144
|
-
#endif`,
|
|
144
|
+
#endif`,n_=`#ifdef USE_AOMAP
|
|
145
145
|
uniform sampler2D aoMap;
|
|
146
146
|
uniform float aoMapIntensity;
|
|
147
|
-
#endif`,
|
|
147
|
+
#endif`,i_=`#ifdef USE_BATCHING
|
|
148
148
|
#if ! defined( GL_ANGLE_multi_draw )
|
|
149
149
|
#define gl_DrawID _gl_DrawID
|
|
150
150
|
uniform int _gl_DrawID;
|
|
@@ -178,15 +178,15 @@
|
|
|
178
178
|
int y = j / size;
|
|
179
179
|
return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;
|
|
180
180
|
}
|
|
181
|
-
#endif`,
|
|
181
|
+
#endif`,r_=`#ifdef USE_BATCHING
|
|
182
182
|
mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );
|
|
183
|
-
#endif`,
|
|
183
|
+
#endif`,s_=`vec3 transformed = vec3( position );
|
|
184
184
|
#ifdef USE_ALPHAHASH
|
|
185
185
|
vPosition = vec3( position );
|
|
186
|
-
#endif`,
|
|
186
|
+
#endif`,a_=`vec3 objectNormal = vec3( normal );
|
|
187
187
|
#ifdef USE_TANGENT
|
|
188
188
|
vec3 objectTangent = vec3( tangent.xyz );
|
|
189
|
-
#endif`,
|
|
189
|
+
#endif`,o_=`float G_BlinnPhong_Implicit( ) {
|
|
190
190
|
return 0.25;
|
|
191
191
|
}
|
|
192
192
|
float D_BlinnPhong( const in float shininess, const in float dotNH ) {
|
|
@@ -200,7 +200,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
|
|
|
200
200
|
float G = G_BlinnPhong_Implicit( );
|
|
201
201
|
float D = D_BlinnPhong( shininess, dotNH );
|
|
202
202
|
return F * ( G * D );
|
|
203
|
-
} // validated`,
|
|
203
|
+
} // validated`,l_=`#ifdef USE_IRIDESCENCE
|
|
204
204
|
const mat3 XYZ_TO_REC709 = mat3(
|
|
205
205
|
3.2404542, -0.9692660, 0.0556434,
|
|
206
206
|
-1.5371385, 1.8760108, -0.2040259,
|
|
@@ -263,7 +263,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
|
|
|
263
263
|
}
|
|
264
264
|
return max( I, vec3( 0.0 ) );
|
|
265
265
|
}
|
|
266
|
-
#endif`,
|
|
266
|
+
#endif`,c_=`#ifdef USE_BUMPMAP
|
|
267
267
|
uniform sampler2D bumpMap;
|
|
268
268
|
uniform float bumpScale;
|
|
269
269
|
vec2 dHdxy_fwd() {
|
|
@@ -284,7 +284,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
|
|
|
284
284
|
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
|
|
285
285
|
return normalize( abs( fDet ) * surf_norm - vGrad );
|
|
286
286
|
}
|
|
287
|
-
#endif`,
|
|
287
|
+
#endif`,u_=`#if NUM_CLIPPING_PLANES > 0
|
|
288
288
|
vec4 plane;
|
|
289
289
|
#ifdef ALPHA_TO_COVERAGE
|
|
290
290
|
float distanceToPlane, distanceGradient;
|
|
@@ -330,26 +330,26 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
|
|
|
330
330
|
if ( clipped ) discard;
|
|
331
331
|
#endif
|
|
332
332
|
#endif
|
|
333
|
-
#endif`,
|
|
333
|
+
#endif`,h_=`#if NUM_CLIPPING_PLANES > 0
|
|
334
334
|
varying vec3 vClipPosition;
|
|
335
335
|
uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
|
|
336
|
-
#endif`,
|
|
336
|
+
#endif`,f_=`#if NUM_CLIPPING_PLANES > 0
|
|
337
337
|
varying vec3 vClipPosition;
|
|
338
|
-
#endif`,
|
|
338
|
+
#endif`,d_=`#if NUM_CLIPPING_PLANES > 0
|
|
339
339
|
vClipPosition = - mvPosition.xyz;
|
|
340
|
-
#endif`,
|
|
340
|
+
#endif`,p_=`#if defined( USE_COLOR_ALPHA )
|
|
341
341
|
diffuseColor *= vColor;
|
|
342
342
|
#elif defined( USE_COLOR )
|
|
343
343
|
diffuseColor.rgb *= vColor;
|
|
344
|
-
#endif`,
|
|
344
|
+
#endif`,m_=`#if defined( USE_COLOR_ALPHA )
|
|
345
345
|
varying vec4 vColor;
|
|
346
346
|
#elif defined( USE_COLOR )
|
|
347
347
|
varying vec3 vColor;
|
|
348
|
-
#endif`,
|
|
348
|
+
#endif`,g_=`#if defined( USE_COLOR_ALPHA )
|
|
349
349
|
varying vec4 vColor;
|
|
350
350
|
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )
|
|
351
351
|
varying vec3 vColor;
|
|
352
|
-
#endif`,
|
|
352
|
+
#endif`,__=`#if defined( USE_COLOR_ALPHA )
|
|
353
353
|
vColor = vec4( 1.0 );
|
|
354
354
|
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )
|
|
355
355
|
vColor = vec3( 1.0 );
|
|
@@ -363,7 +363,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
|
|
|
363
363
|
#ifdef USE_BATCHING_COLOR
|
|
364
364
|
vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );
|
|
365
365
|
vColor.xyz *= batchingColor.xyz;
|
|
366
|
-
#endif`,
|
|
366
|
+
#endif`,v_=`#define PI 3.141592653589793
|
|
367
367
|
#define PI2 6.283185307179586
|
|
368
368
|
#define PI_HALF 1.5707963267948966
|
|
369
369
|
#define RECIPROCAL_PI 0.3183098861837907
|
|
@@ -437,7 +437,7 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
|
|
|
437
437
|
float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
|
|
438
438
|
float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
|
|
439
439
|
return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
|
|
440
|
-
} // validated`,
|
|
440
|
+
} // validated`,y_=`#ifdef ENVMAP_TYPE_CUBE_UV
|
|
441
441
|
#define cubeUV_minMipLevel 4.0
|
|
442
442
|
#define cubeUV_minTileSize 16.0
|
|
443
443
|
float getFace( vec3 direction ) {
|
|
@@ -530,7 +530,7 @@ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
|
|
|
530
530
|
return vec4( mix( color0, color1, mipF ), 1.0 );
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
|
-
#endif`,
|
|
533
|
+
#endif`,x_=`vec3 transformedNormal = objectNormal;
|
|
534
534
|
#ifdef USE_TANGENT
|
|
535
535
|
vec3 transformedTangent = objectTangent;
|
|
536
536
|
#endif
|
|
@@ -559,21 +559,21 @@ transformedNormal = normalMatrix * transformedNormal;
|
|
|
559
559
|
#ifdef FLIP_SIDED
|
|
560
560
|
transformedTangent = - transformedTangent;
|
|
561
561
|
#endif
|
|
562
|
-
#endif`,
|
|
562
|
+
#endif`,b_=`#ifdef USE_DISPLACEMENTMAP
|
|
563
563
|
uniform sampler2D displacementMap;
|
|
564
564
|
uniform float displacementScale;
|
|
565
565
|
uniform float displacementBias;
|
|
566
|
-
#endif`,
|
|
566
|
+
#endif`,S_=`#ifdef USE_DISPLACEMENTMAP
|
|
567
567
|
transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );
|
|
568
|
-
#endif`,
|
|
568
|
+
#endif`,M_=`#ifdef USE_EMISSIVEMAP
|
|
569
569
|
vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );
|
|
570
570
|
#ifdef DECODE_VIDEO_TEXTURE_EMISSIVE
|
|
571
571
|
emissiveColor = sRGBTransferEOTF( emissiveColor );
|
|
572
572
|
#endif
|
|
573
573
|
totalEmissiveRadiance *= emissiveColor.rgb;
|
|
574
|
-
#endif`,
|
|
574
|
+
#endif`,E_=`#ifdef USE_EMISSIVEMAP
|
|
575
575
|
uniform sampler2D emissiveMap;
|
|
576
|
-
#endif`,
|
|
576
|
+
#endif`,T_="gl_FragColor = linearToOutputTexel( gl_FragColor );",w_=`vec4 LinearTransferOETF( in vec4 value ) {
|
|
577
577
|
return value;
|
|
578
578
|
}
|
|
579
579
|
vec4 sRGBTransferEOTF( in vec4 value ) {
|
|
@@ -581,7 +581,7 @@ vec4 sRGBTransferEOTF( in vec4 value ) {
|
|
|
581
581
|
}
|
|
582
582
|
vec4 sRGBTransferOETF( in vec4 value ) {
|
|
583
583
|
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
|
|
584
|
-
}`,
|
|
584
|
+
}`,A_=`#ifdef USE_ENVMAP
|
|
585
585
|
#ifdef ENV_WORLDPOS
|
|
586
586
|
vec3 cameraToFrag;
|
|
587
587
|
if ( isOrthographic ) {
|
|
@@ -610,7 +610,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
|
|
|
610
610
|
#elif defined( ENVMAP_BLENDING_ADD )
|
|
611
611
|
outgoingLight += envColor.xyz * specularStrength * reflectivity;
|
|
612
612
|
#endif
|
|
613
|
-
#endif`,
|
|
613
|
+
#endif`,R_=`#ifdef USE_ENVMAP
|
|
614
614
|
uniform float envMapIntensity;
|
|
615
615
|
uniform float flipEnvMap;
|
|
616
616
|
uniform mat3 envMapRotation;
|
|
@@ -620,7 +620,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
|
|
|
620
620
|
uniform sampler2D envMap;
|
|
621
621
|
#endif
|
|
622
622
|
|
|
623
|
-
#endif`,
|
|
623
|
+
#endif`,C_=`#ifdef USE_ENVMAP
|
|
624
624
|
uniform float reflectivity;
|
|
625
625
|
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
|
|
626
626
|
#define ENV_WORLDPOS
|
|
@@ -631,7 +631,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
|
|
|
631
631
|
#else
|
|
632
632
|
varying vec3 vReflect;
|
|
633
633
|
#endif
|
|
634
|
-
#endif`,
|
|
634
|
+
#endif`,P_=`#ifdef USE_ENVMAP
|
|
635
635
|
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
|
|
636
636
|
#define ENV_WORLDPOS
|
|
637
637
|
#endif
|
|
@@ -642,7 +642,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
|
|
|
642
642
|
varying vec3 vReflect;
|
|
643
643
|
uniform float refractionRatio;
|
|
644
644
|
#endif
|
|
645
|
-
#endif`,
|
|
645
|
+
#endif`,D_=`#ifdef USE_ENVMAP
|
|
646
646
|
#ifdef ENV_WORLDPOS
|
|
647
647
|
vWorldPosition = worldPosition.xyz;
|
|
648
648
|
#else
|
|
@@ -659,18 +659,18 @@ vec4 sRGBTransferOETF( in vec4 value ) {
|
|
|
659
659
|
vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
|
|
660
660
|
#endif
|
|
661
661
|
#endif
|
|
662
|
-
#endif`,
|
|
662
|
+
#endif`,L_=`#ifdef USE_FOG
|
|
663
663
|
vFogDepth = - mvPosition.z;
|
|
664
|
-
#endif`,
|
|
664
|
+
#endif`,I_=`#ifdef USE_FOG
|
|
665
665
|
varying float vFogDepth;
|
|
666
|
-
#endif`,
|
|
666
|
+
#endif`,U_=`#ifdef USE_FOG
|
|
667
667
|
#ifdef FOG_EXP2
|
|
668
668
|
float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );
|
|
669
669
|
#else
|
|
670
670
|
float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );
|
|
671
671
|
#endif
|
|
672
672
|
gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
|
|
673
|
-
#endif`,
|
|
673
|
+
#endif`,N_=`#ifdef USE_FOG
|
|
674
674
|
uniform vec3 fogColor;
|
|
675
675
|
varying float vFogDepth;
|
|
676
676
|
#ifdef FOG_EXP2
|
|
@@ -679,7 +679,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
|
|
|
679
679
|
uniform float fogNear;
|
|
680
680
|
uniform float fogFar;
|
|
681
681
|
#endif
|
|
682
|
-
#endif`,
|
|
682
|
+
#endif`,O_=`#ifdef USE_GRADIENTMAP
|
|
683
683
|
uniform sampler2D gradientMap;
|
|
684
684
|
#endif
|
|
685
685
|
vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
|
|
@@ -691,12 +691,12 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
|
|
|
691
691
|
vec2 fw = fwidth( coord ) * 0.5;
|
|
692
692
|
return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );
|
|
693
693
|
#endif
|
|
694
|
-
}`,
|
|
694
|
+
}`,F_=`#ifdef USE_LIGHTMAP
|
|
695
695
|
uniform sampler2D lightMap;
|
|
696
696
|
uniform float lightMapIntensity;
|
|
697
|
-
#endif`,
|
|
697
|
+
#endif`,k_=`LambertMaterial material;
|
|
698
698
|
material.diffuseColor = diffuseColor.rgb;
|
|
699
|
-
material.specularStrength = specularStrength;`,
|
|
699
|
+
material.specularStrength = specularStrength;`,B_=`varying vec3 vViewPosition;
|
|
700
700
|
struct LambertMaterial {
|
|
701
701
|
vec3 diffuseColor;
|
|
702
702
|
float specularStrength;
|
|
@@ -710,7 +710,7 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometr
|
|
|
710
710
|
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
711
711
|
}
|
|
712
712
|
#define RE_Direct RE_Direct_Lambert
|
|
713
|
-
#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,
|
|
713
|
+
#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,z_=`uniform bool receiveShadow;
|
|
714
714
|
uniform vec3 ambientLightColor;
|
|
715
715
|
#if defined( USE_LIGHT_PROBES )
|
|
716
716
|
uniform vec3 lightProbe[ 9 ];
|
|
@@ -826,7 +826,7 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi
|
|
|
826
826
|
vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );
|
|
827
827
|
return irradiance;
|
|
828
828
|
}
|
|
829
|
-
#endif`,
|
|
829
|
+
#endif`,H_=`#ifdef USE_ENVMAP
|
|
830
830
|
vec3 getIBLIrradiance( const in vec3 normal ) {
|
|
831
831
|
#ifdef ENVMAP_TYPE_CUBE_UV
|
|
832
832
|
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
|
|
@@ -859,8 +859,8 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi
|
|
|
859
859
|
#endif
|
|
860
860
|
}
|
|
861
861
|
#endif
|
|
862
|
-
#endif`,
|
|
863
|
-
material.diffuseColor = diffuseColor.rgb;`,
|
|
862
|
+
#endif`,V_=`ToonMaterial material;
|
|
863
|
+
material.diffuseColor = diffuseColor.rgb;`,G_=`varying vec3 vViewPosition;
|
|
864
864
|
struct ToonMaterial {
|
|
865
865
|
vec3 diffuseColor;
|
|
866
866
|
};
|
|
@@ -872,11 +872,11 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPo
|
|
|
872
872
|
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
873
873
|
}
|
|
874
874
|
#define RE_Direct RE_Direct_Toon
|
|
875
|
-
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,
|
|
875
|
+
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,W_=`BlinnPhongMaterial material;
|
|
876
876
|
material.diffuseColor = diffuseColor.rgb;
|
|
877
877
|
material.specularColor = specular;
|
|
878
878
|
material.specularShininess = shininess;
|
|
879
|
-
material.specularStrength = specularStrength;`,
|
|
879
|
+
material.specularStrength = specularStrength;`,X_=`varying vec3 vViewPosition;
|
|
880
880
|
struct BlinnPhongMaterial {
|
|
881
881
|
vec3 diffuseColor;
|
|
882
882
|
vec3 specularColor;
|
|
@@ -893,7 +893,7 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geom
|
|
|
893
893
|
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
894
894
|
}
|
|
895
895
|
#define RE_Direct RE_Direct_BlinnPhong
|
|
896
|
-
#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong
|
|
896
|
+
#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,$_=`PhysicalMaterial material;
|
|
897
897
|
material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
|
|
898
898
|
vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );
|
|
899
899
|
float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );
|
|
@@ -979,7 +979,7 @@ material.roughness = min( material.roughness, 1.0 );
|
|
|
979
979
|
material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );
|
|
980
980
|
material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;
|
|
981
981
|
material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;
|
|
982
|
-
#endif`,
|
|
982
|
+
#endif`,j_=`struct PhysicalMaterial {
|
|
983
983
|
vec3 diffuseColor;
|
|
984
984
|
float roughness;
|
|
985
985
|
vec3 specularColor;
|
|
@@ -1280,7 +1280,7 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia
|
|
|
1280
1280
|
#define RE_IndirectSpecular RE_IndirectSpecular_Physical
|
|
1281
1281
|
float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {
|
|
1282
1282
|
return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );
|
|
1283
|
-
}
|
|
1283
|
+
}`,q_=`
|
|
1284
1284
|
vec3 geometryPosition = - vViewPosition;
|
|
1285
1285
|
vec3 geometryNormal = normal;
|
|
1286
1286
|
vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
|
|
@@ -1395,7 +1395,7 @@ IncidentLight directLight;
|
|
|
1395
1395
|
#if defined( RE_IndirectSpecular )
|
|
1396
1396
|
vec3 radiance = vec3( 0.0 );
|
|
1397
1397
|
vec3 clearcoatRadiance = vec3( 0.0 );
|
|
1398
|
-
#endif`,
|
|
1398
|
+
#endif`,Y_=`#if defined( RE_IndirectDiffuse )
|
|
1399
1399
|
#ifdef USE_LIGHTMAP
|
|
1400
1400
|
vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );
|
|
1401
1401
|
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
|
@@ -1414,32 +1414,32 @@ IncidentLight directLight;
|
|
|
1414
1414
|
#ifdef USE_CLEARCOAT
|
|
1415
1415
|
clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );
|
|
1416
1416
|
#endif
|
|
1417
|
-
#endif`,
|
|
1417
|
+
#endif`,K_=`#if defined( RE_IndirectDiffuse )
|
|
1418
1418
|
RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
|
|
1419
1419
|
#endif
|
|
1420
1420
|
#if defined( RE_IndirectSpecular )
|
|
1421
1421
|
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
|
|
1422
|
-
#endif`,
|
|
1422
|
+
#endif`,Z_=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER )
|
|
1423
1423
|
gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
|
|
1424
|
-
#endif`,
|
|
1424
|
+
#endif`,J_=`#if defined( USE_LOGARITHMIC_DEPTH_BUFFER )
|
|
1425
1425
|
uniform float logDepthBufFC;
|
|
1426
1426
|
varying float vFragDepth;
|
|
1427
1427
|
varying float vIsPerspective;
|
|
1428
|
-
#endif`,
|
|
1428
|
+
#endif`,Q_=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER
|
|
1429
1429
|
varying float vFragDepth;
|
|
1430
1430
|
varying float vIsPerspective;
|
|
1431
|
-
#endif`,
|
|
1431
|
+
#endif`,ev=`#ifdef USE_LOGARITHMIC_DEPTH_BUFFER
|
|
1432
1432
|
vFragDepth = 1.0 + gl_Position.w;
|
|
1433
1433
|
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
|
|
1434
|
-
#endif`,
|
|
1434
|
+
#endif`,tv=`#ifdef USE_MAP
|
|
1435
1435
|
vec4 sampledDiffuseColor = texture2D( map, vMapUv );
|
|
1436
1436
|
#ifdef DECODE_VIDEO_TEXTURE
|
|
1437
1437
|
sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );
|
|
1438
1438
|
#endif
|
|
1439
1439
|
diffuseColor *= sampledDiffuseColor;
|
|
1440
|
-
#endif`,
|
|
1440
|
+
#endif`,nv=`#ifdef USE_MAP
|
|
1441
1441
|
uniform sampler2D map;
|
|
1442
|
-
#endif`,
|
|
1442
|
+
#endif`,iv=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
|
1443
1443
|
#if defined( USE_POINTS_UV )
|
|
1444
1444
|
vec2 uv = vUv;
|
|
1445
1445
|
#else
|
|
@@ -1451,7 +1451,7 @@ IncidentLight directLight;
|
|
|
1451
1451
|
#endif
|
|
1452
1452
|
#ifdef USE_ALPHAMAP
|
|
1453
1453
|
diffuseColor.a *= texture2D( alphaMap, uv ).g;
|
|
1454
|
-
#endif`,
|
|
1454
|
+
#endif`,rv=`#if defined( USE_POINTS_UV )
|
|
1455
1455
|
varying vec2 vUv;
|
|
1456
1456
|
#else
|
|
1457
1457
|
#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
|
@@ -1463,19 +1463,19 @@ IncidentLight directLight;
|
|
|
1463
1463
|
#endif
|
|
1464
1464
|
#ifdef USE_ALPHAMAP
|
|
1465
1465
|
uniform sampler2D alphaMap;
|
|
1466
|
-
#endif`,
|
|
1466
|
+
#endif`,sv=`float metalnessFactor = metalness;
|
|
1467
1467
|
#ifdef USE_METALNESSMAP
|
|
1468
1468
|
vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );
|
|
1469
1469
|
metalnessFactor *= texelMetalness.b;
|
|
1470
|
-
#endif`,
|
|
1470
|
+
#endif`,av=`#ifdef USE_METALNESSMAP
|
|
1471
1471
|
uniform sampler2D metalnessMap;
|
|
1472
|
-
#endif`,
|
|
1472
|
+
#endif`,ov=`#ifdef USE_INSTANCING_MORPH
|
|
1473
1473
|
float morphTargetInfluences[ MORPHTARGETS_COUNT ];
|
|
1474
1474
|
float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;
|
|
1475
1475
|
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
|
|
1476
1476
|
morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;
|
|
1477
1477
|
}
|
|
1478
|
-
#endif`,
|
|
1478
|
+
#endif`,lv=`#if defined( USE_MORPHCOLORS )
|
|
1479
1479
|
vColor *= morphTargetBaseInfluence;
|
|
1480
1480
|
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
|
|
1481
1481
|
#if defined( USE_COLOR_ALPHA )
|
|
@@ -1484,12 +1484,12 @@ IncidentLight directLight;
|
|
|
1484
1484
|
if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];
|
|
1485
1485
|
#endif
|
|
1486
1486
|
}
|
|
1487
|
-
#endif`,
|
|
1487
|
+
#endif`,cv=`#ifdef USE_MORPHNORMALS
|
|
1488
1488
|
objectNormal *= morphTargetBaseInfluence;
|
|
1489
1489
|
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
|
|
1490
1490
|
if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];
|
|
1491
1491
|
}
|
|
1492
|
-
#endif`,
|
|
1492
|
+
#endif`,uv=`#ifdef USE_MORPHTARGETS
|
|
1493
1493
|
#ifndef USE_INSTANCING_MORPH
|
|
1494
1494
|
uniform float morphTargetBaseInfluence;
|
|
1495
1495
|
uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
|
|
@@ -1503,12 +1503,12 @@ IncidentLight directLight;
|
|
|
1503
1503
|
ivec3 morphUV = ivec3( x, y, morphTargetIndex );
|
|
1504
1504
|
return texelFetch( morphTargetsTexture, morphUV, 0 );
|
|
1505
1505
|
}
|
|
1506
|
-
#endif`,
|
|
1506
|
+
#endif`,hv=`#ifdef USE_MORPHTARGETS
|
|
1507
1507
|
transformed *= morphTargetBaseInfluence;
|
|
1508
1508
|
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
|
|
1509
1509
|
if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];
|
|
1510
1510
|
}
|
|
1511
|
-
#endif`,
|
|
1511
|
+
#endif`,fv=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
|
|
1512
1512
|
#ifdef FLAT_SHADED
|
|
1513
1513
|
vec3 fdx = dFdx( vViewPosition );
|
|
1514
1514
|
vec3 fdy = dFdy( vViewPosition );
|
|
@@ -1549,7 +1549,7 @@ IncidentLight directLight;
|
|
|
1549
1549
|
tbn2[1] *= faceDirection;
|
|
1550
1550
|
#endif
|
|
1551
1551
|
#endif
|
|
1552
|
-
vec3 nonPerturbedNormal = normal;`,
|
|
1552
|
+
vec3 nonPerturbedNormal = normal;`,dv=`#ifdef USE_NORMALMAP_OBJECTSPACE
|
|
1553
1553
|
normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;
|
|
1554
1554
|
#ifdef FLIP_SIDED
|
|
1555
1555
|
normal = - normal;
|
|
@@ -1564,25 +1564,25 @@ vec3 nonPerturbedNormal = normal;`,hv=`#ifdef USE_NORMALMAP_OBJECTSPACE
|
|
|
1564
1564
|
normal = normalize( tbn * mapN );
|
|
1565
1565
|
#elif defined( USE_BUMPMAP )
|
|
1566
1566
|
normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
|
|
1567
|
-
#endif`,
|
|
1567
|
+
#endif`,pv=`#ifndef FLAT_SHADED
|
|
1568
1568
|
varying vec3 vNormal;
|
|
1569
1569
|
#ifdef USE_TANGENT
|
|
1570
1570
|
varying vec3 vTangent;
|
|
1571
1571
|
varying vec3 vBitangent;
|
|
1572
1572
|
#endif
|
|
1573
|
-
#endif`,
|
|
1573
|
+
#endif`,mv=`#ifndef FLAT_SHADED
|
|
1574
1574
|
varying vec3 vNormal;
|
|
1575
1575
|
#ifdef USE_TANGENT
|
|
1576
1576
|
varying vec3 vTangent;
|
|
1577
1577
|
varying vec3 vBitangent;
|
|
1578
1578
|
#endif
|
|
1579
|
-
#endif`,
|
|
1579
|
+
#endif`,gv=`#ifndef FLAT_SHADED
|
|
1580
1580
|
vNormal = normalize( transformedNormal );
|
|
1581
1581
|
#ifdef USE_TANGENT
|
|
1582
1582
|
vTangent = normalize( transformedTangent );
|
|
1583
1583
|
vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
|
|
1584
1584
|
#endif
|
|
1585
|
-
#endif`,
|
|
1585
|
+
#endif`,_v=`#ifdef USE_NORMALMAP
|
|
1586
1586
|
uniform sampler2D normalMap;
|
|
1587
1587
|
uniform vec2 normalScale;
|
|
1588
1588
|
#endif
|
|
@@ -1604,13 +1604,13 @@ vec3 nonPerturbedNormal = normal;`,hv=`#ifdef USE_NORMALMAP_OBJECTSPACE
|
|
|
1604
1604
|
float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );
|
|
1605
1605
|
return mat3( T * scale, B * scale, N );
|
|
1606
1606
|
}
|
|
1607
|
-
#endif`,
|
|
1607
|
+
#endif`,vv=`#ifdef USE_CLEARCOAT
|
|
1608
1608
|
vec3 clearcoatNormal = nonPerturbedNormal;
|
|
1609
|
-
#endif`,
|
|
1609
|
+
#endif`,yv=`#ifdef USE_CLEARCOAT_NORMALMAP
|
|
1610
1610
|
vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;
|
|
1611
1611
|
clearcoatMapN.xy *= clearcoatNormalScale;
|
|
1612
1612
|
clearcoatNormal = normalize( tbn2 * clearcoatMapN );
|
|
1613
|
-
#endif`,
|
|
1613
|
+
#endif`,xv=`#ifdef USE_CLEARCOATMAP
|
|
1614
1614
|
uniform sampler2D clearcoatMap;
|
|
1615
1615
|
#endif
|
|
1616
1616
|
#ifdef USE_CLEARCOAT_NORMALMAP
|
|
@@ -1619,18 +1619,18 @@ vec3 nonPerturbedNormal = normal;`,hv=`#ifdef USE_NORMALMAP_OBJECTSPACE
|
|
|
1619
1619
|
#endif
|
|
1620
1620
|
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
|
1621
1621
|
uniform sampler2D clearcoatRoughnessMap;
|
|
1622
|
-
#endif`,
|
|
1622
|
+
#endif`,bv=`#ifdef USE_IRIDESCENCEMAP
|
|
1623
1623
|
uniform sampler2D iridescenceMap;
|
|
1624
1624
|
#endif
|
|
1625
1625
|
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
|
1626
1626
|
uniform sampler2D iridescenceThicknessMap;
|
|
1627
|
-
#endif`,
|
|
1627
|
+
#endif`,Sv=`#ifdef OPAQUE
|
|
1628
1628
|
diffuseColor.a = 1.0;
|
|
1629
1629
|
#endif
|
|
1630
1630
|
#ifdef USE_TRANSMISSION
|
|
1631
1631
|
diffuseColor.a *= material.transmissionAlpha;
|
|
1632
1632
|
#endif
|
|
1633
|
-
gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,
|
|
1633
|
+
gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Mv=`vec3 packNormalToRGB( const in vec3 normal ) {
|
|
1634
1634
|
return normalize( normal ) * 0.5 + 0.5;
|
|
1635
1635
|
}
|
|
1636
1636
|
vec3 unpackRGBToNormal( const in vec3 rgb ) {
|
|
@@ -1699,9 +1699,9 @@ float viewZToPerspectiveDepth( const in float viewZ, const in float near, const
|
|
|
1699
1699
|
}
|
|
1700
1700
|
float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {
|
|
1701
1701
|
return ( near * far ) / ( ( far - near ) * depth - far );
|
|
1702
|
-
}`,
|
|
1702
|
+
}`,Ev=`#ifdef PREMULTIPLIED_ALPHA
|
|
1703
1703
|
gl_FragColor.rgb *= gl_FragColor.a;
|
|
1704
|
-
#endif`,
|
|
1704
|
+
#endif`,Tv=`vec4 mvPosition = vec4( transformed, 1.0 );
|
|
1705
1705
|
#ifdef USE_BATCHING
|
|
1706
1706
|
mvPosition = batchingMatrix * mvPosition;
|
|
1707
1707
|
#endif
|
|
@@ -1709,22 +1709,22 @@ float perspectiveDepthToViewZ( const in float depth, const in float near, const
|
|
|
1709
1709
|
mvPosition = instanceMatrix * mvPosition;
|
|
1710
1710
|
#endif
|
|
1711
1711
|
mvPosition = modelViewMatrix * mvPosition;
|
|
1712
|
-
gl_Position = projectionMatrix * mvPosition;`,
|
|
1712
|
+
gl_Position = projectionMatrix * mvPosition;`,wv=`#ifdef DITHERING
|
|
1713
1713
|
gl_FragColor.rgb = dithering( gl_FragColor.rgb );
|
|
1714
|
-
#endif`,
|
|
1714
|
+
#endif`,Av=`#ifdef DITHERING
|
|
1715
1715
|
vec3 dithering( vec3 color ) {
|
|
1716
1716
|
float grid_position = rand( gl_FragCoord.xy );
|
|
1717
1717
|
vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
|
|
1718
1718
|
dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
|
|
1719
1719
|
return color + dither_shift_RGB;
|
|
1720
1720
|
}
|
|
1721
|
-
#endif`,
|
|
1721
|
+
#endif`,Rv=`float roughnessFactor = roughness;
|
|
1722
1722
|
#ifdef USE_ROUGHNESSMAP
|
|
1723
1723
|
vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );
|
|
1724
1724
|
roughnessFactor *= texelRoughness.g;
|
|
1725
|
-
#endif`,
|
|
1725
|
+
#endif`,Cv=`#ifdef USE_ROUGHNESSMAP
|
|
1726
1726
|
uniform sampler2D roughnessMap;
|
|
1727
|
-
#endif`,
|
|
1727
|
+
#endif`,Pv=`#if NUM_SPOT_LIGHT_COORDS > 0
|
|
1728
1728
|
varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
|
|
1729
1729
|
#endif
|
|
1730
1730
|
#if NUM_SPOT_LIGHT_MAPS > 0
|
|
@@ -1919,7 +1919,7 @@ gl_Position = projectionMatrix * mvPosition;`,Ev=`#ifdef DITHERING
|
|
|
1919
1919
|
}
|
|
1920
1920
|
return mix( 1.0, shadow, shadowIntensity );
|
|
1921
1921
|
}
|
|
1922
|
-
#endif`,
|
|
1922
|
+
#endif`,Dv=`#if NUM_SPOT_LIGHT_COORDS > 0
|
|
1923
1923
|
uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];
|
|
1924
1924
|
varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
|
|
1925
1925
|
#endif
|
|
@@ -1960,7 +1960,7 @@ gl_Position = projectionMatrix * mvPosition;`,Ev=`#ifdef DITHERING
|
|
|
1960
1960
|
};
|
|
1961
1961
|
uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
|
|
1962
1962
|
#endif
|
|
1963
|
-
#endif`,
|
|
1963
|
+
#endif`,Lv=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )
|
|
1964
1964
|
vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
|
|
1965
1965
|
vec4 shadowWorldPosition;
|
|
1966
1966
|
#endif
|
|
@@ -1992,7 +1992,7 @@ gl_Position = projectionMatrix * mvPosition;`,Ev=`#ifdef DITHERING
|
|
|
1992
1992
|
vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;
|
|
1993
1993
|
}
|
|
1994
1994
|
#pragma unroll_loop_end
|
|
1995
|
-
#endif`,
|
|
1995
|
+
#endif`,Iv=`float getShadowMask() {
|
|
1996
1996
|
float shadow = 1.0;
|
|
1997
1997
|
#ifdef USE_SHADOWMAP
|
|
1998
1998
|
#if NUM_DIR_LIGHT_SHADOWS > 0
|
|
@@ -2024,12 +2024,12 @@ gl_Position = projectionMatrix * mvPosition;`,Ev=`#ifdef DITHERING
|
|
|
2024
2024
|
#endif
|
|
2025
2025
|
#endif
|
|
2026
2026
|
return shadow;
|
|
2027
|
-
}`,
|
|
2027
|
+
}`,Uv=`#ifdef USE_SKINNING
|
|
2028
2028
|
mat4 boneMatX = getBoneMatrix( skinIndex.x );
|
|
2029
2029
|
mat4 boneMatY = getBoneMatrix( skinIndex.y );
|
|
2030
2030
|
mat4 boneMatZ = getBoneMatrix( skinIndex.z );
|
|
2031
2031
|
mat4 boneMatW = getBoneMatrix( skinIndex.w );
|
|
2032
|
-
#endif`,
|
|
2032
|
+
#endif`,Nv=`#ifdef USE_SKINNING
|
|
2033
2033
|
uniform mat4 bindMatrix;
|
|
2034
2034
|
uniform mat4 bindMatrixInverse;
|
|
2035
2035
|
uniform highp sampler2D boneTexture;
|
|
@@ -2044,7 +2044,7 @@ gl_Position = projectionMatrix * mvPosition;`,Ev=`#ifdef DITHERING
|
|
|
2044
2044
|
vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );
|
|
2045
2045
|
return mat4( v1, v2, v3, v4 );
|
|
2046
2046
|
}
|
|
2047
|
-
#endif`,
|
|
2047
|
+
#endif`,Ov=`#ifdef USE_SKINNING
|
|
2048
2048
|
vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
|
|
2049
2049
|
vec4 skinned = vec4( 0.0 );
|
|
2050
2050
|
skinned += boneMatX * skinVertex * skinWeight.x;
|
|
@@ -2052,7 +2052,7 @@ gl_Position = projectionMatrix * mvPosition;`,Ev=`#ifdef DITHERING
|
|
|
2052
2052
|
skinned += boneMatZ * skinVertex * skinWeight.z;
|
|
2053
2053
|
skinned += boneMatW * skinVertex * skinWeight.w;
|
|
2054
2054
|
transformed = ( bindMatrixInverse * skinned ).xyz;
|
|
2055
|
-
#endif`,
|
|
2055
|
+
#endif`,Fv=`#ifdef USE_SKINNING
|
|
2056
2056
|
mat4 skinMatrix = mat4( 0.0 );
|
|
2057
2057
|
skinMatrix += skinWeight.x * boneMatX;
|
|
2058
2058
|
skinMatrix += skinWeight.y * boneMatY;
|
|
@@ -2063,17 +2063,17 @@ gl_Position = projectionMatrix * mvPosition;`,Ev=`#ifdef DITHERING
|
|
|
2063
2063
|
#ifdef USE_TANGENT
|
|
2064
2064
|
objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;
|
|
2065
2065
|
#endif
|
|
2066
|
-
#endif`,
|
|
2066
|
+
#endif`,kv=`float specularStrength;
|
|
2067
2067
|
#ifdef USE_SPECULARMAP
|
|
2068
2068
|
vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );
|
|
2069
2069
|
specularStrength = texelSpecular.r;
|
|
2070
2070
|
#else
|
|
2071
2071
|
specularStrength = 1.0;
|
|
2072
|
-
#endif`,
|
|
2072
|
+
#endif`,Bv=`#ifdef USE_SPECULARMAP
|
|
2073
2073
|
uniform sampler2D specularMap;
|
|
2074
|
-
#endif`,
|
|
2074
|
+
#endif`,zv=`#if defined( TONE_MAPPING )
|
|
2075
2075
|
gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
|
|
2076
|
-
#endif`,
|
|
2076
|
+
#endif`,Hv=`#ifndef saturate
|
|
2077
2077
|
#define saturate( a ) clamp( a, 0.0, 1.0 )
|
|
2078
2078
|
#endif
|
|
2079
2079
|
uniform float toneMappingExposure;
|
|
@@ -2170,7 +2170,7 @@ vec3 NeutralToneMapping( vec3 color ) {
|
|
|
2170
2170
|
float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );
|
|
2171
2171
|
return mix( color, vec3( newPeak ), g );
|
|
2172
2172
|
}
|
|
2173
|
-
vec3 CustomToneMapping( vec3 color ) { return color; }`,
|
|
2173
|
+
vec3 CustomToneMapping( vec3 color ) { return color; }`,Vv=`#ifdef USE_TRANSMISSION
|
|
2174
2174
|
material.transmission = transmission;
|
|
2175
2175
|
material.transmissionAlpha = 1.0;
|
|
2176
2176
|
material.thickness = thickness;
|
|
@@ -2191,7 +2191,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zv=`#ifdef USE_TRANSMISS
|
|
|
2191
2191
|
material.attenuationColor, material.attenuationDistance );
|
|
2192
2192
|
material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );
|
|
2193
2193
|
totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );
|
|
2194
|
-
#endif`,
|
|
2194
|
+
#endif`,Gv=`#ifdef USE_TRANSMISSION
|
|
2195
2195
|
uniform float transmission;
|
|
2196
2196
|
uniform float thickness;
|
|
2197
2197
|
uniform float attenuationDistance;
|
|
@@ -2317,7 +2317,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zv=`#ifdef USE_TRANSMISS
|
|
|
2317
2317
|
float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;
|
|
2318
2318
|
return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );
|
|
2319
2319
|
}
|
|
2320
|
-
#endif`,
|
|
2320
|
+
#endif`,Wv=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
|
|
2321
2321
|
varying vec2 vUv;
|
|
2322
2322
|
#endif
|
|
2323
2323
|
#ifdef USE_MAP
|
|
@@ -2387,7 +2387,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zv=`#ifdef USE_TRANSMISS
|
|
|
2387
2387
|
#ifdef USE_THICKNESSMAP
|
|
2388
2388
|
uniform mat3 thicknessMapTransform;
|
|
2389
2389
|
varying vec2 vThicknessMapUv;
|
|
2390
|
-
#endif`,
|
|
2390
|
+
#endif`,Xv=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
|
|
2391
2391
|
varying vec2 vUv;
|
|
2392
2392
|
#endif
|
|
2393
2393
|
#ifdef USE_MAP
|
|
@@ -2481,7 +2481,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zv=`#ifdef USE_TRANSMISS
|
|
|
2481
2481
|
#ifdef USE_THICKNESSMAP
|
|
2482
2482
|
uniform mat3 thicknessMapTransform;
|
|
2483
2483
|
varying vec2 vThicknessMapUv;
|
|
2484
|
-
#endif
|
|
2484
|
+
#endif`,$v=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
|
|
2485
2485
|
vUv = vec3( uv, 1 ).xy;
|
|
2486
2486
|
#endif
|
|
2487
2487
|
#ifdef USE_MAP
|
|
@@ -2552,7 +2552,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zv=`#ifdef USE_TRANSMISS
|
|
|
2552
2552
|
#endif
|
|
2553
2553
|
#ifdef USE_THICKNESSMAP
|
|
2554
2554
|
vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;
|
|
2555
|
-
#endif`,
|
|
2555
|
+
#endif`,jv=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0
|
|
2556
2556
|
vec4 worldPosition = vec4( transformed, 1.0 );
|
|
2557
2557
|
#ifdef USE_BATCHING
|
|
2558
2558
|
worldPosition = batchingMatrix * worldPosition;
|
|
@@ -2561,7 +2561,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,zv=`#ifdef USE_TRANSMISS
|
|
|
2561
2561
|
worldPosition = instanceMatrix * worldPosition;
|
|
2562
2562
|
#endif
|
|
2563
2563
|
worldPosition = modelMatrix * worldPosition;
|
|
2564
|
-
#endif`;const nt={alphahash_fragment:
|
|
2564
|
+
#endif`;const nt={alphahash_fragment:Yg,alphahash_pars_fragment:Kg,alphamap_fragment:Zg,alphamap_pars_fragment:Jg,alphatest_fragment:Qg,alphatest_pars_fragment:e_,aomap_fragment:t_,aomap_pars_fragment:n_,batching_pars_vertex:i_,batching_vertex:r_,begin_vertex:s_,beginnormal_vertex:a_,bsdfs:o_,iridescence_fragment:l_,bumpmap_pars_fragment:c_,clipping_planes_fragment:u_,clipping_planes_pars_fragment:h_,clipping_planes_pars_vertex:f_,clipping_planes_vertex:d_,color_fragment:p_,color_pars_fragment:m_,color_pars_vertex:g_,color_vertex:__,common:v_,cube_uv_reflection_fragment:y_,defaultnormal_vertex:x_,displacementmap_pars_vertex:b_,displacementmap_vertex:S_,emissivemap_fragment:M_,emissivemap_pars_fragment:E_,colorspace_fragment:T_,colorspace_pars_fragment:w_,envmap_fragment:A_,envmap_common_pars_fragment:R_,envmap_pars_fragment:C_,envmap_pars_vertex:P_,envmap_physical_pars_fragment:H_,envmap_vertex:D_,fog_vertex:L_,fog_pars_vertex:I_,fog_fragment:U_,fog_pars_fragment:N_,gradientmap_pars_fragment:O_,lightmap_pars_fragment:F_,lights_lambert_fragment:k_,lights_lambert_pars_fragment:B_,lights_pars_begin:z_,lights_toon_fragment:V_,lights_toon_pars_fragment:G_,lights_phong_fragment:W_,lights_phong_pars_fragment:X_,lights_physical_fragment:$_,lights_physical_pars_fragment:j_,lights_fragment_begin:q_,lights_fragment_maps:Y_,lights_fragment_end:K_,logdepthbuf_fragment:Z_,logdepthbuf_pars_fragment:J_,logdepthbuf_pars_vertex:Q_,logdepthbuf_vertex:ev,map_fragment:tv,map_pars_fragment:nv,map_particle_fragment:iv,map_particle_pars_fragment:rv,metalnessmap_fragment:sv,metalnessmap_pars_fragment:av,morphinstance_vertex:ov,morphcolor_vertex:lv,morphnormal_vertex:cv,morphtarget_pars_vertex:uv,morphtarget_vertex:hv,normal_fragment_begin:fv,normal_fragment_maps:dv,normal_pars_fragment:pv,normal_pars_vertex:mv,normal_vertex:gv,normalmap_pars_fragment:_v,clearcoat_normal_fragment_begin:vv,clearcoat_normal_fragment_maps:yv,clearcoat_pars_fragment:xv,iridescence_pars_fragment:bv,opaque_fragment:Sv,packing:Mv,premultiplied_alpha_fragment:Ev,project_vertex:Tv,dithering_fragment:wv,dithering_pars_fragment:Av,roughnessmap_fragment:Rv,roughnessmap_pars_fragment:Cv,shadowmap_pars_fragment:Pv,shadowmap_pars_vertex:Dv,shadowmap_vertex:Lv,shadowmask_pars_fragment:Iv,skinbase_vertex:Uv,skinning_pars_vertex:Nv,skinning_vertex:Ov,skinnormal_vertex:Fv,specularmap_fragment:kv,specularmap_pars_fragment:Bv,tonemapping_fragment:zv,tonemapping_pars_fragment:Hv,transmission_fragment:Vv,transmission_pars_fragment:Gv,uv_pars_fragment:Wv,uv_pars_vertex:Xv,uv_vertex:$v,worldpos_vertex:jv,background_vert:`varying vec2 vUv;
|
|
2565
2565
|
uniform mat3 uvTransform;
|
|
2566
2566
|
void main() {
|
|
2567
2567
|
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
|
|
@@ -3617,7 +3617,7 @@ void main() {
|
|
|
3617
3617
|
#include <tonemapping_fragment>
|
|
3618
3618
|
#include <colorspace_fragment>
|
|
3619
3619
|
#include <fog_fragment>
|
|
3620
|
-
}`},Ie={common:{diffuse:{value:new Ze(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Qe},alphaMap:{value:null},alphaMapTransform:{value:new Qe},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Qe}},envmap:{envMap:{value:null},envMapRotation:{value:new Qe},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Qe}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Qe}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Qe},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Qe},normalScale:{value:new Ye(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Qe},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Qe}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Qe}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Qe}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Ze(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Ze(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Qe},alphaTest:{value:0},uvTransform:{value:new Qe}},sprite:{diffuse:{value:new Ze(16777215)},opacity:{value:1},center:{value:new Ye(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Qe},alphaMap:{value:null},alphaMapTransform:{value:new Qe},alphaTest:{value:0}}},Fn={basic:{uniforms:Qt([Ie.common,Ie.specularmap,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.fog]),vertexShader:nt.meshbasic_vert,fragmentShader:nt.meshbasic_frag},lambert:{uniforms:Qt([Ie.common,Ie.specularmap,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.fog,Ie.lights,{emissive:{value:new Ze(0)}}]),vertexShader:nt.meshlambert_vert,fragmentShader:nt.meshlambert_frag},phong:{uniforms:Qt([Ie.common,Ie.specularmap,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.fog,Ie.lights,{emissive:{value:new Ze(0)},specular:{value:new Ze(1118481)},shininess:{value:30}}]),vertexShader:nt.meshphong_vert,fragmentShader:nt.meshphong_frag},standard:{uniforms:Qt([Ie.common,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.roughnessmap,Ie.metalnessmap,Ie.fog,Ie.lights,{emissive:{value:new Ze(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:nt.meshphysical_vert,fragmentShader:nt.meshphysical_frag},toon:{uniforms:Qt([Ie.common,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.gradientmap,Ie.fog,Ie.lights,{emissive:{value:new Ze(0)}}]),vertexShader:nt.meshtoon_vert,fragmentShader:nt.meshtoon_frag},matcap:{uniforms:Qt([Ie.common,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.fog,{matcap:{value:null}}]),vertexShader:nt.meshmatcap_vert,fragmentShader:nt.meshmatcap_frag},points:{uniforms:Qt([Ie.points,Ie.fog]),vertexShader:nt.points_vert,fragmentShader:nt.points_frag},dashed:{uniforms:Qt([Ie.common,Ie.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:nt.linedashed_vert,fragmentShader:nt.linedashed_frag},depth:{uniforms:Qt([Ie.common,Ie.displacementmap]),vertexShader:nt.depth_vert,fragmentShader:nt.depth_frag},normal:{uniforms:Qt([Ie.common,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,{opacity:{value:1}}]),vertexShader:nt.meshnormal_vert,fragmentShader:nt.meshnormal_frag},sprite:{uniforms:Qt([Ie.sprite,Ie.fog]),vertexShader:nt.sprite_vert,fragmentShader:nt.sprite_frag},background:{uniforms:{uvTransform:{value:new Qe},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:nt.background_vert,fragmentShader:nt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Qe}},vertexShader:nt.backgroundCube_vert,fragmentShader:nt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:nt.cube_vert,fragmentShader:nt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:nt.equirect_vert,fragmentShader:nt.equirect_frag},distanceRGBA:{uniforms:Qt([Ie.common,Ie.displacementmap,{referencePosition:{value:new $},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:nt.distanceRGBA_vert,fragmentShader:nt.distanceRGBA_frag},shadow:{uniforms:Qt([Ie.lights,Ie.fog,{color:{value:new Ze(0)},opacity:{value:1}}]),vertexShader:nt.shadow_vert,fragmentShader:nt.shadow_frag}};Fn.physical={uniforms:Qt([Fn.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Qe},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Qe},clearcoatNormalScale:{value:new Ye(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Qe},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Qe},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Qe},sheen:{value:0},sheenColor:{value:new Ze(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Qe},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Qe},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Qe},transmissionSamplerSize:{value:new Ye},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Qe},attenuationDistance:{value:0},attenuationColor:{value:new Ze(0)},specularColor:{value:new Ze(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Qe},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Qe},anisotropyVector:{value:new Ye},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Qe}}]),vertexShader:nt.meshphysical_vert,fragmentShader:nt.meshphysical_frag};const fa={r:0,b:0,g:0},Di=new Un,$v=new et;function jv(i,e,t,n,r,s,a){const o=new Ze(0);let l=s===!0?0:1,c,h,u=null,f=0,d=null;function _(y){let M=y.isScene===!0?y.background:null;return M&&M.isTexture&&(M=(y.backgroundBlurriness>0?t:e).get(M)),M}function b(y){let M=!1;const T=_(y);T===null?m(o,l):T&&T.isColor&&(m(T,1),M=!0);const R=i.xr.getEnvironmentBlendMode();R==="additive"?n.buffers.color.setClear(0,0,0,1,a):R==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,a),(i.autoClear||M)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),i.clear(i.autoClearColor,i.autoClearDepth,i.autoClearStencil))}function g(y,M){const T=_(M);T&&(T.isCubeTexture||T.mapping===Rs)?(h===void 0&&(h=new Jt(new pr(1,1,1),new fi({name:"BackgroundCubeMaterial",uniforms:mr(Fn.backgroundCube.uniforms),vertexShader:Fn.backgroundCube.vertexShader,fragmentShader:Fn.backgroundCube.fragmentShader,side:sn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(R,k,B){this.matrixWorld.copyPosition(B.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(h)),Di.copy(M.backgroundRotation),Di.x*=-1,Di.y*=-1,Di.z*=-1,T.isCubeTexture&&T.isRenderTargetTexture===!1&&(Di.y*=-1,Di.z*=-1),h.material.uniforms.envMap.value=T,h.material.uniforms.flipEnvMap.value=T.isCubeTexture&&T.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=M.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4($v.makeRotationFromEuler(Di)),h.material.toneMapped=lt.getTransfer(T.colorSpace)!==xt,(u!==T||f!==T.version||d!==i.toneMapping)&&(h.material.needsUpdate=!0,u=T,f=T.version,d=i.toneMapping),h.layers.enableAll(),y.unshift(h,h.geometry,h.material,0,0,null)):T&&T.isTexture&&(c===void 0&&(c=new Jt(new la(2,2),new fi({name:"BackgroundMaterial",uniforms:mr(Fn.background.uniforms),vertexShader:Fn.background.vertexShader,fragmentShader:Fn.background.fragmentShader,side:Gn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(c)),c.material.uniforms.t2D.value=T,c.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,c.material.toneMapped=lt.getTransfer(T.colorSpace)!==xt,T.matrixAutoUpdate===!0&&T.updateMatrix(),c.material.uniforms.uvTransform.value.copy(T.matrix),(u!==T||f!==T.version||d!==i.toneMapping)&&(c.material.needsUpdate=!0,u=T,f=T.version,d=i.toneMapping),c.layers.enableAll(),y.unshift(c,c.geometry,c.material,0,0,null))}function m(y,M){y.getRGB(fa,qu(i)),n.buffers.color.setClear(fa.r,fa.g,fa.b,M,a)}function S(){h!==void 0&&(h.geometry.dispose(),h.material.dispose(),h=void 0),c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0)}return{getClearColor:function(){return o},setClearColor:function(y,M=1){o.set(y),l=M,m(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(y){l=y,m(o,l)},render:b,addToRenderList:g,dispose:S}}function qv(i,e){const t=i.getParameter(i.MAX_VERTEX_ATTRIBS),n={},r=f(null);let s=r,a=!1;function o(D,V,K,J,se){let he=!1;const Q=u(J,K,V);s!==Q&&(s=Q,c(s.object)),he=d(D,J,K,se),he&&_(D,J,K,se),se!==null&&e.update(se,i.ELEMENT_ARRAY_BUFFER),(he||a)&&(a=!1,M(D,V,K,J),se!==null&&i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,e.get(se).buffer))}function l(){return i.createVertexArray()}function c(D){return i.bindVertexArray(D)}function h(D){return i.deleteVertexArray(D)}function u(D,V,K){const J=K.wireframe===!0;let se=n[D.id];se===void 0&&(se={},n[D.id]=se);let he=se[V.id];he===void 0&&(he={},se[V.id]=he);let Q=he[J];return Q===void 0&&(Q=f(l()),he[J]=Q),Q}function f(D){const V=[],K=[],J=[];for(let se=0;se<t;se++)V[se]=0,K[se]=0,J[se]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:V,enabledAttributes:K,attributeDivisors:J,object:D,attributes:{},index:null}}function d(D,V,K,J){const se=s.attributes,he=V.attributes;let Q=0;const de=K.getAttributes();for(const ne in de)if(de[ne].location>=0){const Te=se[ne];let ke=he[ne];if(ke===void 0&&(ne==="instanceMatrix"&&D.instanceMatrix&&(ke=D.instanceMatrix),ne==="instanceColor"&&D.instanceColor&&(ke=D.instanceColor)),Te===void 0||Te.attribute!==ke||ke&&Te.data!==ke.data)return!0;Q++}return s.attributesNum!==Q||s.index!==J}function _(D,V,K,J){const se={},he=V.attributes;let Q=0;const de=K.getAttributes();for(const ne in de)if(de[ne].location>=0){let Te=he[ne];Te===void 0&&(ne==="instanceMatrix"&&D.instanceMatrix&&(Te=D.instanceMatrix),ne==="instanceColor"&&D.instanceColor&&(Te=D.instanceColor));const ke={};ke.attribute=Te,Te&&Te.data&&(ke.data=Te.data),se[ne]=ke,Q++}s.attributes=se,s.attributesNum=Q,s.index=J}function b(){const D=s.newAttributes;for(let V=0,K=D.length;V<K;V++)D[V]=0}function g(D){m(D,0)}function m(D,V){const K=s.newAttributes,J=s.enabledAttributes,se=s.attributeDivisors;K[D]=1,J[D]===0&&(i.enableVertexAttribArray(D),J[D]=1),se[D]!==V&&(i.vertexAttribDivisor(D,V),se[D]=V)}function S(){const D=s.newAttributes,V=s.enabledAttributes;for(let K=0,J=V.length;K<J;K++)V[K]!==D[K]&&(i.disableVertexAttribArray(K),V[K]=0)}function y(D,V,K,J,se,he,Q){Q===!0?i.vertexAttribIPointer(D,V,K,se,he):i.vertexAttribPointer(D,V,K,J,se,he)}function M(D,V,K,J){b();const se=J.attributes,he=K.getAttributes(),Q=V.defaultAttributeValues;for(const de in he){const ne=he[de];if(ne.location>=0){let ue=se[de];if(ue===void 0&&(de==="instanceMatrix"&&D.instanceMatrix&&(ue=D.instanceMatrix),de==="instanceColor"&&D.instanceColor&&(ue=D.instanceColor)),ue!==void 0){const Te=ue.normalized,ke=ue.itemSize,O=e.get(ue);if(O===void 0)continue;const H=O.buffer,we=O.type,Be=O.bytesPerElement,ie=we===i.INT||we===i.UNSIGNED_INT||ue.gpuType===co;if(ue.isInterleavedBufferAttribute){const ce=ue.data,z=ce.stride,j=ue.offset;if(ce.isInstancedInterleavedBuffer){for(let W=0;W<ne.locationSize;W++)m(ne.location+W,ce.meshPerAttribute);D.isInstancedMesh!==!0&&J._maxInstanceCount===void 0&&(J._maxInstanceCount=ce.meshPerAttribute*ce.count)}else for(let W=0;W<ne.locationSize;W++)g(ne.location+W);i.bindBuffer(i.ARRAY_BUFFER,H);for(let W=0;W<ne.locationSize;W++)y(ne.location+W,ke/ne.locationSize,we,Te,z*Be,(j+ke/ne.locationSize*W)*Be,ie)}else{if(ue.isInstancedBufferAttribute){for(let ce=0;ce<ne.locationSize;ce++)m(ne.location+ce,ue.meshPerAttribute);D.isInstancedMesh!==!0&&J._maxInstanceCount===void 0&&(J._maxInstanceCount=ue.meshPerAttribute*ue.count)}else for(let ce=0;ce<ne.locationSize;ce++)g(ne.location+ce);i.bindBuffer(i.ARRAY_BUFFER,H);for(let ce=0;ce<ne.locationSize;ce++)y(ne.location+ce,ke/ne.locationSize,we,Te,ke*Be,ke/ne.locationSize*ce*Be,ie)}}else if(Q!==void 0){const Te=Q[de];if(Te!==void 0)switch(Te.length){case 2:i.vertexAttrib2fv(ne.location,Te);break;case 3:i.vertexAttrib3fv(ne.location,Te);break;case 4:i.vertexAttrib4fv(ne.location,Te);break;default:i.vertexAttrib1fv(ne.location,Te)}}}}S()}function T(){B();for(const D in n){const V=n[D];for(const K in V){const J=V[K];for(const se in J)h(J[se].object),delete J[se];delete V[K]}delete n[D]}}function R(D){if(n[D.id]===void 0)return;const V=n[D.id];for(const K in V){const J=V[K];for(const se in J)h(J[se].object),delete J[se];delete V[K]}delete n[D.id]}function k(D){for(const V in n){const K=n[V];if(K[D.id]===void 0)continue;const J=K[D.id];for(const se in J)h(J[se].object),delete J[se];delete K[D.id]}}function B(){C(),a=!0,s!==r&&(s=r,c(s.object))}function C(){r.geometry=null,r.program=null,r.wireframe=!1}return{setup:o,reset:B,resetDefaultState:C,dispose:T,releaseStatesOfGeometry:R,releaseStatesOfProgram:k,initAttributes:b,enableAttribute:g,disableUnusedAttributes:S}}function Yv(i,e,t){let n;function r(c){n=c}function s(c,h){i.drawArrays(n,c,h),t.update(h,n,1)}function a(c,h,u){u!==0&&(i.drawArraysInstanced(n,c,h,u),t.update(h,n,u))}function o(c,h,u){if(u===0)return;e.get("WEBGL_multi_draw").multiDrawArraysWEBGL(n,c,0,h,0,u);let d=0;for(let _=0;_<u;_++)d+=h[_];t.update(d,n,1)}function l(c,h,u,f){if(u===0)return;const d=e.get("WEBGL_multi_draw");if(d===null)for(let _=0;_<c.length;_++)a(c[_],h[_],f[_]);else{d.multiDrawArraysInstancedWEBGL(n,c,0,h,0,f,0,u);let _=0;for(let b=0;b<u;b++)_+=h[b]*f[b];t.update(_,n,1)}}this.setMode=r,this.render=s,this.renderInstances=a,this.renderMultiDraw=o,this.renderMultiDrawInstances=l}function Kv(i,e,t,n){let r;function s(){if(r!==void 0)return r;if(e.has("EXT_texture_filter_anisotropic")===!0){const k=e.get("EXT_texture_filter_anisotropic");r=i.getParameter(k.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r}function a(k){return!(k!==fn&&n.convert(k)!==i.getParameter(i.IMPLEMENTATION_COLOR_READ_FORMAT))}function o(k){const B=k===Gr&&(e.has("EXT_color_buffer_half_float")||e.has("EXT_color_buffer_float"));return!(k!==Cn&&n.convert(k)!==i.getParameter(i.IMPLEMENTATION_COLOR_READ_TYPE)&&k!==_n&&!B)}function l(k){if(k==="highp"){if(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision>0)return"highp";k="mediump"}return k==="mediump"&&i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp";const h=l(c);h!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",h,"instead."),c=h);const u=t.logarithmicDepthBuffer===!0,f=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control"),d=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),_=i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),b=i.getParameter(i.MAX_TEXTURE_SIZE),g=i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),m=i.getParameter(i.MAX_VERTEX_ATTRIBS),S=i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),y=i.getParameter(i.MAX_VARYING_VECTORS),M=i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),T=_>0,R=i.getParameter(i.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:u,reversedDepthBuffer:f,maxTextures:d,maxVertexTextures:_,maxTextureSize:b,maxCubemapSize:g,maxAttributes:m,maxVertexUniforms:S,maxVaryings:y,maxFragmentUniforms:M,vertexTextures:T,maxSamples:R}}function Zv(i){const e=this;let t=null,n=0,r=!1,s=!1;const a=new pi,o=new Qe,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(u,f){const d=u.length!==0||f||n!==0||r;return r=f,n=u.length,d},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(u,f){t=h(u,f,0)},this.setState=function(u,f,d){const _=u.clippingPlanes,b=u.clipIntersection,g=u.clipShadows,m=i.get(u);if(!r||_===null||_.length===0||s&&!g)s?h(null):c();else{const S=s?0:n,y=S*4;let M=m.clippingState||null;l.value=M,M=h(_,f,y,d);for(let T=0;T!==y;++T)M[T]=t[T];m.clippingState=M,this.numIntersection=b?this.numPlanes:0,this.numPlanes+=S}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function h(u,f,d,_){const b=u!==null?u.length:0;let g=null;if(b!==0){if(g=l.value,_!==!0||g===null){const m=d+b*4,S=f.matrixWorldInverse;o.getNormalMatrix(S),(g===null||g.length<m)&&(g=new Float32Array(m));for(let y=0,M=d;y!==b;++y,M+=4)a.copy(u[y]).applyMatrix4(S,o),a.normal.toArray(g,M),g[M+3]=a.constant}l.value=g,l.needsUpdate=!0}return e.numPlanes=b,e.numIntersection=0,g}}function Jv(i){let e=new WeakMap;function t(a,o){return o===oo?a.mapping=Zi:o===lo&&(a.mapping=Ji),a}function n(a){if(a&&a.isTexture){const o=a.mapping;if(o===oo||o===lo)if(e.has(a)){const l=e.get(a).texture;return t(l,a.mapping)}else{const l=a.image;if(l&&l.height>0){const c=new Ym(l.height);return c.fromEquirectangularTexture(i,a),e.set(a,c),a.addEventListener("dispose",r),t(c.texture,a.mapping)}else return null}}return a}function r(a){const o=a.target;o.removeEventListener("dispose",r);const l=e.get(o);l!==void 0&&(e.delete(o),l.dispose())}function s(){e=new WeakMap}return{get:n,dispose:s}}const wr=4,Dh=[.125,.215,.35,.446,.526,.582],Li=20,Fl=new ha,Lh=new Ze;let kl=null,Bl=0,zl=0,Hl=!1;const Ii=(1+Math.sqrt(5))/2,Ar=1/Ii,Ih=[new $(-Ii,Ar,0),new $(Ii,Ar,0),new $(-Ar,0,Ii),new $(Ar,0,Ii),new $(0,Ii,-Ar),new $(0,Ii,Ar),new $(-1,1,-1),new $(1,1,-1),new $(-1,1,1),new $(1,1,1)],Qv=new $;class Uh{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,r=100,s={}){const{size:a=256,position:o=Qv}=s;kl=this._renderer.getRenderTarget(),Bl=this._renderer.getActiveCubeFace(),zl=this._renderer.getActiveMipmapLevel(),Hl=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);const l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,n,r,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Fh(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Oh(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(kl,Bl,zl),this._renderer.xr.enabled=Hl,e.scissorTest=!1,da(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===Zi||e.mapping===Ji?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),kl=this._renderer.getRenderTarget(),Bl=this._renderer.getActiveCubeFace(),zl=this._renderer.getActiveMipmapLevel(),Hl=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const n=t||this._allocateTargets();return this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,n={magFilter:ln,minFilter:ln,generateMipmaps:!1,type:Gr,format:fn,colorSpace:Kt,depthBuffer:!1},r=Nh(e,t,n);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Nh(e,t,n);const{_lodMax:s}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=e0(s)),this._blurMaterial=t0(s,e,t)}return r}_compileMaterial(e){const t=new Jt(this._lodPlanes[0],e);this._renderer.compile(t,Fl)}_sceneToCubeUV(e,t,n,r,s){const l=new en(90,1,t,n),c=[1,-1,1,1,1,1],h=[1,1,1,-1,-1,-1],u=this._renderer,f=u.autoClear,d=u.toneMapping;u.getClearColor(Lh),u.toneMapping=ri,u.autoClear=!1,u.state.buffers.depth.getReversed()&&(u.setRenderTarget(r),u.clearDepth(),u.setRenderTarget(null));const b=new Ri({name:"PMREM.Background",side:sn,depthWrite:!1,depthTest:!1}),g=new Jt(new pr,b);let m=!1;const S=e.background;S?S.isColor&&(b.color.copy(S),e.background=null,m=!0):(b.color.copy(Lh),m=!0);for(let y=0;y<6;y++){const M=y%3;M===0?(l.up.set(0,c[y],0),l.position.set(s.x,s.y,s.z),l.lookAt(s.x+h[y],s.y,s.z)):M===1?(l.up.set(0,0,c[y]),l.position.set(s.x,s.y,s.z),l.lookAt(s.x,s.y+h[y],s.z)):(l.up.set(0,c[y],0),l.position.set(s.x,s.y,s.z),l.lookAt(s.x,s.y,s.z+h[y]));const T=this._cubeSize;da(r,M*T,y>2?T:0,T,T),u.setRenderTarget(r),m&&u.render(g,l),u.render(e,l)}g.geometry.dispose(),g.material.dispose(),u.toneMapping=d,u.autoClear=f,e.background=S}_textureToCubeUV(e,t){const n=this._renderer,r=e.mapping===Zi||e.mapping===Ji;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=Fh()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Oh());const s=r?this._cubemapMaterial:this._equirectMaterial,a=new Jt(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=e;const l=this._cubeSize;da(t,0,0,3*l,2*l),n.setRenderTarget(t),n.render(a,Fl)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const r=this._lodPlanes.length;for(let s=1;s<r;s++){const a=Math.sqrt(this._sigmas[s]*this._sigmas[s]-this._sigmas[s-1]*this._sigmas[s-1]),o=Ih[(r-s-1)%Ih.length];this._blur(e,s-1,s,a,o)}t.autoClear=n}_blur(e,t,n,r,s){const a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,r,"latitudinal",s),this._halfBlur(a,e,n,n,r,"longitudinal",s)}_halfBlur(e,t,n,r,s,a,o){const l=this._renderer,c=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const h=3,u=new Jt(this._lodPlanes[r],c),f=c.uniforms,d=this._sizeLods[n]-1,_=isFinite(s)?Math.PI/(2*d):2*Math.PI/(2*Li-1),b=s/_,g=isFinite(s)?1+Math.floor(h*b):Li;g>Li&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${g} samples when the maximum is set to ${Li}`);const m=[];let S=0;for(let k=0;k<Li;++k){const B=k/b,C=Math.exp(-B*B/2);m.push(C),k===0?S+=C:k<g&&(S+=2*C)}for(let k=0;k<m.length;k++)m[k]=m[k]/S;f.envMap.value=e.texture,f.samples.value=g,f.weights.value=m,f.latitudinal.value=a==="latitudinal",o&&(f.poleAxis.value=o);const{_lodMax:y}=this;f.dTheta.value=_,f.mipInt.value=y-n;const M=this._sizeLods[r],T=3*M*(r>y-wr?r-y+wr:0),R=4*(this._cubeSize-M);da(t,T,R,3*M,2*M),l.setRenderTarget(t),l.render(u,Fl)}}function e0(i){const e=[],t=[],n=[];let r=i;const s=i-wr+1+Dh.length;for(let a=0;a<s;a++){const o=Math.pow(2,r);t.push(o);let l=1/o;a>i-wr?l=Dh[a-i+wr-1]:a===0&&(l=0),n.push(l);const c=1/(o-2),h=-c,u=1+c,f=[h,h,u,h,u,u,h,h,u,u,h,u],d=6,_=6,b=3,g=2,m=1,S=new Float32Array(b*_*d),y=new Float32Array(g*_*d),M=new Float32Array(m*_*d);for(let R=0;R<d;R++){const k=R%3*2/3-1,B=R>2?0:-1,C=[k,B,0,k+2/3,B,0,k+2/3,B+1,0,k,B,0,k+2/3,B+1,0,k,B+1,0];S.set(C,b*_*R),y.set(f,g*_*R);const D=[R,R,R,R,R,R];M.set(D,m*_*R)}const T=new En;T.setAttribute("position",new Zt(S,b)),T.setAttribute("uv",new Zt(y,g)),T.setAttribute("faceIndex",new Zt(M,m)),e.push(T),r>wr&&r--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function Nh(i,e,t){const n=new Ti(i,e,t);return n.texture.mapping=Rs,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function da(i,e,t,n,r){i.viewport.set(e,t,n,r),i.scissor.set(e,t,n,r)}function t0(i,e,t){const n=new Float32Array(Li),r=new $(0,1,0);return new fi({name:"SphericalGaussianBlur",defines:{n:Li,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:Vl(),fragmentShader:`
|
|
3620
|
+
}`},Ie={common:{diffuse:{value:new Ze(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Qe},alphaMap:{value:null},alphaMapTransform:{value:new Qe},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Qe}},envmap:{envMap:{value:null},envMapRotation:{value:new Qe},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Qe}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Qe}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Qe},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Qe},normalScale:{value:new Ye(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Qe},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Qe}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Qe}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Qe}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Ze(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Ze(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Qe},alphaTest:{value:0},uvTransform:{value:new Qe}},sprite:{diffuse:{value:new Ze(16777215)},opacity:{value:1},center:{value:new Ye(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Qe},alphaMap:{value:null},alphaMapTransform:{value:new Qe},alphaTest:{value:0}}},Fn={basic:{uniforms:Qt([Ie.common,Ie.specularmap,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.fog]),vertexShader:nt.meshbasic_vert,fragmentShader:nt.meshbasic_frag},lambert:{uniforms:Qt([Ie.common,Ie.specularmap,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.fog,Ie.lights,{emissive:{value:new Ze(0)}}]),vertexShader:nt.meshlambert_vert,fragmentShader:nt.meshlambert_frag},phong:{uniforms:Qt([Ie.common,Ie.specularmap,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.fog,Ie.lights,{emissive:{value:new Ze(0)},specular:{value:new Ze(1118481)},shininess:{value:30}}]),vertexShader:nt.meshphong_vert,fragmentShader:nt.meshphong_frag},standard:{uniforms:Qt([Ie.common,Ie.envmap,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.roughnessmap,Ie.metalnessmap,Ie.fog,Ie.lights,{emissive:{value:new Ze(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:nt.meshphysical_vert,fragmentShader:nt.meshphysical_frag},toon:{uniforms:Qt([Ie.common,Ie.aomap,Ie.lightmap,Ie.emissivemap,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.gradientmap,Ie.fog,Ie.lights,{emissive:{value:new Ze(0)}}]),vertexShader:nt.meshtoon_vert,fragmentShader:nt.meshtoon_frag},matcap:{uniforms:Qt([Ie.common,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,Ie.fog,{matcap:{value:null}}]),vertexShader:nt.meshmatcap_vert,fragmentShader:nt.meshmatcap_frag},points:{uniforms:Qt([Ie.points,Ie.fog]),vertexShader:nt.points_vert,fragmentShader:nt.points_frag},dashed:{uniforms:Qt([Ie.common,Ie.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:nt.linedashed_vert,fragmentShader:nt.linedashed_frag},depth:{uniforms:Qt([Ie.common,Ie.displacementmap]),vertexShader:nt.depth_vert,fragmentShader:nt.depth_frag},normal:{uniforms:Qt([Ie.common,Ie.bumpmap,Ie.normalmap,Ie.displacementmap,{opacity:{value:1}}]),vertexShader:nt.meshnormal_vert,fragmentShader:nt.meshnormal_frag},sprite:{uniforms:Qt([Ie.sprite,Ie.fog]),vertexShader:nt.sprite_vert,fragmentShader:nt.sprite_frag},background:{uniforms:{uvTransform:{value:new Qe},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:nt.background_vert,fragmentShader:nt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Qe}},vertexShader:nt.backgroundCube_vert,fragmentShader:nt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:nt.cube_vert,fragmentShader:nt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:nt.equirect_vert,fragmentShader:nt.equirect_frag},distanceRGBA:{uniforms:Qt([Ie.common,Ie.displacementmap,{referencePosition:{value:new $},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:nt.distanceRGBA_vert,fragmentShader:nt.distanceRGBA_frag},shadow:{uniforms:Qt([Ie.lights,Ie.fog,{color:{value:new Ze(0)},opacity:{value:1}}]),vertexShader:nt.shadow_vert,fragmentShader:nt.shadow_frag}};Fn.physical={uniforms:Qt([Fn.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Qe},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Qe},clearcoatNormalScale:{value:new Ye(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Qe},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Qe},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Qe},sheen:{value:0},sheenColor:{value:new Ze(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Qe},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Qe},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Qe},transmissionSamplerSize:{value:new Ye},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Qe},attenuationDistance:{value:0},attenuationColor:{value:new Ze(0)},specularColor:{value:new Ze(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Qe},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Qe},anisotropyVector:{value:new Ye},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Qe}}]),vertexShader:nt.meshphysical_vert,fragmentShader:nt.meshphysical_frag};const fa={r:0,b:0,g:0},Di=new Un,qv=new et;function Yv(i,e,t,n,r,s,a){const o=new Ze(0);let l=s===!0?0:1,c,h,u=null,f=0,d=null;function _(y){let M=y.isScene===!0?y.background:null;return M&&M.isTexture&&(M=(y.backgroundBlurriness>0?t:e).get(M)),M}function b(y){let M=!1;const T=_(y);T===null?m(o,l):T&&T.isColor&&(m(T,1),M=!0);const R=i.xr.getEnvironmentBlendMode();R==="additive"?n.buffers.color.setClear(0,0,0,1,a):R==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,a),(i.autoClear||M)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),i.clear(i.autoClearColor,i.autoClearDepth,i.autoClearStencil))}function g(y,M){const T=_(M);T&&(T.isCubeTexture||T.mapping===Rs)?(h===void 0&&(h=new Jt(new pr(1,1,1),new fi({name:"BackgroundCubeMaterial",uniforms:mr(Fn.backgroundCube.uniforms),vertexShader:Fn.backgroundCube.vertexShader,fragmentShader:Fn.backgroundCube.fragmentShader,side:sn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(R,k,B){this.matrixWorld.copyPosition(B.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(h)),Di.copy(M.backgroundRotation),Di.x*=-1,Di.y*=-1,Di.z*=-1,T.isCubeTexture&&T.isRenderTargetTexture===!1&&(Di.y*=-1,Di.z*=-1),h.material.uniforms.envMap.value=T,h.material.uniforms.flipEnvMap.value=T.isCubeTexture&&T.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=M.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4(qv.makeRotationFromEuler(Di)),h.material.toneMapped=lt.getTransfer(T.colorSpace)!==xt,(u!==T||f!==T.version||d!==i.toneMapping)&&(h.material.needsUpdate=!0,u=T,f=T.version,d=i.toneMapping),h.layers.enableAll(),y.unshift(h,h.geometry,h.material,0,0,null)):T&&T.isTexture&&(c===void 0&&(c=new Jt(new la(2,2),new fi({name:"BackgroundMaterial",uniforms:mr(Fn.background.uniforms),vertexShader:Fn.background.vertexShader,fragmentShader:Fn.background.fragmentShader,side:Gn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(c)),c.material.uniforms.t2D.value=T,c.material.uniforms.backgroundIntensity.value=M.backgroundIntensity,c.material.toneMapped=lt.getTransfer(T.colorSpace)!==xt,T.matrixAutoUpdate===!0&&T.updateMatrix(),c.material.uniforms.uvTransform.value.copy(T.matrix),(u!==T||f!==T.version||d!==i.toneMapping)&&(c.material.needsUpdate=!0,u=T,f=T.version,d=i.toneMapping),c.layers.enableAll(),y.unshift(c,c.geometry,c.material,0,0,null))}function m(y,M){y.getRGB(fa,Yu(i)),n.buffers.color.setClear(fa.r,fa.g,fa.b,M,a)}function S(){h!==void 0&&(h.geometry.dispose(),h.material.dispose(),h=void 0),c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0)}return{getClearColor:function(){return o},setClearColor:function(y,M=1){o.set(y),l=M,m(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(y){l=y,m(o,l)},render:b,addToRenderList:g,dispose:S}}function Kv(i,e){const t=i.getParameter(i.MAX_VERTEX_ATTRIBS),n={},r=f(null);let s=r,a=!1;function o(D,V,K,J,se){let he=!1;const Q=u(J,K,V);s!==Q&&(s=Q,c(s.object)),he=d(D,J,K,se),he&&_(D,J,K,se),se!==null&&e.update(se,i.ELEMENT_ARRAY_BUFFER),(he||a)&&(a=!1,M(D,V,K,J),se!==null&&i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,e.get(se).buffer))}function l(){return i.createVertexArray()}function c(D){return i.bindVertexArray(D)}function h(D){return i.deleteVertexArray(D)}function u(D,V,K){const J=K.wireframe===!0;let se=n[D.id];se===void 0&&(se={},n[D.id]=se);let he=se[V.id];he===void 0&&(he={},se[V.id]=he);let Q=he[J];return Q===void 0&&(Q=f(l()),he[J]=Q),Q}function f(D){const V=[],K=[],J=[];for(let se=0;se<t;se++)V[se]=0,K[se]=0,J[se]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:V,enabledAttributes:K,attributeDivisors:J,object:D,attributes:{},index:null}}function d(D,V,K,J){const se=s.attributes,he=V.attributes;let Q=0;const de=K.getAttributes();for(const ne in de)if(de[ne].location>=0){const Te=se[ne];let ke=he[ne];if(ke===void 0&&(ne==="instanceMatrix"&&D.instanceMatrix&&(ke=D.instanceMatrix),ne==="instanceColor"&&D.instanceColor&&(ke=D.instanceColor)),Te===void 0||Te.attribute!==ke||ke&&Te.data!==ke.data)return!0;Q++}return s.attributesNum!==Q||s.index!==J}function _(D,V,K,J){const se={},he=V.attributes;let Q=0;const de=K.getAttributes();for(const ne in de)if(de[ne].location>=0){let Te=he[ne];Te===void 0&&(ne==="instanceMatrix"&&D.instanceMatrix&&(Te=D.instanceMatrix),ne==="instanceColor"&&D.instanceColor&&(Te=D.instanceColor));const ke={};ke.attribute=Te,Te&&Te.data&&(ke.data=Te.data),se[ne]=ke,Q++}s.attributes=se,s.attributesNum=Q,s.index=J}function b(){const D=s.newAttributes;for(let V=0,K=D.length;V<K;V++)D[V]=0}function g(D){m(D,0)}function m(D,V){const K=s.newAttributes,J=s.enabledAttributes,se=s.attributeDivisors;K[D]=1,J[D]===0&&(i.enableVertexAttribArray(D),J[D]=1),se[D]!==V&&(i.vertexAttribDivisor(D,V),se[D]=V)}function S(){const D=s.newAttributes,V=s.enabledAttributes;for(let K=0,J=V.length;K<J;K++)V[K]!==D[K]&&(i.disableVertexAttribArray(K),V[K]=0)}function y(D,V,K,J,se,he,Q){Q===!0?i.vertexAttribIPointer(D,V,K,se,he):i.vertexAttribPointer(D,V,K,J,se,he)}function M(D,V,K,J){b();const se=J.attributes,he=K.getAttributes(),Q=V.defaultAttributeValues;for(const de in he){const ne=he[de];if(ne.location>=0){let ue=se[de];if(ue===void 0&&(de==="instanceMatrix"&&D.instanceMatrix&&(ue=D.instanceMatrix),de==="instanceColor"&&D.instanceColor&&(ue=D.instanceColor)),ue!==void 0){const Te=ue.normalized,ke=ue.itemSize,O=e.get(ue);if(O===void 0)continue;const H=O.buffer,we=O.type,Be=O.bytesPerElement,ie=we===i.INT||we===i.UNSIGNED_INT||ue.gpuType===uo;if(ue.isInterleavedBufferAttribute){const ce=ue.data,z=ce.stride,j=ue.offset;if(ce.isInstancedInterleavedBuffer){for(let W=0;W<ne.locationSize;W++)m(ne.location+W,ce.meshPerAttribute);D.isInstancedMesh!==!0&&J._maxInstanceCount===void 0&&(J._maxInstanceCount=ce.meshPerAttribute*ce.count)}else for(let W=0;W<ne.locationSize;W++)g(ne.location+W);i.bindBuffer(i.ARRAY_BUFFER,H);for(let W=0;W<ne.locationSize;W++)y(ne.location+W,ke/ne.locationSize,we,Te,z*Be,(j+ke/ne.locationSize*W)*Be,ie)}else{if(ue.isInstancedBufferAttribute){for(let ce=0;ce<ne.locationSize;ce++)m(ne.location+ce,ue.meshPerAttribute);D.isInstancedMesh!==!0&&J._maxInstanceCount===void 0&&(J._maxInstanceCount=ue.meshPerAttribute*ue.count)}else for(let ce=0;ce<ne.locationSize;ce++)g(ne.location+ce);i.bindBuffer(i.ARRAY_BUFFER,H);for(let ce=0;ce<ne.locationSize;ce++)y(ne.location+ce,ke/ne.locationSize,we,Te,ke*Be,ke/ne.locationSize*ce*Be,ie)}}else if(Q!==void 0){const Te=Q[de];if(Te!==void 0)switch(Te.length){case 2:i.vertexAttrib2fv(ne.location,Te);break;case 3:i.vertexAttrib3fv(ne.location,Te);break;case 4:i.vertexAttrib4fv(ne.location,Te);break;default:i.vertexAttrib1fv(ne.location,Te)}}}}S()}function T(){B();for(const D in n){const V=n[D];for(const K in V){const J=V[K];for(const se in J)h(J[se].object),delete J[se];delete V[K]}delete n[D]}}function R(D){if(n[D.id]===void 0)return;const V=n[D.id];for(const K in V){const J=V[K];for(const se in J)h(J[se].object),delete J[se];delete V[K]}delete n[D.id]}function k(D){for(const V in n){const K=n[V];if(K[D.id]===void 0)continue;const J=K[D.id];for(const se in J)h(J[se].object),delete J[se];delete K[D.id]}}function B(){C(),a=!0,s!==r&&(s=r,c(s.object))}function C(){r.geometry=null,r.program=null,r.wireframe=!1}return{setup:o,reset:B,resetDefaultState:C,dispose:T,releaseStatesOfGeometry:R,releaseStatesOfProgram:k,initAttributes:b,enableAttribute:g,disableUnusedAttributes:S}}function Zv(i,e,t){let n;function r(c){n=c}function s(c,h){i.drawArrays(n,c,h),t.update(h,n,1)}function a(c,h,u){u!==0&&(i.drawArraysInstanced(n,c,h,u),t.update(h,n,u))}function o(c,h,u){if(u===0)return;e.get("WEBGL_multi_draw").multiDrawArraysWEBGL(n,c,0,h,0,u);let d=0;for(let _=0;_<u;_++)d+=h[_];t.update(d,n,1)}function l(c,h,u,f){if(u===0)return;const d=e.get("WEBGL_multi_draw");if(d===null)for(let _=0;_<c.length;_++)a(c[_],h[_],f[_]);else{d.multiDrawArraysInstancedWEBGL(n,c,0,h,0,f,0,u);let _=0;for(let b=0;b<u;b++)_+=h[b]*f[b];t.update(_,n,1)}}this.setMode=r,this.render=s,this.renderInstances=a,this.renderMultiDraw=o,this.renderMultiDrawInstances=l}function Jv(i,e,t,n){let r;function s(){if(r!==void 0)return r;if(e.has("EXT_texture_filter_anisotropic")===!0){const k=e.get("EXT_texture_filter_anisotropic");r=i.getParameter(k.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r}function a(k){return!(k!==fn&&n.convert(k)!==i.getParameter(i.IMPLEMENTATION_COLOR_READ_FORMAT))}function o(k){const B=k===Gr&&(e.has("EXT_color_buffer_half_float")||e.has("EXT_color_buffer_float"));return!(k!==Cn&&n.convert(k)!==i.getParameter(i.IMPLEMENTATION_COLOR_READ_TYPE)&&k!==_n&&!B)}function l(k){if(k==="highp"){if(i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.HIGH_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision>0)return"highp";k="mediump"}return k==="mediump"&&i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp";const h=l(c);h!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",h,"instead."),c=h);const u=t.logarithmicDepthBuffer===!0,f=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control"),d=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),_=i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),b=i.getParameter(i.MAX_TEXTURE_SIZE),g=i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),m=i.getParameter(i.MAX_VERTEX_ATTRIBS),S=i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),y=i.getParameter(i.MAX_VARYING_VECTORS),M=i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),T=_>0,R=i.getParameter(i.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:u,reversedDepthBuffer:f,maxTextures:d,maxVertexTextures:_,maxTextureSize:b,maxCubemapSize:g,maxAttributes:m,maxVertexUniforms:S,maxVaryings:y,maxFragmentUniforms:M,vertexTextures:T,maxSamples:R}}function Qv(i){const e=this;let t=null,n=0,r=!1,s=!1;const a=new pi,o=new Qe,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(u,f){const d=u.length!==0||f||n!==0||r;return r=f,n=u.length,d},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(u,f){t=h(u,f,0)},this.setState=function(u,f,d){const _=u.clippingPlanes,b=u.clipIntersection,g=u.clipShadows,m=i.get(u);if(!r||_===null||_.length===0||s&&!g)s?h(null):c();else{const S=s?0:n,y=S*4;let M=m.clippingState||null;l.value=M,M=h(_,f,y,d);for(let T=0;T!==y;++T)M[T]=t[T];m.clippingState=M,this.numIntersection=b?this.numPlanes:0,this.numPlanes+=S}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function h(u,f,d,_){const b=u!==null?u.length:0;let g=null;if(b!==0){if(g=l.value,_!==!0||g===null){const m=d+b*4,S=f.matrixWorldInverse;o.getNormalMatrix(S),(g===null||g.length<m)&&(g=new Float32Array(m));for(let y=0,M=d;y!==b;++y,M+=4)a.copy(u[y]).applyMatrix4(S,o),a.normal.toArray(g,M),g[M+3]=a.constant}l.value=g,l.needsUpdate=!0}return e.numPlanes=b,e.numIntersection=0,g}}function e0(i){let e=new WeakMap;function t(a,o){return o===lo?a.mapping=Zi:o===co&&(a.mapping=Ji),a}function n(a){if(a&&a.isTexture){const o=a.mapping;if(o===lo||o===co)if(e.has(a)){const l=e.get(a).texture;return t(l,a.mapping)}else{const l=a.image;if(l&&l.height>0){const c=new Zm(l.height);return c.fromEquirectangularTexture(i,a),e.set(a,c),a.addEventListener("dispose",r),t(c.texture,a.mapping)}else return null}}return a}function r(a){const o=a.target;o.removeEventListener("dispose",r);const l=e.get(o);l!==void 0&&(e.delete(o),l.dispose())}function s(){e=new WeakMap}return{get:n,dispose:s}}const wr=4,Lh=[.125,.215,.35,.446,.526,.582],Li=20,kl=new ha,Ih=new Ze;let Bl=null,zl=0,Hl=0,Vl=!1;const Ii=(1+Math.sqrt(5))/2,Ar=1/Ii,Uh=[new $(-Ii,Ar,0),new $(Ii,Ar,0),new $(-Ar,0,Ii),new $(Ar,0,Ii),new $(0,Ii,-Ar),new $(0,Ii,Ar),new $(-1,1,-1),new $(1,1,-1),new $(-1,1,1),new $(1,1,1)],t0=new $;class Nh{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,r=100,s={}){const{size:a=256,position:o=t0}=s;Bl=this._renderer.getRenderTarget(),zl=this._renderer.getActiveCubeFace(),Hl=this._renderer.getActiveMipmapLevel(),Vl=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);const l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,n,r,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=kh(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Fh(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(Bl,zl,Hl),this._renderer.xr.enabled=Vl,e.scissorTest=!1,da(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===Zi||e.mapping===Ji?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),Bl=this._renderer.getRenderTarget(),zl=this._renderer.getActiveCubeFace(),Hl=this._renderer.getActiveMipmapLevel(),Vl=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const n=t||this._allocateTargets();return this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,n={magFilter:ln,minFilter:ln,generateMipmaps:!1,type:Gr,format:fn,colorSpace:Kt,depthBuffer:!1},r=Oh(e,t,n);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Oh(e,t,n);const{_lodMax:s}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=n0(s)),this._blurMaterial=i0(s,e,t)}return r}_compileMaterial(e){const t=new Jt(this._lodPlanes[0],e);this._renderer.compile(t,kl)}_sceneToCubeUV(e,t,n,r,s){const l=new en(90,1,t,n),c=[1,-1,1,1,1,1],h=[1,1,1,-1,-1,-1],u=this._renderer,f=u.autoClear,d=u.toneMapping;u.getClearColor(Ih),u.toneMapping=ri,u.autoClear=!1,u.state.buffers.depth.getReversed()&&(u.setRenderTarget(r),u.clearDepth(),u.setRenderTarget(null));const b=new Ri({name:"PMREM.Background",side:sn,depthWrite:!1,depthTest:!1}),g=new Jt(new pr,b);let m=!1;const S=e.background;S?S.isColor&&(b.color.copy(S),e.background=null,m=!0):(b.color.copy(Ih),m=!0);for(let y=0;y<6;y++){const M=y%3;M===0?(l.up.set(0,c[y],0),l.position.set(s.x,s.y,s.z),l.lookAt(s.x+h[y],s.y,s.z)):M===1?(l.up.set(0,0,c[y]),l.position.set(s.x,s.y,s.z),l.lookAt(s.x,s.y+h[y],s.z)):(l.up.set(0,c[y],0),l.position.set(s.x,s.y,s.z),l.lookAt(s.x,s.y,s.z+h[y]));const T=this._cubeSize;da(r,M*T,y>2?T:0,T,T),u.setRenderTarget(r),m&&u.render(g,l),u.render(e,l)}g.geometry.dispose(),g.material.dispose(),u.toneMapping=d,u.autoClear=f,e.background=S}_textureToCubeUV(e,t){const n=this._renderer,r=e.mapping===Zi||e.mapping===Ji;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=kh()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Fh());const s=r?this._cubemapMaterial:this._equirectMaterial,a=new Jt(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=e;const l=this._cubeSize;da(t,0,0,3*l,2*l),n.setRenderTarget(t),n.render(a,kl)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const r=this._lodPlanes.length;for(let s=1;s<r;s++){const a=Math.sqrt(this._sigmas[s]*this._sigmas[s]-this._sigmas[s-1]*this._sigmas[s-1]),o=Uh[(r-s-1)%Uh.length];this._blur(e,s-1,s,a,o)}t.autoClear=n}_blur(e,t,n,r,s){const a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,r,"latitudinal",s),this._halfBlur(a,e,n,n,r,"longitudinal",s)}_halfBlur(e,t,n,r,s,a,o){const l=this._renderer,c=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const h=3,u=new Jt(this._lodPlanes[r],c),f=c.uniforms,d=this._sizeLods[n]-1,_=isFinite(s)?Math.PI/(2*d):2*Math.PI/(2*Li-1),b=s/_,g=isFinite(s)?1+Math.floor(h*b):Li;g>Li&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${g} samples when the maximum is set to ${Li}`);const m=[];let S=0;for(let k=0;k<Li;++k){const B=k/b,C=Math.exp(-B*B/2);m.push(C),k===0?S+=C:k<g&&(S+=2*C)}for(let k=0;k<m.length;k++)m[k]=m[k]/S;f.envMap.value=e.texture,f.samples.value=g,f.weights.value=m,f.latitudinal.value=a==="latitudinal",o&&(f.poleAxis.value=o);const{_lodMax:y}=this;f.dTheta.value=_,f.mipInt.value=y-n;const M=this._sizeLods[r],T=3*M*(r>y-wr?r-y+wr:0),R=4*(this._cubeSize-M);da(t,T,R,3*M,2*M),l.setRenderTarget(t),l.render(u,kl)}}function n0(i){const e=[],t=[],n=[];let r=i;const s=i-wr+1+Lh.length;for(let a=0;a<s;a++){const o=Math.pow(2,r);t.push(o);let l=1/o;a>i-wr?l=Lh[a-i+wr-1]:a===0&&(l=0),n.push(l);const c=1/(o-2),h=-c,u=1+c,f=[h,h,u,h,u,u,h,h,u,u,h,u],d=6,_=6,b=3,g=2,m=1,S=new Float32Array(b*_*d),y=new Float32Array(g*_*d),M=new Float32Array(m*_*d);for(let R=0;R<d;R++){const k=R%3*2/3-1,B=R>2?0:-1,C=[k,B,0,k+2/3,B,0,k+2/3,B+1,0,k,B,0,k+2/3,B+1,0,k,B+1,0];S.set(C,b*_*R),y.set(f,g*_*R);const D=[R,R,R,R,R,R];M.set(D,m*_*R)}const T=new En;T.setAttribute("position",new Zt(S,b)),T.setAttribute("uv",new Zt(y,g)),T.setAttribute("faceIndex",new Zt(M,m)),e.push(T),r>wr&&r--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function Oh(i,e,t){const n=new Ti(i,e,t);return n.texture.mapping=Rs,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function da(i,e,t,n,r){i.viewport.set(e,t,n,r),i.scissor.set(e,t,n,r)}function i0(i,e,t){const n=new Float32Array(Li),r=new $(0,1,0);return new fi({name:"SphericalGaussianBlur",defines:{n:Li,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:Gl(),fragmentShader:`
|
|
3621
3621
|
|
|
3622
3622
|
precision mediump float;
|
|
3623
3623
|
precision mediump int;
|
|
@@ -3677,7 +3677,7 @@ void main() {
|
|
|
3677
3677
|
}
|
|
3678
3678
|
|
|
3679
3679
|
}
|
|
3680
|
-
`,blending:ii,depthTest:!1,depthWrite:!1})}function
|
|
3680
|
+
`,blending:ii,depthTest:!1,depthWrite:!1})}function Fh(){return new fi({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Gl(),fragmentShader:`
|
|
3681
3681
|
|
|
3682
3682
|
precision mediump float;
|
|
3683
3683
|
precision mediump int;
|
|
@@ -3696,7 +3696,7 @@ void main() {
|
|
|
3696
3696
|
gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
|
|
3697
3697
|
|
|
3698
3698
|
}
|
|
3699
|
-
`,blending:ii,depthTest:!1,depthWrite:!1})}function
|
|
3699
|
+
`,blending:ii,depthTest:!1,depthWrite:!1})}function kh(){return new fi({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Gl(),fragmentShader:`
|
|
3700
3700
|
|
|
3701
3701
|
precision mediump float;
|
|
3702
3702
|
precision mediump int;
|
|
@@ -3712,7 +3712,7 @@ void main() {
|
|
|
3712
3712
|
gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );
|
|
3713
3713
|
|
|
3714
3714
|
}
|
|
3715
|
-
`,blending:ii,depthTest:!1,depthWrite:!1})}function
|
|
3715
|
+
`,blending:ii,depthTest:!1,depthWrite:!1})}function Gl(){return`
|
|
3716
3716
|
|
|
3717
3717
|
precision mediump float;
|
|
3718
3718
|
precision mediump int;
|
|
@@ -3767,17 +3767,17 @@ void main() {
|
|
|
3767
3767
|
gl_Position = vec4( position, 1.0 );
|
|
3768
3768
|
|
|
3769
3769
|
}
|
|
3770
|
-
`}function n0(i){let e=new WeakMap,t=null;function n(o){if(o&&o.isTexture){const l=o.mapping,c=l===oo||l===lo,h=l===Zi||l===Ji;if(c||h){let u=e.get(o);const f=u!==void 0?u.texture.pmremVersion:0;if(o.isRenderTargetTexture&&o.pmremVersion!==f)return t===null&&(t=new Uh(i)),u=c?t.fromEquirectangular(o,u):t.fromCubemap(o,u),u.texture.pmremVersion=o.pmremVersion,e.set(o,u),u.texture;if(u!==void 0)return u.texture;{const d=o.image;return c&&d&&d.height>0||h&&d&&r(d)?(t===null&&(t=new Uh(i)),u=c?t.fromEquirectangular(o):t.fromCubemap(o),u.texture.pmremVersion=o.pmremVersion,e.set(o,u),o.addEventListener("dispose",s),u.texture):null}}}return o}function r(o){let l=0;const c=6;for(let h=0;h<c;h++)o[h]!==void 0&&l++;return l===c}function s(o){const l=o.target;l.removeEventListener("dispose",s);const c=e.get(l);c!==void 0&&(e.delete(l),c.dispose())}function a(){e=new WeakMap,t!==null&&(t.dispose(),t=null)}return{get:n,dispose:a}}function i0(i){const e={};function t(n){if(e[n]!==void 0)return e[n];let r;switch(n){case"WEBGL_depth_texture":r=i.getExtension("WEBGL_depth_texture")||i.getExtension("MOZ_WEBGL_depth_texture")||i.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":r=i.getExtension("EXT_texture_filter_anisotropic")||i.getExtension("MOZ_EXT_texture_filter_anisotropic")||i.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":r=i.getExtension("WEBGL_compressed_texture_s3tc")||i.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||i.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":r=i.getExtension("WEBGL_compressed_texture_pvrtc")||i.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:r=i.getExtension(n)}return e[n]=r,r}return{has:function(n){return t(n)!==null},init:function(){t("EXT_color_buffer_float"),t("WEBGL_clip_cull_distance"),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float"),t("WEBGL_multisampled_render_to_texture"),t("WEBGL_render_shared_exponent")},get:function(n){const r=t(n);return r===null&&Jr("THREE.WebGLRenderer: "+n+" extension not supported."),r}}}function r0(i,e,t,n){const r={},s=new WeakMap;function a(u){const f=u.target;f.index!==null&&e.remove(f.index);for(const _ in f.attributes)e.remove(f.attributes[_]);f.removeEventListener("dispose",a),delete r[f.id];const d=s.get(f);d&&(e.remove(d),s.delete(f)),n.releaseStatesOfGeometry(f),f.isInstancedBufferGeometry===!0&&delete f._maxInstanceCount,t.memory.geometries--}function o(u,f){return r[f.id]===!0||(f.addEventListener("dispose",a),r[f.id]=!0,t.memory.geometries++),f}function l(u){const f=u.attributes;for(const d in f)e.update(f[d],i.ARRAY_BUFFER)}function c(u){const f=[],d=u.index,_=u.attributes.position;let b=0;if(d!==null){const S=d.array;b=d.version;for(let y=0,M=S.length;y<M;y+=3){const T=S[y+0],R=S[y+1],k=S[y+2];f.push(T,R,R,k,k,T)}}else if(_!==void 0){const S=_.array;b=_.version;for(let y=0,M=S.length/3-1;y<M;y+=3){const T=y+0,R=y+1,k=y+2;f.push(T,R,R,k,k,T)}}else return;const g=new(Cu(f)?Wu:Gu)(f,1);g.version=b;const m=s.get(u);m&&e.remove(m),s.set(u,g)}function h(u){const f=s.get(u);if(f){const d=u.index;d!==null&&f.version<d.version&&c(u)}else c(u);return s.get(u)}return{get:o,update:l,getWireframeAttribute:h}}function s0(i,e,t){let n;function r(f){n=f}let s,a;function o(f){s=f.type,a=f.bytesPerElement}function l(f,d){i.drawElements(n,d,s,f*a),t.update(d,n,1)}function c(f,d,_){_!==0&&(i.drawElementsInstanced(n,d,s,f*a,_),t.update(d,n,_))}function h(f,d,_){if(_===0)return;e.get("WEBGL_multi_draw").multiDrawElementsWEBGL(n,d,0,s,f,0,_);let g=0;for(let m=0;m<_;m++)g+=d[m];t.update(g,n,1)}function u(f,d,_,b){if(_===0)return;const g=e.get("WEBGL_multi_draw");if(g===null)for(let m=0;m<f.length;m++)c(f[m]/a,d[m],b[m]);else{g.multiDrawElementsInstancedWEBGL(n,d,0,s,f,0,b,0,_);let m=0;for(let S=0;S<_;S++)m+=d[S]*b[S];t.update(m,n,1)}}this.setMode=r,this.setIndex=o,this.render=l,this.renderInstances=c,this.renderMultiDraw=h,this.renderMultiDrawInstances=u}function a0(i){const e={geometries:0,textures:0},t={frame:0,calls:0,triangles:0,points:0,lines:0};function n(s,a,o){switch(t.calls++,a){case i.TRIANGLES:t.triangles+=o*(s/3);break;case i.LINES:t.lines+=o*(s/2);break;case i.LINE_STRIP:t.lines+=o*(s-1);break;case i.LINE_LOOP:t.lines+=o*s;break;case i.POINTS:t.points+=o*s;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",a);break}}function r(){t.calls=0,t.triangles=0,t.points=0,t.lines=0}return{memory:e,render:t,programs:null,autoReset:!0,reset:r,update:n}}function o0(i,e,t){const n=new WeakMap,r=new pt;function s(a,o,l){const c=a.morphTargetInfluences,h=o.morphAttributes.position||o.morphAttributes.normal||o.morphAttributes.color,u=h!==void 0?h.length:0;let f=n.get(o);if(f===void 0||f.count!==u){let C=function(){k.dispose(),n.delete(o),o.removeEventListener("dispose",C)};f!==void 0&&f.texture.dispose();const d=o.morphAttributes.position!==void 0,_=o.morphAttributes.normal!==void 0,b=o.morphAttributes.color!==void 0,g=o.morphAttributes.position||[],m=o.morphAttributes.normal||[],S=o.morphAttributes.color||[];let y=0;d===!0&&(y=1),_===!0&&(y=2),b===!0&&(y=3);let M=o.attributes.position.count*y,T=1;M>e.maxTextureSize&&(T=Math.ceil(M/e.maxTextureSize),M=e.maxTextureSize);const R=new Float32Array(M*T*4*u),k=new Iu(R,M,T,u);k.type=_n,k.needsUpdate=!0;const B=y*4;for(let D=0;D<u;D++){const V=g[D],K=m[D],J=S[D],se=M*T*4*D;for(let he=0;he<V.count;he++){const Q=he*B;d===!0&&(r.fromBufferAttribute(V,he),R[se+Q+0]=r.x,R[se+Q+1]=r.y,R[se+Q+2]=r.z,R[se+Q+3]=0),_===!0&&(r.fromBufferAttribute(K,he),R[se+Q+4]=r.x,R[se+Q+5]=r.y,R[se+Q+6]=r.z,R[se+Q+7]=0),b===!0&&(r.fromBufferAttribute(J,he),R[se+Q+8]=r.x,R[se+Q+9]=r.y,R[se+Q+10]=r.z,R[se+Q+11]=J.itemSize===4?r.w:1)}}f={count:u,texture:k,size:new Ye(M,T)},n.set(o,f),o.addEventListener("dispose",C)}if(a.isInstancedMesh===!0&&a.morphTexture!==null)l.getUniforms().setValue(i,"morphTexture",a.morphTexture,t);else{let d=0;for(let b=0;b<c.length;b++)d+=c[b];const _=o.morphTargetsRelative?1:1-d;l.getUniforms().setValue(i,"morphTargetBaseInfluence",_),l.getUniforms().setValue(i,"morphTargetInfluences",c)}l.getUniforms().setValue(i,"morphTargetsTexture",f.texture,t),l.getUniforms().setValue(i,"morphTargetsTextureSize",f.size)}return{update:s}}function l0(i,e,t,n){let r=new WeakMap;function s(l){const c=n.render.frame,h=l.geometry,u=e.get(l,h);if(r.get(u)!==c&&(e.update(u),r.set(u,c)),l.isInstancedMesh&&(l.hasEventListener("dispose",o)===!1&&l.addEventListener("dispose",o),r.get(l)!==c&&(t.update(l.instanceMatrix,i.ARRAY_BUFFER),l.instanceColor!==null&&t.update(l.instanceColor,i.ARRAY_BUFFER),r.set(l,c))),l.isSkinnedMesh){const f=l.skeleton;r.get(f)!==c&&(f.update(),r.set(f,c))}return u}function a(){r=new WeakMap}function o(l){const c=l.target;c.removeEventListener("dispose",o),t.remove(c.instanceMatrix),c.instanceColor!==null&&t.remove(c.instanceColor)}return{update:s,dispose:a}}const kh=new zt,Bh=new _h(1,1),zh=new Iu,Hh=new Lm,Vh=new Ju,Gh=[],Wh=[],Xh=new Float32Array(16),$h=new Float32Array(9),jh=new Float32Array(4);function Rr(i,e,t){const n=i[0];if(n<=0||n>0)return i;const r=e*t;let s=Gh[r];if(s===void 0&&(s=new Float32Array(r),Gh[r]=s),e!==0){n.toArray(s,0);for(let a=1,o=0;a!==e;++a)o+=t,i[a].toArray(s,o)}return s}function Ut(i,e){if(i.length!==e.length)return!1;for(let t=0,n=i.length;t<n;t++)if(i[t]!==e[t])return!1;return!0}function Nt(i,e){for(let t=0,n=e.length;t<n;t++)i[t]=e[t]}function pa(i,e){let t=Wh[e];t===void 0&&(t=new Int32Array(e),Wh[e]=t);for(let n=0;n!==e;++n)t[n]=i.allocateTextureUnit();return t}function c0(i,e){const t=this.cache;t[0]!==e&&(i.uniform1f(this.addr,e),t[0]=e)}function u0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(i.uniform2f(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Ut(t,e))return;i.uniform2fv(this.addr,e),Nt(t,e)}}function h0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(i.uniform3f(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else if(e.r!==void 0)(t[0]!==e.r||t[1]!==e.g||t[2]!==e.b)&&(i.uniform3f(this.addr,e.r,e.g,e.b),t[0]=e.r,t[1]=e.g,t[2]=e.b);else{if(Ut(t,e))return;i.uniform3fv(this.addr,e),Nt(t,e)}}function f0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(i.uniform4f(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Ut(t,e))return;i.uniform4fv(this.addr,e),Nt(t,e)}}function d0(i,e){const t=this.cache,n=e.elements;if(n===void 0){if(Ut(t,e))return;i.uniformMatrix2fv(this.addr,!1,e),Nt(t,e)}else{if(Ut(t,n))return;jh.set(n),i.uniformMatrix2fv(this.addr,!1,jh),Nt(t,n)}}function p0(i,e){const t=this.cache,n=e.elements;if(n===void 0){if(Ut(t,e))return;i.uniformMatrix3fv(this.addr,!1,e),Nt(t,e)}else{if(Ut(t,n))return;$h.set(n),i.uniformMatrix3fv(this.addr,!1,$h),Nt(t,n)}}function m0(i,e){const t=this.cache,n=e.elements;if(n===void 0){if(Ut(t,e))return;i.uniformMatrix4fv(this.addr,!1,e),Nt(t,e)}else{if(Ut(t,n))return;Xh.set(n),i.uniformMatrix4fv(this.addr,!1,Xh),Nt(t,n)}}function g0(i,e){const t=this.cache;t[0]!==e&&(i.uniform1i(this.addr,e),t[0]=e)}function _0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(i.uniform2i(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Ut(t,e))return;i.uniform2iv(this.addr,e),Nt(t,e)}}function v0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(i.uniform3i(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(Ut(t,e))return;i.uniform3iv(this.addr,e),Nt(t,e)}}function y0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(i.uniform4i(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Ut(t,e))return;i.uniform4iv(this.addr,e),Nt(t,e)}}function x0(i,e){const t=this.cache;t[0]!==e&&(i.uniform1ui(this.addr,e),t[0]=e)}function b0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(i.uniform2ui(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Ut(t,e))return;i.uniform2uiv(this.addr,e),Nt(t,e)}}function S0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(i.uniform3ui(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(Ut(t,e))return;i.uniform3uiv(this.addr,e),Nt(t,e)}}function M0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(i.uniform4ui(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Ut(t,e))return;i.uniform4uiv(this.addr,e),Nt(t,e)}}function E0(i,e,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(i.uniform1i(this.addr,r),n[0]=r);let s;this.type===i.SAMPLER_2D_SHADOW?(Bh.compareFunction=Eu,s=Bh):s=kh,t.setTexture2D(e||s,r)}function T0(i,e,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(i.uniform1i(this.addr,r),n[0]=r),t.setTexture3D(e||Hh,r)}function w0(i,e,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(i.uniform1i(this.addr,r),n[0]=r),t.setTextureCube(e||Vh,r)}function A0(i,e,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(i.uniform1i(this.addr,r),n[0]=r),t.setTexture2DArray(e||zh,r)}function R0(i){switch(i){case 5126:return c0;case 35664:return u0;case 35665:return h0;case 35666:return f0;case 35674:return d0;case 35675:return p0;case 35676:return m0;case 5124:case 35670:return g0;case 35667:case 35671:return _0;case 35668:case 35672:return v0;case 35669:case 35673:return y0;case 5125:return x0;case 36294:return b0;case 36295:return S0;case 36296:return M0;case 35678:case 36198:case 36298:case 36306:case 35682:return E0;case 35679:case 36299:case 36307:return T0;case 35680:case 36300:case 36308:case 36293:return w0;case 36289:case 36303:case 36311:case 36292:return A0}}function C0(i,e){i.uniform1fv(this.addr,e)}function P0(i,e){const t=Rr(e,this.size,2);i.uniform2fv(this.addr,t)}function D0(i,e){const t=Rr(e,this.size,3);i.uniform3fv(this.addr,t)}function L0(i,e){const t=Rr(e,this.size,4);i.uniform4fv(this.addr,t)}function I0(i,e){const t=Rr(e,this.size,4);i.uniformMatrix2fv(this.addr,!1,t)}function U0(i,e){const t=Rr(e,this.size,9);i.uniformMatrix3fv(this.addr,!1,t)}function N0(i,e){const t=Rr(e,this.size,16);i.uniformMatrix4fv(this.addr,!1,t)}function O0(i,e){i.uniform1iv(this.addr,e)}function F0(i,e){i.uniform2iv(this.addr,e)}function k0(i,e){i.uniform3iv(this.addr,e)}function B0(i,e){i.uniform4iv(this.addr,e)}function z0(i,e){i.uniform1uiv(this.addr,e)}function H0(i,e){i.uniform2uiv(this.addr,e)}function V0(i,e){i.uniform3uiv(this.addr,e)}function G0(i,e){i.uniform4uiv(this.addr,e)}function W0(i,e,t){const n=this.cache,r=e.length,s=pa(t,r);Ut(n,s)||(i.uniform1iv(this.addr,s),Nt(n,s));for(let a=0;a!==r;++a)t.setTexture2D(e[a]||kh,s[a])}function X0(i,e,t){const n=this.cache,r=e.length,s=pa(t,r);Ut(n,s)||(i.uniform1iv(this.addr,s),Nt(n,s));for(let a=0;a!==r;++a)t.setTexture3D(e[a]||Hh,s[a])}function $0(i,e,t){const n=this.cache,r=e.length,s=pa(t,r);Ut(n,s)||(i.uniform1iv(this.addr,s),Nt(n,s));for(let a=0;a!==r;++a)t.setTextureCube(e[a]||Vh,s[a])}function j0(i,e,t){const n=this.cache,r=e.length,s=pa(t,r);Ut(n,s)||(i.uniform1iv(this.addr,s),Nt(n,s));for(let a=0;a!==r;++a)t.setTexture2DArray(e[a]||zh,s[a])}function q0(i){switch(i){case 5126:return C0;case 35664:return P0;case 35665:return D0;case 35666:return L0;case 35674:return I0;case 35675:return U0;case 35676:return N0;case 5124:case 35670:return O0;case 35667:case 35671:return F0;case 35668:case 35672:return k0;case 35669:case 35673:return B0;case 5125:return z0;case 36294:return H0;case 36295:return V0;case 36296:return G0;case 35678:case 36198:case 36298:case 36306:case 35682:return W0;case 35679:case 36299:case 36307:return X0;case 35680:case 36300:case 36308:case 36293:return $0;case 36289:case 36303:case 36311:case 36292:return j0}}class Y0{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.setValue=R0(t.type)}}class K0{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=q0(t.type)}}class Z0{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n){const r=this.seq;for(let s=0,a=r.length;s!==a;++s){const o=r[s];o.setValue(e,t[o.id],n)}}}const Gl=/(\w+)(\])?(\[|\.)?/g;function qh(i,e){i.seq.push(e),i.map[e.id]=e}function J0(i,e,t){const n=i.name,r=n.length;for(Gl.lastIndex=0;;){const s=Gl.exec(n),a=Gl.lastIndex;let o=s[1];const l=s[2]==="]",c=s[3];if(l&&(o=o|0),c===void 0||c==="["&&a+2===r){qh(t,c===void 0?new Y0(o,i,e):new K0(o,i,e));break}else{let u=t.map[o];u===void 0&&(u=new Z0(o),qh(t,u)),t=u}}}class ma{constructor(e,t){this.seq=[],this.map={};const n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let r=0;r<n;++r){const s=e.getActiveUniform(t,r),a=e.getUniformLocation(t,s.name);J0(s,a,this)}}setValue(e,t,n,r){const s=this.map[t];s!==void 0&&s.setValue(e,n,r)}setOptional(e,t,n){const r=t[n];r!==void 0&&this.setValue(e,n,r)}static upload(e,t,n,r){for(let s=0,a=t.length;s!==a;++s){const o=t[s],l=n[o.id];l.needsUpdate!==!1&&o.setValue(e,l.value,r)}}static seqWithValue(e,t){const n=[];for(let r=0,s=e.length;r!==s;++r){const a=e[r];a.id in t&&n.push(a)}return n}}function Yh(i,e,t){const n=i.createShader(e);return i.shaderSource(n,t),i.compileShader(n),n}const Q0=37297;let ey=0;function ty(i,e){const t=i.split(`
|
|
3770
|
+
`}function r0(i){let e=new WeakMap,t=null;function n(o){if(o&&o.isTexture){const l=o.mapping,c=l===lo||l===co,h=l===Zi||l===Ji;if(c||h){let u=e.get(o);const f=u!==void 0?u.texture.pmremVersion:0;if(o.isRenderTargetTexture&&o.pmremVersion!==f)return t===null&&(t=new Nh(i)),u=c?t.fromEquirectangular(o,u):t.fromCubemap(o,u),u.texture.pmremVersion=o.pmremVersion,e.set(o,u),u.texture;if(u!==void 0)return u.texture;{const d=o.image;return c&&d&&d.height>0||h&&d&&r(d)?(t===null&&(t=new Nh(i)),u=c?t.fromEquirectangular(o):t.fromCubemap(o),u.texture.pmremVersion=o.pmremVersion,e.set(o,u),o.addEventListener("dispose",s),u.texture):null}}}return o}function r(o){let l=0;const c=6;for(let h=0;h<c;h++)o[h]!==void 0&&l++;return l===c}function s(o){const l=o.target;l.removeEventListener("dispose",s);const c=e.get(l);c!==void 0&&(e.delete(l),c.dispose())}function a(){e=new WeakMap,t!==null&&(t.dispose(),t=null)}return{get:n,dispose:a}}function s0(i){const e={};function t(n){if(e[n]!==void 0)return e[n];let r;switch(n){case"WEBGL_depth_texture":r=i.getExtension("WEBGL_depth_texture")||i.getExtension("MOZ_WEBGL_depth_texture")||i.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":r=i.getExtension("EXT_texture_filter_anisotropic")||i.getExtension("MOZ_EXT_texture_filter_anisotropic")||i.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":r=i.getExtension("WEBGL_compressed_texture_s3tc")||i.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||i.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":r=i.getExtension("WEBGL_compressed_texture_pvrtc")||i.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:r=i.getExtension(n)}return e[n]=r,r}return{has:function(n){return t(n)!==null},init:function(){t("EXT_color_buffer_float"),t("WEBGL_clip_cull_distance"),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float"),t("WEBGL_multisampled_render_to_texture"),t("WEBGL_render_shared_exponent")},get:function(n){const r=t(n);return r===null&&Jr("THREE.WebGLRenderer: "+n+" extension not supported."),r}}}function a0(i,e,t,n){const r={},s=new WeakMap;function a(u){const f=u.target;f.index!==null&&e.remove(f.index);for(const _ in f.attributes)e.remove(f.attributes[_]);f.removeEventListener("dispose",a),delete r[f.id];const d=s.get(f);d&&(e.remove(d),s.delete(f)),n.releaseStatesOfGeometry(f),f.isInstancedBufferGeometry===!0&&delete f._maxInstanceCount,t.memory.geometries--}function o(u,f){return r[f.id]===!0||(f.addEventListener("dispose",a),r[f.id]=!0,t.memory.geometries++),f}function l(u){const f=u.attributes;for(const d in f)e.update(f[d],i.ARRAY_BUFFER)}function c(u){const f=[],d=u.index,_=u.attributes.position;let b=0;if(d!==null){const S=d.array;b=d.version;for(let y=0,M=S.length;y<M;y+=3){const T=S[y+0],R=S[y+1],k=S[y+2];f.push(T,R,R,k,k,T)}}else if(_!==void 0){const S=_.array;b=_.version;for(let y=0,M=S.length/3-1;y<M;y+=3){const T=y+0,R=y+1,k=y+2;f.push(T,R,R,k,k,T)}}else return;const g=new(Pu(f)?Xu:Wu)(f,1);g.version=b;const m=s.get(u);m&&e.remove(m),s.set(u,g)}function h(u){const f=s.get(u);if(f){const d=u.index;d!==null&&f.version<d.version&&c(u)}else c(u);return s.get(u)}return{get:o,update:l,getWireframeAttribute:h}}function o0(i,e,t){let n;function r(f){n=f}let s,a;function o(f){s=f.type,a=f.bytesPerElement}function l(f,d){i.drawElements(n,d,s,f*a),t.update(d,n,1)}function c(f,d,_){_!==0&&(i.drawElementsInstanced(n,d,s,f*a,_),t.update(d,n,_))}function h(f,d,_){if(_===0)return;e.get("WEBGL_multi_draw").multiDrawElementsWEBGL(n,d,0,s,f,0,_);let g=0;for(let m=0;m<_;m++)g+=d[m];t.update(g,n,1)}function u(f,d,_,b){if(_===0)return;const g=e.get("WEBGL_multi_draw");if(g===null)for(let m=0;m<f.length;m++)c(f[m]/a,d[m],b[m]);else{g.multiDrawElementsInstancedWEBGL(n,d,0,s,f,0,b,0,_);let m=0;for(let S=0;S<_;S++)m+=d[S]*b[S];t.update(m,n,1)}}this.setMode=r,this.setIndex=o,this.render=l,this.renderInstances=c,this.renderMultiDraw=h,this.renderMultiDrawInstances=u}function l0(i){const e={geometries:0,textures:0},t={frame:0,calls:0,triangles:0,points:0,lines:0};function n(s,a,o){switch(t.calls++,a){case i.TRIANGLES:t.triangles+=o*(s/3);break;case i.LINES:t.lines+=o*(s/2);break;case i.LINE_STRIP:t.lines+=o*(s-1);break;case i.LINE_LOOP:t.lines+=o*s;break;case i.POINTS:t.points+=o*s;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",a);break}}function r(){t.calls=0,t.triangles=0,t.points=0,t.lines=0}return{memory:e,render:t,programs:null,autoReset:!0,reset:r,update:n}}function c0(i,e,t){const n=new WeakMap,r=new pt;function s(a,o,l){const c=a.morphTargetInfluences,h=o.morphAttributes.position||o.morphAttributes.normal||o.morphAttributes.color,u=h!==void 0?h.length:0;let f=n.get(o);if(f===void 0||f.count!==u){let C=function(){k.dispose(),n.delete(o),o.removeEventListener("dispose",C)};f!==void 0&&f.texture.dispose();const d=o.morphAttributes.position!==void 0,_=o.morphAttributes.normal!==void 0,b=o.morphAttributes.color!==void 0,g=o.morphAttributes.position||[],m=o.morphAttributes.normal||[],S=o.morphAttributes.color||[];let y=0;d===!0&&(y=1),_===!0&&(y=2),b===!0&&(y=3);let M=o.attributes.position.count*y,T=1;M>e.maxTextureSize&&(T=Math.ceil(M/e.maxTextureSize),M=e.maxTextureSize);const R=new Float32Array(M*T*4*u),k=new Uu(R,M,T,u);k.type=_n,k.needsUpdate=!0;const B=y*4;for(let D=0;D<u;D++){const V=g[D],K=m[D],J=S[D],se=M*T*4*D;for(let he=0;he<V.count;he++){const Q=he*B;d===!0&&(r.fromBufferAttribute(V,he),R[se+Q+0]=r.x,R[se+Q+1]=r.y,R[se+Q+2]=r.z,R[se+Q+3]=0),_===!0&&(r.fromBufferAttribute(K,he),R[se+Q+4]=r.x,R[se+Q+5]=r.y,R[se+Q+6]=r.z,R[se+Q+7]=0),b===!0&&(r.fromBufferAttribute(J,he),R[se+Q+8]=r.x,R[se+Q+9]=r.y,R[se+Q+10]=r.z,R[se+Q+11]=J.itemSize===4?r.w:1)}}f={count:u,texture:k,size:new Ye(M,T)},n.set(o,f),o.addEventListener("dispose",C)}if(a.isInstancedMesh===!0&&a.morphTexture!==null)l.getUniforms().setValue(i,"morphTexture",a.morphTexture,t);else{let d=0;for(let b=0;b<c.length;b++)d+=c[b];const _=o.morphTargetsRelative?1:1-d;l.getUniforms().setValue(i,"morphTargetBaseInfluence",_),l.getUniforms().setValue(i,"morphTargetInfluences",c)}l.getUniforms().setValue(i,"morphTargetsTexture",f.texture,t),l.getUniforms().setValue(i,"morphTargetsTextureSize",f.size)}return{update:s}}function u0(i,e,t,n){let r=new WeakMap;function s(l){const c=n.render.frame,h=l.geometry,u=e.get(l,h);if(r.get(u)!==c&&(e.update(u),r.set(u,c)),l.isInstancedMesh&&(l.hasEventListener("dispose",o)===!1&&l.addEventListener("dispose",o),r.get(l)!==c&&(t.update(l.instanceMatrix,i.ARRAY_BUFFER),l.instanceColor!==null&&t.update(l.instanceColor,i.ARRAY_BUFFER),r.set(l,c))),l.isSkinnedMesh){const f=l.skeleton;r.get(f)!==c&&(f.update(),r.set(f,c))}return u}function a(){r=new WeakMap}function o(l){const c=l.target;c.removeEventListener("dispose",o),t.remove(c.instanceMatrix),c.instanceColor!==null&&t.remove(c.instanceColor)}return{update:s,dispose:a}}const Bh=new zt,zh=new vh(1,1),Hh=new Uu,Vh=new Um,Gh=new Qu,Wh=[],Xh=[],$h=new Float32Array(16),jh=new Float32Array(9),qh=new Float32Array(4);function Rr(i,e,t){const n=i[0];if(n<=0||n>0)return i;const r=e*t;let s=Wh[r];if(s===void 0&&(s=new Float32Array(r),Wh[r]=s),e!==0){n.toArray(s,0);for(let a=1,o=0;a!==e;++a)o+=t,i[a].toArray(s,o)}return s}function Ut(i,e){if(i.length!==e.length)return!1;for(let t=0,n=i.length;t<n;t++)if(i[t]!==e[t])return!1;return!0}function Nt(i,e){for(let t=0,n=e.length;t<n;t++)i[t]=e[t]}function pa(i,e){let t=Xh[e];t===void 0&&(t=new Int32Array(e),Xh[e]=t);for(let n=0;n!==e;++n)t[n]=i.allocateTextureUnit();return t}function h0(i,e){const t=this.cache;t[0]!==e&&(i.uniform1f(this.addr,e),t[0]=e)}function f0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(i.uniform2f(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Ut(t,e))return;i.uniform2fv(this.addr,e),Nt(t,e)}}function d0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(i.uniform3f(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else if(e.r!==void 0)(t[0]!==e.r||t[1]!==e.g||t[2]!==e.b)&&(i.uniform3f(this.addr,e.r,e.g,e.b),t[0]=e.r,t[1]=e.g,t[2]=e.b);else{if(Ut(t,e))return;i.uniform3fv(this.addr,e),Nt(t,e)}}function p0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(i.uniform4f(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Ut(t,e))return;i.uniform4fv(this.addr,e),Nt(t,e)}}function m0(i,e){const t=this.cache,n=e.elements;if(n===void 0){if(Ut(t,e))return;i.uniformMatrix2fv(this.addr,!1,e),Nt(t,e)}else{if(Ut(t,n))return;qh.set(n),i.uniformMatrix2fv(this.addr,!1,qh),Nt(t,n)}}function g0(i,e){const t=this.cache,n=e.elements;if(n===void 0){if(Ut(t,e))return;i.uniformMatrix3fv(this.addr,!1,e),Nt(t,e)}else{if(Ut(t,n))return;jh.set(n),i.uniformMatrix3fv(this.addr,!1,jh),Nt(t,n)}}function _0(i,e){const t=this.cache,n=e.elements;if(n===void 0){if(Ut(t,e))return;i.uniformMatrix4fv(this.addr,!1,e),Nt(t,e)}else{if(Ut(t,n))return;$h.set(n),i.uniformMatrix4fv(this.addr,!1,$h),Nt(t,n)}}function v0(i,e){const t=this.cache;t[0]!==e&&(i.uniform1i(this.addr,e),t[0]=e)}function y0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(i.uniform2i(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Ut(t,e))return;i.uniform2iv(this.addr,e),Nt(t,e)}}function x0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(i.uniform3i(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(Ut(t,e))return;i.uniform3iv(this.addr,e),Nt(t,e)}}function b0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(i.uniform4i(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Ut(t,e))return;i.uniform4iv(this.addr,e),Nt(t,e)}}function S0(i,e){const t=this.cache;t[0]!==e&&(i.uniform1ui(this.addr,e),t[0]=e)}function M0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y)&&(i.uniform2ui(this.addr,e.x,e.y),t[0]=e.x,t[1]=e.y);else{if(Ut(t,e))return;i.uniform2uiv(this.addr,e),Nt(t,e)}}function E0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z)&&(i.uniform3ui(this.addr,e.x,e.y,e.z),t[0]=e.x,t[1]=e.y,t[2]=e.z);else{if(Ut(t,e))return;i.uniform3uiv(this.addr,e),Nt(t,e)}}function T0(i,e){const t=this.cache;if(e.x!==void 0)(t[0]!==e.x||t[1]!==e.y||t[2]!==e.z||t[3]!==e.w)&&(i.uniform4ui(this.addr,e.x,e.y,e.z,e.w),t[0]=e.x,t[1]=e.y,t[2]=e.z,t[3]=e.w);else{if(Ut(t,e))return;i.uniform4uiv(this.addr,e),Nt(t,e)}}function w0(i,e,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(i.uniform1i(this.addr,r),n[0]=r);let s;this.type===i.SAMPLER_2D_SHADOW?(zh.compareFunction=Tu,s=zh):s=Bh,t.setTexture2D(e||s,r)}function A0(i,e,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(i.uniform1i(this.addr,r),n[0]=r),t.setTexture3D(e||Vh,r)}function R0(i,e,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(i.uniform1i(this.addr,r),n[0]=r),t.setTextureCube(e||Gh,r)}function C0(i,e,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(i.uniform1i(this.addr,r),n[0]=r),t.setTexture2DArray(e||Hh,r)}function P0(i){switch(i){case 5126:return h0;case 35664:return f0;case 35665:return d0;case 35666:return p0;case 35674:return m0;case 35675:return g0;case 35676:return _0;case 5124:case 35670:return v0;case 35667:case 35671:return y0;case 35668:case 35672:return x0;case 35669:case 35673:return b0;case 5125:return S0;case 36294:return M0;case 36295:return E0;case 36296:return T0;case 35678:case 36198:case 36298:case 36306:case 35682:return w0;case 35679:case 36299:case 36307:return A0;case 35680:case 36300:case 36308:case 36293:return R0;case 36289:case 36303:case 36311:case 36292:return C0}}function D0(i,e){i.uniform1fv(this.addr,e)}function L0(i,e){const t=Rr(e,this.size,2);i.uniform2fv(this.addr,t)}function I0(i,e){const t=Rr(e,this.size,3);i.uniform3fv(this.addr,t)}function U0(i,e){const t=Rr(e,this.size,4);i.uniform4fv(this.addr,t)}function N0(i,e){const t=Rr(e,this.size,4);i.uniformMatrix2fv(this.addr,!1,t)}function O0(i,e){const t=Rr(e,this.size,9);i.uniformMatrix3fv(this.addr,!1,t)}function F0(i,e){const t=Rr(e,this.size,16);i.uniformMatrix4fv(this.addr,!1,t)}function k0(i,e){i.uniform1iv(this.addr,e)}function B0(i,e){i.uniform2iv(this.addr,e)}function z0(i,e){i.uniform3iv(this.addr,e)}function H0(i,e){i.uniform4iv(this.addr,e)}function V0(i,e){i.uniform1uiv(this.addr,e)}function G0(i,e){i.uniform2uiv(this.addr,e)}function W0(i,e){i.uniform3uiv(this.addr,e)}function X0(i,e){i.uniform4uiv(this.addr,e)}function $0(i,e,t){const n=this.cache,r=e.length,s=pa(t,r);Ut(n,s)||(i.uniform1iv(this.addr,s),Nt(n,s));for(let a=0;a!==r;++a)t.setTexture2D(e[a]||Bh,s[a])}function j0(i,e,t){const n=this.cache,r=e.length,s=pa(t,r);Ut(n,s)||(i.uniform1iv(this.addr,s),Nt(n,s));for(let a=0;a!==r;++a)t.setTexture3D(e[a]||Vh,s[a])}function q0(i,e,t){const n=this.cache,r=e.length,s=pa(t,r);Ut(n,s)||(i.uniform1iv(this.addr,s),Nt(n,s));for(let a=0;a!==r;++a)t.setTextureCube(e[a]||Gh,s[a])}function Y0(i,e,t){const n=this.cache,r=e.length,s=pa(t,r);Ut(n,s)||(i.uniform1iv(this.addr,s),Nt(n,s));for(let a=0;a!==r;++a)t.setTexture2DArray(e[a]||Hh,s[a])}function K0(i){switch(i){case 5126:return D0;case 35664:return L0;case 35665:return I0;case 35666:return U0;case 35674:return N0;case 35675:return O0;case 35676:return F0;case 5124:case 35670:return k0;case 35667:case 35671:return B0;case 35668:case 35672:return z0;case 35669:case 35673:return H0;case 5125:return V0;case 36294:return G0;case 36295:return W0;case 36296:return X0;case 35678:case 36198:case 36298:case 36306:case 35682:return $0;case 35679:case 36299:case 36307:return j0;case 35680:case 36300:case 36308:case 36293:return q0;case 36289:case 36303:case 36311:case 36292:return Y0}}class Z0{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.setValue=P0(t.type)}}class J0{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=K0(t.type)}}class Q0{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n){const r=this.seq;for(let s=0,a=r.length;s!==a;++s){const o=r[s];o.setValue(e,t[o.id],n)}}}const Wl=/(\w+)(\])?(\[|\.)?/g;function Yh(i,e){i.seq.push(e),i.map[e.id]=e}function ey(i,e,t){const n=i.name,r=n.length;for(Wl.lastIndex=0;;){const s=Wl.exec(n),a=Wl.lastIndex;let o=s[1];const l=s[2]==="]",c=s[3];if(l&&(o=o|0),c===void 0||c==="["&&a+2===r){Yh(t,c===void 0?new Z0(o,i,e):new J0(o,i,e));break}else{let u=t.map[o];u===void 0&&(u=new Q0(o),Yh(t,u)),t=u}}}class ma{constructor(e,t){this.seq=[],this.map={};const n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let r=0;r<n;++r){const s=e.getActiveUniform(t,r),a=e.getUniformLocation(t,s.name);ey(s,a,this)}}setValue(e,t,n,r){const s=this.map[t];s!==void 0&&s.setValue(e,n,r)}setOptional(e,t,n){const r=t[n];r!==void 0&&this.setValue(e,n,r)}static upload(e,t,n,r){for(let s=0,a=t.length;s!==a;++s){const o=t[s],l=n[o.id];l.needsUpdate!==!1&&o.setValue(e,l.value,r)}}static seqWithValue(e,t){const n=[];for(let r=0,s=e.length;r!==s;++r){const a=e[r];a.id in t&&n.push(a)}return n}}function Kh(i,e,t){const n=i.createShader(e);return i.shaderSource(n,t),i.compileShader(n),n}const ty=37297;let ny=0;function iy(i,e){const t=i.split(`
|
|
3771
3771
|
`),n=[],r=Math.max(e-6,0),s=Math.min(e+6,t.length);for(let a=r;a<s;a++){const o=a+1;n.push(`${o===e?">":" "} ${o}: ${t[a]}`)}return n.join(`
|
|
3772
|
-
`)}const
|
|
3772
|
+
`)}const Zh=new Qe;function ry(i){lt._getMatrix(Zh,lt.workingColorSpace,i);const e=`mat3( ${Zh.elements.map(t=>t.toFixed(4))} )`;switch(lt.getTransfer(i)){case Ns:return[e,"LinearTransferOETF"];case xt:return[e,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",i),[e,"LinearTransferOETF"]}}function Jh(i,e,t){const n=i.getShaderParameter(e,i.COMPILE_STATUS),s=(i.getShaderInfoLog(e)||"").trim();if(n&&s==="")return"";const a=/ERROR: 0:(\d+)/.exec(s);if(a){const o=parseInt(a[1]);return t.toUpperCase()+`
|
|
3773
3773
|
|
|
3774
3774
|
`+s+`
|
|
3775
3775
|
|
|
3776
|
-
`+
|
|
3777
|
-
`)}function
|
|
3778
|
-
`)}function
|
|
3779
|
-
`)}function
|
|
3780
|
-
`)}function
|
|
3776
|
+
`+iy(i.getShaderSource(e),o)}else return s}function sy(i,e){const t=ry(e);return[`vec4 ${i}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(`
|
|
3777
|
+
`)}function ay(i,e){let t;switch(e){case $p:t="Linear";break;case jp:t="Reinhard";break;case qp:t="Cineon";break;case lu:t="ACESFilmic";break;case Kp:t="AgX";break;case Zp:t="Neutral";break;case Yp:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+i+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const ga=new $;function oy(){lt.getLuminanceCoefficients(ga);const i=ga.x.toFixed(4),e=ga.y.toFixed(4),t=ga.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${i}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(`
|
|
3778
|
+
`)}function ly(i){return[i.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",i.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(us).join(`
|
|
3779
|
+
`)}function cy(i){const e=[];for(const t in i){const n=i[t];n!==!1&&e.push("#define "+t+" "+n)}return e.join(`
|
|
3780
|
+
`)}function uy(i,e){const t={},n=i.getProgramParameter(e,i.ACTIVE_ATTRIBUTES);for(let r=0;r<n;r++){const s=i.getActiveAttrib(e,r),a=s.name;let o=1;s.type===i.FLOAT_MAT2&&(o=2),s.type===i.FLOAT_MAT3&&(o=3),s.type===i.FLOAT_MAT4&&(o=4),t[a]={type:s.type,location:i.getAttribLocation(e,a),locationSize:o}}return t}function us(i){return i!==""}function Qh(i,e){const t=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return i.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,t).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function ef(i,e){return i.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const hy=/^[ \t]*#include +<([\w\d./]+)>/gm;function Xl(i){return i.replace(hy,dy)}const fy=new Map;function dy(i,e){let t=nt[e];if(t===void 0){const n=fy.get(e);if(n!==void 0)t=nt[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return Xl(t)}const py=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function tf(i){return i.replace(py,my)}function my(i,e,t,n){let r="";for(let s=parseInt(e);s<parseInt(t);s++)r+=n.replace(/\[\s*i\s*\]/g,"[ "+s+" ]").replace(/UNROLLED_LOOP_INDEX/g,s);return r}function nf(i){let e=`precision ${i.precision} float;
|
|
3781
3781
|
precision ${i.precision} int;
|
|
3782
3782
|
precision ${i.precision} sampler2D;
|
|
3783
3783
|
precision ${i.precision} samplerCube;
|
|
@@ -3797,30 +3797,30 @@ void main() {
|
|
|
3797
3797
|
`;return i.precision==="highp"?e+=`
|
|
3798
3798
|
#define HIGH_PRECISION`:i.precision==="mediump"?e+=`
|
|
3799
3799
|
#define MEDIUM_PRECISION`:i.precision==="lowp"&&(e+=`
|
|
3800
|
-
#define LOW_PRECISION`),e}function
|
|
3800
|
+
#define LOW_PRECISION`),e}function gy(i){let e="SHADOWMAP_TYPE_BASIC";return i.shadowMapType===iu?e="SHADOWMAP_TYPE_PCF":i.shadowMapType===Tp?e="SHADOWMAP_TYPE_PCF_SOFT":i.shadowMapType===Vn&&(e="SHADOWMAP_TYPE_VSM"),e}function _y(i){let e="ENVMAP_TYPE_CUBE";if(i.envMap)switch(i.envMapMode){case Zi:case Ji:e="ENVMAP_TYPE_CUBE";break;case Rs:e="ENVMAP_TYPE_CUBE_UV";break}return e}function vy(i){let e="ENVMAP_MODE_REFLECTION";if(i.envMap)switch(i.envMapMode){case Ji:e="ENVMAP_MODE_REFRACTION";break}return e}function yy(i){let e="ENVMAP_BLENDING_NONE";if(i.envMap)switch(i.combine){case ou:e="ENVMAP_BLENDING_MULTIPLY";break;case Wp:e="ENVMAP_BLENDING_MIX";break;case Xp:e="ENVMAP_BLENDING_ADD";break}return e}function xy(i){const e=i.envMapCubeUVHeight;if(e===null)return null;const t=Math.log2(e)-2,n=1/e;return{texelWidth:1/(3*Math.max(Math.pow(2,t),112)),texelHeight:n,maxMip:t}}function by(i,e,t,n){const r=i.getContext(),s=t.defines;let a=t.vertexShader,o=t.fragmentShader;const l=gy(t),c=_y(t),h=vy(t),u=yy(t),f=xy(t),d=ly(t),_=cy(s),b=r.createProgram();let g,m,S=t.glslVersion?"#version "+t.glslVersion+`
|
|
3801
3801
|
`:"";t.isRawShaderMaterial?(g=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,_].filter(us).join(`
|
|
3802
3802
|
`),g.length>0&&(g+=`
|
|
3803
3803
|
`),m=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,_].filter(us).join(`
|
|
3804
3804
|
`),m.length>0&&(m+=`
|
|
3805
|
-
`)):(g=[
|
|
3805
|
+
`)):(g=[nf(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,_,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+h:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",`
|
|
3806
3806
|
`].filter(us).join(`
|
|
3807
|
-
`),m=[
|
|
3807
|
+
`),m=[nf(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,_,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+h:"",t.envMap?"#define "+u:"",f?"#define CUBEUV_TEXEL_WIDTH "+f.texelWidth:"",f?"#define CUBEUV_TEXEL_HEIGHT "+f.texelHeight:"",f?"#define CUBEUV_MAX_MIP "+f.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGARITHMIC_DEPTH_BUFFER":"",t.reversedDepthBuffer?"#define USE_REVERSED_DEPTH_BUFFER":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==ri?"#define TONE_MAPPING":"",t.toneMapping!==ri?nt.tonemapping_pars_fragment:"",t.toneMapping!==ri?ay("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",nt.colorspace_pars_fragment,sy("linearToOutputTexel",t.outputColorSpace),oy(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",`
|
|
3808
3808
|
`].filter(us).join(`
|
|
3809
|
-
`)),a=
|
|
3809
|
+
`)),a=Xl(a),a=Qh(a,t),a=ef(a,t),o=Xl(o),o=Qh(o,t),o=ef(o,t),a=tf(a),o=tf(o),t.isRawShaderMaterial!==!0&&(S=`#version 300 es
|
|
3810
3810
|
`,g=[d,"#define attribute in","#define varying out","#define texture2D texture"].join(`
|
|
3811
3811
|
`)+`
|
|
3812
|
-
`+g,m=["#define varying in",t.glslVersion===
|
|
3812
|
+
`+g,m=["#define varying in",t.glslVersion===wu?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===wu?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`
|
|
3813
3813
|
`)+`
|
|
3814
|
-
`+m);const y=S+g+a,M=S+m+o,T=
|
|
3814
|
+
`+m);const y=S+g+a,M=S+m+o,T=Kh(r,r.VERTEX_SHADER,y),R=Kh(r,r.FRAGMENT_SHADER,M);r.attachShader(b,T),r.attachShader(b,R),t.index0AttributeName!==void 0?r.bindAttribLocation(b,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(b,0,"position"),r.linkProgram(b);function k(V){if(i.debug.checkShaderErrors){const K=r.getProgramInfoLog(b)||"",J=r.getShaderInfoLog(T)||"",se=r.getShaderInfoLog(R)||"",he=K.trim(),Q=J.trim(),de=se.trim();let ne=!0,ue=!0;if(r.getProgramParameter(b,r.LINK_STATUS)===!1)if(ne=!1,typeof i.debug.onShaderError=="function")i.debug.onShaderError(r,b,T,R);else{const Te=Jh(r,T,"vertex"),ke=Jh(r,R,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(b,r.VALIDATE_STATUS)+`
|
|
3815
3815
|
|
|
3816
3816
|
Material Name: `+V.name+`
|
|
3817
3817
|
Material Type: `+V.type+`
|
|
3818
3818
|
|
|
3819
3819
|
Program Info Log: `+he+`
|
|
3820
3820
|
`+Te+`
|
|
3821
|
-
`+ke)}else he!==""?console.warn("THREE.WebGLProgram: Program Info Log:",he):(Q===""||de==="")&&(ue=!1);ue&&(V.diagnostics={runnable:ne,programLog:he,vertexShader:{log:Q,prefix:g},fragmentShader:{log:de,prefix:m}})}r.deleteShader(T),r.deleteShader(R),B=new ma(r,b),C=ly(r,b)}let B;this.getUniforms=function(){return B===void 0&&k(this),B};let C;this.getAttributes=function(){return C===void 0&&k(this),C};let D=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return D===!1&&(D=r.getProgramParameter(b,Q0)),D},this.destroy=function(){n.releaseStatesOfProgram(this),r.deleteProgram(b),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=ey++,this.cacheKey=e,this.usedTimes=1,this.program=b,this.vertexShader=T,this.fragmentShader=R,this}let xy=0;class by{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new Sy(e),t.set(e,n)),n}}class Sy{constructor(e){this.id=xy++,this.code=e,this.usedTimes=0}}function My(i,e,t,n,r,s,a){const o=new sl,l=new by,c=new Set,h=[],u=r.logarithmicDepthBuffer,f=r.vertexTextures;let d=r.precision;const _={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function b(C){return c.add(C),C===0?"uv":`uv${C}`}function g(C,D,V,K,J){const se=K.fog,he=J.geometry,Q=C.isMeshStandardMaterial?K.environment:null,de=(C.isMeshStandardMaterial?t:e).get(C.envMap||Q),ne=de&&de.mapping===Rs?de.image.height:null,ue=_[C.type];C.precision!==null&&(d=r.getMaxPrecision(C.precision),d!==C.precision&&console.warn("THREE.WebGLProgram.getParameters:",C.precision,"not supported, using",d,"instead."));const Te=he.morphAttributes.position||he.morphAttributes.normal||he.morphAttributes.color,ke=Te!==void 0?Te.length:0;let O=0;he.morphAttributes.position!==void 0&&(O=1),he.morphAttributes.normal!==void 0&&(O=2),he.morphAttributes.color!==void 0&&(O=3);let H,we,Be,ie;if(ue){const ve=Fn[ue];H=ve.vertexShader,we=ve.fragmentShader}else H=C.vertexShader,we=C.fragmentShader,l.update(C),Be=l.getVertexShaderID(C),ie=l.getFragmentShaderID(C);const ce=i.getRenderTarget(),z=i.state.buffers.depth.getReversed(),j=J.isInstancedMesh===!0,W=J.isBatchedMesh===!0,le=!!C.map,be=!!C.matcap,U=!!de,ee=!!C.aoMap,fe=!!C.lightMap,ye=!!C.bumpMap,Se=!!C.normalMap,ze=!!C.displacementMap,_e=!!C.emissiveMap,xe=!!C.metalnessMap,Xe=!!C.roughnessMap,De=C.anisotropy>0,N=C.clearcoat>0,w=C.dispersion>0,q=C.iridescence>0,re=C.sheen>0,pe=C.transmission>0,ae=De&&!!C.anisotropyMap,Ve=N&&!!C.clearcoatMap,Ae=N&&!!C.clearcoatNormalMap,oe=N&&!!C.clearcoatRoughnessMap,We=q&&!!C.iridescenceMap,Me=q&&!!C.iridescenceThicknessMap,Re=re&&!!C.sheenColorMap,je=re&&!!C.sheenRoughnessMap,Oe=!!C.specularMap,Ce=!!C.specularColorMap,A=!!C.specularIntensityMap,x=pe&&!!C.transmissionMap,L=pe&&!!C.thicknessMap,p=!!C.gradientMap,v=!!C.alphaMap,E=C.alphaTest>0,I=!!C.alphaHash,F=!!C.extensions;let X=ri;C.toneMapped&&(ce===null||ce.isXRRenderTarget===!0)&&(X=i.toneMapping);const me={shaderID:ue,shaderType:C.type,shaderName:C.name,vertexShader:H,fragmentShader:we,defines:C.defines,customVertexShaderID:Be,customFragmentShaderID:ie,isRawShaderMaterial:C.isRawShaderMaterial===!0,glslVersion:C.glslVersion,precision:d,batching:W,batchingColor:W&&J._colorsTexture!==null,instancing:j,instancingColor:j&&J.instanceColor!==null,instancingMorph:j&&J.morphTexture!==null,supportsVertexTextures:f,outputColorSpace:ce===null?i.outputColorSpace:ce.isXRRenderTarget===!0?ce.texture.colorSpace:Kt,alphaToCoverage:!!C.alphaToCoverage,map:le,matcap:be,envMap:U,envMapMode:U&&de.mapping,envMapCubeUVHeight:ne,aoMap:ee,lightMap:fe,bumpMap:ye,normalMap:Se,displacementMap:f&&ze,emissiveMap:_e,normalMapObjectSpace:Se&&C.normalMapType===tm,normalMapTangentSpace:Se&&C.normalMapType===Su,metalnessMap:xe,roughnessMap:Xe,anisotropy:De,anisotropyMap:ae,clearcoat:N,clearcoatMap:Ve,clearcoatNormalMap:Ae,clearcoatRoughnessMap:oe,dispersion:w,iridescence:q,iridescenceMap:We,iridescenceThicknessMap:Me,sheen:re,sheenColorMap:Re,sheenRoughnessMap:je,specularMap:Oe,specularColorMap:Ce,specularIntensityMap:A,transmission:pe,transmissionMap:x,thicknessMap:L,gradientMap:p,opaque:C.transparent===!1&&C.blending===Yi&&C.alphaToCoverage===!1,alphaMap:v,alphaTest:E,alphaHash:I,combine:C.combine,mapUv:le&&b(C.map.channel),aoMapUv:ee&&b(C.aoMap.channel),lightMapUv:fe&&b(C.lightMap.channel),bumpMapUv:ye&&b(C.bumpMap.channel),normalMapUv:Se&&b(C.normalMap.channel),displacementMapUv:ze&&b(C.displacementMap.channel),emissiveMapUv:_e&&b(C.emissiveMap.channel),metalnessMapUv:xe&&b(C.metalnessMap.channel),roughnessMapUv:Xe&&b(C.roughnessMap.channel),anisotropyMapUv:ae&&b(C.anisotropyMap.channel),clearcoatMapUv:Ve&&b(C.clearcoatMap.channel),clearcoatNormalMapUv:Ae&&b(C.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:oe&&b(C.clearcoatRoughnessMap.channel),iridescenceMapUv:We&&b(C.iridescenceMap.channel),iridescenceThicknessMapUv:Me&&b(C.iridescenceThicknessMap.channel),sheenColorMapUv:Re&&b(C.sheenColorMap.channel),sheenRoughnessMapUv:je&&b(C.sheenRoughnessMap.channel),specularMapUv:Oe&&b(C.specularMap.channel),specularColorMapUv:Ce&&b(C.specularColorMap.channel),specularIntensityMapUv:A&&b(C.specularIntensityMap.channel),transmissionMapUv:x&&b(C.transmissionMap.channel),thicknessMapUv:L&&b(C.thicknessMap.channel),alphaMapUv:v&&b(C.alphaMap.channel),vertexTangents:!!he.attributes.tangent&&(Se||De),vertexColors:C.vertexColors,vertexAlphas:C.vertexColors===!0&&!!he.attributes.color&&he.attributes.color.itemSize===4,pointsUvs:J.isPoints===!0&&!!he.attributes.uv&&(le||v),fog:!!se,useFog:C.fog===!0,fogExp2:!!se&&se.isFogExp2,flatShading:C.flatShading===!0&&C.wireframe===!1,sizeAttenuation:C.sizeAttenuation===!0,logarithmicDepthBuffer:u,reversedDepthBuffer:z,skinning:J.isSkinnedMesh===!0,morphTargets:he.morphAttributes.position!==void 0,morphNormals:he.morphAttributes.normal!==void 0,morphColors:he.morphAttributes.color!==void 0,morphTargetsCount:ke,morphTextureStride:O,numDirLights:D.directional.length,numPointLights:D.point.length,numSpotLights:D.spot.length,numSpotLightMaps:D.spotLightMap.length,numRectAreaLights:D.rectArea.length,numHemiLights:D.hemi.length,numDirLightShadows:D.directionalShadowMap.length,numPointLightShadows:D.pointShadowMap.length,numSpotLightShadows:D.spotShadowMap.length,numSpotLightShadowsWithMaps:D.numSpotLightShadowsWithMaps,numLightProbes:D.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:C.dithering,shadowMapEnabled:i.shadowMap.enabled&&V.length>0,shadowMapType:i.shadowMap.type,toneMapping:X,decodeVideoTexture:le&&C.map.isVideoTexture===!0&<.getTransfer(C.map.colorSpace)===xt,decodeVideoTextureEmissive:_e&&C.emissiveMap.isVideoTexture===!0&<.getTransfer(C.emissiveMap.colorSpace)===xt,premultipliedAlpha:C.premultipliedAlpha,doubleSided:C.side===Rn,flipSided:C.side===sn,useDepthPacking:C.depthPacking>=0,depthPacking:C.depthPacking||0,index0AttributeName:C.index0AttributeName,extensionClipCullDistance:F&&C.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(F&&C.extensions.multiDraw===!0||W)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:C.customProgramCacheKey()};return me.vertexUv1s=c.has(1),me.vertexUv2s=c.has(2),me.vertexUv3s=c.has(3),c.clear(),me}function m(C){const D=[];if(C.shaderID?D.push(C.shaderID):(D.push(C.customVertexShaderID),D.push(C.customFragmentShaderID)),C.defines!==void 0)for(const V in C.defines)D.push(V),D.push(C.defines[V]);return C.isRawShaderMaterial===!1&&(S(D,C),y(D,C),D.push(i.outputColorSpace)),D.push(C.customProgramCacheKey),D.join()}function S(C,D){C.push(D.precision),C.push(D.outputColorSpace),C.push(D.envMapMode),C.push(D.envMapCubeUVHeight),C.push(D.mapUv),C.push(D.alphaMapUv),C.push(D.lightMapUv),C.push(D.aoMapUv),C.push(D.bumpMapUv),C.push(D.normalMapUv),C.push(D.displacementMapUv),C.push(D.emissiveMapUv),C.push(D.metalnessMapUv),C.push(D.roughnessMapUv),C.push(D.anisotropyMapUv),C.push(D.clearcoatMapUv),C.push(D.clearcoatNormalMapUv),C.push(D.clearcoatRoughnessMapUv),C.push(D.iridescenceMapUv),C.push(D.iridescenceThicknessMapUv),C.push(D.sheenColorMapUv),C.push(D.sheenRoughnessMapUv),C.push(D.specularMapUv),C.push(D.specularColorMapUv),C.push(D.specularIntensityMapUv),C.push(D.transmissionMapUv),C.push(D.thicknessMapUv),C.push(D.combine),C.push(D.fogExp2),C.push(D.sizeAttenuation),C.push(D.morphTargetsCount),C.push(D.morphAttributeCount),C.push(D.numDirLights),C.push(D.numPointLights),C.push(D.numSpotLights),C.push(D.numSpotLightMaps),C.push(D.numHemiLights),C.push(D.numRectAreaLights),C.push(D.numDirLightShadows),C.push(D.numPointLightShadows),C.push(D.numSpotLightShadows),C.push(D.numSpotLightShadowsWithMaps),C.push(D.numLightProbes),C.push(D.shadowMapType),C.push(D.toneMapping),C.push(D.numClippingPlanes),C.push(D.numClipIntersection),C.push(D.depthPacking)}function y(C,D){o.disableAll(),D.supportsVertexTextures&&o.enable(0),D.instancing&&o.enable(1),D.instancingColor&&o.enable(2),D.instancingMorph&&o.enable(3),D.matcap&&o.enable(4),D.envMap&&o.enable(5),D.normalMapObjectSpace&&o.enable(6),D.normalMapTangentSpace&&o.enable(7),D.clearcoat&&o.enable(8),D.iridescence&&o.enable(9),D.alphaTest&&o.enable(10),D.vertexColors&&o.enable(11),D.vertexAlphas&&o.enable(12),D.vertexUv1s&&o.enable(13),D.vertexUv2s&&o.enable(14),D.vertexUv3s&&o.enable(15),D.vertexTangents&&o.enable(16),D.anisotropy&&o.enable(17),D.alphaHash&&o.enable(18),D.batching&&o.enable(19),D.dispersion&&o.enable(20),D.batchingColor&&o.enable(21),D.gradientMap&&o.enable(22),C.push(o.mask),o.disableAll(),D.fog&&o.enable(0),D.useFog&&o.enable(1),D.flatShading&&o.enable(2),D.logarithmicDepthBuffer&&o.enable(3),D.reversedDepthBuffer&&o.enable(4),D.skinning&&o.enable(5),D.morphTargets&&o.enable(6),D.morphNormals&&o.enable(7),D.morphColors&&o.enable(8),D.premultipliedAlpha&&o.enable(9),D.shadowMapEnabled&&o.enable(10),D.doubleSided&&o.enable(11),D.flipSided&&o.enable(12),D.useDepthPacking&&o.enable(13),D.dithering&&o.enable(14),D.transmission&&o.enable(15),D.sheen&&o.enable(16),D.opaque&&o.enable(17),D.pointsUvs&&o.enable(18),D.decodeVideoTexture&&o.enable(19),D.decodeVideoTextureEmissive&&o.enable(20),D.alphaToCoverage&&o.enable(21),C.push(o.mask)}function M(C){const D=_[C.type];let V;if(D){const K=Fn[D];V=Xm.clone(K.uniforms)}else V=C.uniforms;return V}function T(C,D){let V;for(let K=0,J=h.length;K<J;K++){const se=h[K];if(se.cacheKey===D){V=se,++V.usedTimes;break}}return V===void 0&&(V=new yy(i,D,C,s),h.push(V)),V}function R(C){if(--C.usedTimes===0){const D=h.indexOf(C);h[D]=h[h.length-1],h.pop(),C.destroy()}}function k(C){l.remove(C)}function B(){l.dispose()}return{getParameters:g,getProgramCacheKey:m,getUniforms:M,acquireProgram:T,releaseProgram:R,releaseShaderCache:k,programs:h,dispose:B}}function Ey(){let i=new WeakMap;function e(a){return i.has(a)}function t(a){let o=i.get(a);return o===void 0&&(o={},i.set(a,o)),o}function n(a){i.delete(a)}function r(a,o,l){i.get(a)[o]=l}function s(){i=new WeakMap}return{has:e,get:t,remove:n,update:r,dispose:s}}function Ty(i,e){return i.groupOrder!==e.groupOrder?i.groupOrder-e.groupOrder:i.renderOrder!==e.renderOrder?i.renderOrder-e.renderOrder:i.material.id!==e.material.id?i.material.id-e.material.id:i.z!==e.z?i.z-e.z:i.id-e.id}function nf(i,e){return i.groupOrder!==e.groupOrder?i.groupOrder-e.groupOrder:i.renderOrder!==e.renderOrder?i.renderOrder-e.renderOrder:i.z!==e.z?e.z-i.z:i.id-e.id}function rf(){const i=[];let e=0;const t=[],n=[],r=[];function s(){e=0,t.length=0,n.length=0,r.length=0}function a(u,f,d,_,b,g){let m=i[e];return m===void 0?(m={id:u.id,object:u,geometry:f,material:d,groupOrder:_,renderOrder:u.renderOrder,z:b,group:g},i[e]=m):(m.id=u.id,m.object=u,m.geometry=f,m.material=d,m.groupOrder=_,m.renderOrder=u.renderOrder,m.z=b,m.group=g),e++,m}function o(u,f,d,_,b,g){const m=a(u,f,d,_,b,g);d.transmission>0?n.push(m):d.transparent===!0?r.push(m):t.push(m)}function l(u,f,d,_,b,g){const m=a(u,f,d,_,b,g);d.transmission>0?n.unshift(m):d.transparent===!0?r.unshift(m):t.unshift(m)}function c(u,f){t.length>1&&t.sort(u||Ty),n.length>1&&n.sort(f||nf),r.length>1&&r.sort(f||nf)}function h(){for(let u=e,f=i.length;u<f;u++){const d=i[u];if(d.id===null)break;d.id=null,d.object=null,d.geometry=null,d.material=null,d.group=null}}return{opaque:t,transmissive:n,transparent:r,init:s,push:o,unshift:l,finish:h,sort:c}}function wy(){let i=new WeakMap;function e(n,r){const s=i.get(n);let a;return s===void 0?(a=new rf,i.set(n,[a])):r>=s.length?(a=new rf,s.push(a)):a=s[r],a}function t(){i=new WeakMap}return{get:e,dispose:t}}function Ay(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new $,color:new Ze};break;case"SpotLight":t={position:new $,direction:new $,color:new Ze,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new $,color:new Ze,distance:0,decay:0};break;case"HemisphereLight":t={direction:new $,skyColor:new Ze,groundColor:new Ze};break;case"RectAreaLight":t={color:new Ze,position:new $,halfWidth:new $,halfHeight:new $};break}return i[e.id]=t,t}}}function Ry(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ye};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ye};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ye,shadowCameraNear:1,shadowCameraFar:1e3};break}return i[e.id]=t,t}}}let Cy=0;function Py(i,e){return(e.castShadow?2:0)-(i.castShadow?2:0)+(e.map?1:0)-(i.map?1:0)}function Dy(i){const e=new Ay,t=Ry(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new $);const r=new $,s=new et,a=new et;function o(c){let h=0,u=0,f=0;for(let C=0;C<9;C++)n.probe[C].set(0,0,0);let d=0,_=0,b=0,g=0,m=0,S=0,y=0,M=0,T=0,R=0,k=0;c.sort(Py);for(let C=0,D=c.length;C<D;C++){const V=c[C],K=V.color,J=V.intensity,se=V.distance,he=V.shadow&&V.shadow.map?V.shadow.map.texture:null;if(V.isAmbientLight)h+=K.r*J,u+=K.g*J,f+=K.b*J;else if(V.isLightProbe){for(let Q=0;Q<9;Q++)n.probe[Q].addScaledVector(V.sh.coefficients[Q],J);k++}else if(V.isDirectionalLight){const Q=e.get(V);if(Q.color.copy(V.color).multiplyScalar(V.intensity),V.castShadow){const de=V.shadow,ne=t.get(V);ne.shadowIntensity=de.intensity,ne.shadowBias=de.bias,ne.shadowNormalBias=de.normalBias,ne.shadowRadius=de.radius,ne.shadowMapSize=de.mapSize,n.directionalShadow[d]=ne,n.directionalShadowMap[d]=he,n.directionalShadowMatrix[d]=V.shadow.matrix,S++}n.directional[d]=Q,d++}else if(V.isSpotLight){const Q=e.get(V);Q.position.setFromMatrixPosition(V.matrixWorld),Q.color.copy(K).multiplyScalar(J),Q.distance=se,Q.coneCos=Math.cos(V.angle),Q.penumbraCos=Math.cos(V.angle*(1-V.penumbra)),Q.decay=V.decay,n.spot[b]=Q;const de=V.shadow;if(V.map&&(n.spotLightMap[T]=V.map,T++,de.updateMatrices(V),V.castShadow&&R++),n.spotLightMatrix[b]=de.matrix,V.castShadow){const ne=t.get(V);ne.shadowIntensity=de.intensity,ne.shadowBias=de.bias,ne.shadowNormalBias=de.normalBias,ne.shadowRadius=de.radius,ne.shadowMapSize=de.mapSize,n.spotShadow[b]=ne,n.spotShadowMap[b]=he,M++}b++}else if(V.isRectAreaLight){const Q=e.get(V);Q.color.copy(K).multiplyScalar(J),Q.halfWidth.set(V.width*.5,0,0),Q.halfHeight.set(0,V.height*.5,0),n.rectArea[g]=Q,g++}else if(V.isPointLight){const Q=e.get(V);if(Q.color.copy(V.color).multiplyScalar(V.intensity),Q.distance=V.distance,Q.decay=V.decay,V.castShadow){const de=V.shadow,ne=t.get(V);ne.shadowIntensity=de.intensity,ne.shadowBias=de.bias,ne.shadowNormalBias=de.normalBias,ne.shadowRadius=de.radius,ne.shadowMapSize=de.mapSize,ne.shadowCameraNear=de.camera.near,ne.shadowCameraFar=de.camera.far,n.pointShadow[_]=ne,n.pointShadowMap[_]=he,n.pointShadowMatrix[_]=V.shadow.matrix,y++}n.point[_]=Q,_++}else if(V.isHemisphereLight){const Q=e.get(V);Q.skyColor.copy(V.color).multiplyScalar(J),Q.groundColor.copy(V.groundColor).multiplyScalar(J),n.hemi[m]=Q,m++}}g>0&&(i.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=Ie.LTC_FLOAT_1,n.rectAreaLTC2=Ie.LTC_FLOAT_2):(n.rectAreaLTC1=Ie.LTC_HALF_1,n.rectAreaLTC2=Ie.LTC_HALF_2)),n.ambient[0]=h,n.ambient[1]=u,n.ambient[2]=f;const B=n.hash;(B.directionalLength!==d||B.pointLength!==_||B.spotLength!==b||B.rectAreaLength!==g||B.hemiLength!==m||B.numDirectionalShadows!==S||B.numPointShadows!==y||B.numSpotShadows!==M||B.numSpotMaps!==T||B.numLightProbes!==k)&&(n.directional.length=d,n.spot.length=b,n.rectArea.length=g,n.point.length=_,n.hemi.length=m,n.directionalShadow.length=S,n.directionalShadowMap.length=S,n.pointShadow.length=y,n.pointShadowMap.length=y,n.spotShadow.length=M,n.spotShadowMap.length=M,n.directionalShadowMatrix.length=S,n.pointShadowMatrix.length=y,n.spotLightMatrix.length=M+T-R,n.spotLightMap.length=T,n.numSpotLightShadowsWithMaps=R,n.numLightProbes=k,B.directionalLength=d,B.pointLength=_,B.spotLength=b,B.rectAreaLength=g,B.hemiLength=m,B.numDirectionalShadows=S,B.numPointShadows=y,B.numSpotShadows=M,B.numSpotMaps=T,B.numLightProbes=k,n.version=Cy++)}function l(c,h){let u=0,f=0,d=0,_=0,b=0;const g=h.matrixWorldInverse;for(let m=0,S=c.length;m<S;m++){const y=c[m];if(y.isDirectionalLight){const M=n.directional[u];M.direction.setFromMatrixPosition(y.matrixWorld),r.setFromMatrixPosition(y.target.matrixWorld),M.direction.sub(r),M.direction.transformDirection(g),u++}else if(y.isSpotLight){const M=n.spot[d];M.position.setFromMatrixPosition(y.matrixWorld),M.position.applyMatrix4(g),M.direction.setFromMatrixPosition(y.matrixWorld),r.setFromMatrixPosition(y.target.matrixWorld),M.direction.sub(r),M.direction.transformDirection(g),d++}else if(y.isRectAreaLight){const M=n.rectArea[_];M.position.setFromMatrixPosition(y.matrixWorld),M.position.applyMatrix4(g),a.identity(),s.copy(y.matrixWorld),s.premultiply(g),a.extractRotation(s),M.halfWidth.set(y.width*.5,0,0),M.halfHeight.set(0,y.height*.5,0),M.halfWidth.applyMatrix4(a),M.halfHeight.applyMatrix4(a),_++}else if(y.isPointLight){const M=n.point[f];M.position.setFromMatrixPosition(y.matrixWorld),M.position.applyMatrix4(g),f++}else if(y.isHemisphereLight){const M=n.hemi[b];M.direction.setFromMatrixPosition(y.matrixWorld),M.direction.transformDirection(g),b++}}}return{setup:o,setupView:l,state:n}}function sf(i){const e=new Dy(i),t=[],n=[];function r(h){c.camera=h,t.length=0,n.length=0}function s(h){t.push(h)}function a(h){n.push(h)}function o(){e.setup(t)}function l(h){e.setupView(t,h)}const c={lightsArray:t,shadowsArray:n,camera:null,lights:e,transmissionRenderTarget:{}};return{init:r,state:c,setupLights:o,setupLightsView:l,pushLight:s,pushShadow:a}}function Ly(i){let e=new WeakMap;function t(r,s=0){const a=e.get(r);let o;return a===void 0?(o=new sf(i),e.set(r,[o])):s>=a.length?(o=new sf(i),a.push(o)):o=a[s],o}function n(){e=new WeakMap}return{get:t,dispose:n}}const Iy=`void main() {
|
|
3821
|
+
`+ke)}else he!==""?console.warn("THREE.WebGLProgram: Program Info Log:",he):(Q===""||de==="")&&(ue=!1);ue&&(V.diagnostics={runnable:ne,programLog:he,vertexShader:{log:Q,prefix:g},fragmentShader:{log:de,prefix:m}})}r.deleteShader(T),r.deleteShader(R),B=new ma(r,b),C=uy(r,b)}let B;this.getUniforms=function(){return B===void 0&&k(this),B};let C;this.getAttributes=function(){return C===void 0&&k(this),C};let D=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return D===!1&&(D=r.getProgramParameter(b,ty)),D},this.destroy=function(){n.releaseStatesOfProgram(this),r.deleteProgram(b),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=ny++,this.cacheKey=e,this.usedTimes=1,this.program=b,this.vertexShader=T,this.fragmentShader=R,this}let Sy=0;class My{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new Ey(e),t.set(e,n)),n}}class Ey{constructor(e){this.id=Sy++,this.code=e,this.usedTimes=0}}function Ty(i,e,t,n,r,s,a){const o=new al,l=new My,c=new Set,h=[],u=r.logarithmicDepthBuffer,f=r.vertexTextures;let d=r.precision;const _={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function b(C){return c.add(C),C===0?"uv":`uv${C}`}function g(C,D,V,K,J){const se=K.fog,he=J.geometry,Q=C.isMeshStandardMaterial?K.environment:null,de=(C.isMeshStandardMaterial?t:e).get(C.envMap||Q),ne=de&&de.mapping===Rs?de.image.height:null,ue=_[C.type];C.precision!==null&&(d=r.getMaxPrecision(C.precision),d!==C.precision&&console.warn("THREE.WebGLProgram.getParameters:",C.precision,"not supported, using",d,"instead."));const Te=he.morphAttributes.position||he.morphAttributes.normal||he.morphAttributes.color,ke=Te!==void 0?Te.length:0;let O=0;he.morphAttributes.position!==void 0&&(O=1),he.morphAttributes.normal!==void 0&&(O=2),he.morphAttributes.color!==void 0&&(O=3);let H,we,Be,ie;if(ue){const ve=Fn[ue];H=ve.vertexShader,we=ve.fragmentShader}else H=C.vertexShader,we=C.fragmentShader,l.update(C),Be=l.getVertexShaderID(C),ie=l.getFragmentShaderID(C);const ce=i.getRenderTarget(),z=i.state.buffers.depth.getReversed(),j=J.isInstancedMesh===!0,W=J.isBatchedMesh===!0,le=!!C.map,be=!!C.matcap,U=!!de,ee=!!C.aoMap,fe=!!C.lightMap,ye=!!C.bumpMap,Se=!!C.normalMap,ze=!!C.displacementMap,_e=!!C.emissiveMap,xe=!!C.metalnessMap,Xe=!!C.roughnessMap,De=C.anisotropy>0,N=C.clearcoat>0,w=C.dispersion>0,q=C.iridescence>0,re=C.sheen>0,pe=C.transmission>0,ae=De&&!!C.anisotropyMap,Ve=N&&!!C.clearcoatMap,Ae=N&&!!C.clearcoatNormalMap,oe=N&&!!C.clearcoatRoughnessMap,We=q&&!!C.iridescenceMap,Me=q&&!!C.iridescenceThicknessMap,Re=re&&!!C.sheenColorMap,je=re&&!!C.sheenRoughnessMap,Oe=!!C.specularMap,Ce=!!C.specularColorMap,A=!!C.specularIntensityMap,x=pe&&!!C.transmissionMap,L=pe&&!!C.thicknessMap,p=!!C.gradientMap,v=!!C.alphaMap,E=C.alphaTest>0,I=!!C.alphaHash,F=!!C.extensions;let X=ri;C.toneMapped&&(ce===null||ce.isXRRenderTarget===!0)&&(X=i.toneMapping);const me={shaderID:ue,shaderType:C.type,shaderName:C.name,vertexShader:H,fragmentShader:we,defines:C.defines,customVertexShaderID:Be,customFragmentShaderID:ie,isRawShaderMaterial:C.isRawShaderMaterial===!0,glslVersion:C.glslVersion,precision:d,batching:W,batchingColor:W&&J._colorsTexture!==null,instancing:j,instancingColor:j&&J.instanceColor!==null,instancingMorph:j&&J.morphTexture!==null,supportsVertexTextures:f,outputColorSpace:ce===null?i.outputColorSpace:ce.isXRRenderTarget===!0?ce.texture.colorSpace:Kt,alphaToCoverage:!!C.alphaToCoverage,map:le,matcap:be,envMap:U,envMapMode:U&&de.mapping,envMapCubeUVHeight:ne,aoMap:ee,lightMap:fe,bumpMap:ye,normalMap:Se,displacementMap:f&&ze,emissiveMap:_e,normalMapObjectSpace:Se&&C.normalMapType===im,normalMapTangentSpace:Se&&C.normalMapType===Mu,metalnessMap:xe,roughnessMap:Xe,anisotropy:De,anisotropyMap:ae,clearcoat:N,clearcoatMap:Ve,clearcoatNormalMap:Ae,clearcoatRoughnessMap:oe,dispersion:w,iridescence:q,iridescenceMap:We,iridescenceThicknessMap:Me,sheen:re,sheenColorMap:Re,sheenRoughnessMap:je,specularMap:Oe,specularColorMap:Ce,specularIntensityMap:A,transmission:pe,transmissionMap:x,thicknessMap:L,gradientMap:p,opaque:C.transparent===!1&&C.blending===Yi&&C.alphaToCoverage===!1,alphaMap:v,alphaTest:E,alphaHash:I,combine:C.combine,mapUv:le&&b(C.map.channel),aoMapUv:ee&&b(C.aoMap.channel),lightMapUv:fe&&b(C.lightMap.channel),bumpMapUv:ye&&b(C.bumpMap.channel),normalMapUv:Se&&b(C.normalMap.channel),displacementMapUv:ze&&b(C.displacementMap.channel),emissiveMapUv:_e&&b(C.emissiveMap.channel),metalnessMapUv:xe&&b(C.metalnessMap.channel),roughnessMapUv:Xe&&b(C.roughnessMap.channel),anisotropyMapUv:ae&&b(C.anisotropyMap.channel),clearcoatMapUv:Ve&&b(C.clearcoatMap.channel),clearcoatNormalMapUv:Ae&&b(C.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:oe&&b(C.clearcoatRoughnessMap.channel),iridescenceMapUv:We&&b(C.iridescenceMap.channel),iridescenceThicknessMapUv:Me&&b(C.iridescenceThicknessMap.channel),sheenColorMapUv:Re&&b(C.sheenColorMap.channel),sheenRoughnessMapUv:je&&b(C.sheenRoughnessMap.channel),specularMapUv:Oe&&b(C.specularMap.channel),specularColorMapUv:Ce&&b(C.specularColorMap.channel),specularIntensityMapUv:A&&b(C.specularIntensityMap.channel),transmissionMapUv:x&&b(C.transmissionMap.channel),thicknessMapUv:L&&b(C.thicknessMap.channel),alphaMapUv:v&&b(C.alphaMap.channel),vertexTangents:!!he.attributes.tangent&&(Se||De),vertexColors:C.vertexColors,vertexAlphas:C.vertexColors===!0&&!!he.attributes.color&&he.attributes.color.itemSize===4,pointsUvs:J.isPoints===!0&&!!he.attributes.uv&&(le||v),fog:!!se,useFog:C.fog===!0,fogExp2:!!se&&se.isFogExp2,flatShading:C.flatShading===!0&&C.wireframe===!1,sizeAttenuation:C.sizeAttenuation===!0,logarithmicDepthBuffer:u,reversedDepthBuffer:z,skinning:J.isSkinnedMesh===!0,morphTargets:he.morphAttributes.position!==void 0,morphNormals:he.morphAttributes.normal!==void 0,morphColors:he.morphAttributes.color!==void 0,morphTargetsCount:ke,morphTextureStride:O,numDirLights:D.directional.length,numPointLights:D.point.length,numSpotLights:D.spot.length,numSpotLightMaps:D.spotLightMap.length,numRectAreaLights:D.rectArea.length,numHemiLights:D.hemi.length,numDirLightShadows:D.directionalShadowMap.length,numPointLightShadows:D.pointShadowMap.length,numSpotLightShadows:D.spotShadowMap.length,numSpotLightShadowsWithMaps:D.numSpotLightShadowsWithMaps,numLightProbes:D.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:C.dithering,shadowMapEnabled:i.shadowMap.enabled&&V.length>0,shadowMapType:i.shadowMap.type,toneMapping:X,decodeVideoTexture:le&&C.map.isVideoTexture===!0&<.getTransfer(C.map.colorSpace)===xt,decodeVideoTextureEmissive:_e&&C.emissiveMap.isVideoTexture===!0&<.getTransfer(C.emissiveMap.colorSpace)===xt,premultipliedAlpha:C.premultipliedAlpha,doubleSided:C.side===Rn,flipSided:C.side===sn,useDepthPacking:C.depthPacking>=0,depthPacking:C.depthPacking||0,index0AttributeName:C.index0AttributeName,extensionClipCullDistance:F&&C.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(F&&C.extensions.multiDraw===!0||W)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:C.customProgramCacheKey()};return me.vertexUv1s=c.has(1),me.vertexUv2s=c.has(2),me.vertexUv3s=c.has(3),c.clear(),me}function m(C){const D=[];if(C.shaderID?D.push(C.shaderID):(D.push(C.customVertexShaderID),D.push(C.customFragmentShaderID)),C.defines!==void 0)for(const V in C.defines)D.push(V),D.push(C.defines[V]);return C.isRawShaderMaterial===!1&&(S(D,C),y(D,C),D.push(i.outputColorSpace)),D.push(C.customProgramCacheKey),D.join()}function S(C,D){C.push(D.precision),C.push(D.outputColorSpace),C.push(D.envMapMode),C.push(D.envMapCubeUVHeight),C.push(D.mapUv),C.push(D.alphaMapUv),C.push(D.lightMapUv),C.push(D.aoMapUv),C.push(D.bumpMapUv),C.push(D.normalMapUv),C.push(D.displacementMapUv),C.push(D.emissiveMapUv),C.push(D.metalnessMapUv),C.push(D.roughnessMapUv),C.push(D.anisotropyMapUv),C.push(D.clearcoatMapUv),C.push(D.clearcoatNormalMapUv),C.push(D.clearcoatRoughnessMapUv),C.push(D.iridescenceMapUv),C.push(D.iridescenceThicknessMapUv),C.push(D.sheenColorMapUv),C.push(D.sheenRoughnessMapUv),C.push(D.specularMapUv),C.push(D.specularColorMapUv),C.push(D.specularIntensityMapUv),C.push(D.transmissionMapUv),C.push(D.thicknessMapUv),C.push(D.combine),C.push(D.fogExp2),C.push(D.sizeAttenuation),C.push(D.morphTargetsCount),C.push(D.morphAttributeCount),C.push(D.numDirLights),C.push(D.numPointLights),C.push(D.numSpotLights),C.push(D.numSpotLightMaps),C.push(D.numHemiLights),C.push(D.numRectAreaLights),C.push(D.numDirLightShadows),C.push(D.numPointLightShadows),C.push(D.numSpotLightShadows),C.push(D.numSpotLightShadowsWithMaps),C.push(D.numLightProbes),C.push(D.shadowMapType),C.push(D.toneMapping),C.push(D.numClippingPlanes),C.push(D.numClipIntersection),C.push(D.depthPacking)}function y(C,D){o.disableAll(),D.supportsVertexTextures&&o.enable(0),D.instancing&&o.enable(1),D.instancingColor&&o.enable(2),D.instancingMorph&&o.enable(3),D.matcap&&o.enable(4),D.envMap&&o.enable(5),D.normalMapObjectSpace&&o.enable(6),D.normalMapTangentSpace&&o.enable(7),D.clearcoat&&o.enable(8),D.iridescence&&o.enable(9),D.alphaTest&&o.enable(10),D.vertexColors&&o.enable(11),D.vertexAlphas&&o.enable(12),D.vertexUv1s&&o.enable(13),D.vertexUv2s&&o.enable(14),D.vertexUv3s&&o.enable(15),D.vertexTangents&&o.enable(16),D.anisotropy&&o.enable(17),D.alphaHash&&o.enable(18),D.batching&&o.enable(19),D.dispersion&&o.enable(20),D.batchingColor&&o.enable(21),D.gradientMap&&o.enable(22),C.push(o.mask),o.disableAll(),D.fog&&o.enable(0),D.useFog&&o.enable(1),D.flatShading&&o.enable(2),D.logarithmicDepthBuffer&&o.enable(3),D.reversedDepthBuffer&&o.enable(4),D.skinning&&o.enable(5),D.morphTargets&&o.enable(6),D.morphNormals&&o.enable(7),D.morphColors&&o.enable(8),D.premultipliedAlpha&&o.enable(9),D.shadowMapEnabled&&o.enable(10),D.doubleSided&&o.enable(11),D.flipSided&&o.enable(12),D.useDepthPacking&&o.enable(13),D.dithering&&o.enable(14),D.transmission&&o.enable(15),D.sheen&&o.enable(16),D.opaque&&o.enable(17),D.pointsUvs&&o.enable(18),D.decodeVideoTexture&&o.enable(19),D.decodeVideoTextureEmissive&&o.enable(20),D.alphaToCoverage&&o.enable(21),C.push(o.mask)}function M(C){const D=_[C.type];let V;if(D){const K=Fn[D];V=jm.clone(K.uniforms)}else V=C.uniforms;return V}function T(C,D){let V;for(let K=0,J=h.length;K<J;K++){const se=h[K];if(se.cacheKey===D){V=se,++V.usedTimes;break}}return V===void 0&&(V=new by(i,D,C,s),h.push(V)),V}function R(C){if(--C.usedTimes===0){const D=h.indexOf(C);h[D]=h[h.length-1],h.pop(),C.destroy()}}function k(C){l.remove(C)}function B(){l.dispose()}return{getParameters:g,getProgramCacheKey:m,getUniforms:M,acquireProgram:T,releaseProgram:R,releaseShaderCache:k,programs:h,dispose:B}}function wy(){let i=new WeakMap;function e(a){return i.has(a)}function t(a){let o=i.get(a);return o===void 0&&(o={},i.set(a,o)),o}function n(a){i.delete(a)}function r(a,o,l){i.get(a)[o]=l}function s(){i=new WeakMap}return{has:e,get:t,remove:n,update:r,dispose:s}}function Ay(i,e){return i.groupOrder!==e.groupOrder?i.groupOrder-e.groupOrder:i.renderOrder!==e.renderOrder?i.renderOrder-e.renderOrder:i.material.id!==e.material.id?i.material.id-e.material.id:i.z!==e.z?i.z-e.z:i.id-e.id}function rf(i,e){return i.groupOrder!==e.groupOrder?i.groupOrder-e.groupOrder:i.renderOrder!==e.renderOrder?i.renderOrder-e.renderOrder:i.z!==e.z?e.z-i.z:i.id-e.id}function sf(){const i=[];let e=0;const t=[],n=[],r=[];function s(){e=0,t.length=0,n.length=0,r.length=0}function a(u,f,d,_,b,g){let m=i[e];return m===void 0?(m={id:u.id,object:u,geometry:f,material:d,groupOrder:_,renderOrder:u.renderOrder,z:b,group:g},i[e]=m):(m.id=u.id,m.object=u,m.geometry=f,m.material=d,m.groupOrder=_,m.renderOrder=u.renderOrder,m.z=b,m.group=g),e++,m}function o(u,f,d,_,b,g){const m=a(u,f,d,_,b,g);d.transmission>0?n.push(m):d.transparent===!0?r.push(m):t.push(m)}function l(u,f,d,_,b,g){const m=a(u,f,d,_,b,g);d.transmission>0?n.unshift(m):d.transparent===!0?r.unshift(m):t.unshift(m)}function c(u,f){t.length>1&&t.sort(u||Ay),n.length>1&&n.sort(f||rf),r.length>1&&r.sort(f||rf)}function h(){for(let u=e,f=i.length;u<f;u++){const d=i[u];if(d.id===null)break;d.id=null,d.object=null,d.geometry=null,d.material=null,d.group=null}}return{opaque:t,transmissive:n,transparent:r,init:s,push:o,unshift:l,finish:h,sort:c}}function Ry(){let i=new WeakMap;function e(n,r){const s=i.get(n);let a;return s===void 0?(a=new sf,i.set(n,[a])):r>=s.length?(a=new sf,s.push(a)):a=s[r],a}function t(){i=new WeakMap}return{get:e,dispose:t}}function Cy(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new $,color:new Ze};break;case"SpotLight":t={position:new $,direction:new $,color:new Ze,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new $,color:new Ze,distance:0,decay:0};break;case"HemisphereLight":t={direction:new $,skyColor:new Ze,groundColor:new Ze};break;case"RectAreaLight":t={color:new Ze,position:new $,halfWidth:new $,halfHeight:new $};break}return i[e.id]=t,t}}}function Py(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ye};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ye};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ye,shadowCameraNear:1,shadowCameraFar:1e3};break}return i[e.id]=t,t}}}let Dy=0;function Ly(i,e){return(e.castShadow?2:0)-(i.castShadow?2:0)+(e.map?1:0)-(i.map?1:0)}function Iy(i){const e=new Cy,t=Py(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new $);const r=new $,s=new et,a=new et;function o(c){let h=0,u=0,f=0;for(let C=0;C<9;C++)n.probe[C].set(0,0,0);let d=0,_=0,b=0,g=0,m=0,S=0,y=0,M=0,T=0,R=0,k=0;c.sort(Ly);for(let C=0,D=c.length;C<D;C++){const V=c[C],K=V.color,J=V.intensity,se=V.distance,he=V.shadow&&V.shadow.map?V.shadow.map.texture:null;if(V.isAmbientLight)h+=K.r*J,u+=K.g*J,f+=K.b*J;else if(V.isLightProbe){for(let Q=0;Q<9;Q++)n.probe[Q].addScaledVector(V.sh.coefficients[Q],J);k++}else if(V.isDirectionalLight){const Q=e.get(V);if(Q.color.copy(V.color).multiplyScalar(V.intensity),V.castShadow){const de=V.shadow,ne=t.get(V);ne.shadowIntensity=de.intensity,ne.shadowBias=de.bias,ne.shadowNormalBias=de.normalBias,ne.shadowRadius=de.radius,ne.shadowMapSize=de.mapSize,n.directionalShadow[d]=ne,n.directionalShadowMap[d]=he,n.directionalShadowMatrix[d]=V.shadow.matrix,S++}n.directional[d]=Q,d++}else if(V.isSpotLight){const Q=e.get(V);Q.position.setFromMatrixPosition(V.matrixWorld),Q.color.copy(K).multiplyScalar(J),Q.distance=se,Q.coneCos=Math.cos(V.angle),Q.penumbraCos=Math.cos(V.angle*(1-V.penumbra)),Q.decay=V.decay,n.spot[b]=Q;const de=V.shadow;if(V.map&&(n.spotLightMap[T]=V.map,T++,de.updateMatrices(V),V.castShadow&&R++),n.spotLightMatrix[b]=de.matrix,V.castShadow){const ne=t.get(V);ne.shadowIntensity=de.intensity,ne.shadowBias=de.bias,ne.shadowNormalBias=de.normalBias,ne.shadowRadius=de.radius,ne.shadowMapSize=de.mapSize,n.spotShadow[b]=ne,n.spotShadowMap[b]=he,M++}b++}else if(V.isRectAreaLight){const Q=e.get(V);Q.color.copy(K).multiplyScalar(J),Q.halfWidth.set(V.width*.5,0,0),Q.halfHeight.set(0,V.height*.5,0),n.rectArea[g]=Q,g++}else if(V.isPointLight){const Q=e.get(V);if(Q.color.copy(V.color).multiplyScalar(V.intensity),Q.distance=V.distance,Q.decay=V.decay,V.castShadow){const de=V.shadow,ne=t.get(V);ne.shadowIntensity=de.intensity,ne.shadowBias=de.bias,ne.shadowNormalBias=de.normalBias,ne.shadowRadius=de.radius,ne.shadowMapSize=de.mapSize,ne.shadowCameraNear=de.camera.near,ne.shadowCameraFar=de.camera.far,n.pointShadow[_]=ne,n.pointShadowMap[_]=he,n.pointShadowMatrix[_]=V.shadow.matrix,y++}n.point[_]=Q,_++}else if(V.isHemisphereLight){const Q=e.get(V);Q.skyColor.copy(V.color).multiplyScalar(J),Q.groundColor.copy(V.groundColor).multiplyScalar(J),n.hemi[m]=Q,m++}}g>0&&(i.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=Ie.LTC_FLOAT_1,n.rectAreaLTC2=Ie.LTC_FLOAT_2):(n.rectAreaLTC1=Ie.LTC_HALF_1,n.rectAreaLTC2=Ie.LTC_HALF_2)),n.ambient[0]=h,n.ambient[1]=u,n.ambient[2]=f;const B=n.hash;(B.directionalLength!==d||B.pointLength!==_||B.spotLength!==b||B.rectAreaLength!==g||B.hemiLength!==m||B.numDirectionalShadows!==S||B.numPointShadows!==y||B.numSpotShadows!==M||B.numSpotMaps!==T||B.numLightProbes!==k)&&(n.directional.length=d,n.spot.length=b,n.rectArea.length=g,n.point.length=_,n.hemi.length=m,n.directionalShadow.length=S,n.directionalShadowMap.length=S,n.pointShadow.length=y,n.pointShadowMap.length=y,n.spotShadow.length=M,n.spotShadowMap.length=M,n.directionalShadowMatrix.length=S,n.pointShadowMatrix.length=y,n.spotLightMatrix.length=M+T-R,n.spotLightMap.length=T,n.numSpotLightShadowsWithMaps=R,n.numLightProbes=k,B.directionalLength=d,B.pointLength=_,B.spotLength=b,B.rectAreaLength=g,B.hemiLength=m,B.numDirectionalShadows=S,B.numPointShadows=y,B.numSpotShadows=M,B.numSpotMaps=T,B.numLightProbes=k,n.version=Dy++)}function l(c,h){let u=0,f=0,d=0,_=0,b=0;const g=h.matrixWorldInverse;for(let m=0,S=c.length;m<S;m++){const y=c[m];if(y.isDirectionalLight){const M=n.directional[u];M.direction.setFromMatrixPosition(y.matrixWorld),r.setFromMatrixPosition(y.target.matrixWorld),M.direction.sub(r),M.direction.transformDirection(g),u++}else if(y.isSpotLight){const M=n.spot[d];M.position.setFromMatrixPosition(y.matrixWorld),M.position.applyMatrix4(g),M.direction.setFromMatrixPosition(y.matrixWorld),r.setFromMatrixPosition(y.target.matrixWorld),M.direction.sub(r),M.direction.transformDirection(g),d++}else if(y.isRectAreaLight){const M=n.rectArea[_];M.position.setFromMatrixPosition(y.matrixWorld),M.position.applyMatrix4(g),a.identity(),s.copy(y.matrixWorld),s.premultiply(g),a.extractRotation(s),M.halfWidth.set(y.width*.5,0,0),M.halfHeight.set(0,y.height*.5,0),M.halfWidth.applyMatrix4(a),M.halfHeight.applyMatrix4(a),_++}else if(y.isPointLight){const M=n.point[f];M.position.setFromMatrixPosition(y.matrixWorld),M.position.applyMatrix4(g),f++}else if(y.isHemisphereLight){const M=n.hemi[b];M.direction.setFromMatrixPosition(y.matrixWorld),M.direction.transformDirection(g),b++}}}return{setup:o,setupView:l,state:n}}function af(i){const e=new Iy(i),t=[],n=[];function r(h){c.camera=h,t.length=0,n.length=0}function s(h){t.push(h)}function a(h){n.push(h)}function o(){e.setup(t)}function l(h){e.setupView(t,h)}const c={lightsArray:t,shadowsArray:n,camera:null,lights:e,transmissionRenderTarget:{}};return{init:r,state:c,setupLights:o,setupLightsView:l,pushLight:s,pushShadow:a}}function Uy(i){let e=new WeakMap;function t(r,s=0){const a=e.get(r);let o;return a===void 0?(o=new af(i),e.set(r,[o])):s>=a.length?(o=new af(i),a.push(o)):o=a[s],o}function n(){e=new WeakMap}return{get:t,dispose:n}}const Ny=`void main() {
|
|
3822
3822
|
gl_Position = vec4( position, 1.0 );
|
|
3823
|
-
}`,
|
|
3823
|
+
}`,Oy=`uniform sampler2D shadow_pass;
|
|
3824
3824
|
uniform vec2 resolution;
|
|
3825
3825
|
uniform float radius;
|
|
3826
3826
|
#include <packing>
|
|
@@ -3846,12 +3846,12 @@ void main() {
|
|
|
3846
3846
|
squared_mean = squared_mean / samples;
|
|
3847
3847
|
float std_dev = sqrt( squared_mean - mean * mean );
|
|
3848
3848
|
gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
|
|
3849
|
-
}`;function Ny(i,e,t){let n=new El;const r=new Ye,s=new Ye,a=new pt,o=new ug({depthPacking:em}),l=new hg,c={},h=t.maxTextureSize,u={[Gn]:sn,[sn]:Gn,[Rn]:Rn},f=new fi({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ye},radius:{value:4}},vertexShader:Iy,fragmentShader:Uy}),d=f.clone();d.defines.HORIZONTAL_PASS=1;const _=new En;_.setAttribute("position",new Zt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const b=new Jt(_,f),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=nu;let m=this.type;this.render=function(R,k,B){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||R.length===0)return;const C=i.getRenderTarget(),D=i.getActiveCubeFace(),V=i.getActiveMipmapLevel(),K=i.state;K.setBlending(ii),K.buffers.depth.getReversed()===!0?K.buffers.color.setClear(0,0,0,0):K.buffers.color.setClear(1,1,1,1),K.buffers.depth.setTest(!0),K.setScissorTest(!1);const J=m!==Vn&&this.type===Vn,se=m===Vn&&this.type!==Vn;for(let he=0,Q=R.length;he<Q;he++){const de=R[he],ne=de.shadow;if(ne===void 0){console.warn("THREE.WebGLShadowMap:",de,"has no shadow.");continue}if(ne.autoUpdate===!1&&ne.needsUpdate===!1)continue;r.copy(ne.mapSize);const ue=ne.getFrameExtents();if(r.multiply(ue),s.copy(ne.mapSize),(r.x>h||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/ue.x),r.x=s.x*ue.x,ne.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/ue.y),r.y=s.y*ue.y,ne.mapSize.y=s.y)),ne.map===null||J===!0||se===!0){const ke=this.type!==Vn?{minFilter:Yt,magFilter:Yt}:{};ne.map!==null&&ne.map.dispose(),ne.map=new Ti(r.x,r.y,ke),ne.map.texture.name=de.name+".shadowMap",ne.camera.updateProjectionMatrix()}i.setRenderTarget(ne.map),i.clear();const Te=ne.getViewportCount();for(let ke=0;ke<Te;ke++){const O=ne.getViewport(ke);a.set(s.x*O.x,s.y*O.y,s.x*O.z,s.y*O.w),K.viewport(a),ne.updateMatrices(de,ke),n=ne.getFrustum(),M(k,B,ne.camera,de,this.type)}ne.isPointLightShadow!==!0&&this.type===Vn&&S(ne,B),ne.needsUpdate=!1}m=this.type,g.needsUpdate=!1,i.setRenderTarget(C,D,V)};function S(R,k){const B=e.update(b);f.defines.VSM_SAMPLES!==R.blurSamples&&(f.defines.VSM_SAMPLES=R.blurSamples,d.defines.VSM_SAMPLES=R.blurSamples,f.needsUpdate=!0,d.needsUpdate=!0),R.mapPass===null&&(R.mapPass=new Ti(r.x,r.y)),f.uniforms.shadow_pass.value=R.map.texture,f.uniforms.resolution.value=R.mapSize,f.uniforms.radius.value=R.radius,i.setRenderTarget(R.mapPass),i.clear(),i.renderBufferDirect(k,null,B,f,b,null),d.uniforms.shadow_pass.value=R.mapPass.texture,d.uniforms.resolution.value=R.mapSize,d.uniforms.radius.value=R.radius,i.setRenderTarget(R.map),i.clear(),i.renderBufferDirect(k,null,B,d,b,null)}function y(R,k,B,C){let D=null;const V=B.isPointLight===!0?R.customDistanceMaterial:R.customDepthMaterial;if(V!==void 0)D=V;else if(D=B.isPointLight===!0?l:o,i.localClippingEnabled&&k.clipShadows===!0&&Array.isArray(k.clippingPlanes)&&k.clippingPlanes.length!==0||k.displacementMap&&k.displacementScale!==0||k.alphaMap&&k.alphaTest>0||k.map&&k.alphaTest>0||k.alphaToCoverage===!0){const K=D.uuid,J=k.uuid;let se=c[K];se===void 0&&(se={},c[K]=se);let he=se[J];he===void 0&&(he=D.clone(),se[J]=he,k.addEventListener("dispose",T)),D=he}if(D.visible=k.visible,D.wireframe=k.wireframe,C===Vn?D.side=k.shadowSide!==null?k.shadowSide:k.side:D.side=k.shadowSide!==null?k.shadowSide:u[k.side],D.alphaMap=k.alphaMap,D.alphaTest=k.alphaToCoverage===!0?.5:k.alphaTest,D.map=k.map,D.clipShadows=k.clipShadows,D.clippingPlanes=k.clippingPlanes,D.clipIntersection=k.clipIntersection,D.displacementMap=k.displacementMap,D.displacementScale=k.displacementScale,D.displacementBias=k.displacementBias,D.wireframeLinewidth=k.wireframeLinewidth,D.linewidth=k.linewidth,B.isPointLight===!0&&D.isMeshDistanceMaterial===!0){const K=i.properties.get(D);K.light=B}return D}function M(R,k,B,C,D){if(R.visible===!1)return;if(R.layers.test(k.layers)&&(R.isMesh||R.isLine||R.isPoints)&&(R.castShadow||R.receiveShadow&&D===Vn)&&(!R.frustumCulled||n.intersectsObject(R))){R.modelViewMatrix.multiplyMatrices(B.matrixWorldInverse,R.matrixWorld);const J=e.update(R),se=R.material;if(Array.isArray(se)){const he=J.groups;for(let Q=0,de=he.length;Q<de;Q++){const ne=he[Q],ue=se[ne.materialIndex];if(ue&&ue.visible){const Te=y(R,ue,C,D);R.onBeforeShadow(i,R,k,B,J,Te,ne),i.renderBufferDirect(B,null,J,Te,R,ne),R.onAfterShadow(i,R,k,B,J,Te,ne)}}}else if(se.visible){const he=y(R,se,C,D);R.onBeforeShadow(i,R,k,B,J,he,null),i.renderBufferDirect(B,null,J,he,R,null),R.onAfterShadow(i,R,k,B,J,he,null)}}const K=R.children;for(let J=0,se=K.length;J<se;J++)M(K[J],k,B,C,D)}function T(R){R.target.removeEventListener("dispose",T);for(const B in c){const C=c[B],D=R.target.uuid;D in C&&(C[D].dispose(),delete C[D])}}}const Oy={[eo]:to,[no]:so,[io]:ao,[Ki]:ro,[to]:eo,[so]:no,[ao]:io,[ro]:Ki};function Fy(i,e){function t(){let x=!1;const L=new pt;let p=null;const v=new pt(0,0,0,0);return{setMask:function(E){p!==E&&!x&&(i.colorMask(E,E,E,E),p=E)},setLocked:function(E){x=E},setClear:function(E,I,F,X,me){me===!0&&(E*=X,I*=X,F*=X),L.set(E,I,F,X),v.equals(L)===!1&&(i.clearColor(E,I,F,X),v.copy(L))},reset:function(){x=!1,p=null,v.set(-1,0,0,0)}}}function n(){let x=!1,L=!1,p=null,v=null,E=null;return{setReversed:function(I){if(L!==I){const F=e.get("EXT_clip_control");I?F.clipControlEXT(F.LOWER_LEFT_EXT,F.ZERO_TO_ONE_EXT):F.clipControlEXT(F.LOWER_LEFT_EXT,F.NEGATIVE_ONE_TO_ONE_EXT),L=I;const X=E;E=null,this.setClear(X)}},getReversed:function(){return L},setTest:function(I){I?ce(i.DEPTH_TEST):z(i.DEPTH_TEST)},setMask:function(I){p!==I&&!x&&(i.depthMask(I),p=I)},setFunc:function(I){if(L&&(I=Oy[I]),v!==I){switch(I){case eo:i.depthFunc(i.NEVER);break;case to:i.depthFunc(i.ALWAYS);break;case no:i.depthFunc(i.LESS);break;case Ki:i.depthFunc(i.LEQUAL);break;case io:i.depthFunc(i.EQUAL);break;case ro:i.depthFunc(i.GEQUAL);break;case so:i.depthFunc(i.GREATER);break;case ao:i.depthFunc(i.NOTEQUAL);break;default:i.depthFunc(i.LEQUAL)}v=I}},setLocked:function(I){x=I},setClear:function(I){E!==I&&(L&&(I=1-I),i.clearDepth(I),E=I)},reset:function(){x=!1,p=null,v=null,E=null,L=!1}}}function r(){let x=!1,L=null,p=null,v=null,E=null,I=null,F=null,X=null,me=null;return{setTest:function(ve){x||(ve?ce(i.STENCIL_TEST):z(i.STENCIL_TEST))},setMask:function(ve){L!==ve&&!x&&(i.stencilMask(ve),L=ve)},setFunc:function(ve,$e,Ne){(p!==ve||v!==$e||E!==Ne)&&(i.stencilFunc(ve,$e,Ne),p=ve,v=$e,E=Ne)},setOp:function(ve,$e,Ne){(I!==ve||F!==$e||X!==Ne)&&(i.stencilOp(ve,$e,Ne),I=ve,F=$e,X=Ne)},setLocked:function(ve){x=ve},setClear:function(ve){me!==ve&&(i.clearStencil(ve),me=ve)},reset:function(){x=!1,L=null,p=null,v=null,E=null,I=null,F=null,X=null,me=null}}}const s=new t,a=new n,o=new r,l=new WeakMap,c=new WeakMap;let h={},u={},f=new WeakMap,d=[],_=null,b=!1,g=null,m=null,S=null,y=null,M=null,T=null,R=null,k=new Ze(0,0,0),B=0,C=!1,D=null,V=null,K=null,J=null,se=null;const he=i.getParameter(i.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let Q=!1,de=0;const ne=i.getParameter(i.VERSION);ne.indexOf("WebGL")!==-1?(de=parseFloat(/^WebGL (\d)/.exec(ne)[1]),Q=de>=1):ne.indexOf("OpenGL ES")!==-1&&(de=parseFloat(/^OpenGL ES (\d)/.exec(ne)[1]),Q=de>=2);let ue=null,Te={};const ke=i.getParameter(i.SCISSOR_BOX),O=i.getParameter(i.VIEWPORT),H=new pt().fromArray(ke),we=new pt().fromArray(O);function Be(x,L,p,v){const E=new Uint8Array(4),I=i.createTexture();i.bindTexture(x,I),i.texParameteri(x,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(x,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let F=0;F<p;F++)x===i.TEXTURE_3D||x===i.TEXTURE_2D_ARRAY?i.texImage3D(L,0,i.RGBA,1,1,v,0,i.RGBA,i.UNSIGNED_BYTE,E):i.texImage2D(L+F,0,i.RGBA,1,1,0,i.RGBA,i.UNSIGNED_BYTE,E);return I}const ie={};ie[i.TEXTURE_2D]=Be(i.TEXTURE_2D,i.TEXTURE_2D,1),ie[i.TEXTURE_CUBE_MAP]=Be(i.TEXTURE_CUBE_MAP,i.TEXTURE_CUBE_MAP_POSITIVE_X,6),ie[i.TEXTURE_2D_ARRAY]=Be(i.TEXTURE_2D_ARRAY,i.TEXTURE_2D_ARRAY,1,1),ie[i.TEXTURE_3D]=Be(i.TEXTURE_3D,i.TEXTURE_3D,1,1),s.setClear(0,0,0,1),a.setClear(1),o.setClear(0),ce(i.DEPTH_TEST),a.setFunc(Ki),ye(!1),Se(tu),ce(i.CULL_FACE),ee(ii);function ce(x){h[x]!==!0&&(i.enable(x),h[x]=!0)}function z(x){h[x]!==!1&&(i.disable(x),h[x]=!1)}function j(x,L){return u[x]!==L?(i.bindFramebuffer(x,L),u[x]=L,x===i.DRAW_FRAMEBUFFER&&(u[i.FRAMEBUFFER]=L),x===i.FRAMEBUFFER&&(u[i.DRAW_FRAMEBUFFER]=L),!0):!1}function W(x,L){let p=d,v=!1;if(x){p=f.get(L),p===void 0&&(p=[],f.set(L,p));const E=x.textures;if(p.length!==E.length||p[0]!==i.COLOR_ATTACHMENT0){for(let I=0,F=E.length;I<F;I++)p[I]=i.COLOR_ATTACHMENT0+I;p.length=E.length,v=!0}}else p[0]!==i.BACK&&(p[0]=i.BACK,v=!0);v&&i.drawBuffers(p)}function le(x){return _!==x?(i.useProgram(x),_=x,!0):!1}const be={[Si]:i.FUNC_ADD,[Tp]:i.FUNC_SUBTRACT,[wp]:i.FUNC_REVERSE_SUBTRACT};be[Ap]=i.MIN,be[Rp]=i.MAX;const U={[Cp]:i.ZERO,[Pp]:i.ONE,[Dp]:i.SRC_COLOR,[Ja]:i.SRC_ALPHA,[Fp]:i.SRC_ALPHA_SATURATE,[Np]:i.DST_COLOR,[Ip]:i.DST_ALPHA,[Lp]:i.ONE_MINUS_SRC_COLOR,[Qa]:i.ONE_MINUS_SRC_ALPHA,[Op]:i.ONE_MINUS_DST_COLOR,[Up]:i.ONE_MINUS_DST_ALPHA,[kp]:i.CONSTANT_COLOR,[Bp]:i.ONE_MINUS_CONSTANT_COLOR,[zp]:i.CONSTANT_ALPHA,[Hp]:i.ONE_MINUS_CONSTANT_ALPHA};function ee(x,L,p,v,E,I,F,X,me,ve){if(x===ii){b===!0&&(z(i.BLEND),b=!1);return}if(b===!1&&(ce(i.BLEND),b=!0),x!==Ep){if(x!==g||ve!==C){if((m!==Si||M!==Si)&&(i.blendEquation(i.FUNC_ADD),m=Si,M=Si),ve)switch(x){case Yi:i.blendFuncSeparate(i.ONE,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA);break;case iu:i.blendFunc(i.ONE,i.ONE);break;case ru:i.blendFuncSeparate(i.ZERO,i.ONE_MINUS_SRC_COLOR,i.ZERO,i.ONE);break;case su:i.blendFuncSeparate(i.DST_COLOR,i.ONE_MINUS_SRC_ALPHA,i.ZERO,i.ONE);break;default:console.error("THREE.WebGLState: Invalid blending: ",x);break}else switch(x){case Yi:i.blendFuncSeparate(i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA);break;case iu:i.blendFuncSeparate(i.SRC_ALPHA,i.ONE,i.ONE,i.ONE);break;case ru:console.error("THREE.WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true");break;case su:console.error("THREE.WebGLState: MultiplyBlending requires material.premultipliedAlpha = true");break;default:console.error("THREE.WebGLState: Invalid blending: ",x);break}S=null,y=null,T=null,R=null,k.set(0,0,0),B=0,g=x,C=ve}return}E=E||L,I=I||p,F=F||v,(L!==m||E!==M)&&(i.blendEquationSeparate(be[L],be[E]),m=L,M=E),(p!==S||v!==y||I!==T||F!==R)&&(i.blendFuncSeparate(U[p],U[v],U[I],U[F]),S=p,y=v,T=I,R=F),(X.equals(k)===!1||me!==B)&&(i.blendColor(X.r,X.g,X.b,me),k.copy(X),B=me),g=x,C=!1}function fe(x,L){x.side===Rn?z(i.CULL_FACE):ce(i.CULL_FACE);let p=x.side===sn;L&&(p=!p),ye(p),x.blending===Yi&&x.transparent===!1?ee(ii):ee(x.blending,x.blendEquation,x.blendSrc,x.blendDst,x.blendEquationAlpha,x.blendSrcAlpha,x.blendDstAlpha,x.blendColor,x.blendAlpha,x.premultipliedAlpha),a.setFunc(x.depthFunc),a.setTest(x.depthTest),a.setMask(x.depthWrite),s.setMask(x.colorWrite);const v=x.stencilWrite;o.setTest(v),v&&(o.setMask(x.stencilWriteMask),o.setFunc(x.stencilFunc,x.stencilRef,x.stencilFuncMask),o.setOp(x.stencilFail,x.stencilZFail,x.stencilZPass)),_e(x.polygonOffset,x.polygonOffsetFactor,x.polygonOffsetUnits),x.alphaToCoverage===!0?ce(i.SAMPLE_ALPHA_TO_COVERAGE):z(i.SAMPLE_ALPHA_TO_COVERAGE)}function ye(x){D!==x&&(x?i.frontFace(i.CW):i.frontFace(i.CCW),D=x)}function Se(x){x!==bp?(ce(i.CULL_FACE),x!==V&&(x===tu?i.cullFace(i.BACK):x===Sp?i.cullFace(i.FRONT):i.cullFace(i.FRONT_AND_BACK))):z(i.CULL_FACE),V=x}function ze(x){x!==K&&(Q&&i.lineWidth(x),K=x)}function _e(x,L,p){x?(ce(i.POLYGON_OFFSET_FILL),(J!==L||se!==p)&&(i.polygonOffset(L,p),J=L,se=p)):z(i.POLYGON_OFFSET_FILL)}function xe(x){x?ce(i.SCISSOR_TEST):z(i.SCISSOR_TEST)}function Xe(x){x===void 0&&(x=i.TEXTURE0+he-1),ue!==x&&(i.activeTexture(x),ue=x)}function De(x,L,p){p===void 0&&(ue===null?p=i.TEXTURE0+he-1:p=ue);let v=Te[p];v===void 0&&(v={type:void 0,texture:void 0},Te[p]=v),(v.type!==x||v.texture!==L)&&(ue!==p&&(i.activeTexture(p),ue=p),i.bindTexture(x,L||ie[x]),v.type=x,v.texture=L)}function N(){const x=Te[ue];x!==void 0&&x.type!==void 0&&(i.bindTexture(x.type,null),x.type=void 0,x.texture=void 0)}function w(){try{i.compressedTexImage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function q(){try{i.compressedTexImage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function re(){try{i.texSubImage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function pe(){try{i.texSubImage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function ae(){try{i.compressedTexSubImage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function Ve(){try{i.compressedTexSubImage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function Ae(){try{i.texStorage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function oe(){try{i.texStorage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function We(){try{i.texImage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function Me(){try{i.texImage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function Re(x){H.equals(x)===!1&&(i.scissor(x.x,x.y,x.z,x.w),H.copy(x))}function je(x){we.equals(x)===!1&&(i.viewport(x.x,x.y,x.z,x.w),we.copy(x))}function Oe(x,L){let p=c.get(L);p===void 0&&(p=new WeakMap,c.set(L,p));let v=p.get(x);v===void 0&&(v=i.getUniformBlockIndex(L,x.name),p.set(x,v))}function Ce(x,L){const v=c.get(L).get(x);l.get(L)!==v&&(i.uniformBlockBinding(L,v,x.__bindingPointIndex),l.set(L,v))}function A(){i.disable(i.BLEND),i.disable(i.CULL_FACE),i.disable(i.DEPTH_TEST),i.disable(i.POLYGON_OFFSET_FILL),i.disable(i.SCISSOR_TEST),i.disable(i.STENCIL_TEST),i.disable(i.SAMPLE_ALPHA_TO_COVERAGE),i.blendEquation(i.FUNC_ADD),i.blendFunc(i.ONE,i.ZERO),i.blendFuncSeparate(i.ONE,i.ZERO,i.ONE,i.ZERO),i.blendColor(0,0,0,0),i.colorMask(!0,!0,!0,!0),i.clearColor(0,0,0,0),i.depthMask(!0),i.depthFunc(i.LESS),a.setReversed(!1),i.clearDepth(1),i.stencilMask(4294967295),i.stencilFunc(i.ALWAYS,0,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.KEEP),i.clearStencil(0),i.cullFace(i.BACK),i.frontFace(i.CCW),i.polygonOffset(0,0),i.activeTexture(i.TEXTURE0),i.bindFramebuffer(i.FRAMEBUFFER,null),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),i.bindFramebuffer(i.READ_FRAMEBUFFER,null),i.useProgram(null),i.lineWidth(1),i.scissor(0,0,i.canvas.width,i.canvas.height),i.viewport(0,0,i.canvas.width,i.canvas.height),h={},ue=null,Te={},u={},f=new WeakMap,d=[],_=null,b=!1,g=null,m=null,S=null,y=null,M=null,T=null,R=null,k=new Ze(0,0,0),B=0,C=!1,D=null,V=null,K=null,J=null,se=null,H.set(0,0,i.canvas.width,i.canvas.height),we.set(0,0,i.canvas.width,i.canvas.height),s.reset(),a.reset(),o.reset()}return{buffers:{color:s,depth:a,stencil:o},enable:ce,disable:z,bindFramebuffer:j,drawBuffers:W,useProgram:le,setBlending:ee,setMaterial:fe,setFlipSided:ye,setCullFace:Se,setLineWidth:ze,setPolygonOffset:_e,setScissorTest:xe,activeTexture:Xe,bindTexture:De,unbindTexture:N,compressedTexImage2D:w,compressedTexImage3D:q,texImage2D:We,texImage3D:Me,updateUBOMapping:Oe,uniformBlockBinding:Ce,texStorage2D:Ae,texStorage3D:oe,texSubImage2D:re,texSubImage3D:pe,compressedTexSubImage2D:ae,compressedTexSubImage3D:Ve,scissor:Re,viewport:je,reset:A}}function ky(i,e,t,n,r,s,a){const o=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,l=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new Ye,h=new WeakMap;let u;const f=new WeakMap;let d=!1;try{d=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function _(N,w){return d?new OffscreenCanvas(N,w):Zr("canvas")}function b(N,w,q){let re=1;const pe=De(N);if((pe.width>q||pe.height>q)&&(re=q/Math.max(pe.width,pe.height)),re<1)if(typeof HTMLImageElement<"u"&&N instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&N instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&N instanceof ImageBitmap||typeof VideoFrame<"u"&&N instanceof VideoFrame){const ae=Math.floor(re*pe.width),Ve=Math.floor(re*pe.height);u===void 0&&(u=_(ae,Ve));const Ae=w?_(ae,Ve):u;return Ae.width=ae,Ae.height=Ve,Ae.getContext("2d").drawImage(N,0,0,ae,Ve),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+pe.width+"x"+pe.height+") to ("+ae+"x"+Ve+")."),Ae}else return"data"in N&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+pe.width+"x"+pe.height+")."),N;return N}function g(N){return N.generateMipmaps}function m(N){i.generateMipmap(N)}function S(N){return N.isWebGLCubeRenderTarget?i.TEXTURE_CUBE_MAP:N.isWebGL3DRenderTarget?i.TEXTURE_3D:N.isWebGLArrayRenderTarget||N.isCompressedArrayTexture?i.TEXTURE_2D_ARRAY:i.TEXTURE_2D}function y(N,w,q,re,pe=!1){if(N!==null){if(i[N]!==void 0)return i[N];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+N+"'")}let ae=w;if(w===i.RED&&(q===i.FLOAT&&(ae=i.R32F),q===i.HALF_FLOAT&&(ae=i.R16F),q===i.UNSIGNED_BYTE&&(ae=i.R8)),w===i.RED_INTEGER&&(q===i.UNSIGNED_BYTE&&(ae=i.R8UI),q===i.UNSIGNED_SHORT&&(ae=i.R16UI),q===i.UNSIGNED_INT&&(ae=i.R32UI),q===i.BYTE&&(ae=i.R8I),q===i.SHORT&&(ae=i.R16I),q===i.INT&&(ae=i.R32I)),w===i.RG&&(q===i.FLOAT&&(ae=i.RG32F),q===i.HALF_FLOAT&&(ae=i.RG16F),q===i.UNSIGNED_BYTE&&(ae=i.RG8)),w===i.RG_INTEGER&&(q===i.UNSIGNED_BYTE&&(ae=i.RG8UI),q===i.UNSIGNED_SHORT&&(ae=i.RG16UI),q===i.UNSIGNED_INT&&(ae=i.RG32UI),q===i.BYTE&&(ae=i.RG8I),q===i.SHORT&&(ae=i.RG16I),q===i.INT&&(ae=i.RG32I)),w===i.RGB_INTEGER&&(q===i.UNSIGNED_BYTE&&(ae=i.RGB8UI),q===i.UNSIGNED_SHORT&&(ae=i.RGB16UI),q===i.UNSIGNED_INT&&(ae=i.RGB32UI),q===i.BYTE&&(ae=i.RGB8I),q===i.SHORT&&(ae=i.RGB16I),q===i.INT&&(ae=i.RGB32I)),w===i.RGBA_INTEGER&&(q===i.UNSIGNED_BYTE&&(ae=i.RGBA8UI),q===i.UNSIGNED_SHORT&&(ae=i.RGBA16UI),q===i.UNSIGNED_INT&&(ae=i.RGBA32UI),q===i.BYTE&&(ae=i.RGBA8I),q===i.SHORT&&(ae=i.RGBA16I),q===i.INT&&(ae=i.RGBA32I)),w===i.RGB&&(q===i.UNSIGNED_INT_5_9_9_9_REV&&(ae=i.RGB9_E5),q===i.UNSIGNED_INT_10F_11F_11F_REV&&(ae=i.R11F_G11F_B10F)),w===i.RGBA){const Ve=pe?Ns:lt.getTransfer(re);q===i.FLOAT&&(ae=i.RGBA32F),q===i.HALF_FLOAT&&(ae=i.RGBA16F),q===i.UNSIGNED_BYTE&&(ae=Ve===xt?i.SRGB8_ALPHA8:i.RGBA8),q===i.UNSIGNED_SHORT_4_4_4_4&&(ae=i.RGBA4),q===i.UNSIGNED_SHORT_5_5_5_1&&(ae=i.RGB5_A1)}return(ae===i.R16F||ae===i.R32F||ae===i.RG16F||ae===i.RG32F||ae===i.RGBA16F||ae===i.RGBA32F)&&e.get("EXT_color_buffer_float"),ae}function M(N,w){let q;return N?w===null||w===Mi||w===Wr?q=i.DEPTH24_STENCIL8:w===_n?q=i.DEPTH32F_STENCIL8:w===Vr&&(q=i.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):w===null||w===Mi||w===Wr?q=i.DEPTH_COMPONENT24:w===_n?q=i.DEPTH_COMPONENT32F:w===Vr&&(q=i.DEPTH_COMPONENT16),q}function T(N,w){return g(N)===!0||N.isFramebufferTexture&&N.minFilter!==Yt&&N.minFilter!==ln?Math.log2(Math.max(w.width,w.height))+1:N.mipmaps!==void 0&&N.mipmaps.length>0?N.mipmaps.length:N.isCompressedTexture&&Array.isArray(N.image)?w.mipmaps.length:1}function R(N){const w=N.target;w.removeEventListener("dispose",R),B(w),w.isVideoTexture&&h.delete(w)}function k(N){const w=N.target;w.removeEventListener("dispose",k),D(w)}function B(N){const w=n.get(N);if(w.__webglInit===void 0)return;const q=N.source,re=f.get(q);if(re){const pe=re[w.__cacheKey];pe.usedTimes--,pe.usedTimes===0&&C(N),Object.keys(re).length===0&&f.delete(q)}n.remove(N)}function C(N){const w=n.get(N);i.deleteTexture(w.__webglTexture);const q=N.source,re=f.get(q);delete re[w.__cacheKey],a.memory.textures--}function D(N){const w=n.get(N);if(N.depthTexture&&(N.depthTexture.dispose(),n.remove(N.depthTexture)),N.isWebGLCubeRenderTarget)for(let re=0;re<6;re++){if(Array.isArray(w.__webglFramebuffer[re]))for(let pe=0;pe<w.__webglFramebuffer[re].length;pe++)i.deleteFramebuffer(w.__webglFramebuffer[re][pe]);else i.deleteFramebuffer(w.__webglFramebuffer[re]);w.__webglDepthbuffer&&i.deleteRenderbuffer(w.__webglDepthbuffer[re])}else{if(Array.isArray(w.__webglFramebuffer))for(let re=0;re<w.__webglFramebuffer.length;re++)i.deleteFramebuffer(w.__webglFramebuffer[re]);else i.deleteFramebuffer(w.__webglFramebuffer);if(w.__webglDepthbuffer&&i.deleteRenderbuffer(w.__webglDepthbuffer),w.__webglMultisampledFramebuffer&&i.deleteFramebuffer(w.__webglMultisampledFramebuffer),w.__webglColorRenderbuffer)for(let re=0;re<w.__webglColorRenderbuffer.length;re++)w.__webglColorRenderbuffer[re]&&i.deleteRenderbuffer(w.__webglColorRenderbuffer[re]);w.__webglDepthRenderbuffer&&i.deleteRenderbuffer(w.__webglDepthRenderbuffer)}const q=N.textures;for(let re=0,pe=q.length;re<pe;re++){const ae=n.get(q[re]);ae.__webglTexture&&(i.deleteTexture(ae.__webglTexture),a.memory.textures--),n.remove(q[re])}n.remove(N)}let V=0;function K(){V=0}function J(){const N=V;return N>=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+N+" texture units while this GPU supports only "+r.maxTextures),V+=1,N}function se(N){const w=[];return w.push(N.wrapS),w.push(N.wrapT),w.push(N.wrapR||0),w.push(N.magFilter),w.push(N.minFilter),w.push(N.anisotropy),w.push(N.internalFormat),w.push(N.format),w.push(N.type),w.push(N.generateMipmaps),w.push(N.premultiplyAlpha),w.push(N.flipY),w.push(N.unpackAlignment),w.push(N.colorSpace),w.join()}function he(N,w){const q=n.get(N);if(N.isVideoTexture&&xe(N),N.isRenderTargetTexture===!1&&N.isExternalTexture!==!0&&N.version>0&&q.__version!==N.version){const re=N.image;if(re===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(re.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ie(q,N,w);return}}else N.isExternalTexture&&(q.__webglTexture=N.sourceTexture?N.sourceTexture:null);t.bindTexture(i.TEXTURE_2D,q.__webglTexture,i.TEXTURE0+w)}function Q(N,w){const q=n.get(N);if(N.isRenderTargetTexture===!1&&N.version>0&&q.__version!==N.version){ie(q,N,w);return}t.bindTexture(i.TEXTURE_2D_ARRAY,q.__webglTexture,i.TEXTURE0+w)}function de(N,w){const q=n.get(N);if(N.isRenderTargetTexture===!1&&N.version>0&&q.__version!==N.version){ie(q,N,w);return}t.bindTexture(i.TEXTURE_3D,q.__webglTexture,i.TEXTURE0+w)}function ne(N,w){const q=n.get(N);if(N.version>0&&q.__version!==N.version){ce(q,N,w);return}t.bindTexture(i.TEXTURE_CUBE_MAP,q.__webglTexture,i.TEXTURE0+w)}const ue={[Qi]:i.REPEAT,[si]:i.CLAMP_TO_EDGE,[Cs]:i.MIRRORED_REPEAT},Te={[Yt]:i.NEAREST,[uu]:i.NEAREST_MIPMAP_NEAREST,[Hr]:i.NEAREST_MIPMAP_LINEAR,[ln]:i.LINEAR,[Ps]:i.LINEAR_MIPMAP_NEAREST,[Wn]:i.LINEAR_MIPMAP_LINEAR},ke={[nm]:i.NEVER,[lm]:i.ALWAYS,[im]:i.LESS,[Eu]:i.LEQUAL,[rm]:i.EQUAL,[om]:i.GEQUAL,[sm]:i.GREATER,[am]:i.NOTEQUAL};function O(N,w){if(w.type===_n&&e.has("OES_texture_float_linear")===!1&&(w.magFilter===ln||w.magFilter===Ps||w.magFilter===Hr||w.magFilter===Wn||w.minFilter===ln||w.minFilter===Ps||w.minFilter===Hr||w.minFilter===Wn)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),i.texParameteri(N,i.TEXTURE_WRAP_S,ue[w.wrapS]),i.texParameteri(N,i.TEXTURE_WRAP_T,ue[w.wrapT]),(N===i.TEXTURE_3D||N===i.TEXTURE_2D_ARRAY)&&i.texParameteri(N,i.TEXTURE_WRAP_R,ue[w.wrapR]),i.texParameteri(N,i.TEXTURE_MAG_FILTER,Te[w.magFilter]),i.texParameteri(N,i.TEXTURE_MIN_FILTER,Te[w.minFilter]),w.compareFunction&&(i.texParameteri(N,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(N,i.TEXTURE_COMPARE_FUNC,ke[w.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(w.magFilter===Yt||w.minFilter!==Hr&&w.minFilter!==Wn||w.type===_n&&e.has("OES_texture_float_linear")===!1)return;if(w.anisotropy>1||n.get(w).__currentAnisotropy){const q=e.get("EXT_texture_filter_anisotropic");i.texParameterf(N,q.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,r.getMaxAnisotropy())),n.get(w).__currentAnisotropy=w.anisotropy}}}function H(N,w){let q=!1;N.__webglInit===void 0&&(N.__webglInit=!0,w.addEventListener("dispose",R));const re=w.source;let pe=f.get(re);pe===void 0&&(pe={},f.set(re,pe));const ae=se(w);if(ae!==N.__cacheKey){pe[ae]===void 0&&(pe[ae]={texture:i.createTexture(),usedTimes:0},a.memory.textures++,q=!0),pe[ae].usedTimes++;const Ve=pe[N.__cacheKey];Ve!==void 0&&(pe[N.__cacheKey].usedTimes--,Ve.usedTimes===0&&C(w)),N.__cacheKey=ae,N.__webglTexture=pe[ae].texture}return q}function we(N,w,q){return Math.floor(Math.floor(N/q)/w)}function Be(N,w,q,re){const ae=N.updateRanges;if(ae.length===0)t.texSubImage2D(i.TEXTURE_2D,0,0,0,w.width,w.height,q,re,w.data);else{ae.sort((Me,Re)=>Me.start-Re.start);let Ve=0;for(let Me=1;Me<ae.length;Me++){const Re=ae[Ve],je=ae[Me],Oe=Re.start+Re.count,Ce=we(je.start,w.width,4),A=we(Re.start,w.width,4);je.start<=Oe+1&&Ce===A&&we(je.start+je.count-1,w.width,4)===Ce?Re.count=Math.max(Re.count,je.start+je.count-Re.start):(++Ve,ae[Ve]=je)}ae.length=Ve+1;const Ae=i.getParameter(i.UNPACK_ROW_LENGTH),oe=i.getParameter(i.UNPACK_SKIP_PIXELS),We=i.getParameter(i.UNPACK_SKIP_ROWS);i.pixelStorei(i.UNPACK_ROW_LENGTH,w.width);for(let Me=0,Re=ae.length;Me<Re;Me++){const je=ae[Me],Oe=Math.floor(je.start/4),Ce=Math.ceil(je.count/4),A=Oe%w.width,x=Math.floor(Oe/w.width),L=Ce,p=1;i.pixelStorei(i.UNPACK_SKIP_PIXELS,A),i.pixelStorei(i.UNPACK_SKIP_ROWS,x),t.texSubImage2D(i.TEXTURE_2D,0,A,x,L,p,q,re,w.data)}N.clearUpdateRanges(),i.pixelStorei(i.UNPACK_ROW_LENGTH,Ae),i.pixelStorei(i.UNPACK_SKIP_PIXELS,oe),i.pixelStorei(i.UNPACK_SKIP_ROWS,We)}}function ie(N,w,q){let re=i.TEXTURE_2D;(w.isDataArrayTexture||w.isCompressedArrayTexture)&&(re=i.TEXTURE_2D_ARRAY),w.isData3DTexture&&(re=i.TEXTURE_3D);const pe=H(N,w),ae=w.source;t.bindTexture(re,N.__webglTexture,i.TEXTURE0+q);const Ve=n.get(ae);if(ae.version!==Ve.__version||pe===!0){t.activeTexture(i.TEXTURE0+q);const Ae=lt.getPrimaries(lt.workingColorSpace),oe=w.colorSpace===ai?null:lt.getPrimaries(w.colorSpace),We=w.colorSpace===ai||Ae===oe?i.NONE:i.BROWSER_DEFAULT_WEBGL;i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,w.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,w.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,w.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,We);let Me=b(w.image,!1,r.maxTextureSize);Me=Xe(w,Me);const Re=s.convert(w.format,w.colorSpace),je=s.convert(w.type);let Oe=y(w.internalFormat,Re,je,w.colorSpace,w.isVideoTexture);O(re,w);let Ce;const A=w.mipmaps,x=w.isVideoTexture!==!0,L=Ve.__version===void 0||pe===!0,p=ae.dataReady,v=T(w,Me);if(w.isDepthTexture)Oe=M(w.format===$r,w.type),L&&(x?t.texStorage2D(i.TEXTURE_2D,1,Oe,Me.width,Me.height):t.texImage2D(i.TEXTURE_2D,0,Oe,Me.width,Me.height,0,Re,je,null));else if(w.isDataTexture)if(A.length>0){x&&L&&t.texStorage2D(i.TEXTURE_2D,v,Oe,A[0].width,A[0].height);for(let E=0,I=A.length;E<I;E++)Ce=A[E],x?p&&t.texSubImage2D(i.TEXTURE_2D,E,0,0,Ce.width,Ce.height,Re,je,Ce.data):t.texImage2D(i.TEXTURE_2D,E,Oe,Ce.width,Ce.height,0,Re,je,Ce.data);w.generateMipmaps=!1}else x?(L&&t.texStorage2D(i.TEXTURE_2D,v,Oe,Me.width,Me.height),p&&Be(w,Me,Re,je)):t.texImage2D(i.TEXTURE_2D,0,Oe,Me.width,Me.height,0,Re,je,Me.data);else if(w.isCompressedTexture)if(w.isCompressedArrayTexture){x&&L&&t.texStorage3D(i.TEXTURE_2D_ARRAY,v,Oe,A[0].width,A[0].height,Me.depth);for(let E=0,I=A.length;E<I;E++)if(Ce=A[E],w.format!==fn)if(Re!==null)if(x){if(p)if(w.layerUpdates.size>0){const F=Ch(Ce.width,Ce.height,w.format,w.type);for(const X of w.layerUpdates){const me=Ce.data.subarray(X*F/Ce.data.BYTES_PER_ELEMENT,(X+1)*F/Ce.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,E,0,0,X,Ce.width,Ce.height,1,Re,me)}w.clearLayerUpdates()}else t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,E,0,0,0,Ce.width,Ce.height,Me.depth,Re,Ce.data)}else t.compressedTexImage3D(i.TEXTURE_2D_ARRAY,E,Oe,Ce.width,Ce.height,Me.depth,0,Ce.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else x?p&&t.texSubImage3D(i.TEXTURE_2D_ARRAY,E,0,0,0,Ce.width,Ce.height,Me.depth,Re,je,Ce.data):t.texImage3D(i.TEXTURE_2D_ARRAY,E,Oe,Ce.width,Ce.height,Me.depth,0,Re,je,Ce.data)}else{x&&L&&t.texStorage2D(i.TEXTURE_2D,v,Oe,A[0].width,A[0].height);for(let E=0,I=A.length;E<I;E++)Ce=A[E],w.format!==fn?Re!==null?x?p&&t.compressedTexSubImage2D(i.TEXTURE_2D,E,0,0,Ce.width,Ce.height,Re,Ce.data):t.compressedTexImage2D(i.TEXTURE_2D,E,Oe,Ce.width,Ce.height,0,Ce.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):x?p&&t.texSubImage2D(i.TEXTURE_2D,E,0,0,Ce.width,Ce.height,Re,je,Ce.data):t.texImage2D(i.TEXTURE_2D,E,Oe,Ce.width,Ce.height,0,Re,je,Ce.data)}else if(w.isDataArrayTexture)if(x){if(L&&t.texStorage3D(i.TEXTURE_2D_ARRAY,v,Oe,Me.width,Me.height,Me.depth),p)if(w.layerUpdates.size>0){const E=Ch(Me.width,Me.height,w.format,w.type);for(const I of w.layerUpdates){const F=Me.data.subarray(I*E/Me.data.BYTES_PER_ELEMENT,(I+1)*E/Me.data.BYTES_PER_ELEMENT);t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,I,Me.width,Me.height,1,Re,je,F)}w.clearLayerUpdates()}else t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,0,Me.width,Me.height,Me.depth,Re,je,Me.data)}else t.texImage3D(i.TEXTURE_2D_ARRAY,0,Oe,Me.width,Me.height,Me.depth,0,Re,je,Me.data);else if(w.isData3DTexture)x?(L&&t.texStorage3D(i.TEXTURE_3D,v,Oe,Me.width,Me.height,Me.depth),p&&t.texSubImage3D(i.TEXTURE_3D,0,0,0,0,Me.width,Me.height,Me.depth,Re,je,Me.data)):t.texImage3D(i.TEXTURE_3D,0,Oe,Me.width,Me.height,Me.depth,0,Re,je,Me.data);else if(w.isFramebufferTexture){if(L)if(x)t.texStorage2D(i.TEXTURE_2D,v,Oe,Me.width,Me.height);else{let E=Me.width,I=Me.height;for(let F=0;F<v;F++)t.texImage2D(i.TEXTURE_2D,F,Oe,E,I,0,Re,je,null),E>>=1,I>>=1}}else if(A.length>0){if(x&&L){const E=De(A[0]);t.texStorage2D(i.TEXTURE_2D,v,Oe,E.width,E.height)}for(let E=0,I=A.length;E<I;E++)Ce=A[E],x?p&&t.texSubImage2D(i.TEXTURE_2D,E,0,0,Re,je,Ce):t.texImage2D(i.TEXTURE_2D,E,Oe,Re,je,Ce);w.generateMipmaps=!1}else if(x){if(L){const E=De(Me);t.texStorage2D(i.TEXTURE_2D,v,Oe,E.width,E.height)}p&&t.texSubImage2D(i.TEXTURE_2D,0,0,0,Re,je,Me)}else t.texImage2D(i.TEXTURE_2D,0,Oe,Re,je,Me);g(w)&&m(re),Ve.__version=ae.version,w.onUpdate&&w.onUpdate(w)}N.__version=w.version}function ce(N,w,q){if(w.image.length!==6)return;const re=H(N,w),pe=w.source;t.bindTexture(i.TEXTURE_CUBE_MAP,N.__webglTexture,i.TEXTURE0+q);const ae=n.get(pe);if(pe.version!==ae.__version||re===!0){t.activeTexture(i.TEXTURE0+q);const Ve=lt.getPrimaries(lt.workingColorSpace),Ae=w.colorSpace===ai?null:lt.getPrimaries(w.colorSpace),oe=w.colorSpace===ai||Ve===Ae?i.NONE:i.BROWSER_DEFAULT_WEBGL;i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,w.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,w.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,w.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,oe);const We=w.isCompressedTexture||w.image[0].isCompressedTexture,Me=w.image[0]&&w.image[0].isDataTexture,Re=[];for(let I=0;I<6;I++)!We&&!Me?Re[I]=b(w.image[I],!0,r.maxCubemapSize):Re[I]=Me?w.image[I].image:w.image[I],Re[I]=Xe(w,Re[I]);const je=Re[0],Oe=s.convert(w.format,w.colorSpace),Ce=s.convert(w.type),A=y(w.internalFormat,Oe,Ce,w.colorSpace),x=w.isVideoTexture!==!0,L=ae.__version===void 0||re===!0,p=pe.dataReady;let v=T(w,je);O(i.TEXTURE_CUBE_MAP,w);let E;if(We){x&&L&&t.texStorage2D(i.TEXTURE_CUBE_MAP,v,A,je.width,je.height);for(let I=0;I<6;I++){E=Re[I].mipmaps;for(let F=0;F<E.length;F++){const X=E[F];w.format!==fn?Oe!==null?x?p&&t.compressedTexSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F,0,0,X.width,X.height,Oe,X.data):t.compressedTexImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F,A,X.width,X.height,0,X.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F,0,0,X.width,X.height,Oe,Ce,X.data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F,A,X.width,X.height,0,Oe,Ce,X.data)}}}else{if(E=w.mipmaps,x&&L){E.length>0&&v++;const I=De(Re[0]);t.texStorage2D(i.TEXTURE_CUBE_MAP,v,A,I.width,I.height)}for(let I=0;I<6;I++)if(Me){x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,0,0,0,Re[I].width,Re[I].height,Oe,Ce,Re[I].data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,0,A,Re[I].width,Re[I].height,0,Oe,Ce,Re[I].data);for(let F=0;F<E.length;F++){const me=E[F].image[I].image;x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F+1,0,0,me.width,me.height,Oe,Ce,me.data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F+1,A,me.width,me.height,0,Oe,Ce,me.data)}}else{x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,0,0,0,Oe,Ce,Re[I]):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,0,A,Oe,Ce,Re[I]);for(let F=0;F<E.length;F++){const X=E[F];x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F+1,0,0,Oe,Ce,X.image[I]):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F+1,A,Oe,Ce,X.image[I])}}}g(w)&&m(i.TEXTURE_CUBE_MAP),ae.__version=pe.version,w.onUpdate&&w.onUpdate(w)}N.__version=w.version}function z(N,w,q,re,pe,ae){const Ve=s.convert(q.format,q.colorSpace),Ae=s.convert(q.type),oe=y(q.internalFormat,Ve,Ae,q.colorSpace),We=n.get(w),Me=n.get(q);if(Me.__renderTarget=w,!We.__hasExternalTextures){const Re=Math.max(1,w.width>>ae),je=Math.max(1,w.height>>ae);pe===i.TEXTURE_3D||pe===i.TEXTURE_2D_ARRAY?t.texImage3D(pe,ae,oe,Re,je,w.depth,0,Ve,Ae,null):t.texImage2D(pe,ae,oe,Re,je,0,Ve,Ae,null)}t.bindFramebuffer(i.FRAMEBUFFER,N),_e(w)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,re,pe,Me.__webglTexture,0,ze(w)):(pe===i.TEXTURE_2D||pe>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&pe<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,re,pe,Me.__webglTexture,ae),t.bindFramebuffer(i.FRAMEBUFFER,null)}function j(N,w,q){if(i.bindRenderbuffer(i.RENDERBUFFER,N),w.depthBuffer){const re=w.depthTexture,pe=re&&re.isDepthTexture?re.type:null,ae=M(w.stencilBuffer,pe),Ve=w.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,Ae=ze(w);_e(w)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,Ae,ae,w.width,w.height):q?i.renderbufferStorageMultisample(i.RENDERBUFFER,Ae,ae,w.width,w.height):i.renderbufferStorage(i.RENDERBUFFER,ae,w.width,w.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,Ve,i.RENDERBUFFER,N)}else{const re=w.textures;for(let pe=0;pe<re.length;pe++){const ae=re[pe],Ve=s.convert(ae.format,ae.colorSpace),Ae=s.convert(ae.type),oe=y(ae.internalFormat,Ve,Ae,ae.colorSpace),We=ze(w);q&&_e(w)===!1?i.renderbufferStorageMultisample(i.RENDERBUFFER,We,oe,w.width,w.height):_e(w)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,We,oe,w.width,w.height):i.renderbufferStorage(i.RENDERBUFFER,oe,w.width,w.height)}}i.bindRenderbuffer(i.RENDERBUFFER,null)}function W(N,w){if(w&&w.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(i.FRAMEBUFFER,N),!(w.depthTexture&&w.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const re=n.get(w.depthTexture);re.__renderTarget=w,(!re.__webglTexture||w.depthTexture.image.width!==w.width||w.depthTexture.image.height!==w.height)&&(w.depthTexture.image.width=w.width,w.depthTexture.image.height=w.height,w.depthTexture.needsUpdate=!0),he(w.depthTexture,0);const pe=re.__webglTexture,ae=ze(w);if(w.depthTexture.format===Xr)_e(w)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,pe,0,ae):i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,pe,0);else if(w.depthTexture.format===$r)_e(w)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.TEXTURE_2D,pe,0,ae):i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.TEXTURE_2D,pe,0);else throw new Error("Unknown depthTexture format")}function le(N){const w=n.get(N),q=N.isWebGLCubeRenderTarget===!0;if(w.__boundDepthTexture!==N.depthTexture){const re=N.depthTexture;if(w.__depthDisposeCallback&&w.__depthDisposeCallback(),re){const pe=()=>{delete w.__boundDepthTexture,delete w.__depthDisposeCallback,re.removeEventListener("dispose",pe)};re.addEventListener("dispose",pe),w.__depthDisposeCallback=pe}w.__boundDepthTexture=re}if(N.depthTexture&&!w.__autoAllocateDepthBuffer){if(q)throw new Error("target.depthTexture not supported in Cube render targets");const re=N.texture.mipmaps;re&&re.length>0?W(w.__webglFramebuffer[0],N):W(w.__webglFramebuffer,N)}else if(q){w.__webglDepthbuffer=[];for(let re=0;re<6;re++)if(t.bindFramebuffer(i.FRAMEBUFFER,w.__webglFramebuffer[re]),w.__webglDepthbuffer[re]===void 0)w.__webglDepthbuffer[re]=i.createRenderbuffer(),j(w.__webglDepthbuffer[re],N,!1);else{const pe=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,ae=w.__webglDepthbuffer[re];i.bindRenderbuffer(i.RENDERBUFFER,ae),i.framebufferRenderbuffer(i.FRAMEBUFFER,pe,i.RENDERBUFFER,ae)}}else{const re=N.texture.mipmaps;if(re&&re.length>0?t.bindFramebuffer(i.FRAMEBUFFER,w.__webglFramebuffer[0]):t.bindFramebuffer(i.FRAMEBUFFER,w.__webglFramebuffer),w.__webglDepthbuffer===void 0)w.__webglDepthbuffer=i.createRenderbuffer(),j(w.__webglDepthbuffer,N,!1);else{const pe=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,ae=w.__webglDepthbuffer;i.bindRenderbuffer(i.RENDERBUFFER,ae),i.framebufferRenderbuffer(i.FRAMEBUFFER,pe,i.RENDERBUFFER,ae)}}t.bindFramebuffer(i.FRAMEBUFFER,null)}function be(N,w,q){const re=n.get(N);w!==void 0&&z(re.__webglFramebuffer,N,N.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,0),q!==void 0&&le(N)}function U(N){const w=N.texture,q=n.get(N),re=n.get(w);N.addEventListener("dispose",k);const pe=N.textures,ae=N.isWebGLCubeRenderTarget===!0,Ve=pe.length>1;if(Ve||(re.__webglTexture===void 0&&(re.__webglTexture=i.createTexture()),re.__version=w.version,a.memory.textures++),ae){q.__webglFramebuffer=[];for(let Ae=0;Ae<6;Ae++)if(w.mipmaps&&w.mipmaps.length>0){q.__webglFramebuffer[Ae]=[];for(let oe=0;oe<w.mipmaps.length;oe++)q.__webglFramebuffer[Ae][oe]=i.createFramebuffer()}else q.__webglFramebuffer[Ae]=i.createFramebuffer()}else{if(w.mipmaps&&w.mipmaps.length>0){q.__webglFramebuffer=[];for(let Ae=0;Ae<w.mipmaps.length;Ae++)q.__webglFramebuffer[Ae]=i.createFramebuffer()}else q.__webglFramebuffer=i.createFramebuffer();if(Ve)for(let Ae=0,oe=pe.length;Ae<oe;Ae++){const We=n.get(pe[Ae]);We.__webglTexture===void 0&&(We.__webglTexture=i.createTexture(),a.memory.textures++)}if(N.samples>0&&_e(N)===!1){q.__webglMultisampledFramebuffer=i.createFramebuffer(),q.__webglColorRenderbuffer=[],t.bindFramebuffer(i.FRAMEBUFFER,q.__webglMultisampledFramebuffer);for(let Ae=0;Ae<pe.length;Ae++){const oe=pe[Ae];q.__webglColorRenderbuffer[Ae]=i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,q.__webglColorRenderbuffer[Ae]);const We=s.convert(oe.format,oe.colorSpace),Me=s.convert(oe.type),Re=y(oe.internalFormat,We,Me,oe.colorSpace,N.isXRRenderTarget===!0),je=ze(N);i.renderbufferStorageMultisample(i.RENDERBUFFER,je,Re,N.width,N.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+Ae,i.RENDERBUFFER,q.__webglColorRenderbuffer[Ae])}i.bindRenderbuffer(i.RENDERBUFFER,null),N.depthBuffer&&(q.__webglDepthRenderbuffer=i.createRenderbuffer(),j(q.__webglDepthRenderbuffer,N,!0)),t.bindFramebuffer(i.FRAMEBUFFER,null)}}if(ae){t.bindTexture(i.TEXTURE_CUBE_MAP,re.__webglTexture),O(i.TEXTURE_CUBE_MAP,w);for(let Ae=0;Ae<6;Ae++)if(w.mipmaps&&w.mipmaps.length>0)for(let oe=0;oe<w.mipmaps.length;oe++)z(q.__webglFramebuffer[Ae][oe],N,w,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+Ae,oe);else z(q.__webglFramebuffer[Ae],N,w,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+Ae,0);g(w)&&m(i.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(Ve){for(let Ae=0,oe=pe.length;Ae<oe;Ae++){const We=pe[Ae],Me=n.get(We);let Re=i.TEXTURE_2D;(N.isWebGL3DRenderTarget||N.isWebGLArrayRenderTarget)&&(Re=N.isWebGL3DRenderTarget?i.TEXTURE_3D:i.TEXTURE_2D_ARRAY),t.bindTexture(Re,Me.__webglTexture),O(Re,We),z(q.__webglFramebuffer,N,We,i.COLOR_ATTACHMENT0+Ae,Re,0),g(We)&&m(Re)}t.unbindTexture()}else{let Ae=i.TEXTURE_2D;if((N.isWebGL3DRenderTarget||N.isWebGLArrayRenderTarget)&&(Ae=N.isWebGL3DRenderTarget?i.TEXTURE_3D:i.TEXTURE_2D_ARRAY),t.bindTexture(Ae,re.__webglTexture),O(Ae,w),w.mipmaps&&w.mipmaps.length>0)for(let oe=0;oe<w.mipmaps.length;oe++)z(q.__webglFramebuffer[oe],N,w,i.COLOR_ATTACHMENT0,Ae,oe);else z(q.__webglFramebuffer,N,w,i.COLOR_ATTACHMENT0,Ae,0);g(w)&&m(Ae),t.unbindTexture()}N.depthBuffer&&le(N)}function ee(N){const w=N.textures;for(let q=0,re=w.length;q<re;q++){const pe=w[q];if(g(pe)){const ae=S(N),Ve=n.get(pe).__webglTexture;t.bindTexture(ae,Ve),m(ae),t.unbindTexture()}}}const fe=[],ye=[];function Se(N){if(N.samples>0){if(_e(N)===!1){const w=N.textures,q=N.width,re=N.height;let pe=i.COLOR_BUFFER_BIT;const ae=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,Ve=n.get(N),Ae=w.length>1;if(Ae)for(let We=0;We<w.length;We++)t.bindFramebuffer(i.FRAMEBUFFER,Ve.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+We,i.RENDERBUFFER,null),t.bindFramebuffer(i.FRAMEBUFFER,Ve.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+We,i.TEXTURE_2D,null,0);t.bindFramebuffer(i.READ_FRAMEBUFFER,Ve.__webglMultisampledFramebuffer);const oe=N.texture.mipmaps;oe&&oe.length>0?t.bindFramebuffer(i.DRAW_FRAMEBUFFER,Ve.__webglFramebuffer[0]):t.bindFramebuffer(i.DRAW_FRAMEBUFFER,Ve.__webglFramebuffer);for(let We=0;We<w.length;We++){if(N.resolveDepthBuffer&&(N.depthBuffer&&(pe|=i.DEPTH_BUFFER_BIT),N.stencilBuffer&&N.resolveStencilBuffer&&(pe|=i.STENCIL_BUFFER_BIT)),Ae){i.framebufferRenderbuffer(i.READ_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,Ve.__webglColorRenderbuffer[We]);const Me=n.get(w[We]).__webglTexture;i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,Me,0)}i.blitFramebuffer(0,0,q,re,0,0,q,re,pe,i.NEAREST),l===!0&&(fe.length=0,ye.length=0,fe.push(i.COLOR_ATTACHMENT0+We),N.depthBuffer&&N.resolveDepthBuffer===!1&&(fe.push(ae),ye.push(ae),i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,ye)),i.invalidateFramebuffer(i.READ_FRAMEBUFFER,fe))}if(t.bindFramebuffer(i.READ_FRAMEBUFFER,null),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),Ae)for(let We=0;We<w.length;We++){t.bindFramebuffer(i.FRAMEBUFFER,Ve.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+We,i.RENDERBUFFER,Ve.__webglColorRenderbuffer[We]);const Me=n.get(w[We]).__webglTexture;t.bindFramebuffer(i.FRAMEBUFFER,Ve.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+We,i.TEXTURE_2D,Me,0)}t.bindFramebuffer(i.DRAW_FRAMEBUFFER,Ve.__webglMultisampledFramebuffer)}else if(N.depthBuffer&&N.resolveDepthBuffer===!1&&l){const w=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT;i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,[w])}}}function ze(N){return Math.min(r.maxSamples,N.samples)}function _e(N){const w=n.get(N);return N.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&w.__useRenderToTexture!==!1}function xe(N){const w=a.render.frame;h.get(N)!==w&&(h.set(N,w),N.update())}function Xe(N,w){const q=N.colorSpace,re=N.format,pe=N.type;return N.isCompressedTexture===!0||N.isVideoTexture===!0||q!==Kt&&q!==ai&&(lt.getTransfer(q)===xt?(re!==fn||pe!==Cn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",q)),w}function De(N){return typeof HTMLImageElement<"u"&&N instanceof HTMLImageElement?(c.width=N.naturalWidth||N.width,c.height=N.naturalHeight||N.height):typeof VideoFrame<"u"&&N instanceof VideoFrame?(c.width=N.displayWidth,c.height=N.displayHeight):(c.width=N.width,c.height=N.height),c}this.allocateTextureUnit=J,this.resetTextureUnits=K,this.setTexture2D=he,this.setTexture2DArray=Q,this.setTexture3D=de,this.setTextureCube=ne,this.rebindTextures=be,this.setupRenderTarget=U,this.updateRenderTargetMipmap=ee,this.updateMultisampleRenderTarget=Se,this.setupDepthRenderbuffer=le,this.setupFrameBufferTexture=z,this.useMultisampledRTT=_e}function By(i,e){function t(n,r=ai){let s;const a=lt.getTransfer(r);if(n===Cn)return i.UNSIGNED_BYTE;if(n===uo)return i.UNSIGNED_SHORT_4_4_4_4;if(n===ho)return i.UNSIGNED_SHORT_5_5_5_1;if(n===du)return i.UNSIGNED_INT_5_9_9_9_REV;if(n===pu)return i.UNSIGNED_INT_10F_11F_11F_REV;if(n===hu)return i.BYTE;if(n===fu)return i.SHORT;if(n===Vr)return i.UNSIGNED_SHORT;if(n===co)return i.INT;if(n===Mi)return i.UNSIGNED_INT;if(n===_n)return i.FLOAT;if(n===Gr)return i.HALF_FLOAT;if(n===mu)return i.ALPHA;if(n===gu)return i.RGB;if(n===fn)return i.RGBA;if(n===Xr)return i.DEPTH_COMPONENT;if(n===$r)return i.DEPTH_STENCIL;if(n===fo)return i.RED;if(n===po)return i.RED_INTEGER;if(n===_u)return i.RG;if(n===mo)return i.RG_INTEGER;if(n===go)return i.RGBA_INTEGER;if(n===Ds||n===Ls||n===Is||n===Us)if(a===xt)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(n===Ds)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===Ls)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Is)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Us)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(n===Ds)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===Ls)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Is)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Us)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===_o||n===vo||n===yo||n===xo)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(n===_o)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===vo)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===yo)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===xo)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===bo||n===So||n===Mo)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(n===bo||n===So)return a===xt?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(n===Mo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===Eo||n===To||n===wo||n===Ao||n===Ro||n===Co||n===Po||n===Do||n===Lo||n===Io||n===Uo||n===No||n===Oo||n===Fo)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(n===Eo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===To)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===wo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Ao)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Ro)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Co)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Po)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Do)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Lo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Io)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===Uo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===No)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Oo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Fo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===ko||n===Bo||n===zo)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(n===ko)return a===xt?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Bo)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===zo)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===Ho||n===Vo||n===Go||n===Wo)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(n===Ho)return s.COMPRESSED_RED_RGTC1_EXT;if(n===Vo)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===Go)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===Wo)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===Wr?i.UNSIGNED_INT_24_8:i[n]!==void 0?i[n]:null}return{convert:t}}const zy=`
|
|
3849
|
+
}`;function Fy(i,e,t){let n=new Tl;const r=new Ye,s=new Ye,a=new pt,o=new fg({depthPacking:nm}),l=new dg,c={},h=t.maxTextureSize,u={[Gn]:sn,[sn]:Gn,[Rn]:Rn},f=new fi({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ye},radius:{value:4}},vertexShader:Ny,fragmentShader:Oy}),d=f.clone();d.defines.HORIZONTAL_PASS=1;const _=new En;_.setAttribute("position",new Zt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const b=new Jt(_,f),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=iu;let m=this.type;this.render=function(R,k,B){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||R.length===0)return;const C=i.getRenderTarget(),D=i.getActiveCubeFace(),V=i.getActiveMipmapLevel(),K=i.state;K.setBlending(ii),K.buffers.depth.getReversed()===!0?K.buffers.color.setClear(0,0,0,0):K.buffers.color.setClear(1,1,1,1),K.buffers.depth.setTest(!0),K.setScissorTest(!1);const J=m!==Vn&&this.type===Vn,se=m===Vn&&this.type!==Vn;for(let he=0,Q=R.length;he<Q;he++){const de=R[he],ne=de.shadow;if(ne===void 0){console.warn("THREE.WebGLShadowMap:",de,"has no shadow.");continue}if(ne.autoUpdate===!1&&ne.needsUpdate===!1)continue;r.copy(ne.mapSize);const ue=ne.getFrameExtents();if(r.multiply(ue),s.copy(ne.mapSize),(r.x>h||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/ue.x),r.x=s.x*ue.x,ne.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/ue.y),r.y=s.y*ue.y,ne.mapSize.y=s.y)),ne.map===null||J===!0||se===!0){const ke=this.type!==Vn?{minFilter:Yt,magFilter:Yt}:{};ne.map!==null&&ne.map.dispose(),ne.map=new Ti(r.x,r.y,ke),ne.map.texture.name=de.name+".shadowMap",ne.camera.updateProjectionMatrix()}i.setRenderTarget(ne.map),i.clear();const Te=ne.getViewportCount();for(let ke=0;ke<Te;ke++){const O=ne.getViewport(ke);a.set(s.x*O.x,s.y*O.y,s.x*O.z,s.y*O.w),K.viewport(a),ne.updateMatrices(de,ke),n=ne.getFrustum(),M(k,B,ne.camera,de,this.type)}ne.isPointLightShadow!==!0&&this.type===Vn&&S(ne,B),ne.needsUpdate=!1}m=this.type,g.needsUpdate=!1,i.setRenderTarget(C,D,V)};function S(R,k){const B=e.update(b);f.defines.VSM_SAMPLES!==R.blurSamples&&(f.defines.VSM_SAMPLES=R.blurSamples,d.defines.VSM_SAMPLES=R.blurSamples,f.needsUpdate=!0,d.needsUpdate=!0),R.mapPass===null&&(R.mapPass=new Ti(r.x,r.y)),f.uniforms.shadow_pass.value=R.map.texture,f.uniforms.resolution.value=R.mapSize,f.uniforms.radius.value=R.radius,i.setRenderTarget(R.mapPass),i.clear(),i.renderBufferDirect(k,null,B,f,b,null),d.uniforms.shadow_pass.value=R.mapPass.texture,d.uniforms.resolution.value=R.mapSize,d.uniforms.radius.value=R.radius,i.setRenderTarget(R.map),i.clear(),i.renderBufferDirect(k,null,B,d,b,null)}function y(R,k,B,C){let D=null;const V=B.isPointLight===!0?R.customDistanceMaterial:R.customDepthMaterial;if(V!==void 0)D=V;else if(D=B.isPointLight===!0?l:o,i.localClippingEnabled&&k.clipShadows===!0&&Array.isArray(k.clippingPlanes)&&k.clippingPlanes.length!==0||k.displacementMap&&k.displacementScale!==0||k.alphaMap&&k.alphaTest>0||k.map&&k.alphaTest>0||k.alphaToCoverage===!0){const K=D.uuid,J=k.uuid;let se=c[K];se===void 0&&(se={},c[K]=se);let he=se[J];he===void 0&&(he=D.clone(),se[J]=he,k.addEventListener("dispose",T)),D=he}if(D.visible=k.visible,D.wireframe=k.wireframe,C===Vn?D.side=k.shadowSide!==null?k.shadowSide:k.side:D.side=k.shadowSide!==null?k.shadowSide:u[k.side],D.alphaMap=k.alphaMap,D.alphaTest=k.alphaToCoverage===!0?.5:k.alphaTest,D.map=k.map,D.clipShadows=k.clipShadows,D.clippingPlanes=k.clippingPlanes,D.clipIntersection=k.clipIntersection,D.displacementMap=k.displacementMap,D.displacementScale=k.displacementScale,D.displacementBias=k.displacementBias,D.wireframeLinewidth=k.wireframeLinewidth,D.linewidth=k.linewidth,B.isPointLight===!0&&D.isMeshDistanceMaterial===!0){const K=i.properties.get(D);K.light=B}return D}function M(R,k,B,C,D){if(R.visible===!1)return;if(R.layers.test(k.layers)&&(R.isMesh||R.isLine||R.isPoints)&&(R.castShadow||R.receiveShadow&&D===Vn)&&(!R.frustumCulled||n.intersectsObject(R))){R.modelViewMatrix.multiplyMatrices(B.matrixWorldInverse,R.matrixWorld);const J=e.update(R),se=R.material;if(Array.isArray(se)){const he=J.groups;for(let Q=0,de=he.length;Q<de;Q++){const ne=he[Q],ue=se[ne.materialIndex];if(ue&&ue.visible){const Te=y(R,ue,C,D);R.onBeforeShadow(i,R,k,B,J,Te,ne),i.renderBufferDirect(B,null,J,Te,R,ne),R.onAfterShadow(i,R,k,B,J,Te,ne)}}}else if(se.visible){const he=y(R,se,C,D);R.onBeforeShadow(i,R,k,B,J,he,null),i.renderBufferDirect(B,null,J,he,R,null),R.onAfterShadow(i,R,k,B,J,he,null)}}const K=R.children;for(let J=0,se=K.length;J<se;J++)M(K[J],k,B,C,D)}function T(R){R.target.removeEventListener("dispose",T);for(const B in c){const C=c[B],D=R.target.uuid;D in C&&(C[D].dispose(),delete C[D])}}}const ky={[to]:no,[io]:ao,[ro]:oo,[Ki]:so,[no]:to,[ao]:io,[oo]:ro,[so]:Ki};function By(i,e){function t(){let x=!1;const L=new pt;let p=null;const v=new pt(0,0,0,0);return{setMask:function(E){p!==E&&!x&&(i.colorMask(E,E,E,E),p=E)},setLocked:function(E){x=E},setClear:function(E,I,F,X,me){me===!0&&(E*=X,I*=X,F*=X),L.set(E,I,F,X),v.equals(L)===!1&&(i.clearColor(E,I,F,X),v.copy(L))},reset:function(){x=!1,p=null,v.set(-1,0,0,0)}}}function n(){let x=!1,L=!1,p=null,v=null,E=null;return{setReversed:function(I){if(L!==I){const F=e.get("EXT_clip_control");I?F.clipControlEXT(F.LOWER_LEFT_EXT,F.ZERO_TO_ONE_EXT):F.clipControlEXT(F.LOWER_LEFT_EXT,F.NEGATIVE_ONE_TO_ONE_EXT),L=I;const X=E;E=null,this.setClear(X)}},getReversed:function(){return L},setTest:function(I){I?ce(i.DEPTH_TEST):z(i.DEPTH_TEST)},setMask:function(I){p!==I&&!x&&(i.depthMask(I),p=I)},setFunc:function(I){if(L&&(I=ky[I]),v!==I){switch(I){case to:i.depthFunc(i.NEVER);break;case no:i.depthFunc(i.ALWAYS);break;case io:i.depthFunc(i.LESS);break;case Ki:i.depthFunc(i.LEQUAL);break;case ro:i.depthFunc(i.EQUAL);break;case so:i.depthFunc(i.GEQUAL);break;case ao:i.depthFunc(i.GREATER);break;case oo:i.depthFunc(i.NOTEQUAL);break;default:i.depthFunc(i.LEQUAL)}v=I}},setLocked:function(I){x=I},setClear:function(I){E!==I&&(L&&(I=1-I),i.clearDepth(I),E=I)},reset:function(){x=!1,p=null,v=null,E=null,L=!1}}}function r(){let x=!1,L=null,p=null,v=null,E=null,I=null,F=null,X=null,me=null;return{setTest:function(ve){x||(ve?ce(i.STENCIL_TEST):z(i.STENCIL_TEST))},setMask:function(ve){L!==ve&&!x&&(i.stencilMask(ve),L=ve)},setFunc:function(ve,$e,Ne){(p!==ve||v!==$e||E!==Ne)&&(i.stencilFunc(ve,$e,Ne),p=ve,v=$e,E=Ne)},setOp:function(ve,$e,Ne){(I!==ve||F!==$e||X!==Ne)&&(i.stencilOp(ve,$e,Ne),I=ve,F=$e,X=Ne)},setLocked:function(ve){x=ve},setClear:function(ve){me!==ve&&(i.clearStencil(ve),me=ve)},reset:function(){x=!1,L=null,p=null,v=null,E=null,I=null,F=null,X=null,me=null}}}const s=new t,a=new n,o=new r,l=new WeakMap,c=new WeakMap;let h={},u={},f=new WeakMap,d=[],_=null,b=!1,g=null,m=null,S=null,y=null,M=null,T=null,R=null,k=new Ze(0,0,0),B=0,C=!1,D=null,V=null,K=null,J=null,se=null;const he=i.getParameter(i.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let Q=!1,de=0;const ne=i.getParameter(i.VERSION);ne.indexOf("WebGL")!==-1?(de=parseFloat(/^WebGL (\d)/.exec(ne)[1]),Q=de>=1):ne.indexOf("OpenGL ES")!==-1&&(de=parseFloat(/^OpenGL ES (\d)/.exec(ne)[1]),Q=de>=2);let ue=null,Te={};const ke=i.getParameter(i.SCISSOR_BOX),O=i.getParameter(i.VIEWPORT),H=new pt().fromArray(ke),we=new pt().fromArray(O);function Be(x,L,p,v){const E=new Uint8Array(4),I=i.createTexture();i.bindTexture(x,I),i.texParameteri(x,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(x,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let F=0;F<p;F++)x===i.TEXTURE_3D||x===i.TEXTURE_2D_ARRAY?i.texImage3D(L,0,i.RGBA,1,1,v,0,i.RGBA,i.UNSIGNED_BYTE,E):i.texImage2D(L+F,0,i.RGBA,1,1,0,i.RGBA,i.UNSIGNED_BYTE,E);return I}const ie={};ie[i.TEXTURE_2D]=Be(i.TEXTURE_2D,i.TEXTURE_2D,1),ie[i.TEXTURE_CUBE_MAP]=Be(i.TEXTURE_CUBE_MAP,i.TEXTURE_CUBE_MAP_POSITIVE_X,6),ie[i.TEXTURE_2D_ARRAY]=Be(i.TEXTURE_2D_ARRAY,i.TEXTURE_2D_ARRAY,1,1),ie[i.TEXTURE_3D]=Be(i.TEXTURE_3D,i.TEXTURE_3D,1,1),s.setClear(0,0,0,1),a.setClear(1),o.setClear(0),ce(i.DEPTH_TEST),a.setFunc(Ki),ye(!1),Se(nu),ce(i.CULL_FACE),ee(ii);function ce(x){h[x]!==!0&&(i.enable(x),h[x]=!0)}function z(x){h[x]!==!1&&(i.disable(x),h[x]=!1)}function j(x,L){return u[x]!==L?(i.bindFramebuffer(x,L),u[x]=L,x===i.DRAW_FRAMEBUFFER&&(u[i.FRAMEBUFFER]=L),x===i.FRAMEBUFFER&&(u[i.DRAW_FRAMEBUFFER]=L),!0):!1}function W(x,L){let p=d,v=!1;if(x){p=f.get(L),p===void 0&&(p=[],f.set(L,p));const E=x.textures;if(p.length!==E.length||p[0]!==i.COLOR_ATTACHMENT0){for(let I=0,F=E.length;I<F;I++)p[I]=i.COLOR_ATTACHMENT0+I;p.length=E.length,v=!0}}else p[0]!==i.BACK&&(p[0]=i.BACK,v=!0);v&&i.drawBuffers(p)}function le(x){return _!==x?(i.useProgram(x),_=x,!0):!1}const be={[Si]:i.FUNC_ADD,[Ap]:i.FUNC_SUBTRACT,[Rp]:i.FUNC_REVERSE_SUBTRACT};be[Cp]=i.MIN,be[Pp]=i.MAX;const U={[Dp]:i.ZERO,[Lp]:i.ONE,[Ip]:i.SRC_COLOR,[Qa]:i.SRC_ALPHA,[Bp]:i.SRC_ALPHA_SATURATE,[Fp]:i.DST_COLOR,[Np]:i.DST_ALPHA,[Up]:i.ONE_MINUS_SRC_COLOR,[eo]:i.ONE_MINUS_SRC_ALPHA,[kp]:i.ONE_MINUS_DST_COLOR,[Op]:i.ONE_MINUS_DST_ALPHA,[zp]:i.CONSTANT_COLOR,[Hp]:i.ONE_MINUS_CONSTANT_COLOR,[Vp]:i.CONSTANT_ALPHA,[Gp]:i.ONE_MINUS_CONSTANT_ALPHA};function ee(x,L,p,v,E,I,F,X,me,ve){if(x===ii){b===!0&&(z(i.BLEND),b=!1);return}if(b===!1&&(ce(i.BLEND),b=!0),x!==wp){if(x!==g||ve!==C){if((m!==Si||M!==Si)&&(i.blendEquation(i.FUNC_ADD),m=Si,M=Si),ve)switch(x){case Yi:i.blendFuncSeparate(i.ONE,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA);break;case ru:i.blendFunc(i.ONE,i.ONE);break;case su:i.blendFuncSeparate(i.ZERO,i.ONE_MINUS_SRC_COLOR,i.ZERO,i.ONE);break;case au:i.blendFuncSeparate(i.DST_COLOR,i.ONE_MINUS_SRC_ALPHA,i.ZERO,i.ONE);break;default:console.error("THREE.WebGLState: Invalid blending: ",x);break}else switch(x){case Yi:i.blendFuncSeparate(i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA);break;case ru:i.blendFuncSeparate(i.SRC_ALPHA,i.ONE,i.ONE,i.ONE);break;case su:console.error("THREE.WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true");break;case au:console.error("THREE.WebGLState: MultiplyBlending requires material.premultipliedAlpha = true");break;default:console.error("THREE.WebGLState: Invalid blending: ",x);break}S=null,y=null,T=null,R=null,k.set(0,0,0),B=0,g=x,C=ve}return}E=E||L,I=I||p,F=F||v,(L!==m||E!==M)&&(i.blendEquationSeparate(be[L],be[E]),m=L,M=E),(p!==S||v!==y||I!==T||F!==R)&&(i.blendFuncSeparate(U[p],U[v],U[I],U[F]),S=p,y=v,T=I,R=F),(X.equals(k)===!1||me!==B)&&(i.blendColor(X.r,X.g,X.b,me),k.copy(X),B=me),g=x,C=!1}function fe(x,L){x.side===Rn?z(i.CULL_FACE):ce(i.CULL_FACE);let p=x.side===sn;L&&(p=!p),ye(p),x.blending===Yi&&x.transparent===!1?ee(ii):ee(x.blending,x.blendEquation,x.blendSrc,x.blendDst,x.blendEquationAlpha,x.blendSrcAlpha,x.blendDstAlpha,x.blendColor,x.blendAlpha,x.premultipliedAlpha),a.setFunc(x.depthFunc),a.setTest(x.depthTest),a.setMask(x.depthWrite),s.setMask(x.colorWrite);const v=x.stencilWrite;o.setTest(v),v&&(o.setMask(x.stencilWriteMask),o.setFunc(x.stencilFunc,x.stencilRef,x.stencilFuncMask),o.setOp(x.stencilFail,x.stencilZFail,x.stencilZPass)),_e(x.polygonOffset,x.polygonOffsetFactor,x.polygonOffsetUnits),x.alphaToCoverage===!0?ce(i.SAMPLE_ALPHA_TO_COVERAGE):z(i.SAMPLE_ALPHA_TO_COVERAGE)}function ye(x){D!==x&&(x?i.frontFace(i.CW):i.frontFace(i.CCW),D=x)}function Se(x){x!==Mp?(ce(i.CULL_FACE),x!==V&&(x===nu?i.cullFace(i.BACK):x===Ep?i.cullFace(i.FRONT):i.cullFace(i.FRONT_AND_BACK))):z(i.CULL_FACE),V=x}function ze(x){x!==K&&(Q&&i.lineWidth(x),K=x)}function _e(x,L,p){x?(ce(i.POLYGON_OFFSET_FILL),(J!==L||se!==p)&&(i.polygonOffset(L,p),J=L,se=p)):z(i.POLYGON_OFFSET_FILL)}function xe(x){x?ce(i.SCISSOR_TEST):z(i.SCISSOR_TEST)}function Xe(x){x===void 0&&(x=i.TEXTURE0+he-1),ue!==x&&(i.activeTexture(x),ue=x)}function De(x,L,p){p===void 0&&(ue===null?p=i.TEXTURE0+he-1:p=ue);let v=Te[p];v===void 0&&(v={type:void 0,texture:void 0},Te[p]=v),(v.type!==x||v.texture!==L)&&(ue!==p&&(i.activeTexture(p),ue=p),i.bindTexture(x,L||ie[x]),v.type=x,v.texture=L)}function N(){const x=Te[ue];x!==void 0&&x.type!==void 0&&(i.bindTexture(x.type,null),x.type=void 0,x.texture=void 0)}function w(){try{i.compressedTexImage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function q(){try{i.compressedTexImage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function re(){try{i.texSubImage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function pe(){try{i.texSubImage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function ae(){try{i.compressedTexSubImage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function Ve(){try{i.compressedTexSubImage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function Ae(){try{i.texStorage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function oe(){try{i.texStorage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function We(){try{i.texImage2D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function Me(){try{i.texImage3D(...arguments)}catch(x){console.error("THREE.WebGLState:",x)}}function Re(x){H.equals(x)===!1&&(i.scissor(x.x,x.y,x.z,x.w),H.copy(x))}function je(x){we.equals(x)===!1&&(i.viewport(x.x,x.y,x.z,x.w),we.copy(x))}function Oe(x,L){let p=c.get(L);p===void 0&&(p=new WeakMap,c.set(L,p));let v=p.get(x);v===void 0&&(v=i.getUniformBlockIndex(L,x.name),p.set(x,v))}function Ce(x,L){const v=c.get(L).get(x);l.get(L)!==v&&(i.uniformBlockBinding(L,v,x.__bindingPointIndex),l.set(L,v))}function A(){i.disable(i.BLEND),i.disable(i.CULL_FACE),i.disable(i.DEPTH_TEST),i.disable(i.POLYGON_OFFSET_FILL),i.disable(i.SCISSOR_TEST),i.disable(i.STENCIL_TEST),i.disable(i.SAMPLE_ALPHA_TO_COVERAGE),i.blendEquation(i.FUNC_ADD),i.blendFunc(i.ONE,i.ZERO),i.blendFuncSeparate(i.ONE,i.ZERO,i.ONE,i.ZERO),i.blendColor(0,0,0,0),i.colorMask(!0,!0,!0,!0),i.clearColor(0,0,0,0),i.depthMask(!0),i.depthFunc(i.LESS),a.setReversed(!1),i.clearDepth(1),i.stencilMask(4294967295),i.stencilFunc(i.ALWAYS,0,4294967295),i.stencilOp(i.KEEP,i.KEEP,i.KEEP),i.clearStencil(0),i.cullFace(i.BACK),i.frontFace(i.CCW),i.polygonOffset(0,0),i.activeTexture(i.TEXTURE0),i.bindFramebuffer(i.FRAMEBUFFER,null),i.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),i.bindFramebuffer(i.READ_FRAMEBUFFER,null),i.useProgram(null),i.lineWidth(1),i.scissor(0,0,i.canvas.width,i.canvas.height),i.viewport(0,0,i.canvas.width,i.canvas.height),h={},ue=null,Te={},u={},f=new WeakMap,d=[],_=null,b=!1,g=null,m=null,S=null,y=null,M=null,T=null,R=null,k=new Ze(0,0,0),B=0,C=!1,D=null,V=null,K=null,J=null,se=null,H.set(0,0,i.canvas.width,i.canvas.height),we.set(0,0,i.canvas.width,i.canvas.height),s.reset(),a.reset(),o.reset()}return{buffers:{color:s,depth:a,stencil:o},enable:ce,disable:z,bindFramebuffer:j,drawBuffers:W,useProgram:le,setBlending:ee,setMaterial:fe,setFlipSided:ye,setCullFace:Se,setLineWidth:ze,setPolygonOffset:_e,setScissorTest:xe,activeTexture:Xe,bindTexture:De,unbindTexture:N,compressedTexImage2D:w,compressedTexImage3D:q,texImage2D:We,texImage3D:Me,updateUBOMapping:Oe,uniformBlockBinding:Ce,texStorage2D:Ae,texStorage3D:oe,texSubImage2D:re,texSubImage3D:pe,compressedTexSubImage2D:ae,compressedTexSubImage3D:Ve,scissor:Re,viewport:je,reset:A}}function zy(i,e,t,n,r,s,a){const o=e.has("WEBGL_multisampled_render_to_texture")?e.get("WEBGL_multisampled_render_to_texture"):null,l=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new Ye,h=new WeakMap;let u;const f=new WeakMap;let d=!1;try{d=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function _(N,w){return d?new OffscreenCanvas(N,w):Zr("canvas")}function b(N,w,q){let re=1;const pe=De(N);if((pe.width>q||pe.height>q)&&(re=q/Math.max(pe.width,pe.height)),re<1)if(typeof HTMLImageElement<"u"&&N instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&N instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&N instanceof ImageBitmap||typeof VideoFrame<"u"&&N instanceof VideoFrame){const ae=Math.floor(re*pe.width),Ve=Math.floor(re*pe.height);u===void 0&&(u=_(ae,Ve));const Ae=w?_(ae,Ve):u;return Ae.width=ae,Ae.height=Ve,Ae.getContext("2d").drawImage(N,0,0,ae,Ve),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+pe.width+"x"+pe.height+") to ("+ae+"x"+Ve+")."),Ae}else return"data"in N&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+pe.width+"x"+pe.height+")."),N;return N}function g(N){return N.generateMipmaps}function m(N){i.generateMipmap(N)}function S(N){return N.isWebGLCubeRenderTarget?i.TEXTURE_CUBE_MAP:N.isWebGL3DRenderTarget?i.TEXTURE_3D:N.isWebGLArrayRenderTarget||N.isCompressedArrayTexture?i.TEXTURE_2D_ARRAY:i.TEXTURE_2D}function y(N,w,q,re,pe=!1){if(N!==null){if(i[N]!==void 0)return i[N];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+N+"'")}let ae=w;if(w===i.RED&&(q===i.FLOAT&&(ae=i.R32F),q===i.HALF_FLOAT&&(ae=i.R16F),q===i.UNSIGNED_BYTE&&(ae=i.R8)),w===i.RED_INTEGER&&(q===i.UNSIGNED_BYTE&&(ae=i.R8UI),q===i.UNSIGNED_SHORT&&(ae=i.R16UI),q===i.UNSIGNED_INT&&(ae=i.R32UI),q===i.BYTE&&(ae=i.R8I),q===i.SHORT&&(ae=i.R16I),q===i.INT&&(ae=i.R32I)),w===i.RG&&(q===i.FLOAT&&(ae=i.RG32F),q===i.HALF_FLOAT&&(ae=i.RG16F),q===i.UNSIGNED_BYTE&&(ae=i.RG8)),w===i.RG_INTEGER&&(q===i.UNSIGNED_BYTE&&(ae=i.RG8UI),q===i.UNSIGNED_SHORT&&(ae=i.RG16UI),q===i.UNSIGNED_INT&&(ae=i.RG32UI),q===i.BYTE&&(ae=i.RG8I),q===i.SHORT&&(ae=i.RG16I),q===i.INT&&(ae=i.RG32I)),w===i.RGB_INTEGER&&(q===i.UNSIGNED_BYTE&&(ae=i.RGB8UI),q===i.UNSIGNED_SHORT&&(ae=i.RGB16UI),q===i.UNSIGNED_INT&&(ae=i.RGB32UI),q===i.BYTE&&(ae=i.RGB8I),q===i.SHORT&&(ae=i.RGB16I),q===i.INT&&(ae=i.RGB32I)),w===i.RGBA_INTEGER&&(q===i.UNSIGNED_BYTE&&(ae=i.RGBA8UI),q===i.UNSIGNED_SHORT&&(ae=i.RGBA16UI),q===i.UNSIGNED_INT&&(ae=i.RGBA32UI),q===i.BYTE&&(ae=i.RGBA8I),q===i.SHORT&&(ae=i.RGBA16I),q===i.INT&&(ae=i.RGBA32I)),w===i.RGB&&(q===i.UNSIGNED_INT_5_9_9_9_REV&&(ae=i.RGB9_E5),q===i.UNSIGNED_INT_10F_11F_11F_REV&&(ae=i.R11F_G11F_B10F)),w===i.RGBA){const Ve=pe?Ns:lt.getTransfer(re);q===i.FLOAT&&(ae=i.RGBA32F),q===i.HALF_FLOAT&&(ae=i.RGBA16F),q===i.UNSIGNED_BYTE&&(ae=Ve===xt?i.SRGB8_ALPHA8:i.RGBA8),q===i.UNSIGNED_SHORT_4_4_4_4&&(ae=i.RGBA4),q===i.UNSIGNED_SHORT_5_5_5_1&&(ae=i.RGB5_A1)}return(ae===i.R16F||ae===i.R32F||ae===i.RG16F||ae===i.RG32F||ae===i.RGBA16F||ae===i.RGBA32F)&&e.get("EXT_color_buffer_float"),ae}function M(N,w){let q;return N?w===null||w===Mi||w===Wr?q=i.DEPTH24_STENCIL8:w===_n?q=i.DEPTH32F_STENCIL8:w===Vr&&(q=i.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):w===null||w===Mi||w===Wr?q=i.DEPTH_COMPONENT24:w===_n?q=i.DEPTH_COMPONENT32F:w===Vr&&(q=i.DEPTH_COMPONENT16),q}function T(N,w){return g(N)===!0||N.isFramebufferTexture&&N.minFilter!==Yt&&N.minFilter!==ln?Math.log2(Math.max(w.width,w.height))+1:N.mipmaps!==void 0&&N.mipmaps.length>0?N.mipmaps.length:N.isCompressedTexture&&Array.isArray(N.image)?w.mipmaps.length:1}function R(N){const w=N.target;w.removeEventListener("dispose",R),B(w),w.isVideoTexture&&h.delete(w)}function k(N){const w=N.target;w.removeEventListener("dispose",k),D(w)}function B(N){const w=n.get(N);if(w.__webglInit===void 0)return;const q=N.source,re=f.get(q);if(re){const pe=re[w.__cacheKey];pe.usedTimes--,pe.usedTimes===0&&C(N),Object.keys(re).length===0&&f.delete(q)}n.remove(N)}function C(N){const w=n.get(N);i.deleteTexture(w.__webglTexture);const q=N.source,re=f.get(q);delete re[w.__cacheKey],a.memory.textures--}function D(N){const w=n.get(N);if(N.depthTexture&&(N.depthTexture.dispose(),n.remove(N.depthTexture)),N.isWebGLCubeRenderTarget)for(let re=0;re<6;re++){if(Array.isArray(w.__webglFramebuffer[re]))for(let pe=0;pe<w.__webglFramebuffer[re].length;pe++)i.deleteFramebuffer(w.__webglFramebuffer[re][pe]);else i.deleteFramebuffer(w.__webglFramebuffer[re]);w.__webglDepthbuffer&&i.deleteRenderbuffer(w.__webglDepthbuffer[re])}else{if(Array.isArray(w.__webglFramebuffer))for(let re=0;re<w.__webglFramebuffer.length;re++)i.deleteFramebuffer(w.__webglFramebuffer[re]);else i.deleteFramebuffer(w.__webglFramebuffer);if(w.__webglDepthbuffer&&i.deleteRenderbuffer(w.__webglDepthbuffer),w.__webglMultisampledFramebuffer&&i.deleteFramebuffer(w.__webglMultisampledFramebuffer),w.__webglColorRenderbuffer)for(let re=0;re<w.__webglColorRenderbuffer.length;re++)w.__webglColorRenderbuffer[re]&&i.deleteRenderbuffer(w.__webglColorRenderbuffer[re]);w.__webglDepthRenderbuffer&&i.deleteRenderbuffer(w.__webglDepthRenderbuffer)}const q=N.textures;for(let re=0,pe=q.length;re<pe;re++){const ae=n.get(q[re]);ae.__webglTexture&&(i.deleteTexture(ae.__webglTexture),a.memory.textures--),n.remove(q[re])}n.remove(N)}let V=0;function K(){V=0}function J(){const N=V;return N>=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+N+" texture units while this GPU supports only "+r.maxTextures),V+=1,N}function se(N){const w=[];return w.push(N.wrapS),w.push(N.wrapT),w.push(N.wrapR||0),w.push(N.magFilter),w.push(N.minFilter),w.push(N.anisotropy),w.push(N.internalFormat),w.push(N.format),w.push(N.type),w.push(N.generateMipmaps),w.push(N.premultiplyAlpha),w.push(N.flipY),w.push(N.unpackAlignment),w.push(N.colorSpace),w.join()}function he(N,w){const q=n.get(N);if(N.isVideoTexture&&xe(N),N.isRenderTargetTexture===!1&&N.isExternalTexture!==!0&&N.version>0&&q.__version!==N.version){const re=N.image;if(re===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(re.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ie(q,N,w);return}}else N.isExternalTexture&&(q.__webglTexture=N.sourceTexture?N.sourceTexture:null);t.bindTexture(i.TEXTURE_2D,q.__webglTexture,i.TEXTURE0+w)}function Q(N,w){const q=n.get(N);if(N.isRenderTargetTexture===!1&&N.version>0&&q.__version!==N.version){ie(q,N,w);return}t.bindTexture(i.TEXTURE_2D_ARRAY,q.__webglTexture,i.TEXTURE0+w)}function de(N,w){const q=n.get(N);if(N.isRenderTargetTexture===!1&&N.version>0&&q.__version!==N.version){ie(q,N,w);return}t.bindTexture(i.TEXTURE_3D,q.__webglTexture,i.TEXTURE0+w)}function ne(N,w){const q=n.get(N);if(N.version>0&&q.__version!==N.version){ce(q,N,w);return}t.bindTexture(i.TEXTURE_CUBE_MAP,q.__webglTexture,i.TEXTURE0+w)}const ue={[Qi]:i.REPEAT,[si]:i.CLAMP_TO_EDGE,[Cs]:i.MIRRORED_REPEAT},Te={[Yt]:i.NEAREST,[hu]:i.NEAREST_MIPMAP_NEAREST,[Hr]:i.NEAREST_MIPMAP_LINEAR,[ln]:i.LINEAR,[Ps]:i.LINEAR_MIPMAP_NEAREST,[Wn]:i.LINEAR_MIPMAP_LINEAR},ke={[rm]:i.NEVER,[um]:i.ALWAYS,[sm]:i.LESS,[Tu]:i.LEQUAL,[am]:i.EQUAL,[cm]:i.GEQUAL,[om]:i.GREATER,[lm]:i.NOTEQUAL};function O(N,w){if(w.type===_n&&e.has("OES_texture_float_linear")===!1&&(w.magFilter===ln||w.magFilter===Ps||w.magFilter===Hr||w.magFilter===Wn||w.minFilter===ln||w.minFilter===Ps||w.minFilter===Hr||w.minFilter===Wn)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),i.texParameteri(N,i.TEXTURE_WRAP_S,ue[w.wrapS]),i.texParameteri(N,i.TEXTURE_WRAP_T,ue[w.wrapT]),(N===i.TEXTURE_3D||N===i.TEXTURE_2D_ARRAY)&&i.texParameteri(N,i.TEXTURE_WRAP_R,ue[w.wrapR]),i.texParameteri(N,i.TEXTURE_MAG_FILTER,Te[w.magFilter]),i.texParameteri(N,i.TEXTURE_MIN_FILTER,Te[w.minFilter]),w.compareFunction&&(i.texParameteri(N,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(N,i.TEXTURE_COMPARE_FUNC,ke[w.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(w.magFilter===Yt||w.minFilter!==Hr&&w.minFilter!==Wn||w.type===_n&&e.has("OES_texture_float_linear")===!1)return;if(w.anisotropy>1||n.get(w).__currentAnisotropy){const q=e.get("EXT_texture_filter_anisotropic");i.texParameterf(N,q.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,r.getMaxAnisotropy())),n.get(w).__currentAnisotropy=w.anisotropy}}}function H(N,w){let q=!1;N.__webglInit===void 0&&(N.__webglInit=!0,w.addEventListener("dispose",R));const re=w.source;let pe=f.get(re);pe===void 0&&(pe={},f.set(re,pe));const ae=se(w);if(ae!==N.__cacheKey){pe[ae]===void 0&&(pe[ae]={texture:i.createTexture(),usedTimes:0},a.memory.textures++,q=!0),pe[ae].usedTimes++;const Ve=pe[N.__cacheKey];Ve!==void 0&&(pe[N.__cacheKey].usedTimes--,Ve.usedTimes===0&&C(w)),N.__cacheKey=ae,N.__webglTexture=pe[ae].texture}return q}function we(N,w,q){return Math.floor(Math.floor(N/q)/w)}function Be(N,w,q,re){const ae=N.updateRanges;if(ae.length===0)t.texSubImage2D(i.TEXTURE_2D,0,0,0,w.width,w.height,q,re,w.data);else{ae.sort((Me,Re)=>Me.start-Re.start);let Ve=0;for(let Me=1;Me<ae.length;Me++){const Re=ae[Ve],je=ae[Me],Oe=Re.start+Re.count,Ce=we(je.start,w.width,4),A=we(Re.start,w.width,4);je.start<=Oe+1&&Ce===A&&we(je.start+je.count-1,w.width,4)===Ce?Re.count=Math.max(Re.count,je.start+je.count-Re.start):(++Ve,ae[Ve]=je)}ae.length=Ve+1;const Ae=i.getParameter(i.UNPACK_ROW_LENGTH),oe=i.getParameter(i.UNPACK_SKIP_PIXELS),We=i.getParameter(i.UNPACK_SKIP_ROWS);i.pixelStorei(i.UNPACK_ROW_LENGTH,w.width);for(let Me=0,Re=ae.length;Me<Re;Me++){const je=ae[Me],Oe=Math.floor(je.start/4),Ce=Math.ceil(je.count/4),A=Oe%w.width,x=Math.floor(Oe/w.width),L=Ce,p=1;i.pixelStorei(i.UNPACK_SKIP_PIXELS,A),i.pixelStorei(i.UNPACK_SKIP_ROWS,x),t.texSubImage2D(i.TEXTURE_2D,0,A,x,L,p,q,re,w.data)}N.clearUpdateRanges(),i.pixelStorei(i.UNPACK_ROW_LENGTH,Ae),i.pixelStorei(i.UNPACK_SKIP_PIXELS,oe),i.pixelStorei(i.UNPACK_SKIP_ROWS,We)}}function ie(N,w,q){let re=i.TEXTURE_2D;(w.isDataArrayTexture||w.isCompressedArrayTexture)&&(re=i.TEXTURE_2D_ARRAY),w.isData3DTexture&&(re=i.TEXTURE_3D);const pe=H(N,w),ae=w.source;t.bindTexture(re,N.__webglTexture,i.TEXTURE0+q);const Ve=n.get(ae);if(ae.version!==Ve.__version||pe===!0){t.activeTexture(i.TEXTURE0+q);const Ae=lt.getPrimaries(lt.workingColorSpace),oe=w.colorSpace===ai?null:lt.getPrimaries(w.colorSpace),We=w.colorSpace===ai||Ae===oe?i.NONE:i.BROWSER_DEFAULT_WEBGL;i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,w.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,w.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,w.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,We);let Me=b(w.image,!1,r.maxTextureSize);Me=Xe(w,Me);const Re=s.convert(w.format,w.colorSpace),je=s.convert(w.type);let Oe=y(w.internalFormat,Re,je,w.colorSpace,w.isVideoTexture);O(re,w);let Ce;const A=w.mipmaps,x=w.isVideoTexture!==!0,L=Ve.__version===void 0||pe===!0,p=ae.dataReady,v=T(w,Me);if(w.isDepthTexture)Oe=M(w.format===$r,w.type),L&&(x?t.texStorage2D(i.TEXTURE_2D,1,Oe,Me.width,Me.height):t.texImage2D(i.TEXTURE_2D,0,Oe,Me.width,Me.height,0,Re,je,null));else if(w.isDataTexture)if(A.length>0){x&&L&&t.texStorage2D(i.TEXTURE_2D,v,Oe,A[0].width,A[0].height);for(let E=0,I=A.length;E<I;E++)Ce=A[E],x?p&&t.texSubImage2D(i.TEXTURE_2D,E,0,0,Ce.width,Ce.height,Re,je,Ce.data):t.texImage2D(i.TEXTURE_2D,E,Oe,Ce.width,Ce.height,0,Re,je,Ce.data);w.generateMipmaps=!1}else x?(L&&t.texStorage2D(i.TEXTURE_2D,v,Oe,Me.width,Me.height),p&&Be(w,Me,Re,je)):t.texImage2D(i.TEXTURE_2D,0,Oe,Me.width,Me.height,0,Re,je,Me.data);else if(w.isCompressedTexture)if(w.isCompressedArrayTexture){x&&L&&t.texStorage3D(i.TEXTURE_2D_ARRAY,v,Oe,A[0].width,A[0].height,Me.depth);for(let E=0,I=A.length;E<I;E++)if(Ce=A[E],w.format!==fn)if(Re!==null)if(x){if(p)if(w.layerUpdates.size>0){const F=Ph(Ce.width,Ce.height,w.format,w.type);for(const X of w.layerUpdates){const me=Ce.data.subarray(X*F/Ce.data.BYTES_PER_ELEMENT,(X+1)*F/Ce.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,E,0,0,X,Ce.width,Ce.height,1,Re,me)}w.clearLayerUpdates()}else t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,E,0,0,0,Ce.width,Ce.height,Me.depth,Re,Ce.data)}else t.compressedTexImage3D(i.TEXTURE_2D_ARRAY,E,Oe,Ce.width,Ce.height,Me.depth,0,Ce.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else x?p&&t.texSubImage3D(i.TEXTURE_2D_ARRAY,E,0,0,0,Ce.width,Ce.height,Me.depth,Re,je,Ce.data):t.texImage3D(i.TEXTURE_2D_ARRAY,E,Oe,Ce.width,Ce.height,Me.depth,0,Re,je,Ce.data)}else{x&&L&&t.texStorage2D(i.TEXTURE_2D,v,Oe,A[0].width,A[0].height);for(let E=0,I=A.length;E<I;E++)Ce=A[E],w.format!==fn?Re!==null?x?p&&t.compressedTexSubImage2D(i.TEXTURE_2D,E,0,0,Ce.width,Ce.height,Re,Ce.data):t.compressedTexImage2D(i.TEXTURE_2D,E,Oe,Ce.width,Ce.height,0,Ce.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):x?p&&t.texSubImage2D(i.TEXTURE_2D,E,0,0,Ce.width,Ce.height,Re,je,Ce.data):t.texImage2D(i.TEXTURE_2D,E,Oe,Ce.width,Ce.height,0,Re,je,Ce.data)}else if(w.isDataArrayTexture)if(x){if(L&&t.texStorage3D(i.TEXTURE_2D_ARRAY,v,Oe,Me.width,Me.height,Me.depth),p)if(w.layerUpdates.size>0){const E=Ph(Me.width,Me.height,w.format,w.type);for(const I of w.layerUpdates){const F=Me.data.subarray(I*E/Me.data.BYTES_PER_ELEMENT,(I+1)*E/Me.data.BYTES_PER_ELEMENT);t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,I,Me.width,Me.height,1,Re,je,F)}w.clearLayerUpdates()}else t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,0,Me.width,Me.height,Me.depth,Re,je,Me.data)}else t.texImage3D(i.TEXTURE_2D_ARRAY,0,Oe,Me.width,Me.height,Me.depth,0,Re,je,Me.data);else if(w.isData3DTexture)x?(L&&t.texStorage3D(i.TEXTURE_3D,v,Oe,Me.width,Me.height,Me.depth),p&&t.texSubImage3D(i.TEXTURE_3D,0,0,0,0,Me.width,Me.height,Me.depth,Re,je,Me.data)):t.texImage3D(i.TEXTURE_3D,0,Oe,Me.width,Me.height,Me.depth,0,Re,je,Me.data);else if(w.isFramebufferTexture){if(L)if(x)t.texStorage2D(i.TEXTURE_2D,v,Oe,Me.width,Me.height);else{let E=Me.width,I=Me.height;for(let F=0;F<v;F++)t.texImage2D(i.TEXTURE_2D,F,Oe,E,I,0,Re,je,null),E>>=1,I>>=1}}else if(A.length>0){if(x&&L){const E=De(A[0]);t.texStorage2D(i.TEXTURE_2D,v,Oe,E.width,E.height)}for(let E=0,I=A.length;E<I;E++)Ce=A[E],x?p&&t.texSubImage2D(i.TEXTURE_2D,E,0,0,Re,je,Ce):t.texImage2D(i.TEXTURE_2D,E,Oe,Re,je,Ce);w.generateMipmaps=!1}else if(x){if(L){const E=De(Me);t.texStorage2D(i.TEXTURE_2D,v,Oe,E.width,E.height)}p&&t.texSubImage2D(i.TEXTURE_2D,0,0,0,Re,je,Me)}else t.texImage2D(i.TEXTURE_2D,0,Oe,Re,je,Me);g(w)&&m(re),Ve.__version=ae.version,w.onUpdate&&w.onUpdate(w)}N.__version=w.version}function ce(N,w,q){if(w.image.length!==6)return;const re=H(N,w),pe=w.source;t.bindTexture(i.TEXTURE_CUBE_MAP,N.__webglTexture,i.TEXTURE0+q);const ae=n.get(pe);if(pe.version!==ae.__version||re===!0){t.activeTexture(i.TEXTURE0+q);const Ve=lt.getPrimaries(lt.workingColorSpace),Ae=w.colorSpace===ai?null:lt.getPrimaries(w.colorSpace),oe=w.colorSpace===ai||Ve===Ae?i.NONE:i.BROWSER_DEFAULT_WEBGL;i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,w.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,w.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,w.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,oe);const We=w.isCompressedTexture||w.image[0].isCompressedTexture,Me=w.image[0]&&w.image[0].isDataTexture,Re=[];for(let I=0;I<6;I++)!We&&!Me?Re[I]=b(w.image[I],!0,r.maxCubemapSize):Re[I]=Me?w.image[I].image:w.image[I],Re[I]=Xe(w,Re[I]);const je=Re[0],Oe=s.convert(w.format,w.colorSpace),Ce=s.convert(w.type),A=y(w.internalFormat,Oe,Ce,w.colorSpace),x=w.isVideoTexture!==!0,L=ae.__version===void 0||re===!0,p=pe.dataReady;let v=T(w,je);O(i.TEXTURE_CUBE_MAP,w);let E;if(We){x&&L&&t.texStorage2D(i.TEXTURE_CUBE_MAP,v,A,je.width,je.height);for(let I=0;I<6;I++){E=Re[I].mipmaps;for(let F=0;F<E.length;F++){const X=E[F];w.format!==fn?Oe!==null?x?p&&t.compressedTexSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F,0,0,X.width,X.height,Oe,X.data):t.compressedTexImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F,A,X.width,X.height,0,X.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F,0,0,X.width,X.height,Oe,Ce,X.data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F,A,X.width,X.height,0,Oe,Ce,X.data)}}}else{if(E=w.mipmaps,x&&L){E.length>0&&v++;const I=De(Re[0]);t.texStorage2D(i.TEXTURE_CUBE_MAP,v,A,I.width,I.height)}for(let I=0;I<6;I++)if(Me){x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,0,0,0,Re[I].width,Re[I].height,Oe,Ce,Re[I].data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,0,A,Re[I].width,Re[I].height,0,Oe,Ce,Re[I].data);for(let F=0;F<E.length;F++){const me=E[F].image[I].image;x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F+1,0,0,me.width,me.height,Oe,Ce,me.data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F+1,A,me.width,me.height,0,Oe,Ce,me.data)}}else{x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,0,0,0,Oe,Ce,Re[I]):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,0,A,Oe,Ce,Re[I]);for(let F=0;F<E.length;F++){const X=E[F];x?p&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F+1,0,0,Oe,Ce,X.image[I]):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+I,F+1,A,Oe,Ce,X.image[I])}}}g(w)&&m(i.TEXTURE_CUBE_MAP),ae.__version=pe.version,w.onUpdate&&w.onUpdate(w)}N.__version=w.version}function z(N,w,q,re,pe,ae){const Ve=s.convert(q.format,q.colorSpace),Ae=s.convert(q.type),oe=y(q.internalFormat,Ve,Ae,q.colorSpace),We=n.get(w),Me=n.get(q);if(Me.__renderTarget=w,!We.__hasExternalTextures){const Re=Math.max(1,w.width>>ae),je=Math.max(1,w.height>>ae);pe===i.TEXTURE_3D||pe===i.TEXTURE_2D_ARRAY?t.texImage3D(pe,ae,oe,Re,je,w.depth,0,Ve,Ae,null):t.texImage2D(pe,ae,oe,Re,je,0,Ve,Ae,null)}t.bindFramebuffer(i.FRAMEBUFFER,N),_e(w)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,re,pe,Me.__webglTexture,0,ze(w)):(pe===i.TEXTURE_2D||pe>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&pe<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,re,pe,Me.__webglTexture,ae),t.bindFramebuffer(i.FRAMEBUFFER,null)}function j(N,w,q){if(i.bindRenderbuffer(i.RENDERBUFFER,N),w.depthBuffer){const re=w.depthTexture,pe=re&&re.isDepthTexture?re.type:null,ae=M(w.stencilBuffer,pe),Ve=w.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,Ae=ze(w);_e(w)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,Ae,ae,w.width,w.height):q?i.renderbufferStorageMultisample(i.RENDERBUFFER,Ae,ae,w.width,w.height):i.renderbufferStorage(i.RENDERBUFFER,ae,w.width,w.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,Ve,i.RENDERBUFFER,N)}else{const re=w.textures;for(let pe=0;pe<re.length;pe++){const ae=re[pe],Ve=s.convert(ae.format,ae.colorSpace),Ae=s.convert(ae.type),oe=y(ae.internalFormat,Ve,Ae,ae.colorSpace),We=ze(w);q&&_e(w)===!1?i.renderbufferStorageMultisample(i.RENDERBUFFER,We,oe,w.width,w.height):_e(w)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,We,oe,w.width,w.height):i.renderbufferStorage(i.RENDERBUFFER,oe,w.width,w.height)}}i.bindRenderbuffer(i.RENDERBUFFER,null)}function W(N,w){if(w&&w.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(i.FRAMEBUFFER,N),!(w.depthTexture&&w.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const re=n.get(w.depthTexture);re.__renderTarget=w,(!re.__webglTexture||w.depthTexture.image.width!==w.width||w.depthTexture.image.height!==w.height)&&(w.depthTexture.image.width=w.width,w.depthTexture.image.height=w.height,w.depthTexture.needsUpdate=!0),he(w.depthTexture,0);const pe=re.__webglTexture,ae=ze(w);if(w.depthTexture.format===Xr)_e(w)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,pe,0,ae):i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_ATTACHMENT,i.TEXTURE_2D,pe,0);else if(w.depthTexture.format===$r)_e(w)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.TEXTURE_2D,pe,0,ae):i.framebufferTexture2D(i.FRAMEBUFFER,i.DEPTH_STENCIL_ATTACHMENT,i.TEXTURE_2D,pe,0);else throw new Error("Unknown depthTexture format")}function le(N){const w=n.get(N),q=N.isWebGLCubeRenderTarget===!0;if(w.__boundDepthTexture!==N.depthTexture){const re=N.depthTexture;if(w.__depthDisposeCallback&&w.__depthDisposeCallback(),re){const pe=()=>{delete w.__boundDepthTexture,delete w.__depthDisposeCallback,re.removeEventListener("dispose",pe)};re.addEventListener("dispose",pe),w.__depthDisposeCallback=pe}w.__boundDepthTexture=re}if(N.depthTexture&&!w.__autoAllocateDepthBuffer){if(q)throw new Error("target.depthTexture not supported in Cube render targets");const re=N.texture.mipmaps;re&&re.length>0?W(w.__webglFramebuffer[0],N):W(w.__webglFramebuffer,N)}else if(q){w.__webglDepthbuffer=[];for(let re=0;re<6;re++)if(t.bindFramebuffer(i.FRAMEBUFFER,w.__webglFramebuffer[re]),w.__webglDepthbuffer[re]===void 0)w.__webglDepthbuffer[re]=i.createRenderbuffer(),j(w.__webglDepthbuffer[re],N,!1);else{const pe=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,ae=w.__webglDepthbuffer[re];i.bindRenderbuffer(i.RENDERBUFFER,ae),i.framebufferRenderbuffer(i.FRAMEBUFFER,pe,i.RENDERBUFFER,ae)}}else{const re=N.texture.mipmaps;if(re&&re.length>0?t.bindFramebuffer(i.FRAMEBUFFER,w.__webglFramebuffer[0]):t.bindFramebuffer(i.FRAMEBUFFER,w.__webglFramebuffer),w.__webglDepthbuffer===void 0)w.__webglDepthbuffer=i.createRenderbuffer(),j(w.__webglDepthbuffer,N,!1);else{const pe=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,ae=w.__webglDepthbuffer;i.bindRenderbuffer(i.RENDERBUFFER,ae),i.framebufferRenderbuffer(i.FRAMEBUFFER,pe,i.RENDERBUFFER,ae)}}t.bindFramebuffer(i.FRAMEBUFFER,null)}function be(N,w,q){const re=n.get(N);w!==void 0&&z(re.__webglFramebuffer,N,N.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,0),q!==void 0&&le(N)}function U(N){const w=N.texture,q=n.get(N),re=n.get(w);N.addEventListener("dispose",k);const pe=N.textures,ae=N.isWebGLCubeRenderTarget===!0,Ve=pe.length>1;if(Ve||(re.__webglTexture===void 0&&(re.__webglTexture=i.createTexture()),re.__version=w.version,a.memory.textures++),ae){q.__webglFramebuffer=[];for(let Ae=0;Ae<6;Ae++)if(w.mipmaps&&w.mipmaps.length>0){q.__webglFramebuffer[Ae]=[];for(let oe=0;oe<w.mipmaps.length;oe++)q.__webglFramebuffer[Ae][oe]=i.createFramebuffer()}else q.__webglFramebuffer[Ae]=i.createFramebuffer()}else{if(w.mipmaps&&w.mipmaps.length>0){q.__webglFramebuffer=[];for(let Ae=0;Ae<w.mipmaps.length;Ae++)q.__webglFramebuffer[Ae]=i.createFramebuffer()}else q.__webglFramebuffer=i.createFramebuffer();if(Ve)for(let Ae=0,oe=pe.length;Ae<oe;Ae++){const We=n.get(pe[Ae]);We.__webglTexture===void 0&&(We.__webglTexture=i.createTexture(),a.memory.textures++)}if(N.samples>0&&_e(N)===!1){q.__webglMultisampledFramebuffer=i.createFramebuffer(),q.__webglColorRenderbuffer=[],t.bindFramebuffer(i.FRAMEBUFFER,q.__webglMultisampledFramebuffer);for(let Ae=0;Ae<pe.length;Ae++){const oe=pe[Ae];q.__webglColorRenderbuffer[Ae]=i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,q.__webglColorRenderbuffer[Ae]);const We=s.convert(oe.format,oe.colorSpace),Me=s.convert(oe.type),Re=y(oe.internalFormat,We,Me,oe.colorSpace,N.isXRRenderTarget===!0),je=ze(N);i.renderbufferStorageMultisample(i.RENDERBUFFER,je,Re,N.width,N.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+Ae,i.RENDERBUFFER,q.__webglColorRenderbuffer[Ae])}i.bindRenderbuffer(i.RENDERBUFFER,null),N.depthBuffer&&(q.__webglDepthRenderbuffer=i.createRenderbuffer(),j(q.__webglDepthRenderbuffer,N,!0)),t.bindFramebuffer(i.FRAMEBUFFER,null)}}if(ae){t.bindTexture(i.TEXTURE_CUBE_MAP,re.__webglTexture),O(i.TEXTURE_CUBE_MAP,w);for(let Ae=0;Ae<6;Ae++)if(w.mipmaps&&w.mipmaps.length>0)for(let oe=0;oe<w.mipmaps.length;oe++)z(q.__webglFramebuffer[Ae][oe],N,w,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+Ae,oe);else z(q.__webglFramebuffer[Ae],N,w,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+Ae,0);g(w)&&m(i.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(Ve){for(let Ae=0,oe=pe.length;Ae<oe;Ae++){const We=pe[Ae],Me=n.get(We);let Re=i.TEXTURE_2D;(N.isWebGL3DRenderTarget||N.isWebGLArrayRenderTarget)&&(Re=N.isWebGL3DRenderTarget?i.TEXTURE_3D:i.TEXTURE_2D_ARRAY),t.bindTexture(Re,Me.__webglTexture),O(Re,We),z(q.__webglFramebuffer,N,We,i.COLOR_ATTACHMENT0+Ae,Re,0),g(We)&&m(Re)}t.unbindTexture()}else{let Ae=i.TEXTURE_2D;if((N.isWebGL3DRenderTarget||N.isWebGLArrayRenderTarget)&&(Ae=N.isWebGL3DRenderTarget?i.TEXTURE_3D:i.TEXTURE_2D_ARRAY),t.bindTexture(Ae,re.__webglTexture),O(Ae,w),w.mipmaps&&w.mipmaps.length>0)for(let oe=0;oe<w.mipmaps.length;oe++)z(q.__webglFramebuffer[oe],N,w,i.COLOR_ATTACHMENT0,Ae,oe);else z(q.__webglFramebuffer,N,w,i.COLOR_ATTACHMENT0,Ae,0);g(w)&&m(Ae),t.unbindTexture()}N.depthBuffer&&le(N)}function ee(N){const w=N.textures;for(let q=0,re=w.length;q<re;q++){const pe=w[q];if(g(pe)){const ae=S(N),Ve=n.get(pe).__webglTexture;t.bindTexture(ae,Ve),m(ae),t.unbindTexture()}}}const fe=[],ye=[];function Se(N){if(N.samples>0){if(_e(N)===!1){const w=N.textures,q=N.width,re=N.height;let pe=i.COLOR_BUFFER_BIT;const ae=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,Ve=n.get(N),Ae=w.length>1;if(Ae)for(let We=0;We<w.length;We++)t.bindFramebuffer(i.FRAMEBUFFER,Ve.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+We,i.RENDERBUFFER,null),t.bindFramebuffer(i.FRAMEBUFFER,Ve.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+We,i.TEXTURE_2D,null,0);t.bindFramebuffer(i.READ_FRAMEBUFFER,Ve.__webglMultisampledFramebuffer);const oe=N.texture.mipmaps;oe&&oe.length>0?t.bindFramebuffer(i.DRAW_FRAMEBUFFER,Ve.__webglFramebuffer[0]):t.bindFramebuffer(i.DRAW_FRAMEBUFFER,Ve.__webglFramebuffer);for(let We=0;We<w.length;We++){if(N.resolveDepthBuffer&&(N.depthBuffer&&(pe|=i.DEPTH_BUFFER_BIT),N.stencilBuffer&&N.resolveStencilBuffer&&(pe|=i.STENCIL_BUFFER_BIT)),Ae){i.framebufferRenderbuffer(i.READ_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,Ve.__webglColorRenderbuffer[We]);const Me=n.get(w[We]).__webglTexture;i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,Me,0)}i.blitFramebuffer(0,0,q,re,0,0,q,re,pe,i.NEAREST),l===!0&&(fe.length=0,ye.length=0,fe.push(i.COLOR_ATTACHMENT0+We),N.depthBuffer&&N.resolveDepthBuffer===!1&&(fe.push(ae),ye.push(ae),i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,ye)),i.invalidateFramebuffer(i.READ_FRAMEBUFFER,fe))}if(t.bindFramebuffer(i.READ_FRAMEBUFFER,null),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),Ae)for(let We=0;We<w.length;We++){t.bindFramebuffer(i.FRAMEBUFFER,Ve.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+We,i.RENDERBUFFER,Ve.__webglColorRenderbuffer[We]);const Me=n.get(w[We]).__webglTexture;t.bindFramebuffer(i.FRAMEBUFFER,Ve.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+We,i.TEXTURE_2D,Me,0)}t.bindFramebuffer(i.DRAW_FRAMEBUFFER,Ve.__webglMultisampledFramebuffer)}else if(N.depthBuffer&&N.resolveDepthBuffer===!1&&l){const w=N.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT;i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,[w])}}}function ze(N){return Math.min(r.maxSamples,N.samples)}function _e(N){const w=n.get(N);return N.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&w.__useRenderToTexture!==!1}function xe(N){const w=a.render.frame;h.get(N)!==w&&(h.set(N,w),N.update())}function Xe(N,w){const q=N.colorSpace,re=N.format,pe=N.type;return N.isCompressedTexture===!0||N.isVideoTexture===!0||q!==Kt&&q!==ai&&(lt.getTransfer(q)===xt?(re!==fn||pe!==Cn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",q)),w}function De(N){return typeof HTMLImageElement<"u"&&N instanceof HTMLImageElement?(c.width=N.naturalWidth||N.width,c.height=N.naturalHeight||N.height):typeof VideoFrame<"u"&&N instanceof VideoFrame?(c.width=N.displayWidth,c.height=N.displayHeight):(c.width=N.width,c.height=N.height),c}this.allocateTextureUnit=J,this.resetTextureUnits=K,this.setTexture2D=he,this.setTexture2DArray=Q,this.setTexture3D=de,this.setTextureCube=ne,this.rebindTextures=be,this.setupRenderTarget=U,this.updateRenderTargetMipmap=ee,this.updateMultisampleRenderTarget=Se,this.setupDepthRenderbuffer=le,this.setupFrameBufferTexture=z,this.useMultisampledRTT=_e}function Hy(i,e){function t(n,r=ai){let s;const a=lt.getTransfer(r);if(n===Cn)return i.UNSIGNED_BYTE;if(n===ho)return i.UNSIGNED_SHORT_4_4_4_4;if(n===fo)return i.UNSIGNED_SHORT_5_5_5_1;if(n===pu)return i.UNSIGNED_INT_5_9_9_9_REV;if(n===mu)return i.UNSIGNED_INT_10F_11F_11F_REV;if(n===fu)return i.BYTE;if(n===du)return i.SHORT;if(n===Vr)return i.UNSIGNED_SHORT;if(n===uo)return i.INT;if(n===Mi)return i.UNSIGNED_INT;if(n===_n)return i.FLOAT;if(n===Gr)return i.HALF_FLOAT;if(n===gu)return i.ALPHA;if(n===_u)return i.RGB;if(n===fn)return i.RGBA;if(n===Xr)return i.DEPTH_COMPONENT;if(n===$r)return i.DEPTH_STENCIL;if(n===po)return i.RED;if(n===mo)return i.RED_INTEGER;if(n===vu)return i.RG;if(n===go)return i.RG_INTEGER;if(n===_o)return i.RGBA_INTEGER;if(n===Ds||n===Ls||n===Is||n===Us)if(a===xt)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(n===Ds)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===Ls)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Is)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Us)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(n===Ds)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===Ls)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Is)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Us)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===vo||n===yo||n===xo||n===bo)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(n===vo)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===yo)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===xo)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===bo)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===So||n===Mo||n===Eo)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(n===So||n===Mo)return a===xt?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(n===Eo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===To||n===wo||n===Ao||n===Ro||n===Co||n===Po||n===Do||n===Lo||n===Io||n===Uo||n===No||n===Oo||n===Fo||n===ko)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(n===To)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===wo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Ao)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Ro)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Co)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Po)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Do)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Lo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Io)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Uo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===No)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Oo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Fo)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===ko)return a===xt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Bo||n===zo||n===Ho)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(n===Bo)return a===xt?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===zo)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===Ho)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===Vo||n===Go||n===Wo||n===Xo)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(n===Vo)return s.COMPRESSED_RED_RGTC1_EXT;if(n===Go)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===Wo)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===Xo)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===Wr?i.UNSIGNED_INT_24_8:i[n]!==void 0?i[n]:null}return{convert:t}}const Vy=`
|
|
3850
3850
|
void main() {
|
|
3851
3851
|
|
|
3852
3852
|
gl_Position = vec4( position, 1.0 );
|
|
3853
3853
|
|
|
3854
|
-
}`,
|
|
3854
|
+
}`,Gy=`
|
|
3855
3855
|
uniform sampler2DArray depthColor;
|
|
3856
3856
|
uniform float depthWidth;
|
|
3857
3857
|
uniform float depthHeight;
|
|
@@ -3870,7 +3870,7 @@ void main() {
|
|
|
3870
3870
|
|
|
3871
3871
|
}
|
|
3872
3872
|
|
|
3873
|
-
}`;class Vy{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){const n=new vh(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=n}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new fi({vertexShader:zy,fragmentShader:Hy,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Jt(new la(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class Gy extends Ei{constructor(e,t){super();const n=this;let r=null,s=1,a=null,o="local-floor",l=1,c=null,h=null,u=null,f=null,d=null,_=null;const b=typeof XRWebGLBinding<"u",g=new Vy,m={},S=t.getContextAttributes();let y=null,M=null;const T=[],R=[],k=new Ye;let B=null;const C=new en;C.viewport=new pt;const D=new en;D.viewport=new pt;const V=[C,D],K=new Ig;let J=null,se=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ie){let ce=T[ie];return ce===void 0&&(ce=new _l,T[ie]=ce),ce.getTargetRaySpace()},this.getControllerGrip=function(ie){let ce=T[ie];return ce===void 0&&(ce=new _l,T[ie]=ce),ce.getGripSpace()},this.getHand=function(ie){let ce=T[ie];return ce===void 0&&(ce=new _l,T[ie]=ce),ce.getHandSpace()};function he(ie){const ce=R.indexOf(ie.inputSource);if(ce===-1)return;const z=T[ce];z!==void 0&&(z.update(ie.inputSource,ie.frame,c||a),z.dispatchEvent({type:ie.type,data:ie.inputSource}))}function Q(){r.removeEventListener("select",he),r.removeEventListener("selectstart",he),r.removeEventListener("selectend",he),r.removeEventListener("squeeze",he),r.removeEventListener("squeezestart",he),r.removeEventListener("squeezeend",he),r.removeEventListener("end",Q),r.removeEventListener("inputsourceschange",de);for(let ie=0;ie<T.length;ie++){const ce=R[ie];ce!==null&&(R[ie]=null,T[ie].disconnect(ce))}J=null,se=null,g.reset();for(const ie in m)delete m[ie];e.setRenderTarget(y),d=null,f=null,u=null,r=null,M=null,Be.stop(),n.isPresenting=!1,e.setPixelRatio(B),e.setSize(k.width,k.height,!1),n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(ie){s=ie,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(ie){o=ie,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return c||a},this.setReferenceSpace=function(ie){c=ie},this.getBaseLayer=function(){return f!==null?f:d},this.getBinding=function(){return u===null&&b&&(u=new XRWebGLBinding(r,t)),u},this.getFrame=function(){return _},this.getSession=function(){return r},this.setSession=async function(ie){if(r=ie,r!==null){if(y=e.getRenderTarget(),r.addEventListener("select",he),r.addEventListener("selectstart",he),r.addEventListener("selectend",he),r.addEventListener("squeeze",he),r.addEventListener("squeezestart",he),r.addEventListener("squeezeend",he),r.addEventListener("end",Q),r.addEventListener("inputsourceschange",de),S.xrCompatible!==!0&&await t.makeXRCompatible(),B=e.getPixelRatio(),e.getSize(k),b&&"createProjectionLayer"in XRWebGLBinding.prototype){let z=null,j=null,W=null;S.depth&&(W=S.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,z=S.stencil?$r:Xr,j=S.stencil?Wr:Mi);const le={colorFormat:t.RGBA8,depthFormat:W,scaleFactor:s};u=this.getBinding(),f=u.createProjectionLayer(le),r.updateRenderState({layers:[f]}),e.setPixelRatio(1),e.setSize(f.textureWidth,f.textureHeight,!1),M=new Ti(f.textureWidth,f.textureHeight,{format:fn,type:Cn,depthTexture:new _h(f.textureWidth,f.textureHeight,j,void 0,void 0,void 0,void 0,void 0,void 0,z),stencilBuffer:S.stencil,colorSpace:e.outputColorSpace,samples:S.antialias?4:0,resolveDepthBuffer:f.ignoreDepthValues===!1,resolveStencilBuffer:f.ignoreDepthValues===!1})}else{const z={antialias:S.antialias,alpha:!0,depth:S.depth,stencil:S.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(r,t,z),r.updateRenderState({baseLayer:d}),e.setPixelRatio(1),e.setSize(d.framebufferWidth,d.framebufferHeight,!1),M=new Ti(d.framebufferWidth,d.framebufferHeight,{format:fn,type:Cn,colorSpace:e.outputColorSpace,stencilBuffer:S.stencil,resolveDepthBuffer:d.ignoreDepthValues===!1,resolveStencilBuffer:d.ignoreDepthValues===!1})}M.isXRRenderTarget=!0,this.setFoveation(l),c=null,a=await r.requestReferenceSpace(o),Be.setContext(r),Be.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(r!==null)return r.environmentBlendMode},this.getDepthTexture=function(){return g.getDepthTexture()};function de(ie){for(let ce=0;ce<ie.removed.length;ce++){const z=ie.removed[ce],j=R.indexOf(z);j>=0&&(R[j]=null,T[j].disconnect(z))}for(let ce=0;ce<ie.added.length;ce++){const z=ie.added[ce];let j=R.indexOf(z);if(j===-1){for(let le=0;le<T.length;le++)if(le>=R.length){R.push(z),j=le;break}else if(R[le]===null){R[le]=z,j=le;break}if(j===-1)break}const W=T[j];W&&W.connect(z)}}const ne=new $,ue=new $;function Te(ie,ce,z){ne.setFromMatrixPosition(ce.matrixWorld),ue.setFromMatrixPosition(z.matrixWorld);const j=ne.distanceTo(ue),W=ce.projectionMatrix.elements,le=z.projectionMatrix.elements,be=W[14]/(W[10]-1),U=W[14]/(W[10]+1),ee=(W[9]+1)/W[5],fe=(W[9]-1)/W[5],ye=(W[8]-1)/W[0],Se=(le[8]+1)/le[0],ze=be*ye,_e=be*Se,xe=j/(-ye+Se),Xe=xe*-ye;if(ce.matrixWorld.decompose(ie.position,ie.quaternion,ie.scale),ie.translateX(Xe),ie.translateZ(xe),ie.matrixWorld.compose(ie.position,ie.quaternion,ie.scale),ie.matrixWorldInverse.copy(ie.matrixWorld).invert(),W[10]===-1)ie.projectionMatrix.copy(ce.projectionMatrix),ie.projectionMatrixInverse.copy(ce.projectionMatrixInverse);else{const De=be+xe,N=U+xe,w=ze-Xe,q=_e+(j-Xe),re=ee*U/N*De,pe=fe*U/N*De;ie.projectionMatrix.makePerspective(w,q,re,pe,De,N),ie.projectionMatrixInverse.copy(ie.projectionMatrix).invert()}}function ke(ie,ce){ce===null?ie.matrixWorld.copy(ie.matrix):ie.matrixWorld.multiplyMatrices(ce.matrixWorld,ie.matrix),ie.matrixWorldInverse.copy(ie.matrixWorld).invert()}this.updateCamera=function(ie){if(r===null)return;let ce=ie.near,z=ie.far;g.texture!==null&&(g.depthNear>0&&(ce=g.depthNear),g.depthFar>0&&(z=g.depthFar)),K.near=D.near=C.near=ce,K.far=D.far=C.far=z,(J!==K.near||se!==K.far)&&(r.updateRenderState({depthNear:K.near,depthFar:K.far}),J=K.near,se=K.far),K.layers.mask=ie.layers.mask|6,C.layers.mask=K.layers.mask&3,D.layers.mask=K.layers.mask&5;const j=ie.parent,W=K.cameras;ke(K,j);for(let le=0;le<W.length;le++)ke(W[le],j);W.length===2?Te(K,C,D):K.projectionMatrix.copy(C.projectionMatrix),O(ie,K,j)};function O(ie,ce,z){z===null?ie.matrix.copy(ce.matrixWorld):(ie.matrix.copy(z.matrixWorld),ie.matrix.invert(),ie.matrix.multiply(ce.matrixWorld)),ie.matrix.decompose(ie.position,ie.quaternion,ie.scale),ie.updateMatrixWorld(!0),ie.projectionMatrix.copy(ce.projectionMatrix),ie.projectionMatrixInverse.copy(ce.projectionMatrixInverse),ie.isPerspectiveCamera&&(ie.fov=tr*2*Math.atan(1/ie.projectionMatrix.elements[5]),ie.zoom=1)}this.getCamera=function(){return K},this.getFoveation=function(){if(!(f===null&&d===null))return l},this.setFoveation=function(ie){l=ie,f!==null&&(f.fixedFoveation=ie),d!==null&&d.fixedFoveation!==void 0&&(d.fixedFoveation=ie)},this.hasDepthSensing=function(){return g.texture!==null},this.getDepthSensingMesh=function(){return g.getMesh(K)},this.getCameraTexture=function(ie){return m[ie]};let H=null;function we(ie,ce){if(h=ce.getViewerPose(c||a),_=ce,h!==null){const z=h.views;d!==null&&(e.setRenderTargetFramebuffer(M,d.framebuffer),e.setRenderTarget(M));let j=!1;z.length!==K.cameras.length&&(K.cameras.length=0,j=!0);for(let U=0;U<z.length;U++){const ee=z[U];let fe=null;if(d!==null)fe=d.getViewport(ee);else{const Se=u.getViewSubImage(f,ee);fe=Se.viewport,U===0&&(e.setRenderTargetTextures(M,Se.colorTexture,Se.depthStencilTexture),e.setRenderTarget(M))}let ye=V[U];ye===void 0&&(ye=new en,ye.layers.enable(U),ye.viewport=new pt,V[U]=ye),ye.matrix.fromArray(ee.transform.matrix),ye.matrix.decompose(ye.position,ye.quaternion,ye.scale),ye.projectionMatrix.fromArray(ee.projectionMatrix),ye.projectionMatrixInverse.copy(ye.projectionMatrix).invert(),ye.viewport.set(fe.x,fe.y,fe.width,fe.height),U===0&&(K.matrix.copy(ye.matrix),K.matrix.decompose(K.position,K.quaternion,K.scale)),j===!0&&K.cameras.push(ye)}const W=r.enabledFeatures;if(W&&W.includes("depth-sensing")&&r.depthUsage=="gpu-optimized"&&b){u=n.getBinding();const U=u.getDepthInformation(z[0]);U&&U.isValid&&U.texture&&g.init(U,r.renderState)}if(W&&W.includes("camera-access")&&b){e.state.unbindTexture(),u=n.getBinding();for(let U=0;U<z.length;U++){const ee=z[U].camera;if(ee){let fe=m[ee];fe||(fe=new vh,m[ee]=fe);const ye=u.getCameraImage(ee);fe.sourceTexture=ye}}}}for(let z=0;z<T.length;z++){const j=R[z],W=T[z];j!==null&&W!==void 0&&W.update(j,ce,c||a)}H&&H(ie,ce),ce.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:ce}),_=null}const Be=new Ph;Be.setAnimationLoop(we),this.setAnimationLoop=function(ie){H=ie},this.dispose=function(){}}}const Ui=new Un,Wy=new et;function Xy(i,e){function t(g,m){g.matrixAutoUpdate===!0&&g.updateMatrix(),m.value.copy(g.matrix)}function n(g,m){m.color.getRGB(g.fogColor.value,qu(i)),m.isFog?(g.fogNear.value=m.near,g.fogFar.value=m.far):m.isFogExp2&&(g.fogDensity.value=m.density)}function r(g,m,S,y,M){m.isMeshBasicMaterial||m.isMeshLambertMaterial?s(g,m):m.isMeshToonMaterial?(s(g,m),u(g,m)):m.isMeshPhongMaterial?(s(g,m),h(g,m)):m.isMeshStandardMaterial?(s(g,m),f(g,m),m.isMeshPhysicalMaterial&&d(g,m,M)):m.isMeshMatcapMaterial?(s(g,m),_(g,m)):m.isMeshDepthMaterial?s(g,m):m.isMeshDistanceMaterial?(s(g,m),b(g,m)):m.isMeshNormalMaterial?s(g,m):m.isLineBasicMaterial?(a(g,m),m.isLineDashedMaterial&&o(g,m)):m.isPointsMaterial?l(g,m,S,y):m.isSpriteMaterial?c(g,m):m.isShadowMaterial?(g.color.value.copy(m.color),g.opacity.value=m.opacity):m.isShaderMaterial&&(m.uniformsNeedUpdate=!1)}function s(g,m){g.opacity.value=m.opacity,m.color&&g.diffuse.value.copy(m.color),m.emissive&&g.emissive.value.copy(m.emissive).multiplyScalar(m.emissiveIntensity),m.map&&(g.map.value=m.map,t(m.map,g.mapTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.bumpMap&&(g.bumpMap.value=m.bumpMap,t(m.bumpMap,g.bumpMapTransform),g.bumpScale.value=m.bumpScale,m.side===sn&&(g.bumpScale.value*=-1)),m.normalMap&&(g.normalMap.value=m.normalMap,t(m.normalMap,g.normalMapTransform),g.normalScale.value.copy(m.normalScale),m.side===sn&&g.normalScale.value.negate()),m.displacementMap&&(g.displacementMap.value=m.displacementMap,t(m.displacementMap,g.displacementMapTransform),g.displacementScale.value=m.displacementScale,g.displacementBias.value=m.displacementBias),m.emissiveMap&&(g.emissiveMap.value=m.emissiveMap,t(m.emissiveMap,g.emissiveMapTransform)),m.specularMap&&(g.specularMap.value=m.specularMap,t(m.specularMap,g.specularMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest);const S=e.get(m),y=S.envMap,M=S.envMapRotation;y&&(g.envMap.value=y,Ui.copy(M),Ui.x*=-1,Ui.y*=-1,Ui.z*=-1,y.isCubeTexture&&y.isRenderTargetTexture===!1&&(Ui.y*=-1,Ui.z*=-1),g.envMapRotation.value.setFromMatrix4(Wy.makeRotationFromEuler(Ui)),g.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=m.reflectivity,g.ior.value=m.ior,g.refractionRatio.value=m.refractionRatio),m.lightMap&&(g.lightMap.value=m.lightMap,g.lightMapIntensity.value=m.lightMapIntensity,t(m.lightMap,g.lightMapTransform)),m.aoMap&&(g.aoMap.value=m.aoMap,g.aoMapIntensity.value=m.aoMapIntensity,t(m.aoMap,g.aoMapTransform))}function a(g,m){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,m.map&&(g.map.value=m.map,t(m.map,g.mapTransform))}function o(g,m){g.dashSize.value=m.dashSize,g.totalSize.value=m.dashSize+m.gapSize,g.scale.value=m.scale}function l(g,m,S,y){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,g.size.value=m.size*S,g.scale.value=y*.5,m.map&&(g.map.value=m.map,t(m.map,g.uvTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest)}function c(g,m){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,g.rotation.value=m.rotation,m.map&&(g.map.value=m.map,t(m.map,g.mapTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest)}function h(g,m){g.specular.value.copy(m.specular),g.shininess.value=Math.max(m.shininess,1e-4)}function u(g,m){m.gradientMap&&(g.gradientMap.value=m.gradientMap)}function f(g,m){g.metalness.value=m.metalness,m.metalnessMap&&(g.metalnessMap.value=m.metalnessMap,t(m.metalnessMap,g.metalnessMapTransform)),g.roughness.value=m.roughness,m.roughnessMap&&(g.roughnessMap.value=m.roughnessMap,t(m.roughnessMap,g.roughnessMapTransform)),m.envMap&&(g.envMapIntensity.value=m.envMapIntensity)}function d(g,m,S){g.ior.value=m.ior,m.sheen>0&&(g.sheenColor.value.copy(m.sheenColor).multiplyScalar(m.sheen),g.sheenRoughness.value=m.sheenRoughness,m.sheenColorMap&&(g.sheenColorMap.value=m.sheenColorMap,t(m.sheenColorMap,g.sheenColorMapTransform)),m.sheenRoughnessMap&&(g.sheenRoughnessMap.value=m.sheenRoughnessMap,t(m.sheenRoughnessMap,g.sheenRoughnessMapTransform))),m.clearcoat>0&&(g.clearcoat.value=m.clearcoat,g.clearcoatRoughness.value=m.clearcoatRoughness,m.clearcoatMap&&(g.clearcoatMap.value=m.clearcoatMap,t(m.clearcoatMap,g.clearcoatMapTransform)),m.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=m.clearcoatRoughnessMap,t(m.clearcoatRoughnessMap,g.clearcoatRoughnessMapTransform)),m.clearcoatNormalMap&&(g.clearcoatNormalMap.value=m.clearcoatNormalMap,t(m.clearcoatNormalMap,g.clearcoatNormalMapTransform),g.clearcoatNormalScale.value.copy(m.clearcoatNormalScale),m.side===sn&&g.clearcoatNormalScale.value.negate())),m.dispersion>0&&(g.dispersion.value=m.dispersion),m.iridescence>0&&(g.iridescence.value=m.iridescence,g.iridescenceIOR.value=m.iridescenceIOR,g.iridescenceThicknessMinimum.value=m.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=m.iridescenceThicknessRange[1],m.iridescenceMap&&(g.iridescenceMap.value=m.iridescenceMap,t(m.iridescenceMap,g.iridescenceMapTransform)),m.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=m.iridescenceThicknessMap,t(m.iridescenceThicknessMap,g.iridescenceThicknessMapTransform))),m.transmission>0&&(g.transmission.value=m.transmission,g.transmissionSamplerMap.value=S.texture,g.transmissionSamplerSize.value.set(S.width,S.height),m.transmissionMap&&(g.transmissionMap.value=m.transmissionMap,t(m.transmissionMap,g.transmissionMapTransform)),g.thickness.value=m.thickness,m.thicknessMap&&(g.thicknessMap.value=m.thicknessMap,t(m.thicknessMap,g.thicknessMapTransform)),g.attenuationDistance.value=m.attenuationDistance,g.attenuationColor.value.copy(m.attenuationColor)),m.anisotropy>0&&(g.anisotropyVector.value.set(m.anisotropy*Math.cos(m.anisotropyRotation),m.anisotropy*Math.sin(m.anisotropyRotation)),m.anisotropyMap&&(g.anisotropyMap.value=m.anisotropyMap,t(m.anisotropyMap,g.anisotropyMapTransform))),g.specularIntensity.value=m.specularIntensity,g.specularColor.value.copy(m.specularColor),m.specularColorMap&&(g.specularColorMap.value=m.specularColorMap,t(m.specularColorMap,g.specularColorMapTransform)),m.specularIntensityMap&&(g.specularIntensityMap.value=m.specularIntensityMap,t(m.specularIntensityMap,g.specularIntensityMapTransform))}function _(g,m){m.matcap&&(g.matcap.value=m.matcap)}function b(g,m){const S=e.get(m).light;g.referencePosition.value.setFromMatrixPosition(S.matrixWorld),g.nearDistance.value=S.shadow.camera.near,g.farDistance.value=S.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:r}}function $y(i,e,t,n){let r={},s={},a=[];const o=i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS);function l(S,y){const M=y.program;n.uniformBlockBinding(S,M)}function c(S,y){let M=r[S.id];M===void 0&&(_(S),M=h(S),r[S.id]=M,S.addEventListener("dispose",g));const T=y.program;n.updateUBOMapping(S,T);const R=e.render.frame;s[S.id]!==R&&(f(S),s[S.id]=R)}function h(S){const y=u();S.__bindingPointIndex=y;const M=i.createBuffer(),T=S.__size,R=S.usage;return i.bindBuffer(i.UNIFORM_BUFFER,M),i.bufferData(i.UNIFORM_BUFFER,T,R),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,y,M),M}function u(){for(let S=0;S<o;S++)if(a.indexOf(S)===-1)return a.push(S),S;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function f(S){const y=r[S.id],M=S.uniforms,T=S.__cache;i.bindBuffer(i.UNIFORM_BUFFER,y);for(let R=0,k=M.length;R<k;R++){const B=Array.isArray(M[R])?M[R]:[M[R]];for(let C=0,D=B.length;C<D;C++){const V=B[C];if(d(V,R,C,T)===!0){const K=V.__offset,J=Array.isArray(V.value)?V.value:[V.value];let se=0;for(let he=0;he<J.length;he++){const Q=J[he],de=b(Q);typeof Q=="number"||typeof Q=="boolean"?(V.__data[0]=Q,i.bufferSubData(i.UNIFORM_BUFFER,K+se,V.__data)):Q.isMatrix3?(V.__data[0]=Q.elements[0],V.__data[1]=Q.elements[1],V.__data[2]=Q.elements[2],V.__data[3]=0,V.__data[4]=Q.elements[3],V.__data[5]=Q.elements[4],V.__data[6]=Q.elements[5],V.__data[7]=0,V.__data[8]=Q.elements[6],V.__data[9]=Q.elements[7],V.__data[10]=Q.elements[8],V.__data[11]=0):(Q.toArray(V.__data,se),se+=de.storage/Float32Array.BYTES_PER_ELEMENT)}i.bufferSubData(i.UNIFORM_BUFFER,K,V.__data)}}}i.bindBuffer(i.UNIFORM_BUFFER,null)}function d(S,y,M,T){const R=S.value,k=y+"_"+M;if(T[k]===void 0)return typeof R=="number"||typeof R=="boolean"?T[k]=R:T[k]=R.clone(),!0;{const B=T[k];if(typeof R=="number"||typeof R=="boolean"){if(B!==R)return T[k]=R,!0}else if(B.equals(R)===!1)return B.copy(R),!0}return!1}function _(S){const y=S.uniforms;let M=0;const T=16;for(let k=0,B=y.length;k<B;k++){const C=Array.isArray(y[k])?y[k]:[y[k]];for(let D=0,V=C.length;D<V;D++){const K=C[D],J=Array.isArray(K.value)?K.value:[K.value];for(let se=0,he=J.length;se<he;se++){const Q=J[se],de=b(Q),ne=M%T,ue=ne%de.boundary,Te=ne+ue;M+=ue,Te!==0&&T-Te<de.storage&&(M+=T-Te),K.__data=new Float32Array(de.storage/Float32Array.BYTES_PER_ELEMENT),K.__offset=M,M+=de.storage}}}const R=M%T;return R>0&&(M+=T-R),S.__size=M,S.__cache={},this}function b(S){const y={boundary:0,storage:0};return typeof S=="number"||typeof S=="boolean"?(y.boundary=4,y.storage=4):S.isVector2?(y.boundary=8,y.storage=8):S.isVector3||S.isColor?(y.boundary=16,y.storage=12):S.isVector4?(y.boundary=16,y.storage=16):S.isMatrix3?(y.boundary=48,y.storage=48):S.isMatrix4?(y.boundary=64,y.storage=64):S.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",S),y}function g(S){const y=S.target;y.removeEventListener("dispose",g);const M=a.indexOf(y.__bindingPointIndex);a.splice(M,1),i.deleteBuffer(r[y.id]),delete r[y.id],delete s[y.id]}function m(){for(const S in r)i.deleteBuffer(r[S]);a=[],r={},s={}}return{bind:l,update:c,dispose:m}}class jy{constructor(e={}){const{canvas:t=Tm(),context:n=null,depth:r=!0,stencil:s=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:u=!1,reversedDepthBuffer:f=!1}=e;this.isWebGLRenderer=!0;let d;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");d=n.getContextAttributes().alpha}else d=a;const _=new Uint32Array(4),b=new Int32Array(4);let g=null,m=null;const S=[],y=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=ri,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const M=this;let T=!1;this._outputColorSpace=Bt;let R=0,k=0,B=null,C=-1,D=null;const V=new pt,K=new pt;let J=null;const se=new Ze(0);let he=0,Q=t.width,de=t.height,ne=1,ue=null,Te=null;const ke=new pt(0,0,Q,de),O=new pt(0,0,Q,de);let H=!1;const we=new El;let Be=!1,ie=!1;const ce=new et,z=new $,j=new pt,W={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let le=!1;function be(){return B===null?ne:1}let U=n;function ee(P,G){return t.getContext(P,G)}try{const P={alpha:!0,depth:r,stencil:s,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:h,failIfMajorPerformanceCaveat:u};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${Za}`),t.addEventListener("webglcontextlost",p,!1),t.addEventListener("webglcontextrestored",v,!1),t.addEventListener("webglcontextcreationerror",E,!1),U===null){const G="webgl2";if(U=ee(G,P),U===null)throw ee(G)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(P){throw console.error("THREE.WebGLRenderer: "+P.message),P}let fe,ye,Se,ze,_e,xe,Xe,De,N,w,q,re,pe,ae,Ve,Ae,oe,We,Me,Re,je,Oe,Ce,A;function x(){fe=new i0(U),fe.init(),Oe=new By(U,fe),ye=new Kv(U,fe,e,Oe),Se=new Fy(U,fe),ye.reversedDepthBuffer&&f&&Se.buffers.depth.setReversed(!0),ze=new a0(U),_e=new Ey,xe=new ky(U,fe,Se,_e,ye,Oe,ze),Xe=new Jv(M),De=new n0(M),N=new $g(U),Ce=new qv(U,N),w=new r0(U,N,ze,Ce),q=new l0(U,w,N,ze),Me=new o0(U,ye,xe),Ae=new Zv(_e),re=new My(M,Xe,De,fe,ye,Ce,Ae),pe=new Xy(M,_e),ae=new wy,Ve=new Ly(fe),We=new jv(M,Xe,De,Se,q,d,l),oe=new Ny(M,q,ye),A=new $y(U,ze,ye,Se),Re=new Yv(U,fe,ze),je=new s0(U,fe,ze),ze.programs=re.programs,M.capabilities=ye,M.extensions=fe,M.properties=_e,M.renderLists=ae,M.shadowMap=oe,M.state=Se,M.info=ze}x();const L=new Gy(M,U);this.xr=L,this.getContext=function(){return U},this.getContextAttributes=function(){return U.getContextAttributes()},this.forceContextLoss=function(){const P=fe.get("WEBGL_lose_context");P&&P.loseContext()},this.forceContextRestore=function(){const P=fe.get("WEBGL_lose_context");P&&P.restoreContext()},this.getPixelRatio=function(){return ne},this.setPixelRatio=function(P){P!==void 0&&(ne=P,this.setSize(Q,de,!1))},this.getSize=function(P){return P.set(Q,de)},this.setSize=function(P,G,Z=!0){if(L.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}Q=P,de=G,t.width=Math.floor(P*ne),t.height=Math.floor(G*ne),Z===!0&&(t.style.width=P+"px",t.style.height=G+"px"),this.setViewport(0,0,P,G)},this.getDrawingBufferSize=function(P){return P.set(Q*ne,de*ne).floor()},this.setDrawingBufferSize=function(P,G,Z){Q=P,de=G,ne=Z,t.width=Math.floor(P*Z),t.height=Math.floor(G*Z),this.setViewport(0,0,P,G)},this.getCurrentViewport=function(P){return P.copy(V)},this.getViewport=function(P){return P.copy(ke)},this.setViewport=function(P,G,Z,te){P.isVector4?ke.set(P.x,P.y,P.z,P.w):ke.set(P,G,Z,te),Se.viewport(V.copy(ke).multiplyScalar(ne).round())},this.getScissor=function(P){return P.copy(O)},this.setScissor=function(P,G,Z,te){P.isVector4?O.set(P.x,P.y,P.z,P.w):O.set(P,G,Z,te),Se.scissor(K.copy(O).multiplyScalar(ne).round())},this.getScissorTest=function(){return H},this.setScissorTest=function(P){Se.setScissorTest(H=P)},this.setOpaqueSort=function(P){ue=P},this.setTransparentSort=function(P){Te=P},this.getClearColor=function(P){return P.copy(We.getClearColor())},this.setClearColor=function(){We.setClearColor(...arguments)},this.getClearAlpha=function(){return We.getClearAlpha()},this.setClearAlpha=function(){We.setClearAlpha(...arguments)},this.clear=function(P=!0,G=!0,Z=!0){let te=0;if(P){let Y=!1;if(B!==null){const Ee=B.texture.format;Y=Ee===go||Ee===mo||Ee===po}if(Y){const Ee=B.texture.type,Le=Ee===Cn||Ee===Mi||Ee===Vr||Ee===Wr||Ee===uo||Ee===ho,Fe=We.getClearColor(),ge=We.getClearAlpha(),Ue=Fe.r,He=Fe.g,Pe=Fe.b;Le?(_[0]=Ue,_[1]=He,_[2]=Pe,_[3]=ge,U.clearBufferuiv(U.COLOR,0,_)):(b[0]=Ue,b[1]=He,b[2]=Pe,b[3]=ge,U.clearBufferiv(U.COLOR,0,b))}else te|=U.COLOR_BUFFER_BIT}G&&(te|=U.DEPTH_BUFFER_BIT),Z&&(te|=U.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),U.clear(te)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",p,!1),t.removeEventListener("webglcontextrestored",v,!1),t.removeEventListener("webglcontextcreationerror",E,!1),We.dispose(),ae.dispose(),Ve.dispose(),_e.dispose(),Xe.dispose(),De.dispose(),q.dispose(),Ce.dispose(),A.dispose(),re.dispose(),L.dispose(),L.removeEventListener("sessionstart",Ne),L.removeEventListener("sessionend",ht),ot.stop()};function p(P){P.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),T=!0}function v(){console.log("THREE.WebGLRenderer: Context Restored."),T=!1;const P=ze.autoReset,G=oe.enabled,Z=oe.autoUpdate,te=oe.needsUpdate,Y=oe.type;x(),ze.autoReset=P,oe.enabled=G,oe.autoUpdate=Z,oe.needsUpdate=te,oe.type=Y}function E(P){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",P.statusMessage)}function I(P){const G=P.target;G.removeEventListener("dispose",I),F(G)}function F(P){X(P),_e.remove(P)}function X(P){const G=_e.get(P).programs;G!==void 0&&(G.forEach(function(Z){re.releaseProgram(Z)}),P.isShaderMaterial&&re.releaseShaderCache(P))}this.renderBufferDirect=function(P,G,Z,te,Y,Ee){G===null&&(G=W);const Le=Y.isMesh&&Y.matrixWorld.determinant()<0,Fe=ki(P,G,Z,te,Y);Se.setMaterial(te,Le);let ge=Z.index,Ue=1;if(te.wireframe===!0){if(ge=w.getWireframeAttribute(Z),ge===void 0)return;Ue=2}const He=Z.drawRange,Pe=Z.attributes.position;let qe=He.start*Ue,st=(He.start+He.count)*Ue;Ee!==null&&(qe=Math.max(qe,Ee.start*Ue),st=Math.min(st,(Ee.start+Ee.count)*Ue)),ge!==null?(qe=Math.max(qe,0),st=Math.min(st,ge.count)):Pe!=null&&(qe=Math.max(qe,0),st=Math.min(st,Pe.count));const at=st-qe;if(at<0||at===1/0)return;Ce.setup(Y,te,Fe,Z,ge);let ft,tt=Re;if(ge!==null&&(ft=N.get(ge),tt=je,tt.setIndex(ft)),Y.isMesh)te.wireframe===!0?(Se.setLineWidth(te.wireframeLinewidth*be()),tt.setMode(U.LINES)):tt.setMode(U.TRIANGLES);else if(Y.isLine){let Ge=te.linewidth;Ge===void 0&&(Ge=1),Se.setLineWidth(Ge*be()),Y.isLineSegments?tt.setMode(U.LINES):Y.isLineLoop?tt.setMode(U.LINE_LOOP):tt.setMode(U.LINE_STRIP)}else Y.isPoints?tt.setMode(U.POINTS):Y.isSprite&&tt.setMode(U.TRIANGLES);if(Y.isBatchedMesh)if(Y._multiDrawInstances!==null)Jr("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),tt.renderMultiDrawInstances(Y._multiDrawStarts,Y._multiDrawCounts,Y._multiDrawCount,Y._multiDrawInstances);else if(fe.get("WEBGL_multi_draw"))tt.renderMultiDraw(Y._multiDrawStarts,Y._multiDrawCounts,Y._multiDrawCount);else{const Ge=Y._multiDrawStarts,Je=Y._multiDrawCounts,Ke=Y._multiDrawCount,jt=ge?N.get(ge).bytesPerElement:1,Tt=_e.get(te).currentProgram.getUniforms();for(let Vt=0;Vt<Ke;Vt++)Tt.setValue(U,"_gl_DrawID",Vt),tt.render(Ge[Vt]/jt,Je[Vt])}else if(Y.isInstancedMesh)tt.renderInstances(qe,at,Y.count);else if(Z.isInstancedBufferGeometry){const Ge=Z._maxInstanceCount!==void 0?Z._maxInstanceCount:1/0,Je=Math.min(Z.instanceCount,Ge);tt.renderInstances(qe,at,Je)}else tt.render(qe,at)};function me(P,G,Z){P.transparent===!0&&P.side===Rn&&P.forceSinglePass===!1?(P.side=sn,P.needsUpdate=!0,Dt(P,G,Z),P.side=Gn,P.needsUpdate=!0,Dt(P,G,Z),P.side=Rn):Dt(P,G,Z)}this.compile=function(P,G,Z=null){Z===null&&(Z=P),m=Ve.get(Z),m.init(G),y.push(m),Z.traverseVisible(function(Y){Y.isLight&&Y.layers.test(G.layers)&&(m.pushLight(Y),Y.castShadow&&m.pushShadow(Y))}),P!==Z&&P.traverseVisible(function(Y){Y.isLight&&Y.layers.test(G.layers)&&(m.pushLight(Y),Y.castShadow&&m.pushShadow(Y))}),m.setupLights();const te=new Set;return P.traverse(function(Y){if(!(Y.isMesh||Y.isPoints||Y.isLine||Y.isSprite))return;const Ee=Y.material;if(Ee)if(Array.isArray(Ee))for(let Le=0;Le<Ee.length;Le++){const Fe=Ee[Le];me(Fe,Z,Y),te.add(Fe)}else me(Ee,Z,Y),te.add(Ee)}),m=y.pop(),te},this.compileAsync=function(P,G,Z=null){const te=this.compile(P,G,Z);return new Promise(Y=>{function Ee(){if(te.forEach(function(Le){_e.get(Le).currentProgram.isReady()&&te.delete(Le)}),te.size===0){Y(P);return}setTimeout(Ee,10)}fe.get("KHR_parallel_shader_compile")!==null?Ee():setTimeout(Ee,10)})};let ve=null;function $e(P){ve&&ve(P)}function Ne(){ot.stop()}function ht(){ot.start()}const ot=new Ph;ot.setAnimationLoop($e),typeof self<"u"&&ot.setContext(self),this.setAnimationLoop=function(P){ve=P,L.setAnimationLoop(P),P===null?ot.stop():ot.start()},L.addEventListener("sessionstart",Ne),L.addEventListener("sessionend",ht),this.render=function(P,G){if(G!==void 0&&G.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(T===!0)return;if(P.matrixWorldAutoUpdate===!0&&P.updateMatrixWorld(),G.parent===null&&G.matrixWorldAutoUpdate===!0&&G.updateMatrixWorld(),L.enabled===!0&&L.isPresenting===!0&&(L.cameraAutoUpdate===!0&&L.updateCamera(G),G=L.getCamera()),P.isScene===!0&&P.onBeforeRender(M,P,G,B),m=Ve.get(P,y.length),m.init(G),y.push(m),ce.multiplyMatrices(G.projectionMatrix,G.matrixWorldInverse),we.setFromProjectionMatrix(ce,Pn,G.reversedDepth),ie=this.localClippingEnabled,Be=Ae.init(this.clippingPlanes,ie),g=ae.get(P,S.length),g.init(),S.push(g),L.enabled===!0&&L.isPresenting===!0){const Ee=M.xr.getDepthSensingMesh();Ee!==null&>(Ee,G,-1/0,M.sortObjects)}gt(P,G,0,M.sortObjects),g.finish(),M.sortObjects===!0&&g.sort(ue,Te),le=L.enabled===!1||L.isPresenting===!1||L.hasDepthSensing()===!1,le&&We.addToRenderList(g,P),this.info.render.frame++,Be===!0&&Ae.beginShadows();const Z=m.state.shadowsArray;oe.render(Z,P,G),Be===!0&&Ae.endShadows(),this.info.autoReset===!0&&this.info.reset();const te=g.opaque,Y=g.transmissive;if(m.setupLights(),G.isArrayCamera){const Ee=G.cameras;if(Y.length>0)for(let Le=0,Fe=Ee.length;Le<Fe;Le++){const ge=Ee[Le];ct(te,Y,P,ge)}le&&We.render(P);for(let Le=0,Fe=Ee.length;Le<Fe;Le++){const ge=Ee[Le];Mt(g,P,ge,ge.viewport)}}else Y.length>0&&ct(te,Y,P,G),le&&We.render(P),Mt(g,P,G);B!==null&&k===0&&(xe.updateMultisampleRenderTarget(B),xe.updateRenderTargetMipmap(B)),P.isScene===!0&&P.onAfterRender(M,P,G),Ce.resetDefaultState(),C=-1,D=null,y.pop(),y.length>0?(m=y[y.length-1],Be===!0&&Ae.setGlobalState(M.clippingPlanes,m.state.camera)):m=null,S.pop(),S.length>0?g=S[S.length-1]:g=null};function gt(P,G,Z,te){if(P.visible===!1)return;if(P.layers.test(G.layers)){if(P.isGroup)Z=P.renderOrder;else if(P.isLOD)P.autoUpdate===!0&&P.update(G);else if(P.isLight)m.pushLight(P),P.castShadow&&m.pushShadow(P);else if(P.isSprite){if(!P.frustumCulled||we.intersectsSprite(P)){te&&j.setFromMatrixPosition(P.matrixWorld).applyMatrix4(ce);const Le=q.update(P),Fe=P.material;Fe.visible&&g.push(P,Le,Fe,Z,j.z,null)}}else if((P.isMesh||P.isLine||P.isPoints)&&(!P.frustumCulled||we.intersectsObject(P))){const Le=q.update(P),Fe=P.material;if(te&&(P.boundingSphere!==void 0?(P.boundingSphere===null&&P.computeBoundingSphere(),j.copy(P.boundingSphere.center)):(Le.boundingSphere===null&&Le.computeBoundingSphere(),j.copy(Le.boundingSphere.center)),j.applyMatrix4(P.matrixWorld).applyMatrix4(ce)),Array.isArray(Fe)){const ge=Le.groups;for(let Ue=0,He=ge.length;Ue<He;Ue++){const Pe=ge[Ue],qe=Fe[Pe.materialIndex];qe&&qe.visible&&g.push(P,Le,qe,Z,j.z,Pe)}}else Fe.visible&&g.push(P,Le,Fe,Z,j.z,null)}}const Ee=P.children;for(let Le=0,Fe=Ee.length;Le<Fe;Le++)gt(Ee[Le],G,Z,te)}function Mt(P,G,Z,te){const Y=P.opaque,Ee=P.transmissive,Le=P.transparent;m.setupLightsView(Z),Be===!0&&Ae.setGlobalState(M.clippingPlanes,Z),te&&Se.viewport(V.copy(te)),Y.length>0&&St(Y,G,Z),Ee.length>0&&St(Ee,G,Z),Le.length>0&&St(Le,G,Z),Se.buffers.depth.setTest(!0),Se.buffers.depth.setMask(!0),Se.buffers.color.setMask(!0),Se.setPolygonOffset(!1)}function ct(P,G,Z,te){if((Z.isScene===!0?Z.overrideMaterial:null)!==null)return;m.state.transmissionRenderTarget[te.id]===void 0&&(m.state.transmissionRenderTarget[te.id]=new Ti(1,1,{generateMipmaps:!0,type:fe.has("EXT_color_buffer_half_float")||fe.has("EXT_color_buffer_float")?Gr:Cn,minFilter:Wn,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:lt.workingColorSpace}));const Ee=m.state.transmissionRenderTarget[te.id],Le=te.viewport||V;Ee.setSize(Le.z*M.transmissionResolutionScale,Le.w*M.transmissionResolutionScale);const Fe=M.getRenderTarget(),ge=M.getActiveCubeFace(),Ue=M.getActiveMipmapLevel();M.setRenderTarget(Ee),M.getClearColor(se),he=M.getClearAlpha(),he<1&&M.setClearColor(16777215,.5),M.clear(),le&&We.render(Z);const He=M.toneMapping;M.toneMapping=ri;const Pe=te.viewport;if(te.viewport!==void 0&&(te.viewport=void 0),m.setupLightsView(te),Be===!0&&Ae.setGlobalState(M.clippingPlanes,te),St(P,Z,te),xe.updateMultisampleRenderTarget(Ee),xe.updateRenderTargetMipmap(Ee),fe.has("WEBGL_multisampled_render_to_texture")===!1){let qe=!1;for(let st=0,at=G.length;st<at;st++){const ft=G[st],tt=ft.object,Ge=ft.geometry,Je=ft.material,Ke=ft.group;if(Je.side===Rn&&tt.layers.test(te.layers)){const jt=Je.side;Je.side=sn,Je.needsUpdate=!0,nn(tt,Z,te,Ge,Je,Ke),Je.side=jt,Je.needsUpdate=!0,qe=!0}}qe===!0&&(xe.updateMultisampleRenderTarget(Ee),xe.updateRenderTargetMipmap(Ee))}M.setRenderTarget(Fe,ge,Ue),M.setClearColor(se,he),Pe!==void 0&&(te.viewport=Pe),M.toneMapping=He}function St(P,G,Z){const te=G.isScene===!0?G.overrideMaterial:null;for(let Y=0,Ee=P.length;Y<Ee;Y++){const Le=P[Y],Fe=Le.object,ge=Le.geometry,Ue=Le.group;let He=Le.material;He.allowOverride===!0&&te!==null&&(He=te),Fe.layers.test(Z.layers)&&nn(Fe,G,Z,ge,He,Ue)}}function nn(P,G,Z,te,Y,Ee){P.onBeforeRender(M,G,Z,te,Y,Ee),P.modelViewMatrix.multiplyMatrices(Z.matrixWorldInverse,P.matrixWorld),P.normalMatrix.getNormalMatrix(P.modelViewMatrix),Y.onBeforeRender(M,G,Z,te,P,Ee),Y.transparent===!0&&Y.side===Rn&&Y.forceSinglePass===!1?(Y.side=sn,Y.needsUpdate=!0,M.renderBufferDirect(Z,G,te,Y,P,Ee),Y.side=Gn,Y.needsUpdate=!0,M.renderBufferDirect(Z,G,te,Y,P,Ee),Y.side=Rn):M.renderBufferDirect(Z,G,te,Y,P,Ee),P.onAfterRender(M,G,Z,te,Y,Ee)}function Dt(P,G,Z){G.isScene!==!0&&(G=W);const te=_e.get(P),Y=m.state.lights,Ee=m.state.shadowsArray,Le=Y.state.version,Fe=re.getParameters(P,Y.state,Ee,G,Z),ge=re.getProgramCacheKey(Fe);let Ue=te.programs;te.environment=P.isMeshStandardMaterial?G.environment:null,te.fog=G.fog,te.envMap=(P.isMeshStandardMaterial?De:Xe).get(P.envMap||te.environment),te.envMapRotation=te.environment!==null&&P.envMap===null?G.environmentRotation:P.envMapRotation,Ue===void 0&&(P.addEventListener("dispose",I),Ue=new Map,te.programs=Ue);let He=Ue.get(ge);if(He!==void 0){if(te.currentProgram===He&&te.lightsStateVersion===Le)return Et(P,Fe),He}else Fe.uniforms=re.getUniforms(P),P.onBeforeCompile(Fe,M),He=re.acquireProgram(Fe,ge),Ue.set(ge,He),te.uniforms=Fe.uniforms;const Pe=te.uniforms;return(!P.isShaderMaterial&&!P.isRawShaderMaterial||P.clipping===!0)&&(Pe.clippingPlanes=Ae.uniform),Et(P,Fe),te.needsLights=vi(P),te.lightsStateVersion=Le,te.needsLights&&(Pe.ambientLightColor.value=Y.state.ambient,Pe.lightProbe.value=Y.state.probe,Pe.directionalLights.value=Y.state.directional,Pe.directionalLightShadows.value=Y.state.directionalShadow,Pe.spotLights.value=Y.state.spot,Pe.spotLightShadows.value=Y.state.spotShadow,Pe.rectAreaLights.value=Y.state.rectArea,Pe.ltc_1.value=Y.state.rectAreaLTC1,Pe.ltc_2.value=Y.state.rectAreaLTC2,Pe.pointLights.value=Y.state.point,Pe.pointLightShadows.value=Y.state.pointShadow,Pe.hemisphereLights.value=Y.state.hemi,Pe.directionalShadowMap.value=Y.state.directionalShadowMap,Pe.directionalShadowMatrix.value=Y.state.directionalShadowMatrix,Pe.spotShadowMap.value=Y.state.spotShadowMap,Pe.spotLightMatrix.value=Y.state.spotLightMatrix,Pe.spotLightMap.value=Y.state.spotLightMap,Pe.pointShadowMap.value=Y.state.pointShadowMap,Pe.pointShadowMatrix.value=Y.state.pointShadowMatrix),te.currentProgram=He,te.uniformsList=null,He}function hn(P){if(P.uniformsList===null){const G=P.currentProgram.getUniforms();P.uniformsList=ma.seqWithValue(G.seq,P.uniforms)}return P.uniformsList}function Et(P,G){const Z=_e.get(P);Z.outputColorSpace=G.outputColorSpace,Z.batching=G.batching,Z.batchingColor=G.batchingColor,Z.instancing=G.instancing,Z.instancingColor=G.instancingColor,Z.instancingMorph=G.instancingMorph,Z.skinning=G.skinning,Z.morphTargets=G.morphTargets,Z.morphNormals=G.morphNormals,Z.morphColors=G.morphColors,Z.morphTargetsCount=G.morphTargetsCount,Z.numClippingPlanes=G.numClippingPlanes,Z.numIntersection=G.numClipIntersection,Z.vertexAlphas=G.vertexAlphas,Z.vertexTangents=G.vertexTangents,Z.toneMapping=G.toneMapping}function ki(P,G,Z,te,Y){G.isScene!==!0&&(G=W),xe.resetTextureUnits();const Ee=G.fog,Le=te.isMeshStandardMaterial?G.environment:null,Fe=B===null?M.outputColorSpace:B.isXRRenderTarget===!0?B.texture.colorSpace:Kt,ge=(te.isMeshStandardMaterial?De:Xe).get(te.envMap||Le),Ue=te.vertexColors===!0&&!!Z.attributes.color&&Z.attributes.color.itemSize===4,He=!!Z.attributes.tangent&&(!!te.normalMap||te.anisotropy>0),Pe=!!Z.morphAttributes.position,qe=!!Z.morphAttributes.normal,st=!!Z.morphAttributes.color;let at=ri;te.toneMapped&&(B===null||B.isXRRenderTarget===!0)&&(at=M.toneMapping);const ft=Z.morphAttributes.position||Z.morphAttributes.normal||Z.morphAttributes.color,tt=ft!==void 0?ft.length:0,Ge=_e.get(te),Je=m.state.lights;if(Be===!0&&(ie===!0||P!==D)){const rn=P===D&&te.id===C;Ae.setState(te,P,rn)}let Ke=!1;te.version===Ge.__version?(Ge.needsLights&&Ge.lightsStateVersion!==Je.state.version||Ge.outputColorSpace!==Fe||Y.isBatchedMesh&&Ge.batching===!1||!Y.isBatchedMesh&&Ge.batching===!0||Y.isBatchedMesh&&Ge.batchingColor===!0&&Y.colorTexture===null||Y.isBatchedMesh&&Ge.batchingColor===!1&&Y.colorTexture!==null||Y.isInstancedMesh&&Ge.instancing===!1||!Y.isInstancedMesh&&Ge.instancing===!0||Y.isSkinnedMesh&&Ge.skinning===!1||!Y.isSkinnedMesh&&Ge.skinning===!0||Y.isInstancedMesh&&Ge.instancingColor===!0&&Y.instanceColor===null||Y.isInstancedMesh&&Ge.instancingColor===!1&&Y.instanceColor!==null||Y.isInstancedMesh&&Ge.instancingMorph===!0&&Y.morphTexture===null||Y.isInstancedMesh&&Ge.instancingMorph===!1&&Y.morphTexture!==null||Ge.envMap!==ge||te.fog===!0&&Ge.fog!==Ee||Ge.numClippingPlanes!==void 0&&(Ge.numClippingPlanes!==Ae.numPlanes||Ge.numIntersection!==Ae.numIntersection)||Ge.vertexAlphas!==Ue||Ge.vertexTangents!==He||Ge.morphTargets!==Pe||Ge.morphNormals!==qe||Ge.morphColors!==st||Ge.toneMapping!==at||Ge.morphTargetsCount!==tt)&&(Ke=!0):(Ke=!0,Ge.__version=te.version);let jt=Ge.currentProgram;Ke===!0&&(jt=Dt(te,G,Y));let Tt=!1,Vt=!1,wn=!1;const dt=jt.getUniforms(),Wt=Ge.uniforms;if(Se.useProgram(jt.program)&&(Tt=!0,Vt=!0,wn=!0),te.id!==C&&(C=te.id,Vt=!0),Tt||D!==P){Se.buffers.depth.getReversed()&&P.reversedDepth!==!0&&(P._reversedDepth=!0,P.updateProjectionMatrix()),dt.setValue(U,"projectionMatrix",P.projectionMatrix),dt.setValue(U,"viewMatrix",P.matrixWorldInverse);const on=dt.map.cameraPosition;on!==void 0&&on.setValue(U,z.setFromMatrixPosition(P.matrixWorld)),ye.logarithmicDepthBuffer&&dt.setValue(U,"logDepthBufFC",2/(Math.log(P.far+1)/Math.LN2)),(te.isMeshPhongMaterial||te.isMeshToonMaterial||te.isMeshLambertMaterial||te.isMeshBasicMaterial||te.isMeshStandardMaterial||te.isShaderMaterial)&&dt.setValue(U,"isOrthographic",P.isOrthographicCamera===!0),D!==P&&(D=P,Vt=!0,wn=!0)}if(Y.isSkinnedMesh){dt.setOptional(U,Y,"bindMatrix"),dt.setOptional(U,Y,"bindMatrixInverse");const rn=Y.skeleton;rn&&(rn.boneTexture===null&&rn.computeBoneTexture(),dt.setValue(U,"boneTexture",rn.boneTexture,xe))}Y.isBatchedMesh&&(dt.setOptional(U,Y,"batchingTexture"),dt.setValue(U,"batchingTexture",Y._matricesTexture,xe),dt.setOptional(U,Y,"batchingIdTexture"),dt.setValue(U,"batchingIdTexture",Y._indirectTexture,xe),dt.setOptional(U,Y,"batchingColorTexture"),Y._colorsTexture!==null&&dt.setValue(U,"batchingColorTexture",Y._colorsTexture,xe));const Ft=Z.morphAttributes;if((Ft.position!==void 0||Ft.normal!==void 0||Ft.color!==void 0)&&Me.update(Y,Z,jt),(Vt||Ge.receiveShadow!==Y.receiveShadow)&&(Ge.receiveShadow=Y.receiveShadow,dt.setValue(U,"receiveShadow",Y.receiveShadow)),te.isMeshGouraudMaterial&&te.envMap!==null&&(Wt.envMap.value=ge,Wt.flipEnvMap.value=ge.isCubeTexture&&ge.isRenderTargetTexture===!1?-1:1),te.isMeshStandardMaterial&&te.envMap===null&&G.environment!==null&&(Wt.envMapIntensity.value=G.environmentIntensity),Vt&&(dt.setValue(U,"toneMappingExposure",M.toneMappingExposure),Ge.needsLights&&Bn(Wt,wn),Ee&&te.fog===!0&&pe.refreshFogUniforms(Wt,Ee),pe.refreshMaterialUniforms(Wt,te,ne,de,m.state.transmissionRenderTarget[P.id]),ma.upload(U,hn(Ge),Wt,xe)),te.isShaderMaterial&&te.uniformsNeedUpdate===!0&&(ma.upload(U,hn(Ge),Wt,xe),te.uniformsNeedUpdate=!1),te.isSpriteMaterial&&dt.setValue(U,"center",Y.center),dt.setValue(U,"modelViewMatrix",Y.modelViewMatrix),dt.setValue(U,"normalMatrix",Y.normalMatrix),dt.setValue(U,"modelMatrix",Y.matrixWorld),te.isShaderMaterial||te.isRawShaderMaterial){const rn=te.uniformsGroups;for(let on=0,lc=rn.length;on<lc;on++){const Bi=rn[on];A.update(Bi,jt),A.bind(Bi,jt)}}return jt}function Bn(P,G){P.ambientLightColor.needsUpdate=G,P.lightProbe.needsUpdate=G,P.directionalLights.needsUpdate=G,P.directionalLightShadows.needsUpdate=G,P.pointLights.needsUpdate=G,P.pointLightShadows.needsUpdate=G,P.spotLights.needsUpdate=G,P.spotLightShadows.needsUpdate=G,P.rectAreaLights.needsUpdate=G,P.hemisphereLights.needsUpdate=G}function vi(P){return P.isMeshLambertMaterial||P.isMeshToonMaterial||P.isMeshPhongMaterial||P.isMeshStandardMaterial||P.isShadowMaterial||P.isShaderMaterial&&P.lights===!0}this.getActiveCubeFace=function(){return R},this.getActiveMipmapLevel=function(){return k},this.getRenderTarget=function(){return B},this.setRenderTargetTextures=function(P,G,Z){const te=_e.get(P);te.__autoAllocateDepthBuffer=P.resolveDepthBuffer===!1,te.__autoAllocateDepthBuffer===!1&&(te.__useRenderToTexture=!1),_e.get(P.texture).__webglTexture=G,_e.get(P.depthTexture).__webglTexture=te.__autoAllocateDepthBuffer?void 0:Z,te.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(P,G){const Z=_e.get(P);Z.__webglFramebuffer=G,Z.__useDefaultFramebuffer=G===void 0};const sc=U.createFramebuffer();this.setRenderTarget=function(P,G=0,Z=0){B=P,R=G,k=Z;let te=!0,Y=null,Ee=!1,Le=!1;if(P){const ge=_e.get(P);if(ge.__useDefaultFramebuffer!==void 0)Se.bindFramebuffer(U.FRAMEBUFFER,null),te=!1;else if(ge.__webglFramebuffer===void 0)xe.setupRenderTarget(P);else if(ge.__hasExternalTextures)xe.rebindTextures(P,_e.get(P.texture).__webglTexture,_e.get(P.depthTexture).__webglTexture);else if(P.depthBuffer){const Pe=P.depthTexture;if(ge.__boundDepthTexture!==Pe){if(Pe!==null&&_e.has(Pe)&&(P.width!==Pe.image.width||P.height!==Pe.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");xe.setupDepthRenderbuffer(P)}}const Ue=P.texture;(Ue.isData3DTexture||Ue.isDataArrayTexture||Ue.isCompressedArrayTexture)&&(Le=!0);const He=_e.get(P).__webglFramebuffer;P.isWebGLCubeRenderTarget?(Array.isArray(He[G])?Y=He[G][Z]:Y=He[G],Ee=!0):P.samples>0&&xe.useMultisampledRTT(P)===!1?Y=_e.get(P).__webglMultisampledFramebuffer:Array.isArray(He)?Y=He[Z]:Y=He,V.copy(P.viewport),K.copy(P.scissor),J=P.scissorTest}else V.copy(ke).multiplyScalar(ne).floor(),K.copy(O).multiplyScalar(ne).floor(),J=H;if(Z!==0&&(Y=sc),Se.bindFramebuffer(U.FRAMEBUFFER,Y)&&te&&Se.drawBuffers(P,Y),Se.viewport(V),Se.scissor(K),Se.setScissorTest(J),Ee){const ge=_e.get(P.texture);U.framebufferTexture2D(U.FRAMEBUFFER,U.COLOR_ATTACHMENT0,U.TEXTURE_CUBE_MAP_POSITIVE_X+G,ge.__webglTexture,Z)}else if(Le){const ge=G;for(let Ue=0;Ue<P.textures.length;Ue++){const He=_e.get(P.textures[Ue]);U.framebufferTextureLayer(U.FRAMEBUFFER,U.COLOR_ATTACHMENT0+Ue,He.__webglTexture,Z,ge)}}else if(P!==null&&Z!==0){const ge=_e.get(P.texture);U.framebufferTexture2D(U.FRAMEBUFFER,U.COLOR_ATTACHMENT0,U.TEXTURE_2D,ge.__webglTexture,Z)}C=-1},this.readRenderTargetPixels=function(P,G,Z,te,Y,Ee,Le,Fe=0){if(!(P&&P.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ge=_e.get(P).__webglFramebuffer;if(P.isWebGLCubeRenderTarget&&Le!==void 0&&(ge=ge[Le]),ge){Se.bindFramebuffer(U.FRAMEBUFFER,ge);try{const Ue=P.textures[Fe],He=Ue.format,Pe=Ue.type;if(!ye.textureFormatReadable(He)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!ye.textureTypeReadable(Pe)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}G>=0&&G<=P.width-te&&Z>=0&&Z<=P.height-Y&&(P.textures.length>1&&U.readBuffer(U.COLOR_ATTACHMENT0+Fe),U.readPixels(G,Z,te,Y,Oe.convert(He),Oe.convert(Pe),Ee))}finally{const Ue=B!==null?_e.get(B).__webglFramebuffer:null;Se.bindFramebuffer(U.FRAMEBUFFER,Ue)}}},this.readRenderTargetPixelsAsync=async function(P,G,Z,te,Y,Ee,Le,Fe=0){if(!(P&&P.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let ge=_e.get(P).__webglFramebuffer;if(P.isWebGLCubeRenderTarget&&Le!==void 0&&(ge=ge[Le]),ge)if(G>=0&&G<=P.width-te&&Z>=0&&Z<=P.height-Y){Se.bindFramebuffer(U.FRAMEBUFFER,ge);const Ue=P.textures[Fe],He=Ue.format,Pe=Ue.type;if(!ye.textureFormatReadable(He))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!ye.textureTypeReadable(Pe))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const qe=U.createBuffer();U.bindBuffer(U.PIXEL_PACK_BUFFER,qe),U.bufferData(U.PIXEL_PACK_BUFFER,Ee.byteLength,U.STREAM_READ),P.textures.length>1&&U.readBuffer(U.COLOR_ATTACHMENT0+Fe),U.readPixels(G,Z,te,Y,Oe.convert(He),Oe.convert(Pe),0);const st=B!==null?_e.get(B).__webglFramebuffer:null;Se.bindFramebuffer(U.FRAMEBUFFER,st);const at=U.fenceSync(U.SYNC_GPU_COMMANDS_COMPLETE,0);return U.flush(),await wm(U,at,4),U.bindBuffer(U.PIXEL_PACK_BUFFER,qe),U.getBufferSubData(U.PIXEL_PACK_BUFFER,0,Ee),U.deleteBuffer(qe),U.deleteSync(at),Ee}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(P,G=null,Z=0){const te=Math.pow(2,-Z),Y=Math.floor(P.image.width*te),Ee=Math.floor(P.image.height*te),Le=G!==null?G.x:0,Fe=G!==null?G.y:0;xe.setTexture2D(P,0),U.copyTexSubImage2D(U.TEXTURE_2D,Z,0,0,Le,Fe,Y,Ee),Se.unbindTexture()};const ac=U.createFramebuffer(),oc=U.createFramebuffer();this.copyTextureToTexture=function(P,G,Z=null,te=null,Y=0,Ee=null){Ee===null&&(Y!==0?(Jr("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Ee=Y,Y=0):Ee=0);let Le,Fe,ge,Ue,He,Pe,qe,st,at;const ft=P.isCompressedTexture?P.mipmaps[Ee]:P.image;if(Z!==null)Le=Z.max.x-Z.min.x,Fe=Z.max.y-Z.min.y,ge=Z.isBox3?Z.max.z-Z.min.z:1,Ue=Z.min.x,He=Z.min.y,Pe=Z.isBox3?Z.min.z:0;else{const Ft=Math.pow(2,-Y);Le=Math.floor(ft.width*Ft),Fe=Math.floor(ft.height*Ft),P.isDataArrayTexture?ge=ft.depth:P.isData3DTexture?ge=Math.floor(ft.depth*Ft):ge=1,Ue=0,He=0,Pe=0}te!==null?(qe=te.x,st=te.y,at=te.z):(qe=0,st=0,at=0);const tt=Oe.convert(G.format),Ge=Oe.convert(G.type);let Je;G.isData3DTexture?(xe.setTexture3D(G,0),Je=U.TEXTURE_3D):G.isDataArrayTexture||G.isCompressedArrayTexture?(xe.setTexture2DArray(G,0),Je=U.TEXTURE_2D_ARRAY):(xe.setTexture2D(G,0),Je=U.TEXTURE_2D),U.pixelStorei(U.UNPACK_FLIP_Y_WEBGL,G.flipY),U.pixelStorei(U.UNPACK_PREMULTIPLY_ALPHA_WEBGL,G.premultiplyAlpha),U.pixelStorei(U.UNPACK_ALIGNMENT,G.unpackAlignment);const Ke=U.getParameter(U.UNPACK_ROW_LENGTH),jt=U.getParameter(U.UNPACK_IMAGE_HEIGHT),Tt=U.getParameter(U.UNPACK_SKIP_PIXELS),Vt=U.getParameter(U.UNPACK_SKIP_ROWS),wn=U.getParameter(U.UNPACK_SKIP_IMAGES);U.pixelStorei(U.UNPACK_ROW_LENGTH,ft.width),U.pixelStorei(U.UNPACK_IMAGE_HEIGHT,ft.height),U.pixelStorei(U.UNPACK_SKIP_PIXELS,Ue),U.pixelStorei(U.UNPACK_SKIP_ROWS,He),U.pixelStorei(U.UNPACK_SKIP_IMAGES,Pe);const dt=P.isDataArrayTexture||P.isData3DTexture,Wt=G.isDataArrayTexture||G.isData3DTexture;if(P.isDepthTexture){const Ft=_e.get(P),rn=_e.get(G),on=_e.get(Ft.__renderTarget),lc=_e.get(rn.__renderTarget);Se.bindFramebuffer(U.READ_FRAMEBUFFER,on.__webglFramebuffer),Se.bindFramebuffer(U.DRAW_FRAMEBUFFER,lc.__webglFramebuffer);for(let Bi=0;Bi<ge;Bi++)dt&&(U.framebufferTextureLayer(U.READ_FRAMEBUFFER,U.COLOR_ATTACHMENT0,_e.get(P).__webglTexture,Y,Pe+Bi),U.framebufferTextureLayer(U.DRAW_FRAMEBUFFER,U.COLOR_ATTACHMENT0,_e.get(G).__webglTexture,Ee,at+Bi)),U.blitFramebuffer(Ue,He,Le,Fe,qe,st,Le,Fe,U.DEPTH_BUFFER_BIT,U.NEAREST);Se.bindFramebuffer(U.READ_FRAMEBUFFER,null),Se.bindFramebuffer(U.DRAW_FRAMEBUFFER,null)}else if(Y!==0||P.isRenderTargetTexture||_e.has(P)){const Ft=_e.get(P),rn=_e.get(G);Se.bindFramebuffer(U.READ_FRAMEBUFFER,ac),Se.bindFramebuffer(U.DRAW_FRAMEBUFFER,oc);for(let on=0;on<ge;on++)dt?U.framebufferTextureLayer(U.READ_FRAMEBUFFER,U.COLOR_ATTACHMENT0,Ft.__webglTexture,Y,Pe+on):U.framebufferTexture2D(U.READ_FRAMEBUFFER,U.COLOR_ATTACHMENT0,U.TEXTURE_2D,Ft.__webglTexture,Y),Wt?U.framebufferTextureLayer(U.DRAW_FRAMEBUFFER,U.COLOR_ATTACHMENT0,rn.__webglTexture,Ee,at+on):U.framebufferTexture2D(U.DRAW_FRAMEBUFFER,U.COLOR_ATTACHMENT0,U.TEXTURE_2D,rn.__webglTexture,Ee),Y!==0?U.blitFramebuffer(Ue,He,Le,Fe,qe,st,Le,Fe,U.COLOR_BUFFER_BIT,U.NEAREST):Wt?U.copyTexSubImage3D(Je,Ee,qe,st,at+on,Ue,He,Le,Fe):U.copyTexSubImage2D(Je,Ee,qe,st,Ue,He,Le,Fe);Se.bindFramebuffer(U.READ_FRAMEBUFFER,null),Se.bindFramebuffer(U.DRAW_FRAMEBUFFER,null)}else Wt?P.isDataTexture||P.isData3DTexture?U.texSubImage3D(Je,Ee,qe,st,at,Le,Fe,ge,tt,Ge,ft.data):G.isCompressedArrayTexture?U.compressedTexSubImage3D(Je,Ee,qe,st,at,Le,Fe,ge,tt,ft.data):U.texSubImage3D(Je,Ee,qe,st,at,Le,Fe,ge,tt,Ge,ft):P.isDataTexture?U.texSubImage2D(U.TEXTURE_2D,Ee,qe,st,Le,Fe,tt,Ge,ft.data):P.isCompressedTexture?U.compressedTexSubImage2D(U.TEXTURE_2D,Ee,qe,st,ft.width,ft.height,tt,ft.data):U.texSubImage2D(U.TEXTURE_2D,Ee,qe,st,Le,Fe,tt,Ge,ft);U.pixelStorei(U.UNPACK_ROW_LENGTH,Ke),U.pixelStorei(U.UNPACK_IMAGE_HEIGHT,jt),U.pixelStorei(U.UNPACK_SKIP_PIXELS,Tt),U.pixelStorei(U.UNPACK_SKIP_ROWS,Vt),U.pixelStorei(U.UNPACK_SKIP_IMAGES,wn),Ee===0&&G.generateMipmaps&&U.generateMipmap(Je),Se.unbindTexture()},this.initRenderTarget=function(P){_e.get(P).__webglFramebuffer===void 0&&xe.setupRenderTarget(P)},this.initTexture=function(P){P.isCubeTexture?xe.setTextureCube(P,0):P.isData3DTexture?xe.setTexture3D(P,0):P.isDataArrayTexture||P.isCompressedArrayTexture?xe.setTexture2DArray(P,0):xe.setTexture2D(P,0),Se.unbindTexture()},this.resetState=function(){R=0,k=0,B=null,Se.reset(),Ce.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Pn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=lt._getDrawingBufferColorSpace(e),t.unpackColorSpace=lt._getUnpackColorSpace()}}function af(i,e){if(e===Jp)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),i;if(e===$o||e===bu){let t=i.getIndex();if(t===null){const a=[],o=i.getAttribute("position");if(o!==void 0){for(let l=0;l<o.count;l++)a.push(l);i.setIndex(a),t=i.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),i}const n=t.count-2,r=[];if(e===$o)for(let a=1;a<=n;a++)r.push(t.getX(0)),r.push(t.getX(a)),r.push(t.getX(a+1));else for(let a=0;a<n;a++)a%2===0?(r.push(t.getX(a)),r.push(t.getX(a+1)),r.push(t.getX(a+2))):(r.push(t.getX(a+2)),r.push(t.getX(a+1)),r.push(t.getX(a)));r.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const s=i.clone();return s.setIndex(r),s.clearGroups(),s}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),i}class qy extends Er{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new Qy(t)}),this.register(function(t){return new ex(t)}),this.register(function(t){return new cx(t)}),this.register(function(t){return new ux(t)}),this.register(function(t){return new hx(t)}),this.register(function(t){return new nx(t)}),this.register(function(t){return new ix(t)}),this.register(function(t){return new rx(t)}),this.register(function(t){return new sx(t)}),this.register(function(t){return new Jy(t)}),this.register(function(t){return new ax(t)}),this.register(function(t){return new tx(t)}),this.register(function(t){return new lx(t)}),this.register(function(t){return new ox(t)}),this.register(function(t){return new Ky(t)}),this.register(function(t){return new fx(t)}),this.register(function(t){return new dx(t)})}load(e,t,n,r){const s=this;let a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){const c=cs.extractUrlBase(e);a=cs.resolveURL(c,this.path)}else a=cs.extractUrlBase(e);this.manager.itemStart(e);const o=function(c){r?r(c):console.error(c),s.manager.itemError(e),s.manager.itemEnd(e)},l=new Sh(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(c){try{s.parse(c,a,function(h){t(h),s.manager.itemEnd(e)},o)}catch(h){o(h)}},n,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,r){let s;const a={},o={},l=new TextDecoder;if(typeof e=="string")s=JSON.parse(e);else if(e instanceof ArrayBuffer)if(l.decode(new Uint8Array(e,0,4))===of){try{a[rt.KHR_BINARY_GLTF]=new px(e)}catch(u){r&&r(u);return}s=JSON.parse(a[rt.KHR_BINARY_GLTF].content)}else s=JSON.parse(l.decode(e));else s=e;if(s.asset===void 0||s.asset.version[0]<2){r&&r(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const c=new Ax(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let h=0;h<this.pluginCallbacks.length;h++){const u=this.pluginCallbacks[h](c);u.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[u.name]=u,a[u.name]=!0}if(s.extensionsUsed)for(let h=0;h<s.extensionsUsed.length;++h){const u=s.extensionsUsed[h],f=s.extensionsRequired||[];switch(u){case rt.KHR_MATERIALS_UNLIT:a[u]=new Zy;break;case rt.KHR_DRACO_MESH_COMPRESSION:a[u]=new mx(s,this.dracoLoader);break;case rt.KHR_TEXTURE_TRANSFORM:a[u]=new gx;break;case rt.KHR_MESH_QUANTIZATION:a[u]=new _x;break;default:f.indexOf(u)>=0&&o[u]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+u+'".')}}c.setExtensions(a),c.setPlugins(o),c.parse(n,r)}parseAsync(e,t){const n=this;return new Promise(function(r,s){n.parse(e,t,r,s)})}}function Yy(){let i={};return{get:function(e){return i[e]},add:function(e,t){i[e]=t},remove:function(e){delete i[e]},removeAll:function(){i={}}}}const rt={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Ky{constructor(e){this.parser=e,this.name=rt.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n<r;n++){const s=t[n];s.extensions&&s.extensions[this.name]&&s.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,s.extensions[this.name].light)}}_loadLight(e){const t=this.parser,n="light:"+e;let r=t.cache.get(n);if(r)return r;const s=t.json,l=((s.extensions&&s.extensions[this.name]||{}).lights||[])[e];let c;const h=new Ze(16777215);l.color!==void 0&&h.setRGB(l.color[0],l.color[1],l.color[2],Kt);const u=l.range!==void 0?l.range:0;switch(l.type){case"directional":c=new Ll(h),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new Cg(h),c.distance=u;break;case"spot":c=new Ag(h),c.distance=u,l.spot=l.spot||{},l.spot.innerConeAngle=l.spot.innerConeAngle!==void 0?l.spot.innerConeAngle:0,l.spot.outerConeAngle=l.spot.outerConeAngle!==void 0?l.spot.outerConeAngle:Math.PI/4,c.angle=l.spot.outerConeAngle,c.penumbra=1-l.spot.innerConeAngle/l.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+l.type)}return c.position.set(0,0,0),kn(c,l),l.intensity!==void 0&&(c.intensity=l.intensity),c.name=t.createUniqueName(l.name||"light_"+e),r=Promise.resolve(c),t.cache.add(n,r),r}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,n=this.parser,s=n.json.nodes[e],o=(s.extensions&&s.extensions[this.name]||{}).light;return o===void 0?null:this._loadLight(o).then(function(l){return n._getNodeRef(t.cache,o,l)})}}class Zy{constructor(){this.name=rt.KHR_MATERIALS_UNLIT}getMaterialType(){return Ri}extendParams(e,t,n){const r=[];e.color=new Ze(1,1,1),e.opacity=1;const s=t.pbrMetallicRoughness;if(s){if(Array.isArray(s.baseColorFactor)){const a=s.baseColorFactor;e.color.setRGB(a[0],a[1],a[2],Kt),e.opacity=a[3]}s.baseColorTexture!==void 0&&r.push(n.assignTexture(e,"map",s.baseColorTexture,Bt))}return Promise.all(r)}}class Jy{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=r.extensions[this.name].emissiveStrength;return s!==void 0&&(t.emissiveIntensity=s),Promise.resolve()}}class Qy{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];if(a.clearcoatFactor!==void 0&&(t.clearcoat=a.clearcoatFactor),a.clearcoatTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatMap",a.clearcoatTexture)),a.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=a.clearcoatRoughnessFactor),a.clearcoatRoughnessTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatRoughnessMap",a.clearcoatRoughnessTexture)),a.clearcoatNormalTexture!==void 0&&(s.push(n.assignTexture(t,"clearcoatNormalMap",a.clearcoatNormalTexture)),a.clearcoatNormalTexture.scale!==void 0)){const o=a.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new Ye(o,o)}return Promise.all(s)}}class ex{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_DISPERSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=r.extensions[this.name];return t.dispersion=s.dispersion!==void 0?s.dispersion:0,Promise.resolve()}}class tx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];return a.iridescenceFactor!==void 0&&(t.iridescence=a.iridescenceFactor),a.iridescenceTexture!==void 0&&s.push(n.assignTexture(t,"iridescenceMap",a.iridescenceTexture)),a.iridescenceIor!==void 0&&(t.iridescenceIOR=a.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),a.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),a.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),a.iridescenceThicknessTexture!==void 0&&s.push(n.assignTexture(t,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(s)}}class nx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_SHEEN}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[];t.sheenColor=new Ze(0,0,0),t.sheenRoughness=0,t.sheen=1;const a=r.extensions[this.name];if(a.sheenColorFactor!==void 0){const o=a.sheenColorFactor;t.sheenColor.setRGB(o[0],o[1],o[2],Kt)}return a.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=a.sheenRoughnessFactor),a.sheenColorTexture!==void 0&&s.push(n.assignTexture(t,"sheenColorMap",a.sheenColorTexture,Bt)),a.sheenRoughnessTexture!==void 0&&s.push(n.assignTexture(t,"sheenRoughnessMap",a.sheenRoughnessTexture)),Promise.all(s)}}class ix{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];return a.transmissionFactor!==void 0&&(t.transmission=a.transmissionFactor),a.transmissionTexture!==void 0&&s.push(n.assignTexture(t,"transmissionMap",a.transmissionTexture)),Promise.all(s)}}class rx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_VOLUME}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];t.thickness=a.thicknessFactor!==void 0?a.thicknessFactor:0,a.thicknessTexture!==void 0&&s.push(n.assignTexture(t,"thicknessMap",a.thicknessTexture)),t.attenuationDistance=a.attenuationDistance||1/0;const o=a.attenuationColor||[1,1,1];return t.attenuationColor=new Ze().setRGB(o[0],o[1],o[2],Kt),Promise.all(s)}}class sx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_IOR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=r.extensions[this.name];return t.ior=s.ior!==void 0?s.ior:1.5,Promise.resolve()}}class ax{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_SPECULAR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];t.specularIntensity=a.specularFactor!==void 0?a.specularFactor:1,a.specularTexture!==void 0&&s.push(n.assignTexture(t,"specularIntensityMap",a.specularTexture));const o=a.specularColorFactor||[1,1,1];return t.specularColor=new Ze().setRGB(o[0],o[1],o[2],Kt),a.specularColorTexture!==void 0&&s.push(n.assignTexture(t,"specularColorMap",a.specularColorTexture,Bt)),Promise.all(s)}}class ox{constructor(e){this.parser=e,this.name=rt.EXT_MATERIALS_BUMP}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];return t.bumpScale=a.bumpFactor!==void 0?a.bumpFactor:1,a.bumpTexture!==void 0&&s.push(n.assignTexture(t,"bumpMap",a.bumpTexture)),Promise.all(s)}}class lx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];return a.anisotropyStrength!==void 0&&(t.anisotropy=a.anisotropyStrength),a.anisotropyRotation!==void 0&&(t.anisotropyRotation=a.anisotropyRotation),a.anisotropyTexture!==void 0&&s.push(n.assignTexture(t,"anisotropyMap",a.anisotropyTexture)),Promise.all(s)}}class cx{constructor(e){this.parser=e,this.name=rt.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,n=t.json,r=n.textures[e];if(!r.extensions||!r.extensions[this.name])return null;const s=r.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,a)}}class ux{constructor(e){this.parser=e,this.name=rt.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,n=this.parser,r=n.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const a=s.extensions[t],o=r.images[a.source];let l=n.textureLoader;if(o.uri){const c=n.options.manager.getHandler(o.uri);c!==null&&(l=c)}return n.loadTextureImage(e,a.source,l)}}class hx{constructor(e){this.parser=e,this.name=rt.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,n=this.parser,r=n.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const a=s.extensions[t],o=r.images[a.source];let l=n.textureLoader;if(o.uri){const c=n.options.manager.getHandler(o.uri);c!==null&&(l=c)}return n.loadTextureImage(e,a.source,l)}}class fx{constructor(e){this.name=rt.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const r=n.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(o){const l=r.byteOffset||0,c=r.byteLength||0,h=r.count,u=r.byteStride,f=new Uint8Array(o,l,c);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(h,u,f,r.mode,r.filter).then(function(d){return d.buffer}):a.ready.then(function(){const d=new ArrayBuffer(h*u);return a.decodeGltfBuffer(new Uint8Array(d),h,u,f,r.mode,r.filter),d})})}else return null}}class dx{constructor(e){this.name=rt.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;const r=t.meshes[n.mesh];for(const c of r.primitives)if(c.mode!==mn.TRIANGLES&&c.mode!==mn.TRIANGLE_STRIP&&c.mode!==mn.TRIANGLE_FAN&&c.mode!==void 0)return null;const a=n.extensions[this.name].attributes,o=[],l={};for(const c in a)o.push(this.parser.getDependency("accessor",a[c]).then(h=>(l[c]=h,l[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(c=>{const h=c.pop(),u=h.isGroup?h.children:[h],f=c[0].count,d=[];for(const _ of u){const b=new et,g=new $,m=new Dn,S=new $(1,1,1),y=new ig(_.geometry,_.material,f);for(let M=0;M<f;M++)l.TRANSLATION&&g.fromBufferAttribute(l.TRANSLATION,M),l.ROTATION&&m.fromBufferAttribute(l.ROTATION,M),l.SCALE&&S.fromBufferAttribute(l.SCALE,M),y.setMatrixAt(M,b.compose(g,m,S));for(const M in l)if(M==="_COLOR_0"){const T=l[M];y.instanceColor=new Sl(T.array,T.itemSize,T.normalized)}else M!=="TRANSLATION"&&M!=="ROTATION"&&M!=="SCALE"&&_.geometry.setAttribute(M,l[M]);At.prototype.copy.call(y,_),this.parser.assignFinalMaterial(y),d.push(y)}return h.isGroup?(h.clear(),h.add(...d),h):d[0]}))}}const of="glTF",hs=12,lf={JSON:1313821514,BIN:5130562};class px{constructor(e){this.name=rt.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,hs),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==of)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-hs,s=new DataView(e,hs);let a=0;for(;a<r;){const o=s.getUint32(a,!0);a+=4;const l=s.getUint32(a,!0);if(a+=4,l===lf.JSON){const c=new Uint8Array(e,hs+a,o);this.content=n.decode(c)}else if(l===lf.BIN){const c=hs+a;this.body=e.slice(c,c+o)}a+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class mx{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=rt.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const n=this.json,r=this.dracoLoader,s=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},l={},c={};for(const h in a){const u=$l[h]||h.toLowerCase();o[u]=a[h]}for(const h in e.attributes){const u=$l[h]||h.toLowerCase();if(a[h]!==void 0){const f=n.accessors[e.attributes[h]],d=Cr[f.componentType];c[u]=d.name,l[u]=f.normalized===!0}}return t.getDependency("bufferView",s).then(function(h){return new Promise(function(u,f){r.decodeDracoFile(h,function(d){for(const _ in d.attributes){const b=d.attributes[_],g=l[_];g!==void 0&&(b.normalized=g)}u(d)},o,c,Kt,f)})})}}class gx{constructor(){this.name=rt.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class _x{constructor(){this.name=rt.KHR_MESH_QUANTIZATION}}class cf extends os{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,s=e*r*3+r;for(let a=0;a!==r;a++)t[a]=n[s+a];return t}interpolate_(e,t,n,r){const s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=o*2,c=o*3,h=r-t,u=(n-t)/h,f=u*u,d=f*u,_=e*c,b=_-c,g=-2*d+3*f,m=d-f,S=1-g,y=m-f+u;for(let M=0;M!==o;M++){const T=a[b+M+o],R=a[b+M+l]*h,k=a[_+M+o],B=a[_+M]*h;s[M]=S*T+y*R+g*k+m*B}return s}}const vx=new Dn;class yx extends cf{interpolate_(e,t,n,r){const s=super.interpolate_(e,t,n,r);return vx.fromArray(s).normalize().toArray(s),s}}const mn={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Cr={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},uf={9728:Yt,9729:ln,9984:uu,9985:Ps,9986:Hr,9987:Wn},hf={33071:si,33648:Cs,10497:Qi},Xl={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},$l={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"},mi={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},xx={CUBICSPLINE:void 0,LINEAR:qr,STEP:jr},jl={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function bx(i){return i.DefaultMaterial===void 0&&(i.DefaultMaterial=new as({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Gn})),i.DefaultMaterial}function Ni(i,e,t){for(const n in t.extensions)i[n]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[n]=t.extensions[n])}function kn(i,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(i.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Sx(i,e,t){let n=!1,r=!1,s=!1;for(let c=0,h=e.length;c<h;c++){const u=e[c];if(u.POSITION!==void 0&&(n=!0),u.NORMAL!==void 0&&(r=!0),u.COLOR_0!==void 0&&(s=!0),n&&r&&s)break}if(!n&&!r&&!s)return Promise.resolve(i);const a=[],o=[],l=[];for(let c=0,h=e.length;c<h;c++){const u=e[c];if(n){const f=u.POSITION!==void 0?t.getDependency("accessor",u.POSITION):i.attributes.position;a.push(f)}if(r){const f=u.NORMAL!==void 0?t.getDependency("accessor",u.NORMAL):i.attributes.normal;o.push(f)}if(s){const f=u.COLOR_0!==void 0?t.getDependency("accessor",u.COLOR_0):i.attributes.color;l.push(f)}}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(l)]).then(function(c){const h=c[0],u=c[1],f=c[2];return n&&(i.morphAttributes.position=h),r&&(i.morphAttributes.normal=u),s&&(i.morphAttributes.color=f),i.morphTargetsRelative=!0,i})}function Mx(i,e){if(i.updateMorphTargets(),e.weights!==void 0)for(let t=0,n=e.weights.length;t<n;t++)i.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(i.morphTargetInfluences.length===t.length){i.morphTargetDictionary={};for(let n=0,r=t.length;n<r;n++)i.morphTargetDictionary[t[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Ex(i){let e;const t=i.extensions&&i.extensions[rt.KHR_DRACO_MESH_COMPRESSION];if(t?e="draco:"+t.bufferView+":"+t.indices+":"+ql(t.attributes):e=i.indices+":"+ql(i.attributes)+":"+i.mode,i.targets!==void 0)for(let n=0,r=i.targets.length;n<r;n++)e+=":"+ql(i.targets[n]);return e}function ql(i){let e="";const t=Object.keys(i).sort();for(let n=0,r=t.length;n<r;n++)e+=t[n]+":"+i[t[n]]+";";return e}function Yl(i){switch(i){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function Tx(i){return i.search(/\.jpe?g($|\?)/i)>0||i.search(/^data\:image\/jpeg/)===0?"image/jpeg":i.search(/\.webp($|\?)/i)>0||i.search(/^data\:image\/webp/)===0?"image/webp":i.search(/\.ktx2($|\?)/i)>0||i.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const wx=new et;class Ax{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Yy,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 n=!1,r=-1,s=!1,a=-1;if(typeof navigator<"u"){const o=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(o)===!0;const l=o.match(/Version\/(\d+)/);r=n&&l?parseInt(l[1],10):-1,s=o.indexOf("Firefox")>-1,a=s?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||n&&r<17||s&&a<98?this.textureLoader=new Tg(this.options.manager):this.textureLoader=new Lg(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Sh(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const n=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(a){return a._markDefs&&a._markDefs()}),Promise.all(this._invokeAll(function(a){return a.beforeRoot&&a.beforeRoot()})).then(function(){return Promise.all([n.getDependencies("scene"),n.getDependencies("animation"),n.getDependencies("camera")])}).then(function(a){const o={scene:a[0][r.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:r.asset,parser:n,userData:{}};return Ni(s,o,r),kn(o,r),Promise.all(n._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(const l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let r=0,s=t.length;r<s;r++){const a=t[r].joints;for(let o=0,l=a.length;o<l;o++)e[a[o]].isBone=!0}for(let r=0,s=e.length;r<s;r++){const a=e[r];a.mesh!==void 0&&(this._addNodeRef(this.meshCache,a.mesh),a.skin!==void 0&&(n[a.mesh].isSkinnedMesh=!0)),a.camera!==void 0&&this._addNodeRef(this.cameraCache,a.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;const r=n.clone(),s=(a,o)=>{const l=this.associations.get(a);l!=null&&this.associations.set(o,l);for(const[c,h]of a.children.entries())s(h,o.children[c])};return s(n,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){const r=e(t[n]);if(r)return r}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const n=[];for(let r=0;r<t.length;r++){const s=e(t[r]);s&&n.push(s)}return n}getDependency(e,t){const n=e+":"+t;let r=this.cache.get(n);if(!r){switch(e){case"scene":r=this.loadScene(t);break;case"node":r=this._invokeOne(function(s){return s.loadNode&&s.loadNode(t)});break;case"mesh":r=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(t)});break;case"accessor":r=this.loadAccessor(t);break;case"bufferView":r=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(t)});break;case"buffer":r=this.loadBuffer(t);break;case"material":r=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(t)});break;case"texture":r=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(t)});break;case"skin":r=this.loadSkin(t);break;case"animation":r=this._invokeOne(function(s){return s.loadAnimation&&s.loadAnimation(t)});break;case"camera":r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(e,t)}),!r)throw new Error("Unknown type: "+e);break}this.cache.add(n,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){const n=this,r=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(r.map(function(s,a){return n.getDependency(e,a)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[rt.KHR_BINARY_GLTF].body);const r=this.options;return new Promise(function(s,a){n.load(cs.resolveURL(t.uri,r.path),s,void 0,function(){a(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(n){const r=t.byteLength||0,s=t.byteOffset||0;return n.slice(s,s+r)})}loadAccessor(e){const t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0){const a=Xl[r.type],o=Cr[r.componentType],l=r.normalized===!0,c=new o(r.count*a);return Promise.resolve(new Zt(c,a,l))}const s=[];return r.bufferView!==void 0?s.push(this.getDependency("bufferView",r.bufferView)):s.push(null),r.sparse!==void 0&&(s.push(this.getDependency("bufferView",r.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",r.sparse.values.bufferView))),Promise.all(s).then(function(a){const o=a[0],l=Xl[r.type],c=Cr[r.componentType],h=c.BYTES_PER_ELEMENT,u=h*l,f=r.byteOffset||0,d=r.bufferView!==void 0?n.bufferViews[r.bufferView].byteStride:void 0,_=r.normalized===!0;let b,g;if(d&&d!==u){const m=Math.floor(f/d),S="InterleavedBuffer:"+r.bufferView+":"+r.componentType+":"+m+":"+r.count;let y=t.cache.get(S);y||(b=new c(o,m*d,r.count*d/h),y=new Jm(b,d/h),t.cache.add(S,y)),g=new vl(y,l,f%d/h,_)}else o===null?b=new c(r.count*l):b=new c(o,f,r.count*l),g=new Zt(b,l,_);if(r.sparse!==void 0){const m=Xl.SCALAR,S=Cr[r.sparse.indices.componentType],y=r.sparse.indices.byteOffset||0,M=r.sparse.values.byteOffset||0,T=new S(a[1],y,r.sparse.count*m),R=new c(a[2],M,r.sparse.count*l);o!==null&&(g=new Zt(g.array.slice(),g.itemSize,g.normalized)),g.normalized=!1;for(let k=0,B=T.length;k<B;k++){const C=T[k];if(g.setX(C,R[k*l]),l>=2&&g.setY(C,R[k*l+1]),l>=3&&g.setZ(C,R[k*l+2]),l>=4&&g.setW(C,R[k*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}g.normalized=_}return g})}loadTexture(e){const t=this.json,n=this.options,s=t.textures[e].source,a=t.images[s];let o=this.textureLoader;if(a.uri){const l=n.manager.getHandler(a.uri);l!==null&&(o=l)}return this.loadTextureImage(e,s,o)}loadTextureImage(e,t,n){const r=this,s=this.json,a=s.textures[e],o=s.images[t],l=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[l])return this.textureCache[l];const c=this.loadImageSource(t,n).then(function(h){h.flipY=!1,h.name=a.name||o.name||"",h.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(h.name=o.uri);const f=(s.samplers||{})[a.sampler]||{};return h.magFilter=uf[f.magFilter]||ln,h.minFilter=uf[f.minFilter]||Wn,h.wrapS=hf[f.wrapS]||Qi,h.wrapT=hf[f.wrapT]||Qi,h.generateMipmaps=!h.isCompressedTexture&&h.minFilter!==Yt&&h.minFilter!==ln,r.associations.set(h,{textures:e}),h}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(e,t){const n=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(u=>u.clone());const a=r.images[e],o=self.URL||self.webkitURL;let l=a.uri||"",c=!1;if(a.bufferView!==void 0)l=n.getDependency("bufferView",a.bufferView).then(function(u){c=!0;const f=new Blob([u],{type:a.mimeType});return l=o.createObjectURL(f),l});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const h=Promise.resolve(l).then(function(u){return new Promise(function(f,d){let _=f;t.isImageBitmapLoader===!0&&(_=function(b){const g=new zt(b);g.needsUpdate=!0,f(g)}),t.load(cs.resolveURL(u,s.path),_,void 0,d)})}).then(function(u){return c===!0&&o.revokeObjectURL(l),kn(u,a),u.userData.mimeType=a.mimeType||Tx(a.uri),u}).catch(function(u){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),u});return this.sourceCache[e]=h,h}assignTexture(e,t,n,r){const s=this;return this.getDependency("texture",n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),s.extensions[rt.KHR_TEXTURE_TRANSFORM]){const o=n.extensions!==void 0?n.extensions[rt.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const l=s.associations.get(a);a=s.extensions[rt.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),s.associations.set(a,l)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){const o="PointsMaterial:"+n.uuid;let l=this.cache.get(o);l||(l=new ph,Nn.prototype.copy.call(l,n),l.color.copy(n.color),l.map=n.map,l.sizeAttenuation=!1,this.cache.add(o,l)),n=l}else if(e.isLine){const o="LineBasicMaterial:"+n.uuid;let l=this.cache.get(o);l||(l=new ch,Nn.prototype.copy.call(l,n),l.color.copy(n.color),l.map=n.map,this.cache.add(o,l)),n=l}if(r||s||a){let o="ClonedMaterial:"+n.uuid+":";r&&(o+="derivative-tangents:"),s&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=n.clone(),s&&(l.vertexColors=!0),a&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(n))),n=l}e.material=n}getMaterialType(){return as}loadMaterial(e){const t=this,n=this.json,r=this.extensions,s=n.materials[e];let a;const o={},l=s.extensions||{},c=[];if(l[rt.KHR_MATERIALS_UNLIT]){const u=r[rt.KHR_MATERIALS_UNLIT];a=u.getMaterialType(),c.push(u.extendParams(o,s,t))}else{const u=s.pbrMetallicRoughness||{};if(o.color=new Ze(1,1,1),o.opacity=1,Array.isArray(u.baseColorFactor)){const f=u.baseColorFactor;o.color.setRGB(f[0],f[1],f[2],Kt),o.opacity=f[3]}u.baseColorTexture!==void 0&&c.push(t.assignTexture(o,"map",u.baseColorTexture,Bt)),o.metalness=u.metallicFactor!==void 0?u.metallicFactor:1,o.roughness=u.roughnessFactor!==void 0?u.roughnessFactor:1,u.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,"metalnessMap",u.metallicRoughnessTexture)),c.push(t.assignTexture(o,"roughnessMap",u.metallicRoughnessTexture))),a=this._invokeOne(function(f){return f.getMaterialType&&f.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(f){return f.extendMaterialParams&&f.extendMaterialParams(e,o)})))}s.doubleSided===!0&&(o.side=Rn);const h=s.alphaMode||jl.OPAQUE;if(h===jl.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,h===jl.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==Ri&&(c.push(t.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new Ye(1,1),s.normalTexture.scale!==void 0)){const u=s.normalTexture.scale;o.normalScale.set(u,u)}if(s.occlusionTexture!==void 0&&a!==Ri&&(c.push(t.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==Ri){const u=s.emissiveFactor;o.emissive=new Ze().setRGB(u[0],u[1],u[2],Kt)}return s.emissiveTexture!==void 0&&a!==Ri&&c.push(t.assignTexture(o,"emissiveMap",s.emissiveTexture,Bt)),Promise.all(c).then(function(){const u=new a(o);return s.name&&(u.name=s.name),kn(u,s),t.associations.set(u,{materials:e}),s.extensions&&Ni(r,u,s),u})}createUniqueName(e){const t=yt.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,n=this.extensions,r=this.primitiveCache;function s(o){return n[rt.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return ff(l,o,t)})}const a=[];for(let o=0,l=e.length;o<l;o++){const c=e[o],h=Ex(c),u=r[h];if(u)a.push(u.promise);else{let f;c.extensions&&c.extensions[rt.KHR_DRACO_MESH_COMPRESSION]?f=s(c):f=ff(new En,c,t),r[h]={primitive:c,promise:f},a.push(f)}}return Promise.all(a)}loadMesh(e){const t=this,n=this.json,r=this.extensions,s=n.meshes[e],a=s.primitives,o=[];for(let l=0,c=a.length;l<c;l++){const h=a[l].material===void 0?bx(this.cache):this.getDependency("material",a[l].material);o.push(h)}return o.push(t.loadGeometries(a)),Promise.all(o).then(function(l){const c=l.slice(0,l.length-1),h=l[l.length-1],u=[];for(let d=0,_=h.length;d<_;d++){const b=h[d],g=a[d];let m;const S=c[d];if(g.mode===mn.TRIANGLES||g.mode===mn.TRIANGLE_STRIP||g.mode===mn.TRIANGLE_FAN||g.mode===void 0)m=s.isSkinnedMesh===!0?new eg(b,S):new Jt(b,S),m.isSkinnedMesh===!0&&m.normalizeSkinWeights(),g.mode===mn.TRIANGLE_STRIP?m.geometry=af(m.geometry,bu):g.mode===mn.TRIANGLE_FAN&&(m.geometry=af(m.geometry,$o));else if(g.mode===mn.LINES)m=new og(b,S);else if(g.mode===mn.LINE_STRIP)m=new wl(b,S);else if(g.mode===mn.LINE_LOOP)m=new lg(b,S);else if(g.mode===mn.POINTS)m=new cg(b,S);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+g.mode);Object.keys(m.geometry.morphAttributes).length>0&&Mx(m,s),m.name=t.createUniqueName(s.name||"mesh_"+e),kn(m,s),g.extensions&&Ni(r,m,g),t.assignFinalMaterial(m),u.push(m)}for(let d=0,_=u.length;d<_;d++)t.associations.set(u[d],{meshes:e,primitives:d});if(u.length===1)return s.extensions&&Ni(r,u[0],s),u[0];const f=new Zn;s.extensions&&Ni(r,f,s),t.associations.set(f,{meshes:e});for(let d=0,_=u.length;d<_;d++)f.add(u[d]);return f})}loadCamera(e){let t;const n=this.json.cameras[e],r=n[n.type];if(!r){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?t=new en(Au.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type==="orthographic"&&(t=new ha(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),kn(t,n),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],n=[];for(let r=0,s=t.joints.length;r<s;r++)n.push(this._loadNodeShallow(t.joints[r]));return t.inverseBindMatrices!==void 0?n.push(this.getDependency("accessor",t.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(r){const s=r.pop(),a=r,o=[],l=[];for(let c=0,h=a.length;c<h;c++){const u=a[c];if(u){o.push(u);const f=new et;s!==null&&f.fromArray(s.array,c*16),l.push(f)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[c])}return new bl(o,l)})}loadAnimation(e){const t=this.json,n=this,r=t.animations[e],s=r.name?r.name:"animation_"+e,a=[],o=[],l=[],c=[],h=[];for(let u=0,f=r.channels.length;u<f;u++){const d=r.channels[u],_=r.samplers[d.sampler],b=d.target,g=b.node,m=r.parameters!==void 0?r.parameters[_.input]:_.input,S=r.parameters!==void 0?r.parameters[_.output]:_.output;b.node!==void 0&&(a.push(this.getDependency("node",g)),o.push(this.getDependency("accessor",m)),l.push(this.getDependency("accessor",S)),c.push(_),h.push(b))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(l),Promise.all(c),Promise.all(h)]).then(function(u){const f=u[0],d=u[1],_=u[2],b=u[3],g=u[4],m=[];for(let y=0,M=f.length;y<M;y++){const T=f[y],R=d[y],k=_[y],B=b[y],C=g[y];if(T===void 0)continue;T.updateMatrix&&T.updateMatrix();const D=n._createAnimationTracks(T,R,k,B,C);if(D)for(let V=0;V<D.length;V++)m.push(D[V])}const S=new vg(s,void 0,m);return kn(S,r),S})}createNodeMesh(e){const t=this.json,n=this,r=t.nodes[e];return r.mesh===void 0?null:n.getDependency("mesh",r.mesh).then(function(s){const a=n._getNodeRef(n.meshCache,r.mesh,s);return r.weights!==void 0&&a.traverse(function(o){if(o.isMesh)for(let l=0,c=r.weights.length;l<c;l++)o.morphTargetInfluences[l]=r.weights[l]}),a})}loadNode(e){const t=this.json,n=this,r=t.nodes[e],s=n._loadNodeShallow(e),a=[],o=r.children||[];for(let c=0,h=o.length;c<h;c++)a.push(n.getDependency("node",o[c]));const l=r.skin===void 0?Promise.resolve(null):n.getDependency("skin",r.skin);return Promise.all([s,Promise.all(a),l]).then(function(c){const h=c[0],u=c[1],f=c[2];f!==null&&h.traverse(function(d){d.isSkinnedMesh&&d.bind(f,wx)});for(let d=0,_=u.length;d<_;d++)h.add(u[d]);return h})}_loadNodeShallow(e){const t=this.json,n=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const s=t.nodes[e],a=s.name?r.createUniqueName(s.name):"",o=[],l=r._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(e)});return l&&o.push(l),s.camera!==void 0&&o.push(r.getDependency("camera",s.camera).then(function(c){return r._getNodeRef(r.cameraCache,s.camera,c)})),r._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(e)}).forEach(function(c){o.push(c)}),this.nodeCache[e]=Promise.all(o).then(function(c){let h;if(s.isBone===!0?h=new rh:c.length>1?h=new Zn:c.length===1?h=c[0]:h=new At,h!==c[0])for(let u=0,f=c.length;u<f;u++)h.add(c[u]);if(s.name&&(h.userData.name=s.name,h.name=a),kn(h,s),s.extensions&&Ni(n,h,s),s.matrix!==void 0){const u=new et;u.fromArray(s.matrix),h.applyMatrix4(u)}else s.translation!==void 0&&h.position.fromArray(s.translation),s.rotation!==void 0&&h.quaternion.fromArray(s.rotation),s.scale!==void 0&&h.scale.fromArray(s.scale);if(!r.associations.has(h))r.associations.set(h,{});else if(s.mesh!==void 0&&r.meshCache.refs[s.mesh]>1){const u=r.associations.get(h);r.associations.set(h,{...u})}return r.associations.get(h).nodes=e,h}),this.nodeCache[e]}loadScene(e){const t=this.extensions,n=this.json.scenes[e],r=this,s=new Zn;n.name&&(s.name=r.createUniqueName(n.name)),kn(s,n),n.extensions&&Ni(t,s,n);const a=n.nodes||[],o=[];for(let l=0,c=a.length;l<c;l++)o.push(r.getDependency("node",a[l]));return Promise.all(o).then(function(l){for(let h=0,u=l.length;h<u;h++)s.add(l[h]);const c=h=>{const u=new Map;for(const[f,d]of r.associations)(f instanceof Nn||f instanceof zt)&&u.set(f,d);return h.traverse(f=>{const d=r.associations.get(f);d!=null&&u.set(f,d)}),u};return r.associations=c(s),s})}_createAnimationTracks(e,t,n,r,s){const a=[],o=e.name?e.name:e.uuid,l=[];mi[s.path]===mi.weights?e.traverse(function(f){f.morphTargetInfluences&&l.push(f.name?f.name:f.uuid)}):l.push(o);let c;switch(mi[s.path]){case mi.weights:c=xr;break;case mi.rotation:c=br;break;case mi.translation:case mi.scale:c=Mr;break;default:switch(n.itemSize){case 1:c=xr;break;case 2:case 3:default:c=Mr;break}break}const h=r.interpolation!==void 0?xx[r.interpolation]:qr,u=this._getArrayFromAccessor(n);for(let f=0,d=l.length;f<d;f++){const _=new c(l[f]+"."+mi[s.path],t.array,u,h);r.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(_),a.push(_)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const n=Yl(t.constructor),r=new Float32Array(t.length);for(let s=0,a=t.length;s<a;s++)r[s]=t[s]*n;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(n){const r=this instanceof br?yx:cf;return new r(this.times,this.values,this.getValueSize()/3,n)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Rx(i,e,t){const n=e.attributes,r=new Ln;if(n.POSITION!==void 0){const o=t.json.accessors[n.POSITION],l=o.min,c=o.max;if(l!==void 0&&c!==void 0){if(r.set(new $(l[0],l[1],l[2]),new $(c[0],c[1],c[2])),o.normalized){const h=Yl(Cr[o.componentType]);r.min.multiplyScalar(h),r.max.multiplyScalar(h)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const s=e.targets;if(s!==void 0){const o=new $,l=new $;for(let c=0,h=s.length;c<h;c++){const u=s[c];if(u.POSITION!==void 0){const f=t.json.accessors[u.POSITION],d=f.min,_=f.max;if(d!==void 0&&_!==void 0){if(l.setX(Math.max(Math.abs(d[0]),Math.abs(_[0]))),l.setY(Math.max(Math.abs(d[1]),Math.abs(_[1]))),l.setZ(Math.max(Math.abs(d[2]),Math.abs(_[2]))),f.normalized){const b=Yl(Cr[f.componentType]);l.multiplyScalar(b)}o.max(l)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}r.expandByVector(o)}i.boundingBox=r;const a=new In;r.getCenter(a.center),a.radius=r.min.distanceTo(r.max)/2,i.boundingSphere=a}function ff(i,e,t){const n=e.attributes,r=[];function s(a,o){return t.getDependency("accessor",a).then(function(l){i.setAttribute(o,l)})}for(const a in n){const o=$l[a]||a.toLowerCase();o in i.attributes||r.push(s(n[a],o))}if(e.indices!==void 0&&!i.index){const a=t.getDependency("accessor",e.indices).then(function(o){i.setIndex(o)});r.push(a)}return lt.workingColorSpace!==Kt&&"COLOR_0"in n&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${lt.workingColorSpace}" not supported.`),kn(i,e),Rx(i,e,t),Promise.all(r).then(function(){return e.targets!==void 0?Sx(i,e.targets,t):i})}function Cx(){const i=new Zn;i.name="sonic-3d-demo";const e=new pr(1,1,1),t=new as({color:3900150,metalness:.25,roughness:.4}),n=new Jt(e,t);n.name="demo-box",n.position.y=.5,i.add(n);const r=new Jt(new Rl(2.2,48),new as({color:1710618,metalness:0,roughness:.9}));return r.name="demo-ground",r.rotation.x=-Math.PI/2,i.add(r),i}function Px(i){const e=new Dg(16777215,.55),t=new Ll(16777215,1.1);t.position.set(4,6,3);const n=new Ll(11584767,.35);n.position.set(-3,1,-2);const r=[e,t,n];for(const s of r)i.add(s);return r}const Kl={create:Cx,setupLights:Px},Zl="WebGL indisponible — sonic-3d nécessite WebGL.";function Dx(i){const e=document.createElement("canvas"),t=e.getContext("webgl2")||e.getContext("webgl");if(!t||typeof t.getParameter!="function")throw new Error(Zl);const n={canvas:i,antialias:!0,alpha:!1,preserveDrawingBuffer:!0,powerPreference:"high-performance"};let r;try{r=new jy(n)}catch(s){const a=s instanceof Error?s.message:String(s);throw new Error(`${Zl} (${a})`)}if(!r.getContext())throw r.dispose(),new Error(Zl);return r}function Lx(i){const e=i.dprMax??2,t=i.camera??gn.Orbit,n=i.fov??vs,r=i.fit!==!1,s={minDistance:i.minDistance??Rc,maxDistance:i.maxDistance??Cc,minPolar:i.minPolar??Dc,maxPolar:i.maxPolar??Math.PI-Dc},a=new Zm;a.background=new Ze(657930);const o=new Zn;a.add(o);const l=new en(n,1,.01,2e3);l.position.set(2.2,1.6,2.8);const c=new ha(-1,1,1,-1,.01,2e3);c.position.set(2.2,1.6,2.8);const h=Dx(i.canvas);return h.outputColorSpace=Bt,h.toneMapping=ou,h.toneMappingExposure=i.exposure??Da,h.setPixelRatio(1),{scene:a,renderer:h,canvas:i.canvas,perspCam:l,orthoCam:c,activeCam:l,root:o,lights:Kl.setupLights(a),dprMax:e,mode:t,fov:n,fitEnabled:r,limits:s,autoRotate:!!i.autoRotate}}function Jl(i,e,t){return i.content?(i.pointerNdc.set(e*2-1,-(t*2-1)),i.raycaster.setFromCamera(i.pointerNdc,i.activeCam),i.raycaster.intersectObject(i.content,!0)):[]}function Ql(i){return{x:i.point.x,y:i.point.y,z:i.point.z,objectId:i.object.name||i.object.uuid}}function Ix(i,e,t){const n=Jl(i,e,t);return n.length?Ql(n[0]):null}function df(i){if(!i.highlighted)return;const e=i.highlighted.material,t=Array.isArray(e)?e[0]:e;t&&"emissive"in t&&(t.emissive.copy(i.prevEmissive),t.emissiveIntensity=i.prevEmissiveIntensity),i.highlighted=null}function Ux(i,e,t){const n=Jl(i,e,t),r=n[0]?.object,s=r?.isMesh?r:null;if(s===i.highlighted)return n.length?Ql(n[0]):null;if(df(i),!s)return null;const a=s.material,o=Array.isArray(a)?a[0]:a;return o&&"emissive"in o&&(i.highlighted=s,i.prevEmissive.copy(o.emissive),i.prevEmissiveIntensity=o.emissiveIntensity??1,o.emissive.set(3900150),o.emissiveIntensity=.45),Ql(n[0])}const _a={hit:Ix,setHoverAt:Ux,clearHighlight:df,raycastHits:Jl};function pf(i){if(i.blobUrl){try{URL.revokeObjectURL(i.blobUrl)}catch{}i.blobUrl=null}}function mf(i){_a.clearHighlight(i),i.content&&(i.root.remove(i.content),i.content.traverse(e=>{const t=e;if(t.isMesh){t.geometry?.dispose();const n=Array.isArray(t.material)?t.material:[t.material];for(const r of n)r?.dispose?.()}}),i.content=null,i.bbox.makeEmpty())}function ec(i){i.bbox.makeEmpty(),i.content&&i.bbox.setFromObject(i.content)}function gf(i,e){i.traverse(t=>{const n=t;if(!(!n.isMesh||!n.morphTargetDictionary||!n.morphTargetInfluences))for(const[r,s]of Object.entries(e)){const a=n.morphTargetDictionary[r];a!==void 0&&(n.morphTargetInfluences[a]=s)}})}async function Nx(i,e,t,n){mf(i);try{let r=e?.url?.trim()??"";if(!r&&e?.blob&&(pf(i),i.blobUrl=URL.createObjectURL(e.blob),r=i.blobUrl),!r)i.content=Kl.create(),i.root.add(i.content);else{const s=e?.kind??It.guessKind(r);if(s==="obj"||s==="ply")throw new Error(`Format "${s}" non supporté en V1 — utilisez glTF/GLB.`);const a=await i.loader.loadAsync(r);if(!n(t))return{ready:!1,error:null};i.content=a.scene,i.root.add(i.content),e?.morphTargets&&gf(i.content,e.morphTargets)}return n(t)?(ec(i),i.fitEnabled&&i.fitToContent(),{ready:!0,error:null}):{ready:!1,error:null}}catch(r){if(!n(t))return{ready:!1,error:null};const s=r instanceof Error?r.message:String(r);throw i.content=Kl.create(),i.root.add(i.content),ec(i),i.fitEnabled&&i.fitToContent(),r instanceof Error?r:new Error(s)}}const tc={asset:Nx,applyMorphTargets:gf,clearContent:mf,updateBBox:ec,revokeBlob:pf};function Ox(i,e){i&&(i.minDistance=e.minDistance,i.maxDistance=e.maxDistance,i.minPolarAngle=e.minPolar,i.maxPolarAngle=e.maxPolar)}function Fx(i,e,t,n){const r=i.controls?.target??i.target;let s=Number.isFinite(n)?n:1;s=Math.max(i.limits.minDistance,s),Number.isFinite(i.limits.maxDistance)&&(s=Math.min(i.limits.maxDistance,s));const a=Math.max(-(Math.PI/2-.05),Math.min(Math.PI/2-.05,t)),o=s*Math.cos(a);i.activeCam.position.set(r.x+o*Math.sin(e),r.y+s*Math.sin(a),r.z+o*Math.cos(e)),i.controls?(i.controls.target.copy(r),i.controls.update()):i.activeCam.lookAt(r)}function kx(i){if(i.bbox.isEmpty())return;const e=new $,t=new $;i.bbox.getSize(e),i.bbox.getCenter(t),i.target.copy(t);const n=Math.max(e.x,e.y,e.z,.001),r=i.mode===gn.Ortho?n*1.8:n/(2*Math.tan((i.fov||vs)*Math.PI/360))*1.35,s=new $(1,.65,1).normalize();if(i.activeCam.position.copy(t).addScaledVector(s,r),i.controls?(i.controls.target.copy(t),i.controls.update()):i.activeCam.lookAt(t),i.mode===gn.Ortho){const a=i.perspCam.aspect||1,o=n*.75;i.orthoCam.left=-o*a,i.orthoCam.right=o*a,i.orthoCam.top=o,i.orthoCam.bottom=-o,i.orthoCam.updateProjectionMatrix()}}function Bx(i,e){const t={...i};return e.minDistance!=null&&Number.isFinite(e.minDistance)&&(t.minDistance=Math.max(0,e.minDistance)),e.maxDistance!=null&&Number.isFinite(e.maxDistance)&&(t.maxDistance=e.maxDistance<=0?1/0:Math.max(t.minDistance,e.maxDistance)),e.minPolar!=null&&Number.isFinite(e.minPolar)&&(t.minPolar=Math.max(0,e.minPolar)),e.maxPolar!=null&&Number.isFinite(e.maxPolar)&&(t.maxPolar=Math.min(Math.PI,Math.max(t.minPolar,e.maxPolar))),t}const va=1e-6;function _f(i,e){if(!Number.isFinite(e)||e===0)return!1;const t=e<0,n=i.object;if(n.isOrthographicCamera){const s=n.zoom;return t?s<i.maxZoom-va:s>i.minZoom+va}const r=i.getDistance();return t?r>i.minDistance+va:Number.isFinite(i.maxDistance)?r<i.maxDistance-va:!0}function zx(i,e){const t=n=>{const r=e();!r?.enabled||!r.enableZoom||_f(r,n.deltaY)||n.stopImmediatePropagation()};return i.addEventListener("wheel",t,{capture:!0,passive:!0}),()=>{i.removeEventListener("wheel",t,{capture:!0})}}const Pr={applyLimitsToControls:Ox,setSpherical:Fx,fitToContent:kx,mergeLimits:Bx,wheelAffectsZoom:_f,bindWheelPageScrollRelay:zx};function Hx(i,e){const t=i.activeCam.position,n=i.controls?.target??i.target,r=new $().subVectors(t,n),s=r.length(),a=Math.atan2(r.x,r.z),o=Math.atan2(r.y,Math.hypot(r.x,r.z)),l={time:e.time,frame:e.frame,ready:i.ready?1:0,loading:i.loading?1:0,hovering:e.hovering,pointerX:e.pointerX,pointerY:e.pointerY,camX:t.x,camY:t.y,camZ:t.z,targetX:n.x,targetY:n.y,targetZ:n.z,fov:i.mode===gn.Ortho?0:i.perspCam.fov,zoom:i.mode===gn.Ortho?i.orthoCam.zoom:1,distance:s,yaw:a,pitch:o};return i.bbox.isEmpty()||(l.bboxMinX=i.bbox.min.x,l.bboxMinY=i.bbox.min.y,l.bboxMinZ=i.bbox.min.z,l.bboxMaxX=i.bbox.max.x,l.bboxMaxY=i.bbox.max.y,l.bboxMaxZ=i.bbox.max.z),e.hit&&(l.hitX=e.hit.x,l.hitY=e.hit.y,l.hitZ=e.hit.z,l.hitObjectId=e.hit.objectId),l}const Vx={build:Hx};async function Gx(i,e){const t=++i.loadToken;i._loading=!0,i._ready=!1,i.lastError=null;try{const n=await tc.asset(i,e,t,r=>r===i.loadToken);if(t!==i.loadToken)return;i._ready=n.ready,i._loading=!1}catch(n){if(t!==i.loadToken)return;throw i._loading=!1,i._ready=!1,i.lastError=n instanceof Error?n.message:String(n),n}}function Wx(i){Pr.fitToContent({bbox:i.bbox,target:i.target,activeCam:i.activeCam,controls:i.controls,mode:i.mode,fov:i.fov,perspCam:i.perspCam,orthoCam:i.orthoCam})}function Xx(i,e){return Vx.build({activeCam:i.activeCam,controls:i.controls,target:i.target,mode:i.mode,perspCam:i.perspCam,orthoCam:i.orthoCam,bbox:i.bbox,ready:i._ready,loading:i._loading},e)}function $x(i,e=!1){i.loadToken++,i.unbindWheelRelay?.(),i.unbindWheelRelay=null,i.controls?.dispose(),i.controls=null,tc.clearContent(i),tc.revokeBlob(i);for(const t of i.lights)i.scene.remove(t);i.lights=[],i.renderer.dispose(),e&&i.renderer.getContext()?.getExtension?.("WEBGL_lose_context")?.loseContext?.(),i._ready=!1}const Oi={runLoad:Gx,fitToContent:Wx,buildSnapshot:Xx,dispose:$x,pick:(i,e,t)=>_a.hit(i,e,t),setHoverAt:(i,e,t)=>_a.setHoverAt(i,e,t),clearHighlight:i=>_a.clearHighlight(i)};function jx(i,e){i.dprMax=Math.max(1,e||2)}function qx(i,e){i.renderer.toneMappingExposure=Number.isFinite(e)?e:Da}function Yx(i,e){i.fov=Number.isFinite(e)&&e>0?e:vs,i.perspCam.fov=i.fov,i.perspCam.updateProjectionMatrix()}function Kx(i,e){i.fitEnabled=e}function Zx(i,e){i.controls&&(i.controls.autoRotate=e)}function Jx(i,e){i.limits=Pr.mergeLimits(i.limits,e),Pr.applyLimitsToControls(i.controls,i.limits)}function Qx(i,e,t,n){Pr.setSpherical({activeCam:i.activeCam,controls:i.controls,target:i.target,limits:i.limits},e,t,n)}const Fi={setDprMax:jx,setExposure:qx,setFov:Yx,setFit:Kx,setAutoRotate:Zx,setOrbitLimits:Jx,setOrbitSpherical:Qx},vf={type:"change"},nc={type:"start"},yf={type:"end"},ya=new or,xf=new pi,eb=Math.cos(70*Au.DEG2RAD),Ot=new $,an=2*Math.PI,bt={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},ic=1e-6;class tb extends Wg{constructor(e,t=null){super(e,t),this.state=bt.NONE,this.target=new $,this.cursor=new $,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:ji.ROTATE,MIDDLE:ji.DOLLY,RIGHT:ji.PAN},this.touches={ONE:qi.ROTATE,TWO:qi.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new $,this._lastQuaternion=new Dn,this._lastTargetPosition=new $,this._quat=new Dn().setFromUnitVectors(e.up,new $(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new Rh,this._sphericalDelta=new Rh,this._scale=1,this._panOffset=new $,this._rotateStart=new Ye,this._rotateEnd=new Ye,this._rotateDelta=new Ye,this._panStart=new Ye,this._panEnd=new Ye,this._panDelta=new Ye,this._dollyStart=new Ye,this._dollyEnd=new Ye,this._dollyDelta=new Ye,this._dollyDirection=new $,this._mouse=new Ye,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=ib.bind(this),this._onPointerDown=nb.bind(this),this._onPointerUp=rb.bind(this),this._onContextMenu=hb.bind(this),this._onMouseWheel=ob.bind(this),this._onKeyDown=lb.bind(this),this._onTouchStart=cb.bind(this),this._onTouchMove=ub.bind(this),this._onMouseDown=sb.bind(this),this._onMouseMove=ab.bind(this),this._interceptControlDown=fb.bind(this),this._interceptControlUp=db.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}connect(e){super.connect(e),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(vf),this.update(),this.state=bt.NONE}update(e=null){const t=this.object.position;Ot.copy(t).sub(this.target),Ot.applyQuaternion(this._quat),this._spherical.setFromVector3(Ot),this.autoRotate&&this.state===bt.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let n=this.minAzimuthAngle,r=this.maxAzimuthAngle;isFinite(n)&&isFinite(r)&&(n<-Math.PI?n+=an:n>Math.PI&&(n-=an),r<-Math.PI?r+=an:r>Math.PI&&(r-=an),n<=r?this._spherical.theta=Math.max(n,Math.min(r,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(n+r)/2?Math.max(n,this._spherical.theta):Math.min(r,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let s=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),s=a!=this._spherical.radius}if(Ot.setFromSpherical(this._spherical),Ot.applyQuaternion(this._quatInverse),t.copy(this.target).add(Ot),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){const o=Ot.length();a=this._clampDistance(o*this._scale);const l=o-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),s=!!l}else if(this.object.isOrthographicCamera){const o=new $(this._mouse.x,this._mouse.y,0);o.unproject(this.object);const l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),s=l!==this.object.zoom;const c=new $(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=Ot.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(ya.origin.copy(this.object.position),ya.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(ya.direction))<eb?this.object.lookAt(this.target):(xf.setFromNormalAndCoplanarPoint(this.object.up,this.target),ya.intersectPlane(xf,this.target))))}else if(this.object.isOrthographicCamera){const a=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),a!==this.object.zoom&&(this.object.updateProjectionMatrix(),s=!0)}return this._scale=1,this._performCursorZoom=!1,s||this._lastPosition.distanceToSquared(this.object.position)>ic||8*(1-this._lastQuaternion.dot(this.object.quaternion))>ic||this._lastTargetPosition.distanceToSquared(this.target)>ic?(this.dispatchEvent(vf),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?an/60*this.autoRotateSpeed*e:an/60/60*this.autoRotateSpeed}_getZoomScale(e){const t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){Ot.setFromMatrixColumn(t,0),Ot.multiplyScalar(-e),this._panOffset.add(Ot)}_panUp(e,t){this.screenSpacePanning===!0?Ot.setFromMatrixColumn(t,1):(Ot.setFromMatrixColumn(t,0),Ot.crossVectors(this.object.up,Ot)),Ot.multiplyScalar(e),this._panOffset.add(Ot)}_pan(e,t){const n=this.domElement;if(this.object.isPerspectiveCamera){const r=this.object.position;Ot.copy(r).sub(this.target);let s=Ot.length();s*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*s/n.clientHeight,this.object.matrix),this._panUp(2*t*s/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const n=this.domElement.getBoundingClientRect(),r=e-n.left,s=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(s/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(an*this._rotateDelta.x/t.clientHeight),this._rotateUp(an*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(an*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-an*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(an*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-an*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){const t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(n*n+r*r);this._dollyStart.set(0,s)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{const n=this._getSecondPointerPosition(e),r=.5*(e.pageX+n.x),s=.5*(e.pageY+n.y);this._rotateEnd.set(r,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(an*this._rotateDelta.x/t.clientHeight),this._rotateUp(an*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){const t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,s),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let t=this._pointerPositions[e.pointerId];t===void 0&&(t=new Ye,this._pointerPositions[e.pointerId]=t),t.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){const t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){const t=e.deltaMode,n={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:n.deltaY*=16;break;case 2:n.deltaY*=100;break}return e.ctrlKey&&!this._controlActive&&(n.deltaY*=10),n}}function nb(i){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(i.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(i)&&(this._addPointer(i),i.pointerType==="touch"?this._onTouchStart(i):this._onMouseDown(i)))}function ib(i){this.enabled!==!1&&(i.pointerType==="touch"?this._onTouchMove(i):this._onMouseMove(i))}function rb(i){switch(this._removePointer(i),this._pointers.length){case 0:this.domElement.releasePointerCapture(i.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(yf),this.state=bt.NONE;break;case 1:const e=this._pointers[0],t=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:t.x,pageY:t.y});break}}function sb(i){let e;switch(i.button){case 0:e=this.mouseButtons.LEFT;break;case 1:e=this.mouseButtons.MIDDLE;break;case 2:e=this.mouseButtons.RIGHT;break;default:e=-1}switch(e){case ji.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(i),this.state=bt.DOLLY;break;case ji.ROTATE:if(i.ctrlKey||i.metaKey||i.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(i),this.state=bt.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(i),this.state=bt.ROTATE}break;case ji.PAN:if(i.ctrlKey||i.metaKey||i.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(i),this.state=bt.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(i),this.state=bt.PAN}break;default:this.state=bt.NONE}this.state!==bt.NONE&&this.dispatchEvent(nc)}function ab(i){switch(this.state){case bt.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(i);break;case bt.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(i);break;case bt.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(i);break}}function ob(i){this.enabled===!1||this.enableZoom===!1||this.state!==bt.NONE||(i.preventDefault(),this.dispatchEvent(nc),this._handleMouseWheel(this._customWheelEvent(i)),this.dispatchEvent(yf))}function lb(i){this.enabled!==!1&&this._handleKeyDown(i)}function cb(i){switch(this._trackPointer(i),this._pointers.length){case 1:switch(this.touches.ONE){case qi.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(i),this.state=bt.TOUCH_ROTATE;break;case qi.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(i),this.state=bt.TOUCH_PAN;break;default:this.state=bt.NONE}break;case 2:switch(this.touches.TWO){case qi.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(i),this.state=bt.TOUCH_DOLLY_PAN;break;case qi.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(i),this.state=bt.TOUCH_DOLLY_ROTATE;break;default:this.state=bt.NONE}break;default:this.state=bt.NONE}this.state!==bt.NONE&&this.dispatchEvent(nc)}function ub(i){switch(this._trackPointer(i),this.state){case bt.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(i),this.update();break;case bt.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(i),this.update();break;case bt.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(i),this.update();break;case bt.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(i),this.update();break;default:this.state=bt.NONE}}function hb(i){this.enabled!==!1&&i.preventDefault()}function fb(i){i.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function db(i){i.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function pb(i,e){i.mode=e;const t=i.activeCam.position.clone(),n=i.target.clone();i.activeCam=e===gn.Ortho?i.orthoCam:i.perspCam,i.activeCam.position.copy(t),i.controls?.dispose(),i.controls=new tb(i.activeCam,i.canvas),i.controls.enableDamping=!0,i.controls.dampingFactor=.08,i.controls.target.copy(n),i.controls.enablePan=!0,Pr.applyLimitsToControls(i.controls,i.limits),i.controls.update(),i.unbindWheelRelay||(i.unbindWheelRelay=Pr.bindWheelPageScrollRelay(i.canvas,()=>i.controls))}function mb(i,e,t){const n=Math.max(1,e),r=Math.max(1,t),s=Math.min(typeof window<"u"&&window.devicePixelRatio||1,i.dprMax);i.renderer.setPixelRatio(s),i.renderer.setSize(n,r,!1);const a=n/r;i.perspCam.aspect=a,i.perspCam.updateProjectionMatrix();const o=1.2;i.orthoCam.left=-o*a,i.orthoCam.right=o*a,i.orthoCam.top=o,i.orthoCam.bottom=-o,i.orthoCam.updateProjectionMatrix()}const bf={applyCameraMode:pb,resize:mb};class gb{constructor(e){this.controls=null,this.unbindWheelRelay=null,this.content=null,this.loader=new qy,this.loadToken=0,this.blobUrl=null,this.bbox=new Ln,this.target=new $,this._ready=!1,this._loading=!1,this.lastError=null,this.raycaster=new Gg,this.pointerNdc=new Ye,this.highlighted=null,this.prevEmissive=new Ze,this.prevEmissiveIntensity=0,this.asTuneCtx=()=>this,this.asViewCtx=()=>this,this.asOpsCtx=()=>this;const t=Lx(e);this.scene=t.scene,this.renderer=t.renderer,this.canvas=t.canvas,this.perspCam=t.perspCam,this.orthoCam=t.orthoCam,this.activeCam=t.activeCam,this.root=t.root,this.lights=t.lights,this.dprMax=t.dprMax,this.mode=t.mode,this.fov=t.fov,this.fitEnabled=t.fitEnabled,this.limits=t.limits,this.applyCameraMode(this.mode),t.autoRotate&&this.setAutoRotate(!0),this.canvas,this.perspCam,this.orthoCam,this.root,this.content,this.lights,this.loader,this.loadToken,this.blobUrl,this.dprMax,this.fov,this.fitEnabled,this.limits,this.bbox,this.target,this.raycaster,this.pointerNdc,this.highlighted,this.prevEmissive,this.prevEmissiveIntensity,this.unbindWheelRelay}get ready(){return this._ready}get loading(){return this._loading}get error(){return this.lastError}get isLost(){return this.renderer.getContext()?.isContextLost?.()??!1}setDprMax(e){Fi.setDprMax(this.asTuneCtx(),e)}setExposure(e){Fi.setExposure(this.asTuneCtx(),e)}setFov(e){Fi.setFov(this.asTuneCtx(),e)}setFit(e){Fi.setFit(this.asTuneCtx(),e)}setAutoRotate(e){Fi.setAutoRotate(this.asTuneCtx(),e)}setOrbitLimits(e){Fi.setOrbitLimits(this.asTuneCtx(),e)}setOrbitSpherical(e,t,n){Fi.setOrbitSpherical(this.asTuneCtx(),e,t,n)}applyCameraMode(e){bf.applyCameraMode(this.asViewCtx(),e)}resize(e,t){bf.resize(this.asViewCtx(),e,t)}async load(e){return Oi.runLoad(this.asOpsCtx(),e)}fitToContent(){Oi.fitToContent(this.asOpsCtx())}render(){this.controls?.update(),this.renderer.render(this.scene,this.activeCam)}pick(e,t){return Oi.pick(this.asOpsCtx(),e,t)}setHoverAt(e,t){return Oi.setHoverAt(this.asOpsCtx(),e,t)}clearHighlight(){Oi.clearHighlight(this.asOpsCtx())}snapshot(e){return Oi.buildSnapshot(this.asOpsCtx(),e)}dispose(e=!1){Oi.dispose(this.asOpsCtx(),e)}}function _b(i){return i.renderRoot?.querySelector("canvas")??null}async function Sf(i){if(i.releasing||i.runtime)return;const e=_b(i);if(e)try{i.runtime=new gb({canvas:e,dprMax:i.dprMax,camera:It.cameraMode(i.camera),fov:i.fov,exposure:i.exposure,autoRotate:!1,fit:i.fit,minDistance:i.minDistance,maxDistance:i.maxDistance,minPolar:An.degToRad(i.minPolar),maxPolar:An.degToRad(i.maxPolar)}),An.applyOrbitLimits(i),Ef(i),await An.run(i)}catch(t){An.emitError(i,t)}}function Mf(i){i.loadToken++,Hn.stopLoop(i),i.ready=!1,i.releasing=!0,i.runtime?.dispose(!1),i.runtime=null,i.releasing=!1}function vb(i){if(!i.inView&&i.releaseOffscreen){Mf(i);return}if(i.inView&&(!i.runtime||i.runtime.isLost)){Sf(i);return}i.syncPlayback()}function Ef(i){if(!i.runtime)return;const e=i.getBoundingClientRect(),t=Math.max(e.width,i.clientWidth,1),n=Math.max(e.height,i.clientHeight,1);i.runtime.resize(t,n),i.ready&&i.runtime.render()}const xa={ensureRuntime:Sf,releaseRuntime:Mf,syncVisibility:vb,syncSize:Ef};function Tf(i){const e=i.aspectRatio.trim();if(e){i.style.setProperty("--sonic-3d-ar",e.includes("/")?e:e.replace(":"," / "));return}i.style.removeProperty("--sonic-3d-ar")}function wf(i){i.formPublisher&&(i.formPublisher.offInternalMutation(i.onFormMutation),i.formPublisher=null)}function Af(i){wf(i);const e=ka.resolveFormProviderId(i,i.dataProvider);e&&(i.formPublisher=Gt.get(e),i.formPublisher.onInternalMutation(i.onFormMutation),i.onFormMutation())}function Rf(i){const e=ka.resolveOutProviderId(i,i.outDataProvider,i.dataProvider);i.outPublisher=e?Gt.get(e):null}function yb(i){Tf(i),i.resizeObserver=new ResizeObserver(()=>xa.syncSize(i)),i.resizeObserver.observe(i),i.intersectionObserver=new IntersectionObserver(e=>{i.inView=e.some(t=>t.isIntersecting),xa.syncVisibility(i)},{threshold:0}),i.intersectionObserver.observe(i),Af(i),Rf(i),requestAnimationFrame(()=>{(i.inView||!i.releaseOffscreen)&&xa.ensureRuntime(i)})}const gi={applyAspectRatio:Tf,unbindFormProvider:wf,bindFormProvider:Af,bindOutPublisher:Rf,firstUpdated:yb};function Cf(i,e){return!!i?._proxies_?.get(e)?.hasListener?.()}const Pf=["frameUrl","snapshot"];function Df(i){if(!i.outPublisher)return!1;if(i.frameOut)return!0;for(const e of Pf)if(Cf(i.outPublisher,e))return!0;return!1}function xb(i,e){return{url:URL.createObjectURL(e),blob:e,width:i.width,height:i.height,mime:e.type||Ac}}function bb(i){return new Promise(e=>{if(typeof i.toBlob!="function"){e(null);return}const t=n=>{if(!n){e(null);return}e(xb(i,n))};try{i.toBlob(t,Ac,pd)}catch{e(null)}})}function Sb(i,e){const t=i.outPublisher;if(t){try{t.frameUrl.set(e.url)}catch{}try{t.snapshot.set(e)}catch{}}}function Mb(i,e){if(i.snapshotBusy||!i.runtime||!Df(i))return;const t=Math.max(dd,Number.isFinite(i.snapshotInterval)&&i.snapshotInterval>0?i.snapshotInterval:wc);if(e-i.lastSnapshotAt<t)return;i.lastSnapshotAt=e,i.snapshotBusy=!0;const n=++i.snapshotSeq,r=i.runtime.renderer.domElement;bb(r).then(s=>{if(i.snapshotBusy=!1,!s||n!==i.snapshotSeq){s&&Ia([s.url]);return}Ia(i.frameUrls),i.frameUrls=[s.url],Sb(i,s)})}function Eb(i){i.snapshotSeq++,i.snapshotBusy=!1,Ia(i.frameUrls),i.frameUrls=[]}const rc={wantsFrameCapture:Df,maybeCapture:Mb,revokeAll:Eb,FRAME_KEYS:Pf};function Lf(i){if(i.outEventListeners>0||i.frameOut&&i.outPublisher)return!0;if(!i.outPublisher)return!1;for(const e of _d)if(Cf(i.outPublisher,e))return!0;return!1}function If(i,e){return!(!gd.includes(e)||!i.formPublisher||i.formPublisher!==i.outPublisher)}function Uf(i,e){return i.runtime?.snapshot({time:e,frame:i.frame,hovering:i.hovering?1:0,pointerX:i.pointerX,pointerY:i.pointerY,hit:i.lastHit})??{time:e,frame:i.frame,ready:0,loading:0,hovering:i.hovering?1:0,pointerX:i.pointerX,pointerY:i.pointerY,camX:0,camY:0,camZ:0,targetX:0,targetY:0,targetZ:0,fov:i.fov,zoom:1,distance:0,yaw:0,pitch:0}}function Tb(i,e){const t=i.outPublisher;if(t){for(const[n,r]of Object.entries(e))if(r!==void 0&&!If(i,n)&&!rc.FRAME_KEYS.includes(n))try{t[n].set(r)}catch{}}}function wb(i,e,t){if(i.outPublisher||i.bindOutPublisher(),!Lf(i)||!i.runtime)return;const n=Math.max(fd,i.outInterval||Tc);if(e-i.lastOutAt>=n){i.lastOutAt=e;const r=Uf(i,t);Tb(i,r);const s={detail:r,bubbles:!0,composed:!0};i.dispatchEvent(new CustomEvent("out",s))}rc.maybeCapture(i,e)}const Ab={hasOutConsumers:Lf,maybePublish:wb,buildOutput:Uf,shouldSkipFormControlOutWrite:If};function Nf(i,e){const t=i.getBoundingClientRect(),n=Math.max(t.width,1),r=Math.max(t.height,1);return{x:(e.clientX-t.left)/n,y:(e.clientY-t.top)/r}}function Rb(i,e){const t=Nf(i,e);i.pointerX=t.x,i.pointerY=t.y,i.pick&&i.runtime?.ready&&i.runtime.setHoverAt(t.x,t.y)}function Cb(i,e){const t=Nf(i,e);if(i.pointerX=t.x,i.pointerY=t.y,!i.pick||!i.runtime||e.button!==0)return;const n=i.runtime.pick(t.x,t.y);i.lastHit=n,n&&i.dispatchEvent(new CustomEvent("pick",{detail:n,bubbles:!0,composed:!0}))}function Pb(i){i.runtime?.ready&&(i.runtime.fitToContent(),i.runtime.render())}function Db(i){i.hovering=!0,i.syncPlayback()}function Lb(i){i.hovering=!1,i.runtime?.clearHighlight(),i.syncPlayback()}const fs={onMove:Rb,onDown:Cb,onDblClick:Pb,onEnter:Db,onLeave:Lb};var Ib=Object.defineProperty,Ct=(i,e,t,n)=>{for(var r=void 0,s=i.length-1,a;s>=0;s--)(a=i[s])&&(r=a(e,t,r)||r);return r&&Ib(e,t,r),r};class Rt extends Fr{constructor(){super(...arguments),this.src="",this.asset=null,this.camera=gn.Orbit,this.fov=vs,this.exposure=Da,this.minDistance=Rc,this.maxDistance=Cc,this.minPolar=Pc,this.maxPolar=md,this.autoRotate=!1,this.fit=!0,this.pick=!1,this.play=!0,this.playOnHover=!1,this.releaseOffscreen=!0,this.dprMax=2,this.aspectRatio="",this.dataProvider="",this.outDataProvider="",this.outInterval=Tc,this.snapshotInterval=wc,this.frameOut=!1}}Ct([wt()],Rt.prototype,"src"),Ct([wt({attribute:!1})],Rt.prototype,"asset"),Ct([wt({reflect:!0})],Rt.prototype,"camera"),Ct([wt({type:Number})],Rt.prototype,"fov"),Ct([wt({type:Number})],Rt.prototype,"exposure"),Ct([wt({type:Number,attribute:"min-distance"})],Rt.prototype,"minDistance"),Ct([wt({type:Number,attribute:"max-distance"})],Rt.prototype,"maxDistance"),Ct([wt({type:Number,attribute:"min-polar"})],Rt.prototype,"minPolar"),Ct([wt({type:Number,attribute:"max-polar"})],Rt.prototype,"maxPolar"),Ct([wt({type:Boolean,attribute:"auto-rotate"})],Rt.prototype,"autoRotate"),Ct([wt({type:Boolean})],Rt.prototype,"fit"),Ct([wt({type:Boolean})],Rt.prototype,"pick"),Ct([wt({type:Boolean,reflect:!0})],Rt.prototype,"play"),Ct([wt({type:Boolean,attribute:"play-on-hover"})],Rt.prototype,"playOnHover"),Ct([wt({type:Boolean,attribute:"release-offscreen"})],Rt.prototype,"releaseOffscreen"),Ct([wt({type:Number,attribute:"dpr-max"})],Rt.prototype,"dprMax"),Ct([wt({type:String,attribute:"aspect-ratio"})],Rt.prototype,"aspectRatio"),Ct([wt({type:String})],Rt.prototype,"dataProvider"),Ct([wt({type:String,attribute:"out-data-provider"})],Rt.prototype,"outDataProvider"),Ct([wt({type:Number,attribute:"out-interval"})],Rt.prototype,"outInterval"),Ct([wt({type:Number,attribute:"snapshot-interval"})],Rt.prototype,"snapshotInterval"),Ct([wt({type:Boolean,attribute:"frame-out"})],Rt.prototype,"frameOut");const Ub=Bf`
|
|
3873
|
+
}`;class Wy{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){const n=new yh(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=n}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new fi({vertexShader:Vy,fragmentShader:Gy,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Jt(new la(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class Xy extends Ei{constructor(e,t){super();const n=this;let r=null,s=1,a=null,o="local-floor",l=1,c=null,h=null,u=null,f=null,d=null,_=null;const b=typeof XRWebGLBinding<"u",g=new Wy,m={},S=t.getContextAttributes();let y=null,M=null;const T=[],R=[],k=new Ye;let B=null;const C=new en;C.viewport=new pt;const D=new en;D.viewport=new pt;const V=[C,D],K=new Ng;let J=null,se=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(ie){let ce=T[ie];return ce===void 0&&(ce=new vl,T[ie]=ce),ce.getTargetRaySpace()},this.getControllerGrip=function(ie){let ce=T[ie];return ce===void 0&&(ce=new vl,T[ie]=ce),ce.getGripSpace()},this.getHand=function(ie){let ce=T[ie];return ce===void 0&&(ce=new vl,T[ie]=ce),ce.getHandSpace()};function he(ie){const ce=R.indexOf(ie.inputSource);if(ce===-1)return;const z=T[ce];z!==void 0&&(z.update(ie.inputSource,ie.frame,c||a),z.dispatchEvent({type:ie.type,data:ie.inputSource}))}function Q(){r.removeEventListener("select",he),r.removeEventListener("selectstart",he),r.removeEventListener("selectend",he),r.removeEventListener("squeeze",he),r.removeEventListener("squeezestart",he),r.removeEventListener("squeezeend",he),r.removeEventListener("end",Q),r.removeEventListener("inputsourceschange",de);for(let ie=0;ie<T.length;ie++){const ce=R[ie];ce!==null&&(R[ie]=null,T[ie].disconnect(ce))}J=null,se=null,g.reset();for(const ie in m)delete m[ie];e.setRenderTarget(y),d=null,f=null,u=null,r=null,M=null,Be.stop(),n.isPresenting=!1,e.setPixelRatio(B),e.setSize(k.width,k.height,!1),n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(ie){s=ie,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(ie){o=ie,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return c||a},this.setReferenceSpace=function(ie){c=ie},this.getBaseLayer=function(){return f!==null?f:d},this.getBinding=function(){return u===null&&b&&(u=new XRWebGLBinding(r,t)),u},this.getFrame=function(){return _},this.getSession=function(){return r},this.setSession=async function(ie){if(r=ie,r!==null){if(y=e.getRenderTarget(),r.addEventListener("select",he),r.addEventListener("selectstart",he),r.addEventListener("selectend",he),r.addEventListener("squeeze",he),r.addEventListener("squeezestart",he),r.addEventListener("squeezeend",he),r.addEventListener("end",Q),r.addEventListener("inputsourceschange",de),S.xrCompatible!==!0&&await t.makeXRCompatible(),B=e.getPixelRatio(),e.getSize(k),b&&"createProjectionLayer"in XRWebGLBinding.prototype){let z=null,j=null,W=null;S.depth&&(W=S.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,z=S.stencil?$r:Xr,j=S.stencil?Wr:Mi);const le={colorFormat:t.RGBA8,depthFormat:W,scaleFactor:s};u=this.getBinding(),f=u.createProjectionLayer(le),r.updateRenderState({layers:[f]}),e.setPixelRatio(1),e.setSize(f.textureWidth,f.textureHeight,!1),M=new Ti(f.textureWidth,f.textureHeight,{format:fn,type:Cn,depthTexture:new vh(f.textureWidth,f.textureHeight,j,void 0,void 0,void 0,void 0,void 0,void 0,z),stencilBuffer:S.stencil,colorSpace:e.outputColorSpace,samples:S.antialias?4:0,resolveDepthBuffer:f.ignoreDepthValues===!1,resolveStencilBuffer:f.ignoreDepthValues===!1})}else{const z={antialias:S.antialias,alpha:!0,depth:S.depth,stencil:S.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(r,t,z),r.updateRenderState({baseLayer:d}),e.setPixelRatio(1),e.setSize(d.framebufferWidth,d.framebufferHeight,!1),M=new Ti(d.framebufferWidth,d.framebufferHeight,{format:fn,type:Cn,colorSpace:e.outputColorSpace,stencilBuffer:S.stencil,resolveDepthBuffer:d.ignoreDepthValues===!1,resolveStencilBuffer:d.ignoreDepthValues===!1})}M.isXRRenderTarget=!0,this.setFoveation(l),c=null,a=await r.requestReferenceSpace(o),Be.setContext(r),Be.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(r!==null)return r.environmentBlendMode},this.getDepthTexture=function(){return g.getDepthTexture()};function de(ie){for(let ce=0;ce<ie.removed.length;ce++){const z=ie.removed[ce],j=R.indexOf(z);j>=0&&(R[j]=null,T[j].disconnect(z))}for(let ce=0;ce<ie.added.length;ce++){const z=ie.added[ce];let j=R.indexOf(z);if(j===-1){for(let le=0;le<T.length;le++)if(le>=R.length){R.push(z),j=le;break}else if(R[le]===null){R[le]=z,j=le;break}if(j===-1)break}const W=T[j];W&&W.connect(z)}}const ne=new $,ue=new $;function Te(ie,ce,z){ne.setFromMatrixPosition(ce.matrixWorld),ue.setFromMatrixPosition(z.matrixWorld);const j=ne.distanceTo(ue),W=ce.projectionMatrix.elements,le=z.projectionMatrix.elements,be=W[14]/(W[10]-1),U=W[14]/(W[10]+1),ee=(W[9]+1)/W[5],fe=(W[9]-1)/W[5],ye=(W[8]-1)/W[0],Se=(le[8]+1)/le[0],ze=be*ye,_e=be*Se,xe=j/(-ye+Se),Xe=xe*-ye;if(ce.matrixWorld.decompose(ie.position,ie.quaternion,ie.scale),ie.translateX(Xe),ie.translateZ(xe),ie.matrixWorld.compose(ie.position,ie.quaternion,ie.scale),ie.matrixWorldInverse.copy(ie.matrixWorld).invert(),W[10]===-1)ie.projectionMatrix.copy(ce.projectionMatrix),ie.projectionMatrixInverse.copy(ce.projectionMatrixInverse);else{const De=be+xe,N=U+xe,w=ze-Xe,q=_e+(j-Xe),re=ee*U/N*De,pe=fe*U/N*De;ie.projectionMatrix.makePerspective(w,q,re,pe,De,N),ie.projectionMatrixInverse.copy(ie.projectionMatrix).invert()}}function ke(ie,ce){ce===null?ie.matrixWorld.copy(ie.matrix):ie.matrixWorld.multiplyMatrices(ce.matrixWorld,ie.matrix),ie.matrixWorldInverse.copy(ie.matrixWorld).invert()}this.updateCamera=function(ie){if(r===null)return;let ce=ie.near,z=ie.far;g.texture!==null&&(g.depthNear>0&&(ce=g.depthNear),g.depthFar>0&&(z=g.depthFar)),K.near=D.near=C.near=ce,K.far=D.far=C.far=z,(J!==K.near||se!==K.far)&&(r.updateRenderState({depthNear:K.near,depthFar:K.far}),J=K.near,se=K.far),K.layers.mask=ie.layers.mask|6,C.layers.mask=K.layers.mask&3,D.layers.mask=K.layers.mask&5;const j=ie.parent,W=K.cameras;ke(K,j);for(let le=0;le<W.length;le++)ke(W[le],j);W.length===2?Te(K,C,D):K.projectionMatrix.copy(C.projectionMatrix),O(ie,K,j)};function O(ie,ce,z){z===null?ie.matrix.copy(ce.matrixWorld):(ie.matrix.copy(z.matrixWorld),ie.matrix.invert(),ie.matrix.multiply(ce.matrixWorld)),ie.matrix.decompose(ie.position,ie.quaternion,ie.scale),ie.updateMatrixWorld(!0),ie.projectionMatrix.copy(ce.projectionMatrix),ie.projectionMatrixInverse.copy(ce.projectionMatrixInverse),ie.isPerspectiveCamera&&(ie.fov=tr*2*Math.atan(1/ie.projectionMatrix.elements[5]),ie.zoom=1)}this.getCamera=function(){return K},this.getFoveation=function(){if(!(f===null&&d===null))return l},this.setFoveation=function(ie){l=ie,f!==null&&(f.fixedFoveation=ie),d!==null&&d.fixedFoveation!==void 0&&(d.fixedFoveation=ie)},this.hasDepthSensing=function(){return g.texture!==null},this.getDepthSensingMesh=function(){return g.getMesh(K)},this.getCameraTexture=function(ie){return m[ie]};let H=null;function we(ie,ce){if(h=ce.getViewerPose(c||a),_=ce,h!==null){const z=h.views;d!==null&&(e.setRenderTargetFramebuffer(M,d.framebuffer),e.setRenderTarget(M));let j=!1;z.length!==K.cameras.length&&(K.cameras.length=0,j=!0);for(let U=0;U<z.length;U++){const ee=z[U];let fe=null;if(d!==null)fe=d.getViewport(ee);else{const Se=u.getViewSubImage(f,ee);fe=Se.viewport,U===0&&(e.setRenderTargetTextures(M,Se.colorTexture,Se.depthStencilTexture),e.setRenderTarget(M))}let ye=V[U];ye===void 0&&(ye=new en,ye.layers.enable(U),ye.viewport=new pt,V[U]=ye),ye.matrix.fromArray(ee.transform.matrix),ye.matrix.decompose(ye.position,ye.quaternion,ye.scale),ye.projectionMatrix.fromArray(ee.projectionMatrix),ye.projectionMatrixInverse.copy(ye.projectionMatrix).invert(),ye.viewport.set(fe.x,fe.y,fe.width,fe.height),U===0&&(K.matrix.copy(ye.matrix),K.matrix.decompose(K.position,K.quaternion,K.scale)),j===!0&&K.cameras.push(ye)}const W=r.enabledFeatures;if(W&&W.includes("depth-sensing")&&r.depthUsage=="gpu-optimized"&&b){u=n.getBinding();const U=u.getDepthInformation(z[0]);U&&U.isValid&&U.texture&&g.init(U,r.renderState)}if(W&&W.includes("camera-access")&&b){e.state.unbindTexture(),u=n.getBinding();for(let U=0;U<z.length;U++){const ee=z[U].camera;if(ee){let fe=m[ee];fe||(fe=new yh,m[ee]=fe);const ye=u.getCameraImage(ee);fe.sourceTexture=ye}}}}for(let z=0;z<T.length;z++){const j=R[z],W=T[z];j!==null&&W!==void 0&&W.update(j,ce,c||a)}H&&H(ie,ce),ce.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:ce}),_=null}const Be=new Dh;Be.setAnimationLoop(we),this.setAnimationLoop=function(ie){H=ie},this.dispose=function(){}}}const Ui=new Un,$y=new et;function jy(i,e){function t(g,m){g.matrixAutoUpdate===!0&&g.updateMatrix(),m.value.copy(g.matrix)}function n(g,m){m.color.getRGB(g.fogColor.value,Yu(i)),m.isFog?(g.fogNear.value=m.near,g.fogFar.value=m.far):m.isFogExp2&&(g.fogDensity.value=m.density)}function r(g,m,S,y,M){m.isMeshBasicMaterial||m.isMeshLambertMaterial?s(g,m):m.isMeshToonMaterial?(s(g,m),u(g,m)):m.isMeshPhongMaterial?(s(g,m),h(g,m)):m.isMeshStandardMaterial?(s(g,m),f(g,m),m.isMeshPhysicalMaterial&&d(g,m,M)):m.isMeshMatcapMaterial?(s(g,m),_(g,m)):m.isMeshDepthMaterial?s(g,m):m.isMeshDistanceMaterial?(s(g,m),b(g,m)):m.isMeshNormalMaterial?s(g,m):m.isLineBasicMaterial?(a(g,m),m.isLineDashedMaterial&&o(g,m)):m.isPointsMaterial?l(g,m,S,y):m.isSpriteMaterial?c(g,m):m.isShadowMaterial?(g.color.value.copy(m.color),g.opacity.value=m.opacity):m.isShaderMaterial&&(m.uniformsNeedUpdate=!1)}function s(g,m){g.opacity.value=m.opacity,m.color&&g.diffuse.value.copy(m.color),m.emissive&&g.emissive.value.copy(m.emissive).multiplyScalar(m.emissiveIntensity),m.map&&(g.map.value=m.map,t(m.map,g.mapTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.bumpMap&&(g.bumpMap.value=m.bumpMap,t(m.bumpMap,g.bumpMapTransform),g.bumpScale.value=m.bumpScale,m.side===sn&&(g.bumpScale.value*=-1)),m.normalMap&&(g.normalMap.value=m.normalMap,t(m.normalMap,g.normalMapTransform),g.normalScale.value.copy(m.normalScale),m.side===sn&&g.normalScale.value.negate()),m.displacementMap&&(g.displacementMap.value=m.displacementMap,t(m.displacementMap,g.displacementMapTransform),g.displacementScale.value=m.displacementScale,g.displacementBias.value=m.displacementBias),m.emissiveMap&&(g.emissiveMap.value=m.emissiveMap,t(m.emissiveMap,g.emissiveMapTransform)),m.specularMap&&(g.specularMap.value=m.specularMap,t(m.specularMap,g.specularMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest);const S=e.get(m),y=S.envMap,M=S.envMapRotation;y&&(g.envMap.value=y,Ui.copy(M),Ui.x*=-1,Ui.y*=-1,Ui.z*=-1,y.isCubeTexture&&y.isRenderTargetTexture===!1&&(Ui.y*=-1,Ui.z*=-1),g.envMapRotation.value.setFromMatrix4($y.makeRotationFromEuler(Ui)),g.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=m.reflectivity,g.ior.value=m.ior,g.refractionRatio.value=m.refractionRatio),m.lightMap&&(g.lightMap.value=m.lightMap,g.lightMapIntensity.value=m.lightMapIntensity,t(m.lightMap,g.lightMapTransform)),m.aoMap&&(g.aoMap.value=m.aoMap,g.aoMapIntensity.value=m.aoMapIntensity,t(m.aoMap,g.aoMapTransform))}function a(g,m){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,m.map&&(g.map.value=m.map,t(m.map,g.mapTransform))}function o(g,m){g.dashSize.value=m.dashSize,g.totalSize.value=m.dashSize+m.gapSize,g.scale.value=m.scale}function l(g,m,S,y){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,g.size.value=m.size*S,g.scale.value=y*.5,m.map&&(g.map.value=m.map,t(m.map,g.uvTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest)}function c(g,m){g.diffuse.value.copy(m.color),g.opacity.value=m.opacity,g.rotation.value=m.rotation,m.map&&(g.map.value=m.map,t(m.map,g.mapTransform)),m.alphaMap&&(g.alphaMap.value=m.alphaMap,t(m.alphaMap,g.alphaMapTransform)),m.alphaTest>0&&(g.alphaTest.value=m.alphaTest)}function h(g,m){g.specular.value.copy(m.specular),g.shininess.value=Math.max(m.shininess,1e-4)}function u(g,m){m.gradientMap&&(g.gradientMap.value=m.gradientMap)}function f(g,m){g.metalness.value=m.metalness,m.metalnessMap&&(g.metalnessMap.value=m.metalnessMap,t(m.metalnessMap,g.metalnessMapTransform)),g.roughness.value=m.roughness,m.roughnessMap&&(g.roughnessMap.value=m.roughnessMap,t(m.roughnessMap,g.roughnessMapTransform)),m.envMap&&(g.envMapIntensity.value=m.envMapIntensity)}function d(g,m,S){g.ior.value=m.ior,m.sheen>0&&(g.sheenColor.value.copy(m.sheenColor).multiplyScalar(m.sheen),g.sheenRoughness.value=m.sheenRoughness,m.sheenColorMap&&(g.sheenColorMap.value=m.sheenColorMap,t(m.sheenColorMap,g.sheenColorMapTransform)),m.sheenRoughnessMap&&(g.sheenRoughnessMap.value=m.sheenRoughnessMap,t(m.sheenRoughnessMap,g.sheenRoughnessMapTransform))),m.clearcoat>0&&(g.clearcoat.value=m.clearcoat,g.clearcoatRoughness.value=m.clearcoatRoughness,m.clearcoatMap&&(g.clearcoatMap.value=m.clearcoatMap,t(m.clearcoatMap,g.clearcoatMapTransform)),m.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=m.clearcoatRoughnessMap,t(m.clearcoatRoughnessMap,g.clearcoatRoughnessMapTransform)),m.clearcoatNormalMap&&(g.clearcoatNormalMap.value=m.clearcoatNormalMap,t(m.clearcoatNormalMap,g.clearcoatNormalMapTransform),g.clearcoatNormalScale.value.copy(m.clearcoatNormalScale),m.side===sn&&g.clearcoatNormalScale.value.negate())),m.dispersion>0&&(g.dispersion.value=m.dispersion),m.iridescence>0&&(g.iridescence.value=m.iridescence,g.iridescenceIOR.value=m.iridescenceIOR,g.iridescenceThicknessMinimum.value=m.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=m.iridescenceThicknessRange[1],m.iridescenceMap&&(g.iridescenceMap.value=m.iridescenceMap,t(m.iridescenceMap,g.iridescenceMapTransform)),m.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=m.iridescenceThicknessMap,t(m.iridescenceThicknessMap,g.iridescenceThicknessMapTransform))),m.transmission>0&&(g.transmission.value=m.transmission,g.transmissionSamplerMap.value=S.texture,g.transmissionSamplerSize.value.set(S.width,S.height),m.transmissionMap&&(g.transmissionMap.value=m.transmissionMap,t(m.transmissionMap,g.transmissionMapTransform)),g.thickness.value=m.thickness,m.thicknessMap&&(g.thicknessMap.value=m.thicknessMap,t(m.thicknessMap,g.thicknessMapTransform)),g.attenuationDistance.value=m.attenuationDistance,g.attenuationColor.value.copy(m.attenuationColor)),m.anisotropy>0&&(g.anisotropyVector.value.set(m.anisotropy*Math.cos(m.anisotropyRotation),m.anisotropy*Math.sin(m.anisotropyRotation)),m.anisotropyMap&&(g.anisotropyMap.value=m.anisotropyMap,t(m.anisotropyMap,g.anisotropyMapTransform))),g.specularIntensity.value=m.specularIntensity,g.specularColor.value.copy(m.specularColor),m.specularColorMap&&(g.specularColorMap.value=m.specularColorMap,t(m.specularColorMap,g.specularColorMapTransform)),m.specularIntensityMap&&(g.specularIntensityMap.value=m.specularIntensityMap,t(m.specularIntensityMap,g.specularIntensityMapTransform))}function _(g,m){m.matcap&&(g.matcap.value=m.matcap)}function b(g,m){const S=e.get(m).light;g.referencePosition.value.setFromMatrixPosition(S.matrixWorld),g.nearDistance.value=S.shadow.camera.near,g.farDistance.value=S.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:r}}function qy(i,e,t,n){let r={},s={},a=[];const o=i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS);function l(S,y){const M=y.program;n.uniformBlockBinding(S,M)}function c(S,y){let M=r[S.id];M===void 0&&(_(S),M=h(S),r[S.id]=M,S.addEventListener("dispose",g));const T=y.program;n.updateUBOMapping(S,T);const R=e.render.frame;s[S.id]!==R&&(f(S),s[S.id]=R)}function h(S){const y=u();S.__bindingPointIndex=y;const M=i.createBuffer(),T=S.__size,R=S.usage;return i.bindBuffer(i.UNIFORM_BUFFER,M),i.bufferData(i.UNIFORM_BUFFER,T,R),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,y,M),M}function u(){for(let S=0;S<o;S++)if(a.indexOf(S)===-1)return a.push(S),S;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function f(S){const y=r[S.id],M=S.uniforms,T=S.__cache;i.bindBuffer(i.UNIFORM_BUFFER,y);for(let R=0,k=M.length;R<k;R++){const B=Array.isArray(M[R])?M[R]:[M[R]];for(let C=0,D=B.length;C<D;C++){const V=B[C];if(d(V,R,C,T)===!0){const K=V.__offset,J=Array.isArray(V.value)?V.value:[V.value];let se=0;for(let he=0;he<J.length;he++){const Q=J[he],de=b(Q);typeof Q=="number"||typeof Q=="boolean"?(V.__data[0]=Q,i.bufferSubData(i.UNIFORM_BUFFER,K+se,V.__data)):Q.isMatrix3?(V.__data[0]=Q.elements[0],V.__data[1]=Q.elements[1],V.__data[2]=Q.elements[2],V.__data[3]=0,V.__data[4]=Q.elements[3],V.__data[5]=Q.elements[4],V.__data[6]=Q.elements[5],V.__data[7]=0,V.__data[8]=Q.elements[6],V.__data[9]=Q.elements[7],V.__data[10]=Q.elements[8],V.__data[11]=0):(Q.toArray(V.__data,se),se+=de.storage/Float32Array.BYTES_PER_ELEMENT)}i.bufferSubData(i.UNIFORM_BUFFER,K,V.__data)}}}i.bindBuffer(i.UNIFORM_BUFFER,null)}function d(S,y,M,T){const R=S.value,k=y+"_"+M;if(T[k]===void 0)return typeof R=="number"||typeof R=="boolean"?T[k]=R:T[k]=R.clone(),!0;{const B=T[k];if(typeof R=="number"||typeof R=="boolean"){if(B!==R)return T[k]=R,!0}else if(B.equals(R)===!1)return B.copy(R),!0}return!1}function _(S){const y=S.uniforms;let M=0;const T=16;for(let k=0,B=y.length;k<B;k++){const C=Array.isArray(y[k])?y[k]:[y[k]];for(let D=0,V=C.length;D<V;D++){const K=C[D],J=Array.isArray(K.value)?K.value:[K.value];for(let se=0,he=J.length;se<he;se++){const Q=J[se],de=b(Q),ne=M%T,ue=ne%de.boundary,Te=ne+ue;M+=ue,Te!==0&&T-Te<de.storage&&(M+=T-Te),K.__data=new Float32Array(de.storage/Float32Array.BYTES_PER_ELEMENT),K.__offset=M,M+=de.storage}}}const R=M%T;return R>0&&(M+=T-R),S.__size=M,S.__cache={},this}function b(S){const y={boundary:0,storage:0};return typeof S=="number"||typeof S=="boolean"?(y.boundary=4,y.storage=4):S.isVector2?(y.boundary=8,y.storage=8):S.isVector3||S.isColor?(y.boundary=16,y.storage=12):S.isVector4?(y.boundary=16,y.storage=16):S.isMatrix3?(y.boundary=48,y.storage=48):S.isMatrix4?(y.boundary=64,y.storage=64):S.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",S),y}function g(S){const y=S.target;y.removeEventListener("dispose",g);const M=a.indexOf(y.__bindingPointIndex);a.splice(M,1),i.deleteBuffer(r[y.id]),delete r[y.id],delete s[y.id]}function m(){for(const S in r)i.deleteBuffer(r[S]);a=[],r={},s={}}return{bind:l,update:c,dispose:m}}class Yy{constructor(e={}){const{canvas:t=Am(),context:n=null,depth:r=!0,stencil:s=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:u=!1,reversedDepthBuffer:f=!1}=e;this.isWebGLRenderer=!0;let d;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");d=n.getContextAttributes().alpha}else d=a;const _=new Uint32Array(4),b=new Int32Array(4);let g=null,m=null;const S=[],y=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=ri,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const M=this;let T=!1;this._outputColorSpace=Bt;let R=0,k=0,B=null,C=-1,D=null;const V=new pt,K=new pt;let J=null;const se=new Ze(0);let he=0,Q=t.width,de=t.height,ne=1,ue=null,Te=null;const ke=new pt(0,0,Q,de),O=new pt(0,0,Q,de);let H=!1;const we=new Tl;let Be=!1,ie=!1;const ce=new et,z=new $,j=new pt,W={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let le=!1;function be(){return B===null?ne:1}let U=n;function ee(P,G){return t.getContext(P,G)}try{const P={alpha:!0,depth:r,stencil:s,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:h,failIfMajorPerformanceCaveat:u};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${Ja}`),t.addEventListener("webglcontextlost",p,!1),t.addEventListener("webglcontextrestored",v,!1),t.addEventListener("webglcontextcreationerror",E,!1),U===null){const G="webgl2";if(U=ee(G,P),U===null)throw ee(G)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(P){throw console.error("THREE.WebGLRenderer: "+P.message),P}let fe,ye,Se,ze,_e,xe,Xe,De,N,w,q,re,pe,ae,Ve,Ae,oe,We,Me,Re,je,Oe,Ce,A;function x(){fe=new s0(U),fe.init(),Oe=new Hy(U,fe),ye=new Jv(U,fe,e,Oe),Se=new By(U,fe),ye.reversedDepthBuffer&&f&&Se.buffers.depth.setReversed(!0),ze=new l0(U),_e=new wy,xe=new zy(U,fe,Se,_e,ye,Oe,ze),Xe=new e0(M),De=new r0(M),N=new qg(U),Ce=new Kv(U,N),w=new a0(U,N,ze,Ce),q=new u0(U,w,N,ze),Me=new c0(U,ye,xe),Ae=new Qv(_e),re=new Ty(M,Xe,De,fe,ye,Ce,Ae),pe=new jy(M,_e),ae=new Ry,Ve=new Uy(fe),We=new Yv(M,Xe,De,Se,q,d,l),oe=new Fy(M,q,ye),A=new qy(U,ze,ye,Se),Re=new Zv(U,fe,ze),je=new o0(U,fe,ze),ze.programs=re.programs,M.capabilities=ye,M.extensions=fe,M.properties=_e,M.renderLists=ae,M.shadowMap=oe,M.state=Se,M.info=ze}x();const L=new Xy(M,U);this.xr=L,this.getContext=function(){return U},this.getContextAttributes=function(){return U.getContextAttributes()},this.forceContextLoss=function(){const P=fe.get("WEBGL_lose_context");P&&P.loseContext()},this.forceContextRestore=function(){const P=fe.get("WEBGL_lose_context");P&&P.restoreContext()},this.getPixelRatio=function(){return ne},this.setPixelRatio=function(P){P!==void 0&&(ne=P,this.setSize(Q,de,!1))},this.getSize=function(P){return P.set(Q,de)},this.setSize=function(P,G,Z=!0){if(L.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}Q=P,de=G,t.width=Math.floor(P*ne),t.height=Math.floor(G*ne),Z===!0&&(t.style.width=P+"px",t.style.height=G+"px"),this.setViewport(0,0,P,G)},this.getDrawingBufferSize=function(P){return P.set(Q*ne,de*ne).floor()},this.setDrawingBufferSize=function(P,G,Z){Q=P,de=G,ne=Z,t.width=Math.floor(P*Z),t.height=Math.floor(G*Z),this.setViewport(0,0,P,G)},this.getCurrentViewport=function(P){return P.copy(V)},this.getViewport=function(P){return P.copy(ke)},this.setViewport=function(P,G,Z,te){P.isVector4?ke.set(P.x,P.y,P.z,P.w):ke.set(P,G,Z,te),Se.viewport(V.copy(ke).multiplyScalar(ne).round())},this.getScissor=function(P){return P.copy(O)},this.setScissor=function(P,G,Z,te){P.isVector4?O.set(P.x,P.y,P.z,P.w):O.set(P,G,Z,te),Se.scissor(K.copy(O).multiplyScalar(ne).round())},this.getScissorTest=function(){return H},this.setScissorTest=function(P){Se.setScissorTest(H=P)},this.setOpaqueSort=function(P){ue=P},this.setTransparentSort=function(P){Te=P},this.getClearColor=function(P){return P.copy(We.getClearColor())},this.setClearColor=function(){We.setClearColor(...arguments)},this.getClearAlpha=function(){return We.getClearAlpha()},this.setClearAlpha=function(){We.setClearAlpha(...arguments)},this.clear=function(P=!0,G=!0,Z=!0){let te=0;if(P){let Y=!1;if(B!==null){const Ee=B.texture.format;Y=Ee===_o||Ee===go||Ee===mo}if(Y){const Ee=B.texture.type,Le=Ee===Cn||Ee===Mi||Ee===Vr||Ee===Wr||Ee===ho||Ee===fo,Fe=We.getClearColor(),ge=We.getClearAlpha(),Ue=Fe.r,He=Fe.g,Pe=Fe.b;Le?(_[0]=Ue,_[1]=He,_[2]=Pe,_[3]=ge,U.clearBufferuiv(U.COLOR,0,_)):(b[0]=Ue,b[1]=He,b[2]=Pe,b[3]=ge,U.clearBufferiv(U.COLOR,0,b))}else te|=U.COLOR_BUFFER_BIT}G&&(te|=U.DEPTH_BUFFER_BIT),Z&&(te|=U.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),U.clear(te)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",p,!1),t.removeEventListener("webglcontextrestored",v,!1),t.removeEventListener("webglcontextcreationerror",E,!1),We.dispose(),ae.dispose(),Ve.dispose(),_e.dispose(),Xe.dispose(),De.dispose(),q.dispose(),Ce.dispose(),A.dispose(),re.dispose(),L.dispose(),L.removeEventListener("sessionstart",Ne),L.removeEventListener("sessionend",ht),ot.stop()};function p(P){P.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),T=!0}function v(){console.log("THREE.WebGLRenderer: Context Restored."),T=!1;const P=ze.autoReset,G=oe.enabled,Z=oe.autoUpdate,te=oe.needsUpdate,Y=oe.type;x(),ze.autoReset=P,oe.enabled=G,oe.autoUpdate=Z,oe.needsUpdate=te,oe.type=Y}function E(P){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",P.statusMessage)}function I(P){const G=P.target;G.removeEventListener("dispose",I),F(G)}function F(P){X(P),_e.remove(P)}function X(P){const G=_e.get(P).programs;G!==void 0&&(G.forEach(function(Z){re.releaseProgram(Z)}),P.isShaderMaterial&&re.releaseShaderCache(P))}this.renderBufferDirect=function(P,G,Z,te,Y,Ee){G===null&&(G=W);const Le=Y.isMesh&&Y.matrixWorld.determinant()<0,Fe=ki(P,G,Z,te,Y);Se.setMaterial(te,Le);let ge=Z.index,Ue=1;if(te.wireframe===!0){if(ge=w.getWireframeAttribute(Z),ge===void 0)return;Ue=2}const He=Z.drawRange,Pe=Z.attributes.position;let qe=He.start*Ue,st=(He.start+He.count)*Ue;Ee!==null&&(qe=Math.max(qe,Ee.start*Ue),st=Math.min(st,(Ee.start+Ee.count)*Ue)),ge!==null?(qe=Math.max(qe,0),st=Math.min(st,ge.count)):Pe!=null&&(qe=Math.max(qe,0),st=Math.min(st,Pe.count));const at=st-qe;if(at<0||at===1/0)return;Ce.setup(Y,te,Fe,Z,ge);let ft,tt=Re;if(ge!==null&&(ft=N.get(ge),tt=je,tt.setIndex(ft)),Y.isMesh)te.wireframe===!0?(Se.setLineWidth(te.wireframeLinewidth*be()),tt.setMode(U.LINES)):tt.setMode(U.TRIANGLES);else if(Y.isLine){let Ge=te.linewidth;Ge===void 0&&(Ge=1),Se.setLineWidth(Ge*be()),Y.isLineSegments?tt.setMode(U.LINES):Y.isLineLoop?tt.setMode(U.LINE_LOOP):tt.setMode(U.LINE_STRIP)}else Y.isPoints?tt.setMode(U.POINTS):Y.isSprite&&tt.setMode(U.TRIANGLES);if(Y.isBatchedMesh)if(Y._multiDrawInstances!==null)Jr("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),tt.renderMultiDrawInstances(Y._multiDrawStarts,Y._multiDrawCounts,Y._multiDrawCount,Y._multiDrawInstances);else if(fe.get("WEBGL_multi_draw"))tt.renderMultiDraw(Y._multiDrawStarts,Y._multiDrawCounts,Y._multiDrawCount);else{const Ge=Y._multiDrawStarts,Je=Y._multiDrawCounts,Ke=Y._multiDrawCount,jt=ge?N.get(ge).bytesPerElement:1,Tt=_e.get(te).currentProgram.getUniforms();for(let Vt=0;Vt<Ke;Vt++)Tt.setValue(U,"_gl_DrawID",Vt),tt.render(Ge[Vt]/jt,Je[Vt])}else if(Y.isInstancedMesh)tt.renderInstances(qe,at,Y.count);else if(Z.isInstancedBufferGeometry){const Ge=Z._maxInstanceCount!==void 0?Z._maxInstanceCount:1/0,Je=Math.min(Z.instanceCount,Ge);tt.renderInstances(qe,at,Je)}else tt.render(qe,at)};function me(P,G,Z){P.transparent===!0&&P.side===Rn&&P.forceSinglePass===!1?(P.side=sn,P.needsUpdate=!0,Dt(P,G,Z),P.side=Gn,P.needsUpdate=!0,Dt(P,G,Z),P.side=Rn):Dt(P,G,Z)}this.compile=function(P,G,Z=null){Z===null&&(Z=P),m=Ve.get(Z),m.init(G),y.push(m),Z.traverseVisible(function(Y){Y.isLight&&Y.layers.test(G.layers)&&(m.pushLight(Y),Y.castShadow&&m.pushShadow(Y))}),P!==Z&&P.traverseVisible(function(Y){Y.isLight&&Y.layers.test(G.layers)&&(m.pushLight(Y),Y.castShadow&&m.pushShadow(Y))}),m.setupLights();const te=new Set;return P.traverse(function(Y){if(!(Y.isMesh||Y.isPoints||Y.isLine||Y.isSprite))return;const Ee=Y.material;if(Ee)if(Array.isArray(Ee))for(let Le=0;Le<Ee.length;Le++){const Fe=Ee[Le];me(Fe,Z,Y),te.add(Fe)}else me(Ee,Z,Y),te.add(Ee)}),m=y.pop(),te},this.compileAsync=function(P,G,Z=null){const te=this.compile(P,G,Z);return new Promise(Y=>{function Ee(){if(te.forEach(function(Le){_e.get(Le).currentProgram.isReady()&&te.delete(Le)}),te.size===0){Y(P);return}setTimeout(Ee,10)}fe.get("KHR_parallel_shader_compile")!==null?Ee():setTimeout(Ee,10)})};let ve=null;function $e(P){ve&&ve(P)}function Ne(){ot.stop()}function ht(){ot.start()}const ot=new Dh;ot.setAnimationLoop($e),typeof self<"u"&&ot.setContext(self),this.setAnimationLoop=function(P){ve=P,L.setAnimationLoop(P),P===null?ot.stop():ot.start()},L.addEventListener("sessionstart",Ne),L.addEventListener("sessionend",ht),this.render=function(P,G){if(G!==void 0&&G.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(T===!0)return;if(P.matrixWorldAutoUpdate===!0&&P.updateMatrixWorld(),G.parent===null&&G.matrixWorldAutoUpdate===!0&&G.updateMatrixWorld(),L.enabled===!0&&L.isPresenting===!0&&(L.cameraAutoUpdate===!0&&L.updateCamera(G),G=L.getCamera()),P.isScene===!0&&P.onBeforeRender(M,P,G,B),m=Ve.get(P,y.length),m.init(G),y.push(m),ce.multiplyMatrices(G.projectionMatrix,G.matrixWorldInverse),we.setFromProjectionMatrix(ce,Pn,G.reversedDepth),ie=this.localClippingEnabled,Be=Ae.init(this.clippingPlanes,ie),g=ae.get(P,S.length),g.init(),S.push(g),L.enabled===!0&&L.isPresenting===!0){const Ee=M.xr.getDepthSensingMesh();Ee!==null&>(Ee,G,-1/0,M.sortObjects)}gt(P,G,0,M.sortObjects),g.finish(),M.sortObjects===!0&&g.sort(ue,Te),le=L.enabled===!1||L.isPresenting===!1||L.hasDepthSensing()===!1,le&&We.addToRenderList(g,P),this.info.render.frame++,Be===!0&&Ae.beginShadows();const Z=m.state.shadowsArray;oe.render(Z,P,G),Be===!0&&Ae.endShadows(),this.info.autoReset===!0&&this.info.reset();const te=g.opaque,Y=g.transmissive;if(m.setupLights(),G.isArrayCamera){const Ee=G.cameras;if(Y.length>0)for(let Le=0,Fe=Ee.length;Le<Fe;Le++){const ge=Ee[Le];ct(te,Y,P,ge)}le&&We.render(P);for(let Le=0,Fe=Ee.length;Le<Fe;Le++){const ge=Ee[Le];Mt(g,P,ge,ge.viewport)}}else Y.length>0&&ct(te,Y,P,G),le&&We.render(P),Mt(g,P,G);B!==null&&k===0&&(xe.updateMultisampleRenderTarget(B),xe.updateRenderTargetMipmap(B)),P.isScene===!0&&P.onAfterRender(M,P,G),Ce.resetDefaultState(),C=-1,D=null,y.pop(),y.length>0?(m=y[y.length-1],Be===!0&&Ae.setGlobalState(M.clippingPlanes,m.state.camera)):m=null,S.pop(),S.length>0?g=S[S.length-1]:g=null};function gt(P,G,Z,te){if(P.visible===!1)return;if(P.layers.test(G.layers)){if(P.isGroup)Z=P.renderOrder;else if(P.isLOD)P.autoUpdate===!0&&P.update(G);else if(P.isLight)m.pushLight(P),P.castShadow&&m.pushShadow(P);else if(P.isSprite){if(!P.frustumCulled||we.intersectsSprite(P)){te&&j.setFromMatrixPosition(P.matrixWorld).applyMatrix4(ce);const Le=q.update(P),Fe=P.material;Fe.visible&&g.push(P,Le,Fe,Z,j.z,null)}}else if((P.isMesh||P.isLine||P.isPoints)&&(!P.frustumCulled||we.intersectsObject(P))){const Le=q.update(P),Fe=P.material;if(te&&(P.boundingSphere!==void 0?(P.boundingSphere===null&&P.computeBoundingSphere(),j.copy(P.boundingSphere.center)):(Le.boundingSphere===null&&Le.computeBoundingSphere(),j.copy(Le.boundingSphere.center)),j.applyMatrix4(P.matrixWorld).applyMatrix4(ce)),Array.isArray(Fe)){const ge=Le.groups;for(let Ue=0,He=ge.length;Ue<He;Ue++){const Pe=ge[Ue],qe=Fe[Pe.materialIndex];qe&&qe.visible&&g.push(P,Le,qe,Z,j.z,Pe)}}else Fe.visible&&g.push(P,Le,Fe,Z,j.z,null)}}const Ee=P.children;for(let Le=0,Fe=Ee.length;Le<Fe;Le++)gt(Ee[Le],G,Z,te)}function Mt(P,G,Z,te){const Y=P.opaque,Ee=P.transmissive,Le=P.transparent;m.setupLightsView(Z),Be===!0&&Ae.setGlobalState(M.clippingPlanes,Z),te&&Se.viewport(V.copy(te)),Y.length>0&&St(Y,G,Z),Ee.length>0&&St(Ee,G,Z),Le.length>0&&St(Le,G,Z),Se.buffers.depth.setTest(!0),Se.buffers.depth.setMask(!0),Se.buffers.color.setMask(!0),Se.setPolygonOffset(!1)}function ct(P,G,Z,te){if((Z.isScene===!0?Z.overrideMaterial:null)!==null)return;m.state.transmissionRenderTarget[te.id]===void 0&&(m.state.transmissionRenderTarget[te.id]=new Ti(1,1,{generateMipmaps:!0,type:fe.has("EXT_color_buffer_half_float")||fe.has("EXT_color_buffer_float")?Gr:Cn,minFilter:Wn,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:lt.workingColorSpace}));const Ee=m.state.transmissionRenderTarget[te.id],Le=te.viewport||V;Ee.setSize(Le.z*M.transmissionResolutionScale,Le.w*M.transmissionResolutionScale);const Fe=M.getRenderTarget(),ge=M.getActiveCubeFace(),Ue=M.getActiveMipmapLevel();M.setRenderTarget(Ee),M.getClearColor(se),he=M.getClearAlpha(),he<1&&M.setClearColor(16777215,.5),M.clear(),le&&We.render(Z);const He=M.toneMapping;M.toneMapping=ri;const Pe=te.viewport;if(te.viewport!==void 0&&(te.viewport=void 0),m.setupLightsView(te),Be===!0&&Ae.setGlobalState(M.clippingPlanes,te),St(P,Z,te),xe.updateMultisampleRenderTarget(Ee),xe.updateRenderTargetMipmap(Ee),fe.has("WEBGL_multisampled_render_to_texture")===!1){let qe=!1;for(let st=0,at=G.length;st<at;st++){const ft=G[st],tt=ft.object,Ge=ft.geometry,Je=ft.material,Ke=ft.group;if(Je.side===Rn&&tt.layers.test(te.layers)){const jt=Je.side;Je.side=sn,Je.needsUpdate=!0,nn(tt,Z,te,Ge,Je,Ke),Je.side=jt,Je.needsUpdate=!0,qe=!0}}qe===!0&&(xe.updateMultisampleRenderTarget(Ee),xe.updateRenderTargetMipmap(Ee))}M.setRenderTarget(Fe,ge,Ue),M.setClearColor(se,he),Pe!==void 0&&(te.viewport=Pe),M.toneMapping=He}function St(P,G,Z){const te=G.isScene===!0?G.overrideMaterial:null;for(let Y=0,Ee=P.length;Y<Ee;Y++){const Le=P[Y],Fe=Le.object,ge=Le.geometry,Ue=Le.group;let He=Le.material;He.allowOverride===!0&&te!==null&&(He=te),Fe.layers.test(Z.layers)&&nn(Fe,G,Z,ge,He,Ue)}}function nn(P,G,Z,te,Y,Ee){P.onBeforeRender(M,G,Z,te,Y,Ee),P.modelViewMatrix.multiplyMatrices(Z.matrixWorldInverse,P.matrixWorld),P.normalMatrix.getNormalMatrix(P.modelViewMatrix),Y.onBeforeRender(M,G,Z,te,P,Ee),Y.transparent===!0&&Y.side===Rn&&Y.forceSinglePass===!1?(Y.side=sn,Y.needsUpdate=!0,M.renderBufferDirect(Z,G,te,Y,P,Ee),Y.side=Gn,Y.needsUpdate=!0,M.renderBufferDirect(Z,G,te,Y,P,Ee),Y.side=Rn):M.renderBufferDirect(Z,G,te,Y,P,Ee),P.onAfterRender(M,G,Z,te,Y,Ee)}function Dt(P,G,Z){G.isScene!==!0&&(G=W);const te=_e.get(P),Y=m.state.lights,Ee=m.state.shadowsArray,Le=Y.state.version,Fe=re.getParameters(P,Y.state,Ee,G,Z),ge=re.getProgramCacheKey(Fe);let Ue=te.programs;te.environment=P.isMeshStandardMaterial?G.environment:null,te.fog=G.fog,te.envMap=(P.isMeshStandardMaterial?De:Xe).get(P.envMap||te.environment),te.envMapRotation=te.environment!==null&&P.envMap===null?G.environmentRotation:P.envMapRotation,Ue===void 0&&(P.addEventListener("dispose",I),Ue=new Map,te.programs=Ue);let He=Ue.get(ge);if(He!==void 0){if(te.currentProgram===He&&te.lightsStateVersion===Le)return Et(P,Fe),He}else Fe.uniforms=re.getUniforms(P),P.onBeforeCompile(Fe,M),He=re.acquireProgram(Fe,ge),Ue.set(ge,He),te.uniforms=Fe.uniforms;const Pe=te.uniforms;return(!P.isShaderMaterial&&!P.isRawShaderMaterial||P.clipping===!0)&&(Pe.clippingPlanes=Ae.uniform),Et(P,Fe),te.needsLights=vi(P),te.lightsStateVersion=Le,te.needsLights&&(Pe.ambientLightColor.value=Y.state.ambient,Pe.lightProbe.value=Y.state.probe,Pe.directionalLights.value=Y.state.directional,Pe.directionalLightShadows.value=Y.state.directionalShadow,Pe.spotLights.value=Y.state.spot,Pe.spotLightShadows.value=Y.state.spotShadow,Pe.rectAreaLights.value=Y.state.rectArea,Pe.ltc_1.value=Y.state.rectAreaLTC1,Pe.ltc_2.value=Y.state.rectAreaLTC2,Pe.pointLights.value=Y.state.point,Pe.pointLightShadows.value=Y.state.pointShadow,Pe.hemisphereLights.value=Y.state.hemi,Pe.directionalShadowMap.value=Y.state.directionalShadowMap,Pe.directionalShadowMatrix.value=Y.state.directionalShadowMatrix,Pe.spotShadowMap.value=Y.state.spotShadowMap,Pe.spotLightMatrix.value=Y.state.spotLightMatrix,Pe.spotLightMap.value=Y.state.spotLightMap,Pe.pointShadowMap.value=Y.state.pointShadowMap,Pe.pointShadowMatrix.value=Y.state.pointShadowMatrix),te.currentProgram=He,te.uniformsList=null,He}function hn(P){if(P.uniformsList===null){const G=P.currentProgram.getUniforms();P.uniformsList=ma.seqWithValue(G.seq,P.uniforms)}return P.uniformsList}function Et(P,G){const Z=_e.get(P);Z.outputColorSpace=G.outputColorSpace,Z.batching=G.batching,Z.batchingColor=G.batchingColor,Z.instancing=G.instancing,Z.instancingColor=G.instancingColor,Z.instancingMorph=G.instancingMorph,Z.skinning=G.skinning,Z.morphTargets=G.morphTargets,Z.morphNormals=G.morphNormals,Z.morphColors=G.morphColors,Z.morphTargetsCount=G.morphTargetsCount,Z.numClippingPlanes=G.numClippingPlanes,Z.numIntersection=G.numClipIntersection,Z.vertexAlphas=G.vertexAlphas,Z.vertexTangents=G.vertexTangents,Z.toneMapping=G.toneMapping}function ki(P,G,Z,te,Y){G.isScene!==!0&&(G=W),xe.resetTextureUnits();const Ee=G.fog,Le=te.isMeshStandardMaterial?G.environment:null,Fe=B===null?M.outputColorSpace:B.isXRRenderTarget===!0?B.texture.colorSpace:Kt,ge=(te.isMeshStandardMaterial?De:Xe).get(te.envMap||Le),Ue=te.vertexColors===!0&&!!Z.attributes.color&&Z.attributes.color.itemSize===4,He=!!Z.attributes.tangent&&(!!te.normalMap||te.anisotropy>0),Pe=!!Z.morphAttributes.position,qe=!!Z.morphAttributes.normal,st=!!Z.morphAttributes.color;let at=ri;te.toneMapped&&(B===null||B.isXRRenderTarget===!0)&&(at=M.toneMapping);const ft=Z.morphAttributes.position||Z.morphAttributes.normal||Z.morphAttributes.color,tt=ft!==void 0?ft.length:0,Ge=_e.get(te),Je=m.state.lights;if(Be===!0&&(ie===!0||P!==D)){const rn=P===D&&te.id===C;Ae.setState(te,P,rn)}let Ke=!1;te.version===Ge.__version?(Ge.needsLights&&Ge.lightsStateVersion!==Je.state.version||Ge.outputColorSpace!==Fe||Y.isBatchedMesh&&Ge.batching===!1||!Y.isBatchedMesh&&Ge.batching===!0||Y.isBatchedMesh&&Ge.batchingColor===!0&&Y.colorTexture===null||Y.isBatchedMesh&&Ge.batchingColor===!1&&Y.colorTexture!==null||Y.isInstancedMesh&&Ge.instancing===!1||!Y.isInstancedMesh&&Ge.instancing===!0||Y.isSkinnedMesh&&Ge.skinning===!1||!Y.isSkinnedMesh&&Ge.skinning===!0||Y.isInstancedMesh&&Ge.instancingColor===!0&&Y.instanceColor===null||Y.isInstancedMesh&&Ge.instancingColor===!1&&Y.instanceColor!==null||Y.isInstancedMesh&&Ge.instancingMorph===!0&&Y.morphTexture===null||Y.isInstancedMesh&&Ge.instancingMorph===!1&&Y.morphTexture!==null||Ge.envMap!==ge||te.fog===!0&&Ge.fog!==Ee||Ge.numClippingPlanes!==void 0&&(Ge.numClippingPlanes!==Ae.numPlanes||Ge.numIntersection!==Ae.numIntersection)||Ge.vertexAlphas!==Ue||Ge.vertexTangents!==He||Ge.morphTargets!==Pe||Ge.morphNormals!==qe||Ge.morphColors!==st||Ge.toneMapping!==at||Ge.morphTargetsCount!==tt)&&(Ke=!0):(Ke=!0,Ge.__version=te.version);let jt=Ge.currentProgram;Ke===!0&&(jt=Dt(te,G,Y));let Tt=!1,Vt=!1,wn=!1;const dt=jt.getUniforms(),Wt=Ge.uniforms;if(Se.useProgram(jt.program)&&(Tt=!0,Vt=!0,wn=!0),te.id!==C&&(C=te.id,Vt=!0),Tt||D!==P){Se.buffers.depth.getReversed()&&P.reversedDepth!==!0&&(P._reversedDepth=!0,P.updateProjectionMatrix()),dt.setValue(U,"projectionMatrix",P.projectionMatrix),dt.setValue(U,"viewMatrix",P.matrixWorldInverse);const on=dt.map.cameraPosition;on!==void 0&&on.setValue(U,z.setFromMatrixPosition(P.matrixWorld)),ye.logarithmicDepthBuffer&&dt.setValue(U,"logDepthBufFC",2/(Math.log(P.far+1)/Math.LN2)),(te.isMeshPhongMaterial||te.isMeshToonMaterial||te.isMeshLambertMaterial||te.isMeshBasicMaterial||te.isMeshStandardMaterial||te.isShaderMaterial)&&dt.setValue(U,"isOrthographic",P.isOrthographicCamera===!0),D!==P&&(D=P,Vt=!0,wn=!0)}if(Y.isSkinnedMesh){dt.setOptional(U,Y,"bindMatrix"),dt.setOptional(U,Y,"bindMatrixInverse");const rn=Y.skeleton;rn&&(rn.boneTexture===null&&rn.computeBoneTexture(),dt.setValue(U,"boneTexture",rn.boneTexture,xe))}Y.isBatchedMesh&&(dt.setOptional(U,Y,"batchingTexture"),dt.setValue(U,"batchingTexture",Y._matricesTexture,xe),dt.setOptional(U,Y,"batchingIdTexture"),dt.setValue(U,"batchingIdTexture",Y._indirectTexture,xe),dt.setOptional(U,Y,"batchingColorTexture"),Y._colorsTexture!==null&&dt.setValue(U,"batchingColorTexture",Y._colorsTexture,xe));const Ft=Z.morphAttributes;if((Ft.position!==void 0||Ft.normal!==void 0||Ft.color!==void 0)&&Me.update(Y,Z,jt),(Vt||Ge.receiveShadow!==Y.receiveShadow)&&(Ge.receiveShadow=Y.receiveShadow,dt.setValue(U,"receiveShadow",Y.receiveShadow)),te.isMeshGouraudMaterial&&te.envMap!==null&&(Wt.envMap.value=ge,Wt.flipEnvMap.value=ge.isCubeTexture&&ge.isRenderTargetTexture===!1?-1:1),te.isMeshStandardMaterial&&te.envMap===null&&G.environment!==null&&(Wt.envMapIntensity.value=G.environmentIntensity),Vt&&(dt.setValue(U,"toneMappingExposure",M.toneMappingExposure),Ge.needsLights&&Bn(Wt,wn),Ee&&te.fog===!0&&pe.refreshFogUniforms(Wt,Ee),pe.refreshMaterialUniforms(Wt,te,ne,de,m.state.transmissionRenderTarget[P.id]),ma.upload(U,hn(Ge),Wt,xe)),te.isShaderMaterial&&te.uniformsNeedUpdate===!0&&(ma.upload(U,hn(Ge),Wt,xe),te.uniformsNeedUpdate=!1),te.isSpriteMaterial&&dt.setValue(U,"center",Y.center),dt.setValue(U,"modelViewMatrix",Y.modelViewMatrix),dt.setValue(U,"normalMatrix",Y.normalMatrix),dt.setValue(U,"modelMatrix",Y.matrixWorld),te.isShaderMaterial||te.isRawShaderMaterial){const rn=te.uniformsGroups;for(let on=0,cc=rn.length;on<cc;on++){const Bi=rn[on];A.update(Bi,jt),A.bind(Bi,jt)}}return jt}function Bn(P,G){P.ambientLightColor.needsUpdate=G,P.lightProbe.needsUpdate=G,P.directionalLights.needsUpdate=G,P.directionalLightShadows.needsUpdate=G,P.pointLights.needsUpdate=G,P.pointLightShadows.needsUpdate=G,P.spotLights.needsUpdate=G,P.spotLightShadows.needsUpdate=G,P.rectAreaLights.needsUpdate=G,P.hemisphereLights.needsUpdate=G}function vi(P){return P.isMeshLambertMaterial||P.isMeshToonMaterial||P.isMeshPhongMaterial||P.isMeshStandardMaterial||P.isShadowMaterial||P.isShaderMaterial&&P.lights===!0}this.getActiveCubeFace=function(){return R},this.getActiveMipmapLevel=function(){return k},this.getRenderTarget=function(){return B},this.setRenderTargetTextures=function(P,G,Z){const te=_e.get(P);te.__autoAllocateDepthBuffer=P.resolveDepthBuffer===!1,te.__autoAllocateDepthBuffer===!1&&(te.__useRenderToTexture=!1),_e.get(P.texture).__webglTexture=G,_e.get(P.depthTexture).__webglTexture=te.__autoAllocateDepthBuffer?void 0:Z,te.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(P,G){const Z=_e.get(P);Z.__webglFramebuffer=G,Z.__useDefaultFramebuffer=G===void 0};const ac=U.createFramebuffer();this.setRenderTarget=function(P,G=0,Z=0){B=P,R=G,k=Z;let te=!0,Y=null,Ee=!1,Le=!1;if(P){const ge=_e.get(P);if(ge.__useDefaultFramebuffer!==void 0)Se.bindFramebuffer(U.FRAMEBUFFER,null),te=!1;else if(ge.__webglFramebuffer===void 0)xe.setupRenderTarget(P);else if(ge.__hasExternalTextures)xe.rebindTextures(P,_e.get(P.texture).__webglTexture,_e.get(P.depthTexture).__webglTexture);else if(P.depthBuffer){const Pe=P.depthTexture;if(ge.__boundDepthTexture!==Pe){if(Pe!==null&&_e.has(Pe)&&(P.width!==Pe.image.width||P.height!==Pe.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");xe.setupDepthRenderbuffer(P)}}const Ue=P.texture;(Ue.isData3DTexture||Ue.isDataArrayTexture||Ue.isCompressedArrayTexture)&&(Le=!0);const He=_e.get(P).__webglFramebuffer;P.isWebGLCubeRenderTarget?(Array.isArray(He[G])?Y=He[G][Z]:Y=He[G],Ee=!0):P.samples>0&&xe.useMultisampledRTT(P)===!1?Y=_e.get(P).__webglMultisampledFramebuffer:Array.isArray(He)?Y=He[Z]:Y=He,V.copy(P.viewport),K.copy(P.scissor),J=P.scissorTest}else V.copy(ke).multiplyScalar(ne).floor(),K.copy(O).multiplyScalar(ne).floor(),J=H;if(Z!==0&&(Y=ac),Se.bindFramebuffer(U.FRAMEBUFFER,Y)&&te&&Se.drawBuffers(P,Y),Se.viewport(V),Se.scissor(K),Se.setScissorTest(J),Ee){const ge=_e.get(P.texture);U.framebufferTexture2D(U.FRAMEBUFFER,U.COLOR_ATTACHMENT0,U.TEXTURE_CUBE_MAP_POSITIVE_X+G,ge.__webglTexture,Z)}else if(Le){const ge=G;for(let Ue=0;Ue<P.textures.length;Ue++){const He=_e.get(P.textures[Ue]);U.framebufferTextureLayer(U.FRAMEBUFFER,U.COLOR_ATTACHMENT0+Ue,He.__webglTexture,Z,ge)}}else if(P!==null&&Z!==0){const ge=_e.get(P.texture);U.framebufferTexture2D(U.FRAMEBUFFER,U.COLOR_ATTACHMENT0,U.TEXTURE_2D,ge.__webglTexture,Z)}C=-1},this.readRenderTargetPixels=function(P,G,Z,te,Y,Ee,Le,Fe=0){if(!(P&&P.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ge=_e.get(P).__webglFramebuffer;if(P.isWebGLCubeRenderTarget&&Le!==void 0&&(ge=ge[Le]),ge){Se.bindFramebuffer(U.FRAMEBUFFER,ge);try{const Ue=P.textures[Fe],He=Ue.format,Pe=Ue.type;if(!ye.textureFormatReadable(He)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!ye.textureTypeReadable(Pe)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}G>=0&&G<=P.width-te&&Z>=0&&Z<=P.height-Y&&(P.textures.length>1&&U.readBuffer(U.COLOR_ATTACHMENT0+Fe),U.readPixels(G,Z,te,Y,Oe.convert(He),Oe.convert(Pe),Ee))}finally{const Ue=B!==null?_e.get(B).__webglFramebuffer:null;Se.bindFramebuffer(U.FRAMEBUFFER,Ue)}}},this.readRenderTargetPixelsAsync=async function(P,G,Z,te,Y,Ee,Le,Fe=0){if(!(P&&P.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let ge=_e.get(P).__webglFramebuffer;if(P.isWebGLCubeRenderTarget&&Le!==void 0&&(ge=ge[Le]),ge)if(G>=0&&G<=P.width-te&&Z>=0&&Z<=P.height-Y){Se.bindFramebuffer(U.FRAMEBUFFER,ge);const Ue=P.textures[Fe],He=Ue.format,Pe=Ue.type;if(!ye.textureFormatReadable(He))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!ye.textureTypeReadable(Pe))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const qe=U.createBuffer();U.bindBuffer(U.PIXEL_PACK_BUFFER,qe),U.bufferData(U.PIXEL_PACK_BUFFER,Ee.byteLength,U.STREAM_READ),P.textures.length>1&&U.readBuffer(U.COLOR_ATTACHMENT0+Fe),U.readPixels(G,Z,te,Y,Oe.convert(He),Oe.convert(Pe),0);const st=B!==null?_e.get(B).__webglFramebuffer:null;Se.bindFramebuffer(U.FRAMEBUFFER,st);const at=U.fenceSync(U.SYNC_GPU_COMMANDS_COMPLETE,0);return U.flush(),await Rm(U,at,4),U.bindBuffer(U.PIXEL_PACK_BUFFER,qe),U.getBufferSubData(U.PIXEL_PACK_BUFFER,0,Ee),U.deleteBuffer(qe),U.deleteSync(at),Ee}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(P,G=null,Z=0){const te=Math.pow(2,-Z),Y=Math.floor(P.image.width*te),Ee=Math.floor(P.image.height*te),Le=G!==null?G.x:0,Fe=G!==null?G.y:0;xe.setTexture2D(P,0),U.copyTexSubImage2D(U.TEXTURE_2D,Z,0,0,Le,Fe,Y,Ee),Se.unbindTexture()};const oc=U.createFramebuffer(),lc=U.createFramebuffer();this.copyTextureToTexture=function(P,G,Z=null,te=null,Y=0,Ee=null){Ee===null&&(Y!==0?(Jr("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Ee=Y,Y=0):Ee=0);let Le,Fe,ge,Ue,He,Pe,qe,st,at;const ft=P.isCompressedTexture?P.mipmaps[Ee]:P.image;if(Z!==null)Le=Z.max.x-Z.min.x,Fe=Z.max.y-Z.min.y,ge=Z.isBox3?Z.max.z-Z.min.z:1,Ue=Z.min.x,He=Z.min.y,Pe=Z.isBox3?Z.min.z:0;else{const Ft=Math.pow(2,-Y);Le=Math.floor(ft.width*Ft),Fe=Math.floor(ft.height*Ft),P.isDataArrayTexture?ge=ft.depth:P.isData3DTexture?ge=Math.floor(ft.depth*Ft):ge=1,Ue=0,He=0,Pe=0}te!==null?(qe=te.x,st=te.y,at=te.z):(qe=0,st=0,at=0);const tt=Oe.convert(G.format),Ge=Oe.convert(G.type);let Je;G.isData3DTexture?(xe.setTexture3D(G,0),Je=U.TEXTURE_3D):G.isDataArrayTexture||G.isCompressedArrayTexture?(xe.setTexture2DArray(G,0),Je=U.TEXTURE_2D_ARRAY):(xe.setTexture2D(G,0),Je=U.TEXTURE_2D),U.pixelStorei(U.UNPACK_FLIP_Y_WEBGL,G.flipY),U.pixelStorei(U.UNPACK_PREMULTIPLY_ALPHA_WEBGL,G.premultiplyAlpha),U.pixelStorei(U.UNPACK_ALIGNMENT,G.unpackAlignment);const Ke=U.getParameter(U.UNPACK_ROW_LENGTH),jt=U.getParameter(U.UNPACK_IMAGE_HEIGHT),Tt=U.getParameter(U.UNPACK_SKIP_PIXELS),Vt=U.getParameter(U.UNPACK_SKIP_ROWS),wn=U.getParameter(U.UNPACK_SKIP_IMAGES);U.pixelStorei(U.UNPACK_ROW_LENGTH,ft.width),U.pixelStorei(U.UNPACK_IMAGE_HEIGHT,ft.height),U.pixelStorei(U.UNPACK_SKIP_PIXELS,Ue),U.pixelStorei(U.UNPACK_SKIP_ROWS,He),U.pixelStorei(U.UNPACK_SKIP_IMAGES,Pe);const dt=P.isDataArrayTexture||P.isData3DTexture,Wt=G.isDataArrayTexture||G.isData3DTexture;if(P.isDepthTexture){const Ft=_e.get(P),rn=_e.get(G),on=_e.get(Ft.__renderTarget),cc=_e.get(rn.__renderTarget);Se.bindFramebuffer(U.READ_FRAMEBUFFER,on.__webglFramebuffer),Se.bindFramebuffer(U.DRAW_FRAMEBUFFER,cc.__webglFramebuffer);for(let Bi=0;Bi<ge;Bi++)dt&&(U.framebufferTextureLayer(U.READ_FRAMEBUFFER,U.COLOR_ATTACHMENT0,_e.get(P).__webglTexture,Y,Pe+Bi),U.framebufferTextureLayer(U.DRAW_FRAMEBUFFER,U.COLOR_ATTACHMENT0,_e.get(G).__webglTexture,Ee,at+Bi)),U.blitFramebuffer(Ue,He,Le,Fe,qe,st,Le,Fe,U.DEPTH_BUFFER_BIT,U.NEAREST);Se.bindFramebuffer(U.READ_FRAMEBUFFER,null),Se.bindFramebuffer(U.DRAW_FRAMEBUFFER,null)}else if(Y!==0||P.isRenderTargetTexture||_e.has(P)){const Ft=_e.get(P),rn=_e.get(G);Se.bindFramebuffer(U.READ_FRAMEBUFFER,oc),Se.bindFramebuffer(U.DRAW_FRAMEBUFFER,lc);for(let on=0;on<ge;on++)dt?U.framebufferTextureLayer(U.READ_FRAMEBUFFER,U.COLOR_ATTACHMENT0,Ft.__webglTexture,Y,Pe+on):U.framebufferTexture2D(U.READ_FRAMEBUFFER,U.COLOR_ATTACHMENT0,U.TEXTURE_2D,Ft.__webglTexture,Y),Wt?U.framebufferTextureLayer(U.DRAW_FRAMEBUFFER,U.COLOR_ATTACHMENT0,rn.__webglTexture,Ee,at+on):U.framebufferTexture2D(U.DRAW_FRAMEBUFFER,U.COLOR_ATTACHMENT0,U.TEXTURE_2D,rn.__webglTexture,Ee),Y!==0?U.blitFramebuffer(Ue,He,Le,Fe,qe,st,Le,Fe,U.COLOR_BUFFER_BIT,U.NEAREST):Wt?U.copyTexSubImage3D(Je,Ee,qe,st,at+on,Ue,He,Le,Fe):U.copyTexSubImage2D(Je,Ee,qe,st,Ue,He,Le,Fe);Se.bindFramebuffer(U.READ_FRAMEBUFFER,null),Se.bindFramebuffer(U.DRAW_FRAMEBUFFER,null)}else Wt?P.isDataTexture||P.isData3DTexture?U.texSubImage3D(Je,Ee,qe,st,at,Le,Fe,ge,tt,Ge,ft.data):G.isCompressedArrayTexture?U.compressedTexSubImage3D(Je,Ee,qe,st,at,Le,Fe,ge,tt,ft.data):U.texSubImage3D(Je,Ee,qe,st,at,Le,Fe,ge,tt,Ge,ft):P.isDataTexture?U.texSubImage2D(U.TEXTURE_2D,Ee,qe,st,Le,Fe,tt,Ge,ft.data):P.isCompressedTexture?U.compressedTexSubImage2D(U.TEXTURE_2D,Ee,qe,st,ft.width,ft.height,tt,ft.data):U.texSubImage2D(U.TEXTURE_2D,Ee,qe,st,Le,Fe,tt,Ge,ft);U.pixelStorei(U.UNPACK_ROW_LENGTH,Ke),U.pixelStorei(U.UNPACK_IMAGE_HEIGHT,jt),U.pixelStorei(U.UNPACK_SKIP_PIXELS,Tt),U.pixelStorei(U.UNPACK_SKIP_ROWS,Vt),U.pixelStorei(U.UNPACK_SKIP_IMAGES,wn),Ee===0&&G.generateMipmaps&&U.generateMipmap(Je),Se.unbindTexture()},this.initRenderTarget=function(P){_e.get(P).__webglFramebuffer===void 0&&xe.setupRenderTarget(P)},this.initTexture=function(P){P.isCubeTexture?xe.setTextureCube(P,0):P.isData3DTexture?xe.setTexture3D(P,0):P.isDataArrayTexture||P.isCompressedArrayTexture?xe.setTexture2DArray(P,0):xe.setTexture2D(P,0),Se.unbindTexture()},this.resetState=function(){R=0,k=0,B=null,Se.reset(),Ce.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Pn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=lt._getDrawingBufferColorSpace(e),t.unpackColorSpace=lt._getUnpackColorSpace()}}function of(i,e){if(e===em)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),i;if(e===jo||e===Su){let t=i.getIndex();if(t===null){const a=[],o=i.getAttribute("position");if(o!==void 0){for(let l=0;l<o.count;l++)a.push(l);i.setIndex(a),t=i.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),i}const n=t.count-2,r=[];if(e===jo)for(let a=1;a<=n;a++)r.push(t.getX(0)),r.push(t.getX(a)),r.push(t.getX(a+1));else for(let a=0;a<n;a++)a%2===0?(r.push(t.getX(a)),r.push(t.getX(a+1)),r.push(t.getX(a+2))):(r.push(t.getX(a+2)),r.push(t.getX(a+1)),r.push(t.getX(a)));r.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const s=i.clone();return s.setIndex(r),s.clearGroups(),s}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),i}class Ky extends Er{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new tx(t)}),this.register(function(t){return new nx(t)}),this.register(function(t){return new hx(t)}),this.register(function(t){return new fx(t)}),this.register(function(t){return new dx(t)}),this.register(function(t){return new rx(t)}),this.register(function(t){return new sx(t)}),this.register(function(t){return new ax(t)}),this.register(function(t){return new ox(t)}),this.register(function(t){return new ex(t)}),this.register(function(t){return new lx(t)}),this.register(function(t){return new ix(t)}),this.register(function(t){return new ux(t)}),this.register(function(t){return new cx(t)}),this.register(function(t){return new Jy(t)}),this.register(function(t){return new px(t)}),this.register(function(t){return new mx(t)})}load(e,t,n,r){const s=this;let a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){const c=cs.extractUrlBase(e);a=cs.resolveURL(c,this.path)}else a=cs.extractUrlBase(e);this.manager.itemStart(e);const o=function(c){r?r(c):console.error(c),s.manager.itemError(e),s.manager.itemEnd(e)},l=new Mh(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(c){try{s.parse(c,a,function(h){t(h),s.manager.itemEnd(e)},o)}catch(h){o(h)}},n,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,r){let s;const a={},o={},l=new TextDecoder;if(typeof e=="string")s=JSON.parse(e);else if(e instanceof ArrayBuffer)if(l.decode(new Uint8Array(e,0,4))===lf){try{a[rt.KHR_BINARY_GLTF]=new gx(e)}catch(u){r&&r(u);return}s=JSON.parse(a[rt.KHR_BINARY_GLTF].content)}else s=JSON.parse(l.decode(e));else s=e;if(s.asset===void 0||s.asset.version[0]<2){r&&r(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const c=new Cx(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let h=0;h<this.pluginCallbacks.length;h++){const u=this.pluginCallbacks[h](c);u.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[u.name]=u,a[u.name]=!0}if(s.extensionsUsed)for(let h=0;h<s.extensionsUsed.length;++h){const u=s.extensionsUsed[h],f=s.extensionsRequired||[];switch(u){case rt.KHR_MATERIALS_UNLIT:a[u]=new Qy;break;case rt.KHR_DRACO_MESH_COMPRESSION:a[u]=new _x(s,this.dracoLoader);break;case rt.KHR_TEXTURE_TRANSFORM:a[u]=new vx;break;case rt.KHR_MESH_QUANTIZATION:a[u]=new yx;break;default:f.indexOf(u)>=0&&o[u]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+u+'".')}}c.setExtensions(a),c.setPlugins(o),c.parse(n,r)}parseAsync(e,t){const n=this;return new Promise(function(r,s){n.parse(e,t,r,s)})}}function Zy(){let i={};return{get:function(e){return i[e]},add:function(e,t){i[e]=t},remove:function(e){delete i[e]},removeAll:function(){i={}}}}const rt={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Jy{constructor(e){this.parser=e,this.name=rt.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n<r;n++){const s=t[n];s.extensions&&s.extensions[this.name]&&s.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,s.extensions[this.name].light)}}_loadLight(e){const t=this.parser,n="light:"+e;let r=t.cache.get(n);if(r)return r;const s=t.json,l=((s.extensions&&s.extensions[this.name]||{}).lights||[])[e];let c;const h=new Ze(16777215);l.color!==void 0&&h.setRGB(l.color[0],l.color[1],l.color[2],Kt);const u=l.range!==void 0?l.range:0;switch(l.type){case"directional":c=new Il(h),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new Dg(h),c.distance=u;break;case"spot":c=new Cg(h),c.distance=u,l.spot=l.spot||{},l.spot.innerConeAngle=l.spot.innerConeAngle!==void 0?l.spot.innerConeAngle:0,l.spot.outerConeAngle=l.spot.outerConeAngle!==void 0?l.spot.outerConeAngle:Math.PI/4,c.angle=l.spot.outerConeAngle,c.penumbra=1-l.spot.innerConeAngle/l.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+l.type)}return c.position.set(0,0,0),kn(c,l),l.intensity!==void 0&&(c.intensity=l.intensity),c.name=t.createUniqueName(l.name||"light_"+e),r=Promise.resolve(c),t.cache.add(n,r),r}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){const t=this,n=this.parser,s=n.json.nodes[e],o=(s.extensions&&s.extensions[this.name]||{}).light;return o===void 0?null:this._loadLight(o).then(function(l){return n._getNodeRef(t.cache,o,l)})}}class Qy{constructor(){this.name=rt.KHR_MATERIALS_UNLIT}getMaterialType(){return Ri}extendParams(e,t,n){const r=[];e.color=new Ze(1,1,1),e.opacity=1;const s=t.pbrMetallicRoughness;if(s){if(Array.isArray(s.baseColorFactor)){const a=s.baseColorFactor;e.color.setRGB(a[0],a[1],a[2],Kt),e.opacity=a[3]}s.baseColorTexture!==void 0&&r.push(n.assignTexture(e,"map",s.baseColorTexture,Bt))}return Promise.all(r)}}class ex{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=r.extensions[this.name].emissiveStrength;return s!==void 0&&(t.emissiveIntensity=s),Promise.resolve()}}class tx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];if(a.clearcoatFactor!==void 0&&(t.clearcoat=a.clearcoatFactor),a.clearcoatTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatMap",a.clearcoatTexture)),a.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=a.clearcoatRoughnessFactor),a.clearcoatRoughnessTexture!==void 0&&s.push(n.assignTexture(t,"clearcoatRoughnessMap",a.clearcoatRoughnessTexture)),a.clearcoatNormalTexture!==void 0&&(s.push(n.assignTexture(t,"clearcoatNormalMap",a.clearcoatNormalTexture)),a.clearcoatNormalTexture.scale!==void 0)){const o=a.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new Ye(o,o)}return Promise.all(s)}}class nx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_DISPERSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=r.extensions[this.name];return t.dispersion=s.dispersion!==void 0?s.dispersion:0,Promise.resolve()}}class ix{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];return a.iridescenceFactor!==void 0&&(t.iridescence=a.iridescenceFactor),a.iridescenceTexture!==void 0&&s.push(n.assignTexture(t,"iridescenceMap",a.iridescenceTexture)),a.iridescenceIor!==void 0&&(t.iridescenceIOR=a.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),a.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),a.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),a.iridescenceThicknessTexture!==void 0&&s.push(n.assignTexture(t,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(s)}}class rx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_SHEEN}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[];t.sheenColor=new Ze(0,0,0),t.sheenRoughness=0,t.sheen=1;const a=r.extensions[this.name];if(a.sheenColorFactor!==void 0){const o=a.sheenColorFactor;t.sheenColor.setRGB(o[0],o[1],o[2],Kt)}return a.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=a.sheenRoughnessFactor),a.sheenColorTexture!==void 0&&s.push(n.assignTexture(t,"sheenColorMap",a.sheenColorTexture,Bt)),a.sheenRoughnessTexture!==void 0&&s.push(n.assignTexture(t,"sheenRoughnessMap",a.sheenRoughnessTexture)),Promise.all(s)}}class sx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];return a.transmissionFactor!==void 0&&(t.transmission=a.transmissionFactor),a.transmissionTexture!==void 0&&s.push(n.assignTexture(t,"transmissionMap",a.transmissionTexture)),Promise.all(s)}}class ax{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_VOLUME}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];t.thickness=a.thicknessFactor!==void 0?a.thicknessFactor:0,a.thicknessTexture!==void 0&&s.push(n.assignTexture(t,"thicknessMap",a.thicknessTexture)),t.attenuationDistance=a.attenuationDistance||1/0;const o=a.attenuationColor||[1,1,1];return t.attenuationColor=new Ze().setRGB(o[0],o[1],o[2],Kt),Promise.all(s)}}class ox{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_IOR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=r.extensions[this.name];return t.ior=s.ior!==void 0?s.ior:1.5,Promise.resolve()}}class lx{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_SPECULAR}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];t.specularIntensity=a.specularFactor!==void 0?a.specularFactor:1,a.specularTexture!==void 0&&s.push(n.assignTexture(t,"specularIntensityMap",a.specularTexture));const o=a.specularColorFactor||[1,1,1];return t.specularColor=new Ze().setRGB(o[0],o[1],o[2],Kt),a.specularColorTexture!==void 0&&s.push(n.assignTexture(t,"specularColorMap",a.specularColorTexture,Bt)),Promise.all(s)}}class cx{constructor(e){this.parser=e,this.name=rt.EXT_MATERIALS_BUMP}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];return t.bumpScale=a.bumpFactor!==void 0?a.bumpFactor:1,a.bumpTexture!==void 0&&s.push(n.assignTexture(t,"bumpMap",a.bumpTexture)),Promise.all(s)}}class ux{constructor(e){this.parser=e,this.name=rt.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const n=this.parser.json.materials[e];return!n.extensions||!n.extensions[this.name]?null:On}extendMaterialParams(e,t){const n=this.parser,r=n.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();const s=[],a=r.extensions[this.name];return a.anisotropyStrength!==void 0&&(t.anisotropy=a.anisotropyStrength),a.anisotropyRotation!==void 0&&(t.anisotropyRotation=a.anisotropyRotation),a.anisotropyTexture!==void 0&&s.push(n.assignTexture(t,"anisotropyMap",a.anisotropyTexture)),Promise.all(s)}}class hx{constructor(e){this.parser=e,this.name=rt.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,n=t.json,r=n.textures[e];if(!r.extensions||!r.extensions[this.name])return null;const s=r.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,a)}}class fx{constructor(e){this.parser=e,this.name=rt.EXT_TEXTURE_WEBP}loadTexture(e){const t=this.name,n=this.parser,r=n.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const a=s.extensions[t],o=r.images[a.source];let l=n.textureLoader;if(o.uri){const c=n.options.manager.getHandler(o.uri);c!==null&&(l=c)}return n.loadTextureImage(e,a.source,l)}}class dx{constructor(e){this.parser=e,this.name=rt.EXT_TEXTURE_AVIF}loadTexture(e){const t=this.name,n=this.parser,r=n.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;const a=s.extensions[t],o=r.images[a.source];let l=n.textureLoader;if(o.uri){const c=n.options.manager.getHandler(o.uri);c!==null&&(l=c)}return n.loadTextureImage(e,a.source,l)}}class px{constructor(e){this.name=rt.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const r=n.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(o){const l=r.byteOffset||0,c=r.byteLength||0,h=r.count,u=r.byteStride,f=new Uint8Array(o,l,c);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(h,u,f,r.mode,r.filter).then(function(d){return d.buffer}):a.ready.then(function(){const d=new ArrayBuffer(h*u);return a.decodeGltfBuffer(new Uint8Array(d),h,u,f,r.mode,r.filter),d})})}else return null}}class mx{constructor(e){this.name=rt.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;const r=t.meshes[n.mesh];for(const c of r.primitives)if(c.mode!==mn.TRIANGLES&&c.mode!==mn.TRIANGLE_STRIP&&c.mode!==mn.TRIANGLE_FAN&&c.mode!==void 0)return null;const a=n.extensions[this.name].attributes,o=[],l={};for(const c in a)o.push(this.parser.getDependency("accessor",a[c]).then(h=>(l[c]=h,l[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(c=>{const h=c.pop(),u=h.isGroup?h.children:[h],f=c[0].count,d=[];for(const _ of u){const b=new et,g=new $,m=new Dn,S=new $(1,1,1),y=new sg(_.geometry,_.material,f);for(let M=0;M<f;M++)l.TRANSLATION&&g.fromBufferAttribute(l.TRANSLATION,M),l.ROTATION&&m.fromBufferAttribute(l.ROTATION,M),l.SCALE&&S.fromBufferAttribute(l.SCALE,M),y.setMatrixAt(M,b.compose(g,m,S));for(const M in l)if(M==="_COLOR_0"){const T=l[M];y.instanceColor=new Ml(T.array,T.itemSize,T.normalized)}else M!=="TRANSLATION"&&M!=="ROTATION"&&M!=="SCALE"&&_.geometry.setAttribute(M,l[M]);At.prototype.copy.call(y,_),this.parser.assignFinalMaterial(y),d.push(y)}return h.isGroup?(h.clear(),h.add(...d),h):d[0]}))}}const lf="glTF",hs=12,cf={JSON:1313821514,BIN:5130562};class gx{constructor(e){this.name=rt.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,hs),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==lf)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const r=this.header.length-hs,s=new DataView(e,hs);let a=0;for(;a<r;){const o=s.getUint32(a,!0);a+=4;const l=s.getUint32(a,!0);if(a+=4,l===cf.JSON){const c=new Uint8Array(e,hs+a,o);this.content=n.decode(c)}else if(l===cf.BIN){const c=hs+a;this.body=e.slice(c,c+o)}a+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class _x{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=rt.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const n=this.json,r=this.dracoLoader,s=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},l={},c={};for(const h in a){const u=jl[h]||h.toLowerCase();o[u]=a[h]}for(const h in e.attributes){const u=jl[h]||h.toLowerCase();if(a[h]!==void 0){const f=n.accessors[e.attributes[h]],d=Cr[f.componentType];c[u]=d.name,l[u]=f.normalized===!0}}return t.getDependency("bufferView",s).then(function(h){return new Promise(function(u,f){r.decodeDracoFile(h,function(d){for(const _ in d.attributes){const b=d.attributes[_],g=l[_];g!==void 0&&(b.normalized=g)}u(d)},o,c,Kt,f)})})}}class vx{constructor(){this.name=rt.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0||(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}class yx{constructor(){this.name=rt.KHR_MESH_QUANTIZATION}}class uf extends os{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,s=e*r*3+r;for(let a=0;a!==r;a++)t[a]=n[s+a];return t}interpolate_(e,t,n,r){const s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=o*2,c=o*3,h=r-t,u=(n-t)/h,f=u*u,d=f*u,_=e*c,b=_-c,g=-2*d+3*f,m=d-f,S=1-g,y=m-f+u;for(let M=0;M!==o;M++){const T=a[b+M+o],R=a[b+M+l]*h,k=a[_+M+o],B=a[_+M]*h;s[M]=S*T+y*R+g*k+m*B}return s}}const xx=new Dn;class bx extends uf{interpolate_(e,t,n,r){const s=super.interpolate_(e,t,n,r);return xx.fromArray(s).normalize().toArray(s),s}}const mn={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Cr={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},hf={9728:Yt,9729:ln,9984:hu,9985:Ps,9986:Hr,9987:Wn},ff={33071:si,33648:Cs,10497:Qi},$l={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},jl={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"},mi={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Sx={CUBICSPLINE:void 0,LINEAR:qr,STEP:jr},ql={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Mx(i){return i.DefaultMaterial===void 0&&(i.DefaultMaterial=new as({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Gn})),i.DefaultMaterial}function Ni(i,e,t){for(const n in t.extensions)i[n]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[n]=t.extensions[n])}function kn(i,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(i.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Ex(i,e,t){let n=!1,r=!1,s=!1;for(let c=0,h=e.length;c<h;c++){const u=e[c];if(u.POSITION!==void 0&&(n=!0),u.NORMAL!==void 0&&(r=!0),u.COLOR_0!==void 0&&(s=!0),n&&r&&s)break}if(!n&&!r&&!s)return Promise.resolve(i);const a=[],o=[],l=[];for(let c=0,h=e.length;c<h;c++){const u=e[c];if(n){const f=u.POSITION!==void 0?t.getDependency("accessor",u.POSITION):i.attributes.position;a.push(f)}if(r){const f=u.NORMAL!==void 0?t.getDependency("accessor",u.NORMAL):i.attributes.normal;o.push(f)}if(s){const f=u.COLOR_0!==void 0?t.getDependency("accessor",u.COLOR_0):i.attributes.color;l.push(f)}}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(l)]).then(function(c){const h=c[0],u=c[1],f=c[2];return n&&(i.morphAttributes.position=h),r&&(i.morphAttributes.normal=u),s&&(i.morphAttributes.color=f),i.morphTargetsRelative=!0,i})}function Tx(i,e){if(i.updateMorphTargets(),e.weights!==void 0)for(let t=0,n=e.weights.length;t<n;t++)i.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){const t=e.extras.targetNames;if(i.morphTargetInfluences.length===t.length){i.morphTargetDictionary={};for(let n=0,r=t.length;n<r;n++)i.morphTargetDictionary[t[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function wx(i){let e;const t=i.extensions&&i.extensions[rt.KHR_DRACO_MESH_COMPRESSION];if(t?e="draco:"+t.bufferView+":"+t.indices+":"+Yl(t.attributes):e=i.indices+":"+Yl(i.attributes)+":"+i.mode,i.targets!==void 0)for(let n=0,r=i.targets.length;n<r;n++)e+=":"+Yl(i.targets[n]);return e}function Yl(i){let e="";const t=Object.keys(i).sort();for(let n=0,r=t.length;n<r;n++)e+=t[n]+":"+i[t[n]]+";";return e}function Kl(i){switch(i){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function Ax(i){return i.search(/\.jpe?g($|\?)/i)>0||i.search(/^data\:image\/jpeg/)===0?"image/jpeg":i.search(/\.webp($|\?)/i)>0||i.search(/^data\:image\/webp/)===0?"image/webp":i.search(/\.ktx2($|\?)/i)>0||i.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const Rx=new et;class Cx{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Zy,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 n=!1,r=-1,s=!1,a=-1;if(typeof navigator<"u"){const o=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(o)===!0;const l=o.match(/Version\/(\d+)/);r=n&&l?parseInt(l[1],10):-1,s=o.indexOf("Firefox")>-1,a=s?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||n&&r<17||s&&a<98?this.textureLoader=new Ag(this.options.manager):this.textureLoader=new Ug(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Mh(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const n=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(a){return a._markDefs&&a._markDefs()}),Promise.all(this._invokeAll(function(a){return a.beforeRoot&&a.beforeRoot()})).then(function(){return Promise.all([n.getDependencies("scene"),n.getDependencies("animation"),n.getDependencies("camera")])}).then(function(a){const o={scene:a[0][r.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:r.asset,parser:n,userData:{}};return Ni(s,o,r),kn(o,r),Promise.all(n._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(const l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let r=0,s=t.length;r<s;r++){const a=t[r].joints;for(let o=0,l=a.length;o<l;o++)e[a[o]].isBone=!0}for(let r=0,s=e.length;r<s;r++){const a=e[r];a.mesh!==void 0&&(this._addNodeRef(this.meshCache,a.mesh),a.skin!==void 0&&(n[a.mesh].isSkinnedMesh=!0)),a.camera!==void 0&&this._addNodeRef(this.cameraCache,a.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;const r=n.clone(),s=(a,o)=>{const l=this.associations.get(a);l!=null&&this.associations.set(o,l);for(const[c,h]of a.children.entries())s(h,o.children[c])};return s(n,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){const r=e(t[n]);if(r)return r}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const n=[];for(let r=0;r<t.length;r++){const s=e(t[r]);s&&n.push(s)}return n}getDependency(e,t){const n=e+":"+t;let r=this.cache.get(n);if(!r){switch(e){case"scene":r=this.loadScene(t);break;case"node":r=this._invokeOne(function(s){return s.loadNode&&s.loadNode(t)});break;case"mesh":r=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(t)});break;case"accessor":r=this.loadAccessor(t);break;case"bufferView":r=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(t)});break;case"buffer":r=this.loadBuffer(t);break;case"material":r=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(t)});break;case"texture":r=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(t)});break;case"skin":r=this.loadSkin(t);break;case"animation":r=this._invokeOne(function(s){return s.loadAnimation&&s.loadAnimation(t)});break;case"camera":r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(e,t)}),!r)throw new Error("Unknown type: "+e);break}this.cache.add(n,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){const n=this,r=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(r.map(function(s,a){return n.getDependency(e,a)})),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[rt.KHR_BINARY_GLTF].body);const r=this.options;return new Promise(function(s,a){n.load(cs.resolveURL(t.uri,r.path),s,void 0,function(){a(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(n){const r=t.byteLength||0,s=t.byteOffset||0;return n.slice(s,s+r)})}loadAccessor(e){const t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0){const a=$l[r.type],o=Cr[r.componentType],l=r.normalized===!0,c=new o(r.count*a);return Promise.resolve(new Zt(c,a,l))}const s=[];return r.bufferView!==void 0?s.push(this.getDependency("bufferView",r.bufferView)):s.push(null),r.sparse!==void 0&&(s.push(this.getDependency("bufferView",r.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",r.sparse.values.bufferView))),Promise.all(s).then(function(a){const o=a[0],l=$l[r.type],c=Cr[r.componentType],h=c.BYTES_PER_ELEMENT,u=h*l,f=r.byteOffset||0,d=r.bufferView!==void 0?n.bufferViews[r.bufferView].byteStride:void 0,_=r.normalized===!0;let b,g;if(d&&d!==u){const m=Math.floor(f/d),S="InterleavedBuffer:"+r.bufferView+":"+r.componentType+":"+m+":"+r.count;let y=t.cache.get(S);y||(b=new c(o,m*d,r.count*d/h),y=new eg(b,d/h),t.cache.add(S,y)),g=new yl(y,l,f%d/h,_)}else o===null?b=new c(r.count*l):b=new c(o,f,r.count*l),g=new Zt(b,l,_);if(r.sparse!==void 0){const m=$l.SCALAR,S=Cr[r.sparse.indices.componentType],y=r.sparse.indices.byteOffset||0,M=r.sparse.values.byteOffset||0,T=new S(a[1],y,r.sparse.count*m),R=new c(a[2],M,r.sparse.count*l);o!==null&&(g=new Zt(g.array.slice(),g.itemSize,g.normalized)),g.normalized=!1;for(let k=0,B=T.length;k<B;k++){const C=T[k];if(g.setX(C,R[k*l]),l>=2&&g.setY(C,R[k*l+1]),l>=3&&g.setZ(C,R[k*l+2]),l>=4&&g.setW(C,R[k*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}g.normalized=_}return g})}loadTexture(e){const t=this.json,n=this.options,s=t.textures[e].source,a=t.images[s];let o=this.textureLoader;if(a.uri){const l=n.manager.getHandler(a.uri);l!==null&&(o=l)}return this.loadTextureImage(e,s,o)}loadTextureImage(e,t,n){const r=this,s=this.json,a=s.textures[e],o=s.images[t],l=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[l])return this.textureCache[l];const c=this.loadImageSource(t,n).then(function(h){h.flipY=!1,h.name=a.name||o.name||"",h.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(h.name=o.uri);const f=(s.samplers||{})[a.sampler]||{};return h.magFilter=hf[f.magFilter]||ln,h.minFilter=hf[f.minFilter]||Wn,h.wrapS=ff[f.wrapS]||Qi,h.wrapT=ff[f.wrapT]||Qi,h.generateMipmaps=!h.isCompressedTexture&&h.minFilter!==Yt&&h.minFilter!==ln,r.associations.set(h,{textures:e}),h}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(e,t){const n=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(u=>u.clone());const a=r.images[e],o=self.URL||self.webkitURL;let l=a.uri||"",c=!1;if(a.bufferView!==void 0)l=n.getDependency("bufferView",a.bufferView).then(function(u){c=!0;const f=new Blob([u],{type:a.mimeType});return l=o.createObjectURL(f),l});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const h=Promise.resolve(l).then(function(u){return new Promise(function(f,d){let _=f;t.isImageBitmapLoader===!0&&(_=function(b){const g=new zt(b);g.needsUpdate=!0,f(g)}),t.load(cs.resolveURL(u,s.path),_,void 0,d)})}).then(function(u){return c===!0&&o.revokeObjectURL(l),kn(u,a),u.userData.mimeType=a.mimeType||Ax(a.uri),u}).catch(function(u){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),u});return this.sourceCache[e]=h,h}assignTexture(e,t,n,r){const s=this;return this.getDependency("texture",n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),s.extensions[rt.KHR_TEXTURE_TRANSFORM]){const o=n.extensions!==void 0?n.extensions[rt.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const l=s.associations.get(a);a=s.extensions[rt.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),s.associations.set(a,l)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){const o="PointsMaterial:"+n.uuid;let l=this.cache.get(o);l||(l=new mh,Nn.prototype.copy.call(l,n),l.color.copy(n.color),l.map=n.map,l.sizeAttenuation=!1,this.cache.add(o,l)),n=l}else if(e.isLine){const o="LineBasicMaterial:"+n.uuid;let l=this.cache.get(o);l||(l=new uh,Nn.prototype.copy.call(l,n),l.color.copy(n.color),l.map=n.map,this.cache.add(o,l)),n=l}if(r||s||a){let o="ClonedMaterial:"+n.uuid+":";r&&(o+="derivative-tangents:"),s&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=n.clone(),s&&(l.vertexColors=!0),a&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(n))),n=l}e.material=n}getMaterialType(){return as}loadMaterial(e){const t=this,n=this.json,r=this.extensions,s=n.materials[e];let a;const o={},l=s.extensions||{},c=[];if(l[rt.KHR_MATERIALS_UNLIT]){const u=r[rt.KHR_MATERIALS_UNLIT];a=u.getMaterialType(),c.push(u.extendParams(o,s,t))}else{const u=s.pbrMetallicRoughness||{};if(o.color=new Ze(1,1,1),o.opacity=1,Array.isArray(u.baseColorFactor)){const f=u.baseColorFactor;o.color.setRGB(f[0],f[1],f[2],Kt),o.opacity=f[3]}u.baseColorTexture!==void 0&&c.push(t.assignTexture(o,"map",u.baseColorTexture,Bt)),o.metalness=u.metallicFactor!==void 0?u.metallicFactor:1,o.roughness=u.roughnessFactor!==void 0?u.roughnessFactor:1,u.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,"metalnessMap",u.metallicRoughnessTexture)),c.push(t.assignTexture(o,"roughnessMap",u.metallicRoughnessTexture))),a=this._invokeOne(function(f){return f.getMaterialType&&f.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(f){return f.extendMaterialParams&&f.extendMaterialParams(e,o)})))}s.doubleSided===!0&&(o.side=Rn);const h=s.alphaMode||ql.OPAQUE;if(h===ql.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,h===ql.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==Ri&&(c.push(t.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new Ye(1,1),s.normalTexture.scale!==void 0)){const u=s.normalTexture.scale;o.normalScale.set(u,u)}if(s.occlusionTexture!==void 0&&a!==Ri&&(c.push(t.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==Ri){const u=s.emissiveFactor;o.emissive=new Ze().setRGB(u[0],u[1],u[2],Kt)}return s.emissiveTexture!==void 0&&a!==Ri&&c.push(t.assignTexture(o,"emissiveMap",s.emissiveTexture,Bt)),Promise.all(c).then(function(){const u=new a(o);return s.name&&(u.name=s.name),kn(u,s),t.associations.set(u,{materials:e}),s.extensions&&Ni(r,u,s),u})}createUniqueName(e){const t=yt.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,n=this.extensions,r=this.primitiveCache;function s(o){return n[rt.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return df(l,o,t)})}const a=[];for(let o=0,l=e.length;o<l;o++){const c=e[o],h=wx(c),u=r[h];if(u)a.push(u.promise);else{let f;c.extensions&&c.extensions[rt.KHR_DRACO_MESH_COMPRESSION]?f=s(c):f=df(new En,c,t),r[h]={primitive:c,promise:f},a.push(f)}}return Promise.all(a)}loadMesh(e){const t=this,n=this.json,r=this.extensions,s=n.meshes[e],a=s.primitives,o=[];for(let l=0,c=a.length;l<c;l++){const h=a[l].material===void 0?Mx(this.cache):this.getDependency("material",a[l].material);o.push(h)}return o.push(t.loadGeometries(a)),Promise.all(o).then(function(l){const c=l.slice(0,l.length-1),h=l[l.length-1],u=[];for(let d=0,_=h.length;d<_;d++){const b=h[d],g=a[d];let m;const S=c[d];if(g.mode===mn.TRIANGLES||g.mode===mn.TRIANGLE_STRIP||g.mode===mn.TRIANGLE_FAN||g.mode===void 0)m=s.isSkinnedMesh===!0?new ng(b,S):new Jt(b,S),m.isSkinnedMesh===!0&&m.normalizeSkinWeights(),g.mode===mn.TRIANGLE_STRIP?m.geometry=of(m.geometry,Su):g.mode===mn.TRIANGLE_FAN&&(m.geometry=of(m.geometry,jo));else if(g.mode===mn.LINES)m=new cg(b,S);else if(g.mode===mn.LINE_STRIP)m=new Al(b,S);else if(g.mode===mn.LINE_LOOP)m=new ug(b,S);else if(g.mode===mn.POINTS)m=new hg(b,S);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+g.mode);Object.keys(m.geometry.morphAttributes).length>0&&Tx(m,s),m.name=t.createUniqueName(s.name||"mesh_"+e),kn(m,s),g.extensions&&Ni(r,m,g),t.assignFinalMaterial(m),u.push(m)}for(let d=0,_=u.length;d<_;d++)t.associations.set(u[d],{meshes:e,primitives:d});if(u.length===1)return s.extensions&&Ni(r,u[0],s),u[0];const f=new Zn;s.extensions&&Ni(r,f,s),t.associations.set(f,{meshes:e});for(let d=0,_=u.length;d<_;d++)f.add(u[d]);return f})}loadCamera(e){let t;const n=this.json.cameras[e],r=n[n.type];if(!r){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?t=new en(Ru.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type==="orthographic"&&(t=new ha(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),kn(t,n),Promise.resolve(t)}loadSkin(e){const t=this.json.skins[e],n=[];for(let r=0,s=t.joints.length;r<s;r++)n.push(this._loadNodeShallow(t.joints[r]));return t.inverseBindMatrices!==void 0?n.push(this.getDependency("accessor",t.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(r){const s=r.pop(),a=r,o=[],l=[];for(let c=0,h=a.length;c<h;c++){const u=a[c];if(u){o.push(u);const f=new et;s!==null&&f.fromArray(s.array,c*16),l.push(f)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[c])}return new Sl(o,l)})}loadAnimation(e){const t=this.json,n=this,r=t.animations[e],s=r.name?r.name:"animation_"+e,a=[],o=[],l=[],c=[],h=[];for(let u=0,f=r.channels.length;u<f;u++){const d=r.channels[u],_=r.samplers[d.sampler],b=d.target,g=b.node,m=r.parameters!==void 0?r.parameters[_.input]:_.input,S=r.parameters!==void 0?r.parameters[_.output]:_.output;b.node!==void 0&&(a.push(this.getDependency("node",g)),o.push(this.getDependency("accessor",m)),l.push(this.getDependency("accessor",S)),c.push(_),h.push(b))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(l),Promise.all(c),Promise.all(h)]).then(function(u){const f=u[0],d=u[1],_=u[2],b=u[3],g=u[4],m=[];for(let y=0,M=f.length;y<M;y++){const T=f[y],R=d[y],k=_[y],B=b[y],C=g[y];if(T===void 0)continue;T.updateMatrix&&T.updateMatrix();const D=n._createAnimationTracks(T,R,k,B,C);if(D)for(let V=0;V<D.length;V++)m.push(D[V])}const S=new xg(s,void 0,m);return kn(S,r),S})}createNodeMesh(e){const t=this.json,n=this,r=t.nodes[e];return r.mesh===void 0?null:n.getDependency("mesh",r.mesh).then(function(s){const a=n._getNodeRef(n.meshCache,r.mesh,s);return r.weights!==void 0&&a.traverse(function(o){if(o.isMesh)for(let l=0,c=r.weights.length;l<c;l++)o.morphTargetInfluences[l]=r.weights[l]}),a})}loadNode(e){const t=this.json,n=this,r=t.nodes[e],s=n._loadNodeShallow(e),a=[],o=r.children||[];for(let c=0,h=o.length;c<h;c++)a.push(n.getDependency("node",o[c]));const l=r.skin===void 0?Promise.resolve(null):n.getDependency("skin",r.skin);return Promise.all([s,Promise.all(a),l]).then(function(c){const h=c[0],u=c[1],f=c[2];f!==null&&h.traverse(function(d){d.isSkinnedMesh&&d.bind(f,Rx)});for(let d=0,_=u.length;d<_;d++)h.add(u[d]);return h})}_loadNodeShallow(e){const t=this.json,n=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];const s=t.nodes[e],a=s.name?r.createUniqueName(s.name):"",o=[],l=r._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(e)});return l&&o.push(l),s.camera!==void 0&&o.push(r.getDependency("camera",s.camera).then(function(c){return r._getNodeRef(r.cameraCache,s.camera,c)})),r._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(e)}).forEach(function(c){o.push(c)}),this.nodeCache[e]=Promise.all(o).then(function(c){let h;if(s.isBone===!0?h=new sh:c.length>1?h=new Zn:c.length===1?h=c[0]:h=new At,h!==c[0])for(let u=0,f=c.length;u<f;u++)h.add(c[u]);if(s.name&&(h.userData.name=s.name,h.name=a),kn(h,s),s.extensions&&Ni(n,h,s),s.matrix!==void 0){const u=new et;u.fromArray(s.matrix),h.applyMatrix4(u)}else s.translation!==void 0&&h.position.fromArray(s.translation),s.rotation!==void 0&&h.quaternion.fromArray(s.rotation),s.scale!==void 0&&h.scale.fromArray(s.scale);if(!r.associations.has(h))r.associations.set(h,{});else if(s.mesh!==void 0&&r.meshCache.refs[s.mesh]>1){const u=r.associations.get(h);r.associations.set(h,{...u})}return r.associations.get(h).nodes=e,h}),this.nodeCache[e]}loadScene(e){const t=this.extensions,n=this.json.scenes[e],r=this,s=new Zn;n.name&&(s.name=r.createUniqueName(n.name)),kn(s,n),n.extensions&&Ni(t,s,n);const a=n.nodes||[],o=[];for(let l=0,c=a.length;l<c;l++)o.push(r.getDependency("node",a[l]));return Promise.all(o).then(function(l){for(let h=0,u=l.length;h<u;h++)s.add(l[h]);const c=h=>{const u=new Map;for(const[f,d]of r.associations)(f instanceof Nn||f instanceof zt)&&u.set(f,d);return h.traverse(f=>{const d=r.associations.get(f);d!=null&&u.set(f,d)}),u};return r.associations=c(s),s})}_createAnimationTracks(e,t,n,r,s){const a=[],o=e.name?e.name:e.uuid,l=[];mi[s.path]===mi.weights?e.traverse(function(f){f.morphTargetInfluences&&l.push(f.name?f.name:f.uuid)}):l.push(o);let c;switch(mi[s.path]){case mi.weights:c=xr;break;case mi.rotation:c=br;break;case mi.translation:case mi.scale:c=Mr;break;default:switch(n.itemSize){case 1:c=xr;break;case 2:case 3:default:c=Mr;break}break}const h=r.interpolation!==void 0?Sx[r.interpolation]:qr,u=this._getArrayFromAccessor(n);for(let f=0,d=l.length;f<d;f++){const _=new c(l[f]+"."+mi[s.path],t.array,u,h);r.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(_),a.push(_)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const n=Kl(t.constructor),r=new Float32Array(t.length);for(let s=0,a=t.length;s<a;s++)r[s]=t[s]*n;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(n){const r=this instanceof br?bx:uf;return new r(this.times,this.values,this.getValueSize()/3,n)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Px(i,e,t){const n=e.attributes,r=new Ln;if(n.POSITION!==void 0){const o=t.json.accessors[n.POSITION],l=o.min,c=o.max;if(l!==void 0&&c!==void 0){if(r.set(new $(l[0],l[1],l[2]),new $(c[0],c[1],c[2])),o.normalized){const h=Kl(Cr[o.componentType]);r.min.multiplyScalar(h),r.max.multiplyScalar(h)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const s=e.targets;if(s!==void 0){const o=new $,l=new $;for(let c=0,h=s.length;c<h;c++){const u=s[c];if(u.POSITION!==void 0){const f=t.json.accessors[u.POSITION],d=f.min,_=f.max;if(d!==void 0&&_!==void 0){if(l.setX(Math.max(Math.abs(d[0]),Math.abs(_[0]))),l.setY(Math.max(Math.abs(d[1]),Math.abs(_[1]))),l.setZ(Math.max(Math.abs(d[2]),Math.abs(_[2]))),f.normalized){const b=Kl(Cr[f.componentType]);l.multiplyScalar(b)}o.max(l)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}r.expandByVector(o)}i.boundingBox=r;const a=new In;r.getCenter(a.center),a.radius=r.min.distanceTo(r.max)/2,i.boundingSphere=a}function df(i,e,t){const n=e.attributes,r=[];function s(a,o){return t.getDependency("accessor",a).then(function(l){i.setAttribute(o,l)})}for(const a in n){const o=jl[a]||a.toLowerCase();o in i.attributes||r.push(s(n[a],o))}if(e.indices!==void 0&&!i.index){const a=t.getDependency("accessor",e.indices).then(function(o){i.setIndex(o)});r.push(a)}return lt.workingColorSpace!==Kt&&"COLOR_0"in n&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${lt.workingColorSpace}" not supported.`),kn(i,e),Px(i,e,t),Promise.all(r).then(function(){return e.targets!==void 0?Ex(i,e.targets,t):i})}function Dx(){const i=new Zn;i.name="sonic-3d-demo";const e=new pr(1,1,1),t=new as({color:3900150,metalness:.25,roughness:.4}),n=new Jt(e,t);n.name="demo-box",n.position.y=.5,i.add(n);const r=new Jt(new Cl(2.2,48),new as({color:1710618,metalness:0,roughness:.9}));return r.name="demo-ground",r.rotation.x=-Math.PI/2,i.add(r),i}function Lx(i){const e=new Ig(16777215,.55),t=new Il(16777215,1.1);t.position.set(4,6,3);const n=new Il(11584767,.35);n.position.set(-3,1,-2);const r=[e,t,n];for(const s of r)i.add(s);return r}const Zl={create:Dx,setupLights:Lx},Jl="WebGL indisponible — sonic-3d nécessite WebGL.";function Ix(i){const e=document.createElement("canvas"),t=e.getContext("webgl2")||e.getContext("webgl");if(!t||typeof t.getParameter!="function")throw new Error(Jl);const n={canvas:i,antialias:!0,alpha:!1,preserveDrawingBuffer:!0,powerPreference:"high-performance"};let r;try{r=new Yy(n)}catch(s){const a=s instanceof Error?s.message:String(s);throw new Error(`${Jl} (${a})`)}if(!r.getContext())throw r.dispose(),new Error(Jl);return r}function Ux(i){const e=i.dprMax??2,t=i.camera??gn.Orbit,n=i.fov??vs,r=i.fit!==!1,s={minDistance:i.minDistance??Cc,maxDistance:i.maxDistance??Pc,minPolar:i.minPolar??Lc,maxPolar:i.maxPolar??Math.PI-Lc},a=new Qm;a.background=new Ze(657930);const o=new Zn;a.add(o);const l=new en(n,1,.01,2e3);l.position.set(2.2,1.6,2.8);const c=new ha(-1,1,1,-1,.01,2e3);c.position.set(2.2,1.6,2.8);const h=Ix(i.canvas);return h.outputColorSpace=Bt,h.toneMapping=lu,h.toneMappingExposure=i.exposure??Da,h.setPixelRatio(1),{scene:a,renderer:h,canvas:i.canvas,perspCam:l,orthoCam:c,activeCam:l,root:o,lights:Zl.setupLights(a),dprMax:e,mode:t,fov:n,fitEnabled:r,limits:s,autoRotate:!!i.autoRotate}}function Ql(i,e,t){return i.content?(i.pointerNdc.set(e*2-1,-(t*2-1)),i.raycaster.setFromCamera(i.pointerNdc,i.activeCam),i.raycaster.intersectObject(i.content,!0)):[]}function ec(i){return{x:i.point.x,y:i.point.y,z:i.point.z,objectId:i.object.name||i.object.uuid}}function Nx(i,e,t){const n=Ql(i,e,t);return n.length?ec(n[0]):null}function pf(i){if(!i.highlighted)return;const e=i.highlighted.material,t=Array.isArray(e)?e[0]:e;t&&"emissive"in t&&(t.emissive.copy(i.prevEmissive),t.emissiveIntensity=i.prevEmissiveIntensity),i.highlighted=null}function Ox(i,e,t){const n=Ql(i,e,t),r=n[0]?.object,s=r?.isMesh?r:null;if(s===i.highlighted)return n.length?ec(n[0]):null;if(pf(i),!s)return null;const a=s.material,o=Array.isArray(a)?a[0]:a;return o&&"emissive"in o&&(i.highlighted=s,i.prevEmissive.copy(o.emissive),i.prevEmissiveIntensity=o.emissiveIntensity??1,o.emissive.set(3900150),o.emissiveIntensity=.45),ec(n[0])}const _a={hit:Nx,setHoverAt:Ox,clearHighlight:pf,raycastHits:Ql};function mf(i){if(i.blobUrl){try{URL.revokeObjectURL(i.blobUrl)}catch{}i.blobUrl=null}}function gf(i){_a.clearHighlight(i),i.content&&(i.root.remove(i.content),i.content.traverse(e=>{const t=e;if(t.isMesh){t.geometry?.dispose();const n=Array.isArray(t.material)?t.material:[t.material];for(const r of n)r?.dispose?.()}}),i.content=null,i.bbox.makeEmpty())}function tc(i){i.bbox.makeEmpty(),i.content&&i.bbox.setFromObject(i.content)}function _f(i,e){i.traverse(t=>{const n=t;if(!(!n.isMesh||!n.morphTargetDictionary||!n.morphTargetInfluences))for(const[r,s]of Object.entries(e)){const a=n.morphTargetDictionary[r];a!==void 0&&(n.morphTargetInfluences[a]=s)}})}async function Fx(i,e,t,n){gf(i);try{let r=e?.url?.trim()??"";if(!r&&e?.blob&&(mf(i),i.blobUrl=URL.createObjectURL(e.blob),r=i.blobUrl),!r)i.content=Zl.create(),i.root.add(i.content);else{const s=e?.kind??It.guessKind(r);if(s==="obj"||s==="ply")throw new Error(`Format "${s}" non supporté en V1 — utilisez glTF/GLB.`);const a=await i.loader.loadAsync(r);if(!n(t))return{ready:!1,error:null};i.content=a.scene,i.root.add(i.content),e?.morphTargets&&_f(i.content,e.morphTargets)}return n(t)?(tc(i),i.fitEnabled&&i.fitToContent(),{ready:!0,error:null}):{ready:!1,error:null}}catch(r){if(!n(t))return{ready:!1,error:null};const s=r instanceof Error?r.message:String(r);throw i.content=Zl.create(),i.root.add(i.content),tc(i),i.fitEnabled&&i.fitToContent(),r instanceof Error?r:new Error(s)}}const nc={asset:Fx,applyMorphTargets:_f,clearContent:gf,updateBBox:tc,revokeBlob:mf};function kx(i,e){i&&(i.minDistance=e.minDistance,i.maxDistance=e.maxDistance,i.minPolarAngle=e.minPolar,i.maxPolarAngle=e.maxPolar)}function Bx(i,e,t,n){const r=i.controls?.target??i.target;let s=Number.isFinite(n)?n:1;s=Math.max(i.limits.minDistance,s),Number.isFinite(i.limits.maxDistance)&&(s=Math.min(i.limits.maxDistance,s));const a=Math.max(-(Math.PI/2-.05),Math.min(Math.PI/2-.05,t)),o=s*Math.cos(a);i.activeCam.position.set(r.x+o*Math.sin(e),r.y+s*Math.sin(a),r.z+o*Math.cos(e)),i.controls?(i.controls.target.copy(r),i.controls.update()):i.activeCam.lookAt(r)}function zx(i){if(i.bbox.isEmpty())return;const e=new $,t=new $;i.bbox.getSize(e),i.bbox.getCenter(t),i.target.copy(t);const n=Math.max(e.x,e.y,e.z,.001),r=i.mode===gn.Ortho?n*1.8:n/(2*Math.tan((i.fov||vs)*Math.PI/360))*1.35,s=new $(1,.65,1).normalize();if(i.activeCam.position.copy(t).addScaledVector(s,r),i.controls?(i.controls.target.copy(t),i.controls.update()):i.activeCam.lookAt(t),i.mode===gn.Ortho){const a=i.perspCam.aspect||1,o=n*.75;i.orthoCam.left=-o*a,i.orthoCam.right=o*a,i.orthoCam.top=o,i.orthoCam.bottom=-o,i.orthoCam.updateProjectionMatrix()}}function Hx(i,e){const t={...i};return e.minDistance!=null&&Number.isFinite(e.minDistance)&&(t.minDistance=Math.max(0,e.minDistance)),e.maxDistance!=null&&Number.isFinite(e.maxDistance)&&(t.maxDistance=e.maxDistance<=0?1/0:Math.max(t.minDistance,e.maxDistance)),e.minPolar!=null&&Number.isFinite(e.minPolar)&&(t.minPolar=Math.max(0,e.minPolar)),e.maxPolar!=null&&Number.isFinite(e.maxPolar)&&(t.maxPolar=Math.min(Math.PI,Math.max(t.minPolar,e.maxPolar))),t}const va=1e-6;function vf(i,e){if(!Number.isFinite(e)||e===0)return!1;const t=e<0,n=i.object;if(n.isOrthographicCamera){const s=n.zoom;return t?s<i.maxZoom-va:s>i.minZoom+va}const r=i.getDistance();return t?r>i.minDistance+va:Number.isFinite(i.maxDistance)?r<i.maxDistance-va:!0}function Vx(i,e){const t=n=>{const r=e();!r?.enabled||!r.enableZoom||vf(r,n.deltaY)||n.stopImmediatePropagation()};return i.addEventListener("wheel",t,{capture:!0,passive:!0}),()=>{i.removeEventListener("wheel",t,{capture:!0})}}const Pr={applyLimitsToControls:kx,setSpherical:Bx,fitToContent:zx,mergeLimits:Hx,wheelAffectsZoom:vf,bindWheelPageScrollRelay:Vx};function Gx(i,e){const t=i.activeCam.position,n=i.controls?.target??i.target,r=new $().subVectors(t,n),s=r.length(),a=Math.atan2(r.x,r.z),o=Math.atan2(r.y,Math.hypot(r.x,r.z)),l={time:e.time,frame:e.frame,ready:i.ready?1:0,loading:i.loading?1:0,hovering:e.hovering,pointerX:e.pointerX,pointerY:e.pointerY,camX:t.x,camY:t.y,camZ:t.z,targetX:n.x,targetY:n.y,targetZ:n.z,fov:i.mode===gn.Ortho?0:i.perspCam.fov,zoom:i.mode===gn.Ortho?i.orthoCam.zoom:1,distance:s,yaw:a,pitch:o};return i.bbox.isEmpty()||(l.bboxMinX=i.bbox.min.x,l.bboxMinY=i.bbox.min.y,l.bboxMinZ=i.bbox.min.z,l.bboxMaxX=i.bbox.max.x,l.bboxMaxY=i.bbox.max.y,l.bboxMaxZ=i.bbox.max.z),e.hit&&(l.hitX=e.hit.x,l.hitY=e.hit.y,l.hitZ=e.hit.z,l.hitObjectId=e.hit.objectId),l}const Wx={build:Gx};async function Xx(i,e){const t=++i.loadToken;i._loading=!0,i._ready=!1,i.lastError=null;try{const n=await nc.asset(i,e,t,r=>r===i.loadToken);if(t!==i.loadToken)return;i._ready=n.ready,i._loading=!1}catch(n){if(t!==i.loadToken)return;throw i._loading=!1,i._ready=!1,i.lastError=n instanceof Error?n.message:String(n),n}}function $x(i){Pr.fitToContent({bbox:i.bbox,target:i.target,activeCam:i.activeCam,controls:i.controls,mode:i.mode,fov:i.fov,perspCam:i.perspCam,orthoCam:i.orthoCam})}function jx(i,e){return Wx.build({activeCam:i.activeCam,controls:i.controls,target:i.target,mode:i.mode,perspCam:i.perspCam,orthoCam:i.orthoCam,bbox:i.bbox,ready:i._ready,loading:i._loading},e)}function qx(i,e=!1){i.loadToken++,i.unbindWheelRelay?.(),i.unbindWheelRelay=null,i.controls?.dispose(),i.controls=null,nc.clearContent(i),nc.revokeBlob(i);for(const t of i.lights)i.scene.remove(t);i.lights=[],i.renderer.dispose(),e&&i.renderer.getContext()?.getExtension?.("WEBGL_lose_context")?.loseContext?.(),i._ready=!1}const Oi={runLoad:Xx,fitToContent:$x,buildSnapshot:jx,dispose:qx,pick:(i,e,t)=>_a.hit(i,e,t),setHoverAt:(i,e,t)=>_a.setHoverAt(i,e,t),clearHighlight:i=>_a.clearHighlight(i)};function Yx(i,e){i.dprMax=Math.max(1,e||2)}function Kx(i,e){i.renderer.toneMappingExposure=Number.isFinite(e)?e:Da}function Zx(i,e){i.fov=Number.isFinite(e)&&e>0?e:vs,i.perspCam.fov=i.fov,i.perspCam.updateProjectionMatrix()}function Jx(i,e){i.fitEnabled=e}function Qx(i,e){i.controls&&(i.controls.autoRotate=e)}function eb(i,e){i.limits=Pr.mergeLimits(i.limits,e),Pr.applyLimitsToControls(i.controls,i.limits)}function tb(i,e,t,n){Pr.setSpherical({activeCam:i.activeCam,controls:i.controls,target:i.target,limits:i.limits},e,t,n)}const Fi={setDprMax:Yx,setExposure:Kx,setFov:Zx,setFit:Jx,setAutoRotate:Qx,setOrbitLimits:eb,setOrbitSpherical:tb},yf={type:"change"},ic={type:"start"},xf={type:"end"},ya=new or,bf=new pi,nb=Math.cos(70*Ru.DEG2RAD),Ot=new $,an=2*Math.PI,bt={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},rc=1e-6;class ib extends $g{constructor(e,t=null){super(e,t),this.state=bt.NONE,this.target=new $,this.cursor=new $,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:ji.ROTATE,MIDDLE:ji.DOLLY,RIGHT:ji.PAN},this.touches={ONE:qi.ROTATE,TWO:qi.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this._lastPosition=new $,this._lastQuaternion=new Dn,this._lastTargetPosition=new $,this._quat=new Dn().setFromUnitVectors(e.up,new $(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new Ch,this._sphericalDelta=new Ch,this._scale=1,this._panOffset=new $,this._rotateStart=new Ye,this._rotateEnd=new Ye,this._rotateDelta=new Ye,this._panStart=new Ye,this._panEnd=new Ye,this._panDelta=new Ye,this._dollyStart=new Ye,this._dollyEnd=new Ye,this._dollyDelta=new Ye,this._dollyDirection=new $,this._mouse=new Ye,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=sb.bind(this),this._onPointerDown=rb.bind(this),this._onPointerUp=ab.bind(this),this._onContextMenu=db.bind(this),this._onMouseWheel=cb.bind(this),this._onKeyDown=ub.bind(this),this._onTouchStart=hb.bind(this),this._onTouchMove=fb.bind(this),this._onMouseDown=ob.bind(this),this._onMouseMove=lb.bind(this),this._interceptControlDown=pb.bind(this),this._interceptControlUp=mb.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}connect(e){super.connect(e),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction="auto"}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(yf),this.update(),this.state=bt.NONE}update(e=null){const t=this.object.position;Ot.copy(t).sub(this.target),Ot.applyQuaternion(this._quat),this._spherical.setFromVector3(Ot),this.autoRotate&&this.state===bt.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let n=this.minAzimuthAngle,r=this.maxAzimuthAngle;isFinite(n)&&isFinite(r)&&(n<-Math.PI?n+=an:n>Math.PI&&(n-=an),r<-Math.PI?r+=an:r>Math.PI&&(r-=an),n<=r?this._spherical.theta=Math.max(n,Math.min(r,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(n+r)/2?Math.max(n,this._spherical.theta):Math.min(r,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let s=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),s=a!=this._spherical.radius}if(Ot.setFromSpherical(this._spherical),Ot.applyQuaternion(this._quatInverse),t.copy(this.target).add(Ot),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){const o=Ot.length();a=this._clampDistance(o*this._scale);const l=o-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),s=!!l}else if(this.object.isOrthographicCamera){const o=new $(this._mouse.x,this._mouse.y,0);o.unproject(this.object);const l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),s=l!==this.object.zoom;const c=new $(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=Ot.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(ya.origin.copy(this.object.position),ya.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(ya.direction))<nb?this.object.lookAt(this.target):(bf.setFromNormalAndCoplanarPoint(this.object.up,this.target),ya.intersectPlane(bf,this.target))))}else if(this.object.isOrthographicCamera){const a=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),a!==this.object.zoom&&(this.object.updateProjectionMatrix(),s=!0)}return this._scale=1,this._performCursorZoom=!1,s||this._lastPosition.distanceToSquared(this.object.position)>rc||8*(1-this._lastQuaternion.dot(this.object.quaternion))>rc||this._lastTargetPosition.distanceToSquared(this.target)>rc?(this.dispatchEvent(yf),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?an/60*this.autoRotateSpeed*e:an/60/60*this.autoRotateSpeed}_getZoomScale(e){const t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){Ot.setFromMatrixColumn(t,0),Ot.multiplyScalar(-e),this._panOffset.add(Ot)}_panUp(e,t){this.screenSpacePanning===!0?Ot.setFromMatrixColumn(t,1):(Ot.setFromMatrixColumn(t,0),Ot.crossVectors(this.object.up,Ot)),Ot.multiplyScalar(e),this._panOffset.add(Ot)}_pan(e,t){const n=this.domElement;if(this.object.isPerspectiveCamera){const r=this.object.position;Ot.copy(r).sub(this.target);let s=Ot.length();s*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*s/n.clientHeight,this.object.matrix),this._panUp(2*t*s/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const n=this.domElement.getBoundingClientRect(),r=e-n.left,s=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(s/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(an*this._rotateDelta.x/t.clientHeight),this._rotateUp(an*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(an*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-an*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(an*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-an*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){const t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(n*n+r*r);this._dollyStart.set(0,s)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{const n=this._getSecondPointerPosition(e),r=.5*(e.pageX+n.x),s=.5*(e.pageY+n.y);this._rotateEnd.set(r,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(an*this._rotateDelta.x/t.clientHeight),this._rotateUp(an*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){const t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,s),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let t=this._pointerPositions[e.pointerId];t===void 0&&(t=new Ye,this._pointerPositions[e.pointerId]=t),t.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){const t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){const t=e.deltaMode,n={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:n.deltaY*=16;break;case 2:n.deltaY*=100;break}return e.ctrlKey&&!this._controlActive&&(n.deltaY*=10),n}}function rb(i){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(i.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(i)&&(this._addPointer(i),i.pointerType==="touch"?this._onTouchStart(i):this._onMouseDown(i)))}function sb(i){this.enabled!==!1&&(i.pointerType==="touch"?this._onTouchMove(i):this._onMouseMove(i))}function ab(i){switch(this._removePointer(i),this._pointers.length){case 0:this.domElement.releasePointerCapture(i.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(xf),this.state=bt.NONE;break;case 1:const e=this._pointers[0],t=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:t.x,pageY:t.y});break}}function ob(i){let e;switch(i.button){case 0:e=this.mouseButtons.LEFT;break;case 1:e=this.mouseButtons.MIDDLE;break;case 2:e=this.mouseButtons.RIGHT;break;default:e=-1}switch(e){case ji.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(i),this.state=bt.DOLLY;break;case ji.ROTATE:if(i.ctrlKey||i.metaKey||i.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(i),this.state=bt.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(i),this.state=bt.ROTATE}break;case ji.PAN:if(i.ctrlKey||i.metaKey||i.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(i),this.state=bt.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(i),this.state=bt.PAN}break;default:this.state=bt.NONE}this.state!==bt.NONE&&this.dispatchEvent(ic)}function lb(i){switch(this.state){case bt.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(i);break;case bt.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(i);break;case bt.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(i);break}}function cb(i){this.enabled===!1||this.enableZoom===!1||this.state!==bt.NONE||(i.preventDefault(),this.dispatchEvent(ic),this._handleMouseWheel(this._customWheelEvent(i)),this.dispatchEvent(xf))}function ub(i){this.enabled!==!1&&this._handleKeyDown(i)}function hb(i){switch(this._trackPointer(i),this._pointers.length){case 1:switch(this.touches.ONE){case qi.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(i),this.state=bt.TOUCH_ROTATE;break;case qi.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(i),this.state=bt.TOUCH_PAN;break;default:this.state=bt.NONE}break;case 2:switch(this.touches.TWO){case qi.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(i),this.state=bt.TOUCH_DOLLY_PAN;break;case qi.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(i),this.state=bt.TOUCH_DOLLY_ROTATE;break;default:this.state=bt.NONE}break;default:this.state=bt.NONE}this.state!==bt.NONE&&this.dispatchEvent(ic)}function fb(i){switch(this._trackPointer(i),this.state){case bt.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(i),this.update();break;case bt.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(i),this.update();break;case bt.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(i),this.update();break;case bt.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(i),this.update();break;default:this.state=bt.NONE}}function db(i){this.enabled!==!1&&i.preventDefault()}function pb(i){i.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function mb(i){i.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function gb(i,e){i.mode=e;const t=i.activeCam.position.clone(),n=i.target.clone();i.activeCam=e===gn.Ortho?i.orthoCam:i.perspCam,i.activeCam.position.copy(t),i.controls?.dispose(),i.controls=new ib(i.activeCam,i.canvas),i.controls.enableDamping=!0,i.controls.dampingFactor=.08,i.controls.target.copy(n),i.controls.enablePan=!0,Pr.applyLimitsToControls(i.controls,i.limits),i.controls.update(),i.unbindWheelRelay||(i.unbindWheelRelay=Pr.bindWheelPageScrollRelay(i.canvas,()=>i.controls))}function _b(i,e,t){const n=Math.max(1,e),r=Math.max(1,t),s=Math.min(typeof window<"u"&&window.devicePixelRatio||1,i.dprMax);i.renderer.setPixelRatio(s),i.renderer.setSize(n,r,!1);const a=n/r;i.perspCam.aspect=a,i.perspCam.updateProjectionMatrix();const o=1.2;i.orthoCam.left=-o*a,i.orthoCam.right=o*a,i.orthoCam.top=o,i.orthoCam.bottom=-o,i.orthoCam.updateProjectionMatrix()}const Sf={applyCameraMode:gb,resize:_b};class vb{constructor(e){this.controls=null,this.unbindWheelRelay=null,this.content=null,this.loader=new Ky,this.loadToken=0,this.blobUrl=null,this.bbox=new Ln,this.target=new $,this._ready=!1,this._loading=!1,this.lastError=null,this.raycaster=new Xg,this.pointerNdc=new Ye,this.highlighted=null,this.prevEmissive=new Ze,this.prevEmissiveIntensity=0,this.asTuneCtx=()=>this,this.asViewCtx=()=>this,this.asOpsCtx=()=>this;const t=Ux(e);this.scene=t.scene,this.renderer=t.renderer,this.canvas=t.canvas,this.perspCam=t.perspCam,this.orthoCam=t.orthoCam,this.activeCam=t.activeCam,this.root=t.root,this.lights=t.lights,this.dprMax=t.dprMax,this.mode=t.mode,this.fov=t.fov,this.fitEnabled=t.fitEnabled,this.limits=t.limits,this.applyCameraMode(this.mode),t.autoRotate&&this.setAutoRotate(!0),this.canvas,this.perspCam,this.orthoCam,this.root,this.content,this.lights,this.loader,this.loadToken,this.blobUrl,this.dprMax,this.fov,this.fitEnabled,this.limits,this.bbox,this.target,this.raycaster,this.pointerNdc,this.highlighted,this.prevEmissive,this.prevEmissiveIntensity,this.unbindWheelRelay}get ready(){return this._ready}get loading(){return this._loading}get error(){return this.lastError}get isLost(){return this.renderer.getContext()?.isContextLost?.()??!1}setDprMax(e){Fi.setDprMax(this.asTuneCtx(),e)}setExposure(e){Fi.setExposure(this.asTuneCtx(),e)}setFov(e){Fi.setFov(this.asTuneCtx(),e)}setFit(e){Fi.setFit(this.asTuneCtx(),e)}setAutoRotate(e){Fi.setAutoRotate(this.asTuneCtx(),e)}setOrbitLimits(e){Fi.setOrbitLimits(this.asTuneCtx(),e)}setOrbitSpherical(e,t,n){Fi.setOrbitSpherical(this.asTuneCtx(),e,t,n)}applyCameraMode(e){Sf.applyCameraMode(this.asViewCtx(),e)}resize(e,t){Sf.resize(this.asViewCtx(),e,t)}async load(e){return Oi.runLoad(this.asOpsCtx(),e)}fitToContent(){Oi.fitToContent(this.asOpsCtx())}render(){this.controls?.update(),this.renderer.render(this.scene,this.activeCam)}pick(e,t){return Oi.pick(this.asOpsCtx(),e,t)}setHoverAt(e,t){return Oi.setHoverAt(this.asOpsCtx(),e,t)}clearHighlight(){Oi.clearHighlight(this.asOpsCtx())}snapshot(e){return Oi.buildSnapshot(this.asOpsCtx(),e)}dispose(e=!1){Oi.dispose(this.asOpsCtx(),e)}}function yb(i){return i.renderRoot?.querySelector("canvas")??null}async function Mf(i){if(i.releasing||i.runtime)return;const e=yb(i);if(e)try{i.runtime=new vb({canvas:e,dprMax:i.dprMax,camera:It.cameraMode(i.camera),fov:i.fov,exposure:i.exposure,autoRotate:!1,fit:i.fit,minDistance:i.minDistance,maxDistance:i.maxDistance,minPolar:An.degToRad(i.minPolar),maxPolar:An.degToRad(i.maxPolar)}),An.applyOrbitLimits(i),Tf(i),await An.run(i)}catch(t){An.emitError(i,t)}}function Ef(i){i.loadToken++,Hn.stopLoop(i),i.ready=!1,i.releasing=!0,i.runtime?.dispose(!1),i.runtime=null,i.releasing=!1}function xb(i){if(!i.inView&&i.releaseOffscreen){Ef(i);return}if(i.inView&&(!i.runtime||i.runtime.isLost)){Mf(i);return}i.syncPlayback()}function Tf(i){if(!i.runtime)return;const e=i.getBoundingClientRect(),t=Math.max(e.width,i.clientWidth,1),n=Math.max(e.height,i.clientHeight,1);i.runtime.resize(t,n),i.ready&&i.runtime.render()}const xa={ensureRuntime:Mf,releaseRuntime:Ef,syncVisibility:xb,syncSize:Tf};function wf(i){const e=i.aspectRatio.trim();if(e){i.style.setProperty("--sonic-3d-ar",e.includes("/")?e:e.replace(":"," / "));return}i.style.removeProperty("--sonic-3d-ar")}function Af(i){i.formPublisher&&(i.formPublisher.offInternalMutation(i.onFormMutation),i.formPublisher=null)}function Rf(i){Af(i);const e=Ba.resolveFormProviderId(i,i.dataProvider);e&&(i.formPublisher=Gt.get(e),i.formPublisher.onInternalMutation(i.onFormMutation),i.onFormMutation())}function Cf(i){const e=Ba.resolveOutProviderId(i,i.outDataProvider,i.dataProvider);i.outPublisher=e?Gt.get(e):null}function bb(i){wf(i),i.resizeObserver=new ResizeObserver(()=>xa.syncSize(i)),i.resizeObserver.observe(i),i.intersectionObserver=new IntersectionObserver(e=>{i.inView=e.some(t=>t.isIntersecting),xa.syncVisibility(i)},{threshold:0}),i.intersectionObserver.observe(i),Rf(i),Cf(i),requestAnimationFrame(()=>{(i.inView||!i.releaseOffscreen)&&xa.ensureRuntime(i)})}const gi={applyAspectRatio:wf,unbindFormProvider:Af,bindFormProvider:Rf,bindOutPublisher:Cf,firstUpdated:bb},Pf=["frameUrl","snapshot"];function Df(i){if(!i.outPublisher)return!1;if(i.frameOut)return!0;for(const e of Pf)if(Oa(i.outPublisher,e))return!0;return!1}function Sb(i,e){return{url:URL.createObjectURL(e),blob:e,width:i.width,height:i.height,mime:e.type||Rc}}function Mb(i){return new Promise(e=>{if(typeof i.toBlob!="function"){e(null);return}const t=n=>{if(!n){e(null);return}e(Sb(i,n))};try{i.toBlob(t,Rc,pd)}catch{e(null)}})}function Eb(i,e){const t=i.outPublisher;if(t){try{t.frameUrl.set(e.url)}catch{}try{t.snapshot.set(e)}catch{}}}function Tb(i,e){if(i.snapshotBusy||!i.runtime||!Df(i))return;const t=Math.max(dd,Number.isFinite(i.snapshotInterval)&&i.snapshotInterval>0?i.snapshotInterval:Ac);if(e-i.lastSnapshotAt<t)return;i.lastSnapshotAt=e,i.snapshotBusy=!0;const n=++i.snapshotSeq,r=i.runtime.renderer.domElement;Mb(r).then(s=>{if(i.snapshotBusy=!1,!s||n!==i.snapshotSeq){s&&Ia([s.url]);return}Ia(i.frameUrls),i.frameUrls=[s.url],Eb(i,s)})}function wb(i){i.snapshotSeq++,i.snapshotBusy=!1,Ia(i.frameUrls),i.frameUrls=[]}const sc={wantsFrameCapture:Df,maybeCapture:Tb,revokeAll:wb,FRAME_KEYS:Pf};function Lf(i){if(i.outEventListeners>0||i.frameOut&&i.outPublisher)return!0;if(!i.outPublisher)return!1;for(const e of _d)if(Oa(i.outPublisher,e))return!0;return!1}function If(i,e){return!(!gd.includes(e)||!i.formPublisher||i.formPublisher!==i.outPublisher)}function Uf(i,e){return i.runtime?.snapshot({time:e,frame:i.frame,hovering:i.hovering?1:0,pointerX:i.pointerX,pointerY:i.pointerY,hit:i.lastHit})??{time:e,frame:i.frame,ready:0,loading:0,hovering:i.hovering?1:0,pointerX:i.pointerX,pointerY:i.pointerY,camX:0,camY:0,camZ:0,targetX:0,targetY:0,targetZ:0,fov:i.fov,zoom:1,distance:0,yaw:0,pitch:0}}function Ab(i,e){const t=i.outPublisher;if(t){for(const[n,r]of Object.entries(e))if(r!==void 0&&!If(i,n)&&!sc.FRAME_KEYS.includes(n))try{t[n].set(r)}catch{}}}function Rb(i,e,t){if(i.outPublisher||i.bindOutPublisher(),!Lf(i)||!i.runtime)return;const n=Math.max(fd,i.outInterval||wc);if(e-i.lastOutAt>=n){i.lastOutAt=e;const r=Uf(i,t);Ab(i,r);const s={detail:r,bubbles:!0,composed:!0};i.dispatchEvent(new CustomEvent("out",s))}sc.maybeCapture(i,e)}const Cb={hasOutConsumers:Lf,maybePublish:Rb,buildOutput:Uf,shouldSkipFormControlOutWrite:If};function Nf(i,e){const t=i.getBoundingClientRect(),n=Math.max(t.width,1),r=Math.max(t.height,1);return{x:(e.clientX-t.left)/n,y:(e.clientY-t.top)/r}}function Pb(i,e){const t=Nf(i,e);i.pointerX=t.x,i.pointerY=t.y,i.pick&&i.runtime?.ready&&i.runtime.setHoverAt(t.x,t.y)}function Db(i,e){const t=Nf(i,e);if(i.pointerX=t.x,i.pointerY=t.y,!i.pick||!i.runtime||e.button!==0)return;const n=i.runtime.pick(t.x,t.y);i.lastHit=n,n&&i.dispatchEvent(new CustomEvent("pick",{detail:n,bubbles:!0,composed:!0}))}function Lb(i){i.runtime?.ready&&(i.runtime.fitToContent(),i.runtime.render())}function Ib(i){i.hovering=!0,i.syncPlayback()}function Ub(i){i.hovering=!1,i.runtime?.clearHighlight(),i.syncPlayback()}const fs={onMove:Pb,onDown:Db,onDblClick:Lb,onEnter:Ib,onLeave:Ub};var Nb=Object.defineProperty,Ct=(i,e,t,n)=>{for(var r=void 0,s=i.length-1,a;s>=0;s--)(a=i[s])&&(r=a(e,t,r)||r);return r&&Nb(e,t,r),r};class Rt extends Fr{constructor(){super(...arguments),this.src="",this.asset=null,this.camera=gn.Orbit,this.fov=vs,this.exposure=Da,this.minDistance=Cc,this.maxDistance=Pc,this.minPolar=Dc,this.maxPolar=md,this.autoRotate=!1,this.fit=!0,this.pick=!1,this.play=!0,this.playOnHover=!1,this.releaseOffscreen=!0,this.dprMax=2,this.aspectRatio="",this.dataProvider="",this.outDataProvider="",this.outInterval=wc,this.snapshotInterval=Ac,this.frameOut=!1}}Ct([wt()],Rt.prototype,"src"),Ct([wt({attribute:!1})],Rt.prototype,"asset"),Ct([wt({reflect:!0})],Rt.prototype,"camera"),Ct([wt({type:Number})],Rt.prototype,"fov"),Ct([wt({type:Number})],Rt.prototype,"exposure"),Ct([wt({type:Number,attribute:"min-distance"})],Rt.prototype,"minDistance"),Ct([wt({type:Number,attribute:"max-distance"})],Rt.prototype,"maxDistance"),Ct([wt({type:Number,attribute:"min-polar"})],Rt.prototype,"minPolar"),Ct([wt({type:Number,attribute:"max-polar"})],Rt.prototype,"maxPolar"),Ct([wt({type:Boolean,attribute:"auto-rotate"})],Rt.prototype,"autoRotate"),Ct([wt({type:Boolean})],Rt.prototype,"fit"),Ct([wt({type:Boolean})],Rt.prototype,"pick"),Ct([wt({type:Boolean,reflect:!0})],Rt.prototype,"play"),Ct([wt({type:Boolean,attribute:"play-on-hover"})],Rt.prototype,"playOnHover"),Ct([wt({type:Boolean,attribute:"release-offscreen"})],Rt.prototype,"releaseOffscreen"),Ct([wt({type:Number,attribute:"dpr-max"})],Rt.prototype,"dprMax"),Ct([wt({type:String,attribute:"aspect-ratio"})],Rt.prototype,"aspectRatio"),Ct([wt({type:String})],Rt.prototype,"dataProvider"),Ct([wt({type:String,attribute:"out-data-provider"})],Rt.prototype,"outDataProvider"),Ct([wt({type:Number,attribute:"out-interval"})],Rt.prototype,"outInterval"),Ct([wt({type:Number,attribute:"snapshot-interval"})],Rt.prototype,"snapshotInterval"),Ct([wt({type:Boolean,attribute:"frame-out"})],Rt.prototype,"frameOut");const Ob=Bf`
|
|
3874
3874
|
:host {
|
|
3875
3875
|
display: block;
|
|
3876
3876
|
position: relative;
|
|
@@ -3905,7 +3905,7 @@ void main() {
|
|
|
3905
3905
|
overflow: auto;
|
|
3906
3906
|
pointer-events: none;
|
|
3907
3907
|
}
|
|
3908
|
-
`;function
|
|
3908
|
+
`;function Fb(i,e){return e.some(t=>i.has(t))}function kb(i,e){i.runtime&&(e.has("camera")&&i.runtime.applyCameraMode(It.cameraMode(i.camera)),e.has("fov")&&i.runtime.setFov(i.fov),e.has("exposure")&&i.runtime.setExposure(i.exposure),e.has("dprMax")&&(i.runtime.setDprMax(i.dprMax),xa.syncSize(i)),e.has("fit")&&i.runtime.setFit(i.fit),Fb(e,["minDistance","maxDistance","minPolar","maxPolar","camera"])&&An.applyOrbitLimits(i))}function Bb(i,e){e.has("aspectRatio")&&gi.applyAspectRatio(i),(e.has("dataProvider")||e.has("outDataProvider"))&&(gi.bindFormProvider(i),gi.bindOutPublisher(i))}function zb(i,e){Bb(i,e),i.runtime&&(kb(i,e),(e.has("autoRotate")||e.has("play"))&&Hn.syncAutoRotate(i),(e.has("play")||e.has("playOnHover"))&&i.syncPlayback(),(e.has("src")||e.has("asset"))&&An.run(i))}const Hb={updated:zb};function Vb(i){i.addEventListener("pointermove",i.onPointerMove),i.addEventListener("pointerdown",i.onPointerDown),i.addEventListener("dblclick",i.onDblClick),i.addEventListener("pointerleave",i.onPointerLeave),i.addEventListener("pointerenter",i.onPointerEnter),gi.bindFormProvider(i),gi.bindOutPublisher(i)}function Gb(i){i.removeEventListener("pointermove",i.onPointerMove),i.removeEventListener("pointerdown",i.onPointerDown),i.removeEventListener("dblclick",i.onDblClick),i.removeEventListener("pointerleave",i.onPointerLeave),i.removeEventListener("pointerenter",i.onPointerEnter),gi.unbindFormProvider(i),Hn.stopLoop(i),i.resizeObserver?.disconnect(),i.intersectionObserver?.disconnect(),i.loadToken++,i.ready=!1,i.releasing=!0,sc.revokeAll(i),i.runtime?.dispose(!0),i.runtime=null,i.outPublisher=null,i.releasing=!1}const Of={connect:Vb,disconnect:Gb};var Wb=Object.defineProperty,Xb=Object.getOwnPropertyDescriptor,Ff=(i,e,t,n)=>{for(var r=n>1?void 0:n?Xb(e,t):e,s=i.length-1,a;s>=0;s--)(a=i[s])&&(r=(n?a(e,t,r):a(r))||r);return n&&r&&Wb(e,t,r),r};let ba=class extends Rt{constructor(){super(...arguments),this.errorMessage="",this.runtime=null,this.raf=0,this.startTime=0,this.frame=0,this.hovering=!1,this.pointerX=.5,this.pointerY=.5,this.lastHit=null,this.outEventListeners=0,this.inView=!0,this.ready=!1,this.releasing=!1,this.loadToken=0,this.resizeObserver=null,this.intersectionObserver=null,this.formPublisher=null,this.outPublisher=null,this.lastOutAt=0,this.lastSnapshotAt=0,this.snapshotBusy=!1,this.frameUrls=[],this.snapshotSeq=0,this.frameSeq=0,this.lastFormOrbit=null,this.onFormMutation=()=>{const i=this.formPublisher?.get()??{};Ba.formParams.applyFormParams(this,i)},this.syncAutoRotate=()=>Hn.syncAutoRotate(this),this.syncPlayback=()=>Hn.syncPlayback(this,this.loop),this.bindOutPublisher=()=>gi.bindOutPublisher(this),this.loop=()=>{this.raf=requestAnimationFrame(this.loop),this.drawFrame(performance.now()),this.playOnHover&&!this.hovering&&!this.autoRotate&&Hn.stopLoop(this)},this.onPointerMove=i=>fs.onMove(this,i),this.onPointerDown=i=>fs.onDown(this,i),this.onDblClick=()=>fs.onDblClick(this),this.onPointerEnter=()=>fs.onEnter(this),this.onPointerLeave=()=>fs.onLeave(this)}connectedCallback(){super.connectedCallback(),this.pointerX,this.pointerY,this.lastHit,this.inView,this.releasing,this.loadToken,this.resizeObserver,this.intersectionObserver,this.formPublisher,this.outPublisher,this.lastOutAt,this.lastSnapshotAt,this.snapshotBusy,this.frameUrls,this.snapshotSeq,this.lastFormOrbit,this.syncAutoRotate,this.syncPlayback,this.bindOutPublisher,this.onPointerMove,this.onPointerDown,this.onDblClick,this.onPointerEnter,this.onPointerLeave,this.onFormMutation,this.errorMessage,Of.connect(this)}addEventListener(i,e,t){i==="out"&&e&&this.outEventListeners++,super.addEventListener(i,e,t)}removeEventListener(i,e,t){i==="out"&&e&&(this.outEventListeners=Math.max(0,this.outEventListeners-1)),super.removeEventListener(i,e,t)}disconnectedCallback(){super.disconnectedCallback(),Of.disconnect(this)}firstUpdated(){gi.firstUpdated(this)}updated(i){Hb.updated(this,i)}drawFrame(i){!this.runtime||!this.ready||(this.frame++,this.runtime.render(),this.frameSeq++,Cb.maybePublish(this,i,(i-this.startTime)/1e3))}getFrameCanvas(){return!this.runtime||!this.ready?null:this.runtime.renderer.domElement}render(){return Mc`
|
|
3909
3909
|
<canvas part="canvas"></canvas>
|
|
3910
|
-
${this.errorMessage?
|
|
3911
|
-
`}};ba.styles=
|
|
3910
|
+
${this.errorMessage?Mc`<div class="err" part="error">${this.errorMessage}</div>`:null}
|
|
3911
|
+
`}};ba.styles=Ob,Ff([ud()],ba.prototype,"errorMessage",2),ba=Ff([od("sonic-3d")],ba)})();
|