dsh-mutipleagent 0.2.1 → 0.4.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/CHANGELOG.md +65 -0
- package/README.en.md +34 -4
- package/README.md +34 -5
- package/assets/kenney/LICENSE-mini-characters.txt +27 -27
- package/client.js +62 -8
- package/package.json +4 -2
- package/public/app.js +1 -1
- package/public/chunks/{chunk-RQUUGNU7.js → chunk-MU3LEDFF.js} +2 -2
- package/public/demo.css +55 -3
- package/public/demo.html +7 -4
- package/public/demo.js +6 -6
- package/public/vendor/office.js +1631 -1631
- package/vendor/licenses/PLAYWRIGHT-LICENSE.txt +202 -202
|
@@ -4219,7 +4219,7 @@ void main() {
|
|
|
4219
4219
|
|
|
4220
4220
|
}`,Jl=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){let n=new xr(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){let t=e.cameras[0].viewport,n=new cn({vertexShader:gx,fragmentShader:bx,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Ce(new Kt(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},Zl=class extends pn{constructor(e,t){super();let n=this,i=null,s=1,a=null,o="local-floor",c=1,l=null,h=null,d=null,u=null,f=null,m=null,y=typeof XRWebGLBinding<"u",g=new Jl,p={},M=t.getContextAttributes(),T=null,x=null,w=[],v=[],A=new he,b=null,E=null,P=new Ft;P.viewport=new it;let D=new Ft;D.viewport=new it;let U=[P,D],k=new no,N=null,G=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(X){let $=w[X];return $===void 0&&($=new ws,w[X]=$),$.getTargetRaySpace()},this.getControllerGrip=function(X){let $=w[X];return $===void 0&&($=new ws,w[X]=$),$.getGripSpace()},this.getHand=function(X){let $=w[X];return $===void 0&&($=new ws,w[X]=$),$.getHandSpace()};function K(X){let $=v.indexOf(X.inputSource);if($===-1)return;let xe=w[$];xe!==void 0&&(xe.update(X.inputSource,X.frame,l||a),xe.dispatchEvent({type:X.type,data:X.inputSource}))}function Y(){i.removeEventListener("select",K),i.removeEventListener("selectstart",K),i.removeEventListener("selectend",K),i.removeEventListener("squeeze",K),i.removeEventListener("squeezestart",K),i.removeEventListener("squeezeend",K),i.removeEventListener("end",Y),i.removeEventListener("inputsourceschange",ne);for(let X=0;X<w.length;X++){let $=v[X];$!==null&&(v[X]=null,w[X].disconnect($))}N=null,G=null,g.reset();for(let X in p)delete p[X];if(e.setRenderTarget(T),f=null,u=null,d=null,i=null,x=null,Ze.stop(),n.isPresenting=!1,e.setPixelRatio(b),e.setSize(A.width,A.height,!1),E!==null){let X=E.camera;X.fov=E.fov,X.zoom=E.zoom,X.updateProjectionMatrix(),E=null}n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(X){s=X,n.isPresenting===!0&&Me("WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(X){o=X,n.isPresenting===!0&&Me("WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(X){l=X},this.getBaseLayer=function(){return u!==null?u:f},this.getBinding=function(){return d===null&&y&&(d=new XRWebGLBinding(i,t)),d},this.getFrame=function(){return m},this.getSession=function(){return i},this.setSession=async function(X){if(i=X,i!==null){if(T=e.getRenderTarget(),i.addEventListener("select",K),i.addEventListener("selectstart",K),i.addEventListener("selectend",K),i.addEventListener("squeeze",K),i.addEventListener("squeezestart",K),i.addEventListener("squeezeend",K),i.addEventListener("end",Y),i.addEventListener("inputsourceschange",ne),M.xrCompatible!==!0&&await t.makeXRCompatible(),b=e.getPixelRatio(),e.getSize(A),y&&"createProjectionLayer"in XRWebGLBinding.prototype){let xe=null,Ne=null,ge=null;M.depth&&(ge=M.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,xe=M.stencil?Ai:Un,Ne=M.stencil?ks:Cn);let Ge={colorFormat:t.RGBA8,depthFormat:ge,scaleFactor:s};d=this.getBinding(),u=d.createProjectionLayer(Ge),i.updateRenderState({layers:[u]}),e.setPixelRatio(1),e.setSize(u.textureWidth,u.textureHeight,!1),x=new Zt(u.textureWidth,u.textureHeight,{format:hn,type:nn,depthTexture:new yi(u.textureWidth,u.textureHeight,Ne,void 0,void 0,void 0,void 0,void 0,void 0,xe),stencilBuffer:M.stencil,colorSpace:e.outputColorSpace,samples:M.antialias?4:0,resolveDepthBuffer:u.ignoreDepthValues===!1,resolveStencilBuffer:u.ignoreDepthValues===!1,storeMultisampledDepthBuffer:u.ignoreDepthValues===!1,storeMultisampledStencilBuffer:u.ignoreDepthValues===!1})}else{let xe={antialias:M.antialias,alpha:!0,depth:M.depth,stencil:M.stencil,framebufferScaleFactor:s};f=new XRWebGLLayer(i,t,xe),i.updateRenderState({baseLayer:f}),e.setPixelRatio(1),e.setSize(f.framebufferWidth,f.framebufferHeight,!1),x=new Zt(f.framebufferWidth,f.framebufferHeight,{format:hn,type:nn,colorSpace:e.outputColorSpace,stencilBuffer:M.stencil,resolveDepthBuffer:f.ignoreDepthValues===!1,resolveStencilBuffer:f.ignoreDepthValues===!1,storeMultisampledDepthBuffer:f.ignoreDepthValues===!1,storeMultisampledStencilBuffer:f.ignoreDepthValues===!1})}x.isXRRenderTarget=!0,this.setFoveation(c),l=null,a=await i.requestReferenceSpace(o),Ze.setContext(i),Ze.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(i!==null)return i.environmentBlendMode},this.getDepthTexture=function(){return g.getDepthTexture()};function ne(X){for(let $=0;$<X.removed.length;$++){let xe=X.removed[$],Ne=v.indexOf(xe);Ne>=0&&(v[Ne]=null,w[Ne].disconnect(xe))}for(let $=0;$<X.added.length;$++){let xe=X.added[$],Ne=v.indexOf(xe);if(Ne===-1){for(let Ge=0;Ge<w.length;Ge++)if(Ge>=v.length){v.push(xe),Ne=Ge;break}else if(v[Ge]===null){v[Ge]=xe,Ne=Ge;break}if(Ne===-1)break}let ge=w[Ne];ge&&ge.connect(xe)}}let q=new C,Q=new C;function te(X,$,xe){q.setFromMatrixPosition($.matrixWorld),Q.setFromMatrixPosition(xe.matrixWorld);let Ne=q.distanceTo(Q),ge=$.projectionMatrix.elements,Ge=xe.projectionMatrix.elements,Rt=ge[14]/(ge[10]-1),We=ge[14]/(ge[10]+1),Je=(ge[9]+1)/ge[5],ht=(ge[9]-1)/ge[5],Xe=(ge[8]-1)/ge[0],mt=(Ge[8]+1)/Ge[0],Lt=Rt*Xe,Jt=Rt*mt,bt=Ne/(-Xe+mt),wt=bt*-Xe;if($.matrixWorld.decompose(X.position,X.quaternion,X.scale),X.translateX(wt),X.translateZ(bt),X.matrixWorld.compose(X.position,X.quaternion,X.scale),X.matrixWorldInverse.copy(X.matrixWorld).invert(),ge[10]===-1)X.projectionMatrix.copy($.projectionMatrix),X.projectionMatrixInverse.copy($.projectionMatrixInverse);else{let F=Rt+bt,kt=We+bt,tt=Lt-wt,R=Jt+(Ne-wt),_=Je*We/kt*F,O=ht*We/kt*F;X.projectionMatrix.makePerspective(tt,R,_,O,F,kt),X.projectionMatrixInverse.copy(X.projectionMatrix).invert()}}function Pe(X,$){$===null?X.matrixWorld.copy(X.matrix):X.matrixWorld.multiplyMatrices($.matrixWorld,X.matrix),X.matrixWorldInverse.copy(X.matrixWorld).invert()}this.updateCamera=function(X){if(i===null)return;let $=X.near,xe=X.far;g.texture!==null&&(g.depthNear>0&&($=g.depthNear),g.depthFar>0&&(xe=g.depthFar)),k.near=D.near=P.near=$,k.far=D.far=P.far=xe,(N!==k.near||G!==k.far)&&(i.updateRenderState({depthNear:k.near,depthFar:k.far}),N=k.near,G=k.far),k.layers.mask=X.layers.mask|6,P.layers.mask=k.layers.mask&-5,D.layers.mask=k.layers.mask&-3;let Ne=X.parent,ge=k.cameras;Pe(k,Ne);for(let Ge=0;Ge<ge.length;Ge++)Pe(ge[Ge],Ne);ge.length===2?te(k,P,D):k.projectionMatrix.copy(P.projectionMatrix),E===null&&X.isPerspectiveCamera&&(E={camera:X,fov:X.fov,zoom:X.zoom}),Ae(X,k,Ne)};function Ae(X,$,xe){xe===null?X.matrix.copy($.matrixWorld):(X.matrix.copy(xe.matrixWorld),X.matrix.invert(),X.matrix.multiply($.matrixWorld)),X.matrix.decompose(X.position,X.quaternion,X.scale),X.updateMatrixWorld(!0),X.projectionMatrix.copy($.projectionMatrix),X.projectionMatrixInverse.copy($.projectionMatrixInverse),X.isPerspectiveCamera&&(X.fov=zi*2*Math.atan(1/X.projectionMatrix.elements[5]),X.zoom=1)}this.getCamera=function(){return k},this.getFoveation=function(){if(!(u===null&&f===null))return c},this.setFoveation=function(X){c=X,u!==null&&(u.fixedFoveation=X),f!==null&&f.fixedFoveation!==void 0&&(f.fixedFoveation=X)},this.hasDepthSensing=function(){return g.texture!==null},this.getDepthSensingMesh=function(){return g.getMesh(k)},this.getCameraTexture=function(X){return p[X]};let lt=null;function je(X,$){if(h=$.getViewerPose(l||a),m=$,h!==null){let xe=h.views;f!==null&&(e.setRenderTargetFramebuffer(x,f.framebuffer),e.setRenderTarget(x));let Ne=!1;xe.length!==k.cameras.length&&(k.cameras.length=0,Ne=!0);for(let We=0;We<xe.length;We++){let Je=xe[We],ht=null;if(f!==null)ht=f.getViewport(Je);else{let mt=d.getViewSubImage(u,Je);ht=mt.viewport,We===0&&(e.setRenderTargetTextures(x,mt.colorTexture,mt.depthStencilTexture),e.setRenderTarget(x))}let Xe=U[We];Xe===void 0&&(Xe=new Ft,Xe.layers.enable(We),Xe.viewport=new it,U[We]=Xe),Xe.matrix.fromArray(Je.transform.matrix),Xe.matrix.decompose(Xe.position,Xe.quaternion,Xe.scale),Xe.projectionMatrix.fromArray(Je.projectionMatrix),Xe.projectionMatrixInverse.copy(Xe.projectionMatrix).invert(),Xe.viewport.set(ht.x,ht.y,ht.width,ht.height),We===0&&(k.matrix.copy(Xe.matrix),k.matrix.decompose(k.position,k.quaternion,k.scale)),Ne===!0&&k.cameras.push(Xe)}let ge=i.enabledFeatures;if(ge&&ge.includes("depth-sensing")&&i.depthUsage=="gpu-optimized"&&y){d=n.getBinding();let We=d.getDepthInformation(xe[0]);We&&We.isValid&&We.texture&&g.init(We,i.renderState)}if(ge&&ge.includes("camera-access")&&y){e.state.unbindTexture(),d=n.getBinding();for(let We=0;We<xe.length;We++){let Je=xe[We].camera;if(Je){let ht=p[Je];ht||(ht=new xr,p[Je]=ht);let Xe=d.getCameraImage(Je);ht.sourceTexture=Xe}}}}for(let xe=0;xe<w.length;xe++){let Ne=v[xe],ge=w[xe];Ne!==null&&ge!==void 0&&ge.update(Ne,$,l||a)}lt&<(X,$),$.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:$}),m=null}let Ze=new Gu;Ze.setAnimationLoop(je),this.setAnimationLoop=function(X){lt=X},this.dispose=function(){}}},xx=new Fe,Ku=new Le;Ku.set(-1,0,0,0,1,0,0,0,1);function _x(r,e){function t(g,p){g.matrixAutoUpdate===!0&&g.updateMatrix(),p.value.copy(g.matrix)}function n(g,p){p.color.getRGB(g.fogColor.value,Rl(r)),p.isFog?(g.fogNear.value=p.near,g.fogFar.value=p.far):p.isFogExp2&&(g.fogDensity.value=p.density)}function i(g,p,M,T,x){p.isNodeMaterial?p.uniformsNeedUpdate=!1:p.isMeshBasicMaterial?s(g,p):p.isMeshLambertMaterial?(s(g,p),p.envMap&&(g.envMapIntensity.value=p.envMapIntensity)):p.isMeshToonMaterial?(s(g,p),d(g,p)):p.isMeshPhongMaterial?(s(g,p),h(g,p),p.envMap&&(g.envMapIntensity.value=p.envMapIntensity)):p.isMeshStandardMaterial?(s(g,p),u(g,p),p.isMeshPhysicalMaterial&&f(g,p,x)):p.isMeshMatcapMaterial?(s(g,p),m(g,p)):p.isMeshDepthMaterial?s(g,p):p.isMeshDistanceMaterial?(s(g,p),y(g,p)):p.isMeshNormalMaterial?s(g,p):p.isLineBasicMaterial?(a(g,p),p.isLineDashedMaterial&&o(g,p)):p.isPointsMaterial?c(g,p,M,T):p.isSpriteMaterial?l(g,p):p.isShadowMaterial?(g.color.value.copy(p.color),g.opacity.value=p.opacity):p.isShaderMaterial&&(p.uniformsNeedUpdate=!1)}function s(g,p){g.opacity.value=p.opacity,p.color&&g.diffuse.value.copy(p.color),p.emissive&&g.emissive.value.copy(p.emissive).multiplyScalar(p.emissiveIntensity),p.map&&(g.map.value=p.map,t(p.map,g.mapTransform)),p.alphaMap&&(g.alphaMap.value=p.alphaMap,t(p.alphaMap,g.alphaMapTransform)),p.bumpMap&&(g.bumpMap.value=p.bumpMap,t(p.bumpMap,g.bumpMapTransform),g.bumpScale.value=p.bumpScale,p.side===Yt&&(g.bumpScale.value*=-1)),p.normalMap&&(g.normalMap.value=p.normalMap,t(p.normalMap,g.normalMapTransform),g.normalScale.value.copy(p.normalScale),p.side===Yt&&g.normalScale.value.negate()),p.displacementMap&&(g.displacementMap.value=p.displacementMap,t(p.displacementMap,g.displacementMapTransform),g.displacementScale.value=p.displacementScale,g.displacementBias.value=p.displacementBias),p.emissiveMap&&(g.emissiveMap.value=p.emissiveMap,t(p.emissiveMap,g.emissiveMapTransform)),p.specularMap&&(g.specularMap.value=p.specularMap,t(p.specularMap,g.specularMapTransform)),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest);let M=e.get(p),T=M.envMap,x=M.envMapRotation;T&&(g.envMap.value=T,g.envMapRotation.value.setFromMatrix4(xx.makeRotationFromEuler(x)).transpose(),T.isCubeTexture&&T.isRenderTargetTexture===!1&&g.envMapRotation.value.premultiply(Ku),g.reflectivity.value=p.reflectivity,g.ior.value=p.ior,g.refractionRatio.value=p.refractionRatio),p.lightMap&&(g.lightMap.value=p.lightMap,g.lightMapIntensity.value=p.lightMapIntensity,t(p.lightMap,g.lightMapTransform)),p.aoMap&&(g.aoMap.value=p.aoMap,g.aoMapIntensity.value=p.aoMapIntensity,t(p.aoMap,g.aoMapTransform))}function a(g,p){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,p.map&&(g.map.value=p.map,t(p.map,g.mapTransform))}function o(g,p){g.dashSize.value=p.dashSize,g.totalSize.value=p.dashSize+p.gapSize,g.scale.value=p.scale}function c(g,p,M,T){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,g.size.value=p.size*M,g.scale.value=T*.5,p.map&&(g.map.value=p.map,t(p.map,g.uvTransform)),p.alphaMap&&(g.alphaMap.value=p.alphaMap,t(p.alphaMap,g.alphaMapTransform)),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest)}function l(g,p){g.diffuse.value.copy(p.color),g.opacity.value=p.opacity,g.rotation.value=p.rotation,p.map&&(g.map.value=p.map,t(p.map,g.mapTransform)),p.alphaMap&&(g.alphaMap.value=p.alphaMap,t(p.alphaMap,g.alphaMapTransform)),p.alphaTest>0&&(g.alphaTest.value=p.alphaTest)}function h(g,p){g.specular.value.copy(p.specular),g.shininess.value=Math.max(p.shininess,1e-4)}function d(g,p){p.gradientMap&&(g.gradientMap.value=p.gradientMap)}function u(g,p){g.metalness.value=p.metalness,p.metalnessMap&&(g.metalnessMap.value=p.metalnessMap,t(p.metalnessMap,g.metalnessMapTransform)),g.roughness.value=p.roughness,p.roughnessMap&&(g.roughnessMap.value=p.roughnessMap,t(p.roughnessMap,g.roughnessMapTransform)),p.envMap&&(g.envMapIntensity.value=p.envMapIntensity)}function f(g,p,M){g.ior.value=p.ior,p.sheen>0&&(g.sheenColor.value.copy(p.sheenColor).multiplyScalar(p.sheen),g.sheenRoughness.value=p.sheenRoughness,p.sheenColorMap&&(g.sheenColorMap.value=p.sheenColorMap,t(p.sheenColorMap,g.sheenColorMapTransform)),p.sheenRoughnessMap&&(g.sheenRoughnessMap.value=p.sheenRoughnessMap,t(p.sheenRoughnessMap,g.sheenRoughnessMapTransform))),p.clearcoat>0&&(g.clearcoat.value=p.clearcoat,g.clearcoatRoughness.value=p.clearcoatRoughness,p.clearcoatMap&&(g.clearcoatMap.value=p.clearcoatMap,t(p.clearcoatMap,g.clearcoatMapTransform)),p.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=p.clearcoatRoughnessMap,t(p.clearcoatRoughnessMap,g.clearcoatRoughnessMapTransform)),p.clearcoatNormalMap&&(g.clearcoatNormalMap.value=p.clearcoatNormalMap,t(p.clearcoatNormalMap,g.clearcoatNormalMapTransform),g.clearcoatNormalScale.value.copy(p.clearcoatNormalScale),p.side===Yt&&g.clearcoatNormalScale.value.negate())),p.dispersion>0&&(g.dispersion.value=p.dispersion),p.retroreflectivity>0&&(g.retroreflectivity.value=p.retroreflectivity),p.iridescence>0&&(g.iridescence.value=p.iridescence,g.iridescenceIOR.value=p.iridescenceIOR,g.iridescenceThicknessMinimum.value=p.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=p.iridescenceThicknessRange[1],p.iridescenceMap&&(g.iridescenceMap.value=p.iridescenceMap,t(p.iridescenceMap,g.iridescenceMapTransform)),p.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=p.iridescenceThicknessMap,t(p.iridescenceThicknessMap,g.iridescenceThicknessMapTransform))),p.transmission>0&&(g.transmission.value=p.transmission,g.transmissionSamplerMap.value=M.texture,g.transmissionSamplerSize.value.set(M.width,M.height),p.transmissionMap&&(g.transmissionMap.value=p.transmissionMap,t(p.transmissionMap,g.transmissionMapTransform)),g.thickness.value=p.thickness,p.thicknessMap&&(g.thicknessMap.value=p.thicknessMap,t(p.thicknessMap,g.thicknessMapTransform)),g.attenuationDistance.value=p.attenuationDistance,g.attenuationColor.value.copy(p.attenuationColor)),p.anisotropy>0&&(g.anisotropyVector.value.set(p.anisotropy*Math.cos(p.anisotropyRotation),p.anisotropy*Math.sin(p.anisotropyRotation)),p.anisotropyMap&&(g.anisotropyMap.value=p.anisotropyMap,t(p.anisotropyMap,g.anisotropyMapTransform))),g.specularIntensity.value=p.specularIntensity,g.specularColor.value.copy(p.specularColor),p.specularColorMap&&(g.specularColorMap.value=p.specularColorMap,t(p.specularColorMap,g.specularColorMapTransform)),p.specularIntensityMap&&(g.specularIntensityMap.value=p.specularIntensityMap,t(p.specularIntensityMap,g.specularIntensityMapTransform))}function m(g,p){p.matcap&&(g.matcap.value=p.matcap)}function y(g,p){let M=e.get(p).light;g.referencePosition.value.setFromMatrixPosition(M.matrixWorld),g.nearDistance.value=M.shadow.camera.near,g.farDistance.value=M.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:i}}function yx(r,e,t,n){let i={},s={},a=[],o=r.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS);function c(x,w){let v=w.program;n.uniformBlockBinding(x,v)}function l(x,w){let v=i[x.id];v===void 0&&(g(x),v=h(x),i[x.id]=v,x.addEventListener("dispose",M));let A=w.program;n.updateUBOMapping(x,A);let b=e.render.frame;s[x.id]!==b&&(u(x),s[x.id]=b)}function h(x){let w=d();x.__bindingPointIndex=w;let v=r.createBuffer(),A=x.__size,b=x.usage;return r.bindBuffer(r.UNIFORM_BUFFER,v),r.bufferData(r.UNIFORM_BUFFER,A,b),r.bindBuffer(r.UNIFORM_BUFFER,null),r.bindBufferBase(r.UNIFORM_BUFFER,w,v),v}function d(){for(let x=0;x<o;x++)if(a.indexOf(x)===-1)return a.push(x),x;return De("WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function u(x){let w=i[x.id],v=x.uniforms,A=x.__cache;r.bindBuffer(r.UNIFORM_BUFFER,w);for(let b=0,E=v.length;b<E;b++){let P=v[b];if(Array.isArray(P))for(let D=0,U=P.length;D<U;D++)f(P[D],b,D,A);else f(P,b,0,A)}r.bindBuffer(r.UNIFORM_BUFFER,null)}function f(x,w,v,A){if(y(x,w,v,A)===!0){let b=x.__offset,E=x.value;if(Array.isArray(E)){let P=0;for(let D=0;D<E.length;D++){let U=E[D],k=p(U);m(U,x.__data,P),typeof U!="number"&&typeof U!="boolean"&&!U.isMatrix3&&!ArrayBuffer.isView(U)&&(P+=k.storage/Float32Array.BYTES_PER_ELEMENT)}}else m(E,x.__data,0);r.bufferSubData(r.UNIFORM_BUFFER,b,x.__data)}}function m(x,w,v){typeof x=="number"||typeof x=="boolean"?w[0]=x:x.isMatrix3?(w[0]=x.elements[0],w[1]=x.elements[1],w[2]=x.elements[2],w[3]=0,w[4]=x.elements[3],w[5]=x.elements[4],w[6]=x.elements[5],w[7]=0,w[8]=x.elements[6],w[9]=x.elements[7],w[10]=x.elements[8],w[11]=0):ArrayBuffer.isView(x)?w.set(new x.constructor(x.buffer,x.byteOffset,w.length)):x.toArray(w,v)}function y(x,w,v,A){let b=x.value,E=w+"_"+v;if(A[E]===void 0)return typeof b=="number"||typeof b=="boolean"?A[E]=b:ArrayBuffer.isView(b)?A[E]=b.slice():A[E]=b.clone(),!0;{let P=A[E];if(typeof b=="number"||typeof b=="boolean"){if(P!==b)return A[E]=b,!0}else{if(ArrayBuffer.isView(b))return!0;if(P.equals(b)===!1)return P.copy(b),!0}}return!1}function g(x){let w=x.uniforms,v=0,A=16;for(let E=0,P=w.length;E<P;E++){let D=Array.isArray(w[E])?w[E]:[w[E]];for(let U=0,k=D.length;U<k;U++){let N=D[U],G=Array.isArray(N.value)?N.value:[N.value];for(let K=0,Y=G.length;K<Y;K++){let ne=G[K],q=p(ne),Q=v%A,te=Q%q.boundary,Pe=Q+te;v+=te,Pe!==0&&A-Pe<q.storage&&(v+=A-Pe),N.__data=new Float32Array(q.storage/Float32Array.BYTES_PER_ELEMENT),N.__offset=v,v+=q.storage}}}let b=v%A;return b>0&&(v+=A-b),x.__size=v,x.__cache={},this}function p(x){let w={boundary:0,storage:0};return typeof x=="number"||typeof x=="boolean"?(w.boundary=4,w.storage=4):x.isVector2?(w.boundary=8,w.storage=8):x.isVector3||x.isColor?(w.boundary=16,w.storage=12):x.isVector4?(w.boundary=16,w.storage=16):x.isMatrix3?(w.boundary=48,w.storage=48):x.isMatrix4?(w.boundary=64,w.storage=64):x.isTexture?Me("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ArrayBuffer.isView(x)?(w.boundary=16,w.storage=x.byteLength):Me("WebGLRenderer: Unsupported uniform value type.",x),w}function M(x){let w=x.target;w.removeEventListener("dispose",M);let v=a.indexOf(w.__bindingPointIndex);a.splice(v,1),r.deleteBuffer(i[w.id]),delete i[w.id],delete s[w.id]}function T(){for(let x in i)r.deleteBuffer(i[x]);a=[],i={},s={}}return{bind:c,update:l,dispose:T}}var vx=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]),Vn=null;function Mx(){return Vn===null&&(Vn=new Rs(vx,16,16,Ri,Pn),Vn.name="DFG_LUT",Vn.minFilter=Mt,Vn.magFilter=Mt,Vn.wrapS=fn,Vn.wrapT=fn,Vn.generateMipmaps=!1,Vn.needsUpdate=!0),Vn}var nc=class{constructor(e={}){let{canvas:t=fu(),context:n=null,depth:i=!0,stencil:s=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:c=!0,preserveDrawingBuffer:l=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:d=!1,reversedDepthBuffer:u=!1,outputBufferType:f=nn}=e;this.isWebGLRenderer=!0;let m;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");m=n.getContextAttributes().alpha}else m=a;let y=f,g=new Set([bo,go,mo]),p=new Set([nn,Cn,Os,ks,uo,fo]),M=new Uint32Array(4),T=new Int32Array(4),x=new C,w=null,v=null,A=[],b=[],E=null;this.domElement=t,this.debug={checkShaderErrors:!0,diagnostics:{keywords:!1},onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=An,this.toneMappingExposure=1,this.transmissionResolutionScale=1;let P=this,D=!1,U=null,k=null,N=null,G=null;this._outputColorSpace=ot;let K=0,Y=0,ne=null,q=-1,Q=null,te=new it,Pe=new it,Ae=null,lt=new we(0),je=0,Ze=t.width,X=t.height,$=1,xe=null,Ne=null,ge=new it(0,0,Ze,X),Ge=new it(0,0,Ze,X),Rt=!1,We=new Cs,Je=!1,ht=!1,Xe=new Fe,mt=new C,Lt=new it,Jt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},bt=!1;function wt(){return ne===null?$:1}let F=n;function kt(S,I){return t.getContext(S,I)}let tt,R,_,O,H,W,ie,se,j,Z,re,Te,le,ae,Ee,Ie,Oe,L,oe,J,ce,pe,ee;try{let S={alpha:!0,depth:i,stencil:s,antialias:o,premultipliedAlpha:c,preserveDrawingBuffer:l,powerPreference:h,failIfMajorPerformanceCaveat:d};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${"186"}`),t.addEventListener("webglcontextlost",dt,!1),t.addEventListener("webglcontextrestored",$e,!1),t.addEventListener("webglcontextcreationerror",xn,!1),F===null){let I="webgl2";if(F=kt(I,S),F===null)throw kt(I)?new Error("THREE.WebGLRenderer: Error creating WebGL context with your selected attributes."):new Error("THREE.WebGLRenderer: Error creating WebGL context.")}Re()}catch(S){throw t.removeEventListener("webglcontextlost",dt,!1),t.removeEventListener("webglcontextrestored",$e,!1),t.removeEventListener("webglcontextcreationerror",xn,!1),De("WebGLRenderer: "+S.message),S}function Re(){tt=new C0(F),tt.init(),ce=new mx(F,tt),R=new _0(F,tt,e,ce),_=new fx(F,tt),R.reversedDepthBuffer&&u&&_.buffers.depth.setReversed(!0),k=F.createFramebuffer(),N=F.createFramebuffer(),G=F.createFramebuffer(),O=new D0(F),H=new Qb,W=new px(F,tt,_,H,R,ce,O),ie=new R0(P),se=new Np(F),pe=new b0(F,se),j=new P0(F,se,O,pe),Z=new N0(F,j,se,pe,O),L=new L0(F,R,W),Ee=new y0(H),re=new $b(P,ie,tt,R,pe,Ee),Te=new _x(P,H),le=new tx,ae=new ox(tt),Oe=new g0(P,ie,_,Z,m,c),Ie=new ux(P,Z,R),ee=new yx(F,O,R,_),oe=new x0(F,tt,O),J=new I0(F,tt,O),O.programs=re.programs,P.capabilities=R,P.extensions=tt,P.properties=H,P.renderLists=le,P.shadowMap=Ie,P.state=_,P.info=O}y!==nn&&(E=new U0(y,t.width,t.height,o,i,s));let ve=new Zl(P,F);this.xr=ve,this.getContext=function(){return F},this.getContextAttributes=function(){return F.getContextAttributes()},this.forceContextLoss=function(){let S=tt.get("WEBGL_lose_context");S&&S.loseContext()},this.forceContextRestore=function(){let S=tt.get("WEBGL_lose_context");S&&S.restoreContext()},this.getPixelRatio=function(){return $},this.setPixelRatio=function(S){S!==void 0&&($=S,this.setSize(Ze,X,!1))},this.getSize=function(S){return S.set(Ze,X)},this.setSize=function(S,I,V=!0){if(ve.isPresenting){Me("WebGLRenderer: Can't change size while VR device is presenting.");return}Ze=S,X=I,t.width=Math.floor(S*$),t.height=Math.floor(I*$),V===!0&&(t.style.width=S+"px",t.style.height=I+"px"),E!==null&&E.setSize(t.width,t.height),this.setViewport(0,0,S,I)},this.getDrawingBufferSize=function(S){return S.set(Ze*$,X*$).floor()},this.setDrawingBufferSize=function(S,I,V){Ze=S,X=I,$=V,t.width=Math.floor(S*V),t.height=Math.floor(I*V),this.setViewport(0,0,S,I)},this.setEffects=function(S){if(y===nn){De("WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.");return}if(S){for(let I=0;I<S.length;I++)if(S[I].isOutputPass===!0){Me("WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.");break}}E.setEffects(S||[])},this.getCurrentViewport=function(S){return S.copy(te)},this.getViewport=function(S){return S.copy(ge)},this.setViewport=function(S,I,V,B){S.isVector4?ge.set(S.x,S.y,S.z,S.w):ge.set(S,I,V,B),_.viewport(te.copy(ge).multiplyScalar($).round())},this.getScissor=function(S){return S.copy(Ge)},this.setScissor=function(S,I,V,B){S.isVector4?Ge.set(S.x,S.y,S.z,S.w):Ge.set(S,I,V,B),_.scissor(Pe.copy(Ge).multiplyScalar($).round())},this.getScissorTest=function(){return Rt},this.setScissorTest=function(S){_.setScissorTest(Rt=S)},this.setOpaqueSort=function(S){xe=S},this.setTransparentSort=function(S){Ne=S},this.getClearColor=function(S){return S.copy(Oe.getClearColor())},this.setClearColor=function(){Oe.setClearColor(...arguments)},this.getClearAlpha=function(){return Oe.getClearAlpha()},this.setClearAlpha=function(){Oe.setClearAlpha(...arguments)},this.clear=function(S=!0,I=!0,V=!0){let B=0;if(S){let z=!1;if(ne!==null){let fe=ne.texture.format;z=g.has(fe)}if(z){let fe=ne.texture.type,be=p.has(fe),ue=Oe.getClearColor(),_e=Oe.getClearAlpha(),Se=ue.r,Be=ue.g,qe=ue.b;be?(M[0]=Se,M[1]=Be,M[2]=qe,M[3]=_e,F.clearBufferuiv(F.COLOR,0,M)):(T[0]=Se,T[1]=Be,T[2]=qe,T[3]=_e,F.clearBufferiv(F.COLOR,0,T))}else B|=F.COLOR_BUFFER_BIT}I&&(B|=F.DEPTH_BUFFER_BIT,this.state.buffers.depth.setMask(!0)),V&&(B|=F.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),B!==0&&F.clear(B)},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.setNodesHandler=function(S){S.setRenderer(this),U=S},this.dispose=function(){t.removeEventListener("webglcontextlost",dt,!1),t.removeEventListener("webglcontextrestored",$e,!1),t.removeEventListener("webglcontextcreationerror",xn,!1),Oe.dispose(),le.dispose(),ae.dispose(),H.dispose(),ie.dispose(),Z.dispose(),pe.dispose(),ee.dispose(),re.dispose(),ve.dispose(),ve.removeEventListener("sessionstart",Nh),ve.removeEventListener("sessionend",Fh),Pi.stop()};function dt(S){S.preventDefault(),ar("WebGLRenderer: Context Lost."),D=!0}function $e(){ar("WebGLRenderer: Context Restored."),D=!1;let S=O.autoReset,I=Ie.enabled,V=Ie.autoUpdate,B=Ie.needsUpdate,z=Ie.type;Re(),O.autoReset=S,Ie.enabled=I,Ie.autoUpdate=V,Ie.needsUpdate=B,Ie.type=z}function xn(S){De("WebGLRenderer: A WebGL context could not be created. Reason: ",S.statusMessage)}function In(S){let I=S.target;I.removeEventListener("dispose",In),pf(I)}function pf(S){mf(S),H.remove(S)}function mf(S){let I=H.get(S).programs;I!==void 0&&(I.forEach(function(V){re.releaseProgram(V)}),S.isShaderMaterial&&re.releaseShaderCache(S))}this.renderBufferDirect=function(S,I,V,B,z,fe){I===null&&(I=Jt);let be=z.isMesh&&z.matrixWorld.determinantAffine()<0,ue=xf(S,I,V,B,z);_.setMaterial(B,be);let _e=V.index,Se=1;if(B.wireframe===!0){if(_e=j.getWireframeAttribute(V),_e===void 0)return;Se=2}let Be=V.drawRange,qe=V.attributes.position,ye=Be.start*Se,Qe=(Be.start+Be.count)*Se;fe!==null&&(ye=Math.max(ye,fe.start*Se),Qe=Math.min(Qe,(fe.start+fe.count)*Se)),_e!==null?(ye=Math.max(ye,0),Qe=Math.min(Qe,_e.count)):qe!=null&&(ye=Math.max(ye,0),Qe=Math.min(Qe,qe.count));let Tt=Qe-ye;if(Tt<0||Tt===1/0)return;pe.setup(z,B,ue,V,_e);let ft,ct=oe;if(_e!==null&&(ft=se.get(_e),ct=J,ct.setIndex(ft)),z.isMesh)B.wireframe===!0?(_.setLineWidth(B.wireframeLinewidth*wt()),ct.setMode(F.LINES)):ct.setMode(F.TRIANGLES);else if(z.isLine){let Bt=B.linewidth;Bt===void 0&&(Bt=1),_.setLineWidth(Bt*wt()),z.isLineSegments?ct.setMode(F.LINES):z.isLineLoop?ct.setMode(F.LINE_LOOP):ct.setMode(F.LINE_STRIP)}else z.isPoints?ct.setMode(F.POINTS):z.isSprite&&ct.setMode(F.TRIANGLES);if(z.isBatchedMesh)if(tt.get("WEBGL_multi_draw"))ct.renderMultiDraw(z._multiDrawStarts,z._multiDrawCounts,z._multiDrawCount);else{let Bt=z._multiDrawStarts,me=z._multiDrawCounts,qt=z._multiDrawCount,Ke=_e?se.get(_e).bytesPerElement:1,dn=H.get(B).currentProgram.getUniforms();for(let Dn=0;Dn<qt;Dn++)dn.setValue(F,"_gl_DrawID",Dn),ct.render(Bt[Dn]/Ke,me[Dn])}else if(z.isInstancedMesh)ct.renderInstances(ye,Tt,z.count);else if(V.isInstancedBufferGeometry){let Bt=V._maxInstanceCount!==void 0?V._maxInstanceCount:1/0,me=Math.min(V.instanceCount,Bt);ct.renderInstances(ye,Tt,me)}else ct.render(ye,Tt)};function Lh(S,I,V,B){U!==null&&S.isNodeMaterial&&U.setObject(B,S),Je===!0&&Ee.setState(S,V,!1),S.transparent===!0&&S.side===Vt&&S.forceSinglePass===!1?(S.side=Yt,S.needsUpdate=!0,Yr(S,I,B),S.side=Hn,S.needsUpdate=!0,Yr(S,I,B),S.side=Vt):Yr(S,I,B)}this.compile=function(S,I,V=null){V===null&&(V=S),U!==null&&U.renderStart(S,I,V),v=ae.get(V),v.init(I),b.push(v),V.traverseVisible(function(z){z.isLight&&z.layers.test(I.layers)&&(v.pushLight(z),z.castShadow&&v.pushShadow(z))}),S!==V&&S.traverseVisible(function(z){z.isLight&&z.layers.test(I.layers)&&(v.pushLight(z),z.castShadow&&v.pushShadow(z))}),v.setupLights(),U!==null&&U.updateLights(v.state.lightsArray),ht=this.localClippingEnabled,Je=Ee.init(this.clippingPlanes,ht),Je===!0&&Ee.setGlobalState(this.clippingPlanes,I),U!==null&&Ie.render(v.state.shadowsArray,V,I);let B=new Set;return S.traverse(function(z){if(!(z.isMesh||z.isPoints||z.isLine||z.isSprite))return;let fe=z.material;if(fe)if(Array.isArray(fe))for(let be=0;be<fe.length;be++){let ue=fe[be];Lh(ue,V,I,z),B.add(ue)}else Lh(fe,V,I,z),B.add(fe)}),v=b.pop(),U!==null&&U.renderEnd(),B},this.compileAsync=function(S,I,V=null){let B=this.compile(S,I,V);return new Promise(z=>{function fe(){if(B.forEach(function(be){let _e=H.get(be).currentProgram;(_e===void 0||_e.isReady())&&B.delete(be)}),B.size===0){z(S);return}setTimeout(fe,10)}tt.get("KHR_parallel_shader_compile")!==null?fe():setTimeout(fe,10)})};let gc=null;function gf(S){gc&&gc(S)}function Nh(){Pi.stop()}function Fh(){Pi.start()}let Pi=new Gu;Pi.setAnimationLoop(gf),typeof self<"u"&&Pi.setContext(self),this.setAnimationLoop=function(S){gc=S,ve.setAnimationLoop(S),S===null?Pi.stop():Pi.start()},ve.addEventListener("sessionstart",Nh),ve.addEventListener("sessionend",Fh),this.render=function(S,I){if(I!==void 0&&I.isCamera!==!0){De("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(D===!0)return;U!==null&&U.renderStart(S,I);let V=ve.enabled===!0&&ve.isPresenting===!0,B=E!==null&&(ne===null||V)&&E.begin(P,ne);if(S.matrixWorldAutoUpdate===!0&&S.updateMatrixWorld(),I.parent===null&&I.matrixWorldAutoUpdate===!0&&I.updateMatrixWorld(),ve.enabled===!0&&ve.isPresenting===!0&&(E===null||E.isCompositing()===!1)&&(ve.cameraAutoUpdate===!0&&ve.updateCamera(I),I=ve.getCamera()),S.isScene===!0&&S.onBeforeRender(P,S,I,ne),v=ae.get(S,b.length),v.init(I),v.state.textureUnits=W.getTextureUnits(),b.push(v),Xe.multiplyMatrices(I.projectionMatrix,I.matrixWorldInverse),We.setFromProjectionMatrix(Xe,Sn,I.reversedDepth),ht=this.localClippingEnabled,Je=Ee.init(this.clippingPlanes,ht),w=le.get(S,A.length),w.init(),A.push(w),ve.enabled===!0&&ve.isPresenting===!0){let be=P.xr.getDepthSensingMesh();be!==null&&bc(be,I,-1/0,P.sortObjects)}bc(S,I,0,P.sortObjects),w.finish(),U!==null&&U.updateLights(v.state.lightsArray),P.sortObjects===!0&&w.sort(xe,Ne),bt=ve.enabled===!1||ve.isPresenting===!1||ve.hasDepthSensing()===!1,bt&&Oe.addToRenderList(w,S),this.info.render.frame++,this.info.autoReset===!0&&this.info.reset(),Je===!0&&Ee.beginShadows();let z=v.state.shadowsArray;if(Ie.render(z,S,I),Je===!0&&Ee.endShadows(),(B&&E.hasRenderPass())===!1){let be=w.opaque,ue=w.transmissive;if(v.setupLights(),I.isArrayCamera){let _e=I.cameras;if(ue.length>0)for(let Se=0,Be=_e.length;Se<Be;Se++){let qe=_e[Se];Oh(be,ue,S,qe)}bt&&Oe.render(S);for(let Se=0,Be=_e.length;Se<Be;Se++){let qe=_e[Se];Uh(w,S,qe,qe.viewport)}}else ue.length>0&&Oh(be,ue,S,I),bt&&Oe.render(S),Uh(w,S,I)}ne!==null&&Y===0&&(W.updateMultisampleRenderTarget(ne),W.updateRenderTargetMipmap(ne)),B&&E.end(P),S.isScene===!0&&S.onAfterRender(P,S,I),pe.resetDefaultState(),q=-1,Q=null,b.pop(),b.length>0?(v=b[b.length-1],W.setTextureUnits(v.state.textureUnits),Je===!0&&Ee.setGlobalState(P.clippingPlanes,v.state.camera)):v=null,A.pop(),A.length>0?w=A[A.length-1]:w=null,U!==null&&U.renderEnd()};function bc(S,I,V,B){if(S.visible===!1)return;if(S.layers.test(I.layers)){if(S.isGroup)V=S.renderOrder;else if(S.isLOD)S.autoUpdate===!0&&S.update(I);else if(S.isLightProbeGrid)v.pushLightProbeGrid(S);else if(S.isLight)v.pushLight(S),S.castShadow&&v.pushShadow(S);else if(S.isSprite){if(!S.frustumCulled||S.intersectsFrustum(We)){B&&Lt.setFromMatrixPosition(S.matrixWorld).applyMatrix4(Xe);let be=Z.update(S),ue=S.material;ue.visible&&w.push(S,be,ue,V,Lt.z,null,I)}}else if((S.isMesh||S.isLine||S.isPoints)&&(!S.frustumCulled||S.intersectsFrustum(We))){let be=Z.update(S),ue=S.material;if(B&&(S.boundingSphere!==void 0?(S.boundingSphere===null&&S.computeBoundingSphere(),Lt.copy(S.boundingSphere.center)):(be.boundingSphere===null&&be.computeBoundingSphere(),Lt.copy(be.boundingSphere.center)),Lt.applyMatrix4(S.matrixWorld).applyMatrix4(Xe)),Array.isArray(ue)){let _e=be.groups;for(let Se=0,Be=_e.length;Se<Be;Se++){let qe=_e[Se],ye=ue[qe.materialIndex];ye&&ye.visible&&w.push(S,be,ye,V,Lt.z,qe,I)}}else ue.visible&&w.push(S,be,ue,V,Lt.z,null,I)}}let fe=S.children;for(let be=0,ue=fe.length;be<ue;be++)bc(fe[be],I,V,B)}function Uh(S,I,V,B){let{opaque:z,transmissive:fe,transparent:be}=S;v.setupLightsView(V),Je===!0&&Ee.setGlobalState(P.clippingPlanes,V),B&&_.viewport(te.copy(B)),z.length>0&&Kr(z,I,V),fe.length>0&&Kr(fe,I,V),be.length>0&&Kr(be,I,V),_.buffers.depth.setTest(!0),_.buffers.depth.setMask(!0),_.buffers.color.setMask(!0),_.setPolygonOffset(!1)}function Oh(S,I,V,B){if((V.isScene===!0?V.overrideMaterial:null)!==null)return;if(v.state.transmissionRenderTarget[B.id]===void 0){let ye=tt.has("EXT_color_buffer_half_float")||tt.has("EXT_color_buffer_float");v.state.transmissionRenderTarget[B.id]=new Zt(1,1,{generateMipmaps:!0,type:ye?Pn:nn,minFilter:Rn,samples:Math.max(4,R.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,storeMultisampledDepthBuffer:!1,storeMultisampledStencilBuffer:!1,colorSpace:He.workingColorSpace})}let fe=v.state.transmissionRenderTarget[B.id],be=B.viewport||te;fe.setSize(be.z*P.transmissionResolutionScale,be.w*P.transmissionResolutionScale);let ue=P.getRenderTarget(),_e=P.getActiveCubeFace(),Se=P.getActiveMipmapLevel();P.setRenderTarget(fe),P.getClearColor(lt),je=P.getClearAlpha(),je<1&&P.setClearColor(16777215,.5),P.clear(),bt&&Oe.render(V);let Be=P.toneMapping;P.toneMapping=An;let qe=B.viewport;if(B.viewport!==void 0&&(B.viewport=void 0),v.setupLightsView(B),Je===!0&&Ee.setGlobalState(P.clippingPlanes,B),Kr(S,V,B),W.updateMultisampleRenderTarget(fe),W.updateRenderTargetMipmap(fe),tt.has("WEBGL_multisampled_render_to_texture")===!1){let ye=!1;for(let Qe=0,Tt=I.length;Qe<Tt;Qe++){let ft=I[Qe],{object:ct,geometry:Bt,material:me,group:qt}=ft;if(me.side===Vt&&ct.layers.test(B.layers)){let Ke=me.side;me.side=Yt,me.needsUpdate=!0,kh(ct,V,B,Bt,me,qt),me.side=Ke,me.needsUpdate=!0,ye=!0}}ye===!0&&(W.updateMultisampleRenderTarget(fe),W.updateRenderTargetMipmap(fe))}P.setRenderTarget(ue,_e,Se),P.setClearColor(lt,je),qe!==void 0&&(B.viewport=qe),P.toneMapping=Be}function Kr(S,I,V){let B=I.isScene===!0?I.overrideMaterial:null;for(let z=0,fe=S.length;z<fe;z++){let be=S[z],{object:ue,geometry:_e,group:Se}=be,Be=be.material;Be.allowOverride===!0&&B!==null&&(Be=B),ue.layers.test(V.layers)&&kh(ue,I,V,_e,Be,Se)}}function kh(S,I,V,B,z,fe){U!==null&&z.isNodeMaterial&&U.setObject(S,z),S.onBeforeRender(P,I,V,B,z,fe),S.modelViewMatrix.multiplyMatrices(V.matrixWorldInverse,S.matrixWorld),S.normalMatrix.getNormalMatrix(S.modelViewMatrix),z.onBeforeRender(P,I,V,B,S,fe),z.transparent===!0&&z.side===Vt&&z.forceSinglePass===!1?(z.side=Yt,z.needsUpdate=!0,P.renderBufferDirect(V,I,B,z,S,fe),z.side=Hn,z.needsUpdate=!0,P.renderBufferDirect(V,I,B,z,S,fe),z.side=Vt):P.renderBufferDirect(V,I,B,z,S,fe),S.onAfterRender(P,I,V,B,z,fe)}function Yr(S,I,V){I.isScene!==!0&&(I=Jt);let B=H.get(S),z=v.state.lights,fe=v.state.shadowsArray,be=z.state.version,ue=re.getParameters(S,z.state,fe,I,V,v.state.lightProbeGridArray),_e=re.getProgramCacheKey(ue),Se=B.programs;B.environment=S.isMeshStandardMaterial||S.isMeshLambertMaterial||S.isMeshPhongMaterial?I.environment:null,B.fog=I.fog;let Be=S.isMeshStandardMaterial||S.isMeshLambertMaterial&&!S.envMap||S.isMeshPhongMaterial&&!S.envMap;B.envMap=ie.get(S.envMap||B.environment,Be),B.envMapRotation=B.environment!==null&&S.envMap===null?I.environmentRotation:S.envMapRotation,Se===void 0&&(S.addEventListener("dispose",In),Se=new Map,B.programs=Se);let qe=Se.get(_e);if(qe!==void 0){if(B.currentProgram===qe&&B.lightsStateVersion===be)return zh(S,ue),qe}else ue.uniforms=re.getUniforms(S),U!==null&&S.isNodeMaterial&&U.build(S,V,ue),S.onBeforeCompile(ue,P),qe=re.acquireProgram(ue,_e),Se.set(_e,qe),B.uniforms=ue.uniforms;let ye=B.uniforms;return(!S.isShaderMaterial&&!S.isRawShaderMaterial||S.clipping===!0)&&(ye.clippingPlanes=Ee.uniform),zh(S,ue),B.needsLights=yf(S),B.lightsStateVersion=be,B.needsLights&&(ye.ambientLightColor.value=z.state.ambient,ye.lightProbe.value=z.state.probe,ye.sunLights.value=z.state.sun,ye.sunLightShadows.value=z.state.sunShadow,ye.directionalLights.value=z.state.directional,ye.directionalLightShadows.value=z.state.directionalShadow,ye.spotLights.value=z.state.spot,ye.spotLightShadows.value=z.state.spotShadow,ye.rectAreaLights.value=z.state.rectArea,ye.ltc_1.value=z.state.rectAreaLTC1,ye.ltc_2.value=z.state.rectAreaLTC2,ye.pointLights.value=z.state.point,ye.pointLightShadows.value=z.state.pointShadow,ye.hemisphereLights.value=z.state.hemi,ye.sunShadowMatrix.value=z.state.sunShadowMatrix,ye.sunShadowCascade.value=z.state.sunShadowCascade,ye.directionalShadowMatrix.value=z.state.directionalShadowMatrix,ye.spotLightMatrix.value=z.state.spotLightMatrix,ye.spotLightMap.value=z.state.spotLightMap,ye.pointShadowMatrix.value=z.state.pointShadowMatrix),B.lightProbeGrid=v.state.lightProbeGridArray.length>0,B.currentProgram=qe,B.uniformsList=null,qe}function Bh(S){if(S.uniformsList===null){let I=S.currentProgram.getUniforms();S.uniformsList=Gs.seqWithValue(I.seq,S.uniforms)}return S.uniformsList}function zh(S,I){let V=H.get(S);V.outputColorSpace=I.outputColorSpace,V.batching=I.batching,V.batchingColor=I.batchingColor,V.instancing=I.instancing,V.instancingColor=I.instancingColor,V.instancingMorph=I.instancingMorph,V.skinning=I.skinning,V.morphTargets=I.morphTargets,V.morphNormals=I.morphNormals,V.morphColors=I.morphColors,V.morphTargetsCount=I.morphTargetsCount,V.numClippingPlanes=I.numClippingPlanes,V.numIntersection=I.numClipIntersection,V.vertexAlphas=I.vertexAlphas,V.vertexTangents=I.vertexTangents,V.toneMapping=I.toneMapping}function bf(S,I){if(S.length===0)return null;if(S.length===1)return S[0].texture!==null?S[0]:null;x.setFromMatrixPosition(I.matrixWorld);for(let V=0,B=S.length;V<B;V++){let z=S[V];if(z.texture!==null&&z.boundingBox.containsPoint(x))return z}return null}function xf(S,I,V,B,z){I.isScene!==!0&&(I=Jt),W.resetTextureUnits();let fe=I.fog,be=B.isMeshStandardMaterial||B.isMeshLambertMaterial||B.isMeshPhongMaterial?I.environment:null,ue=ne===null?P.outputColorSpace:ne.isXRRenderTarget===!0?ne.texture.colorSpace:He.workingColorSpace,_e=B.isMeshStandardMaterial||B.isMeshLambertMaterial&&!B.envMap||B.isMeshPhongMaterial&&!B.envMap,Se=ie.get(B.envMap||be,_e),Be=B.vertexColors===!0&&!!V.attributes.color&&V.attributes.color.itemSize===4,qe=!!V.attributes.tangent&&(!!B.normalMap||B.anisotropy>0),ye=!!V.morphAttributes.position,Qe=!!V.morphAttributes.normal,Tt=!!V.morphAttributes.color,ft=An;B.toneMapped&&(ne===null||ne.isXRRenderTarget===!0)&&(ft=P.toneMapping);let ct=V.morphAttributes.position||V.morphAttributes.normal||V.morphAttributes.color,Bt=ct!==void 0?ct.length:0,me=H.get(B),qt=v.state.lights;if(Je===!0&&(ht===!0||S!==Q)){let ut=S===Q&&B.id===q;Ee.setState(B,S,ut)}let Ke=!1;B.version===me.__version?(me.needsLights&&me.lightsStateVersion!==qt.state.version||me.outputColorSpace!==ue||z.isBatchedMesh&&me.batching===!1||!z.isBatchedMesh&&me.batching===!0||z.isBatchedMesh&&me.batchingColor===!0&&z._colorsTexture===null||z.isBatchedMesh&&me.batchingColor===!1&&z._colorsTexture!==null||z.isInstancedMesh&&me.instancing===!1||!z.isInstancedMesh&&me.instancing===!0||z.isSkinnedMesh&&me.skinning===!1||!z.isSkinnedMesh&&me.skinning===!0||z.isInstancedMesh&&me.instancingColor===!0&&z.instanceColor===null||z.isInstancedMesh&&me.instancingColor===!1&&z.instanceColor!==null||z.isInstancedMesh&&me.instancingMorph===!0&&z.morphTexture===null||z.isInstancedMesh&&me.instancingMorph===!1&&z.morphTexture!==null||me.envMap!==Se||B.fog===!0&&me.fog!==fe||me.numClippingPlanes!==void 0&&(me.numClippingPlanes!==Ee.numPlanes||me.numIntersection!==Ee.numIntersection)||me.vertexAlphas!==Be||me.vertexTangents!==qe||me.morphTargets!==ye||me.morphNormals!==Qe||me.morphColors!==Tt||me.toneMapping!==ft||me.morphTargetsCount!==Bt||!!me.lightProbeGrid!=v.state.lightProbeGridArray.length>0)&&(Ke=!0):(Ke=!0,me.__version=B.version);let dn=me.currentProgram;Ke===!0&&(dn=Yr(B,I,z),U&&B.isNodeMaterial&&U.onUpdateProgram(B,dn,me));let Dn=!1,li=!1,es=!1,rt=dn.getUniforms(),_t=me.uniforms;if(_.useProgram(dn.program)&&(Dn=!0,li=!0,es=!0),B.id!==q&&(q=B.id,li=!0),me.needsLights){let ut=bf(v.state.lightProbeGridArray,z);me.lightProbeGrid!==ut&&(me.lightProbeGrid=ut,li=!0)}if(Dn||Q!==S){_.buffers.depth.getReversed()&&S.reversedDepth!==!0&&(S._reversedDepth=!0,S.updateProjectionMatrix()),rt.setValue(F,"projectionMatrix",S.projectionMatrix),rt.setValue(F,"viewMatrix",S.matrixWorldInverse);let di=rt.map.cameraPosition;di!==void 0&&di.setValue(F,mt.setFromMatrixPosition(S.matrixWorld)),R.logarithmicDepthBuffer&&rt.setValue(F,"logDepthBufFC",2/(Math.log(S.far+1)/Math.LN2)),(B.isMeshPhongMaterial||B.isMeshToonMaterial||B.isMeshLambertMaterial||B.isMeshBasicMaterial||B.isMeshStandardMaterial||B.isShaderMaterial)&&rt.setValue(F,"isOrthographic",S.isOrthographicCamera===!0),Q!==S&&(Q=S,li=!0,es=!0)}if(me.needsLights&&(qt.state.sunShadowMap.length>0&&rt.setValue(F,"sunShadowMap",qt.state.sunShadowMap,W),qt.state.directionalShadowMap.length>0&&rt.setValue(F,"directionalShadowMap",qt.state.directionalShadowMap,W),qt.state.spotShadowMap.length>0&&rt.setValue(F,"spotShadowMap",qt.state.spotShadowMap,W),qt.state.pointShadowMap.length>0&&rt.setValue(F,"pointShadowMap",qt.state.pointShadowMap,W)),z.isSkinnedMesh){rt.setOptional(F,z,"bindMatrix"),rt.setOptional(F,z,"bindMatrixInverse");let ut=z.skeleton;ut&&(ut.boneTexture===null&&ut.computeBoneTexture(),rt.setValue(F,"boneTexture",ut.boneTexture,W))}z.isBatchedMesh&&(rt.setOptional(F,z,"batchingTexture"),rt.setValue(F,"batchingTexture",z._matricesTexture,W),rt.setOptional(F,z,"batchingIdTexture"),rt.setValue(F,"batchingIdTexture",z._indirectTexture,W),rt.setOptional(F,z,"batchingColorTexture"),z._colorsTexture!==null&&rt.setValue(F,"batchingColorTexture",z._colorsTexture,W));let hi=V.morphAttributes;if((hi.position!==void 0||hi.normal!==void 0||hi.color!==void 0)&&L.update(z,V,dn),(li||me.receiveShadow!==z.receiveShadow)&&(me.receiveShadow=z.receiveShadow,rt.setValue(F,"receiveShadow",z.receiveShadow)),(B.isMeshStandardMaterial||B.isMeshLambertMaterial||B.isMeshPhongMaterial)&&B.envMap===null&&I.environment!==null&&(_t.envMapIntensity.value=I.environmentIntensity),_t.dfgLUT!==void 0&&(_t.dfgLUT.value=Mx()),li){if(rt.setValue(F,"toneMappingExposure",P.toneMappingExposure),me.needsLights&&_f(_t,es),fe&&B.fog===!0&&Te.refreshFogUniforms(_t,fe),Te.refreshMaterialUniforms(_t,B,$,X,v.state.transmissionRenderTarget[S.id]),me.needsLights&&me.lightProbeGrid){let ut=me.lightProbeGrid;_t.probesSH.value=ut.texture,_t.probesMin.value.copy(ut.boundingBox.min),_t.probesMax.value.copy(ut.boundingBox.max),_t.probesResolution.value.copy(ut.resolution)}Gs.upload(F,Bh(me),_t,W)}if(B.isShaderMaterial&&B.uniformsNeedUpdate===!0&&(Gs.upload(F,Bh(me),_t,W),B.uniformsNeedUpdate=!1),B.isSpriteMaterial&&rt.setValue(F,"center",z.center),rt.setValue(F,"modelViewMatrix",z.modelViewMatrix),rt.setValue(F,"normalMatrix",z.normalMatrix),rt.setValue(F,"modelMatrix",z.matrixWorld),B.uniformsGroups!==void 0){let ut=B.uniformsGroups;for(let di=0,ts=ut.length;di<ts;di++){let Gh=ut[di];ee.update(Gh,dn),ee.bind(Gh,dn)}}return dn}function _f(S,I){S.ambientLightColor.needsUpdate=I,S.lightProbe.needsUpdate=I,S.sunLights.needsUpdate=I,S.sunLightShadows.needsUpdate=I,S.directionalLights.needsUpdate=I,S.directionalLightShadows.needsUpdate=I,S.pointLights.needsUpdate=I,S.pointLightShadows.needsUpdate=I,S.spotLights.needsUpdate=I,S.spotLightShadows.needsUpdate=I,S.rectAreaLights.needsUpdate=I,S.hemisphereLights.needsUpdate=I}function yf(S){return S.isMeshLambertMaterial||S.isMeshToonMaterial||S.isMeshPhongMaterial||S.isMeshStandardMaterial||S.isShadowMaterial||S.isShaderMaterial&&S.lights===!0}this.getActiveCubeFace=function(){return K},this.getActiveMipmapLevel=function(){return Y},this.getRenderTarget=function(){return ne},this.setRenderTargetTextures=function(S,I,V){let B=H.get(S);B.__autoAllocateDepthBuffer=S.resolveDepthBuffer===!1,B.__autoAllocateDepthBuffer===!1&&(B.__useRenderToTexture=!1),H.get(S.texture).__webglTexture=I,H.get(S.depthTexture).__webglTexture=B.__autoAllocateDepthBuffer?void 0:V,B.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(S,I){let V=H.get(S);V.__webglFramebuffer=I,V.__useDefaultFramebuffer=I===void 0},this.setRenderTarget=function(S,I=0,V=0){ne=S,K=I,Y=V;let B=null,z=!1,fe=!1;if(S){let ue=H.get(S);if(ue.__useDefaultFramebuffer!==void 0){_.bindFramebuffer(F.FRAMEBUFFER,ue.__webglFramebuffer),te.copy(S.viewport),Pe.copy(S.scissor),Ae=S.scissorTest,_.viewport(te),_.scissor(Pe),_.setScissorTest(Ae),q=-1;return}else if(ue.__webglFramebuffer===void 0)W.setupRenderTarget(S);else if(ue.__hasExternalTextures)W.rebindTextures(S,H.get(S.texture).__webglTexture,H.get(S.depthTexture).__webglTexture);else if(S.depthBuffer){let Be=S.depthTexture;if(ue.__boundDepthTexture!==Be){if(Be!==null&&H.has(Be)&&(S.width!==Be.image.width||S.height!==Be.image.height))throw new Error("THREE.WebGLRenderer: Attached DepthTexture is initialized to the incorrect size.");W.setupDepthRenderbuffer(S)}}let _e=S.texture;(_e.isData3DTexture||_e.isDataArrayTexture||_e.isCompressedArrayTexture)&&(fe=!0);let Se=H.get(S).__webglFramebuffer;S.isWebGLCubeRenderTarget?(Array.isArray(Se[I])?B=Se[I][V]:B=Se[I],z=!0):S.samples>0&&W.useMultisampledRTT(S)===!1?B=H.get(S).__webglMultisampledFramebuffer:Array.isArray(Se)?B=Se[V]:B=Se,te.copy(S.viewport),Pe.copy(S.scissor),Ae=S.scissorTest}else te.copy(ge).multiplyScalar($).floor(),Pe.copy(Ge).multiplyScalar($).floor(),Ae=Rt;if(V!==0&&(B=k),_.bindFramebuffer(F.FRAMEBUFFER,B)&&_.drawBuffers(S,B),_.viewport(te),_.scissor(Pe),_.setScissorTest(Ae),z){let ue=H.get(S.texture);F.framebufferTexture2D(F.FRAMEBUFFER,F.COLOR_ATTACHMENT0,F.TEXTURE_CUBE_MAP_POSITIVE_X+I,ue.__webglTexture,V)}else if(fe){let ue=I;for(let _e=0;_e<S.textures.length;_e++){let Se=H.get(S.textures[_e]);F.framebufferTextureLayer(F.FRAMEBUFFER,F.COLOR_ATTACHMENT0+_e,Se.__webglTexture,V,ue)}}else if(S!==null&&V!==0){let ue=H.get(S.texture);F.framebufferTexture2D(F.FRAMEBUFFER,F.COLOR_ATTACHMENT0,F.TEXTURE_2D,ue.__webglTexture,V)}q=-1};function Hh(S){let I=H.get(S);return(I.__readFormat!==S.format||I.__readType!==S.type)&&(I.__readFormat=S.format,I.__readType=S.type,I.__formatReadable=R.textureFormatReadable(S.format),I.__typeReadable=R.textureTypeReadable(S.type)),I}this.readRenderTargetPixels=function(S,I,V,B,z,fe,be,ue=0){if(!(S&&S.isWebGLRenderTarget)){De("WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let _e=H.get(S).__webglFramebuffer;if(S.isWebGLCubeRenderTarget&&be!==void 0&&(_e=_e[be]),_e){_.bindFramebuffer(F.FRAMEBUFFER,_e);try{let Se=S.textures[ue],Be=Se.format,qe=Se.type;S.textures.length>1&&F.readBuffer(F.COLOR_ATTACHMENT0+ue);let ye=Hh(Se);if(ye.__formatReadable===!1){De("WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(ye.__typeReadable===!1){De("WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}I>=0&&I<=S.width-B&&V>=0&&V<=S.height-z&&F.readPixels(I,V,B,z,ce.convert(Be),ce.convert(qe),fe)}finally{let Se=ne!==null?H.get(ne).__webglFramebuffer:null;_.bindFramebuffer(F.FRAMEBUFFER,Se)}}},this.readRenderTargetPixelsAsync=async function(S,I,V,B,z,fe,be,ue=0){if(!(S&&S.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let _e=H.get(S).__webglFramebuffer;if(S.isWebGLCubeRenderTarget&&be!==void 0&&(_e=_e[be]),_e)if(I>=0&&I<=S.width-B&&V>=0&&V<=S.height-z){_.bindFramebuffer(F.FRAMEBUFFER,_e);let Se=S.textures[ue],Be=Se.format,qe=Se.type;S.textures.length>1&&F.readBuffer(F.COLOR_ATTACHMENT0+ue);let ye=Hh(Se);if(ye.__formatReadable===!1)throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(ye.__typeReadable===!1)throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let Qe=F.createBuffer();F.bindBuffer(F.PIXEL_PACK_BUFFER,Qe),F.bufferData(F.PIXEL_PACK_BUFFER,fe.byteLength,F.STREAM_READ),F.readPixels(I,V,B,z,ce.convert(Be),ce.convert(qe),0),F.bindBuffer(F.PIXEL_PACK_BUFFER,null);let Tt=ne!==null?H.get(ne).__webglFramebuffer:null;_.bindFramebuffer(F.FRAMEBUFFER,Tt);let ft=F.fenceSync(F.SYNC_GPU_COMMANDS_COMPLETE,0);return F.flush(),await mu(F,ft,4),F.bindBuffer(F.PIXEL_PACK_BUFFER,Qe),F.getBufferSubData(F.PIXEL_PACK_BUFFER,0,fe),F.bindBuffer(F.PIXEL_PACK_BUFFER,null),F.deleteBuffer(Qe),F.deleteSync(ft),fe}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(S,I=null,V=0){let B=Math.pow(2,-V),z=Math.floor(S.image.width*B),fe=Math.floor(S.image.height*B),be=I!==null?I.x:0,ue=I!==null?I.y:0;W.setTexture2D(S,0),F.copyTexSubImage2D(F.TEXTURE_2D,V,0,0,be,ue,z,fe),_.unbindTexture()},this.copyTextureToTexture=function(S,I,V=null,B=null,z=0,fe=0){let be,ue,_e,Se,Be,qe,ye,Qe,Tt,ft=S.isCompressedTexture?S.mipmaps[fe]:S.image;if(V!==null)be=V.max.x-V.min.x,ue=V.max.y-V.min.y,_e=V.isBox3?V.max.z-V.min.z:1,Se=V.min.x,Be=V.min.y,qe=V.isBox3?V.min.z:0;else{let _t=Math.pow(2,-z);be=Math.floor(ft.width*_t),ue=Math.floor(ft.height*_t),S.isDataArrayTexture?_e=ft.depth:S.isData3DTexture?_e=Math.floor(ft.depth*_t):_e=1,Se=0,Be=0,qe=0}B!==null?(ye=B.x,Qe=B.y,Tt=B.z):(ye=0,Qe=0,Tt=0);let ct=ce.convert(I.format),Bt=ce.convert(I.type),me;I.isData3DTexture?(W.setTexture3D(I,0),me=F.TEXTURE_3D):I.isDataArrayTexture||I.isCompressedArrayTexture?(W.setTexture2DArray(I,0),me=F.TEXTURE_2D_ARRAY):(W.setTexture2D(I,0),me=F.TEXTURE_2D),_.activeTexture(F.TEXTURE0),_.pixelStorei(F.UNPACK_FLIP_Y_WEBGL,I.flipY),_.pixelStorei(F.UNPACK_PREMULTIPLY_ALPHA_WEBGL,I.premultiplyAlpha),_.pixelStorei(F.UNPACK_ALIGNMENT,I.unpackAlignment);let qt=_.getParameter(F.UNPACK_ROW_LENGTH),Ke=_.getParameter(F.UNPACK_IMAGE_HEIGHT),dn=_.getParameter(F.UNPACK_SKIP_PIXELS),Dn=_.getParameter(F.UNPACK_SKIP_ROWS),li=_.getParameter(F.UNPACK_SKIP_IMAGES);_.pixelStorei(F.UNPACK_ROW_LENGTH,ft.width),_.pixelStorei(F.UNPACK_IMAGE_HEIGHT,ft.height),_.pixelStorei(F.UNPACK_SKIP_PIXELS,Se),_.pixelStorei(F.UNPACK_SKIP_ROWS,Be),_.pixelStorei(F.UNPACK_SKIP_IMAGES,qe);let es=S.isDataArrayTexture||S.isData3DTexture,rt=I.isDataArrayTexture||I.isData3DTexture;if(S.isDepthTexture){let _t=H.get(S),hi=H.get(I),ut=H.get(_t.__renderTarget),di=H.get(hi.__renderTarget);_.bindFramebuffer(F.READ_FRAMEBUFFER,ut.__webglFramebuffer),_.bindFramebuffer(F.DRAW_FRAMEBUFFER,di.__webglFramebuffer);for(let ts=0;ts<_e;ts++)es&&(F.framebufferTextureLayer(F.READ_FRAMEBUFFER,F.COLOR_ATTACHMENT0,H.get(S).__webglTexture,z,qe+ts),F.framebufferTextureLayer(F.DRAW_FRAMEBUFFER,F.COLOR_ATTACHMENT0,H.get(I).__webglTexture,fe,Tt+ts)),F.blitFramebuffer(Se,Be,be,ue,ye,Qe,be,ue,F.DEPTH_BUFFER_BIT,F.NEAREST);_.bindFramebuffer(F.READ_FRAMEBUFFER,null),_.bindFramebuffer(F.DRAW_FRAMEBUFFER,null)}else if(z!==0||S.isRenderTargetTexture||H.has(S)){let _t=H.get(S),hi=H.get(I);_.bindFramebuffer(F.READ_FRAMEBUFFER,N),_.bindFramebuffer(F.DRAW_FRAMEBUFFER,G);for(let ut=0;ut<_e;ut++)es?F.framebufferTextureLayer(F.READ_FRAMEBUFFER,F.COLOR_ATTACHMENT0,_t.__webglTexture,z,qe+ut):F.framebufferTexture2D(F.READ_FRAMEBUFFER,F.COLOR_ATTACHMENT0,F.TEXTURE_2D,_t.__webglTexture,z),rt?F.framebufferTextureLayer(F.DRAW_FRAMEBUFFER,F.COLOR_ATTACHMENT0,hi.__webglTexture,fe,Tt+ut):F.framebufferTexture2D(F.DRAW_FRAMEBUFFER,F.COLOR_ATTACHMENT0,F.TEXTURE_2D,hi.__webglTexture,fe),z!==0?F.blitFramebuffer(Se,Be,be,ue,ye,Qe,be,ue,F.COLOR_BUFFER_BIT,F.NEAREST):rt?F.copyTexSubImage3D(me,fe,ye,Qe,Tt+ut,Se,Be,be,ue):F.copyTexSubImage2D(me,fe,ye,Qe,Se,Be,be,ue);_.bindFramebuffer(F.READ_FRAMEBUFFER,null),_.bindFramebuffer(F.DRAW_FRAMEBUFFER,null)}else rt?S.isDataTexture||S.isData3DTexture?F.texSubImage3D(me,fe,ye,Qe,Tt,be,ue,_e,ct,Bt,ft.data):I.isCompressedArrayTexture?F.compressedTexSubImage3D(me,fe,ye,Qe,Tt,be,ue,_e,ct,ft.data):F.texSubImage3D(me,fe,ye,Qe,Tt,be,ue,_e,ct,Bt,ft):S.isDataTexture?F.texSubImage2D(F.TEXTURE_2D,fe,ye,Qe,be,ue,ct,Bt,ft.data):S.isCompressedTexture?F.compressedTexSubImage2D(F.TEXTURE_2D,fe,ye,Qe,ft.width,ft.height,ct,ft.data):F.texSubImage2D(F.TEXTURE_2D,fe,ye,Qe,be,ue,ct,Bt,ft);_.pixelStorei(F.UNPACK_ROW_LENGTH,qt),_.pixelStorei(F.UNPACK_IMAGE_HEIGHT,Ke),_.pixelStorei(F.UNPACK_SKIP_PIXELS,dn),_.pixelStorei(F.UNPACK_SKIP_ROWS,Dn),_.pixelStorei(F.UNPACK_SKIP_IMAGES,li),fe===0&&I.generateMipmaps&&F.generateMipmap(me),_.unbindTexture()},this.initRenderTarget=function(S){H.get(S).__webglFramebuffer===void 0&&W.setupRenderTarget(S)},this.initTexture=function(S){S.isCubeTexture?W.setTextureCube(S,0):S.isData3DTexture?W.setTexture3D(S,0):S.isDataArrayTexture||S.isCompressedArrayTexture?W.setTexture2DArray(S,0):W.setTexture2D(S,0),_.unbindTexture()},this.resetState=function(){K=0,Y=0,ne=null,_.reset(),pe.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Sn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let t=this.getContext();t.drawingBufferColorSpace=He._getDrawingBufferColorSpace(e),t.unpackColorSpace=He._getUnpackColorSpace()}};function $l(r,e){if(e===Sl)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),r;if(e===Bs||e===Gr){let t=r.getIndex();if(t===null){let s=[],a=r.getAttribute("position");if(a!==void 0){for(let o=0;o<a.count;o++)s.push(o);r.setIndex(s),t=r.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),r}let n=t.count-2,i=[];if(e===Bs)for(let s=1;s<=n;s++)i.push(t.getX(0)),i.push(t.getX(s)),i.push(t.getX(s+1));else for(let s=0;s<n;s++)s%2===0?(i.push(t.getX(s)),i.push(t.getX(s+1)),i.push(t.getX(s+2))):(i.push(t.getX(s+2)),i.push(t.getX(s+1)),i.push(t.getX(s)));return i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles."),r.setIndex(i),r.clearGroups(),r}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",e),r}function rc(r){let e=new Map,t=new Map,n=r.clone();return Ju(r,n,function(i,s){e.set(s,i),t.set(i,s)}),n.traverse(function(i){if(!i.isSkinnedMesh)return;let s=i,a=e.get(i),o=a.skeleton.bones;s.skeleton=a.skeleton.clone(),s.bindMatrix.copy(a.bindMatrix),s.skeleton.bones=o.map(function(c){return t.get(c)}),s.bind(s.skeleton,s.bindMatrix)}),n}function Ju(r,e,t){t(r,e);for(let n=0;n<r.children.length;n++)Ju(r.children[n],e.children[n],t)}var ac=class extends Bn{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new rh(t)}),this.register(function(t){return new ah(t)}),this.register(function(t){return new mh(t)}),this.register(function(t){return new gh(t)}),this.register(function(t){return new bh(t)}),this.register(function(t){return new ch(t)}),this.register(function(t){return new lh(t)}),this.register(function(t){return new hh(t)}),this.register(function(t){return new dh(t)}),this.register(function(t){return new sh(t)}),this.register(function(t){return new uh(t)}),this.register(function(t){return new oh(t)}),this.register(function(t){return new ph(t)}),this.register(function(t){return new fh(t)}),this.register(function(t){return new nh(t)}),this.register(function(t){return new oc(t,Ve.EXT_MESHOPT_COMPRESSION)}),this.register(function(t){return new oc(t,Ve.KHR_MESHOPT_COMPRESSION)}),this.register(function(t){return new xh(t)})}load(e,t,n,i){let s=this,a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){let l=oi.extractUrlBase(e);a=oi.resolveURL(l,this.path)}else a=oi.extractUrlBase(e);this.manager.itemStart(e);let o=function(l){i?i(l):console.error(l),s.manager.itemError(e),s.manager.itemEnd(e)},c=new Ps(this.manager);c.setPath(this.path),c.setResponseType("arraybuffer"),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(l){try{s.parse(l,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,i){let s,a={},o={},c=new TextDecoder;if(typeof e=="string")s=JSON.parse(e);else if(e instanceof ArrayBuffer)if(c.decode(new Uint8Array(e,0,4))===tf){try{a[Ve.KHR_BINARY_GLTF]=new _h(e)}catch(d){i&&i(d);return}s=JSON.parse(a[Ve.KHR_BINARY_GLTF].content)}else s=JSON.parse(c.decode(e));else s=e;if(s.asset===void 0||s.asset.version[0]<2){i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let l=new Eh(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let h=0;h<this.pluginCallbacks.length;h++){let d=this.pluginCallbacks[h](l);d.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[d.name]=d,a[d.name]=!0}if(s.extensionsUsed)for(let h=0;h<s.extensionsUsed.length;++h){let d=s.extensionsUsed[h],u=s.extensionsRequired||[];switch(d){case Ve.KHR_MATERIALS_UNLIT:a[d]=new ih;break;case Ve.KHR_DRACO_MESH_COMPRESSION:a[d]=new yh(s,this.dracoLoader);break;case Ve.KHR_TEXTURE_TRANSFORM:a[d]=new vh;break;case Ve.KHR_MESH_QUANTIZATION:a[d]=new Mh;break;default:u.indexOf(d)>=0&&o[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}l.setExtensions(a),l.setPlugins(o),l.parse(n,i)}parseAsync(e,t){let n=this;return new Promise(function(i,s){n.parse(e,t,i,s)})}};function Sx(){let r={};return{get:function(e){return r[e]},add:function(e,t){r[e]=t},remove:function(e){delete r[e]},removeAll:function(){r={}}}}function St(r,e,t){let n=r.json.materials[e];return n.extensions&&n.extensions[t]?n.extensions[t]:null}var Ve={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},nh=class{constructor(e){this.parser=e,this.name=Ve.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,i=t.length;n<i;n++){let 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){let t=this.parser,n="light:"+e,i=t.cache.get(n);if(i)return i;let s=t.json,c=((s.extensions&&s.extensions[this.name]||{}).lights||[])[e],l,h=new we(16777215);c.color!==void 0&&h.setRGB(c.color[0],c.color[1],c.color[2],jt);let d=c.range!==void 0?c.range:0;switch(c.type){case"directional":l=new qi(h),l.target.position.set(0,0,-1),l.add(l.target);break;case"point":l=new En(h),l.distance=d;break;case"spot":l=new Rr(h),l.distance=d,c.spot=c.spot||{},c.spot.innerConeAngle=c.spot.innerConeAngle!==void 0?c.spot.innerConeAngle:0,c.spot.outerConeAngle=c.spot.outerConeAngle!==void 0?c.spot.outerConeAngle:Math.PI/4,l.angle=c.spot.outerConeAngle,l.penumbra=1-c.spot.innerConeAngle/c.spot.outerConeAngle,l.target.position.set(0,0,-1),l.add(l.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+c.type)}return l.position.set(0,0,0),qn(l,c),c.intensity!==void 0&&(l.intensity=c.intensity),l.name=t.createUniqueName(c.name||"light_"+e),i=Promise.resolve(l),t.cache.add(n,i),i}getDependency(e,t){if(e==="light")return this._loadLight(t)}createNodeAttachment(e){let 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(c){return n._getNodeRef(t.cache,o,c)})}},ih=class{constructor(){this.name=Ve.KHR_MATERIALS_UNLIT}getMaterialType(){return Gt}extendParams(e,t,n){let i=[];e.color=new we(1,1,1),e.opacity=1;let s=t.pbrMetallicRoughness;if(s){if(Array.isArray(s.baseColorFactor)){let a=s.baseColorFactor;e.color.setRGB(a[0],a[1],a[2],jt),e.opacity=a[3]}s.baseColorTexture!==void 0&&i.push(n.assignTexture(e,"map",s.baseColorTexture,ot))}return Promise.all(i)}},sh=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);return n===null||n.emissiveStrength!==void 0&&(t.emissiveIntensity=n.emissiveStrength),Promise.resolve()}},rh=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);if(n===null)return Promise.resolve();let i=[];if(n.clearcoatFactor!==void 0&&(t.clearcoat=n.clearcoatFactor),n.clearcoatTexture!==void 0&&i.push(this.parser.assignTexture(t,"clearcoatMap",n.clearcoatTexture)),n.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=n.clearcoatRoughnessFactor),n.clearcoatRoughnessTexture!==void 0&&i.push(this.parser.assignTexture(t,"clearcoatRoughnessMap",n.clearcoatRoughnessTexture)),n.clearcoatNormalTexture!==void 0&&(i.push(this.parser.assignTexture(t,"clearcoatNormalMap",n.clearcoatNormalTexture)),n.clearcoatNormalTexture.scale!==void 0)){let s=n.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new he(s,s)}return Promise.all(i)}},ah=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_DISPERSION}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);return n===null||(t.dispersion=n.dispersion!==void 0?n.dispersion:0),Promise.resolve()}},oh=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);if(n===null)return Promise.resolve();let i=[];return n.iridescenceFactor!==void 0&&(t.iridescence=n.iridescenceFactor),n.iridescenceTexture!==void 0&&i.push(this.parser.assignTexture(t,"iridescenceMap",n.iridescenceTexture)),n.iridescenceIor!==void 0&&(t.iridescenceIOR=n.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),n.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=n.iridescenceThicknessMinimum),n.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=n.iridescenceThicknessMaximum),n.iridescenceThicknessTexture!==void 0&&i.push(this.parser.assignTexture(t,"iridescenceThicknessMap",n.iridescenceThicknessTexture)),Promise.all(i)}},ch=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_SHEEN}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);if(n===null)return Promise.resolve();let i=[];if(t.sheenColor=new we(0,0,0),t.sheenRoughness=0,t.sheen=1,n.sheenColorFactor!==void 0){let s=n.sheenColorFactor;t.sheenColor.setRGB(s[0],s[1],s[2],jt)}return n.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=n.sheenRoughnessFactor),n.sheenColorTexture!==void 0&&i.push(this.parser.assignTexture(t,"sheenColorMap",n.sheenColorTexture,ot)),n.sheenRoughnessTexture!==void 0&&i.push(this.parser.assignTexture(t,"sheenRoughnessMap",n.sheenRoughnessTexture)),Promise.all(i)}},lh=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);if(n===null)return Promise.resolve();let i=[];return n.transmissionFactor!==void 0&&(t.transmission=n.transmissionFactor),n.transmissionTexture!==void 0&&i.push(this.parser.assignTexture(t,"transmissionMap",n.transmissionTexture)),Promise.all(i)}},hh=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_VOLUME}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);if(n===null)return Promise.resolve();let i=[];t.thickness=n.thicknessFactor!==void 0?n.thicknessFactor:0,n.thicknessTexture!==void 0&&i.push(this.parser.assignTexture(t,"thicknessMap",n.thicknessTexture)),t.attenuationDistance=n.attenuationDistance||1/0;let s=n.attenuationColor||[1,1,1];return t.attenuationColor=new we().setRGB(s[0],s[1],s[2],jt),Promise.all(i)}},dh=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_IOR}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);return n===null||(t.ior=n.ior!==void 0?n.ior:1.5,t.ior===0&&(t.ior=1e3)),Promise.resolve()}},uh=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_SPECULAR}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);if(n===null)return Promise.resolve();let i=[];t.specularIntensity=n.specularFactor!==void 0?n.specularFactor:1,n.specularTexture!==void 0&&i.push(this.parser.assignTexture(t,"specularIntensityMap",n.specularTexture));let s=n.specularColorFactor||[1,1,1];return t.specularColor=new we().setRGB(s[0],s[1],s[2],jt),n.specularColorTexture!==void 0&&i.push(this.parser.assignTexture(t,"specularColorMap",n.specularColorTexture,ot)),Promise.all(i)}},fh=class{constructor(e){this.parser=e,this.name=Ve.EXT_MATERIALS_BUMP}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);if(n===null)return Promise.resolve();let i=[];return t.bumpScale=n.bumpFactor!==void 0?n.bumpFactor:1,n.bumpTexture!==void 0&&i.push(this.parser.assignTexture(t,"bumpMap",n.bumpTexture)),Promise.all(i)}},ph=class{constructor(e){this.parser=e,this.name=Ve.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return St(this.parser,e,this.name)!==null?Ut:null}extendMaterialParams(e,t){let n=St(this.parser,e,this.name);if(n===null)return Promise.resolve();let i=[];return n.anisotropyStrength!==void 0&&(t.anisotropy=n.anisotropyStrength),n.anisotropyRotation!==void 0&&(t.anisotropyRotation=n.anisotropyRotation),n.anisotropyTexture!==void 0&&i.push(this.parser.assignTexture(t,"anisotropyMap",n.anisotropyTexture)),Promise.all(i)}},mh=class{constructor(e){this.parser=e,this.name=Ve.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;let s=i.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)}},gh=class{constructor(e){this.parser=e,this.name=Ve.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,n=this.parser,i=n.json,s=i.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=i.images[a.source],c=n.textureLoader;if(o.uri){let l=n.options.manager.getHandler(o.uri);l!==null&&(c=l)}return n.loadTextureImage(e,a.source,c)}},bh=class{constructor(e){this.parser=e,this.name=Ve.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,n=this.parser,i=n.json,s=i.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=i.images[a.source],c=n.textureLoader;if(o.uri){let l=n.options.manager.getHandler(o.uri);l!==null&&(c=l)}return n.loadTextureImage(e,a.source,c)}},oc=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let i=n.extensions[this.name],s=this.parser.getDependency("buffer",i.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){let c=i.byteOffset||0,l=i.byteLength||0,h=i.count,d=i.byteStride,u=new Uint8Array(o,c,l);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(h,d,u,i.mode,i.filter).then(function(f){return f.buffer}):a.ready.then(function(){let f=new ArrayBuffer(h*d);return a.decodeGltfBuffer(new Uint8Array(f),h,d,u,i.mode,i.filter),f})})}else return null}},xh=class{constructor(e){this.name=Ve.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;let i=t.meshes[n.mesh];for(let l of i.primitives)if(l.mode!==bn.TRIANGLES&&l.mode!==bn.TRIANGLE_STRIP&&l.mode!==bn.TRIANGLE_FAN&&l.mode!==void 0)return null;let a=n.extensions[this.name].attributes,o=[],c={};for(let l in a)o.push(this.parser.getDependency("accessor",a[l]).then(h=>(c[l]=h,c[l])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(l=>{let h=l.pop(),d=h.isGroup?h.children:[h],u=l[0].count,f=[];for(let m of d){let y=new Fe,g=new C,p=new xt,M=new C(1,1,1),T=new pr(m.geometry,m.material,u);for(let w=0;w<u;w++)c.TRANSLATION&&g.fromBufferAttribute(c.TRANSLATION,w),c.ROTATION&&p.fromBufferAttribute(c.ROTATION,w),c.SCALE&&M.fromBufferAttribute(c.SCALE,w),T.setMatrixAt(w,y.compose(g,p,M));let x=null;for(let w in c)if(w==="_COLOR_0"){let v=c[w];T.instanceColor=new ei(v.array,v.itemSize,v.normalized)}else if(w!=="TRANSLATION"&&w!=="ROTATION"&&w!=="SCALE"){if(x===null){let A=T.geometry;x=new pt,x.name=A.name;for(let b in A.attributes)x.setAttribute(b,A.attributes[b]);for(let b in A.morphAttributes)x.morphAttributes[b]=A.morphAttributes[b];A.index!==null&&x.setIndex(A.index),x.morphTargetsRelative=A.morphTargetsRelative;for(let b of A.groups)x.addGroup(b.start,b.count,b.materialIndex);A.boundingBox!==null&&(x.boundingBox=A.boundingBox.clone()),A.boundingSphere!==null&&(x.boundingSphere=A.boundingSphere.clone()),x.drawRange.start=A.drawRange.start,x.drawRange.count=A.drawRange.count,x.userData=Object.assign({},A.userData),T.geometry=x}let v=c[w];x.setAttribute(w,new ei(v.array,v.itemSize,v.normalized))}gt.prototype.copy.call(T,m),this.parser.assignFinalMaterial(T),f.push(T)}return h.isGroup?(h.clear(),h.add(...f),h):f[0]}))}},tf="glTF",jr=12,Zu={JSON:1313821514,BIN:5130562},_h=class{constructor(e){this.name=Ve.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,jr),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!==tf)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");let i=this.header.length-jr,s=new DataView(e,jr),a=0;for(;a<i;){let o=s.getUint32(a,!0);a+=4;let c=s.getUint32(a,!0);if(a+=4,c===Zu.JSON){let l=new Uint8Array(e,jr+a,o);this.content=n.decode(l)}else if(c===Zu.BIN){let l=jr+a;this.body=e.slice(l,l+o)}a+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}},yh=class{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=Ve.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let n=this.json,i=this.dracoLoader,s=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},c={},l={};for(let h in a){let d=wh[h]||h.toLowerCase();o[d]=a[h]}for(let h in e.attributes){let d=wh[h]||h.toLowerCase();if(a[h]!==void 0){let u=n.accessors[e.attributes[h]],f=Ws[u.componentType];l[d]=f.name,c[d]=u.normalized===!0}}return t.getDependency("bufferView",s).then(function(h){return new Promise(function(d,u){i.decodeDracoFile(h,function(f){for(let m in f.attributes){let y=f.attributes[m],g=c[m];g!==void 0&&(y.normalized=g)}d(f)},o,l,jt,u)})})}},vh=class{constructor(){this.name=Ve.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){if((t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0)return e;if(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),t.rotation!==void 0){let n=Math.cos(e.rotation),i=Math.sin(e.rotation);e.matrix.set(e.repeat.x*n,e.repeat.y*i,e.offset.x,-e.repeat.x*i,e.repeat.y*n,e.offset.y,0,0,1),e.matrixAutoUpdate=!1}return e.needsUpdate=!0,e}},Mh=class{constructor(){this.name=Ve.KHR_MESH_QUANTIZATION}},cc=class extends kn{constructor(e,t,n,i){super(e,t,n,i)}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,s=e*i*3+i;for(let a=0;a!==i;a++)t[a]=n[s+a];return t}interpolate_(e,t,n,i){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,c=o*2,l=o*3,h=i-t,d=(n-t)/h,u=d*d,f=u*d,m=e*l,y=m-l,g=-2*f+3*u,p=f-u,M=1-g,T=p-u+d;for(let x=0;x!==o;x++){let w=a[y+x+o],v=a[y+x+c]*h,A=a[m+x+o],b=a[m+x]*h;s[x]=M*w+T*v+g*A+p*b}return s}},wx=new xt,Sh=class extends cc{interpolate_(e,t,n,i){let s=super.interpolate_(e,t,n,i);return wx.fromArray(s).normalize().toArray(s),s}},bn={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Ws={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},$u={9728:vt,9729:Mt,9984:lo,9985:Us,9986:Ki,9987:Rn},Qu={33071:fn,33648:xs,10497:Fn},Ql={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},wh={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"},Ci={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Tx={CUBICSPLINE:void 0,LINEAR:Bi,STEP:ki},eh={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Ex(r){return r.DefaultMaterial===void 0&&(r.DefaultMaterial=new Ue({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Hn})),r.DefaultMaterial}function Zi(r,e,t){for(let n in t.extensions)r[n]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[n]=t.extensions[n])}function qn(r,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(r.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Ax(r,e,t){let n=!1,i=!1,s=!1;for(let l=0,h=e.length;l<h;l++){let d=e[l];if(d.POSITION!==void 0&&(n=!0),d.NORMAL!==void 0&&(i=!0),d.COLOR_0!==void 0&&(s=!0),n&&i&&s)break}if(!n&&!i&&!s)return Promise.resolve(r);let a=[],o=[],c=[];for(let l=0,h=e.length;l<h;l++){let d=e[l];if(n){let u=d.POSITION!==void 0?t.getDependency("accessor",d.POSITION):r.attributes.position;a.push(u)}if(i){let u=d.NORMAL!==void 0?t.getDependency("accessor",d.NORMAL):r.attributes.normal;o.push(u)}if(s){let u=d.COLOR_0!==void 0?t.getDependency("accessor",d.COLOR_0):r.attributes.color;c.push(u)}}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(c)]).then(function(l){let h=l[0],d=l[1],u=l[2];return n&&(r.morphAttributes.position=h),i&&(r.morphAttributes.normal=d),s&&(r.morphAttributes.color=u),r.morphTargetsRelative=!0,r})}function Rx(r,e){if(r.updateMorphTargets(),e.weights!==void 0)for(let t=0,n=e.weights.length;t<n;t++)r.morphTargetInfluences[t]=e.weights[t];if(e.extras&&Array.isArray(e.extras.targetNames)){let t=e.extras.targetNames;if(r.morphTargetInfluences.length===t.length){r.morphTargetDictionary={};for(let n=0,i=t.length;n<i;n++)r.morphTargetDictionary[t[n]]=n}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Cx(r){let e,t=r.extensions&&r.extensions[Ve.KHR_DRACO_MESH_COMPRESSION];if(t?e="draco:"+t.bufferView+":"+t.indices+":"+th(t.attributes):e=r.indices+":"+th(r.attributes)+":"+r.mode,r.targets!==void 0)for(let n=0,i=r.targets.length;n<i;n++)e+=":"+th(r.targets[n]);return e}function th(r){let e="",t=Object.keys(r).sort();for(let n=0,i=t.length;n<i;n++)e+=t[n]+":"+r[t[n]]+";";return e}function Th(r){switch(r){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 Px(r){return r.search(/\.jpe?g($|\?)/i)>0||r.search(/^data\:image\/jpeg/)===0?"image/jpeg":r.search(/\.webp($|\?)/i)>0||r.search(/^data\:image\/webp/)===0?"image/webp":r.search(/\.ktx2($|\?)/i)>0||r.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}var Ix=new Fe,Eh=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Sx,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,i=-1,s=!1,a=-1;if(typeof navigator<"u"&&typeof navigator.userAgent<"u"){let o=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(o)===!0;let c=o.match(/Version\/(\d+)/);i=n&&c?parseInt(c[1],10):-1,s=o.indexOf("Firefox")>-1,a=s?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||n&&i<17||s&&a<98?this.textureLoader=new Tr(this.options.manager):this.textureLoader=new Cr(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Ps(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){let n=this,i=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){let o={scene:a[0][i.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:i.asset,parser:n,userData:{}};return Zi(s,o,i),qn(o,i),Promise.all(n._invokeAll(function(c){return c.afterRoot&&c.afterRoot(o)})).then(function(){for(let c of o.scenes)c.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let i=0,s=t.length;i<s;i++){let a=t[i].joints;for(let o=0,c=a.length;o<c;o++)e[a[o]].isBone=!0}for(let i=0,s=e.length;i<s;i++){let a=e[i];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;let i=n.clone(),s=(a,o)=>{let c=this.associations.get(a);c!=null&&this.associations.set(o,c);for(let[l,h]of a.children.entries())s(h,o.children[l])};return s(n,i),i.name+="_instance_"+e.uses[t]++,i}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){let i=e(t[n]);if(i)return i}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let n=[];for(let i=0;i<t.length;i++){let s=e(t[i]);s&&n.push(s)}return n}getDependency(e,t){let n=e+":"+t,i=this.cache.get(n);if(!i){switch(e){case"scene":i=this.loadScene(t);break;case"node":i=this._invokeOne(function(s){return s.loadNode&&s.loadNode(t)});break;case"mesh":i=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(t)});break;case"accessor":i=this.loadAccessor(t);break;case"bufferView":i=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(t)});break;case"buffer":i=this.loadBuffer(t);break;case"material":i=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(t)});break;case"texture":i=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(t)});break;case"skin":i=this.loadSkin(t);break;case"animation":i=this._invokeOne(function(s){return s.loadAnimation&&s.loadAnimation(t)});break;case"camera":i=this.loadCamera(t);break;default:if(i=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(e,t)}),!i)throw new Error("Unknown type: "+e);break}this.cache.add(n,i)}return i}getDependencies(e){let t=this.cache.get(e);if(!t){let n=this,i=this.json[e+(e==="mesh"?"es":"s")]||[];t=Promise.all(i.map(function(s,a){return n.getDependency(e,a)})),this.cache.add(e,t)}return t}loadBuffer(e){let 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[Ve.KHR_BINARY_GLTF].body);let i=this.options;return new Promise(function(s,a){n.load(oi.resolveURL(t.uri,i.path),s,void 0,function(){a(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(n){let i=t.byteLength||0,s=t.byteOffset||0;return n.slice(s,s+i)})}loadAccessor(e){let t=this,n=this.json,i=this.json.accessors[e];if(i.bufferView===void 0&&i.sparse===void 0){let a=Ql[i.type],o=Ws[i.componentType],c=i.normalized===!0,l=new o(i.count*a);return Promise.resolve(new yt(l,a,c))}let s=[];return i.bufferView!==void 0?s.push(this.getDependency("bufferView",i.bufferView)):s.push(null),i.sparse!==void 0&&(s.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(s).then(function(a){let o=a[0],c=Ql[i.type],l=Ws[i.componentType],h=l.BYTES_PER_ELEMENT,d=h*c,u=i.byteOffset||0,f=i.bufferView!==void 0?n.bufferViews[i.bufferView].byteStride:void 0,m=i.normalized===!0,y,g;if(f&&f!==d){let p=Math.floor(u/f),M="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+p+":"+i.count,T=t.cache.get(M);T||(y=new l(o,p*f,i.count*f/h),T=new Ts(y,f/h),t.cache.add(M,T)),g=new Es(T,c,u%f/h,m)}else o===null?y=new l(i.count*c):y=new l(o,u,i.count*c),g=new yt(y,c,m);if(i.sparse!==void 0){let p=Ql.SCALAR,M=Ws[i.sparse.indices.componentType],T=i.sparse.indices.byteOffset||0,x=i.sparse.values.byteOffset||0,w=new M(a[1],T,i.sparse.count*p),v=new l(a[2],x,i.sparse.count*c);o!==null&&(g=new yt(g.array.slice(),g.itemSize,g.normalized)),g.normalized=!1;for(let A=0,b=w.length;A<b;A++){let E=w[A];if(g.setX(E,v[A*c]),c>=2&&g.setY(E,v[A*c+1]),c>=3&&g.setZ(E,v[A*c+2]),c>=4&&g.setW(E,v[A*c+3]),c>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}g.normalized=m}return g})}loadTexture(e){let t=this.json,n=this.options,s=t.textures[e].source,a=t.images[s],o=this.textureLoader;if(a.uri){let c=n.manager.getHandler(a.uri);c!==null&&(o=c)}return this.loadTextureImage(e,s,o)}loadTextureImage(e,t,n){let i=this,s=this.json,a=s.textures[e],o=s.images[t],c=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[c])return this.textureCache[c];let l=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);let u=(s.samplers||{})[a.sampler]||{};return h.magFilter=$u[u.magFilter]||Mt,h.minFilter=$u[u.minFilter]||Rn,h.wrapS=Qu[u.wrapS]||Fn,h.wrapT=Qu[u.wrapT]||Fn,h.generateMipmaps=!h.isCompressedTexture&&h.minFilter!==vt&&h.minFilter!==Mt,i.associations.set(h,{textures:e}),h}).catch(function(){return null});return this.textureCache[c]=l,l}loadImageSource(e,t){let n=this,i=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());let a=i.images[e],o=self.URL||self.webkitURL,c=a.uri||"",l=!1;if(a.bufferView!==void 0)c=n.getDependency("bufferView",a.bufferView).then(function(d){l=!0;let u=new Blob([d],{type:a.mimeType});return c=o.createObjectURL(u),c});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let h=Promise.resolve(c).then(function(d){return new Promise(function(u,f){let m=u;t.isImageBitmapLoader===!0&&(m=function(y){let g=new Ct(y);g.needsUpdate=!0,u(g)}),t.load(oi.resolveURL(d,s.path),m,void 0,f)})}).then(function(d){return l===!0&&o.revokeObjectURL(c),qn(d,a),d.userData.mimeType=a.mimeType||Px(a.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",c),d});return this.sourceCache[e]=h,h}assignTexture(e,t,n,i){let 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[Ve.KHR_TEXTURE_TRANSFORM]){let o=n.extensions!==void 0?n.extensions[Ve.KHR_TEXTURE_TRANSFORM]:void 0;if(o){let c=s.associations.get(a);a=s.extensions[Ve.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),s.associations.set(a,c)}}return i!==void 0&&(a.colorSpace=i),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,i=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let o="PointsMaterial:"+n.uuid,c=this.cache.get(o);c||(c=new _i,Qt.prototype.copy.call(c,n),c.color.copy(n.color),c.map=n.map,c.sizeAttenuation=!1,this.cache.add(o,c)),n=c}else if(e.isLine){let o="LineBasicMaterial:"+n.uuid,c=this.cache.get(o);c||(c=new ti,Qt.prototype.copy.call(c,n),c.color.copy(n.color),c.map=n.map,this.cache.add(o,c)),n=c}if(i||s||a){let o="ClonedMaterial:"+n.uuid+":";i&&(o+="derivative-tangents:"),s&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let c=this.cache.get(o);c||(c=n.clone(),s&&(c.vertexColors=!0),a&&(c.flatShading=!0),i&&(c.normalScale&&(c.normalScale.y*=-1),c.clearcoatNormalScale&&(c.clearcoatNormalScale.y*=-1)),this.cache.add(o,c),this.associations.set(c,this.associations.get(n))),n=c}e.material=n}getMaterialType(){return Ue}loadMaterial(e){let t=this,n=this.json,i=this.extensions,s=n.materials[e],a,o={},c=s.extensions||{},l=[];if(c[Ve.KHR_MATERIALS_UNLIT]){let d=i[Ve.KHR_MATERIALS_UNLIT];a=d.getMaterialType(),l.push(d.extendParams(o,s,t))}else{let d=s.pbrMetallicRoughness||{};if(o.color=new we(1,1,1),o.opacity=1,Array.isArray(d.baseColorFactor)){let u=d.baseColorFactor;o.color.setRGB(u[0],u[1],u[2],jt),o.opacity=u[3]}d.baseColorTexture!==void 0&&l.push(t.assignTexture(o,"map",d.baseColorTexture,ot)),o.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,o.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(o,"metalnessMap",d.metallicRoughnessTexture)),l.push(t.assignTexture(o,"roughnessMap",d.metallicRoughnessTexture))),a=this._invokeOne(function(u){return u.getMaterialType&&u.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(u){return u.extendMaterialParams&&u.extendMaterialParams(e,o)})))}s.doubleSided===!0&&(o.side=Vt);let h=s.alphaMode||eh.OPAQUE;if(h===eh.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,h===eh.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==Gt&&(l.push(t.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new he(1,1),s.normalTexture.scale!==void 0)){let d=s.normalTexture.scale;o.normalScale.set(d,d)}if(s.occlusionTexture!==void 0&&a!==Gt&&(l.push(t.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==Gt){let d=s.emissiveFactor;o.emissive=new we().setRGB(d[0],d[1],d[2],jt)}return s.emissiveTexture!==void 0&&a!==Gt&&l.push(t.assignTexture(o,"emissiveMap",s.emissiveTexture,ot)),Promise.all(l).then(function(){let d=new a(o);return s.name&&(d.name=s.name),qn(d,s),t.associations.set(d,{materials:e}),s.extensions&&Zi(i,d,s),d})}createUniqueName(e){let t=at.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,i=this.primitiveCache;function s(o){return n[Ve.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(c){return ef(c,o,t)})}let a=[];for(let o=0,c=e.length;o<c;o++){let l=e[o],h=Cx(l),d=i[h];if(d)a.push(d.promise);else{let u;l.extensions&&l.extensions[Ve.KHR_DRACO_MESH_COMPRESSION]?u=s(l):u=ef(new pt,l,t),l.mode===bn.TRIANGLE_STRIP?u=u.then(f=>$l(f,Gr)):l.mode===bn.TRIANGLE_FAN&&(u=u.then(f=>$l(f,Bs))),i[h]={primitive:l,promise:u},a.push(u)}}return Promise.all(a)}loadMesh(e){let t=this,n=this.json,i=this.extensions,s=n.meshes[e],a=s.primitives,o=[];for(let c=0,l=a.length;c<l;c++){let h=a[c].material===void 0?Ex(this.cache):this.getDependency("material",a[c].material);o.push(h)}return o.push(t.loadGeometries(a)),Promise.all(o).then(async function(c){let l=c.slice(0,c.length-1),h=c[c.length-1],d=[];for(let f=0,m=h.length;f<m;f++){let y=h[f],g=a[f],p,M=l[f];if(g.mode===bn.TRIANGLES||g.mode===bn.TRIANGLE_STRIP||g.mode===bn.TRIANGLE_FAN||g.mode===void 0){let T=s.isSkinnedMesh===!0,x=y.hasAttribute("skinIndex")&&y.hasAttribute("skinWeight");T&&x===!1&&console.warn("THREE.GLTFLoader: Missing skinIndex or skinWeight attributes. Skinning disabled."),p=T&&x?new ur(y,M):new Ce(y,M),p.isSkinnedMesh===!0&&p.normalizeSkinWeights()}else if(g.mode===bn.LINES)p=new mr(y,M);else if(g.mode===bn.LINE_STRIP)p=new ni(y,M);else if(g.mode===bn.LINE_LOOP)p=new gr(y,M);else if(g.mode===bn.POINTS)p=new Hi(y,M);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+g.mode);Object.keys(p.geometry.morphAttributes).length>0&&Rx(p,s),p.name=t.createUniqueName(s.name||"mesh_"+e),qn(p,s),g.extensions&&Zi(i,p,g),t.assignFinalMaterial(p),d.push(p)}for(let f=0,m=d.length;f<m;f++)t.associations.set(d[f],{meshes:e,primitives:f});if(d.length===1)return s.extensions&&Zi(i,d[0],s),d[0];let u=new At;s.extensions&&Zi(i,u,s),t.associations.set(u,{meshes:e});for(let f=0,m=d.length;f<m;f++)u.add(d[f]);return u})}loadCamera(e){let t,n=this.json.cameras[e],i=n[n.type];if(!i){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return n.type==="perspective"?t=new Ft(Vr.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):n.type==="orthographic"&&(t=new zn(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),qn(t,n),Promise.resolve(t)}loadSkin(e){let t=this.json.skins[e],n=[];for(let i=0,s=t.joints.length;i<s;i++)n.push(this._loadNodeShallow(t.joints[i]));return t.inverseBindMatrices!==void 0?n.push(this.getDependency("accessor",t.inverseBindMatrices)):n.push(null),Promise.all(n).then(function(i){let s=i.pop(),a=i,o=[],c=[];for(let l=0,h=a.length;l<h;l++){let d=a[l];if(d){o.push(d);let u=new Fe;s!==null&&u.fromArray(s.array,l*16),c.push(u)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[l])}return new fr(o,c)})}loadAnimation(e){let t=this.json,n=this,i=t.animations[e],s=i.name?i.name:"animation_"+e,a=[],o=[],c=[],l=[],h=[];for(let d=0,u=i.channels.length;d<u;d++){let f=i.channels[d],m=i.samplers[f.sampler],y=f.target,g=y.node,p=i.parameters!==void 0?i.parameters[m.input]:m.input,M=i.parameters!==void 0?i.parameters[m.output]:m.output;y.node!==void 0&&(a.push(this.getDependency("node",g)),o.push(this.getDependency("accessor",p)),c.push(this.getDependency("accessor",M)),l.push(m),h.push(y))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(c),Promise.all(l),Promise.all(h)]).then(function(d){let u=d[0],f=d[1],m=d[2],y=d[3],g=d[4],p=[];for(let T=0,x=u.length;T<x;T++){let w=u[T],v=f[T],A=m[T],b=y[T],E=g[T];if(w===void 0)continue;w.updateMatrix&&w.updateMatrix();let P=n._createAnimationTracks(w,v,A,b,E);if(P)for(let D=0;D<P.length;D++)p.push(P[D])}let M=new Vi(s,void 0,p);return qn(M,i),M})}createNodeMesh(e){let t=this.json,n=this,i=t.nodes[e];return i.mesh===void 0?null:n.getDependency("mesh",i.mesh).then(function(s){let a=n._getNodeRef(n.meshCache,i.mesh,s);return i.weights!==void 0&&a.traverse(function(o){if(o.isMesh)for(let c=0,l=i.weights.length;c<l;c++)o.morphTargetInfluences[c]=i.weights[c]}),a})}loadNode(e){let t=this.json,n=this,i=t.nodes[e],s=n._loadNodeShallow(e),a=[],o=i.children||[];for(let l=0,h=o.length;l<h;l++)a.push(n.getDependency("node",o[l]));let c=i.skin===void 0?Promise.resolve(null):n.getDependency("skin",i.skin);return Promise.all([s,Promise.all(a),c]).then(function(l){let h=l[0],d=l[1],u=l[2];u!==null&&h.traverse(function(f){f.isSkinnedMesh&&f.bind(u,Ix)});for(let f=0,m=d.length;f<m;f++)h.add(d[f]);if(h.userData.pivot!==void 0&&d.length>0){let f=h.userData.pivot,m=d[0];h.pivot=new C().fromArray(f),h.position.x-=f[0],h.position.y-=f[1],h.position.z-=f[2],m.position.set(0,0,0),delete h.userData.pivot}return h})}_loadNodeShallow(e){let t=this.json,n=this.extensions,i=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];let s=t.nodes[e],a=s.name?i.createUniqueName(s.name):"",o=[],c=i._invokeOne(function(l){return l.createNodeMesh&&l.createNodeMesh(e)});return c&&o.push(c),s.camera!==void 0&&o.push(i.getDependency("camera",s.camera).then(function(l){return i._getNodeRef(i.cameraCache,s.camera,l)})),i._invokeAll(function(l){return l.createNodeAttachment&&l.createNodeAttachment(e)}).forEach(function(l){o.push(l)}),this.nodeCache[e]=Promise.all(o).then(function(l){let h;if(s.isBone===!0?h=new As:l.length>1?h=new At:l.length===1?h=l[0]:h=new gt,h!==l[0])for(let d=0,u=l.length;d<u;d++)h.add(l[d]);if(s.name&&(h.userData.name=s.name,h.name=a),qn(h,s),s.extensions&&Zi(n,h,s),s.matrix!==void 0){let d=new Fe;d.fromArray(s.matrix),h.applyMatrix4(d)}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(!i.associations.has(h))i.associations.set(h,{});else if(s.mesh!==void 0&&i.meshCache.refs[s.mesh]>1){let d=i.associations.get(h);i.associations.set(h,{...d})}return i.associations.get(h).nodes=e,h}),this.nodeCache[e]}loadScene(e){let t=this.extensions,n=this.json.scenes[e],i=this,s=new At;n.name&&(s.name=i.createUniqueName(n.name)),qn(s,n),n.extensions&&Zi(t,s,n);let a=n.nodes||[],o=[];for(let c=0,l=a.length;c<l;c++)o.push(i.getDependency("node",a[c]));return Promise.all(o).then(function(c){for(let h=0,d=c.length;h<d;h++){let u=c[h];u.parent!==null?s.add(rc(u)):s.add(u)}let l=h=>{let d=new Map;for(let[u,f]of i.associations)(u instanceof Qt||u instanceof Ct)&&d.set(u,f);return h.traverse(u=>{let f=i.associations.get(u);f!=null&&d.set(u,f)}),d};return i.associations=l(s),s})}_createAnimationTracks(e,t,n,i,s){let a=[],o=e.name?e.name:e.uuid,c=[];function l(f){f.morphTargetInfluences&&c.push(f.name?f.name:f.uuid)}Ci[s.path]===Ci.weights?(l(e),e.isGroup&&e.children.forEach(l)):c.push(o);let h;switch(Ci[s.path]){case Ci.weights:h=si;break;case Ci.rotation:h=ri;break;case Ci.translation:case Ci.scale:h=Si;break;default:switch(n.itemSize){case 1:h=si;break;case 2:case 3:default:h=Si;break}break}let d=i.interpolation!==void 0?Tx[i.interpolation]:Bi,u=this._getArrayFromAccessor(n);for(let f=0,m=c.length;f<m;f++){let y=new h(c[f]+"."+Ci[s.path],t.array,u,d);i.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(y),a.push(y)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let n=Th(t.constructor),i=new Float32Array(t.length);for(let s=0,a=t.length;s<a;s++)i[s]=t[s]*n;t=i}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(n){let i=this instanceof ri?Sh:cc;return new i(this.times,this.values,this.getValueSize()/3,n)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}};function Dx(r,e,t){let n=e.attributes,i=new Ot;if(n.POSITION!==void 0){let o=t.json.accessors[n.POSITION],c=o.min,l=o.max;if(c!==void 0&&l!==void 0){if(i.set(new C(c[0],c[1],c[2]),new C(l[0],l[1],l[2])),o.normalized){let h=Th(Ws[o.componentType]);i.min.multiplyScalar(h),i.max.multiplyScalar(h)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;let s=e.targets;if(s!==void 0){let o=new C,c=new C;for(let l=0,h=s.length;l<h;l++){let d=s[l];if(d.POSITION!==void 0){let u=t.json.accessors[d.POSITION],f=u.min,m=u.max;if(f!==void 0&&m!==void 0){if(c.setX(Math.max(Math.abs(f[0]),Math.abs(m[0]))),c.setY(Math.max(Math.abs(f[1]),Math.abs(m[1]))),c.setZ(Math.max(Math.abs(f[2]),Math.abs(m[2]))),u.normalized){let y=Th(Ws[u.componentType]);c.multiplyScalar(y)}o.max(c)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(o)}r.boundingBox=i;let a=new $t;i.getCenter(a.center),a.radius=i.min.distanceTo(i.max)/2,r.boundingSphere=a}function ef(r,e,t){let n=e.attributes,i=[];function s(a,o){return t.getDependency("accessor",a).then(function(c){r.setAttribute(o,c)})}for(let a in n){let o=wh[a]||a.toLowerCase();o in r.attributes||i.push(s(n[a],o))}if(e.indices!==void 0&&!r.index){let a=t.getDependency("accessor",e.indices).then(function(o){r.setIndex(o)});i.push(a)}return He.workingColorSpace!==jt&&"COLOR_0"in n&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${He.workingColorSpace}" not supported.`),qn(r,e),Dx(r,e,t),Promise.all(i).then(function(){return e.targets!==void 0?Ax(r,e.targets,t):r})}var nf={type:"change"},Rh={type:"start"},rf={type:"end"},lc=new On,sf=new on,Lx=Math.cos(70*Vr.DEG2RAD),Dt=new C,sn=2*Math.PI,st={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},Ah=1e-6,hc=class extends Dr{constructor(e,t=null){super(e,t),this.state=st.NONE,this.target=new C,this.cursor=new C,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:wi.ROTATE,MIDDLE:wi.DOLLY,RIGHT:wi.PAN},this.touches={ONE:Ti.ROTATE,TWO:Ti.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle="auto",this._domElementKeyEvents=null,this._lastPosition=new C,this._lastQuaternion=new xt,this._lastTargetPosition=new C,this._quat=new xt().setFromUnitVectors(e.up,new C(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new Ls,this._sphericalDelta=new Ls,this._scale=1,this._panOffset=new C,this._rotateStart=new he,this._rotateEnd=new he,this._rotateDelta=new he,this._panStart=new he,this._panEnd=new he,this._panDelta=new he,this._dollyStart=new he,this._dollyEnd=new he,this._dollyDelta=new he,this._dollyDirection=new C,this._mouse=new he,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Fx.bind(this),this._onPointerDown=Nx.bind(this),this._onPointerUp=Ux.bind(this),this._onContextMenu=Vx.bind(this),this._onMouseWheel=Bx.bind(this),this._onKeyDown=zx.bind(this),this._onTouchStart=Hx.bind(this),this._onTouchMove=Gx.bind(this),this._onMouseDown=Ox.bind(this),this._onMouseMove=kx.bind(this),this._interceptControlDown=Wx.bind(this),this._interceptControlUp=qx.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e==="grab"?this.domElement.style.cursor="grab":this.domElement.style.cursor="auto"}get cursorStyle(){return this._cursorStyle}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.state=st.NONE,this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents();let e=this.domElement.getRootNode();e.removeEventListener("keydown",this._interceptControlDown,{capture:!0}),e.removeEventListener("keyup",this._interceptControlUp,{capture:!0}),this._controlActive=!1,this._pointers.length=0,this._pointerPositions={},this.domElement.style.touchAction="",this.domElement.style.cursor="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(nf),this.update(),this.state=st.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){let t=this.object.position;Dt.copy(t).sub(this.target),Dt.applyQuaternion(this._quat),this._spherical.setFromVector3(Dt),this.autoRotate&&this.state===st.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,i=this.maxAzimuthAngle;isFinite(n)&&isFinite(i)&&(n<-Math.PI?n+=sn:n>Math.PI&&(n-=sn),i<-Math.PI?i+=sn:i>Math.PI&&(i-=sn),n<=i?this._spherical.theta=Math.max(n,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(n+i)/2?Math.max(n,this._spherical.theta):Math.min(i,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{let a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),s=a!=this._spherical.radius}if(Dt.setFromSpherical(this._spherical),Dt.applyQuaternion(this._quatInverse),t.copy(this.target).add(Dt),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){let o=Dt.length();a=this._clampDistance(o*this._scale);let c=o-a;this.object.position.addScaledVector(this._dollyDirection,c),this.object.updateMatrixWorld(),s=!!c}else if(this.object.isOrthographicCamera){let o=new C(this._mouse.x,this._mouse.y,0);o.unproject(this.object);let c=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),s=c!==this.object.zoom;let l=new C(this._mouse.x,this._mouse.y,0);l.unproject(this.object),this.object.position.sub(l).add(o),this.object.updateMatrixWorld(),a=Dt.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):(lc.origin.copy(this.object.position),lc.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(lc.direction))<Lx?this.object.lookAt(this.target):(sf.setFromNormalAndCoplanarPoint(this.object.up,this.target),lc.intersectPlane(sf,this.target))))}else if(this.object.isOrthographicCamera){let 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)>Ah||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Ah||this._lastTargetPosition.distanceToSquared(this.target)>Ah?(this.dispatchEvent(nf),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?sn/60*this.autoRotateSpeed*e:sn/60/60*this.autoRotateSpeed}_getZoomScale(e){let 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){Dt.setFromMatrixColumn(t,0),Dt.multiplyScalar(-e),this._panOffset.add(Dt)}_panUp(e,t){this.screenSpacePanning===!0?Dt.setFromMatrixColumn(t,1):(Dt.setFromMatrixColumn(t,0),Dt.crossVectors(this.object.up,Dt)),Dt.multiplyScalar(e),this._panOffset.add(Dt)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){let i=this.object.position;Dt.copy(i).sub(this.target);let s=Dt.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;let n=this.domElement.getBoundingClientRect(),i=e-n.left,s=t-n.top,a=n.width,o=n.height;this._mouse.x=i/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);let t=this.domElement;this._rotateLeft(sn*this._rotateDelta.x/t.clientHeight),this._rotateUp(sn*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(sn*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(-sn*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(sn*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(-sn*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{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._rotateStart.set(n,i)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._panStart.set(n,i)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,i=e.pageY-t.y,s=Math.sqrt(n*n+i*i);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{let n=this._getSecondPointerPosition(e),i=.5*(e.pageX+n.x),s=.5*(e.pageY+n.y);this._rotateEnd.set(i,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(sn*this._rotateDelta.x/t.clientHeight),this._rotateUp(sn*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{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._panEnd.set(n,i)}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){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,i=e.pageY-t.y,s=Math.sqrt(n*n+i*i);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);let 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 he,this._pointerPositions[e.pointerId]=t),t.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){let t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){let 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 Nx(r){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(r.pointerId),this.domElement.ownerDocument.addEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(r)&&(this._addPointer(r),r.pointerType==="touch"?this._onTouchStart(r):this._onMouseDown(r),this._cursorStyle==="grab"&&(this.domElement.style.cursor="grabbing")))}function Fx(r){this.enabled!==!1&&(r.pointerType==="touch"?this._onTouchMove(r):this._onMouseMove(r))}function Ux(r){switch(this._removePointer(r),this._pointers.length){case 0:this.domElement.releasePointerCapture(r.pointerId),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(rf),this.state=st.NONE,this._cursorStyle==="grab"&&(this.domElement.style.cursor="grab");break;case 1:let e=this._pointers[0],t=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:t.x,pageY:t.y});break}}function Ox(r){let e;switch(r.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 wi.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(r),this.state=st.DOLLY;break;case wi.ROTATE:if(r.ctrlKey||r.metaKey||r.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(r),this.state=st.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(r),this.state=st.ROTATE}break;case wi.PAN:if(r.ctrlKey||r.metaKey||r.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(r),this.state=st.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(r),this.state=st.PAN}break;default:this.state=st.NONE}this.state!==st.NONE&&this.dispatchEvent(Rh)}function kx(r){switch(this.state){case st.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(r);break;case st.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(r);break;case st.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(r);break}}function Bx(r){this.enabled===!1||this.enableZoom===!1||this.state!==st.NONE||(r.preventDefault(),this.dispatchEvent(Rh),this._handleMouseWheel(this._customWheelEvent(r)),this.dispatchEvent(rf))}function zx(r){this.enabled!==!1&&this._handleKeyDown(r)}function Hx(r){switch(this._trackPointer(r),this._pointers.length){case 1:switch(this.touches.ONE){case Ti.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(r),this.state=st.TOUCH_ROTATE;break;case Ti.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(r),this.state=st.TOUCH_PAN;break;default:this.state=st.NONE}break;case 2:switch(this.touches.TWO){case Ti.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(r),this.state=st.TOUCH_DOLLY_PAN;break;case Ti.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(r),this.state=st.TOUCH_DOLLY_ROTATE;break;default:this.state=st.NONE}break;default:this.state=st.NONE}this.state!==st.NONE&&this.dispatchEvent(Rh)}function Gx(r){switch(this._trackPointer(r),this.state){case st.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(r),this.update();break;case st.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(r),this.update();break;case st.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(r),this.update();break;case st.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(r),this.update();break;default:this.state=st.NONE}}function Vx(r){this.enabled!==!1&&r.preventDefault()}function Wx(r){r.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function qx(r){r.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}var af=(function(){var r="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq:VZkdbk:XYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbh5dnawTmbaxa8Acd4fRbbh5kcbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:ysezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb",e="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:W9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:JBl8Aud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fhOaPaDfhAasaeaH9RaHasfae6EgCcsfgocl4cifcd4hXavcj;cbfaoc9WGgQcetfhLavcj;cbfaQci2fhKavcj;cbfaQfhYcbh8Aaoc;ab6hEincbh3dnawTmbaPa8Acd4fRbbh3kcbh5avcj;cbfh8Eindndndndna3a5cet4ciGgoc9:fPdebdkaxaA9RaQ6mwdnaQTmbavcj;cbfa5aQ2faAaQ;8qbbkaAaCfhAxdkaQTmeavcj;cbfa5aQ2fcbaQ;8kbxekaxaA9RaX6moaoclVcbawEhraAaXfhocbhidnaEmbaxao9Rc;Gb6mbcbhlina8EalfhidndndndndndnaAalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiczfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaicafaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaQ0meaihlaxao9Rc;Fb0mbkkdnaiaQ9pmbaici4hlinaxao9RcK6mwa8EaifhqdndndndndndnaAaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaoclffagRb:q:W:cjbfhoxikaqaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaocwffagRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbahaocdffagRb:q:W:cjbfhokalcdfhlaiczfgiaQ6mbkkaohAaoTmoka8EaQfh8Ea5cefg5cl9hmbkdndndndnawTmbaza8Acd4fRbbglciGPlbedwbkaQTmdavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep9Ta8Fpxeeeeeeeeeeeeeeeegap9op9Hp9rg8Fa8Jp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ugap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp9Ugap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp9Ugap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9AbbbaladfhlaoczfgoaQ6mbxikkaQTmeavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep:nea8Fpxebebebebebebebebgap9op:bep9rg8Fa8Jp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oegap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp:oegap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp:oegap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9AbbbaladfhlaoczfgoaQ6mbxdkkaQTmbcbhocbalcl4gl9Rc8FGhiavcjdfa8Afhrava8Afpbdbhainaravcj;cbfaofpblbg8JaYaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaLaofpblbg8MaKaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Faap9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8LaypmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9AbbbaradfhraoczfgoaQ6mbkka8Aclfg8Aad6mbkdnaCad2goTmbaOavcjdfao;8qbbkdnammbavavcjdfaCcufad2fad;8qbbkaCaHfhHc9:hoaAhPaAmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkNsezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb",t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var i=WebAssembly.validate(t)?o(e):o(r),s,a=WebAssembly.instantiate(i,{}).then(function(p){s=p.instance,s.exports.__wasm_call_ctors()});function o(p){for(var M=new Uint8Array(p.length),T=0;T<p.length;++T){var x=p.charCodeAt(T);M[T]=x>96?x-97:x>64?x-39:x+4}for(var w=0,T=0;T<p.length;++T)M[w++]=M[T]<60?n[M[T]]:(M[T]-60)*64+M[++T];return M.buffer.slice(0,w)}function c(p,M,T,x,w,v,A){var b=p.exports.sbrk,E=x+3&-4,P=b(E*w),D=b(v.length),U=new Uint8Array(p.exports.memory.buffer);U.set(v,D);var k=M(P,x,w,D,v.length);if(k==0&&A&&A(P,E,w),T.set(U.subarray(P,P+x*w)),b(P-b(0)),k!=0)throw new Error("Malformed buffer data: "+k)}var l={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp",COLOR:"meshopt_decodeFilterColor"},h={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},d=[],u=0;function f(p){var M={object:new Worker(p),pending:0,requests:{}};return M.object.onmessage=function(T){var x=T.data;M.pending-=x.count,M.requests[x.id][x.action](x.value),delete M.requests[x.id]},M}function m(p){for(var M="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(i)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+g.name+";"+c.toString()+g.toString(),T=new Blob([M],{type:"text/javascript"}),x=URL.createObjectURL(T),w=d.length;w<p;++w)d[w]=f(x);for(var w=p;w<d.length;++w)d[w].object.postMessage({});d.length=p,URL.revokeObjectURL(x)}function y(p,M,T,x,w){for(var v=d[0],A=1;A<d.length;++A)d[A].pending<v.pending&&(v=d[A]);return new Promise(function(b,E){var P=new Uint8Array(T),D=++u;v.pending+=p,v.requests[D]={resolve:b,reject:E},v.object.postMessage({id:D,count:p,size:M,source:P,mode:x,filter:w},[P.buffer])})}function g(p){var M=p.data;self.ready.then(function(T){if(!M.id)return self.close();try{var x=new Uint8Array(M.count*M.size);c(T,T.exports[M.mode],x,M.count,M.size,M.source,T.exports[M.filter]),self.postMessage({id:M.id,count:M.count,action:"resolve",value:x},[x.buffer])}catch(w){self.postMessage({id:M.id,count:M.count,action:"reject",value:w})}})}return{ready:a,supported:!0,useWorkers:function(p){m(p)},decodeVertexBuffer:function(p,M,T,x,w){c(s,s.exports.meshopt_decodeVertexBuffer,p,M,T,x,s.exports[l[w]])},decodeIndexBuffer:function(p,M,T,x){c(s,s.exports.meshopt_decodeIndexBuffer,p,M,T,x)},decodeIndexSequence:function(p,M,T,x){c(s,s.exports.meshopt_decodeIndexSequence,p,M,T,x)},decodeGltfBuffer:function(p,M,T,x,w,v){c(s,s.exports[h[w]],p,M,T,x,s.exports[l[v]])},decodeGltfBufferAsync:function(p,M,T,x,w){return d.length>0?y(p,M,T,h[x],l[w]):a.then(function(){var v=new Uint8Array(p*M);return c(s,s.exports[h[x]],v,p,M,T,s.exports[l[w]]),v})}}})();var dc=["male-a","male-b","male-c","male-d","male-e","male-f","female-a","female-b","female-c","female-d","female-e","female-f"],Ch=3,Xx=["desk","chairDesk","computerScreen","computerKeyboard","computerMouse","laptop","pottedPlant","plantSmall1","plantSmall2","plantSmall3","kitchenCabinet","kitchenCoffeeMachine","kitchenSink","kitchenFridgeLarge","kitchenMicrowave","stoolBar","tableRound","table","chairModernCushion","bookcaseOpen","books","loungeSofa","loungeChairRelax","tableCoffee","rugRectangle","lampRoundFloor","lampSquareTable","televisionModern","cabinetTelevision","trashcan","coatRackStanding","radio","speaker","toaster","cardboardBoxClosed"],jx={thinking:9137126,tool:3903200,typing:2271348,waiting:14717970,error:14568256},Ph=.92,$i=2.4,Kx=.16;function Yx(r){let e=new window.OfficeGrid(r.W,r.D),t=e.res;e.cost.fill(1);for(let[a,o,c,l]of r.walk||[])for(let h=Math.floor(o*t);h<Math.ceil(l*t);h++)for(let d=Math.floor(a*t);d<Math.ceil(c*t);d++)d>=0&&h>=0&&d<e.cw&&h<e.ch&&(e.cost[h*e.cw+d]=0);for(let[a,o,c,l]of r.solid||[])e.block(a,o,c,l,.1);let n=a=>a==null?null:a*Math.PI/180,i=r.stations.map(a=>({x:a.x,y:a.y,side:"n",pose:a.pose||"stand",yaw:n(a.yaw),anim:a.anim,seat:{x:a.x,y:a.y}})),s=r.pois.map(a=>({...a,yaw:n(a.yaw),face:"front",sit:a.sit?typeof a.sit=="number"?a.sit:.3:0,taken:null}));return{W:r.W,D:r.D,viewH:r.viewH,grid:e,items:[],props:[],pois:s,desks:i,windows:[],posters:[],pp:null,door:r.spawn,fixed:!0,noNap:!0,terrain:!!r.terrain,scene:r}}function of(){let r=new Date().getHours()+new Date().getMinutes()/60;return r>=7&&r<17?{sky:11130098,sun:1.7,amb:1.15,night:!1}:r>=5&&r<7?{sky:15976872,sun:1.1,amb:.8,night:!1}:r>=17&&r<19?{sky:15771257,sun:1,amb:.75,night:!1}:{sky:1910599,sun:.9,amb:1.05,night:!0}}var Ih=null,uc=class extends window.Office{constructor(e,t){Ih=t&&t.scene||null,super(e,t),typeof window<"u"&&window.__DSH_OFFICE_DEBUG&&(window.__officeScene=this),this.sceneDef=Ih,this.compact=!!t?.compact,this.canvas.classList.add("office-overlay");try{this.gl=new nc({antialias:!0,alpha:!0})}catch{this.loadError="WebGL unavailable",this.markReady(!1);return}this.gl.setPixelRatio(Math.min(2,window.devicePixelRatio||1)),this.gl.shadowMap.enabled=!0,this.gl.shadowMap.type=ao,this.gl.outputColorSpace=ot,this.gl.toneMapping=Nr,this.gl.toneMappingExposure=1.15,this.gl.domElement.className="office-gl",e.insertBefore(this.gl.domElement,this.canvas),this.scene=new lr,this.camera=new zn(-10,10,10,-10,.1,200),this.controls=new hc(this.camera,this.canvas),this.controls.enableDamping=!0,this.controls.minPolarAngle=.35,this.controls.maxPolarAngle=1.25,this.controls.minZoom=.6,this.controls.maxZoom=4,this.controls.screenSpacePanning=!0,this.controls.zoomToCursor=!0,this.hemi=new Er(16775406,9075302,1),this.scene.add(this.hemi),this.sun=new qi(16773596,1.6),this.sun.castShadow=!0,this.sun.shadow.mapSize.set(2048,2048),this.sun.shadow.bias=-6e-4,this.sun.shadow.normalBias=.02,this.scene.add(this.sun,this.sun.target),this.actors=new Map,this.screens=new Map,this.blinkers=[],this.loaded=!1,this.clock=new Ir,this.load().catch(n=>{this.loadError=String(n&&n.message||n),console.error("3D office failed to load:",n),this.markReady(!1)}),this.resize()}destroy(){super.destroy(),this.gl&&(this.controls.dispose(),this.gl.dispose(),this.gl.domElement.remove())}buildPlan(e){let t=Ih||this.sceneDef;return t?Yx(t):super.buildPlan(e)}async load(){let e=new ac;e.setMeshoptDecoder(af);let t=i=>new Promise((s,a)=>e.load(i,s,void 0,a));this.chars=new Array(dc.length).fill(null);let[n]=await Promise.all([Promise.all(Xx.map(i=>t(`./assets/kenney/furniture/${i}.glb`).then(s=>[i,s.scene]))),this.loadCharacters(t,Ch)]);if(this.models=Object.fromEntries(n),this.sceneDef){let i=[...new Set(this.sceneDef.props.filter(c=>c.f&&!this.models[c.f]).map(c=>c.f))],s=await Promise.all(i.map(c=>t(`./assets/kenney/furniture/${c}.glb`).then(l=>[c,l.scene])));Object.assign(this.models,Object.fromEntries(s));for(let[,c]of s)c.traverse(l=>{l.isMesh&&(l.castShadow=!0,l.receiveShadow=!0)});let a=[...new Set(this.sceneDef.props.filter(c=>c.m).map(c=>c.m))],o=await Promise.all(a.map(c=>t(`${this.sceneDef.base}models/${c}.glb`).then(l=>[`scene:${c}`,l.scene])));Object.assign(this.models,Object.fromEntries(o));for(let[,c]of o)c.traverse(l=>{l.isMesh&&(l.castShadow=!0,l.receiveShadow=!0)})}for(let i of Object.values(this.models))i.traverse(s=>{s.isMesh&&(s.castShadow=!0,s.receiveShadow=!0)});this.loaded=!0,this.loadCharacters(t,dc.length-Ch,Ch)}async loadCharacters(e,t,n=0){let i=[];for(let s=n;s<Math.min(dc.length,n+t);s++)i.push(s);await Promise.all(i.map(async s=>{try{this.chars[s]=await e(`./assets/kenney/characters/character-${dc[s]}.glb`)}catch{}}))}charModel(e){let t=this.chars.length;return this.chars[(e%t+t)%t]||this.chars.find(Boolean)||null}place(e,t,n,i,s,{rot:a=0,y0:o=0,h:c=null,stretch:l=!1,group:h=this.room}={}){let d=this.models[e];if(!d)return null;let u=d.clone(!0);u.rotation.y=a,u.updateMatrixWorld(!0);let f=new Ot().setFromObject(u),m=f.getSize(new C);if(l){let g=Math.abs(Math.sin(a))>.5;u.scale.set((g?s:i)/(g?m.z:m.x),c/m.y,(g?i:s)/(g?m.x:m.z))}else u.scale.setScalar(c?c/m.y:Math.min(i/m.x,s/m.z));u.updateMatrixWorld(!0),f=new Ot().setFromObject(u);let y=f.getCenter(new C);return u.position.set(t+i/2-y.x,o-f.min.y,n+s/2-y.z),h.add(u),u}screenCodeCanvas(e=0,t=512){let n=document.createElement("canvas"),i=t/512;n.width=t,n.height=Math.round(320*i);let s=n.getContext("2d");s.scale(i,i),s.fillStyle="#0a1020",s.fillRect(0,0,512,320),s.fillStyle="#141d33",s.fillRect(0,0,512,34),["#ff6b6b","#ffd166","#5ee0a0"].forEach((l,h)=>{s.fillStyle=l,s.beginPath(),s.arc(18+h*18,17,5,0,Math.PI*2),s.fill()}),s.fillStyle="#7c8db5",s.font="600 15px monospace",s.fillText(e%2?"workspace \u2014 collaboration.ts":"harness \u2014 session.log",82,23),s.fillStyle="#0e1730",s.fillRect(0,34,108,286),s.fillStyle="#5d729f",s.font="12px monospace",["src","agents","office","tests"].forEach((l,h)=>s.fillText((h?" ":"\u25BE ")+l,12,62+h*24));let a=['import { team } from "@dsh/office";',"const agents = await team.list(session);","for (const agent of agents) {"," const task = await agent.assign();"," await agent.run(task);",' emit("tool", agent.status);',"}","const reports = await team.collect();","if (reports.length === agents.length) {",' console.log("all reports ready");',"}",'await fs.writeFile("summary.md", reports);',"// live: streaming tool activity","export { agents, reports };"],o=/("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|\/\/[^\n]*|\b(?:import|from|const|let|await|for|of|if|else|export|return|new|async|function)\b|\b[A-Za-z_$][\w$]*(?=\()|\b\d+\b|\s+|[^\s])/g,c=56;return a.forEach((l,h)=>{s.fillStyle="#3d4d70",s.font="10px monospace",s.fillText(String(h+1).padStart(3," "),116,c);let d=148,u=l.match(o)||[];u.forEach((f,m)=>{s.fillStyle=/^\/\//.test(f)?"#6a9955":/^["']/.test(f)?"#ce9178":/^\d+$/.test(f)?"#b5cea8":/^(?:import|from|const|let|await|for|of|if|else|export|return|new|async|function)$/.test(f)?"#569cd6":/^[A-Za-z_$][\w$]*$/.test(f)&&u[m+1]==="("?"#dcdcaa":"#d4d4d4",s.fillText(f,d,c),d+=s.measureText(f).width}),c+=16}),s.fillStyle="#0e1730",s.fillRect(0,292,512,28),s.fillStyle="#5ee0a0",s.font="12px monospace",s.fillText("\u25CF live",14,311),s.fillStyle="#5d729f",s.fillText(e%2?"collaboration +3 agents":"session stream +3 agents",300,311),n}screenCanvas(e=0,t=512,n=null){if(!n)return this.screenCodeCanvas(e,t);let i=document.createElement("canvas"),s=t/512;i.width=t,i.height=Math.round(320*s);let a=i.getContext("2d");a.scale(s,s),a.fillStyle="#0a1020",a.fillRect(0,0,512,320),a.fillStyle="#141d33",a.fillRect(0,0,512,34),["#ff6b6b","#ffd166","#5ee0a0"].forEach((m,y)=>{a.fillStyle=m,a.beginPath(),a.arc(18+y*18,17,5,0,Math.PI*2),a.fill()});let o=(m,y)=>{let g=String(m??"").replace(/\s+/g," ");return g.length>y?g.slice(0,y-1)+"\u2026":g};if(a.fillStyle="#7c8db5",a.font='600 14px "Cascadia Mono","Consolas",monospace',a.fillText(o(n.empty?"office \u2014 idle station":(n.name||"agent")+" \u2014 session.log",34),82,23),n.empty)return a.fillStyle="#7c8db5",a.font='600 22px "Microsoft YaHei",sans-serif',a.textAlign="center",a.fillText("\u672A\u5206\u914D\u5DE5\u4F4D",256,146),a.fillStyle="#5d729f",a.font='13px "Microsoft YaHei",sans-serif',a.fillText("\u7B49\u5F85 Agent \u5165\u5EA7",256,174),a.textAlign="left",a.fillStyle="#0e1730",a.fillRect(0,292,512,28),a.fillStyle="#5d729f",a.font="12px monospace",a.fillText("\u25CB idle",14,311),i;let c=(m,y,g)=>{a.fillStyle="#5d729f",a.font='11px "Cascadia Mono","Consolas",monospace',a.fillText(m,y,g)},l=(m,y,g,p)=>{a.fillStyle=p||"#d4d4d4",a.font='12px "Cascadia Mono","Consolas","Microsoft YaHei",monospace',a.fillText(o(m,48),y,g)};c("agent",14,62),l(n.code||"AGENT",92,62,"#7fd1ff"),c("status",14,86),l(n.statusText||"\u72B6\u6001\u672A\u77E5",92,86,n.statusColor||"#d4d4d4"),c("task",14,110);let h=String(n.task||"\u7B49\u5F85\u4EFB\u52A1"),d=[];for(let m=0;m<h.length&&d.length<3;m+=32)d.push(h.slice(m,m+32));a.fillStyle="#d4d4d4",a.font='12px "Microsoft YaHei",sans-serif',d.forEach((m,y)=>a.fillText(m,92,110+y*17));let u=110+Math.max(1,d.length)*17+8;c("context",14,u),l(n.context||"\u672A\u8BB0\u5F55",92,u,"#b5cea8"),a.fillStyle="#22304d",a.fillRect(12,u+10,488,1),c("recent",14,u+30);let f=(n.log||[]).slice(0,4);return f.length?f.forEach((m,y)=>{let g=u+30+y*16;a.fillStyle="#4f638c",a.font="10px monospace",a.fillText(m.time||"",14,g),a.fillStyle="#8fb4d9",a.font='10px "Microsoft YaHei",sans-serif',a.fillText(o(m.label||"",9),70,g),a.fillStyle="#a9bcd6",a.fillText(o(m.text||"",34),146,g)}):(a.fillStyle="#5d729f",a.font='11px "Microsoft YaHei",sans-serif',a.fillText("\u6682\u65E0\u65B0\u4E8B\u4EF6",92,u+30)),a.fillStyle="#0e1730",a.fillRect(0,292,512,28),a.fillStyle=n.statusColor||"#5ee0a0",a.font='12px "Microsoft YaHei",sans-serif',a.fillText("\u25CF "+(n.statusText||"\u72B6\u6001\u672A\u77E5"),14,311),a.fillStyle="#5d729f",a.font="10px monospace",a.textAlign="right",a.fillText(n.updated||"",498,311),a.textAlign="left",i}decorateScreen(e,t){let n=null;if(e.traverse(m=>{m.isMesh&&m.geometry?.attributes?.position?.count===4&&!n&&(n=m)}),!n)return;let i=n.geometry.clone(),s=i.attributes.position,a=i.attributes.uv,o=1/0,c=-1/0,l=1/0,h=-1/0;for(let m=0;m<s.count;m++)o=Math.min(o,s.getX(m)),c=Math.max(c,s.getX(m)),l=Math.min(l,s.getY(m)),h=Math.max(h,s.getY(m));for(let m=0;m<s.count;m++)a.setXY(m,(s.getX(m)-o)/(c-o||1),(s.getY(m)-l)/(h-l||1));a.needsUpdate=!0,n.geometry=i;let d=this.sceneScreens.length,u=this.screenCanvas(d),f=new Tn(u);f.colorSpace=ot,f.anisotropy=4,n.material=new Ue({map:f,emissive:16777215,emissiveMap:f,emissiveIntensity:.62,roughness:.42,metalness:0}),n.userData.screenSeed=d,n.userData.screenCanvas=u,n.userData.screenTexture=f,n.userData.screenKind=t.f,this.sceneScreens.push({mesh:n,canvas:u,seed:d,kind:t.f,x:t.x+(t.w||0)/2,z:t.y+(t.d||0)/2})}boxMesh(e,t,n,i,s,a,o,c={}){let l=c.mat||new Ue({color:o,roughness:c.rough??.8,metalness:c.metal??0,...c.emissive?{emissive:c.emissive,emissiveIntensity:c.ei??1}:{}}),h=new Ce(new mn(i,a,s),l);return h.position.set(e+i/2,n+a/2,t+s/2),h.castShadow=c.shadow!==!1,h.receiveShadow=!0,(c.group||this.room).add(h),h}glassMat(){return this._glass||(this._glass=new Ut({color:13625077,transparent:!0,opacity:.22,roughness:.05,metalness:0,depthWrite:!1}))}textPlane(e,t,n,i){let s=document.createElement("canvas");s.width=256,s.height=Math.round(256*i/n);let a=s.getContext("2d");a.fillStyle=t,a.fillRect(0,0,s.width,s.height),a.fillStyle="#fff",a.font=`800 ${Math.round(s.height*.22)}px ui-sans-serif, system-ui, sans-serif`,a.textAlign="center",a.textBaseline="middle",a.fillText(e,s.width/2,s.height/2);let o=new Tn(s);return o.colorSpace=ot,new Ce(new Kt(n,i),new Ue({map:o,roughness:.9}))}build(){if(this.plan.scene)return this.buildScene();let e=this.plan;this.room&&this.scene.remove(this.room),this.room=new At,this.scene.add(this.room),this.screens.clear(),this.blinkers=[];let{W:t,D:n,OW:i,MR:s,PY:a}=e,o=this.pal.dark,c=(v,A,b,E,P,D)=>{let U=new Ue({color:P,roughness:.9,map:D||null}),k=new Ce(new Kt(b,E),U);k.rotation.x=-Math.PI/2,k.position.set(v+b/2,0,A+E/2),k.receiveShadow=!0,this.room.add(k)},l=this.patternTexture((v,A)=>{v.fillStyle=o?"#4a3f35":"#e3cfb0",v.fillRect(0,0,A,A),v.strokeStyle=o?"rgba(0,0,0,.25)":"rgba(120,90,50,.18)",v.lineWidth=2;for(let b=0;b<=4;b++)v.beginPath(),v.moveTo(0,b*A/4),v.lineTo(A,b*A/4),v.stroke();for(let b=0;b<4;b++){let E=(b*37%4+.5)*A/4;v.beginPath(),v.moveTo(E,b*A/4),v.lineTo(E,(b+1)*A/4),v.stroke()}}),h=this.patternTexture((v,A)=>{v.fillStyle=o?"#3d4044":"#f4f4f1",v.fillRect(0,0,A,A),v.fillStyle=o?"#35383c":"#e3e4e0",v.fillRect(0,0,A/2,A/2),v.fillRect(A/2,A/2,A/2,A/2)});l.repeat.set(i/2,n/2),c(0,0,i,n,16777215,l),c(i,0,t-i,s,o?3358797:13226972),h.repeat.set(t-i,a-s),c(i,s,t-i,a-s,16777215,h);let d=l.clone();d.needsUpdate=!0,d.repeat.set((t-i)/2,(n-a)/2),c(i,a,t-i,n-a,16777215,d);let u=e.pp,f=new Ce(new Kt(u.x1-u.x0+1.2,2.7),new Ue({color:o?3099194:12572868,roughness:1}));f.rotation.x=-Math.PI/2,f.position.set((u.x0+u.x1)/2,.005,u.y-.05),f.receiveShadow=!0,this.room.add(f);let m=o?4867648:16052198,y=new Ue({color:m,roughness:.95}),g=.12,p=-g,M=of();this.windowMat=new Ue({color:M.sky,emissive:M.sky,emissiveIntensity:.6});for(let v of e.windows){this.boxMesh(p,-g,0,v-p,g,$i,0,{mat:y}),this.boxMesh(v,-g,0,1.5,g,.85,0,{mat:y}),this.boxMesh(v,-g,2,1.5,g,$i-2,0,{mat:y});let A=new Ce(new Kt(1.5,1.15),this.windowMat);A.position.set(v+.75,1.425,-g/2),this.room.add(A),this.boxMesh(v+.73,-.02,.85,.04,.04,1.15,o?2828582:13616563),this.boxMesh(v,-.02,.83,1.5,.1,.04,o?2828582:13616563),p=v+1.5}this.boxMesh(p,-g,0,t-p,g,$i,0,{mat:y});let T=e.door.y;this.boxMesh(-g,-g,0,g,T-.6+g,$i,0,{mat:y}),this.boxMesh(-g,T+.6,0,g,n-T-.6,$i,0,{mat:y}),this.boxMesh(-g,T-.6,1.8,g,1.2,$i-1.8,0,{mat:y}),this.boxMesh(-g+.02,T-.55,0,.06,1.1,1.78,o?6046769:11043418),this.boxMesh(0,T-.6,0,.9,1.2,.01,o?5913390:12150090,{shadow:!1});for(let v of e.posters){let A=this.textPlane(v.text,v.color,.9,1);A.rotation.y=Math.PI/2,A.position.set(.005,1.45,v.y+.45),this.room.add(A)}let x=this.textPlane("","#fdfdfb",2.6,1.15);x.position.set(i+3.7,1.4,.005),this.room.add(x),this.whiteboardScribbles(i+3.7);let w=this.textPlane("MEETING",o?"#3a4a5a":"#8ea3b8",1.3,.3);w.position.set(i+1.1,2.15,.005),this.room.add(w);for(let v of e.desks)this.buildDesk(v);for(let v of e.props)this.buildProp(v);this.fitCamera3D(!0)}patternTexture(e){let t=document.createElement("canvas");t.width=t.height=128,e(t.getContext("2d"),128);let n=new Tn(t);return n.wrapS=n.wrapT=Fn,n.colorSpace=ot,n}whiteboardScribbles(e){let t=new At,n=(i,s)=>{let a=new pt().setFromPoints(i.map(([o,c])=>new C(o,c,0)));t.add(new ni(a,new ti({color:s})))};n([[-1.1,.35],[-.6,.35]],3903200),n([[-1.1,.2],[-.3,.2]],3903200),n([[0,.3],[.4,.3],[.4,.05],[0,.05],[0,.3]],13198402),n([[.4,.17],[.65,0]],13198402),n([[.65,.1],[1.05,.1],[1.05,-.15],[.65,-.15],[.65,.1]],13198402),n([[-1.1,-.35],[-.9,-.1],[-.7,-.3],[-.5,-.05],[-.3,-.25],[-.1,0]],6265420),t.position.set(e,1.4,.01),this.room.add(t)}buildDesk(e){let{x:t,y:n}=e;this.place("desk",t,n,1.4,.8,{h:.75,rot:e.side==="s"?0:Math.PI});let i=.75,s=e.side==="s"?n+.12:n+.48,a=e.side==="s"?0:Math.PI,o=this.place("computerScreen",t+.4,s,.6,.2,{y0:i,h:.5,rot:a}),c=e.side==="s"?n+.45:n+.2;this.place("computerKeyboard",t+.45,c,.5,.15,{y0:i,rot:a}),this.place("computerMouse",t+1,c,.08,.12,{y0:i,rot:a});let l=Math.round(t*10)*31+Math.round(n*10)*17>>>0;l%3===0&&this.place("plantSmall"+(1+l%3),t+.05,n+.3,.25,.25,{y0:i,h:.3}),l%4===1&&this.place("lampSquareTable",t+1.1,s,.25,.25,{y0:i,h:.35});let h=e.seat;if(this.place("chairDesk",h.x-.3,h.y-.3,.6,.6,{h:.9,rot:e.side==="s"?Math.PI:0}),o){let d=null;o.traverse(u=>{u.isMesh&&u.geometry.attributes.position.count===4&&(d=u)}),d&&(d.material=new Ue({color:1777188,emissive:0,roughness:.35}),this.screens.set(e,d))}}buildProp(e){let t=this.pal.dark;switch(e.t){case"panel":this.boxMesh(e.x,e.y,0,e.w,e.d,e.h,new we(e.color).getHex(),{rough:1});break;case"rack":{this.boxMesh(e.x,e.y,0,.7,.6,1.9,2764083,{metal:.3,rough:.5});for(let n=0;n<7;n++)for(let i=0;i<4;i++){let s=this.boxMesh(e.x+.12+i*.13,e.y+.6,1.7-n*.22,.05,.01,.03,1127202,{emissive:i%3===0?16757575:6090890,ei:1,shadow:!1});this.blinkers.push({m:s,r:n,k:i})}break}case"printer":this.boxMesh(e.x,e.y,0,.75,.55,.55,t?7230267:11043418),this.boxMesh(e.x+.05,e.y+.05,.55,.65,.45,.28,15263976),this.boxMesh(e.x+.15,e.y+.35,.83,.45,.15,.02,16777215),this.place("cardboardBoxClosed",e.x-.7,e.y+.05,.5,.5,{h:.35});break;case"plant":this.place("pottedPlant",e.x-.3,e.y-.3,.6,.6,{h:1});break;case"pingpong":{let{x:n,y:i}=e;for(let[s,a]of[[.1,.1],[2.4,.1],[.1,1.2],[2.4,1.2]])this.boxMesh(n+s,i+a,0,.08,.08,.7,3355443);this.boxMesh(n,i,.7,2.6,1.4,.05,3111506,{rough:.6}),this.boxMesh(n+.04,i+.69,.751,2.52,.02,.002,16777215,{shadow:!1}),this.boxMesh(n+1.29,i-.05,.75,.02,1.5,.17,16053492,{rough:1}),this.ball=new Ce(new Mi(.04,12,8),new Ue({color:16777215})),this.ball.castShadow=!0,this.ball.visible=!1,this.room.add(this.ball);break}case"vending":{this.boxMesh(e.x,e.y,0,.7,.75,1.85,new we(e.color).getHex(),{rough:.5}),this.boxMesh(e.x+.7,e.y+.08,.7,.01,.47,1,857376,{emissive:2771562,ei:.5,shadow:!1});let n=[15913323,6090890,16747109,8508666,13538264];for(let i=0;i<4;i++)for(let s=0;s<3;s++)this.boxMesh(e.x+.62,e.y+.13+s*.14,.82+i*.22,.06,.07,.13,n[(i*3+s)%5],{emissive:n[(i*3+s)%5],ei:.25,shadow:!1});break}case"foosball":{let{x:n,y:i}=e;for(let[s,a]of[[.1,.1],[1.42,.1],[.1,.62],[1.42,.62]])this.boxMesh(n+s,i+a,0,.08,.08,.6,5914672);this.boxMesh(n,i,.6,1.6,.8,.06,7230267),this.boxMesh(n+.05,i+.05,.66,1.5,.7,.01,3115594,{shadow:!1}),this.boxMesh(n,i,.66,1.6,.05,.18,7230267),this.boxMesh(n,i+.75,.66,1.6,.05,.18,7230267),this.rods=[];for(let s=0;s<6;s++){let a=new At,o=new Ce(new en(.012,.012,1.2,6),new Ue({color:13159632,metalness:.7,roughness:.3}));o.rotation.x=Math.PI/2,a.add(o);for(let c=0;c<2;c++){let l=new Ce(new mn(.04,.12,.05),new Ue({color:s%2?12597547:3108784}));l.position.set(0,-.03,-.15+c*.3),l.castShadow=!0,a.add(l)}a.position.set(n+.2+s*.24,.8,i+.4),this.room.add(a),this.rods.push(a)}break}case"booth":{let{x:n,y:i}=e,s=new Ue({color:t?3951194:10466248,roughness:1});this.boxMesh(n,i-.05,0,1.3,.05,2,0,{mat:s}),this.boxMesh(n-.05,i,0,.05,1.3,2,0,{mat:s}),this.boxMesh(n+1.25,i,0,.05,1.3,2,0,{mat:this.glassMat(),shadow:!1}),this.boxMesh(n,i+1.25,0,.85,.05,2,0,{mat:this.glassMat(),shadow:!1}),this.boxMesh(n-.05,i-.05,2,1.4,1.4,.06,t?4872296:11912403),this.place("stoolBar",n+.45,i+.4,.4,.4,{h:.5});let a=new En(16767392,.6,2.5);a.position.set(n+.65,1.85,i+.65),this.room.add(a);break}case"glass":e.w===0?this.boxMesh(e.x-.03,e.y,0,.06,e.d,2.1,0,{mat:this.glassMat(),shadow:!1}):this.boxMesh(e.x,e.y-.03,0,e.w,.06,2.1,0,{mat:this.glassMat(),shadow:!1}),e.w===0?this.boxMesh(e.x-.04,e.y,0,.08,e.d,.12,t?2828582:13616563):this.boxMesh(e.x,e.y-.04,0,e.w,.08,.12,t?2828582:13616563);break;case"meetingTable":this.place("table",e.x,e.y,e.w,e.d,{h:.75}),this.place("laptop",e.x+1.2,e.y+.45,.45,.35,{y0:.75});break;case"chair":this.place("chairModernCushion",e.x-.28,e.y-.28,.56,.56,{h:.85,rot:e.face==="front"?0:Math.PI});break;case"counter":{let n=Math.max(1,Math.round(e.w/.7)),i=e.w/n;for(let s=0;s<n;s++){let a=e.x+s*i,o=Math.abs(a+i/2-(e.x+3.15))<i/2;this.place(o?"kitchenSink":"kitchenCabinet",a,e.y,i,e.d,{h:.9,stretch:!0})}this.place("kitchenMicrowave",e.x+e.w-.75,e.y+.1,.55,.4,{y0:.9,h:.32}),this.place("toaster",e.x+.2,e.y+.2,.3,.2,{y0:.9,h:.18});break}case"coffee":this.place("kitchenCoffeeMachine",e.x,e.y,.45,.4,{y0:.9,h:.5});break;case"fridge":this.place("kitchenFridgeLarge",e.x,e.y,.85,.75,{h:1.95,stretch:!0});break;case"cooler":{this.boxMesh(e.x,e.y,0,.42,.42,.95,15265007,{rough:.4});let n=new Ce(new en(.15,.15,.42,16),new Ut({color:9356786,transparent:!0,opacity:.65,roughness:.1}));n.position.set(e.x+.21,.95+.21,e.y+.21),this.room.add(n);break}case"sink":break;case"roundTable":this.place("tableRound",e.x-.45,e.y-.45,.9,.9,{h:.75});break;case"barStool":this.place("stoolBar",e.x-.2,e.y-.2,.4,.4,{h:.5});break;case"shelf":{let n=Math.max(1,Math.round(e.w/.9)),i=e.w/n;for(let s=0;s<n;s++){let a=this.place("bookcaseOpen",e.x+s*i,e.y,i,e.d,{h:1.45,stretch:!0});if(!a)continue;a.updateMatrixWorld(!0);let o=new Ds;for(let c=0;c<2;c++){let l=e.x+s*i+.2+c*(i-.4)*.6;o.set(new C(l+.1,1.6,e.y+e.d/2),new C(0,-1,0));for(let h of o.intersectObject(a,!0))h.face&&h.face.normal.y>.5&&h.point.y<1.4&&this.place("books",l,e.y+.06,.25,e.d-.12,{y0:h.point.y,h:.14+(s+c)%3*.03})}}break}case"couch":this.place("loungeSofa",e.x-.1,e.y-.15,e.w+.2,e.d+.2,{h:.8,stretch:!0});break;case"coffeeTable":this.place("tableCoffee",e.x,e.y,e.w,e.d,{h:.35}),this.place("radio",e.x+1,e.y+.2,.3,.18,{y0:.35,h:.18});break;case"beanbag":{let n=new Ce(new Mi(.42,20,14),new Ue({color:e.color,roughness:.95}));n.scale.set(1,.5,1),n.position.set(e.x,.2,e.y),n.castShadow=n.receiveShadow=!0,this.room.add(n);break}case"arcade":{let{x:n,y:i}=e;this.boxMesh(n,i,0,.7,.7,1.75,3811946,{rough:.6}),this.arcadeScreen=this.boxMesh(n+.1,i+.7,1,.5,.01,.45,0,{emissive:16729258,ei:1,shadow:!1}),this.boxMesh(n,i+.7,1.55,.7,.02,.17,16764746,{emissive:16764746,ei:.6,shadow:!1}),this.boxMesh(n,i+.7,.8,.7,.2,.08,4864650);break}case"lamp":this.place("lampRoundFloor",e.x-.25,e.y-.25,.5,.5,{h:1.7}),this.lampLight=new En(16767392,0,4),this.lampLight.position.set(e.x,1.6,e.y),this.room.add(this.lampLight);break;case"rug":this.place("rugRectangle",e.x,e.y,e.w,e.d,{y0:.004});break}}buildScene(){let e=this.plan.scene;if(this.room&&this.scene.remove(this.room),this.room=new At,this.scene.add(this.room),this.screens.clear(),this.sceneScreens=[],this.blinkers=[],this.bobbers=[],this.flames=[],this.pendants=[],this.pulsers=[],this.windowMat=null,this.clearMat=null,this.stars=null,this.planet=null,this.scene.background=e.background===null?null:new we(e.background||e.sky||"#9fd3ef"),e.fog&&(this.scene.fog=new cr(e.fog[0],e.fog[1],e.fog[2])),e.water){let t=new Kt(160,160,80,80);if(t.rotateX(-Math.PI/2),this.water=new Ce(t,new Ue({color:e.water.color,roughness:.35,metalness:.05,flatShading:!0})),this.water.position.set(e.W/2,-.08,e.D/2),this.water.receiveShadow=!0,this.waterBase=t.attributes.position.array.slice(),this.room.add(this.water),e.water.island){let[n,i,s,a]=e.water.island,o=new Ce(new Gi(1,48),new Ue({color:e.water.shallow,transparent:!0,opacity:.7,roughness:.5}));o.rotation.x=-Math.PI/2,o.scale.set(s,a,1),o.position.set(n,-.035,i),this.room.add(o)}}for(let t of e.props)this.buildSceneProp(t);this.fitCamera3D(!0)}surfaceAt(e,t){return this.room.updateMatrixWorld(!0),this.surfaceBelow(e,t,.6,2)}buildSceneProp(e){let t=["sandbase","floor","wall","sign","pendant","stars","planet","lamp"],n=e.m&&e.m.startsWith("patch-")||t.includes(e.special)||e.abs?0:this.surfaceAt(e.x+(e.w||0)/2,e.y+(e.d||0)/2);if(e.special==="fire")return this.buildFire(e.x,e.y,n+(e.y0||0),e);if(e.special==="target")return this.buildTarget(e,n);if(e.special==="well")return this.buildWell(e,n);if(e.special==="map")return this.buildMap({...e,y0:n+(e.y0??.78)});if(e.special==="dock")return this.buildDock(e);if(e.special==="floor")return this.buildFloor(e);if(e.special==="stars")return this.buildStars(e);if(e.special==="lamp"){let a=new En(e.color||"#ffffff",e.intensity??1,e.range||6);a.position.set(e.x,e.z||2.3,e.y),this.room.add(a);return}if(e.special==="planet")return this.buildPlanet(e);if(e.special==="glow"){let a=this.boxMesh(e.x,e.y,n+(e.y0||0),e.w,e.d,e.h||.03,0,{mat:new Ue({color:e.color||"#5ad1ff",emissive:e.color||"#5ad1ff",emissiveIntensity:e.intensity??1.2}),shadow:!1});return e.pulse&&(this.pulsers=this.pulsers||[]).push({m:a,base:e.intensity??1.2,ph:e.x+e.y}),a}if(e.special==="wall")return this.buildWall(e);if(e.special==="sign")return this.buildSign(e);if(e.special==="pendant")return this.buildPendant(e);if(e.special==="box")return this.boxMesh(e.x,e.y,n+(e.y0||0),e.w,e.d,e.h,new we(e.color||"#888").getHex(),{rough:e.rough??.8,metal:e.metal||0});if(e.special==="glass")return this.boxMesh(e.x,e.y,n+(e.y0||0),e.w,e.d,e.h,0,{mat:this.glassMat(),shadow:!1});if(e.special==="sandbase"){let a=new Ce(new en(1,1,.5,40),new Ue({color:e.color||"#d9a46c",roughness:1}));a.scale.set(e.rx,1,e.rz),a.position.set(e.x,(e.top??.27)-.25,e.y),a.receiveShadow=!0,this.room.add(a);return}let i=e.m?`scene:${e.m}`:e.f,s=this.place(i,e.x,e.y,e.w,e.d,{rot:(e.rot||0)*Math.PI/180,y0:n+(e.y0||0),h:e.h||null,stretch:!!e.stretch});s&&(e.f==="computerScreen"||e.f==="laptop")&&this.decorateScreen(s,e),s&&e.bob&&this.bobbers.push({m:s,y:s.position.y,ph:e.x*.7})}buildFire(e,t,n=.25,i={}){let s=new At,a=new Ue({color:7029798,roughness:1});for(let d=0;d<3;d++){let u=new Ce(new en(.06,.07,.75,8),a);u.rotation.z=Math.PI/2,u.rotation.y=d*Math.PI/3,u.position.y=.32,u.castShadow=!0,s.add(u)}let o=new Ue({color:9079434,roughness:1,flatShading:!0});for(let d=0;d<(i.stones===!1?0:9);d++){let u=d/9*Math.PI*2,f=new Ce(new _r(.09),o);f.position.set(Math.cos(u)*.45,.3,Math.sin(u)*.45),f.castShadow=!0,s.add(f)}let c=new Ce(new vi(.2,.55,7),new Gt({color:16742938,transparent:!0,opacity:.9})),l=new Ce(new vi(.11,.38,7),new Gt({color:16769126}));c.position.y=.6,l.position.y=.55;let h=new En(16752704,1.4,6);h.position.y=.9,s.add(c,l,h),s.position.set(e,n-.25,t),i.scale&&s.scale.setScalar(i.scale),this.room.add(s),this.flames.push({outer:c,inner:l,light:h})}buildFloor(e){let t=this.pal.dark,n=e.color||(t?"#4a3f35":"#e3cfb0"),i=e.color2||(t?"#3e342b":"#d6bf9c"),s=this.patternTexture((o,c)=>{if(o.fillStyle=n,o.fillRect(0,0,c,c),e.pattern==="checker")o.fillStyle=i,o.fillRect(0,0,c/2,c/2),o.fillRect(c/2,c/2,c/2,c/2);else{o.strokeStyle=i,o.lineWidth=3;for(let l=0;l<=4;l++)o.beginPath(),o.moveTo(0,l*c/4),o.lineTo(c,l*c/4),o.stroke();for(let l=0;l<4;l++){let h=(l*37%4+.5)*(c/4);o.beginPath(),o.moveTo(h,l*c/4),o.lineTo(h,(l+1)*c/4),o.stroke()}}});s.repeat.set(e.w/(e.tile||2),e.d/(e.tile||2));let a=new Ce(new Kt(e.w,e.d),new Ue({map:s,roughness:.9}));a.rotation.x=-Math.PI/2,a.position.set(e.x+e.w/2,e.y0||.002,e.y+e.d/2),a.receiveShadow=!0,this.room.add(a)}buildWall(e){let t=e.h||2.4,n=e.t||.12,i=new Ue({color:e.color||(this.pal.dark?"#4a4640":"#f1ebe0"),roughness:.95});e.clear?this.clearMat=this.clearMat||new Ut({color:"#9fd8ff",transparent:!0,opacity:.12,roughness:.05,depthWrite:!1}):this.windowMat||(this.windowMat=new Ue({color:this.plan.scene.sky||"#a9d4f2",emissive:this.plan.scene.sky||"#a9d4f2",emissiveIntensity:.6}));let s=e.clear?this.clearMat:this.windowMat,a=(l,h,d,u)=>{h<=.001||u-d<=.001||(e.axis==="z"?this.boxMesh(e.x-n,e.y+l,d,n,h,u-d,0,{mat:i}):this.boxMesh(e.x+l,e.y-n,d,h,n,u-d,0,{mat:i}))},o=(e.holes||[]).slice().sort((l,h)=>l[0]-h[0]),c=0;for(let[l,h,d,u]of o){if(a(c,l-c,0,t),a(l,h,0,d),a(l,h,u,t),d>.05){let f=new Ce(new Kt(h,u-d),s);e.axis==="z"?(f.rotation.y=Math.PI/2,f.position.set(e.x-n/2,(d+u)/2,e.y+l+h/2)):f.position.set(e.x+l+h/2,(d+u)/2,e.y-n/2),this.room.add(f);let m=new we(e.frame||"#2b2926").getHex();for(let y=1;y<Math.round(h/1.2);y++){let g=l+h*y/Math.round(h/1.2);e.axis==="z"?this.boxMesh(e.x-.04,e.y+g-.03,d,.04,.06,u-d,m):this.boxMesh(e.x+g-.03,e.y-.04,d,.06,.04,u-d,m)}e.axis==="z"?this.boxMesh(e.x-.02,e.y+l,d-.05,.14,h,.05,m):this.boxMesh(e.x+l,e.y-.02,d-.05,h,.14,.05,m)}else if(e.door){let f=new we(e.door).getHex();e.axis==="z"?this.boxMesh(e.x-.06,e.y+l+.05,0,.05,h-.1,u-.05,f):this.boxMesh(e.x+l+.05,e.y-.06,0,h-.1,.05,u-.05,f)}c=l+h}a(c,(e.len||0)-c,0,t)}buildSign(e){let t=document.createElement("canvas");t.width=512,t.height=Math.round(512*e.h/e.w);let n=t.getContext("2d");n.fillStyle=e.bg||"#2b2b2b",n.fillRect(0,0,t.width,t.height),e.border&&(n.strokeStyle=e.border,n.lineWidth=14,n.strokeRect(7,7,t.width-14,t.height-14)),n.fillStyle=e.fg||"#fff",n.textAlign="center",n.textBaseline="middle";let i=String(e.text||"").split(`
|
|
4221
4221
|
`),s=Math.min(t.height/(i.length+.6),t.width*1.6/Math.max(...i.map(h=>h.length),1)),a=h=>`700 ${Math.round(h)}px ${e.font||'ui-rounded, "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif'}`;for(let h=0;h<12&&(n.font=a(s),!(Math.max(...i.map(u=>n.measureText(u).width))<=t.width*.84));h++)s*=.9;i.forEach((h,d)=>n.fillText(h,t.width/2,t.height*(d+.8)/(i.length+.6)));let o=new Tn(t);o.colorSpace=ot;let c=new Ue({map:o,roughness:.9,emissive:e.glow?"#ffffff":"#000000",emissiveMap:e.glow?o:null,emissiveIntensity:e.glow?.9:0}),l=new Ce(new Kt(e.w,e.h),c);e.face==="+x"?(l.rotation.y=Math.PI/2,l.position.set(e.x+.01,e.z,e.y)):l.position.set(e.x,e.z,e.y+.01),this.room.add(l)}buildStars(e){let t=e.count||900,n=e.r||70,i=new Float32Array(t*3);for(let a=0;a<t;a++){let o=Math.random()*2-1,c=Math.random()*Math.PI*2,l=Math.sqrt(1-o*o);i[a*3]=this.plan.W/2+Math.cos(c)*l*n,i[a*3+1]=o*n*.6,i[a*3+2]=this.plan.D/2+Math.sin(c)*l*n}let s=new pt;s.setAttribute("position",new yt(i,3)),this.stars=new Hi(s,new _i({color:"#ffffff",size:e.size||.35,sizeAttenuation:!0,fog:!1})),this.room.add(this.stars)}buildPlanet(e){let t=document.createElement("canvas");t.width=256,t.height=128;let n=t.getContext("2d"),i=e.colors||["#e08a5a","#c76b45","#f0b27a","#a85a3c"];for(let o=0;o<128;o+=4)n.fillStyle=i[Math.floor((Math.sin(o*.21)+1)*1.99)%i.length],n.fillRect(0,o,256,4);let s=new Tn(t);s.colorSpace=ot;let a=new Ce(new Mi(e.r||6,40,24),new Ue({map:s,roughness:1,fog:!1}));if(a.position.set(e.x,e.z||0,e.y),a.rotation.z=.35,this.room.add(a),e.ring){let o=new Ce(new Mr((e.r||6)*1.3,(e.r||6)*1.75,64),new Gt({color:e.ring,transparent:!0,opacity:.4,side:Vt,fog:!1}));o.position.copy(a.position),o.rotation.x=-Math.PI/2+.45,o.rotation.y=.3,this.room.add(o)}this.planet=a}buildTarget(e,t){let n=new At,i=new Ue({color:8016434,roughness:1});for(let h of[-.28,.28]){let d=new Ce(new mn(.06,1.2,.06),i);d.position.set(-.12,.6,h),d.rotation.z=.18,d.castShadow=!0,n.add(d)}let s=document.createElement("canvas");s.width=s.height=128;let a=s.getContext("2d");["#f4efe2","#d23c2f","#f4efe2","#d23c2f","#f2c14e"].forEach((h,d)=>{a.fillStyle=h,a.beginPath(),a.arc(64,64,62-d*12,0,Math.PI*2),a.fill()});let o=new Tn(s);o.colorSpace=ot;let c=new Ce(new Gi(.38,32),new Ue({map:o,roughness:.9})),l=new Ce(new en(.4,.4,.08,32),new Ue({color:14205066,roughness:1}));l.rotation.z=Math.PI/2,l.position.set(0,.95,0),l.castShadow=!0,c.rotation.y=Math.PI/2,c.position.set(.045,.95,0),n.add(l,c),n.rotation.y=(e.yaw??-90)*Math.PI/180+Math.PI/2,n.position.set(e.x,t,e.y),this.room.add(n)}buildWell(e,t){let n=new At,i=new Ue({color:9276036,roughness:1,flatShading:!0}),s=new Ce(new en(.55,.6,.6,12,1,!0),i);s.material.side=Vt,s.position.y=.3,s.castShadow=!0;let a=new Ce(new Gi(.5,12),new Ue({color:3108762,roughness:.2}));a.rotation.x=-Math.PI/2,a.position.y=.35;let o=new Ue({color:7029798,roughness:1});for(let h of[-.5,.5]){let d=new Ce(new mn(.08,1.3,.08),o);d.position.set(h,.95,0),d.castShadow=!0,n.add(d)}let c=new Ce(new vi(.85,.45,4),new Ue({color:10238766,roughness:.9}));c.position.y=1.8,c.rotation.y=Math.PI/4,c.castShadow=!0;let l=new Ce(new en(.1,.08,.16,10),o);l.position.set(0,1.05,0),n.add(s,a,c,l),n.position.set(e.x,t,e.y),this.room.add(n)}buildPendant(e){let t=e.top||2.5,n=e.drop||.8,i=new Ce(new en(.008,.008,n,4),new Ue({color:2236962}));i.position.set(e.x,t-n/2,e.y);let s=new Ce(new vi(.2,.18,16,1,!0),new Ue({color:e.color||"#2f3b36",side:Vt,roughness:.6}));s.position.set(e.x,t-n,e.y);let a=new Ce(new Mi(.05,10,8),new Gt({color:"#ffe7b0"}));a.position.set(e.x,t-n-.07,e.y);let o=new En(16767392,.7,3.5);o.position.set(e.x,t-n-.15,e.y),this.room.add(i,s,a,o),this.pendants.push(o)}buildDock(e){let t=e.top??.32,n=[10251068,11040586,9396790];for(let i=e.y,s=0;i<e.y+e.d-.05;i+=.3,s++)this.boxMesh(e.x,i,t-.07,e.w,.26,.07,n[s%3],{rough:.95});for(let i of[e.x-.02,e.x+e.w-.1])this.boxMesh(i,e.y,t-.16,.12,e.d,.1,7029798);for(let i=e.y+.1;i<e.y+e.d;i+=1.6)for(let s of[e.x+.02,e.x+e.w-.14])this.boxMesh(s,i,-.9,.12,.12,t+.95,6044192);this.boxMesh(e.x+e.w-.2,e.y+.05,t-.1,.14,.14,.55,6044192)}buildMap(e){let t=document.createElement("canvas");t.width=256,t.height=160;let n=t.getContext("2d");n.fillStyle="#e9d5a6",n.fillRect(0,0,256,160),n.strokeStyle="#8a6a3a",n.lineWidth=3,n.beginPath(),n.moveTo(40,120),n.bezierCurveTo(30,60,90,20,140,40),n.bezierCurveTo(200,60,230,110,180,135),n.bezierCurveTo(130,150,60,150,40,120),n.stroke(),n.setLineDash([6,6]),n.strokeStyle="#6b4426",n.lineWidth=2,n.beginPath(),n.moveTo(70,110),n.quadraticCurveTo(110,60,165,95),n.stroke(),n.setLineDash([]),n.strokeStyle="#c0392b",n.lineWidth=5,n.beginPath(),n.moveTo(158,88),n.lineTo(174,104),n.moveTo(174,88),n.lineTo(158,104),n.stroke();let i=new Tn(t);i.colorSpace=ot;let s=new Ce(new Kt(e.w,e.d),new Ue({map:i,roughness:.95}));s.rotation.x=-Math.PI/2,s.position.set(e.x+e.w/2,(e.y0||.78)+.005,e.y+e.d/2),s.receiveShadow=!0,this.room.add(s)}animateScene(e,t){let n=this.plan.scene;if(this.water){let i=this.water.geometry.attributes.position,s=i.array,a=this.waterBase;for(let o=0;o<s.length;o+=3)s[o+1]=Math.sin(a[o]*.45+e*1.1)*.06+Math.cos(a[o+2]*.38+e*.8)*.05;i.needsUpdate=!0,(this.waterTick=(this.waterTick||0)+1)%3===0&&this.water.geometry.computeVertexNormals()}for(let i of this.bobbers)i.m.position.y=i.y+Math.sin(e*.9+i.ph)*.05,i.m.rotation.x=Math.sin(e*.7+i.ph)*.015;for(let i of this.flames){let s=.85+Math.sin(e*13)*.08+Math.sin(e*7.3)*.07;i.outer.scale.set(1,s,1),i.inner.scale.set(1,1.6-s*.6,1),i.light.intensity=(t.night?3:1.2)*s}this.scene.background&&!n.fixedSky&&this.scene.background.set(t.night?"#13213f":n.background||n.sky||"#9fd3ef"),this.planet&&(this.planet.rotation.y=e*.03),this.stars&&(this.stars.rotation.y=e*.004);for(let i of this.pulsers||[])i.m.material.emissiveIntensity=i.base*(.65+.35*Math.sin(e*2.2+i.ph));this.windowMat&&(this.windowMat.color.set(t.night?"#1d2747":n.sky),this.windowMat.emissive.set(t.night?"#1d2747":n.sky));for(let i of this.pendants||[])i.intensity=t.night?1.6:.7;this.scene.fog&&this.scene.fog.color.set(t.night?"#1b2a4a":n.fog[0])}fitCamera3D(e){let{W:t,D:n}=this.plan,i=new C(t/2,.6,n/2);(e||!this.fitted)&&(this.camera.position.set(i.x+40*.62,i.y+40*.58,i.z+40*.62),this.controls.target.copy(i),this.camera.zoom=this.compact?1:1.25,this.fitted=!0),this.camera.lookAt(this.controls.target),this.camera.updateMatrixWorld(!0);let s=this.camera.matrixWorldInverse,a=1/0,o=-1/0,c=1/0,l=-1/0;for(let T of[0,t])for(let x of[0,this.plan.viewH||$i])for(let w of[0,n]){let v=new C(T,x,w).applyMatrix4(s);a=Math.min(a,v.x),o=Math.max(o,v.x),c=Math.min(c,v.y),l=Math.max(l,v.y)}let h=Math.max(120,this.cw-this.inset()),d=h/this.ch,u=(o-a)*1.06,f=(l-c)*1.1;this.compact&&(f*=this.ch/Math.max(80,this.ch-48)),u/f>d?f=u/d:u=f*d;let m=(a+o)/2,y=(c+l)/2,g=u*(this.cw/h);Object.assign(this.camera,{left:m-u/2,right:m-u/2+g,top:y+f/2,bottom:y-f/2}),this.camera.updateProjectionMatrix(),this.sun.position.set(i.x-6,14,i.z-3),this.sun.target.position.copy(i);let p=this.sun.shadow.camera,M=Math.max(t,n)*.75;Object.assign(p,{left:-M,right:M,top:M,bottom:-M,near:1,far:50}),p.updateProjectionMatrix()}setInset(e,t=!0){super.setInset(e,t),this.insetSettling=!0,!t&&this.room&&this.fitCamera3D(!1)}resize(){super.resize(),this.gl&&(this.gl.setSize(this.cw,this.ch,!1),this.gl.domElement.style.width=this.cw+"px",this.gl.domElement.style.height=this.ch+"px",this.room&&this.fitCamera3D(!1))}actorFor(e){let t=this.actors.get(e.key);if(t)return t;let n=this.charModel(e.h??0);if(!n)return null;let i=rc(n.scene);i.traverse(y=>{y.isMesh&&(y.castShadow=!0,y.receiveShadow=!0)});let s=new Ot().setFromObject(i),a=Ph*(e.s&&e.s.subagent?.8:1)/(s.max.y-s.min.y);i.scale.setScalar(a);let o=new Pr(i),c={};for(let y of n.animations)c[y.name]=o.clipAction(y);let l=null,h=null,d=null;i.traverse(y=>{y.name==="head"&&(l=y),y.name==="arm-right"&&(h=y),y.name==="arm-left"&&(d=y)});let u=new At,f=new Ce(new en(.05,.04,.1,10),new Ue({color:16777215})),m=new Ce(new mn(.22,.28,.04),new Ue({color:13198402}));return u.add(f,m),this.scene.add(i,u),t={obj:i,mixer:o,actions:c,current:null,head:l,headRest:l?l.rotation.x:0,armR:h,armL:d,armRRest:h?h.rotation.clone():null,armLRest:d?d.rotation.clone():null,prop:u,cup:f,book:m,yaw:0,last:{x:e.x,y:e.y}},this.actors.set(e.key,t),t}play(e,t){if(e.current===t)return;let n=e.actions[t]||e.actions.idle;n&&(n.reset().setEffectiveWeight(1).fadeIn(.25).play(),e.current&&e.actions[e.current]&&e.actions[e.current].fadeOut(.25),e.current=t)}facing(e,t){if(t.pose==="walk")return null;if(e.mode==="work"&&e.desk)return e.desk.yaw!=null?e.desk.yaw:e.desk.side==="n"?0:Math.PI;let n=e.poi;if(!n)return null;if(n.yaw!=null)return n.yaw;if(n.pair){let i=this.plan.pois.find(s=>s.pair===n.pair&&s!==n);return Math.atan2(i.x-n.x,0)}return n.act==="vending"||n.act==="plant"?-Math.PI/2:t.face==="back"?Math.PI:0}syncActors(e){for(let[t,n]of this.actors)this.people.has(t)||(this.scene.remove(n.obj,n.prop),this.actors.delete(t));for(let t of this.people.values()){let n=this.actorFor(t);if(!n)continue;let i=this.stateOf(t);t.pose=i.pose;let a={walk:"walk",wave:"emote-yes",coffee:"holding-right",water:"holding-right",read:"holding-both",phone:"holding-right",arcade:"interact-right",whiteboard:"interact-right",foosball:"interact-left",pingpong:"interact-right",vending:"interact-right",fridge:"interact-left",sink:"interact-right"}[i.pose==="walk"?"walk":i.act]||(i.pose==="sit"?"sit":"idle");i.act==="station"?a=t.s.status==="thinking"?"idle":t.desk.anim||"interact-right":i.pose!=="walk"&&t.poi&&t.poi.anim&&(a=t.poi.anim),this.play(n,a),n.mixer.update(e);let o=t.x-n.last.x,c=t.y-n.last.y,l=i.pose!=="walk"&&t.poi&&t.poi.float?null:this.facing(t,i);if(l==null&&Math.hypot(o,c)>.001&&(l=Math.atan2(o,c)),l!=null){let f=l-n.yaw;f=Math.atan2(Math.sin(f),Math.cos(f)),n.yaw+=f*Math.min(1,e*10)}n.last={x:t.x,y:t.y},n.obj.rotation.y=n.yaw;let h=i.pose==="sit"?this.seatHeight(t.x,t.y,i.sitZ):this.plan.terrain?this.groundHeight(t.x,t.y):0,d=i.pose==="sit"?Kx:0,u=0;if(i.pose!=="walk"&&t.poi&&t.poi.float){let f=this.t/1e3+t.phase;u=.45+Math.sin(f*.9)*.18,n.yaw+=e*.35}if(n.obj.position.set(t.x+Math.sin(n.yaw)*d,h+u,t.y+Math.cos(n.yaw)*d),n.head&&(i.act==="nap"?(n.head.rotation.x=n.headRest+.55,n.napped=!0):n.napped&&(n.head.rotation.x=n.headRest,n.napped=!1)),n.cup.visible=i.act==="coffee"||i.act==="water"||i.pose!=="walk"&&t.poi&&t.poi.prop==="cup",n.book.visible=i.act==="read",n.armR&&(n.cup.visible||n.book.visible)){n.obj.updateMatrixWorld(!0);let f=new C(0,-.4,.15);n.armR.localToWorld(f),n.prop.position.copy(f),n.prop.rotation.y=n.yaw,n.cup.material.color.set(i.act==="water"?10474495:16777215)}}}surfaceBelow(e,t,n,i=1.2){if(!this.room)return 0;let s=new Ds,a=new C(0,-1,0),o=0;for(let[c,l]of[[0,0],[.09,0],[-.09,0],[0,.09],[0,-.09]]){s.set(new C(e+c,i,t+l),a);for(let h of s.intersectObject(this.room,!0))h.point.y<n&&h.point.y>o&&(o=h.point.y)}return o}groundHeight(e,t){let n=`${Math.round(e*4)},${Math.round(t*4)}`;if(this.ground=this.ground||new Map,this.ground.has(n))return this.ground.get(n);let i=this.surfaceBelow(e,t,.55);return this.ground.set(n,i),i}seatHeight(e,t,n){let i=`${e.toFixed(2)},${t.toFixed(2)}`;if(this.seats=this.seats||new Map,this.seats.has(i))return this.seats.get(i);let s=this.surfaceBelow(e,t,.75),a=s>.05?s:n;return this.seats.set(i,a),a}draw(){let e=this.ctx;if(e.setTransform(this.dpr,0,0,this.dpr,0,0),e.clearRect(0,0,this.cw,this.ch),!this.loaded)return e.fillStyle=this.pal.text,e.globalAlpha=.7,e.font="600 14px ui-sans-serif, system-ui, sans-serif",e.textAlign="center",e.fillText(this.loadError?`3D failed: ${this.loadError}`:"",this.cw/2,this.ch/2),e.globalAlpha=1,!1;if(!(this.room!==void 0&&this.builtPlan===this.plan)){this.build(),this.builtPlan=this.plan,this.room.updateMatrixWorld(!0),this.seats=new Map,this.ground=new Map;for(let h of this.actors.values())this.scene.remove(h.obj,h.prop);this.actors.clear()}let t=Math.min(.05,this.clock.getDelta()),n=this.t/1e3,i=of();this.sun.intensity=i.sun,this.hemi.intensity=i.amb,this.windowMat&&(this.windowMat.color.setHex(i.sky),this.windowMat.emissive.setHex(i.sky)),this.plan.scene&&this.animateScene(n,i),this.lampLight&&(this.lampLight.intensity=i.night?2.2:0);let s=new Map;for(let h of this.people.values())h.mode==="work"&&h.desk&&!h.path.length&&s.set(h.desk,h);let a=this.screenList||[...this.screens].map(([h,d])=>({desk:h,mesh:d}));for(let{desk:h,mesh:d}of a){let u=s.get(h);if(d.material?.emissiveMap){let m=performance.now(),y=m<(d.userData.flashUntil||0);d.material.emissive.setHex(16777215),d.material.emissiveIntensity=y?1.55+.25*Math.sin(m/90):.58+.14*Math.sin(m/650);continue}let f=u?jx[u.s.status]:null;if(f){let m=u.s.status==="thinking"?.5+.35*Math.sin(n*3+u.phase):.8+.2*Math.sin(n*9+u.phase);d.material.emissive.setHex(f),d.material.emissiveIntensity=m}else d.material.emissive.setHex(0)}for(let h of this.blinkers){let d=Math.sin(this.t/(180+h.r*37+h.k*53)+h.r*h.k)>.2&&h.r*4+h.k<Math.max(4,this.deskOf.size*3);h.m.material.emissiveIntensity=d?1.2:.05}this.arcadeScreen&&this.arcadeScreen.material.emissive.setHSL(n*.05%1,.7,.5);let o=this.plan.pois.filter(h=>h.pair==="fb"&&h.taken).length===2;this.rods&&this.rods.forEach((h,d)=>{h.position.z=this.plan.props.find(u=>u.t==="foosball").y+.4+(o?Math.sin(n*8+d)*.06:0),h.rotation.z=o?Math.sin(n*12+d)*.6:0}),this.updateBall(),this.syncActors(t),(this.insetMoving()||this.insetSettling)&&(this.fitCamera3D(!1),this.insetSettling=this.insetMoving()),this.controls.update(),this.gl.render(this.scene,this.camera),this.hit=[];let c=[],l=new C;for(let h of this.people.values()){if(!this.actors.get(h.key))continue;let u=this.stateOf(h),f=h.s.subagent?.8:1,m=this.plan.terrain&&u.pose!=="sit"?this.groundHeight(h.x,h.y):0,y=u.pose!=="walk"&&h.poi&&h.poi.float?.45+Math.sin((this.t/1e3+h.phase)*.9)*.18:0,g=(u.pose==="sit"?this.seatHeight(h.x,h.y,u.sitZ)+Ph*.8*f:m+Ph*f)+y;l.set(h.x,g+.05,h.y).project(this.camera);let p=(l.x+1)/2*this.cw,M=(1-l.y)/2*this.ch,x=(1-new C(h.x,0,h.y).project(this.camera).y)/2*this.ch;c.push([h,{x:p,y:M,act:u.act},l.z]),this.hit.push({key:h.key,x0:p-18,x1:p+18,y0:M-24,y1:x+4})}c.sort((h,d)=>d[2]-h[2]);for(let[h,d]of c)this.bubble(h,d);this.offDuty>0&&(e.font='600 11px ui-sans-serif, system-ui, -apple-system, "PingFang TC", sans-serif',e.textAlign="left",e.fillStyle=this.pal.text,e.globalAlpha=.65,e.fillText(`+${this.offDuty} ${this.offDutyLabel}`,12,this.ch-12),e.globalAlpha=1)}updateBall(){if(!this.ball)return;let e=this.plan.pois.filter(s=>s.pair==="pp"&&s.taken).map(s=>this.people.get(s.taken)).filter(s=>s&&s.poi&&s.poi.pair==="pp"&&!s.path.length);if(this.ball.visible=e.length===2,!this.ball.visible)return;let t=this.plan.pp,n=this.t/900%2,i=n<1?n:2-n;this.ball.position.set(t.x0+.3+i*(t.x1-t.x0-.6),.8+Math.abs(Math.sin(i*Math.PI*2))*.4,t.y)}pointer(e,t){e.buttons&&!t||super.pointer(e,t)}};function Jx(r){let e=Math.max(6,Math.ceil(Math.max(0,r-1)/2)*2),t=e/2,n=13,i=Math.max(11.5,t*2.8+3),s=[{x:10.1,y:3.6,pose:"stand",yaw:180}],a=[{special:"floor",x:0,y:0,w:n,d:i,color:"#e9ddc5",color2:"#dbccb2",tile:2.6},{special:"floor",x:8,y:.2,w:4.8,d:6.8,color:"#d6e2d4",color2:"#d6e2d4",y0:.008},{special:"wall",axis:"x",x:0,y:0,len:n,color:"#f2f0e4",holes:[[1.1,3.6,.8,2.2],[6.1,2.2,.8,2.2]]},{special:"wall",axis:"z",x:0,y:0,len:i,color:"#f2f0e4",holes:[[i-2.2,1.1,0,2.1]]},{special:"sign",x:10,y:.08,z:1.65,w:2.4,h:.6,text:"COORDINATION",fg:"#386c53",bg:"#e8eddf"},{f:"table",x:8.65,y:2.05,w:3,d:1.2,h:.78,stretch:!0},{f:"laptop",x:9.6,y:2.3,w:.6,d:.5,y0:.78,abs:!0,rot:180},{f:"pottedPlant",x:12,y:.6,w:.6,d:.6,h:1.3},{f:"bookcaseOpen",x:8.9,y:.1,w:2,d:.45,h:1.1},{f:"loungeSofa",x:9.4,y:i-2.5,w:2.8,d:1.1},{f:"tableCoffee",x:10,y:i-1.4,w:1.5,d:.7},{f:"plantSmall1",x:10.6,y:i-1.1,w:.2,d:.2,y0:.5,abs:!0},{f:"kitchenCoffeeMachine",x:8.7,y:7.5,w:.65,d:.55,y0:.85,abs:!0},{f:"kitchenCabinet",x:8.45,y:7.3,w:1.2,d:.8,h:.85},{f:"pottedPlant",x:.45,y:i-.9,w:.6,d:.6,h:1.1}],o=[[8.65,2.05,3,1.2]];for(let c=0;c<e;c++){let l=1.9+c%2*3.25,h=3.3+Math.floor(c/2)*2.8;s.push({x:l,y:h,pose:"sit",yaw:180}),a.push({f:"desk",x:l-.85,y:h-1.2,w:1.7,d:.8,h:.78,stretch:!0},{f:"chairDesk",x:l-.32,y:h-.28,w:.64,d:.64,h:.75,rot:180},{f:"computerScreen",x:l-.35,y:h-1,w:.7,d:.25,h:.5,abs:!0,y0:.78,rot:180},{f:"computerKeyboard",x:l-.25,y:h-.6,w:.5,d:.2,abs:!0,y0:.79},{f:"plantSmall2",x:l+.5,y:h-1,w:.2,d:.2,abs:!0,y0:.79}),o.push([l-.85,h-1.2,1.7,.8])}return{W:n,D:i,background:"#edf1e7",sky:"#d2e7e3",spawn:{x:.6,y:i-1.5},walk:[[0,0,n,i]],solid:o,stations:s,pois:[],props:a}}var cf=class extends uc{constructor(e,{count:t,onSelect:n,reduced:i=!1,live:s=!1,scene:a=Jx(t)}){super(e,{scene:a,showAgent:!1,label:o=>o.name,onHover:(o,c,l)=>{l&&o&&n(o.id)}}),this.reduced=i,this.live=s,this.flows=[],this.seatFor=new Map,this.selectedId=null,this.rootId=null,this.controls&&(this.controls.enableDamping=!i),this.pal.dark=!1,this.pal.text="#3e6150",this.pal.tagBg="rgba(255,255,248,.94)"}setTeam(e,t){this.rootId!==t&&(this.people.clear(),this.seatFor.clear(),this.flows=[],this.rootId=t,this.first=!0);let n=[...e].sort((s,a)=>s.id===t?-1:a.id===t?1:Number.isInteger(s.slot)&&Number.isInteger(a.slot)?s.slot-a.slot:(s.startedAt||0)-(a.startedAt||0));for(let s of n)Number.isInteger(s.slot)&&s.slot>=0&&this.seatFor.set(s.id,s.slot);for(let s of n){if(!this.seatFor.has(s.id)){let c=0,l=new Set(this.seatFor.values());for(;l.has(c);)c++;this.seatFor.set(s.id,c)}let a=this.plan.desks[this.seatFor.get(s.id)];if(!a)continue;let o=this.people.get(s.id);o||(o=this.newPerson({...s,key:s.id}),o.x=a.seat.x,o.y=a.seat.y,o.placeOnArrive=!1,this.people.set(s.id,o)),o.desk&&o.desk!==a&&o.mode!=="report"&&(o.x=a.seat.x,o.y=a.seat.y,o.path=[]),o.s=s,o.desk=a,!o.reportUntil&&o.mode!=="report"&&(o.mode="work")}let i=new Set(e.map(s=>s.id));for(let s of this.people.keys())i.has(s)||this.people.delete(s);this.first=!1}play(e,t){t==="sit"&&e.actions?.["wheelchair-sit"]&&(t="wheelchair-sit"),super.play(e,t)}setReduced(e){if(this.reduced=e,this.controls&&(this.controls.enableDamping=!e),e){this.flows=[];for(let t of this.people.values())t.path=[],t.reportUntil=null,t.mode="work",t.x=t.desk.seat.x,t.y=t.desk.seat.y}}focus(e){this.selectedId=e;let t=this.people.get(e);if(!t||!this.loaded)return;let n=new C(t.x,.7,t.y),i=n.clone().sub(this.controls.target);this.camera.position.add(i),this.controls.target.copy(n),this.camera.zoom=Math.max(this.camera.zoom,1.8),this.camera.updateProjectionMatrix()}resetCamera(){this.loaded&&(this.fitted=!1,this.fitCamera3D(!0))}animateEvent(e){if(this.reduced)return;let t=performance.now();if(e.type==="assign"||e.type==="message")this.flows.push({from:e.sessionId,to:e.targetId,start:t});else if(e.type==="report"&&e.sessionId!==this.rootId){let n=this.people.get(e.sessionId),i=this.people.get(n?.s.parentId);if(!n||!i)return;n.mode="report",n.reportUntil=null,n.reportStart=t,this.goTo(n,{x:i.desk.seat.x-.8,y:i.desk.seat.y+1.3}),this.flows.push({from:e.sessionId,to:i.key,start:t})}this.flows=this.flows.slice(-12)}step(e){if(!this.people)return;this.reduced||super.step(e);let t=performance.now();for(let n of this.people.values())n.mode==="report"&&!n.path.length&&(n.reportUntil||(n.reportUntil=t+1700),t>n.reportUntil&&(n.mode="work",n.reportUntil=null,this.goTo(n,n.desk.seat)))}stateOf(e){return e.mode==="report"&&!e.path.length?{pose:"stand",face:"back",act:"wave",sitZ:0}:["done","closed","interrupted","unknown"].includes(e.s.status)&&!e.path.length?{pose:e.desk.pose==="stand"?"stand":"sit",face:"back",act:null,sitZ:.34}:super.stateOf(e)}syncActors(e){if(super.syncActors(this.reduced?0:e),!this.loaded)return;let t=performance.now()/1e3,n=new C,i=new C,s=new C,a=new xt,o=new xt,c=new xt;for(let l of this.people.values()){let h=this.actors.get(l.key);if(!h||this.stateOf(l).pose!=="sit"||l.path.length||l.poi||!l.desk)continue;let u=l.s.status==="tool"||l.s.status==="typing",f=l.s.status==="thinking",m=l.phase||0,y=h.obj.getObjectByName("leg-left"),g=h.obj.getObjectByName("leg-right");y&&(y.rotation.x=-.82,y.rotation.y=.07),g&&(g.rotation.x=-.82,g.rotation.y=-.07);let p=new C(l.x-.3,.92,l.y-.62),M=new C(l.x+.4,.9,l.y-.58);if(u){let x=Math.sin(t*9+m)*.018;p.y+=x,M.y-=x}let T=(x,w)=>{x&&(x.updateWorldMatrix(!0,!1),x.getWorldPosition(n),x.getWorldQuaternion(a),i.set(0,0,1).applyQuaternion(a).normalize(),s.copy(w).sub(n).normalize(),o.setFromUnitVectors(i,s),x.parent.getWorldQuaternion(c),x.quaternion.copy(c.invert().multiply(o.multiply(a))))};T(h.armR,M),T(h.armL,p),h.head&&h.headRest!=null&&(h.head.rotation.x=h.headRest+(u||f?.22:.12))}}bubble(e,t){let n=this.ctx,i={error:"#b65850",waiting:"#b4893e",waiting_agents:"#b4893e",done:"#5a8966",interrupted:"#8c9487",closed:"#8c9487",unknown:"#8c9487"}[e.s.status]||"#3d8b70",s=e.s.name||"Agent";n.save(),n.font='500 11px "Microsoft YaHei UI", sans-serif';let a=Math.min(160,n.measureText(s).width+25),o=t.y-14;this.roundRect(t.x-a/2,o-11,a,23,6,"rgba(255,255,248,.94)",e.key===this.selectedId?"#5d9476":"rgba(154,177,147,.4)"),n.fillStyle=i,n.beginPath(),n.arc(t.x-a/2+9,o+.5,2.5,0,Math.PI*2),n.fill(),n.fillStyle="#45624c",n.textAlign="center",n.textBaseline="middle",n.fillText(s,t.x+4,o+1,a-18),n.restore()}draw(){let e=super.draw();if(!this.loaded||!this.flows)return e;let t=this.ctx,n=performance.now(),i=s=>{let a=new C(s.x,1.1,s.y).project(this.camera);return{x:(a.x+1)/2*this.cw,y:(1-a.y)/2*this.ch}};this.flows=this.flows.filter(s=>n-s.start<2600);for(let s of this.flows){let a=this.people.get(s.from),o=this.people.get(s.to);if(!a||!o)continue;let c=i(a),l=i(o),h=Math.min(1,(n-s.start)/2200),d=Math.min(c.y,l.y)-55;t.save(),t.strokeStyle="rgba(54,132,99,.45)",t.lineWidth=1.5,t.setLineDash([4,5]),t.beginPath(),t.moveTo(c.x,c.y),t.quadraticCurveTo((c.x+l.x)/2,d,l.x,l.y),t.stroke();let u=(1-h)**2*c.x+2*(1-h)*h*((c.x+l.x)/2)+h**2*l.x,f=(1-h)**2*c.y+2*(1-h)*h*d+h**2*l.y;t.setLineDash([]),t.fillStyle="#3c8c69",t.beginPath(),t.arc(u,f,4,0,Math.PI*2),t.fill(),t.restore()}return e}destroy(){let e=new Set;this.scene?.traverse(t=>{t.geometry&&e.add(t.geometry);for(let n of Array.isArray(t.material)?t.material:t.material?[t.material]:[]){e.add(n);for(let i of Object.values(n))i?.isTexture&&e.add(i)}});for(let t of this.actors?.values()||[])t.mixer.stopAllAction();for(let t of e)t.dispose();super.destroy()}};var hf="dsh-office-lang",df=["zh","en"],pc={"meta.title":"Codex \xB7 \u534F\u4F5C\u529E\u516C\u5BA4","meta.demoTitle":"Codex Office \xB7 \u534F\u4F5C\u7A7A\u95F4 Demo","meta.harnessDemo":"DSH Office \xB7 \u534F\u4F5C\u6F14\u793A","meta.harnessLive":"DSH Office \xB7 \u5B9E\u65F6\u534F\u4F5C","meta.liveTitle":"Codex Office \xB7 \u5B9E\u65F6\u534F\u4F5C","brand.home":"Codex \u534F\u4F5C\u529E\u516C\u5BA4\u9996\u9875","brand.caption":"\u534F\u4F5C\u529E\u516C\u5BA4","common.agent":"Agent","common.unknown":"\u672A\u77E5","common.none":"\u2014","common.notRecorded":"\u672A\u8BB0\u5F55","common.timeNotRecorded":"\u65F6\u95F4\u672A\u8BB0\u5F55","common.unnamedSession":"\u672A\u547D\u540D\u4F1A\u8BDD","common.noDirectory":"\u672A\u8BB0\u5F55\u5DE5\u4F5C\u76EE\u5F55","common.copied":"\u5DF2\u590D\u5236","common.copyFailed":"\u590D\u5236\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u9009\u62E9\u6B63\u6587","common.copyFailedToast":"\u590D\u5236\u672A\u5B8C\u6210\uFF0C\u8BF7\u624B\u52A8\u9009\u62E9\u6B63\u6587\u3002","common.close":"\u5173\u95ED","common.listSeparator":"\uFF1B","status.thinking":"\u5904\u7406\u4E2D","status.tool":"\u6267\u884C\u5DE5\u5177","status.typing":"\u8F93\u51FA\u6D88\u606F","status.waiting":"\u7B49\u5F85\u7528\u6237","status.waiting_agents":"\u7B49\u5F85\u5B50 Agent","status.done":"\u5DF2\u5B8C\u6210","status.error":"\u6267\u884C\u51FA\u9519","status.interrupted":"\u5DF2\u4E2D\u65AD","status.closed":"\u5DF2\u5173\u95ED","status.idle":"\u7A7A\u95F2","status.unknown":"\u7B49\u5F85\u65E5\u5FD7","status.running":"\u6267\u884C\u4E2D","status.pending":"\u5F85\u5206\u914D","status.coordinating":"\u534F\u8C03\u4E2D","event.task":"\u4EFB\u52A1\u8F93\u5165","event.assign":"\u5206\u914D\u4EFB\u52A1","event.message":"\u8FFD\u52A0\u6307\u4EE4","event.wait":"\u7B49\u5F85\u6C47\u62A5","event.report":"\u63D0\u4EA4\u6C47\u62A5","event.complete":"\u6267\u884C\u5B8C\u6210","event.progress":"\u8FDB\u5C55\u6D88\u606F","event.tool":"\u5DE5\u5177\u6D3B\u52A8","event.approval":"\u7B49\u5F85\u7528\u6237","event.error":"\u6267\u884C\u51FA\u9519","event.interrupted":"\u4EFB\u52A1\u4E2D\u65AD","event.close":"\u5173\u95ED Agent","event.closed":"\u5173\u95ED Agent","topbar.readonly":"\u53EA\u8BFB\u89C2\u5BDF","topbar.connecting":"\u6B63\u5728\u8FDE\u63A5","topbar.connected":"\u5B9E\u65F6\u540C\u6B65\u4E2D","topbar.reconnecting":"\u8FDE\u63A5\u4E2D\u65AD\uFF0C\u6B63\u5728\u91CD\u8FDE","sidebar.heading":"\u4EFB\u52A1\u4E0E\u56E2\u961F","sidebar.taskLabel":"\u5F53\u524D\u4E3B\u4EFB\u52A1","sidebar.taskSelectAria":"\u9009\u62E9\u4E3B\u4EFB\u52A1","sidebar.discovering":"\u6B63\u5728\u53D1\u73B0\u4F1A\u8BDD\u2026","sidebar.noSessions":"\u5C1A\u672A\u53D1\u73B0 Codex \u4F1A\u8BDD","sidebar.team":"\u534F\u4F5C\u56E2\u961F","sidebar.teamAria":"Agent \u56E2\u961F","sidebar.local":"\u672C\u673A\u8FD0\u884C \xB7 \u53EA\u8BFB\u8FDE\u63A5","sidebar.localNote":"\u4EFB\u52A1\u7EE7\u7EED\u5728 Codex \u4E2D\u6267\u884C","main.headline":"\u534F\u4F5C\uFF0C\u6B63\u5728\u53D1\u751F\u3002","main.subtitle":"\u4ECE\u4EFB\u52A1\u5206\u914D\uFF0C\u5230\u6BCF\u4E00\u4EFD\u6C47\u62A5\u3002","main.summaryAria":"\u56E2\u961F\u72B6\u6001","main.working":"\u6267\u884C\u4E2D","main.done":"\u5DF2\u5B8C\u6210","main.waiting":"\u5F85\u5904\u7406","main.officeAria":"\u4E09\u7EF4\u534F\u4F5C\u529E\u516C\u5BA4","main.sceneLabel":"\u56E2\u961F\u529E\u516C\u5BA4","main.reducedMotion":"\u51CF\u5C11\u52A8\u753B","main.resetCamera":"\u590D\u4F4D\u955C\u5934","main.scenePreparing":"\u6B63\u5728\u51C6\u5907\u529E\u516C\u5BA4\u2026","main.sceneHint":"\u62D6\u52A8\u65CB\u8F6C \xB7 \u6EDA\u8F6E\u7F29\u653E \xB7 \u70B9\u51FB\u4EBA\u7269\u67E5\u770B\u8BE6\u60C5","main.sceneUnavailable":"3D \u6682\u4E0D\u53EF\u7528\uFF0C\u4ECD\u53EF\u901A\u8FC7\u56E2\u961F\u5217\u8868\u67E5\u770B\u6D3B\u52A8\u548C\u6C47\u62A5\u3002","main.sceneFailed":"\u6D4F\u89C8\u5668\u672A\u80FD\u542F\u52A8 3D\uFF0C\u56E2\u961F\u5217\u8868\u4E0E\u62A5\u544A\u4ECD\u53EF\u4F7F\u7528\u3002","main.timelineAria":"\u534F\u4F5C\u65F6\u95F4\u7EBF","main.timelineHeading":"\u6BCF\u4E00\u6B21\u534F\u4F5C\uFF0C\u90FD\u6709\u8FF9\u53EF\u5FAA","main.waitingEvents":"\u7B49\u5F85\u4E8B\u4EF6","main.recentEvents":"\u6700\u8FD1 {count} \u6761\u534F\u4F5C\u8BB0\u5F55","main.noEvents":"\u7B49\u5F85\u534F\u4F5C\u4E8B\u4EF6","main.timelineEmpty":"\u4EFB\u52A1\u5206\u914D\u3001\u6267\u884C\u7ED3\u679C\u548C\u603B\u7ED3\uFF0C\u5C06\u6CBF\u7740\u8FD9\u6761\u65F6\u95F4\u7EBF\u7559\u4E0B\u8BB0\u5F55\u3002","main.footerSource":"\u72B6\u6001\u6765\u81EA\u5B9E\u9645\u65E5\u5FD7\uFF1B\u6D88\u606F\u5757\u5199\u5165\u540E\u540C\u6B65\u3002","main.footerCredit":"Three.js \xD7 Codex","details.aria":"Agent \u8BE6\u60C5","details.tabsAria":"Agent \u8BE6\u60C5\u89C6\u56FE","details.activity":"\u6267\u884C\u6D3B\u52A8","details.report":"\u6C47\u62A5\u5168\u6587","details.task":"\u4EFB\u52A1\u5185\u5BB9","details.openSource":"\u67E5\u770B\u539F\u6587 \u2197","details.recent":"\u6700\u8FD1\u6D3B\u52A8","details.footerLead":"\u4E3B Agent \u534F\u8C03\uFF0C\u5B50 Agent \u5404\u53F8\u5176\u804C\u3002","details.footerSub":"\u8FD9\u91CC\u5C55\u793A\u5B83\u4EEC\u5B9E\u9645\u7559\u4E0B\u7684\u8BB0\u5F55\u3002","details.selectAgent":"\u9009\u62E9 Agent\uFF0C\u67E5\u770B\u5B83\u7684\u5DE5\u4F5C\u3002","details.noTask":"\u6682\u65E0\u4EFB\u52A1\u8BB0\u5F55","details.noReport":"\u6682\u65E0\u6C47\u62A5","details.noActivity":"\u7B49\u5F85\u65B0\u7684\u6D3B\u52A8\u8BB0\u5F55","details.viewRecord":"\u67E5\u770B\u8BB0\u5F55 \u2197","dialog.title":"\u539F\u59CB\u8BB0\u5F55","dialog.from":"\u6765\u81EA Codex \u53EF\u89C1\u6D88\u606F","dialog.copy":"\u590D\u5236\u5168\u6587","dialog.loading":"\u6B63\u5728\u8BFB\u53D6\u539F\u59CB\u8BB0\u5F55\u2026","dialog.emptyBody":"\u65E5\u5FD7\u672A\u8BB0\u5F55\u6B63\u6587","app.agent":"Agent","app.unknownStatus":"\u672A\u77E5\u72B6\u6001","app.roleLead":"\u534F\u8C03\u4E0E\u6C47\u603B","app.roleSubAgent":"\u5B50 Agent","app.roleSplit":"\u72EC\u7ACB\u6267\u884C\u5206\u914D\u4EFB\u52A1","app.roleLeadTask":"\u4EFB\u52A1\u5206\u914D \xB7 \u534F\u8C03 \xB7 \u603B\u7ED3","app.metadataStatus":"\u5F53\u524D\u72B6\u6001","app.metadataElapsed":"\u672C\u8F6E\u8017\u65F6","app.metadataModel":"\u8FD0\u884C\u6A21\u578B","app.metadataRelation":"\u6240\u5C5E\u5173\u7CFB","app.relationConflict":"\u5173\u7CFB\u5F85\u786E\u8BA4","app.relationMain":"\u4E3B\u4EFB\u52A1","app.noTaskLogged":"\u65E5\u5FD7\u5C1A\u672A\u8BB0\u5F55\u4EFB\u52A1\u5185\u5BB9","app.teamEmpty":"\u5728 Codex \u4E2D\u5F00\u59CB\u4EFB\u52A1\u540E\uFF0C\u56E2\u961F\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","app.reportEmpty":`\u5C1A\u672A\u6536\u5230\u6C47\u62A5\u3002
|
|
4222
|
-
\u5B50 Agent \u7684\u6700\u7EC8\u56DE\u590D\u6216\u4E3B Agent \u7684\u603B\u7ED3\u5199\u5165\u540E\uFF0C\u4F1A\u5728\u8FD9\u91CC\u5B8C\u6574\u663E\u793A\u3002`,"app.reportLoading":"\u6B63\u5728\u8BFB\u53D6\u6C47\u62A5\u5168\u6587\u2026","app.reportCurrent":"\u672C\u8F6E \xB7 ","app.reportHistory":"\u5386\u53F2 \xB7 ","app.reportSub":"\u5B50 Agent \u6C47\u62A5","app.reportLead":"\u4E3B Agent \u603B\u7ED3","app.reportOpen":"\u5C55\u5F00\u9605\u8BFB / \u590D\u5236\u5168\u6587 \u2197","app.reportLimit":"\u663E\u793A\u6700\u8FD1 8 \u4EFD\u6C47\u62A5\uFF1B\u66F4\u65E9\u7684\u8BB0\u5F55\u53EF\u5728 Codex \u4E2D\u67E5\u770B\u3002","app.readFailed":"\u8BFB\u53D6\u5931\u8D25","app.editFailed":"\u65E0\u6CD5\u8BFB\u53D6\u529E\u516C\u5BA4\u670D\u52A1","app.retrying":"{message}\uFF0C\u6B63\u5728\u91CD\u8BD5\u3002","app.demoNotice":"\u8FD9\u662F\u72EC\u7ACB\u7684\u6F14\u793A\u56E2\u961F\uFF0C\u6D88\u606F\u548C\u4EFB\u52A1\u5747\u4E3A\u6A21\u62DF\u5185\u5BB9\uFF0C\u6CA1\u6709\u8BFB\u53D6\u6216\u6267\u884C\u4F60\u7684 Codex \u4F1A\u8BDD\u3002","app.demoMode":"\u6F14\u793A\u6570\u636E \xB7 \u672A\u6267\u884C\u4EFB\u52A1","app.renderSubtitle":"\u4ECE\u4EFB\u52A1\u5206\u914D\uFF0C\u5230\u6BCF\u4E00\u4EFD\u6C47\u62A5\u3002","app.noRecentSessions":"\u5C1A\u672A\u53D1\u73B0\u6700\u8FD1 24 \u5C0F\u65F6\u5185\u6D3B\u8DC3\u7684 Codex \u4F1A\u8BDD\u3002\u8BF7\u5728 Codex \u4E2D\u5F00\u59CB\u4EFB\u52A1\uFF0C\u6216\u68C0\u67E5 CODEX_HOME\u3002","app.durationHours":"{hours}\u65F6 {minutes}\u5206","app.durationMinutes":"{minutes}\u5206 {seconds}\u79D2","app.waitingResult":"{name} \u6B63\u5728\u7B49\u5F85\u5B50 Agent \u7684\u7ED3\u679C","app.ariaAgentStatus":"{name}\uFF0C{status}","session.noTime":"\u65F6\u95F4\u672A\u8BB0\u5F55","live.reportReady":"\u6C47\u62A5\u5DF2\u5C31\u7EEA","live.reportHistorical":"\u5386\u53F2\u6C47\u62A5\u5DF2\u8BB0\u5F55","live.reportPending":"\u7B49\u5F85\u672C\u8F6E\u6C47\u62A5\uFF0C\u5DF2\u6709\u5386\u53F2\u8BB0\u5F55","live.endedNoReport":"\u4EFB\u52A1\u5DF2\u7ED3\u675F\uFF0C\u65E5\u5FD7\u672A\u8BB0\u5F55\u6C47\u62A5","live.errored":"\u6267\u884C\u51FA\u9519","live.interrupted":"\u4EFB\u52A1\u5DF2\u4E2D\u65AD","live.agentClosed":"Agent \u5DF2\u5173\u95ED","live.waitingUser":"\u7B49\u5F85\u7528\u6237\u5904\u7406","live.awaitingSubagents":"\u7B49\u5F85\u5B50 Agent \u6C47\u62A5","live.typingMessage":"\u6B63\u5728\u8F93\u51FA\u6D88\u606F","live.runningTool":"\u6B63\u5728\u6267\u884C\u5DE5\u5177","live.thinking":"\u6B63\u5728\u5904\u7406\u4EFB\u52A1","live.idle":"\u7A7A\u95F2","live.awaitingLog":"\u7B49\u5F85\u65E5\u5FD7","live.leadName":"\u4E3B Agent","live.subName":"\u5B50 Agent {id}","live.zoneLead":"C0 \xB7 \u534F\u8C03\u4E2D\u5FC3","live.zoneSlot":"A{slot} \xB7 \u534F\u4F5C\u5DE5\u4F4D","live.harnessSession":"Harness \u4F1A\u8BDD","live.codexSession":"Codex \u4F1A\u8BDD","live.harnessName":"DeepSeek Harness","live.codexName":"Codex","source.sessionReadFail":"\u8BFB\u53D6\u4F1A\u8BDD\u5931\u8D25","source.eventReadFail":"\u8BFB\u53D6\u4E8B\u4EF6\u5931\u8D25\uFF1A{message}","source.disconnected":"\u8FDE\u63A5\u5DF2\u65AD\u5F00\uFF0C\u6B63\u5728\u91CD\u8FDE\uFF1B\u4FDD\u7559\u4E0A\u6B21\u72B6\u6001","source.demoData":"\u5F53\u524D\u670D\u52A1\u4F7F\u7528\u6A21\u62DF\u6570\u636E\uFF0C\u8BF7\u4EE5\u666E\u901A\u6A21\u5F0F\u542F\u52A8\u529E\u516C\u5BA4","source.recordReadFail":"\u8BFB\u53D6\u539F\u59CB\u8BB0\u5F55\u5931\u8D25","notify.aria":"\u67E5\u770B\u534F\u4F5C\u901A\u77E5","notify.ariaUnread":"\u67E5\u770B\u534F\u4F5C\u901A\u77E5\uFF0C\u6709\u672A\u8BFB\u52A8\u6001","controls.clearFilter":"\u6E05\u9664\u7B5B\u9009","controls.noMatch":"\u6CA1\u6709\u5339\u914D\u7684\u9009\u9879","controls.selectOption":"\u9009\u62E9\u9009\u9879","controls.filterPrefix":"\u7B5B\u9009{label}","controls.filterPlaceholder":"\u8F93\u5165\u5173\u952E\u8BCD\u7B5B\u9009\u2026","controls.optionsAria":"{label}\u9009\u9879","controls.choose":"\u8BF7\u9009\u62E9","controls.matchesAria":"\u5339\u914D\u7684\u4F1A\u8BDD\u3001\u4EFB\u52A1\u4E0E Agent","controls.found":"\u627E\u5230 {count} \u9879\u5339\u914D\u7ED3\u679C","controls.noMatches":"\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD\u3001\u4EFB\u52A1\u6216 Agent","demo.spaceAria":"Agent \u4E09\u7EF4\u534F\u4F5C\u7A7A\u95F4","demo.pinsAria":"\u573A\u666F\u4E2D\u7684 Agent","demo.loading":"\u6B63\u5728\u5E03\u7F6E\u534F\u4F5C\u7A7A\u95F4\u2026","demo.searchPlaceholder":"\u641C\u7D22\u4F1A\u8BDD\u3001\u4EFB\u52A1\u3001Agent \u6216\u4E8B\u4EF6\u2026","demo.searchAria":"\u641C\u7D22\u4F1A\u8BDD\u3001\u4EFB\u52A1\u6216\u4E8B\u4EF6","demo.clearSearch":"\u6E05\u9664\u641C\u7D22","demo.directory":"\u5DE5\u4F5C\u76EE\u5F55","demo.directoryAria":"\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","demo.scenarioAria":"\u9009\u62E9\u6F14\u793A\u4EFB\u52A1","demo.scenarioSearch":"\u4EFB\u52A1\u641C\u7D22\u4E0E\u7B5B\u9009","demo.scenarioReview":"\u63A5\u53E3\u4E0E\u56DE\u5F52\u5BA1\u9605","demo.option.search":"\u4EFB\u52A1\u641C\u7D22\u4E0E\u7B5B\u9009 \xB7 DEMO-01","demo.option.review":"\u63A5\u53E3\u4E0E\u56DE\u5F52\u5BA1\u9605 \xB7 DEMO-02","demo.closeDetails":"\u5173\u95ED Agent \u8BE6\u60C5","demo.restartTitle":"\u91CD\u65B0\u5F00\u59CB","demo.mode":"\u6A21\u5F0F","demo.modeAria":"\u9009\u62E9\u4F1A\u8BDD\u6A21\u5F0F","demo.modeLive":"\u771F\u5B9E\u4F1A\u8BDD","demo.modeDemo":"\u6F14\u793A\u4F1A\u8BDD","demo.notificationsAria":"\u67E5\u770B\u534F\u4F5C\u901A\u77E5","demo.profile":"\u672C\u5730\u534F\u4F5C\u6F14\u793A","demo.statsAria":"\u534F\u4F5C\u7EDF\u8BA1","demo.activeAgents":"\u6D3B\u8DC3 Agent","demo.parallel":"\u5E76\u884C\u534F\u4F5C","demo.teamCaption":"\u4E3B Agent + 3 \u4F4D\u5B50 Agent","demo.assigned":"\u5DF2\u5206\u914D\u4EFB\u52A1","demo.assignedHint":"\u5206\u5DE5\u5DF2\u5C31\u7EEA","demo.assignedCaption":"\u5171 3 \u9879\u72EC\u7ACB\u5B50\u4EFB\u52A1","demo.reports":"\u5DF2\u6536\u5230\u6C47\u62A5","demo.reportsHint":"\u7B49\u5F85\u7ED3\u679C","demo.reportsCaption":"\u6C47\u62A5\u540E\u7531\u4E3B Agent \u6C47\u603B","demo.progress":"\u6F14\u793A\u8FDB\u5EA6","demo.stageCaption":"\u6B63\u5728\u6267\u884C","demo.detailAria":"Agent \u4EFB\u52A1\u8BE6\u60C5","demo.taskName":"\u4EFB\u52A1\u540D\u79F0","demo.project":"\u6240\u5C5E\u9879\u76EE","demo.role":"\u5F53\u524D\u89D2\u8272","demo.type":"\u4EFB\u52A1\u7C7B\u578B","demo.progressLabel":"\u4EFB\u52A1\u8FDB\u5EA6","demo.zone":"\u5DE5\u4F5C\u533A\u57DF","demo.files":"\u76F8\u5173\u6587\u4EF6","demo.relation":"\u534F\u4F5C\u5173\u7CFB","demo.assignedTo":"\u5206\u914D\u7ED9","demo.stageMeta":"\u5F53\u524D\u9636\u6BB5","demo.viewReport":"\u67E5\u770B\u4EFB\u52A1\u8BE6\u60C5","demo.viewSource":"\u67E5\u770B\u4EFB\u52A1\u539F\u6587","demo.disclaimer":"\u6A21\u62DF\u534F\u4F5C\u6570\u636E \xB7 \u4E0D\u8BFB\u53D6\u6216\u6267\u884C\u771F\u5B9E\u4EFB\u52A1","demo.agentDetails":"Agent \u8BE6\u60C5","demo.updates":"\u534F\u4F5C\u52A8\u6001","demo.simulatedEvents":"\u6A21\u62DF\u4E8B\u4EF6","demo.markAllRead":"\u5168\u90E8\u5DF2\u8BFB","demo.play":"\u64AD\u653E\u6F14\u793A","demo.restart":"\u91CD\u65B0\u5F00\u59CB\u6F14\u793A","demo.resetCamera":"\u590D\u4F4D\u4E09\u7EF4\u955C\u5934","demo.resetCameraTitle":"\u590D\u4F4D\u955C\u5934","demo.team":"\u56E2\u961F","demo.history":"\u67E5\u770B\u5386\u53F2\u6210\u5458","demo.instruction":"\u62D6\u52A8\u65CB\u8F6C \xB7 \u6EDA\u8F6E\u7F29\u653E \xB7 \u70B9\u51FB\u5DE5\u4F4D\u6216\u663E\u793A\u5668\u67E5\u770B\u8BE6\u60C5","demo.workflowAria":"\u4EFB\u52A1\u534F\u4F5C\u6D41\u7A0B","demo.workflowToggle":"\u534F\u4F5C\u6D41\u7A0B\u4E0E\u4EFB\u52A1","demo.workflowTitle":"\u4EFB\u52A1\u534F\u4F5C\u6D41\u7A0B","demo.workflowSubtitle":"\u4EFB\u52A1\u5206\u6790\u3001\u5E76\u884C\u6267\u884C\u4E0E\u7ED3\u679C\u6C47\u603B","demo.currentTask":"\u5F53\u524D\u4EFB\u52A1","demo.viewAll":"\u67E5\u770B\u5168\u90E8","demo.taskDetails":"\u4EFB\u52A1\u8BE6\u60C5","demo.copy":"\u590D\u5236\u5185\u5BB9","demo.dialogCaption":"\u4EE5\u4E0A\u5185\u5BB9\u4EC5\u7528\u4E8E\u534F\u4F5C\u6F14\u793A","demo.closeDialog":"\u5173\u95ED\u4EFB\u52A1\u5F39\u7A97","demo.reduceMotion":"\u51CF\u5C11\u52A8\u753B","demo.stage.analysis":"\u5206\u6790\u4E0E\u5206\u914D","demo.stage.parallel":"\u5E76\u884C\u6267\u884C","demo.stage.reports":"\u7ED3\u679C\u6C47\u62A5","demo.stage.summary":"\u4E3B Agent \u603B\u7ED3","demo.stageIdle":"\u7B49\u5F85\u7ED3\u679C","demo.stageAwaitReports":"\u7B49\u5F85\u6C47\u62A5\u6536\u9F50","demo.stageSummaryReady":"\u603B\u7ED3\u5DF2\u5C31\u7EEA","demo.stageConcluding":"\u6B63\u5728\u6574\u7406\u7ED3\u8BBA","demo.type.main":"\u534F\u4F5C\u7F16\u6392","demo.type.api":"\u63A5\u53E3\u5F00\u53D1","demo.type.frontend":"\u754C\u9762\u5F00\u53D1","demo.type.test":"\u6D4B\u8BD5\u4E0E\u5BA1\u9605","demo.type.reviewOnly":"\u53EA\u8BFB\u5BA1\u9605","demo.name.main":"\u4E3B Agent","demo.name.api":"\u63A5\u53E3 Agent","demo.name.frontend":"\u524D\u7AEF Agent","demo.name.test":"\u6D4B\u8BD5 Agent","demo.projectTaskBoard":"Task Board","demo.projectApi":"API Workspace","demo.detailCode":"\u4EFB\u52A1 {code}","demo.detailProgressDone":"\u4EFB\u52A1\u5DF2\u5B8C\u6210\uFF0C\u6C47\u62A5\u5DF2\u5C31\u7EEA","demo.parentMain":"\u4E3B Agent \u2192 \u5B50 Agent","demo.parentLead":"\u7EDF\u7B79 {count} \u4F4D\u5B50 Agent","demo.stageComplete":"\u534F\u4F5C\u5DF2\u5B8C\u6210","demo.viewFullReport":"\u67E5\u770B\u6C47\u62A5\u5168\u6587","demo.matchingTasks":"\u5339\u914D\u4EFB\u52A1","demo.teamTasks":"\u56E2\u961F\u4EFB\u52A1","demo.noMatchingTasks":"\u6CA1\u6709\u5339\u914D\u7684\u4EFB\u52A1","demo.ariaViewTask":"\u67E5\u770B {name} \u7684\u4EFB\u52A1","demo.ariaSelectAgent":"\u9009\u62E9 {name}","demo.notifyAssign":"\u5206\u914D\u4EFB\u52A1","demo.notifyReport":"\u63D0\u4EA4\u6C47\u62A5","demo.notifyMessage":"\u534F\u4F5C\u6D88\u606F","demo.notifyRouteLead":"\u4E3B Agent \u2192 ","demo.notifySummary":"\u7ED3\u679C\u5DF2\u6C47\u603B","demo.notifyProgress":"\u540C\u6B65\u8FDB\u5C55","demo.notifyTime":"\u6F14\u793A {time}","demo.notifyEmpty":"\u6F14\u793A\u5F00\u59CB\u540E\uFF0C\u534F\u4F5C\u4E8B\u4EF6\u5C06\u5728\u8FD9\u91CC\u51FA\u73B0\u3002","demo.toastRestart":"\u6F14\u793A\u5DF2\u4ECE\u4EFB\u52A1\u5206\u914D\u91CD\u65B0\u5F00\u59CB","demo.toastPreview":"\u6B63\u5728\u9884\u89C8\uFF1A{stage}","demo.dialogTaskTitle":"{name} \xB7 \u4EFB\u52A1\u8BE6\u60C5","demo.dialogReportTitle":"{name} \xB7 \u4EFB\u52A1\u6C47\u62A5","demo.dialogFinalTitle":"{name} \xB7 \u6700\u7EC8\u603B\u7ED3","demo.dialogTeamTitle":"\u56E2\u961F\u4EFB\u52A1 \xB7 {title}","demo.subtitleSim":"{title} \xB7 \u6A21\u62DF\u534F\u4F5C\u6D41\u7A0B","demo.hintComplete":"\u4EFB\u52A1\u5B8C\u6210","demo.hintParallel":"\u5E76\u884C\u534F\u4F5C","demo.hintCoordinating":"\u534F\u8C03\u4E2D","demo.assignedReady":"\u5206\u5DE5\u5DF2\u5C31\u7EEA","demo.assignedSplitting":"\u6B63\u5728\u62C6\u5206","demo.reportsReady":"\u6C47\u62A5\u5DF2\u6536\u9F50","demo.reportsCollecting":"\u6B63\u5728\u6536\u96C6","demo.reportsWaiting":"\u7B49\u5F85\u7ED3\u679C","demo.demoComplete":"\u534F\u4F5C\u6F14\u793A\u5DF2\u5B8C\u6210","demo.runningStage":"\u6B63\u5728{stage}","demo.pause":"\u6682\u505C\u6F14\u793A","demo.replay":"\u91CD\u65B0\u64AD\u653E","demo.stageAssigned":"{done} / {total} \u5DF2\u5206\u914D","demo.stageRunning":"{count} \u4F4D\u6B63\u5728\u6267\u884C","demo.stageReported":"{done} / {total} \u5DF2\u6C47\u62A5","demo.markerDone":"\u5DF2\u5B8C\u6210","demo.markerRunning":"\u8FDB\u884C\u4E2D","demo.markerPaused":"\u6F14\u793A\u5DF2\u6682\u505C","demo.previewStage":"\u9884\u89C8{stage}\u9636\u6BB5","demo.failed3d":"3D \u6682\u4E0D\u53EF\u7528\uFF0C\u4EFB\u52A1\u8BE6\u60C5\u4E0E\u6D41\u7A0B\u6F14\u793A\u4ECD\u53EF\u4F7F\u7528\u3002","demo.emptySearchTitle":"\u672A\u547D\u540D\u4F1A\u8BDD","demo.teamMemberLine":`{name} / {zone}
|
|
4222
|
+
\u5B50 Agent \u7684\u6700\u7EC8\u56DE\u590D\u6216\u4E3B Agent \u7684\u603B\u7ED3\u5199\u5165\u540E\uFF0C\u4F1A\u5728\u8FD9\u91CC\u5B8C\u6574\u663E\u793A\u3002`,"app.reportLoading":"\u6B63\u5728\u8BFB\u53D6\u6C47\u62A5\u5168\u6587\u2026","app.reportCurrent":"\u672C\u8F6E \xB7 ","app.reportHistory":"\u5386\u53F2 \xB7 ","app.reportSub":"\u5B50 Agent \u6C47\u62A5","app.reportLead":"\u4E3B Agent \u603B\u7ED3","app.reportOpen":"\u5C55\u5F00\u9605\u8BFB / \u590D\u5236\u5168\u6587 \u2197","app.reportLimit":"\u663E\u793A\u6700\u8FD1 8 \u4EFD\u6C47\u62A5\uFF1B\u66F4\u65E9\u7684\u8BB0\u5F55\u53EF\u5728 Codex \u4E2D\u67E5\u770B\u3002","app.readFailed":"\u8BFB\u53D6\u5931\u8D25","app.editFailed":"\u65E0\u6CD5\u8BFB\u53D6\u529E\u516C\u5BA4\u670D\u52A1","app.retrying":"{message}\uFF0C\u6B63\u5728\u91CD\u8BD5\u3002","app.demoNotice":"\u8FD9\u662F\u72EC\u7ACB\u7684\u6F14\u793A\u56E2\u961F\uFF0C\u6D88\u606F\u548C\u4EFB\u52A1\u5747\u4E3A\u6A21\u62DF\u5185\u5BB9\uFF0C\u6CA1\u6709\u8BFB\u53D6\u6216\u6267\u884C\u4F60\u7684 Codex \u4F1A\u8BDD\u3002","app.demoMode":"\u6F14\u793A\u6570\u636E \xB7 \u672A\u6267\u884C\u4EFB\u52A1","app.renderSubtitle":"\u4ECE\u4EFB\u52A1\u5206\u914D\uFF0C\u5230\u6BCF\u4E00\u4EFD\u6C47\u62A5\u3002","app.noRecentSessions":"\u5C1A\u672A\u53D1\u73B0\u6700\u8FD1 24 \u5C0F\u65F6\u5185\u6D3B\u8DC3\u7684 Codex \u4F1A\u8BDD\u3002\u8BF7\u5728 Codex \u4E2D\u5F00\u59CB\u4EFB\u52A1\uFF0C\u6216\u68C0\u67E5 CODEX_HOME\u3002","app.durationHours":"{hours}\u65F6 {minutes}\u5206","app.durationMinutes":"{minutes}\u5206 {seconds}\u79D2","app.waitingResult":"{name} \u6B63\u5728\u7B49\u5F85\u5B50 Agent \u7684\u7ED3\u679C","app.ariaAgentStatus":"{name}\uFF0C{status}","session.noTime":"\u65F6\u95F4\u672A\u8BB0\u5F55","live.reportReady":"\u6C47\u62A5\u5DF2\u5C31\u7EEA","live.reportHistorical":"\u5386\u53F2\u6C47\u62A5\u5DF2\u8BB0\u5F55","live.reportPending":"\u7B49\u5F85\u672C\u8F6E\u6C47\u62A5\uFF0C\u5DF2\u6709\u5386\u53F2\u8BB0\u5F55","live.endedNoReport":"\u4EFB\u52A1\u5DF2\u7ED3\u675F\uFF0C\u65E5\u5FD7\u672A\u8BB0\u5F55\u6C47\u62A5","live.errored":"\u6267\u884C\u51FA\u9519","live.interrupted":"\u4EFB\u52A1\u5DF2\u4E2D\u65AD","live.agentClosed":"Agent \u5DF2\u5173\u95ED","live.waitingUser":"\u7B49\u5F85\u7528\u6237\u5904\u7406","live.awaitingSubagents":"\u7B49\u5F85\u5B50 Agent \u6C47\u62A5","live.typingMessage":"\u6B63\u5728\u8F93\u51FA\u6D88\u606F","live.runningTool":"\u6B63\u5728\u6267\u884C\u5DE5\u5177","live.thinking":"\u6B63\u5728\u5904\u7406\u4EFB\u52A1","live.idle":"\u7A7A\u95F2","live.awaitingLog":"\u7B49\u5F85\u65E5\u5FD7","live.leadName":"\u4E3B Agent","live.subName":"\u5B50 Agent {id}","live.zoneLead":"C0 \xB7 \u534F\u8C03\u4E2D\u5FC3","live.zoneSlot":"A{slot} \xB7 \u534F\u4F5C\u5DE5\u4F4D","live.harnessSession":"Harness \u4F1A\u8BDD","live.codexSession":"Codex \u4F1A\u8BDD","live.harnessName":"DeepSeek Harness","live.codexName":"Codex","source.sessionReadFail":"\u8BFB\u53D6\u4F1A\u8BDD\u5931\u8D25","source.eventReadFail":"\u8BFB\u53D6\u4E8B\u4EF6\u5931\u8D25\uFF1A{message}","source.disconnected":"\u8FDE\u63A5\u5DF2\u65AD\u5F00\uFF0C\u6B63\u5728\u91CD\u8FDE\uFF1B\u4FDD\u7559\u4E0A\u6B21\u72B6\u6001","source.demoData":"\u5F53\u524D\u670D\u52A1\u4F7F\u7528\u6A21\u62DF\u6570\u636E\uFF0C\u8BF7\u4EE5\u666E\u901A\u6A21\u5F0F\u542F\u52A8\u529E\u516C\u5BA4","source.recordReadFail":"\u8BFB\u53D6\u539F\u59CB\u8BB0\u5F55\u5931\u8D25","notify.aria":"\u67E5\u770B\u534F\u4F5C\u901A\u77E5","notify.ariaUnread":"\u67E5\u770B\u534F\u4F5C\u901A\u77E5\uFF0C\u6709\u672A\u8BFB\u52A8\u6001","controls.clearFilter":"\u6E05\u9664\u7B5B\u9009","controls.noMatch":"\u6CA1\u6709\u5339\u914D\u7684\u9009\u9879","controls.selectOption":"\u9009\u62E9\u9009\u9879","controls.filterPrefix":"\u7B5B\u9009{label}","controls.filterPlaceholder":"\u8F93\u5165\u5173\u952E\u8BCD\u7B5B\u9009\u2026","controls.optionsAria":"{label}\u9009\u9879","controls.choose":"\u8BF7\u9009\u62E9","controls.matchesAria":"\u5339\u914D\u7684\u4F1A\u8BDD\u3001\u4EFB\u52A1\u4E0E Agent","controls.found":"\u627E\u5230 {count} \u9879\u5339\u914D\u7ED3\u679C","controls.noMatches":"\u6CA1\u6709\u5339\u914D\u7684\u4F1A\u8BDD\u3001\u4EFB\u52A1\u6216 Agent","demo.spaceAria":"Agent \u4E09\u7EF4\u534F\u4F5C\u7A7A\u95F4","demo.pinsAria":"\u573A\u666F\u4E2D\u7684 Agent","demo.loading":"\u6B63\u5728\u5E03\u7F6E\u534F\u4F5C\u7A7A\u95F4\u2026","demo.searchPlaceholder":"\u641C\u7D22\u4F1A\u8BDD\u3001\u4EFB\u52A1\u3001Agent \u6216\u4E8B\u4EF6\u2026","demo.searchAria":"\u641C\u7D22\u4F1A\u8BDD\u3001\u4EFB\u52A1\u6216\u4E8B\u4EF6","demo.clearSearch":"\u6E05\u9664\u641C\u7D22","demo.directory":"\u5DE5\u4F5C\u76EE\u5F55","demo.directoryAria":"\u9009\u62E9\u5DE5\u4F5C\u76EE\u5F55","demo.scenarioAria":"\u9009\u62E9\u6F14\u793A\u4EFB\u52A1","demo.scenarioSearch":"\u4EFB\u52A1\u641C\u7D22\u4E0E\u7B5B\u9009","demo.scenarioReview":"\u63A5\u53E3\u4E0E\u56DE\u5F52\u5BA1\u9605","demo.option.search":"\u4EFB\u52A1\u641C\u7D22\u4E0E\u7B5B\u9009 \xB7 DEMO-01","demo.option.review":"\u63A5\u53E3\u4E0E\u56DE\u5F52\u5BA1\u9605 \xB7 DEMO-02","demo.closeDetails":"\u5173\u95ED Agent \u8BE6\u60C5","demo.restartTitle":"\u91CD\u65B0\u5F00\u59CB","demo.mode":"\u6A21\u5F0F","demo.modeAria":"\u9009\u62E9\u4F1A\u8BDD\u6A21\u5F0F","demo.modeLive":"\u771F\u5B9E\u4F1A\u8BDD","demo.modeDemo":"\u6F14\u793A\u4F1A\u8BDD","demo.notificationsAria":"\u67E5\u770B\u534F\u4F5C\u901A\u77E5","demo.profile":"\u672C\u5730\u534F\u4F5C\u6F14\u793A","demo.statsAria":"\u534F\u4F5C\u7EDF\u8BA1","demo.activeAgents":"\u6D3B\u8DC3 Agent","demo.parallel":"\u5E76\u884C\u534F\u4F5C","demo.teamCaption":"\u4E3B Agent + 3 \u4F4D\u5B50 Agent","demo.assigned":"\u5DF2\u5206\u914D\u4EFB\u52A1","demo.assignedHint":"\u5206\u5DE5\u5DF2\u5C31\u7EEA","demo.assignedCaption":"\u5171 3 \u9879\u72EC\u7ACB\u5B50\u4EFB\u52A1","demo.reports":"\u5DF2\u6536\u5230\u6C47\u62A5","demo.reportsHint":"\u7B49\u5F85\u7ED3\u679C","demo.reportsCaption":"\u6C47\u62A5\u540E\u7531\u4E3B Agent \u6C47\u603B","demo.progress":"\u6F14\u793A\u8FDB\u5EA6","demo.stageCaption":"\u6B63\u5728\u6267\u884C","demo.detailAria":"Agent \u4EFB\u52A1\u8BE6\u60C5","demo.taskName":"\u4EFB\u52A1\u540D\u79F0","demo.project":"\u6240\u5C5E\u9879\u76EE","demo.role":"\u5F53\u524D\u89D2\u8272","demo.type":"\u4EFB\u52A1\u7C7B\u578B","demo.progressLabel":"\u4EFB\u52A1\u8FDB\u5EA6","demo.zone":"\u5DE5\u4F5C\u533A\u57DF","demo.files":"\u76F8\u5173\u6587\u4EF6","demo.relation":"\u534F\u4F5C\u5173\u7CFB","demo.assignedTo":"\u5206\u914D\u7ED9","demo.stageMeta":"\u5F53\u524D\u9636\u6BB5","demo.viewReport":"\u67E5\u770B\u4EFB\u52A1\u8BE6\u60C5","demo.viewSource":"\u67E5\u770B\u4EFB\u52A1\u539F\u6587","demo.disclaimer":"\u6A21\u62DF\u534F\u4F5C\u6570\u636E \xB7 \u4E0D\u8BFB\u53D6\u6216\u6267\u884C\u771F\u5B9E\u4EFB\u52A1","demo.agentDetails":"Agent \u8BE6\u60C5","demo.updates":"\u534F\u4F5C\u52A8\u6001","demo.simulatedEvents":"\u6A21\u62DF\u4E8B\u4EF6","demo.markAllRead":"\u5168\u90E8\u5DF2\u8BFB","demo.play":"\u64AD\u653E\u6F14\u793A","demo.restart":"\u91CD\u65B0\u5F00\u59CB\u6F14\u793A","demo.resetCamera":"\u590D\u4F4D\u4E09\u7EF4\u955C\u5934","demo.resetCameraTitle":"\u590D\u4F4D\u955C\u5934","demo.team":"\u56E2\u961F","demo.history":"\u67E5\u770B\u5386\u53F2\u6210\u5458","demo.instruction":"\u62D6\u52A8\u65CB\u8F6C \xB7 \u6EDA\u8F6E\u7F29\u653E \xB7 \u70B9\u51FB\u5DE5\u4F4D\u6216\u663E\u793A\u5668\u67E5\u770B\u8BE6\u60C5","demo.workflowAria":"\u4EFB\u52A1\u534F\u4F5C\u6D41\u7A0B","demo.workflowToggle":"\u534F\u4F5C\u6D41\u7A0B\u4E0E\u4EFB\u52A1","demo.workflowTitle":"\u4EFB\u52A1\u534F\u4F5C\u6D41\u7A0B","demo.workflowSubtitle":"\u4EFB\u52A1\u5206\u6790\u3001\u5E76\u884C\u6267\u884C\u4E0E\u7ED3\u679C\u6C47\u603B","demo.currentTask":"\u5F53\u524D\u4EFB\u52A1","demo.viewAll":"\u67E5\u770B\u5168\u90E8","demo.taskDetails":"\u4EFB\u52A1\u8BE6\u60C5","demo.copy":"\u590D\u5236\u5185\u5BB9","demo.dialogCaption":"\u4EE5\u4E0A\u5185\u5BB9\u4EC5\u7528\u4E8E\u534F\u4F5C\u6F14\u793A","demo.closeDialog":"\u5173\u95ED\u4EFB\u52A1\u5F39\u7A97","demo.reduceMotion":"\u51CF\u5C11\u52A8\u753B","demo.hidePanels":"\u9690\u85CF\u9762\u677F","demo.showPanels":"\u663E\u793A\u9762\u677F","demo.stage.analysis":"\u5206\u6790\u4E0E\u5206\u914D","demo.stage.parallel":"\u5E76\u884C\u6267\u884C","demo.stage.reports":"\u7ED3\u679C\u6C47\u62A5","demo.stage.summary":"\u4E3B Agent \u603B\u7ED3","demo.stageIdle":"\u7B49\u5F85\u7ED3\u679C","demo.stageAwaitReports":"\u7B49\u5F85\u6C47\u62A5\u6536\u9F50","demo.stageSummaryReady":"\u603B\u7ED3\u5DF2\u5C31\u7EEA","demo.stageConcluding":"\u6B63\u5728\u6574\u7406\u7ED3\u8BBA","demo.type.main":"\u534F\u4F5C\u7F16\u6392","demo.type.api":"\u63A5\u53E3\u5F00\u53D1","demo.type.frontend":"\u754C\u9762\u5F00\u53D1","demo.type.test":"\u6D4B\u8BD5\u4E0E\u5BA1\u9605","demo.type.reviewOnly":"\u53EA\u8BFB\u5BA1\u9605","demo.name.main":"\u4E3B Agent","demo.name.api":"\u63A5\u53E3 Agent","demo.name.frontend":"\u524D\u7AEF Agent","demo.name.test":"\u6D4B\u8BD5 Agent","demo.projectTaskBoard":"Task Board","demo.projectApi":"API Workspace","demo.detailCode":"\u4EFB\u52A1 {code}","demo.detailProgressDone":"\u4EFB\u52A1\u5DF2\u5B8C\u6210\uFF0C\u6C47\u62A5\u5DF2\u5C31\u7EEA","demo.parentMain":"\u4E3B Agent \u2192 \u5B50 Agent","demo.parentLead":"\u7EDF\u7B79 {count} \u4F4D\u5B50 Agent","demo.stageComplete":"\u534F\u4F5C\u5DF2\u5B8C\u6210","demo.viewFullReport":"\u67E5\u770B\u6C47\u62A5\u5168\u6587","demo.matchingTasks":"\u5339\u914D\u4EFB\u52A1","demo.teamTasks":"\u56E2\u961F\u4EFB\u52A1","demo.noMatchingTasks":"\u6CA1\u6709\u5339\u914D\u7684\u4EFB\u52A1","demo.ariaViewTask":"\u67E5\u770B {name} \u7684\u4EFB\u52A1","demo.ariaSelectAgent":"\u9009\u62E9 {name}","demo.notifyAssign":"\u5206\u914D\u4EFB\u52A1","demo.notifyReport":"\u63D0\u4EA4\u6C47\u62A5","demo.notifyMessage":"\u534F\u4F5C\u6D88\u606F","demo.notifyRouteLead":"\u4E3B Agent \u2192 ","demo.notifySummary":"\u7ED3\u679C\u5DF2\u6C47\u603B","demo.notifyProgress":"\u540C\u6B65\u8FDB\u5C55","demo.notifyTime":"\u6F14\u793A {time}","demo.notifyEmpty":"\u6F14\u793A\u5F00\u59CB\u540E\uFF0C\u534F\u4F5C\u4E8B\u4EF6\u5C06\u5728\u8FD9\u91CC\u51FA\u73B0\u3002","demo.toastRestart":"\u6F14\u793A\u5DF2\u4ECE\u4EFB\u52A1\u5206\u914D\u91CD\u65B0\u5F00\u59CB","demo.toastPreview":"\u6B63\u5728\u9884\u89C8\uFF1A{stage}","demo.dialogTaskTitle":"{name} \xB7 \u4EFB\u52A1\u8BE6\u60C5","demo.dialogReportTitle":"{name} \xB7 \u4EFB\u52A1\u6C47\u62A5","demo.dialogFinalTitle":"{name} \xB7 \u6700\u7EC8\u603B\u7ED3","demo.dialogTeamTitle":"\u56E2\u961F\u4EFB\u52A1 \xB7 {title}","demo.subtitleSim":"{title} \xB7 \u6A21\u62DF\u534F\u4F5C\u6D41\u7A0B","demo.hintComplete":"\u4EFB\u52A1\u5B8C\u6210","demo.hintParallel":"\u5E76\u884C\u534F\u4F5C","demo.hintCoordinating":"\u534F\u8C03\u4E2D","demo.assignedReady":"\u5206\u5DE5\u5DF2\u5C31\u7EEA","demo.assignedSplitting":"\u6B63\u5728\u62C6\u5206","demo.reportsReady":"\u6C47\u62A5\u5DF2\u6536\u9F50","demo.reportsCollecting":"\u6B63\u5728\u6536\u96C6","demo.reportsWaiting":"\u7B49\u5F85\u7ED3\u679C","demo.demoComplete":"\u534F\u4F5C\u6F14\u793A\u5DF2\u5B8C\u6210","demo.runningStage":"\u6B63\u5728{stage}","demo.pause":"\u6682\u505C\u6F14\u793A","demo.replay":"\u91CD\u65B0\u64AD\u653E","demo.stageAssigned":"{done} / {total} \u5DF2\u5206\u914D","demo.stageRunning":"{count} \u4F4D\u6B63\u5728\u6267\u884C","demo.stageReported":"{done} / {total} \u5DF2\u6C47\u62A5","demo.markerDone":"\u5DF2\u5B8C\u6210","demo.markerRunning":"\u8FDB\u884C\u4E2D","demo.markerPaused":"\u6F14\u793A\u5DF2\u6682\u505C","demo.previewStage":"\u9884\u89C8{stage}\u9636\u6BB5","demo.failed3d":"3D \u6682\u4E0D\u53EF\u7528\uFF0C\u4EFB\u52A1\u8BE6\u60C5\u4E0E\u6D41\u7A0B\u6F14\u793A\u4ECD\u53EF\u4F7F\u7528\u3002","demo.emptySearchTitle":"\u672A\u547D\u540D\u4F1A\u8BDD","demo.teamMemberLine":`{name} / {zone}
|
|
4223
4223
|
{task}
|
|
4224
4224
|
\u72B6\u6001\uFF1A{status} \xB7 {percent}%`,"demo.fieldTask":"\u4EFB\u52A1\uFF1A{value}","demo.fieldCode":"\u4EFB\u52A1\u7F16\u53F7\uFF1A{value}","demo.fieldZone":"\u5DE5\u4F5C\u533A\u57DF\uFF1A{value}","demo.fieldFile":"\u76F8\u5173\u6587\u4EF6\uFF1A{value}","demo.fieldStatus":"\u5F53\u524D\u72B6\u6001\uFF1A{value} \xB7 {percent}%","demo.doneHint":"\u5B8C\u6210\u540E\u5C06\u5728\u8FD9\u91CC\u663E\u793A\u5B8C\u6574\u6C47\u62A5\u3002","demo.demoOnlyHint":"\u8FD9\u662F\u72EC\u7ACB\u6F14\u793A\u5185\u5BB9\uFF0C\u6CA1\u6709\u8BFB\u53D6\u6216\u6267\u884C\u4F60\u7684\u771F\u5B9E\u4EFB\u52A1\u3002","demo.queueHeading":"{label} ({count})","demo.scenario.search.title":"\u5B9E\u73B0\u4EFB\u52A1\u641C\u7D22\u4E0E\u7B5B\u9009","demo.scenario.search.project":"Codex Workspace","demo.scenario.search.titles.0":"\u5206\u6790\u3001\u534F\u8C03\u4E0E\u4EFB\u52A1\u6C47\u603B","demo.scenario.search.titles.1":"\u67E5\u8BE2\u4E0E\u7B5B\u9009\u63A5\u53E3","demo.scenario.search.titles.2":"\u641C\u7D22\u4E0E\u7B5B\u9009\u754C\u9762","demo.scenario.search.titles.3":"\u8FB9\u754C\u4E0E\u56DE\u5F52\u9A8C\u8BC1","demo.scenario.search.tasks.0":"\u62C6\u5206\u9700\u6C42\uFF0C\u534F\u8C03\u5E76\u884C\u6267\u884C\uFF0C\u5BA1\u9605\u4E09\u4EFD\u7ED3\u679C\u5E76\u5F62\u6210\u6700\u7EC8\u603B\u7ED3\u3002","demo.scenario.search.tasks.1":"\u5B9E\u73B0\u5173\u952E\u8BCD\u67E5\u8BE2\u3001\u72B6\u6001\u7B5B\u9009\u548C\u5206\u9875\u63A5\u53E3\uFF0C\u8865\u9F50\u53C2\u6570\u6821\u9A8C\u3002","demo.scenario.search.tasks.2":"\u5B9E\u73B0\u641C\u7D22\u680F\u3001\u7B5B\u9009\u63A7\u4EF6\u548C\u7ED3\u679C\u5217\u8868\uFF0C\u5904\u7406\u52A0\u8F7D\u4E0E\u7A7A\u72B6\u6001\u3002","demo.scenario.search.tasks.3":"\u9A8C\u8BC1\u641C\u7D22\u3001\u7EC4\u5408\u7B5B\u9009\u548C\u5206\u9875\u8FB9\u754C\uFF0C\u68C0\u67E5\u65E0\u7ED3\u679C\u4E0E\u9519\u8BEF\u72B6\u6001\u3002","demo.scenario.search.files.0":"\u8BA1\u5212\u4E0E\u7ED3\u679C\u6C47\u603B","demo.scenario.search.files.1":"src/api/tasks.ts","demo.scenario.search.files.2":"src/views/Tasks.vue","demo.scenario.search.files.3":"tests/tasks.spec.ts","demo.scenario.search.reports.0":`\u4EFB\u52A1\u641C\u7D22\u4E0E\u7B5B\u9009\u5DF2\u5B8C\u6210\uFF08\u6F14\u793A\uFF09\u3002
|
|
4225
4225
|
|
|
@@ -4256,7 +4256,7 @@ void main() {
|
|
|
4256
4256
|
\u641C\u7D22\u3001\u7B5B\u9009\u4E0E\u6E05\u9664\u8DEF\u5F84\u5B8C\u6574\uFF1B\u5EFA\u8BAE\u4FDD\u7559\u5F53\u524D\u6761\u4EF6\uFF0C\u907F\u514D\u7528\u6237\u8FD4\u56DE\u5217\u8868\u65F6\u4E22\u5931\u4E0A\u4E0B\u6587\u3002`,"demo.scenario.review.reports.3":`\u56DE\u5F52\u68C0\u67E5\u5B8C\u6210\uFF08\u6F14\u793A\uFF09\u3002
|
|
4257
4257
|
|
|
4258
4258
|
\u5EFA\u8BAE\u589E\u52A0\u65E0\u7ED3\u679C\u3001\u8D85\u957F\u5173\u952E\u8BCD\u3001\u5FEB\u901F\u8FDE\u7EED\u641C\u7D22\u4E0E\u5206\u9875\u672B\u9875\u7684\u573A\u666F\u3002`,"demo.agent.main":"\u4E3B Agent","demo.agent.api":"\u63A5\u53E3 Agent","demo.agent.frontend":"\u524D\u7AEF Agent","demo.agent.test":"\u6D4B\u8BD5 Agent","demo.role.main":"\u534F\u8C03\u4E0E\u6C47\u603B","demo.role.api":"\u63A5\u53E3\u5F00\u53D1","demo.role.frontend":"\u754C\u9762\u5B9E\u73B0","demo.role.test":"\u9A8C\u8BC1\u4E0E\u5BA1\u9605","demo.zone.main":"C0 \xB7 \u534F\u8C03\u4E2D\u5FC3","demo.zone.api":"A1 \xB7 \u63A5\u53E3\u5DE5\u4F5C\u533A","demo.zone.frontend":"A2 \xB7 \u524D\u7AEF\u5DE5\u4F5C\u533A","demo.zone.test":"B1 \xB7 \u9A8C\u8BC1\u5DE5\u4F5C\u533A","demo.preview.ready":"\u6C47\u62A5\u5DF2\u5C31\u7EEA","demo.preview.analyzing":"\u6B63\u5728\u5206\u6790\u4EFB\u52A1","demo.preview.running":"\u6B63\u5728\u6267\u884C\u5206\u914D\u4EFB\u52A1","demo.preview.compiling":"\u6B63\u5728\u6574\u7406\u7ED3\u679C","demo.preview.coordinating":"\u6B63\u5728\u534F\u8C03\u56E2\u961F","scene.activity.assign":"\u6D3E\u53D1","scene.activity.message":"\u6D88\u606F","scene.activity.report":"\u6C47\u62A5","scene.activity.tool":"\u5DE5\u5177","scene.activity.status":"\u72B6\u6001","scene.activity.event":"\u4E8B\u4EF6","scene.screen.working":"\u6267\u884C\u4E2D","scene.screen.tool":"\u8C03\u7528\u5DE5\u5177","scene.screen.typing":"\u8F93\u5165\u4E2D","scene.screen.thinking":"\u601D\u8003\u4E2D","scene.screen.done":"\u5DF2\u5B8C\u6210","scene.screen.waiting":"\u7B49\u5F85\u4E2D","scene.screen.waiting_agents":"\u7B49\u5F85\u5B50 Agent","scene.screen.error":"\u51FA\u9519","scene.screen.interrupted":"\u5DF2\u4E2D\u65AD","scene.screen.closed":"\u5DF2\u7ED3\u675F","scene.screen.idle":"\u7A7A\u95F2","scene.screen.unknown":"\u72B6\u6001\u672A\u77E5","scene.screen.unassigned":"\u672A\u5206\u914D\u5DE5\u4F4D","scene.screen.waitingSeat":"\u7B49\u5F85 Agent \u5165\u5EA7","scene.screen.statusLine":"\u72B6\u6001 {status}","scene.screen.taskLine":"\u4EFB\u52A1 {task}","scene.screen.contextLine":"\u6A21\u578B/\u5DE5\u5177 {value}","scene.screen.contextNone":"\u6A21\u578B/\u5DE5\u5177 \u672A\u8BB0\u5F55","scene.screen.recent":"\u6700\u8FD1\u4E8B\u4EF6","scene.screen.noEvents":"\u6682\u65E0\u65B0\u4E8B\u4EF6","scene.screen.waitingTask":"\u7B49\u5F85\u4EFB\u52A1","scene.screen.idleSeat":"\u7A7A\u95F2\u5DE5\u4F4D","scene.screen.noAgentSeated":"\u6682\u65E0 Agent \u5165\u5EA7","scene.screen.closeAria":"\u5173\u95ED\u5C4F\u5E55\u8BE6\u60C5","scene.screen.escHint":"\u6309 Esc \u5173\u95ED","scene.sign.codex":"CODEX \u63A7\u5236","scene.sign.harness":"DSH \u63A7\u5236","scene.sign.agents":"Agent \u534F\u4F5C","livePage.directory":"\u5DE5\u4F5C\u76EE\u5F55","livePage.teamDirectoryAria":"\u56E2\u961F\u7A97\u53E3\u5DE5\u4F5C\u76EE\u5F55","livePage.currentTeam":"\u5F53\u524D\u56E2\u961F","livePage.pastMember":"\u5386\u53F2\u6210\u5458","livePage.harnessSessions":"\u5F53\u524D\u76EE\u5F55\u7684\u4F1A\u8BDD","livePage.mainSession":"\u4E3B\u4F1A\u8BDD","livePage.chooseTeam":"\u9009\u62E9\u56E2\u961F\u4E0E\u4F1A\u8BDD","livePage.reportTitle":"\u6C47\u62A5\u5168\u6587","livePage.pastReportTitle":"\u5386\u53F2\u6C47\u62A5\u5168\u6587","livePage.taskSourceTitle":"\u4EFB\u52A1\u539F\u6587","livePage.taskDetailsTitle":"\u4EFB\u52A1\u8BE6\u60C5","livePage.taskNotLogged":"\u65E5\u5FD7\u672A\u8BB0\u5F55\u4EFB\u52A1\u6B63\u6587","livePage.subtask":"\u771F\u5B9E\u5B50\u4EFB\u52A1","livePage.mainTask":"\u4E3B\u4EFB\u52A1","livePage.progressUnknown":"\u672A\u8BB0\u5F55","livePage.leadMembers":"\u7EDF\u7B79 {count} \u4F4D\u672C\u8F6E\u6210\u5458","livePage.awaitingLog":"\u7B49\u5F85\u65E5\u5FD7","livePage.searchNote":"\u5171 {total} \u9879\u5339\u914D\uFF0C\u663E\u793A\u524D {shown} \u9879\uFF1B\u8F93\u5165\u66F4\u7CBE\u786E\u7684\u5173\u952E\u8BCD\u53EF\u7F29\u5C0F\u8303\u56F4\u3002","livePage.sessionLine":"\u4F1A\u8BDD \xB7 {path} \xB7 {time} \xB7 {id}","livePage.agentLine":"Agent \xB7 {detail}","livePage.eventLine":"\u4E8B\u4EF6 \xB7 {name} \xB7 {time}","livePage.cannotOpenSession":"\u65E0\u6CD5\u6253\u5F00\u8BE5\u4F1A\u8BDD","livePage.waitingEvents":"\u7B49\u5F85\u771F\u5B9E\u534F\u4F5C\u4E8B\u4EF6\u3002","livePage.noDirectories":"\u5C1A\u672A\u53D1\u73B0\u5DE5\u4F5C\u76EE\u5F55","livePage.noSessions":"\u5C1A\u672A\u53D1\u73B0 {host} \u4F1A\u8BDD","livePage.sessionCount":"{count} \u4E2A\u4F1A\u8BDD","livePage.realSubtitle":"{title} \xB7 \u771F\u5B9E\u65E5\u5FD7","livePage.realSplit":"\u771F\u5B9E\u5206\u5DE5","livePage.memberCaption":"\u4E3B Agent + {count} \u4F4D\u672C\u8F6E\u6210\u5458","livePage.nestedCaption":"\u5305\u542B\u5D4C\u5957\u534F\u4F5C\u4EFB\u52A1","livePage.connecting":"\u8FDE\u63A5\u4E2D","livePage.disconnected":"\u8FDE\u63A5\u4E2D\u65AD","livePage.followHarness":"\u8DDF\u968F\u672C\u76EE\u5F55\u65B0\u4F1A\u8BDD","livePage.followNew":"\u8DDF\u968F\u65B0\u4F1A\u8BDD","livePage.fixedSession":"\u56FA\u5B9A\u5F53\u524D\u4F1A\u8BDD","livePage.historyShow":"\u67E5\u770B\u5386\u53F2\u6210\u5458 ({count})","livePage.historyHide":"\u9690\u85CF\u5386\u53F2\u6210\u5458 ({count})","livePage.subtasks":"{count} \u9879\u771F\u5B9E\u5B50\u4EFB\u52A1","livePage.running":"{count} \u4F4D\u6B63\u5728\u6267\u884C","livePage.reported":"{done} / {total} \u5DF2\u6C47\u62A5","livePage.awaitingLead":"\u7B49\u5F85\u4E3B Agent","livePage.disclaimer":"\u53EA\u8BFB\u771F\u5B9E\u8BB0\u5F55 \xB7 \u5728 {host} \u4E2D\u6267\u884C\u4EFB\u52A1","livePage.toggleHarness":"\u53EA\u8DDF\u968F\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u7684\u65B0\u4F1A\u8BDD\uFF1B\u4E0D\u63A7\u5236\u4EFB\u52A1\u6267\u884C","livePage.toggleCodex":"\u662F\u5426\u81EA\u52A8\u8DDF\u968F\u65B0\u5EFA\u4E3B\u4F1A\u8BDD\uFF1B\u4E0D\u63A7\u5236 Codex \u6267\u884C","livePage.teamLabelHarness":"\u4F1A\u8BDD / \u56E2\u961F","livePage.teamLabelCodex":"\u56E2\u961F","livePage.searchAria":"\u641C\u7D22\u771F\u5B9E\u56E2\u961F\u4EFB\u52A1","livePage.scenarioAria":"\u9009\u62E9\u771F\u5B9E\u4E3B\u4F1A\u8BDD","livePage.modeAria":"\u9009\u62E9\u4F1A\u8BDD\u6A21\u5F0F","livePage.progressTitle":"\u4E3B\u4EFB\u52A1\u8FDB\u5EA6","livePage.eventMode":"\u771F\u5B9E\u65E5\u5FD7","livePage.activityLabel":"\u6D3B\u52A8 / \u6A21\u578B","livePage.dialogMode":"CODEX OFFICE / LIVE","livePage.dialogCaption":"\u672C\u673A\u65E5\u5FD7\u539F\u6587 \xB7 \u672A\u8C03\u7528\u6A21\u578B\u751F\u6210\u6458\u8981","livePage.reconnect":"\u91CD\u65B0\u8FDE\u63A5\u65E5\u5FD7\u6D41","livePage.toastFollowHarness":"\u4EC5\u8DDF\u968F\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u7684\u65B0\u4F1A\u8BDD","livePage.toastFollowNew":"\u81EA\u52A8\u8DDF\u968F\u65B0\u5EFA\u4E3B\u4F1A\u8BDD\uFF1B\u5F53\u524D\u4F1A\u8BDD\u7EE7\u7EED\u5B9E\u65F6\u66F4\u65B0","livePage.toastFixed":"\u56FA\u5B9A\u89C2\u5BDF\u5F53\u524D\u4F1A\u8BDD\uFF1B\u65E5\u5FD7\u7EE7\u7EED\u5B9E\u65F6\u66F4\u65B0","livePage.toastReconnect":"\u91CD\u65B0\u8FDE\u63A5\u53EA\u8BFB\u65E5\u5FD7\u6D41","livePage.stageToast":"\u5F53\u524D\u8BB0\u5F55\u9636\u6BB5\uFF1A{stage}\uFF1B\u4EFB\u52A1\u7531 {host} \u6267\u884C","livePage.viewScreen":"\u67E5\u770B\u5C4F\u5E55","livePage.sceneUnavailable":"3D \u6682\u4E0D\u53EF\u7528\uFF0C\u4EFB\u52A1\u5217\u8868\u4E0E\u8BE6\u60C5\u4ECD\u53EF\u4F7F\u7528\u3002","livePage.profileHarness":"Harness \u4F1A\u8BDD \xB7 \u53EA\u8BFB\u89C2\u5BDF","livePage.profileCodex":"\u672C\u673A\u65E5\u5FD7 \xB7 \u53EA\u8BFB\u89C2\u5BDF","livePage.profileTitle":"\u7EA6\u6BCF\u79D2\u66F4\u65B0\uFF0C\u4E0D\u63A7\u5236 {host} \u6267\u884C","livePage.logWaiting":"\u7B49\u5F85\u65E5\u5FD7","livePage.session":"\u4F1A\u8BDD","livePage.noAgent":"\u672A\u9009\u62E9 Agent","livePage.recordFailed":"\u8BFB\u53D6\u5931\u8D25\uFF1A{message}","livePage.noPercent":"\u65E5\u5FD7\u672A\u63D0\u4F9B\u767E\u5206\u6BD4"},uf={"meta.title":"Codex \xB7 Collaboration Office","meta.demoTitle":"Codex Office \xB7 Workspace demo","meta.harnessDemo":"DSH Office \xB7 Collaboration demo","meta.harnessLive":"DSH Office \xB7 Live collaboration","meta.liveTitle":"Codex Office \xB7 Live collaboration","brand.home":"Codex Collaboration Office home","brand.caption":"Collaboration Office","common.agent":"Agent","common.unknown":"Unknown","common.none":"\u2014","common.notRecorded":"Not recorded","common.timeNotRecorded":"Time not recorded","common.unnamedSession":"Untitled session","common.noDirectory":"Folder not recorded","common.copied":"Copied","common.copyFailed":"Copy failed \u2014 select the text manually","common.copyFailedToast":"Copy did not complete \u2014 select the text manually.","common.close":"Close","common.listSeparator":"; ","status.thinking":"Thinking","status.tool":"Using tools","status.typing":"Writing reply","status.waiting":"Waiting for you","status.waiting_agents":"Waiting for subagents","status.done":"Done","status.error":"Failed","status.interrupted":"Interrupted","status.closed":"Closed","status.idle":"Idle","status.unknown":"Awaiting logs","status.running":"Running","status.pending":"Unassigned","status.coordinating":"Coordinating","event.task":"Task input","event.assign":"Assigned task","event.message":"Follow-up","event.wait":"Waiting for reports","event.report":"Report submitted","event.complete":"Completed","event.progress":"Progress","event.tool":"Tool activity","event.approval":"Waiting for you","event.error":"Failed","event.interrupted":"Interrupted","event.close":"Agent closed","event.closed":"Agent closed","topbar.readonly":"Read-only","topbar.connecting":"Connecting","topbar.connected":"Live","topbar.reconnecting":"Disconnected \u2014 reconnecting","sidebar.heading":"Tasks & team","sidebar.taskLabel":"Current session","sidebar.taskSelectAria":"Select a session","sidebar.discovering":"Discovering sessions\u2026","sidebar.noSessions":"No Codex sessions found yet","sidebar.team":"Team","sidebar.teamAria":"Agent team","sidebar.local":"Runs locally \xB7 read-only","sidebar.localNote":"Tasks keep running in Codex","main.headline":"Collaboration, as it happens.","main.subtitle":"From task handoff to every report.","main.summaryAria":"Team status","main.working":"Working","main.done":"Done","main.waiting":"Waiting","main.officeAria":"3D collaboration office","main.sceneLabel":"Team office","main.reducedMotion":"Reduce motion","main.resetCamera":"Reset camera","main.scenePreparing":"Preparing the office\u2026","main.sceneHint":"Drag to rotate \xB7 Scroll to zoom \xB7 Click a person for details","main.sceneUnavailable":"3D is unavailable; the team list and reports still work.","main.sceneFailed":"The browser could not start 3D; the team list and reports still work.","main.timelineAria":"Collaboration timeline","main.timelineHeading":"Every handoff leaves a trace","main.waitingEvents":"Waiting for events","main.recentEvents":"Last {count} collaboration records","main.noEvents":"Waiting for collaboration events","main.timelineEmpty":"Assignments, results, and summaries all leave a trace along this timeline.","main.footerSource":"Status comes from the real logs and syncs as message blocks are written.","main.footerCredit":"Three.js \xD7 Codex","details.aria":"Agent details","details.tabsAria":"Agent detail views","details.activity":"Activity","details.report":"Full report","details.task":"Task","details.openSource":"View source \u2197","details.recent":"Recent activity","details.footerLead":"The lead agent coordinates; subagents own their parts.","details.footerSub":"What they actually left behind is shown here.","details.selectAgent":"Select an agent to see its work.","details.noTask":"No task recorded","details.noReport":"No report yet","details.noActivity":"Waiting for new activity","details.viewRecord":"View record \u2197","dialog.title":"Source record","dialog.from":"From visible Codex messages","dialog.copy":"Copy all","dialog.loading":"Reading the source record\u2026","dialog.emptyBody":"No body recorded in the logs","app.agent":"Agent","app.unknownStatus":"Unknown status","app.roleLead":"Coordination & summary","app.roleSubAgent":"Subagent","app.roleSplit":"Running an assigned task","app.roleLeadTask":"Assignment \xB7 coordination \xB7 summary","app.metadataStatus":"Status","app.metadataElapsed":"Elapsed","app.metadataModel":"Model","app.metadataRelation":"Reports to","app.relationConflict":"Relationship unclear","app.relationMain":"Main task","app.noTaskLogged":"No task recorded in the logs yet","app.teamEmpty":"Start a task in Codex and the team will appear here.","app.reportEmpty":`No reports yet.
|
|
4259
|
-
Final subagent replies and the lead agent summary appear here once written.`,"app.reportLoading":"Reading the full report\u2026","app.reportCurrent":"This round \xB7 ","app.reportHistory":"Earlier \xB7 ","app.reportSub":"Subagent report","app.reportLead":"Lead agent summary","app.reportOpen":"Open / copy full text \u2197","app.reportLimit":"Showing the 8 most recent reports; earlier ones are in Codex.","app.readFailed":"Read failed","app.editFailed":"Cannot reach the office service","app.retrying":"{message} \u2014 retrying.","app.demoNotice":"This is a standalone demo team. All messages and tasks are simulated; your Codex sessions are not read or run.","app.demoMode":"Demo data \xB7 nothing executed","app.renderSubtitle":"From task handoff to every report.","app.noRecentSessions":"No Codex session active in the last 24 hours. Start a task in Codex or check CODEX_HOME.","app.durationHours":"{hours}h {minutes}m","app.durationMinutes":"{minutes}m {seconds}s","app.waitingResult":"{name} is waiting for subagent results","app.ariaAgentStatus":"{name}, {status}","session.noTime":"Time not recorded","live.reportReady":"Report ready","live.reportHistorical":"Earlier report on record","live.reportPending":"Waiting for this round; an earlier report exists","live.endedNoReport":"Task ended without a recorded report","live.errored":"Failed","live.interrupted":"Task interrupted","live.agentClosed":"Agent closed","live.waitingUser":"Waiting for you","live.awaitingSubagents":"Waiting for subagent reports","live.typingMessage":"Writing a message","live.runningTool":"Running a tool","live.thinking":"Working on the task","live.idle":"Idle","live.awaitingLog":"Waiting for logs","live.leadName":"Lead agent","live.subName":"Subagent {id}","live.zoneLead":"C0 \xB7 Coordination hub","live.zoneSlot":"A{slot} \xB7 Workstation","live.harnessSession":"Harness session","live.codexSession":"Codex session","live.harnessName":"DeepSeek Harness","live.codexName":"Codex","source.sessionReadFail":"Could not load the session","source.eventReadFail":"Could not read events: {message}","source.disconnected":"Connection lost \u2014 reconnecting; last state kept","source.demoData":"This service is serving demo data; start the office in normal mode","source.recordReadFail":"Could not read the source record","notify.aria":"View collaboration notifications","notify.ariaUnread":"View collaboration notifications, unread updates","controls.clearFilter":"Clear filter","controls.noMatch":"No matching options","controls.selectOption":"Select an option","controls.filterPrefix":"Filter {label}","controls.filterPlaceholder":"Type to filter\u2026","controls.optionsAria":"{label} options","controls.choose":"Choose\u2026","controls.matchesAria":"Matching sessions, tasks, and agents","controls.found":"{count} matches","controls.noMatches":"No matching sessions, tasks, or agents","demo.spaceAria":"Agent 3D collaboration space","demo.pinsAria":"Agents in the scene","demo.loading":"Setting up the workspace\u2026","demo.searchPlaceholder":"Search sessions, tasks, agents, or events\u2026","demo.searchAria":"Search sessions, tasks, or events","demo.clearSearch":"Clear search","demo.directory":"Workspace folder","demo.directoryAria":"Select a workspace folder","demo.scenarioAria":"Select a demo task","demo.scenarioSearch":"Task search and filters","demo.scenarioReview":"API and regression review","demo.option.search":"Task search and filters \xB7 DEMO-01","demo.option.review":"API and regression review \xB7 DEMO-02","demo.closeDetails":"Close agent details","demo.restartTitle":"Restart","demo.mode":"Mode","demo.modeAria":"Select session mode","demo.modeLive":"Live session","demo.modeDemo":"Demo session","demo.notificationsAria":"View collaboration notifications","demo.profile":"Local collaboration demo","demo.statsAria":"Collaboration stats","demo.activeAgents":"Active agents","demo.parallel":"In parallel","demo.teamCaption":"Lead agent + 3 subagents","demo.assigned":"Assigned tasks","demo.assignedHint":"Work split ready","demo.assignedCaption":"3 independent subtasks","demo.reports":"Reports received","demo.reportsHint":"Awaiting results","demo.reportsCaption":"Lead agent consolidates","demo.progress":"Demo progress","demo.stageCaption":"Running","demo.detailAria":"Agent task details","demo.taskName":"Task","demo.project":"Project","demo.role":"Role","demo.type":"Type","demo.progressLabel":"Progress","demo.zone":"Zone","demo.files":"Related files","demo.relation":"Collaboration","demo.assignedTo":"Assigned to","demo.stageMeta":"Stage","demo.viewReport":"View task details","demo.viewSource":"View task source","demo.disclaimer":"Simulated collaboration data \xB7 no real tasks are read or run","demo.agentDetails":"Agent details","demo.updates":"Activity","demo.simulatedEvents":"Simulated","demo.markAllRead":"Mark all read","demo.play":"Play demo","demo.restart":"Restart demo","demo.resetCamera":"Reset 3D camera","demo.resetCameraTitle":"Reset camera","demo.team":"Team","demo.history":"View past members","demo.instruction":"Drag to rotate \xB7 Scroll to zoom \xB7 Click a desk or screen for details","demo.workflowAria":"Task workflow","demo.workflowToggle":"Workflow & tasks","demo.workflowTitle":"Task workflow","demo.workflowSubtitle":"Analysis, parallel execution, and consolidation","demo.currentTask":"Current task","demo.viewAll":"View all","demo.taskDetails":"Task details","demo.copy":"Copy contents","demo.dialogCaption":"Demo content only","demo.closeDialog":"Close task dialog","demo.reduceMotion":"Reduce motion","demo.stage.analysis":"Analysis & assignment","demo.stage.parallel":"Parallel execution","demo.stage.reports":"Reporting","demo.stage.summary":"Lead agent summary","demo.stageIdle":"Awaiting results","demo.stageAwaitReports":"Awaiting all reports","demo.stageSummaryReady":"Summary ready","demo.stageConcluding":"Compiling conclusions","demo.type.main":"Orchestration","demo.type.api":"API work","demo.type.frontend":"UI work","demo.type.test":"Testing & review","demo.type.reviewOnly":"Read-only review","demo.name.main":"Lead agent","demo.name.api":"API agent","demo.name.frontend":"Frontend agent","demo.name.test":"Test agent","demo.projectTaskBoard":"Task Board","demo.projectApi":"API Workspace","demo.detailCode":"Task {code}","demo.detailProgressDone":"Task complete, report ready","demo.parentMain":"Lead agent \u2192 subagent","demo.parentLead":"Coordinating {count} subagents","demo.stageComplete":"Collaboration complete","demo.viewFullReport":"View full report","demo.matchingTasks":"Matching tasks","demo.teamTasks":"Team tasks","demo.noMatchingTasks":"No matching tasks","demo.ariaViewTask":"View the task for {name}","demo.ariaSelectAgent":"Select {name}","demo.notifyAssign":"Task assigned","demo.notifyReport":"Report submitted","demo.notifyMessage":"Collaboration message","demo.notifyRouteLead":"Lead agent \u2192 ","demo.notifySummary":"Results consolidated","demo.notifyProgress":"Progress update","demo.notifyTime":"Demo {time}","demo.notifyEmpty":"Collaboration events appear here once the demo starts.","demo.toastRestart":"Demo restarted from task assignment","demo.toastPreview":"Previewing: {stage}","demo.dialogTaskTitle":"{name} \xB7 Task details","demo.dialogReportTitle":"{name} \xB7 Task report","demo.dialogFinalTitle":"{name} \xB7 Final summary","demo.dialogTeamTitle":"Team tasks \xB7 {title}","demo.subtitleSim":"{title} \xB7 simulated workflow","demo.hintComplete":"Task complete","demo.hintParallel":"In parallel","demo.hintCoordinating":"Coordinating","demo.assignedReady":"Work split ready","demo.assignedSplitting":"Splitting work","demo.reportsReady":"All reports in","demo.reportsCollecting":"Collecting","demo.reportsWaiting":"Awaiting results","demo.demoComplete":"Demo complete","demo.runningStage":"Running {stage}","demo.pause":"Pause demo","demo.replay":"Replay","demo.stageAssigned":"{done} / {total} assigned","demo.stageRunning":"{count} in progress","demo.stageReported":"{done} / {total} reported","demo.markerDone":"Done","demo.markerRunning":"In progress","demo.markerPaused":"Demo paused","demo.previewStage":"Preview the {stage} stage","demo.failed3d":"3D is unavailable; task details and the workflow demo still work.","demo.emptySearchTitle":"Untitled session","demo.teamMemberLine":`{name} / {zone}
|
|
4259
|
+
Final subagent replies and the lead agent summary appear here once written.`,"app.reportLoading":"Reading the full report\u2026","app.reportCurrent":"This round \xB7 ","app.reportHistory":"Earlier \xB7 ","app.reportSub":"Subagent report","app.reportLead":"Lead agent summary","app.reportOpen":"Open / copy full text \u2197","app.reportLimit":"Showing the 8 most recent reports; earlier ones are in Codex.","app.readFailed":"Read failed","app.editFailed":"Cannot reach the office service","app.retrying":"{message} \u2014 retrying.","app.demoNotice":"This is a standalone demo team. All messages and tasks are simulated; your Codex sessions are not read or run.","app.demoMode":"Demo data \xB7 nothing executed","app.renderSubtitle":"From task handoff to every report.","app.noRecentSessions":"No Codex session active in the last 24 hours. Start a task in Codex or check CODEX_HOME.","app.durationHours":"{hours}h {minutes}m","app.durationMinutes":"{minutes}m {seconds}s","app.waitingResult":"{name} is waiting for subagent results","app.ariaAgentStatus":"{name}, {status}","session.noTime":"Time not recorded","live.reportReady":"Report ready","live.reportHistorical":"Earlier report on record","live.reportPending":"Waiting for this round; an earlier report exists","live.endedNoReport":"Task ended without a recorded report","live.errored":"Failed","live.interrupted":"Task interrupted","live.agentClosed":"Agent closed","live.waitingUser":"Waiting for you","live.awaitingSubagents":"Waiting for subagent reports","live.typingMessage":"Writing a message","live.runningTool":"Running a tool","live.thinking":"Working on the task","live.idle":"Idle","live.awaitingLog":"Waiting for logs","live.leadName":"Lead agent","live.subName":"Subagent {id}","live.zoneLead":"C0 \xB7 Coordination hub","live.zoneSlot":"A{slot} \xB7 Workstation","live.harnessSession":"Harness session","live.codexSession":"Codex session","live.harnessName":"DeepSeek Harness","live.codexName":"Codex","source.sessionReadFail":"Could not load the session","source.eventReadFail":"Could not read events: {message}","source.disconnected":"Connection lost \u2014 reconnecting; last state kept","source.demoData":"This service is serving demo data; start the office in normal mode","source.recordReadFail":"Could not read the source record","notify.aria":"View collaboration notifications","notify.ariaUnread":"View collaboration notifications, unread updates","controls.clearFilter":"Clear filter","controls.noMatch":"No matching options","controls.selectOption":"Select an option","controls.filterPrefix":"Filter {label}","controls.filterPlaceholder":"Type to filter\u2026","controls.optionsAria":"{label} options","controls.choose":"Choose\u2026","controls.matchesAria":"Matching sessions, tasks, and agents","controls.found":"{count} matches","controls.noMatches":"No matching sessions, tasks, or agents","demo.spaceAria":"Agent 3D collaboration space","demo.pinsAria":"Agents in the scene","demo.loading":"Setting up the workspace\u2026","demo.searchPlaceholder":"Search sessions, tasks, agents, or events\u2026","demo.searchAria":"Search sessions, tasks, or events","demo.clearSearch":"Clear search","demo.directory":"Workspace folder","demo.directoryAria":"Select a workspace folder","demo.scenarioAria":"Select a demo task","demo.scenarioSearch":"Task search and filters","demo.scenarioReview":"API and regression review","demo.option.search":"Task search and filters \xB7 DEMO-01","demo.option.review":"API and regression review \xB7 DEMO-02","demo.closeDetails":"Close agent details","demo.restartTitle":"Restart","demo.mode":"Mode","demo.modeAria":"Select session mode","demo.modeLive":"Live session","demo.modeDemo":"Demo session","demo.notificationsAria":"View collaboration notifications","demo.profile":"Local collaboration demo","demo.statsAria":"Collaboration stats","demo.activeAgents":"Active agents","demo.parallel":"In parallel","demo.teamCaption":"Lead agent + 3 subagents","demo.assigned":"Assigned tasks","demo.assignedHint":"Work split ready","demo.assignedCaption":"3 independent subtasks","demo.reports":"Reports received","demo.reportsHint":"Awaiting results","demo.reportsCaption":"Lead agent consolidates","demo.progress":"Demo progress","demo.stageCaption":"Running","demo.detailAria":"Agent task details","demo.taskName":"Task","demo.project":"Project","demo.role":"Role","demo.type":"Type","demo.progressLabel":"Progress","demo.zone":"Zone","demo.files":"Related files","demo.relation":"Collaboration","demo.assignedTo":"Assigned to","demo.stageMeta":"Stage","demo.viewReport":"View task details","demo.viewSource":"View task source","demo.disclaimer":"Simulated collaboration data \xB7 no real tasks are read or run","demo.agentDetails":"Agent details","demo.updates":"Activity","demo.simulatedEvents":"Simulated","demo.markAllRead":"Mark all read","demo.play":"Play demo","demo.restart":"Restart demo","demo.resetCamera":"Reset 3D camera","demo.resetCameraTitle":"Reset camera","demo.team":"Team","demo.history":"View past members","demo.instruction":"Drag to rotate \xB7 Scroll to zoom \xB7 Click a desk or screen for details","demo.workflowAria":"Task workflow","demo.workflowToggle":"Workflow & tasks","demo.workflowTitle":"Task workflow","demo.workflowSubtitle":"Analysis, parallel execution, and consolidation","demo.currentTask":"Current task","demo.viewAll":"View all","demo.taskDetails":"Task details","demo.copy":"Copy contents","demo.dialogCaption":"Demo content only","demo.closeDialog":"Close task dialog","demo.reduceMotion":"Reduce motion","demo.hidePanels":"Hide panels","demo.showPanels":"Show panels","demo.stage.analysis":"Analysis & assignment","demo.stage.parallel":"Parallel execution","demo.stage.reports":"Reporting","demo.stage.summary":"Lead agent summary","demo.stageIdle":"Awaiting results","demo.stageAwaitReports":"Awaiting all reports","demo.stageSummaryReady":"Summary ready","demo.stageConcluding":"Compiling conclusions","demo.type.main":"Orchestration","demo.type.api":"API work","demo.type.frontend":"UI work","demo.type.test":"Testing & review","demo.type.reviewOnly":"Read-only review","demo.name.main":"Lead agent","demo.name.api":"API agent","demo.name.frontend":"Frontend agent","demo.name.test":"Test agent","demo.projectTaskBoard":"Task Board","demo.projectApi":"API Workspace","demo.detailCode":"Task {code}","demo.detailProgressDone":"Task complete, report ready","demo.parentMain":"Lead agent \u2192 subagent","demo.parentLead":"Coordinating {count} subagents","demo.stageComplete":"Collaboration complete","demo.viewFullReport":"View full report","demo.matchingTasks":"Matching tasks","demo.teamTasks":"Team tasks","demo.noMatchingTasks":"No matching tasks","demo.ariaViewTask":"View the task for {name}","demo.ariaSelectAgent":"Select {name}","demo.notifyAssign":"Task assigned","demo.notifyReport":"Report submitted","demo.notifyMessage":"Collaboration message","demo.notifyRouteLead":"Lead agent \u2192 ","demo.notifySummary":"Results consolidated","demo.notifyProgress":"Progress update","demo.notifyTime":"Demo {time}","demo.notifyEmpty":"Collaboration events appear here once the demo starts.","demo.toastRestart":"Demo restarted from task assignment","demo.toastPreview":"Previewing: {stage}","demo.dialogTaskTitle":"{name} \xB7 Task details","demo.dialogReportTitle":"{name} \xB7 Task report","demo.dialogFinalTitle":"{name} \xB7 Final summary","demo.dialogTeamTitle":"Team tasks \xB7 {title}","demo.subtitleSim":"{title} \xB7 simulated workflow","demo.hintComplete":"Task complete","demo.hintParallel":"In parallel","demo.hintCoordinating":"Coordinating","demo.assignedReady":"Work split ready","demo.assignedSplitting":"Splitting work","demo.reportsReady":"All reports in","demo.reportsCollecting":"Collecting","demo.reportsWaiting":"Awaiting results","demo.demoComplete":"Demo complete","demo.runningStage":"Running {stage}","demo.pause":"Pause demo","demo.replay":"Replay","demo.stageAssigned":"{done} / {total} assigned","demo.stageRunning":"{count} in progress","demo.stageReported":"{done} / {total} reported","demo.markerDone":"Done","demo.markerRunning":"In progress","demo.markerPaused":"Demo paused","demo.previewStage":"Preview the {stage} stage","demo.failed3d":"3D is unavailable; task details and the workflow demo still work.","demo.emptySearchTitle":"Untitled session","demo.teamMemberLine":`{name} / {zone}
|
|
4260
4260
|
{task}
|
|
4261
4261
|
Status: {status} \xB7 {percent}%`,"demo.fieldTask":"Task: {value}","demo.fieldCode":"Task ID: {value}","demo.fieldZone":"Zone: {value}","demo.fieldFile":"Related files: {value}","demo.fieldStatus":"Status: {value} \xB7 {percent}%","demo.doneHint":"The full report appears here once finished.","demo.demoOnlyHint":"This is standalone demo content; your real tasks are not read or run.","demo.queueHeading":"{label} ({count})","demo.scenario.search.title":"Build task search and filters","demo.scenario.search.project":"Codex Workspace","demo.scenario.search.titles.0":"Analysis, coordination, and summary","demo.scenario.search.titles.1":"Query and filter API","demo.scenario.search.titles.2":"Search and filter UI","demo.scenario.search.titles.3":"Edge cases and regression checks","demo.scenario.search.tasks.0":"Split the requirements, coordinate parallel work, review all three results, and write the final summary.","demo.scenario.search.tasks.1":"Implement keyword search, status filters, and pagination with full parameter validation.","demo.scenario.search.tasks.2":"Build the search bar, filter controls, and result list, including loading and empty states.","demo.scenario.search.tasks.3":"Verify search, combined filters, and pagination edges, including empty and error states.","demo.scenario.search.files.0":"Plan and summary","demo.scenario.search.files.1":"src/api/tasks.ts","demo.scenario.search.files.2":"src/views/Tasks.vue","demo.scenario.search.files.3":"tests/tasks.spec.ts","demo.scenario.search.reports.0":`Task search and filters are complete (demo).
|
|
4262
4262
|
|